From 9276690d60439ec17f60b30e3ba894c6c0e5d05d Mon Sep 17 00:00:00 2001 From: Flomp Date: Sat, 21 Jun 2025 10:09:22 +0200 Subject: [PATCH] Federation (#327) * initial commit federation * more federation * more federation * more federation * completes follow, accept, undo * add trail create activity * process trail create activity * more trail create activity * adds missing endpoints * adds update and delete activity * adds comment activities * adds activities back * adds summit logs activities * deletes follow counts table * fixes migrations * fixes migrations * fixes migrations * fixes migrations * adds remote profiles * ctd * ctd * we are getting closer... * adds public summit logs * fixes federated trails in lists * adds remote lists * adds list activites * fixes lists * adds notifications * adds iri redirect * fixes comments and summitlogs * fixes follows and profiles * adds asynchronous send * fixes list search * adds encryption key * bug fixes * fixes activity signing * removes custon activity object types * adds html editor * fixes html editor * fixes display issues on mastodon * adds federated sharing * finishes announcements * fixes small summit log issues * adds trail likes * finalizes likes * fixes images for komoot * add disable federation option * adds private profiles * updates docs * adds federated comments * adds trail and comments actvitiypub routes * adds mentions to editor * adds mentions to trails, comments, summit logs * updates theme * updates theme * update docs * update docs * updates docs * fixes various frontend problems * fixes activitypub follows api * updates docs * updates docs --------- Co-authored-by: Christian Beutel <> --- CHANGELOG.md | 2 +- README.md | 2 +- db/Dockerfile | 1 + db/federation/activity.go | 207 + db/federation/actor.go | 284 + db/federation/announce.go | 276 + db/federation/create.go | 849 + db/federation/delete.go | 377 + db/federation/follow.go | 160 + db/federation/like.go | 118 + db/federation/undo.go | 194 + db/go.mod | 9 + db/go.sum | 21 + db/integrations/komoot/komoot.go | 85 +- db/integrations/strava/strava.go | 27 +- db/main.go | 734 +- .../1747061255_deleted_follow_counts.go | 102 + .../1747061256_deleted_activities.go | 186 + .../1747061257_created_activitypub_actors.go | 285 + ...47061258_created_activitypub_activities.go | 156 + db/migrations/1747061259_seed_actors.go | 30 + .../1747061260_trails_add_new_author.go | 78 + db/migrations/1747061261_set_trail_authors.go | 33 + .../1747061262_comments_add_new_author.go | 78 + .../1747061263_set_comment_authors.go | 33 + .../1747061264_summit_logs_add_new_author.go | 78 + .../1747061265_set_summit_log_authors.go | 46 + db/migrations/1747061266_migrate_ms_token.go | 55 + .../1747061267_summit_logs_add_trail_field.go | 44 + .../1747061268_migrate_summit_log_trails.go | 34 + ...47061269_trails_remove_summit_log_field.go | 44 + .../1747061270_follows_add_new_f_f.go | 150 + db/migrations/1747061271_migrate_follows.go | 60 + .../1747064968_collections_snapshot.go | 1159 + db/migrations/1747066702_updated_comments.go | 44 + .../1747066720_updated_summit_logs.go | 44 + db/migrations/1747066741_updated_trails.go | 44 + db/migrations/1747066742_updated_follows.go | 26 + db/migrations/1747236775_created_timeline.go | 186 + db/migrations/1747242599_updated_timeline.go | 40 + db/migrations/1747300536_updated_timeline.go | 40 + db/migrations/1747312289_updated_comments.go | 43 + db/migrations/1747381400_updated_trails.go | 42 + db/migrations/1747382660_updated_trails.go | 40 + db/migrations/1747383776_updated_trails.go | 40 + db/migrations/1747499980_updated_comments.go | 42 + .../1747554117_updated_summit_logs.go | 42 + .../1747554570_updated_summit_logs.go | 40 + db/migrations/1747674856_updated_lists.go | 78 + db/migrations/1747674913_set_list_authors.go | 33 + db/migrations/1747675001_updated_lists.go | 44 + db/migrations/1747676287_updated_lists.go | 48 + db/migrations/1747683009_updated_lists.go | 42 + db/migrations/1747683368_updated_lists.go | 40 + db/migrations/1747683707_updated_lists.go | 40 + db/migrations/1747945195_updated_timeline.go | 57 + db/migrations/1747946749_updated_trails.go | 42 + db/migrations/1747946778_updated_lists.go | 42 + db/migrations/1747952550_updated_timeline.go | 108 + .../1747995473_updated_notifications.go | 104 + .../1747996502_updated_notifications.go | 44 + .../1747999298_updated_notifications.go | 67 + db/migrations/1748002661_updated_follows.go | 42 + .../1748003743_updated_summit_logs.go | 42 + db/migrations/1748084027_updated_follows.go | 42 + .../1749553104_updated_trail_share.go | 44 + .../1749553105_migrate_trail_share.go | 31 + .../1749554811_updated_trails_filter.go | 80 + .../1749554826_updated_trails_bounding_box.go | 80 + db/migrations/1749554910_updated_waypoints.go | 42 + db/migrations/1749554952_updated_trails.go | 44 + .../1749555128_updated_summit_logs.go | 42 + db/migrations/1749555173_updated_comments.go | 44 + .../1749555613_updated_trail_share.go | 62 + db/migrations/1749555614_migrate_ms_token.go | 55 + .../1749566277_updated_list_share.go | 62 + .../1749566278_migrate_list_share.go | 31 + db/migrations/1749566445_updated_lists.go | 44 + .../1749566456_updated_list_share.go | 44 + .../1749566852_updated_list_share.go | 48 + .../1749650389_updated_summit_logs.go | 40 + .../1749650422_updated_summit_logs.go | 42 + .../1749717023_created_trail_like.go | 103 + .../1749717428_updated_trail_like.go | 46 + .../1749831369_update_sortable_attributes.go | 42 + .../1749836174_updated_notifications.go | 67 + db/migrations/1749837201_updated_trails.go | 43 + .../1749837751_updated_trail_like.go | 40 + db/migrations/1749894936_updated_trails.go | 82 + .../1749902683_updated_activitypub_actors.go | 42 + db/migrations/1750259236_updated_comments.go | 42 + db/migrations/1750259275_updated_lists.go | 44 + .../1750259298_updated_summit_logs.go | 42 + db/migrations/1750259324_updated_trails.go | 44 + .../1750264310_updated_notifications.go | 70 + .../1750267445_updated_notifications.go | 73 + db/util/activitypub.go | 595 + db/util/email_templates.go | 15 +- db/util/meilisearch.go | 205 +- db/util/notification.go | 51 +- docker-compose.yml | 3 +- docs/astro.config.mjs | 199 +- docs/package-lock.json | 4938 ++- docs/package.json | 14 +- docs/src/assets/guides/pocketbase_backup.png | Bin 0 -> 239779 bytes docs/src/assets/guides/wanderer_follow.png | Bin 0 -> 63440 bytes docs/src/assets/integrations.png | Bin 0 -> 73176 bytes docs/src/assets/social.png | Bin 0 -> 560132 bytes docs/src/components/footer.astro | 25 +- .../content/docs/{guides => develop}/api.md | 2 +- docs/src/content/docs/develop/federation.md | 491 + .../local-development.md | 15 +- .../docs/getting-started/configuration.md | 48 - .../docs/getting-started/installation.mdx | 192 - .../src/content/docs/guides/authentication.md | 82 - .../src/content/docs/guides/create-a-trail.md | 58 - .../content/docs/guides/custom-categories.md | 21 - docs/src/content/docs/guides/integrations.md | 65 - docs/src/content/docs/guides/share-trails.md | 19 - docs/src/content/docs/index.mdx | 89 +- .../content/docs/run/backend-configuration.md | 43 + docs/src/content/docs/run/backup-server.md | 53 + .../{getting-started => run}/changelog.md | 25 +- .../src/content/docs/run/custom-categories.md | 12 + .../docs/run/environment-configuration.md | 50 + docs/src/content/docs/run/installation.mdx | 275 + docs/src/content/docs/use/authentication.md | 50 + .../content/docs/use/community-interaction.md | 69 + docs/src/content/docs/use/create-a-trail.md | 108 + .../docs/{guides => use}/customize-map.md | 4 +- .../docs/{guides => use}/import-export.md | 11 +- docs/src/content/docs/use/integrations.md | 50 + .../src/content/docs/{guides => use}/lists.md | 4 +- docs/src/content/docs/use/share-trails.md | 29 + .../docs/{guides => use}/statistics.md | 2 +- docs/src/content/docs/use/summit-logs.md | 34 + docs/src/content/docs/welcome/index.mdx | 77 + docs/src/custom.css | 13 +- docs/src/tailwind.css | 34 +- docs/tailwind.config.mjs | 27 - docs/wanderer.openapi.yaml | 33124 +++++++++------- web/package-lock.json | 2417 +- web/package.json | 19 +- web/postcss.config.js | 1 - web/src/css/app.css | 49 +- web/src/css/components.css | 10 +- web/src/css/theme.css | 28 +- web/src/hooks.server.ts | 8 + web/src/lib/components/actor_search.svelte | 77 + web/src/lib/components/base/calendar.svelte | 10 +- .../lib/components/base/double_slider.svelte | 5 +- web/src/lib/components/base/drawer.svelte | 2 +- web/src/lib/components/base/dropdown.svelte | 38 +- web/src/lib/components/base/editor.svelte | 501 + web/src/lib/components/base/modal.svelte | 7 +- web/src/lib/components/base/search.svelte | 35 +- .../lib/components/base/search_list.svelte | 67 + web/src/lib/components/base/select.svelte | 2 +- .../lib/components/base/skeleton_table.svelte | 53 + web/src/lib/components/base/slider.svelte | 7 +- web/src/lib/components/base/toast.svelte | 2 +- .../components/comment/comment_card.svelte | 66 +- web/src/lib/components/footer.svelte | 4 +- web/src/lib/components/list/list_card.svelte | 71 +- web/src/lib/components/list/list_panel.svelte | 58 +- .../components/list/list_select_modal.svelte | 2 +- .../components/list/list_share_modal.svelte | 97 +- web/src/lib/components/nav_bar.svelte | 18 +- .../notification/notification_card.svelte | 95 +- .../notification/notification_dropdown.svelte | 12 +- .../components/profile/activity_card.svelte | 39 +- .../profile/profile_share_modal.svelte | 2 +- .../components/settings/email_modal.svelte | 2 +- .../integrations/komoot_settings_modal.svelte | 2 +- .../integrations/strava_settings_modal.svelte | 2 +- .../components/settings/password_modal.svelte | 2 +- .../components/settings/upload_dialog.svelte | 2 +- .../settings/url_import_modal.svelte | 4 +- web/src/lib/components/share_info.svelte | 49 +- .../summit_log/summit_log_card.svelte | 22 +- .../summit_log/summit_log_modal.svelte | 13 +- .../summit_log/summit_log_table.svelte | 26 +- .../summit_log/summit_log_table_row.svelte | 106 +- .../lib/components/trail/like_button.svelte | 112 + .../trail/map_with_elevation_maplibre.svelte | 29 +- .../lib/components/trail/trail_card.svelte | 32 +- .../components/trail/trail_dropdown.svelte | 31 +- .../trail/trail_export_modal.svelte | 2 +- .../trail/trail_filter_panel.svelte | 44 +- .../components/trail/trail_info_panel.svelte | 199 +- .../lib/components/trail/trail_list.svelte | 7 +- .../components/trail/trail_list_item.svelte | 49 +- .../components/trail/trail_share_modal.svelte | 48 +- .../lib/components/trail/trail_table.svelte | 19 +- .../components/waypoint/waypoint_modal.svelte | 1 + web/src/lib/i18n/locales/de.json | 22 + web/src/lib/i18n/locales/en.json | 22 + web/src/lib/i18n/locales/es.json | 22 + web/src/lib/i18n/locales/fr.json | 26 +- web/src/lib/i18n/locales/hu.json | 22 + web/src/lib/i18n/locales/it.json | 22 + web/src/lib/i18n/locales/nl.json | 22 + web/src/lib/i18n/locales/pl.json | 22 + web/src/lib/i18n/locales/pt.json | 22 + web/src/lib/i18n/locales/zh.json | 22 + web/src/lib/models/activitypub/activity.ts | 14 + web/src/lib/models/activitypub/actor.ts | 25 + .../models/activitypub/webfinger_response.ts | 12 + web/src/lib/models/api/comment_schema.ts | 4 +- web/src/lib/models/api/follow_schema.ts | 3 +- web/src/lib/models/api/list_share_schema.ts | 2 +- web/src/lib/models/api/summit_log_schema.ts | 3 +- web/src/lib/models/api/trail_like_schema.ts | 10 + web/src/lib/models/api/trail_schema.ts | 4 +- web/src/lib/models/api/trail_share_schema.ts | 2 +- web/src/lib/models/comment.ts | 9 +- web/src/lib/models/follow.ts | 8 +- web/src/lib/models/list.ts | 43 +- web/src/lib/models/list_share.ts | 7 +- web/src/lib/models/notification.ts | 18 +- web/src/lib/models/profile.ts | 15 + web/src/lib/models/summit_log.ts | 10 +- .../lib/models/{activity.ts => timeline.ts} | 7 +- web/src/lib/models/trail.ts | 26 +- web/src/lib/models/trail_like.ts | 17 + web/src/lib/models/trail_share.ts | 10 +- web/src/lib/models/user.ts | 2 +- web/src/lib/stores/activity_store.ts | 30 - web/src/lib/stores/comment_store.ts | 23 +- web/src/lib/stores/follow_store.ts | 35 +- web/src/lib/stores/list_share_store.ts | 1 + web/src/lib/stores/list_store.ts | 149 +- web/src/lib/stores/notification_store.ts | 1 + web/src/lib/stores/profile_store.ts | 136 + web/src/lib/stores/search_store.ts | 55 +- web/src/lib/stores/summit_log_store.ts | 115 +- web/src/lib/stores/trail_like_store.ts | 56 + web/src/lib/stores/trail_share_store.ts | 14 +- web/src/lib/stores/trail_store.ts | 134 +- web/src/lib/stores/upload_store.svelte.ts | 4 +- web/src/lib/stores/user_store.ts | 3 +- web/src/lib/util/activitypub_util.ts | 26 + web/src/lib/util/api_util.ts | 47 +- web/src/lib/util/authorization_util.ts | 20 + web/src/lib/util/file_util.ts | 45 +- web/src/lib/util/format_util.ts | 59 + web/src/lib/util/maplibre_util.ts | 5 +- web/src/routes/+layout.server.ts | 2 +- web/src/routes/+layout.svelte | 40 +- web/src/routes/+page.svelte | 109 +- .../routes/.well-known/webfinger/+server.ts | 55 + web/src/routes/api/v1/activity/+server.ts | 13 - .../v1/activitypub/activity/[id]/+server.ts | 32 + .../v1/activitypub/comment/[id]/+server.ts | 28 + .../api/v1/activitypub/trail/[id]/+server.ts | 28 + .../v1/activitypub/user/[handle]/+server.ts | 65 + .../user/[handle]/followers/+server.ts | 59 + .../user/[handle]/following/+server.ts | 60 + .../user/[handle]/inbox/+server.ts | 43 + .../user/[handle]/outbox/+server.ts | 71 + .../api/v1/auth/confirm-reset/+server.ts | 2 +- web/src/routes/api/v1/auth/login/+server.ts | 2 +- web/src/routes/api/v1/auth/oauth/+server.ts | 4 +- web/src/routes/api/v1/auth/reset/+server.ts | 2 +- web/src/routes/api/v1/category/+server.ts | 2 +- web/src/routes/api/v1/comment/+server.ts | 68 +- web/src/routes/api/v1/comment/[id]/+server.ts | 11 +- .../[collection]/[record]/[file]/+server.ts | 14 +- web/src/routes/api/v1/follow/+server.ts | 74 +- web/src/routes/api/v1/follow/[id]/+server.ts | 2 +- .../api/v1/follow/count/[id]/+server.ts | 11 - web/src/routes/api/v1/integration/+server.ts | 4 +- .../routes/api/v1/integration/[id]/+server.ts | 6 +- .../v1/integration/komoot/login/+server.ts | 2 +- web/src/routes/api/v1/list-share/+server.ts | 22 +- .../routes/api/v1/list-share/[id]/+server.ts | 6 +- web/src/routes/api/v1/list/+server.ts | 9 +- web/src/routes/api/v1/list/[id]/+server.ts | 81 +- .../routes/api/v1/list/[id]/file/+server.ts | 2 +- web/src/routes/api/v1/list/form/+server.ts | 12 + .../routes/api/v1/list/form/[id]/+server.ts | 12 + web/src/routes/api/v1/notification/+server.ts | 10 +- .../api/v1/notification/[id]/+server.ts | 2 +- .../routes/api/v1/profile/[handle]/+server.ts | 35 + .../api/v1/profile/[handle]/lists/+server.ts | 43 + .../api/v1/profile/[handle]/stats/+server.ts | 49 + .../v1/profile/[handle]/timeline/+server.ts | 48 + .../api/v1/profile/[handle]/trails/+server.ts | 43 + .../routes/api/v1/search/[index]/+server.ts | 4 +- web/src/routes/api/v1/search/actor/+server.ts | 46 + .../routes/api/v1/settings/[id]/+server.ts | 6 +- web/src/routes/api/v1/summit-log/+server.ts | 92 +- .../routes/api/v1/summit-log/[id]/+server.ts | 12 +- .../routes/api/v1/summit-log/form/+server.ts | 14 + .../api/v1/summit-log/form/[id]/+server.ts | 13 + web/src/routes/api/v1/tag/+server.ts | 4 +- web/src/routes/api/v1/tag/[id]/+server.ts | 6 +- web/src/routes/api/v1/trail-like/+server.ts | 23 + .../routes/api/v1/trail-like/[id]/+server.ts | 21 + .../api/v1/trail-like/delete/+server.ts | 21 + web/src/routes/api/v1/trail-share/+server.ts | 21 +- .../routes/api/v1/trail-share/[id]/+server.ts | 6 +- web/src/routes/api/v1/trail/+server.ts | 8 +- web/src/routes/api/v1/trail/[id]/+server.ts | 146 +- .../api/v1/trail/bounding-box/+server.ts | 4 +- .../routes/api/v1/trail/download/+server.ts | 2 +- web/src/routes/api/v1/trail/filter/+server.ts | 4 +- web/src/routes/api/v1/trail/form/+server.ts | 20 + .../routes/api/v1/trail/form/[id]/+server.ts | 21 + .../routes/api/v1/trail/recommend/+server.ts | 25 +- web/src/routes/api/v1/trail/upload/+server.ts | 23 +- web/src/routes/api/v1/user/+server.ts | 2 +- web/src/routes/api/v1/user/[id]/+server.ts | 6 +- .../routes/api/v1/user/anonymous/+server.ts | 2 +- .../api/v1/user/anonymous/[id]/+server.ts | 2 +- web/src/routes/api/v1/waypoint/+server.ts | 4 +- .../routes/api/v1/waypoint/[id]/+server.ts | 6 +- .../api/v1/waypoint/[id]/file/+server.ts | 2 +- .../{ => [[handle]]/[[id]]}/+page.svelte | 93 +- .../lists/{ => [[handle]]/[[id]]}/+page.ts | 18 +- web/src/routes/lists/edit/[id]/+page.svelte | 66 +- web/src/routes/lists/edit/[id]/+page.ts | 2 +- web/src/routes/login/+page.svelte | 11 +- web/src/routes/map/+page.svelte | 36 +- web/src/routes/map/+page.ts | 1 + .../trail/{ => [handle]}/[id]/+page.svelte | 4 +- .../map/trail/{ => [handle]}/[id]/+page.ts | 3 +- .../{ => [handle]}/[id]/print/+page.svelte | 4 +- .../trail/{ => [handle]}/[id]/print/+page.ts | 3 +- web/src/routes/profile/[handle]/+error.svelte | 29 + .../routes/profile/[handle]/+layout.server.ts | 29 + .../profile/{[id] => [handle]}/+layout.svelte | 119 +- .../profile/{[id] => [handle]}/+page.svelte | 67 +- web/src/routes/profile/[handle]/+page.ts | 29 + .../{[id] => [handle]}/stats/+page.svelte | 153 +- .../profile/{[id] => [handle]}/stats/+page.ts | 14 +- .../profile/[handle]/trails/+page.svelte | 77 + .../{[id] => [handle]}/trails/+page.ts | 22 +- .../[handle]/users/[type]/+page.svelte | 97 + .../profile/[handle]/users/[type]/+page.ts | 22 + web/src/routes/profile/[id]/+layout.server.ts | 34 - web/src/routes/profile/[id]/+page.ts | 10 - .../routes/profile/[id]/trails/+page.svelte | 44 - .../profile/[id]/users/[type]/+page.svelte | 89 - .../routes/profile/[id]/users/[type]/+page.ts | 11 - web/src/routes/settings/+layout.svelte | 2 +- web/src/routes/settings/export/+page.svelte | 2 +- .../settings/notifications/+page.svelte | 72 +- web/src/routes/settings/profile/+page.svelte | 5 +- web/src/routes/trail/edit/[id]/+page.svelte | 51 +- web/src/routes/trail/edit/[id]/+page.ts | 5 +- .../view/{ => [handle]}/[id]/+page.svelte | 3 +- .../trail/view/{ => [handle]}/[id]/+page.ts | 2 +- web/src/routes/trails/+page.ts | 1 + web/static/docs/api/wanderer.openapi.yaml | 33124 +++++++++------- web/vite.config.ts | 18 +- 356 files changed, 57150 insertions(+), 35470 deletions(-) create mode 100644 db/federation/activity.go create mode 100644 db/federation/actor.go create mode 100644 db/federation/announce.go create mode 100644 db/federation/create.go create mode 100644 db/federation/delete.go create mode 100644 db/federation/follow.go create mode 100644 db/federation/like.go create mode 100644 db/federation/undo.go create mode 100644 db/migrations/1747061255_deleted_follow_counts.go create mode 100644 db/migrations/1747061256_deleted_activities.go create mode 100644 db/migrations/1747061257_created_activitypub_actors.go create mode 100644 db/migrations/1747061258_created_activitypub_activities.go create mode 100644 db/migrations/1747061259_seed_actors.go create mode 100644 db/migrations/1747061260_trails_add_new_author.go create mode 100644 db/migrations/1747061261_set_trail_authors.go create mode 100644 db/migrations/1747061262_comments_add_new_author.go create mode 100644 db/migrations/1747061263_set_comment_authors.go create mode 100644 db/migrations/1747061264_summit_logs_add_new_author.go create mode 100644 db/migrations/1747061265_set_summit_log_authors.go create mode 100644 db/migrations/1747061266_migrate_ms_token.go create mode 100644 db/migrations/1747061267_summit_logs_add_trail_field.go create mode 100644 db/migrations/1747061268_migrate_summit_log_trails.go create mode 100644 db/migrations/1747061269_trails_remove_summit_log_field.go create mode 100644 db/migrations/1747061270_follows_add_new_f_f.go create mode 100644 db/migrations/1747061271_migrate_follows.go create mode 100644 db/migrations/1747064968_collections_snapshot.go create mode 100644 db/migrations/1747066702_updated_comments.go create mode 100644 db/migrations/1747066720_updated_summit_logs.go create mode 100644 db/migrations/1747066741_updated_trails.go create mode 100644 db/migrations/1747066742_updated_follows.go create mode 100644 db/migrations/1747236775_created_timeline.go create mode 100644 db/migrations/1747242599_updated_timeline.go create mode 100644 db/migrations/1747300536_updated_timeline.go create mode 100644 db/migrations/1747312289_updated_comments.go create mode 100644 db/migrations/1747381400_updated_trails.go create mode 100644 db/migrations/1747382660_updated_trails.go create mode 100644 db/migrations/1747383776_updated_trails.go create mode 100644 db/migrations/1747499980_updated_comments.go create mode 100644 db/migrations/1747554117_updated_summit_logs.go create mode 100644 db/migrations/1747554570_updated_summit_logs.go create mode 100644 db/migrations/1747674856_updated_lists.go create mode 100644 db/migrations/1747674913_set_list_authors.go create mode 100644 db/migrations/1747675001_updated_lists.go create mode 100644 db/migrations/1747676287_updated_lists.go create mode 100644 db/migrations/1747683009_updated_lists.go create mode 100644 db/migrations/1747683368_updated_lists.go create mode 100644 db/migrations/1747683707_updated_lists.go create mode 100644 db/migrations/1747945195_updated_timeline.go create mode 100644 db/migrations/1747946749_updated_trails.go create mode 100644 db/migrations/1747946778_updated_lists.go create mode 100644 db/migrations/1747952550_updated_timeline.go create mode 100644 db/migrations/1747995473_updated_notifications.go create mode 100644 db/migrations/1747996502_updated_notifications.go create mode 100644 db/migrations/1747999298_updated_notifications.go create mode 100644 db/migrations/1748002661_updated_follows.go create mode 100644 db/migrations/1748003743_updated_summit_logs.go create mode 100644 db/migrations/1748084027_updated_follows.go create mode 100644 db/migrations/1749553104_updated_trail_share.go create mode 100644 db/migrations/1749553105_migrate_trail_share.go create mode 100644 db/migrations/1749554811_updated_trails_filter.go create mode 100644 db/migrations/1749554826_updated_trails_bounding_box.go create mode 100644 db/migrations/1749554910_updated_waypoints.go create mode 100644 db/migrations/1749554952_updated_trails.go create mode 100644 db/migrations/1749555128_updated_summit_logs.go create mode 100644 db/migrations/1749555173_updated_comments.go create mode 100644 db/migrations/1749555613_updated_trail_share.go create mode 100644 db/migrations/1749555614_migrate_ms_token.go create mode 100644 db/migrations/1749566277_updated_list_share.go create mode 100644 db/migrations/1749566278_migrate_list_share.go create mode 100644 db/migrations/1749566445_updated_lists.go create mode 100644 db/migrations/1749566456_updated_list_share.go create mode 100644 db/migrations/1749566852_updated_list_share.go create mode 100644 db/migrations/1749650389_updated_summit_logs.go create mode 100644 db/migrations/1749650422_updated_summit_logs.go create mode 100644 db/migrations/1749717023_created_trail_like.go create mode 100644 db/migrations/1749717428_updated_trail_like.go create mode 100644 db/migrations/1749831369_update_sortable_attributes.go create mode 100644 db/migrations/1749836174_updated_notifications.go create mode 100644 db/migrations/1749837201_updated_trails.go create mode 100644 db/migrations/1749837751_updated_trail_like.go create mode 100644 db/migrations/1749894936_updated_trails.go create mode 100644 db/migrations/1749902683_updated_activitypub_actors.go create mode 100644 db/migrations/1750259236_updated_comments.go create mode 100644 db/migrations/1750259275_updated_lists.go create mode 100644 db/migrations/1750259298_updated_summit_logs.go create mode 100644 db/migrations/1750259324_updated_trails.go create mode 100644 db/migrations/1750264310_updated_notifications.go create mode 100644 db/migrations/1750267445_updated_notifications.go create mode 100644 db/util/activitypub.go create mode 100644 docs/src/assets/guides/pocketbase_backup.png create mode 100644 docs/src/assets/guides/wanderer_follow.png create mode 100644 docs/src/assets/integrations.png create mode 100644 docs/src/assets/social.png rename docs/src/content/docs/{guides => develop}/api.md (78%) create mode 100644 docs/src/content/docs/develop/federation.md rename docs/src/content/docs/{getting-started => develop}/local-development.md (53%) delete mode 100644 docs/src/content/docs/getting-started/configuration.md delete mode 100644 docs/src/content/docs/getting-started/installation.mdx delete mode 100644 docs/src/content/docs/guides/authentication.md delete mode 100644 docs/src/content/docs/guides/create-a-trail.md delete mode 100644 docs/src/content/docs/guides/custom-categories.md delete mode 100644 docs/src/content/docs/guides/integrations.md delete mode 100644 docs/src/content/docs/guides/share-trails.md create mode 100644 docs/src/content/docs/run/backend-configuration.md create mode 100644 docs/src/content/docs/run/backup-server.md rename docs/src/content/docs/{getting-started => run}/changelog.md (95%) create mode 100644 docs/src/content/docs/run/custom-categories.md create mode 100644 docs/src/content/docs/run/environment-configuration.md create mode 100644 docs/src/content/docs/run/installation.mdx create mode 100644 docs/src/content/docs/use/authentication.md create mode 100644 docs/src/content/docs/use/community-interaction.md create mode 100644 docs/src/content/docs/use/create-a-trail.md rename docs/src/content/docs/{guides => use}/customize-map.md (75%) rename docs/src/content/docs/{guides => use}/import-export.md (59%) create mode 100644 docs/src/content/docs/use/integrations.md rename docs/src/content/docs/{guides => use}/lists.md (75%) create mode 100644 docs/src/content/docs/use/share-trails.md rename docs/src/content/docs/{guides => use}/statistics.md (62%) create mode 100644 docs/src/content/docs/use/summit-logs.md create mode 100644 docs/src/content/docs/welcome/index.mdx delete mode 100644 docs/tailwind.config.mjs create mode 100644 web/src/lib/components/actor_search.svelte create mode 100644 web/src/lib/components/base/editor.svelte create mode 100644 web/src/lib/components/base/search_list.svelte create mode 100644 web/src/lib/components/base/skeleton_table.svelte create mode 100644 web/src/lib/components/trail/like_button.svelte create mode 100644 web/src/lib/models/activitypub/activity.ts create mode 100644 web/src/lib/models/activitypub/actor.ts create mode 100644 web/src/lib/models/activitypub/webfinger_response.ts create mode 100644 web/src/lib/models/api/trail_like_schema.ts create mode 100644 web/src/lib/models/profile.ts rename web/src/lib/models/{activity.ts => timeline.ts} (68%) create mode 100644 web/src/lib/models/trail_like.ts delete mode 100644 web/src/lib/stores/activity_store.ts create mode 100644 web/src/lib/stores/profile_store.ts create mode 100644 web/src/lib/stores/trail_like_store.ts create mode 100644 web/src/lib/util/activitypub_util.ts create mode 100644 web/src/routes/.well-known/webfinger/+server.ts delete mode 100644 web/src/routes/api/v1/activity/+server.ts create mode 100644 web/src/routes/api/v1/activitypub/activity/[id]/+server.ts create mode 100644 web/src/routes/api/v1/activitypub/comment/[id]/+server.ts create mode 100644 web/src/routes/api/v1/activitypub/trail/[id]/+server.ts create mode 100644 web/src/routes/api/v1/activitypub/user/[handle]/+server.ts create mode 100644 web/src/routes/api/v1/activitypub/user/[handle]/followers/+server.ts create mode 100644 web/src/routes/api/v1/activitypub/user/[handle]/following/+server.ts create mode 100644 web/src/routes/api/v1/activitypub/user/[handle]/inbox/+server.ts create mode 100644 web/src/routes/api/v1/activitypub/user/[handle]/outbox/+server.ts delete mode 100644 web/src/routes/api/v1/follow/count/[id]/+server.ts create mode 100644 web/src/routes/api/v1/list/form/+server.ts create mode 100644 web/src/routes/api/v1/list/form/[id]/+server.ts create mode 100644 web/src/routes/api/v1/profile/[handle]/+server.ts create mode 100644 web/src/routes/api/v1/profile/[handle]/lists/+server.ts create mode 100644 web/src/routes/api/v1/profile/[handle]/stats/+server.ts create mode 100644 web/src/routes/api/v1/profile/[handle]/timeline/+server.ts create mode 100644 web/src/routes/api/v1/profile/[handle]/trails/+server.ts create mode 100644 web/src/routes/api/v1/search/actor/+server.ts create mode 100644 web/src/routes/api/v1/summit-log/form/+server.ts create mode 100644 web/src/routes/api/v1/summit-log/form/[id]/+server.ts create mode 100644 web/src/routes/api/v1/trail-like/+server.ts create mode 100644 web/src/routes/api/v1/trail-like/[id]/+server.ts create mode 100644 web/src/routes/api/v1/trail-like/delete/+server.ts create mode 100644 web/src/routes/api/v1/trail/form/+server.ts create mode 100644 web/src/routes/api/v1/trail/form/[id]/+server.ts rename web/src/routes/lists/{ => [[handle]]/[[id]]}/+page.svelte (85%) rename web/src/routes/lists/{ => [[handle]]/[[id]]}/+page.ts (53%) rename web/src/routes/map/trail/{ => [handle]}/[id]/+page.svelte (88%) rename web/src/routes/map/trail/{ => [handle]}/[id]/+page.ts (78%) rename web/src/routes/map/trail/{ => [handle]}/[id]/print/+page.svelte (99%) rename web/src/routes/map/trail/{ => [handle]}/[id]/print/+page.ts (81%) create mode 100644 web/src/routes/profile/[handle]/+error.svelte create mode 100644 web/src/routes/profile/[handle]/+layout.server.ts rename web/src/routes/profile/{[id] => [handle]}/+layout.svelte (52%) rename web/src/routes/profile/{[id] => [handle]}/+page.svelte (67%) create mode 100644 web/src/routes/profile/[handle]/+page.ts rename web/src/routes/profile/{[id] => [handle]}/stats/+page.svelte (77%) rename web/src/routes/profile/{[id] => [handle]}/stats/+page.ts (65%) create mode 100644 web/src/routes/profile/[handle]/trails/+page.svelte rename web/src/routes/profile/{[id] => [handle]}/trails/+page.ts (52%) create mode 100644 web/src/routes/profile/[handle]/users/[type]/+page.svelte create mode 100644 web/src/routes/profile/[handle]/users/[type]/+page.ts delete mode 100644 web/src/routes/profile/[id]/+layout.server.ts delete mode 100644 web/src/routes/profile/[id]/+page.ts delete mode 100644 web/src/routes/profile/[id]/trails/+page.svelte delete mode 100644 web/src/routes/profile/[id]/users/[type]/+page.svelte delete mode 100644 web/src/routes/profile/[id]/users/[type]/+page.ts rename web/src/routes/trail/view/{ => [handle]}/[id]/+page.svelte (94%) rename web/src/routes/trail/view/{ => [handle]}/[id]/+page.ts (86%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46f36569..f8c81fe7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -251,7 +251,7 @@ This release contains breaking changes. Most migrations will happen automaticall - Fixes issue with GPX export when using Google Chrome (thanks [@tofublock](https://github.com/tofublock)) ## Miscellaneous -As the number of contributors to this project continues to grow (which I’m very happy about), I’ve set up a [Discord channel](https://discord.gg/MdpybUHc) for more direct communication. If you’re interested in helping with Wanderer, feel free to join! +As the number of contributors to this project continues to grow (which I’m very happy about), I’ve set up a [Discord channel](https://discord.gg/MdpybUHc) for more direct communication. If you’re interested in helping with wanderer, feel free to join! # v0.11.0 ## Features diff --git a/README.md b/README.md index 8b23c60c..dd9b8f54 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ The first startup can take up to 90 seconds after which you can access the front > ⚠️ if you are using wanderer in a production environment make sure to change the MEILI_MASTER_KEY variable. -You can also run wanderer on bare-metal. Check out the [documentation](https://wanderer.to/getting-started/installation/#from-source) for a detailed how-to guide. +You can also run wanderer on bare-metal. Check out the [documentation](https://wanderer.to/run/installation/#installation-from-source) for a detailed how-to guide. ## Support wanderer diff --git a/db/Dockerfile b/db/Dockerfile index f37eba24..4f7f6040 100644 --- a/db/Dockerfile +++ b/db/Dockerfile @@ -3,6 +3,7 @@ FROM alpine:3.16 WORKDIR / COPY migrations ./migrations +COPY templates ./templates ARG TARGETARCH RUN echo ${TARGETARCH} diff --git a/db/federation/activity.go b/db/federation/activity.go new file mode 100644 index 00000000..ed15940c --- /dev/null +++ b/db/federation/activity.go @@ -0,0 +1,207 @@ +package federation + +import ( + "bytes" + "context" + "crypto/x509" + "database/sql" + "encoding/pem" + "fmt" + "io" + "net/http" + "net/url" + "os" + "slices" + "strings" + "time" + + pub "github.com/go-ap/activitypub" + + "sync" + + "github.com/go-ap/jsonld" + "github.com/go-fed/httpsig" + "github.com/pocketbase/pocketbase/core" + "github.com/pocketbase/pocketbase/tools/security" + "golang.org/x/sync/semaphore" +) + +func PostActivity(app core.App, actor *core.Record, activity *pub.Activity, recipients []string) error { + encryptionKey := os.Getenv("POCKETBASE_ENCRYPTION_KEY") + if len(encryptionKey) == 0 { + return fmt.Errorf("POCKETBASE_ENCRYPTION_KEY not set") + } + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + algs := []httpsig.Algorithm{httpsig.RSA_SHA256} + postHeaders := []string{"(request-target)", "Date", "Digest", "Content-Type", "Host"} + expiresIn := 60 + + body, err := jsonld.WithContext( + jsonld.IRI(pub.ActivityBaseURI), + jsonld.IRI(pub.SecurityContextURI), + ).Marshal(activity) + if err != nil { + return err + } + + decryptedPrivateKey, err := security.Decrypt(actor.GetString("private_key"), encryptionKey) + if err != nil { + return err + } + privateKey, err := x509.ParsePKCS1PrivateKey(decryptedPrivateKey) + if err != nil { + return err + } + pubID := actor.GetString("iri") + "#main-key" + + client := &http.Client{} + var wg sync.WaitGroup + + sem := semaphore.NewWeighted(5) // Limit to 5 concurrent sends + + slices.Sort(recipients) + uniqueRecipients := slices.Compact(recipients) + + for _, v := range uniqueRecipients { + + wg.Add(1) + go func(inbox string) { + defer wg.Done() + + signer, _, err := httpsig.NewSigner(algs, httpsig.DigestSha256, postHeaders, httpsig.Signature, int64(expiresIn)) + if err != nil { + return + } + + if err := sem.Acquire(context.Background(), 1); err != nil { + app.Logger().Error(fmt.Sprintf("Semaphore acquire failed: %s", err)) + return + } + defer sem.Release(1) + + buf := bytes.NewBuffer(body) + req, err := http.NewRequest(http.MethodPost, inbox, buf) + if err != nil { + app.Logger().Error(fmt.Sprintf("Request creation failed: %s", err)) + return + } + req.Header.Add("Content-Type", "application/activity+json") + req.Header.Add("Date", strings.ReplaceAll(time.Now().UTC().Format(time.RFC1123), "UTC", "GMT")) + req.Header.Add("Host", req.Host) + + if err := signer.SignRequest(privateKey, pubID, req, body); err != nil { + app.Logger().Error(fmt.Sprintf("Signing request failed: %s", err)) + return + } + + resp, err := client.Do(req) + if err != nil { + app.Logger().Error(fmt.Sprintf("Error sending request to inbox %s: %s", inbox, err)) + return + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusAccepted { + body, _ := io.ReadAll(resp.Body) + app.Logger().Error(fmt.Sprintf("Inbox %s responded with %d: %s", inbox, resp.StatusCode, body)) + } + + app.Logger().Info(fmt.Sprintf("Sent %s to %s", activity.Type, inbox)) + }(v) + } + + wg.Wait() + return nil +} + +func ProcessActivity(e *core.RequestEvent) error { + + body, err := io.ReadAll(e.Request.Body) + if err != nil { + return err + } + var activity pub.Activity + activity.UnmarshalJSON(body) + + actor, err := e.App.FindFirstRecordByData("activitypub_actors", "iri", activity.Actor.GetID().String()) + if err != nil { + if err == sql.ErrNoRows { + actor, err = GetActorByIRI(e.App, activity.Actor.GetID().String(), false) + if err != nil { + return err + } + } else { + return err + + } + } + + verified, err := verifySignature(e.Request, actor.GetString("public_key")) + if err != nil || !verified { + return e.UnauthorizedError("Invalid http signature", err) + } + + switch activity.Type { + case pub.FollowType: + ProcessFollowActivity(e.App, actor, activity) + case pub.AcceptType: + ProcessAcceptActivity(e.App, actor, activity) + case pub.UndoType: + ProcessUndoActivity(e.App, actor, activity) + case pub.UpdateType: + fallthrough + case pub.CreateType: + ProcessCreateOrUpdateActivity(e.App, actor, activity) + case pub.DeleteType: + ProcessDeleteActivity(e.App, actor, activity) + case pub.AnnounceType: + ProcessAnnounceActivity(e.App, actor, activity) + case pub.LikeType: + ProcessLikeActivity(e.App, actor, activity) + } + return e.JSON(http.StatusOK, nil) +} + +func verifySignature(req *http.Request, publicKeyPem string) (bool, error) { + origin := os.Getenv("ORIGIN") + if origin == "" { + return false, fmt.Errorf("ORIGIN not set") + } + block, _ := pem.Decode([]byte(publicKeyPem)) + if block == nil || block.Type != "PUBLIC KEY" { + return false, fmt.Errorf("could not decode publicKeyPem to PUBLIC KEY pem block type") + } + + req.URL = &url.URL{ + Path: req.Header.Get("X-Forwarded-Path"), + } + + url, err := url.Parse(origin) + if err != nil { + return false, err + } + + req.Header.Set("Host", url.Host) + req.Host = url.Host + + publicKey, err := x509.ParsePKIXPublicKey(block.Bytes) + if err != nil { + return false, err + } + + v, err := httpsig.NewVerifier(req) + if err != nil { + return false, err + } + + err = v.Verify(publicKey, httpsig.RSA_SHA256) + if err != nil { + return false, err + } + + return true, nil +} diff --git a/db/federation/actor.go b/db/federation/actor.go new file mode 100644 index 00000000..65d7b520 --- /dev/null +++ b/db/federation/actor.go @@ -0,0 +1,284 @@ +package federation + +import ( + "database/sql" + "encoding/json" + "fmt" + "net/http" + "net/url" + "os" + "strings" + "time" + + pub "github.com/go-ap/activitypub" + + "github.com/pocketbase/dbx" + "github.com/pocketbase/pocketbase/core" +) + +type WebfingerResponse struct { + Subject string `json:"subject"` + Links []struct { + Rel string `json:"rel"` + Href string `json:"href"` + } `json:"links"` +} + +func SplitHandle(handle string) (string, string) { + + cleaned := strings.TrimPrefix(handle, "@") + cleaned = strings.TrimSpace(cleaned) + + if !strings.Contains(cleaned, "@") { + return cleaned, "" + } + + parts := strings.SplitN(cleaned, "@", 2) + user := parts[0] + domain := parts[1] + + return user, domain +} + +func GetActorByHandle(app core.App, handle string, includeFollows bool) (*core.Record, error) { + username, domain := SplitHandle(handle) + + filter := "username={:username}&&" + if domain != "" { + filter += "domain={:domain}" + } else { + filter += "isLocal=true" + } + + var dbActor *core.Record + dbActor, err := app.FindFirstRecordByFilter("activitypub_actors", filter, dbx.Params{"username": username, "domain": domain}) + if err != nil && err == sql.ErrNoRows { + collection, err := app.FindCollectionByNameOrId("activitypub_actors") + if err != nil { + return nil, err + } + + dbActor = core.NewRecord(collection) + dbActor.Set("isLocal", false) + iri, err := iriFromHandle(domain, username) + if err != nil { + return nil, err + } + dbActor.Set("iri", iri) + + } else if err != nil { + return nil, err + } + + return assembleActor(dbActor, app, includeFollows) +} + +func GetActorByIRI(app core.App, iri string, includeFollows bool) (*core.Record, error) { + var dbActor *core.Record + dbActor, err := app.FindFirstRecordByFilter("activitypub_actors", "iri={:iri}", dbx.Params{"iri": iri}) + if err != nil && err == sql.ErrNoRows { + collection, err := app.FindCollectionByNameOrId("activitypub_actors") + if err != nil { + return nil, err + } + + dbActor = core.NewRecord(collection) + dbActor.Set("isLocal", false) + dbActor.Set("iri", iri) + + } else if err != nil { + return nil, err + } + + return assembleActor(dbActor, app, includeFollows) +} + +func iriFromHandle(domain string, username string) (string, error) { + client := &http.Client{} + + webfingerURL := fmt.Sprintf("https://%s/.well-known/webfinger?resource=acct:%s@%s", domain, username, domain) + resp, err := client.Get(webfingerURL) + if err != nil || resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("webfinger request failed: %v", err) + } + defer resp.Body.Close() + + var wf WebfingerResponse + if err := json.NewDecoder(resp.Body).Decode(&wf); err != nil { + return "", err + } + + for _, link := range wf.Links { + if link.Rel == "self" { + return link.Href, nil + } + } + return "", fmt.Errorf("no iri in response") +} + +func assembleActor(dbActor *core.Record, app core.App, includeFollows bool) (*core.Record, error) { + origin := os.Getenv("ORIGIN") + if origin == "" { + return nil, fmt.Errorf("ORIGIN environment variable not set") + } + + if dbActor.GetBool("isLocal") { + user, err := app.FindRecordById("users", dbActor.GetString("user")) + if err != nil { + return nil, err + } + settings, err := app.FindFirstRecordByData("settings", "user", user.Id) + if err != nil { + return nil, err + } + + if user.GetString("avatar") != "" { + dbActor.Set("icon", fmt.Sprintf("%s/api/v1/files/users/%s/%s", origin, user.Id, user.GetString("avatar"))) + } + dbActor.Set("summary", settings.GetString("bio")) + followerCount, err := app.CountRecords("follows", dbx.NewExp("followee={:user}", dbx.Params{"user": dbActor.Id})) + if err != nil { + return nil, err + } + dbActor.Set("followerCount", followerCount) + followingCount, err := app.CountRecords("follows", dbx.NewExp("follower={:user}", dbx.Params{"user": dbActor.Id})) + if err != nil { + return nil, err + } + dbActor.Set("followingCount", followingCount) + + dbActor.Set("last_fetched", time.Now()) + + privacy := settings.GetString("privacy") + result := make(map[string]interface{}) + json.Unmarshal([]byte(privacy), &result) + + private := result["account"] == "private" + + if private { + return nil, fmt.Errorf("profile is private") + } + + } else { + + // check if value is still cached + twoHoursAgo := time.Now().Add(-2 * time.Hour) + if !includeFollows && dbActor.GetDateTime("last_fetched").Time().After(twoHoursAgo) { + return dbActor, nil + } + pubActor, followers, following, err := fetchRemoteActor(dbActor.GetString("iri"), includeFollows) + if err != nil { + if dbActor.Id != "" { + return dbActor, err + } + return nil, err + } + + icon := "" + if pub.IsObject(pubActor.Icon) { + iconObject, err := pub.ToObject(pubActor.Icon) + if err == nil && iconObject.URL != nil { + icon = iconObject.URL.GetID().String() + } + } + + parsedUrl, err := url.Parse(dbActor.GetString("iri")) + if err != nil { + return nil, err + } + domain := strings.TrimPrefix(parsedUrl.Hostname(), "www.") + + dbActor.Set("domain", domain) + dbActor.Set("followers", pubActor.Followers.GetID().String()) + dbActor.Set("inbox", pubActor.Inbox.GetID().String()) + dbActor.Set("iri", pubActor.GetID().String()) + dbActor.Set("username", pubActor.Name.String()) + dbActor.Set("preferred_username", pubActor.PreferredUsername.String()) + dbActor.Set("following", pubActor.Following.GetID().String()) + dbActor.Set("summary", pubActor.Summary.String()) + dbActor.Set("outbox", pubActor.Outbox.GetID().String()) + dbActor.Set("icon", icon) + dbActor.Set("published", pubActor.Published.String()) + dbActor.Set("public_key", pubActor.PublicKey.PublicKeyPem) + dbActor.Set("last_fetched", time.Now()) + + if includeFollows { + dbActor.Set("followerCount", int(followers.TotalItems)) + dbActor.Set("followingCount", int(following.TotalItems)) + } + } + + err := app.Save(dbActor) + if err != nil && err.Error() == "iri: Value must be unique." { + dbActor, err = app.FindFirstRecordByData("activitypub_actors", "iri", dbActor.GetString("iri")) + if err != nil { + return nil, err + } + return dbActor, nil + } else if err != nil { + return nil, err + } + + return dbActor, nil +} + +// Fetches an AP actor and optionally followers/following collections +func fetchRemoteActor(iri string, includeFollows bool) (*pub.Actor, *pub.OrderedCollection, *pub.OrderedCollection, error) { + client := &http.Client{} + headers := map[string]string{ + "Accept": "application/ld+json", + } + + req, _ := http.NewRequest("GET", iri, nil) + for k, v := range headers { + req.Header.Set(k, v) + } + resp, err := client.Do(req) + if err != nil { + return nil, nil, nil, fmt.Errorf("actor fetch failed: %v", err) + } else if resp.StatusCode != http.StatusOK { + return nil, nil, nil, fmt.Errorf("actor fetch failed: status %v", resp.StatusCode) + } + + defer resp.Body.Close() + + var pubActor pub.Actor + if err := json.NewDecoder(resp.Body).Decode(&pubActor); err != nil { + return nil, nil, nil, err + } + + var followers, following pub.OrderedCollection + + if includeFollows { + // Fetch followers + if data, err := fetchCollection(pubActor.Followers.GetID().String(), headers); err == nil { + followers = *data + } + + // Fetch following + if data, err := fetchCollection(pubActor.Following.GetID().String(), headers); err == nil { + following = *data + } + } + + return &pubActor, &followers, &following, nil +} + +func fetchCollection(url string, headers map[string]string) (*pub.OrderedCollection, error) { + req, _ := http.NewRequest("GET", url, nil) + for k, v := range headers { + req.Header.Set(k, v) + } + resp, err := http.DefaultClient.Do(req) + if err != nil || resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("collection fetch failed for %s: %v", url, err) + } + defer resp.Body.Close() + + var collection pub.OrderedCollection + if err := json.NewDecoder(resp.Body).Decode(&collection); err != nil { + return nil, err + } + + return &collection, nil +} diff --git a/db/federation/announce.go b/db/federation/announce.go new file mode 100644 index 00000000..e757b61d --- /dev/null +++ b/db/federation/announce.go @@ -0,0 +1,276 @@ +package federation + +import ( + "database/sql" + "fmt" + "net/url" + "os" + "path" + "pocketbase/util" + "strings" + "time" + + "github.com/pocketbase/dbx" + "github.com/pocketbase/pocketbase/core" + "github.com/pocketbase/pocketbase/tools/security" + + pub "github.com/go-ap/activitypub" +) + +type AnnounceType string + +const ( + TrailAnnounceType AnnounceType = "trail" + ListAnnounceType AnnounceType = "list" +) + +func CreateAnnounceActivity(app core.App, record *core.Record, typ AnnounceType) error { + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + var subject *core.Record + var object pub.Item + var err error + if typ == TrailAnnounceType { + subject, err = app.FindRecordById("trails", record.GetString("trail")) + if err != nil { + return err + } + object, err = util.ObjectFromTrail(app, subject, nil) + if err != nil { + return err + } + } else if typ == ListAnnounceType { + subject, err = app.FindRecordById("lists", record.GetString("list")) + if err != nil { + return err + } + object, err = util.ObjectFromList(app, subject) + if err != nil { + return err + } + + } else { + return fmt.Errorf("unknown announce type") + } + + subjectActor, err := app.FindRecordById("activitypub_actors", subject.GetString("author")) + if err != nil { + return err + } + + objectActor, err := app.FindRecordById("activitypub_actors", record.GetString("actor")) + if err != nil { + return err + } + + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + recordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId) + to := objectActor.GetString("iri") + actor := subjectActor.GetString("iri") + + activity := pub.AnnounceNew(pub.IRI(id), object) + activity.To = pub.ItemCollection{pub.IRI(to)} + activity.Actor = pub.IRI(actor) + activity.Tag = pub.ItemCollection{ + pub.Object{ + Type: pub.NoteType, + Name: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, "permission")), + Content: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, record.GetString("permission"))), + }, + } + + err = PostActivity(app, subjectActor, activity, []string{objectActor.GetString("inbox")}) + if err != nil { + return err + } + + activityRecord := core.NewRecord(collection) + activityRecord.Set("id", recordId) + activityRecord.Set("iri", id) + activityRecord.Set("to", []string{to}) + activityRecord.Set("type", string(pub.AnnounceType)) + activityRecord.Set("object", object) + activityRecord.Set("actor", actor) + activityRecord.Set("published", time.Now()) + + return app.Save(activityRecord) +} + +// process incoming announce activity +func ProcessAnnounceActivity(app core.App, actor *core.Record, activity pub.Activity) error { + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + object := activity.Object.GetID().String() + + if strings.Contains(object, "/api/v1/trail") { + processTrailAnnounceActivity(app, actor, activity) + + } else if strings.Contains(object, "/api/v1/list") { + processListAnnounceActivity(app, actor, activity) + } else { + return fmt.Errorf("unknown announce type") + } + return nil + +} + +func processTrailAnnounceActivity(app core.App, actor *core.Record, activity pub.Activity) error { + + objectActor, err := app.FindFirstRecordByData("activitypub_actors", "iri", activity.To[0].GetID().String()) + if err != nil { + return err + } + + var trail *core.Record + if !actor.GetBool("isLocal") { + trail, err = util.TrailFromActivity(activity, app, actor) + if err != nil { + return err + } + + permission := "view" + // tags, err := pub.ToItemCollection(activity.Tag) + // if err != nil { + // return err + // } + + // for _, tag := range tags.Collection() { + // tagObj, err := pub.ToObject(tag) + // if err != nil { + // continue + // } + // name := tagObj.Name.First().Value.String() + // content := tagObj.Content.First().Value.String() + // if name == "permission" { + // permission = content + // } + // } + + record, err := app.FindFirstRecordByFilter("trail_share", "trail={:trailId}&&actor={:actorId}", dbx.Params{"trailId": trail.Id, "actorId": objectActor.Id}) + if err != nil { + if err == sql.ErrNoRows { + collection, err := app.FindCollectionByNameOrId("trail_share") + if err != nil { + return err + } + record = core.NewRecord(collection) + record.Set("trail", trail.Id) + record.Set("actor", objectActor.Id) + } else { + return err + } + } + + record.Set("permission", permission) + + err = app.Save(record) + if err != nil { + return err + } + } else { + trailUrl, err := url.Parse(activity.Object.GetID().String()) + if err != nil { + return err + } + trailId := path.Base(trailUrl.Path) + trail, err = app.FindRecordById("trails", trailId) + if err != nil { + return err + } + } + + notification := util.Notification{ + Type: util.TrailShare, + Metadata: map[string]string{ + "id": trail.Id, + "trail": trail.GetString("name"), + "author": fmt.Sprintf("@%s@%s", actor.GetString("username"), actor.GetString("domain")), + }, + Seen: false, + Author: actor.Id, + } + err = util.SendNotification(app, notification, objectActor) + if err != nil { + return err + } + + return nil +} + +func processListAnnounceActivity(app core.App, actor *core.Record, activity pub.Activity) error { + + objectActor, err := app.FindFirstRecordByData("activitypub_actors", "iri", activity.To[0].GetID().String()) + if err != nil { + return err + } + + var list *core.Record + if !actor.GetBool("isLocal") { + list, err = util.ListFromActivity(activity, app, actor) + if err != nil { + return err + } + + record, err := app.FindFirstRecordByFilter("list_share", "list={:listId}&&actor={:actorId}", dbx.Params{"listId": list.Id, "actorId": objectActor.Id}) + if err != nil { + if err == sql.ErrNoRows { + collection, err := app.FindCollectionByNameOrId("list_share") + if err != nil { + return err + } + record = core.NewRecord(collection) + record.Set("list", list.Id) + record.Set("actor", objectActor.Id) + record.Set("permission", "view") + + } else { + return err + } + } + + err = app.Save(record) + if err != nil { + return err + } + } else { + listUrl, err := url.Parse(activity.Object.GetID().String()) + if err != nil { + return err + } + listId := path.Base(listUrl.Path) + list, err = app.FindRecordById("trails", listId) + if err != nil { + return err + } + } + + notification := util.Notification{ + Type: util.ListShare, + Metadata: map[string]string{ + "id": list.Id, + "list": list.GetString("name"), + "author": fmt.Sprintf("@%s@%s", actor.GetString("username"), actor.GetString("domain")), + }, + Seen: false, + Author: actor.Id, + } + err = util.SendNotification(app, notification, objectActor) + if err != nil { + return err + } + + return nil + +} diff --git a/db/federation/create.go b/db/federation/create.go new file mode 100644 index 00000000..b8a5b382 --- /dev/null +++ b/db/federation/create.go @@ -0,0 +1,849 @@ +package federation + +import ( + "context" + "database/sql" + "fmt" + "net/url" + "os" + "path" + "strconv" + "strings" + "time" + + "pocketbase/util" + + pub "github.com/go-ap/activitypub" + "github.com/pocketbase/dbx" + "github.com/pocketbase/pocketbase/core" + "github.com/pocketbase/pocketbase/tools/filesystem" + "github.com/pocketbase/pocketbase/tools/security" + "golang.org/x/net/html" +) + +func CreateTrailActivity(app core.App, trail *core.Record, typ pub.ActivityVocabularyType) error { + if !trail.GetBool("public") { + // only broadcast the trail if it is public + return nil + } + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + trailAuthor, err := app.FindRecordById("activitypub_actors", trail.GetString("author")) + if err != nil { + return err + } + + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + recordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId) + to := "https://www.w3.org/ns/activitystreams#Public" + + mentionedActors, handles, err := ActorsFromMentions(app, trail.GetString("description")) + if err != nil { + return err + } + + mentions := []string{} + cc := pub.ItemCollection{pub.IRI(trailAuthor.GetString("followers"))} + tags := pub.ItemCollection{} + for i, m := range mentionedActors { + inbox := m.GetString("inbox") + mention := pub.MentionNew(pub.IRI(m.GetString("iri"))) + mention.Href = pub.IRI(m.GetString("iri")) + mention.Name = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, handles[i])) + tags.Append(mention) + + mentions = append(mentions, inbox) + cc.Append(pub.IRI(inbox)) + } + + trailObject, err := util.ObjectFromTrail(app, trail, &tags) + if err != nil { + return err + } + + activity := pub.ActivityNew(pub.IRI(id), typ, trailObject) + activity.Actor = pub.IRI(trailAuthor.GetString("iri")) + activity.To = pub.ItemCollection{pub.IRI(to)} + activity.CC = cc + activity.Published = time.Now() + + record := core.NewRecord(collection) + record.Set("id", recordId) + record.Set("iri", id) + record.Set("to", []string{to}) + record.Set("cc", cc) + record.Set("type", string(typ)) + record.Set("object", trailObject) + record.Set("actor", trailAuthor.GetString("iri")) + record.Set("published", time.Now()) + + err = app.Save(record) + if err != nil { + return err + } + + follows, err := app.FindRecordsByFilter("follows", "followee={:followee}&&status='accepted'", "", -1, 0, dbx.Params{"followee": trailAuthor.Id}) + if err != nil { + return err + } + + recipients := mentions + for _, f := range follows { + follower, err := app.FindRecordById("activitypub_actors", f.GetString("follower")) + if err != nil { + return err + } + recipients = append(recipients, follower.GetString("inbox")) + } + + return PostActivity(app, trailAuthor, activity, recipients) +} + +func CreateCommentActivity(app core.App, comment *core.Record, typ pub.ActivityVocabularyType) error { + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + // author of the comment + commentAuthor, err := app.FindRecordById("activitypub_actors", comment.GetString("author")) + if err != nil { + return err + } + + commentTrail, err := app.FindRecordById("trails", comment.GetString("trail")) + if err != nil { + return err + } + commentTrailAuthor, err := app.FindRecordById("activitypub_actors", commentTrail.GetString("author")) + if err != nil { + return err + } + + activityRecordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, activityRecordId) + to := "https://www.w3.org/ns/activitystreams#Public" + + mentionedActors, handles, err := ActorsFromMentions(app, comment.GetString("text")) + if err != nil { + return err + } + recipients := []string{} + tags := pub.ItemCollection{} + for i, m := range mentionedActors { + mention := pub.MentionNew(pub.IRI(m.GetString("iri"))) + mention.Href = pub.IRI(m.GetString("iri")) + mention.Name = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, handles[i])) + tags.Append(mention) + + recipients = append(recipients, m.GetString("inbox")) + } + recipients = append(recipients, commentTrailAuthor.GetString("inbox")) + + cc := pub.ItemCollection{} + for _, r := range recipients { + cc.Append(pub.IRI(r)) + } + + author := commentAuthor.GetString("iri") + + commentObject, err := util.ObjectFromComment(app, comment, &tags) + if err != nil { + return err + } + + activity := pub.ActivityNew(pub.IRI(id), typ, commentObject) + activity.Actor = pub.IRI(author) + activity.To = pub.ItemCollection{pub.IRI(to)} + activity.CC = cc + activity.Published = time.Now() + activity.Object = commentObject + + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + record := core.NewRecord(collection) + record.Set("id", activityRecordId) + record.Set("iri", id) + record.Set("to", []string{to}) + record.Set("cc", recipients) + record.Set("type", string(typ)) + record.Set("object", commentObject) + record.Set("actor", author) + record.Set("published", time.Now()) + + err = app.Save(record) + if err != nil { + return err + } + + return PostActivity(app, commentAuthor, activity, recipients) + +} + +func CreateSummitLogActivity(app core.App, summitLog *core.Record, typ pub.ActivityVocabularyType) error { + + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + summitLogAuthor, err := app.FindRecordById("activitypub_actors", summitLog.GetString("author")) + if err != nil { + return err + } + + var summitLogAuthorId string + // first check if we find the trail locally + summitLogTrail, err := app.FindRecordById("trails", summitLog.GetString("trail")) + if err != nil { + return err + } + if !summitLogTrail.GetBool("public") { + // only broadcast the log if the trail it belongs to is public + return nil + } + summitLogAuthorId = summitLogTrail.GetString("author") + + summitLogTrailAuthor, err := app.FindRecordById("activitypub_actors", summitLogAuthorId) + if err != nil { + return err + } + + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + var trailIRI pub.IRI + if summitLogTrailAuthor.GetBool("isLocal") { + trailId := summitLog.GetString("trail") + trailIRI = pub.IRI(fmt.Sprintf("%s/api/v1/trail/%s", origin, trailId)) + } else { + trailIRI = pub.IRI(summitLogTrail.GetString("iri")) + } + + recordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId) + to := pub.ItemCollection{pub.IRI("https://www.w3.org/ns/activitystreams#Public")} + + // someone else created the summit log on the trail -> inform the trail's author + if summitLogAuthor.Id != summitLogTrailAuthor.Id { + to.Append(pub.IRI(summitLogTrailAuthor.GetString("iri"))) + } + + mentionedActors, handles, err := ActorsFromMentions(app, summitLog.GetString("text")) + if err != nil { + return err + } + + mentions := []string{} + cc := pub.ItemCollection{pub.IRI(summitLogAuthor.GetString("followers"))} + mentionTags := pub.ItemCollection{} + for i, m := range mentionedActors { + inbox := m.GetString("inbox") + mention := pub.MentionNew(pub.IRI(m.GetString("iri"))) + mention.Href = pub.IRI(m.GetString("iri")) + mention.Name = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, handles[i])) + mentionTags.Append(mention) + + mentions = append(mentions, inbox) + cc.Append(pub.IRI(inbox)) + } + + photos := summitLog.GetStringSlice("photos") + + gpx := "" + if summitLog.GetString("gpx") != "" { + gpx = fmt.Sprintf("%s/api/v1/files/summit_logs/%s/%s", origin, summitLog.Id, summitLog.GetString("gpx")) + } + + attachments := make(pub.ItemCollection, max(len(photos), 2)) + for i := range len(photos) { + iri := fmt.Sprintf("%s/api/v1/files/summit_logs/%s/%s", origin, summitLog.Id, photos[i]) + + attachments[i] = pub.Document{ + Type: pub.ImageType, + MediaType: "image/jpeg", + URL: pub.IRI(iri), + } + } + if gpx != "" { + attachments.Append(pub.Document{ + Type: pub.DocumentType, + MediaType: "application/xml+gpx", + URL: pub.IRI(gpx), + }) + } + + tags := pub.ItemCollection{ + pub.Object{ + Type: pub.NoteType, + Name: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, "elevation_gain")), + Content: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, fmt.Sprintf("%fm", summitLog.GetFloat("elevation_gain")))), + }, + pub.Object{ + Type: pub.NoteType, + Name: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, "elevation_loss")), + Content: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, fmt.Sprintf("%fm", summitLog.GetFloat("elevation_loss")))), + }, + pub.Object{ + Type: pub.NoteType, + Name: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, "distance")), + Content: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, fmt.Sprintf("%fm", summitLog.GetFloat("distance")))), + }, + pub.Object{ + Type: pub.NoteType, + Name: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, "duration")), + Content: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, fmt.Sprintf("%fm", summitLog.GetFloat("duration")))), + }, + } + + for _, m := range mentionTags { + tags.Append(m) + } + + logObject := pub.ObjectNew(pub.NoteType) + + logObject.Content = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, summitLog.GetString("text"))) + logObject.AttributedTo = pub.IRI(summitLogAuthor.GetString("iri")) + logObject.Published = summitLog.GetDateTime("created").Time() + logObject.ID = pub.IRI(fmt.Sprintf("%s/api/v1/summit-log/%s", origin, summitLog.Id)) + logObject.URL = pub.IRI(fmt.Sprintf("%s/trail/view/@%s/%s", origin, summitLogTrailAuthor.GetString("username"), summitLog.GetString("trail"))) + logObject.InReplyTo = trailIRI + logObject.Tag = tags + + logObject.StartTime = summitLog.GetDateTime("date").Time() + logObject.Attachment = attachments + + activity := pub.ActivityNew(pub.IRI(id), typ, logObject) + activity.Actor = pub.IRI(summitLogAuthor.GetString("iri")) + activity.To = to + activity.CC = cc + activity.Published = time.Now() + + follows, err := app.FindRecordsByFilter("follows", "followee={:followee}&&status='accepted'", "", -1, 0, dbx.Params{"followee": summitLogAuthor.Id}) + if err != nil { + return err + } + + recipients := mentions + + for _, f := range follows { + follower, err := app.FindRecordById("activitypub_actors", f.GetString("follower")) + if err != nil { + return err + } + recipients = append(recipients, follower.GetString("inbox")) + } + + if summitLogAuthor.Id != summitLogTrailAuthor.Id { + recipients = append(recipients, summitLogTrailAuthor.GetString("inbox")) + } + + err = PostActivity(app, summitLogAuthor, activity, recipients) + if err != nil { + return err + } + + record := core.NewRecord(collection) + record.Set("id", recordId) + record.Set("iri", id) + record.Set("to", to) + record.Set("cc", cc) + record.Set("type", string(typ)) + record.Set("object", logObject) + record.Set("actor", summitLogAuthor.GetString("iri")) + record.Set("published", time.Now()) + + return app.Save(record) +} + +func CreateListActivity(app core.App, list *core.Record, typ pub.ActivityVocabularyType) error { + if !list.GetBool("public") { + // only broadcast the list if it is public + return nil + } + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + // author of the list + listAuthor, err := app.FindRecordById("activitypub_actors", list.GetString("author")) + if err != nil { + return err + } + + activityRecordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, activityRecordId) + to := "https://www.w3.org/ns/activitystreams#Public" + cc := listAuthor.GetString("followers") + author := listAuthor.GetString("iri") + + listObject, err := util.ObjectFromList(app, list) + if err != nil { + return err + } + + activity := pub.ActivityNew(pub.IRI(id), typ, listObject) + activity.Actor = pub.IRI(author) + activity.To = pub.ItemCollection{pub.IRI(to)} + activity.CC = pub.ItemCollection{pub.IRI(cc)} + activity.Published = time.Now() + activity.Object = listObject + + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + follows, err := app.FindRecordsByFilter("follows", "followee={:followee}&&status='accepted'", "", -1, 0, dbx.Params{"followee": listAuthor.Id}) + if err != nil { + return err + } + + recipients := []string{} + for _, f := range follows { + follower, err := app.FindRecordById("activitypub_actors", f.GetString("follower")) + if err != nil { + return err + } + recipients = append(recipients, follower.GetString("inbox")) + } + + err = PostActivity(app, listAuthor, activity, recipients) + if err != nil { + return err + } + + record := core.NewRecord(collection) + record.Set("id", activityRecordId) + record.Set("iri", id) + record.Set("to", []string{to}) + record.Set("cc", []string{cc}) + record.Set("type", string(typ)) + record.Set("object", listObject) + record.Set("actor", author) + record.Set("published", time.Now()) + + return app.Save(record) +} + +func ProcessCreateOrUpdateActivity(app core.App, actor *core.Record, activity pub.Activity) error { + + var err error + if strings.Contains(activity.Object.GetID().String(), "/api/v1/trail") { + err = processCreateOrUpdateTrailActivity(activity, app, actor) + } else if strings.Contains(activity.Object.GetID().String(), "/api/v1/summit-log") { + err = processCreateOrUpdateSummitLogActivity(activity, app, actor) + } else if strings.Contains(activity.Object.GetID().String(), "/api/v1/list") { + err = processCreateOrUpdateListActivity(activity, app, actor) + } else { + err = processCreateOrUpdateCommentActivity(activity, app, actor) + } + + if err != nil { + return err + } + + return nil + +} + +func processCreateOrUpdateTrailActivity(activity pub.Activity, app core.App, actor *core.Record) error { + + // no need to do anything if the actor is local + if actor.GetBool("isLocal") { + return nil + } + + trail, err := util.TrailFromActivity(activity, app, actor) + + trailObject, _ := pub.ToObject(activity.Object) + + for _, t := range trailObject.Tag { + if t.GetType() == pub.MentionType { + mention := t.(*pub.Mention) + mentionedActor, err := app.FindFirstRecordByData("activitypub_actors", "iri", mention.Href.GetID().String()) + if err != nil { + continue + } + notification := util.Notification{ + Type: util.TrailMention, + Metadata: map[string]string{ + "id": trail.Id, + "author": fmt.Sprintf("@%s@%s", actor.GetString("username"), actor.GetString("domain")), + }, + Seen: false, + Author: actor.Id, + } + return util.SendNotification(app, notification, mentionedActor) + } + } + + return err +} + +func processCreateOrUpdateCommentActivity(activity pub.Activity, app core.App, actor *core.Record) error { + + commentObject, err := pub.ToObject(activity.Object) + if err != nil { + return err + } + + if commentObject.InReplyTo == nil { + return fmt.Errorf("error processing comment: InReplyTo empty") + } + + trailUrl, err := url.Parse(commentObject.InReplyTo.GetLink().String()) + if err != nil { + return err + } + trailId := path.Base(trailUrl.Path) + + var trail *core.Record + trail, err = app.FindFirstRecordByFilter("trails", "iri={:iri} || id={:id}", dbx.Params{"id": trailId, "iri": commentObject.InReplyTo.GetID().String()}) + + // if the trail is not present on this instance fetch it + if err != nil { + if err == sql.ErrNoRows { + trailObject, err := util.TrailObjectFromIRI(commentObject.InReplyTo.GetLink().String()) + if err != nil { + return err + } + activity := pub.ActivityNew(pub.IRI("new"), pub.CreateType, trailObject) + trail, err = util.TrailFromActivity(*activity, app, actor) + if err != nil { + return err + } + } else { + return err + } + } + + trailAuthor, err := app.FindRecordById("activitypub_actors", trail.GetString("author")) + if err != nil { + return err + } + + // no need to do anything else if the actor is local + if actor.GetBool("isLocal") { + return nil + } + + record, err := app.FindFirstRecordByData("comments", "iri", commentObject.ID.String()) + if err != nil { + if err == sql.ErrNoRows { + collection, err := app.FindCollectionByNameOrId("comments") + if err != nil { + return err + } + + record = core.NewRecord(collection) + } else { + return err + } + } + + record.Set("iri", commentObject.ID.String()) + record.Set("text", commentObject.Content.First().Value) + record.Set("author", actor.Id) + record.Set("trail", trail.Id) + + err = app.Save(record) + if err != nil { + return err + } + + // send notifications to all mentioned actors + for _, t := range commentObject.Tag { + if t.GetType() == pub.MentionType { + mention := t.(*pub.Mention) + mentionedActor, err := app.FindFirstRecordByData("activitypub_actors", "iri", mention.Href.GetID().String()) + if err != nil { + continue + } + notification := util.Notification{ + Type: util.CommentMention, + Metadata: map[string]string{ + "comment": commentObject.Content.First().Value.String(), + "trail_id": trail.Id, + "trail_name": trail.GetString("name"), + "trail_author": fmt.Sprintf("@%s@%s", trailAuthor.GetString("username"), trailAuthor.GetString("domain")), + }, + Seen: false, + Author: actor.Id, + } + return util.SendNotification(app, notification, mentionedActor) + } + } + if activity.Type == pub.CreateType { + // send a notification to the trail author + notification := util.Notification{ + Type: util.TrailComment, + Metadata: map[string]string{ + "comment": commentObject.Content.First().Value.String(), + "trail_id": trail.Id, + "trail_name": trail.GetString("name"), + "trail_author": fmt.Sprintf("@%s@%s", trailAuthor.GetString("username"), trailAuthor.GetString("domain")), + }, + Seen: false, + Author: actor.Id, + } + return util.SendNotification(app, notification, trailAuthor) + } + + return nil +} + +func processCreateOrUpdateSummitLogActivity(activity pub.Activity, app core.App, actor *core.Record) error { + logObject, err := pub.ToObject(activity.Object) + if err != nil { + return err + } + + trailIRI, err := url.Parse(logObject.InReplyTo.GetID().String()) + if err != nil { + return err + } + trailId := path.Base(trailIRI.Path) + + trail, err := app.FindFirstRecordByFilter("trails", "iri={:iri} || id={:id}", dbx.Params{"id": trailId, "iri": logObject.InReplyTo.GetID().String()}) + // if the trail is not present on this instance fetch it + if err != nil { + if err == sql.ErrNoRows { + trailObject, err := util.TrailObjectFromIRI(logObject.InReplyTo.GetLink().String()) + if err != nil { + return err + } + activity := pub.ActivityNew(pub.IRI("new"), pub.CreateType, trailObject) + trail, err = util.TrailFromActivity(*activity, app, actor) + if err != nil { + return err + } + } else { + return err + } + } + + trailAuthor, err := app.FindRecordById("activitypub_actors", trail.GetString("author")) + if err != nil { + return err + } + + newSummitLog := false + record, err := app.FindFirstRecordByData("summit_logs", "iri", logObject.ID.String()) + if err != nil { + if err == sql.ErrNoRows { + collection, err := app.FindCollectionByNameOrId("summit_logs") + if err != nil { + return err + } + + record = core.NewRecord(collection) + newSummitLog = true + } else { + return err + } + } + // no need to do anything else if the actor is local + if actor.GetBool("isLocal") { + return nil + } + + var distance, duration, elevation_gain, elevation_loss float64 + tags, err := pub.ToItemCollection(logObject.Tag) + if err != nil { + return err + } + + for _, tag := range tags.Collection() { + tagObj, err := pub.ToObject(tag) + if err != nil { + continue + } + content := tagObj.Content.First().Value.String() + switch tagObj.Name.First().Value.String() { + case "elevation_gain": + elevation_gain, err = strconv.ParseFloat(content[:len(content)-1], 64) + case "elevation_loss": + elevation_loss, err = strconv.ParseFloat(content[:len(content)-1], 64) + case "duration": + duration, err = strconv.ParseFloat(content[:len(content)-1], 64) + case "distance": + distance, err = strconv.ParseFloat(content[:len(content)-1], 64) + } + if err != nil { + continue + } + } + + record.Set("date", logObject.StartTime) + record.Set("text", logObject.Content.First().Value) + record.Set("distance", distance) + record.Set("duration", duration) + record.Set("elevation_gain", elevation_gain) + record.Set("elevation_loss", elevation_loss) + record.Set("author", actor.Id) + record.Set("trail", trail.Id) + record.Set("iri", logObject.ID.String()) + + if logObject.Attachment != nil { + attachments, err := pub.ToItemCollection(logObject.Attachment) + if err != nil { + return err + } + + photoURLs := []string{} + gpxURL := "" + for _, a := range attachments.Collection() { + attachment, err := pub.ToObject(a) + if err != nil { + continue + } + if attachment.Type == pub.DocumentType && attachment.MediaType == "application/xml+gpx" { + gpxURL = attachment.URL.GetLink().String() + } else if attachment.Type == pub.ImageType { + photoURLs = append(photoURLs, attachment.URL.GetLink().String()) + } + } + + if len(photoURLs) > 0 { + photos := make([]*filesystem.File, len(photoURLs)) + for i, purl := range photoURLs { + photo, err := filesystem.NewFileFromURL(context.Background(), purl) + if err != nil { + continue + } + photos[i] = photo + } + + record.Set("photos", photos) + } + + if gpxURL != "" { + gpx, err := filesystem.NewFileFromURL(context.Background(), gpxURL) + if err != nil { + return err + } + + record.Set("gpx", gpx) + } + } + + err = app.Save(record) + if err != nil { + return err + } + + // send notifications to all mentioned actors + for _, t := range logObject.Tag { + if t.GetType() == pub.MentionType { + mention := t.(*pub.Mention) + mentionedActor, err := app.FindFirstRecordByData("activitypub_actors", "iri", mention.Href.GetID().String()) + if err != nil { + continue + } + notification := util.Notification{ + Type: util.SummitLogMention, + Metadata: map[string]string{ + "trail_id": trail.Id, + "trail_name": trail.GetString("name"), + "trail_author": fmt.Sprintf("@%s@%s", trailAuthor.GetString("username"), trailAuthor.GetString("domain")), + }, + Seen: false, + Author: actor.Id, + } + return util.SendNotification(app, notification, mentionedActor) + } + } + + if newSummitLog { + // send a notification to the trail author + notification := util.Notification{ + Type: util.SummitLogCreate, + Metadata: map[string]string{ + "trail_id": trail.Id, + "trail_name": trail.GetString("name"), + "trail_author": fmt.Sprintf("@%s@%s", trailAuthor.GetString("username"), trailAuthor.GetString("domain")), + }, + Seen: false, + Author: actor.Id, + } + return util.SendNotification(app, notification, trailAuthor) + } + + return nil +} + +func processCreateOrUpdateListActivity(activity pub.Activity, app core.App, actor *core.Record) error { + + // no need to do anything if the actor is local + if actor.GetBool("isLocal") { + return nil + } + + _, err := util.ListFromActivity(activity, app, actor) + + return err +} + +func ActorsFromMentions(app core.App, htmlStr string) ([]*core.Record, []string, error) { + doc, err := html.Parse(strings.NewReader(htmlStr)) + if err != nil { + return nil, nil, err + } + + var handles []string + var actors []*core.Record + + var f func(*html.Node) + f = func(n *html.Node) { + if n.Type == html.ElementNode && n.Data == "a" { + var isMention bool + for _, attr := range n.Attr { + if attr.Key == "class" && strings.Contains(attr.Val, "mention") { + isMention = true + break + } + } + if isMention && n.FirstChild != nil && n.FirstChild.Type == html.TextNode { + handle := strings.TrimSpace(n.FirstChild.Data) + if strings.HasPrefix(handle, "@") { + handles = append(handles, handle) + } + } + } + + for c := n.FirstChild; c != nil; c = c.NextSibling { + f(c) + } + } + + f(doc) + + for _, h := range handles { + actor, err := GetActorByHandle(app, h, false) + if err != nil { + continue + } + actors = append(actors, actor) + } + + return actors, handles, nil +} diff --git a/db/federation/delete.go b/db/federation/delete.go new file mode 100644 index 00000000..57c3211e --- /dev/null +++ b/db/federation/delete.go @@ -0,0 +1,377 @@ +package federation + +import ( + "fmt" + "net/url" + "os" + "path" + "strings" + "time" + + pub "github.com/go-ap/activitypub" + "github.com/meilisearch/meilisearch-go" + "github.com/pocketbase/dbx" + "github.com/pocketbase/pocketbase/core" + "github.com/pocketbase/pocketbase/tools/security" +) + +func CreateTrailDeleteActivity(app core.App, r *core.Record) error { + + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + author, err := app.FindRecordById("activitypub_actors", r.GetString("author")) + if err != nil { + return err + } + + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + recordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId) + to := "https://www.w3.org/ns/activitystreams#Public" + cc := author.GetString("iri") + "/followers" + object := fmt.Sprintf("%s/api/v1/trail/%s", origin, r.Id) + + record := core.NewRecord(collection) + record.Set("id", recordId) + record.Set("iri", id) + record.Set("type", string(pub.DeleteType)) + record.Set("to", to) + record.Set("cc", cc) + record.Set("object", object) + record.Set("actor", author.GetString("iri")) + record.Set("published", time.Now()) + + err = app.Save(record) + if err != nil { + return err + } + + activity := pub.DeleteNew(pub.IRI(id), pub.IRI(object)) + activity.Actor = pub.IRI(author.GetString("iri")) + activity.To = pub.ItemCollection{pub.IRI(to)} + activity.CC = pub.ItemCollection{pub.IRI(cc)} + activity.Published = time.Now() + + follows, err := app.FindRecordsByFilter("follows", "followee={:followee}&&status='accepted'", "", -1, 0, dbx.Params{"followee": author.Id}) + if err != nil { + return err + } + + recipients := []string{} + for _, f := range follows { + follower, err := app.FindRecordById("activitypub_actors", f.GetString("follower")) + if err != nil { + return err + } + recipients = append(recipients, follower.GetString("inbox")) + } + + return PostActivity(app, author, activity, recipients) +} + +func CreateCommentDeleteActivity(app core.App, client meilisearch.ServiceManager, r *core.Record) error { + + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + author, err := app.FindRecordById("activitypub_actors", r.GetString("author")) + if err != nil { + return err + } + + if !author.GetBool("isLocal") { + return nil + } + + commentTrail, err := app.FindRecordById("trails", r.GetString("trail")) + if err != nil { + return err + } + + commentTrailAuthor, err := app.FindRecordById("activitypub_actors", commentTrail.GetString("author")) + if err != nil { + return err + } + + if commentTrailAuthor.GetBool("isLocal") { + return nil + } + + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + recordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId) + to := commentTrailAuthor.GetString("iri") + object := fmt.Sprintf("%s/api/v1/comment/%s", origin, r.Id) + + activity := pub.DeleteNew(pub.IRI(id), pub.IRI(object)) + activity.Actor = pub.IRI(author.GetString("iri")) + activity.To = pub.ItemCollection{pub.IRI(to)} + activity.Published = time.Now() + + err = PostActivity(app, author, activity, []string{to + "/inbox"}) + if err != nil { + return err + } + record := core.NewRecord(collection) + record.Set("id", recordId) + record.Set("iri", id) + record.Set("type", string(pub.DeleteType)) + record.Set("to", to) + record.Set("object", object) + record.Set("actor", author.GetString("iri")) + record.Set("published", time.Now()) + + return app.Save(record) +} + +func CreateSummitLogDeleteActivity(app core.App, r *core.Record) error { + + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + author, err := app.FindRecordById("activitypub_actors", r.GetString("author")) + if err != nil { + return err + } + + if !author.GetBool("isLocal") { + return nil + } + + summitLogTrail, err := app.FindRecordById("trails", r.GetString("trail")) + if err != nil { + return err + } + + summitLogTrailAuthor, err := app.FindRecordById("activitypub_actors", summitLogTrail.GetString("author")) + if err != nil { + return err + } + + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + recordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId) + to := summitLogTrailAuthor.GetString("iri") + object := fmt.Sprintf("%s/api/v1/summit-log/%s", origin, r.Id) + cc := pub.ItemCollection{pub.IRI(author.GetString("iri") + "/followers")} + + activity := pub.DeleteNew(pub.IRI(id), pub.IRI(object)) + activity.Actor = pub.IRI(author.GetString("iri")) + activity.To = pub.ItemCollection{pub.IRI(to)} + activity.CC = cc + activity.Published = time.Now() + + follows, err := app.FindRecordsByFilter("follows", "followee={:followee}&&status='accepted'", "", -1, 0, dbx.Params{"followee": author.Id}) + if err != nil { + return err + } + + recipients := []string{} + + for _, f := range follows { + follower, err := app.FindRecordById("activitypub_actors", f.GetString("follower")) + if err != nil { + return err + } + recipients = append(recipients, follower.GetString("inbox")) + } + + if author.Id != summitLogTrailAuthor.Id { + recipients = append(recipients, summitLogTrailAuthor.GetString("inbox")) + } + + err = PostActivity(app, author, activity, recipients) + if err != nil { + return err + } + + record := core.NewRecord(collection) + record.Set("id", recordId) + record.Set("iri", id) + record.Set("type", string(pub.DeleteType)) + record.Set("to", to) + record.Set("cc", cc) + record.Set("object", object) + record.Set("actor", author.GetString("iri")) + record.Set("published", time.Now()) + + return app.Save(record) +} + +func CreateListDeleteActivity(app core.App, r *core.Record) error { + + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + author, err := app.FindRecordById("activitypub_actors", r.GetString("author")) + if err != nil { + return err + } + + if !author.GetBool("isLocal") { + return nil + } + + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + recordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId) + to := "https://www.w3.org/ns/activitystreams#Public" + cc := author.GetString("iri") + "/followers" + object := fmt.Sprintf("%s/api/v1/list/%s", origin, r.Id) + + activity := pub.DeleteNew(pub.IRI(id), pub.IRI(object)) + activity.Actor = pub.IRI(author.GetString("iri")) + activity.To = pub.ItemCollection{pub.IRI(to)} + activity.CC = pub.ItemCollection{pub.IRI(cc)} + activity.Published = time.Now() + + follows, err := app.FindRecordsByFilter("follows", "followee={:followee}&&status='accepted'", "", -1, 0, dbx.Params{"followee": author.Id}) + if err != nil { + return err + } + + recipients := []string{} + for _, f := range follows { + follower, err := app.FindRecordById("activitypub_actors", f.GetString("follower")) + if err != nil { + return err + } + recipients = append(recipients, follower.GetString("inbox")) + } + + err = PostActivity(app, author, activity, recipients) + if err != nil { + return err + } + + record := core.NewRecord(collection) + record.Set("id", recordId) + record.Set("iri", id) + record.Set("type", string(pub.DeleteType)) + record.Set("to", to) + record.Set("cc", cc) + record.Set("object", object) + record.Set("actor", author.GetString("iri")) + record.Set("published", time.Now()) + + return app.Save(record) +} + +func ProcessDeleteActivity(app core.App, actor *core.Record, activity pub.Activity) error { + // no need to do anything if the actor is local + if actor.GetBool("isLocal") { + return nil + } + + object := activity.Object.GetID().String() + + var err error + switch { + case strings.Contains(object, "trail"): + err = processDeleteTrailActivity(app, activity) + case strings.Contains(object, "comment"): + err = processDeleteCommentActivity(app, actor, activity) + case strings.Contains(object, "summit-log"): + err = processDeleteSummitLogActivity(app, actor, activity) + case strings.Contains(object, "list"): + err = processDeleteListActivity(app, actor, activity) + } + + if err != nil { + return err + } + + return nil +} + +func processDeleteTrailActivity(app core.App, activity pub.Activity) error { + + trailUrl, err := url.Parse(activity.Object.GetID().String()) + if err != nil { + return err + } + recordId := path.Base(trailUrl.Path) + + trail, err := app.FindRecordById("trails", recordId) + if err != nil { + return err + } + return app.Delete(trail) +} + +func processDeleteCommentActivity(app core.App, actor *core.Record, activity pub.Activity) error { + object := activity.Object.GetID().String() + + comment, err := app.FindFirstRecordByData("comments", "iri", object) + if err != nil { + return err + } + + if comment.GetString("author") != actor.Id { + return fmt.Errorf("actor is not comment author") + } + + err = app.Delete(comment) + if err != nil { + return err + } + return nil +} + +func processDeleteSummitLogActivity(app core.App, actor *core.Record, activity pub.Activity) error { + object := activity.Object.GetID().String() + + summitLog, err := app.FindFirstRecordByData("summit_logs", "iri", object) + if err != nil { + return err + } + + if summitLog.GetString("author") != actor.Id { + return fmt.Errorf("actor is not summit log author") + } + + return app.Delete(summitLog) +} + +func processDeleteListActivity(app core.App, actor *core.Record, activity pub.Activity) error { + + object := activity.Object.GetID().String() + list, err := app.FindFirstRecordByData("lists", "iri", object) + if err != nil { + return err + } + + if list.GetString("author") != actor.Id { + return fmt.Errorf("actor is not summit log author") + } + return app.Delete(list) +} diff --git a/db/federation/follow.go b/db/federation/follow.go new file mode 100644 index 00000000..33b4c6c6 --- /dev/null +++ b/db/federation/follow.go @@ -0,0 +1,160 @@ +package federation + +import ( + "fmt" + "os" + "pocketbase/util" + "time" + + pub "github.com/go-ap/activitypub" + "github.com/pocketbase/dbx" + "github.com/pocketbase/pocketbase/core" + "github.com/pocketbase/pocketbase/tools/security" +) + +// create outgoing follow activity +func CreateFollowActivity(app core.App, follow *core.Record) error { + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + follower := follow.GetString("follower") + followee := follow.GetString("followee") + + followerActor, err := app.FindRecordById("activitypub_actors", follower) + if err != nil { + return err + } + + followeeActor, err := app.FindRecordById("activitypub_actors", followee) + if err != nil { + return err + } + + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + recordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId) + + activity := pub.FollowNew(pub.IRI(id), pub.IRI(followeeActor.GetString("iri"))) + activity.Actor = pub.IRI(followerActor.GetString("iri")) + + err = PostActivity(app, followerActor, activity, []string{followeeActor.GetString("inbox")}) + if err != nil { + return err + } + + record := core.NewRecord(collection) + record.Set("id", recordId) + record.Set("iri", id) + record.Set("type", string(pub.FollowType)) + record.Set("object", followeeActor.GetString("iri")) + record.Set("actor", followerActor.GetString("iri")) + record.Set("published", time.Now()) + + return app.Save(record) +} + +// process incoming follow activity +func ProcessFollowActivity(app core.App, actor *core.Record, activity pub.Activity) error { + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + // find the followee in our db + object, err := app.FindFirstRecordByData("activitypub_actors", "iri", activity.Object) + if err != nil { + return err + } + + // a remote actor has requested the follow + // this means we have not yet created a follow entry in our db + // we accept it immediately + if !actor.GetBool("isLocal") { + followCollection, err := app.FindCollectionByNameOrId("follows") + if err != nil { + return err + } + followRecord := core.NewRecord(followCollection) + followRecord.Set("follower", actor.Id) + followRecord.Set("followee", object.Id) + followRecord.Set("status", "accepted") + err = app.Save(followRecord) + if err != nil { + return err + } + } + + recordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId) + + // send the accept activity back to the actor's inbox + acceptActivity := pub.AcceptNew(pub.IRI(id), activity) + acceptActivity.Actor = activity.Object + err = PostActivity(app, object, acceptActivity, []string{actor.GetString("inbox")}) + if err != nil { + return err + } + + // create record of the accept activity in our db + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + record := core.NewRecord(collection) + record.Set("id", recordId) + record.Set("iri", id) + record.Set("type", string(pub.AcceptType)) + record.Set("object", activity) + record.Set("actor", object.GetString("iri")) + record.Set("published", time.Now()) + + err = app.Save(record) + if err != nil { + return err + } + // send a notification to the followee + notification := util.Notification{ + Type: util.NewFollower, + Metadata: map[string]string{ + "follower": fmt.Sprintf("@%s@%s", actor.GetString("username"), actor.GetString("domain")), + }, + Seen: false, + Author: actor.Id, + } + return util.SendNotification(app, notification, object) + +} + +func ProcessAcceptActivity(app core.App, actor *core.Record, activity pub.Activity) error { + + followActivity := activity.Object.(*pub.Activity) + + follower, err := app.FindFirstRecordByData("activitypub_actors", "iri", followActivity.Actor) + if err != nil { + return err + } + + follow, err := app.FindFirstRecordByFilter("follows", "follower={:follower} && followee={:followee}", dbx.Params{"follower": follower.Id, "followee": actor.Id}) + if err != nil { + return err + } + follow.Set("status", "accepted") + err = app.Save(follow) + if err != nil { + return err + } + + // err = util.SyncOutbox(app, actor) + // if err != nil { + // return err + // } + return nil +} diff --git a/db/federation/like.go b/db/federation/like.go new file mode 100644 index 00000000..107e940d --- /dev/null +++ b/db/federation/like.go @@ -0,0 +1,118 @@ +package federation + +import ( + "fmt" + "os" + "path" + "pocketbase/util" + "time" + + pub "github.com/go-ap/activitypub" + "github.com/pocketbase/pocketbase/core" + "github.com/pocketbase/pocketbase/tools/security" +) + +// create outgoing follow activity +func CreateLikeActivity(app core.App, like *core.Record) error { + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + actor, err := app.FindRecordById("activitypub_actors", like.GetString("actor")) + if err != nil { + return err + } + + trail, err := app.FindRecordById("trails", like.GetString("trail")) + if err != nil { + return err + } + + trailAuthor, err := app.FindRecordById("activitypub_actors", trail.GetString("author")) + if err != nil { + return err + } + + object := trail.GetString("iri") + + if object == "" { + // trail is local + object = fmt.Sprintf("%s/api/v1/trail/%s", origin, trail.Id) + } + + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + recordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId) + + activity := pub.LikeNew(pub.IRI(id), pub.IRI(object)) + activity.Actor = pub.IRI(actor.GetString("iri")) + + err = PostActivity(app, actor, activity, []string{trailAuthor.GetString("inbox")}) + if err != nil { + return err + } + + record := core.NewRecord(collection) + record.Set("id", recordId) + record.Set("iri", id) + record.Set("type", string(pub.LikeType)) + record.Set("object", object) + record.Set("actor", actor.GetString("iri")) + record.Set("published", time.Now()) + + return app.Save(record) +} + +// process incoming like activity +func ProcessLikeActivity(app core.App, actor *core.Record, activity pub.Activity) error { + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + trailId := path.Base(activity.Object.GetID().String()) + trail, err := app.FindRecordById("trails", trailId) + if err != nil { + return err + } + + trailAuthor, err := app.FindRecordById("activitypub_actors", trail.GetString("author")) + if err != nil { + return err + } + + if !actor.GetBool("isLocal") { + trailLikeCollection, err := app.FindCollectionByNameOrId("trail_like") + if err != nil { + return err + } + likeRecord := core.NewRecord(trailLikeCollection) + likeRecord.Set("trail", trail.Id) + likeRecord.Set("actor", actor.Id) + err = app.Save(likeRecord) + if err != nil { + return err + } + } + + // send a notification to the trail author + notification := util.Notification{ + Type: util.TrailLike, + Metadata: map[string]string{ + "trail_id": trail.Id, + "trail_name": trail.GetString("name"), + "trail_author": fmt.Sprintf("@%s", trailAuthor.GetString("username")), + "liker": fmt.Sprintf("@%s@%s", actor.GetString("username"), actor.GetString("domain")), + }, + Seen: false, + Author: actor.Id, + } + return util.SendNotification(app, notification, trailAuthor) + +} diff --git a/db/federation/undo.go b/db/federation/undo.go new file mode 100644 index 00000000..d9d6f386 --- /dev/null +++ b/db/federation/undo.go @@ -0,0 +1,194 @@ +package federation + +import ( + "fmt" + "os" + "path" + "time" + + pub "github.com/go-ap/activitypub" + "github.com/pocketbase/dbx" + "github.com/pocketbase/pocketbase/core" + "github.com/pocketbase/pocketbase/tools/security" +) + +// create outgoing follow activity +func CreateUnfollowActivity(app core.App, follow *core.Record) error { + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + follower := follow.GetString("follower") + followee := follow.GetString("followee") + + followerActor, err := app.FindRecordById("activitypub_actors", follower) + if err != nil { + return err + } + + followeeActor, err := app.FindRecordById("activitypub_actors", followee) + if err != nil { + return err + } + + // find the original follow activity + followActivityRecord, err := app.FindFirstRecordByFilter("activitypub_activities", "actor={:actor}&&object={:object}&&type={:type}", dbx.Params{"actor": followerActor.GetString("iri"), "object": followeeActor.GetString("iri"), "type": string(pub.FollowType)}) + if err != nil { + return err + } + followActivity := pub.FollowNew(pub.IRI(followActivityRecord.GetString("iri")), pub.IRI(followeeActor.GetString("iri"))) + followActivity.Actor = pub.IRI(followActivityRecord.GetString("actor")) + + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + recordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId) + + record := core.NewRecord(collection) + record.Set("id", recordId) + record.Set("iri", id) + record.Set("type", string(pub.UndoType)) + record.Set("object", followActivity) + record.Set("actor", followerActor.GetString("iri")) + record.Set("published", time.Now()) + + err = app.Save(record) + if err != nil { + return err + } + + activity := pub.UndoNew(pub.IRI(id), followActivity) + activity.Actor = pub.IRI(followerActor.GetString("iri")) + + return PostActivity(app, followerActor, activity, []string{followeeActor.GetString("inbox")}) +} + +// create outgoing unlike activity +func CreateUnlikeActivity(app core.App, like *core.Record) error { + origin := os.Getenv("ORIGIN") + if origin == "" { + return fmt.Errorf("ORIGIN not set") + } + + actor, err := app.FindRecordById("activitypub_actors", like.GetString("actor")) + if err != nil { + return err + } + + trail, err := app.FindRecordById("trails", like.GetString("trail")) + if err != nil { + return err + } + + trailAuthor, err := app.FindRecordById("activitypub_actors", trail.GetString("author")) + if err != nil { + return err + } + + object := trail.GetString("iri") + if object == "" { + // trail is local + object = fmt.Sprintf("%s/api/v1/trail/%s", origin, trail.Id) + } + + // find the original follow activity + likeActivityRecord, err := app.FindFirstRecordByFilter("activitypub_activities", "actor={:actor}&&object={:object}&&type={:type}", dbx.Params{"actor": actor.GetString("iri"), "object": object, "type": string(pub.LikeType)}) + if err != nil { + return err + } + likeActivity := pub.LikeNew(pub.IRI(likeActivityRecord.GetString("iri")), pub.IRI(object)) + likeActivity.Actor = pub.IRI(likeActivityRecord.GetString("actor")) + + collection, err := app.FindCollectionByNameOrId("activitypub_activities") + if err != nil { + return err + } + + recordId := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) + + id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId) + + record := core.NewRecord(collection) + record.Set("id", recordId) + record.Set("iri", id) + record.Set("type", string(pub.UndoType)) + record.Set("object", likeActivity) + record.Set("actor", actor.GetString("iri")) + record.Set("published", time.Now()) + + err = app.Save(record) + if err != nil { + return err + } + + activity := pub.UndoNew(pub.IRI(id), likeActivity) + activity.Actor = pub.IRI(actor.GetString("iri")) + + return PostActivity(app, actor, activity, []string{trailAuthor.GetString("inbox")}) +} + +func ProcessUndoActivity(app core.App, actor *core.Record, activity pub.Activity) error { + + if activity.Object.GetType() == pub.FollowType { + return processUnfollowActivity(app, actor, activity) + } else if activity.Object.GetType() == pub.LikeType { + return processUnlikeActivity(app, actor, activity) + } else { + return fmt.Errorf("unknown undo activity object type") + } +} + +func processUnfollowActivity(app core.App, actor *core.Record, activity pub.Activity) error { + // this was a local follow + if actor.GetBool("isLocal") { + return nil + } + + followActivity := activity.Object.(*pub.Activity) + + followee, err := app.FindFirstRecordByData("activitypub_actors", "iri", followActivity.Object) + if err != nil { + return err + } + + follow, err := app.FindFirstRecordByFilter("follows", "follower={:follower} && followee={:followee}", dbx.Params{"follower": actor.Id, "followee": followee.Id}) + if err != nil { + return err + } + + err = app.Delete(follow) + if err != nil { + return err + } + return nil +} + +func processUnlikeActivity(app core.App, actor *core.Record, activity pub.Activity) error { + if actor.GetBool("isLocal") { + return nil + } + + likeActivity := activity.Object.(*pub.Activity) + + trailId := path.Base(likeActivity.Object.GetID().String()) + trail, err := app.FindRecordById("trails", trailId) + if err != nil { + return err + } + + like, err := app.FindFirstRecordByFilter("trail_like", "actor={:actor} && trail={:trail}", dbx.Params{"actor": actor.Id, "trail": trail.Id}) + if err != nil { + return err + } + + err = app.Delete(like) + if err != nil { + return err + } + return nil +} diff --git a/db/go.mod b/db/go.mod index 576da58b..23aff2eb 100644 --- a/db/go.mod +++ b/db/go.mod @@ -11,9 +11,15 @@ require ( ) require ( + git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078 // indirect + github.com/aymerick/douceur v0.2.0 // indirect + github.com/go-ap/errors v0.0.0-20250409143711-5686c11ae650 // indirect + github.com/go-ap/jsonld v0.0.0-20221030091449-f2a191312c73 // indirect github.com/go-sql-driver/mysql v1.8.1 // indirect github.com/golang-jwt/jwt/v5 v5.2.1 // indirect + github.com/gorilla/css v1.0.1 // indirect github.com/twpayne/go-geom v1.6.1 // indirect + github.com/valyala/fastjson v1.6.4 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect ) @@ -26,6 +32,8 @@ require ( github.com/fatih/color v1.18.0 // indirect github.com/gabriel-vasile/mimetype v1.4.8 // indirect github.com/ganigeorgiev/fexpr v0.4.1 // indirect + github.com/go-ap/activitypub v0.0.0-20250409143848-7113328b1f3d + github.com/go-fed/httpsig v1.1.0 github.com/go-ozzo/ozzo-validation/v4 v4.3.0 // indirect github.com/golang-jwt/jwt/v4 v4.5.1 // indirect github.com/google/uuid v1.6.0 // indirect @@ -34,6 +42,7 @@ require ( github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect + github.com/microcosm-cc/bluemonday v1.0.27 github.com/ncruces/go-strftime v0.1.9 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/spf13/cast v1.7.1 diff --git a/db/go.sum b/db/go.sum index 2a7a40f3..af134c56 100644 --- a/db/go.sum +++ b/db/go.sum @@ -1,5 +1,7 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078 h1:cliQ4HHsCo6xi2oWZYKWW4bly/Ory9FuTpFPRxj/mAg= +git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078/go.mod h1:g/V2Hjas6Z1UHUp4yIx6bATpNzJ7DYtD0FG3+xARWxs= github.com/alecthomas/assert/v2 v2.10.0 h1:jjRCHsj6hBJhkmhznrCzoNpbA3zqy0fYiUcYZP/GkPY= github.com/alecthomas/assert/v2 v2.10.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= @@ -9,6 +11,8 @@ github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer5 github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= +github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -28,6 +32,14 @@ github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3G github.com/gabriel-vasile/mimetype v1.4.8/go.mod h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8= github.com/ganigeorgiev/fexpr v0.4.1 h1:hpUgbUEEWIZhSDBtf4M9aUNfQQ0BZkGRaMePy7Gcx5k= github.com/ganigeorgiev/fexpr v0.4.1/go.mod h1:RyGiGqmeXhEQ6+mlGdnUleLHgtzzu/VGO2WtJkF5drE= +github.com/go-ap/activitypub v0.0.0-20250409143848-7113328b1f3d h1:IWrWGnmKzpHqginJ18ljKkty/X8glxM8Mg3pk6bkb8g= +github.com/go-ap/activitypub v0.0.0-20250409143848-7113328b1f3d/go.mod h1:EUtZuXtHo4yKkTJmcbAZYW+X1G2poeT8icmBh24eq7o= +github.com/go-ap/errors v0.0.0-20250409143711-5686c11ae650 h1:tlwla5IQUea0CuktkBd2FLDwVzts4OeTWPPkhQPSK5Q= +github.com/go-ap/errors v0.0.0-20250409143711-5686c11ae650/go.mod h1:Vkh+Z3f24K8nMsJKXo1FHn5ebPsXvB/WDH5JRtYqdNo= +github.com/go-ap/jsonld v0.0.0-20221030091449-f2a191312c73 h1:GMKIYXyXPGIp+hYiWOhfqK4A023HdgisDT4YGgf99mw= +github.com/go-ap/jsonld v0.0.0-20221030091449-f2a191312c73/go.mod h1:jyveZeGw5LaADntW+UEsMjl3IlIwk+DxlYNsbofQkGA= +github.com/go-fed/httpsig v1.1.0 h1:9M+hb0jkEICD8/cAiNqEB66R87tTINszBRTjwjQzWcI= +github.com/go-fed/httpsig v1.1.0/go.mod h1:RCMrTZvN1bJYtofsG4rd5NaO5obxQ5xBkdiS7xsT7bM= github.com/go-ozzo/ozzo-validation/v4 v4.3.0 h1:byhDUpfEwjsVQb1vBunvIjh2BHQ9ead57VkAEY4V+Es= github.com/go-ozzo/ozzo-validation/v4 v4.3.0/go.mod h1:2NKgrcHl3z6cJs+3Oo940FPRiTzuqKbvfrL2RxCj6Ew= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -45,6 +57,8 @@ github.com/google/pprof v0.0.0-20250315033105-103756e64e1d h1:tx51Lf+wdE+aavqH8T github.com/google/pprof v0.0.0-20250315033105-103756e64e1d/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= +github.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= @@ -63,6 +77,8 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/meilisearch/meilisearch-go v0.29.0 h1:HZ9NEKN59USINQ/DXJge/aaXq8IrsKbXGTdAoBaaDz4= github.com/meilisearch/meilisearch-go v0.29.0/go.mod h1:2cRCAn4ddySUsFfNDLVPod/plRibQsJkXF/4gLhxbOk= +github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk= +github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA= github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -99,7 +115,10 @@ github.com/twpayne/go-gpx v1.5.0 h1:HvFSJ+0r0sbhOQ8mTvd0/n0FhcgjTFsKQGG6o7PV6G4= github.com/twpayne/go-gpx v1.5.0/go.mod h1:vjvu/125399qj6k+px2v2v8dm08DM4I4dFBJmHHt2TE= github.com/twpayne/go-polyline v1.1.1 h1:/tSF1BR7rN4HWj4XKqvRUNrCiYVMCvywxTFVofvDV0w= github.com/twpayne/go-polyline v1.1.1/go.mod h1:ybd9IWWivW/rlXPXuuckeKUyF3yrIim+iqA7kSl4NFY= +github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= +github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= @@ -109,6 +128,7 @@ golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= @@ -117,6 +137,7 @@ golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= diff --git a/db/integrations/komoot/komoot.go b/db/integrations/komoot/komoot.go index d65a7fc4..f9d6d376 100644 --- a/db/integrations/komoot/komoot.go +++ b/db/integrations/komoot/komoot.go @@ -33,6 +33,15 @@ func SyncKomoot(app core.App) error { } userId := i.GetString("user") + actor, err := app.FindFirstRecordByData("activitypub_actors", "user", userId) + if err != nil { + warning := fmt.Sprintf("no actor found for user: %s\n", userId) + fmt.Print(warning) + app.Logger().Warn(warning) + continue + } + actorId := actor.Id + komootString := i.GetString("komoot") komootIntegration := KomootIntegration{ Planned: true, @@ -71,7 +80,7 @@ func SyncKomoot(app core.App) error { continue } - hasNewTours, err = syncTrailWithTours(app, k, komootIntegration, userId, tours) + hasNewTours, err = syncTrailWithTours(app, k, komootIntegration, userId, actorId, tours) if err != nil { warning := fmt.Sprintf("error syncing komoot tours with trails: %v\n", err) fmt.Print(warning) @@ -165,7 +174,7 @@ func (k *KomootApi) fetchTours(page int) ([]KomootTour, error) { } func (k *KomootApi) fetchDetailedTour(tour KomootTour) (*DetailedKomootTour, error) { - url := fmt.Sprintf("https://api.komoot.de/v007/tours/%d?_embedded=coordinates,way_types,surfaces,directions,participants,timeline,cover_images&directions=v2&fields=timeline&format=coordinate_array&timeline_highlights_fields=tips,recommenders", tour.ID) + url := fmt.Sprintf("https://api.komoot.de/v007/tours/%d?_embedded=coordinates,way_types,surfaces,directions,participants,timeline,cover_images&directions=v2&fields=timeline&format=coordinate_array&timeline_highlights_fields=tips,recommenders&page=2", tour.ID) body, err := sendRequest(url, k.buildHeader()) if err != nil { return nil, err @@ -176,7 +185,7 @@ func (k *KomootApi) fetchDetailedTour(tour KomootTour) (*DetailedKomootTour, err return data, nil } -func syncTrailWithTours(app core.App, k *KomootApi, i KomootIntegration, user string, tours []KomootTour) (bool, error) { +func syncTrailWithTours(app core.App, k *KomootApi, i KomootIntegration, user string, actor string, tours []KomootTour) (bool, error) { hasNewTours := false for _, tour := range tours { trails, err := app.FindRecordsByFilter("trails", "external_id = {:id}", "", 1, 0, dbx.Params{"id": strconv.Itoa(int(tour.ID))}) @@ -202,7 +211,7 @@ func syncTrailWithTours(app core.App, k *KomootApi, i KomootIntegration, user st app.Logger().Warn(fmt.Sprintf("Unable to create waypoints for tour '%s': %v", tour.Name, err)) continue } - err = createTrailFromTour(app, detailedTour, gpx, user, wpIds) + err = createTrailFromTour(app, k, detailedTour, gpx, actor, wpIds) if err != nil { app.Logger().Warn(fmt.Sprintf("Unable to create trail for tour '%s': %v", tour.Name, err)) continue @@ -212,27 +221,9 @@ func syncTrailWithTours(app core.App, k *KomootApi, i KomootIntegration, user st return hasNewTours, nil } -func createTrailFromTour(app core.App, detailedTour *DetailedKomootTour, gpx *filesystem.File, user string, wpIds []string) error { - var summitLogRecord *core.Record - if detailedTour.Type == "tour_recorded" { - collection, err := app.FindCollectionByNameOrId("summit_logs") - if err != nil { - return err - } +func createTrailFromTour(app core.App, k *KomootApi, detailedTour *DetailedKomootTour, gpx *filesystem.File, actor string, wpIds []string) error { + trailid := security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet) - summitLogRecord = core.NewRecord(collection) - summitLogRecord.Load(map[string]any{ - "distance": detailedTour.Distance, - "elevation_gain": detailedTour.ElevationUp, - "elevation_loss": detailedTour.ElevationDown, - "duration": detailedTour.Duration, - "date": detailedTour.Date, - "author": user, - }) - if err := app.Save(summitLogRecord); err != nil { - return err - } - } collection, err := app.FindCollectionByNameOrId("trails") if err != nil { return err @@ -259,7 +250,7 @@ func createTrailFromTour(app core.App, detailedTour *DetailedKomootTour, gpx *fi var photos []*filesystem.File if len(detailedTour.Embedded.CoverImages.Embedded.Items) > 0 { - photos, err = fetchRoutePhotos(detailedTour) + photos, err = fetchRoutePhotos(k, detailedTour) if err != nil { return err } @@ -277,6 +268,7 @@ func createTrailFromTour(app core.App, detailedTour *DetailedKomootTour, gpx *fi } record.Load(map[string]any{ + "id": trailid, "name": detailedTour.Name, "public": detailedTour.Status == "public", "distance": detailedTour.Distance, @@ -291,12 +283,9 @@ func createTrailFromTour(app core.App, detailedTour *DetailedKomootTour, gpx *fi "difficulty": diffculty, "category": categoryId, "waypoints": wpIds, - "author": user, + "author": actor, }) - if summitLogRecord != nil { - record.Set("summit_logs", summitLogRecord.Id) - } if photos != nil { record.Set("photos", photos) } @@ -308,6 +297,27 @@ func createTrailFromTour(app core.App, detailedTour *DetailedKomootTour, gpx *fi return err } + if detailedTour.Type == "tour_recorded" { + collection, err := app.FindCollectionByNameOrId("summit_logs") + if err != nil { + return err + } + + summitLogRecord := core.NewRecord(collection) + summitLogRecord.Load(map[string]any{ + "distance": detailedTour.Distance, + "elevation_gain": detailedTour.ElevationUp, + "elevation_loss": detailedTour.ElevationDown, + "duration": detailedTour.Duration, + "date": detailedTour.Date, + "author": actor, + "trail": trailid, + }) + if err := app.Save(summitLogRecord); err != nil { + return err + } + } + return nil } @@ -365,11 +375,22 @@ func createWaypointsFromTour(app core.App, tour *DetailedKomootTour, user string return wpIds, nil } -func fetchRoutePhotos(tour *DetailedKomootTour) ([]*filesystem.File, error) { +func fetchRoutePhotos(k *KomootApi, tour *DetailedKomootTour) ([]*filesystem.File, error) { + url := fmt.Sprintf("https://api.komoot.de/v007/tours/%d/cover_images/", tour.ID) + body, err := sendRequest(url, k.buildHeader()) + if err != nil { + return nil, err + } - photos := make([]*filesystem.File, len(tour.Embedded.CoverImages.Embedded.Items)) + var data *CoverImages + err = json.Unmarshal(body, &data) + if err != nil { + return nil, err + } - for i, img := range tour.Embedded.CoverImages.Embedded.Items { + photos := make([]*filesystem.File, data.Page.TotalElements) + + for i, img := range data.Embedded.Items { photo, err := fetchPhoto(img.Src, "", "") if err != nil { return nil, err diff --git a/db/integrations/strava/strava.go b/db/integrations/strava/strava.go index 1e7ffd7d..8c4545ca 100644 --- a/db/integrations/strava/strava.go +++ b/db/integrations/strava/strava.go @@ -36,9 +36,18 @@ func SyncStrava(app core.App) error { } userId := i.GetString("user") + actor, err := app.FindFirstRecordByData("activitypub_actors", "user", userId) + if err != nil { + warning := fmt.Sprintf("no actor found for user: %s\n", userId) + fmt.Print(warning) + app.Logger().Warn(warning) + continue + } + actorId := actor.Id + stravaString := i.GetString("strava") var stravaIntegration StravaIntegration - err := json.Unmarshal([]byte(stravaString), &stravaIntegration) + err = json.Unmarshal([]byte(stravaString), &stravaIntegration) if err != nil { return err } @@ -103,7 +112,7 @@ func SyncStrava(app core.App) error { app.Logger().Warn(warning) break } - hasNewRoutes, err = syncTrailsWithRoutes(app, r.AccessToken, userId, routes) + hasNewRoutes, err = syncTrailsWithRoutes(app, r.AccessToken, userId, actorId, routes) if err != nil { warning := fmt.Sprintf("error syncing strava routes with trails: %v\n", err) fmt.Print(warning) @@ -124,7 +133,7 @@ func SyncStrava(app core.App) error { app.Logger().Warn(warning) break } - hasNewActivities, err = syncTrailsWithActivities(app, r.AccessToken, userId, activities) + hasNewActivities, err = syncTrailsWithActivities(app, r.AccessToken, userId, actorId, activities) if err != nil { warning := fmt.Sprintf("error syncing strava activities with trails: %v", err) fmt.Print(warning) @@ -226,7 +235,7 @@ func fetchStravaActivities(accessToken string, page int) ([]StravaActivity, erro return activities, nil } -func syncTrailsWithRoutes(app core.App, accessToken string, user string, routes []StravaRoute) (bool, error) { +func syncTrailsWithRoutes(app core.App, accessToken string, user string, actor string, routes []StravaRoute) (bool, error) { hasNewRoutes := false for _, route := range routes { trails, err := app.FindRecordsByFilter("trails", "external_id = {:id}", "", 1, 0, dbx.Params{"id": route.IDStr}) @@ -247,7 +256,7 @@ func syncTrailsWithRoutes(app core.App, accessToken string, user string, routes app.Logger().Warn(fmt.Sprintf("Unable to create waypoints for route '%s': %v", route.Name, err)) continue } - err = createTrailFromRoute(app, route, gpx, user, wpIds) + err = createTrailFromRoute(app, route, gpx, actor, wpIds) if err != nil { app.Logger().Warn(fmt.Sprintf("Unable to create trail for route '%s': %v", route.Name, err)) continue @@ -296,7 +305,7 @@ func fetchRouteGPX(route StravaRoute, accessToken string) (*filesystem.File, err return gpxFile, nil } -func createTrailFromRoute(app core.App, route StravaRoute, gpx *filesystem.File, user string, wpIds []string) error { +func createTrailFromRoute(app core.App, route StravaRoute, gpx *filesystem.File, actor string, wpIds []string) error { collection, err := app.FindCollectionByNameOrId("trails") if err != nil { return err @@ -342,7 +351,7 @@ func createTrailFromRoute(app core.App, route StravaRoute, gpx *filesystem.File, "waypoints": wpIds, "difficulty": "easy", "category": category, - "author": user, + "author": actor, }) if gpx != nil { @@ -383,7 +392,7 @@ func createWaypointsFromRoute(app core.App, route StravaRoute, user string) ([]s return wpIds, nil } -func syncTrailsWithActivities(app core.App, accessToken string, user string, activities []StravaActivity) (bool, error) { +func syncTrailsWithActivities(app core.App, accessToken string, user string, actor string, activities []StravaActivity) (bool, error) { hasNewActivites := false for _, activity := range activities { trails, err := app.FindRecordsByFilter("trails", "external_id = {:id}", "", 1, 0, dbx.Params{"id": strconv.Itoa(int(activity.ID))}) @@ -404,7 +413,7 @@ func syncTrailsWithActivities(app core.App, accessToken string, user string, act app.Logger().Warn(fmt.Sprintf("Unable to fetch GPX for activity '%s': %v", activity.Name, err)) continue } - err = createTrailFromActivity(app, detailedActivity, gpx, user) + err = createTrailFromActivity(app, detailedActivity, gpx, actor) if err != nil { app.Logger().Warn(fmt.Sprintf("Unable to create trail from activity '%s': %v", activity.Name, err)) continue diff --git a/db/main.go b/db/main.go index 7bdfe27e..09e59e19 100644 --- a/db/main.go +++ b/db/main.go @@ -1,13 +1,12 @@ package main import ( + "database/sql" "encoding/json" "fmt" "log" - "math/rand/v2" "net/http" "os" - "strconv" "strings" "time" @@ -21,11 +20,15 @@ import ( "github.com/pocketbase/pocketbase/tools/security" "github.com/spf13/cast" + "pocketbase/federation" "pocketbase/integrations/komoot" "pocketbase/integrations/strava" _ "pocketbase/migrations" "pocketbase/util" + + pub "github.com/go-ap/activitypub" + "github.com/microcosm-cc/bluemonday" ) const defaultMeiliMasterKey = "vODkljPcfFANYNepCHyDyGjzAMPcdHnrb6X5KyXQPWo" @@ -86,18 +89,29 @@ func setupEventHandlers(app *pocketbase.PocketBase, client meilisearch.ServiceMa app.OnRecordAfterUpdateSuccess("trails").BindFunc(updateTrailHandler(client)) app.OnRecordAfterDeleteSuccess("trails").BindFunc(deleteTrailHandler(client)) - app.OnRecordAfterCreateSuccess("trail_share").BindFunc(createTrailShareHandler(client)) - app.OnRecordAfterDeleteSuccess("trail_share").BindFunc(deleteTrailShareHandler(client)) + app.OnRecordCreateRequest("summit_logs").BindFunc(createSummitLogHandler()) + app.OnRecordUpdateRequest("summit_logs").BindFunc(updateSummitLogHandler()) + app.OnRecordDeleteRequest("summit_logs").BindFunc(deleteSummitLogHandler()) + + app.OnRecordCreateRequest("comments").BindFunc(createCommentHandler()) + app.OnRecordUpdateRequest("comments").BindFunc(updateCommentHandler()) + app.OnRecordDeleteRequest("comments").BindFunc(deleteCommentHandler(client)) + + app.OnRecordCreateRequest("trail_share").BindFunc(createTrailShareHandler(client)) + app.OnRecordDeleteRequest("trail_share").BindFunc(deleteTrailShareHandler(client)) + + app.OnRecordAfterCreateSuccess("trail_like").BindFunc(createTrailLikeHandler(client)) + app.OnRecordAfterDeleteSuccess("trail_like").BindFunc(deleteTrailLikeHandler(client)) app.OnRecordAfterCreateSuccess("lists").BindFunc(createListHandler(client)) app.OnRecordAfterUpdateSuccess("lists").BindFunc(updateListHandler(client)) app.OnRecordAfterDeleteSuccess("lists").BindFunc(deleteListHandler(client)) - app.OnRecordAfterCreateSuccess("list_share").BindFunc(createListShareHandler(client)) - app.OnRecordAfterDeleteSuccess("list_share").BindFunc(deleteListShareHandler(client)) + app.OnRecordCreateRequest("list_share").BindFunc(createListShareHandler(client)) + app.OnRecordDeleteRequest("list_share").BindFunc(deleteListShareHandler(client)) - app.OnRecordAfterCreateSuccess("follows").BindFunc(createFollowHandler()) - app.OnRecordAfterCreateSuccess("comments").BindFunc(createCommentHandler()) + app.OnRecordCreateRequest("follows").BindFunc(createFollowHandler()) + app.OnRecordDeleteRequest("follows").BindFunc(deleteFollowHandler()) app.OnRecordsListRequest("integrations").BindFunc(listIntegrationHandler()) app.OnRecordCreate("integrations").BindFunc(createIntegrationHandler()) @@ -105,22 +119,72 @@ func setupEventHandlers(app *pocketbase.PocketBase, client meilisearch.ServiceMa app.OnRecordUpdate("integrations").BindFunc(updateIntegrationHandler()) app.OnRecordAfterUpdateSuccess("integrations").BindFunc(createUpdateIntegrationSuccessHandler()) + app.OnRecordCreateRequest().BindFunc(sanitizeHTML()) + app.OnRecordUpdateRequest().BindFunc(sanitizeHTML()) + app.OnRecordRequestEmailChangeRequest("users").BindFunc(changeUserEmailHandler()) app.OnServe().BindFunc(onBeforeServeHandler(client)) app.OnBootstrap().BindFunc(onBootstrapHandler()) } +func sanitizeHTML() func(e *core.RecordRequestEvent) error { + return func(e *core.RecordRequestEvent) error { + fieldsToSanitize := map[string][]string{ + "lists": {"description"}, + "settings": {"bio"}, + "summit_logs": {"text"}, + "trails": {"description"}, + "comments": {"text"}, + "waypoints": {"description"}, + } + collection := e.Collection.Name + fields, ok := fieldsToSanitize[collection] + if !ok { + return e.Next() + } + + p := bluemonday.NewPolicy() + p.AllowStandardAttributes() + p.AllowStandardURLs() + p.AllowLists() + p.AllowElements("br", "div", "hr", "p", "span", "wbr") + p.AllowElements("b", "strong", "em", "u", "blockquote", "a") + p.AllowAttrs("href").OnElements("a") + p.AllowAttrs("target").OnElements("a") + p.AllowAttrs("class").OnElements("a") + + for _, field := range fields { + if val, ok := e.Record.Get(field).(string); ok { + sanitizedValue := p.Sanitize(val) + e.Record.Set(field, sanitizedValue) + } + } + + return e.Next() + } +} + func createUserHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error { return func(e *core.RecordEvent) error { userId := e.Record.Id + err := createDefaultUserSettings(e.App, e.Record.Id) + if err != nil { + return err + } + + actor, err := util.ActorFromUser(e.App, e.Record) + if err != nil { + return err + } + searchRules := map[string]interface{}{ "lists": map[string]string{ - "filter": "public = true OR author = " + userId + " OR shares = " + userId, + "filter": "public = true OR author = " + actor.Id + " OR shares = " + userId, }, "trails": map[string]string{ - "filter": "public = true OR author = " + userId + " OR shares = " + userId, + "filter": "public = true OR author = " + actor.Id + " OR shares = " + userId, }, } @@ -133,10 +197,6 @@ func createUserHandler(client meilisearch.ServiceManager) func(e *core.RecordEve return err } - err = createDefaultUserSettings(e.App, e.Record.Id) - if err != nil { - return err - } return e.Next() } } @@ -157,37 +217,38 @@ func createDefaultUserSettings(app core.App, userId string) error { func createTrailHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error { return func(e *core.RecordEvent) error { record := e.Record - author, err := e.App.FindRecordById("users", record.GetString(("author"))) + author, err := e.App.FindRecordById("activitypub_actors", record.GetString(("author"))) if err != nil { return err } if err := util.IndexTrail(e.App, record, author, client); err != nil { return err } - - if record.GetBool("public") { - notification := util.Notification{ - Type: util.TrailCreate, - Metadata: map[string]string{ - "id": record.Id, - "trail": record.GetString("name"), - }, - Seen: false, - Author: record.GetString("author"), - } - err = util.SendNotificationToFollowers(e.App, notification) - if err != nil { - return err - } + if !author.GetBool("isLocal") { + // this happens if someone fetches a remote trail + // we create a stub trail record for later reference + // no need to create an activity for that + return e.Next() } - return e.Next() + + err = e.Next() + if err != nil { + return err + } + + err = federation.CreateTrailActivity(e.App, e.Record, pub.CreateType) + if err != nil { + return err + } + + return nil } } func updateTrailHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error { return func(e *core.RecordEvent) error { record := e.Record - author, err := e.App.FindRecordById("users", record.GetString(("author"))) + author, err := e.App.FindRecordById("activitypub_actors", record.GetString(("author"))) if err != nil { return err } @@ -195,7 +256,24 @@ func updateTrailHandler(client meilisearch.ServiceManager) func(e *core.RecordEv if err != nil { return err } - return e.Next() + if !author.GetBool("isLocal") { + // this happens if someone fetches a remote trail + // we create a stub trail record for later reference + // no need to create an activity for that + return e.Next() + } + + err = e.Next() + if err != nil { + return err + } + + err = federation.CreateTrailActivity(e.App, e.Record, pub.UpdateType) + if err != nil { + return err + } + + return nil } } @@ -213,12 +291,100 @@ func deleteTrailHandler(client meilisearch.ServiceManager) func(e *core.RecordEv log.Fatalf("Error waiting for task completion: %v", err) } + err = federation.CreateTrailDeleteActivity(e.App, e.Record) + if err != nil { + return err + } + return e.Next() } } -func createTrailShareHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error { - return func(e *core.RecordEvent) error { +func createSummitLogHandler() func(e *core.RecordRequestEvent) error { + return func(e *core.RecordRequestEvent) error { + + err := e.Next() + if err != nil { + return err + } + + err = federation.CreateSummitLogActivity(e.App, e.Record, pub.CreateType) + if err != nil { + return err + } + + return nil + } +} + +func updateSummitLogHandler() func(e *core.RecordRequestEvent) error { + return func(e *core.RecordRequestEvent) error { + + err := e.Next() + if err != nil { + return err + } + + err = federation.CreateSummitLogActivity(e.App, e.Record, pub.UpdateType) + if err != nil { + return err + } + return nil + } +} + +func deleteSummitLogHandler() func(e *core.RecordRequestEvent) error { + return func(e *core.RecordRequestEvent) error { + err := federation.CreateSummitLogDeleteActivity(e.App, e.Record) + if err != nil { + return err + } + return e.Next() + } +} + +func createCommentHandler() func(e *core.RecordRequestEvent) error { + return func(e *core.RecordRequestEvent) error { + + e.Next() + + err := federation.CreateCommentActivity(e.App, e.Record, pub.CreateType) + if err != nil { + return err + } + return nil + } +} + +func updateCommentHandler() func(e *core.RecordRequestEvent) error { + return func(e *core.RecordRequestEvent) error { + err := federation.CreateCommentActivity(e.App, e.Record, pub.UpdateType) + if err != nil { + return err + } + return e.Next() + + } +} + +func deleteCommentHandler(client meilisearch.ServiceManager) func(e *core.RecordRequestEvent) error { + return func(e *core.RecordRequestEvent) error { + + err := federation.CreateCommentDeleteActivity(e.App, client, e.Record) + if err != nil { + return err + } + return e.Next() + } +} + +func createTrailShareHandler(client meilisearch.ServiceManager) func(e *core.RecordRequestEvent) error { + return func(e *core.RecordRequestEvent) error { + err := e.Next() + if err != nil { + return err + } + record := e.Record trailId := record.GetString("trail") @@ -228,42 +394,26 @@ func createTrailShareHandler(client meilisearch.ServiceManager) func(e *core.Rec if err != nil { return err } - userIds := make([]string, len(shares)) + actorIds := make([]string, len(shares)) for i, r := range shares { - userIds[i] = r.GetString("user") + actorIds[i] = r.GetString("actor") } - err = util.UpdateTrailShares(trailId, userIds, client) - + err = util.UpdateTrailShares(trailId, actorIds, client) if err != nil { return err } - if errs := e.App.ExpandRecord(record, []string{"trail", "trail.author"}, nil); len(errs) > 0 { - return fmt.Errorf("failed to expand: %v", errs) - } - shareTrail := record.ExpandedOne("trail") - shareTrailAuthor := shareTrail.ExpandedOne("author") - - notification := util.Notification{ - Type: util.TrailShare, - Metadata: map[string]string{ - "id": shareTrail.Id, - "trail": shareTrail.GetString("name"), - "author": shareTrailAuthor.GetString("username"), - }, - Seen: false, - Author: shareTrailAuthor.Id, - } - err = util.SendNotification(e.App, notification, record.GetString("user")) + err = federation.CreateAnnounceActivity(e.App, record, federation.TrailAnnounceType) if err != nil { return err } - return e.Next() + + return nil } } -func deleteTrailShareHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error { - return func(e *core.RecordEvent) error { +func deleteTrailShareHandler(client meilisearch.ServiceManager) func(e *core.RecordRequestEvent) error { + return func(e *core.RecordRequestEvent) error { record := e.Record trailId := record.GetString("trail") @@ -275,42 +425,178 @@ func deleteTrailShareHandler(client meilisearch.ServiceManager) func(e *core.Rec } } +func createTrailLikeHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error { + return func(e *core.RecordEvent) error { + err := e.Next() + if err != nil { + return err + } + + record := e.Record + + trailId := record.GetString("trail") + actorId := record.GetString("actor") + actor, err := e.App.FindRecordById("activitypub_actors", actorId) + if err != nil { + return err + } + trail, err := e.App.FindRecordById("trails", trailId) + if err != nil { + return err + } + likes, err := e.App.FindAllRecords("trail_like", + dbx.NewExp("trail = {:trailId}", dbx.Params{"trailId": trailId}), + ) + if err != nil { + return err + } + + trail.Set("like_count", len(likes)) + err = e.App.UnsafeWithoutHooks().Save(trail) + if err != nil { + return err + } + + actorIds := make([]string, len(likes)) + for i, r := range likes { + actorIds[i] = r.GetString("actor") + } + err = util.UpdateTrailLikes(trailId, actorIds, client) + if err != nil { + return err + } + + if !actor.GetBool("isLocal") { + // this happens if someone likes a remote trail + // we create a local copy + // no need to create an activity for that + return nil + } + + err = federation.CreateLikeActivity(e.App, record) + if err != nil { + return err + } + + return nil + } +} + +func deleteTrailLikeHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error { + return func(e *core.RecordEvent) error { + + record := e.Record + + trailId := record.GetString("trail") + actorId := record.GetString("actor") + actor, err := e.App.FindRecordById("activitypub_actors", actorId) + if err != nil { + return err + } + // trail might deleted be already if this is called as part of a cascade + trail, err := e.App.FindRecordById("trails", trailId) + if err != nil && err == sql.ErrNoRows { + return nil + } else if err != nil { + return err + } + likes, err := e.App.CountRecords("trail_like", dbx.NewExp("trail={:trail}", dbx.Params{"trail": trailId})) + if err != nil { + return err + } + + trail.Set("like_count", likes) + err = e.App.UnsafeWithoutHooks().Save(trail) + if err != nil { + return err + } + + err = util.UpdateTrailLikes(trailId, []string{}, client) + if err != nil { + return err + } + + if !actor.GetBool("isLocal") { + // this happens if someone likes a remote trail + // we create a local copy + // no need to create an activity for that + return nil + } + + err = federation.CreateUnlikeActivity(e.App, record) + if err != nil { + return err + } + + return e.Next() + } +} + func createListHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error { return func(e *core.RecordEvent) error { record := e.Record - if err := util.IndexList(record, client); err != nil { - return err - } - if !record.GetBool("public") { - return e.Next() - } - notification := util.Notification{ - Type: util.ListCreate, - Metadata: map[string]string{ - "id": record.Id, - "list": record.GetString("name"), - }, - Seen: false, - Author: record.GetString("author"), - } - err := util.SendNotificationToFollowers(e.App, notification) + author, err := e.App.FindRecordById("activitypub_actors", record.GetString(("author"))) if err != nil { return err } - return e.Next() + + if err := util.IndexList(e.App, record, author, client); err != nil { + return err + } + + if !author.GetBool("isLocal") { + // this happens if someone fetches a remote list + // we create a stub list record for later reference + // no need to create an activity for that + return e.Next() + } + + err = e.Next() + if err != nil { + return err + } + + err = federation.CreateListActivity(e.App, e.Record, pub.CreateType) + if err != nil { + return err + } + + return nil } } func updateListHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error { return func(e *core.RecordEvent) error { record := e.Record - err := util.UpdateList(record, client) + author, err := e.App.FindRecordById("activitypub_actors", record.GetString(("author"))) if err != nil { return err } - return e.Next() + err = util.UpdateList(e.App, record, author, client) + if err != nil { + return err + } + + if !author.GetBool("isLocal") { + // this happens if someone fetches a remote list + // we create a stub list record for later reference + // no need to create an activity for that + return e.Next() + } + + err = e.Next() + if err != nil { + return err + } + + err = federation.CreateListActivity(e.App, e.Record, pub.CreateType) + if err != nil { + return err + } + + return nil } } @@ -322,12 +608,22 @@ func deleteListHandler(client meilisearch.ServiceManager) func(e *core.RecordEve return err } + err = federation.CreateListDeleteActivity(e.App, record) + if err != nil { + return err + } + return e.Next() } } -func createListShareHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error { - return func(e *core.RecordEvent) error { +func createListShareHandler(client meilisearch.ServiceManager) func(e *core.RecordRequestEvent) error { + return func(e *core.RecordRequestEvent) error { + err := e.Next() + if err != nil { + return err + } + record := e.Record listId := record.GetString("list") shares, err := e.App.FindAllRecords("list_share", @@ -336,42 +632,27 @@ func createListShareHandler(client meilisearch.ServiceManager) func(e *core.Reco if err != nil { return err } - userIds := make([]string, len(shares)) + actorIds := make([]string, len(shares)) for i, r := range shares { - userIds[i] = r.GetString("user") + actorIds[i] = r.GetString("actor") } - err = util.UpdateListShares(listId, userIds, client) + err = util.UpdateListShares(listId, actorIds, client) if err != nil { return err } - if errs := e.App.ExpandRecord(record, []string{"list", "list.author"}, nil); len(errs) > 0 { - return fmt.Errorf("failed to expand: %v", errs) - } - shareList := record.ExpandedOne("list") - shareListAuthor := shareList.ExpandedOne("author") - - notification := util.Notification{ - Type: util.ListShare, - Metadata: map[string]string{ - "id": shareList.Id, - "list": shareList.GetString("name"), - "author": shareListAuthor.GetString("username"), - }, - Seen: false, - Author: shareListAuthor.Id, - } - err = util.SendNotification(e.App, notification, record.GetString("user")) + err = federation.CreateAnnounceActivity(e.App, record, federation.ListAnnounceType) if err != nil { return err } - return e.Next() + + return nil } } -func deleteListShareHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error { - return func(e *core.RecordEvent) error { +func deleteListShareHandler(client meilisearch.ServiceManager) func(e *core.RecordRequestEvent) error { + return func(e *core.RecordRequestEvent) error { record := e.Record listId := record.GetString("list") err := util.UpdateListShares(listId, []string{}, client) @@ -382,55 +663,56 @@ func deleteListShareHandler(client meilisearch.ServiceManager) func(e *core.Reco } } -func createFollowHandler() func(e *core.RecordEvent) error { - return func(e *core.RecordEvent) error { - record := e.Record - if errs := e.App.ExpandRecord(record, []string{"follower"}, nil); len(errs) > 0 { - return fmt.Errorf("failed to expand: %v", errs) - } - follower := record.ExpandedOne("follower") +func createFollowHandler() func(e *core.RecordRequestEvent) error { + return func(e *core.RecordRequestEvent) error { + // record := e.Record + // if errs := e.App.ExpandRecord(record, []string{"follower"}, nil); len(errs) > 0 { + // return fmt.Errorf("failed to expand: %v", errs) + // } + // follower := record.ExpandedOne("follower") - notification := util.Notification{ - Type: util.NewFollower, - Metadata: map[string]string{ - "follower": follower.GetString("username"), - }, - Seen: false, - Author: record.GetString("follower"), - } - err := util.SendNotification(e.App, notification, record.GetString("followee")) - if err != nil { - return err - } - return e.Next() + // notification := util.Notification{ + // Type: util.NewFollower, + // Metadata: map[string]string{ + // "follower": follower.GetString("username"), + // }, + // Seen: false, + // Author: record.GetString("follower"), + // } + // err := util.SendNotification(e.App, notification, record.GetString("followee")) + // if err != nil { + // return err + // } + e.Next() + federation.CreateFollowActivity(e.App, e.Record) + + return nil } } -func createCommentHandler() func(e *core.RecordEvent) error { - return func(e *core.RecordEvent) error { - record := e.Record +func deleteFollowHandler() func(e *core.RecordRequestEvent) error { + return func(e *core.RecordRequestEvent) error { + // record := e.Record + // if errs := e.App.ExpandRecord(record, []string{"follower"}, nil); len(errs) > 0 { + // return fmt.Errorf("failed to expand: %v", errs) + // } + // follower := record.ExpandedOne("follower") - if errs := e.App.ExpandRecord(record, []string{"trail", "author"}, nil); len(errs) > 0 { - return fmt.Errorf("failed to expand: %v", errs) - } - commentAuthor := record.ExpandedOne("author") - commentTrail := record.ExpandedOne("trail") + // notification := util.Notification{ + // Type: util.NewFollower, + // Metadata: map[string]string{ + // "follower": follower.GetString("username"), + // }, + // Seen: false, + // Author: record.GetString("follower"), + // } + // err := util.SendNotification(e.App, notification, record.GetString("followee")) + // if err != nil { + // return err + // } + + federation.CreateUnfollowActivity(e.App, e.Record) - notification := util.Notification{ - Type: util.TrailComment, - Metadata: map[string]string{ - "id": commentTrail.Id, - "author": commentAuthor.GetString("username"), - "trail": commentTrail.GetString("name"), - "comment": record.GetString("text"), - }, - Seen: false, - Author: record.GetString("author"), - } - err := util.SendNotification(e.App, notification, commentTrail.GetString("author")) - if err != nil { - return err - } return e.Next() } } @@ -637,46 +919,6 @@ func registerRoutes(se *core.ServeEvent, client meilisearch.ServiceManager) { } return e.JSON(http.StatusOK, map[string]string{"token": token}) }) - se.Router.GET("/trail/recommend", func(e *core.RequestEvent) error { - qSize := e.Request.URL.Query().Get("size") - size, err := strconv.Atoi(qSize) - if err != nil { - size = 4 - } - - userId := "" - if e.Auth != nil { - userId = e.Auth.Id - } - - trails, err := e.App.FindRecordsByFilter( - "trails", - "author = {:userId} || public = true || ({:userId} != '' && trail_share_via_trail.user ?= {:userId})", - "", - -1, - 0, - dbx.Params{"userId": userId}, - ) - if err != nil { - return err - } - for _, t := range trails { - errs := e.App.ExpandRecord(t, []string{"tags"}, nil) - if len(errs) > 0 { - return err - } - } - - if len(trails) < size { - size = len(trails) - } - rand.Shuffle(len(trails), func(i, j int) { - trails[i], trails[j] = trails[j], trails[i] - }) - randomTrails := trails[:size] - return e.JSON(http.StatusOK, randomTrails) - - }) se.Router.POST("/integration/strava/token", func(e *core.RequestEvent) error { encryptionKey := os.Getenv("POCKETBASE_ENCRYPTION_KEY") @@ -792,6 +1034,61 @@ func registerRoutes(se *core.ServeEvent, client meilisearch.ServiceManager) { return e.JSON(http.StatusOK, nil) }) + se.Router.POST("/activitypub/activity/process", federation.ProcessActivity) + se.Router.GET("/activitypub/actor", func(e *core.RequestEvent) error { + resource := e.Request.URL.Query().Get("resource") + resource = strings.TrimPrefix(resource, "acct:") + + iri := e.Request.URL.Query().Get("iri") + follows := e.Request.URL.Query().Get("follows") == "true" + + var actor *core.Record + var err error + if resource != "" { + actor, err = federation.GetActorByHandle(e.App, resource, follows) + } else { + actor, err = federation.GetActorByIRI(e.App, iri, follows) + } + if err != nil && actor == nil { + if strings.HasPrefix(err.Error(), "webfinger") || err.Error() == "profile is private" { + return e.NotFoundError("Not found", err) + } + return err + } else if err != nil && actor != nil { + // we could not fetch the remote actor so we return our local cached copy + return e.JSON(http.StatusOK, map[string]any{"actor": actor, "error": err.Error()}) + } + + return e.JSON(http.StatusOK, map[string]any{"actor": actor, "error": nil}) + }) + se.Router.GET("/activitypub/trail/{id}", func(e *core.RequestEvent) error { + id := e.Request.PathValue("id") + + trail, err := e.App.FindRecordById("trails", id) + if err != nil { + return err + } + + trailObject, err := util.ObjectFromTrail(e.App, trail, nil) + if err != nil { + return err + } + return e.JSON(http.StatusOK, trailObject) + }) + se.Router.GET("/activitypub/comment/{id}", func(e *core.RequestEvent) error { + id := e.Request.PathValue("id") + + comment, err := e.App.FindRecordById("comments", id) + if err != nil { + return err + } + + commentObject, err := util.ObjectFromComment(e.App, comment, nil) + if err != nil { + return err + } + return e.JSON(http.StatusOK, commentObject) + }) } func registerCronJobs(app core.App) { @@ -818,7 +1115,7 @@ func registerCronJobs(app core.App) { func bootstrapData(app core.App, client meilisearch.ServiceManager) error { bootstrapCategories(app) - bootstrapMeilisearchTrails(app, client) + go bootstrapMeilisearchDocuments(app, client) return nil } @@ -847,7 +1144,7 @@ func bootstrapCategories(app core.App) error { return nil } -func bootstrapMeilisearchTrails(app core.App, client meilisearch.ServiceManager) error { +func bootstrapMeilisearchDocuments(app core.App, client meilisearch.ServiceManager) error { query := app.RecordQuery("trails") trails := []*core.Record{} @@ -860,7 +1157,7 @@ func bootstrapMeilisearchTrails(app core.App, client meilisearch.ServiceManager) return err } for _, trail := range trails { - author, err := app.FindRecordById("users", trail.GetString(("author"))) + author, err := app.FindRecordById("activitypub_actors", trail.GetString(("author"))) if err != nil { return err } @@ -875,16 +1172,67 @@ func bootstrapMeilisearchTrails(app core.App, client meilisearch.ServiceManager) if err != nil { return err } - userIds := make([]string, len(shares)) + actorIds := make([]string, len(shares)) for i, r := range shares { - userIds[i] = r.GetString("user") + actorIds[i] = r.GetString("actor") } - err = util.UpdateTrailShares(trail.Id, userIds, client) - + err = util.UpdateTrailShares(trail.Id, actorIds, client) if err != nil { app.Logger().Warn(fmt.Sprintf("Unable to update trail shares '%s': %v", trail.GetString("name"), err)) continue } + likes, err := app.FindAllRecords("trail_like", + dbx.NewExp("trail = {:trailId}", dbx.Params{"trailId": trail.Id}), + ) + if err != nil { + return err + } + actorIds = make([]string, len(likes)) + for i, r := range likes { + actorIds[i] = r.GetString("actor") + } + err = util.UpdateTrailLikes(trail.Id, actorIds, client) + if err != nil { + app.Logger().Warn(fmt.Sprintf("Unable to update trail likes '%s': %v", trail.GetString("name"), err)) + continue + } + } + + lists, err := app.FindAllRecords("lists") + if err != nil { + return err + } + _, err = client.Index("lists").DeleteAllDocuments() + if err != nil { + return err + } + + for _, list := range lists { + author, err := app.FindRecordById("activitypub_actors", list.GetString(("author"))) + if err != nil { + return err + } + if err := util.IndexList(app, list, author, client); err != nil { + app.Logger().Warn(fmt.Sprintf("Unable to index list '%s': %v", list.GetString("name"), err)) + continue + } + + shares, err := app.FindAllRecords("list_share", + dbx.NewExp("list = {:listId}", dbx.Params{"listId": list.Id}), + ) + if err != nil { + return err + } + actorIds := make([]string, len(shares)) + for i, r := range shares { + actorIds[i] = r.GetString("actor") + } + err = util.UpdateListShares(list.Id, actorIds, client) + + if err != nil { + app.Logger().Warn(fmt.Sprintf("Unable to update list shares '%s': %v", list.GetString("name"), err)) + continue + } } return nil } diff --git a/db/migrations/1747061255_deleted_follow_counts.go b/db/migrations/1747061255_deleted_follow_counts.go new file mode 100644 index 00000000..0438cb54 --- /dev/null +++ b/db/migrations/1747061255_deleted_follow_counts.go @@ -0,0 +1,102 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("j6w72f0kb5ivd7x") + if err != nil { + return nil + } + + return app.Delete(collection) + }, func(app core.App) error { + jsonData := `{ + "createRule": null, + "deleteRule": null, + "fields": [ + { + "autogeneratePattern": "", + "hidden": false, + "id": "text3208210256", + "max": 0, + "min": 0, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "cascadeDelete": false, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation1148540665", + "maxSelect": 1, + "minSelect": 0, + "name": "actor", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }, + { + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "_clone_kce8", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }, + { + "hidden": false, + "id": "json2215181735", + "maxSize": 1, + "name": "followers", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json1908379107", + "maxSize": 1, + "name": "following", + "presentable": false, + "required": false, + "system": false, + "type": "json" + } + ], + "id": "j6w72f0kb5ivd7x", + "indexes": [], + "listRule": "@request.auth.id = user || (@collection.users_anonymous.id ?= user && @collection.users_anonymous.private ?= false)", + "name": "follow_counts", + "system": false, + "type": "view", + "updateRule": null, + "viewQuery": "SELECT \n (ROW_NUMBER() OVER()) as id,\n activitypub_actors.id as actor,\n activitypub_actors.user as user,\n COALESCE(followers.count, 0) AS followers,\n COALESCE(following.count, 0) AS following\nFROM activitypub_actors\nLEFT JOIN (\n SELECT followee AS actor_id, COUNT(*) AS count\n FROM follows\n GROUP BY followee\n) AS followers ON activitypub_actors.id = followers.actor_id\nLEFT JOIN (\n SELECT follower AS actor_id, COUNT(*) AS count\n FROM follows\n GROUP BY follower\n) AS following ON activitypub_actors.id = following.actor_id", + "viewRule": "@request.auth.id = user || (@collection.users_anonymous.id ?= user && @collection.users_anonymous.private ?= false)" + }` + + collection := &core.Collection{} + if err := json.Unmarshal([]byte(jsonData), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747061256_deleted_activities.go b/db/migrations/1747061256_deleted_activities.go new file mode 100644 index 00000000..1400dc62 --- /dev/null +++ b/db/migrations/1747061256_deleted_activities.go @@ -0,0 +1,186 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("t9lphichi5xwyeu") + if err != nil { + return nil + } + + return app.Delete(collection) + }, func(app core.App) error { + jsonData := `{ + "createRule": null, + "deleteRule": null, + "fields": [ + { + "autogeneratePattern": "", + "hidden": false, + "id": "text3208210256", + "max": 0, + "min": 0, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "hidden": false, + "id": "json2310347867", + "maxSize": 1, + "name": "trail_id", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json2862495610", + "maxSize": 1, + "name": "date", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json1579384326", + "maxSize": 1, + "name": "name", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json1843675174", + "maxSize": 1, + "name": "description", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json3275261007", + "maxSize": 1, + "name": "gpx", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json3182418120", + "maxSize": 1, + "name": "author", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json142008537", + "maxSize": 1, + "name": "photos", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json479369857", + "maxSize": 1, + "name": "distance", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json2254405824", + "maxSize": 1, + "name": "duration", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json3015100073", + "maxSize": 1, + "name": "elevation_gain", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json3171089056", + "maxSize": 1, + "name": "elevation_loss", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json2990389176", + "maxSize": 1, + "name": "created", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json2363381545", + "maxSize": 1, + "name": "type", + "presentable": false, + "required": false, + "system": false, + "type": "json" + } + ], + "id": "t9lphichi5xwyeu", + "indexes": [], + "listRule": "(@collection.users_anonymous.id ?= author && @collection.users_anonymous.private ?= false\n&&\n@collection.trails.id ?= trail_id && \n (\n @collection.trails.author ?= @request.auth.id ||\n @collection.trails.public ?= true || \n (@request.auth.id != \"\" && @collection.trails.trail_share_via_trail.user ?= @request.auth.id)\n )) && @request.auth.id = author", + "name": "activities", + "system": false, + "type": "view", + "updateRule": null, + "viewQuery": "SELECT id,trail_id,date,name,description,gpx,author,photos,distance,duration,elevation_gain,elevation_loss,created,type \nFROM (\n SELECT summit_logs.id,trails.id as trail_id,summit_logs.date,trails.name,text as description,summit_logs.gpx,summit_logs.author,summit_logs.photos,summit_logs.distance,summit_logs.duration,summit_logs.elevation_gain,summit_logs.elevation_loss,summit_logs.created,\"summit_log\" as type \n FROM summit_logs\n JOIN trails ON summit_logs.id IN (\n SELECT value\n FROM json_each(trails.summit_logs)\n )\n UNION\n SELECT id,id as trail_id,date,name,description,gpx,author,photos,distance,duration,elevation_gain,elevation_loss,created,\"trail\" as type \n FROM trails\n)\nORDER BY created DESC", + "viewRule": "(@collection.users_anonymous.id ?= author && @collection.users_anonymous.private ?= false\n&&\n@collection.trails.id ?= trail_id && \n (\n @collection.trails.author ?= @request.auth.id ||\n @collection.trails.public ?= true || \n (@request.auth.id != \"\" && @collection.trails.trail_share_via_trail.user ?= @request.auth.id)\n )) && @request.auth.id = author" + }` + + collection := &core.Collection{} + if err := json.Unmarshal([]byte(jsonData), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747061257_created_activitypub_actors.go b/db/migrations/1747061257_created_activitypub_actors.go new file mode 100644 index 00000000..ac60a949 --- /dev/null +++ b/db/migrations/1747061257_created_activitypub_actors.go @@ -0,0 +1,285 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + jsonData := `[ + { + "id": "pbc_1295301207", + "listRule": "", + "viewRule": "", + "createRule": null, + "updateRule": null, + "deleteRule": null, + "name": "activitypub_actors", + "type": "base", + "fields": [ + { + "autogeneratePattern": "[a-z0-9]{15}", + "hidden": false, + "id": "text3208210256", + "max": 15, + "min": 15, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "text4166911607", + "max": 0, + "min": 0, + "name": "username", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": true, + "system": false, + "type": "text" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "text4002953752", + "max": 0, + "min": 0, + "name": "preferred_username", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "text2812878347", + "max": 0, + "min": 0, + "name": "domain", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "text3458754147", + "max": 0, + "min": 0, + "name": "summary", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, + { + "hidden": false, + "id": "number1386272118", + "max": null, + "min": null, + "name": "followerCount", + "onlyInt": true, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "number3430500629", + "max": null, + "min": null, + "name": "followingCount", + "onlyInt": true, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "date1748787223", + "max": "", + "min": "", + "name": "published", + "presentable": false, + "required": false, + "system": false, + "type": "date" + }, + { + "exceptDomains": null, + "hidden": false, + "id": "url126331327", + "name": "iri", + "onlyDomains": null, + "presentable": false, + "required": true, + "system": false, + "type": "url" + }, + { + "exceptDomains": null, + "hidden": false, + "id": "url2115105593", + "name": "inbox", + "onlyDomains": null, + "presentable": false, + "required": true, + "system": false, + "type": "url" + }, + { + "exceptDomains": null, + "hidden": false, + "id": "url1793578352", + "name": "outbox", + "onlyDomains": null, + "presentable": false, + "required": false, + "system": false, + "type": "url" + }, + { + "exceptDomains": null, + "hidden": false, + "id": "url1704208859", + "name": "icon", + "onlyDomains": null, + "presentable": false, + "required": false, + "system": false, + "type": "url" + }, + { + "exceptDomains": null, + "hidden": false, + "id": "url2215181735", + "name": "followers", + "onlyDomains": null, + "presentable": false, + "required": false, + "system": false, + "type": "url" + }, + { + "exceptDomains": null, + "hidden": false, + "id": "url1908379107", + "name": "following", + "onlyDomains": null, + "presentable": false, + "required": false, + "system": false, + "type": "url" + }, + { + "hidden": false, + "id": "bool2193750486", + "name": "isLocal", + "presentable": false, + "required": false, + "system": false, + "type": "bool" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "text1727648867", + "max": 0, + "min": 0, + "name": "public_key", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": true, + "system": false, + "type": "text" + }, + { + "autogeneratePattern": "", + "hidden": true, + "id": "text4160324774", + "max": 0, + "min": 0, + "name": "private_key", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, + { + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "relation2375276105", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }, + { + "hidden": false, + "id": "date2062531289", + "max": "", + "min": "", + "name": "last_fetched", + "presentable": false, + "required": false, + "system": false, + "type": "date" + }, + { + "hidden": false, + "id": "autodate2990389176", + "name": "created", + "onCreate": true, + "onUpdate": false, + "presentable": false, + "system": false, + "type": "autodate" + }, + { + "hidden": false, + "id": "autodate3332085495", + "name": "updated", + "onCreate": true, + "onUpdate": true, + "presentable": false, + "system": false, + "type": "autodate" + } + ], + "indexes": [ + "CREATE UNIQUE INDEX ` + "`idx_rpT7QJwWTm` ON `activitypub_actors` (`iri`)" + `" + ], + "system": false + } +]` + + return app.ImportCollectionsByMarshaledJSON([]byte(jsonData), false) + }, func(app core.App) error { + return nil + }) +} diff --git a/db/migrations/1747061258_created_activitypub_activities.go b/db/migrations/1747061258_created_activitypub_activities.go new file mode 100644 index 00000000..ff2e4638 --- /dev/null +++ b/db/migrations/1747061258_created_activitypub_activities.go @@ -0,0 +1,156 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + jsonData := `[ + { + "id": "pbc_3752774184", + "listRule": "", + "viewRule": "", + "createRule": null, + "updateRule": null, + "deleteRule": null, + "name": "activitypub_activities", + "type": "base", + "fields": [ + { + "autogeneratePattern": "[a-z0-9]{15}", + "hidden": false, + "id": "text3208210256", + "max": 15, + "min": 15, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "exceptDomains": [], + "hidden": false, + "id": "url2434853685", + "name": "iri", + "onlyDomains": [], + "presentable": false, + "required": true, + "system": false, + "type": "url" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "text2363381545", + "max": 0, + "min": 0, + "name": "type", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": true, + "system": false, + "type": "text" + }, + { + "hidden": false, + "id": "json3616002756", + "maxSize": 0, + "name": "to", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json3685882489", + "maxSize": 0, + "name": "cc", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json2893285722", + "maxSize": 0, + "name": "object", + "presentable": false, + "required": true, + "system": false, + "type": "json" + }, + { + "exceptDomains": [], + "hidden": false, + "id": "url1148540665", + "name": "actor", + "onlyDomains": [], + "presentable": false, + "required": true, + "system": false, + "type": "url" + }, + { + "hidden": false, + "id": "date1748787223", + "max": "", + "min": "", + "name": "published", + "presentable": false, + "required": true, + "system": false, + "type": "date" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "text1653163849", + "max": 15, + "min": 15, + "name": "relation", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, + { + "hidden": false, + "id": "autodate2990389176", + "name": "created", + "onCreate": true, + "onUpdate": false, + "presentable": false, + "system": false, + "type": "autodate" + }, + { + "hidden": false, + "id": "autodate3332085495", + "name": "updated", + "onCreate": true, + "onUpdate": true, + "presentable": false, + "system": false, + "type": "autodate" + } + ], + "indexes": [], + "system": false + } +]` + + return app.ImportCollectionsByMarshaledJSON([]byte(jsonData), false) + }, func(app core.App) error { + return nil + }) +} diff --git a/db/migrations/1747061259_seed_actors.go b/db/migrations/1747061259_seed_actors.go new file mode 100644 index 00000000..f343535c --- /dev/null +++ b/db/migrations/1747061259_seed_actors.go @@ -0,0 +1,30 @@ +package migrations + +import ( + "pocketbase/util" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + users, err := app.FindAllRecords("users") + if err != nil { + return err + } + + for _, u := range users { + _, err = util.ActorFromUser(app, u) + if err != nil { + return err + } + } + + return nil + }, func(app core.App) error { + // add down queries... + + return nil + }) +} diff --git a/db/migrations/1747061260_trails_add_new_author.go b/db/migrations/1747061260_trails_add_new_author.go new file mode 100644 index 00000000..e401981e --- /dev/null +++ b/db/migrations/1747061260_trails_add_new_author.go @@ -0,0 +1,78 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(15, []byte(`{ + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation3182418120", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(16, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "1utgul91", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("relation3182418120") + + // update field + if err := collection.Fields.AddMarshaledJSONAt(15, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "1utgul91", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747061261_set_trail_authors.go b/db/migrations/1747061261_set_trail_authors.go new file mode 100644 index 00000000..04ee0681 --- /dev/null +++ b/db/migrations/1747061261_set_trail_authors.go @@ -0,0 +1,33 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + trails, err := app.FindAllRecords("trails") + if err != nil { + return err + } + + for _, t := range trails { + actor, err := app.FindFirstRecordByData("activitypub_actors", "user", t.GetString("user")) + if err != nil { + return err + } + t.Set("author", actor.Id) + err = app.UnsafeWithoutHooks().Save(t) + if err != nil { + return err + } + } + + return nil + }, func(app core.App) error { + // add down queries... + + return nil + }) +} diff --git a/db/migrations/1747061262_comments_add_new_author.go b/db/migrations/1747061262_comments_add_new_author.go new file mode 100644 index 00000000..5a3d309e --- /dev/null +++ b/db/migrations/1747061262_comments_add_new_author.go @@ -0,0 +1,78 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("comments") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(3, []byte(`{ + "cascadeDelete": false, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation3182418120", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(16, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "7lwo1mxx", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("comments") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("relation3182418120") + + // update field + if err := collection.Fields.AddMarshaledJSONAt(15, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "7lwo1mxx", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747061263_set_comment_authors.go b/db/migrations/1747061263_set_comment_authors.go new file mode 100644 index 00000000..a61e7922 --- /dev/null +++ b/db/migrations/1747061263_set_comment_authors.go @@ -0,0 +1,33 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + comments, err := app.FindAllRecords("comments") + if err != nil { + return err + } + + for _, c := range comments { + actor, err := app.FindFirstRecordByData("activitypub_actors", "user", c.GetString("user")) + if err != nil { + continue + } + c.Set("author", actor.Id) + err = app.UnsafeWithoutHooks().Save(c) + if err != nil { + continue + } + } + + return nil + }, func(app core.App) error { + // add down queries... + + return nil + }) +} diff --git a/db/migrations/1747061264_summit_logs_add_new_author.go b/db/migrations/1747061264_summit_logs_add_new_author.go new file mode 100644 index 00000000..3348138a --- /dev/null +++ b/db/migrations/1747061264_summit_logs_add_new_author.go @@ -0,0 +1,78 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("summit_logs") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(9, []byte(`{ + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation3182418120", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(16, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "r0mj3tkr", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("summit_logs") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("relation3182418120") + + // update field + if err := collection.Fields.AddMarshaledJSONAt(15, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "r0mj3tkr", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747061265_set_summit_log_authors.go b/db/migrations/1747061265_set_summit_log_authors.go new file mode 100644 index 00000000..976350e3 --- /dev/null +++ b/db/migrations/1747061265_set_summit_log_authors.go @@ -0,0 +1,46 @@ +package migrations + +import ( + "github.com/pocketbase/dbx" + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + logs, err := app.FindAllRecords("summit_logs") + if err != nil { + return err + } + + for _, l := range logs { + if l.GetString("user") == "" { + trail, err := app.FindFirstRecordByFilter("trails", "summit_logs ?~ {:id}", dbx.Params{"id": l.Id}) + if err != nil { + // orphaned + err = app.UnsafeWithoutHooks().Delete(l) + if err != nil { + return err + } + continue + } + l.Set("user", trail.GetString("user")) + } + actor, err := app.FindFirstRecordByData("activitypub_actors", "user", l.GetString("user")) + if err != nil { + return err + } + l.Set("author", actor.Id) + err = app.UnsafeWithoutHooks().Save(l) + if err != nil { + return err + } + } + + return nil + }, func(app core.App) error { + // add down queries... + + return nil + }) +} diff --git a/db/migrations/1747061266_migrate_ms_token.go b/db/migrations/1747061266_migrate_ms_token.go new file mode 100644 index 00000000..d661e543 --- /dev/null +++ b/db/migrations/1747061266_migrate_ms_token.go @@ -0,0 +1,55 @@ +package migrations + +import ( + "os" + "pocketbase/util" + + "github.com/meilisearch/meilisearch-go" + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + client := meilisearch.New(os.Getenv("MEILI_URL"), meilisearch.WithAPIKey(os.Getenv("MEILI_MASTER_KEY"))) + + m.Register(func(app core.App) error { + + users, err := app.FindAllRecords("users") + if err != nil { + return err + } + for _, u := range users { + userId := u.Id + + actor, err := app.FindFirstRecordByData("activitypub_actors", "user", userId) + if err != nil { + return err + } + + searchRules := map[string]interface{}{ + "lists": map[string]string{ + "filter": "public = true OR author = " + actor.Id + " OR shares = " + userId, + }, + "trails": map[string]string{ + "filter": "public = true OR author = " + actor.Id + " OR shares = " + userId, + }, + } + + token, err := util.GenerateMeilisearchToken(searchRules, client) + if err != nil { + return err + } + u.Set("token", token) + if err := app.Save(u); err != nil { + return err + } + + } + + return nil + }, func(app core.App) error { + // add down queries... + + return nil + }) +} diff --git a/db/migrations/1747061267_summit_logs_add_trail_field.go b/db/migrations/1747061267_summit_logs_add_trail_field.go new file mode 100644 index 00000000..e9c9759b --- /dev/null +++ b/db/migrations/1747061267_summit_logs_add_trail_field.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(10, []byte(`{ + "cascadeDelete": true, + "collectionId": "e864strfxo14pm4", + "hidden": false, + "id": "relation2993194383", + "maxSelect": 1, + "minSelect": 0, + "name": "trail", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("relation2993194383") + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747061268_migrate_summit_log_trails.go b/db/migrations/1747061268_migrate_summit_log_trails.go new file mode 100644 index 00000000..7ccae9f1 --- /dev/null +++ b/db/migrations/1747061268_migrate_summit_log_trails.go @@ -0,0 +1,34 @@ +package migrations + +import ( + "github.com/pocketbase/dbx" + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + logs, err := app.FindAllRecords("summit_logs") + if err != nil { + return err + } + + for _, l := range logs { + trail, err := app.FindFirstRecordByFilter("trails", "summit_logs ?~ {:id}", dbx.Params{"id": l.Id}) + if err != nil { + continue + } + l.Set("trail", trail.Id) + err = app.UnsafeWithoutHooks().Save(l) + if err != nil { + return err + } + } + + return nil + }, func(app core.App) error { + // add down queries... + + return nil + }) +} diff --git a/db/migrations/1747061269_trails_remove_summit_log_field.go b/db/migrations/1747061269_trails_remove_summit_log_field.go new file mode 100644 index 00000000..fbcbc4ca --- /dev/null +++ b/db/migrations/1747061269_trails_remove_summit_log_field.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("e1lwowvd") + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(17, []byte(`{ + "cascadeDelete": false, + "collectionId": "dd2l9a4vxpy2ni8", + "hidden": false, + "id": "e1lwowvd", + "maxSelect": 2147483647, + "minSelect": 0, + "name": "summit_logs", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747061270_follows_add_new_f_f.go b/db/migrations/1747061270_follows_add_new_f_f.go new file mode 100644 index 00000000..81efb797 --- /dev/null +++ b/db/migrations/1747061270_follows_add_new_f_f.go @@ -0,0 +1,150 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("8obn1ukumze565i") + if err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "in1traur", + "maxSelect": 1, + "minSelect": 0, + "name": "old_follower", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(2, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "wxwomfd5", + "maxSelect": 1, + "minSelect": 0, + "name": "old_followee", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(3, []byte(`{ + "hidden": false, + "id": "select2063623452", + "maxSelect": 1, + "name": "status", + "presentable": false, + "required": true, + "system": false, + "type": "select", + "values": [ + "pending", + "accepted" + ] + }`)); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation3117812038", + "maxSelect": 1, + "minSelect": 0, + "name": "follower", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(2, []byte(`{ + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation973442177", + "maxSelect": 1, + "minSelect": 0, + "name": "followee", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("8obn1ukumze565i") + if err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "in1traur", + "maxSelect": 1, + "minSelect": 0, + "name": "follower", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(2, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "wxwomfd5", + "maxSelect": 1, + "minSelect": 0, + "name": "followee", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("relation3117812038") + + // remove field + collection.Fields.RemoveById("relation973442177") + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747061271_migrate_follows.go b/db/migrations/1747061271_migrate_follows.go new file mode 100644 index 00000000..f5d79c7f --- /dev/null +++ b/db/migrations/1747061271_migrate_follows.go @@ -0,0 +1,60 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + follows, err := app.FindAllRecords("follows") + if err != nil { + return err + } + + seen := map[string]string{} + for _, f := range follows { + oldFollower := f.GetString("old_follower") + oldFollowee := f.GetString("old_followee") + + if oldFollowee == "" || oldFollower == "" { + continue + } + + seenFollowee, ok := seen[oldFollower] + if ok && seenFollowee == oldFollowee { + err = app.Delete(f) + if err != nil { + return err + } + continue + } + seen[oldFollower] = oldFollowee + + followerActor, err := app.FindFirstRecordByData("activitypub_actors", "user", oldFollower) + if err != nil { + return err + } + + followeeActor, err := app.FindFirstRecordByData("activitypub_actors", "user", oldFollowee) + if err != nil { + return err + } + + f.Set("follower", followerActor.Id) + f.Set("followee", followeeActor.Id) + f.Set("status", "accepted") + + err = app.UnsafeWithoutHooks().Save(f) + if err != nil { + return err + } + } + + return nil + }, func(app core.App) error { + // add down queries... + + return nil + }) +} diff --git a/db/migrations/1747064968_collections_snapshot.go b/db/migrations/1747064968_collections_snapshot.go new file mode 100644 index 00000000..364ed13f --- /dev/null +++ b/db/migrations/1747064968_collections_snapshot.go @@ -0,0 +1,1159 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + jsonData := `[ + { + "id": "lf06qip3f4d11yk", + "listRule": "((@request.auth.id != \"\" && trail.author.user = @request.auth.id) || trail.public = true) || author = @request.auth.id || trail.trail_share_via_trail.user ?= @request.auth.id", + "viewRule": "((@request.auth.id != \"\" && trail.author.user = @request.auth.id) || trail.public = true) || author = @request.auth.id || trail.trail_share_via_trail.user ?= @request.auth.id", + "createRule": "@request.auth.id != \"\" && (trail.author.user = @request.auth.id || trail.public = true || trail.trail_share_via_trail.user ?= @request.auth.id)", + "updateRule": "@request.auth.id = author.user", + "deleteRule": "@request.auth.id = author.user", + "name": "comments", + "type": "base", + "fields": [ + { + "autogeneratePattern": "[a-z0-9]{15}", + "hidden": false, + "id": "text3208210256", + "max": 15, + "min": 15, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "0udwb0kl", + "max": 0, + "min": 0, + "name": "text", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, + { + "cascadeDelete": true, + "collectionId": "e864strfxo14pm4", + "hidden": false, + "id": "snrlpxar", + "maxSelect": 1, + "minSelect": 0, + "name": "trail", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }, + { + "cascadeDelete": false, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation3182418120", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }, + { + "hidden": false, + "id": "autodate2990389176", + "name": "created", + "onCreate": true, + "onUpdate": false, + "presentable": false, + "system": false, + "type": "autodate" + }, + { + "hidden": false, + "id": "autodate3332085495", + "name": "updated", + "onCreate": true, + "onUpdate": true, + "presentable": false, + "system": false, + "type": "autodate" + } + ], + "indexes": [], + "system": false + }, + { + "id": "8obn1ukumze565i", + "listRule": "@request.auth.id = follower.user.id || @request.auth.id = followee.user.id", + "viewRule": "@request.auth.id = follower.user.id || @request.auth.id = followee.user.id", + "createRule": "@request.auth.id = follower.user.id", + "updateRule": "@request.auth.id = follower.user.id", + "deleteRule": "@request.auth.id = follower.user.id", + "name": "follows", + "type": "base", + "fields": [ + { + "autogeneratePattern": "[a-z0-9]{15}", + "hidden": false, + "id": "text3208210256", + "max": 15, + "min": 15, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation3117812038", + "maxSelect": 1, + "minSelect": 0, + "name": "follower", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }, + { + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation973442177", + "maxSelect": 1, + "minSelect": 0, + "name": "followee", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }, + { + "hidden": false, + "id": "select2063623452", + "maxSelect": 1, + "name": "status", + "presentable": false, + "required": true, + "system": false, + "type": "select", + "values": [ + "pending", + "accepted" + ] + }, + { + "hidden": false, + "id": "autodate2990389176", + "name": "created", + "onCreate": true, + "onUpdate": false, + "presentable": false, + "system": false, + "type": "autodate" + }, + { + "hidden": false, + "id": "autodate3332085495", + "name": "updated", + "onCreate": true, + "onUpdate": true, + "presentable": false, + "system": false, + "type": "autodate" + } + ], + "indexes": [], + "system": false + }, + { + "id": "dd2l9a4vxpy2ni8", + "listRule": "author.user = @request.auth.id || trail.author.user ?= @request.auth.id || trail.public ?= true || \ntrail.trail_share_via_trail.user ?= @request.auth.id", + "viewRule": "author.user = @request.auth.id || trail.author.user ?= @request.auth.id || trail.public ?= true || \ntrail.trail_share_via_trail.user ?= @request.auth.id", + "createRule": "@request.auth.id != \"\"", + "updateRule": "@request.auth.id != \"\" && (trail.author.user = @request.auth.id || author.user = @request.auth.id)", + "deleteRule": "@request.auth.id != \"\" && (trail.author.user = @request.auth.id || author.user = @request.auth.id)", + "name": "summit_logs", + "type": "base", + "fields": [ + { + "autogeneratePattern": "[a-z0-9]{15}", + "hidden": false, + "id": "text3208210256", + "max": 15, + "min": 15, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "hidden": false, + "id": "gxq1yeld", + "max": "", + "min": "", + "name": "date", + "presentable": false, + "required": false, + "system": false, + "type": "date" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "0ykzwuia", + "max": 0, + "min": 0, + "name": "text", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, + { + "hidden": false, + "id": "rfwmdcpt", + "maxSelect": 1, + "maxSize": 5242880, + "mimeTypes": null, + "name": "gpx", + "presentable": false, + "protected": false, + "required": false, + "system": false, + "thumbs": null, + "type": "file" + }, + { + "hidden": false, + "id": "ixnksbkt", + "maxSelect": 99, + "maxSize": 20971520, + "mimeTypes": [ + "image/jpeg", + "image/png", + "image/vnd.mozilla.apng", + "image/webp", + "image/svg+xml", + "image/heic", + "video/ogg", + "video/mp4", + "video/webm" + ], + "name": "photos", + "presentable": false, + "protected": false, + "required": false, + "system": false, + "thumbs": null, + "type": "file" + }, + { + "hidden": false, + "id": "jovws28m", + "max": null, + "min": 0, + "name": "distance", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "m2kndtwn", + "max": null, + "min": 0, + "name": "elevation_gain", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "uqqo9cws", + "max": null, + "min": 0, + "name": "elevation_loss", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "vwxjsrae", + "max": null, + "min": 0, + "name": "duration", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation3182418120", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }, + { + "cascadeDelete": true, + "collectionId": "e864strfxo14pm4", + "hidden": false, + "id": "relation2993194383", + "maxSelect": 1, + "minSelect": 0, + "name": "trail", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }, + { + "hidden": false, + "id": "autodate2990389176", + "name": "created", + "onCreate": true, + "onUpdate": false, + "presentable": false, + "system": false, + "type": "autodate" + }, + { + "hidden": false, + "id": "autodate3332085495", + "name": "updated", + "onCreate": true, + "onUpdate": true, + "presentable": false, + "system": false, + "type": "autodate" + } + ], + "indexes": [], + "system": false + }, + { + "id": "1mns8mlal6uf9ku", + "listRule": "trail.author.user = @request.auth.id || user = @request.auth.id", + "viewRule": "trail.author.user = @request.auth.id || user = @request.auth.id", + "createRule": "trail.author.user = @request.auth.id", + "updateRule": "trail.author.user = @request.auth.id", + "deleteRule": "trail.author.user = @request.auth.id", + "name": "trail_share", + "type": "base", + "fields": [ + { + "autogeneratePattern": "[a-z0-9]{15}", + "hidden": false, + "id": "text3208210256", + "max": 15, + "min": 15, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "cascadeDelete": true, + "collectionId": "e864strfxo14pm4", + "hidden": false, + "id": "eskurfx6", + "maxSelect": 1, + "minSelect": 0, + "name": "trail", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }, + { + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "yyzimwee", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }, + { + "hidden": false, + "id": "zr7aaqxl", + "maxSelect": 1, + "name": "permission", + "presentable": false, + "required": true, + "system": false, + "type": "select", + "values": [ + "view", + "edit" + ] + }, + { + "hidden": false, + "id": "autodate2990389176", + "name": "created", + "onCreate": true, + "onUpdate": false, + "presentable": false, + "system": false, + "type": "autodate" + }, + { + "hidden": false, + "id": "autodate3332085495", + "name": "updated", + "onCreate": true, + "onUpdate": true, + "presentable": false, + "system": false, + "type": "autodate" + } + ], + "indexes": [], + "system": false + }, + { + "id": "e864strfxo14pm4", + "listRule": "author.user = @request.auth.id || public = true || (@request.auth.id != \"\" && trail_share_via_trail.user ?= @request.auth.id)", + "viewRule": "author.user = @request.auth.id || public = true || (@request.auth.id != \"\" && trail_share_via_trail.user ?= @request.auth.id)", + "createRule": "@request.auth.id != \"\" && (@request.body.author.user = @request.auth.id)", + "updateRule": "author.user = @request.auth.id || (@request.auth.id != \"\" && trail_share_via_trail.trail = id && trail_share_via_trail.user ?= @request.auth.id && trail_share_via_trail.permission = \"edit\")", + "deleteRule": "author.user = @request.auth.id ", + "name": "trails", + "type": "base", + "fields": [ + { + "autogeneratePattern": "[a-z0-9]{15}", + "hidden": false, + "id": "text3208210256", + "max": 15, + "min": 15, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "wquvuytd", + "max": 0, + "min": 0, + "name": "name", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": true, + "system": false, + "type": "text" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "6kkucam1", + "max": 10000, + "min": 0, + "name": "description", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "8x74ba26", + "max": 0, + "min": 0, + "name": "location", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, + { + "hidden": false, + "id": "ehrmydva", + "name": "public", + "presentable": false, + "required": false, + "system": false, + "type": "bool" + }, + { + "hidden": false, + "id": "epgmtyxy", + "max": null, + "min": 0, + "name": "distance", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "5wxdt3aj", + "max": null, + "min": null, + "name": "elevation_gain", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "xutbwpq4", + "max": null, + "min": null, + "name": "elevation_loss", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "ukr9rqz4", + "max": null, + "min": 0, + "name": "duration", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "eqeqja1s", + "max": null, + "min": null, + "name": "lat", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "y6dbfyw6", + "max": null, + "min": null, + "name": "lon", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "aqbpyawe", + "maxSelect": 99, + "maxSize": 20971520, + "mimeTypes": [ + "image/jpeg", + "image/vnd.mozilla.apng", + "image/png", + "image/webp", + "image/svg+xml", + "image/heic", + "video/mp4", + "video/webm", + "video/ogg" + ], + "name": "photos", + "presentable": false, + "protected": false, + "required": false, + "system": false, + "thumbs": null, + "type": "file" + }, + { + "hidden": false, + "id": "k8xdrsyv", + "maxSelect": 1, + "maxSize": 5242880, + "mimeTypes": null, + "name": "gpx", + "presentable": false, + "protected": false, + "required": false, + "system": false, + "thumbs": null, + "type": "file" + }, + { + "cascadeDelete": false, + "collectionId": "kjxvi8asj2igqwf", + "hidden": false, + "id": "b49obm5u", + "maxSelect": 1, + "minSelect": 0, + "name": "category", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }, + { + "cascadeDelete": false, + "collectionId": "pbc_1219621782", + "hidden": false, + "id": "relation1874629670", + "maxSelect": 999, + "minSelect": 0, + "name": "tags", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }, + { + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation3182418120", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }, + { + "cascadeDelete": false, + "collectionId": "goeo2ubp103rzp9", + "hidden": false, + "id": "ppq2sist", + "maxSelect": 2147483647, + "minSelect": 0, + "name": "waypoints", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }, + { + "hidden": false, + "id": "k2giqyjq", + "max": null, + "min": null, + "name": "thumbnail", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "dywtnynw", + "maxSelect": 1, + "name": "difficulty", + "presentable": false, + "required": false, + "system": false, + "type": "select", + "values": [ + "easy", + "moderate", + "difficult" + ] + }, + { + "hidden": false, + "id": "hovyvbtt", + "max": "", + "min": "", + "name": "date", + "presentable": false, + "required": false, + "system": false, + "type": "date" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "sajmiuau", + "max": 0, + "min": 0, + "name": "external_id", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, + { + "hidden": false, + "id": "htr35nha", + "maxSelect": 1, + "name": "external_provider", + "presentable": false, + "required": false, + "system": false, + "type": "select", + "values": [ + "strava", + "komoot" + ] + }, + { + "hidden": false, + "id": "autodate2990389176", + "name": "created", + "onCreate": true, + "onUpdate": false, + "presentable": false, + "system": false, + "type": "autodate" + }, + { + "hidden": false, + "id": "autodate3332085495", + "name": "updated", + "onCreate": true, + "onUpdate": true, + "presentable": false, + "system": false, + "type": "autodate" + } + ], + "indexes": [], + "system": false + }, + { + "id": "goeo2ubp103rzp9", + "listRule": "author = @request.auth.id || trails_via_waypoints.author.user ?= @request.auth.id || trails_via_waypoints.public ?= true || \n(@collection.trail_share.trail.id ?= trails_via_waypoints.id && @collection.trail_share.user ?= @request.auth.id)", + "viewRule": "author = @request.auth.id || trails_via_waypoints.author.user ?= @request.auth.id || trails_via_waypoints.public ?= true || \n(@collection.trail_share.trail.id ?= trails_via_waypoints.id && @collection.trail_share.user ?= @request.auth.id)", + "createRule": "@request.auth.id != \"\"", + "updateRule": "@request.auth.id != \"\" && ((@collection.trails.waypoints.id ?= id && @collection.trails.author.user = @request.auth.id) || author = @request.auth.id)", + "deleteRule": "@request.auth.id != \"\" && ((@collection.trails.waypoints.id ?= id && @collection.trails.author.user = @request.auth.id) || author = @request.auth.id)", + "name": "waypoints", + "type": "base", + "fields": [ + { + "autogeneratePattern": "[a-z0-9]{15}", + "hidden": false, + "id": "text3208210256", + "max": 15, + "min": 15, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "2yegzjtk", + "max": 0, + "min": 0, + "name": "name", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "3xtcjtxv", + "max": 0, + "min": 0, + "name": "description", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, + { + "hidden": false, + "id": "ygotgxzy", + "max": null, + "min": null, + "name": "lat", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "q0ygnxd2", + "max": null, + "min": null, + "name": "lon", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "hidden": false, + "id": "s1prb3fx", + "max": null, + "min": 0, + "name": "distance_from_start", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }, + { + "autogeneratePattern": "", + "hidden": false, + "id": "rnjgm2tk", + "max": 0, + "min": 0, + "name": "icon", + "pattern": "", + "presentable": false, + "primaryKey": false, + "required": false, + "system": false, + "type": "text" + }, + { + "hidden": false, + "id": "tfhs3juh", + "maxSelect": 99, + "maxSize": 20971520, + "mimeTypes": [ + "image/jpeg", + "image/png", + "image/vnd.mozilla.apng", + "image/webp", + "image/svg+xml", + "video/ogg", + "video/mp4", + "video/webm" + ], + "name": "photos", + "presentable": false, + "protected": false, + "required": false, + "system": false, + "thumbs": null, + "type": "file" + }, + { + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "8qbxrsd8", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }, + { + "hidden": false, + "id": "autodate2990389176", + "name": "created", + "onCreate": true, + "onUpdate": false, + "presentable": false, + "system": false, + "type": "autodate" + }, + { + "hidden": false, + "id": "autodate3332085495", + "name": "updated", + "onCreate": true, + "onUpdate": true, + "presentable": false, + "system": false, + "type": "autodate" + } + ], + "indexes": [], + "system": false + }, + { + "id": "urytyc428mwlbqq", + "listRule": null, + "viewRule": "@request.auth.id = user", + "createRule": null, + "updateRule": null, + "deleteRule": null, + "name": "trails_bounding_box", + "type": "view", + "fields": [ + { + "autogeneratePattern": "", + "hidden": false, + "id": "text3208210256", + "max": 0, + "min": 0, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "_clone_7E6L", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }, + { + "hidden": false, + "id": "json2217363417", + "maxSize": 1, + "name": "max_lat", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json3888878381", + "maxSize": 1, + "name": "max_lon", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json2279188374", + "maxSize": 1, + "name": "min_lat", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json3828904802", + "maxSize": 1, + "name": "min_lon", + "presentable": false, + "required": false, + "system": false, + "type": "json" + } + ], + "indexes": [], + "system": false, + "viewQuery": "SELECT \n activitypub_actors.id, activitypub_actors.user, \n COALESCE(MAX(trails.lat), 0) AS max_lat, \n COALESCE(MAX(trails.lon), 0) AS max_lon, \n COALESCE(MIN(trails.lat), 0) AS min_lat, \n COALESCE(MIN(trails.lon), 0) AS min_lon \nFROM activitypub_actors \nLEFT JOIN trails \n ON activitypub_actors.id = trails.author \n OR trails.public = TRUE \n OR EXISTS (\n SELECT 1 \n FROM trail_share \n WHERE trail_share.trail = trails.id \n AND trail_share.user = activitypub_actors.id\n ) \nGROUP BY activitypub_actors.id;" + }, + { + "id": "4wbv9tz5zjdrjh1", + "listRule": null, + "viewRule": "@request.auth.id = user", + "createRule": null, + "updateRule": null, + "deleteRule": null, + "name": "trails_filter", + "type": "view", + "fields": [ + { + "autogeneratePattern": "", + "hidden": false, + "id": "text3208210256", + "max": 0, + "min": 0, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "_clone_FrMO", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }, + { + "hidden": false, + "id": "json1840770130", + "maxSize": 1, + "name": "max_distance", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json2471616556", + "maxSize": 1, + "name": "max_elevation_gain", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json2649087013", + "maxSize": 1, + "name": "max_elevation_loss", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json4152030739", + "maxSize": 1, + "name": "max_duration", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json4257545400", + "maxSize": 1, + "name": "min_distance", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json3237476552", + "maxSize": 1, + "name": "min_elevation_gain", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json3460547777", + "maxSize": 1, + "name": "min_elevation_loss", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json1728702201", + "maxSize": 1, + "name": "min_duration", + "presentable": false, + "required": false, + "system": false, + "type": "json" + } + ], + "indexes": [], + "system": false, + "viewQuery": "SELECT activitypub_actors.id, activitypub_actors.user, COALESCE(printf(\"%.2f\", MAX(trails.distance)), 0) AS max_distance,\n COALESCE(printf(\"%.2f\", MAX(trails.elevation_gain)), 0) AS max_elevation_gain, \n COALESCE(printf(\"%.2f\", MAX(trails.elevation_loss)), 0) AS max_elevation_loss, \n COALESCE(printf(\"%.2f\", MAX(trails.duration)), 0) AS max_duration, \n COALESCE(printf(\"%.2f\", MIN(trails.distance)), 0) AS min_distance, \n COALESCE(printf(\"%.2f\", MIN(trails.elevation_gain)), 0) AS min_elevation_gain, \n COALESCE(printf(\"%.2f\", MIN(trails.elevation_loss)), 0) AS min_elevation_loss, \n COALESCE(printf(\"%.2f\", MIN(trails.duration)), 0) AS min_duration \nFROM activitypub_actors \n LEFT JOIN trails ON \n activitypub_actors.id = trails.author OR \n trails.public = 1 OR \n EXISTS (\n SELECT 1 \n FROM trail_share \n WHERE trail_share.trail = trails.id \n AND trail_share.user = activitypub_actors.user\n ) GROUP BY activitypub_actors.id;" + } +]` + + return app.ImportCollectionsByMarshaledJSON([]byte(jsonData), false) + }, func(app core.App) error { + return nil + }) +} diff --git a/db/migrations/1747066702_updated_comments.go b/db/migrations/1747066702_updated_comments.go new file mode 100644 index 00000000..f698383b --- /dev/null +++ b/db/migrations/1747066702_updated_comments.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("lf06qip3f4d11yk") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("7lwo1mxx") + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("lf06qip3f4d11yk") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(6, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "7lwo1mxx", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747066720_updated_summit_logs.go b/db/migrations/1747066720_updated_summit_logs.go new file mode 100644 index 00000000..317ac99c --- /dev/null +++ b/db/migrations/1747066720_updated_summit_logs.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("r0mj3tkr") + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(13, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "r0mj3tkr", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747066741_updated_trails.go b/db/migrations/1747066741_updated_trails.go new file mode 100644 index 00000000..4d631191 --- /dev/null +++ b/db/migrations/1747066741_updated_trails.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("1utgul91") + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(24, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "1utgul91", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747066742_updated_follows.go b/db/migrations/1747066742_updated_follows.go new file mode 100644 index 00000000..99a36be7 --- /dev/null +++ b/db/migrations/1747066742_updated_follows.go @@ -0,0 +1,26 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("8obn1ukumze565i") + if err != nil { + return err + } + + // // remove field + collection.Fields.RemoveById("in1traur") + + // // remove field + collection.Fields.RemoveById("wxwomfd5") + + return app.Save(collection) + + }, func(app core.App) error { + return nil + }) +} diff --git a/db/migrations/1747236775_created_timeline.go b/db/migrations/1747236775_created_timeline.go new file mode 100644 index 00000000..f9c66e90 --- /dev/null +++ b/db/migrations/1747236775_created_timeline.go @@ -0,0 +1,186 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + jsonData := `{ + "createRule": null, + "deleteRule": null, + "fields": [ + { + "autogeneratePattern": "", + "hidden": false, + "id": "text3208210256", + "max": 0, + "min": 0, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "hidden": false, + "id": "json2310347867", + "maxSize": 1, + "name": "trail_id", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json2862495610", + "maxSize": 1, + "name": "date", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json1579384326", + "maxSize": 1, + "name": "name", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json1843675174", + "maxSize": 1, + "name": "description", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json3275261007", + "maxSize": 1, + "name": "gpx", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json3182418120", + "maxSize": 1, + "name": "author", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json142008537", + "maxSize": 1, + "name": "photos", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json479369857", + "maxSize": 1, + "name": "distance", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json2254405824", + "maxSize": 1, + "name": "duration", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json3015100073", + "maxSize": 1, + "name": "elevation_gain", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json3171089056", + "maxSize": 1, + "name": "elevation_loss", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json2990389176", + "maxSize": 1, + "name": "created", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }, + { + "hidden": false, + "id": "json2363381545", + "maxSize": 1, + "name": "type", + "presentable": false, + "required": false, + "system": false, + "type": "json" + } + ], + "id": "pbc_468398817", + "indexes": [], + "listRule": "@collection.trails.id ?= trail_id && @collection.trails.public ?= true", + "name": "timeline", + "system": false, + "type": "view", + "updateRule": null, + "viewQuery": "-- database: /Users/christianbeutel/Documents/svelte/wanderer/db/pb_data/data.db\nSELECT\n (ROW_NUMBER() OVER ()) as id,\n trail_id,\n date,\n name,\n description,\n gpx,\n author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n created,\n type\nFROM\n (\n SELECT\n summit_logs.trail as trail_id,\n summit_logs.date,\n trails.name,\n text as description,\n summit_logs.gpx,\n activitypub_actors.iri as author,\n summit_logs.photos,\n summit_logs.distance,\n summit_logs.duration,\n summit_logs.elevation_gain,\n summit_logs.elevation_loss,\n summit_logs.created,\n \"summit_log\" as type\n FROM\n summit_logs\n JOIN trails ON summit_logs.trail = trails.id\n JOIN activitypub_actors ON activitypub_actors.id = summit_logs.author\n UNION\n SELECT\n trails.id as trail_id,\n date,\n trails.name,\n description,\n gpx,\n activitypub_actors.iri as author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n trails.created,\n \"trail\" as type\n FROM\n trails\n JOIN activitypub_actors ON activitypub_actors.id = trails.author\n )\nORDER BY\n created DESC;\n", + "viewRule": "@collection.trails.id ?= trail_id && @collection.trails.public ?= true" + }` + + collection := &core.Collection{} + if err := json.Unmarshal([]byte(jsonData), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_468398817") + if err != nil { + return err + } + + return app.Delete(collection) + }) +} diff --git a/db/migrations/1747242599_updated_timeline.go b/db/migrations/1747242599_updated_timeline.go new file mode 100644 index 00000000..72aef03b --- /dev/null +++ b/db/migrations/1747242599_updated_timeline.go @@ -0,0 +1,40 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_468398817") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewQuery": "SELECT\n (ROW_NUMBER() OVER ()) as id,\n trail_id,\n date,\n name,\n description,\n gpx,\n author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n created,\n type\nFROM\n (\n SELECT\n summit_logs.trail as trail_id,\n summit_logs.date,\n trails.name,\n text as description,\n summit_logs.gpx,\n activitypub_actors.iri as author,\n summit_logs.photos,\n summit_logs.distance,\n summit_logs.duration,\n summit_logs.elevation_gain,\n summit_logs.elevation_loss,\n summit_logs.created,\n \"summit_log\" as type\n FROM\n summit_logs\n JOIN trails ON summit_logs.trail = trails.id\n JOIN activitypub_actors ON activitypub_actors.id = summit_logs.author\n UNION\n SELECT\n trails.id as trail_id,\n date,\n trails.name,\n description,\n gpx,\n activitypub_actors.iri as author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n trails.created,\n \"trail\" as type\n FROM\n trails\n JOIN activitypub_actors ON activitypub_actors.id = trails.author\n )\nORDER BY\n created DESC;\n" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_468398817") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewQuery": "-- database: /Users/christianbeutel/Documents/svelte/wanderer/db/pb_data/data.db\nSELECT\n (ROW_NUMBER() OVER ()) as id,\n trail_id,\n date,\n name,\n description,\n gpx,\n author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n created,\n type\nFROM\n (\n SELECT\n summit_logs.trail as trail_id,\n summit_logs.date,\n trails.name,\n text as description,\n summit_logs.gpx,\n activitypub_actors.iri as author,\n summit_logs.photos,\n summit_logs.distance,\n summit_logs.duration,\n summit_logs.elevation_gain,\n summit_logs.elevation_loss,\n summit_logs.created,\n \"summit_log\" as type\n FROM\n summit_logs\n JOIN trails ON summit_logs.trail = trails.id\n JOIN activitypub_actors ON activitypub_actors.id = summit_logs.author\n UNION\n SELECT\n trails.id as trail_id,\n date,\n trails.name,\n description,\n gpx,\n activitypub_actors.iri as author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n trails.created,\n \"trail\" as type\n FROM\n trails\n JOIN activitypub_actors ON activitypub_actors.id = trails.author\n )\nORDER BY\n created DESC;\n" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747300536_updated_timeline.go b/db/migrations/1747300536_updated_timeline.go new file mode 100644 index 00000000..e2981b79 --- /dev/null +++ b/db/migrations/1747300536_updated_timeline.go @@ -0,0 +1,40 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_468398817") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewQuery": "SELECT\n id,\n trail_id,\n date,\n name,\n description,\n gpx,\n author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n created,\n type\nFROM\n (\n SELECT\n summit_logs.id,\n summit_logs.trail as trail_id,\n summit_logs.date,\n trails.name,\n text as description,\n summit_logs.gpx,\n activitypub_actors.iri as author,\n summit_logs.photos,\n summit_logs.distance,\n summit_logs.duration,\n summit_logs.elevation_gain,\n summit_logs.elevation_loss,\n summit_logs.created,\n \"summit_log\" as type\n FROM\n summit_logs\n JOIN trails ON summit_logs.trail = trails.id\n JOIN activitypub_actors ON activitypub_actors.id = summit_logs.author\n UNION\n SELECT\n trails.id,\n trails.id as trail_id,\n date,\n trails.name,\n description,\n gpx,\n activitypub_actors.iri as author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n trails.created,\n \"trail\" as type\n FROM\n trails\n JOIN activitypub_actors ON activitypub_actors.id = trails.author\n )\nORDER BY\n created DESC;\n" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_468398817") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewQuery": "SELECT\n (ROW_NUMBER() OVER ()) as id,\n trail_id,\n date,\n name,\n description,\n gpx,\n author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n created,\n type\nFROM\n (\n SELECT\n summit_logs.trail as trail_id,\n summit_logs.date,\n trails.name,\n text as description,\n summit_logs.gpx,\n activitypub_actors.iri as author,\n summit_logs.photos,\n summit_logs.distance,\n summit_logs.duration,\n summit_logs.elevation_gain,\n summit_logs.elevation_loss,\n summit_logs.created,\n \"summit_log\" as type\n FROM\n summit_logs\n JOIN trails ON summit_logs.trail = trails.id\n JOIN activitypub_actors ON activitypub_actors.id = summit_logs.author\n UNION\n SELECT\n trails.id as trail_id,\n date,\n trails.name,\n description,\n gpx,\n activitypub_actors.iri as author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n trails.created,\n \"trail\" as type\n FROM\n trails\n JOIN activitypub_actors ON activitypub_actors.id = trails.author\n )\nORDER BY\n created DESC;\n" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747312289_updated_comments.go b/db/migrations/1747312289_updated_comments.go new file mode 100644 index 00000000..4d8e2aae --- /dev/null +++ b/db/migrations/1747312289_updated_comments.go @@ -0,0 +1,43 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("lf06qip3f4d11yk") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("fhgxdiam") + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("lf06qip3f4d11yk") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(6, []byte(`{ + "hidden": false, + "id": "fhgxdiam", + "max": null, + "min": null, + "name": "rating", + "onlyInt": false, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747381400_updated_trails.go b/db/migrations/1747381400_updated_trails.go new file mode 100644 index 00000000..06a4fb76 --- /dev/null +++ b/db/migrations/1747381400_updated_trails.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(22, []byte(`{ + "exceptDomains": [], + "hidden": false, + "id": "url1760183548", + "name": "iri", + "onlyDomains": [], + "presentable": false, + "required": false, + "system": false, + "type": "url" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("url1760183548") + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747382660_updated_trails.go b/db/migrations/1747382660_updated_trails.go new file mode 100644 index 00000000..78c14bd9 --- /dev/null +++ b/db/migrations/1747382660_updated_trails.go @@ -0,0 +1,40 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "@request.auth.id != \"\" && (@request.body.author.user = @request.auth.id || author.isLocal = false)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "@request.auth.id != \"\" && (@request.body.author.user = @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747383776_updated_trails.go b/db/migrations/1747383776_updated_trails.go new file mode 100644 index 00000000..d9ad60a7 --- /dev/null +++ b/db/migrations/1747383776_updated_trails.go @@ -0,0 +1,40 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "updateRule": "author.user = @request.auth.id || (@request.auth.id != \"\" && trail_share_via_trail.trail = id && trail_share_via_trail.user ?= @request.auth.id && trail_share_via_trail.permission = \"edit\") || (@request.auth.id != \"\" && author.isLocal = false)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "updateRule": "author.user = @request.auth.id || (@request.auth.id != \"\" && trail_share_via_trail.trail = id && trail_share_via_trail.user ?= @request.auth.id && trail_share_via_trail.permission = \"edit\")" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747499980_updated_comments.go b/db/migrations/1747499980_updated_comments.go new file mode 100644 index 00000000..37bf7e9a --- /dev/null +++ b/db/migrations/1747499980_updated_comments.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("lf06qip3f4d11yk") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(4, []byte(`{ + "exceptDomains": null, + "hidden": false, + "id": "url2434853685", + "name": "iri", + "onlyDomains": null, + "presentable": false, + "required": false, + "system": false, + "type": "url" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("lf06qip3f4d11yk") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("url2434853685") + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747554117_updated_summit_logs.go b/db/migrations/1747554117_updated_summit_logs.go new file mode 100644 index 00000000..e9ffb881 --- /dev/null +++ b/db/migrations/1747554117_updated_summit_logs.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(11, []byte(`{ + "exceptDomains": null, + "hidden": false, + "id": "url2434853685", + "name": "iri", + "onlyDomains": null, + "presentable": false, + "required": false, + "system": false, + "type": "url" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("url2434853685") + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747554570_updated_summit_logs.go b/db/migrations/1747554570_updated_summit_logs.go new file mode 100644 index 00000000..38dcb652 --- /dev/null +++ b/db/migrations/1747554570_updated_summit_logs.go @@ -0,0 +1,40 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "@request.auth.id != \"\" && (trail.author.user = @request.auth.id || trail.public = true)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "@request.auth.id != \"\"" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747674856_updated_lists.go b/db/migrations/1747674856_updated_lists.go new file mode 100644 index 00000000..6d8fa1b6 --- /dev/null +++ b/db/migrations/1747674856_updated_lists.go @@ -0,0 +1,78 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(5, []byte(`{ + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation3182418120", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(6, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "kwm6zdet", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("relation3182418120") + + // update field + if err := collection.Fields.AddMarshaledJSONAt(5, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "kwm6zdet", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747674913_set_list_authors.go b/db/migrations/1747674913_set_list_authors.go new file mode 100644 index 00000000..85a71f7c --- /dev/null +++ b/db/migrations/1747674913_set_list_authors.go @@ -0,0 +1,33 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + lists, err := app.FindAllRecords("lists") + if err != nil { + return err + } + + for _, l := range lists { + actor, err := app.FindFirstRecordByData("activitypub_actors", "user", l.GetString("user")) + if err != nil { + continue + } + l.Set("author", actor.Id) + err = app.UnsafeWithoutHooks().Save(l) + if err != nil { + continue + } + } + + return nil + }, func(app core.App) error { + // add down queries... + + return nil + }) +} diff --git a/db/migrations/1747675001_updated_lists.go b/db/migrations/1747675001_updated_lists.go new file mode 100644 index 00000000..2c2dbb48 --- /dev/null +++ b/db/migrations/1747675001_updated_lists.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("kwm6zdet") + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(6, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "kwm6zdet", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747676287_updated_lists.go b/db/migrations/1747676287_updated_lists.go new file mode 100644 index 00000000..5889882f --- /dev/null +++ b/db/migrations/1747676287_updated_lists.go @@ -0,0 +1,48 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "@request.auth.id != \"\" && (@request.body.author.user = @request.auth.id)", + "deleteRule": "author.user = @request.auth.id ", + "listRule": "author.user = @request.auth.id || public = true || (@request.auth.id != \"\" && list_share_via_list.user ?= @request.auth.id)", + "updateRule": "author.user = @request.auth.id || (@request.auth.id != \"\" && list_share_via_list.list = id && list_share_via_list.user ?= @request.auth.id && list_share_via_list.permission = \"edit\")", + "viewRule": "author.user = @request.auth.id || public = true || (@request.auth.id != \"\" && list_share_via_list.user ?= @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "@request.auth.id != \"\" && (@request.body.author = @request.auth.id)", + "deleteRule": "author = @request.auth.id ", + "listRule": "author = @request.auth.id || public = true || (@request.auth.id != \"\" && list_share_via_list.user ?= @request.auth.id)", + "updateRule": "author = @request.auth.id || (@request.auth.id != \"\" && list_share_via_list.list = id && list_share_via_list.user ?= @request.auth.id && list_share_via_list.permission = \"edit\")", + "viewRule": "author = @request.auth.id || public = true || (@request.auth.id != \"\" && list_share_via_list.user ?= @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747683009_updated_lists.go b/db/migrations/1747683009_updated_lists.go new file mode 100644 index 00000000..a345350a --- /dev/null +++ b/db/migrations/1747683009_updated_lists.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(7, []byte(`{ + "exceptDomains": null, + "hidden": false, + "id": "url2434853685", + "name": "iri", + "onlyDomains": null, + "presentable": false, + "required": false, + "system": false, + "type": "url" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("url2434853685") + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747683368_updated_lists.go b/db/migrations/1747683368_updated_lists.go new file mode 100644 index 00000000..6719fdf1 --- /dev/null +++ b/db/migrations/1747683368_updated_lists.go @@ -0,0 +1,40 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "@request.auth.id != \"\" && (@request.body.author.user = @request.auth.id || author.isLocal = false)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "@request.auth.id != \"\" && (@request.body.author.user = @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747683707_updated_lists.go b/db/migrations/1747683707_updated_lists.go new file mode 100644 index 00000000..8204debf --- /dev/null +++ b/db/migrations/1747683707_updated_lists.go @@ -0,0 +1,40 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "updateRule": "author.user = @request.auth.id || (@request.auth.id != \"\" && list_share_via_list.list = id && list_share_via_list.user ?= @request.auth.id && list_share_via_list.permission = \"edit\") || (@request.auth.id != \"\" && author.isLocal = false)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "updateRule": "author.user = @request.auth.id || (@request.auth.id != \"\" && list_share_via_list.list = id && list_share_via_list.user ?= @request.auth.id && list_share_via_list.permission = \"edit\")" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747945195_updated_timeline.go b/db/migrations/1747945195_updated_timeline.go new file mode 100644 index 00000000..a2b5e100 --- /dev/null +++ b/db/migrations/1747945195_updated_timeline.go @@ -0,0 +1,57 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_468398817") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewQuery": "SELECT\n id,\n trail_id,\n iri,\n date,\n name,\n description,\n gpx,\n author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n created,\n type\nFROM\n (\n SELECT\n summit_logs.id,\n summit_logs.trail as trail_id,\n trails.iri,\n summit_logs.date,\n trails.name,\n text as description,\n summit_logs.gpx,\n activitypub_actors.iri as author,\n summit_logs.photos,\n summit_logs.distance,\n summit_logs.duration,\n summit_logs.elevation_gain,\n summit_logs.elevation_loss,\n summit_logs.created,\n \"summit_log\" as type\n FROM\n summit_logs\n JOIN trails ON summit_logs.trail = trails.id\n JOIN activitypub_actors ON activitypub_actors.id = summit_logs.author\n UNION\n SELECT\n trails.id,\n trails.id as trail_id,\n trails.iri,\n date,\n trails.name,\n description,\n gpx,\n activitypub_actors.iri as author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n trails.created,\n \"trail\" as type\n FROM\n trails\n JOIN activitypub_actors ON activitypub_actors.id = trails.author\n )\nORDER BY\n created DESC;\n" + }`), &collection); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(2, []byte(`{ + "hidden": false, + "id": "json2434853685", + "maxSize": 1, + "name": "iri", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_468398817") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewQuery": "SELECT\n id,\n trail_id,\n date,\n name,\n description,\n gpx,\n author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n created,\n type\nFROM\n (\n SELECT\n summit_logs.id,\n summit_logs.trail as trail_id,\n summit_logs.date,\n trails.name,\n text as description,\n summit_logs.gpx,\n activitypub_actors.iri as author,\n summit_logs.photos,\n summit_logs.distance,\n summit_logs.duration,\n summit_logs.elevation_gain,\n summit_logs.elevation_loss,\n summit_logs.created,\n \"summit_log\" as type\n FROM\n summit_logs\n JOIN trails ON summit_logs.trail = trails.id\n JOIN activitypub_actors ON activitypub_actors.id = summit_logs.author\n UNION\n SELECT\n trails.id,\n trails.id as trail_id,\n date,\n trails.name,\n description,\n gpx,\n activitypub_actors.iri as author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n trails.created,\n \"trail\" as type\n FROM\n trails\n JOIN activitypub_actors ON activitypub_actors.id = trails.author\n )\nORDER BY\n created DESC;\n" + }`), &collection); err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("json2434853685") + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747946749_updated_trails.go b/db/migrations/1747946749_updated_trails.go new file mode 100644 index 00000000..b8a68d29 --- /dev/null +++ b/db/migrations/1747946749_updated_trails.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE INDEX ` + "`" + `idx_6tD5RqfVk2` + "`" + ` ON ` + "`" + `trails` + "`" + ` (` + "`" + `iri` + "`" + `)" + ] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747946778_updated_lists.go b/db/migrations/1747946778_updated_lists.go new file mode 100644 index 00000000..a7ccae66 --- /dev/null +++ b/db/migrations/1747946778_updated_lists.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE INDEX ` + "`" + `idx_hLtEU5XGWL` + "`" + ` ON ` + "`" + `lists` + "`" + ` (` + "`" + `iri` + "`" + `)" + ] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747952550_updated_timeline.go b/db/migrations/1747952550_updated_timeline.go new file mode 100644 index 00000000..531f6ebd --- /dev/null +++ b/db/migrations/1747952550_updated_timeline.go @@ -0,0 +1,108 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_468398817") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewQuery": "SELECT\n id,\n trail_id,\n trail_author_username,\n trail_author_domain,\n trail_iri,\n date,\n name,\n description,\n gpx,\n author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n created,\n type\nFROM\n (\n SELECT\n summit_logs.id,\n summit_logs.trail as trail_id,\n tapa.username as trail_author_username,\n tapa.domain as trail_author_domain,\n trails.iri as trail_iri,\n summit_logs.date,\n trails.name,\n text as description,\n summit_logs.gpx,\n sapa.iri as author,\n summit_logs.photos,\n summit_logs.distance,\n summit_logs.duration,\n summit_logs.elevation_gain,\n summit_logs.elevation_loss,\n summit_logs.created,\n \"summit_log\" as type\n FROM\n summit_logs\n JOIN trails ON summit_logs.trail = trails.id\n JOIN activitypub_actors sapa ON sapa.id = summit_logs.author\n JOIN activitypub_actors tapa ON tapa.id = trails.author\n UNION\n SELECT\n trails.id,\n trails.id as trail_id,\n activitypub_actors.username as trail_author_username,\n activitypub_actors.domain as trail_author_domain,\n trails.iri as trail_iri,\n date,\n trails.name,\n description,\n gpx,\n activitypub_actors.iri as author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n trails.created,\n \"trail\" as type\n FROM\n trails\n JOIN activitypub_actors ON activitypub_actors.id = trails.author\n )\nORDER BY\n created DESC;\n" + }`), &collection); err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("json2434853685") + + // add field + if err := collection.Fields.AddMarshaledJSONAt(2, []byte(`{ + "hidden": false, + "id": "json3184124860", + "maxSize": 1, + "name": "trail_author_username", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }`)); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(3, []byte(`{ + "hidden": false, + "id": "json2887874732", + "maxSize": 1, + "name": "trail_author_domain", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }`)); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(4, []byte(`{ + "hidden": false, + "id": "json113557190", + "maxSize": 1, + "name": "trail_iri", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_468398817") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewQuery": "SELECT\n id,\n trail_id,\n iri,\n date,\n name,\n description,\n gpx,\n author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n created,\n type\nFROM\n (\n SELECT\n summit_logs.id,\n summit_logs.trail as trail_id,\n trails.iri,\n summit_logs.date,\n trails.name,\n text as description,\n summit_logs.gpx,\n activitypub_actors.iri as author,\n summit_logs.photos,\n summit_logs.distance,\n summit_logs.duration,\n summit_logs.elevation_gain,\n summit_logs.elevation_loss,\n summit_logs.created,\n \"summit_log\" as type\n FROM\n summit_logs\n JOIN trails ON summit_logs.trail = trails.id\n JOIN activitypub_actors ON activitypub_actors.id = summit_logs.author\n UNION\n SELECT\n trails.id,\n trails.id as trail_id,\n trails.iri,\n date,\n trails.name,\n description,\n gpx,\n activitypub_actors.iri as author,\n photos,\n distance,\n duration,\n elevation_gain,\n elevation_loss,\n trails.created,\n \"trail\" as type\n FROM\n trails\n JOIN activitypub_actors ON activitypub_actors.id = trails.author\n )\nORDER BY\n created DESC;\n" + }`), &collection); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(2, []byte(`{ + "hidden": false, + "id": "json2434853685", + "maxSize": 1, + "name": "iri", + "presentable": false, + "required": false, + "system": false, + "type": "json" + }`)); err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("json3184124860") + + // remove field + collection.Fields.RemoveById("json2887874732") + + // remove field + collection.Fields.RemoveById("json113557190") + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747995473_updated_notifications.go b/db/migrations/1747995473_updated_notifications.go new file mode 100644 index 00000000..853fa347 --- /dev/null +++ b/db/migrations/1747995473_updated_notifications.go @@ -0,0 +1,104 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("khrcci2uqknny8h") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("tmghd4vo") + + // remove field + collection.Fields.RemoveById("exqo1whj") + + // add field + if err := collection.Fields.AddMarshaledJSONAt(4, []byte(`{ + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation1745156937", + "maxSelect": 1, + "minSelect": 0, + "name": "recipient", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(5, []byte(`{ + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation3182418120", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("khrcci2uqknny8h") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(4, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "tmghd4vo", + "maxSelect": 1, + "minSelect": 0, + "name": "recipient", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(5, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "exqo1whj", + "maxSelect": 1, + "minSelect": 0, + "name": "author", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("relation1745156937") + + // remove field + collection.Fields.RemoveById("relation3182418120") + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747996502_updated_notifications.go b/db/migrations/1747996502_updated_notifications.go new file mode 100644 index 00000000..75ae4bdf --- /dev/null +++ b/db/migrations/1747996502_updated_notifications.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("khrcci2uqknny8h") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "@request.auth.id = recipient.user", + "updateRule": "@request.auth.id = recipient.user && (@request.body.type = null||@request.body.type = type) && (@request.body.metadata = null||@request.body.metadata = metadata) && (@request.body.recipient = null||@request.body.recipient = recipient) && (@request.body.author = null||@request.body.author = author) && @request.body.seen = true", + "viewRule": "@request.auth.id = recipient.user" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("khrcci2uqknny8h") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "@request.auth.id = recipient", + "updateRule": "@request.auth.id = recipient && (@request.body.type = null||@request.body.type = type) && (@request.body.metadata = null||@request.body.metadata = metadata) && (@request.body.recipient = null||@request.body.recipient = recipient) && (@request.body.author = null||@request.body.author = author) && @request.body.seen = true", + "viewRule": "@request.auth.id = recipient" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1747999298_updated_notifications.go b/db/migrations/1747999298_updated_notifications.go new file mode 100644 index 00000000..24d6860e --- /dev/null +++ b/db/migrations/1747999298_updated_notifications.go @@ -0,0 +1,67 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("khrcci2uqknny8h") + if err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "hidden": false, + "id": "b57prsbu", + "maxSelect": 1, + "name": "type", + "presentable": false, + "required": true, + "system": false, + "type": "select", + "values": [ + "new_follower", + "trail_comment", + "trail_share", + "list_share", + "summit_log_create" + ] + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("khrcci2uqknny8h") + if err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "hidden": false, + "id": "b57prsbu", + "maxSelect": 1, + "name": "type", + "presentable": false, + "required": true, + "system": false, + "type": "select", + "values": [ + "trail_create", + "list_create", + "new_follower", + "trail_comment", + "trail_share", + "list_share" + ] + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1748002661_updated_follows.go b/db/migrations/1748002661_updated_follows.go new file mode 100644 index 00000000..e3501b71 --- /dev/null +++ b/db/migrations/1748002661_updated_follows.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("8obn1ukumze565i") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE UNIQUE INDEX `+"`"+`idx_oM5KTHL3Lf`+"`"+` ON `+"`"+`follows`+"`"+` (\n `+"`"+`follower`+"`"+`,\n `+"`"+`followee`+"`"+`\n)" + ] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("8obn1ukumze565i") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1748003743_updated_summit_logs.go b/db/migrations/1748003743_updated_summit_logs.go new file mode 100644 index 00000000..f4bfa6c6 --- /dev/null +++ b/db/migrations/1748003743_updated_summit_logs.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "(@request.auth.id != \"\" && (author.user = @request.auth.id || trail.author.user = @request.auth.id)) || trail.public = true || (@collection.trail_share.trail ?= trail && @collection.trail_share.trail ?= @request.auth.id)", + "viewRule": "(@request.auth.id != \"\" && (author.user = @request.auth.id || trail.author.user = @request.auth.id)) || trail.public = true || (@collection.trail_share.trail ?= trail && @collection.trail_share.trail ?= @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "(@request.auth.id != \"\" && (author.user = @request.auth.id || trail.author.user = @request.auth.id)) || trail.public = true || \ntrail.trail_share_via_trail.user = @request.auth.id", + "viewRule": "(@request.auth.id != \"\" && (author.user = @request.auth.id || trail.author.user = @request.auth.id)) || trail.public = true || \ntrail.trail_share_via_trail.user = @request.auth.id" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1748084027_updated_follows.go b/db/migrations/1748084027_updated_follows.go new file mode 100644 index 00000000..39130439 --- /dev/null +++ b/db/migrations/1748084027_updated_follows.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("8obn1ukumze565i") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "", + "viewRule": "" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("8obn1ukumze565i") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "@request.auth.id = follower.user.id || @request.auth.id = followee.user.id", + "viewRule": "@request.auth.id = follower.user.id || @request.auth.id = followee.user.id" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749553104_updated_trail_share.go b/db/migrations/1749553104_updated_trail_share.go new file mode 100644 index 00000000..c039a6a4 --- /dev/null +++ b/db/migrations/1749553104_updated_trail_share.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("1mns8mlal6uf9ku") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(2, []byte(`{ + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation2375276105", + "maxSelect": 1, + "minSelect": 0, + "name": "actor", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("1mns8mlal6uf9ku") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("relation2375276105") + + return app.UnsafeWithoutHooks().Save(collection) + }) +} diff --git a/db/migrations/1749553105_migrate_trail_share.go b/db/migrations/1749553105_migrate_trail_share.go new file mode 100644 index 00000000..ab92ce8c --- /dev/null +++ b/db/migrations/1749553105_migrate_trail_share.go @@ -0,0 +1,31 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + shares, err := app.FindAllRecords("trail_share") + if err != nil { + return err + } + + for _, s := range shares { + actor, err := app.FindFirstRecordByData("activitypub_actors", "user", s.GetString("user")) + if err != nil { + continue + } + s.Set("actor", actor.Id) + err = app.Save(s) + if err != nil { + return err + } + } + + return nil + }, func(app core.App) error { + return nil + }) +} diff --git a/db/migrations/1749554811_updated_trails_filter.go b/db/migrations/1749554811_updated_trails_filter.go new file mode 100644 index 00000000..750b2fba --- /dev/null +++ b/db/migrations/1749554811_updated_trails_filter.go @@ -0,0 +1,80 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("4wbv9tz5zjdrjh1") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewQuery": "SELECT activitypub_actors.id, activitypub_actors.user, COALESCE(printf(\"%.2f\", MAX(trails.distance)), 0) AS max_distance,\n COALESCE(printf(\"%.2f\", MAX(trails.elevation_gain)), 0) AS max_elevation_gain, \n COALESCE(printf(\"%.2f\", MAX(trails.elevation_loss)), 0) AS max_elevation_loss, \n COALESCE(printf(\"%.2f\", MAX(trails.duration)), 0) AS max_duration, \n COALESCE(printf(\"%.2f\", MIN(trails.distance)), 0) AS min_distance, \n COALESCE(printf(\"%.2f\", MIN(trails.elevation_gain)), 0) AS min_elevation_gain, \n COALESCE(printf(\"%.2f\", MIN(trails.elevation_loss)), 0) AS min_elevation_loss, \n COALESCE(printf(\"%.2f\", MIN(trails.duration)), 0) AS min_duration \nFROM activitypub_actors \n LEFT JOIN trails ON \n activitypub_actors.id = trails.author OR \n trails.public = 1 OR \n EXISTS (\n SELECT 1 \n FROM trail_share \n WHERE trail_share.trail = trails.id \n AND trail_share.actor = activitypub_actors.id\n ) GROUP BY activitypub_actors.id;" + }`), &collection); err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("_clone_U0cX") + + // add field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "_clone_rnMQ", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("4wbv9tz5zjdrjh1") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewQuery": "SELECT activitypub_actors.id, activitypub_actors.user, COALESCE(printf(\"%.2f\", MAX(trails.distance)), 0) AS max_distance,\n COALESCE(printf(\"%.2f\", MAX(trails.elevation_gain)), 0) AS max_elevation_gain, \n COALESCE(printf(\"%.2f\", MAX(trails.elevation_loss)), 0) AS max_elevation_loss, \n COALESCE(printf(\"%.2f\", MAX(trails.duration)), 0) AS max_duration, \n COALESCE(printf(\"%.2f\", MIN(trails.distance)), 0) AS min_distance, \n COALESCE(printf(\"%.2f\", MIN(trails.elevation_gain)), 0) AS min_elevation_gain, \n COALESCE(printf(\"%.2f\", MIN(trails.elevation_loss)), 0) AS min_elevation_loss, \n COALESCE(printf(\"%.2f\", MIN(trails.duration)), 0) AS min_duration \nFROM activitypub_actors \n LEFT JOIN trails ON \n activitypub_actors.id = trails.author OR \n trails.public = 1 OR \n EXISTS (\n SELECT 1 \n FROM trail_share \n WHERE trail_share.trail = trails.id \n AND trail_share.user = activitypub_actors.user\n ) GROUP BY activitypub_actors.id;" + }`), &collection); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "_clone_U0cX", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("_clone_rnMQ") + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749554826_updated_trails_bounding_box.go b/db/migrations/1749554826_updated_trails_bounding_box.go new file mode 100644 index 00000000..896282b6 --- /dev/null +++ b/db/migrations/1749554826_updated_trails_bounding_box.go @@ -0,0 +1,80 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("urytyc428mwlbqq") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewQuery": "SELECT \n activitypub_actors.id, activitypub_actors.user, \n COALESCE(MAX(trails.lat), 0) AS max_lat, \n COALESCE(MAX(trails.lon), 0) AS max_lon, \n COALESCE(MIN(trails.lat), 0) AS min_lat, \n COALESCE(MIN(trails.lon), 0) AS min_lon \nFROM activitypub_actors \nLEFT JOIN trails \n ON activitypub_actors.id = trails.author \n OR trails.public = TRUE \n OR EXISTS (\n SELECT 1 \n FROM trail_share \n WHERE trail_share.trail = trails.id \n AND trail_share.actor = activitypub_actors.id\n ) \nGROUP BY activitypub_actors.id;" + }`), &collection); err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("_clone_2GUq") + + // add field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "_clone_4wMO", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("urytyc428mwlbqq") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewQuery": "SELECT \n activitypub_actors.id, activitypub_actors.user, \n COALESCE(MAX(trails.lat), 0) AS max_lat, \n COALESCE(MAX(trails.lon), 0) AS max_lon, \n COALESCE(MIN(trails.lat), 0) AS min_lat, \n COALESCE(MIN(trails.lon), 0) AS min_lon \nFROM activitypub_actors \nLEFT JOIN trails \n ON activitypub_actors.id = trails.author \n OR trails.public = TRUE \n OR EXISTS (\n SELECT 1 \n FROM trail_share \n WHERE trail_share.trail = trails.id \n AND trail_share.user = activitypub_actors.id\n ) \nGROUP BY activitypub_actors.id;" + }`), &collection); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "_clone_2GUq", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": false, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("_clone_4wMO") + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749554910_updated_waypoints.go b/db/migrations/1749554910_updated_waypoints.go new file mode 100644 index 00000000..e95b42c0 --- /dev/null +++ b/db/migrations/1749554910_updated_waypoints.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("goeo2ubp103rzp9") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "author = @request.auth.id || trails_via_waypoints.author.user ?= @request.auth.id || trails_via_waypoints.public ?= true || \n(@collection.trail_share.trail.id ?= trails_via_waypoints.id && @collection.trail_share.actor.user ?= @request.auth.id)", + "viewRule": "author = @request.auth.id || trails_via_waypoints.author.user ?= @request.auth.id || trails_via_waypoints.public ?= true || \n(@collection.trail_share.trail.id ?= trails_via_waypoints.id && @collection.trail_share.actor.user ?= @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("goeo2ubp103rzp9") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "author = @request.auth.id || trails_via_waypoints.author.user ?= @request.auth.id || trails_via_waypoints.public ?= true || \n(@collection.trail_share.trail.id ?= trails_via_waypoints.id && @collection.trail_share.user ?= @request.auth.id)", + "viewRule": "author = @request.auth.id || trails_via_waypoints.author.user ?= @request.auth.id || trails_via_waypoints.public ?= true || \n(@collection.trail_share.trail.id ?= trails_via_waypoints.id && @collection.trail_share.user ?= @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749554952_updated_trails.go b/db/migrations/1749554952_updated_trails.go new file mode 100644 index 00000000..3277328c --- /dev/null +++ b/db/migrations/1749554952_updated_trails.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "author.user = @request.auth.id || public = true || (@request.auth.id != \"\" && trail_share_via_trail.actor.user ?= @request.auth.id)", + "updateRule": "author.user = @request.auth.id || (@request.auth.id != \"\" && trail_share_via_trail.trail = id && trail_share_via_trail.actor.user ?= @request.auth.id && trail_share_via_trail.permission = \"edit\") || (@request.auth.id != \"\" && author.isLocal = false)", + "viewRule": "author.user = @request.auth.id || public = true || (@request.auth.id != \"\" && trail_share_via_trail.actor.user ?= @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "author.user = @request.auth.id || public = true || (@request.auth.id != \"\" && trail_share_via_trail.user ?= @request.auth.id)", + "updateRule": "author.user = @request.auth.id || (@request.auth.id != \"\" && trail_share_via_trail.trail = id && trail_share_via_trail.user ?= @request.auth.id && trail_share_via_trail.permission = \"edit\") || (@request.auth.id != \"\" && author.isLocal = false)", + "viewRule": "author.user = @request.auth.id || public = true || (@request.auth.id != \"\" && trail_share_via_trail.user ?= @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749555128_updated_summit_logs.go b/db/migrations/1749555128_updated_summit_logs.go new file mode 100644 index 00000000..524d7b91 --- /dev/null +++ b/db/migrations/1749555128_updated_summit_logs.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "(@request.auth.id != \"\" && (author.user = @request.auth.id || trail.author.user = @request.auth.id)) || trail.public = true || (@collection.trail_share.trail ?= trail && @collection.trail_share.actor.user ?= @request.auth.id)", + "viewRule": "(@request.auth.id != \"\" && (author.user = @request.auth.id || trail.author.user = @request.auth.id)) || trail.public = true || (@collection.trail_share.trail ?= trail && @collection.trail_share.actor.user ?= @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "(@request.auth.id != \"\" && (author.user = @request.auth.id || trail.author.user = @request.auth.id)) || trail.public = true || (@collection.trail_share.trail ?= trail && @collection.trail_share.trail ?= @request.auth.id)", + "viewRule": "(@request.auth.id != \"\" && (author.user = @request.auth.id || trail.author.user = @request.auth.id)) || trail.public = true || (@collection.trail_share.trail ?= trail && @collection.trail_share.trail ?= @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749555173_updated_comments.go b/db/migrations/1749555173_updated_comments.go new file mode 100644 index 00000000..4fef929e --- /dev/null +++ b/db/migrations/1749555173_updated_comments.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("lf06qip3f4d11yk") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "@request.auth.id != \"\" && (trail.author.user = @request.auth.id || trail.public = true || trail.trail_share_via_trail.actor.user ?= @request.auth.id)", + "listRule": "((@request.auth.id != \"\" && trail.author.user = @request.auth.id) || trail.public = true) || author = @request.auth.id || trail.trail_share_via_trail.actor.user ?= @request.auth.id", + "viewRule": "((@request.auth.id != \"\" && trail.author.user = @request.auth.id) || trail.public = true) || author = @request.auth.id || trail.trail_share_via_trail.actor.user ?= @request.auth.id" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("lf06qip3f4d11yk") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "@request.auth.id != \"\" && (trail.author.user = @request.auth.id || trail.public = true || trail.trail_share_via_trail.user ?= @request.auth.id)", + "listRule": "((@request.auth.id != \"\" && trail.author.user = @request.auth.id) || trail.public = true) || author = @request.auth.id || trail.trail_share_via_trail.user ?= @request.auth.id", + "viewRule": "((@request.auth.id != \"\" && trail.author.user = @request.auth.id) || trail.public = true) || author = @request.auth.id || trail.trail_share_via_trail.user ?= @request.auth.id" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749555613_updated_trail_share.go b/db/migrations/1749555613_updated_trail_share.go new file mode 100644 index 00000000..c018895c --- /dev/null +++ b/db/migrations/1749555613_updated_trail_share.go @@ -0,0 +1,62 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("1mns8mlal6uf9ku") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "trail.author.user = @request.auth.id || actor.user = @request.auth.id", + "viewRule": "trail.author.user = @request.auth.id || actor.user = @request.auth.id" + }`), &collection); err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("yyzimwee") + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("1mns8mlal6uf9ku") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "trail.author.user = @request.auth.id || user = @request.auth.id", + "viewRule": "trail.author.user = @request.auth.id || user = @request.auth.id" + }`), &collection); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(3, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "yyzimwee", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749555614_migrate_ms_token.go b/db/migrations/1749555614_migrate_ms_token.go new file mode 100644 index 00000000..c1302804 --- /dev/null +++ b/db/migrations/1749555614_migrate_ms_token.go @@ -0,0 +1,55 @@ +package migrations + +import ( + "os" + "pocketbase/util" + + "github.com/meilisearch/meilisearch-go" + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + client := meilisearch.New(os.Getenv("MEILI_URL"), meilisearch.WithAPIKey(os.Getenv("MEILI_MASTER_KEY"))) + + m.Register(func(app core.App) error { + + users, err := app.FindAllRecords("users") + if err != nil { + return err + } + for _, u := range users { + userId := u.Id + + actor, err := app.FindFirstRecordByData("activitypub_actors", "user", userId) + if err != nil { + return err + } + + searchRules := map[string]interface{}{ + "lists": map[string]string{ + "filter": "public = true OR author = " + actor.Id + " OR shares = " + actor.Id, + }, + "trails": map[string]string{ + "filter": "public = true OR author = " + actor.Id + " OR shares = " + actor.Id, + }, + } + + token, err := util.GenerateMeilisearchToken(searchRules, client) + if err != nil { + return err + } + u.Set("token", token) + if err := app.Save(u); err != nil { + return err + } + + } + + return nil + }, func(app core.App) error { + // add down queries... + + return nil + }) +} diff --git a/db/migrations/1749566277_updated_list_share.go b/db/migrations/1749566277_updated_list_share.go new file mode 100644 index 00000000..cd8eda29 --- /dev/null +++ b/db/migrations/1749566277_updated_list_share.go @@ -0,0 +1,62 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("1kot7t9na3hi0gl") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "list.author = @request.auth.id || actor.user = @request.auth.id", + "viewRule": "list.author = @request.auth.id || actor.user = @request.auth.id" + }`), &collection); err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(3, []byte(`{ + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation1148540665", + "maxSelect": 1, + "minSelect": 0, + "name": "actor", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("1kot7t9na3hi0gl") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "list.author = @request.auth.id || user = @request.auth.id", + "viewRule": "list.author = @request.auth.id || user = @request.auth.id" + }`), &collection); err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("relation1148540665") + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749566278_migrate_list_share.go b/db/migrations/1749566278_migrate_list_share.go new file mode 100644 index 00000000..bebf0a55 --- /dev/null +++ b/db/migrations/1749566278_migrate_list_share.go @@ -0,0 +1,31 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + shares, err := app.FindAllRecords("list_share") + if err != nil { + return err + } + + for _, s := range shares { + actor, err := app.FindFirstRecordByData("activitypub_actors", "user", s.GetString("user")) + if err != nil { + continue + } + s.Set("actor", actor.Id) + err = app.Save(s) + if err != nil { + return err + } + } + + return nil + }, func(app core.App) error { + return nil + }) +} diff --git a/db/migrations/1749566445_updated_lists.go b/db/migrations/1749566445_updated_lists.go new file mode 100644 index 00000000..40240335 --- /dev/null +++ b/db/migrations/1749566445_updated_lists.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "author.user = @request.auth.id || public = true || (@request.auth.id != \"\" && list_share_via_list.actor.user ?= @request.auth.id)", + "updateRule": "author.user = @request.auth.id || (@request.auth.id != \"\" && list_share_via_list.list = id && list_share_via_list.actor.user ?= @request.auth.id && list_share_via_list.permission = \"edit\") || (@request.auth.id != \"\" && author.isLocal = false)", + "viewRule": "author.user = @request.auth.id || public = true || (@request.auth.id != \"\" && list_share_via_list.actor.user ?= @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "author.user = @request.auth.id || public = true || (@request.auth.id != \"\" && list_share_via_list.user ?= @request.auth.id)", + "updateRule": "author.user = @request.auth.id || (@request.auth.id != \"\" && list_share_via_list.list = id && list_share_via_list.user ?= @request.auth.id && list_share_via_list.permission = \"edit\") || (@request.auth.id != \"\" && author.isLocal = false)", + "viewRule": "author.user = @request.auth.id || public = true || (@request.auth.id != \"\" && list_share_via_list.user ?= @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749566456_updated_list_share.go b/db/migrations/1749566456_updated_list_share.go new file mode 100644 index 00000000..78054c9f --- /dev/null +++ b/db/migrations/1749566456_updated_list_share.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("1kot7t9na3hi0gl") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("mix12kkh") + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("1kot7t9na3hi0gl") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(2, []byte(`{ + "cascadeDelete": true, + "collectionId": "_pb_users_auth_", + "hidden": false, + "id": "mix12kkh", + "maxSelect": 1, + "minSelect": 0, + "name": "user", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749566852_updated_list_share.go b/db/migrations/1749566852_updated_list_share.go new file mode 100644 index 00000000..4b68a093 --- /dev/null +++ b/db/migrations/1749566852_updated_list_share.go @@ -0,0 +1,48 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("1kot7t9na3hi0gl") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "list.author.user = @request.auth.id", + "deleteRule": "list.author.user = @request.auth.id", + "listRule": "list.author.user = @request.auth.id || actor.user = @request.auth.id", + "updateRule": "list.author.user = @request.auth.id", + "viewRule": "list.author.user = @request.auth.id || actor.user = @request.auth.id" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("1kot7t9na3hi0gl") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "list.author = @request.auth.id", + "deleteRule": "list.author = @request.auth.id", + "listRule": "list.author = @request.auth.id || actor.user = @request.auth.id", + "updateRule": "list.author = @request.auth.id", + "viewRule": "list.author = @request.auth.id || actor.user = @request.auth.id" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749650389_updated_summit_logs.go b/db/migrations/1749650389_updated_summit_logs.go new file mode 100644 index 00000000..eea37016 --- /dev/null +++ b/db/migrations/1749650389_updated_summit_logs.go @@ -0,0 +1,40 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "@request.auth.id != \"\" && (trail.author.user = @request.auth.id || trail.public = true || trail.trail_share_via_trail.actor.user ?= @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "@request.auth.id != \"\" && (trail.author.user = @request.auth.id || trail.public = true)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749650422_updated_summit_logs.go b/db/migrations/1749650422_updated_summit_logs.go new file mode 100644 index 00000000..5f0b3176 --- /dev/null +++ b/db/migrations/1749650422_updated_summit_logs.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "(@request.auth.id != \"\" && (author.user = @request.auth.id || trail.author.user = @request.auth.id)) || trail.public = true || trail.trail_share_via_trail.actor.user ?= @request.auth.id", + "viewRule": "(@request.auth.id != \"\" && (author.user = @request.auth.id || trail.author.user = @request.auth.id)) || trail.public = true || trail.trail_share_via_trail.actor.user ?= @request.auth.id" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "(@request.auth.id != \"\" && (author.user = @request.auth.id || trail.author.user = @request.auth.id)) || trail.public = true || (@collection.trail_share.trail ?= trail && @collection.trail_share.actor.user ?= @request.auth.id)", + "viewRule": "(@request.auth.id != \"\" && (author.user = @request.auth.id || trail.author.user = @request.auth.id)) || trail.public = true || (@collection.trail_share.trail ?= trail && @collection.trail_share.actor.user ?= @request.auth.id)" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749717023_created_trail_like.go b/db/migrations/1749717023_created_trail_like.go new file mode 100644 index 00000000..5570a60a --- /dev/null +++ b/db/migrations/1749717023_created_trail_like.go @@ -0,0 +1,103 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + jsonData := `{ + "createRule": null, + "deleteRule": null, + "fields": [ + { + "autogeneratePattern": "[a-z0-9]{15}", + "hidden": false, + "id": "text3208210256", + "max": 15, + "min": 15, + "name": "id", + "pattern": "^[a-z0-9]+$", + "presentable": false, + "primaryKey": true, + "required": true, + "system": true, + "type": "text" + }, + { + "cascadeDelete": true, + "collectionId": "e864strfxo14pm4", + "hidden": false, + "id": "relation2993194383", + "maxSelect": 1, + "minSelect": 0, + "name": "trail", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }, + { + "cascadeDelete": true, + "collectionId": "pbc_1295301207", + "hidden": false, + "id": "relation1148540665", + "maxSelect": 1, + "minSelect": 0, + "name": "actor", + "presentable": false, + "required": true, + "system": false, + "type": "relation" + }, + { + "hidden": false, + "id": "autodate2990389176", + "name": "created", + "onCreate": true, + "onUpdate": false, + "presentable": false, + "system": false, + "type": "autodate" + }, + { + "hidden": false, + "id": "autodate3332085495", + "name": "updated", + "onCreate": true, + "onUpdate": true, + "presentable": false, + "system": false, + "type": "autodate" + } + ], + "id": "pbc_1995454416", + "indexes": [ + "CREATE UNIQUE INDEX ` + "`" + `idx_ywIkmeaSFo` + "`" + ` ON ` + "`" + `trail_like` + "`" + ` (\n ` + "`" + `trail` + "`" + `,\n ` + "`" + `actor` + "`" + `\n)" + ], + "listRule": null, + "name": "trail_like", + "system": false, + "type": "base", + "updateRule": null, + "viewRule": null + }` + + collection := &core.Collection{} + if err := json.Unmarshal([]byte(jsonData), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_1995454416") + if err != nil { + return err + } + + return app.Delete(collection) + }) +} diff --git a/db/migrations/1749717428_updated_trail_like.go b/db/migrations/1749717428_updated_trail_like.go new file mode 100644 index 00000000..3bcc1445 --- /dev/null +++ b/db/migrations/1749717428_updated_trail_like.go @@ -0,0 +1,46 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_1995454416") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": "trail.author.user = @request.auth.id || trail.public = true || trail.trail_share_via_trail.actor.user ?= @request.auth.id || actor.user = @request.auth.id", + "deleteRule": "actor.user = @request.auth.id", + "listRule": "trail.author.user = @request.auth.id || trail.public = true || trail.trail_share_via_trail.actor.user ?= @request.auth.id || actor.user = @request.auth.id", + "viewRule": "trail.author.user = @request.auth.id || trail.public = true || trail.trail_share_via_trail.actor.user ?= @request.auth.id || actor.user = @request.auth.id" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_1995454416") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "createRule": null, + "deleteRule": null, + "listRule": null, + "viewRule": null + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749831369_update_sortable_attributes.go b/db/migrations/1749831369_update_sortable_attributes.go new file mode 100644 index 00000000..5c058496 --- /dev/null +++ b/db/migrations/1749831369_update_sortable_attributes.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "os" + + "github.com/meilisearch/meilisearch-go" + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + client := meilisearch.New(os.Getenv("MEILI_URL"), meilisearch.WithAPIKey(os.Getenv("MEILI_MASTER_KEY"))) + + m.Register(func(app core.App) error { + + _, err := client.Index("trails").UpdateSortableAttributes(&[]string{ + "created", "date", "difficulty", "distance", "elevation_gain", "elevation_loss", "name", "duration", "author", "like_count", + }) + if err != nil { + return err + } + + _, err = client.Index("trails").UpdateFilterableAttributes(&[]string{ + "_geo", "author", "category", "completed", "date", "difficulty", "distance", "elevation_gain", "elevation_loss", "public", "shares", "tags", "likes", + }) + + return err + }, func(app core.App) error { + _, err := client.Index("trails").UpdateSortableAttributes(&[]string{ + "created", "date", "difficulty", "distance", "elevation_gain", "elevation_loss", "name", "duration", "author", + }) + if err != nil { + return err + } + + _, err = client.Index("trails").UpdateFilterableAttributes(&[]string{ + "_geo", "author", "category", "completed", "date", "difficulty", "distance", "elevation_gain", "elevation_loss", "public", "shares", "tags", + }) + + return err + }) +} diff --git a/db/migrations/1749836174_updated_notifications.go b/db/migrations/1749836174_updated_notifications.go new file mode 100644 index 00000000..cafee94c --- /dev/null +++ b/db/migrations/1749836174_updated_notifications.go @@ -0,0 +1,67 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("khrcci2uqknny8h") + if err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "hidden": false, + "id": "b57prsbu", + "maxSelect": 1, + "name": "type", + "presentable": false, + "required": true, + "system": false, + "type": "select", + "values": [ + "new_follower", + "trail_comment", + "trail_share", + "list_share", + "summit_log_create", + "trail_like" + ] + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("khrcci2uqknny8h") + if err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "hidden": false, + "id": "b57prsbu", + "maxSelect": 1, + "name": "type", + "presentable": false, + "required": true, + "system": false, + "type": "select", + "values": [ + "new_follower", + "trail_comment", + "trail_share", + "list_share", + "summit_log_create" + ] + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749837201_updated_trails.go b/db/migrations/1749837201_updated_trails.go new file mode 100644 index 00000000..c5ae163b --- /dev/null +++ b/db/migrations/1749837201_updated_trails.go @@ -0,0 +1,43 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // add field + if err := collection.Fields.AddMarshaledJSONAt(23, []byte(`{ + "hidden": false, + "id": "number851275141", + "max": null, + "min": 0, + "name": "like_count", + "onlyInt": true, + "presentable": false, + "required": false, + "system": false, + "type": "number" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // remove field + collection.Fields.RemoveById("number851275141") + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749837751_updated_trail_like.go b/db/migrations/1749837751_updated_trail_like.go new file mode 100644 index 00000000..48c9cf30 --- /dev/null +++ b/db/migrations/1749837751_updated_trail_like.go @@ -0,0 +1,40 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_1995454416") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewRule": "actor.user = @request.auth.id" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_1995454416") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "viewRule": "trail.author.user = @request.auth.id || trail.public = true || trail.trail_share_via_trail.actor.user ?= @request.auth.id || actor.user = @request.auth.id" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749894936_updated_trails.go b/db/migrations/1749894936_updated_trails.go new file mode 100644 index 00000000..e722a12d --- /dev/null +++ b/db/migrations/1749894936_updated_trails.go @@ -0,0 +1,82 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(11, []byte(`{ + "hidden": false, + "id": "aqbpyawe", + "maxSelect": 99, + "maxSize": 20971520, + "mimeTypes": [ + "image/jpeg", + "image/vnd.mozilla.apng", + "image/png", + "image/webp", + "image/svg+xml", + "image/heic", + "video/mp4", + "video/webm", + "video/ogg" + ], + "name": "photos", + "presentable": false, + "protected": false, + "required": false, + "system": false, + "thumbs": [ + "600x0" + ], + "type": "file" + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(11, []byte(`{ + "hidden": false, + "id": "aqbpyawe", + "maxSelect": 99, + "maxSize": 20971520, + "mimeTypes": [ + "image/jpeg", + "image/vnd.mozilla.apng", + "image/png", + "image/webp", + "image/svg+xml", + "image/heic", + "video/mp4", + "video/webm", + "video/ogg" + ], + "name": "photos", + "presentable": false, + "protected": false, + "required": false, + "system": false, + "thumbs": [], + "type": "file" + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1749902683_updated_activitypub_actors.go b/db/migrations/1749902683_updated_activitypub_actors.go new file mode 100644 index 00000000..45d30584 --- /dev/null +++ b/db/migrations/1749902683_updated_activitypub_actors.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_1295301207") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "user.settings_via_user.privacy.account != 'private' || user = @request.auth.id", + "viewRule": "user.settings_via_user.privacy.account != 'private' || user = @request.auth.id" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("pbc_1295301207") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "listRule": "", + "viewRule": "" + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1750259236_updated_comments.go b/db/migrations/1750259236_updated_comments.go new file mode 100644 index 00000000..3ee9344d --- /dev/null +++ b/db/migrations/1750259236_updated_comments.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("lf06qip3f4d11yk") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE UNIQUE INDEX ` + "`" + `idx_4T3m08OsP1` + "`" + ` ON ` + "`" + `comments` + "`" + ` (` + "`" + `iri` + "`" + `) WHERE iri IS NOT NULL AND iri != \"\";" + ] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("lf06qip3f4d11yk") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1750259275_updated_lists.go b/db/migrations/1750259275_updated_lists.go new file mode 100644 index 00000000..fc8c91e7 --- /dev/null +++ b/db/migrations/1750259275_updated_lists.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE UNIQUE INDEX ` + "`" + `idx_hLtEU5XGWL` + "`" + ` ON ` + "`" + `lists` + "`" + ` (` + "`" + `iri` + "`" + `) WHERE iri IS NOT NULL AND iri != \"\";" + ] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("r6gu2ajyidy1x69") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE INDEX ` + "`" + `idx_hLtEU5XGWL` + "`" + ` ON ` + "`" + `lists` + "`" + ` (` + "`" + `iri` + "`" + `)" + ] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1750259298_updated_summit_logs.go b/db/migrations/1750259298_updated_summit_logs.go new file mode 100644 index 00000000..fad24c45 --- /dev/null +++ b/db/migrations/1750259298_updated_summit_logs.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE UNIQUE INDEX ` + "`" + `idx_iSbmEqYXbV` + "`" + ` ON ` + "`" + `summit_logs` + "`" + ` (` + "`" + `iri` + "`" + `) WHERE iri IS NOT NULL AND iri != \"\";" + ] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("dd2l9a4vxpy2ni8") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1750259324_updated_trails.go b/db/migrations/1750259324_updated_trails.go new file mode 100644 index 00000000..82d59695 --- /dev/null +++ b/db/migrations/1750259324_updated_trails.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE UNIQUE INDEX ` + "`" + `idx_6tD5RqfVk2` + "`" + ` ON ` + "`" + `trails` + "`" + ` (` + "`" + `iri` + "`" + `) WHERE iri IS NOT NULL AND iri != \"\";" + ] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("e864strfxo14pm4") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "indexes": [ + "CREATE INDEX ` + "`" + `idx_6tD5RqfVk2` + "`" + ` ON ` + "`" + `trails` + "`" + ` (` + "`" + `iri` + "`" + `)" + ] + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1750264310_updated_notifications.go b/db/migrations/1750264310_updated_notifications.go new file mode 100644 index 00000000..247c5389 --- /dev/null +++ b/db/migrations/1750264310_updated_notifications.go @@ -0,0 +1,70 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("khrcci2uqknny8h") + if err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "hidden": false, + "id": "b57prsbu", + "maxSelect": 1, + "name": "type", + "presentable": false, + "required": true, + "system": false, + "type": "select", + "values": [ + "new_follower", + "trail_comment", + "trail_share", + "list_share", + "summit_log_create", + "trail_like", + "comment_mention", + "trail_mention" + ] + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("khrcci2uqknny8h") + if err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "hidden": false, + "id": "b57prsbu", + "maxSelect": 1, + "name": "type", + "presentable": false, + "required": true, + "system": false, + "type": "select", + "values": [ + "new_follower", + "trail_comment", + "trail_share", + "list_share", + "summit_log_create", + "trail_like" + ] + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/migrations/1750267445_updated_notifications.go b/db/migrations/1750267445_updated_notifications.go new file mode 100644 index 00000000..ea2d6f74 --- /dev/null +++ b/db/migrations/1750267445_updated_notifications.go @@ -0,0 +1,73 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("khrcci2uqknny8h") + if err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "hidden": false, + "id": "b57prsbu", + "maxSelect": 1, + "name": "type", + "presentable": false, + "required": true, + "system": false, + "type": "select", + "values": [ + "new_follower", + "trail_comment", + "trail_share", + "list_share", + "summit_log_create", + "trail_like", + "comment_mention", + "trail_mention", + "summit_log_mention" + ] + }`)); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("khrcci2uqknny8h") + if err != nil { + return err + } + + // update field + if err := collection.Fields.AddMarshaledJSONAt(1, []byte(`{ + "hidden": false, + "id": "b57prsbu", + "maxSelect": 1, + "name": "type", + "presentable": false, + "required": true, + "system": false, + "type": "select", + "values": [ + "new_follower", + "trail_comment", + "trail_share", + "list_share", + "summit_log_create", + "trail_like", + "comment_mention", + "trail_mention" + ] + }`)); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/db/util/activitypub.go b/db/util/activitypub.go new file mode 100644 index 00000000..ba424e2a --- /dev/null +++ b/db/util/activitypub.go @@ -0,0 +1,595 @@ +package util + +import ( + "context" + "crypto/rand" + "crypto/rsa" + "crypto/x509" + "database/sql" + "encoding/json" + "encoding/pem" + "fmt" + "io" + "net/http" + "net/url" + "os" + "strconv" + "strings" + "time" + + pub "github.com/go-ap/activitypub" + "github.com/pocketbase/pocketbase/core" + "github.com/pocketbase/pocketbase/tools/filesystem" + "github.com/pocketbase/pocketbase/tools/security" +) + +func ActorFromUser(app core.App, u *core.Record) (*core.Record, error) { + encryptionKey := os.Getenv("POCKETBASE_ENCRYPTION_KEY") + if len(encryptionKey) == 0 { + return nil, fmt.Errorf("POCKETBASE_ENCRYPTION_KEY not set") + } + + collection, err := app.FindCollectionByNameOrId("activitypub_actors") + if err != nil { + return nil, err + } + priv, pub, err := generateKeyPair() + if err != nil { + return nil, err + } + privBytes := x509.MarshalPKCS1PrivateKey(priv) + + privEncrypted, err := security.Encrypt(privBytes, encryptionKey) + if err != nil { + return nil, err + } + + pubBytes, err := x509.MarshalPKIXPublicKey(pub) + if err != nil { + return nil, err + } + pubPem := pem.EncodeToMemory(&pem.Block{ + Type: "PUBLIC KEY", + Bytes: pubBytes, + }) + + settings, err := app.FindFirstRecordByData("settings", "user", u.Id) + if err != nil { + return nil, err + } + + record := core.NewRecord(collection) + + origin := os.Getenv("ORIGIN") + if origin == "" { + return nil, fmt.Errorf("ORIGIN environment variable not set") + } + id := fmt.Sprintf("%s/api/v1/activitypub/user/%s", origin, strings.ToLower(u.GetString("username"))) + + url, err := url.Parse(origin) + if err != nil { + return nil, err + } + domain := strings.TrimPrefix(url.Hostname(), "www.") + + record.Set("username", strings.ToLower(u.GetString("username"))) + record.Set("preferred_username", u.GetString("username")) + record.Set("domain", domain) + record.Set("summary", settings.GetString("bio")) + record.Set("published", u.GetDateTime("created")) + record.Set("iri", id) + if u.GetString("avatar") != "" { + record.Set("icon", fmt.Sprintf("%s/api/v1/files/users/%s/%s", origin, u.Id, u.GetString("avatar"))) + } + record.Set("inbox", id+"/inbox") + record.Set("outbox", id+"/outbox") + record.Set("followers", id+"/followers") + record.Set("following", id+"/following") + record.Set("isLocal", true) + record.Set("public_key", string(pubPem)) + record.Set("private_key", privEncrypted) + record.Set("user", u.Id) + record.Set("last_fetched", time.Now()) + + err = app.Save(record) + if err != nil { + return nil, err + } + + return record, nil +} + +func generateKeyPair() (*rsa.PrivateKey, *rsa.PublicKey, error) { + priv, err := rsa.GenerateKey(rand.Reader, 2048) + if err != nil { + return nil, nil, err + } + + pub := &priv.PublicKey + return priv, pub, nil +} + +func SyncOutbox(app core.App, actor *core.Record) error { + return fetchOutboxPage(app, actor, actor.GetString("outbox")+"?page=1") +} + +func fetchOutboxPage(app core.App, actor *core.Record, pageURL string) error { + client := &http.Client{} + + req, err := http.NewRequest(http.MethodGet, pageURL, nil) + if err != nil { + return err + } + req.Header.Add("Accept", `application/ld+json; profile="https://www.w3.org/ns/activitystreams"`) + + resp, err := client.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return err + } + + var page pub.OrderedCollectionPage + err = json.Unmarshal(body, &page) + if err != nil { + return err + } + + for _, item := range page.OrderedItems { + activity, err := pub.ToActivity(item) + if err != nil { + return err + } + if activity.Type != pub.CreateType { + continue + } + } + + if page.Next != nil { + return fetchOutboxPage(app, actor, page.Next.GetID().String()) + } + + return nil +} + +func TrailFromActivity(activity pub.Activity, app core.App, actor *core.Record) (*core.Record, error) { + t, err := pub.ToObject(activity.Object) + if err != nil { + return nil, err + } + + record, err := app.FindFirstRecordByData("trails", "iri", t.ID.String()) + if err != nil { + if err == sql.ErrNoRows { + collection, err := app.FindCollectionByNameOrId("trails") + if err != nil { + return nil, err + } + + record = core.NewRecord(collection) + record.Set("id", security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet)) + + } else { + return nil, err + } + } + + var distance, duration, elevation_gain, elevation_loss float64 + var diffculty, category string + trailTags := []string{} + tags, err := pub.ToItemCollection(t.Tag) + if err != nil { + return nil, err + } + + for _, tag := range tags.Collection() { + tagObj, err := pub.ToObject(tag) + if err != nil { + continue + } + content := tagObj.Content.First().Value.String() + switch tagObj.Name.First().Value.String() { + case "category": + category = content + case "difficulty": + diffculty = content + case "elevation_gain": + elevation_gain, err = strconv.ParseFloat(content[:len(content)-1], 64) + case "elevation_loss": + elevation_loss, err = strconv.ParseFloat(content[:len(content)-1], 64) + case "duration": + duration, err = strconv.ParseFloat(content[:len(content)-1], 64) + case "distance": + distance, err = strconv.ParseFloat(content[:len(content)-1], 64) + case "tag": + existingTag, err := app.FindFirstRecordByData("tags", "name", content) + if err != nil { + if err == sql.ErrNoRows { + collection, err := app.FindCollectionByNameOrId("tags") + if err != nil { + continue + } + existingTag = core.NewRecord(collection) + existingTag.Set("name", content) + err = app.Save(existingTag) + if err != nil { + continue + } + } else { + continue + } + } + + trailTags = append(trailTags, existingTag.Id) + } + if err != nil { + continue + } + } + + record.Set("name", t.Name.First().Value) + record.Set("description", t.Content.First().Value) + record.Set("location", t.Location.(*pub.Place).Name.First().Value) + record.Set("lat", t.Location.(*pub.Place).Latitude) + record.Set("lon", t.Location.(*pub.Place).Longitude) + record.Set("distance", distance) + record.Set("elevation_gain", elevation_gain) + record.Set("elevation_loss", elevation_loss) + record.Set("duration", duration) + record.Set("difficulty", diffculty) + record.Set("date", t.StartTime.Unix()) + record.Set("tags", trailTags) + record.Set("public", true) + record.Set("iri", t.ID.String()) + record.Set("author", actor.Id) + + categoryRecord, err := app.FindFirstRecordByData("categories", "name", category) + if err == nil { + record.Set("category", categoryRecord.Id) + } + + if t.Attachment != nil { + + attachments, err := pub.ToItemCollection(t.Attachment) + if err != nil { + return nil, err + } + + photoURLs := []string{} + gpxURL := "" + for _, a := range attachments.Collection() { + attachment, err := pub.ToObject(a) + if err != nil { + continue + } + if attachment.Type == pub.DocumentType && attachment.MediaType == "application/xml+gpx" { + gpxURL = attachment.URL.GetLink().String() + } else if attachment.Type == pub.ImageType { + photoURLs = append(photoURLs, attachment.URL.GetLink().String()) + } + } + + if len(photoURLs) > 0 { + photos := make([]*filesystem.File, len(photoURLs)) + for i, purl := range photoURLs { + photo, err := filesystem.NewFileFromURL(context.Background(), purl) + if err != nil { + continue + } + photos[i] = photo + } + + record.Set("photos", photos) + } + + if gpxURL != "" { + gpx, err := filesystem.NewFileFromURL(context.Background(), gpxURL) + if err != nil { + return nil, err + } + + record.Set("gpx", gpx) + } + } + + return record, app.Save(record) +} + +func ObjectFromTrail(app core.App, trail *core.Record, mentions *pub.ItemCollection) (*pub.Object, error) { + origin := os.Getenv("ORIGIN") + if origin == "" { + return nil, fmt.Errorf("ORIGIN not set") + } + + trailAuthor, err := app.FindRecordById("activitypub_actors", trail.GetString("author")) + if err != nil { + return nil, err + } + errs := app.ExpandRecord(trail, []string{"tags"}, nil) + if len(errs) > 0 { + return nil, fmt.Errorf("failed to expand tags: %v", errs) + } + errs = app.ExpandRecord(trail, []string{"category"}, nil) + if len(errs) > 0 { + return nil, fmt.Errorf("failed to expand category: %v", errs) + } + + category := "" + categoryRecord := trail.ExpandedOne("category") + if categoryRecord != nil { + category = categoryRecord.GetString("name") + } + + tagRecords := trail.ExpandedAll("tags") + + tags := pub.ItemCollection{ + pub.Object{ + Type: pub.NoteType, + Name: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, "category")), + Content: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, category)), + }, + pub.Object{ + Type: pub.NoteType, + Name: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, "difficulty")), + Content: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, trail.GetString("difficulty"))), + }, + pub.Object{ + Type: pub.NoteType, + Name: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, "elevation_gain")), + Content: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, fmt.Sprintf("%fm", trail.GetFloat("elevation_gain")))), + }, + pub.Object{ + Type: pub.NoteType, + Name: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, "elevation_loss")), + Content: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, fmt.Sprintf("%fm", trail.GetFloat("elevation_loss")))), + }, + pub.Object{ + Type: pub.NoteType, + Name: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, "distance")), + Content: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, fmt.Sprintf("%fm", trail.GetFloat("distance")))), + }, + pub.Object{ + Type: pub.NoteType, + Name: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, "duration")), + Content: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, fmt.Sprintf("%fm", trail.GetFloat("duration")))), + }, + } + + if mentions != nil { + for _, m := range *mentions { + tags.Append(m) + } + } + + for _, v := range tagRecords { + hashtag := pub.ObjectNew(pub.NoteType) + hashtag.Name = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, "tag")) + hashtag.Content = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, v.GetString("name"))) + + tags.Append(hashtag) + } + + photos := trail.GetStringSlice("photos") + + gpx := "" + if trail.GetString("gpx") != "" { + gpx = fmt.Sprintf("%s/api/v1/files/trails/%s/%s", origin, trail.Id, trail.GetString("gpx")) + } + + attachments := make(pub.ItemCollection, max(len(photos), 2)) + for i := range min(len(photos), 3) { + iri := fmt.Sprintf("%s/api/v1/files/trails/%s/%s", origin, trail.Id, photos[i]) + + attachments[i] = pub.Image{ + Type: pub.ImageType, + MediaType: "image/jpeg", + URL: pub.IRI(iri), + } + } + if gpx != "" { + attachments.Append(pub.Document{ + Type: pub.DocumentType, + MediaType: "application/xml+gpx", + URL: pub.IRI(gpx), + }) + } + + activityURL := fmt.Sprintf("%s/trail/view/@%s/%s", origin, trailAuthor.GetString("username"), trail.Id) + activityContent := fmt.Sprintf("

%s

%s

%s

", trail.GetString("name"), trail.GetString("description"), activityURL, activityURL) + + trailObject := pub.ObjectNew(pub.NoteType) + + trailObject.Name = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, trail.GetString("name"))) + trailObject.Content = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, activityContent)) + trailObject.Location = pub.Place{ + Type: pub.PlaceType, + Name: pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, trail.GetString("location"))), + Latitude: trail.GetFloat("lat"), + Longitude: trail.GetFloat("lon"), + } + trailObject.AttributedTo = pub.IRI(trailAuthor.GetString("iri")) + trailObject.Published = trail.GetDateTime("created").Time() + trailObject.ID = pub.IRI(fmt.Sprintf("%s/api/v1/trail/%s", origin, trail.Id)) + trailObject.URL = pub.IRI(activityURL) + + trailObject.StartTime = trail.GetDateTime("date").Time() + trailObject.Attachment = attachments + + trailObject.Tag = tags + return trailObject, nil +} + +func ListFromActivity(activity pub.Activity, app core.App, actor *core.Record) (*core.Record, error) { + l, err := pub.ToObject(activity.Object) + if err != nil { + return nil, err + } + + record, err := app.FindFirstRecordByData("lists", "iri", l.ID.String()) + if err != nil { + if err == sql.ErrNoRows { + collection, err := app.FindCollectionByNameOrId("lists") + if err != nil { + return nil, err + } + + record = core.NewRecord(collection) + record.Set("id", security.RandomStringWithAlphabet(core.DefaultIdLength, core.DefaultIdAlphabet)) + } else { + return nil, err + } + } + + record.Set("name", l.Name.First().Value) + record.Set("description", l.Content.First().Value) + record.Set("public", true) + record.Set("iri", l.ID.String()) + record.Set("author", actor.Id) + + if l.Attachment != nil { + + avatarURL := "" + attachments, err := pub.ToItemCollection(l.Attachment) + if err != nil { + return nil, err + } + + for _, a := range attachments.Collection() { + attachment, err := pub.ToObject(a) + if err != nil { + continue + } + if attachment.Type == pub.ImageType { + avatarURL = attachment.URL.GetLink().String() + } + } + + if avatarURL != "" { + avatar, err := filesystem.NewFileFromURL(context.Background(), avatarURL) + + if err != nil { + return nil, err + } + + record.Set("avatar", avatar) + } + } + + err = app.Save(record) + + return record, err +} + +func ObjectFromList(app core.App, list *core.Record) (*pub.Object, error) { + origin := os.Getenv("ORIGIN") + if origin == "" { + return nil, fmt.Errorf("ORIGIN not set") + } + + listAuthor, err := app.FindRecordById("activitypub_actors", list.GetString("author")) + if err != nil { + return nil, err + } + avatar := "" + if list.GetString("avatar") != "" { + avatar = fmt.Sprintf("%s/api/v1/files/lists/%s/%s", origin, list.Id, list.GetString("avatar")) + } + + attachments := make(pub.ItemCollection, 2) + if avatar != "" { + attachments[0] = pub.Image{ + Type: pub.ImageType, + MediaType: "image/jpeg", + URL: pub.IRI(avatar), + } + } + + activityURL := fmt.Sprintf("%s/lists/@%s/%s", origin, listAuthor.GetString("username"), list.Id) + activityContent := fmt.Sprintf("%s

%s

", list.GetString("description"), activityURL, activityURL) + + listObject := pub.ObjectNew(pub.NoteType) + listObject.Name = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, list.GetString("name"))) + listObject.Content = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, activityContent)) + + listObject.AttributedTo = pub.IRI(listAuthor.GetString("iri")) + listObject.Published = list.GetDateTime("created").Time() + listObject.ID = pub.IRI(fmt.Sprintf("%s/api/v1/list/%s", origin, list.Id)) + listObject.URL = pub.IRI(activityURL) + listObject.Attachment = attachments + return listObject, nil +} + +func ObjectFromComment(app core.App, comment *core.Record, mentions *pub.ItemCollection) (*pub.Object, error) { + origin := os.Getenv("ORIGIN") + if origin == "" { + return nil, fmt.Errorf("ORIGIN not set") + } + + commentAuthor, err := app.FindRecordById("activitypub_actors", comment.GetString("author")) + if err != nil { + return nil, err + } + + commentTrail, err := app.FindRecordById("trails", comment.GetString("trail")) + if err != nil { + return nil, err + } + commentTrailAuthor, err := app.FindRecordById("activitypub_actors", commentTrail.GetString("author")) + if err != nil { + return nil, err + } + + trailURL := "" + if commentTrailAuthor.GetBool("isLocal") { + trailURL = fmt.Sprintf("https://%s/api/v1/trail/%s", commentTrailAuthor.GetString("domain"), comment.GetString("trail")) + } else { + trailURL = commentTrail.GetString("iri") + } + + commentObject := pub.ObjectNew(pub.NoteType) + commentObject.ID = pub.IRI(fmt.Sprintf("%s/api/v1/comment/%s", origin, comment.Id)) + commentObject.Content = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, comment.GetString("text"))) + commentObject.Published = comment.GetDateTime("created").Time() + commentObject.AttributedTo = pub.IRI(commentAuthor.GetString("iri")) + commentObject.InReplyTo = pub.IRI(trailURL) + + if mentions != nil { + commentObject.Tag = *mentions + } + + return commentObject, nil +} + +func TrailObjectFromIRI(iri string) (*pub.Object, error) { + fetchURL := strings.Replace(iri, "api/v1/trail", "api/v1/activitypub/trail", 1) + + client := &http.Client{} + + req, err := http.NewRequest(http.MethodGet, fetchURL, nil) + if err != nil { + return nil, err + } + + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + var object pub.Object + err = json.Unmarshal(body, &object) + if err != nil { + return nil, err + } + + return &object, nil +} diff --git a/db/util/email_templates.go b/db/util/email_templates.go index 817340cd..01edf2a6 100644 --- a/db/util/email_templates.go +++ b/db/util/email_templates.go @@ -17,12 +17,15 @@ type EmailData struct { } var notificationTemplates = map[NotificationType]string{ - TrailCreate: "{{.Author}} has created a new trail: {{.trail}}.", - TrailShare: "{{.Author}} has shared a trail with you: {{.trail}}.", - ListCreate: "{{.Author}} has created a new list: {{.list}}.", - ListShare: "{{.Author}} has shared a list with you: {{.list}}.", - NewFollower: "Good news! You have a new follower: {{.Author}}.", - TrailComment: "{{.Author}} commented on your trail '{{.trail}}': '{{.comment}}'.", + TrailShare: "{{.Author}} has shared a trail with you: {{.trail}}.", + ListShare: "{{.Author}} has shared a list with you: {{.list}}.", + NewFollower: "Good news! You have a new follower: {{.Author}}.", + TrailComment: "{{.Author}} commented on your trail '{{.trail_name}}': '{{.comment}}'.", + SummitLogCreate: "{{.Author}} created a summit log on your trail '{{.trail_name}}'.", + TrailLike: "{{.Author}} liked your trail '{{.trail_name}}'.", + CommentMention: "{{.Author}} mentioned you in a comment.", + TrailMention: "{{.Author}} mentioned you in a trail.", + SummitLogMention: "{{.Author}} mentioned you in a summit log.", } func GenerateHTML(appUrl string, recipientName string, authorName string, notificationType NotificationType, metadata map[string]string) (string, error) { diff --git a/db/util/meilisearch.go b/db/util/meilisearch.go index 122b3125..dd85487e 100644 --- a/db/util/meilisearch.go +++ b/db/util/meilisearch.go @@ -2,12 +2,17 @@ package util import ( "bytes" + "encoding/json" "errors" "fmt" "io" "log" + "net/http" + "net/url" + "path" "github.com/meilisearch/meilisearch-go" + "github.com/pocketbase/dbx" "github.com/pocketbase/pocketbase/core" "github.com/twpayne/go-gpx" "github.com/twpayne/go-polyline" @@ -31,16 +36,32 @@ func documentFromTrailRecord(app core.App, r *core.Record, author *core.Record, tags[i] = v.GetString("name") } - polyline, err := getPolyline(app, r) + category := "" + trailCategory := r.ExpandedOne("category") + if trailCategory != nil { + category = trailCategory.GetString("name") + } + + // polyline, err := getPolyline(app, r) + // if err != nil { + // polyline = "" + // } + + domain := "" + if !author.GetBool("isLocal") { + domain = author.GetString("domain") + } + + logCount, err := app.CountRecords("summit_logs", dbx.NewExp("trail={:id}", dbx.Params{"id": r.Id})) if err != nil { return nil, err } - document := map[string]interface{}{ + document := map[string]any{ "id": r.Id, - "author": r.GetString("author"), + "author": author.Id, "author_name": author.GetString("username"), - "author_avatar": author.GetString("avatar"), + "author_avatar": author.GetString("icon"), "name": r.GetString("name"), "description": r.GetString("description"), "location": r.GetString("location"), @@ -49,15 +70,17 @@ func documentFromTrailRecord(app core.App, r *core.Record, author *core.Record, "elevation_loss": r.GetFloat("elevation_loss"), "duration": r.GetFloat("duration"), "difficulty": r.Get("difficulty"), - "category": r.Get("category"), - "completed": len(r.GetStringSlice("summit_logs")) > 0, + "category": category, + "completed": logCount > 0, "date": r.GetDateTime("date").Time().Unix(), "created": r.GetDateTime("created").Time().Unix(), "public": r.GetBool("public"), "thumbnail": thumbnail, "gpx": r.GetString("gpx"), "tags": tags, - "polyline": polyline, + // "polyline": polyline, + "domain": domain, + "iri": r.GetString("iri"), "_geo": map[string]float64{ "lat": r.GetFloat("lat"), "lng": r.GetFloat("lon"), @@ -66,6 +89,9 @@ func documentFromTrailRecord(app core.App, r *core.Record, author *core.Record, if includeShares { document["shares"] = []string{} + document["likes"] = []string{} + document["like_count"] = 0 + } return document, nil @@ -109,28 +135,124 @@ func getPolyline(app core.App, r *core.Record) (string, error) { return string(polyline.EncodeCoords(coordinates)), nil } -func documentFromListRecord(r *core.Record, includeShares bool) map[string]interface{} { +func documentFromListRecord(r *core.Record, author *core.Record, includeShares bool) (map[string]interface{}, error) { + + totalElevationGain := 0.0 + totalElevationLoss := 0.0 + totalDistance := 0.0 + totalDuration := 0.0 + trails := len(r.GetStringSlice("trails")) + + if r.GetString("iri") != "" { + doc, err := documentFromRemoteRecord(r, "lists") + if err == nil { + totalElevationGain = doc["elevation_gain"].(float64) + totalElevationLoss = doc["elevation_loss"].(float64) + totalDistance = doc["distance"].(float64) + totalDuration = doc["duration"].(float64) + + trails = int(doc["trails"].(float64)) + } + + } else { + allTrails := r.ExpandedAll("trails") + + for _, t := range allTrails { + totalElevationGain += t.GetFloat("elevation_gain") + totalElevationLoss += t.GetFloat("elevation_loss") + totalDistance += t.GetFloat("distance") + totalDuration += t.GetFloat("duration") + + } + } + document := map[string]interface{}{ - "id": r.Id, - "author": r.GetString("author"), - "name": r.GetString("name"), - "description": r.GetString("description"), - "public": r.GetBool("public"), - "created": r.GetDateTime("created").Time().Unix(), - "trails": r.GetStringSlice("trails"), + "id": r.Id, + "author": author.Id, + "author_name": author.GetString("username"), + "author_avatar": author.GetString("icon"), + "avatar": r.GetString("avatar"), + "name": r.GetString("name"), + "description": r.GetString("description"), + "elevation_gain": totalElevationGain, + "elevation_loss": totalElevationLoss, + "distance": totalDistance, + "duration": totalDuration, + "public": r.GetBool("public"), + "created": r.GetDateTime("created").Time().Unix(), + "trails": trails, + "iri": r.GetString("iri"), } if includeShares { document["shares"] = []string{} } - return document + return document, nil +} + +func documentFromRemoteRecord(r *core.Record, index string) (map[string]interface{}, error) { + client := &http.Client{} + + if r.GetString("iri") == "" { + return nil, fmt.Errorf("record has no iri") + } + + iri := r.GetString("iri") + + url, err := url.Parse(iri) + if err != nil { + return nil, err + } + + remoteRecordId := path.Base(url.Path) + + searchURL := fmt.Sprintf("%s://%s/api/v1/search/%s", url.Scheme, url.Host, index) + body := []byte(fmt.Sprintf(`{"q": "%s"}`, remoteRecordId)) + + req, err := http.NewRequest("POST", searchURL, bytes.NewBuffer(body)) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", "application/json") + + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("failed to fetch remote record: received status %d", resp.StatusCode) + } + + respBytes, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + var searchResponse meilisearch.SearchResponse + json.Unmarshal(respBytes, &searchResponse) + + if len(searchResponse.Hits) == 0 { + return nil, fmt.Errorf("no documents in result set") + } + + document, ok := searchResponse.Hits[0].(map[string]interface{}) + if !ok { + return nil, fmt.Errorf("unexpected document format") + } + return document, nil } func IndexTrail(app core.App, r *core.Record, author *core.Record, client meilisearch.ServiceManager) error { errs := app.ExpandRecord(r, []string{"tags"}, nil) if len(errs) > 0 { - return fmt.Errorf("failed to expand: %v", errs) + return fmt.Errorf("failed to expand tags: %v", errs) + } + errs = app.ExpandRecord(r, []string{"category"}, nil) + if len(errs) > 0 { + return fmt.Errorf("failed to expand category: %v", errs) } doc, err := documentFromTrailRecord(app, r, author, true) if err != nil { @@ -148,10 +270,14 @@ func IndexTrail(app core.App, r *core.Record, author *core.Record, client meilis func UpdateTrail(app core.App, r *core.Record, author *core.Record, client meilisearch.ServiceManager) error { errs := app.ExpandRecord(r, []string{"tags"}, nil) if len(errs) > 0 { - return fmt.Errorf("failed to expand: %v", errs) + return fmt.Errorf("failed to expand tags: %v", errs) + } + errs = app.ExpandRecord(r, []string{"category"}, nil) + if len(errs) > 0 { + return fmt.Errorf("failed to expand category: %v", errs) } - doc, err := documentFromTrailRecord(app, r, author, true) + doc, err := documentFromTrailRecord(app, r, author, false) if err != nil { return err } @@ -177,20 +303,49 @@ func UpdateTrailShares(trailId string, shares []string, client meilisearch.Servi return nil } -func IndexList(r *core.Record, client meilisearch.ServiceManager) error { - documents := []map[string]interface{}{documentFromListRecord(r, true)} +func UpdateTrailLikes(trailId string, likes []string, client meilisearch.ServiceManager) error { + documents := []map[string]interface{}{ + { + "id": trailId, + "like_count": len(likes), + "likes": likes, + }, + } + if _, err := client.Index("trails").UpdateDocuments(documents); err != nil { + return err + } + return nil +} - if _, err := client.Index("lists").AddDocuments(documents); err != nil { +func IndexList(app core.App, r *core.Record, author *core.Record, client meilisearch.ServiceManager) error { + errs := app.ExpandRecord(r, []string{"trails"}, nil) + if len(errs) > 0 { + return fmt.Errorf("failed to expand trails: %v", errs) + } + + documents, err := documentFromListRecord(r, author, true) + if err != nil { + return err + } + if _, err = client.Index("lists").AddDocuments(documents); err != nil { return err } return nil } -func UpdateList(r *core.Record, client meilisearch.ServiceManager) error { - documents := documentFromListRecord(r, false) +func UpdateList(app core.App, r *core.Record, author *core.Record, client meilisearch.ServiceManager) error { + errs := app.ExpandRecord(r, []string{"trails"}, nil) + if len(errs) > 0 { + return fmt.Errorf("failed to expand trails: %v", errs) + } - if _, err := client.Index("lists").UpdateDocuments(documents); err != nil { + documents, err := documentFromListRecord(r, author, false) + if err != nil { + return err + } + + if _, err = client.Index("lists").UpdateDocuments(documents); err != nil { return err } diff --git a/db/util/notification.go b/db/util/notification.go index 596cb920..a339fccb 100644 --- a/db/util/notification.go +++ b/db/util/notification.go @@ -11,12 +11,15 @@ import ( type NotificationType string const ( - TrailCreate NotificationType = "trail_create" - TrailShare NotificationType = "trail_share" - ListCreate NotificationType = "list_create" - ListShare NotificationType = "list_share" - NewFollower NotificationType = "new_follower" - TrailComment NotificationType = "trail_comment" + TrailShare NotificationType = "trail_share" + ListShare NotificationType = "list_share" + NewFollower NotificationType = "new_follower" + TrailComment NotificationType = "trail_comment" + TrailLike NotificationType = "trail_like" + SummitLogCreate NotificationType = "summit_log_create" + CommentMention NotificationType = "comment_mention" + TrailMention NotificationType = "trail_mention" + SummitLogMention NotificationType = "summit_log_mention" ) type Notification struct { @@ -54,11 +57,14 @@ func getNotificationPermissions(app core.App, user string, notificationType Noti return &settingsForType, nil } -func SendNotification(app core.App, notification Notification, recipient string) error { - if notification.Author == recipient { +func SendNotification(app core.App, notification Notification, recipient *core.Record) error { + if notification.Author == recipient.Id { return nil } - permissions, err := getNotificationPermissions(app, recipient, notification.Type) + if !recipient.GetBool("isLocal") { + return nil + } + permissions, err := getNotificationPermissions(app, recipient.GetString("user"), notification.Type) if err != nil { return err } @@ -73,7 +79,7 @@ func SendNotification(app core.App, notification Notification, recipient string) n.Set("type", string(notification.Type)) n.Set("metadata", notification.Metadata) n.Set("seen", notification.Seen) - n.Set("recipient", recipient) + n.Set("recipient", recipient.Id) n.Set("author", notification.Author) if err := app.Save(n); err != nil { @@ -82,15 +88,15 @@ func SendNotification(app core.App, notification Notification, recipient string) } if permissions.Email { - recipientUser, err := app.FindRecordById("users", recipient) + recipientActor, err := app.FindRecordById("activitypub_actors", recipient.Id) if err != nil { return err } - authorUser, err := app.FindRecordById("users", notification.Author) + authorActor, err := app.FindRecordById("activitypub_actors", notification.Author) if err != nil { return err } - html, err := GenerateHTML(app.Settings().Meta.AppURL, recipientUser.GetString("username"), authorUser.GetString("username"), notification.Type, notification.Metadata) + html, err := GenerateHTML(app.Settings().Meta.AppURL, recipientActor.GetString("username"), authorActor.GetString("username"), notification.Type, notification.Metadata) if err != nil { return err } @@ -100,27 +106,12 @@ func SendNotification(app core.App, notification Notification, recipient string) Address: app.Settings().Meta.SenderAddress, Name: app.Settings().Meta.SenderName, }, - To: []mail.Address{{Address: recipientUser.Email()}}, + To: []mail.Address{{Address: recipientActor.Email()}}, Subject: "wanderer - New Notification", HTML: html, } - app.NewMailClient().Send(message) - } - return nil -} - -func SendNotificationToFollowers(app core.App, notification Notification) error { - followers, err := app.FindRecordsByFilter("follows", "followee={:user}", "", -1, 0, dbx.Params{"user": notification.Author}) - - if err != nil { - return err - } - - for _, f := range followers { - recipient := f.GetString("follower") - SendNotification(app, notification, recipient) - + return app.NewMailClient().Send(message) } return nil } diff --git a/docker-compose.yml b/docker-compose.yml index 949a9a8f..de799873 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,7 +32,8 @@ services: condition: service_healthy environment: <<: *cenv - POCKETBASE_ENCRYPTION_KEY: + POCKETBASE_ENCRYPTION_KEY: fde406459dc1f6ca6f348e1f44a9a2af + ORIGIN: http://localhost:3000 ports: - "8090:8090" networks: diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs index 8a512184..ce18060e 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -1,95 +1,132 @@ import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; -import tailwind from '@astrojs/tailwind'; import node from "@astrojs/node"; import starlightOpenAPI, { openAPISidebarGroups } from 'starlight-openapi' +import tailwindcss from "@tailwindcss/vite"; + // https://astro.build/config export default defineConfig({ - integrations: [starlight({ - title: 'wanderer Documentation', - logo: { - light: '/src/assets/logo_text_dark.svg', - dark: '/src/assets/logo_text_light.svg', - replacesTitle: true - }, - social: { - github: 'https://github.com/flomp/wanderer' - }, - components: { - Footer: './src/components/footer.astro' - }, - plugins: [ - starlightOpenAPI([ + integrations: [ + starlight({ + title: 'wanderer Documentation', + logo: { + light: '/src/assets/logo_text_dark.svg', + dark: '/src/assets/logo_text_light.svg', + replacesTitle: true + }, + social: [ + { icon: 'github', label: 'GitHub', href: 'https://github.com/flomp/wanderer' }, + ], + components: { + Footer: './src/components/footer.astro' + }, + plugins: [ + starlightOpenAPI([ + { + base: 'api-reference', + label: 'API Reference', + schema: 'wanderer.openapi.yaml', + }, + ]), + ], + sidebar: [ { - base: 'api-reference', - label: 'API Reference', - schema: 'wanderer.openapi.yaml', + label: 'Welcome to wanderer', + link: '/welcome' }, - ]), - ], - sidebar: [{ - label: 'Getting Started', - items: [{ - label: 'Installation', - link: '/getting-started/installation/' - }, { - label: 'Configuration', - link: '/getting-started/configuration/' - }, { - label: 'Local development', - link: '/getting-started/local-development/' - }, { - label: 'Changelog', - link: '/getting-started/changelog/' - }] - }, { - label: 'Guides', - items: [{ - label: 'Authentication', - link: '/guides/authentication/' - }, { - label: 'Create a trail', - link: '/guides/create-a-trail/' - }, { - label: 'Share trails', - link: '/guides/share-trails/' - }, { - label: 'Lists', - link: '/guides/lists/' - }, - { - label: 'Statistics', - link: '/guides/statistics/' - }, - { - label: 'Custom categories', - link: '/guides/custom-categories/' - }, - { - label: 'Customize the map', - link: '/guides/customize-map/' - }, - { - label: 'Import/Export', - link: '/guides/import-export/' - }, - { - label: 'Integrations', - link: '/guides/integrations/' - }, - { - label: 'API', - link: '/guides/api/' - }] - }, - ...openAPISidebarGroups,], - customCss: ['./src/custom.css', './src/tailwind.css', '@fontsource/ibm-plex-sans/400.css', '@fontsource/ibm-plex-sans/600.css', '@fontsource/ibm-plex-mono/400.css', '@fontsource/ibm-plex-mono/600.css'] - }), tailwind({ - applyBaseStyles: false - })], + { + label: 'Using wanderer', + items: [{ + label: 'Authentication', + link: '/use/authentication/' + }, { + label: 'Create a trail', + link: '/use/create-a-trail/' + }, + { + label: 'Summit logs', + link: '/use/summit-logs/' + }, + { + label: 'Interact with the community', + link: '/use/community-interaction/' + }, + { + label: 'Share trails', + link: '/use/share-trails/' + }, { + label: 'Lists', + link: '/use/lists/' + }, + { + label: 'Statistics', + link: '/use/statistics/' + }, + { + label: 'Customize the map', + link: '/use/customize-map/' + }, + { + label: 'Import/Export', + link: '/use/import-export/' + }, + { + label: 'Integrations', + link: '/use/integrations/' + }, + ] + }, + { + label: 'Running wanderer', + items: [ + { + label: 'Installation', + link: '/run/installation/' + }, + { + label: 'Environment configuration', + link: '/run/environment-configuration/' + }, + { + label: 'Backend configuration', + link: '/run/backend-configuration/' + }, + { + label: 'Custom categories', + link: '/run/custom-categories/' + }, + { + label: 'Backing up your server', + link: '/run/backup-server/' + }, + { + label: 'Changelog', + link: '/run/changelog/' + }] + }, { + label: 'Develop wanderer', + items: [ + { + label: 'Local development', + link: '/develop/local-development/' + }, + { + label: 'API', + link: '/develop/api/' + }, + { + label: 'Federation', + link: '/develop/federation/' + }, + ] + }, + ...openAPISidebarGroups,], + customCss: ['./src/custom.css', './src/tailwind.css', '@fontsource/ibm-plex-sans/400.css', '@fontsource/ibm-plex-sans/600.css', '@fontsource/ibm-plex-mono/400.css', '@fontsource/ibm-plex-mono/600.css'] + })], output: "server", + vite: { plugins: [tailwindcss()] }, adapter: node({ mode: "standalone" }) diff --git a/docs/package-lock.json b/docs/package-lock.json index 48de2a8a..13e49541 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -1,47 +1,51 @@ { "name": "docs", - "version": "0.12.0", + "version": "0.17.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "docs", - "version": "0.12.0", + "version": "0.16.4", "dependencies": { "@astrojs/check": "^0.9.4", - "@astrojs/node": "^9.0.0", - "@astrojs/starlight": "^0.30.3", - "@astrojs/starlight-tailwind": "^3.0.0", - "@astrojs/tailwind": "^5.1.3", + "@astrojs/node": "^9.2.2", + "@astrojs/starlight": "^0.34.4", + "@astrojs/starlight-tailwind": "^4.0.1", "@fontsource/ibm-plex-mono": "^5.0.13", "@fontsource/ibm-plex-sans": "^5.0.20", - "astro": "^5.0.2", + "@tailwindcss/vite": "^4.1.10", + "astro": "^5.9.3", "sharp": "^0.32.5", "starlight-openapi": "^0.9.0", - "tailwindcss": "^3.4.4", + "tailwindcss": "^4.1.10", "typescript": "^5.4.5" } }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "engines": { - "node": ">=10" + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6.0.0" } }, "node_modules/@apidevtools/swagger-methods": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", - "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==" + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", + "license": "MIT" }, "node_modules/@astrojs/check": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.9.4.tgz", "integrity": "sha512-IOheHwCtpUfvogHHsvu0AbeRZEnjJg3MopdLddkJE70mULItS/Vh37BHcI00mcOJcH1vhD3odbpvWokpxam7xA==", + "license": "MIT", "dependencies": { "@astrojs/language-server": "^2.15.0", "chokidar": "^4.0.1", @@ -56,19 +60,22 @@ } }, "node_modules/@astrojs/compiler": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.10.3.tgz", - "integrity": "sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==" + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.12.2.tgz", + "integrity": "sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==", + "license": "MIT" }, "node_modules/@astrojs/internal-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.4.2.tgz", - "integrity": "sha512-EdDWkC3JJVcpGpqJAU/5hSk2LKXyG3mNGkzGoAuyK+xoPHbaVdSuIWoN1QTnmK3N/gGfaaAfM8gO2KDCAW7S3w==" + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.6.1.tgz", + "integrity": "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==", + "license": "MIT" }, "node_modules/@astrojs/language-server": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.15.4.tgz", "integrity": "sha512-JivzASqTPR2bao9BWsSc/woPHH7OGSGc9aMxXL4U6egVTqBycB3ZHdBJPuOCVtcGLrzdWTosAqVPz1BVoxE0+A==", + "license": "MIT", "dependencies": { "@astrojs/compiler": "^2.10.3", "@astrojs/yaml2ts": "^0.2.2", @@ -106,11 +113,13 @@ } }, "node_modules/@astrojs/markdown-remark": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.0.1.tgz", - "integrity": "sha512-CTSYijj25NfxgZi15TU3CwPwgyD1/7yA3FcdcNmB9p94nydupiUbrIiq3IqeTp2m5kCVzxbPZeC7fTwEOaNyGw==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.2.tgz", + "integrity": "sha512-bO35JbWpVvyKRl7cmSJD822e8YA8ThR/YbUsciWNA7yTcqpIAL2hJDToWP5KcZBWxGT6IOdOkHSXARSNZc4l/Q==", + "license": "MIT", "dependencies": { - "@astrojs/prism": "3.2.0", + "@astrojs/internal-helpers": "0.6.1", + "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", @@ -119,11 +128,12 @@ "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", - "remark-gfm": "^4.0.0", + "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.1", + "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", - "shiki": "^1.23.1", + "shiki": "^3.2.1", + "smol-toml": "^1.3.1", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", @@ -132,76 +142,83 @@ } }, "node_modules/@astrojs/mdx": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.0.3.tgz", - "integrity": "sha512-8HcuyNG/KgYUAQWVzKFkboXcTOBCW6aQ0WK0Er/iSmVSF0y3yimg4/3QSt+Twv9dogpwIHL+E8iBJKqieFv4+g==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.0.tgz", + "integrity": "sha512-OGX2KvPeBzjSSKhkCqrUoDMyzFcjKt5nTE5SFw3RdoLf0nrhyCXBQcCyclzWy1+P+XpOamn+p+hm1EhpCRyPxw==", + "license": "MIT", "dependencies": { - "@astrojs/markdown-remark": "6.0.1", + "@astrojs/markdown-remark": "6.3.2", "@mdx-js/mdx": "^3.1.0", - "acorn": "^8.14.0", - "es-module-lexer": "^1.5.4", + "acorn": "^8.14.1", + "es-module-lexer": "^1.6.0", "estree-util-visit": "^2.0.0", - "hast-util-to-html": "^9.0.3", + "hast-util-to-html": "^9.0.5", "kleur": "^4.1.5", "rehype-raw": "^7.0.0", - "remark-gfm": "^4.0.0", + "remark-gfm": "^4.0.1", "remark-smartypants": "^3.0.2", "source-map": "^0.7.4", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3" }, "engines": { - "node": "^18.17.1 || ^20.3.0 || >=22.0.0" + "node": "18.20.8 || ^20.3.0 || >=22.0.0" }, "peerDependencies": { "astro": "^5.0.0" } }, "node_modules/@astrojs/node": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@astrojs/node/-/node-9.0.0.tgz", - "integrity": "sha512-3h/5kFZvpuo+chYAjj75YhtRUxfquxEJrpZRRC7TdiMGp2WhLp2us4VXm2mjezJp/zHKotW2L3qgp0P2ujQ0xw==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@astrojs/node/-/node-9.2.2.tgz", + "integrity": "sha512-PtLPuuojmcl9O3CEvXqL/D+wB4x5DlbrGOvP0MeTAh/VfKFprYAzgw1+45xsnTO+QvPWb26l1cT+ZQvvohmvMw==", + "license": "MIT", "dependencies": { - "send": "^1.1.0", + "@astrojs/internal-helpers": "0.6.1", + "send": "^1.2.0", "server-destroy": "^1.0.1" }, "peerDependencies": { - "astro": "^5.0.0" + "astro": "^5.3.0" } }, "node_modules/@astrojs/prism": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.2.0.tgz", - "integrity": "sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz", + "integrity": "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==", + "license": "MIT", "dependencies": { - "prismjs": "^1.29.0" + "prismjs": "^1.30.0" }, "engines": { - "node": "^18.17.1 || ^20.3.0 || >=22.0.0" + "node": "18.20.8 || ^20.3.0 || >=22.0.0" } }, "node_modules/@astrojs/sitemap": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.2.1.tgz", - "integrity": "sha512-uxMfO8f7pALq0ADL6Lk68UV6dNYjJ2xGUzyjjVj60JLBs5a6smtlkBYv3tQ0DzoqwS7c9n4FUx5lgv0yPo/fgA==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.4.1.tgz", + "integrity": "sha512-VjZvr1e4FH6NHyyHXOiQgLiw94LnCVY4v06wN/D0gZKchTMkg71GrAHJz81/huafcmavtLkIv26HnpfDq6/h/Q==", + "license": "MIT", "dependencies": { "sitemap": "^8.0.0", "stream-replace-string": "^2.0.0", - "zod": "^3.23.8" + "zod": "^3.24.2" } }, "node_modules/@astrojs/starlight": { - "version": "0.30.3", - "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.30.3.tgz", - "integrity": "sha512-HbGYYIR2Rnrvvc2jD0dUpp8zUzv3jQYtG5im3aulDgE4Jo21Ahw0yXlb/Y134G3LALLbqhImmlbt/h/nDV3yMA==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.34.4.tgz", + "integrity": "sha512-NfQ6S2OaDG8aaiE+evVxSMpgqMkXPLa/yCpzG340EX2pRzFxPeTSvpei3Uz9KouevXRCctjHSItKjuZP+2syrQ==", + "license": "MIT", "dependencies": { - "@astrojs/mdx": "^4.0.1", - "@astrojs/sitemap": "^3.1.6", - "@pagefind/default-ui": "^1.0.3", + "@astrojs/markdown-remark": "^6.3.1", + "@astrojs/mdx": "^4.2.3", + "@astrojs/sitemap": "^3.3.0", + "@pagefind/default-ui": "^1.3.0", "@types/hast": "^3.0.4", "@types/js-yaml": "^4.0.9", "@types/mdast": "^4.0.4", - "astro-expressive-code": "^0.38.3", + "astro-expressive-code": "^0.41.1", "bcp-47": "^2.1.0", "hast-util-from-html": "^2.0.1", "hast-util-select": "^6.0.2", @@ -209,52 +226,41 @@ "hastscript": "^9.0.0", "i18next": "^23.11.5", "js-yaml": "^4.1.0", + "klona": "^2.0.6", "mdast-util-directive": "^3.0.0", "mdast-util-to-markdown": "^2.1.0", "mdast-util-to-string": "^4.0.0", - "pagefind": "^1.0.3", + "pagefind": "^1.3.0", "rehype": "^13.0.1", "rehype-format": "^5.0.0", "remark-directive": "^3.0.0", + "ultrahtml": "^1.6.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0", "vfile": "^6.0.2" }, "peerDependencies": { - "astro": "^5.0.0" + "astro": "^5.5.0" } }, "node_modules/@astrojs/starlight-tailwind": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@astrojs/starlight-tailwind/-/starlight-tailwind-3.0.0.tgz", - "integrity": "sha512-oYHG9RY+VaOSeAhheVZfm9HDA892qvcQA82VT86POYmg1OsgBuWwdf1ZbofV8iq/z5kO06ajcSdzhPE8lhEx8g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@astrojs/starlight-tailwind/-/starlight-tailwind-4.0.1.tgz", + "integrity": "sha512-AOOEWTGqJ7fG66U04xTmZQZ40oZnUYe4Qljpr+No88ozKywtsD1DiXOrGTeHCnZu0hRtMbRtBGB1fZsf0L62iw==", + "license": "MIT", "peerDependencies": { - "@astrojs/starlight": ">=0.30.0", - "@astrojs/tailwind": "^5.1.3", - "tailwindcss": "^3.3.3" - } - }, - "node_modules/@astrojs/tailwind": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-5.1.4.tgz", - "integrity": "sha512-EJ3uoTZZr0RYwTrVS2HgYN0+VbXvg7h87AtwpD5OzqS3GyMwRmzfOwHfORTxoWGQRrY9k/Fi+Awk60kwpvRL5Q==", - "dependencies": { - "autoprefixer": "^10.4.20", - "postcss": "^8.4.49", - "postcss-load-config": "^4.0.2" - }, - "peerDependencies": { - "astro": "^3.0.0 || ^4.0.0 || ^5.0.0", - "tailwindcss": "^3.0.24" + "@astrojs/starlight": ">=0.34.0", + "tailwindcss": "^4.0.0" } }, "node_modules/@astrojs/telemetry": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.2.0.tgz", - "integrity": "sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", + "integrity": "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==", + "license": "MIT", "dependencies": { - "ci-info": "^4.1.0", - "debug": "^4.3.7", + "ci-info": "^4.2.0", + "debug": "^4.4.0", "dlv": "^1.1.3", "dset": "^3.1.4", "is-docker": "^3.0.0", @@ -262,52 +268,57 @@ "which-pm-runs": "^1.1.0" }, "engines": { - "node": "^18.17.1 || ^20.3.0 || >=22.0.0" + "node": "18.20.8 || ^20.3.0 || >=22.0.0" } }, "node_modules/@astrojs/yaml2ts": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.2.tgz", "integrity": "sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==", + "license": "MIT", "dependencies": { "yaml": "^2.5.0" } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.26.3" + "@babel/types": "^7.27.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -317,32 +328,43 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", + "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", + "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@capsizecss/unpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-2.4.0.tgz", + "integrity": "sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==", + "license": "MIT", + "dependencies": { + "blob-to-buffer": "^1.2.8", + "cross-fetch": "^3.0.4", + "fontkit": "^2.0.2" + } + }, "node_modules/@ctrl/tinycolor": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.1.0.tgz", "integrity": "sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==", + "license": "MIT", "engines": { "node": ">=14" } @@ -351,6 +373,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", "integrity": "sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==", + "license": "MIT", "dependencies": { "@emmetio/scanner": "^1.0.4" } @@ -359,6 +382,7 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/@emmetio/css-abbreviation/-/css-abbreviation-2.1.8.tgz", "integrity": "sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==", + "license": "MIT", "dependencies": { "@emmetio/scanner": "^1.0.4" } @@ -367,6 +391,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/@emmetio/css-parser/-/css-parser-0.4.0.tgz", "integrity": "sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==", + "license": "MIT", "dependencies": { "@emmetio/stream-reader": "^2.2.0", "@emmetio/stream-reader-utils": "^0.1.0" @@ -376,6 +401,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/@emmetio/html-matcher/-/html-matcher-1.3.0.tgz", "integrity": "sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==", + "license": "ISC", "dependencies": { "@emmetio/scanner": "^1.0.0" } @@ -383,289 +409,311 @@ "node_modules/@emmetio/scanner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz", - "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==" + "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==", + "license": "MIT" }, "node_modules/@emmetio/stream-reader": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@emmetio/stream-reader/-/stream-reader-2.2.0.tgz", - "integrity": "sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==" + "integrity": "sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==", + "license": "MIT" }, "node_modules/@emmetio/stream-reader-utils": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@emmetio/stream-reader-utils/-/stream-reader-utils-0.1.0.tgz", - "integrity": "sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==" + "integrity": "sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==", + "license": "MIT" }, "node_modules/@emnapi/runtime": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", - "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "license": "MIT", "optional": true, "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", "cpu": [ "ppc64" ], + "license": "MIT", "optional": true, "os": [ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", "cpu": [ "arm" ], + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", "cpu": [ "arm" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", "cpu": [ "loong64" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", "cpu": [ "mips64el" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", "cpu": [ "ppc64" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", "cpu": [ "riscv64" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", "cpu": [ "s390x" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", - "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -675,27 +723,29 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", - "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -705,84 +755,90 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@expressive-code/core": { - "version": "0.38.3", - "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.38.3.tgz", - "integrity": "sha512-s0/OtdRpBONwcn23O8nVwDNQqpBGKscysejkeBkwlIeHRLZWgiTVrusT5Idrdz1d8cW5wRk9iGsAIQmwDPXgJg==", + "version": "0.41.2", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.41.2.tgz", + "integrity": "sha512-AJW5Tp9czbLqKMzwudL9Rv4js9afXBxkSGLmCNPq1iRgAYcx9NkTPJiSNCesjKRWoVC328AdSu6fqrD22zDgDg==", + "license": "MIT", "dependencies": { "@ctrl/tinycolor": "^4.0.4", "hast-util-select": "^6.0.2", @@ -796,44 +852,56 @@ } }, "node_modules/@expressive-code/plugin-frames": { - "version": "0.38.3", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.38.3.tgz", - "integrity": "sha512-qL2oC6FplmHNQfZ8ZkTR64/wKo9x0c8uP2WDftR/ydwN/yhe1ed7ZWYb8r3dezxsls+tDokCnN4zYR594jbpvg==", + "version": "0.41.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.41.2.tgz", + "integrity": "sha512-pfy0hkJI4nbaONjmksFDcuHmIuyPTFmi1JpABe4q2ajskiJtfBf+WDAL2pg595R9JNoPrrH5+aT9lbkx2noicw==", + "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.38.3" + "@expressive-code/core": "^0.41.2" } }, "node_modules/@expressive-code/plugin-shiki": { - "version": "0.38.3", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.38.3.tgz", - "integrity": "sha512-kqHnglZeesqG3UKrb6e9Fq5W36AZ05Y9tCREmSN2lw8LVTqENIeCIkLDdWtQ5VoHlKqwUEQFTVlRehdwoY7Gmw==", + "version": "0.41.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.41.2.tgz", + "integrity": "sha512-xD4zwqAkDccXqye+235BH5bN038jYiSMLfUrCOmMlzxPDGWdxJDk5z4uUB/aLfivEF2tXyO2zyaarL3Oqht0fQ==", + "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.38.3", - "shiki": "^1.22.2" + "@expressive-code/core": "^0.41.2", + "shiki": "^3.2.2" } }, "node_modules/@expressive-code/plugin-text-markers": { - "version": "0.38.3", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.38.3.tgz", - "integrity": "sha512-dPK3+BVGTbTmGQGU3Fkj3jZ3OltWUAlxetMHI6limUGCWBCucZiwoZeFM/WmqQa71GyKRzhBT+iEov6kkz2xVA==", + "version": "0.41.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.41.2.tgz", + "integrity": "sha512-JFWBz2qYxxJOJkkWf96LpeolbnOqJY95TvwYc0hXIHf9oSWV0h0SY268w/5N3EtQaD9KktzDE+VIVwb9jdb3nw==", + "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.38.3" + "@expressive-code/core": "^0.41.2" } }, "node_modules/@fontsource/ibm-plex-mono": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/ibm-plex-mono/-/ibm-plex-mono-5.1.1.tgz", - "integrity": "sha512-1aayqPe/ZkD3MlvqpmOHecfA3f2B8g+fAEkgvcCd3lkPP0pS1T0xG5Zmn2EsJQqr1JURtugPUH+5NqvKyfFZMQ==" + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@fontsource/ibm-plex-mono/-/ibm-plex-mono-5.2.6.tgz", + "integrity": "sha512-LTZJNTcpoT19fmwERZNMDI+ljHueuyhF2Qn+bICJ4Y4hxBLAAoJ2MRsGnyp0QNutW6t/25eyZpvaUK1LDrCo7Q==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } }, "node_modules/@fontsource/ibm-plex-sans": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/ibm-plex-sans/-/ibm-plex-sans-5.1.1.tgz", - "integrity": "sha512-s6xHuHCYxZbIZV0Qchw+EoucPYWCP3PgLs9+oF3u1kLQKwabWaUC3Fm30y6n3VIMCqR89dpkcS8LTqH/IGTDDQ==" + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@fontsource/ibm-plex-sans/-/ibm-plex-sans-5.2.6.tgz", + "integrity": "sha512-yclktpagJncROwdWHHEfPsrIfoo3uiIeDFchvmjNmTW/YMBfLYWJnUv19EAqPNhGizdtmcH9FjzOR2094Z2uPg==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } }, "node_modules/@humanwhocodes/momoa": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.4.tgz", "integrity": "sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==", + "license": "Apache-2.0", "engines": { "node": ">=10.10.0" } @@ -845,6 +913,7 @@ "cpu": [ "arm64" ], + "license": "Apache-2.0", "optional": true, "os": [ "darwin" @@ -866,6 +935,7 @@ "cpu": [ "x64" ], + "license": "Apache-2.0", "optional": true, "os": [ "darwin" @@ -887,6 +957,7 @@ "cpu": [ "arm64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "darwin" @@ -902,6 +973,7 @@ "cpu": [ "x64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "darwin" @@ -917,6 +989,7 @@ "cpu": [ "arm" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -932,6 +1005,7 @@ "cpu": [ "arm64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -947,6 +1021,7 @@ "cpu": [ "s390x" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -962,6 +1037,7 @@ "cpu": [ "x64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -977,6 +1053,7 @@ "cpu": [ "arm64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -992,6 +1069,7 @@ "cpu": [ "x64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -1007,6 +1085,7 @@ "cpu": [ "arm" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -1028,6 +1107,7 @@ "cpu": [ "arm64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -1049,6 +1129,7 @@ "cpu": [ "s390x" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -1070,6 +1151,7 @@ "cpu": [ "x64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -1091,6 +1173,7 @@ "cpu": [ "arm64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -1112,6 +1195,7 @@ "cpu": [ "x64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -1133,6 +1217,7 @@ "cpu": [ "wasm32" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { "@emnapi/runtime": "^1.2.0" @@ -1151,6 +1236,7 @@ "cpu": [ "ia32" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ "win32" @@ -1169,6 +1255,7 @@ "cpu": [ "x64" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ "win32" @@ -1180,63 +1267,23 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "minipass": "^7.0.4" }, "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=18.0.0" } }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1250,6 +1297,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1258,6 +1306,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1265,12 +1314,14 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1279,12 +1330,14 @@ "node_modules/@jsdevtools/ono": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", - "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "license": "MIT" }, "node_modules/@mdx-js/mdx": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -1320,6 +1373,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1332,6 +1386,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", "engines": { "node": ">= 8" } @@ -1340,6 +1395,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1351,7 +1407,8 @@ "node_modules/@oslojs/encoding": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", - "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==" + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", + "license": "MIT" }, "node_modules/@pagefind/darwin-arm64": { "version": "1.3.0", @@ -1360,6 +1417,7 @@ "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1372,6 +1430,7 @@ "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1380,7 +1439,8 @@ "node_modules/@pagefind/default-ui": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@pagefind/default-ui/-/default-ui-1.3.0.tgz", - "integrity": "sha512-CGKT9ccd3+oRK6STXGgfH+m0DbOKayX6QGlq38TfE1ZfUcPc5+ulTuzDbZUnMo+bubsEOIypm4Pl2iEyzZ1cNg==" + "integrity": "sha512-CGKT9ccd3+oRK6STXGgfH+m0DbOKayX6QGlq38TfE1ZfUcPc5+ulTuzDbZUnMo+bubsEOIypm4Pl2iEyzZ1cNg==", + "license": "MIT" }, "node_modules/@pagefind/linux-arm64": { "version": "1.3.0", @@ -1389,6 +1449,7 @@ "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -1401,6 +1462,7 @@ "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -1413,88 +1475,57 @@ "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" ] }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@readme/better-ajv-errors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@readme/better-ajv-errors/-/better-ajv-errors-1.6.0.tgz", - "integrity": "sha512-9gO9rld84Jgu13kcbKRU+WHseNhaVt76wYMeRDGsUGYxwJtI3RmEJ9LY9dZCYQGI8eUZLuxb5qDja0nqklpFjQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@readme/better-ajv-errors/-/better-ajv-errors-2.3.2.tgz", + "integrity": "sha512-T4GGnRAlY3C339NhoUpgJJFsMYko9vIgFAlhgV+/vEGFw66qEY4a4TRJIAZBcX/qT1pq5DvXSme+SQODHOoBrw==", + "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/runtime": "^7.21.0", + "@babel/code-frame": "^7.22.5", + "@babel/runtime": "^7.22.5", "@humanwhocodes/momoa": "^2.0.3", - "chalk": "^4.1.2", - "json-to-ast": "^2.0.3", "jsonpointer": "^5.0.0", - "leven": "^3.1.0" + "leven": "^3.1.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { "ajv": "4.11.8 - 8" } }, - "node_modules/@readme/better-ajv-errors/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@readme/better-ajv-errors/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/@readme/json-schema-ref-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@readme/json-schema-ref-parser/-/json-schema-ref-parser-1.2.0.tgz", - "integrity": "sha512-Bt3QVovFSua4QmHa65EHUmh2xS0XJ3rgTEUPH998f4OW4VVJke3BuS16f+kM0ZLOGdvIrzrPRqwihuv5BAjtrA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@readme/json-schema-ref-parser/-/json-schema-ref-parser-1.2.1.tgz", + "integrity": "sha512-FKCnFnpKklBPu8atyXqmSRBPSYlZLdcdbIilX19y0vVFiVthqKV9SQp4GZ8L4rOqSVmjn14uZ4Ono5tZKMr1SQ==", + "deprecated": "This package is no longer maintained. Please use `@apidevtools/json-schema-ref-parser` instead.", + "license": "MIT", "dependencies": { "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", + "@types/json-schema": "^7.0.12", "call-me-maybe": "^1.0.1", "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">=18" } }, "node_modules/@readme/openapi-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@readme/openapi-parser/-/openapi-parser-2.6.0.tgz", - "integrity": "sha512-pyFJXezWj9WI1O+gdp95CoxfY+i+Uq3kKk4zXIFuRAZi9YnHpHOpjumWWr67wkmRTw19Hskh9spyY0Iyikf3fA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@readme/openapi-parser/-/openapi-parser-2.7.0.tgz", + "integrity": "sha512-P8WSr8WTOxilnT89tcCRKWYsG/II4sAwt1a/DIWub8xTtkrG9cCBBy/IUcvc5X8oGWN82MwcTA3uEkDrXZd/7A==", + "license": "MIT", "dependencies": { "@apidevtools/swagger-methods": "^3.0.2", "@jsdevtools/ono": "^7.1.3", - "@readme/better-ajv-errors": "^1.6.0", + "@readme/better-ajv-errors": "^2.0.0", "@readme/json-schema-ref-parser": "^1.2.0", "@readme/openapi-schemas": "^3.1.0", "ajv": "^8.12.0", @@ -1512,6 +1543,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@readme/openapi-schemas/-/openapi-schemas-3.1.0.tgz", "integrity": "sha512-9FC/6ho8uFa8fV50+FPy/ngWN53jaUu4GRXlAjcxIRrzhltJnpKkBG2Tp0IDraFJeWrOpk84RJ9EMEEYzaI1Bw==", + "license": "MIT", "engines": { "node": ">=18" } @@ -1520,6 +1552,7 @@ "version": "5.1.4", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -1540,336 +1573,645 @@ "node_modules/@rollup/pluginutils/node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz", - "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz", + "integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==", "cpu": [ "arm" ], + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz", - "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz", + "integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz", - "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz", + "integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz", - "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz", + "integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz", - "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz", + "integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz", - "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz", + "integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz", - "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz", + "integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==", "cpu": [ "arm" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz", - "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz", + "integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==", "cpu": [ "arm" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz", - "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz", + "integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz", - "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz", + "integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz", - "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz", + "integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==", "cpu": [ "loong64" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz", - "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz", + "integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==", "cpu": [ "ppc64" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz", - "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz", + "integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==", "cpu": [ "riscv64" ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz", + "integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==", + "cpu": [ + "riscv64" + ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz", - "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz", + "integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==", "cpu": [ "s390x" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz", - "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz", + "integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz", - "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz", + "integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", - "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz", + "integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", - "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz", + "integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", - "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz", + "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@shikijs/core": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.26.1.tgz", - "integrity": "sha512-yeo7sG+WZQblKPclUOKRPwkv1PyoHYkJ4gP9DzhFJbTdueKR7wYTI1vfF/bFi1NTgc545yG/DzvVhZgueVOXMA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.6.0.tgz", + "integrity": "sha512-9By7Xb3olEX0o6UeJyPLI1PE1scC4d3wcVepvtv2xbuN9/IThYN4Wcwh24rcFeASzPam11MCq8yQpwwzCgSBRw==", + "license": "MIT", "dependencies": { - "@shikijs/engine-javascript": "1.26.1", - "@shikijs/engine-oniguruma": "1.26.1", - "@shikijs/types": "1.26.1", - "@shikijs/vscode-textmate": "^10.0.1", + "@shikijs/types": "3.6.0", + "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" + "hast-util-to-html": "^9.0.5" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.26.1.tgz", - "integrity": "sha512-CRhA0b8CaSLxS0E9A4Bzcb3LKBNpykfo9F85ozlNyArxjo2NkijtiwrJZ6eHa+NT5I9Kox2IXVdjUsP4dilsmw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.6.0.tgz", + "integrity": "sha512-7YnLhZG/TU05IHMG14QaLvTW/9WiK8SEYafceccHUSXs2Qr5vJibUwsDfXDLmRi0zHdzsxrGKpSX6hnqe0k8nA==", + "license": "MIT", "dependencies": { - "@shikijs/types": "1.26.1", - "@shikijs/vscode-textmate": "^10.0.1", - "oniguruma-to-es": "0.10.0" + "@shikijs/types": "3.6.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.3" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.26.1.tgz", - "integrity": "sha512-F5XuxN1HljLuvfXv7d+mlTkV7XukC1cawdtOo+7pKgPD83CAB1Sf8uHqP3PK0u7njFH0ZhoXE1r+0JzEgAQ+kg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.6.0.tgz", + "integrity": "sha512-nmOhIZ9yT3Grd+2plmW/d8+vZ2pcQmo/UnVwXMUXAKTXdi+LK0S08Ancrz5tQQPkxvjBalpMW2aKvwXfelauvA==", + "license": "MIT", "dependencies": { - "@shikijs/types": "1.26.1", - "@shikijs/vscode-textmate": "^10.0.1" + "@shikijs/types": "3.6.0", + "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/langs": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.26.1.tgz", - "integrity": "sha512-oz/TQiIqZejEIZbGtn68hbJijAOTtYH4TMMSWkWYozwqdpKR3EXgILneQy26WItmJjp3xVspHdiUxUCws4gtuw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.6.0.tgz", + "integrity": "sha512-IdZkQJaLBu1LCYCwkr30hNuSDfllOT8RWYVZK1tD2J03DkiagYKRxj/pDSl8Didml3xxuyzUjgtioInwEQM/TA==", + "license": "MIT", "dependencies": { - "@shikijs/types": "1.26.1" + "@shikijs/types": "3.6.0" } }, "node_modules/@shikijs/themes": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.26.1.tgz", - "integrity": "sha512-JDxVn+z+wgLCiUhBGx2OQrLCkKZQGzNH3nAxFir4PjUcYiyD8Jdms9izyxIogYmSwmoPTatFTdzyrRKbKlSfPA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.6.0.tgz", + "integrity": "sha512-Fq2j4nWr1DF4drvmhqKq8x5vVQ27VncF8XZMBuHuQMZvUSS3NBgpqfwz/FoGe36+W6PvniZ1yDlg2d4kmYDU6w==", + "license": "MIT", "dependencies": { - "@shikijs/types": "1.26.1" + "@shikijs/types": "3.6.0" } }, "node_modules/@shikijs/types": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.26.1.tgz", - "integrity": "sha512-d4B00TKKAMaHuFYgRf3L0gwtvqpW4hVdVwKcZYbBfAAQXspgkbWqnFfuFl3MDH6gLbsubOcr+prcnsqah3ny7Q==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.6.0.tgz", + "integrity": "sha512-cLWFiToxYu0aAzJqhXTQsFiJRTFDAGl93IrMSBNaGSzs7ixkLfdG6pH11HipuWFGW5vyx4X47W8HDQ7eSrmBUg==", + "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^10.0.1", + "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz", - "integrity": "sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==" + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" }, - "node_modules/@types/acorn": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", - "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "license": "Apache-2.0", "dependencies": { - "@types/estree": "*" + "tslib": "^2.8.0" } }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" + "node_modules/@tailwindcss/node": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.10.tgz", + "integrity": "sha512-2ACf1znY5fpRBwRhMgj9ZXvb2XZW8qs+oTfotJ2C5xR0/WNL7UHZ7zXl6s+rUqedL1mNi+0O+WQr5awGowS3PQ==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.10" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.10.tgz", + "integrity": "sha512-v0C43s7Pjw+B9w21htrQwuFObSkio2aV/qPx/mhrRldbqxbWJK6KizM+q7BF1/1CmuLqZqX3CeYF7s7P9fbA8Q==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.10", + "@tailwindcss/oxide-darwin-arm64": "4.1.10", + "@tailwindcss/oxide-darwin-x64": "4.1.10", + "@tailwindcss/oxide-freebsd-x64": "4.1.10", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.10", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.10", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.10", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.10", + "@tailwindcss/oxide-linux-x64-musl": "4.1.10", + "@tailwindcss/oxide-wasm32-wasi": "4.1.10", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.10", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.10" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.10.tgz", + "integrity": "sha512-VGLazCoRQ7rtsCzThaI1UyDu/XRYVyH4/EWiaSX6tFglE+xZB5cvtC5Omt0OQ+FfiIVP98su16jDVHDEIuH4iQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.10.tgz", + "integrity": "sha512-ZIFqvR1irX2yNjWJzKCqTCcHZbgkSkSkZKbRM3BPzhDL/18idA8uWCoopYA2CSDdSGFlDAxYdU2yBHwAwx8euQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.10.tgz", + "integrity": "sha512-eCA4zbIhWUFDXoamNztmS0MjXHSEJYlvATzWnRiTqJkcUteSjO94PoRHJy1Xbwp9bptjeIxxBHh+zBWFhttbrQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.10.tgz", + "integrity": "sha512-8/392Xu12R0cc93DpiJvNpJ4wYVSiciUlkiOHOSOQNH3adq9Gi/dtySK7dVQjXIOzlpSHjeCL89RUUI8/GTI6g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.10.tgz", + "integrity": "sha512-t9rhmLT6EqeuPT+MXhWhlRYIMSfh5LZ6kBrC4FS6/+M1yXwfCtp24UumgCWOAJVyjQwG+lYva6wWZxrfvB+NhQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.10.tgz", + "integrity": "sha512-3oWrlNlxLRxXejQ8zImzrVLuZ/9Z2SeKoLhtCu0hpo38hTO2iL86eFOu4sVR8cZc6n3z7eRXXqtHJECa6mFOvA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.10.tgz", + "integrity": "sha512-saScU0cmWvg/Ez4gUmQWr9pvY9Kssxt+Xenfx1LG7LmqjcrvBnw4r9VjkFcqmbBb7GCBwYNcZi9X3/oMda9sqQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.10.tgz", + "integrity": "sha512-/G3ao/ybV9YEEgAXeEg28dyH6gs1QG8tvdN9c2MNZdUXYBaIY/Gx0N6RlJzfLy/7Nkdok4kaxKPHKJUlAaoTdA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.10.tgz", + "integrity": "sha512-LNr7X8fTiKGRtQGOerSayc2pWJp/9ptRYAa4G+U+cjw9kJZvkopav1AQc5HHD+U364f71tZv6XamaHKgrIoVzA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.10.tgz", + "integrity": "sha512-d6ekQpopFQJAcIK2i7ZzWOYGZ+A6NzzvQ3ozBvWFdeyqfOZdYHU66g5yr+/HC4ipP1ZgWsqa80+ISNILk+ae/Q==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@emnapi/wasi-threads": "^1.0.2", + "@napi-rs/wasm-runtime": "^0.2.10", + "@tybys/wasm-util": "^0.9.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.10.tgz", + "integrity": "sha512-i1Iwg9gRbwNVOCYmnigWCCgow8nDWSFmeTUU5nbNx3rqbe4p0kRbEqLwLJbYZKmSSp23g4N6rCDmm7OuPBXhDA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.10.tgz", + "integrity": "sha512-sGiJTjcBSfGq2DVRtaSljq5ZgZS2SDHSIfhOylkBvHVjwOsodBhnb3HdmiKkVuUGKD0I7G63abMOVaskj1KpOA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.10.tgz", + "integrity": "sha512-QWnD5HDY2IADv+vYR82lOhqOlS1jSCUUAmfem52cXAhRTKxpDh3ARX8TTXJTCCO7Rv7cD2Nlekabv02bwP3a2A==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.10", + "@tailwindcss/oxide": "4.1.10", + "tailwindcss": "4.1.10" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6" + } }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", "dependencies": { "@types/ms": "*" } }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" }, "node_modules/@types/estree-jsx": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", "dependencies": { "@types/estree": "*" } }, + "node_modules/@types/fontkit": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/fontkit/-/fontkit-2.0.8.tgz", + "integrity": "sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", "dependencies": { "@types/unist": "*" } @@ -1877,17 +2219,20 @@ "node_modules/@types/js-yaml": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", - "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==" + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" }, "node_modules/@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", "dependencies": { "@types/unist": "*" } @@ -1895,33 +2240,38 @@ "node_modules/@types/mdx": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", - "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==" + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" }, "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" }, "node_modules/@types/nlcst": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "license": "MIT", "dependencies": { "@types/unist": "*" } }, "node_modules/@types/node": { - "version": "22.10.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", - "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", + "version": "24.0.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.1.tgz", + "integrity": "sha512-MX4Zioh39chHlDJbKmEgydJDS3tspMP/lnQC67G3SWsTnb9NeYVWOjkxpOSy4oMfPs4StcWHwBrvUb4ybfnuaw==", + "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~7.8.0" } }, "node_modules/@types/sax": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1929,20 +2279,23 @@ "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" }, "node_modules/@ungap/structured-clone": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", - "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" }, "node_modules/@volar/kit": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.11.tgz", - "integrity": "sha512-ups5RKbMzMCr6RKafcCqDRnJhJDNWqo2vfekwOAj6psZ15v5TlcQFQAyokQJ3wZxVkzxrQM+TqTRDENfQEXpmA==", + "version": "2.4.14", + "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.14.tgz", + "integrity": "sha512-kBcmHjEodtmYGJELHePZd2JdeYm4ZGOd9F/pQ1YETYIzAwy4Z491EkJ1nRSo/GTxwKt0XYwYA/dHSEgXecVHRA==", + "license": "MIT", "dependencies": { - "@volar/language-service": "2.4.11", - "@volar/typescript": "2.4.11", + "@volar/language-service": "2.4.14", + "@volar/typescript": "2.4.14", "typesafe-path": "^0.2.2", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" @@ -1952,21 +2305,23 @@ } }, "node_modules/@volar/language-core": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.11.tgz", - "integrity": "sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==", + "version": "2.4.14", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.14.tgz", + "integrity": "sha512-X6beusV0DvuVseaOEy7GoagS4rYHgDHnTrdOj5jeUb49fW5ceQyP9Ej5rBhqgz2wJggl+2fDbbojq1XKaxDi6w==", + "license": "MIT", "dependencies": { - "@volar/source-map": "2.4.11" + "@volar/source-map": "2.4.14" } }, "node_modules/@volar/language-server": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.11.tgz", - "integrity": "sha512-W9P8glH1M8LGREJ7yHRCANI5vOvTrRO15EMLdmh5WNF9sZYSEbQxiHKckZhvGIkbeR1WAlTl3ORTrJXUghjk7g==", + "version": "2.4.14", + "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.14.tgz", + "integrity": "sha512-P3mGbQbW0v40UYBnb3DAaNtRYx6/MGOVKzdOWmBCGwjUkCR2xBkGrCFt05XnPDwFS/cTWDh2U6Mc9lpZ8Aecfw==", + "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.11", - "@volar/language-service": "2.4.11", - "@volar/typescript": "2.4.11", + "@volar/language-core": "2.4.14", + "@volar/language-service": "2.4.14", + "@volar/typescript": "2.4.14", "path-browserify": "^1.0.1", "request-light": "^0.7.0", "vscode-languageserver": "^9.0.1", @@ -1976,27 +2331,30 @@ } }, "node_modules/@volar/language-service": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.11.tgz", - "integrity": "sha512-KIb6g8gjUkS2LzAJ9bJCLIjfsJjeRtmXlu7b2pDFGD3fNqdbC53cCAKzgWDs64xtQVKYBU13DLWbtSNFtGuMLQ==", + "version": "2.4.14", + "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.14.tgz", + "integrity": "sha512-vNC3823EJohdzLTyjZoCMPwoWCfINB5emusniCkW5CGoGHQov4VVmT6yI5ncgP/NpgAIUv2NEkJooXvLHA4VeQ==", + "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.11", + "@volar/language-core": "2.4.14", "vscode-languageserver-protocol": "^3.17.5", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" } }, "node_modules/@volar/source-map": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.11.tgz", - "integrity": "sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==" + "version": "2.4.14", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.14.tgz", + "integrity": "sha512-5TeKKMh7Sfxo8021cJfmBzcjfY1SsXsPMMjMvjY7ivesdnybqqS+GxGAoXHAOUawQTwtdUxgP65Im+dEmvWtYQ==", + "license": "MIT" }, "node_modules/@volar/typescript": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.11.tgz", - "integrity": "sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==", + "version": "2.4.14", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.14.tgz", + "integrity": "sha512-p8Z6f/bZM3/HyCdRNFZOEEzts51uV8WHeN8Tnfnm2EBv6FDB2TQLzfVx7aJvnl8ofKAOnS64B2O8bImBFaauRw==", + "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.11", + "@volar/language-core": "2.4.14", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } @@ -2005,6 +2363,7 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.11.0.tgz", "integrity": "sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==", + "license": "MIT", "dependencies": { "emmet": "^2.4.3", "jsonc-parser": "^2.3.0", @@ -2016,12 +2375,14 @@ "node_modules/@vscode/l10n": { "version": "0.0.18", "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", - "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==" + "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==", + "license": "MIT" }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2033,6 +2394,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -2041,6 +2403,7 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -2056,6 +2419,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "license": "MIT", "peerDependencies": { "ajv": "^8.5.0" }, @@ -2069,6 +2433,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", "dependencies": { "string-width": "^4.1.0" } @@ -2077,6 +2442,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -2084,12 +2450,14 @@ "node_modules/ansi-align/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/ansi-align/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2103,6 +2471,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2114,6 +2483,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -2125,6 +2495,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -2132,15 +2503,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2153,6 +2520,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -2163,17 +2531,20 @@ "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, "node_modules/aria-query": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -2182,6 +2553,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2191,93 +2563,102 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", "bin": { "astring": "bin/astring" } }, "node_modules/astro": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.1.2.tgz", - "integrity": "sha512-+U5lXPEJZ6cQx0botGbPhzN6XGWRgDtXgy/RUkpTmUj18LW6pbzYo0O0k3hFWOazlI039bZ+4P2e/oSNlKzm0Q==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.9.3.tgz", + "integrity": "sha512-VReZrpUa/3rfeiVvsQ1A2M3ujDPI+pDGIYOMtXPEZwut8tZoEyealXXLjitgCsJ+3dunKGZbg4Eak6i+r0vniw==", + "license": "MIT", "dependencies": { - "@astrojs/compiler": "^2.10.3", - "@astrojs/internal-helpers": "0.4.2", - "@astrojs/markdown-remark": "6.0.1", - "@astrojs/telemetry": "3.2.0", + "@astrojs/compiler": "^2.12.2", + "@astrojs/internal-helpers": "0.6.1", + "@astrojs/markdown-remark": "6.3.2", + "@astrojs/telemetry": "3.3.0", + "@capsizecss/unpack": "^2.4.0", "@oslojs/encoding": "^1.1.0", - "@rollup/pluginutils": "^5.1.3", - "@types/cookie": "^0.6.0", - "acorn": "^8.14.0", + "@rollup/pluginutils": "^5.1.4", + "acorn": "^8.14.1", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", - "ci-info": "^4.1.0", + "ci-info": "^4.2.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", - "cookie": "^0.7.2", + "cookie": "^1.0.2", "cssesc": "^3.0.0", - "debug": "^4.3.7", + "debug": "^4.4.0", "deterministic-object-hash": "^2.0.2", "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", - "es-module-lexer": "^1.5.4", - "esbuild": "^0.21.5", + "es-module-lexer": "^1.6.0", + "esbuild": "^0.25.0", "estree-walker": "^3.0.3", - "fast-glob": "^3.3.2", "flattie": "^1.1.1", + "fontace": "~0.3.0", "github-slugger": "^2.0.0", - "html-escaper": "^3.0.3", + "html-escaper": "3.0.3", "http-cache-semantics": "^4.1.1", + "import-meta-resolve": "^4.1.0", "js-yaml": "^4.1.0", "kleur": "^4.1.5", - "magic-string": "^0.30.14", + "magic-string": "^0.30.17", "magicast": "^0.3.5", - "micromatch": "^4.0.8", - "mrmime": "^2.0.0", + "mrmime": "^2.0.1", "neotraverse": "^0.6.18", - "p-limit": "^6.1.0", - "p-queue": "^8.0.1", - "preferred-pm": "^4.0.0", + "p-limit": "^6.2.0", + "p-queue": "^8.1.0", + "package-manager-detector": "^1.1.0", + "picomatch": "^4.0.2", "prompts": "^2.4.2", "rehype": "^13.0.2", - "semver": "^7.6.3", - "shiki": "^1.23.1", - "tinyexec": "^0.3.1", - "tsconfck": "^3.1.4", - "ultrahtml": "^1.5.3", + "semver": "^7.7.1", + "shiki": "^3.2.1", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.12", + "tsconfck": "^3.1.5", + "ultrahtml": "^1.6.0", + "unifont": "~0.5.0", "unist-util-visit": "^5.0.0", - "unstorage": "^1.14.0", + "unstorage": "^1.15.0", "vfile": "^6.0.3", - "vite": "^6.0.5", - "vitefu": "^1.0.4", - "which-pm": "^3.0.0", + "vite": "^6.3.4", + "vitefu": "^1.0.6", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", - "yocto-spinner": "^0.1.0", - "zod": "^3.23.8", - "zod-to-json-schema": "^3.23.5", + "yocto-spinner": "^0.2.1", + "zod": "^3.24.2", + "zod-to-json-schema": "^3.24.5", "zod-to-ts": "^1.2.0" }, "bin": { "astro": "astro.js" }, "engines": { - "node": "^18.17.1 || ^20.3.0 || >=22.0.0", + "node": "18.20.8 || ^20.3.0 || >=22.0.0", "npm": ">=9.6.5", "pnpm": ">=7.1.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/astrodotbuild" + }, "optionalDependencies": { "sharp": "^0.33.3" } }, "node_modules/astro-expressive-code": { - "version": "0.38.3", - "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.38.3.tgz", - "integrity": "sha512-Tvdc7RV0G92BbtyEOsfJtXU35w41CkM94fOAzxbQP67Wj5jArfserJ321FO4XA7WG9QMV0GIBmQq77NBIRDzpQ==", + "version": "0.41.2", + "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.41.2.tgz", + "integrity": "sha512-HN0jWTnhr7mIV/2e6uu4PPRNNo/k4UEgTLZqbp3MrHU+caCARveG2yZxaZVBmxyiVdYqW5Pd3u3n2zjnshixbw==", + "license": "MIT", "dependencies": { - "rehype-expressive-code": "^0.38.3" + "rehype-expressive-code": "^0.41.2" }, "peerDependencies": { "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0" @@ -2288,6 +2669,7 @@ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", "hasInstallScript": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "color": "^4.2.3", @@ -2322,46 +2704,11 @@ "@img/sharp-win32-x64": "0.33.5" } }, - "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/axobject-query": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -2369,67 +2716,96 @@ "node_modules/b4a": { "version": "1.6.7", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==" + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "license": "Apache-2.0" }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, "node_modules/bare-events": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", - "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", + "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", + "license": "Apache-2.0", "optional": true }, "node_modules/bare-fs": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", - "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", + "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", + "license": "Apache-2.0", "optional": true, "dependencies": { - "bare-events": "^2.0.0", - "bare-path": "^2.0.0", - "bare-stream": "^2.0.0" + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } } }, "node_modules/bare-os": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", - "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", - "optional": true + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", + "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "bare": ">=1.14.0" + } }, "node_modules/bare-path": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", - "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "license": "Apache-2.0", "optional": true, "dependencies": { - "bare-os": "^2.1.0" + "bare-os": "^3.0.1" } }, "node_modules/bare-stream": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.1.tgz", - "integrity": "sha512-eVZbtKM+4uehzrsj49KtCy3Pbg7kO1pJ3SKZ1SFrIH/0pnj9scuGGgUlNDf/7qS8WKtGdiJY5Kyhs/ivYPTB/g==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", + "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "streamx": "^2.21.0" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } } }, "node_modules/base-64": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", - "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", @@ -2448,12 +2824,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/bcp-47": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.0.tgz", "integrity": "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==", + "license": "MIT", "dependencies": { "is-alphabetical": "^2.0.0", "is-alphanumerical": "^2.0.0", @@ -2468,41 +2846,54 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "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/blob-to-buffer": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/blob-to-buffer/-/blob-to-buffer-1.2.9.tgz", + "integrity": "sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==", + "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/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" }, "node_modules/boxen": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", + "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^8.0.0", @@ -2520,18 +2911,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -2539,35 +2923,13 @@ "node": ">=8" } }, - "node_modules/browserslist": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", - "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "base64-js": "^1.1.2" } }, "node_modules/buffer": { @@ -2588,6 +2950,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -2596,12 +2959,14 @@ "node_modules/call-me-maybe": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==" + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "license": "MIT" }, "node_modules/camelcase": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "license": "MIT", "engines": { "node": ">=16" }, @@ -2609,37 +2974,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001690", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", - "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, "node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2649,6 +2988,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -2660,6 +3000,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2669,6 +3010,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2678,6 +3020,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2687,6 +3030,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2696,6 +3040,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", "dependencies": { "readdirp": "^4.0.1" }, @@ -2709,18 +3054,20 @@ "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" }, "node_modules/ci-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", - "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", + "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } @@ -2729,6 +3076,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -2740,6 +3088,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -2753,6 +3102,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -2761,6 +3111,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2774,12 +3125,14 @@ "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2793,6 +3146,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2804,6 +3158,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2816,26 +3171,29 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/code-error-fragment": { - "version": "0.0.230", - "resolved": "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz", - "integrity": "sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==", - "engines": { - "node": ">= 4" - } - }, "node_modules/collapse-white-space": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2845,6 +3203,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" @@ -2857,6 +3216,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2867,12 +3227,14 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/color-string": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -2882,70 +3244,55 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "engines": { - "node": ">= 6" - } - }, "node_modules/common-ancestor-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==" - }, - "node_modules/consola": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.3.3.tgz", - "integrity": "sha512-Qil5KwghMzlqd51UXM0b6fyaGHtOC22scxrwrz4A2882LyUMwQjnvaedN1HAeXzphspQ6CpHkzMAWxBTUruDLg==", - "engines": { - "node": "^14.18.0 || >=16.10.0" - } + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "license": "ISC" }, "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=18" } }, "node_modules/cookie-es": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", - "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==" + "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", + "license": "MIT" }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" + "node-fetch": "^2.7.0" } }, "node_modules/crossws": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.1.tgz", - "integrity": "sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "license": "MIT", "dependencies": { "uncrypto": "^0.1.3" } }, "node_modules/css-selector-parser": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.0.5.tgz", - "integrity": "sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.1.2.tgz", + "integrity": "sha512-WfUcL99xWDs7b3eZPoRszWVfbNo8ErCF15PTvVROjkShGlAfjIkG6hlfj/sl6/rfo5Q9x9ryJ3VqVnAZDA+gcw==", "funding": [ { "type": "github", @@ -2955,12 +3302,27 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ] + ], + "license": "MIT" + }, + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -2969,9 +3331,10 @@ } }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -2985,9 +3348,10 @@ } }, "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", + "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", + "license": "MIT", "dependencies": { "character-entities": "^2.0.0" }, @@ -3000,6 +3364,7 @@ "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" }, @@ -3014,6 +3379,7 @@ "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" } @@ -3021,12 +3387,14 @@ "node_modules/defu": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==" + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "license": "MIT" }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3035,28 +3403,22 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/destr": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz", - "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==" - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" }, "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", "engines": { "node": ">=8" } @@ -3065,6 +3427,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", + "license": "MIT", "dependencies": { "base-64": "^1.0.0" }, @@ -3075,12 +3438,14 @@ "node_modules/devalue": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", - "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==" + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", + "license": "MIT" }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", "dependencies": { "dequal": "^2.0.0" }, @@ -3089,15 +3454,17 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" }, "node_modules/diff": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -3106,6 +3473,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "license": "MIT", "bin": { "direction": "cli.js" }, @@ -3117,35 +3485,35 @@ "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" }, "node_modules/dset": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" }, "node_modules/emmet": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.11.tgz", "integrity": "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==", + "license": "MIT", + "workspaces": [ + "./packages/scanner", + "./packages/abbreviation", + "./packages/css-abbreviation", + "./" + ], "dependencies": { "@emmetio/abbreviation": "^2.3.3", "@emmetio/css-abbreviation": "^2.1.8" @@ -3154,17 +3522,14 @@ "node_modules/emoji-regex": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==" - }, - "node_modules/emoji-regex-xs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", - "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==" + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "license": "MIT" }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3173,14 +3538,29 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -3189,14 +3569,16 @@ } }, "node_modules/es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "license": "MIT" }, "node_modules/esast-util-from-estree": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", @@ -3212,6 +3594,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", @@ -3224,46 +3607,50 @@ } }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" } }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -3271,12 +3658,14 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -3284,22 +3673,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/estree-util-attach-comments": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" }, @@ -3312,6 +3690,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", @@ -3327,6 +3706,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -3336,6 +3716,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" @@ -3349,6 +3730,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", @@ -3363,6 +3745,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" @@ -3376,6 +3759,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -3384,6 +3768,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3391,74 +3776,108 @@ "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" }, "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/expressive-code": { - "version": "0.38.3", - "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.38.3.tgz", - "integrity": "sha512-COM04AiUotHCKJgWdn7NtW2lqu8OW8owAidMpkXt1qxrZ9Q2iC7+tok/1qIn2ocGnczvr9paIySgGnEwFeEQ8Q==", + "version": "0.41.2", + "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.41.2.tgz", + "integrity": "sha512-aLZiZaqorRtNExtGpUjK9zFH9aTpWeoTXMyLo4b4IcuXfPqtLPPxhRm/QlPb8QqIcMMXnSiGRHSFpQfX0m7HJw==", + "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.38.3", - "@expressive-code/plugin-frames": "^0.38.3", - "@expressive-code/plugin-shiki": "^0.38.3", - "@expressive-code/plugin-text-markers": "^0.38.3" + "@expressive-code/core": "^0.41.2", + "@expressive-code/plugin-frames": "^0.41.2", + "@expressive-code/plugin-shiki": "^0.41.2", + "@expressive-code/plugin-text-markers": "^0.41.2" } }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" } }, "node_modules/fast-uri": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", - "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", - "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, + "node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -3466,91 +3885,63 @@ "node": ">=8" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up-simple": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", - "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-yarn-workspace-root2": { - "version": "1.2.16", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", - "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", - "dependencies": { - "micromatch": "^4.0.2", - "pkg-dir": "^4.2.0" - } - }, "node_modules/flattie": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "node_modules/fontace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.3.0.tgz", + "integrity": "sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg==", + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@types/fontkit": "^2.0.8", + "fontkit": "^2.0.4" } }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" } }, "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "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==" + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3559,18 +3950,11 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -3579,6 +3963,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -3589,36 +3974,20 @@ "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==" + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" }, "node_modules/github-slugger": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" - }, - "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3629,53 +3998,31 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, "node_modules/h3": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.13.0.tgz", - "integrity": "sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.3.tgz", + "integrity": "sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==", + "license": "MIT", "dependencies": { "cookie-es": "^1.2.2", - "crossws": ">=0.2.0 <0.4.0", + "crossws": "^0.3.4", "defu": "^6.1.4", - "destr": "^2.0.3", + "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", - "ohash": "^1.1.4", + "node-mock-http": "^1.0.0", "radix3": "^1.1.2", - "ufo": "^1.5.4", - "uncrypto": "^0.1.3", - "unenv": "^1.10.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" + "ufo": "^1.6.1", + "uncrypto": "^0.1.3" } }, "node_modules/hast-util-embedded": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-is-element": "^3.0.0" @@ -3689,6 +4036,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/hast-util-format/-/hast-util-format-1.1.0.tgz", "integrity": "sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-embedded": "^3.0.0", @@ -3707,6 +4055,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "devlop": "^1.1.0", @@ -3721,15 +4070,16 @@ } }, "node_modules/hast-util-from-parse5": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.2.tgz", - "integrity": "sha512-SfMzfdAi/zAoZ1KkFEyyeXBn7u/ShQrfd675ZEE9M3qj+PMFX05xubzRyF76CCSJu8au9jgVxDV1+okFvgZU4A==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "hastscript": "^9.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "vfile": "^6.0.0", "vfile-location": "^5.0.0", "web-namespaces": "^2.0.0" @@ -3743,6 +4093,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -3755,6 +4106,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz", "integrity": "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -3767,6 +4119,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -3779,6 +4132,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz", "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-embedded": "^3.0.0", @@ -3795,6 +4149,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -3807,6 +4162,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz", "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-embedded": "^3.0.0", @@ -3823,6 +4179,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -3844,9 +4201,10 @@ } }, "node_modules/hast-util-select": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.3.tgz", - "integrity": "sha512-OVRQlQ1XuuLP8aFVLYmC2atrfWHS5UD3shonxpnyrjcCkwtvmt/+N6kYJdcY4mkMJhxp4kj2EFIxQ9kvkkt/eQ==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.4.tgz", + "integrity": "sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -3859,7 +4217,7 @@ "hast-util-to-string": "^3.0.0", "hast-util-whitespace": "^3.0.0", "nth-check": "^2.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" @@ -3870,9 +4228,10 @@ } }, "node_modules/hast-util-to-estree": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.1.tgz", - "integrity": "sha512-IWtwwmPskfSmma9RpzCappDUitC8t5jhAynHhc1m2+5trOgsrp7txscUSavc5Ic8PATyAjfrCK1wgtxh2cICVQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -3885,9 +4244,9 @@ "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", - "style-to-object": "^1.0.0", + "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" }, @@ -3897,9 +4256,10 @@ } }, "node_modules/hast-util-to-html": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz", - "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -3908,7 +4268,7 @@ "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" @@ -3919,9 +4279,10 @@ } }, "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.2.tgz", - "integrity": "sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", @@ -3933,9 +4294,9 @@ "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", - "style-to-object": "^1.0.0", + "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" }, @@ -3948,6 +4309,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", @@ -3962,10 +4324,21 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-parse5/node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/hast-util-to-string": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -3978,6 +4351,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -3993,6 +4367,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -4002,14 +4377,15 @@ } }, "node_modules/hastscript": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.0.tgz", - "integrity": "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" }, "funding": { @@ -4020,12 +4396,14 @@ "node_modules/html-escaper": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", - "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==" + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", + "license": "MIT" }, "node_modules/html-void-elements": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4035,20 +4413,23 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-3.0.1.tgz", "integrity": "sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -4060,6 +4441,15 @@ "node": ">= 0.8" } }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/i18next": { "version": "23.16.8", "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.8.tgz", @@ -4078,6 +4468,7 @@ "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" } ], + "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.2" } @@ -4099,12 +4490,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/import-meta-resolve": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4113,22 +4506,26 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "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==" + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" }, "node_modules/inline-style-parser": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "license": "MIT" }, "node_modules/iron-webcrypto": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/brc-dd" } @@ -4137,6 +4534,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4146,6 +4544,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" @@ -4158,37 +4557,14 @@ "node_modules/is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" }, "node_modules/is-decimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4198,6 +4574,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -4212,6 +4589,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4220,6 +4598,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } @@ -4228,6 +4607,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -4239,6 +4619,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4248,6 +4629,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", "dependencies": { "is-docker": "^3.0.0" }, @@ -4265,6 +4647,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -4273,6 +4656,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -4284,6 +4668,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" }, @@ -4294,42 +4679,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/jiti": { - "version": "1.21.7", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", - "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "license": "MIT", "bin": { - "jiti": "bin/jiti.js" + "jiti": "lib/jiti-cli.mjs" } }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4340,29 +4709,20 @@ "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/json-to-ast": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json-to-ast/-/json-to-ast-2.1.0.tgz", - "integrity": "sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==", - "dependencies": { - "code-error-fragment": "0.0.230", - "grapheme-splitter": "^1.0.4" - }, - "engines": { - "node": ">= 4" - } + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" }, "node_modules/jsonc-parser": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", - "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==" + "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", + "license": "MIT" }, "node_modules/jsonpointer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4371,96 +4731,268 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, "engines": { - "node": ">=14" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/load-yaml-file": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", - "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==", - "dependencies": { - "graceful-fs": "^4.1.5", - "js-yaml": "^3.13.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0" + "type": "opencollective", + "url": "https://opencollective.com/parcel" }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6" - } - }, - "node_modules/load-yaml-file/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/load-yaml-file/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "node": ">= 12.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/load-yaml-file/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" + "node": ">= 12.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=8" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4469,12 +5001,14 @@ "node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -4483,6 +5017,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "license": "MIT", "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", @@ -4493,6 +5028,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", "engines": { "node": ">=16" }, @@ -4504,6 +5040,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4513,6 +5050,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -4524,12 +5062,14 @@ } }, "node_modules/mdast-util-directive": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz", - "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", + "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", + "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", @@ -4546,6 +5086,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", @@ -4561,6 +5102,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -4581,9 +5123,10 @@ } }, "node_modules/mdast-util-gfm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", - "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", @@ -4602,6 +5145,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", @@ -4615,9 +5159,10 @@ } }, "node_modules/mdast-util-gfm-footnote": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", - "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", @@ -4634,6 +5179,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", @@ -4648,6 +5194,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -4664,6 +5211,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -4679,6 +5227,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", @@ -4695,6 +5244,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -4709,9 +5259,10 @@ } }, "node_modules/mdast-util-mdx-jsx": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", - "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -4735,6 +5286,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -4752,6 +5304,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" @@ -4765,6 +5318,7 @@ "version": "13.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -4785,6 +5339,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -4805,6 +5360,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0" }, @@ -4813,18 +5369,25 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "license": "CC0-1.0" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromark": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", - "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", "funding": [ { "type": "GitHub Sponsors", @@ -4835,6 +5398,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", @@ -4856,9 +5420,9 @@ } }, "node_modules/micromark-core-commonmark": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz", - "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", "funding": [ { "type": "GitHub Sponsors", @@ -4869,6 +5433,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", @@ -4892,6 +5457,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -4910,6 +5476,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", @@ -4929,6 +5496,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", @@ -4944,6 +5512,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", @@ -4963,6 +5532,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", @@ -4977,9 +5547,10 @@ } }, "node_modules/micromark-extension-gfm-table": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", - "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -4996,6 +5567,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" }, @@ -5008,6 +5580,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -5021,9 +5594,9 @@ } }, "node_modules/micromark-extension-mdx-expression": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", - "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", "funding": [ { "type": "GitHub Sponsors", @@ -5034,6 +5607,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -5046,11 +5620,11 @@ } }, "node_modules/micromark-extension-mdx-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz", - "integrity": "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", "dependencies": { - "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", @@ -5071,6 +5645,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" }, @@ -5083,6 +5658,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", @@ -5102,6 +5678,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -5132,6 +5709,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", @@ -5152,6 +5730,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", @@ -5160,9 +5739,9 @@ } }, "node_modules/micromark-factory-mdx-expression": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.2.tgz", - "integrity": "sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", "funding": [ { "type": "GitHub Sponsors", @@ -5173,6 +5752,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -5199,6 +5779,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -5218,6 +5799,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", @@ -5239,6 +5821,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", @@ -5260,6 +5843,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -5279,6 +5863,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } @@ -5297,6 +5882,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", @@ -5317,6 +5903,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -5336,6 +5923,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } @@ -5354,6 +5942,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", @@ -5374,12 +5963,13 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-events-to-acorn": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", - "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", "funding": [ { "type": "GitHub Sponsors", @@ -5390,8 +5980,8 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { - "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", @@ -5414,7 +6004,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-normalize-identifier": { "version": "2.0.1", @@ -5430,6 +6021,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } @@ -5448,6 +6040,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" } @@ -5466,6 +6059,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", @@ -5473,9 +6067,9 @@ } }, "node_modules/micromark-util-subtokenize": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz", - "integrity": "sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", "funding": [ { "type": "GitHub Sponsors", @@ -5486,6 +6080,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", @@ -5506,12 +6101,13 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-types": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", - "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", "funding": [ { "type": "GitHub Sponsors", @@ -5521,12 +6117,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -5539,6 +6137,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -5546,31 +6145,22 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "engines": { "node": ">= 0.6" @@ -5580,6 +6170,7 @@ "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" }, @@ -5587,24 +6178,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "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" } @@ -5613,19 +6191,49 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "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==" + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" }, "node_modules/mrmime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", "engines": { "node": ">=10" } @@ -5633,33 +6241,26 @@ "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==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/muggle-string": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", - "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==" - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -5668,14 +6269,16 @@ } }, "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + "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/neotraverse": { "version": "0.6.18", "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "license": "MIT", "engines": { "node": ">= 10" } @@ -5684,6 +6287,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0" }, @@ -5693,9 +6297,10 @@ } }, "node_modules/node-abi": { - "version": "3.71.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz", - "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==", + "version": "3.75.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz", + "integrity": "sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==", + "license": "MIT", "dependencies": { "semver": "^7.3.5" }, @@ -5706,30 +6311,46 @@ "node_modules/node-addon-api": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } }, "node_modules/node-fetch-native": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", - "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==" + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz", + "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==", + "license": "MIT" }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" + "node_modules/node-mock-http": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.0.tgz", + "integrity": "sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==", + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5738,6 +6359,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -5745,26 +6367,11 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } - }, "node_modules/ofetch": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==", + "license": "MIT", "dependencies": { "destr": "^2.0.3", "node-fetch-native": "^1.6.4", @@ -5772,14 +6379,16 @@ } }, "node_modules/ohash": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.4.tgz", - "integrity": "sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==" + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -5791,30 +6400,40 @@ "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/oniguruma-parser": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", + "license": "MIT" + }, "node_modules/oniguruma-to-es": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.10.0.tgz", - "integrity": "sha512-zapyOUOCJxt+xhiNRPPMtfJkHGsZ98HHB9qJEkdT8BGytO/+kpe4m1Ngf0MzbzTmhacn11w9yGeDP6tzDhnCdg==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz", + "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==", + "license": "MIT", "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^5.1.1", - "regex-recursion": "^5.1.1" + "oniguruma-parser": "^0.12.1", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" } }, "node_modules/openapi-types": { "version": "12.1.3", "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "license": "MIT", "peer": true }, "node_modules/p-limit": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "license": "MIT", "dependencies": { "yocto-queue": "^1.1.1" }, @@ -5825,35 +6444,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-queue": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz", - "integrity": "sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.0.tgz", + "integrity": "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==", + "license": "MIT", "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" @@ -5869,6 +6464,7 @@ "version": "6.1.4", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -5876,23 +6472,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" + "node_modules/package-manager-detector": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz", + "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==", + "license": "MIT" }, "node_modules/pagefind": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.3.0.tgz", "integrity": "sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==", + "license": "MIT", "bin": { "pagefind": "lib/runner/bin.cjs" }, @@ -5904,10 +6494,17 @@ "@pagefind/windows-x64": "1.3.0" } }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, "node_modules/parse-entities": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", @@ -5925,12 +6522,14 @@ "node_modules/parse-entities/node_modules/@types/unist": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" }, "node_modules/parse-latin": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0", "@types/unist": "^3.0.0", @@ -5945,11 +6544,12 @@ } }, "node_modules/parse5": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", - "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", "dependencies": { - "entities": "^4.5.0" + "entities": "^6.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -5958,58 +6558,20 @@ "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -6017,37 +6579,10 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.5.tgz", + "integrity": "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==", "funding": [ { "type": "opencollective", @@ -6062,8 +6597,9 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -6071,74 +6607,6 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, "node_modules/postcss-nested": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", @@ -6153,6 +6621,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.1.1" }, @@ -6167,6 +6636,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -6175,22 +6645,18 @@ "node": ">=4" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, "node_modules/prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "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": "^1.0.1", + "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", @@ -6206,9 +6672,10 @@ } }, "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz", + "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==", + "license": "MIT", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -6220,6 +6687,7 @@ "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", @@ -6231,23 +6699,11 @@ "node": ">=6" } }, - "node_modules/preferred-pm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-4.0.0.tgz", - "integrity": "sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==", - "dependencies": { - "find-up-simple": "^1.0.0", - "find-yarn-workspace-root2": "1.2.16", - "which-pm": "^3.0.0" - }, - "engines": { - "node": ">=18.12" - } - }, "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "license": "MIT", "optional": true, "peer": true, "bin": { @@ -6261,9 +6717,10 @@ } }, "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", "engines": { "node": ">=6" } @@ -6272,6 +6729,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -6284,14 +6742,16 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -6301,6 +6761,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -6323,22 +6784,20 @@ "type": "consulting", "url": "https://feross.org/support" } - ] - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + ], + "license": "MIT" }, "node_modules/radix3": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", - "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==" + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", + "license": "MIT" }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6347,6 +6806,7 @@ "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", @@ -6357,18 +6817,11 @@ "rc": "cli.js" } }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dependencies": { - "pify": "^2.3.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", @@ -6379,11 +6832,12 @@ } }, "node_modules/readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", "engines": { - "node": ">= 14.16.0" + "node": ">= 14.18.0" }, "funding": { "type": "individual", @@ -6394,6 +6848,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", @@ -6408,6 +6863,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz", "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==", + "license": "MIT", "dependencies": { "acorn-jsx": "^5.0.0", "estree-util-to-js": "^2.0.0", @@ -6424,6 +6880,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "esast-util-from-js": "^2.0.0", @@ -6439,6 +6896,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", @@ -6450,37 +6908,35 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, "node_modules/regex": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", - "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "license": "MIT", "dependencies": { "regex-utilities": "^2.3.0" } }, "node_modules/regex-recursion": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", - "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "license": "MIT", "dependencies": { - "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "node_modules/regex-utilities": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", - "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==" + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "license": "MIT" }, "node_modules/rehype": { "version": "13.0.2", "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "rehype-parse": "^9.0.0", @@ -6493,17 +6949,19 @@ } }, "node_modules/rehype-expressive-code": { - "version": "0.38.3", - "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.38.3.tgz", - "integrity": "sha512-RYSSDkMBikoTbycZPkcWp6ELneANT4eTpND1DSRJ6nI2eVFUwTBDCvE2vO6jOOTaavwnPiydi4i/87NRyjpdOA==", + "version": "0.41.2", + "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.41.2.tgz", + "integrity": "sha512-vHYfWO9WxAw6kHHctddOt+P4266BtyT1mrOIuxJD+1ELuvuJAa5uBIhYt0OVMyOhlvf57hzWOXJkHnMhpaHyxw==", + "license": "MIT", "dependencies": { - "expressive-code": "^0.38.3" + "expressive-code": "^0.41.2" } }, "node_modules/rehype-format": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/rehype-format/-/rehype-format-5.0.1.tgz", "integrity": "sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-format": "^1.0.0" @@ -6517,6 +6975,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-html": "^2.0.0", @@ -6531,6 +6990,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", @@ -6545,6 +7005,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", @@ -6559,6 +7020,7 @@ "version": "10.0.1", "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-to-html": "^9.0.0", @@ -6570,9 +7032,10 @@ } }, "node_modules/remark-directive": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz", - "integrity": "sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", + "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-directive": "^3.0.0", @@ -6585,9 +7048,10 @@ } }, "node_modules/remark-gfm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", - "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", @@ -6605,6 +7069,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "license": "MIT", "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" @@ -6618,6 +7083,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", @@ -6630,9 +7096,10 @@ } }, "node_modules/remark-rehype": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", - "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -6649,6 +7116,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", + "license": "MIT", "dependencies": { "retext": "^9.0.0", "retext-smartypants": "^6.0.0", @@ -6663,6 +7131,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", @@ -6676,12 +7145,14 @@ "node_modules/request-light": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz", - "integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==" + "integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==", + "license": "MIT" }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6690,33 +7161,22 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "license": "MIT" }, "node_modules/retext": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0", "retext-latin": "^4.0.0", @@ -6732,6 +7192,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0", "parse-latin": "^7.0.0", @@ -6746,6 +7207,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", @@ -6760,6 +7222,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", @@ -6771,20 +7234,22 @@ } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rollup": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", - "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", + "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", + "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.7" }, "bin": { "rollup": "dist/bin/rollup" @@ -6794,28 +7259,35 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.29.1", - "@rollup/rollup-android-arm64": "4.29.1", - "@rollup/rollup-darwin-arm64": "4.29.1", - "@rollup/rollup-darwin-x64": "4.29.1", - "@rollup/rollup-freebsd-arm64": "4.29.1", - "@rollup/rollup-freebsd-x64": "4.29.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", - "@rollup/rollup-linux-arm-musleabihf": "4.29.1", - "@rollup/rollup-linux-arm64-gnu": "4.29.1", - "@rollup/rollup-linux-arm64-musl": "4.29.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", - "@rollup/rollup-linux-riscv64-gnu": "4.29.1", - "@rollup/rollup-linux-s390x-gnu": "4.29.1", - "@rollup/rollup-linux-x64-gnu": "4.29.1", - "@rollup/rollup-linux-x64-musl": "4.29.1", - "@rollup/rollup-win32-arm64-msvc": "4.29.1", - "@rollup/rollup-win32-ia32-msvc": "4.29.1", - "@rollup/rollup-win32-x64-msvc": "4.29.1", + "@rollup/rollup-android-arm-eabi": "4.43.0", + "@rollup/rollup-android-arm64": "4.43.0", + "@rollup/rollup-darwin-arm64": "4.43.0", + "@rollup/rollup-darwin-x64": "4.43.0", + "@rollup/rollup-freebsd-arm64": "4.43.0", + "@rollup/rollup-freebsd-x64": "4.43.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", + "@rollup/rollup-linux-arm-musleabihf": "4.43.0", + "@rollup/rollup-linux-arm64-gnu": "4.43.0", + "@rollup/rollup-linux-arm64-musl": "4.43.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-musl": "4.43.0", + "@rollup/rollup-linux-s390x-gnu": "4.43.0", + "@rollup/rollup-linux-x64-gnu": "4.43.0", + "@rollup/rollup-linux-x64-musl": "4.43.0", + "@rollup/rollup-win32-arm64-msvc": "4.43.0", + "@rollup/rollup-win32-ia32-msvc": "4.43.0", + "@rollup/rollup-win32-x64-msvc": "4.43.0", "fsevents": "~2.3.2" } }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -6834,6 +7306,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -6855,17 +7328,20 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6874,18 +7350,18 @@ } }, "node_modules/send": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.1.0.tgz", - "integrity": "sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", "dependencies": { "debug": "^4.3.5", - "destroy": "^1.2.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", - "fresh": "^0.5.2", + "fresh": "^2.0.0", "http-errors": "^2.0.0", - "mime-types": "^2.1.35", + "mime-types": "^3.0.1", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", @@ -6898,18 +7374,21 @@ "node_modules/server-destroy": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==" + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "license": "ISC" }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" }, "node_modules/sharp": { "version": "0.32.6", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.2", @@ -6927,51 +7406,22 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, "node_modules/shiki": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.26.1.tgz", - "integrity": "sha512-Gqg6DSTk3wYqaZ5OaYtzjcdxcBvX5kCy24yvRJEgjT5U+WHlmqCThLuBUx0juyxQBi+6ug53IGeuQS07DWwpcw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.6.0.tgz", + "integrity": "sha512-tKn/Y0MGBTffQoklaATXmTqDU02zx8NYBGQ+F6gy87/YjKbizcLd+Cybh/0ZtOBX9r1NEnAy/GTRDKtOsc1L9w==", + "license": "MIT", "dependencies": { - "@shikijs/core": "1.26.1", - "@shikijs/engine-javascript": "1.26.1", - "@shikijs/engine-oniguruma": "1.26.1", - "@shikijs/langs": "1.26.1", - "@shikijs/themes": "1.26.1", - "@shikijs/types": "1.26.1", - "@shikijs/vscode-textmate": "^10.0.1", + "@shikijs/core": "3.6.0", + "@shikijs/engine-javascript": "3.6.0", + "@shikijs/engine-oniguruma": "3.6.0", + "@shikijs/langs": "3.6.0", + "@shikijs/themes": "3.6.0", + "@shikijs/types": "3.6.0", + "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", @@ -6989,7 +7439,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/simple-get": { "version": "4.0.1", @@ -7009,6 +7460,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -7019,6 +7471,7 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", "dependencies": { "is-arrayish": "^0.3.1" } @@ -7026,12 +7479,14 @@ "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" }, "node_modules/sitemap": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-8.0.0.tgz", "integrity": "sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==", + "license": "MIT", "dependencies": { "@types/node": "^17.0.5", "@types/sax": "^1.2.1", @@ -7049,12 +7504,26 @@ "node_modules/sitemap/node_modules/@types/node": { "version": "17.0.45", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "license": "MIT" + }, + "node_modules/smol-toml": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.4.tgz", + "integrity": "sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } }, "node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } @@ -7063,6 +7532,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -7071,20 +7541,17 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, "node_modules/starlight-openapi": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/starlight-openapi/-/starlight-openapi-0.9.0.tgz", "integrity": "sha512-YKsYNqYhWu3VF91z4XB1os4ZXwTsgz1LCZggeK/G6RguV4hcaFH18wHYGtO9icqPR+ZbJyrLAdlAjF3CvGBAWA==", + "license": "MIT", "dependencies": { "@readme/openapi-parser": "^2.5.0", "github-slugger": "^2.0.0" @@ -7098,9 +7565,10 @@ } }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7108,15 +7576,16 @@ "node_modules/stream-replace-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz", - "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==" + "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==", + "license": "MIT" }, "node_modules/streamx": { - "version": "2.21.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.1.tgz", - "integrity": "sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", + "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", + "license": "MIT", "dependencies": { "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", "text-decoder": "^1.1.0" }, "optionalDependencies": { @@ -7127,6 +7596,7 @@ "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" } @@ -7135,6 +7605,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", @@ -7147,48 +7618,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/stringify-entities": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" @@ -7202,6 +7636,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -7212,255 +7647,141 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, "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/style-to-js": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", + "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.8" + } + }, "node_modules/style-to-object": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "license": "MIT", "dependencies": { "inline-style-parser": "0.2.4" } }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/tailwindcss": { - "version": "3.4.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", - "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.6.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.2", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.6", - "lilconfig": "^3.1.3", - "micromatch": "^4.0.8", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.1.1", - "postcss": "^8.4.47", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.2", - "postcss-nested": "^6.2.0", - "postcss-selector-parser": "^6.1.2", - "resolve": "^1.22.8", - "sucrase": "^3.35.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.10.tgz", + "integrity": "sha512-P3nr6WkvKV/ONsTzj6Gb57sWPMX29EPNPopo7+FcpkQaNsrNpZ1pv8QmrYI2RqEKD7mlGqLnGovlcYnBK0IqUA==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=6" } }, - "node_modules/tailwindcss/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "license": "ISC", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" }, "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/tailwindcss/node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tailwindcss/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tailwindcss/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tailwindcss/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" + "node": ">=18" } }, "node_modules/tar-fs": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", - "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.9.tgz", + "integrity": "sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA==", + "license": "MIT", "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" } }, "node_modules/tar-stream": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "license": "MIT", "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, + "node_modules/tar/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/text-decoder": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "license": "Apache-2.0", "dependencies": { "b4a": "^1.6.4" } }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" }, "node_modules/tinyexec": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -7472,14 +7793,22 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { "node": ">=0.6" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7489,20 +7818,17 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" - }, "node_modules/tsconfck": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.4.tgz", - "integrity": "sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", + "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", + "license": "MIT", "bin": { "tsconfck": "bin/tsconfck.js" }, @@ -7522,12 +7848,13 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "optional": true + "license": "0BSD" }, "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" }, @@ -7536,9 +7863,10 @@ } }, "node_modules/type-fest": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.31.0.tgz", - "integrity": "sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -7549,12 +7877,14 @@ "node_modules/typesafe-path": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/typesafe-path/-/typesafe-path-0.2.2.tgz", - "integrity": "sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==" + "integrity": "sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==", + "license": "MIT" }, "node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -7564,49 +7894,63 @@ } }, "node_modules/typescript-auto-import-cache": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.5.tgz", - "integrity": "sha512-fAIveQKsoYj55CozUiBoj4b/7WpN0i4o74wiGY5JVUEoD0XiqDk1tJqTEjgzL2/AizKQrXxyRosSebyDzBZKjw==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.6.tgz", + "integrity": "sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==", + "license": "MIT", "dependencies": { "semver": "^7.3.8" } }, "node_modules/ufo": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "license": "MIT" }, "node_modules/ultrahtml": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.3.tgz", - "integrity": "sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", + "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", + "license": "MIT" }, "node_modules/uncrypto": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", - "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==" + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "license": "MIT" }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "license": "MIT" }, - "node_modules/unenv": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.10.0.tgz", - "integrity": "sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==", + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", "dependencies": { - "consola": "^3.2.3", - "defu": "^6.1.4", - "mime": "^3.0.0", - "node-fetch-native": "^1.6.4", - "pathe": "^1.1.2" + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" } }, "node_modules/unified": { "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", @@ -7621,10 +7965,21 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unifont": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.5.0.tgz", + "integrity": "sha512-4DueXMP5Hy4n607sh+vJ+rajoLu778aU3GzqeTCqsD/EaUcvqZT9wPC8kgK6Vjh22ZskrxyRCR71FwNOaYn6jA==", + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0", + "ohash": "^2.0.0" + } + }, "node_modules/unist-util-find-after": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" @@ -7638,6 +7993,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7650,6 +8006,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "array-iterate": "^2.0.0" @@ -7663,6 +8020,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7675,6 +8033,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7687,6 +8046,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" @@ -7700,6 +8060,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7712,6 +8073,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", @@ -7726,6 +8088,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7738,6 +8101,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" @@ -7748,38 +8112,39 @@ } }, "node_modules/unstorage": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.14.4.tgz", - "integrity": "sha512-1SYeamwuYeQJtJ/USE1x4l17LkmQBzg7deBJ+U9qOBoHo15d1cDxG4jM31zKRgF7pG0kirZy4wVMX6WL6Zoscg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.0.tgz", + "integrity": "sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==", + "license": "MIT", "dependencies": { "anymatch": "^3.1.3", - "chokidar": "^3.6.0", - "destr": "^2.0.3", - "h3": "^1.13.0", + "chokidar": "^4.0.3", + "destr": "^2.0.5", + "h3": "^1.15.2", "lru-cache": "^10.4.3", - "node-fetch-native": "^1.6.4", + "node-fetch-native": "^1.6.6", "ofetch": "^1.4.1", - "ufo": "^1.5.4" + "ufo": "^1.6.1" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", - "@azure/identity": "^4.5.0", + "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", - "@capacitor/preferences": "^6.0.3", - "@deno/kv": ">=0.8.4", + "@capacitor/preferences": "^6.0.3 || ^7.0.0", + "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", - "@vercel/blob": ">=0.27.0", + "@vercel/blob": ">=0.27.1", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", - "uploadthing": "^7.4.1" + "uploadthing": "^7.4.4" }, "peerDependenciesMeta": { "@azure/app-configuration": { @@ -7838,89 +8203,17 @@ } } }, - "node_modules/unstorage/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/unstorage/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/unstorage/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "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==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" @@ -7934,6 +8227,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" @@ -7947,6 +8241,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" @@ -7957,13 +8252,17 @@ } }, "node_modules/vite": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.7.tgz", - "integrity": "sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "license": "MIT", "dependencies": { - "esbuild": "^0.24.2", - "postcss": "^8.4.49", - "rollup": "^4.23.0" + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" }, "bin": { "vite": "bin/vite.js" @@ -8026,394 +8325,15 @@ } } }, - "node_modules/vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", - "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", - "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", - "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", - "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", - "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", - "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", - "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", - "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", - "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", - "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", - "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", - "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", - "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", - "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", - "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", - "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", - "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", - "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.2", - "@esbuild/android-arm": "0.24.2", - "@esbuild/android-arm64": "0.24.2", - "@esbuild/android-x64": "0.24.2", - "@esbuild/darwin-arm64": "0.24.2", - "@esbuild/darwin-x64": "0.24.2", - "@esbuild/freebsd-arm64": "0.24.2", - "@esbuild/freebsd-x64": "0.24.2", - "@esbuild/linux-arm": "0.24.2", - "@esbuild/linux-arm64": "0.24.2", - "@esbuild/linux-ia32": "0.24.2", - "@esbuild/linux-loong64": "0.24.2", - "@esbuild/linux-mips64el": "0.24.2", - "@esbuild/linux-ppc64": "0.24.2", - "@esbuild/linux-riscv64": "0.24.2", - "@esbuild/linux-s390x": "0.24.2", - "@esbuild/linux-x64": "0.24.2", - "@esbuild/netbsd-arm64": "0.24.2", - "@esbuild/netbsd-x64": "0.24.2", - "@esbuild/openbsd-arm64": "0.24.2", - "@esbuild/openbsd-x64": "0.24.2", - "@esbuild/sunos-x64": "0.24.2", - "@esbuild/win32-arm64": "0.24.2", - "@esbuild/win32-ia32": "0.24.2", - "@esbuild/win32-x64": "0.24.2" - } - }, "node_modules/vitefu": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.5.tgz", - "integrity": "sha512-h4Vflt9gxODPFNGPwp4zAMZRpZR7eslzwH2c5hn5kNZ5rhnKyRJ50U+yGCdc2IRaBs8O4haIgLNGrV5CrpMsCA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.6.tgz", + "integrity": "sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==", + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*" + ], "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" }, @@ -8427,6 +8347,7 @@ "version": "0.0.62", "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.62.tgz", "integrity": "sha512-JwNyKsH3F8PuzZYuqPf+2e+4CTU8YoyUHEHVnoXNlrLe7wy9U3biomZ56llN69Ris7TTy/+DEX41yVxQpM4qvg==", + "license": "MIT", "dependencies": { "vscode-css-languageservice": "^6.3.0", "vscode-languageserver-textdocument": "^1.0.11", @@ -8445,6 +8366,7 @@ "version": "0.0.62", "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.62.tgz", "integrity": "sha512-U4dxWDBWz7Pi4plpbXf4J4Z/ss6kBO3TYrACxWNsE29abu75QzVS0paxDDhI6bhqpbDFXlpsDhZ9aXVFpnfGRQ==", + "license": "MIT", "dependencies": { "@emmetio/css-parser": "^0.4.0", "@emmetio/html-matcher": "^1.3.0", @@ -8464,6 +8386,7 @@ "version": "0.0.62", "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.62.tgz", "integrity": "sha512-Zw01aJsZRh4GTGUjveyfEzEqpULQUdQH79KNEiKVYHZyuGtdBRYCHlrus1sueSNMxwwkuF5WnOHfvBzafs8yyQ==", + "license": "MIT", "dependencies": { "vscode-html-languageservice": "^5.3.0", "vscode-languageserver-textdocument": "^1.0.11", @@ -8482,6 +8405,7 @@ "version": "0.0.62", "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.62.tgz", "integrity": "sha512-h2yk1RqRTE+vkYZaI9KYuwpDfOQRrTEMvoHol0yW4GFKc75wWQRrb5n/5abDrzMPrkQbSip8JH2AXbvrRtYh4w==", + "license": "MIT", "dependencies": { "vscode-uri": "^3.0.8" }, @@ -8502,6 +8426,7 @@ "version": "0.0.62", "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.62.tgz", "integrity": "sha512-p7MPi71q7KOsH0eAbZwPBiKPp9B2+qrdHAd6VY5oTo9BUXatsOAdakTm9Yf0DUj6uWBAaOT01BSeVOPwucMV1g==", + "license": "MIT", "dependencies": { "path-browserify": "^1.0.1", "semver": "^7.6.2", @@ -8523,6 +8448,7 @@ "version": "0.0.62", "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.62.tgz", "integrity": "sha512-KxFt4zydyJYYI0kFAcWPTh4u0Ha36TASPZkAnNY784GtgajerUqM80nX/W1d0wVhmcOFfAxkVsf/Ed+tiYU7ng==", + "license": "MIT", "dependencies": { "vscode-uri": "^3.0.8" }, @@ -8539,6 +8465,7 @@ "version": "0.0.62", "resolved": "https://registry.npmjs.org/volar-service-yaml/-/volar-service-yaml-0.0.62.tgz", "integrity": "sha512-k7gvv7sk3wa+nGll3MaSKyjwQsJjIGCHFjVkl3wjaSP2nouKyn9aokGmqjrl39mi88Oy49giog2GkZH526wjig==", + "license": "MIT", "dependencies": { "vscode-uri": "^3.0.8", "yaml-language-server": "~1.15.0" @@ -8553,31 +8480,34 @@ } }, "node_modules/vscode-css-languageservice": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.2.tgz", - "integrity": "sha512-GEpPxrUTAeXWdZWHev1OJU9lz2Q2/PPBxQ2TIRmLGvQiH3WZbqaNoute0n0ewxlgtjzTW3AKZT+NHySk5Rf4Eg==", + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.6.tgz", + "integrity": "sha512-fU4h8mT3KlvfRcbF74v/M+Gzbligav6QMx4AD/7CbclWPYOpGb9kgIswfpZVJbIcOEJJACI9iYizkNwdiAqlHw==", + "license": "MIT", "dependencies": { "@vscode/l10n": "^0.0.18", "vscode-languageserver-textdocument": "^1.0.12", "vscode-languageserver-types": "3.17.5", - "vscode-uri": "^3.0.8" + "vscode-uri": "^3.1.0" } }, "node_modules/vscode-html-languageservice": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.3.1.tgz", - "integrity": "sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.5.0.tgz", + "integrity": "sha512-No6Er2P2L8IsXDnUFlp0bP4f2sdkJv+zJLZYFhtEQIp+2xNfxY8WYkhSxLJ/7bZhuV/aU55lmGSSHBVxSGer3Q==", + "license": "MIT", "dependencies": { "@vscode/l10n": "^0.0.18", "vscode-languageserver-textdocument": "^1.0.12", "vscode-languageserver-types": "^3.17.5", - "vscode-uri": "^3.0.8" + "vscode-uri": "^3.1.0" } }, "node_modules/vscode-json-languageservice": { "version": "4.1.8", "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.8.tgz", "integrity": "sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==", + "license": "MIT", "dependencies": { "jsonc-parser": "^3.0.0", "vscode-languageserver-textdocument": "^1.0.1", @@ -8592,12 +8522,14 @@ "node_modules/vscode-json-languageservice/node_modules/jsonc-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==" + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "license": "MIT" }, "node_modules/vscode-jsonrpc": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -8606,6 +8538,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, @@ -8617,6 +8550,7 @@ "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" @@ -8625,61 +8559,58 @@ "node_modules/vscode-languageserver-textdocument": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==" + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT" }, "node_modules/vscode-languageserver-types": { "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" }, "node_modules/vscode-nls": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz", - "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==" + "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==", + "license": "MIT" }, "node_modules/vscode-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "license": "MIT" }, "node_modules/web-namespaces": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" }, - "node_modules/which-pm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-3.0.0.tgz", - "integrity": "sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==", + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { - "load-yaml-file": "^0.2.0" - }, - "engines": { - "node": ">=18.12" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/which-pm-runs": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "license": "MIT", "engines": { "node": ">=4" } @@ -8688,6 +8619,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", + "license": "MIT", "dependencies": { "string-width": "^7.0.0" }, @@ -8702,6 +8634,7 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", @@ -8714,107 +8647,53 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "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==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, "node_modules/xxhash-wasm": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", - "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==" + "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", + "license": "MIT" }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/yaml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" } }, "node_modules/yaml-language-server": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.15.0.tgz", "integrity": "sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw==", + "license": "MIT", "dependencies": { "ajv": "^8.11.0", "lodash": "4.17.21", @@ -8838,6 +8717,7 @@ "version": "2.8.7", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "license": "MIT", "optional": true, "bin": { "prettier": "bin-prettier.js" @@ -8852,12 +8732,14 @@ "node_modules/yaml-language-server/node_modules/request-light": { "version": "0.5.8", "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz", - "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==" + "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==", + "license": "MIT" }, "node_modules/yaml-language-server/node_modules/vscode-jsonrpc": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", + "license": "MIT", "engines": { "node": ">=8.0.0 || >=10.0.0" } @@ -8866,6 +8748,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", + "license": "MIT", "dependencies": { "vscode-languageserver-protocol": "3.16.0" }, @@ -8877,6 +8760,7 @@ "version": "3.16.0", "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "license": "MIT", "dependencies": { "vscode-jsonrpc": "6.0.0", "vscode-languageserver-types": "3.16.0" @@ -8885,12 +8769,14 @@ "node_modules/yaml-language-server/node_modules/vscode-languageserver-types": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", - "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==", + "license": "MIT" }, "node_modules/yaml-language-server/node_modules/yaml": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "license": "ISC", "engines": { "node": ">= 14" } @@ -8899,6 +8785,7 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -8916,6 +8803,7 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -8924,6 +8812,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -8931,12 +8820,14 @@ "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -8950,6 +8841,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -8958,9 +8850,10 @@ } }, "node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "license": "MIT", "engines": { "node": ">=12.20" }, @@ -8969,9 +8862,10 @@ } }, "node_modules/yocto-spinner": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.1.2.tgz", - "integrity": "sha512-VfmLIh/ZSZOJnVRQZc/dvpPP90lWL4G0bmxQMP0+U/2vKBA8GSpcBuWv17y7F+CZItRuO97HN1wdbb4p10uhOg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.2.3.tgz", + "integrity": "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==", + "license": "MIT", "dependencies": { "yoctocolors": "^2.1.1" }, @@ -8986,6 +8880,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -8994,17 +8889,19 @@ } }, "node_modules/zod": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", - "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", + "version": "3.25.64", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.64.tgz", + "integrity": "sha512-hbP9FpSZf7pkS7hRVUrOjhwKJNyampPgtXKc3AN6DsWtoHsg2Sb4SQaS4Tcay380zSwd2VPo9G9180emBACp5g==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/zod-to-json-schema": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz", - "integrity": "sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==", + "version": "3.24.5", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", + "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", + "license": "ISC", "peerDependencies": { "zod": "^3.24.1" } @@ -9022,6 +8919,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" diff --git a/docs/package.json b/docs/package.json index a48d239c..1f05e682 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,7 +1,7 @@ { "name": "docs", "type": "module", - "version": "0.16.5", + "version": "0.17.0", "scripts": { "dev": "astro dev", "start": "astro dev", @@ -11,16 +11,16 @@ }, "dependencies": { "@astrojs/check": "^0.9.4", - "@astrojs/node": "^9.0.0", - "@astrojs/starlight": "^0.30.3", - "@astrojs/starlight-tailwind": "^3.0.0", - "@astrojs/tailwind": "^5.1.3", + "@astrojs/node": "^9.2.2", + "@astrojs/starlight": "^0.34.4", + "@astrojs/starlight-tailwind": "^4.0.1", "@fontsource/ibm-plex-mono": "^5.0.13", "@fontsource/ibm-plex-sans": "^5.0.20", - "astro": "^5.0.2", + "@tailwindcss/vite": "^4.1.10", + "astro": "^5.9.3", "sharp": "^0.32.5", "starlight-openapi": "^0.9.0", - "tailwindcss": "^3.4.4", + "tailwindcss": "^4.1.10", "typescript": "^5.4.5" } } diff --git a/docs/src/assets/guides/pocketbase_backup.png b/docs/src/assets/guides/pocketbase_backup.png new file mode 100644 index 0000000000000000000000000000000000000000..9781321088707bf6f5bc9971e1dc792f115b0fa6 GIT binary patch literal 239779 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 z zOVw__$r)`>kEZF{Y)t3|to>fPw3L0?7(Sz8e<+fP zi5cZk;gZ{3l>l`McYF3dN&QaG`4X79CeYe9v#+c--yO%brg-4r-WK^uT>0a$!LnKc zlOcYVzAylYU9@r?n>U#M=`az@NtHgw?Cc3Q51}DDm<%hM#^uv z==nJn8MGHF@*bye8JD~ z6xMcXZhH223MA`bx(ge*hz{j59G(_fiF*F{-I3ZqE!HU#&D(01q)}t(q?*5b7c9ls z{`RwbQ-4qRDrrJh2|sxUu>W z;98s&sxHnAH$7-r1>Q+H)GL8KdP2qWjbdRUEjTgM-9sIh)e$*SNVi|4K0L{j>CgaN zQNl$k`z4KH}!RVD1MOtuw#wq%9;0b*tpk(g5;mhT_3 zm@}X0`00-SS~PME=O2?R+{(15o(zVBZ_f?!^i3=%q8j-qk%B?^P zb^#W0=4w*34noNk+TBNq|fcmfY)@hMerf5N#7AX-EQ$3sd#*ZB3m1NZ42I*$1rD*+Dl<-k4 z9uemiu4Pv_ReG8z@lesXUJAcDf=qs)ZKMaXy8ir(?_sh^4->7r#_0hpEi*IQ#)k7} zO?;&_xhB`@G0Qt}h%$CD1d3kqEhgqLGZBA<JxnafT4Ste>N)92@}xxj7tmfYIt zkZxk;;^YNrhlOO7alCF>nfq;ku*{EnZR)Ubf1hQ}5mrp`YO1*!^=k=G<`_~Q3#4Pl=ZTtgybCBLD4XJzF>ANlts3-2O9 z@EzJaD&5m;J-x%FOuu71;Agn<-f9)O*7#67p21>vU0mMotK93yzpU@C1>d?EX7MEI z<5$j4Xt7`-@MtpDq-(5=lO4-GsT5a4tYcq2YNwJrBGAxjZsR{8qkbhOAGm(0vtOj5 zKk=$=dHIE|!*Fg<2meJZ^~9yR^XX&JpMIw9RR(}2sC~dWrz1Mfk2uN_>p0jIb!)go zUD4EhCZN=JU~)hIK!zoS|QpQ8+p+wt3V zwxnER`}9Su>@n9v?gbVpZd_#gZGe{Q&q`SQ$1LqpJH0X(evA}UVWa~X;gDsQ%@~nsa(qyGgKCloh-xhE2uSNk$j2I zkX<;>R&ui1f&H9-t2r_k^SNSpTpCBsp30zDHpC~(6FD*N(#KDqtDdr=QG`{Cg_Uro3*D|k2w_#2CrKL)c7erc zo~Vn^%Qh;(o+iXswn}2`zKRyq#<_v*#VFf6KzTBf#xW9kxEpZRD5E)tV z)4!8n|7LW3=*Xh_=JDyN^RVON=xS>@K3>XKr*J_?L3tO`Eq20w|M}i!s2HrK z@9At?%1*AO)9vxQkDMpG_+1m2$gB;YFz<2DbJ+h9PlgVIkUDfij(g>n}n*)p;!>~_jWJuQ{uq*2d^Yo3~~ z32@TZ+uiTBNQ9tQ@Dr6K=F6cYLpi46TPaS?7WJuyH_4!!=~yX)eV(2QTgI4;*$k$ ztkP8>??H}VZ!eD^rvu)SmA5K=sQ23u>nBcuKd0 z{jy75m8PYvo>(!Q-HAbIHFjo{V$nRM6lnIAm*ZOAvlXLSYiR2^z(o7Q>J%ZnY}!i| z7p5%>MwVNR>JL6Y_b)-!JsylLI>*ny@b*J`&jnoL2#Vvt0dWz91GMO_3{ zrIIB2r1WW+h7%l)e;kv5UFo&Ho*0Zc{w2~g*(pQHFC}=>p<$EegHZo*+5YgjZL|LeNm(~ zBzmOVb@J8cu*3cHf*@N<+DA%4=slmAn-kUrBYV|fzP!9D>Gsj;<)Fjc{oVKj#9q1C z9;a{2&b3QdZ!FvE>cw3ax`v+^E|DZ4xeUZAW2Rd}%)v?2<268dtu=(e3}SuXbJnpE z5|@_l*6t3KmD?@Y=oo)}gS83rNQW=#-s-FDZd6~IB)oMlCv5&^r!vsd>F6ZP zHk{Z&Kb^x3-fxE!7c(0!29yC(*MENFwOp@Jxo!aTU9e0L`P#JafS9UoMKGO9qnczF zf)6(P8wP?$EpR7TX7a;zz#Fl<e{2p8G-4Uf2oW!d|5V0Os zW6Zss;DtJDck5Lm_}=4EbaA=xfsBy}lDiM3Uc$XZ+3%kTJ(CoK9{Ok+o!>Cl*+8$+ zwH5b@IdFic^r(Ka(&U8|RS}8&95r$RQdQ%f-v55DP>J`-=oq$L;OFX`h>3YF|FGG8 zv9;v^+aO1yvAbyM-HMbplrY{u{)9En;|~1J7SFk=kjfCq$hkgQKWDR)rrB#hqWtup zCT=oz+02qMlp3LyE~S7Fd^c8SzBP1>rqmITWv>*DGEULT;KEf^-44**vKYNJzDl+N zk@gy}3E9v1BLcW-d=B@>Tq68e&2Slu6ifXX_*^QW{`3 zlolVuTPn8GTr%?Sd1DP}+TR?%Pqnva^CGq18Y(%E{&O7%h_7=ip=QP^f3Y&u*ntKt z^H+0#?^~yP4=BSKBE=N_A3m%tI22M*{)9CU(}g$=R(`;lzx-pJ@@7fSZrc1f-;4Q0 z3Lke@My7wEx)1~9{ z{qr3EyH7HADdd8OjIW&kFTely`_3NEXqYy7*#6g3|M|xL&0o9t0*Ia;tt=Sd`!`?u z=llHsf9xOM=KtqqyvU3dY5wuo8Tu8(dQm3BgFN+S2AUQEafmBdDwL`Fm?zIjTsQFp!@6+%{p%$nBgP4nI|v^Wg;Os@E11dUz}E%af&arUf7oUAulX%aUXWZKOrBC zPGGw&LeqP`D5%9C z-Mjaq1V~-lCB*yU+ACyzij`GF0?xnNI>>)FBmBlY6Q2y!V}JQRezln7u7O{T?!N!n z`4sl)E?2gvSd$Fp=2lzL<(V|D2(+cT%;~S*rvd50b1e-Yy*aM@55stdHBM8lw8_bT zNbFcf>_r=?UA&ip?p`IGzn%&#@@)@bkv}8^KK!q2^B<>P#{SZK;n@Z&^~bo%d~kwe z!P1`A0Aj`a-PTtE(wI)+H=LgF_P=;R|7bS;W>{r@P{_$Yeg@Xvk= zyj*ofqv(B(%`;BOMDD-8pPJ&?o4ug+WG6$j`H8y;syF!(oeX(0DGR4=|IM5JFDL!( zMOs>(Pq}Zv>ZkkTI$e48VeaTFO}-N^nSmcxAe(0U6Kwl0exMWyFfM?GnNImZe+Sz& zZHmR9xx)6u|786BvP&6HDCJU|3^lTky1j)qgKd|TFZC8?@^RPvtmXaZmpIFjftY+E zCr4kH+7VklyX6BMjP$Y4zd*zP_#84km-1+7O_9r2Y5QGkT!XfzK{~}!KzuP`*&p}c zKg_AqO(d5t-Ml{-G%Hc~mg^H*m)oPr@ngx$bHW-QfRu>SWbx*I{4IZNCz<85K=&Qn z*MokFskqoqE@b|)LDw-db~O?4iy-b_-r1b)ePm=cwfk3ZOI5iiB}Jb#U9Yt?6gV$( z{>w}L`5%CIsL}>}=N(#SBR~vwG5yHU4ypvKP+Wdb?fITk=DJ!7@TM-&T)i<< z;EnzgtZsn2MjST~Jzm|8xQhSf1kkZxytGWa^Ga-rvH}`TyVsx_=S%_r2jclZujXGb z`S_C>OW;%Odr>xC3!jRTO(_;NBLuYnH6!}3!}I5-ZtjcLxfPP81@mbQ#H@gI@(KgW8%{6Vog*KdAR9S&Qz>siy8IJfUz#Yu=x{i~?0<$JNv<&q zPdLEh4H^t*1j?An~&(tic$b(UKr=m9CQnrosia*-^30#RAf2?>@v3QwPYtaD#YmVYx`sI59Q zr2EvzM;uUDc1{aA$*BJ~kNdY337q6sD}3wi?cHH^co05)5_%R$S$^d&fBpXg*BSESS{kZs$9lrAR+tTbW^>t`&v$7G zWn9uLpJ!U#*qu6xJAG!qEAM$Lpva`MASH6=% z3pX&j440X9q>2M$r3BcBw^DbU4D<5wbnp@i)4%e{lQ#mwJk4e$$DW4jk$uV^FfZu7 z8K=0oJRo{xK-;Oe!jN@S*k-^Hp1L<`+WflFrGpt2H$R^p`alSM;w~8qqyT4(6Hpxg zM9n;zBJUHVU(XL;b~Lu^70E!>U$_VZS0@R( z$@0|KN(%8kys;E?O(}0;E$ZWs`Q3Y!#{`P=s>aFH2;9J|8(x zpzft!!tNB^=J&9Y(A-BLJ>vdOwo%iT*|%o@A*f!$i-6{QbyKJzOpBgZ|CO@2?~iqp zezwic$Sy#)FL@ZMr|pBsE>Cn&p8Wlkm9}Gj%lm)=18>cYPfUg3)$>OFqDa@tqXTr) z0`;P1yQt(_?gfRs2uN%zMEu01|7=WT$j=Y|FrEQR`p)m6jX3GMSI5g>`ku&V?V(d)krvJ*@=(}e`g>|c#7~ zXN78nT3V%vd#)EvadBxC0aKV(j&uq|kZx(y{sf-g;#d7G;EM6UxXK&D?ds2Jx~%`b z2`YG)(SB|V(0S$Ph@?|C(u1gkPdl|%xootVcGGok;dQN>OMLOgTI0AdzTB=5*2sjI zJE}Sc?!Sq}A4~C|GVM;JN!PQ_?&EP>(u9d9^U2DqLj{_OwiBpR__YbHo`jN05BHVf z%-@X-OVQh&Y2D-WHgoymzVoU7ynH8}!^kbQxwqb8eMR-lu|}rt;VzB^>*iET20)wa z=NrudM+AHHL8Ga&N9hS8FY}&4PEM{hqxiKnPu75;MWDCMtPO^ZW4&q;ZT> z|33l5yS(OLs+1z5_hDgS=WX6~0J6!<;vUaBB9|ZTKxj|CZH;u93A7Wm@qWTe_kQ1p z`YJ~h9HyJ!(>S)tte9h%dJ0{eIx>~75EQi zSojD)7#T6$e)$h{&v(@_5haP}o}>L$M_oqT#IoFNC6*T`ix$Q{&zowGNHIq>5~Dv}bSxfesk5-=%PrZcwx43V zHJ4FoH}Pn)#?iLm?HC8fx&YQhAcE7=`BujqFQgUIEul|Az9&F~jCS(j@bvA3?+fGQ z=JgVrou;4FCnK+kHe8k`L+z}VSatz|TzuZ%=tE5Iw|<3_61WQVUycr0dm6mYLsim2 z!ZVaipq&vV@69fV8D??^{C0H|%2m?1-w=M~es2ZRa4_R}i6MHbaI>9>PZ8A!gYLA2 zC3MlM9z5n3s4(k^w^vEOAf0+00SUkqt$tlCIa1umOZQJ|4FP*HDGoE`nP}U1D~z7! z(?XB-J~sXaPz1Deoczl0rxpO%yZh{KDfCkeYr)3tuB}uxIxU69{d>)4@ZD!F_?5i$ zq;i67b~9}*rr+g+}9fo5!`32 z)x%>A7IG56G1c~Z^&$j=QGD-tz6S1eKmPo2e~>a@`8sl3(UD-#{viUNiIn>BO`1J? zq|0ze0_EC&!EEDu&S>?+w`AQteA4I%#}X@Jj5w-xQWp@?th7Fg$5qr;24(g@R87$lf z+`-~2=g>r?$6GY@>`#LBm(h!$L)N*{qL-{ffP^{GUAw4NRCsADw=qB!EMdLVu>N&$ z6W=6l%@eTI=dvm*O}HF$C%`Vq5aW)oh{S+>SxSZT`(ioL75w}f>ceV7Y8F_JyjmuA zf6O&~;wouSk~%t2TqR0*Vo6kuK7&0JpNNaPZ+?t%?WCZ@AnR4zBM9SXoex6N1h0AY@Obuw@kyCJ z5=_{KrHT(%dEyKakb8*=@1SGnWU`1Mi1``q*h`Rw8W&d=c zH366THh%wu`k^d&ktWca39sS}z)>^QL!#lnfG*&xdO-2Vv#a?KH)@s-J@lp)`;G2u>pQ~^)-0u~3mVU@Em?MC z%7!SfV+{wJ&Q)3)uV;o(wz}69pO&4{7^`|?oRJ&HfN9)c!?}z32=*^$8KnRoudLx9 zO}!&KfX}+^t0j0Z3^g{5az5$$GT14tguI~95Cp>JUcb=;;IEcscl!tpemH55uIrQ9 znBVL7FB6o3uof?6JRCa)v~gjl+EoPJ_y741?$JPQXroX!4cDe0#px)hxmZ#C@G(gM*SdZ&z0flZpni( zefYx=DyHwtb>3UY(~M^FG${!?tET=YcU2n?eX7;_){fyTf=JSnbo=ieEUv~CauUNoSF>Bp$xO4nloq>-?*$c$40$|S>Z)ISh+4;qF z7d)VZb3p<z_p`l5Y%F!u3<9b2*Kz3`k&$Ey3x=B-N z9iZ&?CRywD!A=S5{Y;n-7_oZ!tMvZ!=Q$EoyRaYMrBm@y9{%&6(h~{$`CE(ofuo6n^fCi_&>0XTZX5_VLa@fswioOZ~E7^WhtB zRf!F4V7~4dSH@IV?R(QrN3ZG54y%FviSfDCrv?o^;Fcjrc0?LoYxwg^AR)Q@*?vGb zPZWa4&j(@w3rivl4@^QhZR3=9k^^f`PY&!0TIgp;gc`W5nf1geeitWW_A;WHgshPD za^zKkZohk%>4ql+-`9BJ{8um8-Bs;}j@`wDL_ehZsB+@6vlqR-1>(9^OPZD_4y=L- zP)CPj;9J1p?iHO9I34lc_dXFLVY*HWT}0i!);A!c6{4#?T)O%lh-M^KHOoE+azGU< zYN(lqpd9iTchKSYFb?pk_(pmx5J?R-PaY9be5uQZLND=y^65*({32=KA86@-PC(}I z!w_PsN7a8b1D#s$f!Qru4Q0MKY)(bfxCLJYCPKu}wm`JeB2Bgs^Z1ERQ`)FKcI7qW^sw6Jddv(={*Z_}`XZt;!aJQQ zft<*GW@=j>S*Vistx&~As1+FBJtNu_{Mdb36Sw9&H|G$BKg3*xHyshH zEz{^uoHv`o*UWIlDX_4wjh+E}EQIpUYV`3*|Ek(dc=qT=MAPuC(F?oSMuPC_+iX3D z+7_k!7>C?PoIBQ`%o*qb*JaUk??t{*AwOw3ZjXyhC(J`J9>4)k%@;_0YoinbgupB<-N+wuH@DbpxoOA=hOgm|zOKubkc zHwEN9pDGG6?|B;cO_8L9vw4A{{h$g2zJ$DG&=P5?L0RC?%Y}y@sFwoI?UZ zF1MpxjU<2Z@l;St@HXFj>8ZJDEjR=fwW~``S2??%I6BjM~e;k zbUENiU^>A{kxfTg_|r{sk2gq&&gQ_r*9H zW+h2bc?$&ca{c~PwjOJV*a?dgxkN{PMcQt}eH0K?U|JVGhdt>5=4-24!V2iO-S=nk zSZ;d#$`Wb6A8P$5=|hqv4;fsc=Z@M8wFTmz=(j@){qP0=%IinZF9m}1>by( zD!XXH0pNgcO8U6Dj=DdTb=Y-lsgv?py8@yd7jv`1t#PT6%0k~?$;-*j_3t7M&3w?Tho1s9OeI|;AiUw9x+rKn`uG3B@7n*wTJdO-9t&yB~Sv>8Pl%#`WB%x^Kb&I}$xcHP(Q2m5b;Xwq1fJORB zYR;`G1bWnt+M~me+kAZeHwMj-fLMCTMYyZRNzZp(;;fDRy?)}RRfY;gZYTr^PZc$lQWAFn zW#qCJSOYGuhDDd6)pPPD;laswN`CG%@iA?EnwWdH;cxlqg9E=LQP;?&*bE>M+E6;b z%91CZjh->Q+M|0KGaC}HkgCgtm;CV!1h0dYI;PibPR)0zn{B*uT<^mc_KS*&!dK#X zrcxI|_1{PAsC-xv?<*i1oW`^<7`c|v>v^a?U!`8O?s%RREZ!mkBC3ETmNf!gLoj4i zjK-u}Ycc)FLSwYODN;mR--P@k?FVTw6`5}s{2&I%3d<6!9q9m`J9o6Dh}#0Tj3_!T zE$@Ombp%#v!ymA0SRZk6rLvgrQYxY(2GHlor>z{ZMFt#6z9=!2B$VI4PnYM^+|2c1 zXN$YWPFd`T&5Lv-7|beTsQo_oRh-^!$2kz@Xe2Qy^IOJ;uir@{}tGJw}I50Mv1%A-i9S zp#9;)2j@{tP#Y>vooFp;X3he#moJ(^XVBsiYhiqiG}~;zCEu6Dz1H`@ zJ3w0c?C21!GnK2HVj@{%6KA0ri}{YEJXv=wQ-ayJk)RldiRSX z>hM*<%NmEbNsm^9u8LsiUJ>9`4^d-DNske8yUU0z{gAU&M;jeSYx(fJbCQI$u+iA| z{T}noaX;t|44CJ2*@&b4-A^n?O_Ssh=u-ZQun5^%>`ijyp@kO~Xa}vHD37T52X=0z z-)w-d1Dc_U);3{MzvUMVt_uC*5?v%Wlz|k&7UJvYMVh>)0h6>c3gn`W3t3S!adcet z-GCe$f>``0Pl@XL0L=s`BdW?A!gB zeJLV4<4c#TCM#d1GFMkZx<|SlbR|_%$i@JLdov!}IJtW3yb^z6H}n)5%&Abq1Vs8q zGd_n0TYTo*ONx@24FD29&A~ffpD!mpJXSs?6^)zpmgN1jP684O?(RbV7&7lQ@#zXMfpXo1$h~RS7m% zG_MmD*UiNT$a5du87eklvecV>^se7$0T}!PllR|8eCDtddg_5k)|_jwnro+$BuEkL z8n&?p_vwZt?i4r20ei>`UJWAXeu(5H)Pyq_dIj1|zr0e87~7VYt}|MD4L0nQ6vA|V zYAsq0bteE(OO85(8r%qUrwQ*Fv zk2CqxRvxG!){|H)we_cKU9~fc%_k3AS^bSF_rJxc9`=bDa#+y)lvJ=+U-;yhezHE>{PY1YyA)ID)wI12L$9OYs>EcEP-UOlP{g45etGM z9qN{Syk~=kUBxmX*N#EinjbiM;0)R235@kcEJ>o6;pHN7`Z6PV0wbJ7I=~7$3|4Z4Y9{iVQ46WRkE&l zD!Moo((w;MTh}Z9mJL7K#r1y#MnCkJMoIEskla3hoOPMaer*HPx5*}e7#yf9e8sLv ztO_G*{E1J1W~Z!|8mDUx3!kY@O|{e4z_KdegEz)kSeVK07P3 zc4Igu!9@CQsA{?)coueaC=cElDqh;Iz~-tCtEBD6RXr>Gl9PQ|d19)^NRzO(NUdcE3{D)%QM}`;oevJ7;-b6`Kn2Vi z+#?_K)B43rY9zLLji4oTRFqOcpq2*ni4d9bn$oFZ0FVL9<5f`s0YnAXaH7UB-M4DG zM;GMs_1y=!cV)rJP$+PcGb65zmX;~@N_U0*^sI#Blc+zsH2!orGFInfL580P8cSYh z9Ver#?-v-R(m#FTNC)kjmtlZrw&>VcEBpSgt~k?u9t7~GHKeA2u5BJlpo9$6HO1C05P3Lznqaa>ZbtsWWdJ! z0!oOEiIL+fS?1%j_T3o~nO`a7!=L?4Q9y<`UBry$IEj zf&0k9Vna-kauWd=6K}7p`@E_#R~a^P2^e{KtFhz*OM}mj?v@FvAESP5CpE?QY2|*7 zuM+kQu-uRF1^UjUEfN>VPvAOL3K{ZI4vQ!(>wB#+>TO3Wk@vfU1wP^)YtfO+2xR@s zlSKW%iczQI;MzEEyPF_^<)yi`R=X1}1(wz=93Kv|LHc z%Uu^@x)AfNs&{}VQY>T%jIpqpRZ>rrXAOzE1_eKK()`<*u_==YqwhX`>5RnzXm02FtZADhm6gB$!!mz>NC38Hr029pP*m~cY*B36<*%doLEtD`8+W5 z2PULh9xRWvpZ*dR7Ss=jRcd)MsO~gu%-vD2u!y&8YHY$b9d!UhOq+J>@CJjNp|ZiL zIJ?nri&P@h7MkR4!pWo{oFsm_2`D0(s5HZ2D42eeKL}q?b&!I(40CjUi~I6@Ztig* z$s{JtQ)=B0P`5v79~~nCVMcZRSz?iJ))Rx9VxY46Wl19HhzKvxaCF2C+%Vw%lCdQD z%JGkui@zg9fs?m0PS+bh@~-}{%NA>CyMBU03mnejx=`=^*;b?{%7T+zpL1)GCmN_} ze^AMHTU6RJyi1%`ZMw8Fg_pQ0;q}^5H+M5FDN7cZ;0p$AVt+gv%9qu3(wo*N(RS+Jq647JqL@df}*jY&(^D zj%$bq4IPR4;Ru;0_R?{|HA78?tFu;C1Avq2r#(>yKoy7&$Q9#li)+6Y%+Q5v>*}88 z;x-Eb3+4%%e1&|bYZm+sKcZb>HrKA)lG?qJ71v(*J@L4r-B+;aNx;;+Tx~hn*z76k zDK|%n83=iKtwQk+RuAccJoqk9Z$OL|@9(U30R;s|&NpF^ynt z%}%G@1Lk+=ZL)*qYfQW;V4<|DVY>y?6DM;=7!OfLz8Z(?A<{Yt1HOkdc$Qe8IuWXp zRPeADP)Y3+L2)PSZ87MAUYVLM^amWiMctrc*1i15)pKbKCjq=}2`{IOQZRO%;X9Xy z(?zCjL&1#P(=A)d3$|(OI%mMxj}Y+UMn}Lc`$;bdC)V*W?PxZHwy1E4P+{30I7-kZ z0O5JdyMaZ~kyDC{p^Z@h3cztybn_MD=zCjFZ>1)KZXnD7S(n%i(lZBm0xCanpXB{b zXZU28yP;I$HY!n$QT(YDzp(1Z14 z?sWpVJZ5o_Yahdt6-Ifnv6pMtfSw3>2Z!P!oeGuel=Ue8*BNZhAjn{ORK;-v5_IVM z{*9pcD`OYbXlTzv8mb8E`mUtG)N5QJedjc}MvD>zNQ3g>J4`j*?L1RCo_JoDLvPq^ zxSz~bUS+O6>*hWOMt@slsi#uf;_fSzMN^e+%kjz4K&Pb_q|L=6-q|D}|7Ct0MHP=x zl?wLDtj*x+03~T2qfvM-d`OVbrB);0Ey&@L+!$oy*XCJVm0VPKBz;kGK6D9Z4^M6 z?v#}sLa5x0WD`0f2)}!(mzDkSSWj!OaYW5*9uge8CGiqVXVcucvDWHH^mvnWtDjN1 ztYD?Kf%4lp%U(xb$-^J%X*aCM`>DT+GWGNJrir6ga3#?hT5<@Z$nw^BpZASG0Gi>b zsOo4`RKij?)ibqC5T?3lQ(Cd^+nDCBy0_jc9b1pBgN`>cIeck9yVah;5eww{Yx%Fz zs4O0GQS<6njwAYEMhPh*jy5C^To(YpqbMR*#(=680vh5NkY@OWTYb-FL>l_eGDIg} zBdkNIs_TYIvuaZ?7_@5yC%h z#`UC4`k8jn>rgd(ZG5|om6#f@nz{9k<6xiy8R4> z59)q*^%YAf<@ecsy0_W$VH1&l*y(t;6d*Zm?yvH7119VvYSo%f6l65xrv7|K7Qe6! zBJ81Qdo`fa3Gg)WTF*U$Q3V%uh`$Z#-n7va7CwmvvRolLj-%TqxrORQoTB( z_oa7+S<~F9j$r#MDR3VbmuPPze-q6|Zo+l+4)qud+9wB5npB2`s$^4c(?Dn-*mM@p z+!UhkHA~9=`bYkfz(2roCo(9Y<0YBi+DRLi;mbR5f%fSNQe+kI6F zpbGI?<%G$z64P8Mh|TK@3F+>mw%@X?kk8)|dIR9OZ^ey%6#sC+`Zx=R=j&SnPwj@52#f|fitZfUtfcz%I zf_(hQz<#pSLW^=FRKKxrW)UQ1THyRa^ONoNx_@IxDa#`g-`%yUTvAB@8nyB&P0P2_ z9<{Lq=no&Mn1s9GY4t@mCX&7$3~AtsN&s{kOODiPx-$@J%}7}YH_i&q0w9Ik^`5x0 znK9*LL4FncoXn(XDGj~gJ+??53!f3tBC0{R7HZx@&n_`O>e$SqfoqX02GBK~CjTsV zRYpSu?gD^gUfFIM+W{48E>Sa!z2Z*R8$qlNQxsEX`Ci-I+?eZtZY+7Lro%<(c9Ne# zRF>I-H`YwKzUv${BCBj`go3l=w{COf2fASca#9R+1@95a(86xQuZbvL3bom_h9^po2fYTnh|3~I`YwB zbuIpnPU}D5op&)ZhBNnxJicg@oJGFVkDw!&A%nJL1Z12=SR+>^BE7rXc1)$*X_ltr zxH4Hg+g`sC6@riq-)6CuH$IDX1S5lU7{(k-T z(dJSbszREQH*dAp51^k3?AVoJessk=bcYdgZP^6G=>$3k z81O2&>kYKL4;!8m3F+wND)Sx>0RxQbqR0g&O<4kKU$lU}r zO|W$vj8}!+GWK3W^9rU;tMAxNXYW5G8zMK?E%jAG4lSVo47n-bt) ziU{_@_t?IH2-HubMr{0REqo+El1#~`Of)DoiIGY9-EZt6Dh!%T6uXH-+X(BP-K6|w zmBenph`ukhy|Hgwgkd=1IRUnQCC%{+LrJbHSJpI6b*QG6_72|^;?RkvSv}{gvwwmN z_3u{CI@5%b1ZOXkETzHGFr3aybW5Lz{->4In(XJ$kq|E)5St12!7d!fRk=Kyj zRydK;m7P2%N|SxK8s6Z!pOinbzk_9QBQN62o~*LDky4E<<;^i&o5=ZbxtH-3Fz~Q? zztVa_zuFF^^L;?@RJ9NB$)3lKSXXCnv;b*)%Sf`2J-2owv;7+r=VEA3*c}ycGy}?S zO!os+UEbdb&C|9Y>n__!ah-SHB8U6su6@~kw&93`8@b&%!FP$IaKXfCrwJDwtH`nI zS@nP>LwpY(BZeZiFR^~Wr%x!>q6Q=G*(0s=blibzWh~|fk6p1TUD5A~`oMnO z6PaVmR`&2)#xxk1w6wpr7wvqnrw&Y%mowXVwz4B3)>n)a>=ap874?s@x6M_pH(uKN zOm-5nKWPsC55xTWG^x$wdwgPIy8b(b>0LmKH~;nmd!iGv>s3h#*{T#_t>@L$oU+=} zx4d0xUTp`%f=lephC{A8toZrv}TV94oGwZsA;Kn!BS?u`c{C8BKa{GxRy+=01w8^#8d9ySVjxi z8VU7fWe9t9>jx~TF4g2wn4{l4!{R!x@JjoUp~fgL&}(x|ENSDGt0i- zBPG--Y~kBPsH+&=Ql-vTZ){DWd0u{L!c4Aa)f?+?g|btlj#ZZ?L zJW{#5`@5^g1M%bpv>(-SWsUBq5}lZKt#w6NUynT1CKd)z{i7$;jNckHa(Ep7AA8>& z&t}{9-%?stU5b_(9n{vEMXf4otG%@~gV-^Ps!pT!j8(Nste6p_+M2OKj7Zcj5n3y@ z-__^2@Aq-v_cPx2kKcdKUr0W#>pYM1IFEgNkC6&AeJ647L%Nsnwbp`m?$L7lC^4#X z>aX<>HFAVPAlEbTFEq2D+}h))0JW|;P0eG=FZm@5j{Bs;9{fVEm_4pHshwXQ ztL^=gn4ZB}Lp=+OY?Q5=e!tRrPb6WwJEhW=h$S(27=bmDL7(3~5%&EdUpP;1Qxr|> z78`w`uM@1I@vYk`JmPKHebs}_g=zrbdWM#E6Qv0tzu^JJ2(0Fhma0cOz;QyJEpKU3>X9BfJbRIOB*CtPdA z-p><6$~!Jd$0KOc*g3Y2?i3TA+B*o!e_s_A6@9GgF(e#KZcs zT)#Bi+C?xM59YO0;^4?m5nFKnCU}-sFGee05X+H9(3A6o_bh;6Z(cK3UCgZJie&EO zgcD6!(Cqb^`LsbKygQbQPIQN8PZlD1`r`~e7G8ZUY0hGk2HMxJxPE#qRRymWW07E@ zodb^<-bIx!Yr77cHhQ+WSs+qhZz1k~N2IKkK=yYo%Q*LqqMioA9GWpM5|)1NfR(7z z_vlS;Kx@=)h)}tvCufu2;4}XLX%*7Pcv-|QJ|}(uRa`v;)ig*ycEjH5=#l+VbLnTu z!)WJ5`Qfq@(p&16n~ zjYuykM*+aFSnz{SQZRF2-ZUAOy1W?o!9^Z;OX99;_?9ARNVto-CTP{D zw?(W2DIC^T%`#npOGKX+0svMZsl>_99VV6@dHSBpP`@{t+b_Vmb0z53{h; zYhkB8pB~&;z^JcJx-hFr`L7rFT{2WIcKUR4r$8_NJ(8vC6wvX+HKq~ZO!0`Pa>4HY_%z}P{R3wpEPeI!(PPs6M(lGam znSw$H!;7J^V%C>vF@@2hQ*%|Wcr|fXff9=RmUaN^d%+>ELZGlv5l{+-Nn2ZYop_Cd z_vyPE&S$uwA8devKT$l)K6cCZdjq1zEy9o=5V^ga~e0ElHKJQ== zs9)vbgz3zn?F4gC$AX*5g@J!4Rrn)Y9kqMqH7@}@(4UHn7+MzxRby?89_PMXUMff5!cIJ9;sCEULL(ADfuQWeQMHk*WiK#XRR}^sJuaRHKbDoO0t(V~F1}hO*8F4o$ zTW2vTw?kb@UN9puUSZ%tAtB{OGoX#~MQ1v_SXh>+%kmQwq^lxGqW79{Od- zryHIF@EH@JPj;vkEW3*x~YH9h`F zEU2dfb=yncs*s-khNs4P1E`i+17KPbKMXOcoMGb@fQpqP*N%kQ|LSf0gIiu!0d1;f zLED#~)zYL%1)3(pjBfyr!;?Ih4K1cI9u&;Mm#17|Ke`TfQ=LbU|4Q0^9E>@SXnJM zZkw7|Q@o)~3?iObN4y}!&KBFWCW1ZoXPKl+-x$x1bJe$k`8*h6#=5cP# zvX2a-zDQHQ+lA7e0=hEyhYJF2^nh*PEwTOQOI|CVOZ#zG!>)vWbRG z_S7}HJM%2Qmf8U#N0Zq9*!f?6lOF+^QfYBX??c|iJ=dbG_iyD&sc}dF&`0O5_ygvI z?bh~wE@=972I)iD08Fo*p&L`KkuKJo^3_n$w53|rF3gy26NKS;URt+)9Yn}+FMDI; z-_+jzkpAM*V;S!ioDgl2KoVHm+iZA9%|A0p(!vFK!0UtxLizXj{&EE*tRRJzmKY|l zA{<}a`$YG+#xfU3FJXT*ga%UwHPmguHZ)3+z*&j0@!ZxbbO|w`C)+zAEH($Rt{M+F z5JQ2>*|`JVFU8EN9N50QRsX5s=P&#HjV+#B129MUExD+#^ibfumlI8B8M|7#oqNGK zH*a;8t?jDrVqy1iiXhHwvX-gP1tqbU34Y#tK$Al@CY2hamAvS=Fy{p+ngPK;3|rzKwQGZG73JxEyh`J{L5Et41lC%7SbMdK+g4q z0}A;%f3|`}R~o)#v$$P$dk83#tYJicGd;^*$&14)BhQwrJF(I^6fI zt9t`0CXFGr2XKhQyu6EPhWnTW^WIBorYJe%OWNG~Q8)fLR9K4q!-a2nF z%Mex!uZGMEwoRw1e>I+zq~l_|d@{YKx*r}H#&677&X2Y*k&XS^JH(suaIzWP&2p(kgu$nf#H|-mpjO#uQ zIAyOeU1WkCvl%SRuI7eHlv*QAaviQiFMkHZV1EJ=xc<%-GW&ls}X?GFvDb~|&!1lC){!>+3Vv`7slWh7|p zZ^+gE`bhsr|Gh-YKT^$eYoh-eB`-z`AQkH}23Forgd5*5o$Lm2bq}FDPhJ7=V+YkA zx{1H(dO=<4wMP_pxd8KLTGG$;59aAm?Ez;;q={0SErEi2bz*W>*0CVE?M=@c~{o3Alz=1iSfCemClXGiBV?}GRVcR!` z#4PcfO&}4Q$C;Mdvb$%2Y+hgh&Vuuc1`{+P!5Y?^Tq&QeaUQOv5mDEMGL*l4jle?i zJX`Ye)nNRC`I0z|WZnD^Lp;tOv%^;L<#!-C@SkdTR)Bg#Nl#_j?Pp=L8@V(kMd5}P z&V-zD13x$X9IV0-PmM&*elI!NPWW&2MIoRsZU;_Y_WpkAyH`fna7krR{`Twcu_~>& zCzQLYMKs2*Jdti&=lfMaQ0flqRFE1IfLX_y8j~UbVAidraS8LPG3V#CH&R~7Aho~& zArqFN*c!dFmcn*9_LT$- zozXKD+2pM{hcD7#q6D~#E#tkt5jOR_6}wRa%2Bg4)o?lbiU>^ZdZL+mfi%v)=W!PZo#qFAK`D>c8g$O{loP$MB4 zNgpV8O)+c|V%P2klB!tS+YxLB?*XXIPJIVwk}DJL-vl#`#5MpBEN))NCBs&`vQsZ# zH@_CZ%|xE#YLAell}VUL6;(?hmev}>cY2b`PR%MoA4BokAJvnFhj{!+jMhcOZE@JK z{GlNLvX3BzaJoUp`-iTRhR{AWm23;C$`aQ<9a@bN_FrKi`c(UIhQEy(qKAZD!Qf-?rbIWwc!mABfDl4!OAKQ)H+xnEe-g+!THbT z{4dJ=xb?RripYU?8C^)l-vROXVJ58=SJ?*IG`9WWBC~c;@N^BTGXBw;3A0&PBaJg1 zYoC!6v`|wl8i0&!mkt^~-OVcN@%gl`n1(7`=i~mBld$0jiVolbQ{TKO0p?eSxpDbg zCI;gkXIX_6I&DDXw}(>2vB9n@hOp#XAeVMk%Ikp^G%S!#6Y@De=VpJ|XkDt|IL?We z>Q{5f;&3USrsfX;LGkL5CvDwcO(!cWZr&nCGu(7eOLf$|VOC9Xa!sy|vEm;`xM z{_(Ym9y7a~yLq=pl_BO1+wIbpJd*UyTl3K(v6*40ur1*C=Cb;Pxow2ns z2B<#C=TrbO{+?mE-N0As@6uV79eis`JOE1Gj@Teay0FMJWUgE*`DfaG@Op^JT2qy* z75Cm{u20(~EeGabgS_LmaC3xS;oo)2c`XV6$>8(ejrMJc7!%&B2cv0WO|@Z|TWKx` z>WGc;ju>XQxN!;!27xjUw0|!T#BnfWexsu3BWUEUp*hDjK`qmobt_J|@5+E{zoScw zq1T#B0D#j80>C*pe&BuJ8xKXQV6VH@AB`C{Sz7eB)tLgY!8u~Cb}~IfHNuBBcmEgO z9(Tj(h-=PN*FRo|-OhNux@RCoi(|3=cB=M-ICylqr0R!ARcR%L-{I_GcM65Q9w4!M zglUf|)c;X2f6+n!d=TJbnOTCCD?d?5K^&Yk&7j6jL9a5Q^w$9tsGoUbAMk+Z#KAgN z?VU$mRzs}Rx+CegqamrMb63pv_WKpShb;Aeo{|$ z4u!R$rgO*LI4Fj0_Hn^pdCmfsWtTL&W_%FfZN+^pyvU@dvihDq4z(*{(=ssYvDN;l z*fl3*z;CJGu$K_ntnvta?yB56Az($b=u*t}EYSePrLfbyiTUS{pDKOWH{ro7-t3HJ z&mS{A@K3sq^11)K@8zM4#Q5kanrjq)vkbZ?m}z65KVG+%KALjPb93B<;Bn?Jg!<>Y z#835kb3+57W)#a$%OyDBdALpdPN9@ zE-R8Ke|F#h2|eENM$0{7(L(;Cs`=kvoWFnjRt4D2lzV9(*Y7o@ zN3_|$6x$&$88~hWJ@H|s`&W1(|McDeec2z0{9iHx27za9dC2cr07uF5UuHQ<4M5cV z_s;!MH2s%B{>vbLCXF$iRy|H%rg8+_ zKscCh#8sH6cl5;^L4esB zJ`t$cb>!2siI)=r&t;t?FCF>t@2lnDC~Mn;Jq8aPG@p8X^jnVQ6TpLz7WYGseEN`~ z?|B0lxzLz6eFQ4(w`C8UcE&?=wuG%rnZ6#ehR+L8oS6I4m664I}N;bZSW&&G}>|d+C>RN1prbg!j@lvy94bf1PPOaQa70D1s~E2$?x7 ze{Cm8MnU?>c1~T$l1@E;p70k0O8IDD4X38Q(H&tHcTV}omgc0h%%Q*gH^A^E`ETDo zG~ZS{va{b-C|~gF2@I1mN1pKW2JnQvC0f(}3s59SG%c|5E-L95%|G$izyI?s`!6@b z-m357Ul{Y>{9}kY2e3xLk$2Aj%bJM4yJ+%zr+@>J+kKIEKG{m%{GZ6bbpi0=f;OoHjQ1!|D;R15uWpK^3y<$0_v(26W@P6;osRIWa*bz8z56CkVNZ@uik$Po{TX!(sI=w zcyA;5qgT#b%vL=qmV)Z^%sOx3zXMP8_|Uw#0p-lxzO~)$8rc6tVCQS&)gaf2+=EUZ z-&EI2p}!q&v^>SOhJENOTE^I?N~cwSPATOcL!IO5BXr?3Id2QOt^`-h(o$>?2V-|2 zPPQLjBfRJKm*tQy|COI9a3k)ac1L|r z=u%-_$M~m%QqD7|aK>%GpKg0p2=I*3c4AH&!c3BGQLcI4T!|Mj(?d$ZAECl73F>q6 zYTF&{Mm(Y^|9HPbeo&;!7nrBS>JE6>B0)~EOSoY9>Xi{5fKkpg9kaghmhzWee0;0# zJ{)@)=E4?_PPf@%&%@BWjRt*>7*MZ!8SQz^y_xS=T>IHE2fVhkbcqPt> zXr_(}bm`esy5gePG4*9y{I+)J5|GqNd$J38nxY$0uvRR%bjz$7oTSUC_Auu9D-jEE ziJmh1Ucz{-iSr+@BLCIhcjwf}al6K2S@L#CYm^VEFBdGC;(MumD8z52VXcwh zvf;BQ`|WQRLF2U_$Qb}}AM)vxJbYAW@zH;b=1Rn`$XQ13`5I|kZR-0P|C&>eFmA}w zMQ)Rl0=jPXQDjte!_xiS3}>ca?*rf(<88YPeH{We&)=PXay#0ZVoVAA?&1{{YokKr zYi-y}7G6Sn>~*sm&W;1hlR2>qyhb8tly!dzDCt;k=ylf z+r#z&C6{9O&i7}WVN4=8J+0G>{O6_AU#~!#oHfS;zl1X;bTaTMSM4?K@7h8~u`?D( zjor>v@5HmXuV+}AAN-N+{uw`p+!N9%&{?cp-amQJvBr4pbE!Q1YvU%uXm*>H$cTKQx+q#zOrMX=#I1 zaf1bhO4YYGyX-$U0Ws;#j>f=Ul%LAp3ZJX-NiE4js3_Q2&SAVh5;{Xx#n=puK@_Gp zG+X_va&bS~R8252x7utl^o~zsy4PA(m*(v$!R;xeyZCoBI=EBy)nDu1hk6j7QIPdLEM-9F0ms(<8X}FV) zy`_n*?`;Bd;Mg2GH%zDZidu|&lSZ^;ut02huZ)cI{y|J?%Q9ZODPAUEb4Mkh6bk8ZOs-d9?1#!9Z2ycE z|N7a(hre7JkD7jm6CO#=smHfNS9y(!I7p^qHFy|&qSk~&m%z( zR&2Y#94Uem1wpJV53%DmQ<#WAT1KIbBA6NS^(6t_&jF?Q&iabM6Temv#whT#Vq2^l zKjSjeU}D#6Wm7o->KjX%h)nA0mBZO^@Xs@9ukG|FSp|&lh+;C}PPk2*IB+SV#Il9} zXb*6q>sapbfH71lH3?*faOfMKNvX_L$)A3)IP4s71E^hL($62I2!O0yx7B1qn39d@ z*XM<)3}NP~i$icwl8}2X@d+A1?oXQVH`(+uldh68ksAu&-85Lwy{c}439H{<#cTYBijpXsYPeIc6$K%&%H=ZXV zX*{3aF%NDIC9^lw;ZmPBET>EP;(M_0M;6S(rMFyzg$Jld_7CPoL8FLwm-v&%to9}V zDca?zLjcJj16GJB&+CCHfFs8chUiq^X%S{%CTFfholi~A)Vc3YV`Ul64wWVVn2B{g zLX!lqDP4GN(6wsd)bPB~rOoFQi$?x&w~vj79mP%0wktdiQt}`E%r3;YFV>G$JGi_U zZQP_-Y-HXIU0~k4=bF-YoGt>Bg;d{7&&Z>loYQ0;6?AseFXm0xlsAw0^s3>D*tZ|U za(V58CZ43)D_qaZkszPOXCZLVFx1&c5Myx%Ger6_pK*<gYv-+;I{mUxGXhkl^# z^t{0r&*wzBWLT<+?#>S>a`9ueeDZ>!YNjhwyGN=ni79?QahL-|FYSX!ISv`W9|wtU zzL($1cf=L_-3tAyXuVk>fAGNN*>!}>mlO5(cE0PaZsKk{K)%WWyxp?qajNi!3#>TA zna+_p&D)fKA-qa(!DYl?M)$h1S2so5SI~r&xH_DT%))@CmnO8;4@!iFv^VtHa4DRzi7P&C>gDFW52nU4|R@aw+=*maMf0Axj_rF4_zO3E?Z<1Gi1PO zc_tlEUbv?g6Wu(){_u$?Ep!H}lf`Jcc|+B$O0dWLoWguY+GvS}1jW1R;8D=2o3YO~ zAK&p@WnbMrXRUeeJkPs9ud%Q{QC0pv&57&67mG&U^&8W52JHQutQfHg0YI_eeP_Q% zefDa!%eO~Qof%+W6wH14?ZaXPESU+z`*~)%!w?6<#g5L3dJDQm>KFL?#G*8`MdVKC zQg!lkiHrGQ3K4Q&#CjVI|g@#@b}Bi&+Uu?070^+Gd|^A8eL#h%=9C08L`V5v{$-ER<+ zA>gqJbR)i6X8*ZZFvkZo@o^$x;lK69AU#N?CIDN4&*|BBX2>Xn8OGVK`V?aq>ABOcm>H4_Vgv*9aW1Mod?(@L%NeBXCZ2fi$=C35)+B~DFXD{|Fs zjg-h3abJpaHyT zUrsmIAKQ2@dLb3mRcG2~Acy$*J<0Tyei`ynu=%I=pwDr- zcI6P?MnYaq3SXk&CYL~}+%Stbr3#Vo1(rEnLgP?P0Gmmuhkn(}wM+LmDUQfJ61e>p zX{fjfM6^ykV~!_}SZj9-kpb|cp#iz%6w?K2k3i3!U#Z_2OD^(mr+lM*hucs-W;_Zq%jEKwC;A(M$b3z;q zlUkCjI79%f_%0;>Yot$Z^7E#56*gZSC1Lgw7&>Q;^JoE<1*gWnZQ(RAtHx$8lD9Ze zOq|Bg9&r_1f0M?hlgFYc2e9Ieiwq076ZrI_dzU z3SSBe-V>Ct^oN@Vx80WfIU_ReU^%Vxjm+NG`Np-8U(9hhW>|KA?kz$GSs1t|SA&D# zH`?76#zYz`sszjs?M@TOkHH8Nj;K@J7tA|2jV3rsW%g_JOU#x0GrX}E%sripJ85@s zieE|Wq&fb+CQT=|=i{~WE5o>Tjh(bnZM&4^4xgLgI9hlE7us26n!u@fkinXK;k)GJyd*S(!_ri{?6@ritm%9Jg{ zi`+c*5xG2ctV^3p66tdjOjSBoWE`6_1E{iGwfMKS_=77dP?tap9m^*e(rR7)Mu%Ja zfi1*1l(Kgbr)L>NR+RMm5uKB>6!XYB=uEmMFn|0OV0NElwkoo5UqMNEJ5GEJ=>1)V zJP_=Ik$F7Y6t(?mmqz2R7bgkDu{Un3DF<(cQG0g!yW+|X z3-9HJQUk>ij)5KSgvJ7KuJjb-hOEK*tw(B>Be&jF2(8|imL#lxvg~2OUH)}AoA>vX zHD?l{n$%n?=tk6iuG3Fh%2&qf{vL(l?}upMB*K5ycpBdShQLuT7(;%uo&1S>w*}i_b=rKus06fyz)CTuJ+p6dptXN_G_huR#jwRtX{<+i`MgLfwa@p z7awsDN^8nf*&+jyjB%YFAgXE?LYntY>pxNQeb})OzlE}VCYyP?b96nJZT3KY5u$)k z<%p5+ES38Y>JU*1=Co?>eP!vOslk+i#bmBWCwp@X*MGcK=6YPBk)msvCrt{fdV)tN z*enRFu$PWbYkeOf&~{_^pY3YeJs3_0D_Ai#{0bX|&30`w)wH%HgDre~&E^lP9@euB zYlT50LO$5G&Iu5nNeO&B)(C*7>}uwnHR?Ki z?Ot~CPh0EJci(mI^g@QlxnzyVqkTtF=4|CqXs#W;UbpFy2xwya1dmm@ZhhCjn0?~jL94L|>S|jt~Vw(oKbCbb#`{kGrbbDJp-Y8`c4X3z}otJC}L+w*da~(Tk#Y(uDFc;Sj-CPpx6PM?PYW@R) zSS1^>>DggqiD|X|>D2C-NT^uS**Rl=oA+Joonu4A-JAQMTkOMC0VC6{n+To?@1fJu z+P!+cq8kjGMV@VXlJr-LGa1k}l7Ry!0@B!o$-}7Ldq!j4OV?dwEy}vyp>pF_y7-{t zB}_81h;^xb=Kx^Hf#dQzk1z%Sixx5CXx`6kR*two$UZpU`DrK1TRdz^#g|s-_%Bk0^ z3q60wukCE1epQhuxL+ACMJ3RFd|1!sn0tghI{*PdZ1`=_95bSuxi?b=laW+f8}#;) z;KjQ_cf_l!z5eCcyyvO#X1IBFnJr&VokX*ET8_qM) zjBDIUl!S&)3yVzmfpLwH@V%d1QNr8g%x=HD?DeK+(fXwZI9!@T>BkQnDvnIV4Xl{{ z3K#+7R7c|bYQm8)c5yr{YjxweiKSWRTKgTL%Q`!<2 zd^l=OG#Vp@2K~&ftTSX1FdUc8^j`4{yTr$~73*ZU!fuY-5F2yKsy4wv{evsaPhaA{ z8L0ts^dO z!YNHG$%iUw+^{joLm$XtvJegNP%d#F)#r?{n!9U8+_%bBnZShhwE0`DCP^AOfdZb{ zdkX2uIHUXzH`kI~mqZW6B$m1({#gE8!Et_Xkb{^xz4JG{rbPlqn52T?{;mhnGeT%)iL#XMqI^)hr*kei-hVc58KeZeJM~8;5-}bY<}nER6kL#Jp^%heUC27Ggs|Pn9J>@V%g8z zKypbJrpC!4YShf+oKIVVk7kxHXidG-)5NZxz{?};L&B<7c%Y>~16diYn}@5e#qWog zAyok;!O_r+VDm(|bd?%a5sZ>q*cRLQCDC(k>*tIQNd4dH@5t?QnE{sVdS|DY6H0Y^ zZGP?bK50Yw^%;l6rp^RjUz1(sz{8K`UYnqcg1c6++o2yA(cBMzOIn7sQ|&1TNk9D# zcTA%h^j)5OqQI9XJZZFR85(&Yvot9h^5DkAq1^UPWz>treu<{TyN0s9)0}lb;k&al zmA&fH_Jv zm0!|z?}EA=Rz{>h40ixaUiK|As0k5u#aOzq`hF-eNn!q+Pn5!*m<747Ex3hS8%cymVlex@Uif*P3^5_+x0ic?@lmj9#iBy zybcV3D9;#1T&J_C-QD4{UHiJBuu&h_w=xjou^=XKf>lmIWQX9u(JCWx2C=J0sgM!G z=LY|q2O_yKa+)bQDGh;_&gelp>*zct$Q@q&kw@3K!A2i1q5T!Q+_yh#M8B0kYv)N= z0aGY_M~ zfN>^FmM-w^S2KBCp(`RgDPRxIL}Ed)oGH?{v<42lftJNQHWy&6PkT)HXv?Bdjm$xyqgqeVBTIHKu*WX>y&JnGqfql1G0 zlfFxI6+}#aQUd@U$EA)v?wU$HAGn6TJZe+#v(EHlb&uK4sWyi`H*_(dz zg3?dn9nFT_&u%m!XlyXq3YPh4gBFdfhn0a%ohPbLvQzZ9Ay>f5R%&8sg6w*yi2X`p zH5lxr;1Xfx0zl(hj{HkmdiKXh?G|7c7wAoEu*RdeY|0d4H{Pls?;wu zZtJ5?gy!)SW72X4R6a#p?wEH0<6)gi$Nh3xB!GF4_{8&@IcOU+|m-%>I&iP-0Up zCR*IHfYOSuk-GvSE2wp{`4K<~UM;aCxTMA0A@RwRr z|K_@IcpgXpm{D7(n8iPSP#TdgPJ)#oTFh?m3~-XlF3x!7SW+>&}i;bYEW(!m7l6dW~a`<~1gWpaD)*gHVOHfm7f~Z>p1IQgk zv+4~y>k4&zv%LBqq2kuza@?h6D|$IV0Evr!{2~z!ZrWc|pT+mf<#fo;8a$;|OW?I; zs}+xCRmC-s2D5SoY$>j!(=w{<<{t|@MPhqE+|x8eRGa)Tf83_7Eo(z@vi>C1<^3(Z zgCFtLp?~o(3Faz1Q*tLIcdj?%Nn3FWb!i>HZ>o|CE^;}<23viDvvrHtU9Ac=hnU40 zo*&;BZf=ui^XDzlLL)qPhmw4!MRg2V#iSFZwIJDcVHn+En<|ac&-L2lk`IWH2)vZ5 z*0bs=ONfUO<%nAHnK(}kaRsr#OtX`g{3{X6u9cZ}+fQXm7gkfZ@BE6BodGfSgW`f} z+Q>OpZCy&C)auu2K6zP+b;VHY)%JeIN6C<=v~nsRYJ9X}Jt(M2v!faE?9SeB_fy3PkcXjt{u%y>9XbrpwBA;uJ`mBJyALD9 za8te3O`C?f!#{GsP;|LL+k4D6Y>Bzb$ExrRf1iEfEJ>trGhr z^tkq7xo*2ojt@4ySy&fmeUUWeUT*m@yUwRS!ulLO=p$2n{%(%uoA+D+(~M9hyM}Rvg52(br{gCl*0KRL1+wHV#Cy_R0vwwlYyO>=IsW&}){ufni9xW70dp zoV?sg!v(Fd(;PhGzjJsDHH_70Oa+Mztab*o)6{1cn!{3)SdB|*dgc5xJ8UFcouF8l zg4golg+u#;(ta4ZgDdpOH`>nBpKIj-EJ1^fMy!~A)&^>9D)drjIvuW7ccFKXA*u1g_2lLIcrtZ4#Er+0bC0(F zB=yf>RepJO`P+-fQz8#_$Fl~rzy#IDXGOuRQW zxkL!QR#2}Tmttx;xJ1gSRtD00Bg#2Z4&9m#DuvfjBch{z)B8~g)|~j!Tc(|-98p6a?@E zMsL3A*vg%S9tPetI@~=gUDCw0%f@d77Cw^>X|W|Bj_2_;3&}BG+ZUv@LH55hO)A!| zY&I8}ad8b~I@i!6n}vyB8^g-x6>F2D`-|^}9uIuzGu2_=UR5(Lz==*`L^yaOCdm`v zH%$^I689ocT_{oEbnCk?v)% z->f*-F6OofL=!8f_nKlgzP1Lq)OJ#rf2SOLlM#%k{#xgUa2gD7ZNzFFj%{VgeRGuH zK@(N;GkA7BUO{HmONf2MY;aAhGGSQ3c1puC>p$(meNP&nZ96jsD7rRu%H|l-1|@oP$_k6M-H}3~e`yvv3Wl-}$Xz_=L4k6TP@o zx{*oyb8q}k#2ug6o;PoxBqAyB(F012Ouru)q9)zrd!rjg$4~lSb<9g8Y8W<;ZBQyC z^_M7uH)`wKY#w;w?>I8O9=7n!gDF?0SOo6|H%uF-95}x>G0O0trW8^%CClcgc#E!A z45j&OH*1JA+t_A4z%8fkITyd7M(n^ubylCmrL@@&T>)2IwDeQ_c09ObUJP#!n9Q$y zBGUbrsXT@>Yy3vVH$?V()O*`Undp9et=nhVDH@H-@N+0&x|=&nC)O^SAGTa6t(lci ztkxY~gLgRQrrfD|wug1PKsC28-)&1A@N5fgwGvIaCOsmxp0w#v`2QwnEi#*GziFWe8U8&~;>o5_<-oQ^XdAJ|*7;nv zYHE!6NgIqkuR|V2T3}0oP<`55Y8>luzXPel17#pimxtLE5b)Hf0Sd|Q?dyh8E7xVW z=+;N>T=B5YsGE0Fs;qdOXk7XzhJgIOlX2A>$@I3=guIiy%U}d(cD0pzl2b!WGm}iZ zy?0#vl}l5qWUw1Sn*^vhG#_r(YjzNku_M`^b#K39M*rO`bAilbhrR+v@S2%bkZXOh z(4yF*%B|dFC;Xi^heBE8lrhwnfqg!KydgT8B4+03uuXb%hfrWYu{}u5io76rS4b3E z1nP3NF5ni0)*4sc|!Ii4cxPbiWPt{fOp1iI?b2|*ZaDCz+;HmYl<$SS3Z7f6Mfyo zu7Ab#{9C<{7hDCrd`gGkCe=PrgglXeKfy~WWTr%3yTS!&d=EBLJrvPS`;m#t;v#5f}MG&+Ch4t8FW}gtt~{bCfE-Dv%&U zAeKce{2Ha;T@^J(Z8}*`jHvNSnw~%OOz`$N_X?y73nrAE^>Un0?vX)7>EBK{(VDPm zz}Lk&pUwkBG0sSsoZd!ZB$*aoq>ok6Kv9oyBLzVgb#nu2xfaB^C&QD~?W+EdhWHwL)ZwD&Hf)+P`Afl7-8YU>Rk@|9#Voqs2!Ta?*r{b%hvkIh#}0SX>2 z=}BAlMrQYd-?MMK%F@@eWzpZWHtD85pRn>*>xay zCJK++?|k##$(d*X#hh{YF)2WnVZJmo_;F<+`^sHJL1~kNVd8~S)VIibav@Vg);-q3 zb1JTZ-)LO@=p6O}TAsNcJfsfV^F}az`#35qYL?#Q5dEH--f>%2!>Ini&zcqM%)4{j zl9F=$ZeRBCD0?ffI-^|K?;A{bq0+$3NW2PAW|FQV;sR<;Wkg>tI36)-fY_BY@(OmG zyBxeZhvnj%&Vsu7RL*=auBQuFeU%)#if~W8GgmmQ;;Y~%rG-qvxIDKQUFwQ1oIcni z*-NV?fw96{zLKyBCGXUORH>gnu6L0qv%x-E!PUDK-U(>_?-VYO0I}jZ7+G!(ywiTc zHAUn8ZUY%`){26~jD}f1P+v@QujSL7 z;2#zDjpz^--9tycc(ICDJwA+g4poF0i}(thmW(29^{qBt2+>fNAOr^M=w$R1A7@4N zKBOCXRGirsL~p93zY;a~Gp{9f$M4KA+OIb9?dDedGO>GKyXk4@H(CZkXK4O>+X2_Z z;RHG-qdJ9MW^h0#V^5w$46~0+VJTh7Inhb@(b{x`g9~Q8lS89m0OArA z@Mj&8za`+Am;1ibwYzj7k3~zszx2}LlUvDFqwbL&kXMb1exGdl0mAJAByDk!g z(wcCP8-n_glHS1Ij60|3phwLKAEM-#2GP|)TI*Mr>P5ZRY=@mnhMR#}>d|Hq@Eh;8 z<#U}F_jK(gaOLAgH&NT&L^NTkib!?1|EQ8{aX;aZ&yaA2n4$ zUJM{rV+SP>t4oYv}9t zTR^Xr#yvSP^(f1dlJ_%mVzP*|1a$Z$KKgrYNI0XSu&N zTx6*!xZsmV+Vl=zcyUeAFF*eFaksHRM}K_ZBKy0s8e#lNXlCFpIh=YQJW<~2eZy?j z>soQjbT*Gt_@x*C)oz5HZp6a1K3nrna6_?aUABX=3^`iZJbhzvFdj;6$@Qz43(a-8 z^zHVITEUMg^Y_E4ONK~Rtv0>tz?8k3cW`xNC9DAFe|OsayYTY0~^D^JhS|> z0|z6C;x{ZR7T5~aa>J@+T%-X&gIoWPy|)f(t84p(TfC)6sZg92C=@U5QVO(aafjkA z#XZHLSaF9!(IUY;xLfc5Apwd6w-8)T`pA2p`+nauXXg9R@T0*b^YX8 zmrp82QiY9PD`h({)>$pg;au!-Ep^SX+t=-iR~qp=$=TQ13)GIZ;Fx~oTW6zQbAU>5 z*YmYl%HA;E72|H-k{Q~Cpmi6i`;NoVGVh7oTyW{X^+m^Dzgi6G)_camR0-a>1km0p zwxdxI)p85AyJFWcG{1e;d@zZtc{$EgyBXw5@O9kIB3IG|yURCMiiXDlUJ2jfvKjsL zOj6^Ln+bHZ`{dL(Q(R4Ld}L#^tR$fo_dEIA3I_f)()uj&@=#f{cBk3uo5i&A**gb8 zKcjxLweek^?J`Lc_Ipw_c8z(Guain=oE$+~e#M@hNss}T*hSlZYpu=&m~nou+h`Fi z!Hw4-B7_CaMbxE<)<%I3S2qf3Su4ybZ>n zT%z3QhhlEW`Np?)H-^%W33nBgPGgJ>)_fC6IP@RD`d2mvW4@3l>gJhkcdu*j>^Pgy za2$3Sg;}(@^omLF_ZKI_THL)6f!~raVW1{2l;^aBnyBV1FlHaQvK_w0yWoyEv22kk zZ#K>-zt2L>^veKgJ+ay-hw4BGEWXX0_Zs!HsA~(jYlit&m3}9bF?fA*`I9ufY`zAE ziclz~IS-Gt*e(Vi@S_G$1-HyxHP_Xzac<%fdws*6R#&=9R!HH<=3VCYHsIxoocNQk zxjIp`R?q1HebY`zOP+lzD#vC&#vDIG8AW++HZ%Yz4CE&7SqIx~lOx*Q?Rg+}fQWj~ zt$B^90Qu@L&QjtAd4;_b^n22d6|1|>Jh~@yt#DiE9&3 z-I%fv`=Xm}zaw{N2)3`0A>38qvtiMepfV-~3ZFY&`mz}s>Yc-pb=%Jou*$zEsD{XG z`E~Efzk31v)nG8s@Ew7PR1G@LPW}*dOzCUoL@nv1^!lI`ZK;rR--l@Y z(5X_UfC)$Q?@v_ldGI(u60K3pOm?@$IyK%JR|yloaY`(Pt*KUg4OZW7t3GgFY$?-A zxA@HDWU~HI;S2GW%GP~D?=Lra04Q{i%+tZWI@vTyA=$brz|tY?n?>@R2RPmUuw3JJ~wNsBT@=yngZ>Xkg3-CT$tvPUa?a zC!ep;LTF80>8Rh(r{_CXJNWvZbOwhuF&VtS-21n_wbc)39HUD`5un2p{LXw$hSE^6eFk{{kmrLQWdqKWZ-gitg8gKd}H3c&I#jBl1nEA z?oJTj^;-_T6g|xrl_}ipODB$6D~WEvlBbd3%>mtMZjKVffdVBNYYz{I1_7u0?Xvm`v>4F^k$+G;)tU%~!iiE!PbXgO{ zND|Q4gtB$dZmFr|!H5soLgCW>S{s@LRGQ|PYdzb>hx?WITPolJ}4IyhiWRX7+DQ1`SJcBEuY7-WF3Wgq&3}X5*84&@Y__Idz-&pEUFW*p4hs zkl@u&-X}#kidz@%$js?XO;NY@q`G?BONyJ!wqqxAOATa`k z4>2(S-nDA9f0;T-PcvPuaV8MS)iQeWLq|8e`9O&xs?aFV>#D$VH`X2G(~FYIBV?ai z{m_!-XEJ9Gzr+2b^4bJfQMC-98i*nV=sYZ}a>mOKtwGOQ^?#342p|G2f;dAy! zzP9|6Xe}!ZkAO0O$xBM2#*eDRnI7VnUmt;@kCAwruri*6*2c-n^`EMiS$)n#-~KMQ zx=cH>MPd?QOKK~KP+-mzfbffd+Vg1nA5Qb7rH*kDEmoI4WmlapmBW;)_34lLX0hRH zetgjW2lCp5FF4eq5!}LQ`|&xP!bO)=4KAN;Gsk9t1h>ldm3ZujyZevIB`FT&Jp7{bzyIi?90mv@7Iod#Z+cwB&)!gSMr-1HeUTL9z z)Raku>wA?*GBW*+yEN_8gpIv4H#?Ho3B6Aj?}y5SK_+jWp_n}=Xy!8Lq&2SX{$1Vs zmfNvnD;!xZv^tipI+tpskQ1O#BO$Shr>1qTxjT=el(xLWW zaVz=s2FWpd*`SA>h8uga<`oYf-k_;^&~EgC#)V=^4&#~VO?)k<4n?fRylq?5@gdb6 zS7))B9XC0zt#LIP0cm#Hw+TAl7|Ue#AZUAK_k=fN$J)Y>z!wq~ls=)`paX2sJ@K7r z_M;Wxvt#(XtU~h7>?|?L5o7!qfN`;YcY7cj!Ny4&*A7Q#PieC*?G87$ayc&7k zW<_*b*vCQoz$Zcx?s^LUmMok7pfJa(DSZjBk9c@6|tt-Bk%;Yml#G{B&#Wb@n}n zraytCMGcr(J6ib(dg+H&uq^uA@zF21sW%`RD@1oi&aQ%Li6^$|re|^b2c$$+=pzs-oeWHIU`D z%*R2W9;njo3l2aO)E+^~bV;zvJlD@U3Nr#gfR z4-^tK3{!x`j9ZjuuO`tjFtQkT!|%M0#qg8i-F>a$uR9nxnr_z9a zh!Fg4In12OFSxM#^lyIEA8iROH4f^i4S52f=4kQ2ZdMsBo{=ZzIDDN0=$(0sz3%la z^*+J-se85fK=R$_Y;oIWs@YwYitFPW4~N5I&?S_6e}}_PD|dw)IefO{`IC2Z!idK- z?781Ebw%yIQ!7~<=GUgk*?C_Jpc9&5kP~5 zkE-gVj{L&Jf_WNC`jHtThHBrw2Uswic(ehl=em4!?U5lLBQY01`)ZUzp z60M;jb@Tw=v7L$EeDmep&}zDkxeFKGe`Rk|c11sV`6p&x%+EUL0QiYk>o%K;lDFEF zY1hd5iQDA!+a_#uA~+qpR{lg-@i09;`$t*5ZFfir4d^KS9IZsCG_?>db7tCgcOMX|p+=8|6pt2ZW--@sorNYyH!becttI68UT8_shlFl4 ztRHEbf2S4h$)GYO;Iok9{s81}~puJhRPru0cw9H_D`Af$_Oc&x(!lL}-hI`M#YK*!yrv$x_GL%`K(KS?4f;wpUO<=2k5XG}&FQIA?1+g-PR7{oo3uQ`rq z_$GhTTvuS*@6NUP8=3E&G-SPDjP);rSWn7Vi-k=W3vnnD!9A~o8N@4_&($2~A8Qms zlF?qZ;$9>oB&Pl#g+s@#dHz~-x7MWB_v}SjP3l(Au&x`$+{NAX9^(aDUs#c`){E{B z03ROWJ+wl$sKk7IlA#d4k_dE!PNb^@I}#V)l6HM~mtMTyF$7MH9d7{8)}Hq*dqXyF z4C({5dIJTyK`XoDALgm>wil}f(KUD>!H(G^P`sc;2=En#R>9^A8*O3{Y)r808jzv3 zt{ldFW=u~?V`V)Lq;Q9>nlZ8ky-dc<2tHl5BXW*0=v;qKY#y^0s~E!-&aGRipp#~e z6JbcklWmq84jTGB;hfK09ECVvLUdTWRjT$A9&{Q85 zTVVjUE{~^2`PRDyBTb<8Ya$pmp60-&C(J4t!ulas8f=R$`)yF^la*ULCx+st ziJp<6$-)yDLTG7lDnm&<{?$>-LQ#>x&gB4B>b~A)Gf#5Hw^`>I5fAqPESK;f;}Oy` z7P!|`^!v*Vpjj3c6xz+eJT-fQmO=@~T995Z`P^BCp|k}G-Jl97<~V<4o`wH(7a^41 z{^RR$E|K_>@BoN5$8()mc-LCZYzgj{ci)=M&_{B=)m>ulGZDdv=iD@4>3ipK&$yoXO6$Bk z6}czhA1UHR*nxKkT8w@adf<8fhNEWbNw-7Y&YV><+sxM|qu=>%zz>|yP+CKJ9E4}d zgM$H38t+M4@D$M^8=dTRj+M_Jvs6G(17Y)=-VK!nT(vFAPAFFsG%X=Tb$b|{^1j7? z8n1i8JQ`$(fIF1X7FE%?DNl}U(Jy{Ct$aCdHD`or8s3m3t+eph)8UYe&L^I3)m z!KYd@?Tj7-)U@11*Vf`0mpbJBcQCHg(l|pTTI)&fC@_mm*Brm-5i4ZrRI@W6XZ1jS zMeZHdbYl^3HW@EMjD~*r7Y+E`QB(3kKjpp)>CJho6z0gOLulZ&A7^}u#t5#0a6^{> zDHnF5HIjgz;=J=DqkOi+pXsH=Nf+2h4@>%^vh~Eg5N;F5bQUe5CT=FoR0^6)@0BFT zH=J}UmDLrZMN{s_*6s`hvu!Si>-9d;S^nO4k@S#)i!=3Y zNVCijI8fAbE#?rvA_S6bLrhOTgD|VrM^yMX)AcVX(>Qk+9JzIB`&<@eN#WcZl6Uqc zEy;bO=64_$3{h0{AY42iR%$sbQ}~~qbS3tmf4Gr%*oVv1|D#}~rNBDTt7eEK1&5{= zWBe=EIqUwAh7uY=qEoVFrLt+>s&3QxS87zNzwuh0*ILh}sEA)L6lV0p+oi?|tGC@q z6wfdB(k|1H(M=cnQ!CME!(FR9tKp90#p9ibp-Wd7#BZ{GR4jvnm)% z>Cbw}^#wz5^zRyM9; zxAF%~ae0b0~EY%v*S+R@9pB(T>SxcsU){720SXni>H)xuzUglR=C zL@sGmOb{Y6aj6Sf^_7$$aRx0UtR&{ZF_nE)*AIlQxfRf}Y=UUhqU z(`t1X-mdQt8+{!)%UDl!d$baY@;#ged4y)r->|nZ|8@z&p%p*hwcV)kNwYryo611< zlcZQ?6}%vinuHZAjq+$5bD>)Rn&G3knVl%W%>-fpq@jVVJ9WxLy`ZZ<=(YKo8;>j1 z76=@(V~@7=w0>qXP|jEtD$+5yVrNX`+K<9HTLsStTJ)kv9?WT3iVQmLb=*O!QzejC+v;U5KJHem0QnJ zjz7FN&!EtDV&~`W`S9CvXc~uy0y0*PyA08Y))l;{&B~oGpJMI7`)f+1z#d3ViB44y z`3nnZRwQ9Og|cHU$Qo40CtB3kp(6RA-mIYGwb=yO!_?r9z0;_nwI+_V7#hzbV{q_U z{vudmOLPUl+d1DCU5~!=v&58hZ3Tepwr5jP#K{?g9NM~vPktL|*0fuNHr22f5pH9nx4&zM|%aVdd=5>=Eo#L*VIrPKuaxbrkGuHrGHOYT{9=O@7xTtM5rT zoToIL1JOe#C?k)h1M}Kr@NP3?B!}aWG2n!Ymh{leI++8og%%PCo=w(DrY|rc=s4QU zxwb_1M-4gYyPYTUde?3(4GCMyx7^A%G%Rq?010UE;_#4XxHL=2=N1HRo$ua5+C~)& zdv1(c;kYg)0Ao3c%ApssxCFA!B3l?_qgurumIWTwePLnQ6@D!R#wOofuWoO=kTT-E zCr|Tv>C31&AH}E5lku~--Gs7wJxE$sjy=E!etj)0$i3T?A9AtV#+WtIG-QOX&YOg4 zg|$ZgUA^xl`V{yTjZnTN2pPa9!_KafD;Q1quF*zbDUQz->IP!OLsrB$H#nnMUxu6G z!!~+UalbgdYTFm7Q>I^+-u|nyo1ETbkIkc~L^ie{BTS4*3+^O8w?0WxGHgwZdLVjL zm?kYAxd5uphFs6zheaLvwn{rYxI*LLwrI(ZW(D{D9J5Nby0_vn#xj0r=CE4;8hlDx z)qHx6 zK;?*c8-%?=t0pfmvuBhY0EZ8bEIUttvY0UkUc1(Rs8Krm7ER(|Zd5Ig6;CXC!Xa-l@C0KDo|T~=YXa2Pdo`#?N$;Q?U9!J_Gr~; z0a^inyfJWK$2aA4mWdWc8Wi1Kt|t@uMQ_wlHrvr3KwUSPr1t&jN8RMlAgI?qg1!ot~_PvpQZaiB*uQTZk@@ze$&MQgSpk0)j%Vnw0)Ld zcjNgQy@fFKT(`BtGj7ejQN@e|VrVs*z_GWKA*z33BBen0#}55W{+7?6e?Jawjr)eP z8p5)GT3?u9dEWq1->N?Cv^gSS=pMD{FXuM!x8Ya4{NC*Uv+&f|znMEsVce};|F(gu zRMH1so8za^UF+?I%5#VA^1~1|_3^)WZKUhqhjo2o?lX&N-{mz_bl z($G?v?Y9R#r7A7;gXGCx_mt;`Cdo?fe@@S02i#)3ZZR=^qr!Ew%2@kw&sn48`xJW$ zYNe8zG}qvM82c&!2#HkOfuyqwYDKs^YLyz^@T4_eBf|(CVXcF#E&4ojd6EgH^q_ma zcb~yW5d=!QRB36vijY zPj3%1iA9Y|L^_V8IeP0oizI#rP%fJaFo!Kk3L)(j0>lI&iWR!p=C?dqENi^aC_L z3n}e=kOx`iWl0&{AfQli`h34cwY*uK=Zsf$>p=V<4b1kZHy@eA+M^7^Xj`qV5r`MPL3O-AY@rCK};4AU37Ake7gzXFbVSpy<+b@s) zwQiI6jo)Z#?ZqZze&&D-adZLyJQMKVG4(InAL%}m3^NLJujE%A*M_gvq7Bc2Y?=Mr z;8I4ANPWh<{+}!sKu5n^QHr(kIMpMVP*Bqp%USI+weVAPZCCWwU39M*cw@C2?21W7 zn#!(ha5l_N%i{5^QiJTlIVRFOwWAfP@R|A_x;om{j?!)#UIQF}6{E$|R8oKIzP{3q z!>fbj9EFq}T|@qPJKj}G2Ue^NY}~aF{4RWcc7AI7e|OLGQtS|wr{hF-sq+*)#k`sA zvBkG0{U3Vee0`S6Z`oi3 zi{y!<7E@$@$;@9~ed1JFkmUXg!1%AVE!X2>v}G$xswLz4a5QDTs}!ebYiJ)RShE(_ z;&5uS?X|4~=fwOsr6}R>eEjOiTK-;jr|bMJoCWNiv2ZZS0y6$LBlyp5d;xR}--|Gi zaDSiRryPdYALa{nz+dmDd|2%xn2NIeH{|ml)IM>9MA#VPhna0&^P7d4<3C>keXrg*xG6XPqSL5;ANmJea1t5YUzeTu!BA?sZ0u*864LbV>D8B| zr1P<`B&DTQu+-nlHB)Sj88lBFh*%1`AZGVrEoba4!^lf$7IzUsoZAuyF@FZDGXJ^H ztk`^VT>sD@oxz9DsM&&wg!cZwj&LNFf4Yd$EW6RRE9C(Z#hZ(V&)tVs2_JmF_m`sw zD*#t6)ni-TN`Vt4)Q8%EfRd}eVtx3Zj#qTw`TTG$JV(sP?kMwyv*~H{A5{;Y z>5!B@2+kHNL4+Y_Zawd32Mw$LA}K|T495NK8jUcB5;-|;vt_8s{&MmE`Ys(o?`YMM z%O0Rn~<2jAHaItY?xiK(azI@5$x3Z0A zQyKn`Z`wg@1uZFE4tw74!1rSBQIp?Qy+7&it51t!DVd^w`NSSvjHesDVKoD$|25M8 z`G@B+p4mX6&Y=|DzkdhxyH3O(GE;NfD0xy}{l}~5HyU%Wexurz78)E`Am|39Ilfta zWAO};Q(_+fJoSyWq@!VtZIQ;*5!vF9OwC+znyl5%vpa0u$@V9C6 ze|##j_)5aqa8bx8lkG19_kTR$uRry7306k*`K;oSnbiN^&i{X(|NqAS|KI%kE|3h4 zo%+u^_|GjKfScSAO#xY-Taj|+JE_f=OOQE!&h+YI0)yXYufvXy{}nK4$FT_ap>$!V zd&$4t$mKqK`0%5}55*>!$(!)}5v$ zTKK>>S$rW zzeL#vY;q}`K7LY$Nw8504%LSAZzc3&!u&p6Mn+}^VZ4&a+Fz=X-vHk#j^&81PSaua zSnQqKNzfE=?Vh_(^Pv^4s0iLj8H}p9d)Xx{Dc9wIcgk7gYOSs-fk_@~%l<{yvhF|u zjhI}js~fNF^Qsr*yuXbPZ%t~BN(CGnov24K3h z1-dJrT)Lc$uI2*frq55s z=ofxiZhJC!b)ZDHh*T7ftyv5OvHvUp#M%Ve zMOGGlQJ*m0kA5ifghNk2iJRC|0{#rLNAjr{EydjHDRl2Y9K3#ZI1NT;}m4=GUaEeT=UkQ{j6_zh^v6 zq!L{_yvBY!oHU%mVE#+J$};dRX97L~{IHew<%oGwx*LP>JDl9``@2=%;rSn_a@P~+ z2>@sf!tZR-QleKeitH~&EN?lb)jXRGWIyJ-O?VRbS^TF-H(GLk-zDs?SO3r3hISe2 z9Pk)3CXwpzUtHn@k8+^_vi)Nw6385<^?WdmF^6Q*yyp04dPn~TBeeBLhQ=>LJ-H;{ z(;4S7gs9;G>I#>12PKq5ph(pFtwl>wfRx*xwT_?IqSb z{KCmnQuPTQwDb6!QBvKf%88lSP6*-=NF+9kn-cNXvhwr7<lXW(-6fFx&2FNt7VyKqZ%DrO zR<&xAjD2agXqC;@J3(Nu>BsojNzJjM#vI4OH%oxK!F2OT^Wn=n=j#E2Nh73q~9NUiO zU1(kYCEobl&X}ig7@&Jqa#gR7uobX0 zh7l>DSK7;S9*#?SF>ZCcbJZWIe4f8Kar$C?*rP^5Lh_q0c~GKdW;@eC8}v?zO8j+N zwM7y}2#sdHj#~A`fc3A7*50O`FU!8v;?CNmbTvGJc7 zA_BSh(@^Lt{&aL_ZEmGIUTc&flLb=D_%XqYNYKmkPRx&O4|)Tn6suI`G8-w5DXpBg zJ1mCmykR~I@oQ^zcz(mH=U%e2(%O9IvOdaj@sLyl;)m(QBrWHo5o=xcGL^3E^k+2o ztCuYXZJsL0Y?(zh&WK^)Y^3w4Nfx}#3q&dCBvG`(Z_OU@gmD&9+$3IO0p4}jH3CM-SEYBTM)h9ZZ7OiTSW3x>Z-y0rV>q%Y4^Zrm1)*#{LWe{33>IdQ#d zg7|HT8wUnEs~X@}dPisIP`ZWgkXN?5cQaj@{?18CH0N_SC_Bwa-oGyr1=^!sGYmW6;J5 zRe}1&P(1LnF}G{5-c|Fh6|zWl*5Cxf+Vtfnw6V=GeF*PL7;p-_Oz*iW@xsw6)|DcT zhd9V@+`WNR=ue;}QjluWtrK(#ThGA;Y`JD*gow1+Uer8qBv_N`%f0b2FY-PMOe$5? zC=Z(#t?z2CI|m9jvud^Zs(ZHuyzt*x~)^CTmOrf=B}+n_mesZn$8QU<%Vw7^WS`?Nb<0SAfC<& zwkrSDsrx8;*U1VzZiN+F;{!*o{m!bvY1V%awRkuI;djbPoHAxP|2>~jKTx2&5N8lu zuuC#Pm)~vI`R(wqO^mMA9Z1Cx4Yz;1^^<<9x7ivx4CvyYx!srLPvnH91oqE-0hR1UQ9#aKp^|%K&Oc&#v?y-Y5nko+n|Zngz1BSO`}uPhS~mq(*cb-J`;Opk!5u5r%MF%F zSo5;<8XN{?4?rbk&>gl^ZnZYDo3#9o8DrUdiGBUkMr~P4HATuUL;ZvT{`~%lt*3^7 zs>u7k>mkS*=Oc_XF85%PW=iMnrA$au`&}L|BD_m%HHc?Ft#XR7T#T>6uwsh1^h6b+ z-t0pSRKUhF<@CVg5t#?8G0H9F(!sE>RX`jHOIJyUKtw5r01Se5AEpUOjvl!%yk<4~ z<+E5}P^In^+adB`lNOKDRxXaD!2CS;VDa+8VjAI{^;KXtll$sMM-L`mk*C+7gpqn* zrPC)%xDiI@VtLDo_iW(+U}SR?Q1lYPQUxq>!*Y8$vNP-PJzq5s5xyG+>>t_&JQvhR z6WLa?rE#eQ7TqppoYqy3vPH$gcXBEZ_-j+!kbl2P!{jA%ZfWz}ekKWH;>$DFAKbA6|J9iW{{JEof zO}A8PI+WD#^(lv%B;3CwY3fE_GvYYU1$Z@iht3kL2Uf(7y-4s^v^TDggGR26AI2Zg zoQR*yLV;KhNURKf2&dyZqI0$%ayUC-c8@iXt6Tvgh%1C2br7qdc;%I-F?pRTy|Mz z?HAvsYVf-y?H>8;4qC2oFr`)asVmT+*$M9bTohLEbIOHB$TomCfQg>gkQdzh z91NnTGThm(Ldl?Hi3{Nw+w&`>oJ3jCRAO^`R9iH?t{X&Z>j`fY>hPAtip38!3PDZT zhwvu9DVz)48)%n<1)J4kUXttfZ8r4E-W6)fn%Q04rU%VYTW1!3#XXI*J3TqrQzPZP zy6JZmTAfwy0B*JQeo$b@sgn0#Ckv$LYduF{Tkebh@v1j$pls zBY?+$Cf@C=A@7myJCt1VeD&6=b52P!kPR>U^La7B!~i$gL)|c|3pA3u`}+c^LhU_r zhofggeu95L`sU|FaW3Zi>}ZC=%{vKm(sjvj+{e^nkGebTx_>=W+I#IMxJa_TK9D7= zTkE5e?OhS{oHzGX5B)jbi?kIHPhpP%<&>8R{p{YZHntC9zP&kMahD|M@s7OB+?yrr ziVP4ntajVZ^Wf-cN@c(Qq_Y&{WW4hx7y%G8$vyEuN4^Ht8|NR zmWaxvxzAm?7x$ggyhN9#hz7J@z7mr0AY_MC*C;+vq~ZdpNyz&G!xN|$|z2(-e{gnxsH5lC zWqqLFNR&0fMm*kA}P~fxs4;AC2#&b z26O-}Kd&5MH@&mTOkgdG+g6_@YVNcD4H*5a1lGnP!7VjCmH&I8Lr=_$A&T>8 zf?$Ea94OxN?(lHEVJv%bTNJLpJen7HSqV|~a<1`N3m7;191C%ynQBj4Uh92h!yVDe z_b%#2lu>{2D^ZQn9iMWDu%ZQTFe1Zt=qL5N9hsTKToS+2i#3-w236lqzXuVcO`bj~ zkrST?10Hu3kxAhxw}er6atDyI1P2GdG=l?|6lbZCuA!IM2dd`*yf&w`t&53r(BHLYGu@2(y%DfG*XGzHC>jSz9W8Je{pR-Gg@cz+z4E^*TcPN0B` z>vQrbdjCj$mf;pO1#8 zfhbBLw}Us)dbP6#47t8Ms%(zs=bnG;Kv6v2U12ec3Ar9P1*jUXStt^n znM5G&aJyyY3t3kJg~Ip6XvSs1RQ;Uqy*Q+rU}7p@*3~yeUDdZaF;(!#%g<1jb+fDU zPty>J=)H9MOE8Ry9+}K(atQf^pw4uc>c5ox7RGdIgC)BQ(jU&)cgd~lUfD@F%12pj z&o=~^_+M`t!|dC-Vi4cR`XQEyC5}rns5A#hTV=YaqNAsg;-5SLb0132dm(TYaL_># z?vOL{iJcIO_=^Z$n=GDCw<4WkcMC1?6hH=_#*K;;E(=Ftv(-=qf?oZ;ql$l6~l3;rwq`{k{0@~Q*$DyhJww6M8P_1P)p)>oFc#GxQARjl`=M35G%ZzF%6NTSp@ z%Ka{u4XAZK@GZ8I)At%vxso@T^+HNFHN-Dml&|cv|0%XBe%!bojj!2*m~pQ?8AaAu zKUpFwCvr66`Xuxb^~1e95%rODx*`%&w+VY%-9S&aSD3ir0@0`ov)}|POp^z`m3`Xq zN59i)Hh|wZ%CkL8!Y>c)% z_Gcm=jN9MOAHTk8b6Dv;h6QwI?mu44Y0Qb1EVDSvvo<2~CcMmH7?Sb}?h3Y4UX`?) zFxoeKqu8!8kFyOA<}ZltSE$|y6O{Oh8xUO8Ce=Rv`-O|B6c(hcjxK7gWOZ!kr*#;c z=c)Qi*IpNiR%tU=lPsQ%BB_dHiNHNN^R`JKFx4w*2;bDMZAQ?Ll^>5#>B0Y23 zW4xT>tVj33P?)SOSndAxrvJGiPIQ(kHSAUOUIs*ml6IC^ZE#|?DGN!NHQe(N%X;WA zfNyvDBg^~6D!MQQmBjk&3J+H&G>}bS{b29iLByDd+y0jKJJ7MlFTKDbsjE{V-d-n>rS-ae}UtkI&N0yEaW^R&xMkv0B(jJ}uX>{nVW3`|oCMTu0U8fpo< z`&GY6SN!=i^?QL8ZhkPLY0$-o^2@-T0S99J1)yw(L2uT)<PHN_EPP6(edX4J59spD9N?dd8rrrcyIOGJ?GV@R??wP3McA}#9lJR*PkAO zAwR`U-=or~CtgU)3A7sirouNgI0%~una14thEuA%+z7G{(8kZ>l3jFs-Lo6-<+66% z8>uv^#jf)iZE)q)OM6WJYsT8DT=>+c2}xS(4lX?-(?a&pG9PGY@3fYix>4Jk5O|z? zM~K@T7Ww^vm;W3Z$?@R8zxU+tkPtB@7A1h08Z+n%-ro}dZ9vE4xdz)JTKZ>Qe9hi% zT})c+!mZ}m4(hVX$|6%TVc74-(Di*1r1`;dB1zMX<8eMipYwE#KXZYiE8fA2zIVz( ztzDfyQAM$7g%$JfdaUerE_sKB6D(gwk|EZr=nB1~?9__ff(u*RRtp)T1l-qt@ZO3e z@4jAf*e=oUFSgmoJ8$=VS%(cRxXI5+n`1{lcVUT@!+95BufC%8h0S59Rx)g=wt@fU zt35B3k5cdN9}SL;W|);e4BK2-N*W%cne^MDz+l7Ue0=%jMoQnN^?TYWv22C@bpyFe z*0OGZz?ee{yJ6*locaO&Vt-`@zr#Q*b7BFbu=n_i;9GTr(s`GSV|7JDQpKlvW@xi< z*0baJ@Y3aoYV8uPX2KZkcbRs-+F4RK@LP8~qpTDUdVU)b^L-`=4hhLlWSw^j_Y)PU z1>|TI%IG@_NW4mrSjwoF`$MFpuh%-BeI-rvoGQt+?~f>I9;4NKAWF7x{&;3tdIELJ zIr@c0av<%@;U`^xXN9z6TiF~cz^_A?*9M$@qT>ra)Af8o5L_U)cgW?5EL_c+g?s!j&b|Vu zt!>}CrL;gPQnVEJ;#S<= zyqQcUKo*niz3l(9Rk>WU$}+1VMx-W3I8)XD>+ora4AE3sY1N4ez5QDc{s5?Ip2soX zQvF#VL*hq*&Q;n?rSCJYPeNab55^PL2tZ3=F<@6gY*r~!9;`(3*pKQ#myvsWk@C>d zy9v{6MmTsz6-jL%;`SPts-tI^M626Gl#=c zA}aXuQ5pyUr=D}OS3VQyLYK5B@cQU25ne=yWf}&zNOFUfXX87x1epZ4kXz?mjhjIt zfz!K`6PF)8a-w2ivO->c=@Zh(K9-x|20@q2D=-n6j9fE=a_0=`<@FX1oIdxVh$!m} zawcTIS>wnx>}Z=|NqP~H2Ba5_pF{_bh&9U$^UQXC&p>i<_Y+UHwM!IGHZ6Il z0-|6yZGUjwLAz|U9PnBaiFez~?!uq1Sn-aPIhHM%WFr*@9c;Okj8`D>Z(HPSB!y&L z^KS=He`TM)NIh9D^Kd!*1VSz;?tICiVsQL5fw4p|^O4IU{R*1Hr=Z;3JKN8O`yDL= zd2{BtP=oA^yZap2HR9FV>x3BvEx%OJb@bq?jU(L^fy#yFS(SPW|?<(oMgphbs(p#bz@V(s6^`4Jw`4fjK^QqG9+xh2%?4$*QRpR64d#^ClL*csP=K|fK5m^~u4t1ZZ_(H! z)eaf9lZcAWD*QM$#cDcI43Az`n?x2M0pyRCzpo%Vav3={TDkGi511|2_1cxt*y^Jf zl?Z0;)n1~l+c#&DMVBV6Ezu>=Y;>1CEGo9%Dy|j*kt_l<7Kt+z7=l+5tneOGR4~3rF+i7E1t(7A`qIq`dZ?}bE2fp6b`O{$74di#T*x;p&`J(1h5%YZYc3Rn zx_Z2g!f;)$m(OvFF1xGpcowYpTa%&HKB3j?1UY35!PND|FNl%xck%k zx5~XwI~X#NFH|&aLw=gxpJxa#p?{4ae296e*rw<4ieNvkaCLVGPj9`sRZt@nv}ST` z)Dy*e7EII3>uz~)D?zt$^ zgD1RZ>c1yYbPc$ybI>5hR;%EFEG177;q249U6eH;D-L&^$GZ{{gUC0N@}5f_k`F(f z9;0zaT~2bxC64Dp8T zk0vi6$M%O=BijW&Tiz=!@!ONkZL1d%m6)DRf*$uqRf&N{!DG^%h|v6u3YQbRp4?#6 z-TkZG%!5pY*Tg>~-ce~AhERXRP1iAof&O{a`oH%C>oOC79;(Kh|X|)`lm3>Z)&@vuN zVRm>8c6>fsL`=J(6|1Eqq?34tbnqT$L4yWeBw^b(F_{NX=ZGTi4X<_GV$Bj)%cV?e za=`}$PY3OK`||g8XJ9d^&W2G;1FusrXzwa1n#k~u-cj+xn+<#hLs7vEL42|(cDuc8 zN;cMt*3516I4eKM)kWI-hDeJh!-a24vhz-a`%|FW(3M4<-cWPF*<;l=x3xAA{l=ce zk>+|ZR=dMP$n3pG18i$)(1-rR-{!p!=&R~G$=O3JhUriE_;nh+R7dn0$KPX3~7>x=Qga#gstEX_cWe73yqA$_&*s`TJ&EXX(2xVGV>5w68+ zPpS46Iw`EUbvQKp_2-$~_%Q=KPER5ukmn{~cX@n0Q+#WE`%w{ROT5Qw@MfynH+{vm z0&E+B{k?mBOSTl)ysO>BVy3+i0w@1uJ^@_-W}avxDprlz*^(GP&{1MMGT$1K*mTcLvS5Y zsRmf6T+bl@c^dof&g8KRn0OZXQ=i`~pF5@caGnKH^GRkP@gF+8y46BMD_3N9ig*Fh zYZxtb9B!UwuRb_#s&*KDS<2~@t0`w zDoT-vT|$m8W_HBA zZ|B%(3#cQnSJ6msyr50&@4=Z8rbQEZHN`qy$A~o6tZRqR0h5&#ZTl<{spb8j>TXF5-&tLJ4b>t$F*nlcSbWDhO1#lj=(h5n$(xh-l78NrH&br&sqp(TeLmjiAhA< zMD5>wdi;9inZR_WebxJ+MC+H*YfrU$+IfuS`GuJ(A%JNLid16#=2r2}rF-CS+c!C2 z`zDS_lGZB#ccNo|w2plth?4LoO5(quY#;Q-BEGWB7I)R)qO)A?wBNLp&={gl%RYK? zIuf!IKK1z|l4hNAjJ8iDE5H?#CNb*RLj*Q6ahV&wkeHD0=^aW$lr2+xUl;xGj4L6W zZ=Zp3ghT~5L2<@Z)gEi49!^E$x90_66J|qsHB9Nekj(YSfSvQ(>G>J!DCZIuqL&x-qLltB!Vw7VLM$rpRkMJ%f0Pzrf$Er zy;L-}-s~mbJ!v&vS+V&IcsG8mm26z88%)|S2Xt!YE-A`LbK&lW)AB3Y*OY_Y`x+^i zEPl7sQ=+7>cKpYDcDlvKo@ZF~C~5U$CXHx?;e-ZLVIMmgY3FO4O0?De+Blb9ASy^W zyBoe-k$Y>@a~d%XUV zdusqQ!+^gEdq_RxhyVnSH1f%jo^>8eL24QM7X%gofY7At{%v5RZSQu38vaZ-r1hrc zWP5GR^feS$PsRWtfy-jM)~3+lsrYOu!UB-=Agu2_a^;@kwmE_b}T4x%7k$%v~<5e zmRkO(PtCwBLU{Fs|LWoe|8qS{1ep7hii@_qA<%!R3}oK}ti!VZ%uZI}he-=Qy08RB zvl48uvGYpF(9p?p05h!I6%eH!9*%9Q1L6RHkb0>8X*vUzTAtJn3`~gFN{{Ah$&Z} zo|0{&Bl=6N9zGCj>$YCsP2BJ>6WOm0zud{)P>%Yo8_>Q0Qv%@Vkx4ItV*pck9ehmT zwfjP=sI2VR?tIj#QqUcD`&~9)O<4j^R=>x`U!1v;J{*#6^a%}&XvRR_|Gcjxvy(5zJVmd8Tu4LZRVoysH@#0Gnd`;{r!K5)i?c_uLC?j;fuT5p)8By_~_^h%;c^>v#&+cw&C)3xps%=<=8n5Lg(hde+|$s=W;b_|)kgti8F3LW|dk zN5Y74wmR)O{Fpuhl~K;eV*_&M!5o=GrA+T`b&>Ga2={v;AaGFumB3cFd4lAw+Pz$J zk8M0vFC>P=>KA;(;)}Ci66Jev?d6!ZKQ3-A8qceOy{3Xq zx!q{p+O^JVJ=|STGoZJBhadT^$~gWGJ8l~vfr716+maBaV<%}!@}XZWMU+1h-8bol zDUkBact9dE%2+DP*RDMP-S}aG_1>Lep0+2pse72)Y4#M?6C}(B>70A(*=URx=ZsN>a{QR-!MVhU{(SUi zkGD<_yn2xVM<`~-AeF(G!5-YT4>G>|LOgeG_LeNY<#kz_nGru_c9f;N?S#Hc!!PfO z>Zr?cD*cdvg&q#b3l9QEpOQT;;_E3`;$zp>2#dI!Rg&I9v~{Z{RgaG*y%RP1Xk!1yIMStGsEUj{nh_mZ4<$^bMb7_?u1iXR{E| zKBdbl>H|$-*$wjjRVHfMwGOA7XMzDZ$IjLej^*hHt2$<6gC!_7Jw0*6jh2U-w<2+G zR9p{|kB$u_s1Ev}CGsN~;tY>zdk3aGZO7QChnpXCJBV0Ak9|66#pANNfbROLWF%MK zJmw9!#IL;&@6+168i|Ktt_0to{#chofA~NbJ@RJVXArH-2j%P2V%&Jp`e==2NgkY6!L-lrfXFj(Y`hNbRzSqP9qP)2SK8fI$rOB^ z)ImJUmep=qTJ(hHXe=apg07Gz^L`W3Jj2(Y=Yvxf66e8GJK>YP#ZH`%Tci&fK z*6hx``s0$P)-sOb^3~q-^x0boCH#Y{XWLmCw3kUx%fRr^thP{s&2MJnA&s;2lQ~6My~afP42DU7Egs;{C6C|@}SGY`u!*^vYPMp zXgw`1#!lxuOLWx&njil<#{4LLR15+1W7`q0AB59(>5|+2zus~h_9Tnp6ygOnmm(>D zEtNWiLw2yd`C99!XlL=KytqufT4!xV!jD}{2s37IfQAJH1~t-(d<<)XvViLe%Y?gF z=fm2)XXU9S)Ay)i{SWuz$RIw|Vx^MIJG;9}I40j7kyxJX4W5PoB!Wji6o-@si>!B5 zx%_-tjc>b^h@&#|y3Jj5!p?mFVsr2+>k&N!8onla2MkVghm`&ryI(UqalTOL_+ZzQ zAI}tXON0pm&<-ob_H!$$y6cTtL9_GxxRj_4lbkLmc zx{M8SBzP8Sc3!&zFT$yTk(NXQC=t$|Mpj$`6{yEqH`2N=B5@`thrIaK_!=44WnHbn z5WB&Za!}QNfKGYub)k0+=G?tz$*+xq;^m+W0h2>X7aL*GTP+rYo~-d&6W$WRxX(#l zIU5Ci*;(H`_d)izc zQLrKe9F^#)?pfz_$i$l2_=4299MC{nDGzU^?C|be&Bj$uEQXnz>kA$bKL5>A`rc|# z-J74CL?_G!H-IT|%wFYu7C)5liisFi$nVeO$C`&TnSTg>G!6ocGAVxvnJ55`cFYVo%mp$Lt{0bSL^`W$^)i%D& zD$;J3c8Z(q4Y^>U-5yM}^>vf_w%ipie%U&3?tk&^vCxPwvjI>O=4C}Sj(|0t=Wow! z2?-OL3|7;`*jV9Y$U%#XHd;UiF$aKUBge*Gko?E!J#h-MvrCm$6tQ-iG z|A5^?vfwc&W!~*6wICxIuA2`#v0L@jvaslcM;V|o7{A~IjVwH>ydnFQ6S6<$jDw!+ zdg{`0+81%;8n457Wk3;g?p}O0jpPwn!22C6-_943F6b!{ywpt zh?c509xRXK)Q)e>OfeGORXKNKr2hbz6s$s*KY+v*Flp(DM24y45>=oj(M5^|xOhwf zF8rn4^6E_bifeXf+(-iCsc}|#B3Q&cm68CHRZ>2&7z2Aog!t6$;X|@oi2LqDxFUw39y_3u z%B6CzK(1o=bHA}6=+7IX{NyFhGyoh9u|so?SK~uvBf8iYn|aLzAG5d^8w(tF=vFV1 zm)@4VD$Nf@JDL*LxIOUQT`dxrw&5FP{O-n@u768x~N#%=qGnMw#!$_qUL*SCM zvQ~L{5X`aQ50&0J)zdSELmvy3Biy{u|Q%0IE-5*-+EJcB`34Tu5gsZze$Fdt(jMfUfB4oBoqT{i0)l-If{mqZ)(46aQbAOR z$Hmqv{ijxO75S-vwpUI!&!6gQbTh=EYm-!*ErU+rwA++#U@oU^I9|m7J)fKFk3h5m zb@)r`odbrC7_)WWVUzh1{vIa<>4ZUB(Ha{R+zRnq`k^|>7|U!ElqEc}05@!cM94R$MufHHmU{pkC> z@j(DCPXy#wJX=mXK*2#_fdMMEK>#Fq6df)io+pTR??LIMx^0ttKURo2lzH{i5;- zRAmCF?$0iIfq|37G8gpM3%}0m2TwO+^T^ajOcBMjjYz=#x&UD?fx&19#S)+9V3Bfx zDDJ;*Bl;USyovmmA0!nIe)6f;n0~rPqcYDKaYtP@0e_v$! zqF$k=Tp_%6EbNZ0RCH3LaV&nsR{9jatzcE{D5@4#Z=0Z+?_J3;+CI#AqxfA%%|Hr=kN4NhE zFZ^bOK6ip=?Qyse{%`HwMS=G2PP8DBzfLj#$({fA_f+`-L$PX&-X8VufBWD3<}?Us zf4Z##75ZP@ufKH*!)L#RYF(PE1pl}8>nK3`_2HsTzyHWDh6u5z}^U_9~(IY3Cq7taR@5C19r zf4DGkl0dKcQDrQDn*QUM&8)xkx$odo%j3_!7^)A+Li^Jd)N*P3ugN!lUI-sOxT%i> zWK0Fe0P{_MG^w|aAjQakNGwRiYy>i7N&%IU@o0kfODqr&DUtYZkrIAa!mGRe%+lEp zaq#<`98z7Cxty1<3%#of_{#xn%@2Qa=Ln4|M1CGx5N+fNp%foE)pPgtmi zIpH|%7Nh;{5%#m>gHbNaUR(Y9`qcRP%BR!ZLMcDsf!kyEvo`31nX~QGhtYfh{_Qy* zn|8mwJczxn@r^q(8`S_g@Sh&hF`1X!5SQT1paq`!en#x>@pOQVt_()E*$u{5krQRJ zb%_46RQQi~?IiFC|Ms;=sEd@)>qZwy{ZC+5IH|_-CKMT$ao_gP=!Fr%#12r08b7w( zo6cCIaXFAlCo#6>sT1ug@tsF2wX>c^{W`wJ{&?~*wP)<3yR?uvBOcCNr zZdZtzeI8l!-~H9kU5dnPI{aqEWbN_2{|uj*Jjis#XEzgiu=Q_iiyWNf$AF*1p-$6i zuYfT}l&n1b428naj~L~Zv74=T>#qyB2Jk1-bS@tqD*1GRJ@o!q$^=XH;z6S*&RD=_ zEuoc#{im)>QjW>x(RYeK53mZcfL={@K&8m=!oWteU2P--B@QkyOlE}d+VDbWcvHZm zB2D_H)@J2`f!bi1(?}qRpSM988m!cJ9$1ob1L)bJyvBEI3i)OTYfEMti)xR@bz>=a zh$)(&p`rJbXOELz@g*v%O8L?o9LCnIxPTm&&W6_|;kYL%cEvZDY-ySJfWyu7|1$;f zCBwfNfOYU4^I2k?g#EaHaBd!7`wmk32fst}yc8@=(MRZz_|t?5`24qsiWp631-@z5 z?#)t8he4Tt+4Xvpb}b*1B39w)GdN9``Vecq-Fi(R=-T3X@pULuKyKM<4Uh6jJ*olB`T=gXfH`RTk2pS6RPV;ZWm&+Ko;MoJlm~`JB6hh$)bB6@=V~mSk#yAH z`WtQ8k3z+LQ*P>X+FjYpiBWgt|LyYqWhF*`@;dZ| zeh#=)zd?`qajs^EY|H*^nt|JUKVGNBRhQMQpTa_^Ftj$JwKId)ZFBM3$?@R;1Z;U@ ztmkT^f$?>qx-Q0};!VKsdz5Y%J!kgfWYt01JDbO8yL7SDQ?k0)UYABGF9fr9Q2LLl z7(VC+5S?T4OTT7oHB;AdZ(Y1UZyDih;yZHoea_fmrMz>lz9T|y6QB?WYJZO+rJC}^ zHg9cLn-%)Bnes$HR4Lmtl#)NzMVSX+`FodiQ5lWKdd>F2iFEP`mEh;dMcnbOMQgLV ztdH_du3KLL=B}B$Fben%)Bt@Hrmp{6K~SZcOJ-nU_6_^$r=eMD+~G>|K?_kuc-2v(L;>~ep@K38oU z(cI1fglo7-jT`spDf}{|)vTqA7Hggm-MYlP5YUE)< zqi|(Vq)=C2JRCD2AfCYikpW;3_!-tnP*?HRZ+!<8(4LKF?6#CU<5K!xd|qiS(V9%}Hb(a3)h)c;{E_CrV$O2^*L;Bt_G9WF2-pc2IM zd%^~mTM^dJQ|L9Av#@AY6rek!bigsp(eyH4(Xdu{HF|A4PioxFl>Cnw18+&2ZdNz@ zM>2Ss!f+W9bsvvnH+my^RizW@i)umT5%DzIJv1vWJ3Yhr)$VH;n$7N^7=^m7v?CeR zN$+izRbJvU9>f#ReKa>u4ktJbgzDMrs(Tkr$j;-FxVF9J)q@?)<(}z#p0W35EZiHd z9P&2gU$(5R)x=WDQ$2fuGIlXsq1)ox-(5kqzm%l!tr>>+n0^*)y;#}5_eLpShUNl) zI*G@n)i-^q-X`siV}tX8lxEVoqQPP!KW3l3SoV;oZX-|V*WRZ_(SJ=X=%jwvGVeJI z74#c;&dly%Q1v$U5}NWlj6i-3Fx*! z5W$y|=$JXe3!?Ka>U)v+{#RCUtaAA{{7E_;54f#h~18&fa)K$RNcc12s(1dgrOSeW2pXR^p%`bD-BLr|w zbo~0>9T>x;XgjE|!AYcX$i^t(@^AhU)jmzHO(wfN{HxC4klku(q&HEqB2gf2V`UB3 z8?o%`Yx`mH^D+tI?rsf&^o}jV%V|>D;Z9aXUgiRv}sY@UK zgm?9ADFw?wY?S&koXo1`KavAbZ>?z8h`=TA9(1@&(KJSqTnRamO^n+Q4`JsIS8VR-h&# zV45NQIC~mU+4HgqabuOxZsfSe{>n0{JAzSTp8%ARIA3fraUD@=8E}*I!I=<&UdUqfR&f*IXs%;Zv`|Q z4Px}F^gzwKF;c1$#m6eC+rWm(2Rj!Bj4k2SXHiDLiue`45G{5TzgJ!{UHH`5m)pkN zcF)tj*dTW8{5u_Ib0Hna z+D@Lim!GpAZm%YhdWo^~WfJD!&S=BIaT4UNp)kb*6y9_%szWKuV!L!4m9j{g43+G+ z!O;~6O6JiEnENosmVxe%bik63%TH`*a}9)yv3jjvD&@J;ShZ0-eR^2w!%x3P*d2?w zp!HjUZE?D>Y?o3D2b|5BL|X!u(u-vu#DRDrPPg6f%Ytg;uZX#UPavV+fXkF#GhGY- zj<=Ol1!PcBIp^l4OdV0o6{ysRNmff#ief3$Gj|SLw+2-4*d603vqkZ4Xf%rhiqmvlkLMXm)XRR!y~Lq6x7%m; zzHDz{wb_3U*e2r3cSSq4Beb0v+!5)u+tOhHpuKg|nAq_!VoS{(&iHNfqEirj05yOp4t`CK-Mj(l&TaN+>xp;ZAHCk&fOLNQZ3;$K_k5Pf)# zlIUd7n;=g$|IeHLYx**w)sdHh`U%v9q57{TI%Ae~_2XYF`^3JtnD7jE@*1g=vkj`o zB%Q*eV_v&kp$X^k(mE5Ww-v^W=7L|$oYmtr7u)1SVV7jv=UQ!oytC&$)S?nN@X@54 z7jfk#6yx+wlsh`&1>sE-WuLIQs{3+v*pkjI;$++Ft=46TXwlTJLlzjZInqX?%vDJb zM&w(aFZ3>0@ahelb@bgeM826PAo{R{rx6gjnuJ1WRV&IOACaZMFBcgAUQ5P`TI+A4 zPOe+S*Zym$IZ5TKK=w*Ii{KDefS^wmNK{u#9>m~vacCbk$~d*;n#+3pJ0!52pMY)T z;s;Zk<4e2n%7Xi4FY%<&2T&^Ctq66)saJn8k8J>DwB_6ywjUzBhAU)S?pkh1yXWhC zCs7*T%pnye5&Jj3fLWUyFxgxGA5}mog-3&PAnkbd{a}Fpw0~9&g6EslRU&J_Re7^} zM|)mUrGTweFALeeN&W2Bx1;AH=Q&(*>#j^GVN*PlXmIbbzpv|Yo?z+HRben8P<=R8 zsle~Xn`FvBxQty@-bqI>fY5py^oo#E6|jpys-;ZNEJV$($% z5bOYy!gGOeeb~S~Ub|;Bo-M2!Q~{PRtkJr#bW}tt31?s4~qpVNnIeS8LU+0DE`wXSEy3*j~W(Wqb1<2Y zs-QRg@SHNFjIBXdDD9#BRbYf`aj#?s@rE-2vgcxs+ur6s7nel4W+bA~EdK)g{G4>0 zkKI+9vQ#>K_EcWR9nJp}f?9=xGE(TKx7B52nVP$-d*42{`FFrhOpKN-y? zjYc5d0y1$X4Z<3}d!W;Pk!GeZKGOqo%?8tm`LeJX6z46p5NBQrzZ1(oGksW3Vz%qu zMoD~!nK_ebbDY&UY5|-^w3^~O0~>~Rbvsm>nO*Vn^!O{hXI;qd#KLz%snXtE!=ME_ z+8ol@PQ?a(>;wy)hV6s8_|5ocNYATv{24zj&pxoO6u zM-PI%hZiYSPkoUB0yAQW3j;mRPo^bjW?Hxcfw(JwH(o#i%C;-EOU-iIL#ak4t@Cv?c~JDu!D94mu{E;5 zyqdRz>>q4mDM+D1HS*e>eD0^bjgQ$d`jDKpqArbX`jiZTZ{&g$4k0S#2Z(+q`;LEP zyPyjqlB93+cp4Ii_yaEB)zcrVDaf6Cv*XvkO`!@O$OCZM$$aC2@A;m;v@jq7OOn=_ zR2%opRn0Jn8AW8-+JGPn1tRN-Mdu-^zDoo7YRwY&l4Z3G-NpG~rDTX>ti}U|hrP~l zrNlN5&b2{-J6tXAMx7J6wNc|#GNa_REGW=nQyM|xM+TOMA4F8OXP6rcY@F*KhCELf z=RBkkX-j6THXW{jP)oo&7?AGX8;BsRe;9N_PUMNWV0-^!Poc66aAPgckUvtlKVFrU z8=_@d&VQDC9PQx>rI1U3OuKsqC=4?yv0t#7Afb^T(0)dN7xWzg1c}H)lX(_{J7u-} zip_@DR+sTSZkYif^sNG^Jxz-Jn`7dMxh6J)*gmRF6xDC*Li6jO0l6i9{~ba3AQy{) z3CE2_&rC~)DHmYpP9;4U;zZwdU* zM3vATH9B1&h)%scCWgG%BM?GU zLo&@A@QMC522c!Xx4qLje^#aT3nRw!k{@)=-25xC-Tp)*K9z-R9*047dXJy|Tk}J_ zaO3mipawhc2gGOhSoB&$`$tzXU52=)Ijeob!S+m^j4NPqZNe8MYc|Wbu7{JYK<=xk zPx@U#Z%ibSv%AqNes7uTouRF&%)%icrq3KCZ4G3c#lKVTP-bt3+K4E~vQ|T6E8|FD@+p)cK2qxrp982vHJWGf^%rvv5Q>Ogw zJwMFkanJ!B)Vh{+cL@YsKablA+aCOFFNgHhC35mk^d}7B%CVAYlgD=7JR9}ReD#PU zex()gEigk>?--2qioZ@ifu}6Ndjf`_s#YMAr|^jS-t};Q>fMFiyu%-Z`7eki@FTh} zVmFV$a>YR0^!Z+U)9aw5qV3@<1wpyRfpu*O*uh-FE_2IdnYLtL<-KljRUI+8$Y&pD ze<5^$j!C9WYwA$^LoXbhWE4RH_Mn;sSKNDx@g6M$JtWF2uj_=5(|2~oV;|KkbYj@d zM*4a#@QwFkO`2cj7%=HHzq51o>>5T6vmo%`QE@$-r$m4eM+4XoSKxPX!gH&J$}wgu z&Zw6Q`}<2jY0pU=!~>h}EyFj+4aBh@rin0Sf*HSPQKmsXECN6~@iQNcEGF_|)+xWz zIP9Qiuy5?>o9wOUE7iEl6=@X3=1Hx!ppT#T|Bo)d(LLCV+4;dHmX+K z3F*_PsVq94%Dp}YuC2Cq%Z*2MLv^1XGj*Z&0l#?g$x2)++V-?4wQkwtgWC-+1AH3M zfO)dCwbMkov*UZvOGe$C>X!|-t(l{f4&OG(1%d`1O*{BbdW@gfv}}w zIm+@>1)onMD2H?fq1~#W)%hO#_^CIHo5*mZw7QMzr3m`^9jK6|<{IvdW;GP=3>>yd zqLjoioF2v(eW?WZ)Z5M#cZy}r^cp~qc3_VO8PC(Pr*M1G7FwL$+}xzyk^+9{3&CTF zi=hiMD^TQV3n{?I9L1yV9Ua-aYHHwUBtG)HHJzE7u6W`f+dz4(h{VU2l?cn6y5$xCJ5dfp|5td)vPz&?y}@*M&a!Vn%=R^dAquE6E>S z6S52MU>w$?a9IfEQ{}ehT0F&=E~&L+Vw?o1)gG-9&c<0=UGXyPWx*Wmqk{{QxB{0E zO|YfD8ihS&QrmPMkMCHTKBw)MMQXXGSXX!4Wm@mmzcQwXouLUvvI{LPF~BLH7S5O2 z1T*g>vZ|&sFWCE&td-exMnBbBAX)(cI}Gj2w7QoF7~(PsxgNt>JY)VQsyH7KOO!;v zDycK1%g%_Iug7lDz78%|%_(3r?U%tWo|#trD&sRx!hvx_l&K}RFp_0up&jZK_;tRx zTI)dsks0A)?_;lcvQ_=!HL{}j+G(ZA^;e~MxAnfKH}w$7>XDSk-IN!IRp0qNPdgoT zBc$9-JiYfJaGBRun(|D@c4g>D|GGy1yi))E?C17XsPy%=%}N_v{JT-vJ8IJ;Mq)*v zL#-5L7%tCF7AY$}KCF!0T%_$)w434=Yo;fWi630FnI<3b#v0g}dHhPK8+KK3HZ2?7 zr5#LVpqnaJPn)jLWeNs6ZhaL_ZU9Z-Xw`Rk**cUFIPQVro8j9_?<)&lYZNHkDC*Fo0OTNZCZU< zkkJoOSFG?$~_-0GKZ4;e^e>cm@OxxT$F70%EE^FzVN{klT-r4P@{gxwzsvO z7mGU?n`_v1W#SF0lp0om!e^Qq8x{60X|0yYq6lXt@01hO5f@&Br%Fl3Y6-B0%lKI8 zXb-;MV>8#gvt;+scYpc8ti&R3VCO?xX(&|7bytK?z^S}JR6A~*%_PdJqobqywkLII zI&kbGX+YITec=OXC!b`w*+?el&9i^MwSRsc!VOm?lI#XMc%I6-h4w74I}}r~-A7-U zgB0#dAo_RR79NvUcY~uA zLm@2PhON25QNOB;dcRA(&J7lH%CcKdmQBy{{f?}hq|vZ+6H{$ADly0Fl2>qiJD$1Z zX@0n0SDo5mvbcNt-f>8(17|Jfd?@{u&;d3{Cm5Z<-@eP zZ*byaR(rcrm8r@yOmz0FIMWc~i9m1SuYy0}P zhF=&ijAZYc?RL3~tmR%@HYv{VJr0H*mlN%x;RnwRhu!5pqu@a*`a1|zmDqFGNStsK z)H#NZ=6fF;Nh;4|*X;c8DjyrJk?;9eh34=?BOSrD@2iE!D{4GhTm|(HElO&~^UZ## zUSlI_6H*Dpyp8JRy|)!hg-hg~(5NGm@=47!OUkFf*LKR$|hnnv>8x-BmGDxJt8CDX*_OG8;~S#V6;saU?}LifBwN(I|Q z(r8vb!sSsPW65NZJbktGd^7))&HNX~%@KS9MIyJn%MsUep%8_E6sPSr%YFD{`VSlE z1(9!#)1V-U;;|X3RM-hu!|M-d&#KUgYo!t3425vLzbu#^SctwcIlO8KX!m5G8HHa zUKS3L@sT6TeI(+S0*nTQ5Ou}@6x-Qql!SNc9Yy$A6e*N>2g6qCB1q3b%rK6hITCaA zW%>+BbB;}@!dMvxdVbRwac;VGyGxoO;1f?3^+wF-g^yW737ojB z`9-eJjaq;(zqC4&Zgv9l!|QY&DLW4>e~o0RY~+TfPdzH!m()H{{VSvL5AIo#Dhj(a z0t#y_uQ+}&Y-1b25C9D>VWgZ_Q4oO^TbyYGK%u~<#7p{INI z-nGB_>Z>XbaS^D|^HgGWmaL(}=@+oATFd>m^Ie^NDxQbFfXh2FjX&0VVyIe3JG|1KZ(bz5mcY>cdGGEf4W$q1 znTqJ#rTWVRL2pV+O5_-2fD%e5v#U^Aj6!S(LiFVb`GcpJ)5r_S9{;(%|MTED>P?5y zDj(#!Outznnb(&0RJ%+c%&3wZlYyQ%f=t9yESsm8p3zRll~>sr7O%X~cL-TH&BY0wD90p&-HmuwtkK~A&8FIv!ZGNJDa4UPrHy888YzNT{NhVVZO9+iHpJ^w6SehS6gOXXnW)Sc5U$Ac5HG(Hx>`D?}ItpHa1^ zybowigxpS}O$e7w7^%eA8aDVsX_Z{(Av*C1E0)+U5IO^~yY`qT4yOCyKPEr^)!$Nd2Du!FX9~);qBW=CuOy+UA); zrD5S)EuYf87&=}D<@kh4nmlp~^mm?&ie(k2HHvbbDt;TrQ|$p`)^a}YP~MpxU1dl_ zoA;g)NBtP1Az#r%P!yDtSLHOBp}z>cNqMJFbw3@SNve4Em1|tX#d)7%?qcyON?mVKIWhN4k0EiOxR5w92UxL_NZx$ z$o}|6n6&cyNZe&?Kp==ot!7#+zcG+yt`DnQ_vcoQ0Iym*us%cKx8M7S;`VO831d3s zYhfx1?_HPGT#>(%D2CTBH!TXH8P|b8n0V%+O+21-l|ZcH_VjSWDJ5c zqnhSgLr`Bv$)6{A$pve~reaSsz5FlM6R@fPiL{Ipom_7u8Ep2L`{}vnWTUfVY$qo= zQmTM6g^Np=9X$RfyJ`_34r3R^99op8p^V-j=f zo;&VLSTH#0G^5(ftKgQD!odWazm6tZY7zzgfw4j%-$oZglIrmMdc) z(-PUqyGK~87Q`AutLNq!8~5q`M}*_d;-UbZ4T-uSZ`2oOT-wT8-MfhhYqdtU6faN&**Kq2YdH^oj~~*f|GiQZxbY z{+SW^6o1+aw)OPN`2>AG$q;<+e0UMPGM7dB<1=q9`>>?_{`F4K+liZYg^bM~yYMro zqmFH=g{lo(O;$61Zt%HfF zk;(oqe&gkPik}CM=$1MR44XKGVo$W#AANA>*^^%E-o-PV4|3 zgXE&=qQ*}~Q|rC1eMvYSuT)2ct4R)j8sF2C#s`=JO_*Yh%X@%k#*GT3Y=zf#+(5wv z#qsqJ6>GI1MnxLvOwDaM%LXT;!~LAuC-8<-6E`hDTNy6~pN!+;P>`Z%#&}VqxdnAH zTzIe|pM{x8Kl7#Y-h?s_8oGyqXUm;>?yNCv+2CoA_U%SLf!GAE92)ifcjZTgDs{C} zHa9cRKH%lONWdwX_oC?VrQ7bPz^ydBd9~Kiwfd7Gx^1{Z=VF+_Rz$X*4u6v+sa4vw zO~{Cd->DYdRI6I5J3I1%{^3KcU>u}^Z}a#%61_gQf@&9&P6cAEZzB8bvx;o3RtVJ+ z?Gf+%9bOR*RlM8yFv{Jm$uYFD%VyLm1j~6Z^&PkYA4nRHdWPM1aWqBC=mKfkx^qwf&g(;ArV>PCZmpImY@ zKu!NNFOtTgK-osZkya zj?y1R&ff={0bGe#L1zk;rBDz6;-c?y4eXmwvAez0WeU;8Nk{M6#_z_}G1hCY=6`18 zXTDJ8hHs8QnM;Sh@XNY3N)Z2RCZq8Bt|sn#f5$n9T$OI$Z;I;KvRxU_(L@@IhMv%u z#a#_nsOOeR5h1^M@V6fd8yuy>F(a8Q9F++qq%=o!%>6{^Y_VLN6Q2&X3^^;@!Y7ZF z-~aeUM9C<{dDd*dhA;lU(a9p;0}?EUuGIE*Wu&!8<6ahEF}{`D-rQJR95jC<#QYS= z^9&vRm4T?JR1-(>uxFQl!~9Wp=4P81)QNCRCGd2c9xSl(B2yFlWCDVww9ofymq54? z?a%?9ohPI=)X%K-T1Ai2WPPO6r86wuiYlgtWsPU)cE-RpK}YK8bAL?d7+SEU<&~F; zc!DMYLD+?~BC$T_O#9m~br$nJTa}HGB8}4A3;&mz0p15U7G_DpR<*QH6?lJ~Fw-PH zl1SQg1Tn7(hkH|%*+$1%@yCqM)vlvPC!W?q3MT{uiV?|Ns4oiRwni%)r3x>3Qdr!F zUh4o)U0?w>RsHVM85Yriaq^qZCtEXcB64?SQmXb}q~tBrV~~U_`_>r< zNOLe0$CUtMDNNsl@{D-e`scv5L*L#?k#&w`M((f><8&dLq(aceLChI*X645Az{1;5 z)q)UjWv~Zyy$6g~epT2VhH+cAO# zCYTJ{m>$}w(-HcLvDuPi_tn@TPnC0lR_Mc~NM4j4lQ?X#nQ!xjs*rq3emnuxSIKfv zv(zMwfb2GZ)du^E{c9%ugLwRtXYqBFr0DX8`~ggTtVg~_wi|$m1w5oULvU!a3)PrL z0TQi-1y%_X^oI~dzU-XLmC-hN4 zab4YYpl+uJ#;0)>;NohF@ee_f`vG4LJR9A&L=XssOc?_qrwIlAgQN)YX8~r!sCdjD zt5T!tcs)-n2u{w@BLlwL3nA% zhCqoqz#Z+yusTyFaBvK(xVH>Tx2sV5bJG0v04wNON6$UJK9s&KB=}22-@>9^fl=p$ zDtN|d;pFhiLCRK9eByYm<8yXvN&`1$a|HRr4d=qGYWY7$!3Q&rW zp=3h5?@A&4R`Y;%+{Gnod%LsY7?)0-QJAuFtESWY{%vP}4BAG+9^}XCq}%IPA7Cd$ zwbr-??6vlo(j>`t0IaMg98Ta%y22zPWV|`KZK|_49lp(}6S7&z2kC%GU#&j(T?;xN z|9aa53ZC0JBkoSeXpj4Iy#MonPmbc9Kg4Xv-}SLl72AjGa@U5BqRiQrVIXs)*-B8( zdT;dDTHOk#K`UmiY&@&V-OZsoea47Miou6M)n@`s{!!CqdX8ROjbuQIlb8@b`accd z17ssX-#p)+PAgttE}JvEAO1YulVop3cM}&$V~vr%8KZH|5wcidkVWNna17bk@k7i4 zsk8m>u8eO`#BniyYBwEU2XdOUDSiiC5B)*Ix!E0JI^TZBe!-^WTe&qPZu{A<_hOWK zuFA8DcBgRm`?H$EIqI9#EKm&2vQiNso6GSOtd&_Y+11`CklBCIc5SHbMv5m$98f+kx`9^sitf2Kk-~YyJ0Ox(Eu&CRh0G(8Lyixha z*CSAf6Pr#+$$x91!nm$>H2^K1Vqn~ykL@RHUSxZ&6GECv_pe1CoP|vG3>#MK=<9TK zE?cB?v<_iEK8&-)B5l0-3|+)k3eeS8eBnQKg}eo1$+# zSb}vF@QJoTRtMzKIebyVYYd03h22hsoTE~UZm7x{q-y>kX3C@e<k(=qc|Z7 zpF7`V#^a^G@xfv6SJx;U&*q=Bo>2{a<^|A`2+?C2UYF;T>wWJ@SSO`CNRY!)kpbhM zKOVm{axa4TJVYY;4xs3=e9VUFEh^Vz00h&Qz|Yj+?%FZbYpkw7v%DGTo}}WN`TD;; zb1)sU(YiOLEsQI)i_=7!T+yy;!8BVjeTw}uRS@46KM>XAAA9^icKUC~`Ym4KOi_l_dj7LSr0or*A<`J z>vJ8vLx23wu*vVF@NY&KOCH%sHzEEFG~AD0fkHBLJy0P{2x8Pj{RoKy>kRoruH4&* zB(BISUv{K_JZZ-RUwN}Mt4yKuZ`~{AT22J|Ygl#Q{#ThLTSyjBD1QC5C$0}@;PyGE z@AcZ}G3NfaRr}|Hev?A+vAs@mVsNpulP~+lQ#WN^SD}O1?(X?=XEuE(*ZNlgjsI)< z`}W{`WOKPLgMKNhB7myX;A+3vsL*Jh_bS_n5}!(n5MEas-j&R$a_cMnJ}s8wa+-*4 zZ)FoE^uNBWf8I<72v{LY^(^BR##m%;_*w60j`-zEYiwd&M;U8N>eEHX?{QD*Ua_q||LD3;E zNs`2#i~9Sl!16>MTC8xbVoIHCp&yp-C@lFhE~~)mY;?W!AV+3hZ1zLrXl&5i^$Ved zgJ7)sTA^dfr75FVzuo75y9GN;Ul;8Jf|oC)_4O&)FjM_-n}1s&Z*HjU?(~D}p#H$- zLkE7@CZv(c2x+_b(4#8K!`tMjfM4jpO(1B+B(=u)|GzruI5O{g46V*hqw2?Ad;wxyAAf}alc z!2IouY8!2@$gS za9Dot1rG`e6!CkkwEL9Z` zvVd5C<@L_N;x(7+5j&B969teDB*PRXy*g3wn#*j+qtU6C>gam6%-e*Z#%elPTEiUe zx7ouX<0HJuAiJ9Qh6c>)7vR`T+(MaQiyI`~(=AMkPwC*9{#4~hKi04ZkD%1!-=6Eg z4jmMZDyQdxAk^gSAm0Vmfpa zL?+^qU8(u`-(G;vn_{}?EM$wiOmB=8fCwl4!ttlgQ8}w)k}2=WfD092HjMDd!jei z)L*2xXrh|u_~&P2$%0xzvaf`;e*WLSy#*`y!nXD1_I5jn+$#fUcsjda26%4YacDw` zcAk?8SoX~KFF+w-`pu}%W$K0zc!BP8My5^i=VS>821m) zdhxH&{(qaXe>-oV@CHh-34uU*7uU8fI!gJX+DCT=J85prf!(UaVDgJX3Lho6#n^~a zpd20!iv2H~fJfi|ZcBY#A|D*E94@eSKOug$uCSZ?f~5XROja=I$QxVE>@W}o4h_&~ zk?Uny#RbTmp{%`f|?Bdxhy^q zpVV>!Xf#i+>3ps**L08w$Z-(i*;QWAMJmO{QWbD9IeqfCrG#bhY#D}QaKT*51Vui{ zIs0w`qx9xUX}u0D6|#$*hRWwXdM^|x%al484HKyha?v(_`r8uxZ_B5n0!QAkMu z^7Hcdk@2@~PsgzsI-1-s$Wn#f(*iMw#R*t-$L8!ZJrI?F(3*it5K~A1WNM(jT`y9n z%GB9vl0J+IiR|F08b{K6l;w}*3#~%7vxS(s2=m;qJk&TQ5TArn>gO*7SAwL{zj`n0 zNT!B-OSVF?RGN{xlQB7GpVY40gB(umW7$HU3G3y{eNvRA`S9QF__y;|&w(Y#m>Y<( zJ35+0SG{<4YVklm`8+<3m+lX%PC@ZQ*SZJbUy|^dH7)7k$H%#~U>)UBU490YT=X^- z1L(9cQLQMC2~=ot8}hM77B<69KJf5w)05%=ci9~c9U10~gcx@p2}v&d)po0acXWcm z!gm?29V0FMe#vc2#bcpk&306-_AzAPpkpw;`gp*x26d9@mpqx+$iF#~|Kkk#`$^wR ziRDzK$QR5B=}A0btb<#8ywjvWbV8sIf?jRo(9Y!j*bO2K!372Z1rIv=mVWY?Eaw$MBe-0 zG%xI;oqX!N#;)?>u=jzsJ@XqhLmiqZf{piR$5!>9kcj>-Fsy?C>Cm4&>O#6meQRbt|jCG3)?5SUwx^?~jadn?Z$TNPd zODZ3McS(sXw1_kEGza%XQU~QKbgK+D0yK@=PWM#Y9$3`C8?d)2nF03M>NPP6`ME29 zOuZ^s9xt{a0=1qH#{pDMy#Lb;KSDZ`px3EM2b8<-B*XA?0mZ@SN_+P&AZzEtk4~{B z)E9kYA-H)K8+|o}4Jc;BR71v!uCrBU<9%o^`V^bpy(OuoB58PedAAv!X9{5`hSTAo z#IyF|Tz|Q*+B!X%+o79ZTOe&{l(4;+%r^!Qbzc>ILtxk ze~C5y+h*3GhIAOi9_8|3XQCiqIqT}g3}z94M(|D2%^p@|_HfKGjoTi^yW}AWYm3H| zfS7*cNLQqY!F!K`2#){p6Yr8USic#kby_UjtUX$GVEEXZkJ%1S@tO_Nz zuP7?XVy<0&^lWZXDBhx?jV{-;&92xln;#i-{qa=6kCDk>ty0eqmvX*;|E|eSEC(1f zpLC#BA@r@{?d`)yzwNw#;tZGt(ouq$*+rerqS#caX2mH7dp3IFCyutZ-d>V`~o>>cxmLUfG8%e*)#B;+xSp^cE+0 z+IM==DS+U@i(FWBegZT7?7I=D&k9k#QxjOhjD0EOgFkfThq*VW5Fi_qt4{8m@#=ka zccqqqi@-ftSE|aJT#>g-OTF5B0KtNg|hkNW-`*MA&PuwwbJvxPUC$fsNY8x#g1P%z}> zFCg~&+kC=$hO~EkaFd8Tmy}p(n#Z+DQ#yFsJJ9doLvXK1OOfTG1~lT2M8eh>+Tw6i#^IQDl= z#^TV*;F;ADW8#61pN6j~+cj-`c|!U6RHM7A-o0wAdhwzVz&}wy;VISGpFRJSAX>hfE@^HGx5`OBxzHDNw3lRJ{S?D z8w{8G^5yaG8*MNr(sY?_Ho3b;;n`BjVU%i_78A>GNEKa_){6~$z0nUFt`8qQeB^uG zmK+ANS%Q+8`9p}+S+QXzUK5H-Uu;I8+|HLbOegPOYTMOW?Y^69cE(M`7yBYuXVY^A z^~4DUvndRU?ny|>#POVN>&=DJ*D&f`65_Sk9agn9WW9j2k)U?w@Ie* zgi>Mmwd6^O?GF!bZJEwUg=E~2*1>MB_hj;9{0ZkM$KkV@Z`vqdAi6VKhFcJ@g$@e@ zY4Y^=x7pVw-Zezc&kfU}dk&Tw21mw!*sBys%%XOX@;+}kvdSJn5;0@d=01^#A3cL_%DT2-^%CYL-R zw}j2(prJr^w#Y*zIr86(;VR`r6gccam8NfPZ?=lS{PKuHy%X{b=hgR(e(|<@J01TT z5bB>=^?zW#U$5-8OoO-BxM^GW0Kt5`s9GQm%CBdtg<3(O@t#p+&wgs>TF(afj7u7j zGL7p@m!Q)08QaUQ;N)zl9X)UbtST5r!gwriR~|<$x-P{49Y?i(r8yCw_tCIWxiusL zKk|hr)a*22L(^7M2fO|gB2z{tgCXo>=0mnjNo==M+r_9~LK;$6lo-;=u~$5$BYskq z&C|ttH!YNl$}X#@5EnVvgQBSdHeropRwYW|?m=B?Aas`_@g7HI%p{IIUAaDagd0Ty z?P0paGmJG?*EZv{hthavWTG9nJfYZG?tj^1pFZojyAN@(d(>VffVMxQk_Ia^XnlWi zC^|vVd-{}|E00z_{9r^Yh1cnqbfd$DW&Sz+f4G`vxUM_*9V4Kf>TL{&$(tWUz7iq0 zDsd$IYyR|6Tdg*;RPCmx2oT?(UTd@$3IA8xA$>78&t7g9d37{+W|uT5PpymcyH-cH zdft1qEAWtmcE#??+ZOYZ({Fim#}3zlHCM$dHU_3Eaf7Wgnt}(5tM-GhD(s$IXe+_G*`I{1T{P7>@})?j4haW}U5mH27PdoTR)? z-Sk{gtn2C)lUSThZvWQsSZvrmZYD*u-wA=JL0;`aKLMM?R-E&P9_L#Jlq@bnP9+F7eyw(MS4Ugj zQ9_k#`Bp|On%Q`cSy=p{K zR1{CD2ri63*nBCn#Od^h{vV=nEO>)5P-`a}i&ZMkLtAvS12Il#em}Io$|wAeWRCs) z*m_KvowCd~=EMw()mOdwl1)(zcp~V>J z`%m1w{x7u~MVf8rraduq`Yzd0=0DzSC>*Nkd#mdl4t(321D~BUw(>3e(7b9b-Q&$O`JPZ;;y?A3t4& z>8ttLN;$w?ko2<6leZt@U3BXH08^2!e%Nfyn zv!EkBSN+Jfi%SmBV4`da9U{LVAzD~b{o)Xoo0`l!GK(v-KZfx_79inKJ-mclHFb=nJ`VHC1W`(Hrl72+bqdRogc<+ zDMtz+3d{>CCxGZ!Q;O?Ssa~U!uH*AwE6qYKiyZo5g>iN51hd9u zr7>iTvnrstJ$?okU$Ks2#0-~?$pQAJ2vxE-d=rCI)X8V6OjnGc^K2_*$rz$HV33VG z>D?N;sMNMHJ2h|Ax`)3~fmoOzHc%|pM{Qtphd{#EOZ0NsrM%Nu&SR~nqE~d!b_<1F zanSa5G+m5r3cOP$z79fCbVk)UQDrhk?sXL~X|?$5n54=;Xt>bbQ~N*6gJe`aszY3 z!2+S$_}t_&k&kv@v0d*VYjK`uY}D_1yCdUvm5{2rUY{VYn^iPQt16g``pR?To6m)s zOFKN5h`QKwBiw8UysLrhj=faloJFLrn|^3MjI7(!?b;$HS>vX#(C8I0Ri;UG5c_m{ z^Q`DZi#ypBvygFU?HeEo7d}TPr2yhmzf*Gv1 zTW5#&7@)zV&V#FbW(l8IQlw#EKjOcg$tv;)$$JrsY#2FIOo+VZB*2=RSA>ZprpxD^PMx9&T-{kS^v&_U00(tea~Nj7dEjdEyZ=v29`ta_&hMqQ0b zB6q`Y_=+X<_4o+d>t*+!Ni=Zt({x7$$6As=w;_KQ9XJ7lj8NdLW`3V2$bx2C_w@$I0bUb?`i-S>m@&L27*2w_%p_l-_f45|&T z=P_76!#Pg-6XmVqtU$~Iub0e-xNJ!o41q3F6+DS`&tRXN7niB-D16$pclTElaRYg{ ziFv-R3QoQoz7HuY!xMlba>HlgXYL57)+y-TcU9c?LQTy-?km5D=4r<@kf^h1MZ3k1 zCuBgNdAiuVq^MrTaKq7aVepA(Aa;6@x|Dl}$J_pJ>@W)O;AJ^dAt@lZsnr^teA?$Z z=lxRdm96TxOCAi52LYY$QHquix7n2~m&Xn>L)^r)V^Z1d@FTG_-agf0BAJ8>X@8l? zVK(DU>vx7}SZ|rC&QmgXG94h>3xr9W4#9@r{a}J=QT$=dWC0bSbe&DYSz~|65;uIH znJ5~K$J#!+l>z@+qT5Qb=z4|qW?_1I)Mc_5+rT`XNb$>=rewnxEs94~JKo7ty{*bE zcLsU6N+V&hXhjUk^Q@@I<;e=c|vSg=kqYUIC@1eZx}p@+bX}(p*IZ< z@VIY*O5(3${)m+SZjm_Nf7h>y3tZ7ce>T7t`OjJa#Ta@mz`X_HlSnh9xtS{!;ZV62F>igSJn>c8yV_%32VC;?ee51E@; z>sxLy2*BCczFvzzHugsN&g_0rou^qL9AWNz9o5UWh>&zK*_$sV|J!F0IqYLZn8x>% zyP5me;x{8T0mm4<$a}WsF<8IpgWCg6RS9-SRTPG^Oei2<_Ad(R6>~C|H_10ZWb@Hd z8#BLT4?7vSl_M9_b(K!BV&z#!q+GVR6NnR<%@C7?@t1_0oJJrvPA`9oqGAtPc~+eI z^t1`k=q}5=V4N9Iinq6ahG3(^r}Mm!q-&bSOw-Yv&)pT!?fvzUs5C^P{Hs<>oa*WZ1oKXgs=w-w%1VPn4L zl=(=@D`)t`YX>DD#H^VWn94EI&M8@=|bOQ zJH*%&SbzJMSR_RyGV{G3{w&$*vKyef{tn2P2u%;x+B2bL3>u{)217(dNt`S?fgbzy zPTPzn??T|q{EFhAk$dZ{C@}vO9 z_GD3f(glfEMrm!-JQu#9ZL-G^Wd&UufcvOuRM+Am8@%du+t0$LoddTG*)^$XO4u77@!aCdP)Um$F+IX`cRe>RSqsTaVN8SoKyawhjQ6T! zQ^3RQC*QE~nG6R3u;VLb(s!P~88#>Qsh82(u zoIXcO(n9GaQ#jKVIe;a9YkpDW5Ul9lHQ&+A>#k?a5g-6`y$AB^2#3Ju-%gFA6l)G# z7Xhj#ZN~Uj7zaSJM$^6|nkyr?t!cwKQPk;;`3O|aHbi%~9?&VL7xr>BAS(kr&;BnZ zP)oTb>M0fjYrddM*yM4TJ}2HOfMd zEGWxj3l(YJC_{8)&B*dB!;z>`oI%)QceN;o^UGe%ERwHQ3Yb^cy0H}^l)bq0oL#Gydx`L6DnbDno<2t7j@!D%T zjY&1JIfuGi3LqsU>Q6CG_%^J>+T*|hyrVa(cQKlKc{SCp=j3xEj`t}>NBWn0+bRsX zo5m7^ORY&^NAR>X7!}@?ci@^qjlD@P895>?r!-NpzrPn=qbcf;X%wddjl6Jwfn?V z9{?&ie|I|0%jEIhZvrd;PWwvZl;4UnecfZPEvq%@Mb)nEIcf9R+TAaafUJs!QyJEF zLZ}%eQsVh>nvGukg*C!r$DvoMu6JG0Na5RKa+fe(BT$;$<>le2{w5#B_u0_9#0n`^%;yA0dlvceiw2&e!E@aCg%O?y6Yp8TOr!eH^7Sw7Zfhgq zZoa5!BAO)G#fTu%0CU^;&72LuUsh%vF#ehdJv+5TAkr)YGC! zP4m57f>^T}P8$J?r}icwY|KZw^=oT7IgLV+YTPk@Z|0M8&1~i@EY751wR5>{BaCKy z>2(swNpEH*)w;!I@oe^tT8$Q;RinINn&oTP)%1?toe1$6`O}Jcs?)W6eo{KxtE$j-stEfm>F-m5qDRo(m?ry} z6i{G!M2>$x9LW1gx)h*2#NNws0+hGh$R3J&_q#7C-^je` zzvQz4MCc4XYoBq0F08=RjU~)vtBwiHtlI&Q$6>MPG)~h`D!vAXuEj{w0zsj|#pJLs zyYHfBl_*h%sKa%ARBrMryNU6HoFLjeMA*pTl{+X_;H=#l%za_Ta@ZqMJ7u66i$NqB z!G~N_31Fu&I+k54nAq(6M#=6p`n1916x6Bfc(hX74AKfxj?vfcy@&^-&z58#5s4AP zLqKq#&!Suk)H2LyOnJqIn`=SU008J`E4J7~=eN^^Au4gqx*F4RE#4=NufpnM_m>*v zX+k;!ceFky?gYSfFLrIcv4cv?)}rt{aA+q=aThKcUxejnxqhC-jt-0%jFkH}x|9OkUPit=BhP}CKcf>$3D&nxHl$>j3(~@ymngcHS>Sqoi3CK%a^Oi zI`SXmSv_VaWeL!cl4Q7d3ryQ|;v~zv16V|_B;1dOApo;ZXSf^{XqFS*rcVtaU1xLNyAmaRfst6Z*7{*P)ZUKoW0_2%7NarE1r8QUFSAxbTA{ zNuY()tc)5)CKkSNim2ze0V+~V*~0Mlq#fbo4Tg_+>ZZdlRwLfkOp_DuaVyxmMfvIu ziDBVqGOQhiL~1*|c6MsnJOhAFGi~3Rz&UGyXx`}-@nJFsQ@o{KxlgXokwZb9xUO7M#owwj{4zH!cCO^y-w+X)}UX46NeS z_E;C~jF09(V3BFp%zcK2X{eNg@P4|;r_I6>0S)1WR!Lq$W;uh!RFzRcli%_y!#g)+ zvbrsI4tKWk`Bb1MVNQ!eI*+ZRNn{id+EoFv@iB%UG4GifS{OwGjPu2zW&7c^ZBg8& zgy0H9;jkgH|3h}I$HY&FnP%@vEc(SPcz4Qtu~Nx?w{cQipAE_>n#T>k{z}`Y!o&qo z0y2FYU20uX=NPf}T;mETOOsD=EpatT3hShvll`h%y~AlR&K5hH3-rR=zfTyDMrqJDXgz(1M{(P9jR_z`6%~kEn`#S4cIUXR7DrZXfe}?C8(6M`{+WIPfY)w?O zJ3JxT3>CI4XJDgA*(6YRqns+))o9Qpa;L7`G%Wtek@a$YDuUQDmfoPU-u$|&rdkID zBZ_>^7E89^=NZgEHPK7!qJ)6WlQ8cP#$(ex(7W~v;An}G5W;Tx8;LBfG3d7R;^0n{ zSA72Yu$d-|d(D_}RsRo61~q{zlF$~g>)5kme=@Gtj^}P?GP|MTUEBLVO7GFzTKt;o ztR|V+Ia`;f8NsiBI;gU^rfhL!UU7rB$*MDklPS&F9@kn@MD%T2+GtD3?_E=j6@yx$ z$Su=oA&Z33T_abqviaREe(2pzI~uJfw0j8K-aW#~gvWs-R59N2^VJ0U8gp}Jr@4o+ z=`AkTwIZ^ToweGpVOu-U4L5v^U(K-X>4Mqs1tP?Z`%IAA2oS<7{b{F(gMv4eTEEV!dx}P8XRY#a57T8R2=zL%Nov}Hl%3^OZUr5;dqh5M z3Q>*6BknGjOC=wem5G{>k^>b`Gk}EZkz8)3Y>MHjsxRq>#`|dw*SX4UR8&v4fhd(i^s(w0*l$0I<0m6t6YIENL;5XP$MX4(}o;Jt7 zDKR8bsDEYmjQjf4dvWNKLe$%;WX7-ojy9w>UTG@i0ef?`%7L<*A_$RE(IH0FvYbFv z=fQ|lGfQ}LWiTIpjD{W9f$C>k(w1CZ%mM){!|*S}2E{V^9|EyMKn_+oGMS#Q$mG1yCm3TVrXv46&aE#mca?DemL8 zv4SRdc(_oSPGObS0Y)Ze5awShY-^`vb*in(6+)0xirWdeV>{Y>Px#uwfuVB^AZ{S+ z8%`H7?9u5zk{!zD!hA2_HAQum(M?BWOBQuO7Zlf@KvRUSWqF>m+LNNIi!-B}D*kTA zz_m()7@yjXeoc73jtCkP<5pHV=(VSIgm!&VI29v$e$#?_%*l{Iaj4+g8+(58CJWAOeAKNyx_A10Cw{~-7z=4-nqi7K!Qt6+piqU3d z-S3yJz2q?{o63_~SlKXfxb>?=D&c~6$#255XUd-+olVE2c2YeZn}v6Ho^Y!Lf;lCT zcEzJ?FF$^9SX`Z`CUIU-wTU(Bh0}_WS2*Q;)AOrBE;c!S6C62ke0;g`2$Aw5!;;$Q z`GHo4A9J-Dr499%l*#;5{*nalraiewdi+Y(#okEc`WD*Vh(sbnNFj|gr;wAGKf4f? zb}5`Wp}&15dCZ#nqw}g+9Bgh9g{|MJ-TW?z{cy(D^R#1F19p#CLkI1>=hSFHVkF*4 zBGwz8*mMW=adnw7a{pXs7|+kvBb>JHQsMt#KfoBV}w;jUuJ>`Rh0}buiO}7Le^A~kY2>Vj9A^@ zH`X*D|1hC+%(Irtp7D0Vyd>gvpTl~u)Hr@g21ZdFs^J8eA67ua>E4WX=!K>eA?Z}} z((puEPz^cK27@?ck%(v)g#RYEx#BWvp2J zT+du?tY`RyPCz8}=tp#d=^c-{`mueJ_ZAQ0#9(PE#ngT|&)_19(RpXQlD{gr8SyKk z`9{e7DyGq6Qp&)Zci$q(>PJ3K_PF`^cSWSZZK=uAK{y-s`5*CRO<$}8x>ws~ z=n)Kfa$PS;iBVL@`!{1?=d#{iE3T%`ieMR*p5?ZFvV&-DDL$lgH4RnBy#hysR3rF4 z!U$iR)dgHMo`n@1yn!~Zfoz?kr!vxN=Q-NG8|Dt@I-T} z1=CY=&RdqW_QZ4su5mGzT6{Ico)U=MTPwec+;O{g#Ey!kuNd`9EIB3>7D0NHKK=t{ z@DkeLAbt5{P!wxr3_eas`R&fJO}ePv(N%@pwz*EeC?Zw2r%m50Qm|f7BDhXPsJ((+ zk*%Xlz3!{wg#YT=gXYIikbAI7t~eEv56jYWt%4dnJ%$Ax!r7BiCoM-$E84l`x-s`+ zy+!w6weOjXkJI!itXnn%&*YYi%`Cmn$CFFe=5!A>z|huT*KhvJCjS!!h%KjLZN{?b zB;m7Y%P6Klk+#<@(>G9pK^v&r7}~&EDcz&q_-y)b0TpESyNDgh`sc;JGsl3v9im;P z(U+LASxAW+PNr#sHCPB&NTGq4)B1GEgZuhGjp2zk@zo?eF$Ol3@m$S|t?oMMIb7SE z<`4n`V^O*42a19~OZ8Wfd{oE++8Y0ydG==GKXgZx$a z*L{W3EoL(4bD$uZ0@U1A{OKof9#H7z>xphB8^OiF43+r20N1QtX$rF>>MFrbtq}aE zf7(mDTj?aGpl#Mzx=Mq}gw@@++LRs`sB!+cP$);wA<@KfKF1xp%Ztn@j?e8n7R-- z(xB5FBOBWx(X)%Zj9Yh$PG)@~pu~vLVb}@>rs#lvXbk%>6ceoqsJi#6-EU|2Qs6r> znFpBgt|=h41&F(hc5-DpMxrVvnGP#$Fltca_X-$oTEPH;LAy{MNwX9m=Tb~T_?FUc zRMR)DdgG#d0MeGUP-&ATN2-|VkN-c;&N?j0e%t$sASfc;4Wcv((rExncMS~EFhlo{ z(p}OmAkEMW4N7;z&`5W8zqjX{z0ZE0{nmB`-OXctHjA+C@i zel`7ev|`*d!3S>!I}v%?Ja;JB@lSQ73i#aYv6=~y z+TmtxIG#|mrBMW|X|f5O=K!a#=zWfDHDMu==OnFXW&C*J6q=DXdU54?x&&)=aoI1v zdRoCJtxKFf5>7$iN9!IJaU+rHehBI__!5 zR7;+(^JrJF?5#-4!2LHh1LrwPM>YMT1}!_!=cKn!WK)1L<@0+9R>`M|;62l+(6#>L zk*^PLX?jA4rb$r$;(rpOX+VW=Lvpx<9d=$@XjQ!LwM)J9s{-$IVEu6nRjCI7u|&ZS zZ6Zdk_r1xw9`m&h%7x3Q%`_qoC#4yzMKTHsk-vI%`yb0b%M=3NpBBdJIp7<+H?@dk zS*Wq4nRH3MTz*EivkByHg_+fB1;UbR6EsbH~xnc>^fo` z;x*chhdkCmtAU$uK#6KB7V-!EVIm4X+P}eq-hsgqdZog&G8*nv1tvD^m@i{3 z77j{qLg$sHKCvAWaXzhB4^e2>qofX>r>El{u4YL*KM%gV$H8=IH2_YTd&t(&(V^Qa zX(HU{j25{Lq5V98^IaJ)AX8C+R9Bfu)D$t>y195aCVRsK`0uI3N>OAM1wYx@qtp?C> zh5zMLL}TyPAk*_pkIfs++c86z@s?Wu@&>dp&qpN8e=Yy~lYPX%aen0s>+`vfZdAy) zS-gV?qdeQ?31i3oKKJ==bx43&*B%wUwuc0lXUNw+PaT z-{HdSwj?t)J|3@~hxNSh0u+p2(tGSkL*x2#_jZ#ot-SBM9h|j^q^vz!hSHynb}xg>-znm$l#s}q2!Zo`8F`!spHwo8?7qq@TO1N>2yu- z*>?qFamPu=taLmPovUZ8IT52>+M_!b5m^q3RS_2bA?*;CnMz~+TYz@ga8^EKD>gWY zwdCmzf|?Pz-wHc;JEoPIEG{m18q^dMF{yUY1fCt11qRi~H+M!<6{o`74%}CZ_k1v# z;si|wPna7yq6!*MOv?Bti*YQVlz$7SQ`(nNu zd>pgc+Mzx%$D!&TWJ~z$y@+M=4qV;TvbE);tfjSlehXu8*hM;8Bs$Ire0-Ne*RJ!& z`VUy^A>f=U30#?tMw#nN5gwrrw(5H0lGZgCyb&93G9Q28fcMly)Q-L?EK(iJRy>sH zf0Q%6D>|@0AzWdd1_xJQzsIw>r##c)*j;`uQfwkaVZgV}e`4n`+R5+#Jo4Xi{1`aa zA!4Ane=}eIsYiH)O4e}yu&fiK@lcwv!U?l@Fh%&4`&s|_TUZ+n{IWXTVeF%%afy+; z2dSm=WeS@KJJZRRVGQzsPs_xJa1z%bgMDJ=2GV8%tA$ds)voAt01lwj@n`0(fZ&QK1b=c+CwDiyNW^S`DzDMpq6mAqUVr&2ichOVi z5miBOP0m4u2CGiB&9HU_)1J!x=?`%`^L3vwM6r9`QYVX^UdiNW)|m7|DFbW)Ymw`Kn;^Ik*6Zo|Jp{z z^5KzkNAJwit;NKO&HLFJAKSI=T)&XBgA*E&$4?2^*!owosv8@(nN-2L$20%D$tktl%mF zybAV52M?8&2#IpsN6JMAi8D2xlRK}kImoI+zqZjQy_=q|Y2fe#jJH?r^NP@p&e!)B zNxhk(4s7?(5sj_GIkA9!Tz=d2(T=6IqHcrDO?+L*DAUR;R$V>d$4-lJA82ET zNxLHP>$mU`5pp?XT@JeL(bUr3_J*w7imn1KB>FtH8|g}vS$YVYu2X|`-_#u-xOHaH zFQ^FP+E;AIrl49HGXzstdDESUwdJiX=5yp?qhQs`)~0(cX~~ywJUdjDs27w^=BHG2 zDeFnE*G(`Qv373#oF}g2o~GB%MlI8W1{$>ZH1-NduN?ySo85##8zSzW1QGK-4dwJ;Ni8If9 z|59YIa2)zVSYiU8ZOmhib4>vP>}FO6caZS4u*<0Z^}qSiAL3X)eMp>p zg7-^KTPLj5pSSHJY5*)ZDVemcwzf%m2FP#x)fyK_;&ont(yy#O!lpqIyl zBw+Q{p-0!h_+phlK*Q)^tp3mCeLVfh($H$&av?rc7R>K4hY74*dRC&4`r2Z#;csmm zv{}6;i%~GDn{RQAnCxk{0XK)3djN4)DW2#w&!ltW5PD61O5%K>M z9MS#)$jmQqh9M0W{id7k?h|B2JF#-X)YTb|SOp_N^yrmqvLdFEsZBQ$y>{N>zi#kS zBk&z&%ZYP9yv5|x;yn12GObDEn97>wdAuUJ5l=WWcCyDb=Z`fWoShCflQnc4Cb+Q~ zcJz!A#H{Z)LGVT&BMz9^Z z$d+n?uBkC9?^!?YSU}xDt1dR*Agvj5ntkx<6j&Hc#PMXk5RkxI?fNHqTn*&tD2d#w*Ay9V>4t6vr%o>I z3^pjN=8!x4FL2D?{>4VqrifyxhvDm7A>>QUD;f4dPpwGLjbAk*Nzu)K$_I@{xQW_O z^=B&w>(nC^hsDH}q_V()B$6=Q%5Wg8X;P^`q&0F9HQMi=+vUAveZ3`U8gtOZ{YE8~ z`8AjQc_~NVQhd(M2=b;}^R#m*{M~Zy6B`2qRYNCIO{$wC*p~PB*kMQsd=H%}rcnlq zgu9!DhYNFXc9wM}nZ~P7uh?=ASF|aHabPGa>{-b4?*`V~?lZEo#Iu z8Gg@T^X&Mrb#XZ6uny3(a}Fzr6vykrifoq*eu&ot+R=Hy+NC1g%3=yAsIpA~4m4VY zaa1S%vZvPzB%sb|}rt zCy}JSB=kZ##C|nXHB=Jlqor%p$DOnpsCJN4bUIcpkn?%E*5LHF>x;E@y|MBS#D$$? z$4k%wE4z42&>Vy`UD>BYKE4xC^_Vs1&V7-r)j52YUaNB3ki=h{(B)8H2#}!VIdv!-oRwq=BtW-Fd zC#p%_BfqM(i9VP$$+V>gCG+k(5p5-eHKyIY_&5YNPmy0cOIdf&z$tF#vEkP}o=heW zxZ@!Y!4-7eHe+nEU2LGGo?4~{0{W#yBelG3L>-Y#O5+$!1D9^V6l)RH;(x|jX_jqD`fa7G4AcP&wa+Ajf@1m z`;VGjU(QY?PR$ibre7N*LhV*Xon8nIrWqV22JHJR+*T>P$~h&9#F@gaN#v>pS|F}&LFq^-1nbZhc&RnsKISBTUcbYLK-7Yl< zs-=HZ9T>gzXB;UJ_v?^wgk|;}*We9xdwY9fcDfs95WqWA9S!7@qoJew26i7mdC&af zMZ(JkN5W-i=)gWMp`GRwe}ir0ao896e=Y-lUmHr)o-(U525GqP(;uJAfR@CcGjZ6t zIGX7&YHB2p&F9%e#kR;yr{G8RT{kzK3%g{0c#6Jx zjNVIr+pk34`LL+w3>_306MbUkj!Q}Sv`#0-#4ZP&D3rh9>>rPGVH4LN7NlndYZG&< zLNu!KmLQ_G_ZKzN_M0teQqt1dwyQod#QXE}FV)k_(}Y3lupciN6j!FAV-lmp3BA1; zYi#pC3DaDTngKeX@@*N?$=EmOW>dnOTdGUMLt4BB+9IB#U@k?xbr7cc@QbArrgnF0 zQ)ljga66?X)o~P^@vW+E4w|1@ygbLS+s+hGN!FqxB1=w|;M2jSCs}Az79SExNrN%p zAqX~98&LfMmkIF5a^RUA(Rd{o@hLm(Z^g^PNr=F6nKbfqzkYR%`#K9y!z2Rnr7+%n zrd%9An1{3d2%%OMxj&dIAbgFWQ{^vWHZnB47kj;X<H9_go{yt*&7cZFR$hx z=O@yb2wsb)Z;%-@XKG?(9JK9zHr>CO!0#IIdz)5wFd^ErR%|gzo5QzEm3_Sn*-o-p z&ZSw?%C-xND^P)3p7ZZ-Xv6x`BSICfjt&pAOCjTd;vxgS4O+Pa+M_9n>B8459dCHT z>DhJ#QX}}JnYz1GK4{}>o><5`gKOlBw$mvzzIJB9h@#7J0!vQaEHF#J$|mCDO7(8S zhQt+#iKJ~vS0|w3sR#vI8nU=US55nMK#(16u4`=e;UQNX!Lx}xWu%OosTuWv0ns`3 zUPfTml=pO{=zW#ixc*%zQ#4^=QMvV5Fxy#r=aP%V8-XOt`7Sz78=*oKIIVWccDqlx z&Td?1U#Iu}J|Rm06H?xymgNxGc9rZ`G>t3>j+u)Cn=1$D5Is7Zg1PQ;jT0{T65P12sm5~(UOqQQ3}`&pOMY-!lifz<0N&oP}Y!Di56pni%@+X{!C z_o}Z~gvW9wS9`QP>p_PZ^v zs6Zp?pF8L;*f}vFlofb}&fmV8G+$P79z{k53+RDmWS;rL)HJ4&De%WG*WE*}m4z2W^Es5o>cwto zw2bgC=N_(3mWlw7G$;`MN%JXd+|6FaXNaOi-F&$y@j7K**bv3o*cCA4e-*hgb>Cbqf#RS2FKvlO#u>CGr!5p#8KiALydSM+S zmWFZM((-WKS-!-<;Auc871V-v#pmDA6=F@VB44#M0Bo+2U_z)0pJaGKQ;Iqlu1(-i zpn0IfDRjL2KK{CnGU{)Itc;bY9ydq$0{S?E2ZrhH%ff)Nz*?#B<_!dyjlMfsDM$Nj zPllsCCHE!UG@~UWeu;L*BiFkuN^<1ZY>LQ1TLq1}7)E7X7QSq5MC`CcddQC;?9dEE zYJKqX%-4os*zn?Qy(uzI*8Z>s<{;6!N0nQ1uF8e;pGg}=Jk+>gY7bL!SaegGCGz%5 z|A?pAnfz!UNtpXezIJsvga^a$U+33GCo|d%PlUZjk5%N<9}9|Ct`Nz3V^W zON?!(0*?E#qMpa3+-6h$R4!X+^*X}))d#af@P#jAZyeodbNurEoeo2Qh61DO!+icc zQ!18uq&=kU=`uO5qW)u(QIArXz-j*aS6Y=quumq|;|ixlF-=d;E6V{ot%FXPr1P0)sYXIm&aF9Y zc^;!{?@PJUZXWe?o10@|cp*hElX&1@iHaO|ctz-|0NqAModO2djj)=1+5)YLxV{de zKU&LEHm`xkE2Vyc)0j&%)n`nV$M*L6v>AFQt+UzBLA98LT472h4ACVx2LVssInT)H zK7u(m?+wl|G~F`h%W#wNq?YDF2xc@OuAQY+juOjZp4kD;%^I zk-;h7+$gRcd;A}Vq=>4j&%0q#)oQ+O*tj)u--;@=b6AUDt{88U*icZFzI|gnQ+k%2 z^Fr~HDPP%_42?2<@h@xQ2Em(~W&}=e{EORkbACQu3W(QRwD!|^`&`)gpVq<1h$od8 z=L4NtcK1Vn_MV%ts9O_>H>dkpmren*5LZM@E}JC9KXj_^U+^OLM}m_i#D_700%$!t z7ES05Js=KU8WtJvYi^m7}TA%>^KqrEZ z+}x#=bLDm|_5;cOHpKs2{(gvJ{w@NJQ5LfDJ5p*(niJdJ@8$8=uhrGqWv(Dc<*pe# zhNCvp4^({=I)7o%{p;faUVk+}J(5XSUtgCLcCjB0a|F7JG6_?vy|Y)a{qzD;UFCS4 zV`O||yigG4N(|SP*nIH+$wvFzSBA;Z4En-^_8&gF+RRB$NqO&icUjGj{bU<8NB-V# zWJKnD$2SIPh5Nfk`2JVCzc1;3Thaaxml60~%6ec^QwA>DDPV;(T_4b)N_T#@|K;*X zwGxU1&%NDiuww*TN^KlP{vY1r|M9_HIw&yazUBOI3jR=L6^yZdm#r~sMmjnr;IRe$ z^m-IvI#D#0^9&ag6EiylXvg?J{v3A{7<(U!PTgDK^I7G(L=$7d6vp$OCcw|hB%znf1!`*qf6S6>! z(L0KeMQ!wY-&1OHleBJ1KIH<{&sSw^mG+u=#3tFKMhWR><|J3)@_!<-?b?mJ}xL1qWfVo8yw6S3pDx0N`X!w~@*pA!y^{7BYPd0**U; zlmhm?zzCNL3R=?_s+9pk*=%B6w>WQaZ$l!)|Lm(=28uNSd)e`M;gZj6$eK@YfNz z@l4CoSrS;ez`_I23LFiRQ{3POL)8W^30WQwe}8uiG!~P?S(*BUsrvU3^AG>b|LyNI zB~MnMdTG9`D2=%E{!hKMM5jyjD)hxUc+SdM*<)t3svwNsZH~KIKubUMj1>Bp|3C2K zzmBhPyc*bcT)A|ae)wL{6-}fo>Qmp>@=FJ2XE^{uhdF&?1JnL!#jMVn)_-Xkf1@Y1 zaLLZE7%ck(*i~z#o93@Boc|26o>#9+DOB?m(g5UaLCqo7(}Kv7&hTIVeqj0E9LD~2 z%Mb(OboKQp)v;-2I)m*aMBe>mM?sTH$W2w$&|o}7e~5ZS@8#R}vF=5Y09d+FjwwIC z2dDSyN{Mt~gn(`qKOP&SE26a{;s171|NX|(Ea2BTvdNNWMZ7-pdw_BoE9OPGwyOS} zM17bcGQ~FRj7mT%m!593XZ#1nJJh)2T&?j!#gGoHt`hS^itS9Cf9%V^JAXID)c}Go ztwv`rfz9gXi#QaN-onirqR;a3S@G2FVw7qT4?mb4qWSo-jNg7Z2jQu|1A}} zIgb5`_>9TG11<3D;myuuBXJnTxph<0FTZ2Ow@z#JHdLwK<%F+CQqM)i+Jp1%qr9yf zj>eaMed)uX5Uxr0xLEqYeSg=Pma%3rQ@H6(RCX$3SlIBrzxsQG({yh1MqAW}p0_=* z9P(D~cNXu`@&0sv%W*pi7l?R+EiAPw;G{fSOZvG!P0G&X_G3N5^2bZInV}8zmyw=g z-vv-X>mL-|jM>bQA5Xu~qx>TZ28PmioKJ&YKcL9bSZ7ULYK4bhZqfkN+0E7Tb*cAz z8ew`L$30;&*XL9jnvNxWIjqO9X0qugPEB45t zvWc0-J(xgc{)9zR$LG`ECeez3m$;pY@|(KslNr|ojH5FzXdr01@8j2T<{E zj1(Y>!4?~e<5pHY_RcMTo6Yx?>^d6wd;w3lquLw(dyf6&M@f9I8|B6pTbykS>S0kW zM@73b*?yA(#dY=iy8c8gVI9`7kr9cu|% zaIr{Z91bvAS}n7`VyrJOwK}_Le_N`~TcFA2+2FfKK0S<|%eV-k(~*_Q{I--sM5UEj z;H#D?_3PcrD%yCh(B9;~9z+R5P`ZPHPHxxt3-O_&Wh{Qa{`qDf#eV9bdZde}+AR0% z3ZG8|h|4ALI-j`Pulxj~nPd+!+e^l$?Y&PfnVxEJWVk(^d1fTjh`#Vd58Nama0z{_ z!E(9nTq8h6A+P>K-}Cc#(89a7_YsNq!lz`hXKWuD(Xr#j{aixq@)W4S@h_e3mW&SR z3-mv>x7{}^@}bKyCeN5L#NO(b%@`%Ie*9+{(9_os7e=!4+`j5QOnc}LR>9CvdrlZT zWspYm`-K-~y#D4wEOcWnELjQ@+#aGlDCeXQ{n)_*(dFIPaoS$8+`j&M7{Ai^*l~CO zOZ<1W^{N(`@DEWxf0fFq@Lc9n8ms;excy7co}!ShJag&CLJNy6ExJ|A8O9Ege?4UR zdHo#s?e)_mOZf1RMnQ#jUPF)|)%7%+Xjeety*8_AJ~(UW4ue%h&1$oY412}r!GzSJ z)+4?&zisEWRrB|)g(K7~JfoLg74O@0;awWG9sDuzguD7r{=ot$eD40=c?YpOy5Fm+ zGH+h0OxF`!#+~IXy?znX{2WKZAoc-}C>#F%0F@R0lU%I?rh1X8IP9)Pb@z9ZFyo6n z?^R0ME+bmq_TNt{KUH?B9cyfKS}eG(e>q|Sy$lc*R<>u_@N>V-CSIf^e=P1K0_L`vTmkDr`)QmPd9LG(|?5SNVU^?Lo~e3{0ekoocRbhRBhz`#iY>VvcG)tWzZ zL8gl7%d(lEUU0LW`6kVpE}_pRaunHZEb4h$@M)C_Id?M0LB6Mq>hsgZQXXSdqm?e* z?*&|}soOg~DvN!g8Mm1HSY|$+0V<(5=O(h$YV?+)6fH8Y-X2ROqFT zE71qr-!BgqI2ams#B?tSOP_H;{^SvK*7wRkm64P~4&4}Z*h^8cn%6yogZVxrt8wJI z-|s4P=rr4K>4R_gDP-s8MYftI=zvFDwWY)!NMB;V>xmmR~k>Mit)IgX;3uh4KX142%mO(Ap%|;hcchm z%vo$BN5W;d+v@lvxVOesCq{loISCr(v$C*+Ot67I3G!HdXS8`{WjLp>rdjCmXlpX7 zMAfMXNb{MVW?oi8XN(12O^}3?6{r+`7QVvHanx~9c%rALP3}xtzfAIq0h|p~B#%r* zcQP%VJju3N166?Cx3~;{@NsOJ)vGQ|H}#^UjSkg!D7CEeP1m@PT4C zS(C0<&f@Q{+LyjS%;j$No_@sRk4B|SXQzioD3Oj)U(Vgd#;J8eePq`5_@tPNmH^wm({mkZxtxkzxx99vJ5uH5F1ZEf zm&H2EdD^gJ>g!k>yGB|MlFs#QuQ{OwxZ@ylzKoo--j&VzT4+JJGveu9XFI>MchA+e z@~#V3j9rtvx*f8;}soN>Mkl+VsZjRqQS9)m0jM?)$vIjC)TufL+i%tiy!EljCv>q-L-4JHAr>X;w z9IMPX-CpzTZrFL#BR?7FhUbJKV?91dDy}jw8uz#9)O`xMzx&X?&uyLH(yYRTh3mTK zSxg~s5*~5}`;PpYLBL*YaYNBEsOxqIq|p?$v(*bVL8)PlNDPO78Qdmp3ymt3S@d|u zK|L=*?>z8w&Y0CCBOm~At5pl`_FWCl=fWsjJ3_N!e!Q4w-YY?O+z0OU9sYJ*dCdTC zMm<%E7@!2Gb+!&hgsj~Z*Ql-YKtfyr2H|dgT#Xt(-qJGr@cZHLXR=zA855KOy+6w5 znrz@lZv9U@cpBFiI~`V;meSrhP1tjnoPS?j(#-eYtBuF3KiS$pxEPbz4JAN8^@F}K z#55C51UB1*2b$bXhP)XQyGd1OHnZCj-CP0`z z-RL9dI>qtIOE53QTa5J)8v8KMLrzHf!H$?s9sNzEr+k4byda530$5mTyCKm zFGvXsztcfTSa`R)Eb8TOn2n=gf4sol(e%8RK0H*9nFx8pRZ9Q(ETcegtr$|fH*tS9 za>!+}*@XLnH5g0y^~bmWk+~E9_76#Qeej&XAQE=9%eGXIf~=5+F0=ayH1aYxDhzUn z%I#@Mm2(zx8nN9U(D8QMY@aU->2fux*F#3jFmJ1kvXUkw9*5N>cZl9*;uIu!Jivpk z5%gag2>>mMKY~<=u`yWXOFWOlj_9P+tp&@L7GNj+0alvKN=I5%`yV-)&PijLKyf3* zxg%YB7UOkU9l}NUlVxIir@0-4tE^WS`W@!0s~eIfBJ#<|VufBJE72bvMutO_VMZ}^ zr{ppm4YwIdYw-hCBFBMAP5YkmBUbOlOqj;-Q5umVSKl#;UFnyRObgef`%amVYtf6gk7REq+TMdUb4x_4>U7N(I8WLK zEBf0|rkkj*n~{WN!{wKDmHo^%^Y=4Tm>XJBPaA~~-_SnpB|0`^am3TFix<7nPB!8m z;26|(@fDBEg-?(=+@sbxwcr<+`m>a4Y`05xJdHB-ZokzaIct-)+Un63?wCb-i+X0) za>;VkI8e^Y37z%`jyY{$=tLp*zX!)|Z0oL%*kRAh5_6=eZ=X^MeCrUts%&*H)mU%5 zca^f})H3|F=FZ$&S-Gv>C|c0)389kS{)pO>H`+}q*%!Ct*zR}Wn>MIlD@%kZW83$a z?`Cxit6A175f((>XXkRWAmb(VeCX-O6rbrj&HZTzO`NJjUWe5ll--2$$|=Vv;KD3}M38nkccbKu1t@P6cQnX5iq zsj~^7g2Y}YW<$eMP(yyExvW~GzMgcR&Ao37HTJm9-t+jizQTd2-fP?itYCE&FZFk3 zrnrHH@yEUE^j6t2yXd7y9G%)~O%~Meyo{g{$;R$!HnL76e$#P0FgejW*pwHT5_-wG z+hym?g4A2)t3skvg;d!#Ar9-}y!_-P4)Np5zVFr#ibjra)Hf3`p)hi{;*_1=@fw~8 zzjge+8G!0{;gIIiD}HkajWc!>AXB?cAN4ufT$X!m?QPKDR1$0TF1;1*!lcE)(mq zPUhJ5l-d)v@v2u5*Fi#_UYQ(VB{NfA#}c(%povba9jToBSd2YAba(M=0_7A`jxed zdff1I-WKPAvz*dgwRc>{YYLOn&Ng2FI@|KohI^I>;ZO4Og0q>75!1s~hQ>lZopw`6|i z5P_bRr|TZn6=D~rhM*vtPVS@!fj(M?O}T#JCpfC{E;;X3JA;w3$O)`~@ z>BP9KaXVVOPaL*COL+su_*EF^2~(&k__tZWJUTC`!?KqtOy+YIM_oP0!CPqb5e*p#7&sbOPDQT+FSg-k|m$W zdJYF|unwDU)BMZSNqhN|Xlv3aC*AtKTB63&NIjJEMtJ)bna~#15nJ@_EFWanxgF(M zd_`5Z+HSo<>=rj8xF-L4ui|{1IL>_6961ptfGph^88Fo|%CpAom=LjiQZ{&mW=D8l z1MK!?kap?t)*2&B@@N1Qtt-}ZFfFM&<+jPTEl`gINT+)Z=d@3;N~CTwm04Dn;2~Lb{>~t8{(^_AM)eeE!PcK7as(?o`X6Jh~tp$3y+#ZE=!slb6~esxa}@(m|(bZgS}9zg$d zZH|cp!$sROk#_g;+0H~Z(4e6lP+*FLOL{C06k}B_ks)GC2v{n{^8x?PaO?%&>di6R za&8UQT3L-UmE$$z2h&&xC&UK2@0Lng|7zmB^(Th*M!t~P zDb7(EoAd%UZ5^&{pdxX&VZlRbUEq3s-xqU71Tsw$wN3?U)3@|$*|o|pwa!keFUja= zGMb(@_<7pwwy!!@>?UjN0MEk$1(iO~ zavfYec4=vgXZlz(X>`6cZSo)-J&r>@)#XeTWVgouD;25dK*K|KlcfY?pyCMlOKYws zGad;@|6+9%ErsSzD>=2E%Cpr_E*|&JU#DAr7Wo%hxwx4|Lsf3T6$xD!~Siy8DMJq&-5igMMgnuazB8 z?0NRRXfcp(xygFCM)ycJT{6`DQ%wRJTN;dab8omj9BvVUaLQ}ZwoKla9tk_JDSIBa z_;c?*kZq*L+BAK$6H69UrJ9~=2=kaET7l}z4Mw@i@-h2H?aasdu&m2?@X3)p`imd> ztJodQ13mB^-*Xc2hcrJkxkwAt@?{87=JwShXI2n{se_2IpY90LSp~=Ks9guzk0G@r zg^0Nv7(Vx&=}JdfazPEdxJDYN5(3v}lAnKlSNA(Mn5PzESf*4zFjYJ; z*)yTLlwH6>GUvce%t5Bv)xH#%f&x;#yz;3g=+!8v!Yp(4lz;5ldDXYQ&#X_s7vQHM z($v%z=V_=>d$3R82RkL>CiG6tAz%P!Lc~8))}QA@4!xcV9cQcWAwM3d(EFG?z;Y)r3wMP>59qkdjYG0Jiq$hJ>&{r)*q1E1X|*T zUoW)9kI{zK?7yR(o+$`^aN%c*6j}2;&l8*tcXqwTh#LK*YX6h2o#il|sq}rMmP2n+ zETjRn;PqZZMM@SF3}goKdX3M2x;^W;x_t6(gM?Oy#4x@}R)^ldjXd2W3tT-p0s=fJ zx3}975H^H4J@O(ObJ#fUDCe$BjPTQe9Nf>DpPpWaP~^{&bM4I1nOHJvE-dH&S}!&v zqFMM?)TMx+qkIus+DzUxwc0F)b?7w&y-@jLK>1=KKa<(!+y^vkoC8^j3kfHLP9;dj=S)V&-@On|;xiv<$ z2o)nV1ADS3{YS4IEmySj^{y=}|;~PGAJz}@qxsi5jFR1ak#?GB2-R?rubjim+1)1$8bP+&5 zvMMMl4fXu~QZnJz+SR&ZABdsI=u?~+RdNC%aCa$Uq2_M7~pRl z+*aD@)76&jO$Y37HIs)+*}aF5B>H^hsC{O`P!H``Jrtdc`v%;sPTUvIDD5RzuFIYLu( zF)Ch1=yLWd=r*j3`#bAZN%|{yKHo0t!lL9-BV6qk==Z}>_TR9J>cKQhoUp95B0_~A zrLv6SRjM0lPvrBw8Q6alpEaaEn?9vE4xI^({ov5jx8Rw;%*u2Jui(i74*YlK?h53U zaV>o5?R>0tQC@RBnwSF=1_kM0h^WYmW?0N1)*>dL;BzoX&?}=SEr79 zTWh6lkCQ9VRLbD_Q%$oeut_3 z=95r;xPoyU6G-jV(6`GoOY~V-JabRC+fb{H1BG8M><;z zHcB3_q)aVgF>pH9`ptihj;a(t|H!^Gr9Iizmqn)e!EFTP@-q8sV30V{oK}f^7KSyB zC=3&Hc^109UFu2&jEC|$+N}L(MWcExjl%x0FDvaRgiJlrx4gu3G))uTKT$j`Ll=AO zykC_>*%o!MVK&#F@aR-edb8Cd;=Is!IZLx=fD9(5nay_J?V$b#e;Huk&fsUb+}Ykw z1fJ#3DJbef{M6R>XRKeMGldd6kxKWrSI1g_t+x*99!j_bW9o}@=dl=rNJ%w>#*zxiM3e#ukUAycLoLv8}|5K&tSgy9i&~V z>@IwgOAaa8uoWoz@UHo#z!k;j4u3SV^U3XhZ)pEvAz0x+DNTrP4o8=Wj(G9{v$~uU z^|9goh-S`Q?KlFyJDTclI-}p~$cY+Hgd2 z5{X0wlG@qiE#ixu<0Qo|+eW1pZOxH!VL#ky^WaY6V}LJM+U!FBRpa!5u^WYx!8l?SQxjZJlUwd|lI7sve0ZpQXGC_V9Lc&5i>a&FmI zwbHe(Xig_Ec&zGh;8=cRBxQ(-n23oFZ->8wRc`K&+<@Q0SNBDtD~mlDj(Zp&PSNTMGIy-d&iwd9hf)$xYcYRzux6lwv*Mm; z)s|k+j8w2|4Dx)mC%eMq|JeQj~=V%eD?_w5~qt|pQFZ=qSl ztle%R5v$x@#~L!-M9w|jD;h@Pzp@2rg^7P%wr7EH7i!`l9HQ{f?b=dnevKgu^e!Z(c z5P8=5LNyjocWTXq;vhVG;0QaA##L@%{!e-NzjXSqPx$UF7%#lUaOoqzx#*;pHS20} z@9hO5EG*LZ_9PMU-ynEvu}rBI8?t)_`v{BP93pX8HxqK>edwliW7C|#CXli506bHF zoCt3nI`)I>wH!5F4<w z_s{nt7GKnp2T&1P#?LT~2bEY=NssMV`dcWO`j&~0&EIqq+C5`ej zgirGFT*gx}>-M1lbwJii-fcFMWYD-Z=_!Ns7Tm!sxJw6EKw=Ji%gQ(l%;l+se@KI* zN=bU=hwcZ43lzRaVAT)6S=$~8`hAysOaz~_8z^PjEit*3wGuiOozq%#oFe?9F%AhX zw8#>tpNilDap<|vX}vDTe4cLzC=}`B+p4>LL7(J~9UOM{v@wOa9mD#dUOMA-cv7US ztKA48cdXc3l4^d+N6Sf=MPIJ;z9T5JLWX~|p*}t9p3+Zt^fXzL0JHWX2zo+}HU1ZS z?-|zA*0qf)qBJRrfKmknL7Is4CMcj(k=}dnQbUU+;%IjV!tfvt^!QDY5N>XGjljVA@XkH>ml2m z#^};3Zadsy&gbo|$?yT${40eU8id!3py#I%Op#MZvzPu&T#8ZJ9^DnT#pkm)GlfHhh6u_S88hiD zx5UcMr>P^nKgr@rSs-ad%e~+{zGuK4dmTitViXDpBG`_lg%(z+#zL+M_I|jR6BV&2 z9EGlmdC!#S2Ery5t~Ei^8}d+Ym0VWT#xAce9!>LS#SRu5I@*VI=#-kb-iq?zqmN$^QH(6}&Tb$qHK3(ICOq9w?xcO)O{Vjot%KB!PJ zn)uO>%EM7dMf{LhwaI%Flm+o~H~Yd~59I|S08s!2k&3H-JXCbA!xm6^uWZtXo{G`E zS$P68VD@l|SNjsSo1g~tBdQef@Pq~d0g;_GB9)~FARydL5cnF0@Z!TVn_0;BDv&C^Vr(vPcbE>^=N0(!I(;pHHV6rt1Z{Dm5^M9MC9u6o9b0S zcJBNkJ7WymF;v`zR*DDu?BmszEaE5Ai47tSa8cE+uRb^_qI)^f8#U+=bEK;48 zVY@(>i9uHAHrjxZ2ZfiCxOMRPJ&S?X+!syWvZZDy#)M^k0Uzw#<14N`o@MJ z2WH#xiU2bCguQ{)S3mVI_{tctJD1iOZ%{ zf!DGb`SP8r_}?B-^K@o>-^Y7m+q;}Q`3AASfH2B-*&eiY%BVH~k7L{zq$qah*NN7B z9{`1VIj+w9)6BS1fZHY&e43PTw@e0KYv{P-qHo6%fALW|hfYg{#ibS?eSz@O;26;6 zOIGGe<1`Tor~gn9D0zBhup$M~C+l%3D_qY#_7-+;$2F%D7 zgf!T`4NpTo_bLdDO`2S^`{;7id{^%%szI#wgm%0<*ux1)DdjQ-^}9grSriY)oLH4G zs@4z8n5r-ohnE08a}^pd0|dv{*+XNhPSs1945TGO9Dt>+m)RU+QuYA~VC^!GX}RLL z(+Fe~`}=>!X!|SA&VMAABUysz(C|CW#uRed5CRQv38HrSb;v4h3#;aorAOdpepMx;4tlyK5X~#u1v6`2#m$EyTmfd!_TS6D zOcZqNR(esW95Y+GTRa6>hBBVZw%pCNCBJqp{xeR^x@A|U3-w&PD8$;rg&o4YiBaUloH!6Zn=P+PP>Vd4`H#H^y%OrKM>+-bcCrc5qSv_~U! zZaIPIwl*{baW$P|0&Wt8w%~GO1_WqHx)lTrj$$)@pzCkSP`_?bf?aDyvU};!!vefFq{{`De=@8 zHsTKpxDT{3;jVZWpB5uZ?ot-!bHKOob7Zuqdrgs8IyX~X`r^xq_(|M#BH=u{yEhVb6S4i z9o7|ZU!-(F1xmpTv)G=0{L)zgN(|&4em=Of0irQvMvoNmAqk*{%(FuJ!^Q36UDSCg z?M+9e^Tuf9u@y%{AHSJo`?1p%VF;ivBJg-_iTH%!LqB?+tMzWhxl@%~$5>l}n4838 zfNCV(#OMj;>)XEMV_|RQM2=rv9T9QaPX%g5%(^~^kpOu~>WO*+U?}yxtIG0{CKsFW zyCYwvD7G-Kah6#Z>Ch!#VJ*`_ zkqG;jI@(v#IiN=*3U;S#CG_4zGRkPjH@MB$yli!&!^i~FAfrJG&(>mi9EQLCKwM_7ahP7Qy?xWyw@ZvS4c6d7Y zcuSma*ePMVtCQvxw*Mtij%E|7Ia7aO`LAqvU=0sKuuRb2pe~`A zWFhm7ichV%h2wMMb(K~m8;VQG0HC>_+P$5gU0+k|IZCf{)cb3S3B5NAp{Wgpl zB~x1=Xq8ac8BNVHU-axm!K77<=8!Nn`c6faraX4ZV9}6b#ll!?QFqzdSD&>G8*;15 zEKil8?&Nts)E>xLkhOpG?u96XoVG^x(6(A^UvPMoYBF|LS^O{; zhrR51^ea97p|d%j3u3!;gF#6WiSfjjEl{%7^oY{@iahSNBgoVZLHc*4eWVHa&YJ?naIZFXtQ-8(^~39JRUuS3?hJ zFEzQM;azwI3e%tSwA_%Fp4zXC&+YQ}2r>AF_g4|Ycgm%+=>7V~lEkh0FZ@|~`a^o2 zl{y2pFS>Z|lQPag-pjttzDx3}jV;Qzpvn%b)R$==9J$Nr^?TO*C#JKMUp9he=m2}(eVTH7s_4|mz|V%Bd(_gV zF$6r{<6@H5SpFu3EPr*7Qs<52$@FrFPfaLQ7ssrwlLdnpIm$1Z zr~4jWOCJ=W)APTG z_r1Hv`^cxa*m1+x6(OvHdqVDP6W|kxV^N<>py7;Vy8kiy9ed+y4Z<(jJe|e)^!33!kB~oVR9fplZ+_^bpW_-iEw@cV}+Ga>|m7KII1NR&4UIcvt{9;FUb``wm z$~;?>0eeyX!4L~0h6Ctoq@)XHgkSjHoyhB2XyK7etK93(bYUmAEWOvLs#E$R1-mQcJt9l#>nE|x>DgPA$s6I1bnBS;5 zid)pJav8WY9pTnwt8&^b0v*2}wkn+9IFcLolrF|ptd?Qp`1yLqwZ+AyQnle6 znu^05+$V&|5tUz!iQsvziKFn#4~%5(yy1Gz)h}aXsRnXXmBw7!!9EKw$=6H=F08!5 z#of;<>oTgyZsw9HO*(Fi%g5^EE<>x&n9vo;wTLd9^fbCli)nYdQkj(g)mYD%=WM~U z9Oc-2&qrxSX|b1vK=l)|$!Mh+6ptT)bTT^U zV|SlKwH$CVnbpUMr>P+&+7wiDVuL(;ZSm{&O-*9UKJjcLcGjEYc zIPk;^qT{(otB|{P!%VEhYdE0;W>v8Zlh(7#+)?jeDpH8l%$#lEr%-pudIB6+zI%W^a9)YCt zKe>CMAk>?($%ZSptx9(j(os@Y<}Pt}PB48E2@yz+ASk_m+}O{U+WL{aE%5+^?ijd}X8Z7+YI z2MBYk&35>hW3?otHrcB_!d2*b@vNIWpOf)F@>Th2biUh5?E7Qz-v&hE@(ZG0Q zQPsr;dU_ssVvEZR1%v@|qk<6sIE4C5MYk63f$-1*gW7{(bpwXtqvvFzuFfc513E;W zUBLWh+9$(H$Du(&YW|5Z@BIJSZtPhNLLp&ULAZO&& zxkBINzN*8~EKs)i&aA~QGGt$tgEiJvwm?sBl?14>%EEju3v4=xd7ciKR{G33*87v> zJt%guGH+n6R6CJTP4dhm=*609s^37DtPWPhIi6&SxNQr6)D#lY2$* zktXLCpTjcD!a#)LVBqi)OuRmNH!WEZW3eic+$S`|G=eIb)2%MwD(UhBbM=esdFvHY zCaYl!L>IU|7w@-ArY1R3!QbZ-ckt!gx;w;NF6TGWn?I)~WH~)a;szS8mNdhnCG;()kDF#VU#1tLVqemV;crLU+Oqu%tcB4yP9DOooQzlHOM} z@cY54GY@^j2Mvn+`E14(1fWK-Rqpl*8FzVJR(5{;dL;qjCCtLg$}#wLC^xCjXpbjb zCFyl)697v41e1Qrt>V&~O)PPaf3KA$eSJ*QHcr=HU`woE0v>s| zyPz1&aUt*E&Q^QULDXAkjYoT{aw$8*6<(+p&1@dW3?%^ z?dA}FABD=@r-n%Gg0cZ3KVK(x@3a&%|HSKvklEC-!ziQXtIYYY3@*n+x9uNX(sMPN zdZ0XID=n5BA;xTY7)!=2vyATv_s$a(Ugc=N3}Yq3Bm!wKZRa&p0YI!)G+K@l;ZAci z&~at@t8lcl2$}Fa%nlABhQUt4=K@hrf5KbSrZv+;aakR@xTOrm zS(}z4bmDcc=(DT4OvU!?Hox1oMQQ^{4pDXnzWSUX3LYuO=b>4n_&~Y{;4JRwP&BdN ze+~eEv3iVkn3C(E@O^}I^CB5wY1QN0vT}W$G&)~-a0NAT2XBj>a(1>vm%UGl%T5CO zPHgc|vFUrE%KOh3?RG4cbA^ z*vG@A&eK*D_36^K?>HCF)!;fWcS3))N=?ae6s`iw{BqKl9(U-=n8No}6J3!Z<{e5&Uw?0^3nI5}Z}0#naePw`47 z4v4s<@m*rI^N$z@3j$S}9ii5(w0hrEgYL_3F&g;W*E{;4M4!bKu1gYai-~SOAFfg@ zZKCWJ!Sw1K-HPLD%w{=DYxbyN8x5o^c4s-&e)I_3ek7y%l}VdOX6-H2A%H}?){1>e zbjcL%E>HPh3G4b!CNwCB{sJpL&h^LEKq+zTF_Uh{`d3Y#Ph7J$?U()sKIxk^9`O7D zP5SoYN=@*Al#5G@U2Qz63r8+=#*j>_cc zcQ2wm#KSxs&=1>B;?ui=4UXaKgKA35Pxc9nxvrd;>Gxa40bpL?v_l;E z^sW`l0dm*dIBbbRi(WGn0HhGO(0L=MU@ui{3 z_jhekw>f4m^6*k#3!&J4uZk$Q@bk0j=stU6Y*;tJ$;N~cW;MU3uBF{~|J#@U{0nG! zFbUY9s(~EM!s6IwA4&rvnq@`8+wE5zarN zir>!Av%D2tVu(;C2zvokpzlX>-A@nR%Q^tc?oCbK_c9W#gyS!J5(mvz&xKJx4%(XK zB)K6mb!%1BS3M^&K0afR0DmKE>ez?f^e#UiDU*FyjZ|_%+fAJc*zAFUl6>a0v|GzI z2|@0?!N3>%c|m5$>$F7-D9=&R;4Zs~JqT%?q4e_t&6kEnfWH`zl4grjN{=F2urb%xS` zuv3ip5*oLV(wsjAmG-R!e`|AZ z&~hF$3VXw|864yQA*pS+V*r$pL)KVZ_G+rDuS_w9l3w~bc(ElJAfGn%&17{?H5tgw zb9q3B2dsP~U5nlHdLKNwO4WCiWs6HK#4zx@dGQ4`;YbrNHmcOwdHHJ@!-gNd8n7WuEcwjztMrf66=5`s{ZX-1lH2 z@IWzzR2i?6!=5@TD}_=Qw1nxpImY-8cUi zqcaWw?x#$>PV^g2_<2eE+i?;LpaYbAEoAsL(fnsrod0;N4TNtX=h?pe31Rmi$ND>} zSbf9i;1piL`!B}&yE&%>@C>ZZ5*Gj4`2H{FKj{FhC#*n%{RJiAKaThp{(W{HxL@bl zbI$)4ob&(r>Hp&M4F%;24Y?A4K?st(`sODo_1k%&z5ci%pemd2AG|PWf10FY#woUDFG0#%PUJa&ExdDA##qp3;Rc`%Eo3*aotSHDlC6m%Gik%-&ko7IAL zL2im62STZ`w|%jpPVCnUs}s7MF3pJD6vJNTw;yDxBPRcQ680}kB0%gWphiI$a4!CX zP>Q(zrzV8oO0rvpKs#jo*1d|a40RK3eU)1Awk6!uHh-ur|Gq~bZTLE(FN~3onHhDc zte`Nkn;hjeU^y}0l|*S;TVAqEH<)NvWIXt?p_R#_dxXTB5v{mjtdpfg6`|r;cc!a5XXBDhXAbVlVa%juv&|| zjSB0x8h`k%T@?2b4oyvR%vxea98-$zzPcq~eo4f1?f46J@wI0Nz0BWf`mPz~vwQl@@TN>&?$HvGF zAZx=IKR+~7h6j#qy}$SRGRwEr0`^1w8_~O%^k+|JT^)q9E)E_(Eie;wbK^a%hDMLS z2v!4h^XLf9FC5TfusxAL!1VNJ|H~)iWOFv4pGye;@n#8}Lnr1j6u0g_rM&a|dpeSm z)1=b%H_0^1bfGFtK>jckvj`(;& z`evi-#XSR`C&$g5{iSandP00TF)KsT0G4)%4_9S_{vNXBcz^2n3h3}-#}oL|m9k}i zCOB)no<0CS-@8X_x46xucz4p9R!O8vrI5=N^Ht{3{Wos z^z`0uwHU3`?`FxSJ|Lu>Wpoj4j4}}M48{7qII6MJ{SwQ*cwUP;szrM8{(r*s*wU?n z)c!>1nXMix^%h>mIt4$ao7wHGKAaFvc*7*-_$8~<@YTH9NUdF{2>ye=mep?#fRH)a z+%N&*z~8T37sM}o=r|6O%rhXq<_A+&ggZ7}76C%2PYjEmuodX+!JraU`qj=50hoal zsRZvk**A1Bct%+Mz9+rk_LSZTr|Bis;*6Zl@R4wTuHQ}X%^GC3;&5@5NX%s`6*^Q{ znp#AyWkWUBvSyDVfymoh*JcGJhJ=KS@fpeRZx~5aPrU#? z`%1)EN_O#cTzFW~S@h&fpLLnFr5ex0{*2SEHUwskVnB4vr`PFypD3TGs3;a)Q}UKx z+;yI-?qUiM`+m92UHM@=E^}eOIaY!S;&=3}LEY6-nFurHqUW_bJKrF8vQ!dO;Af?j zLhZks&JcJtPN)2{=fc5F1|kgWy#JbHZ8C1vAZgp1`Ma~o7l}?shErIf6R}tISw&*o zLye2b%+hy9y^oE@3nUSYqO>tJ*bmaihKm>_+EU&F$muY~?wqmNgc&KPB5ZTv7!wFS z!8ip%YOtTzs{2Vh@=mv}GvrG@J98EX7oY6RPfz%E zpKr;}zm^J~*hhg0c+<6P;^WP2uv?P8Ri$=ygJz#lS(08BjBGHsv%ErUT}Bh?BLiP| zuXbw*vcYzkh-(zEriLP(t^=6n-2ti;yW4EAHR>4*^1Tevl84|UgyUnw#gDvf8}O6~ z?UCpUy#iOFv_#l+eV5x)NcGAcxmJ~zl@7Ki7v&f@eHkLIiVOJ8Z5t6fpaqZ&k^{tT z95t0!KOGGq!SGU!0OoX~J8G-Hk(5=>$q-V$j@T}r@-f0b9S@IIc<*2l;e%Q<@wr?`S^h2z zZQ{RYbZTUcay&g!X)ZTPp*>j+J=NCk6Q(ktR~E%I++fyJO6XjUZ=t_M3q$V@YDuJ6 zeGP5lu3Z{&Zq;DGkJiwbsz>&Z{OEJZw5w97pl_UBdnKN?e(Bde!J zNN=KzJrp_V$80|7irA1JU*;o#_-s;4bxXate^I^T4s-M33}rLJ(SFwpJlOG2RznrP zU4shrR5RiDHiT;aXn*3wH9ym0fg5f-7U^l@)L8-me?i>qS*BhQ$OWVQH`ApD>*@}U zw0ce4OCZq@MBX8!0upCGMf;-Flx+T;90N_4*y)GcZeOztE!qd2`$+2&EmPW|7{rZ| z@f5!*|4A(mUn2>#=C%@^YEHMs5&qE>`_se8G0(4k$0Dt7yn3QhflJDw#X5!uSqzUR zB7`Pah}x-riT(a!upzZ%1 z8$A0YfxnVcXE7Xn{%^~KnyO+BDRBvUvSIY~S`I6{r|Evfgs+&SNzZc-NZc|6aS)7} zU)4U?nXkRl1wv+kCRAIJ$xJ;8uBw;RwHee^W;o|uW!vvT_FoXA1Gin9I=m5g+mgsG zn=?){t1xU{wFPqZYA?Kzy3q*UEuZ2z z-H6ZUAQtKvkIXy*6?*J0Z8V*3#~!$w&W0M*`NyJpsFa67Wk*>teJR+}-ZTAP-WM}h z9vje|U}#R?AwAYt>$q{}n$B&`>+SjR+~&!8!uYe;`@X_opHHyjdBQl`SxN@oKn+?(sDy&iB*$F$3-eW`vER29~+M$wg|h<&N-F4ETL=N zA{zlf((PK%sfcgg(^Qh2NHj;}>9Hoe$&d4kx4w*twxaiA%ganbogCcUPOV~r+o-Cv+p(<~QVR&f@u=nT0ezntYQDLqGqC*6XW((f z+?F11>YwYx3;M`vI`ks>-gEltJT^=c8sza^9|*GRNZ~_tOPoaY5lMku5~tXmswp*L z`Z`z3D{ee4&+(`Kyy{Z7*92xevOmZIW4*5m&uui6C8oP<#m`eh9#uE%%u|6gJLCCF z#xq1c^1HB0jt+?okAFu%U~Le7i7StIrhM}!^4=3Ba9irlC`?jH6qsF=*|sa0Z|aKd z63Zex6Gb{25na|gn3tiq-dv!L@K`RA6Y?f~)yP3 zd)mqQ@TTQ_`<)d2C<+IwZQ72Oy{77kG6s5v#5jD>`c@N|qxeOrgz|=8$a_i zh!D6XtFUm#A&s#5xz=3AOURDWWo!)4sQ$2o~bwrlx|#KdSDqxIUR$%MM& z>AK+B;EO|x!o&6V@rX$PeXu=&@xso|!hon#-d)Z@K(r#Y>1!sAdglqH>`(oVBN{5w zS!YA@Y$q6D>&Q01BSI9rJZ#k>%259Nq#S&hcr^5FC)29kZtPx8o;e7(a0^g%t{Y;G z+M$G}*v`|3uq)?iosJht8~MR|uN$J#{Rg~-!o!ft;^N}lmPRzZlU|F{K?iqhuzSd5 zo!R@~gZTWV$RC6MNj>aj?S>Cq3h@4P3Ku^r`qPH08R2r}OiW6!g@SGQQ!d)k7qTdG z^q1aZ=acGQ%Q#Ux+2Wen(4gAh=I(dtTb36WY^*s(0Dt|g*^*{6t#Dem`+R{Q#fYdK z?H%XGQyYz#leF&eFyIfUWsdpq@Z{X>*`_lY{CU*n?RaY@7DgSIjVD+KuhF%gT`k** zK0sOcNESs!RqVc;^l#$s zjhoRvY`Kv|%Si8w=0WJ`amsDik*HpUmyY5-6e9|h+-#*OzWXQAK2Fr%H1?@df);u$ z>z3x}^V_|v;4BqT-Z(Ga-!(f1;fzWB zs4!?^r+ngK%JH^c<5wz3Csst$vunAi_-WIYv}pTywEOs82~Fg^YAWfDm%Cf8$iTYO zP*Td`w-z(S$Vg>LQDDK$#lbZPaI9R1o38srAJ5#f1XUu|GYf$ z4)>13SQY=W{IW|s(u&?kXgxG~W?W-u|A4eMa>D1Lt@mLMUSr+KSQg=Ylu!Bu<2fP) z->r9egsYj>E1@7YeK5FVb14)#zyA2*Na%WVI%cA8A;WXmuXo|KJBjal-HAB(bVhW) zou)Rix}20kmd>xCHOOPo%k`;)@zjzz7R}?g2cte7N262lhRcePDkn2k(ifc_B0n}_ zhfWW&@lL{v!iwJsr3Gy3Ya{1L@Q`2n1XNh z_$y-KVeyxOi|eOfTKa@vhF^`p&|Co1iG|M$7N#5zrL4i5WwcHny$bNmm^bol9Zow< zJGbq=W?$Tvo4e5j1D88@uKTUFPkGiIxm*?XHywI!F6?8r)xNkFDDF3a)uR}yCw7y?KjLW7rwhMPE{xbo+21C1y#ZRQ z;(t`X*_NjHw zPir1O63Z4<0Xn^GK^HI(j)@fWbo9Ha^#Uy;63^4U80RSptt_+V@QHVeJfc%Ycxwck zc1{XM2fM=&28sT4&BB@k1k@5!r6moQ$ivwc!4t`K>~N<#{-i!!J#Q-3f!`|L_n5Am zK~Uc(^$&rJ_wF7{;uw&DuJ@^T)V$HWaoj|0p~o%?!!}Oq_>XNT()@&$hRC<4c)eCP zZ#c7Y@am2EK&x5p2C;8iVEdosmUgY^4659TQjUU=R-H$DMD%aycputW&29i@4Y=+^ zE{JjS2yeZXx$|kvnBK)v&~&{dWwYN7?39sorIqBfi%zPsjX>>+moOOOF@8Si;&Yb* z-e>F=l9c>w1<0ps#~W+o)|bl?myhgDR>*^LW_&iL`y%Go8vxNw*rGs#IFw+gLu=RU z7=*6d?~z!}sDLptQ%CLNvHbVvp$3f>DBs&oE%LsD8B!qLPh~~Lf|8`vi5$xjFEcQk zV=#YqxIxiS4nDj!s;G0m2k~0i}2gplgTRyRuKVEo9=jY%Bk)DeTX4|sy%4x!+v z?SKfsTl&5CC_gtw+P?$757wxGItF>;^ZIU}eK6{@V!Y_+^MzZRA{kPR!*2m65|jHI^zIP*3l^aboY?wU`}M)et3ev4Nuqb&`xB6OBRj``ir(mw0&nqA34dh7kQf8 zq(pOF1b}t-a!uSj=hXK6(~bAcT*}VQMw~s;P&w0T}K-< zt%Xx(q8S%f#LAa+t|JLzp0AgJD@3BOa=5k^h1m8h7L9CLZdX zG~UDS6IbxacsjKPE2memNUwl8Oq3L(J{?frI^E=;e*}Jnwy~45T4X;clFqvDKTFj4 z6aLPc>L|<9v&te_p!LXsYx_P;+6w0WBZrnRp8gE|pPYi3n# z^EJD;By@L$j%FvowT5*hKdXJ;r7C_@`m+N2_RSn^@_&B9@6VL#0%~NzUXPB@@2~&$ z=)VqtcYLaT>U(SO!GBAZ0?m8IhIxK&l*<3@9kXoRP+BSrrJsplO%R}*j41tVVeosq z;gA1Lo*{qByMD$e)iL-xZ~Wihsr&8g+7A)G->81WB(%mjINKzJcuO9?x%d~Eem+RG zIFCD5mS30mpSk$Qmwr0Sdj0nQ4&!GU{vgh;6Z^lj@q?+X)l(f3Wl4p9av=N8BACu|Z)Qhn~nLT=OgG_muKcWcduywLx&`eP{nBko1X zH>~hP`&{1qHRt!*3GqAZbii6aynfx;_eR4r%O|U4{b>KTOW>8t{nKye9m>==|v6HEkSG#Kr7PN=wQU#p1e|+s9EBu~nYE`b%E3jqiPYn6E7N9{J zW?1{$UxG8BTi|u8Xugrg!eEcnSPjYFAA>&@DakC9@1${PbwTVW*}-OX_7rFXmJ$|y z>96m9c>dP=$?B;Zj>gOa#{BGIYE9S#wXJ{yDH?u`>Bmg|L1YrQfc=O))0fpyx?9o_ z$`on2)AxXKBDwD~aBuPx8L*WZi^+LPeLv?+hW}a8YaNxrbS#4Jh~m2Z*PH)&U|oi@ z*JxW7(be!{zJH>`-@fMCz*1?yG1!b+5$ksb`-@2basa#oV5!yg66gQ+4mP=Ov$(IG z|N8qZejnR!KIo52x&^?_rHNhOO!{x{Xj29D24M*byT6nCr`h|3UICgMfMPTtAwu*Q zxBYVcpQ8_WdW9@bD_o^1;oqM5_j^(YzAb_OosR#4QU3ot9RVJ*6>N4)-IsCrmjwe4 zLMeklM3g}qc7rcZ{JewjAMO$yzenb_wZ&+^xBE}4{|Ene6Mj=;8iFlbl{gCB(eMo{ zmj0reRR_1CnEPRVwO?Bns~*Yub5)1l^#}u898!!w&!v=PZb_;c7y4H7byo?q8sI zzBOGxF76XZT8(*MXgaXeUE)*jb_6ubYGhyl-H|Mp!$7AhUe9cM*vuYi84@W>w0=RA zDP%cMe|)_-bu-0>J>RfIpn$>s>rgk$6L#BY{OGpDVg7Biz0pFGndWYU7Sj1^oa)r8 z9%hBCd@ZADH;~un0IIP%C{(&*300eWt92hG`sS*LdF=dPq9WdZM|v#h_1jJ<1WMhy z=W|6pI63{+p39hQ&v7w2TIlJ1V+p+3rjwA6klWy%=|WQr2jhwTMmeAxFgg}O33otK z(u0m)EF$b;Q)2Lz!j>epuinqk0P$@nK z0~=o=k#nosuQ9jXn^$(0gIZxh96a8hHDwga-9H%j-!_ClwyH-aI4(b zuH@$4+NN+CD&!q??t}HcaR*s3N1L(IstRp2M=b_<*mop|N|LsPuDYblHAQ&OZdyTL zR6ricLS-y#a6-avhJnp-&b$#6IOo|7G@q2#uvirz6o)GP%BKG!>+kgu0ixYojStQg z;L@sDl#yXMcDRu!IZ6dRT~uOpypOQip6hJ{`K^4JN>f4$fUpCC6J0<+Wz~kS#8$-P zb9X%mktUBZR~W4rSdD88acwDrsl;mvu~;_v01JxHZ?jqfDJiOdw8qz%7QCYX12qNB zzl1yZB~qo{{g;pWbzR&ox#xoHvaF3;B#27bf&!R29d$VE}!F7y0fkdG2Enfg9CxwK&%Cn*%23ylDl~A3J|0Df_CSS z3!@?L5;_PZEAI?rxv+VBQXAasePq#;I{@+n;*yUZkB5RpHI*d~Dx7!TmFXPGlF(fq z9PAJ58Yo+4PfGnuv-wYx{p?-|!NZIJ`%+d%VjNzwwc>3gK~~c3oVRCr^ssvl=tebU z-4*|%yos05EcGs%`=2+<0-TGE5B1b$M_BQ;o>61QF(|C3J$Fx8mC&W&X8ETWfVf|m6VH4{86)>4u3VjyR4y; zp6aESB-C%qJ+pe#{4`942D#8%du;41xnz~mqFu+{Wm0|`fk2?K^jE)`X4)83;)f?11JK)@%}O*x4#fY3 zf&hrN@Akhp5t02wt++i}6QN|k_|){-I6EL`RtfFw2B}6gqN7cAUYUR!T z?44PbQBG_-TAtQMKoF33CgKa$G_yL^$cN8~LE=_xHY!sf-O%5d;a2d@vYrsOAcs$S zRQC6tq<_qEsu2jUpl-p-6XwbPP2N$U#7*lX< ze^UNU-?%}Nf5xR3aCxv}LEFg+k>r1w%Zx+^;;jT-sO=?yUMr8ocx`^zTw<<6@*mh)I|nt=<@x78K@Q0?fEdIcg6xB<5;`@`1(F0rt7XY+~Enw%ckf-*O+J z4|AR#i5)}djh!aeR}~o;PKOyt)CA>o*YXr7j@EiFGDvyT!d0_*@mOt zKU=L>e;|iDd9_YaD3|5}0xgSId4*FScdj`E0LFJ=iP3lWHKI<6Jvjo@&ixMs9`lWN zvEA1|q?6k)bw~{C6`$CQ9I^})%6i&``Iwh?p8>EzGa7%3*Z#+p&dz>AjU6Q%+>x*G z_Qj92v?^aJ)zWf{<97RjD8~!Pwtr!9|CIZ`E`){gACWUM^iAjsmP&U=jj5{6$hR{w z29h$3w`lS){`}{^SeHNJ+Cq8hHpJ*|MM0%4zM%cowWGZi%F&Sm^62R3bcg4u!uGb` zBG@wRjDUaiO)UNQza{By)9Sj_(y_hCO{scLP8{{bUH>fCO%uVlHAgb!E&d~C2$%^! ze*l`Dd4OA<{>R`ne-NM^i>d-_|4cymgbWqHkjN(GF#jrF{MYsHe~$!)fxjpalqd2} z!I0TBNb0}z|WIPrsL;!5uN;_pbDQFtwHV5El#q&nWYlzuF(>}qG`BYj8XjgUc&WUX@FAt zP#ylR9|*8=Hnb?&Cp+P#*@11}Wny*dTl|u~k?>s_SZNl5Sx((b!AqZ!h>MoAe=R66 z5aMn1T@bXNiSQ}Z(Y-2q`<#~q97M!xr1FE&0YKa1$b@Z(pvL1rzlz0nx`y+f4pc!k z#og~Ow&=-)QMUM9YEE576AQ=>rqFL2P)E(WzP8Tqmgw~X_Z*D1(Ua(}y2WyJybNTc zRcQek-TgrsrD*{OilaHmME?6AKT4B)&Yvi`^dBKmT8eZ}VCX5Yp#ZCx!?Yu)AdUF@SEIFmZs)^ebZkB|HnPwF_(XO$KL?czk2xp4WZ&8ps|IU>Du@I z#~=R`ZB#KJgr8OMj}QJXmY;qpR0SrC!`mw6=}$lZmq9Iji;;f@#ee1J{{0kb4gg6V zBVtat^?fn^k30VVo(_uV&E3EKCjFcIqX#ekKb;zMr@QqJ_7sRYl8L8qvp0`HbZ zR$U#=VDlII|C8$b`OBuE8=W&YelSsfS=1g!0kKV*^$>^_tSD=RO$ca5{pE`E(_m*Y zHQ<0a#(c-JjC_fnioSeEBWh&?_z6X=S}!|~mCCWEZAy-zTeg#ky9n$ka;}OMobtCV zV1K+#nhrX%F zg%K5L*I)OfQf%6e&VLAK!1MW<{b&Q$!&`jTx&wmMFvfkRzEnvUjpgB7QyOt2>6|AU z@QQV{)=!tk*8Iupdn?^>lM~Rx7QS;&d`Y{c`3N-27~0`2l7C} z(?u+g3pUC7DPpGDGKorA6dT85(>t}9kD8_hN(+h1;SYXi_BvCa>pwl&t}7_>X>Qx> zLi*^&aWk!rRw{}veK5807b|!1{+Dx}p@ob1 z?_fU7-v-#2djx|01FG+h&o?*i`y7{h0lhU-zsm+U!_M~G_~{K~mIOxKG5+D7EI|HO zU;vcv^FgcC7LvJ;h^oIn1v&F46>W9OeBhh8WWGmZyB~@1mNk1$9QBDgcNxsyor zz;kOV?mCZT1`x(rs%56qN8a-nI$o#VTMWLaS!i(8ULNn*qA$@7ezBFR|ibVA9RDn}KCm}oAGvS7b3r;UOZqiSll z`WS(szWFdob_Zrb6D{E#eYT)yH{WURZTRlKHOrqmnjk5^YI@lSq0HY2UF->yI5`fs z7QnV2Dk_R&&?`Wj+4@8)`km=pmlV+I-ML!o`fSII(E8&Mri=F$sh@ohN&gxPRonn- zUC@s~=DFYXL`PvZp4xzDE8qU@IW1q{>=PLb>#L#)62OQEW4ec$`yZT_DX_d{Uwp)j zI<+4q;R9#^wu-~KLzb^aZqbf}(eSbB#pAn~pL>~|;^A$j`Rtj4&8TubonWDL`(UUq3)z?z zI(>YLfG5S}=^YJPtQ{j!}xALk+u?1p? z?W4rGF&HWyI$y0ATTFO@!*+znYKW?9vgz*CNja^4uxP-cQcub@N!o7d_O)@kaYQU3 zoJUqS4N)gPK1UzT6j4=`j`ti?5)BB;j{9+_SV^3RE#Lr}e0`RVO1yd|cMYhx3>dyp zHU3AE@~54fm8Qy3YII~lWrA;hmwlQxzR7P>4rh+;H4vL=;-n;7=EMsNtxf=vseo5y z@%o)x<(Z__VQ2KAbtdhc3D1n|QgR|tta>nA<8~=oRDEfFO%uu%zwMLgP^+V^O)2T! zqn=)tS9aQeds)PL__O#OZe^fo1`(FL6w#&7{VMhXp#?+?7xLgWZ&fkShqh8ub(((O z=KQ!up|-xT1i{@D$Yidk>dYcgO$?bRkF+zj;iGN4su4v)eftR=b*is2T@*EL9@NeN zz1hzNo#*pF-NMNGZ=1luu%dv1S5Dx`0>ts^nzq2M5+0?gw1qXT*lG!a7IprIEbkB3 z`hP)zV;ayn6*}(clfCgL=>-UOYN>=JCj>!eWy#i4WffT#5V|+}UpR^b;zl?LbRhd} zsjur#59DOR?WebGT1t!S1#a~)2>A|tB=8>|Ez*q*H-wtV8Ze7HO6P2hUw6PL1LZKo z&*fdMTXNydu@?)`y@yJ?S%&p90oEolRW$ujSZ0k(`|)t0uDjW}Zm|f3?#l;L!Q9!% zMJ~f<^k20^Z+FdVPR5RuvosXwPdi!qg5Tu#7yk%-7}CChJN*~epx;wn{>+9nzwIemQn|JDvY;gdggR{ut@afxlEHmLI%o7@_Gt!!me`5$twBrb z_O@3_|7E6lfD)isTx#8Sz7k6bIi9|#JK4=ZQZfgGgg~-+M_J~fEo^2h=%MP&TlrU0 zPFKT;Y9r7(zTP{W#*-o1hvNl@Omu7=G8pB;ui#5UZ9JKnq+EeVek za2jmc3JoDK-h6c~l*#4Kh4&v9j%fh&Bc_`22{+D-#|!Vu?{KpXju}49bXf`L6WRMZ zXrW_RX6t!0k*#@BA61L_(7qNL&UkXPOE&+QImRN&+VRyNz?5`6VM~FXwzcN7cn#D3 z@q7nFJSd2R+fzl@c|8s>t(B=6&a^^Ry>&3(%$ha)UR>tIK&7^Urxwx8U0i$lF;EEj6TW6*+ZC2A!7qktyar_B zv7T#5ti46Hf)dgn%~P*z^eW8&Dlo4~TNPsiJa?%1tB$wk+X6LF-W(ECXAfE&e0<%j zj<$nkWGR*@yHme2YKunH`L{uQw`JYWYn0xAG8p!N!s z?F?pto-7eQyhzB4)YC9=9N%hx`ZQ4j?Alc`)Tis?E=Ln<)~#Fb1Mv`vzezAH@ZvEk zGZPsa#Z8U{+e}t$?ydP=4kV?e5VV`5nMn|pkbtQa8+AS> z4S%WpB8qwP`_7E}itLI=?V8#Bx)q^%Vn}32D^PR$3>z#I@;uMzLVb_W@C3VOJp6gi zcx{w3APw<6oIrVcsc1&xWjSv8k1< zn?oN(eX;eo+L}gB%T%}LbH^)uORrbT7q1=h6Y>W&6x-KxT*}jmRX$5Pvab?TDCHSbY&rSN=k3E?{ctD-fm>ccnAt2D>Rv=0>XG$%E zne`h((rB(^v7me|xUg$pkuv$e8pmh_?jz#OJ_g^iPym04Uji!sw+IS>DW}FsIrogr zU6jJfYE^m2i%O>8w)2Y@mfAYchf7jPdhFqdARzkWe6au*WwBdRJG0Fz>2Yr{aq;ub zZ_;HR>R~?5$utkI@a+sKU<&yg?lJd2F&|p|0>LeGX*2M!Yc-@&t_s>N+V;XZ-n;CGTE3LVYkV z*^T=(b$nL(TRDhDLTSIu@WQw9OItXjJ|=me=b?tjF+}L)s7q|FQL5b@`*=GN|N?TEK z%sau#G1N)}0oiCz75(}9#qh;E$FURg+kN&r#`;^kaim)aK9#FcW3Mu~eq~H%8?IXI ze03?dliIZJVyuj6NV*_amO~=?>9EYdVz{<-P4aLmxMNIlg+e*W^@Xt0U>JI`OaOiF z4mbT(sc&`7Stt~qQ12R+RiF~j%P}#7_LE51RzbO2FHe`ZGbOvQkcLfwV>nTzm0Pc5 zZ~*|3P6Gs%I+!SSOW?)K1Tk|XLp(9;jl;bq&-LPQacuNJO14uMfN1P&Hm-a$AwVFmjWjoK-<%|pjuzdod^Qn z?}a5yPt(7V+Nb8!r>g;NPHsqfK61Xh#hl!- z?g`kLDIZ~it3Lzd{kwSQap)u8KEV@pUHdk`%HKWN31IaEKcD>SJ9@diI$HwcofYct z(-9Vp&HV$6)ybDu>N)xfdm!e+e9d<)a@cK3;S`sC-$87kLV!rgGGzLUL#w{ z%e{oluoIw%ZnOdfs|z*7?TS{NwmUC6vv@1}?4UPycet}*&LtP`ZeW(G;n;a{=44yQ zfkh1>qb+m-)#WPjO)EU)(&S+F*L~1-E0dWnZw!0XO&049Dm539X9tV)Yglb;<6l+9 z@$%TmBa@Je8_`P6&$E?Bmv*W!c%T zA)79l_b&s?AK|6pN%S0@?sJ&MG4Xa=k+$-QldegoIlkN2X@Pq(O<1y{*-`N=IIDKT zwO=Xl_sF8*6tE$%`cL{n(i~To$LnNh0Jf1v*<_5aMb8l_r~8)waVOXWl|&muw%z_$ z_Ws|1f_}+BY=*oPCWB8{k<_qFncvhol0Ss@+2==2EcWOQx@Z<^Uo}ZH4&Tt10kwyL zL3}o&MZ}7+g@lZvP;!VD7C7-v{nJhXs(;tdQ=lUW2m{Cj*2aQnB)o1TSJ5*u9!{ZK zh#p<&Yx@pCuPvW>s2i@_7769NXIRbtXs35%B;CDC$)%O4;Cf2^{fQY7`z^hRBKX5@X_IBTa>ji4vG%A4vCa5RtrnL7D!?%OmDQJ!&N^! z#gpb+50Ge?iH0n?dzWY>T^+T`T(!rmtkuRVtX*c#h78ZRirYI6EmP>)LKqB|k=mw< zQ=W5gEe%MBsk!fx*bG6HXaoQRLu?|V5`xQXDjoN5S>4?{DCho0incIlf~f{~5#3QEUpy19aJ&(nc`+uz1Hu9vcfC)>)--3v0Qos+h0y z?;2f79ZtlMbyx+wO0pFsz=mBLwe!6EoMc0%%1paa@>H%UBZdFm zhR^1}riF7sIz_F4$3o@iV#UhbYB2YdwUM6862{)Jo6xG#s`U@i!BXM)XZMHadeW2B?_0?@qW{{(IPK5BIbi+-XL~a=Ad| zhMY_2LJiH*{3{75Im4g4b#8M@@z+q+WtI{?plbN9-WA`&{fP{F$EAF2q8)e1avLBy)U~K^hbsPc-EhqWs1W6lZ z4BN!!UfZZhXK5xz@l=bp`U<-i7c18io%6Ai243+QC_9%@~oS*kOYY%E_ zmvU9Qo@k;(QQ$e`;A=?uDP*7b<#_+Dq(yhiRg2z~*lkiqVIEiXpa{bU@u9f%oV)Au zElMXdEe-I37F)mOAQG}fn7w?e6BWzBZg4THU*J43m4iyEHen|{WPFpy>!9E4scf8t zuaC!dPq{CLav@CdN|+xCJb%G}{y@a;xcFs-4&T{HtQ5z?>89Pkq!)}-ZKGH#Oa~0~ zeew7BSpphIyX&-J3}Wn3-s2_LjR8V-bAiatP#u`b>mCC0WoPK9xkKZlcKmzWLb~(a zZW>;$7%DCm==mNz+?R2nYWAc&&m4)6+&flW5iHC+=fk_nfjklb}x>TYerF{#vMZ^>9LTR{*m>3-`3UkAhrlzw%gjLWjOu!w(h!g-R>R~ z1(ah^jN#{kc%NY0_oq?`Tv}%law$H7Nzt}J$f#Qc!L9dRm$szU+n~VK*ZEM(X2dga zW)D_G3ckkUzN$rlb-JKf#UY}R(7Ms&qD;P(RM0ZpRaNWQ4W&7M)6|+Bw@&wM$~@pZs>`!!$eXf~FgU0HDQtd4;>ER`i6ORDpd7Xhe9yt>lw2Pz;dO@?pn2 z%2KylLac!SWzd!{1!i_>zJ_J>KEavHjsj#>g|*O=LB5IGSbq$>0#NhzHW%(YmtMT{ z(6XJ!m&%0&sP~UquQqeM7IGBbQr}e+VEpfK)9mz+^y>ZiWR`N7c7+ysRoB-rr6fOGEYUcAY3AHcDN?f1yq@asJZh4 z)#E>1$iD)H?r#y?;rTLgyut@*F4?P&UKG+X(QsyO{wZAlyf$Bw%Ow2a6xPi$Q!OYg z-3}S(%L>Ab-nwL;*YgBsvXJMUHz?g0#whlh_ohvG(Sm=30^*ccj_HGYE!J(`&y#me zyIW%{X(2RsXlF$wiJ$jT^YmROCclHg3ra478vN$hhQx_YUS3{!lbg&hY~A`MP?FxYQaJ@X*3R>_%pt& zvc^?ZwEWgmAb!%sk-kf7c_R7i+Tb7f(&#OqO?`9^Q4k|tPTcZa70?loJ+StoBHwCr z{Fz(`DK}gEL=3lKyuB11AF_3@-XZm|{{mf7&WGMOkZng9ja*2i$Q)f6F*+4Rs9 zs&e$+`hdhea652T`#_}IPQ!LY!{@?|(E{$eqsJMR_R9Bp+9+Vau_op=RANk4Ujwgynnwq~uPvN-7lbwVQ0L@WQ3LeuiuSS4M)jpsCxwH< zLicOEKp3G$jIOl)PNgOxQV9WCU8DzH2a++%`~Q z>TzYoE_xb3Tdit0Jd^Wn{A=k%bLGakJdF&dUFhlR;gC$1*1~XR@AceiQP5D9lDv^Y zdx@8wozcSe6WqpVwUUIDZ@rKmYGPGnMlSK|nSx>v7TpZeG^DbxKG^^YBw_Agbqa4U zRC9O`?kX~)J(QG<5$sAgtmT#RYkcC5EaOkokaj%r(?kI_faYsGsLll(;wQg^L`Bw~ zVk^92r=rXhY~E3vZzy~ItZV^|wbOPWv_tYEDD4G5@(Z(L?SKGCtin(VHd1ZBzy&?* zq0$7nz~%`Yq@q(AMA1rBv8lXir4_D#QwHQ90q+~kbj_Kpb)ipo)f0A7&AkWEJzDgJ}`^Zhn|XCVb8PcKlhJ#gJpoVfmt zoxJ(w>)4vploRUwTunX~YN^|mLjhWh){7V@R+PV88=Y?ht1N`Q|71FnF!|KZE`r2@ zl9JS+3)x?-G%=Q0BZxCha!1!B^jE8u7N@U)a{01=dP&ZV{3v1&tpj)4nCg!LkBnuS z6~%3BoWvSb$?Zg0Na>XZTSDcoVj5?iy&X(g7OHrIG7WdAxQJBhH=W}|zy@BLypc2L z{VC?6+U-G!Dn*(9y?kRR#y!1qV|1d|C|LUQ@J$x0#W3JIhCAS1iJLFnCrf)?PDSj* z$KGCQ$7WIRRd8xm2uoF3!t6b3bvv+?K$}4~prqaUC3i3zgVuepwH}q3c7^sZMk2oM z`1-Vd`+|W|nJq-M{HBJfxl2T@BhcS=IG5F3FbpB|cIM&e7zG@l4=Q41sOXD>uz0jf^<^N1?0a~NkzbSF%Ts+>N(|Ej>({Af8 z?8dt^?V1HojcOQpp+idmlj}MGln0110?A3y`FTx+?lX~CiLGv82J^bx6&ZeKSyzm{`np#ffaz_-*5XslamFYg2jNs%OG#b!M`*pe%r5C?X& zLK&J`>k$287)6ccS8A1`pIS$3HmnH{nGqG>-nuK%>+T#d=}YbUb`zx z&({LE7*ad1c4E-g(1~+FWDNcNCAF(-sBHI~yu7EW@`%UX>ux|l9$aE9=Zee_T4(;- zem2=i7!$A8SNqg@ZtR4t&T4H(Q9V30=oZEc2E>vCRc-g(8=H8XtNYOxjWtf90gh+!O$t=7vCHo@;pmB7xa2HBE)4nGQ<<2 zIJM!qSz6+(?xcu}bHWr|WV(ce+V?Ec`W`GJ>V$yvL|?)JlO-JX@6SXVSbnK0_2eVS zo<5n)*t_4?`qa6v_V}g8Y4q53X*+}GBZKfpopA9zy_sJ2ovU5#DV~xxSr6VsM~l5} zRxT_kO!|9KoQ*xp|a;1G$lSZe8*TsGa`(BCP-F?rs&_vAiigp(r@ zheJ>A2kp_n)Bb`Tku=E8oJp+Nr$KJf&K%*uL!6;&OyRWKUj(7rD`RkXjlCcEQ$Gb) z-y?*m(gx)l0-YWsF^|)tiN#a#bz6*wW4G=bG-~+QnHCMr#II&GM><5_z|8eWr3A0GSxhflss-x+uN{c8XU(752d(@v#kJoE9froEK9M$2CFMP|YBEG5BP5S-34&1mg1=gJAo zp;t$7;H`T@`AgNAWsLl3!|UVm3dL~S5jwv9cjpxgW}n{R=cTb#`!Gsr5Vyiep;@Hu z;I=Vi!%B0HYt~B2Z^Jt9=X0j)$DT&IuG-D3CT8`*V z?&0b>+>`#yW(m*ds?E{RJc`~GaHe_j`GYC~e9@%&IeeylGBmN^y=%^0&bwIIjU@d_ zHyKts@bVU0Pu0M}WBWi8@cMz1S}7z}yUI2Ix!8>Hf#3by7Y?mosLAg>srP8%TpO3# zTx%~FcR(qCpfQ|Fli@MkD7y}t(-yvcTXHImEQ2IB#%ddXJXZh{FUP|v!NXLyK zysa7W&=IewgGWX@FTwKiRpOO&pRZ^|bM191E}Gd6mV@1O1(D)v^B(){)P_#ETIwmB ztR%x6ckQcB^GLShiZiZN!)oVr){3xES9#@^_f~&z^#Qf*;&FH>vjd#lrMnme6EHlm2{uH({cJ`}|^5*Yp?jd|PmPPvMv$;|K?Rgqzru z9d3U|j!B3af)V?;M{%xhZG5xmA6Vn*q}Lz%_z2x>oc@r}K2;5OTp`NP6n72;C(!thsl^Kc#1{pP*K}&`qP`Gz*cgVGJp8$r2cfr9^AMtJb z>W>o)qj@=DVYWhgplW%AYMsgAal{EWv1j>;IW6)v@j`P@0vJ_I9aXSH-InOh#uwsPvI`E9iqQU*HYXo-_n!O-}{$JpzZ3{kE)oHGf zIl*q3f26>Gy!&hLMQg=<4<|;^cwo#EeCWpbS|FdTYJC`gfz>_kKEv^XyH<(t6Dt-w zGmD-;rNvSy@p&&k?`0O3r5*>z9bBPH(%`s4frg1Jq*bucQs&F}7JDoawtuc!qe^2I zswviUCA&}zRaA@XHsEOM!i@H0rbn0SXDe4;0E5tH>l5V`FeO9qX20>$qjA)`D~d-{ z@x7z*MMaxPbtdtzP>$85?lrFUt!{=gCM)iJNg}4n2W|=e zF{bVubo3(LTBD~qMZyfCt}RJrPmflrC@Ia~oPEKO$A)XS*Ga_8&E1rH8s4;FA${ia z_FjsM)6S!0-?_9TMi5omHqT1?t-$n7Dc5f8~Z zJWhF|lf^==S}V1Up=^G;PC=xiu4UgRu#PQb)9y>#Cyz7)T^&t@9QxfnNAD^ZS$ZWa zE-U(-(|Db!Df6)uY0Z4$@X*55Q+sq;{#qP|+z8`v{cvrWpjP|4jcH<~c!&UN!n<0O zrDBSZPwJMn&{~>^>!$SnyJAz?e_{^5tzJK@3~;a$PDEq3BJ|4pe0A{?OZv4N(|$j! z?0;~nSFT%whLUZSUhX6OiBE zpYqI~sI+v5tc)M-e>Lbss%)JwOlJN!bN64&zjW7Cz~*mvPne3a@uV4E`dIDeL$V_I zzg)#ng9bX8nh=Yh6p@!-NhjkU#a>J7xY|}DDnme)Q_jWlr%wEI&o5k2zX2gjw+*-4 zJD-PX=PB;24k7h?TQeCQ%}6f&(XCAGhJEJAIr)HUoaK$2Lw#_ygEHeggWWi zIO8qNi%fpKY<>C1NB{UWR+s(CE&KR$B%^g>0dbEm^v(Q5vK7{N*~+Q+fp%+*A!67!FlyFY_m{_fR~FOWVbl1r z+^bQO6n?#SxqQ38k$FEy5tCGYk!;FPk02e>R8GmyuNhOswUbp9p6RkW)}>_FZE5wh z{X)l+RPcL~dcVX4-6&Q{At2nD{A!%8_SdHq_>Ep>sce%(;-Oa~Ik|tgC7!nrhX@1T zjrAy4=KF<`ic0~UKWWC!L7uR>8kq$) zCLhXH;pX!mcN_xt%5PCluB2KAW7h?uFLLxW`UiEty{ev7QUYHYf`{Mb=H~PC^c--D zzR2E_0s&8Nr#yC#P6~OXePG*Y`>|gNO+hBV|PPLgOf_n@KDy603D|hhB2(g)Pzo=RNt= zy-TP$hA~Sot7Q{r(TlTp)V~xSfyB;^9yRnB09P5GlCp z^)}VlvNy?T>>xz~{B$ARADh%81i|eJ-joX~TQbC=$OLz5M7@R$Zi+$SMd3^Wol4QS zwU*W{f%RjeqT-z9+iJE0r`+klVJ{Jsl*sPV`SxjH@C5kT*`QBWMFoFLm-sIf5pW*` z_`CX9by6Ea>@yyQ-r zfI@U%6eGMJRdrs9q#NuD3B5|CoFr^);JK&nviib{WcAFL<8uUyRrm5hWs8lN+d2;g z31}l}>5<3I61U?+A=L2}TC9N3A?QO@PJwOJM2S(SrD_lC*|GHD8#W;-y4y^S8J5wt3ThecLsf z#AVM;Gqchxz=rKAnngMbZ6nn#Y(i9qOv*0PmUjReo3TtN3)ggnWnC-Ln1!B)aa(mv zQM5SQ^@-IHn<){>(aYH~*rdput=~H$UtY>%FMOkdQ+x6zfwfx=d76Z_zmRS4wC3f= zs-xz{!GV{~^#Q#*-HJ7JUuSRoeZ+Ua+0|9}9`t&;%#8tN(&xEj&?PLVzE(vEZj-@# zbV&iiiiQ=f=^!)v>c!Oti(Br+op}XTsp)|rPeQ!5T3skEB!*TOvHreG5=2V-GUlHC zOETTk-0)8Si;PQwGwyU=VXHbr0);MYB$qCN3S4`hCJ1*JoOyqs+BRnTX~uuBp*c#@ zQZ;TL#c}%ebr?3Vo!w)*LRMVg08&R~h5RSA>gOVSa{21JX;#UISBky1M3*pB_w=m3 znk~r`nc0jLhd=Uk_KQ^1GJcR=Y|^ScVllBzIk5e{(Ldv`7Q8RJvlWllc(P!+{QkPn zC}5KY+Ai@Ok#FVu&E_V8v?7QD=Fzu4)y_GDs*LfXQ?I|%XK%)7@Sg?HNCx)p-vGMFcv$yUmE6e=%@R!B~cfq z@d$Z9%jO6+H(>3IoOKxf?CcIX5>0rQ(Oci2xusW3ot#>X*nY{{Ika~LtF0VDU(jqJ z-n&=x92^{T4;TbRLr3AWqQKB<4F4{Jeuak<@J|8V=O)wF(2D!Q0gtNlH7$wwrio6! zyT-qIwKrFCiX$#>JC) zawOa3>=WsdU=m81tCS$z*wZCZoK5*f{xzR*(*enY_j(Noqo+k`&e#Z>l$NIytR0O? zzq40+QX(sgjqjirof1W#UpG#3*RipcYKG45>@4=Ue|ZocOUlicAr~H!#{fM^sWLUO8>ixIu6SQyZjUJK0}m3ZzaxJ?CsLm2)5E>y|LX%v)1QpLbk5xa3+yK5?B$$_)cZM z`|U_V=k7S(xtBtQSA;R7^r97`UWV`2B-IV=O#w>7W@3VTTTk zNQx(RB4Iw(vIucQoyxwLKc~39j)#5FiB8I1uj1bAF3kehF6YPHu-_%$%0R4YkBU^; zr{7|Ac6c2z(&ghs#X5JbCu;VJjIJ(Wax>!ISW% zCL-h0qZm=lMKXr>*GcS_A=%fLa(W+3$6l+^)VFF!56N=umAE9kp;Jv&6{DnB&Z0?Bg&~1EkpPUBVyj0y?JQF~^r}WfO&3I_k8$oLR3$-c7^Z zEkj(ON*P`&x2P@OY`_Axiq!io0(cy>zH>fQ{hV9 z9d`E4%L};$v7p=ZlD1VAq0fC4Y~!vuQzcms?I}cMf9_hd9YTe@%Tv(fZ!X&ZC|>v; z7o&p7U&u@Fv65t(ZwqxY`K(&S7F0cuF=&$0lQ=}?x`mF6x#boWr+VEulVSQxsbwFN zCTn|1mB)Ppp|J&!U_fE`vy4u@N1p7lgol=uu_F=! zOcE7))5x^ulLyv+phg6@1LU0S8Oade=m5pQ){`t)>km1J>ZOgd9jkg z28;h==t!p05R7K^xf?8!f7l4V$SvZYTuNpq`Q>+7L#{?$Hja1OPTiu5hwtC_IK)Qv zx&?tgZu5FLb{Z>pEe)!m41^1Fo&@8yhsXy{HHn@tP>T%*VvvK0kd+eri%>}o;iU|g zdX}34MchF26O>xH;dR%~=*8vk-PL$|jyr-f1xADIZzI``ZF`5V-0b{V1MC;{c2OXs z)T>e5+ImugH{7fm$V6@Iw(MZ3Ms3Z8m^`|r%WZv}l5(X+V{*ykvuq!8eug%1sD+(Y z;IERtUMW0Udr$0PaNXFW*JF~s{!yedxMhyo*FW7bDSYl^Ni{txx+|vm$vV2Ufpg;x z<%FjupP{xjTeLz2kV!F=-{7mHd<+7CDss-eu^e}K!PpJZUD0M&s4<=HB_nSldAq4= zCn2K7mWWw-b4g%_A%h*uzO3hOUY;%wR8*;UfdW*3Gdh!t^x?AkDr2A6Ly4T@K3F~B zf>6kI=qrEhV4c%|X1S7lCCYkHMe$@c&a*M{`TP-$H_6H*DUQTM> zy4B~72>a*_HO5}-ftWVR=RY*3tDIYdiKr*9Y%F#qy0F&~l|~brKL2c93O3&V9Q|zU zy;P9b-nw}dnRdI@SP=IJqF=uo&yT9-CnidS@{9Ft@(eTo<#(8}O3^f5@|YRq&4LYFAs{KDwR~y_B4) zIysPYWwA2DUsm(S6tF+$((7KmRp59H>-HSm6G^q3Ux&Qx&W@U7H7a7LDsuF0u)b|U z+>tjoCZU%c27ucvSE!`=%Q!k`tM_eKJsj-@vQP6O)wW0|GOOCQ)9T%smmFSsF*Zq_4JTs(t<2RVcj!@H&;>R4<29!Pwc9By>CIMD&Ja^}N3(1(i5b3W=ZLx+rdV|B@*+1fsn6BJ|W zrWi3$SbI@Ho`M)Vlc@Ljvbv@jyndvTbnOQz{&eXVrjoYWBG1<8asvqA^3I-l^KU0$ zG|Rnv=+sTKK;N(o#*KB#AFU2!n6%#JC;sw1S>yevgS9Biyq?7U1d(Sq9V0ibmiw<; zlqi+zXsIqgdQPEuOBVI9j@I6;t~V@MY`WkyQq)LVG<3ascL>Iq>b4Q3Oq|eFrKpf_ zJJSZiyi}%VH@)rcT8>u{_&8oEeRUcSW?$&oBrcNTS*qzlLO1D#sMDMC9%i#5BE@%c zI;V&5cspUk*n7?S%Nok}6|F^|tjKW3^m@EyDrimTNX28OZ5sClBH|*7?xnF8vRzhH zGiD?S*UeTCd49UmN^SRUj3R?S&p>#z+9icn(pziTtg4pCMWp@(TMIexLOsCS`G z4fXz^y+lENMiS%NJ4wj%FC8_jC1gKJaU1GcCv~lxE&G(cg+AY zbtM&!j}Zq?p6Tf&Z4sBbtYq8p%&EYR?LYihh(Jv3E)PhgYalrzx{}?y)VSAN%oOR~ z4t`Y7bKRVMz_uN+Y;74T{CqEnR4KSN0_yNYJ6&mHbzW;WWvT0!KRQMz`c(Y}T&JFO zm(nH+ND*&5GpLiua#`$lvetkIICauB3f;6+9(%@Za~@Po*ryA*l2KSQ0Qvhz#;z-ly#?C0>sh4OiT9EHYoaedec#QFL`+CiA%2hLMIsGs32L;a;j$Uvh z`N6ZDBXqrn7ci~%`&|()prcx9$ymO7Vg7gG+qj9O?B+ny&{ca>^>h~UY4t)bkKPi8 z05sJHcTjQ15k9F?Do|I`!>wtHq}qE%7GSJ(s98Z%vnm_V*!`xg;=l@rWwh8Yng+C( z5-sqkKno=a-g^oUmw&Y)8}~qS%C>cMw{)55&Ec25w!1L%QY}L_?0rg zlBU9AQ_-NWW$g@>V;vrPmp~-H_XSxxCHgHkAalq5SXuKUlQ$ZFe|?}ThSSjEYeJ0T z>s*n1ba6wIu(|IQsHdWi5oOWNjsoS~Aih=ri0BDRhEE{|ony4x5gz=|)GfE;?Gl!~ zCBa1Y;p_{0Ysk)u`v(!B-iIT!0zaLkCC;d9l&*katoE$}K!D_`d zx%R6w1d0OA6Oa|C!-{@C!cK^A_W>mudVx~g)=sOLJ}W(XLA&i>3oDkH5F%5)xoS<& zM|S9_mhzfS^x^NS{T|Dk*O#o8#;o&Pgw@j2k?MW$p$<~a=Yfp5MSFu>E68%3I+EL> zso#x5qu|Xu1qB5?Q3FGk(of;{!M$X(;^RQ3+gM$FSKR?>wYqi->GNgbo2qs}vg=%4 z>@)g`ha;nU6JfStjcr{Un^%vXv;~f{4)Q8v-|NSh=Y{6TA7QxbxRHBC6W)2N5k#?(*SwSM0ulW4p|9 znO6WjE%9!JHSZ2FQ2|DW?PhyXrOjBpd6(w+Zuv>*b4zyCPh#pfKZ`jZyjhus!#E{u z0-lNi4CdgQ7kNg|b{8I<*oyXgB$cg5aM+zy7-F=tu0@L3?*&dj+3{ig^yU5M;LZ zn5VY3LVB=_3WiCdGZbc>(Zz~OTyA=}^(rdad3JX8`}1vKr0{s*;+>&jcJlwn-g|~M zm2UmRqoN2XC`Aw{q7;!5k=_wRklsNcAiaZ>(2JmmfHY~+dv8)hC_(AH_bR;v2oNAZ z2zj^XIWyzTbm|e)VUALiw?oOCU=_h^a^Y;)4zTjN3Ncw zgUqVvVQZUp(RyiT^`>2FZYkCeX?uwB6vJAL9;>H~(zlhHbnMg=pebqn8V}pThsWBp z$|tI)2?m;M*P(dtE)r?&uf7wDJ%H(J*BS1VuR}BQm7^4`Qtmj_Nn+OZcZFfeSw112 z^qPzQ%2e(miW zbP9+|kZw6;bR$(=enzq_d${Rn*`$H8f~w+LepRapPxV3Vv3;iG`sQ} zZuNUM<0bs+dHO#R*`TZ{+Qka6)R)-@-9=^Q+qrt$Y^DWDI7xOBv%Y2(#Q6GETVL$g z3@dzb!?nDy&AbIZD_sMzW+A-PaJ4}D3VS=xHj|bQisl=URj60qKF%Qdz3NUvyyXns zq6nLBvfDJluz{bCYRR0eK0mhEs=7OxaAj~!y){+DahP5I%T%hxL$23qvKngx z-{0YrB%Bi6G1VCH3`SQ-Co~c>ma5C%&qv5I3@yZJ_d*QeKuDpb*K3EDZB1mW)uks6 zKblP8J*I^D0H7H4_Tf@nK3{G|-l4MF=p=6akU z2RLHu-&-GgmT0A(`+Oql{a4Sn<@Xdla$oYD6aN%Me^aP{r_#NqX4Vv~)hg|g`r`AW zfijb6SAx+CR_~b|Hqm!~F}J55`45`O-I+ zeA){g(%2z}vdV($w?E5185abdHgP#+5T-1x)KIuFhEmsXhizKa`V60c8OrL-k6Nt( z=E0Wk3z33C6sb~#aypg+4HwUHljCiYl~3>0u;sy~DlN=bdF{5y5yo0x3iDu2TltP> zr60tubpU?K!C5YBTbVqcSEm zCHcxSS4G3@jfy3xyR42-UkF`Kk4&q!8GHQn1+n6-=LQY>n3Cw;@Oex9+Fz`ZUm|TTH!h!@Lh(Ghs~A*M;qMe1w^5 z@zPnua3ryL)|l@#sEBeVBrnAvwMpbO@1kS|bUd#_U^^Fec7*%-tc%2GX7lR?-~Yr@ z(>1UED+?Z?YliDDo7&u&*d|=+st<-SPF#Q=X~H4I)k=8}|hV z2obEVq{nd-D(4KRYo!&tZkpFy+}1anftRn|+_B)qsCKL5ru?Q^Q|!CPQvM9z)zljOOA7(G^yjyrtRhka-(bxv?Hl zeN~*Z-Z0-wvzt>EWBZTSpR!y^dTu4xw56WOTn*NqO5nEWWk9&Q6>rs=sE_6;gU4)2 z)Dwq+QnzY=ZZdJwfsNwuT9=n@q<*W}3~2u z(J3F2vz!D)oLYrwb%Q!~1LsQKR_8T>a;1ZhZlsL;dT=`BUT?fzDn&8YIuh!OE1|v)yMCknM&r$#fnZk@Rd}wD^-g0Q$CH4 z&6!Ln&1ve)T*i|%o4Fi0b@kW4c)#{#4-arAITZF}!@5lxTOr`TTH#}Y;HgT3ZOa7k zH%_a$ix$7Pc~>HDBqeG1+se~iIW}2gK=s?`_Iuo<$O-i6hNMlu*!A$_mF~1tG#0?x zC|LI9|`}taQf7%hox(!9N%&V;>jyCvA}eNqvEmKgnw}ye_?iiVkwEsBIt^T!x7&H zCh1?Y35OUc>02~8PoP6X5?^ZNHOQJ$79shRPRPcTb!1d~euA_r8m8|3N(CU*M6CF_ z?I3pOr2P{uSs(XE9p3S-GAyZxa?WmRNk7vjz7(dBMf|sW?l8UStb-vKT(@$-82ssk zk+13(8E!i5e`d5S*bWyQ$rar^{F^t>?#{krpj zAQfV~lp{IUU{)FR(FSN!x>l=*E8Li>%(Jp2oFpd554%z5R#xS;91_dcx1GRk1H1cJ zaX&LKG?R`5bdS1^`^qoW0WQ-^ZVgHy55e98@(5ol%axyuqMWsg zExY6MqJVV|Qc*$zRh$fD3z_cK@;|u4^!7=av|}arAN=+|7!}&kZ-5O_gy!% zK*vHMEmgH$5<#j$IN2N^$&xIh3TZyy45S3>js*mG$15$?Dnh)@-Q_e2QiS#`WKsWu3xbHvl%dPWgTBtUkXKl+Qq+CsKA& zz5YEnZLn%xb@1;*xFyT@#OT~TOWRrc)zlkq?~^C%bwH3{gb0^dw6Jbc59H6+nyp59 z3)J&^0bfW_Q!}=pw3P4kbWR~{-bVpB->6`r7xXuc48)~2j38%eo{6MOr$Ljx)Zq*T z?D_-0u&UN&E=}-B)}^M$%cu}gRSKawV%xa=7&2~ZCjax$e6E_J{QaB$hr0g6vfqR$ zT)t&MIvKj89S76>X`O6u{1p)*KyrO!v&ze=m=|SV)6NRo+=Qr2dAto_ko-3$ZIJK! zdr6U_N9UHG8S;s=Terq|KY!xeD(tMg!vgSLTU4dg-%%>HL# zMy()0lCF-kra@W9cwBt1O8an=B{mR|5cG$Q#PQ;O=mDp^}rin(maFgo{;<@bQ0fwgL$(*i=4p2PY+B2_@?>W6zv~0`p*yj+pmL;1j(Vl zfr1G$8yFwkHQg{Wm=S+*_+PO-zuf&5FZq=L?F)~WB;TXE-xB<>sOc-0@H}=FADJN^ zHaBeB>ikVc{;%-JbZLV7oi?hoeKp+gJ^DVxefTxx`#WmyKhpZ&iyKw`jmrT0XP^!#7m{nHw>6uE@w9%eC-3Vr@% zA~k}}=TD~kl{0=J<=bx_&m~Bz)p0yPJ*FXPM}{umue+$5D6t+l&w%->0so&F`)|Lx zm;#4F=wQgq_Lo=hBueBdohR0V=_Q2zWTxNmv^2l$?Kar^*6J@g!gYz?jOGQunW+Ct zOdb}0P7iN=2PJsb%|G`4kLMuqPIl89>7Skb@{YkMg1zjrhxFj~U##fCQUdZ7H@gXJ z9_p7>{(i{=x&#-tG=NtT|MCidX9fT_r@v9o@hhPcqa-4l1I%qxa{mL*SpJvw-0wwn z%EXudJ1X;Y^;I^PEvZ>8wA)=!79vf61hq zKTsJh3fi1zDofDKd-W^%{_Q$UKlHZ;*HigeNc`eU0GD<@(Q`Fkwi|bU{YHg6rS?P6 zt{ow&Uh>Kx*2OP(P9m?@B@DwGXWg#-_?5?g!<**x=d^>`9R8`~f8KV>Ur8%PTWz!_ zSKUI|I{(o4nkiaD$&|qKPCZ*0Z19Y=Ja~U`M9_@J~x5%G= z_9vDEj01eZ$Q!?`F@2eAkP_MGNnWenLC^8?IM9q<8xQpApLdIem@g`-H*Th zT4e~F)&KXgzwg3-74iRXXaE1s#^7m(iA_N~-PCVCg8&s{Hhra{UX{Dv8i0viVfzID z&!My`eNlJ#(@I1NGA`v{dsiGy6xRDKEuv3Ueo+knD=YlwU!wrX89gzf!;-$+I`xi~ z9$T>Zt!?dy-MNQG^Ga+#^y-YmihjPPJjXn&3#ftkbWbz2D)H%`qUs+G^B+Pd{pL?R z^#>ASu#FeqF@1h9R6Qkt8rF+H#%=CArQLpwUE&ALbpZJ>zFj7=p$oK}j%MZDQZK50 z2SjB6h;RKtCg3R;7#NfYk^kQ|?|-fMtFUq={6^zO^Y~_Rq(0t5(*&i$4HwRsqt^LrCDj}v7GX{!^a)jxgy1(5VuSR$%Wv_l{ zvO$VDZ*Mq`2$of{-V+jV?7%0c3xDoW2=oIde(w>S{phEP8uY|Vy%_0P3loq*Y5NFSK$ZuchvFRp#-vrnkO zDSiSPIA6sq#7-*1o*i$F^Z=82MBA>0xil!)CQJT23mng1Uo4sB7H+-Yv~F8)&Q&gO zE}L=PetHk8Q7g3kB7!G}$qwgZHFOYb?zj4EW@1UGW1NP~(0d2syrAs2nRqeFB4+!7 zn0}n5z5v=cZkpbY-CkUv4!%N>V%O~!jPi5=x%8aBWd7=XB=peHpe$8%R=!%uZ7W$H z7Ap_&NfClfZ#WOZUW^4tn-9Q!jy*ZJuAa{ISHqH_3ub;AE)9j<;ma{ojc!e%;`RKn zM`b0mBu*bBrT^g^TSos(es;A;=1sHtXLW=pXngJ+y{QM z5&_f4aRwF0fvJ+PFLGx0iIe!|SXNM%!*~2nK}fjVPbsj)aQ}9?^;$Dl*ZM~Nb-ffQWvf=DJ>vUPjdo$ncbv}- z?>e9LZo1?Ui)kJyza0xcL#+`oHcBta% z9)lvhD6Wp4$D`xF*LDD;m?rmMVezml3hd%!zN+&b zTa$QhpYo5%{lc{c0xwy{HzG2}a*iLOjUGr60{rSK@!DBhu4=8m&Szq`c(Xpu!wLYz zs$(lM6hZp?SlPtgs&FlF?2(Cm?0XN`d*2`F@y3TA<0y0HJh5Z_VJep&2Gb?6!JTpM z*4|UZM9_#;#XSL;J}IQ2>eZ`dq&@~a)D5k;A?|Rbfw&>GX|^}`?5EbWZqkc9(u>vN zFsyS5J8gHv4IDk|sB&Ic>Q6Y3ArZ5^Mndztok!xj*GA`U)PNxlxuH9@UMR=*+k6!y z>2%Epoiu>!lj#FmhU=L&Aov|1n7g8xn}H1+5OK@fD%=03vnu@H67tsmD2g@ci>=AF zY^I2)gcjkD{}nk!bU;8W1HF)UD=Y?5X@!=vn`T$MN9}YmBz3X1rEdP(s_9yNie`$y zBAo=Cu@Qc+3OYDsUs z{dOwzx+N~=dRs(;aYz4iqts#fi}R=sA6_)w;Abo5>g60Z?RqT9wqYVl)FzAK_=M`! z_<@ya&j(_@v~yGpSv*okT^Wj;-Ffa|&Hs{pYWfD_4>biU?yUwF*HYw(fIzvpfdVUj z9Vd8t-meU5zhDL5Z;W|_OzZ*ixiy`dqfeJ-#67?D>Q#-x-uPna#mVkz9%PC|dw&-i zwd$otT8LddL&Kg+j)1W1Zl79P3{R1mUjB>I%C4I{js-L*@`o}!SZpTKF23TYcWeKk zcG7Q>T6!rHPv2*(!}I@eD_=Qzf==3lMM-NW$W`2t%3LwYmNQ9og#A_dbVH4MfuLpJ z3$e4qO*76!u|5TA{%MMrvWGxB_$1n61{bQVo}i?AW$*`F*!jxwMH$vsa{5LzT_x@Z z1FD14fJ+#tgaRrJ$*xlB`cEHe8(6=H9oxyTY_Uf-vk~=`GUb=qXlM za%}e)HXy-kgNs>f87!$T#@q{&v!NCVfqX|Pbh4>c$=q4wauUMotfoTg}u9u?_I{1wdH=LIIESU8mCRcX^fg^+ZVTo!t%VS;-&>+}QTo_mXC zyzsM?Ldd;76llPC8w+z>JG4R_Ab>+8Ie7(Sswnss*pJ6P_??`5 zh$7P9XripBq;8y*HeW31Q&p*}$IV;vpn}`%$JMO1N2zoXk^b~$^TK?Zw$7ZUukF)#rdzHHD-jJ0Kg zI}U@JwK%-%2=us%dZfHF>oOOs^d--vK$}y1NeAZIDBn^{f8BfQAu=L7L;qyA_VgO6 z+5z`1r+dyq+-3~oeNQOd_Nehm87tCp>R40TBL|BM5i{&&{hBeM58kQxuh6)kN<#b+ z5PZW?Jq_TKy`LmdCK_@;V}MZ^AWA#lE#hhNJHA@!JvObo!ZeJ*a{D=v3^2VoJAJ53 zMUb;p-cLy6do;6<1f6qL_l}L~NnDt4Nb~Hs&3~y%QI5R7HXCY+PDw%nmda{ff61?Rg_247@#recq zpF=}`_^BnwV&+!I6e6RFM6?%;P{x;3ZZa4FWGbI+!4sexN2Yuj)vgq(j?Wi6N#6^0 z@HFA@PwBss6JJ!(oRmFTiG1taQfJxDZ|6 zo6lp4VXeqynu}i!U?6}n+Nb&~UR}F_tYv!_lPrf@qi@>o7Q>d4m}bXdkCy%31b78| zdn=>}%r_uYg&(?A`<-t=i(lJ0tPrA`i->yV%Q#%d%Bt`MbngS)*WQifg<#R{^Bf4 zsda_TZ@Us_92lv&R)pJwng>!aiyqYHW%>rAO8E8d{N6m7&{j?s+uL*KBP#263y{+k zcpWH$#2^M>byC-k`Ee&*5%nGe5^3^`uQ5aKNMPg{_BmMY8A8+oE*#1na_LCw!-CjR zvCYgxJQd(E(R(3< zOH@j0Cg&!Rz_8g8M0)E)1#NOnVAJ#Et(^faJspAmU%L7!}G&0*rt{a zaWu%6%h7XgR(=*h+wS5Uo??^}DAzciILVRVKk5geIo-*TiIO{` z_Sb!r7m1-322`+x{8T#ko$2}khtC2>nIeMS3e@85kFevTUCUw9hx_L}WeHe(;KOGyu*8rB0jNex#NZ6dnJEQm5b00-!z8qkt^6D zP<^MqV;4L3q}U$1JjXc5qd9~n>0u1>iGL71P?l!w8@tn@=g>HGj3Zs2&cn(vo{Xkh z=XsTW4VR73T+huQYu$U-R&RohUqU2I!?Ai29eNlY))8H*85g{2kx zmJW>qJsNy*GAyOhdOyB0yz9-Ww5Sye!g_Rt*eo%0JOg!)ocb=tyj<(ovwz~ya4g5| zI{GpH>`Ro{kO((WoZi8FpG6>8g`7K2$w|F2zI}N;LTq=o+`eg3h^2evOtqXR!iLY* z6>^P4mdM##_?}&zeq-4NlZ*&G=||DymC90mNh(mYZi8{`>0y&^UviD{a!mBpvFz+B z^k^p#DdP(kn5#8Q($h%79lc8v*w@>5!@OUUth~IR#FEBkSY^e-)E%v2U)#7K=fbo< z!{6lQ$9NFpK*?FQ(7;5EPQR2h^q4FDx}wQRSDBv)9J7oMZu0I{6I{D!4r$^kVT*a7 z#TjJe>~-Xz{MbWV!6hBmd}y_^sYb`??~IpeL>1<#Qks05OTZKLllkJ`?P+HiSq& z>P8(^^`$4mSxe5veRi6X-3>%m+$YLv%ZeWFreO~J1eARB6s25AL&XkHqE%CR%$41m zbH0YZj};nlnf2~=@dp|VGF!5X(hV4y}&-W!Q`f6JRan)LJ5cxNgF7!o=RZ3}Nb9iu>H6h9rTgT?fv7(C@}0@=)moOkKzzkg z85mGfPR!y5)Qf#pIRtTVIlxw5U?Lle^x`6ac!^`p7~kj_(T5X%wd&j=434z_TA(Zy z1ieeCP(xxxA3PiY7r{Z2!V!h}cXx0@;v!@ml$4Z$jymXo%i7G)n9XRGSGQm3+M+)~ zEKVz-3wQ0v(xTK;@YImC%WJxu%46bzbg5okW3!>=(j>*pc4m6MbGfZIM=s<(=D9SA zaejF+4!hC~SzSsP@hBf}ZElc!yG~K#CmK?pf21hF2=d$nCRPv?*$NGZ^KHU*zqy_~j5BGce3F zy3IvJnY+hPXl-3;m{xl%-Z<~xN5MBXcN^81cHV4PXp&vg{@gj4A20=2=gsCAyvDLe zG!srl(8D%~ym}?k5p;xJw*$Jpt@-+T8r$-M#t%-0R?R1>8rLSvAIBG}ngMCI!F>W- z0<{WdYGG#5)Ic;zu#v&5uakm?u_W|&p548jT@ib$I}b){H}bw+%D#e-pp5W9-AY^& zC&>0*`=@uEB9*+xl>S*|r@aWo?{R!lG=XlqxQYll4mh297*Q|gi!6c&YZTB1wi;v* z%>eC?dPUu4m-L~oGw4uj!|^X!&1VLh(AM{E#=U z9`If);*?%TjTb2H)1K`in~kzcK*uGk1*bRa?3GH*q~d0w zAn!FYB?YED?m(J@hL2qiWKSbe8P7N9Jtt-qrUt+F)9zFnp4Al%;VKP>`---$5>oYAo+%W?8npUh{*Wd#szYLyc)M4(BL~tm?DHZC2+N_ zR2%G|+FY%yUEKP*E){~94Jh7Y3 z4NB^q7-yD=fl9LWPfqB(uO#wX#eBH^IeJ(o8z_Mm+ya{=Sy?;H<<~bUZ9FGkpM+ZP z0G2f1*no-TSV~bT|Csf0xpoO)x&}PPPK0GS?3JFj_ZmO6QrwSnoSu91HA^G>F1g4HtPm79GJU;$i7C) zTtk=!1r1pZG&9@mUZ%)GX|v6WH2McG=+lgLRN#S6p27@Q2;$XxB7slcC6xWdnl4 zAp{T3>JNr~RC{zztGZlBQBuV%2Hx$In9Qp}ib?uMBu|MQMWGXjE@!~EN~$-(r0SnHL@Mt>#28hg-4!#?_W(6tv1MpEqbi%MZRoC=>!yb~O7pQYh^a%*L+9v% z52_5(gd4n;hGUDc%=Xk3>W$*{7$vsj?X_^#REiVUW+Ar)-%3?Xqvzq9C0W?&+2H9( z;J~@2i#KD%0jF7pbA{S>HXsQ-<9!SgBTtbbJw$jPG2pK}*%B5r0*fQtV(RWJ5jU<6 zQ!e;&st2nuCCAug?UMLmqR_%oxo%o9Uz|d)jxuT|j!Hs*(R2G11WpDPaK9?g-o9!C3JSSalw)NOhS zUfGX@G=3*B&wP>a53Ps%QJ;b6HR|9ix8-%7)VI&Ir|7CEk9KK!i^-EbEh$LSjulpe zNa(}M`gL}#=zGnHL?wupUk{EuAs(%pBts~pA2F~VzA3L_jQya9h@Z$_mn#&W9FJAk zb8buZ!GJ@w7vTCQpHEJYd>>E1md7u(cQ8R}o%PMZmfp5dl84G#+L$)y)NZEMj#|~# zT#FyX>pi@&m6;LPajUM53Qe2yV)@g=9h%U`ye$fVKJnb3r;IB^{OmX;$#!dRk^U2A zHOgOS4XP|=~MGWx!PkQ6Ztk*C{;*YjL>Wljg1sTHHak7;0br#rOlegJ(U8>vLr97$>byw>8T4* z+(Z-h9obU^R!#icM;WW8822Hf(C><&mrEKv$S(WubcX+s) z1Cg{D32t{&cJ^Ws-OzYPDtOiV6Z^e2peP!?9IXm7{~pS^9H3Mp77u6KVJlErFIA)H z;Zj~7wGcb@-*7IYnIk__pb(GO@I9P#RMdCRC^PKmYupVPtuAm@EeNFdI}?oeJ#oOT zvfW)8@NFxw0qF@Vs_sgstbVuX(VvNpJSJK=uW@D{uf_n!nvL{m%}G4crnWU>pGrUa znx0bbVg&or(SNV(1)!*?px+8?2hvRXWElpx@jMS76}!=AID@MdJ;o*@F}iN`O(rtx zBorjHLZpJ38rK5Kp7wVL>kMh>70-7+POIDH3>DxMU9)3i#+H!iD~DsZ7<(il2)hbH(8Jr*A(T zYtw7!b0NQmMK>@F-PYL!%e54K44u_CiW7$$IzssjMaiF_L9C8#qz@l6${rNRgP--$ z2TxG=Y`Hs(dIldbW~;ix?Z014CEwRjD3d3cs!9%ZH?&%z$k^+n7(Fit^;d&?WyH>t zkQ?uai_79=kCyH0fFE8fMxgv_hPXn*eSS#fl6M=tKD?GxA;4Nuy))I-^@Ot!wR0l0 zkJ13THM|t$?G97oj56AA4nk^goS!5^(CYfe>QH8%xPwoc7JJ_=B|cYO*bjbujr*Rp z+Wn4!dzw}XhA}nhMV3^;^S1IOst6pWtwkxa=%DHRTYZYe$i%*JukZH=m2)A* z3EN33jxDOS3MAJ!gI<3WiP+iusF6buJ*Lq{ssl}pxPv|_5TI}XKxwr*nv&nLB*Tlbu7XD{8>mZ1G)sJ;%!UYiitPNRW=iY7 z74iV{bs|V@saorOz`M-M`CuiXmp(+$B4zjcive`D2%}ud8NS#j$T#2oF#U5c%FdRa zA9dx2s4bpd2S<6ol2_0>YuGf62#Qc*M%6_wkJ0ikyr!!lS@+RhE17YnYGjmc93>=f zkcx76#|juFjs&uASJa<-KAYR4b{rq46)vIj3?v(Sge};m&k*1wpA1%Ed`}&9XWql< zUX8}dD{kYHNJ|55wC?w`c?)06sPniL;>&3S@}g58vPt8N-hoo3#c3SzjejiQNmFdd zgzQg#6|6?u&bV7h*yW9GJ5?V@^6n=mK}31JNnhEM(GLV-1D9MHktf$v z$b1rV4U%(R>cyT;wk2o3V{v*)%^IYE>kUv-dg_SQlGReDTZC zqp6grwt@2YW3vQ^kCITlvM$#vkyP&sY1C{_8EnaGw{}c{j-NRzgff?zfLwDw_A2Y8 z*;@$0l1|8iQ+Tq^B01ajS=*~ALA|nG+bg>0CNyrgI?IN^6hY{G4m<;ue8O+wQw%X7 zHbK?IR9bj!i&2cfOq}pp))PM|uQ%Ls-p?y(d3`?Jx9J8SJ=A#E1O-EF|G~+#MmUhS0@oU)YE2;N;V!DH}wa9(0TmwdNnK4do{w7fb(8V?K}usyLpY<<6H+t z%l0iwZ;TrR-x?N&w}b?EpTyL|K8~I9k#fD<&ZDBJtv)?U+%m|2#JRQHiV!XVCZ-Pf zEVY>Ly;VSSHz|$SgAo^?fwR5>M>Mp+0TqBA4)a%0C9dD!v+_rfHCokk@Jc@D>lh&_ zDi*tDz@CkE1ifC+f0(E~1%>aSt(k3BI%w9HD10zN#~Jl0lujXv@oyDt8{I5!1bQ*l zFCJsr0rTvoH`XKVQE!o;HdEneL_%|DCXcwwpoF4zAmv)y91TKPteU!zb+VReHBskI zw%2%JyN2}kv)_9G9Gi`g5-D^JA^AB=^(u@ZE^|EvN@eb{Jb8m$VL>!hl}*qN7F(?CK<7+TE|nE)_ADUJLk=Ak?!eAG z_csARLcQz>dL0RyAxKz;IKk*!1ADBcfDolFB2ixG!#?)wUkj`MjV$zb;KJ zh5iN=6CSnnYbeFgrgRmZe~Zj8r;X^lpzy%JP4W!6K0bE|TyctsyFd!OMmu7fgtO9q zvX!klC>Nh3Pwlt0icka5kpdgUjM4*mVIi4n<)TCJsr3`kwHTIK1HBR%gR1Z@DAOfVH2h>pWji$<*{9f^+MKgpeH###RjP~ga z0PNd&|CUlQXP7T{xE(mt6o~)s1KO3sKzqWJev6xf&VKlRxPSH(VSgy2F%tZ?eg-w!6>biLB)ST3Sgz z6*9re`V2n55Pha?!vY~cxoA60D^`Ndc<$>p5af^@XLffjkA&O7n=;;T!b{4cTea7# z-Pk_W4;7?T^RjxjplsK7t8~=u+NGAt?RdlCj^%0eel^Qv4)Q(JPy=cckuiG{Or|f( zk?1V0hPJ+!A6dUZp-9Eu4b%F7z%`rA)Pv@+f?ZT=@U@4^M? z#$nc#vqL%YPjl4SzVg%y<2&`4OHWGdG$tjv8|^$L=sO~`VLX+-uu`kE`OTe`Y*%*K z<$DX9E|kM{^ZxlD187E%w2zwcEjuXh8`tjYlzGwN4zaOV=b!o4!dLM^8ukui4fnh9rjJ%3ir5p4 zJiRbXLK(<0j^>Qq$;oSZ%z3VXlEL~r(aLPdwTmbnn~qXZ`=X(TPv@W&1TGqa55aE& zFs~c#`O=fhdl-RrI=CZ$w`@ z;*CC{Rd27L2pZmna|5~i%v@vATF-Y|Dv1J}eN)oTgkCn+?|o^X+o)=!M{XP(auNA4 z-oovFn(e(n!Rdv$5^ExmmGI>(yQT8-53h!)2690A*!MkkbWMAG4)uwq zY`cb@pY}C4`##{i69Ot1ckf)=itoXuKYDh^%CI>==Q~^N_x*i2 z^KK^M%!K8SB^zzjq_Z5BBQ5KH& zB+EG|Z}v(OqG-B7E9}p%$KllLDJOjyjpDz#GE{-2u|C z_@j%WA}-}H<+7@`heI>D=qa>ru=2-$c>ml&ObckhzU7QVL3npaMO4I`&#DCJYA=5{ z+DdXLLFK}I0})JXgHkT^o)U&&@D61H00pOwdFvJw5}NCMHUOPq0!Mk91)+xI|PDu4fqB*meX7?#L z{o^rvpK=p)s%$aE`YJkU<)e053)s6UHS|k}p@_&kpbFM~dp?O&Gn`YI2nF~SB;xxq`<#Yw5v#%-rDO%c+R;uP%`eBir3iS#LtsznqnT=-Va;m_}n z-|*LIEhQc@)?n#kc;hVhDRJcm%biqY-mSFGPQjEVcf;|pMQwLhA$KqPF;djAAK*Z3dD*Wz00M6b@?21POQQ+N=d?wMH z%SzU67PDISW|+|GP|XD~J=VzMH(ICSj(?pa4Owp5X02|X^5ohfTbBfb1#y~_0vnLe zjV$+Vo>X0n0Ktv>Q(uan_#UE_lV%+1#FmP?JBoosns1sDda&a8)p-xup0Hqp@uPlm zytwF4${Q=gaWq4@3N$u%I21*B460q<0dsd>mpCh|_f>-Wxyg2@stua)!u;kD^0W4L zIP_M(ggurQubm(ycv5pMT!uSWsXs?=3eo!fs?)t~hcW`B%ER>-=z?oBg~D;^*aynF zKw^lH`9LENs1OrLLDp~-$NvRrlBAko&Nt-}WQ_Vy#2L|DPf7k9l~^!YKJtlx#^tHj zc=@32x?+PoDgI9!s`=nsHRq}AyUYVZ>Vf3|^2@UPTb&G~8hs0>lH91pQ+oBiTv_{G zNF>kF%>0`$*m>q%^VY#Co0wUIw@@1(oVQx5me>5SKUkDTSHXkKVfXCf$_&;e!l~k% z)}kL-cegsORZGkF@xw8GoMw6RURu+buM4|j6Z)Gq`+nxr=y-7vbY@BAe6Z=tTAtTI z{lb~KVa~Wq%Nn6}Zr$`QFqhsdK5imHk8R;7Zl<@5`{_vbf(`gNQ>&`1JJVu@TBCjG z1Kq_Ub6b*AWSbG@~YEn%LrO@ z%x8CX;=!dNymu2iXt6d*97=eoy4V>j<%jXmrn`XI?=r1%96MXoVEkKCE_~B>d@nke z*UDMaAc`lLlHIFm7n7J2ovD%^f9*H=H>~nEpn$T&3Yg%0|Lg1hr>KMTn98X(?!1Ih zJ2|FIzDt6u=dHQZ)cn@(@7mKhxb7xfj62L5kK0YsXlfBo-c@Io?n#WA+`p;a$Ez%Y zO=gR?8Hn(`h)fVO%cS^m^oHd2x?a@xu4t>gay|Q6p{%fWc3Ig~+LO2vU6X6N8M-eW z4J&O13|Kg6MBYfG^vS(v8hWJ}wmhRg9wuwg?kQ`iqw^ZP;hMxWUM`Eh6Z8}J#8%kp zydI&y7Ne%L-$|yN)WsJzeyhHzKjo9W6&2y#)vy18X~8>1mBW3UlB3gAmu}=N5`vF_ z!5(49<+ew<=+|Nj-@SklBzHx5#*gJXFj#zFGjrvpZ^tI-&PT#7C;861uj-AWS*uAp z7OYYtyk+&>VtwA8DTK9jU0`F^;At1b8_!^L>GBQfTn@#z9Ul3lwLTC720MJJQO&<8 z`ewr8zJK=n&^eB#v&`!LB=;u9*+Idg`1e=0a4KHx^;0H{>sf6*Bc+-z0|MQ>*nyI% zous#v5?17^ya9sZ4+w@NDMe!CleZsoRtz_)lqSu`YD$s?ckecwUQ@RR_gw4}8FG_C zSj~zhGmCyk*_A90WV{?=uXhkRYODhomL7$am^&D&dpQ*`+zEIp^Q#=GeA-9eomYE_ z^x%h6O?-x!1^QY{8s+Mys05OdG`mAevdHgjw4)D@7J0jkTKx|5yh`@39sE#zkdTAX zROMi5N*hf)tEonAqguZvaI&KgOLF|4YJUT1tyKf*ad263=V9vV-PXV(>lS+TF_M(Y zDkWp-{V}iH=juX+=YkJa=R~0knbwf@ak~QN7aj2X;*jl@n_|ZnNFMR?sj^-X%oM9B zyXq`{$s>n!(HBOe9ZC>HQKj8F=Y*-6oJ!h(!Fnm4xsmtEyjQRG1;%T4HhK`87Iro@ zV2p$zT!B9-p}t8q@xCPf2q0K5V=j`&??JPZX`~!q>y(xI5X@X(Z+tTzA1KLXsAVip z638%={k)nq+XMYP1wju(+q0AsA;x(@j)-;KTGkq3;WVROj7bCKxLLfpOMR0z8C$pZ z#nZ@KjYDB(EPfC6gWX9bJpdyE6{`ldA-nL7je~5GAe6qhOMTj=m0DCsSYOTFe@Mm#T`r zp?D>UG=;QuW1m;aj3SlOlfihFjc^ixXhq>kym%^^zSO zL{vx^Y8*E(pYm;rci!hWzX~#fXSeWPGBO=!j!nQpV_JG%jfKxy5PZu*BvTlPbQFRz@-B#TEC!8Y1yYN+Yj)Ah8@nhv1YINS)T~<$yEyRU# zr_6=b*mk+DQE|Mztd8=nHq@O}|r6R;Bh;ifd zM%A(H8a%YPG-k2oNX9Dt9;OTEX&7`q;X{nF@bSm0O#vsv?S<9PQGE9z?Dc!RY(oE> zeC5A&89KW!A(W)>G((}{P;O$R+Cx}wW>vdm%7XpR5zKYE>3n{qqhp%&^!@=vtpzM5 zUmtUNeEHzy>-Tk9n7ID9Yq&@oX;7G%uluAj zQ8P|iM=jq>Ln_wd1gIB>TjFH%Y7*nljUdZR*GQKh*@fi+&2WnHs~67w!0qXy+BGwe z^&umDiUC$5pT%kH`$%OVQx<62Xe%(1L^&*NFgu0n)A_cp4P(|yNo;skboJdUqzkgS zmG!6vlJ^~-Uu*M)Ik+|$s^NreisL>^EqxRoixX%w;(GuVNmY^;u379Ac-jRd$<^NF}WQ#9++vbJ8lz*F0E>%OPf zr>nZox?|49I$t^bzfa2ESQ-`jq+VT1y!#1vVSSGLO3asFK!KWMJWK{^>yT7p#TH&F;B$7U zweY~#u&s$^G;tM1X&|S3?-ieqlPfrxubw-OpzC_PBP+cqH-?BJ#Zlaj^!L$oz}WS- ze{hoo_Bs_;neW+CO6AXC+a|3I#}FB}urCvEYvJ|61Jx})rQD1V^@R3<&RoWa>kU!w z5lb61T(T2t_sew69GXxDUyhIU7F$fK;ssK622FXwzQ5E}Y<71H0rtn> z#%%SG!%AN=FB@&b#+)g6xaX?z^57U2vH?utA%oRQl0w`BPL zKla``s;TS?8=gT_l&%6QO+`heiS&*-ih?xhy-6>T8fq}o6a-XyM-f3<=%GhJKu-kQh%)am;J_=Jwk~meDhcQFt+ci1#{a(zJ`9btwUd;mAQNUzJ<9gW6pbc$kmgB%I3C@ z!teNz-H$iOSv{hW!rJ~DVs<2EtiW~+dx=g@G*lk0wV9ErFx?_HrukEhMeSa^RU`UdR^nvwDe;)&e8JnLcJ_ zag40f?s%{76-!qMvUNB?)AoU#o zyE@t6wg9e(sa(R0vGj!MubQ_6n%7JkVjxN&`P_;qu^6j!bL`|Prri7eZT}0`Z=AUV z+7bhkZ>%qq0-wv|lI|J5xW|Wfoar}cED6cT@H>`JMKY+M*a(w|$JGZ>!l1gerZm?N zmwbJbeK|22jg}F+PXIlQuw-|?yi@6F2@^`lW4OF;!@m=C9wweoEA5s^)PSCjJQ-~n zUb}aYznCD2K#=azR^J!ntT331d(A{QKuUpZo?TIz}==lbRPQoybb^ zLeroakn?VQ`E{4X{?}ScQ+?87ewgMz+)py3D0!VLxcu$qZIl1Exn0S4qOWUED%XFY z@c>=Fl=}Tsndp*#^gj(_FES=(6FqhD!3+DG+-s2kFe6DOKtprgY!(-Op~1fo65 z5O3kcDY;!Z{)hH~f4Q8ZYN$7Yr9S`X+jcuT&UP+RtvgFe@ZaRQJ;(nPaUcu)PZ0;P z!2djA+pYEj%TLb!A2b~ZlmCOJ|Dfqt68JAz|0BX|6O#W}(=Ijo2h92Z!I~05OaTv1 z?yxMV1yS<@_u^ig^?&FF_}5Fe-&sb6(?m|){wXSK>+EkKVKwVm#_FC>kiYP#`#&JotTj#GRJXn?cyj^cqt0gO>W8DP$DmtsryVLd#cgB*60CV>5wIBag?(<{&Kw_c|Fz4Z1ty6b)8~JBKa)*Yh zfz6`%!+}#0yQ}9SBkFAwPi@QcpW7!UIi&*RS*c=m(>Ps?^!u+R*f79T9 ziuloN_V=m(JmMF4`J)g12Tcd!3I9RUk7n}=jQS6n{%=9ks8&a1r|d7pULySs_?#j+ zQrFF+2;U`A)h;h_65}?#kyTQ#PIa!O>hKXtrc*URIzm>3t2O33m-;a?+ElFSp&x_cK)qM;p4Z2%)#gLzA#spi`Km&c z4WpdM#=Gp9O0U^HZuQdWccq?@BKy$0`;Q;ZIx{E3{?ZOLeeZdLfCr&ouYPzw2}6&O@JojV@lb8zBJE2?o>hg+z*KdRY%DI z4R2GRL=m8DUUC~Pw!iSsA&DaNAjXkmZcbU2$_zjWTI<|qP|3g?V#$hFUVf*UbF~0Z z6q;g4-k&E*E|c_mEQ_J-jlh?HNzoG%vMdgTEA95_kOL4XI4QJAOu*zC-i|I7}o+Gs8~m~@2|6;`<0|4B^hz#E0JL%N{%UvpXI3bCJmEZ#D;hV37kTykj>e#(rw*7s^Zw z0Nk_WbRYh}4^#jTjF)IN)F&%dnIK+xUM@@smX<;E1Fc z9ko~HC`#Yy9c6lK7AKKe%kokJigrR>eZjnCHa79(&{Ct`D`Ogt+%J{Mnnq|k?Z-|% zis?UCiUJ$7qQK&w$PYhmL-Hs)G+2D?N}p}5jzQZyTooIvjFwiVf#DEzpt}Nc6^P?1BNgVgGL2U5%zYCEkx$VpTaIq+kn8YFeVcHjn%tGmIOPE+?Ewd+socJnh|JwkFnyq`MO0Dm03ZZjo0mpIr{-Qy- z3_(mMy~tG2?QYizjy4oP3_SV=0=V$wC;EbafT!^XAC(IoyWTMQ{qXbu{7x;Ql7Or#=0S>+iQt&Uj6c+b@ZOrzi+ z!G7;))+8L7YHfL1PxzD+a=ntSPzJHoXTRLGIi=ZSngEL!2mY3qq?0WJfo->QsPGA( zG{fllUTROQ-TuD<7m;mfrbjKKLiAfcx2)s{CfY7-`@rkgz4?!~HYiO>s{rCa0W1l* zYOQr%GSU9<_m}#R#dP~yWSB6n_7r)_SvEOtbh;X>?M*eU7B8b17b=G^S8tqNyuu*t zFst41hU5orr7}b7wv4h8aB~;;v$<31-^%78ofkvFYh$cFFn344hg4U5Jt2g_1n+vz za#3yPR<25Ew!o`1C)wg8bBLEPZp|$)J;cM-X~Y)f#z0?_0b%7>vd8)~LSAqrlBErg zhhw=LqIgmqtfGv=IWutv)ymy2qlfu+;0U-#tN@tDc)Elb`91-*lC*3Yvp%*^Fibgz zW~n&ogfXt2(=qsTn2wA!!QH*vG(oH?RWa#WkTE?#mdM~(h??_A)NKC;)`a7ridEH> zj+7d26;%zP7bq|+yW23pI3-*hR0{Y3)?+yZH32cfXIIn4_|V0Ba`(B{XZFXJZp9HF zVWv#aD3Mn8+*qtEvULl4`ZW1So$7!?8B*I`=V2APe-)>9FWB8Rldn>E0@%yetX4%t zN_Is=#JkuY=exe?;aN1`&sKF(UX%voI+1zZZs_>e)d_F0rS3~)dN$70tNbJm5g#qm zGauSc)N>(nFND%jZjP%V$UWEE^(wOsWPAX!bxCY%D8%#h-C!n~E?u|Gwnf{H@`hMd-Q9SfUjPl%`A++2>4#+k6i zSmi1T&V8AF7ZbuNe{6lqP2ntN1G7v)N)IZ#IhO~QJi8f~WX)MNQ)%$VhqjJW)^jA+ zb)b2u-;cR{s7IPrO(Tli=x(<|d*JH{iu+SS!sW;bm^?WEPtJ1;Qa+~*GYa!@LiMOK zJSGl;Yok?Fz?`+Bb)D-%kyQZhoCp#gFQW2<7di=Tu1xziUqo!>4hMS@?2CAh-JH&; z%`#XLRY19~^rUI6k1*Sf>&CWrhgck#|moZrBObTJM zt?ae&^veh&9f|FhQLq>_g~(*;Oq0lTcviu!ZTABF5c>A}YKP3)4w*ea{$*x~O^1O* zpv#}N&#u0)>i47Wd4_tccMB9So?9a4V-sGKfE)Rc5ed;*wda}uJC5?jLLB>D?n|0A z`r9+Pj=s96un^;boq!>j#80))b+pr%}VyPh;69H^Z3H8T->-mfVr>0so{* z4bwPHYO4AvZnKue>rRu>{cj)TH#pmn*@khYX9*W}n8coS`}}OUN>)Hehr15@Hh|)o z<)xcFH8KPjPME0|d6%Wqbx>as%+HH*Q}s@st@p>3g4Vke0%tU`S(>BJL+M}5-r{2I z?^Z8-npG#eQ3JyRs{Os1N z_hQ0vmX-x;MFVNID|>(4CRdAB9@jT+r8#HBfmfwFziCz959A+MDD1rDGMrNV5!L$j z%ELURJw0w1kmJ=_$J~96UrUaDb43;>9fvm^*qiU)92T06Z{Q8CVcB)Kirq0P$o?nE}*T1H`5FR|Lq6S4d?XSk)KoN2YP{^L3pxP@+YNhck2T9ZT+z;}*0|s3<&bxsaxFGHmy_@Im2EbH$XblSw2jbT4mstgrLRQ@m&8cjv z6_YBTyzt^#i@UZT)-ajBz?nWGS(Bw?+Y)P~wJmlwhpLS&latZK-a@3)zocOwx(dE4k=9 z14tToJ}84GLLCJ?il=K@`C2B4@z|vXU%wJ}Yry0rMDk5JPMsRTJpOQkb=>i&HWjxknAc7l%HUmZXtWV!hCyejs3tC=fK-8Jp~1uWlO#E z(r?N#@PokFXNA!a&f=jKfBcfDDH(swRqy%;kh>A$`-mhU1aGT?o@N=&;w$W>lQ)tF z2OKXR1u4ue8F;`PnTB99b*Qz^&}%0%kbY)Eo7{M z&XZo`qc{R+c(^~S^jb>A3nj5|uEAOfI)E`R&gpa=a|rkdKqzg+j8EKmQbrRbvDuxy z)N9GV8g)j*Dfy9bw^n6$&V;w1ur{!yn;cK+>HMJEBE7M_6`!{8pys14@CoZN3oT(d zPf&Hjyhfgh&uP^c^&g?KUf$LoP25JR8CM*~I|M2}KW|o>v}~+7YngF&Z5hU}_;?w; zY}1$=XD4TwAv|1jb}#>z3p4w zgxCA``eiNF79Ap6iykfya~$t8*P1h|e%6IOxfc@YQcQxBQ1P}k%_!voBx19`;o7K$ zL0KU$uhCuOq5=+N*LdHYzOH-xY2W%=aJ)-X&8M=fO1dDm4}jI=yqa&`(&)B^m-lw+ za&TIFO{2wIdhJ!S&Uv7aLQ^-jr!cwmZ^`t-cLUD?Thb?=x2=M)9-wZ>y0r`{Q=_=w zHwFl>d+(zcBH|50AWIjJH=qi!;sh_;6$lMf%m|(-q4$)lLP0hv_oPOaLD= zn60MEbh0qVW+#WUXKI~)$qE&~y7RoC2kQ&xq9rzMW!2Lr-5fU-k(Npy=&kc1Aqu)y zTR;KyH~>#z!K+awuHD(my&Wdtcx|R90qrv;Z_1X$aatf1x%%>!Tcn+nvxc%UHYJKh z_(BoOE)%V@7ENg!)`CB*?nMKIAS7Ds+veUFyj{amCb23-tM;d*XK~;~)^Ru=fFKDs zfYRzFp91seVsQ9o&|`91$nKA#gU| zbl&@!S3d!k)OR}%lHXqaB7gF-C|#4-@>AY#UF!W+loDj$%O*ujy@&`3*~sfT`AljQ zg5P3j-jo3$NtppQd^a}BeqoeGMz*FGIIXm+&8Z+vMNKQ&aJd?>e*0OwpeD(XhCV>f zD1yaZLC!1vZk1{2L7AH4qpeBTmLlX^wV56SKnwb-A~FR9f+A@><8zJM-qBsVTc7q+upMucK|)SdD9H)E8DJW$mA?lUnTv%X#Q8$yTSfFGw;W2o`O_EJ z4Vp@<-vLtD!79(qdC4(<;FI1yc}>Cv`HX6p<+EZr!C@+@S%OTSo?Inn?b*83_vd@e ztoUpP-mPl)U*C(5bKjR9G(!|=_Wt-MbA>XoQAza+FLh6=hxoeBpvt81?iqi`4IT2Sa4tvNEzb1M<6r+2B)9*Egs-a z1rh-h!G#vDYg6jt92PG3xZ)kU4Z?7$+L2ad%oPvJKNp`iS)b73l9765>8|TmIGF0m z>`Aa4YXfRdzOwv1srl%xFv0OYo39-`J$Bs&Sc>nZm%=E>W<_1IooGuJu55M0Qzf6i z5wVzQo9tm!^MYcz&t9fzG8Y@Z#HYJD?aAuR(<~~27PINQ`9`#?Y`#hF1BtHqvbOQP zsdPQ``N?A3)cH*e28;!H%W!STR$uW8obGfM(e%JumWDd1<@vL$YHVi^-`!c^52&wg zdw_cR{$x!CsuQA6kJxl{yFwYK?S?1+`o&p*cfAa^F%Z!&fG9tgQ8e(y-=1@;UGMc( zV`dqm+g?>0%M$9g89e+>^0zL7u^ZD5@yzZsH&1By2(XtgWIJ5^DCnXeRyo!0X;}KIKSaZOE#?;{OeI9h$MHap zyYYCb2Nw|}2IQ_Z66rwxVt>PDKH~K&Zk#s?gkbxQsFC6xuIi6J9d5T=Tbzg>xQm{_ zxZvWhKl<{L-v=QrU~O>8*P~tvA8@k}jBye84%j!2qq+O**kCsO081iezkZI3`*$Ki%gK5|OL$7l_b<;_#d}{qV3YNNf9xZe} z=q+6YjjFmh`2&oL>Fs-hVlN3vqQr!e7|>;e1Vrula`h5m!=zOu6HTPoYOr5z(|WC3 zr@A-IQ{o~a#`uC^9?dx0n&8{{{xU}CKrEwt>S9gp$hpV+T)r3P;$3fZ><8lSh`1MQ zr??cEf&_B}`KD!nnS?=odva zRf5BB%ADIpUjOz`dmz;)LU*Z@_g%!)y-n)dPPWP)Pm|Q$a+&RB-c%5B?Et_fYV!30 zPyG6W6LWb~K*bk88NGfPyi}neqGDGDOpq5ndb)kd%9gUZ>C9GVv zcM6CNG5$+NW^8gH(LR-ishO(vS5snp-hEgpy?BJk=t&`m3|Ut7CAn6VpxIKZ6i;PV z>6A*Vwp2Wi9Ikw}M$7MXDv;8Z=PBqGN(5OUqlbq=&_t!C<18lbYlPneZQP`Y^xddk%L zl51Tf$9W91>9OP4^qw133Z`{DXWh(p2df(es#Jw*+34ng2rIsdtJf&H&nd7#k21So z%&1s%y|1tkd|z@JfBAf=bBv%ghViRe&_pKOJcLTG%p_Q>#^-c}McH?H@1Pc|yXgNY zZM>#FLnH4NSsuOsxfw_qR+u8cl?_C-fl)UO4mCXwof~y%A(aFpfVpt!MCYR)!vyOv zIEk&!nI+UTZ?OqbE;Xnkhm$pn3FHi@1FGR)0E*kJ{bkmbfWlP@HdiKV8JCl?^=<@$ zwM`n+coTp^T#3ZG6d4jI{4M7;F3f-PLZ}>X0!W5#|A&YM(R6%5 zU422Ggu(EIlA78iMKXrFJfwSE;QOAQ3Cz*>*kv`i{~GalQ`kotSoy22yuP;E_9_vE z|5KwR_2FDk7zMrXH04GA6*7*_*uZlN5V=CwoW0H5QPT4pRX*eraFf-st{qcwjg%zw zC|eu1?8iR}%{u=zRl}$z1K8Z@z`C0VY*W5 z>oe6uwCdMiFo|7@^0$9QJ55t1##OQMa4mzB{44`NBwGjg>_-}oeJ}MYT}H%vo3451 zq-XREta4!bJ}K*Wd{McVfAd_BA$+RDk~ImPd1herCBP50o+TAGf}SV6%gk%iy#LW* z@sT(DcXO(VF0JX*(>h#1SBk%0rhl*0jd4VZ^^c__#OdYX#l?Yg%_9dyvv-*4*^?$s zu`~dQoqd$w=m+p%LNOYshPInN|GgTQ;F(kHWHB3S`^P78{uS*T9Md<<^||CofkHei z-x<5aq|F({>6X_xB8DaZ+JVYEb946Np=DBlt34VE=l;Ar$h>uN)k9p^s(g|5>%BMJ z4KCoh^~u#XA=MGC>$Yu5^AaC|nu;c{!S7j2FC&~@C##vCYP8~QoCMAqPRFxJ*u?Gd zGD%ZltD2*)1*HuSDHX}c;x`ac@c%X<@typ#S$-{&HBv1Pbd7w^YugqJz-3jHgkAwe z{p`_spau-?my!@p?nH{@lmKrEqgyObw6GyhG_WDFceXUOs1Uu+#a}aD-shdhw!3fB z;r|snpiJLW1eTJX+xu@=-I>77g`^r#xOEK62Nr+q+u~j;{?kl@sYX#O@ooRqgG2hq zq+oH{n&1S5wEoR?=I;r_p4KJHfj&F6f?b*R%hvwvh2rp3#X8oYT^3$%U@X0NSC}OJ z@B?ElHzke(Pm%KbYJ*R4)2%y>vmb8mnSbIEuoj>|p!32{v)_^1j~5I2fOeVsR+)B9 zHP7wDH&h#J$Zc0od zngw?NG^o4PM0!H-1{`UTE!2IcOt)t7qEid7ET zUo9<95Ke-JauzdY^OAUr9@xKQ=Imwd5*h>Kb-^v!Bx$fy>4_^LUn@DT{OvYzQyn26=`57D~ zF~G~|xh|IRy@BHA+jf6}-U607(Uh#8+GAh4|J~15TuuTTfVF~C_gS*A|AWWBuR|K0 zQWD*-wf#glBnvEy1Bt!;bzJ*fM_2Lz8~jfZKikibzx=0&gIM5y9`Q49?eoij(De6k zupg9B{Rd6^iskQ7@9)qAEV6Q49Pb=B)EI{vFgUs!vA2ajuC71ju1nE4jef}3?!2>r z8p`l}S6;SK=pTPU-{=@oWBDH&kJlFB2fG={eGt%mjXyh*4=c>xk3 zm(;maua}fMoF;pFZsz0`xjoJ)-x&EbSvYk^UvBQk=$qOt)Vn^5>7eM?N4qQep*AOg z#O|^)eEUt{f&+A^OfV4XPMDp1yj3NCDS>&};a2lc3?bDGs*xv7L3wfdsY!EuTu?Z& z>!?k$NNORbYIRrZX~z~a3){ta=ZU^Vr5D~LyGiS?Bm@frj%?~{yXV4V(m)2RbofL4 zQU6T?pJ890PhLlSG36U^AyeZ#Kdw>y4&ogT^_yaa0KS*vN2lw~S2mA1YTmB#F>98$ zkbGU%TB}~Xg?1b4C2Ijq2-~C{-W~!}?$i~^(J+K_V1GFn;~^osG_=C|g-*uI#vkRJ z^~0O?|4rkZ1d&E!mhGK+%$B$O-P#zs!T?;;x`kkA@dSNS_U;x7fSUsAr;%9nj+tpv zJ>ycRzvVc4XR_>x&eDJ*CTGQv-|}7YZ@OdNlYb=aN@<%BqOY{fh^OQ}n=F?<(I`Xt z8Sm?1t5)R}U$+s4@7~SdThIV8M57N)?I@+?k8>5u)+9rX>-25p=gVA_dczUUjYmFP zPWjl-j#}EWh-`PU+iA(2L;_mQ_;+$>S&@VY2;-JeXVl}^Bh*tUzbz}^z!xfj@7?A~ zg>I8B;PjsrLq6X*pvDS+>$X^Tx5jdXzAXpJo`@{s<}#%Z=>BOB?U2$rx8U}fs7{SD zb@f4}QXac$$d?#^yJ1}a5c_Lbz-D49y~Oa~7iycM!?n4KllGXG;Y?n|AeD5gx&V)`^kneE1YCu#)fGaqP> zWcx`;3gWX*ow>b{z=7}V*1Bde!eMLRMbpu0wjKHHkg~);BB0>`pT@(pb<6PCBXYZY zgIX>D`qinNyu72V#$%5RN=JffH->SKxO9xJaA^hOcqzuJJ!p3avn|4bW1)!o=bg=< z(%zH&74Lh6mUeU2(FXv0G<9_H?~J&Sc%Z(+N)y#>wq(bLim*mb`kvjjv~92(RfSqi zyQSeLx-Ot&x8?Ihk_Q-PEN z@v?|@xlv}X`GiN@j;Bc`Mgu0xN3*-HzC<=rtiQ~n+Lc;Mwt5fJ{W&2?kK@jC$_X3e zAGZ6rLp!Q7G|;(Ipj1d8(tX!uig3O5cU=M%Qs;<{Gikj$XMK&P0w=QxUmJDZz7;A* z{Y5u5`gNg_GoSR1ZT)p|rA%^ZGj)b?;P>smiN_xTIWK2v=k0Cbj!PvH4yV7=-B?Ix z{V8qC2mYy}=#~ZEUF{6b`W`R#mQzQwCGEL%4=)KnNZ+=qT?@$~j&`FAO}{|16G;OjDp9#xotNvLAiZlbJJZ{H(L(dxi{4B!{mXsZ zHh!+f2uPn@AE>!0Y)kj2`Rq*W&x_IHz*MpnoG1_c05>ouvG?g>`z{LIZ=eo7fVrt% zDcz0O|1zkB)4-UR+B=y-|2EidKiQS(U%!;x0&IdU6#c_Gnf=DH{iN#)Ni5U+yG-{M zUKi@7W5=F|EYpLhmKb*Y+xngWccpkN1qc9gmA1=O9S!}>bR_6jFu-!R{?vEesT9sAz+vy7p=q#Y{PVWKOl zZfU)R>bii-SX&otgUT;u`=>!dr%t5?=!W-9IkVb z<~xSwsp1`Y)gwAvTb+c*`*%R#=h6Q7iy1=lyqAl{lg#p9bn8S+DQM6MMW0>YYd*c$ z*l8;99he0f&p@>K~0As&CMr+NZquj4|#`$}!E7w#k8M9ag+ zPd2bo78iu479bnq#aJ6+7i}ZOOy!C#x^TWi_Bd~$S)NsYnQ2V^b-E<}mvDy~np{7ymn^RH37uT1QoaVEFMq1v+;QSFbj-XpWZmhpU#S!0oM zip>8ip+8l&CX?u4m_doj@$PbU39~U8>{HJ27vL7s;ZQ@>Z>SnQAl^!QsY@{)_<}4M zEdn00aAi@^hb?XnZ@3*B6RA1&njoQ#1vHM>SZQgTQG0#uC4NQSE0 z3g~-GOmXe_o>^YOY!3Wcw4zEIJ;Q0|fiOePa_{+p%HbCt12=_#Z0y%4qTfio#u7mdcmN683G_f4-W=z54#pDVLn*M%(iSeW;& z6?cOKkX_vMXOL5x9{&X8du5khLgYc+;1>OxrnX2tTQj;uB;3m?Js^(>900Cx1ea-I z3gd2Y`W5DhUST-P3P#k&bjzSCr|fljl;)X*Ow-x zy}W{Pm+A>{Yt&MPeEa$V4M)G7R5boK)RVFB7L61sxCpZcDQQ4)Ti=E(bsd|1@RNSL zn^9+YN=~K5SZ$d&$B1BWX-z? z4ic*FGYpCw!Qwl6b=s}V?EgOqn4Y#l>;4n=tmng)AdI9Psd8~?!n5Wq zc=&56G^c&^1rDV3GRbt##K~NlcA`jYYzA#A=*~VX##D$@ynU>jZcv=UaX<_q$;kXz za&$iY_=|#guG+znc5^2i18csunW;Scd2=hnG}k;sMcur`qJ;?jLtMR})UVXQSN4L6oVXnLgbXw*n4pRo9_Y=p|bm}iT_bv-ysWX zs-dp~)F7@E7Q_b(u0%yg$c_KzPsn*Eq}Is470vaaKxx<=57m33Dduhj{bMx?b6k6^l~XbQawJXT(7m}1ygHGM>&?}B5l!A{lK9T z2NSpho%+1KZb~hj^!XiZU*%H^m$(*-4MjeXlTAfhwAw_L6RM{$$o9bw^!&?(B}=ve zPyuX@ijKxRNP7lIvYV!F=W@UH>p#aT>3J-}{5lL-XU&~Ocp%rj5TU?~XzXaPYPS~Z z@({fQJ1Cts)zz2va*1;g_W3e0LTlHO(XO(lb-40cc%C&<_zavr{h$s*tSYZ>wrEq3 zE7E!B5zjpSwh3G5{J1us5MNjpx=0Z{`EB!%ITj<9Za=6}QvZNr#G3g`))Z|xs?b_1 zS)_C~E&UgDWc;CD<>fNlMtvn9A*!c1tieDQR_w8Cvo_fm(aFb-S?lFPm z!gTZmXMFp9L8FehMAz&4-z%i4-0$eh%2qQyYj8ug*CwAAbV1sgV_ny zx$Fl}KGKoJIi|%Y-Gl){u87m^cl8Zs6|ci=dQDRIp2zZ!V^TMQl9P{A_g%P0D>0uo zoVk*u8>wd|oV9Y9bEk~(FUAj5q3)j1*Nv*~dunVIP;CdF3}-Vr=nLE~x&L8cxQ32; zb|_w2Vx*eW3EiN!CW<_;nVNnFWJgF~=!iifu|CMYR-ad_O$hBh}SNY3kW6}Vx%RS4LXmgN#hQB=u1Y4 zB$jyI_Xs?5ZK$x0{OFNx>#*it(Sw=As3%nX_{d^ox&xu($Xfml^h@I>A`la~gO0oW zuy5BoG%g#ztlGjiYR*)J{nToGrL zPLkv~g%_N6I+%dYN$N8m=4X#Y+5{Sa$_hz;FP-0eMgZ3RVPaU zTpUWO*Kxviqo;8(c1AKSmZ!mB*7nV(^t}I?5#vhV&w>Z13A>4;~^+3*Sv(X zTpV8a4m&`^OeJ++uUd7$O`%=Y>^=4M&*3rUY>Yw++QLplkE7$`Wa+qcq@M0?;6*N#gdqVk&wHG`9&kuu9b*=@r*K(2sdG5V7LclM$K2o*2iqNF2H7&#$}wPCrHkpvA?j4ud9eX&ch9C46aTbE6i#y*wv}S3m^ocy@lC^lA+! zO~d*aj&y81A@H$UvB9G=g*cku!Bc&&bY1(Ed*PEipIvG7AAaT zI!)~e-8sD11&gv0%xnS%`tn9WTWFOM$IT1 z%V!8*^YdhB``g0ORj$AwSi3D76clQ0Zp(dbRO}x0nty@_cq-XQiZU4~mmp^gVS{^a z!Gck8o{t_0;=3!v;vlQl`Jm~MW88A`@+lv*U)kb<@SOxr)~&BNy^-lJ4whgF5{h^D zDweUK=SgE7&j;mWu@4xj(>8_&svVZ6Hh3i@^i&E(9S78f9cJ{K+h1U(+0?ckz^D3T zjf_sJ*ygvk#&s^6H)rWEPV?|{zk+PwmwDsi0i={|Q#vB;Z?skBSB;~khO0>tdeZGm zJY%E%+F|pfuY#KUjUIuL<6B|rcTS#(sKYH^@?GMA$4FxckZWR?sesLiU zmC*^+GwhWzO2s!&O>rXg8*T_NY&yHomOA`9kj&?nE>EQ-*gdngvr9{}aK51CPmj*Y zbJ^5DKUXl}!av^3D%+?@Z+yce)P3ennR>j?gQ>oX2nwb?tSCamsbX!(?^-C`nM627 zFvMOd>1wzyC)V%K`m!pvM{YjQKRh9JJ@@zx3Uc!IboPfEs#d`^h8DseTZ60GP|%wa zJpvO2GR+KA>;^kihk7-CFJ*4o8l-EpW|Eb*x}MCYVqC8qu3iyW3r~0M9`k@pZ$$&t zj^=uW0zNzs{i?k^r1(Z3fnW%O_nsK^Em5u~l?mLA(!cO;fYM}#NA1FDVVoBoI@YG|1wY}0Hj#jz2U1LfvZp#kCT{bt)$nP)3g_WIRjlv*l~YM_OfqrP4snow zXRsfE#Volciqsrw2}|T>F8uZz%cJ{$+*Fp86|3+c7+O$X8%WR-sB)zKqV?r`3CSg$ z&B11dy6AMGyNk>Ik2_O}rMqwGPVs6I<1aAK_Ls)MZBp1=o;T6S#XX>2Ssy7)h>i#v znNjcKN-MgflD)CM^v-L2J>|Gog8{GFgMjQVytYm@Q-dY^k(qajZXHcq5Tl2(3rwh| z%%06J2U0wvl_e;Eo}@^p(-RESZ4j3!0C@`Pd6?KX>Pa{Y_!XV)FI_ETm;sn(rHc7|7NhP=|G9uQS=vR3v z)bO<;5em8ve{@fEzhW7CNHMI_jNm~(b>S8#0x!1cEZlLM`nWj`W)V*!IUUYD>qafZ zD&@xG$2{n=s49+g)l1oU^XU^Xwt@9@KH@IkNV@)Pr_LG8*@^SHYb$REKJ;kr*OyaF zwYYj-*BVe?UZiyzPQhT!5jJS^7YEbnBt}frr|iN5I-0%IyTyZjU#aaqSFx3&*w0=AWc_kHLh3X!&o&=#MnvkX z3}^JQ6y{tU6TohCPx=E#Wi3%4ND(^H&BNnXrS>G*N~I3N!Q=D(^QLl$K7ux_{bE5g zVx>frRgu1 zOWEXw{)piwq`K|v)}Y?j>kCw8t%ZJX)WxZxi-r?O5`1r#NwMFdSD~7~j~7gI8W1xM zmV(FZSW=5X)A4KB7F%EXacTOx4XomMMJ9JRO5YLIX%jrnkuYqUQxXg{*KAydpF0ew z2~I$|INUk*65m@~zQ&UK5}~bCT+P*$)rzk_-fwNpWxuncVc#_BJ6NvCCsuTrD?bhx z6j8M0I2!ym&SPTHWQ8rLxoqwsjg9|r=*|gb%%?ISPz)>R8fo;Z=N5X;4MdZObXGZ0 z{}I3+>7{ikl&;o~f++)Hh)C!yUthNGwt4TG4EUA`%FW2AQ2~=x);r)gT^h zZp#|PEXx|i^kHc*0ameEalHOc{BTv-McZO|;wy-)S$BVYJ(qX_rmjA&ZRhK$b8Ad1J19l`mHrNaW4}RxWyryN&opR{tlFFSb z!!t;dqjv+Y_et1a;pzn;^yFZ1km6oFImtZaYJt``ACVKaQ-D5(*;Ci;LgX^8Af|I& zGy>t-YGOj4;K+_b^^SYA=d~Aq)L2h`ss&4Dt_7zMAb8Ie^s{*bM(gG&v=Bq7f`^Hs z`HjlJoImD1oUC=zyHMxHM=)Yp=w;tMOX?n?F1A6fJhv}_viL@;pb4ESSbG4u4NXxl% zDbFlN)H0vMH!N8wJ&1pcLCh|7JTS3Cs<={SEo&id@KpNU zRQ5S$R(Xa@-2!EefC@^ih?dXXz#r`NXQ8DJ?*rCM-}qs}7Oz>Lr=vtVe8-d>*pGh( zrG8;)0)&8N1t)48gWr*IKSB)&a2g+aZgPbyD0t*Js1(e1ZDzxzoLVwqQx~PYB)C-% z>YU5ZX?T2WxSAj?xUNcbHXS=r4#z&2M$D@M&W9Ti$v0ijvgqz!akh7cKQZwr{?-|Z zZDk2G_DM1{D6hUzsMvqK_bY?b3tDWw8B3M?k$LF?grHt!bPghRX>e69y+23PVPo0S zrXuHsb%xDZnTgHNTEJliKEg5-IRtBSAeB=o z1<%<5Cy_B@l7vTR@XBU2U<~!uZwaGx=q!C&W4RJ z`Suvz$1Y=Bc>HMS4Km%p^z-8Gqu)-dG+c-UuN2>1EGS(*J7_4kJjGvW?`EH!rM`Rv zd9=9lTQRKSL%3Yvb)=iniYjQC$#?GU^yeHFb8$7!jIBw?Y5#Q3uEmK`eDKiYky#_Z z^aS-9M=S=dg1JN#x3w~vFh+nO9Lq%G!K=aPW2M?TFi|&tu0<_P*zb*iB0l)NDNR*Y zyY*t0>5~4L1kkasVIRLeERJ_gEod63e)&wpQHgBGMew58xoQqpalYO`})@iUSb8^nq@xJ$zzeaIwp{5Xg z*`BZR#3^@9&#l7YY#bLtHv=PaE2x}Uzuv=|`Pjk|a;$a55fva&I9so{Ia;$>ffi{8 zl5T>r`y8D)TGxt^nU|MWp;3tG3`O-@E99(-sQa(TxDT<6RcD}O$eF%`e z|D^{hCTDNvcKN-Km*X#8nntVPrMlU(uGT;0KkCraBPJY;@t6oqD?tGnqw8!PTb8`lShOGiD@t8x6e9**qo32W9jKQQZhrUUacU5C5RK58KlrwDB zUna_O!geg!8g9R6yL5meS~>@nOdMnpP1%U5SQ<}CR8W3ax`qqn^-HCY+pD;GcJH<=fZ&S5w0I74QlKAJ~Rj(1ku!-jhGGlAIoN)bipIfn(DzzW9`={nT zAu7fN7d!#xG0lrOxwsxY0)B>#%k8k<=$n~Ix~CCo$#zm*_o9<=vwEuv^+ikakZN1v zPKrr%*g!y@hE@Xy(KD}A&&zl+&2|2CFPDF>5jGco{GP@P_AV~8vL>jVFN$nzt!hqg zWek3L|EOJJ8u1j6SFiJm@wCS-RM$r+efZ|I(qiAZsUDs`#9GlL1M5m3ujY{uSyu74 z&Yy<-pZ3l?Ea|L!;8Qs>HdeN3wmENQi%X7UWon9T)=a5WrdXm_=AN1mE+Cp&V`*y3 zAZoZwre+4@iVL7-E{VH>3J4_vDI%#XilV=7{od!9<(-*)-oIb|7n%;d+N&Q0OjvtsIO&jk_WI@dR` z2q0_jGmbVsQghsT1-?P3aM@%0RoTW9-~fXqZCzcqdR6MawytmHE=smG)kmc92dg(< zYAl=yd#jYW(qHDB1R4y^P1p0()9gvp5Q8jHeJ)D3`ej?4RC-1!&4Pk4U-H8AQ~WsA z-BHWg(^mJiI<`Je4Ic}V@gsQ(N7uC4oN!(XK{E4v+S7%26I}CB1~K0kZNsbT*6uqo zJ!7+qFqoCvGQw`dv~1DYb_NCaYnue&QiDV81foIh7-uCd1kDmd&^YvG&rLUKd%k)7 z5Vs(yu?~8?&irGXP1TZ+Y<1b!<2&>Rj^#)~bkrk(K+prSwgNk$T$_))Sleh3el6N! zYBERkQ{N%Yai8wwy=Aw6=Lxy8f!1`|G8^>uflKDQ`_5AUr82vw&;ti^b4~-Tn>dUIg=VW zt8y42>XKd2pv!x?+$o=}M)$%FuaKXxk<)^yG#|(LeU!l$*)A)k4z3^3h%z)1ZyFWS zqDy{H(8a3yZ4*M)KoXwAJRg}xWbjYk75LYhDm#+I^?n_``}QiYWftKjSU(KazA2ZR z@_Fy|(tT-Budkopvb8fw4<3lko6AfosmI*#wBD47qBH(#;;88n;r;^$+`gn~0my(Xbdc`Jc{xVhy+;+rKo-P@ZL0ueFq-4;V7wuX!?6sU0Z;p_J5 z$2T~Xs&D=Hn&z|J{OgVzpaB>lWK+2ufNlyp1H0u9KHYJj!E@h-=+Z8P| z<6*vUbO&v~K6hd6eb1IBtOv_H;7+L~EB3inG7&ml%E0tb^5mZegSCyp7-{HLZf5K+ z!TAo<>0%|0`euWMX9VLJK|AZna@)o!+QVo3Z6)UWbtF_P?vBQqg?878O>J6B%A*&a zovj={vML)RIlJPHqM*E3RfnNnI1mOp358`C=nIK-!PlR?bxFuRv1L@kBumb z47_#zbb^gnwKG(1b~Ii{ohwH&xS)AMaZ3zsT4fN^Zw8GXM)Q*k+ag|{YYZkMtEyCD z%P`0Dctd=o_nMtXg0mA7sx7+){R08|X3ZXhX^IW@i;Jps235UyB_H(4b6pRGT^!sr z);_hdEdYhpnlglo8Q^vVvz(LDbLjKvXsuxF9e;1xO9(nt52tmcKsS26ENZk!g;GdB zp=|M6`j!<5S(tKlrb-0m5N|puni^prt{zGpAEUNjHMCR`qtVyxhIh(`XL}8b8?5G) z^8=6((UDD?AD@CxO*z?I+ZmUYnX83iTwVnvgWklDE4{A;gkRZ12_HQl?|%y~zWwN| zYW&EC+Jql}?lI5SGQvIio-?&O*(?eE9`A_amGz8Bbh!oASP2m9MBiWL99!9P>3nE{ zUXVoiJZMd$K@3^FGs7a}$%U?cT}}wcQ-#~u zf~@In2Zo9Wrm<-ZCS#?nns{6^a zyriqOEP#`@`v1b?_)nQZ|IXcb%q-PN(5OWA`y_iArbJ_R6T{!lJQ~4hXGKrG))LQ1 z*;pq;$$~6+A@G=*H=JG#gfJj?uYucfQmyaq<(_NW)d)vai~ah16}3Fr?gJmg{gQ;$ zSI+l}dUxgLbsyhmxqm-y`<;QkhnOSEP}L=q2iTHC8xOU%6n}%|zH*D2+{{7R%;XDI zM8SZ)wTbZA(tcVbD#H8T^7=H09qjsku#9%3G1SPqrr8@WSL6?t96ZLYa&FalsUA;X z7K*=v7t%tOr(yzJlTX6VO}*u~(Ywn_W;EZFblOfTJI_uScT;j3$Sv$A#3+cwSlEIP zm*aV?#IDb0J+5wxc_x)HHv4o_P@ZnP52O_)G_3vQSmpiBqWZY%q(nWa1MUzLaqp4H zVD%+(>?{_{{#OddZTtYG-CyzEx8*KDFYe^E-~#2Ga82BW)9JM#=+hNhl6dapGv0gFQB=Bloz-NZ=?~uafbQ(dOWqazqUx zQWVkj+1zujVEv&vHhgbXRhh^v*r|@JK8=fr=lfJ!)qiZOdetkY>Cq+hPN2c`+S-IZ z{U*I@&g~f9Mn`4na4qXYr>}c8(i$6xv(tzO9F6jgHNQ`SH=SZ;u4~3SO%AC>;dfOq zNV(T4{NkKgXM&B|@_*E7aGnx39UV(wwJR?x~^CayUvP;!LP7bFfWT3IKm|GPX=0+h>p+Et`z#?J;pO6ZG66x>sa6e;u z^NQZ_z96Q!ourY4LG^ZEsFS$5x2sYxEZF;fk|tQ?8u{ktrdZ96h6-f~ucEXYTHXZ(bi_|rrXsTzaYp|C z)6jc|7^=G9#2&obXq8FXW-y?dkgWFxEZ9P^k*cU|ph_QtU9j^zgiPVKlw2els=Qo5 zAN410?44zbv8YnZ{6%Ab42NuEzzhb}Q|QOw8S2bL(fS_?xx~TL-1abJT&_|CgzT`Q zAEBahoG}YV-4e!>TM&9=%0;~Relkc889?@=YCFc?xL{@2=a-(*i1_9iT{7Tz=5V1k zp{Il;BXI!i7~-e|#1x5k{j>yy1!1sk@rbzWBkr%=laPJEcuD2jQvqh>?3{ZACG;ke zB~%x;HUk6a4A}+HK8Eo?S+7F!q)n8o+2SFs(SV~ z)VQM%${LTtqw!5Lk!N(llx%{g<66`HmyP=WYTv&|w&8v?)gs+-hY{dHxW%wYG#2tW zCV5eiOcFaVA9a0{$gRPeIG9p_LH^E{{yE+2q8mfi6nuG1t>5Cdm}!EkbtMI~q$*_w zD@A41U=VCTEH~1uXq(CTgZLlF&~Qi2D;&HFG# z4k&bG^5UWStXfm;R*m$vF0OvH1PC-0jLd?e2g*4lsc~5KMa6}2c;ce}`SO94#zuHC z^=jp%byct|7&nnAr=hO)&RPATP4r*s^WV~YeB^D~Dgj0_TaB4{FdIBh;;<&?MJhoL70>>`USsrtqWF}Z-+#uae`gTVeLy#i zYRrS*ef2jR>)#l*#}7;D$a;5I{9)XGM6@YDCA}=jYv(`y==bBh0ENuKKWtyNIIZj&y`{M7{IKYCr>tMy>iV$xukH~0{Y-vaD)$^Cz-_A^EN!Vgy8Nj!QCxDa0%`bJOsBvgM}f%hcGyU6M_Z_?hX^&-Q6|#%{f0i z`9I&_dC{wT?OENucgfXNSJj@+8fx+{(Miz(0KiK{1zAl106rN2fcu7u{5-Ojn|K2N zAY$6f$Y?mo$jdl?aCXyjv9Pq3w|262v$xcge+>W#MMvwH*pchtOQh9TvCq^Y4*c`Rp+wwEcSCs>XymhvvbBo2~TY!0jdXqoo&db! zcV&o(;(jt8BgX%&l!bOsu3w-yRgG@EIrQ%1Pq{^huK7^)*eb37{AGl?tE5+MkW~;i zRA*zsBchzczN#Dh$-3Si?UW8+(%AIL4gFN2%TmX$iG0VS=)2%(8*AZ2iY@kXDA2QA zY@p{z_P&POEFIl5P%|B43yTu4vi6F-!uOhvvO?AVRm5Plo}EDNS;X(UEkYakfFpKW zdy(l8;e4Af(ribO>t{H+g%VwQMVU#jAI#Wm@p~A=!%fpMJo>mi?=Nq?^fFRV*TBL= zFG!;pICX1IU-x~~t6|E+Hv8%EF?MaCPjxVHdI=WeMH87c zBKKA}TNMYC1Q8XvA2^j%O|435zkwh#`4_Ao^CGA@t%uPmN|Mlia%}VsJG?CL3RD)K zD-Z5*Km8zv^v>VRpHBi`vcn~mWI3|s?ZN4U+iv9`=310}Ms-c<-j~k)jrDivnD-lY8p%fsFl&t5%}aRg#TQ_ zef#UjdF5Y4U6 zU5jToDP_;_8=8G+x*l3sE@_@#Ld!)xBYh17>Nhm{sn1?1x->;z3z9Z~l z^W)_wc{JOk|4rK*J^clGR8*AG<*4uO!QN;uJCtAM%&n@>|3VS2iZX9*W}yHH4U)cM z-~JyB{jI2#1)Z$2Y^0&37_9BDi3*SSnOnVee%?W9;>JU7EJ6p}uS2cWo&G5yy&wr8 z-Y+jMt`r<|J+3cq^DKwf0SOL>nZ4EvVEfcRR518B`ZiOf!nMSZ*Td31fY@xZ_}R6!B9&1r?hq20OJyf1kKYpJ$|2oUWVlrx4)^0+9c_w?GFD0cM{#{)+bxaOG;N z9{w-N{r%9k>R0AL!liD8)_)2FIr)m@PkkrrB4Kb9>ZldN{xFcggo*Iyz5o9cX7Gl6 z>91F50!YZ94jv&sHiS?i5Qu>sbFi;3A}Xr#GtNC#_eb&wWreojkGW_e`?BO{;4lOt zaC$mh5sT1k7T+)z$A3aq@OV+sXwRA4(*k!o%5n~scogMzZU}>^ z&!OsY6D5)XSX90}1BP()m8J>f{PisXpS){EL=y~})0V=P{S_Y#M@kD0TBoKG^*&C= z;GZg6!N=!n6GIv;$nC?Hsx1Gg5F41@Ss@#P1fVzP3=UEVqW`@*w@4eE^-W8ZqUrw11A3b)J&fn^Y^CyyC=!S+;)~y36-xo6P*~ zR;UpJ8Ca5#+LRJ{m%pJ=i_*LEiU5^D56n%W#z@a1b+*(=UvAgFAs#;lvNN_OXHPB} zH*54*idFD-Zl%o4b$mYw`!y8Tbf6Ndsx$bHFY1cbv&V@UbgS_^VTU(1`hoIL%!SFf z{1t;e!3YasqHWe8Rs16Jxy8oPaW`?ch`SiMpM?0Z^Q*&|w{;vz03Ec*kjOq)YT?DCugq0h?clll_Mw4rd> zEGB}qHfS-vv%5}6)q`SG`Dsj&E8-DLAwa8m!^T=k(IV3-ukhANH0>X-!&USQ90>z% zd-2T=p<`1^tcw-;Jj@d~2X_2j@f*$VIjIppc^d3isHAax`MdiNEH1hn!zuN_Nf)s*8xr6{sMo2h(rEB|I+s{$dN0A|DODF(Dt|x^> zSVYi=W0MT^@N;3ib5Nw-_~SiW?;sqL^pF7+!OqER;>lGfe8wkNO2+e8fH7ziAwZi* z=Xy$Ui{Y&Zm&d~@Kib=47jewjvlfWj`G6vy6iKPEtZ!R1-{0eExwcFE^z@JhQL?bJ ze7#>_J8ZT2nKW$@yt-$}j2-#kn zDtbI2=(#f_+Qk}@2$BLtBC>-_D0vW+&Z`SF`s5t_%bAl85~g@x*<8OH{=+ZOwMCzYYzR69e5*b#V{tLuWE8 zi$HJr%ilx#UQCZ3w3Gj;B>4mmDP?B=AD*_==LZGcLEG*Y7kPtLPdIAuam(7=&<&jY z-h^xt2g&JeZ^^;mOGTrt@XfrcVLS5BHy*^Hyreopjj8j7$mro^$D-J}RvzLYi3w^S z(b{c#oG7qKRaG;c@vJFWdI^RZZ0LXAb{9eyV-Q}6Q$Q4EYf9L9;_*o0}$ z@omrmMXv70I@ehx@wO@tHX{i>zR$0lq`s^)skMXVegi?}+iZ71{~>`Nkb9nWiL2x!v*U4Ga@O1~B9lK$#P!hsek(bU(IGZ%G+|zf@xISTQ z%_dB#RFaSncm|1~O_Ouj5*U*u5RAEkJ_&7(8PTF8;{+jjj8UcpVHo2ptYXWd7E6O@ zeM}k+g?ZnsnV6YS<(BudePs@9J8Ln-O5%v27N*2Ek+@1bUEjB9HUX$`Z1WXYYiy^y zN4R?TKXh{~ZUbsY%=e1bqvUQ@7M03}dmNv%@el>~a|e+YC+f!J{9SSjT5+FF(G!@iI z{5T>;QLZ}^%O%HjcFFsM|08vXci&v2kXD3dHH#NFNpcOl^%!NCG_JMLSqgJnfYq)+ z!H@sHv0*UquMo6Dlq@{Iw5(ov6|9J(kQx_TYgtj?ov^Wj@y6Cs1rg(nialjPFI`v4 zls5xYVj-#5?<1b9&*8pzR=;pUl-9(!hsk#Z3QuFnn(}W6K3_R+at29Uowj}qcleT! zV^jKhCCa{XzszZ++n$`HY zehHTh6-r7zA6;SwYFaF80wy;1FkT`ly*z}IQ_U)7N1n`C6R1823zG}3k=S=S+h5h( z?4dW*8X->BWK?RPqZukx^1VjQ<**aAY^vH(RDLs{8gRi8vnuHm^>0PsVgfWGH z<=m?)FMB7ao^5KyEm#U23kypxs{s4%;^N}i!~{J;g_JwZbw|hR!_I1L2|0#U7yb7R z4*BKf>Ndlf>?tWJS{szmjlpLkMoCT%=_gOdl9^{oYkt1m+}s>JKflhG$VdiORtJBk zgQ35^Q^D@~!MhKoeh~D2;UxacQl1D3U$B%sx+i+TQLtEv57&!#y}>DwbaFVsg$-uZ;k7&mYs%F1sO#oZ7gV6<_-@g{M*pG z!r@-sUULza9q@jdvjaxD$^4wwA=CM(!6J^nWDTaO>#f}jrvUXs$uaxQyqda(GJ`D$ z!M+Hz&&C25iPC2S=Vr1zkfHT=H)o8Z$}%$IaIR z$AQkpa`r0MmVq@<`&sziA zd9%B@X{-II()BaQ*ROr@5@$F!=aNtEES#KFNj+p8OCKM%KMurxytfnvo~+beu$I-m z2Kw(Rn}M5}nq2Lfe5-7SDeL#k8aG<*jzkNbOXx&JjhtF;Y<#vwmx~%y1Sc}>B-x>V z8=!3nJerZ$0hvkthxU|_B*8o^#L7-j_C5BaZP_v9`SygdF`;kg85e-lGxJr9vwFAW+LQzHAz=Uw=Pb_Q%^?L^cL^wKmqy#cs+pro zSB^DzE3|$*H2XLfGnN-O*tLbYG{q@E4Kvpr&ihx6%$~xiFY)jhrrGDxA^5%U1K08` zL$>*_jt?Q86{%4d+AN&x=zDILbHxe)0nPqr3DB>S_p4aFiJ?=?H4fA7-uK3_8B|)0 z-9MdRJyDz84CpbcM#gM-B~ab3pjbcLUXG4xnSMM^TmIU5TiiM}4AUkNbXs6`m?}x( z8?0@8aJ;!Flq_|*nz4*kO=S`}dmbuX2)sLtXMVjbFL^tvXdwhfBRb#um4HGCTnWog zw!S$(3#Gc3dR*gtq;2@lQqI|Yq4|(&{&;_*wN)kicLcMh7+flPy}usE`as_Z^liZl zBn;8xU#ToCq-sOxJ71b7=J3WA@VbiYIqwR6d3%9cg0wWz#oTkV!kMzXt&=Px(LobB zHSFjAquzIxacxu*Gjx9{PJygo6BnntZ7*FFG9A?tTc%SQd#W&fdofpdL+b>h*3S1a zZlvTviw`o!7zKe7Dn!+B%QCvb>RaLcH*eSC>Oz%ezw-kRNa90a8!AY;iS%#|QJ8)4 zw>Hz9)A{a?iJdFeTN$XvnkA{Jr1b}tgJFan)3|mFCUq{WitP;ZcO676)W<%u=Bs77ndOx7c~S%kez6wADk`b$^?3Z!{rcTH4+Gg@1qwK z7oKeOOP;KLIw}}*0G~29NR5S+SrFN*PkE5~`)l>DzpL4&N&;k{faXp_7=V%Pv;`{N z;;M?Y>59JRYMTL{<$55gRih}9PDhn35P^91KGl!~ZzXvHLQPA3Ch``VVq`F8@p&a8 z+eL`O)s#U}-(RBU11)FhN7MIG4ors`b{P9sSIUl-X@ zYfN~BmvK}6bX)HEOi%nZ9Txl7txpe3 zS}NymsE@$l;nypHJK3O^Bz~J)=zTx5kLVdul6N70=Mqv)uUv-UZRGXJPh6z7+8lw1 znR5};x<$>g(*U7Q^(!ze_~U?;8W3MkwDi|OoPgndg-k$02r3fCJA)vTxmb&~Ov;@k z-+0RkI^G3g^GF|B=gKCwcc;8 zW7ex1NXPZDAmVK&WGV;`{!PKP&6Y@=%`V(%9p1IA#EB$he=v5@$Xih0rBrdNeg{s( zFGZDp@0gnyvHx4EvIfrlTKl%`iQ^sbdeh`YQLjb7UYqU7I6$^EIX$7D=C?b)3&+}N2Yc-T zEs?QHu&>*Ah&)r)G_Ft=1?!0G=JM0S@+WunU8~Nkqo#AUo6*=nKKpp+{RWeWRp9rP zUM1oCfF+;p-8fMTzvHFmgrEEd^xLJn+S=c)g}3d;D#=(ETze_b7LNnH$2OA80(}Nn z9f$ljjdcu#b{Ey_Z2f+~vvpjvIxAE zCYdi=S|c3<19-VXZ~A16&!mLCC|>Gv1i)zf{4iy(F1?jstHnoQqU=lK{=}y^{od3^ zbS1A`hrckQq=@S|Bq5D9UA<-DguINBDL%tv8l19OgM&HfUPg~6bpMOOCwUObl(#iA z7uSCgw#k?L+kei!G|a~b7-SPD2*Ot$q$3-z_UY0(7QsjyPB9>!*uQlxYjRV7oDj0I z8CEOM*i3%cS+5*Gr(US`^CSXyLlZ5@9x$k}QP#CDN9 zPZ^e7%jJB0Jbp42;yknJ97trnBoXo+MG;{NIIyHj!(B>F(on*3rN^sUDlMqo-)R+gEV^t; z&f4i|Oh7?61QQsARYVX|u@3kwwb2({x4uOqGD3&ws$hu5(zjVLGTyuXbtob;A(?*yPTLo?FdFVF@ zuT9@GdtT^aD( z_~u@nDS1EgmEpc*ZD3-l4Fz|%c3O!cW4*2^FMRJtzi_<>4KRYO@0|y@hunBzrHQ!SVW7;ETT{^;~*O=M7SfD{^@MLdpe$WAZaY zg~Tha;O{x@EVnXkz#+*Aei{OeRmEsOPbV6SS05T03}PJLn>1N8#Nb)#zV;?)vD@2x zygPz?M`+|u;xGt~l2BQ|owoAw1$Vo5yVde3Xof*jOG zaB%Xy^v7_C`B!%?#bj79ca%6IwIBWOpVhJG;Lae$Hij|^{g?rbifS-tSA#vx(l^PN8{=)sc9udKW zG?XHo{L9f~EHc}*5)4nXB-fFcHm=|zgJ|*P6v)8l!+h>6G{_hl_B-||!EVhmFrO_X zzm@ST_b)hVybH`5dHIgBw$Rvt#cK(+8@YV9&C6O=u#s{AlWM&-A~lj)VIj&r-cxD1UC3r*y2W167Ojd~0M>JXfRx z1()4E!1+RKM=ZSU@Pn1FP@nAkt#`o5ygRjWsKV)@Y{&yZpZr#Z)|bsezV{QXW>$e13oO=D~1r9qDV*pSma(W2vgG% z3p024#_4Z!lUComR1EJ+3Ly$m%`n!+?C%`J5eXb5yx=sXGuWj$I2QY6-YZfUPA}d7 zLcW7*KPt5lrj)10KG}L6fBFv(2ZLN{~MCX$n>xf5v=htA}-@(JeGK3KKDL=Oc z&L=oP!~>&G)&zug)GhW4^J}l0I5QE2G1TO#+L_$wjrshCPO~brQP9=PekapH8%q|Q zAp0g4{u{A&iUIR5(RbFKq#{A|`0fEi7Qha7VzH9zAX#I-ovTzkGQ0TAlsBk4SsNrE zh+LDpZL>wmolkXkx3@sq@Pho^B_@-DwOGnyMoGeO|3rYuxm$nsIEkU*Q1tNm?!?HR zz+WY8nczAU6^??XsnJmHPMLVo1bSgvwHK*IKDg7VgPjc7zYH$z>Nln$6f5#@7==;X zY4v@R=@hsn(Rj%VYJI^XNWoNZInee|of4LgH~@*vUv;SFUa;DZi-EKw#Yj40!5z+CtE|vEazE)Y+9i zH@)toZspKDol9k_NtPh|kpAK6w@)m=?{ka43tqwQ(!n#WXzLrh`&=+3^AuuyM^qu4 z$b#A}IF||Fc01-dhbt6AXd`=tP|A!?yE3rgR6$JB%jb>5@Wy9`L8Y8$sK}iXf8x5S1##vOfn@Z_O5$!bma;0DiIu{Oo%B^sK?POQf7gkhdSk<2g)35&R4XOI%CIiv3?_W%Tyqh$bDYub2K&A{ zZemi+7F%nq#^#Ohm)Psa%*N)wNaea#DN*i+GSr5Aes*T+UjF+gn&9mG+>*hd>F+$; zHDAgY!N%5`3erfTu`_-Xh8`4CO1^>p!R5FwvN~LFnudt8zO{~uL$8=#i`!MJipJ~$ zyC#(3y1S$49-RFt!u=K6hwOOV3Gg zn8^oBsyWWZ#SG?zoGHoI1t`DhCkoY+DokpDTP|g^2+&d2^1Z2P+B}SOMBV zj4Yh^>bgBHf!bl&C;RS=2L%8)Dt9v;qTF-C&tW2t`Ap)4k01;(p7F*6+m;e-h(z^F z43a}MGIIw{8gh%}vDk?VIsK_Dg>(7%`7!7gH-I~Fu9znYO&IUunLr;o0MvST7_2>gd-U; zI+L0@0r-$1$Fm)o>wyHU#nR5rNtA14c_ZGEWP9|uuvn|0LKH*zl28>}?n{?l_M|;F z*$_E%a)diV;ThmWGY6~eHw;Wkv7!5FHC#k{>x(HRD#09c)V4e%9=py>Psbl7A0-VW zlf$3jw0-Ny5mc7VwnR0_{01d|;$hKDX^P#;Y|3sOy)92b)AA`8hwJ-TrgrJi6CkX0 zriOHjf<>9`u?YJdVB4ZkGew2-AJMAu70q z_hG3?*d|r|IW~)H70W(nNHWIdU1lwB!sT^*2fsY7KhLcO^AlJw^E<5JZZy!*A>jSR z)HO#Fv8!c&G&n!|H;)L^pmu^gXD&(V;vTB?CL}hzBR3xvK=U7!IYr^xLTF*_H$j(u z|D*Gz#TUw95&8&+*Ri3$Dl&bBrIOc@*h`ZxFKgUTBfsIn8dfIG$K2IB+?(`$eSNu) zD-B;)yc-Moiqe*s&nwDnG=@`aImkNmrV=aYbGFAs8oc2Kxd!ZUq7yFdxZEN3;o`7! zsA%}t_L%KB{?o!yJ^6t!Qi#=IZKOBXFWWB?>AiyOxNTo#KsByv8q6M-w-Ucaa)(Df zW2N&QBJB^@p{lVfzQ%We(Y@T4qdGl{o<2T4Fx#~<;R(m@T$Avt35mJgUmZl%2#;Ey z9+T%8-fY`K>re!VY@Uw1Tgfs!rcBMA!&dIQN2;e&D(>;*whZ6EXRcB$6*O<5RwML~ z_lfQA0%35Kc5odcEU<)K@kN0Vm5N7Xq#qx%WklaO+eVEnF(4 zA_5<8wwaVWE+B9>_uG<^_M~)ASI$qmPczXe?f(vA>5$fNxzdb8rL`;CR-{}#EiDJDAmiYqWDy4Gi^`t4rqKdN-vc0&z1n{K2 z9gjGI2P4};Q&W8}8@7`4IRLzLbTYB*^Il5mK|F#?FR%?kBA6ETdDtrnGUGtXi{)S5 zkIt>I9?+?SJQ z-mk#ewVS|g+Qhp*{3V&y{7=WTl~647+IatAza@92#k&JrNwV?!h{$~Rna8{3Cke>( z99?K==-eB5c~A)b-C3mB{X65vuqxY39~-=!8D<6jf6{)|KC)9>>qmg!m0O7lY4E#V5>{q9-@Wf{`(6|ZmKMkiQsSF}Bla;DGCt2`3-7kChbatyML@ag z`^j!(-hL1#PZbD&C<7B>!zXXMHvP}e-8_G%JxB4Dd}K=-FQZi(#NQdrssQ7>6--TA z@CgY-BMC(E9Yd36C9gtO1ni}@>oDR$m7i_dDe~maicKRThNv=z9N;rw1)cep-ez;o z+@cbbT>P3`J!{|@J?DAgpSQ@|@tZmv^x3%#8n{ZSEy_1}Ws~&gj9VfTp8ZSha-bhf ze$BWS%YOxddt6;0Saiexnc0t@cWPv}d5akgRiQqanx5XLQf1OQQW;PlJb31_50e{N z0}dU`@F?iQ1O1vIgnO z{`5=yp4j*_bLzDe9=l60!H|!hXmPqBcf1-CQL{||33{HkdVO`Y zK)VYV{u#ru+v)OqOzzyHWwS?>Y%?**tR36;JDX{>lx6~6etn9A#5;Cay0Hn77JKZ0 z8upCdvO1R8qsn0Z3(OFo!*ew+8<9aZv1CC_CNhkW;qBw1NDj`tsX?hE^9Zp9v3<*v zfR#%t>fJ$?IXIA+&y^Ooet7UcsOP+6|GAvvpc0v*Wqxb6{BY!5Z0*tT{t;#?;Xc)g zU%N$bt|p&leg4eguXt!%d;U%IxJ)r)dk4+VEl~j9ibl9nst=3 zq}A9M?-?qi6ePl#2B>~fq#o!R@g|(AN$0Q9M_--kyrdQOjvG;avDr;zhB$JNC;{sy z?{JbN6DR@6`y{|p__b_?n0t8M7+X&=nI#p2cy!DleDw|HawiolWyKsHX+(eyt zT$&VJ;u#Q&b`?`mtGL-!|G2jto*+Us49B2r?H{`{aX#eT!mA6xi+OskbFiB|-A=0u zJ*A|dhLbtPIs31Zl@~=W$UiRm9Zy0ZrnTbM}rr)Y#I}uG9->#1X5I zd{{7ki#kG`o30>yG>Fu;6vHb?I-sf01niC>E)-u5<`RoCftiqxxn}zas|@W&MX9t| z2fl+!GIUy-(PyG0dFqT|Ua3!+5bjc*-aYbq!j5!6!|^BPQ1Y2tqp9ZKIVHU!VJKI}lYF081PBR!lT!jn4xyH7 zDfY(6;%M%&vz&%<@|_3({Ui9VCAYvrQmnKiAN{i#Uy|ORHDwVkLoA?&(?h>34-t`Q zas5inWk|6zOmo1Gs+!`0x50Eu-4^fY2yb}ReAHk&|$C!_H2paQfZ#v1D29sJ18y0Re&P?9%QWobC4vKYx(K zMK;#1UweMeJNEsJ^E3Zn{L_7Ov0}8b61O{Oo3R`Y)Bhq3BmY~Ilr|O{9&KP0o|`EE zY`}$^rH-~EV6OuYK^CqcVib{*ATNoEmmj`jE-=q~PB_S{g>#oDND-H(eZkO( z2$`q(WRDe60!rl?F^JFtq^oJbk6v7bo9OdO3p7YBuH?tc#*B2Gre(fXk^TpJ{ zFWk$@o6eM?v}Xd>ZC8wJO?aLuglXx&YLgDE8v}J`w9cLPgE&HG%%K27R34XOFD`sk z<%rXEgqQuFM~%S|Bb`r9MO20xE-$#=5qDSAbrATE<7t$KstaNq@2SRN=p$i~&oF_$ zV->eQMxHhA?pXitCfG z*Bi1sk6_v1UxfZpBWZC9_VL|!M-AvQP_`9X|g=Wcsa_Wby5O`rrAua|OIB zLb9>nkLE@_ixGrudVoieRA4~2o&M)=;*NL(K4S}g^2D9_j?HM|CL}euh-=@l#grAo z4JIkfcQbxR3rfOIA?K@op{1|jG->o-+^s$=ASl!CXC>VMq`t_c+LQD*U|M|~4hpNV z9?nKU$-|9->jY++wF|GTDVKkJ0pW!+TFGgLA5fg?zIEiB4b6( z5HNq`sFA-K6ntE_^ik@%>_gB2o0C8%T`bIlgI^Cur-7H8>%qOf+0p zW@e@aK}7#rEuA&x;gFl=(C zEmOpq;`nTe`Mi&I`eR&SOQTEKLxSwTqQMv^CCRN)HbbOww+)8%Pnl2gg_$V~M5Xnz z9E~UN`s7-ZLWw560=e2{fPMOf4No-%Vm7XfT2^|ZI>(>|lvOk>+IF$)Y z<1jGh$L$MA8c}p$Mi_$(S`=BhbM-J>Xj+VPHL_MhJIzLW%AqEi2(B;+ORWz5x;F35 z>tdH=k@xB2;JDp6YF&{wkK=h@pNA)PXIRi4AlU>t8PDT~(SHp^*Px%_T;6$ztcdOxB}o-Id5{gxkDA2+bZSLjmD7Cn_1-SqQXKlcaA%Pfry-kWYO6f!0~*J zKS{qKBR@&vSkpcMnxJDs{19$`nD(tAawyOdClrjJ-J629Dw|JDmR* zw=HoHOQrq8iy5M3owF6bj+^x6fPgW<8O~@=et+WGAD(n21(5`(i%aX6ZFJaZK>99G z_P2=dfdKl8(-FSBZ{gT6*BGYG-do}|uU`V+(#uIelWrbrP?USP?H>9DffB|4*cv2s zjvw)&EpHrS1YtxvDf5RE@u`b!mTS8~Cn~ep4xbG3q?MI4K}Ch|w+(Y%5=}EyrMfA6 z8_e%7)X??92DutCv!`GKNH6j~Tp9QGbH?#u z)L>B*ftT;MKITr)jMD7vLI>@aeDWV_aVP(loFW^AY`fUM+ zT3G!uu@baI&|3W%uZe-m1I^v{MG2WlZXXN`XxXDLdB_0saBUx)?B%Xk4KRysMaUz^ z#x%Lpm+0lcV-5Ihm&b<%!q=tMDw2Ar7k}BYl%YgKfs*1h0e_#nrVFgln1O!M;Il)j zquqXISkRh3cg2ERTI`xhw$EK&3@vHH3uL;8Ne_Ghm`s%jyVhP4i}EM zLL(-QauL>w3fsAjq}PZ`Fq3pc+_W=Lmh~U|hCqizHlnS`RnJQr-jfBA;-j6_7d$B| zG=tndouJg)*yLDkZFEQ%z7c7>%WGY8L#sK62gAr&4iDov*i2;G)?*|m`Gcfjtp}YI z{MlvI)!JuOyw*$LbE~EM8@KA8rl~*leB>SQjGKRmse7l9&&<*4_<1XEuqC-~vwy8m zOsquSKX;t}A(P5Y#g8@8@Dfw@66BDFBvo&}9$8U_+oe^pI8f1pmsLoZ^H9z}tt3nm>U)pj?QgYu)1h#9}BMn@mz%^2Ccys&-{ zXN`$DpGJTD*13GW);#=+yDiW3zncStdF6uZ05D1zLl_BmDtw4}#|D=`X?!(fh>NyE zP3EeSG>VJNAVX>L5?Jw_8$*9Oq83KEd@x3RghuDtsQb%V#A#1hkJx~`;D@BbsnR5} zq(sHL>{7RidQ;81w%aqZ{14SK$m136>SnAZUtD%b)Y{^J9O1dHR$hSnFOx+D#f5qe zBBB-k&rt(^t&-CzMm=zdoTP(Sz?>zQ6!xp6xHNHTNPvW*!+$UpVa(WF!OLkVp|bv* zThEGH8CcXaCX4XUTxmX}La|3lLK)Kew$kJBiUogrYfH(&L3As` zW*}+|cQTTi2-)0?qu93}Wq3%oP$nyXE8Od?A@`RP1xM}UZ&fHVvMkkFw#d+7hmv^U z=`q=H@5)$yr3w{b{2yJw=?3UsDCY2A!z(7RqN6?|%1JST2Jk9maZnmoeQ|#PS@hS$ ziMKw{=7*BG#em2^3`AIXVWiQCe;Yh2@06uFtR+jnd6;Sz zGh_;rJdm!wy9`F22!@L#M=X5#&Oa=(S*__b^(^(2Bl<**Yr9fjZE(lGB|Xx8oJ>FF z(3g5rz;ziR=;uE++}J|kUEz{F@<_VYRz3&Oh~$r)DKM|K)7aW7BY>H)>aE>?MfQjk z8{2cS4NG)cNX)y)6Ve&P_Q=K}OtdYYmT_GTa_DE38@rAu8|Ig9S$ZYboEywPP3Rp$ zj65X;NGfG?enwXdi(NI&yuy_e; zYVv34^zZ-PiITs1A~E|yJ_Bs9si|v9!)pUk?2k&}$<5PGP2Eyv7n^Wc6`J^R$&2DE zn%{gHQElOqv-cosO}J&xpn2qgveO}>RcB=!7~@(j&)F8rkG6Xo*~5A zQ?;dAsta_9vGX|ea{S*G1Cx}Z!2kRgz;jRVvosL^D!zCK_V`Zt9B>dy9s(h>RC;_c zIzsskm2HiChljin!-;J8kbOU5JFsr8PUH)sO9C}gy|CL;L#f-2OCqeJsee|k%F4?E z!dHzyI1<9jP-7npV;PM9waCj*xF3gsd98dbMY^XT^$~;*x#hZ0Wgz|vuqswPxh+(g>Dly}HX*L*(7?bQs!UQUYDS;&1jT_B*D@}D zE>jDgkjUtK!WMW905j6|m9yZjN{6bEj<;doTmAP@{-5I`wR1!JC0s!y5v=j4$xzY^ zklC)8{Ot?X!lf8-us|C3N6JjneoSY1*Aj97fB2v%m6dco_v{`t&HdNzgeM+PNwu}K zoo<8f;<*s(l&vshiu_q3_X_iwOq$$l>IZIO0mQOMbX&^zY@uDF8^pQ6%Z**2UGSLY8&teb)$exq+zan%@eq zxkD!qjZR;kFI3@zRR<+6pszd6L~w?sM&v)ZhgSZljfv=;4u>&UeWUb`-k8Kd5Z&?! zFCg%gENrlI0+3X5$XhyI?!iRv8p?CI;n=otRdrPR~jj|-aggWe*^CsDOJ z{b+r;52?BidFYVxYa#!#w8F&C&X(dDmYWd#ZY#>|@GfzGh?-3_2&S@!h|k68d16oq zqRQreBBc@pxq_~@mz6ngGk6s1N=#8h$DO(Od5Hcz-}cTDX+*8h?z5N;jH2y{UcA=M zlM2#i@mHm3@>eGLdb^dUaMLiTDwt~;bKSRs1}&?THNPp4xMBV3**Qa@k(!;G38cEC zUykMe(_)v{OVm&dr!k$_j!x9W4pbh_%2g+2rPvc+VFRhgWUHLdom7jGa!=|#djQhe zIpzjOh2p=Jysj2)$sO!H_li$+ED5ot&Wq7yfGHi~+&fj#?d)%1PsL3Chh2D*6>$fS zvlS#1))ZD}@`22U5Sb}kN8Wq}{#zmWE{vR4`eC8)_}D4q*h}>uA(rRGk6uQW5f#ON zhnC?73NMVY4<*CzD#0;5|1p*{j${L13sLUI`gL849$nbOS!!^5hEuV%T%<6j0v~IX ze8H!q^{sqtHLv z)=7R0ofF*T`nW2WI#rcC`h>P`+tN;=zt3Cm{EWZ+IEx0V_5E`?dJ(vnobg&QDR>plt>)xn`8BH?qf>=X z!Gaa&MwPg#0H-dWoKvFpRlMfxZOS7Y{+&0aZeuU zH|=(1A7uEV`_ph(doZa+@ji@eD zGC8#27v$27ot|sJy3i*$+wqKu9?&A^?T&e@not<1JD!rw(Q)a;5KL#3p0>*CG%N}P z%Fe3I)soYT?({kAFny0AtE$Wf2nC8^HCxJ(4ZchSB*0b$^$j*a##0n*7@kr|>;~Ji zn(A#=>6hEL&6YdJZlt*0xDlQCq(I&*- z<4AvxeKdsld$fm}Y5Y;-vl~5REa29MjEVR?FY%26>8c9tR^aH|@XgpmRclOiG{cW&xyiBi6aSs-yR4+mqTzgmBHwm zg(o`yRC_S zl)4p=I%eTU9&qQByVh6_cNyx+I^%}Q8v6iz4wPGGA0a+Vk`{RHZFkx2x<^CC2c$?- zJ#9(6vetAAJbF%BE`3xFocXcc(!;asVU3vKLp}=HmPE*UQol=izfz!L$|CP=Ky<(4 z7Q8#&?S3DTIj!Hd{4~3HgRZ|Nz&}5Xy?Ca840urPOo(BRCnbTXsMjS$9YF^Yl>-@U zER#Bj6+gPrjfLeWJ@-VWKWcLaHEVSx31DUBL)7#{sw!}WnX#rtb=#Owg58#UORs!) zp9jRF=m6beuxpJP*UO(U+AI}4f|kiI2tgdJtN+i-5z){oORhTT$Y}5?oCXuXk0FK< zhaTM*6&R`Ad)b@g-%FTy4lvyBh9e5qamROChJ_4+Meplx-CW1QHX7AXYx^dhpJPX* zNZdxAYxLPPIV$4G{dXBzll5Rap7l4_qR@Cufz5%Hu=yd0pN-g97fa&)2_tP+!sqvS zC6yoYgoT75t-s7riIat8qon&1B9+Q~O_S|ymue}Y_D91!a3^!>9aAJO76i()G zl%Er7@CoLVi|MenK6O}D(TKOjnQN*+S)KdsmG7LSHeY(8|3lE-rPhMND5MW4R;FzS zn;E^7>M+ZKztuG8EMNBf5m}x3|KcvGDfbCvZ|B+HS;}*l6vx;uhCGn z8>i@kv}iv}DAziezXy8kSvb73p7-9A(0-!TSt`UBZ?LhqPrAjbOiYXx6O=6oZ9~cl zl4q1k`{IUmgMyMLdVJca^1+0hK8-`6TXL`6oYLj0RStAo0~X6A(~S!txWO#c@8x$V z67s24cqbE)7~S99;&l8Rm^bWE)93!ZpV)rpfZ&t76(ABh^o+dGM7#AeA+$AASljDS35G*~(vH;}(ru*GT~ zoMwt~Q+U|Hah4p~%-(7{0jH%Vrrx~RG{TYRC&Mijah*_+IyQPwA6UtZhGgAxmANT<=t@?yaz}r`^uS2U4t>Jlln@ zN| zeex#hk=j(Ex?q~9`&qbwbr7$ z_5JpEP$w~SbIa82Y=pxQ?XV-Fod?j)?T3E;%u^RGgbz}cOZ5R^0JflOh}Lx8N$6<0 zaQWP#qRREoPA+z|5Ua$hwKc^_GP2P3{-TBR#273J;=ChrJPRxF%!}@<1N#_in_7%# z(~YbeAd>bHqh5}2F!u9h$XjwqRi&?kyc<5GF0ZY%CPv-gpegKa8HU=d)#+4sol5=~ z(9WS1<+nMjD)nD86r;T}?eM{f9P6y3V9Gv;;F%M=aK>F+HS)SNnPk~y!A!72&hDT~ zZ-bW!v{-OgB&!vWP5m|^;v<%-S;2Gs|IdF+Fie4f@^ScBYP3Rs?r<7}D`MEbdNIu1 zBhy3xLvCrcSnEYxmgz+Rywh0bKw@4BCD6;K<8%Woet>H>Hr|LJ$ieZI&t?ss#WYp7 z-YbRF>Np-?un~*6s5#u8DDvavIDn2jhVA(B!lv?vd{}Pi;Aar>94!x0=VK!{O*-u!93EHi=H((jFh=KU#!K6c^8WrS}Q>dLiQ=1{8Zr$9J(i)Mo`Nhr*N!v%W>m z{mdwKm^nd683Kq@kRoMzyueT8kQUVD_mMLpjvtxy-)D_ZqH}Hgza)c*S8{U?NC~Jh zsIe}Ka1K1Nt)AQUMa+{$W?96DQ|{*;$mNh5Tv$|x{>ZtgLz?a*75sM*vV6er$9|_V@$=52Za6d|rcm;2gfvr9 z1o-DX_wCuW^ns8y9kT}uNi|CG3gW;6{&BmwkVgj#?#tdYC z<;)0gxRPMx%y=y17_uFXv$Wr#64n&|y7@+QCT7;HEwOCt`m2yc%5p+J1{nG+0<@~2 zQ()M-Fl_z^6IK6Jm2=-yFrOI9jb-=lkyi$6v?KdIV`aW>t#5u8fp<{I`h`SV*iPjqU(xTK4`xh?a!Hm ztvq#teVj9~Y-kuRGY=OgHy0D_x^K|zyhar`!YSb{GSX>0VZ66mjF+&~PLt(;@*ca) zS;dWSaRwpZ+#GU}{Y4wlSIaE=I9*h4GeX_^5~;X-wjO1%8!NrBy23Wp-x`Jue z_QRj+PDz&H$5F{bO&Q4;{q`6a%Dx&*)!MJbRE_EaL1guM|_(%@JA|rNZkvD&O^-uDzhtWFy@^4QPF@`3L=Af{B3ZfF8 zNK?N1qAuu!=3&~j%OPjDU>E)%uI0sHBE(>gGOPKtTf2_U1m!pN;msIWe}J@gn@!V* z{KmTF=iJdmAd@&E64I%~j2MbV&42J1qN5{>)9~-bX{^J5h9cqQLNN*+%=-F7h3<7XRSTk}s4D zHV@_(EJ(ugxrj!^PNi84zTg+y7y_PQH7y%0LU(eq%ltCKGnY@7^Me?Saf`0!vP@za z_bcIS>5})S@tG~@D0a3GEr(P2p)^BnZK2Rr?2^t-^8dt8_4R7%R79EkQ+r>2l0(RpCm^ZnUs37U5^!31M} z>}Thu4G$kdr$&9~jcix43Tpx$8S?UcoRkIcaNlmpUCrozT6L=X#tVK(?%|7@?=h;) z-$rG>`;*NWc<;r7O?bO#huY(Ca#i4S;@ZFall{yJb_^(%@SR&#@%yCM-L(ysHGS9! zsy_(CyIv&OFip%h`_I&9-n%@=RRT{0;OWN;)Ce?%`Bpnycq%YUOM)@qGaG8=jO1PC zgT;ykGPYEaNUdx$Phrg!mUUZbQBWCBI}-b?d0e-@6KP$Y_~dLc>ioyLSd>bJ``@4a z_6)@1k1AM2MG;vvyGmv4Q!vwb#%RMv)wU60#cxsR`hg&6=sZkq!F{QyLx&ZLi3aR35kj7F6(2Yl^61yDst#XS9fmZ z!H7v)P|}0!&J#BKMF_&&VSJ}H2@|^!_S+A6^$ExKlKI^WaMx%l^ysRgqNk4%^4G$A zmjYpuS)soqgvfc45Fq-S@}&msR@VO5dy@!TVMQqQQVGPSFLt$B76Esr;#g~Dn=NEXHb)5vVQkw`2R%kgou7AB;0N>KT zP3DlPCbpkX^#a%YFlyK8eOsDyQc}t3j)M&1+^tulYl`n9p>H#8msXW%S7TNwF_DA&CE{@ZzaFGZuwEN+@Vc`@Weo5`M zf3(emSBtHd_*!3fZc0dXgzbJ^Bz{IWg2Z7M%8@Ek$CxwW&P48|tx_?5jQzb|tj!No zr<)rV6;2`G0+LL(SY88hyt`2+*;(d{uBCIr82_2cRG8vaMzCn6C{85Mz$kn8?rt`d zt?rMMF&*=Ap_$R1-TF`RmrV$3<;T$hkIB1{>JKV64-yvM+nlootds6A1o==_4m z{@pqpz3S=3s)g2<8tWe}x1+MMkKY4SfQ23~kfD0BGu{$i^8;o`OoX9j%H~%^5+u)0 zGM03M!+BJZ6S0R)78k?0Lrt9VeEH(~TF{2Cx>xT(EZpcS=AV+Y`BXCS_3*hEhJ{cX zpz_FYc=`J@apC$Dt!67OcIaEu+rJUL>vw^vV$S48y}@c#C0IX=w>R)}!Kao+tAH`~ zPH{W%l1|)AQr|WjWNKmen1wy@ow*AZ>9T`Qg**9H0VxxMLUF98o&I;sBUadd?y?Yv z6Ti(*44{7;l1E5QpTjkpFov9oEPrUPv#AUUzA43FiWv)w*+SvdvG^QjSsHyMZzHs% zLro){4Gdk3+TRcc|Fl-4pU|fCUfr5m|IQ!?k`sl6k&fOu=gJ`*kBAwm06D0Msx3Ws@O;i*7rp^&TIJwuBO!pUUtqPJ(=?e4PP5{G@jiy{oHw2&4 z0M`{~L$bid-y&Y-EyAI^1vP#AT^fk^*Y$9KU~$B^>lF`1 zK%&i1Mj8D<0V&O{_Zy5D1zTog|E$6ouVfV00~^Vt`W3F_#~TOFIi2d%Ec-UTLd{A@ zac-kSHKDm5|7Czh0_`H`F@)x7u zvI6a$=69Y$Y-2`lLbq2>D!kKIQR=oYQ;Q>uQbQ%*Y(QKoLqe-tJ`d&BN{j5WTwYhv zTA-?3C5)H8z^UPcES%R$rF)U}biM()i$}oi2m+L}4zui<=;5q=aVnt3;@6G!t7qP? z^TSV8Jr|woC@KK{QCH^us`1-*P{LoHNg)btPfn`hRB)D>KRi}VJBR-typbQ zw?#X$Uh)xp09*1=vIIv8)i1&!ckldIyWEZ`UR7%bhfSQdh6%gvD7ZvUJ6v z>+iD1TyGzBxC&X*a58!Skizg5s|Ytvx;8coJ{HcQU&k4eGyI6{JJ#K)CvfKHnXCQs z533t%agejJ#AX%Iw4Z}-gP~_-3Glb5Odz#0`4-p9o?$rpg;d}OU7px5W@F#w^r(+u z97~)g+Q^qZu2{eRFJCKn-TXOWfyQyhPBkRIOsWqSwV28I8AT}PA5 zfyt!RXYB%vU2clJIYjpZHuO^BDVOS{R_`ftt>>XK7}=c1{cNUXB9B-HRoeGp z>R$u5TLs6%q+b^$EYjS&c9AM0NkP6#UcOz$=ee>vVrT949taf=?fh2+xH@M^mk(7*G;k(SnM-qDr+V~%Z8J$ zQvP}9?%FHZBYSy2^rV`!%)nWZah1@G4GsqecwedMR2Ug$1!= z@1dwq3ixiV6DB5nx9dH&NkHn?^)idLFFEf>y}eAZIM$}gcf#2LJ(nQkQHcuex34EMP`$C}bAI@v&zr`6u%iF)4m zvd2ZSw>CiV{;b?ue-tN_(&uu!%xrbCL#Thm1qwU*fxcR1Q)BnWyRc`fk7a-&8T_yA zflNKx*7rsjI6G6wlE0a?>2k#7`4~phlegXX*jG{Lqd_}0cG7Z)3$U*}VN&8NH4epm})D^?!p` zJ*1$ueH1e`6kL3WZP6nb;a?cAekJues(C|KFKyc&0e0rA+dX=|^vl|%)z2o%HI!Z7 zhNVNt~rm_@ToqKAb@`5<9gi0c{zQWq63#g>kghXQ-BQM>mGMyR(g)k zb}d;f0fzNAkxL$DSifAmK=_RjxHqm3pniFlcfD6@N1HqpQUE+A9ia9gGtf(5u}+;x zi`3$w!@Hqq%@+`D0Km#IIe7f&=Xl(#UZ*Btt&D%r*I=E<>9{Tev?#Kq(h{HBr8FK0 z5m^Px3gUlJRqByEdfY!8M%`FuoO(*KYDM3Qz$cxoQW}gG=^}h0a3JhkT%*Z}s!227 zNyF{_1=BZ8C-dY#V&?(#hhi)CUIT>6wdwSUb@@nZmgG28T^ZQ<+elgZ$)?*9z*^AA zjf-#AOT9wfx?eK88RI*SlH>nL8xO_%al}bOsxc3aP`z79m-^guqVvPy+Lu$THY>a__b!Wu=Ogx4TV>ueUq% z?cJS_2L`55%;dZ@Q0uQ1u!yJ;Kap1>hIn9UjnnYp0 z7weo|2n~uv%lbc!R)~9?`Rv!3 z@}3MRdI{F*raY%E$QK|x)tda90!WY9nx32R7$RB}VZB7iu$Uq*$@<_69dM0B@6Em5 z^X==(V3KDO`#!LxcV!!TI8PWr&{{+{e#~xDd>#nPnylQ_d+%(ZxpNU+xcJs zB!H82p=3Sefu7ned(J%hN44a|m&Akfk3~d$+$_&>Ew@+0@-W|=rTlZzIiE6ar$pgT zFrTqb8YE+$WZ~jC{Gh6M?Y>00zIh%KK!IE@^K~wvI?>~YuP>}h<|7Bk2%AsPoR8Lm zC&rgkqhd;Ur6D{uxFm6my1YV7+8Es47E%jI{tPPHlM*K6sMP`kGO-x$)T%Frz`aqH>Lq$wt+`6$_>l*u)0P%3mPg9UGTb@Uku`+`}sNp zK~9UL-Jfe8&tn4BF&@`i>OvpX1M1mPh)C1Ag9CAB#IQ)C;c@k+$JRZ`T?EGWH6aS} z6-K~L^f{v#65=0ll&uB|t)Sd+9UZq{3!y&;sBFfg`Z1*#vh5L;;0b3>j*rrEgx%yn zOK=SqNY%y%7vtei7q+HwudKmUpog_@mjuVs_NWWP+S1b*50m7l1^R`_!X|p~VR%D& zNjmsoW2r>h5+m4nmmyeNJc4LZeSN4xoYMi@O|0^W(m2^+u<0+6ySl?p;{^LYQ~Dq` zzO%ItF{viVt6J(OR+!ywD~OkfU-|-*!pq@2k7{66Ig%l$nhNR^VhhR33j zy^$BY)OvqMvd&>J31MMpo?a9-)Y?jGdfNw9*dS2~E5^>xf8KI3=Ks-3+dp0Z8SBB> zIO8Is%zzM(rfJ~FRT^}beW%X~vMZCz% zU!Ikvyk6~3B)%oQ=Jn#g$9tysT$gm&Wgden3JSEy{d}q<2_zP#0*YnMM#mNpvAEet z5Rj3y=kE(UWFFxeg=+ON(;89rVVk=R!_SdDq$GJ?f4$k7)bM(YlbF36v&t^pM3Hm%=Jlm| zQ%2K${Eox#<{4SnsUbAWzWp!^zFKOQ`PF~1`oUWiM27)DSYGYYp;u+ z8}x|et$bR#;`A4u;w_Kl364?BwmYU6Rhn_G*QfsLo6kS5StzDwy_ukg+ZUpN<0h)2 zWfzE=qWL_uRqI1&V`=QYq`P;SF}`~cHlZ&j6v$m?wb81LLf4*zKhty;RckarX_r}jSKlVjrTJoJU&0%>0eEWX)b>d&e zABtdC?-4F%4=}pigN8bky`5ZRca~_t3f33J^&ilfz8P{+cH(^5A?%0$^xErp3E>7@ z5cIjcw$}vRP^E3&1ZX%2v8mvj_l=&hUB2|i1{CpBOgiJ=L=@3t~|x&#C_Ipo3H z(-EN>oy^FjN-HBL6iX?}jWkw| z)lduyqoVuV!{!q!=RlM(wwX4?fN!A!WA7LmM`hvkh{JM=xz0;-vE_g^>y`q2SSWm zSj%3oH-N%lvGjkR4gBPLphz?7jZnqf@s;E!2XtW_5tBr6d;%V7i(X&CXMZ11jq-u6 z?ovfDm4VL&D^^;GpY|2fUR1$PfR+`hN8{J)yFAw#nzth17y8q@3HY^c*)#*nme-4# zH66dJ$u)4jp5syL_ID!u?&$y^kPww7zk;8UGvkY_J2Rk*u?v%hF(igU1Q^-5x&9Dt z@(&@=Nz8dW!>{@I9T9W#j{DHc`y<2?f!!Fx52|&VY2ZfcQnu;yoO9MGu#W!1Puv^% zyfST`a6iXH`6`Cdd!-xs3ea=MUF&LpQ2koN(jxJYN6_=!8{&QTonTkHt&6?3o=CR> z=XBCr^2GVA@v~a7EXkgPdmY7|Fs|K9*j30xkF~>5h=t(xewv`=!8Z#wV;`oA8c!_u z#>{64s>1;~lkgxT^5~D|m6vbpPu>iHOyrECFRw=}AD_mhnSr2sdNspIskx}FN0O zd8+j864O5IE+Kz__`QY7oqk_@{+SdWz6yyc>OVRWwXF*`R6F^BHvs5IZHMi1RMkT+ z$hJo{Q^Esu;GdU6xS{|(S2}8ox4u3!rO2eu7^nHNl zzTOsq3)d#Yn(@K3eAQa#Ypj4R%;5}Kazh64+Pr;>V(PC*TtRa2<)6#RQDvbs5DE;x zuUy|t$QRq`!<*^*Y5ZP}E8K?2fc4&fw=~av9Da6~>%J|bPE(?8Q*m!g(CDSHv?5Ax zpXd}b^d>sC=q7YCZS}KK9yxM(IXbhHNxdoG+ErC1V*Cm zv!GLs7V{3?l)n19%sb%HN@-P!#wxbGXE|&X&PGr=r9XtPsr1j9nDsA&Ipni1kVa>AS ze6=noSZt>rYReHsp@{i@w@lb$o#!7T`24!cCl@A*sZ&*qB{8kv%j3UsuR=Dg^>BHI zb5}p3=uPizoCA0#p0nVX>#-Fu7XY!xhc?QAlYV^Y45j%>2oK6{C7hf4Uj<|w;9S-+lTvoJrmv-+N!hLt}Kx2Jy+-@yv#!1tSHBKNp z$@!q|Dd_Q<(Z4@XVvq}N2`o%#5)>w3AOo9*X@!wR-`D=-1LQFU(hQ9R+)<-Vy`5wb ztnV};`=O>T4EIprY9jOkbG^5_5~5r@rd%x-c0ezVhtM0enY-f)N2ukt2j+vP0|E)I z5(WtPWD)`-ghCYatQpu}+j^`OC6<=AUi(7<2|xY8u%bpE!%3Otd|O(g>we{dyUv-ou6)pOYN zLLT#0kSbKiYL6qWR$riia7}4+25B{NX&nv4BD0?B1f?|2$~-Ns1`Z5L-A`Ebm^Am~X1 z7-Tl0jogZ918v7-E3JkLIKz}Q>_v@Gve7@iW{w;(7lsz&oMxld)D|Xq_oW!@2AiQm ztRE9a^ZEm-P56grq;WLy6DR~fmtCo)n6vk3d5N7cE_9& zZZv$2_b8r&LRK{^g-qw1vL3UfV2(XPFe9aWiFjt1MwHNslHa{ z>7B!M1>DaGK}2ISNG%eueLXe`K+BLT8cXG?xfdSz-J%Z^kU`I9)guoPzZ{g^!N)Yl z)3*_^KAfvw9oV3`$2MenX204?@ZMI(*XdO8_l|tL1^Q!W@_1J4ACIhR0Mk6|L}Mj9zJqj1(c<~ zG0k_gZIoz+{L08C40KGryX5o;P*rp*e!M%m z{QG)U6~Iu$U@}@f&0B;QnTG~!_s*`K*^NV?lba?p!ED;x(`-*`~em8 zi2DrvayfP>_*>UOXnox;SsWQKM4t@+2qIjxY;l{a7LeQCLVU5#!l)mPfS5k(OH=Sbcuh)EW@yn zuCmUCqymevs>y!qeC(5rqS$>AI1~%DAWI$kqCBiotj9nt$cSQh&wPuw8LI02A<^#F zR<)f3ARG7h&@U>uxzP$X!6HQbQd1IGmJJWW6)VbdHFdNz|3U zJMFRHu@oC{-OJZ@6?9Rn{Sp-=Wu8r_S43TJLR`Io0a|!NjmUWuZm1I z-FRFoI>Bq^d&b*uU)iEBPsloPh1aBebA(ywu*r%YcT{K)ds0Zimc;TthTRd<9ysj&HY}IRaNSf)bX}R z{{Y~{84;oT$&%RvLL>zW6JL#`ojbG*=vmM#?y<5Bq&d@c{#1(>kk(|z4t3B=$Ktg; z{^mX&v=8Ly*L{0x=D4fcI+nfV$Yk7v+Ol{kmb_6zOtooW4o?+lrsD2TyKn_B^1|;F zy||cGjPZ5t;1SF%@MkPp=9vGk8=mSnZV%wfsByA$IxQO}0^(eCvknbgIb&HvM;c=& zc{ti%M8woDKa)f^-3A%)k(T_1yyiE#d4EQfv=(@j839dBhQ1kL;|}MrkqG9{xe<0P zF6XC&M>FN-C>GfEY`Jno8_%HG)xbEm;BqG5Pj7MeEIs#lz2rd*9FtOMZZxE4&5e)U*_YZ6pF`qg1>;uXKZW#0m;DZyF@* z^R@Xsk4CCW8AIpHC@?EaTvP9M(e#+`#-c4_5FO@XL%&kg(8G_(jUV?^ox;C%Ke9xa zX77DOT=d60{8wVlT5b5-RtoO3q$?|eI{fG>C6W0iQ8OFQ(ts7dvT6%z^7@F>$Gg7; zt<64XpOISxEJRJ6uo_0@TE*fjj2i~{QiU}g)kNkk)FVDfC|SOgKG@tg2C)`+Hh%A( z5Q8i%omTPdw@}ISvGEWT;@VyCIyBg?*Dvd5%msT4lPXG;Hb3|7dT!aHB;_e&&e}|Z zDOz5}XB?&|&p%4qFN~&Wgd{59=`h=jXwdKV7v0g-FIF^D^Kp;xRr_I<F?791;z6?`WHrL~Xju%exLs8obP42g7~S^0eiuM6DA@B?ZYP zez9nrLGdxqiIX@*Kf$&8t82Xfh+Qo`_@W(5U28Kt%q3?PI3`BLh2o~KeMfAIpsVwI zzB-dR-$fBa_J@}vGo9)JP_^v$C{zaZ)tq{P-S2#<`!cOeiYt(VQdHfn=w3`A<~QDT zaoUOm?01{LTx^_Ni-ZbbU(pQ4<@?{Z2QAj*pUm>yow(hNKPq9M`n>HEH~y~Iv$hAc z9K{8sN>Wr$FSxy6##E;s)p$yWS%e z`Jirb8p!MBsgIqWlW@Fw)bYl$)b)I^R5i2jb6LP+bGMn>Oo;n=N^Yu2xrA{s2ZJjd zlH6#@V$i;Visl^OuMUAeYR+r)C}h}W#TzChep*x5HlGRuDUJqQO0N%BWwEf@Gw$$^ zY##@*h$5CwaU<78Ja@;SpwXkJGM)sbCNy^U)XxSR+;RQPAXb5u}*mD~bm;tYE&cCq}NNJ8bBjDwfjY^J3*5S>DWERNTwd@jAz<2>lsb zBI9zS4U%jDnM=0exZPb@4yFIK5iAPRazeAZ*;cGY>E-`;V?EXb7?G2q8TuROd9e~b z^1QNovACk~yC{)6kXuV4l9WWfg!jb-`=9+o zixzP&+qRy(iV6$q`SEIa-$kK_)r=)5)WH2@O2tmm=)?U?D)WV!e{T0dtRb0&Qzag; z{0|9DyiZFJlHQ<_)v*dI!hqK_vtagBKcU2uA*Ze(Q?*2~Vzx$&WzYyO=`yS}l7gRcr)< zb;-6rl6a(oq91!3?8r;#0L>pByja&Z?!tl5`>|Xxi&Je#^FRBoQ`r=Hh4#aV6yvIz z`wKGctWR4eUT-ilc13V%YZO3Cpp%(_;9g?I2W6gM)+B>t%Ff?;aSndpV;t1Cc}@7A z0Cn~Mlyx-KBCzFt5@;yNTjdOtnzl{{oL1r^8`7_In_&d4TxNGv5)S2YxkTfM-;Vp*HZP>a1zS6^Do_;+ z2_n4IZueD|dgOfXbIKf@hP#~TC0Aszu068?F;ga9$u=P_AF=Y|>LlAC3Q8Hu+ttS{ zRW_AamJtOJBDM{C+Kk(n>P>;d|DpGrb7%Q7vQCLC?ZyemZUGkZ1+MWk@8lQ>;~o_@ z2$XaU`8W{KE<(0AuK2%z{>CwL-Up4ale(ZF?YN{SDk1tyx`g<}9`0NQR5j zkgcz{19*}161wqKy9u~#ju?FG)Z6_5mt}!Wihz3^crydG^$Vmw_nasKf z*}U$&ms!v{%ni!8^h2nkmpF;f+g#@X65y7*tX~6$19-|@T1GK)D3n~5u@n69JSjI; zj&^_0KxDmD(P%FW-pie#p#UxbXUt~@nJoi1rZL)1au$L;KfITpZ}KDr^Z<)owv?^u zaGTYunzGU-bs|X`I+eX_4^8o+ojy z^KsJ01J^8E5~>WkCbj+;8wTu}khJw&E*UEj8?zb3RF;2Ohz*wPBM{_HZRw##3JAKu zV_=OSd8o0q4o<<=P&VgPcc|YmMXztxA*STy%6sFTAIhJ{kfyIpU&GX+%pPA=$IBmaWh7vj?crlmvI;h5O-%iA9)6W+8q~<}d-TdpC%cN{GuveEOn92K z?S%5*(jGWi*gwa+c*B7PAqd5UV`IZT1Tbx+0p7gE99f1btDjleE7Qgm;$;3P*0WUY z{bSS6(hQmW9L^(?h%<)88(>1$S$Wc9za19EN}v(aU;K?0<$K}u3l<5FTlOyBUuaQN zw1JiNDgyn~#jPrtMJ3b7Rn(u0hK3cPvs##2-TBm;UDxml$Kf4=dYA8inVoSJdJ$wL zpbU<3W2rUgjk>ZH23``@8^*~7M@ojXu1%aaMLsO-sycBC;%&Lwd-ecWhm2U=3)$Jf!QB_C6>tS{!4yF(iK(N1#v)>Y(j2fscne(6}oHa^y4 zrI*29<*5hrCzGw6C_fg;g<=I$hIAJmDu?D5lcaO$MiZHo3b5tANRCP!JOo(iBGg6J zv-jQDP{-ETykd|2sQMI~RfwjVZN{ewk}xi!vyrM83nV3JdP67S@hy!ZL}M`(>(@mc zWwh11s1_B*+0VzX0H!MR!oQN3dqf}!rfG1~mZSq0&L>AP!uNDIoVZrq)IbZnd(RYT1IV)CIS zY9N=KxFtwuSmlV#AHus60g(NLa0_%Cdb_oIF4{1uHOnAie)=ZA#%$e(i1YQu375Z< zvFRP>c_0qZuCpyM%=LsW{9GiUk6ibBc&)yPuhBeOqBw*ES*W0Gl3*5~efh-iGJPgL zrddnL-{s*W*Mr85P|H6Pa1xz($i!Wuqn;Jd#=hG zDwt;lp@v9BTvzaIkZMN5~P2xNl>41@1 zq}X8!;iK|$JE6B{#=_f#yq?SmcwUgtMjYVnUiGbhod-<&2%2!?xiptu0|@WjY%JWx zia;zc;)I!9-Y#!0`@76#b^4p)Z?Bez8rdjZC6rIy;esXu&(YIlVPi>`lW)OJbnw^+L9$(Bp0VL{BH~Bj_&3=3filP6#gk zfGUgnS)1n&KQ62`x~v?x2IndhMXV0X)3sJ*+ADpM)$L`pDzHM31oo7vH9W~iy!P$7 zwV4?5n;@2rtjo_iK~N=5cvT!j;s=d6sy(EjAg$Q_pVda zcxMuquIn{M{2yNrcnfMv^QnXvxk_LRzg`bJGV7kU50bK?sz%*?to6Dcl0*?}un`>g zD#`gUNLY`>yWWqh^|E8iO?uIQ&xcL~f$u7>Cnv3mH zX@xob$Xd-Tv`24~dy?R1&?$6^|EMVXM4{dN5ViiE46Dl64|uB_dpCb{N(eX z!L|N&oI9$3Hg*Qx#1xVYE7-Jd_xmN_f3f!#PH|<=`|yU~E`z&67(BSU22Fyy2ZzBe z5S+n-1@|PlyUQ>^1_>^~B@7Up1pCcycK5U2KjE!gyonylKkt2(xuVKSj(O{#)%U=`qsQa>O`V#ZH;0) z3DaZK{9cE4Z6F{zU&x8W7N@#FzQ$O2v-4lV=!0QhRZr#= zBJn1}7AVkSLf;k8fgWp5gwfBf(Un+elc%o$I3sVx9fQhi9t8SEXFas zEb>~5ZgvXMU}SB#TU1Qx-#GsEAn<*65h6hrazOea)P;jv#%-qQmr^)O;A0tOj;}48 zBS6(t-ecFR^9M@s{jGtmN9)M))LyigvG5_cB>FItSyH2>Wm* z@#-JR6i+K?hOBgnssfeQ`_8~7mGVF)&Y~4uA`vn*od_$cP-~XvVG7>HUSe0+_=H=} z_cQI1>>{w4$D*4btA)gz{))b_EytX59UduHQySY~_ja37mGu#(U0V_QUR!&Dh;SrX zrCJ<)YQl{Iag^sL**S@=Y0NV$EiuoM29J7E8%s+*U`?fN%mRtNvjbFpuo%@WxDnaf zZja%KJ=MzV+l475YS#=C|5B5{DQ3aLZC&S{PrAwXA``fh>*kcApiDK(&!1#`7;0@D zp%w#?(rk8&SM|8nb)b&jcE|f2>P8s6db3JH>MrD3SkL!|wI40=kd2$EoeF24jeVPi ztXyON(cSdp8EFl=5n9+GidjBN#%YtD38Cb~y7<~ToH6j{kR2Lp$NVwmWz?sx{PmWB z*8LF~NwfA{K311|k3Ji==iR3}uog#VvK-iaHxX`6ZFl19B=9v>!h~=K3{z5U6~~*m z9d}i?vtyncwk1KrB_6w7jT!=4@t?_XLbb$egN^i6vzv8osM^hfb4cS=w)wjJP6&w^ zUl*WvqCiOD$~&YRr}bE0eY%6Gj~lMsqqeSTjz~RW-CH_to04pr04ka5*8BsBkoAKsE5~d16RR+N11wzg3hL{JOTq9emu= z^%sg*LzvN=Kv;Tmv?7pgq$Lp484dYH#B$Uq3$GLJFN@CxQgTu@oGR5Lqx7|;zbv@+ zVFrTOw2?#KgMn{ipU*p>9sbDB#jLORiRQ-nD=vk=NK59 zwOS78`2?R%YEEhDjw4&N?tV2S!x)v&CFMsq#{E18ff{)nu4oz?A8h05i7#kND=DL( zMnplhDiIJFF=D70DUf!2h7GSFhW`9 zAC(Wfe!fTTbrY(5oV8JzcUQMy_U`!dRmFS<***bV>en(e|4zSQ_OmE6k>Ih@6P#=T zYFqs$5r5E{#8U*$`DyZDzg3YFv;1*FD);P$PHb)k4p&-{rpA*K zwjU}9v}q|^TeCu_&;AK4AjHfy*oVYb=FsM~Q{O#56}|P8{GPOllJmUNLy-;cQ!j*v zlj%AZw93`GkL2@C`zC(Pk^5_0j?=7Llu+LeWmL~D$ZN*g z{=5?8$eUs&>rAp}6+j8h2aABnH`q|#br?ZkRQav%(hC zn)BpS+T$q%0hV}SgtU>!h7uO{TeQ!Ibr78kh1J-t*yUc&Pz16wyrY^^zxkeg5w;bn zY_qcR40&2euzxe^=7k|05#9IUMC!wpg}VXMcy4Z6Coa=w!c(?a%J9%1#fOxTVHe_` z`{}9KsRs{9=XeyH&j6V#Gy`CLaNgcmOv%FZ5AZ6m))RDhZ+mt{yG+sd)I})o1tgN+ z;}TG-zP7w$lUi`HFu-dOF4po}Stz-^%zsPvGMJu^E43(w%QsI=Jl!JajhAy*h2Ah( z1?SCx)NKUmQIeeOlhuI!s7$Fqvf{n1%R7;CiaM&qld8k=^Q`Mhh3I5BkWrwu($q)u zt(i_w$0LE>FSgd_R(tyW%pa1<*xI+l66$jME-wv{<)x8PIYJA1!L*gE&~wp?qyc!P zF0A&|Xa+qm>YUQxlWIj0kh*coi~PDCXHG?1Az-A_avIq3aEA3oUFFMYolQ(G;+A1w1f$!8nSLJJhV^?w7Cp*r?T@*BQRv%irVB;QsDPZF zZYV1~?^8=*K%xo<2MS*Va~6-9fv)$b8p3RpP2)jo8gQaZxtl&9zh{0 zETwr7+9_12L&D6d5&IA5(Y<+!=2}?lrem<6hc_Kp9}XvR`G!6x<@AT=Bo9OxiEe9Q zRmwD&Wm|dG;_epZZuKi#zb%sTCQs3BP6G^hQR2BrFwr_iF+d^Tt?8zi$m3nLS5L!NaX-{pLG$%4>Q6~4EFN_t{#M`iimxid?p9%YP zGzMjYe=!GdhWT;cg7uvuD6<8k_S)sk4IZbp-@faSJ5k;2KVVj6|d z`bc6MSGw-TbekOpM4jGH8c(J*2YX_yj91>0dEE2GW9t~4mTqL@s|gw-`#O>1M~9iVCsX;n&9_6G2|n51MgvvVlzbp%B1r2CQxOtr zcyFQVMC7-k=&h00aJ9QlY)+}5&jKX|`&7D_1HzB>PiYg=WZ#pFZo5f2t13lC^EF6X zuQH*NWbS>8;CM_}c9lB=d{1W}D5Zfc{K0WzCl%0k|8O1RHo7lGfdAyLBh)0Lmu8FM zI%7Ra4%e$c!o}9`nyuAdrnt7a*J_MjLGu|3@gPC@RMnWqb1*Y@3@a17H*GoE!95e^ za4uLv*myu;t3&ejrTFL$dGEBm5)@es+JG^gmoM2lz+u33-4 z0NStJsJ_Kf!yzudz8Q{ptUY0BovX`#RZG)Pn2LmDrM-cV-T`RIMIO^s8I^A<#D?d) zzyX~TjTd81tkxKb3?Ia0!MagNal&HC$rDmnk{d$J)i)G~YFs%U-f zQP*(5)1U)+8=_4zhgZb~TLtS|m|zF%MHIswOTt=QWLsj@@3oA0YP3z3lq)PKbPbIL zXsH9vwEg&P(rzflXu?3>6{#vuxL7xN3?F?QJ!gopVD(d8vih9bbOqj zys@PRP@X}ajL6$V`#j~fVyr~EQPJ&la+FD;jW6Fi{Zc*O%@=(1XQ?0XTTz$Y{P}~- z#F+Iu=AxLYwc(&!Okoh zRIIz6)W9F@!=H>!z6*$$e1&gJ|3q0^Suc=-WjajtkU2Ft)8bgZh{#F9 zr`;$@HUUvLzrvFIF6#1z8wW!KWMwCdy}OO;&I?{Ns0@lJA=js5H>b4tv~va+Y*HTn z#Ks-k`p&DVngXenW=_-4T+Zc|>1!Rx^+%qV755LrK_8vkvhqD)4l90O+RAIbrHY8k z%(Jtm4UC~aG!FZ$OaKSF48d8(A zZ*u{fkjX0aBcAdTdHObDs8pq0R=yPSP+wHh4`0ER6E;|?d<9KI{?sS5WslPj_%Vg* zKeXyGhiFHUBT{UVoOvo7os6XKV(iQZ;HAkY0JPK z1LX&!?bJ0K;(DVNs_;gQ#vaY~eNZ_xM={=iH8NdYWs}{9+>(#VL~K)3fhV^2T&T#2 z=#8n)f~{<2^YaF4BFC4q*0#I7X)yJlNk+>N*z3Lr!>rkeJd{z1A;f<_$173iP%#-x;iTFCR6~FSWZI=I-qSe@58b%(!S7*uV zd=~xkMz!VygMjB`#xV8D!iCN7&z~{v`mAKUH0%x)hGnNyR6Hs3IXF~vh^y-X7<{$Z z&CmI(8;CdAU>N-uVBmaiIR%$PEW6%qG6Ob4>}z>UUfVbP52?(NA31WF@h!n5Ba_|x z8cJO%d!Hvfa)W*E8XuUM%liayIGzpCZLt~f#jJvAEm*;YdpTs=g6v2weYtsY>EIV| zvxNJG9?`?sEG*WR5d1n}1h$FQ8_xI0i>q;pqxQPBmhqutGlL8^7m49-vi3!6P8zVC zwns3e?jb*+7R}cpX?2Z)N^ZJzte_1_Sc#DzLS-Hr{dV{EIr_vK57EP#RU(ZS!`bQ>Nl1-@(6w+M0u9?n;Jk@O*d&8+MLVZMlEjO8JD zq8W;ktZ})ydCBGCw!Pm)|8?C(F^6Gw3ht7coOc8aolUdBcT)$viC`wUkD{jQGmw%4>yqJ>jKj>=K_B_lu0xiOdx`B~aC zwKlDA(Y_;K`~FaZCoB|S@@ioVUY6~$SvvjqLiU7U;ROcV9Vyjic?KrD>e92rq9&cr z7w0$git=gS%%(hn7iHxKH*S8BXhh;?XJM|aY(rYpGwm;EmI+zkDz`E*GyJFxbC?H9 z^^HYiW39wQ>=$3_;>59S(q}F7Tke2t8aQwjSj-@hzLXfsD7;u+Lk$NUXX#3724qvl z$^=9L-^)a&Gm_{|Y|vV$;vjlcMTxYPjwVuNVk0_&6BZ<=RXMbg_^zhorZYM91sYC$ zT$Rk_?v%Lk$BIyk+>;T@v!4+P__ehk`ooscuSKyYQz9}MLaDmbbbR#64!QCherx!%#HDQ8 z6V9?P8S7%m*Wzn?rzzCv)oqk5R0*JH16aOrz-Ay!_+=jBsO)JV`$rMB&QJUfUDmlT zV%1z=X?p!Rn&YBFm{?e=^}jU#9vyk}Yvx*r0ndHu2XUJZ)IN7m!Rv7m5gk(S3?$!2+@>M0{%lD}`(kZYF znKPsY;GaMxR~w@R3y=vFNK7CgN8PvD`X2X<7vdSMav6a^IL61yK+Ar7lT~9@P8<>i zOl|uYhD3`3tY0sqn)o+jBZ-q`lkg198%nD_FNf8Gg zu%*^4GMsx3g5?9undtw~_*SP%BVTZ6_$c1(DbByJa5b-&hJ(j%M?)e1tiGPl=&>E*TtEnm8xoTc5nGyHT0eNH?vJ8#Q+J`OCA6 zKL&&$&b4=K-Mh-*La)Td@9?2<$!$PV9e%|Mw~-<)d3(lk2%|hBe>eNp2fBy)^T=L- zyuHdGkcikuq?f@ql_Bxwgo1awHEsK6_GmvaIr*Xnna-e~+{i4WBxqpR#vacg+Gb-Z zGJ4yiDVpDgL5IkAlS>=D8Z?}e@XhBj=_80C1xTQ?} z9Wy=IB5Q8Yf)yP&%Z4U#5iqAu7NZ589eg+?$p+;>z*G)VG=V={9xbLZ{zZb}=u3un@AM5!}2Pw=NKePf%%Ssu7>-yS~bj_2)LnjPw_jPKN2yt&?_}STTBZk@c zKPQdJshJ7XPae`uY?{9^?y>D6N@%pL7ht@eMb=(Gr-w8rL-mC)UaPbZ8w8|8OlD=y z>@P|3Y1B_(DuF>zY2%E$bBPQ zrO&O;bg)*he7&oKqMiDShSHEaQTo$s4t#uGzp5=lPmqCsYB07m8i*oYWM|FYpWp_m zeGmDcvgG#CaPs(_k_GrqMPx9vZF4ufKV1@*{bR~28(WQr*iHcj7+7nm1DFm|cC;c) zdB-Mbuo?Bb7kF_{t&n47aPS&^!uD$}u)!a_{v~=JvQwgE(-U6s#3k6vz&baEUwyLB zCXs7jv@(BCAJ(}sX~oO+kn&pN15V+rF%tgjdEkptx(EtJ`h&dcC^9eJcsFQ^Bf>XJJ0Gb%xgY}PISt%r{T&jvM#ueXVQ3zUAT1mUBwD?iS zR+pDXVK$d<_!2JFPq&$&jTkW1aZ*txLL7S6q;_hFs$?vyTyCf zJ|{q-G8u;N&QzlIv#kLH@&aVInBQflGRgym-jnb*n z4Ha_PGRwbVSetpKGNnu_s^A2y3SO|o3a4F#fs?IQ*c|yvEeBVVuc3* zRi|f{qr+)z!};sV%i5RP7P7zt{vQnN8)>{*4jPGY=HuH?0n$!0*N}Lj8p4gT?d`cdIMYMNZ#3JPv!s!E z!PTOmsD=n8lb@IPMeHLKcB^VE=%wqvXIOM(+GWwZL%xGyd}VxJxl#$2Dhuq%kl(NX zOGlWL_UMK^>pk%zyp`o!L@U?;6-1NbT!sPUz6Nni`G7oN;dcFM9rhNtNc?G;$fCj3 zfhSBxF`!-S&HoTBk1)E^n$CBP@OB-pvuH=v4bLIs{1yo9V@H*76W`Z97Uu0Y2~o99 z4)#so&#KZR&!om8U8KdWD3Fc$2WRHSDU;UU@kwX-aS?SER`95B$#J0q}vWjgu6KoN_eOqJFHfXs)s2Sc`q11Qz23?TEr2L?scr%S;YN1u##~4r! z2!^8$O74ODW`3zWiABj3NUOf}Xlxw&GVZgu311k<)I82WR1oIVrcGV8z*1)USyIp{ zx_S;sg}cZ*vU8>YN4HntG3?H~C9@hO9*@SEuc8+^#7Q8%>K^S=MA~-m@4vE3N0AaQ zi0tLWXKLwt3j79Te{#8;PcX*VGSbt>JYikEH2y!ho2{XigXDaDQI{N)oDv-0Ql{&3 z6u1NS7}~?i%qOANr@=KHmw7<1ew;p zzGO^BvrIwar-jHlvX7_kM3rM{2A=U_>_-x4ZX0Qd+h zZs~tD;pC5-2MIsjf`8Q<_c-~_++Sx!yzRI^8MEg~E5=nKD~(s!*pP^(wE-{-FG~ zTg88rwAu`dZ7KTYfGk*LKAusrVOr6#aJb_-1wff{o!N%oXXvgY14r51vzV-#A;Zj; z*_BWgdq86}PDIjnprrlycCihm@ufcZ)6-%IwNK@XC7*m3Hpk|F&73&{;#J>Oh&V5S zC?)(WC4TJ>G&>zYxC|n>jus-dg2v!0#;j{>m<}dm(%!;WeB_&%v4Zcb*lJxyH0+v% zu~LN^=fp?_ureTWH@rWYd2uaqY@(W-^s!FK4vnWH+8C?SU7Vs-FnW2h{-Y7mi|0fK+Hslx_#!fK&%_p;D=TW z{x}AH8~T&C(I5eyWca|*P@k;Id>c{90*e@ifVo+9IAQqnhA)2V;u>>UoD@3ddwHI? zDKUHj()w}#B0+2xB*ILIPK0eH`nd=*wQ0x?ShDT;Ar6dT*C6AQ6UF7)&=>zc>9ay? zsuWXX9o<)7U!{!nS%J!myuN}%yRnPvkh#M@tJ3a(zpC&Xow`v~r*&L|Iv;&hdfyv> zQ#ro1qDV%mLdt7xO!a-)*2XplQ{5jHhDa%)WEoJJ?^V$Q){wlU(VQ^i#dZ9U##WDI z;M_#lnU@^nT*Pu-KTk1dcCN&i)MU6^AKAOyx=I3~P~TwSoW`|i1P{uyZD6`pq)1g+ zjQ3XpM9=mpsxX_JPekYcvrSh_h}Y|CT>__x`^}LHZuQC?ePX3;h``!wTaZJf5v`=Y zYmUX)Um7@5aC}|u)&*tXv?m8E0WC=mO^c$%szS%(Yf)vaqYt5ZBAksxYIMoQy35tL^`w)}$(c2f%DzRJV4XSAHvD_m7z z^#zL*{3iNQ+S40@ZHZZ%#HdY)n25s;d4{h)w%b^lbXp@Wl|0*YqnlzH97*~)?@Do*X6KB`4`ny>BPc# zs)lG^*-1}NW%{zalmqeK0G!MTnTe<6Ja+m%;Ko8}@jdi**(y=e@}%pr+S86-EgNN$ zoCwN9H!R2(nJm%IzB|odpIkC9ArxP|jkh`htX)G=qidLEUuP31B5DAVdhuuJ%Q-SO zucrj;hvBj-Aqs+{zX&rDw|+JF#w~y5)r&%9HMZ3)_XR(OIR^(>N|ie+)*@u>MA-vAgHMUm8D@W_Z2^}d)@+z70_f&Y-Jr-G3X+r)gkD)`^38+v1_sW za5+Y&;(x%A521BIodxQaZJS?U%e)+k@0Rb}joLiO<&CSx`f$AGw7}RM4PU-@IlKurAIlBQ^iC=h+(-6p%jwdesg~>zBE6S=kCc(F zKG(M`i2o7;BbL-x^IBkwoq+ti@eXK|ziotA9G1!spz+L7gSJo`Auz(7PREp0iT^rLvv#4mTP^ntIT5OuOGF8m_E+_OShm>B9`^w_9Clc zxU*33&%hGQWi8$XUzAa9wJYx2 zp*4~gKaIL-QAG}h7`%R9L36Icnw`meIW&t**HBb&*0pzRu1 ze=Mnx@QB``31qP1X2Dvpl1zyotA1tyW--|wlilO1{C1#9ZqWm;%Zqlp(r@f8>B!~H zUJ&4k;OVm)mfcMO#nRTygqf z@0yuS;^LPh_oCRzSko(xbUFDVI6g22;EqwN%rc;=Yyo{(@tS?50hs;(6$Hb_h!XW7 z0NX4pidakoqB)!VGhYzSn^OCTC6FxPazR{ne~OETp>(bowHl90Ds#AgQFM$HAf+-! zWwh+jD8WyC-y(yqIicjOb9fT9n0M!kHP;ks-^sr8IKzC3zoP(%SimGXLN6vpuzy^P zXA3P=aKoDQ%=~c4cPlt?6c!E`>^hlDmH`oLLC1sE&-|nLL(vTJHu;CzAP1^;&T4jE z@@I*0p9TpV1wBk!f|czoIp;d%BSq&5_nqW{r9|nqpvXD?3TqRM3+BD<1%v2AJZizQ zGL5V^QB?k|UvO}K+!u_;{dUlL|6HZpu#CrFWD73b{XAKW!ji1r8I|%z>_X8;rVdN; z;&o^PM+qdCMo?%QrN)RfzT`{iN9li`uGn4PmOS@D(m2^my{IYWe#j_^SYwolGs8&G z)tiBz8fA;!RwS|dS57C=asXUde0b>svAo&uPnx_u5<8wui5YZ7SG_}v zV~!{ropL`-vtNvk8AB2>Hfb&_xlB2tCBpZCa)}Q_CAt-P^oL^zI`pttU+rl07p%tq z>z&FXj7&$bLaBoL*|x*+2AWaZy&s3@VcJc=Mk3U8jynJbmvR|pIFAS)OGL+<-|KHjvZ%&7yY>vycD(Tcw zU><$SOCGWE-@p1W^gg%#moWG%61y*ikm){Bhm!DjVD_&w-4hJ;RkZ&p5FOIJsx(rA znfn{7|6U}_Y)AXor$GGpmG&0dwrBI}@P98d@p$3=i(L>uE;#-)QbV8O|Fyk{i^}HT zY5pbD5kL0z{*)?Kmy+l|QYH0%mG~Xm`hA|PL99Qw#N~o4|C^70qCm}SX-`izDQ5?W zYgu98)XhS3l^5j1H~{d^{~`k+Z=$V|AB7YBnst466PE#O!PtTZ;8g&P@;ZO>W@$vDs8z35YxHvmEy{dR^psE^+ zXc2#u^KRd^rm3l^+5hs*=;&wzy<8-y0d%o=@1AF4W7F)urMT=^)8)N*NPZ6&c=eZB zniu@J1N!Gx2NpaTl7F0H;GvVU8hozTZd@kB@6cA#x~-2?H@7lvdFt-owK%9@lAb;q zN(JESx!d7B`c$4*Pihv(+gb5Rw|r?ziPpJg&A(!2dpo>bsk`-R$?>RdFE1`Yh?NB6b;b2>eG*IW zEg;N%H9Py-?As)B-|?JAt#}PG z1sC6kyPv}lj+)L*c@r5KnQeyS`~C>5WsJ`sv6^0#pfBg0PRije4w0IzSj>7I&Mlff zoRJ1>#<0Q>P10+h;)&M|@a5Fnj(?z`wQ_K9`05N2s4FQM#1(_{7}Z;=L=CY;K3=u- zv_X0vF1f`nzv_wsw^%PO#lQIsUdQGm?N#~ESmPHZ}`>z zNv7!m(aaq{l3@i&XgaLvS+kwUap2IaZj7Q0UdRi&GGOIP6xk)q7IMv-!Xy`As}@F7 zn25=Z7uJt&sP~6G9+c<1uyQ$s7H3veRCuP(m_7cQ*U+K{P0DDj$J0u65758Q$mnor z+zfg+&p+Xj61G@sbm(hY?JiS(yeOBVCdnXTQLn8Dxj)qCbzW+O2A^ktTR`aSZnNi< z0;$M#u#1aJ)X~+Y_yMNW{l(0{W{T_;fBsMK&feZKBIg_)C3ROwlm+-;c7rJS*c2ZV zbKpkxG)O`Wu0{0QDtP0D`e9}C$BEoPV8_3#4lm8Rh9poQ7q9NH_c-;bcF#779y&

G`KfaMD{#df5|Q}i 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�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

=2a}sOGr9O#;bwvTP7dk{tp>`2wH_n%r!7}_ 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%0DEy7KI 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 {7)O2r+#`E6s&g_lk%Bhb+1Qs1Dg;f|Z&1THgX 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≫>#X&TXu=#*~b@G8|N`^E5E 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 z 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�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

%D3Rt%an#D{8!?e$K zh1A{yol)LK)Hd0)FnY>!)wfG$jO0kq-pX_@@zaH#-kI{dW@~cRH5dd=Yxb;4pY}Rn z*3BhNt_cQlN1jbJcEnzC>k~Bx)UHV1ZJGM|w})oEO)leiK70D&41`MGO&UCtZfo`q zIS`A!`!J{iRturt29A9SJyyUvB$q$RqCi74sJgM2xrfn*#?WNfL462IfT6sDHi@Fl zTyRDSO!x)0QOWvGL;>KabF-MS2Na7@vK!aa_4D4??B2kibkI>vBEJp;`YLxD!uABx zkmq-@vhwM|Yseq}zUe)DCm5@4+x$&l8wEf^;=|ktGFCJk)@z0!b+V!KwohHAI2~PM z-OT#lmnO^2t~l-8)CJS%JHLFF;3;V5m^pYsI@nw=n}3g;*Qfuw16$p8S2}A;f_2#2s z0{Up)RY+D=&2nT_Jbe*^8KaB*)k^}w-EC6h!*K8{HE^2D{*SJy=O3ArvF z=B;QGP4LQk#d89kkilEiBwlnan2j3vH}q-kvxkX&qThdEb`5(@xloJ*zRTNCf*V#Z z;e^#((;9(wP?Z5|#0PX14YYVD6m6lz7d@CnRuqI#ccIyzqRj<;9z%;a=3|UH-BRvc zvwZBvmKF3Kb*on2*Yb1^xMp>JIEA+_z+pR27ID9urWB@B!2SE8FbQsW>cgC0S}Gim zw)d%zCT`^KiE3~4j2PtjW6?@|fmWvVwEyxBy?!MtA1Z}HOL>TKIAKCn8&Vl^t$^&D zI%l;UDCurnr_CeCpU-8)`xk`%lkSSOu$s%FVoxgTh876G-!&ITorWh^!t={IY&lSh z2HD^Jd1zth{e8EztX2iHp5Q{4jDV#2^(U=60SVb#wiRS;n1VXK@S1pU;(Gg%sZu^` zYEJ5^K6yp;Dt+S9gzW?hzp%*qHU8h|`ad|klJITc_tz4b#3!H2AtAQK;)LF%#Zqo& zpHkD`u{94({Z=BpE=Kff0U2JLma%@%0s~#TS4X!Cq3YY1SlTG8_Z|XYy*+$By}i9o z*iH(=Y*@DVF}#xu0MuF`DB^Id&=>2CmvJh?%ORBXdOpLB8(lMp_nGkWpL+weB7@HL zND2^DgQ1?ml5Ycxb`NLF1&S^cCpLzgJLEF*IXe{12e=K57ygQ4|-$RO~s@@w&VYPi>2Gd6hz~W zFEwzTKBvS=jHoNSHr-~-;T?szQB|+|iq($0raXl*i!_+Dg@uVUdeE0^Y$V%%&!%wKJ58t;jn$1fCM%ioQMGFEPRIH1tC?rMf^rt^5 zBb_br`C=W9sq-Xq?bNbDrYXIAg96)8L58JCwMe40hnm(~4v7L#l~yc6$hxLUKI zN1W63J-1{b?ojJ$4g`aIQ$bbo(Fc>Z=V;%w9aBTwQ)b+Rl4bGBk<=Yz16jDQ+$mGNF@q6Ot zhT|-6+n6J4!nVYFC6G5rKHx=DoFu2n zo1jqR=Pu^rgojDuBweKkJk3MM ziz(k|UV+@7Kpkxvag13fJ;!b5#MQHzrwV`ge(BHm(wLWhdJdbwo$49$4>dyK_MHWWxbI|?%7-j+uaIr<882WjnrX|ikj8>#2rqDK!2B(c|o z9)$mY8~Q&N`Ty9^kA0}FZ=ea6sIUyk>OusG&>`UR1$}3Qo`Ed zU&yI-Ko*Z7JL6_u7=e6N%Pc!u@7$^*>`0wp0c14_nG%MQj(otE<(}^kpug|V@{KBG z(L*6ieX_Zjbq0WhnObe99Daw0P6U;XGZ1L`(Gt@(&xc=lEqX z!ftFEOQzTKkX``T(HWmVGfrF;qTb zc>|rfH)?VV>Crp&HO+FJItXnU6d544Ohb2P(rC#0RjZhV8Szfxq{w52T5c?~rooYK z!!RVc?>}{&tWvCtmoQ4KkwfH<3xmz39ai7RuLG3~JmFUot>rumc@~=^Kc%9%718&J zIRw%U&P{)H4t4+=7O(dA)idd?c0?p>5C}gku&m4PG}-U-bv)kO+WQ={Nd>a2mB#E< z#?Y$5-*8%YBM{bdCRSG0Qiz6ZM_)qkS+PC7oH#gEinH#-jZYuQGn8fEL% z7LV%IIk`WF<`q+@0zypP&d%UrjTNBw`ViS;z9bz&id$)w0YFp67(NAZ@ZP0Dfhv5~ zy|z#Jqy$Od1Rm9oC3P!Kt9bacX{D|;2FovWn3wH?PB99m$axzwaLOp>(*mM7q-dK+ zl=Z_Xo-KMgQ`3@|Kf0XAO7qCG^F>sXJ?$P_J zb!Bpe@&Mdu0}&q&%AiSrGKowF(=Z;99YytmKFtNP)d*zYO63Q>NV*I4^OdhU*9zy!G_2dqY;^98OGmFr! zm3*Y{0&QVJN07EsOS@Syp;s#{mbp@%BVhIcARazX;Kfl3_7vUEMN?3!?WeoCOw(Ru zlCkk3hUfNg<1rW4NCIP>HZwIVXerMW6u|%t^HiC7QHNi(y9& z025QsA`=t^ghHDK{a6fUnYY@-=FQ8vhX9;OIH0NsctbAzlGd0ib5Y+?9+VjY$u79l zEbpMSN&{*A!Jw2SJEFzr!f8^7azKkUsD5YNu#mayFY93w1XqQs>3Qr8vUaj8d%%~H zmjWrs73w2C0kVHPvMQ%a<1&tly}Nh2GDFRKA^A~hWn|rs$pY=Jx3mMG?yFvwuZ|?R zK;h{{GP@sgW1#Az?ad@i=XXZ$dGf{&BEoA|yeUq+f=gLe#15BfuT#KY9wE!*G*F85 zjf~s4Pwb54dJ=M*X7v|IKh7lUdbG3E+ zQo+zLNU>p2RSClp8N0iduomtOb8U9HZoV!_lig*j=8_lXYIf{^K}T%uX6p>qIuF@1 zM=<))s1X>SjpSiDn5oTaldw)lk0M>5oA~xL+m$a+Uv0voVw0T37c;q$d14-;`D6^D z!%$mssjFE}R^QD)jy`PHgu>Apa6U8e3)Z+RU-Y6-9D;XrJlcDL`PgV3w zk^)fJdG}AP$Y6&!TmHhg19y8rsKi_u+#d67*ZUXQW@SQFee<1D=Cu*34;7LR6yT!~oLCD{Tvns*aw^!;OUT)f}&tko_sja;KbGA4I9m z02#@%+j%;BkxkR-=4}^MtIZw8`*>DIA@Npy$;>~{=n$UHc!&; zz8N~jx)6rLqXU}WpSvR%*hNx17XnqI!7mklNlE?;*DL0nO2s5J@m(KojJHJdDNd-^ zbOiAF?Gg|Cw4TeTN2ZWJ3j0Ymn@w1@tBV8QcUR2NuU&cDzJ(#agV}sSC4bT-^Q7KJ zAW>o}FE7U=5lBHoD7(y=bZGqU2=Wq?nyogoO)HubC{&Hz!JD8oN5fpYh5VZsC~);s zau&Nk6->NdZ*Q+|5OXZ~7>OWf7A<8&mZpyu*|KUulk0s3GL6dEte)Ym_17yAhbcg^ zS6#k_72kMHD;>n+{Kar*CZh@M)&4UAql%F-t6M}1c=t{FFMCKnA3@^n&w#9#>DS-? zm1ui3>x{j9BiaN)pt`J)6IJqH-3Kt^(GL{7kHSI9zl%~)$OvWOl7dDHawSGavl;7L zNX@Qx9KmU$PrNNF*j^8V*}Ap={4!3p4E^o(P9s7+*SC7qRv#`{H@YvORxDxQcq4HhH@ub~#P3(e%6x{?<-Ecw`QW6M$oq#-U zNW5-)gEcDQ1Nm3lPazTePT0eCd$rUtH?d$|LikqB)Yc7c;4DJY(A>J91-DqEmLyq} zo!zORK*uY(p)W08Y0sZg>THEf`YT833|#g&jiTJc1+%%T=Gg+TSYVcYj21$kpM^>c zV}bPUJFF;1Vsk8*LS`nLV@vQ??zNu2U7PUzxpiaI-h@z&Li8K#lb#w?*1kwY!cBXL zLp8Loa}7>vC1ezZ??CNKn*F1tYh56Me|bv=VuKvID;)vE6@sz#V>NqK7cFc>m24_f z-^e`K;hjIGCR64AO2&9_q(Zl3O+&`c@`~C-)W(S-?jlNUvU}mSKkqqI`C%oNWFNhQ z4x@98F8K&puBI{~*$TTXoV(%F^V5RlJW|h@1(f6)=5OSxYx(WurLdfGmJsPO6s@d0 z-lb8!pso2FTMPJZ^OD&xTaBx+PT~+!c+e}D<(ls*S?z(9E+?YwswC<|3C;dH2e$Aoh&J_7*T4k9-WponUfCIJOWoK) z)rH3xlWdK0G(R^Fr=ZJYt}$nFnw)N$zDsklP5HR5$lfdo;>bzwNuvvCM!Ojw982ZZ zj*!JYzZ;n(@T}gpt(kL&QD+zABb>2+6!^}0bdrJQ=wVVEF13O?h-^!#JQ}%*G0Q#L zyaUSH7KzlvUkXyZ=FTIVEYi3a2zL%)mkd_KDWu<4!QX78NQ___&!z)uVO9LV4-w_( z-b750v$!kP0POgDIMz%oIkMI#pELQ`n<}tGVwX9|9$W9*T86k;B>qdJrp(pwu3%;cA~zA}rwX_f*riuN1oXG0&&|{8HPG{ZU5yOs_98hyA%pJL&EawM0YTaD4yVD|;&3@^5|n1o+?j#kGF z_yc*<)QQzq^KWRt!{N(*CE;a=-Q>HEsl5D$8=2Ra?_=PG0DfD4x3sxBq3&tM z=mg^Ur2d0u5e6NP*w>YtJD8P5$IG-BdW7O&N3tT^2jCE`?Y z1$eBbML*(G;drfk;%@k)df}2ty~Wg3F%B7tH=ZYskjU#KOZ5@0 zv`WzKthH%Fdg%#Z)A_fRt1a}j7N*j%@koyIzjVkdNJfzXLDi7z9yls9>=wV87m}X! z`XgG4;|5?tsSP1Fvq9gY2dc2|tL?<0aJQL=5jr7~koOvR#Q^3n4|Ry}(37l3NVP<^ zJT7gjx<f%aqfVuvlDMYFxiervQt1*BH%vj_e@XwPj-8 zo5^p!G}SdQ{QOd%iY__Jnr2+*Yd&7RT3ay)k4O~)82ISci%ZeoH5*x)eHF3Q>y#O$ ztUb2gSfzkjcfdt98w|e*;wW%Wy-E=Ekc`?(9gPqmzEk@2joRv-F#Yu&)Ii9E5IdbTy)MI<_DZ4;>LwaxbYE6zF8`5ci`fp_BNRv4STP@f zGAFUb4M9)gzw|NH?M_>LB_X|6b$HqwWU}+6&;bTDpVJo)>rzR7G z9Sr4R{u=2;Jr1%LNTOtDcMhA&7(#cGg7dQ2Ng8Qpe1t`12HI8CDKrnzlCgE^pl&CI z9jV5(S2)u`(i8ie5QzUI{5~}PnM&RHY>Xh7_pIPp? zm~dl1t`g!dwjXCIBTgLj{1)7V{#+di-B7(yEbJ*&G_%ul3`6TnzYA&pNOq3GT8V2O zZ};0N%WbX+CidA}QksRk752e-*$aY&)rVl-)lpJY@YH`E(hD$i2{9gX%;${YwD=K! zxCW3(ONxQyMSfkHv$yxee4d0CxG9{ZyT`ktmozQ_%XFA;H}taHc?$yx06n!a;0uED-?Q1{}kq)K;PkUg?@8$ zs`?)8YnqOk%K^zWNld1I7!aqbr6rns?XD5DB(GH&mk%$N1$#@fyNI7~gOc**2`nU* zP$(F4>^WMN{{2Z(F+8{WMQr&O(`1X$;3L?!JVdr_XVR3SEJ2tGd%@bW`75a{7v z^&&5aAdW)b*OJU1kJ}5#0{^9N9UzSS=Cm=TTZRG=4-c9`D1cE?{$`)pAJhF6A5g3Y2%}fbg!(Od`z;y~LM?hPcdr=z+U~l7(VySo zggW=64dZWlffDatJET8Y#V9n3I59@U%e{WSid%l6cmXJa!VUYpb}gNO(a~6P5cYV< zb^9~NaCn_17}QLTC1b}b;w@^3fdU8rsxZ8ad$;L(mQk(1=#05g-IwAUk9PVbK5Ou& zTUw#$QG9o#Ru$a5cJ$-wgjE>}YsY+aX+?=v_hPVNy%v6PEPDC)#@~SqZ^-GC$KxRGxrzChsfn{bx*c7gvtezhUGO-so)zsotJq}G;+0Dd>z>9OL;zpU3mgO5Qm z-#rOar~UTTkdZJJ-bL!Is&g^aNN7`|d)cR$3d%w578^c;=-G|5T>KZ(M$(UCO?z~` zZR%qx`p`@Rfay82HOjVXtmo|M0Gg3rgklwuMvfpKKg-Ax=ACKYhRTkxn*;ZmH0w!t1!TL?Z9X1$zf!4~T`nENsGVvB z=6X`#*9s*hnPx{m?xK7$y?0iTme1Zvh3^3x>#Z-;AP;_?mSOmwKl zJOiLV=Y9!!ly@5G49g3drQ=%AYPkh@jlX--;1#L%1s?DjpS@YFcDdm}hT>>zv&7nNqh^zJ2Sik7Z4~u=$5=>6aiIQeDUwQ3h0{ytDPV%0i7_lrO)|>}yyVv2z zCYSpX8AIb>QP18Uj+}a9xCC642LYoO+EM3Gx$~iWzJo>Gs}yOYq-#5+N^Y~ZU>WhM zkE_2P4x_~m*n71bnXL{#eGf|fCJQ$V>l0v+=RGCeu2FbZFz=wxY^@9b;yJMQ$T!M9 zkdV>Jp^r1_lJ;P(QqFg!6xz_^-udVnKPN) zBd=n{*ihIX6VB+_~`M$eIEQUlx@H0D=X@cBu6Eh-B^F^My z0#jYdzM%ddR7k4jq$wW2+<;19=j?9X-=f|+ZBHqaj8ht0`L3aRAH+CCl0FW-7)3<_ z522d#w);`NA@Q>Rj>IFgIzwO2vz~BB6vR1_8>?#0DHgx#R4p@r=yKCA)bZ(qfq?jl z$du?Zf8Oi)s6nw==Q#GRNI5ut78xKWzHv_MZVOSvej+NRl7yM_flP6EduHq=m{D%* zS3|nIHPC2G1@kJ)4akXgoycIw6o0tkkrR}!Y9DC|YdBJ@hzP|*fA z>I9yz@Jj}q)$pqHRpU-VtvUOy%S{N(=~CMm1z985qf|kubUb`}8%Iqnv^w>(obk~0 zch-6b!@pT8HJs~oRW+g0Ofvt?lSroOeY(+l~N_eWFbC| zZ+7KVo;#`eaCf)+O3}TC^i8R&NG&LwM<|1O-0aDjFey*TGu6zy#12SV>rxak*ZItE zX0X^_)EU@5z9tD2%y+r$yT1L7zjFPxj#*Ej>5{&`9g%|!BUKNvJH67QHY$Xsix#?3qXW`e%82RkNM$oTJ;Li<{DOJhlBfAH8M zM`uWqspwiQG|g1!6sit>uC20ODoE$0p^9U}On-nXGpBSPjuNYUW=8a||5T=qBIe9q z*wMe2k)g~&#BAV&{f$6%biB&j=Y63me!6^0x2z@Geq^RqzP4!nzai>K;oEJc08t&T zMRM#n@3Z6k1)L}MBt?)&iV433XXNTMSQAA-;W6@I3IGmg!_WGzJ>N7!X}UhwKrq?L z1!XNI*yGZL=kOjPK9qM{vBzGpitjdr)UvNz^H#`IrBhJlYL!x7JR`rOlA16V27<;J zw*^LnW^Ks|pf!En6xF9-Yimi8!4Wy;nW%oEZ&-HTHCO${M8hwZGip{=75^r?NjwKK zM?$p*M?EB=e+Qm%N5d~be7`VdKjA`FkvNObJT(5y8T13r z;?|zugFY|-+*hLtaLdDK4)H=9oer^&QOU^!Z53k7yVVeBpRJ|F!-H_Wth&M1?{C_; zDg6))%Vr81iktAm`p2gi-{;tKi?Nbg@I&biUZ6{R07W#S#2KTc5jGD*e>!DMdla6Cf&dwU5|iFj^$1O z&G)RVkp-|&AUCvEfq;>PJI)gQV?j^PY@!;}dxNnngQfG&<^Yb}=%lVx+j##y7!QAK*Yr;KN98#9fgyq** z;7e9uK|ef0NXVu0ds$A*2%CRSN&i3;U?LMXS9xWkb!f?Oz4PZtQ0n5e*O_>}Uvc%H zAR2%Kmmg*TrOU|+;1S2>BTj)?rPYK$>imj(01(<`|KWpP(!?$n@hFU;$F5sfU)Y!Q z*f9+XzyU6IhBBrO*4t`R?kT*V-C+yR3R^vgx8mB-uKj|U zVGJrC#2fmaGyJe48Nq|#o#oHnF;$6q_Gbzapul!mt!mJpcsag#y}L$q$qiE%Jj__% z`-U@Dp(o~=A9C&$wF(Lw@Kik8e)gQ_6%g@m{=PY4E`U!rLKmZ@n0#rJr+&KLKTCWz zRsKV%a!z8?kkZXi$Q8z)$Jz(IlFpUo%fA*#kBWov>NizI&s7TJB%m0SsM zE^P1!z-}vYA67N9+H?JtB|_k@7h6|fIVU{psSqFD&E2BIt^rlkOet4;2|__lRA^lL zzAvOU_y}(J1JG>=IYQm z&04COv>r9L*zWv3e3Rf#dNgqaCRwG_NV$qVrrmtc*XZ7Oq0~s`%WWSGH?Xp!(LKoV;-(x;FUx_KcmZWY0d06%Q(NEa?`R2*zMG{ z6&ZJutX1jOyWZD*-~MBq zHBn$j7e|R1cjMW=;kN;&9|qD{oZO^$;C(ohZ&L&r5OI=ZE9|}xF*2qMsc`&d#99-( zDWaw-RL6!4aJHpAavX|)>L;~?(&ei!&1_VC$nAxo_4~6F!BkW_5->twgHbs^@=wXWNaOD2NU5V3kzOhfo2H%xZV#se}?{@lhNVx^zm`Y2VJ zsK4Y(DJe6$zM3tU(0g=uy9G?1SHl^OUdyX3>A`0%HX!^Mtup>RuMN3m#*9@EJi-?H zbLG9H1S$#MGc5=XfXoJn2WC7vvX(LIvHxX{PhKybN3I_%lkQl}L_$m#cmagIjaXYg zGK@9`vvfXjLK0Nri&P*y(il#?-9wA+WfM)5LTxzWvvKFM_W}Lu(L||TLp^oO#P5jE z=&~5Db*#-am!{&_Hm3sp+5jUu0EtLO5$1K}BnJZq8Uw>=g@| z&=7s!C=g}t{*1lRBl6SDQfDMhj8Z8n4d>aIqEP>RG?VVKzH~`J?w|l=OjWHX)nmK( z5#R=wfrBKvKSRkn%0aD+OgAzm$I1gH(Yk`m_2tq8`7AFpFRtF(MBCETywE{^Ysx%7W~SAXg{c3KVu z(<4-jL*PyHyAQr6!?^Kj_f!hu=UiAbBn^l9-64J{@M2Q??mXsoJW%k?SIfD@Bbm-nD+t!@ZkwT7J2_LvWM51cl{R5C5bQ{QP2!kFii^YAOcXlk{6v*zOu)<3)9vqzOGZf z2L4yD&60-xyx;jC`*cMKG%`=8HZ`?je_l?*AD;4YW52bP1rupj0A`&z$12xtC+7`do|qS;*htAYlXDb21V@mTzYvR zBQT@n#6Ho}{rxaETFPyAcu#!3ylr`RwMu+i)Lx*mNfv$Pz(YDPhM6DA|J5!fc#A<kdfNE=Zh~vB=q= zG+ADkR2e(>W|xD)Tv({~fY4zPMsmU$Y_7m6!@I=Ny=Yp8s$NECNn=vKu+^&~jh(A9 zP}eX2>q#d@&z}pU%I|1^=qY9}BqOmsd4!#TwsbH2vqAv~x1>9O|-Sc`v zoJO_^c8LPJN1R;D3@%)EN7Ci-7v?ft$g8O$Ivjj~AyR9k$~v{~GDa>+l{|H)>LuX! z1;y)ba-3Wv!JNl@!CUfI(cRgO663;=4i-}_@>?3BftilX(FQr%|BJ7;ii#`jvPE$% zEVvU$@BoFoyAvR|6cyav-903@OK^904OY0jySrZc_PKX-pNIctKkq&ECu_|$#S|); zV=QHH1o1mRL>k===f(AX%vb+EkYM08PGc`NPnj?ORoZM{{DYRC?XDl0udZ$mcW;Bz zB$Cr}vybUEqu)@e)d&9@3nnuoKy4bLpoS%g==qL@%)TmqBBg2Xmq1iYVhtxl!CMc2 z;~>RdE@dLZRV8p0i*3|HaL(K~dgP6XDNHs+LHPrnFAw#Z)6Mf@*ZU^M)9tuk!+vv% zbx($xBHToChVvK(0wSOWjO1Q^W##0|F*5h(N8jYe6P*(r`_5fJ=VvyAU>6a9NiZKJO%vC5Q9B^;cOON-CfjwxV(jR0O9tzM}DS-{uWAw&<1_-$wm zg8PEQ)BQ6>r3!6O7-G9S-xl&nQsZqi1a*2d0-uXM3=Lvks-F*)Scu6`B3bs*-kU>A zK5}*qyh$?>a9=Lp-+a5i*-~2~=twW#d<&DvOU5p@q(2D>xZ`=^`0=YS zRhqp|g^2>cR!lu3jy3Gg2Cp;>mMCf0$h|#$?U0bVS9syqN2|U}z56#H%0Yl++)N+k zNAYFn_1Jo^Lp!W24beAZzUPnB6D=rDo7H|Z{@fSHWzQ`Kj&^|1L!MAb<)d;297k(_ zSq0S{J3+)(DCYZlo5tcbR{5P)AkoYm19PY7?ITHvBCLU6M{Hm>R>(A&$utl!eCu(~ zukU%O0D`^#^U}L~o~vJK_&kM1Yob01{TvAE^>m2XbiYwCL`#qwY~u;9!K5p^YV>X1 z*vsx2OmZKSGwreL5^Yfuz%JWGM6eIB-WtxgJeW&V0qO!{Bjd%{f1w%YWDNiQ^pRZP zU_JVZ+_CihX+leGR;s*3#<>YWh@)RxfnhHm((G62+=v!9S1k>z-2sKs(IR(EoUJ`= z@9v1YpU4%o%10K;eTeZBjc*klXRQAp1?D$nL8L==OH@w!`o~6Aq*24M8co1(O9nbM zb|Q>s6?lnxcr-%uD%?lH~qGXbXh<7!Pts=(6M2cg7T+3T!~mgg%qKm4Z8sC($fLAZZpEoRr{D!%k{wxEyO- zACPJk8lY*k?VZw0YV_OQgPGb5R^)*b75bnm z(-mxtwvZ^SSIpL?7krwfajS6+L&b0C>$Bh&{7|Cl=MyDwk-z@&Mc_u==F&zfhW1UQ z%yFju4&P#tvwWDVQn_t-?lXO<3gafg2KxKIAUcn9wOa%O?jalB}^^&(#Pe*Wh5 za2WdVvgs|qPo-vwTUKFX=)KKfFVKg0-pM>*z3%l&{IGid#xzg}233UehezSDs*3CT zSx!5B#8d`{#tIEq3cdnI>7&*2bxV$m)W>_v7(wjm|DKL|+R!&A1Y6pw1L_kHY8Y|s z9$uF_{R{v_A+YS}=r&fJ0k`?qqs2ck(C;_kRh?Q#?1}~Qt0pRzVDKEw>Xfh%EK|Zu z=_nJrvTL@RZq7B)`3W9&-;eU^)?rHS!|`7%6%0(Cm#pk0>!-*ODgBL9mhnHr&;FS! zp)>EzysaM@L~3Q!_4C%ZB#&SEG@55!LQj~nN*2x<)>Qe`q2TI9&t-3FQ{s0=dCtM6 zz|ZJcQ0DZ5!h`wMgY(A*f&oqlbxB&P8d$G38CTo^CQTQPf9}rW@1z25Z9+4Nb7rht zm*dZAKz@p?BG&tq?p>`x9La1F_^THzviYY>-Ua&k-ad9=CZ!CJ_Cu!-T9jaSp?mXk zH%7WsP%4HHgt9~mA?A4->$`<5-e1ap8xt>00&AXtxtcOqazo96Zz29X^(uvr^Cfjs zag&0VKW!bz80r!uSWfUE3-2G(VX6NtMXMw`-AW=~3(>MfhGkOvzF^@$>w-O>wJd4c z9Q={JbN^wl-Zj0+i_Y%M)b$y*El|r3kgD6MNU))d!dT88M~%gql;qFd=Ou_`4WVFw zdl)i{1ga)Fix9RIX;L$CDsHuIXaNG3h?EL02;{33;Mfald$HXHr529rF79l-umk_e z`^|;63aDAoB`&Lf5kX)5$Owdg`4UJzFrx$)x@7ovntwV{q~SDUb;N~X=fN6uo}c{8 z9w>{*MzBC06K78JLecBSBEe3!bM~Um`5kr;Tx8x5>+0pU{%Qp zTv!)5xxXBnZ^V?siZ(|(_pV_UZAkoMSbW@LI$irGW$0T~S^tU>T_^5vLVywm^+Y{X z^0{#Ivzya789D}f_kn4D@y60Dag+Tv@7ucXBQwiA_0_K$K=z_qKfyN{XXTb(eOA;7 zVl%WT#?Uv~!j^i4D?g1&3V!k;(4-L5s2>qAdVYrdGQO(Nh3uzaG(A}O_DEW?V=SAf z@5+CHu}bYd8m2F?A-0s;&)!#WyXtXfKSBxl+t-;u{wU~h-EHM z8Xn;h8nJEr8>PPcB|Hg9=9bd?EQY-uf6w*2LBEb|dxVnjE7+^vlYITL{2Xk4OZoH) z^m#2c*xG#MGs^5o#4Vd&%DsIb(^%_Te_mU@z}gHw_YH%bulk!DnAK}*>g(t72Q_)_ zqecy?>MnN#tUs>Zt2h#UH~rBb@#l}g%IlRNnb4XD4q}tXDQ^R_-oV)!tk>-hsyGju z8(5o4pAGi*jz_o64K-0+3T4i8P8kfYOTRLrHRB|4;^QPcS?fj2dIvOhG<`qlAe311Q&hbJPD4q7NuxEsa|=Z6T`u$qWMtHQvGeih>Xr2lb_Fk=PP} z7fjx+LNUrm3cS(|NC~IM@yN{W>zPx)fepO;)iEzt$=5Z$1WQtq@^A>z6U`ks;Q9QN z6SM0q^%pB~kEW>Eze-~<%zVSG$_kck+8GDc9kik#FQ07)&9mB#w`$wjJD`Twqa0|o z6Q{`;A`|rr^zL92K9J(}F(c!& z9A082W322U1j%EQmwc1F(GiJeVa^AsITbNjxSlW6Pa0*%b$fM+YspZ%_0Zmj5w zg|Gd)eN2367*XEOJTiA61w4F2=t13SwN5~6a62fIixKhH$gX&Vg!-pAmP6GFf{o}R zCRun@`Ms82SEO4PRP9UR@#w{`xg9%AC}D9!wKWU8+UtX)_d&mw`^h%!z}l zkGaudOoI^0g8^6T`uf|oNbEim;^UaN4qEa6H0^7LHj#eb?)b=O21{D?!^a5fr%6UX ztQIPEOI&SY`4i`m1AuPO34nn}_@&1GW&S&Y+DH2HZ(wJXkn7@8Wyl9HYY&2tXXVzd01`)%NBUDfjaBq?`K z+fRy*1Mx{QD05^_qy&n}xuw7=%?JUv4=V(05F@+4v%o3vr(XH>v*LJyy;BFZb}K33 z2Sa4e1;MDRo}EkNJ{EYuN6?DA!XnyH1Ttx%G&F6U#?H<+8|1ckBl6U-K5_DTi2IBH z{w%=Vl@ho&Gg*PUHAO7p0b~P#E3<|fQWK}9~fLvVBip$;Yt!an! z)K};cRb*h&BFMpsZ1Arq{6}h&0+TAIpP2)NfoYAl(h613q_r{}Vz`N4*=qk#ga|24 z(9TymJz(k*-PhNnP4<1;Ev3~|=YO6t&F&MVF0hh^;9j0484RR-Y!svXfhSbAsut=p z8@>6y8OFl24~;Og={VWINM&c>*lB}VY7H_08!0&H>8JcwzNvnXlGi5uu%*(Cob5^r z9V_{{&jr?xeu{6|;(u4`$6%;S{?KZ>$9;XcQu2W&n}sCYuS@vyXY1Pb+LMX{&}(qS z%TTKR$&Y~}BOhKOv-;0$P#bO6C7BArE`6mDfIW%Z-nyd!`xL0QP?7V0GRgmId@}PPA*~EADJ@%wY;uSRH+X z%N^(trGSQ-HVf@Q7X9^3@CUhWFlfMSF9rW6w($;H^{V#3_!@l!7Z(T-p5OUNi$sSv zJb5oFBX0>!(rys_WBZAAP*4b1n$$YMj7TFbC+Y(_mdeCN7Fq^)ry_UvP)X%7?5=JYioz&M1X67^PA<|gQ|c@#;1Z9%v~ z7Y|Lxq$I>2HBhV1iS+m=#7Fp1y^32aREQ{-k3 z5gLL%GA>_kP>Udn$X%XSeOL>#L_au}HTBPPB|Ba3T_zZHdNzzRwAZiUNsRWGvNj-E zB`i>+rT__MLrY9haGx7P)cOYq^BJtGOP z13|5$0!a$(CQ_|EqFzvVF!8;|0`cQSq z6;6)$Dd#mb{nugDZv&lAf$xatZJvQwC7Z?9N?UBq-gwIyf^WTCZzP_}81Mw9CQhQw zn#tBiGp@?C2X1?dwFmdGZBI+;Ah3lj%1ZSiexO}GZ>>FUkl+X(&c#fBq$aNe9GA^n z&+bSPNPARO;nx9BO*M|{zKy74G?|2kyT*>7FowK$+y-^Na^3Hr1B_&h&)((XeurOx zy72f977m@B#<#21CP&|t@5$JP4b#?zyj8roeiqp(#T$hk4#+kH8;F(ql4(zaPo1Ng z^0@?`1t4<~-0e=EK8OT^;n=7%oCX6b`PJ^{Pf~8ruNc+yHlM#!0DjlGqP_Q3nqY?|ik;nuVQ%)&zdIy8YR9QGbpCgP?<}>@= z9^U3xbdPbowbnatady)J)0kY5EVfQZ>qn|&_8(H{S-JM<;+cxzJA(w=YIZj%C4ELNCi{me?im*KvDI>x&|_Mr+>*7Le&tm$ zm6ETdAPdkBf-W$mf5!?o%~Nc}U@h-OlHCCHrsmK?V_^cl-AP+65w9TI9ok46?Dl7H zH-b~41Rnp?2V*Q8VK_gRp!Bpp)J=N3Uzq(qDP(>y7EHsoZ)yd7g26dg+5FmsSR1 zxff;1Bll7OE3a^WjuIuAy>wj{xWQL;%Az4RwBb_UeobQWzwikfc< z1U^=@14FubKSbBQZ!~*BUugz_x+XHh7m8K%WmAB7BPrmIWn``;SgFW;=FFq%j`>ye)+2UqMTvg>%?J%H9t-DDMQDi!4&PNVONsbnm)KA+5B<$vJbciJ zEj^3W9h0*d4cpcSk1KU0^ErdJ3zbHyUw@ZS*d8q`o@etFJSS6ThO^dc7c z>jU-oYkh7rc(4TvN*5orIku|!wjmuxk_t*`n6{_9*o(7S9i+S*zY?oNJh8x>!I|{r zf!KV)h^C9aukwnd1EKRmJ+t@gSjDhUL^y2z>T2SJ3Hijieig1bJ8HxTyM6X_`xU6Y zKM~4$@HZZ&z;2hp%(+4bVDL7yz`KAvM4`7JRZB-tvb7ymPpR8v&ei*E>T6$hEQZah zr0Im%kkkv9Y+d{>MgdKM-OdCEfJk+6R&W1yVxBJO3@9xv)m&fd()Yx$Zi&f<))b}O zYnW169?khtq1s6GB^5PfoSGV6BCB3#t=F&#)pR3QE2Zxbex|VZ5vEOL9o&K-yO4jl z2_e_HR}dF-XMlbumG(e2{bzIfz|w!pq7^@4v)OW~t#Ry-FKHmxWcWub3ETdVhe{@}v^QtV;KU zx%1k2&HIK9cW{7G?Mm^H6N>~)GH5phQ9nudu#RV@+Kj5EZwb}VgI@WZ1c1ys>BS(I+_24w zewUFz$#t~f(oo+6pKyT7%dwbMdz^a59zcg?%CQkFqp#u>*}XO9Ov@oFoyRb(uTbUV zm|sV_L~Fm)P=H1$%)5f%twvFdGuAR%LADDmm@cxO_?tF`*!CmaSDR%|A#w#912;C|J7|s(bZ5w zw&KEYHoV~t-UmAaL@>VN&W0d(ZXOkh?m3kj0rq1QS&6{2L$EFLY$fB)H9-{k!C&Ma7098EV;B-^{R~ia z&-9y=Zp!yPmmAk4OAIYH zZQo6O5pRd#DCdr6V9iVd-i8Km(;Dp`uSzdSh{W=u{_HCny>6nUp9$g&`x+ZzNsaS| zI#}a13bw?Q+IBMS=>$7qJ-3q*SheAOK)c!e)F>P_q)wI^bscyiGT~+~J;_ol}?~Fo{`J zQ-;_}%k#TD0md_gBGYDKT`P6-d56F@K6tAxItyLlJyU>i76~mm?oACq9BOq@h*O}& zNOsF7%ogF(S>PRsM+YSg)P3fye~}QdXJu>x;;~v1^qx{?Pj7Tow$$lG2tm=b)zd76=vX4{tN#$sXaTuC{`5cYS_KR?Z!#eG% zvdbAp8v`eff?)Cm)!gSBsdmrpF}aG5Ks>!WJGCtP9$jz4_Ll{-X7+uAp-D|rz2sc? z?MYz=2?Dcvfg4`$8De8K*^dI2^&qQ|!_1*Z@zsS^$bCg`O*}_4&gBM?-859Nh%h&t zScSOhTy2v59Al1*gTs?Vr9IlceB+7dA>Cd-vypD0bSMOAWcEuAP0bgq-DrR3Hx2mB zwW;-j)FC>!xny*60XCe#y`NbY4I=f)y}hTO8-=7=bKp&06|3D(c|1Ts`sIX7IEH2AG_QUVZ~pOnyB{}E&fh|*WUl#- zKYwIoS{a?wYhuWe?tMj4f{l$REW3mt7*kGLLK19Z7#N#&-niUD&6tD&<5d(M*@jD% zHIEepjo?i#Q_{>f$MmHW>blz#oT4j`>3qOKHF!M=R(= zB~qO{7{4%7l;y>kNI41`=xvo2IyAS#F^x#A~ zzv$^VWXlN_ua$=jw3Vhe`Xc+}ECK%yU%pSf`N^ybbfGiwAiA@9m&>OQ(;Cwc6Wfoy z^UzGy^fvkI=C=Le=tqM`HaHq?YM4Y*)%l9KjBz&HlwfIW)i{S0jLu2U??)cB@l3~S za;aIh5;*83MOrUOn4jujUr$OgQ^oEIL!*@5Uk#=KlH37>*8lpPZ1b%@lG&`a1&hjH zQ&s=l`=bA{f`3_l?uGc;-C5V z;$kSoVEGtef!mDP{lfsd>@WM#Se2ZsUxqjq# zxxcTf?v*qni$2Gh)r=l+lbNxSfW+qk~w4n^^<@JzmH65|&hBxip;R ztu6_V(;J$+G0LiGl&?PLl6yN`(q;;HBd}R5aGuD#vb3EdkewJIXRKjjaPbk`=;AP% zw9**unQE!+i$rx`he@&%FI1;!tES{Goh}L5DM;qP3>BGh2IXSUwRxNR@A;VFXfvHk9<*22~*Y{7A#_l>#$LQimY0`vQBJgkc zcE}9V@TuZ*{{GVp0_q<%)wKnGNk`Ufp0#|Q?P&9uDOUD*#;Md_*nu3;2-Uhwvc!XR z2rF%!GS?+NF&|{-_LjN>xSIAnByi&VH$h+*v2cU+NK5Z2;j{; z`>IvK-dLQ;i9PK-cSxFYOUclSNw`Czk8)qxZ+xja_#cP*ybc9)9QTOt?EhgHAq~Bz zak<=iS-P;kC^}A`r>57niH&b}bpkF@Qp1D;w!D%_u97{Sa?0+0GQoi4d@s$`Ez6xJ zHL|osB-SZi(D#KBPzkc;7N`#^WFj3LBBcoX1UgEzRA1=NWm(wbHtwR6&pb}>P41YNCjO8!5q$@s9rbGD(h zFhv?-y5L-{qws&&zM&s3MA|4YExuhECArQcl3^}qkeY_vBkE4-^4vDx9!zXO60Ww!aa_|^VKouAQ35((s+h)(7ZEy9P=HTM2 zv^WLcovR)@4lVBL6HlR#HqaZu*m^wvTxdo>ux3T-OKqlGa1yoYe}6 z+)jGn`S1GR+pdlDz+aP$7Mr0KB5$6ldNzb(A#Cvhs|`9$aSl+R50 zvt3J~&_%y@8^W(t-xd%Z%2h4py}rIYP_dWC8k|6~r=kSw z`0G@^-@07kxsiRtb~|C84f4B)hN!(EqMx2A$#X2JXFUQ!G5FY-DL6_jBBc2b3NmZT zv^YO!jW|>-D}ZCTGx6WU;Z_!MH2p*pD6eDC;lVOjq(W z7h?D2Zj%B#6X!@Pw8%;W1-{19hSF1&=n61?Wh0t?7_s>5DE!ylEPYWqP6IxW$z9d3)ID85ArRmT)>(otqw5 zwKaK;Jn`>FG}UtM(Y^w0u;r{0v?-?qKopp}?R<0J`6grx^}kAg+W%4dBLTHMw>e(s zY+ugJtZk7UYm}`-RZwZwhq;~iXj7vRD%RUVc6Ayz@1Bb0ExCP;aPZJc`)ipy!onZ5 ztZZzzRvFGWUK!3o*PCRNkgk7V$hPkb;yWE)%oUcgY78%53>9NtEKnoGY}nvElkE48 zi+KZO^tHk6cWM~rOO*>+8K0Ne*lvZ-XRHagP!kD!WZAqCU5&*EjDf)_B*#goIr{U$J3B=aEf3-QFlbu7C>uDO(U0w)!=hP!WK!&Jxm*0Yqlt@F`;0`-I_ED z6|2P4^SF59_xdC)4Tk8m*@+?E+xqx*KHX)37f8283|_yI2)#2JDI{%QeOlQ}CY=2I z+b(SV`PN`?{O%i3W84nCJi$)|akhA4oJ2guE!($INFLWpAJ^Ln2510Jk;I!siT{#k z=17i~Lst0|?)j8dxAltCrsE!ZcKVCp^)7P`uTFo4j>aX8?@i@q-Lf(^tZ9}Pg6ef- zu4_w2OMvTo3nOpAX#7v%7-xsbUH)5BqD=hnWZHHD_$rv;Hq2@5q}u#3g-rUQjq^Qw zb0|N!1OrM2d%B`uG}(<(ep^t4P8VkOMH;-Il$m5;DOi=0ab1qbu66hAAoIIy!pB=U-*{q}r?2(A&5^}qHuG!p8&ZC)uY9-?Ew~fA*-tbR_6_L2EYh-RCqZtK}c$opa2Au5MdDY@4zBb zwLVaVj;M#^hx6I*;2)Mzp~u!iIWP>SQ{E0$MR`PW7=9_&r1A<1VRgcol06^Ze|k+e zB~ob@1xU7Pv;e=f?+oc9M#X;mwiHo!kHO|QhiV{$q=up7i`I)FaZC@Z?Bq zA4%B!v>a0lGlrCkiYEzcXUrv~->5Am7IBE82WmX(T3{!sOlo--<#Ro_U5~g+8qj?g z;ESvqK7F7)aCa@sn(KtyZ%a`A>i&gQBN=pl<!sz z(C8BsP%=EZo31CE&mDdZY4gMPxf(GWhkz_y5gG0^s&4J@%gZ@u+=vXGjwDEYtv;3H zikS|OuvsSH1R4A7fJyZw8Q|}-J!xPH3Mk47kXfnZb>9+V<*u(6dliJ0zQ(N+CcQkg zRzubOgLX?p`t=*89S9KM__MViGSi9kMNved-+w7}9g$ySUxHcYTwy1V#&(?^RDv?bLYtgliB_s( zX_$P7upOl^Rbu|OkG>?B+A(;;+2D8H*ZT&vuj*X%#zE{S{)JUdA4nbH)X-JOLjC)4IlFED=Q`<=B{!2q$G6zHJ#rT zYj%KLU^!kFc-%a{)<5EViMG<(8KKmEW6Xb9T-Y5!q3Da~dnNTw_UB{X5Ch4bG3z0| zukzadc>kpJftwRbpUciCPXZUdhc&J@xGaw&N_1w@;L0Pld&GJf=i;M?WY20R=zahF z;DOs5YSuShKETlM8QeUT_qdfxUk8hqG23Sq^Ymf`8^#m2gr|X}iD7>{Yw`8l^lItY z3%;_Eku+pL9b0e4V%_0hFnt>36=MrmW2`Y{NZGU~tl45qm5zW#rKly$eP9+{8vPBq z#=;8S!bq%%Sbfmax>Y>r5R>z9=ynsXTf`tmrVMq6@e?V)1QF{a^dsKUr=Rsb7&zjX zJP#B|ute&W_A_u-n*EufvZaRI_LF!jYn&F^gjmr8O`drJZF==^1rJ%6&dYCXpi z2M1v2QX+3n0sA{pZBxD0tcC4`e!kWeOWAgn9;8vUp^K}R1a*1EK=zVD}mi4+zu{P5ldp;?Q0w= zg5pW~S7D$WXO)c^1+99C^S>}z0ykPbYiN{3HR~Zj7X^-CQgx*`$4*n@$OfhX#?UiD zdy*SiEt1+w;J44ijgK!**qg25d{B2GnO`pvM>2;o?y9)u2GWEM?O$u++Bwrc;acbq z==PvqIk34C1f?pc{BOVOPRWaz^JheGXA$WTj&RHqn_IEp6S#C}U;c>^^I!NE8EAvC ziH+&?Z4hlsaeqzlD(46;LC?$2Uw^cg45?@ZlgGCu-9dWmEEgb6eop9)$3fq)+c8V0 z47pQ;rsf{`=| zA>wvEs+$=cz9RBi#o5>u1yOZ~!X5FInG!KunbtgRaTf_Lc#hfUl=z+TdO?Wi?T*1q^$f%S#_k*vs3NP2 z#F}cfbZ%#aq|9d$#jNHq2j}kuMQzI^Uq@=@k zkMbBXnivtt;skAV`7Po@>G^x`2f^*R^Uag;_VQ?CeQ>g0;$zARCr^%!F?3e^MP}GU z33@It8g7k+JG*iavCIhp58f&9G0|eEr02Irziw2%fF|B&JZdkyY;Z>Ed_ILovMlMB z;t&_7szQn<$R#waV0Sly9DVl{crjj6qGb3}RW-~Hj@!^wPSFZR-Q;@P!^fjobB(uI(ZPU&RLJ!uDJlRBX@1C1?>(h%!b<=!R~K(K2r+Y<%5&+ z-doYh>7SfTX>6C4qoX`6{v*`dpUIygpY0KnOLkREHl~#~5K!(sp%JLazse1&E#?Y7 z!4Mqwyr?fyBNIP+7qx^)w$pCN7w!*TI-2BY^C)zE6*B6QliCTPRbDT!fM3w2;O(=D z!tEcWWCs!yT;Y}7605#Bk4Yq4sW9z`7shwfNJcTLe!%%AW3!6OV#Q`4qmrnES?eHK zGAf~v{hAydML$IC+^cm36vC<*9uaWvB8YKxYt-N&XR5K9Be%5h;}&%}yu4mka|Ry|L7?>zJv zD;Y!(buZj`8qtKz8=Th}`)BoC|RyEEiq<&1GUSCO}(^EJ`y2xOicoGJ|D1$LV{*V1& zN`;rv={ythGyrw!mqQ)$7 z{wgL*R~ov^3HlqJsCqmy-IAFax|KYsLTw@UccXPPHj3kgZuMc7W@==ei>uI@&JA0e>#T$dmeqmP~EhR zQ^%tA$&CP}I@pO)@Jzh?Akf5{?iJp{Z%pE{c%We`Huj2-?`(D z6Z>L;J`g=GrqAYkdj8({e_f&x|Kk$7-ssb`|ABB() z?swj(a$oO&-HzM2F6TxnDac|sTgCbSChCO;^?tpDOon?0zoBTT^OSfo`_LU)kg1Tf zCB6RYiAkSVpFjnY05W$JR0*1M3+%G}2?yyk2LK9l!#^=;F9e`nj*Zb8G7b6fHd(t$ zcdDk3dRftMtkXL7KRhZNU`EG{{R%Z1ktp^&=(^Gxzu_FzcPWz`qcF3)k^svFoQ~n;n%YRVe2j=w;HU@d+soTcd{Gu%b%J^mDPe-uh#GOFs}J zD!?^bpZpqENs-O0R5}T0uVFNj8&JM7I#J=&!LdbCUU^9KTurzxK#gE}&vY9yLaFBK z=DK*^kdP+?#K`^|Fxx;%BcKEcH;MXEB4)Ouw<8*J=arb1wXHCRQ^_Ddb)l*K!37rRyK6C7NCrBd2@woTCI8AV@Viv( zx6R_hal@0S>MKLoXl+8y-FvB|^*r8dRXV5&O0?uMMM~S*2{T5c%M1G>NA<2Y#YzPp zcT|31nizrbr5#|&deB~6B+6{zc_=|E89{7)9TL&3pq#XwUT8Q~*$v4ob^=)h4?}|H zkd70dj|&CIsi%KkoMi@=Awk2eg4`%tMm5d7^e&#!QEP;eAPuATABS$UuWZAF%0IK& z6KG|+RpU|>a7vi7^ucNjYFRvKN1s1Yv32-<;V46)r9WBa#)C@uD%&)piRda{KT6E9 z>!2@>NM-U@ve-)UAm2(q%|cxzMV)wv8YwV~k+_>@9QSGpFA3!rmz}0(Y8E~VYSvt7 z_fU={V_f+KZ4#xcs5O|=+siO}?|J|!)_WYM8B2-NUbBNTUKJTID!Z=Q|LKV^B1boq z>ldv-pik_;qC7{UJ2>R*AF-yq&pr@TrKd>SC#^8kqb&T>M-bwukME`$J};DLzRCI2 zrdZr&Gtrh$`90;sH_U=e3c*>zLmU_M!Hf1ykzxODM*M%%;*qKT7cJhkbGnE8rTcty z*VczP(1iisMU$NCAIQWA8PfTH?RMk{+4S)w4$Qz3<&;HzQbt3~zxpD{RO_t15KJjA zr}PzO=BB9LOzsHFL6#A)MuD>P;D%yRRD|ciGK2FMS)xT4+iq}t7n5~JY@P*aXNpZh zKqRlMcMi;*=a*UhdCsa1K@8f|ArX518tw&@q7M2o)lT@u#Dy|V0rx6|#SKlN_g4j& z2T2g-tSYl2w--!J!S?xZshWI}K}66%oaqc)Ap1JIm@O*;iLR=~H{?cFW;jS@(o%-2 z+k_Nn$-}BCl-bk=OXybO1y^%BePj*q)zTR*4@xy*2QP1T&G{8;t2hiGm29iph~a+L zVnXL$ z?z0hb2?6Mmdy%?U0NX>6yk*O9X1VA7ZHw6LF4)m5norZc2{2DC_w3F5Sj`w9x}C$8 zd_eHPC-l5-XybsQjlQsC8F}X*n1tU@mfKIe0R2juGiw8`obA_djn#4ev2%WyqD8{v zf-*f_OKA=w^4kVnzSWmLjAQutrI#a3YZ9b*t*nA%5a3<({YAh%P@r1Y@DFGU`TBz% zaz8Gh*-Q{gv$vDlxaNV{c5JN~jXQ=%?ZsI}c{RCenpQpNgS)_TY zPuvlu)sxSysaf%!NI6hprVu@EP7`Xx2Cf2inMt}l#D_wd4Euw&AMcB_yI>Zz%X_fK zS?hoJN)nCjsCBJ|NFT{T!*n%sMj`$8jnFPOP}!j}Vy}+A1_uU@zIeRc+zdv03g2A+ zu!qz5jsfBcxz9%zkJbK(@(DD?+rivYbE}P<9}o?kee;0?57;;&PGJuFXMU{9>07GB zFPk>Y1W^NFy-;Hw!AC+^1q>ra59|=#66-_*T3qW%4wJ5gT~1BG;IXNJOeG#mB-G@3 zuavk^Z?-Yr78$YAbEhZvdn@QHZ_c$yRaD6=W4z>QRGU~Dz{z(YGb;luSC=2*a|O+I zw^e=YhlKL57=pBbty zg~1xkoiRdB?dyYgubw^Ps*5|)|F$P`t{?tYzQIt(e%lxr=SAohhWh7GOAF9--RZpr zPdXS2%dpe_nPH6jim$2KP!?LW#|~YP3{Q_>Xm3&VgD#nc5a;rvBr#7#fLsSD4Bs1G z&;ej4XMTq0@L=rR26bQ~{b5%_yCFs7wS2U2^7Y8dMF8#<= zOd8=QLAR}m>%E+wBiBJ<8U;ga7fkhX`2HNq?P5iSDph#dEk(ZZ7KnR@c$`x*s>wfu zcuaeo8T`I;?TZ@eh&n@q``WE6>|>(M3Q;Q*#EtlHAmP>b-L{@d#pZUt`jR@PwbI!r z>mAL)!4@f7Pmf@rvSW0*iK73u$#AoRI8zv(KN2TCIzIZ(jcv$W6BEIDa(H`Z)6s1& z9MY?dI-`Nu_(Q1g)RU`vUOQjX^Y^)GA=7uV<0h9|v6E9PQDoIQ-atR0*Pg=5sYuAy z(`j0hvun!Iyl}H_*Z3Ke&6@UrO=Ilfc;>+R!x4V5FBs6$>h{>WE>WvHXexNE9<^HM z@)QWvF0Y7UtK|w+V+)NT*%#k9s<*sY`G5F&tFSo3C`q^*cY?cXa0?B=gF6H#xCfV@ zjRp%4+}+(FxVyUtYl4T+IE}OHzyHka&c)pJ)3@(;>QvRK;*KHLD-vv`|9OP7lrYVM zQ6evfH)q~tWAJS*CmMn4x^-EaFu19hWLi~kx4G|1ov4`$zLQP87sGBjX8*x+Bi^Q! z#q3?$vjy0(*K@RDe<-@`zMxJA+@_on>nz7ufBvn|E>F+rIDmWOSRtHZnsCwvvAxT0!t zsxIY0y98(LoVwP^me@a!K3T*;fWErms$;f5DqQbReVeHofi;pI9VAFekHze$@g0ZkeU;+J5>VEWD|QA zrD8oU$EKUY6-M%dl9y}nr=*s-szB@H9wspa^KBv0=B7eEEIh#^ODpnE!tn8zkeG?M zFj$FIMSC`qg`T@e0hJB9=mkKdl?FM zD`bd4`)0Ug9;9PQ+1R*pT867^;UXSE|%=(IWP)dm4Oof5euVhiZYRWY{K8)tL{ep73920nAuMjra z|7O)3o}cITiIuP=$~KY>+?8om@^*1KfwFJ(1n8{BVR*O(U``FY&4|Qybs4gWwQ^3H z8LAEnpN(#C3qRf+9t$zF&D?;`cDwA(`mul8H!)RNmLYO=i;+g>^Khk?Xs?!*9#~zV zi@oyBGRK0Pwnv`#k(u|{$@SCl>Yo2bcdQm09N6QbNAWTr5L|z8$P#g<{J5EFN%6U) zO2M16;Io68q4erk*c=qoLNZ^M!_>)>%&roKSeKhC_Fdl{Hzhv2IJ01=qO$%-q!Ed& z(FPGxoS_x!qHJD_Sa31URqe2E@lPZ`3Z}Z&OSnX`0#XFgKe2z<)P2YM;ce$&XF+BI zr_`w}Y6|HP*CU&-JN@LsO95)-+PVl((y6wU5u(%X*KHR*sdxN=*F)+S3(l>2KLs-% zW(jWW>Xy83K>THeRF{@iPeP+eJm_L;F?@+vfKHAkUXf`vZeQx%FU~z-h#^}uiRXyj z2yyqR??jAUcNQSLb&PqSSRl8G(+6m7CtBZMGt_LGwNW<^!|SsmeRG(Iuy6y4A(i5p z9`NW+K%C!sxfTQ(JCIs0{GzuGIzt=yUEn=a@`JEzWX6iFNu?)KVSu^33PtjQjcnlK zFxHgyR^FfHtB>3zS*|tTGME_s8pQ`J8V%s9NjRcgWM@o=xhK}R@E$$8UwW+m2YDCC zE4Ag#V>8g9+vA2UG~rp_(j4hn85(gcDFFMY$aV7Jo}*($sA@)DjEM|0WDxgml0t1U;-iIU&TX|?KSmnd+COUPrvpkVT*pZI(I`wN z6G8KZcG3*V^C~5B7CV$7lWQV*Dg(FvJ#JjwJ~H3byFf+}1qyWCiMQ^wm_uORUepWY zrmWUZ9i?@@e&@Rqs!Zk!*lJyb#9Cx|L5{`|(`I3j8H7o99dnja%EU4_p%|4~K@WF; zOLTY&u&^wu$Vc3-bnrMf=e3?j$|Q%9@)VXh zUwega9ip%$AT`L)O6fAHvA0UqYOmqehMF{Q@^%t6xK6drGy)Onlz7!*fdi?8O$0GH zt$zX{7z|;Phg`S2+8YsgV@~UcpOO@aZ456%MeOZ2LQgy`*{^Y5aK{PWHB2>k(?3vtcM; z#%2q|+(IdblUneYRLs8~GmDsqbimI3+;#~i_3%e}!-pTnK-x-0vDYg!uzU@=+!3j^ zS|fMrm_|0+dUYGM_BfxU#QC`wKAY_^A8JhuZa);~N*1dRWp}W)`reEDS{KO@@WGEY z7T|2_ba~|8@_%K)w$%e7LqPZo z?PfW#SFrj^h~yl$RkZDLyJcY8iukBG3pY4$%V2-8<2M@RnCRh%iB6 zb6NJy|GnJQP}*27QA!181DY@=9MIB`+irp=>emYb++{-!*96)50qVpDu7R{5BU7

G17B7pM^G&rnJup>8{&IEvrgJ#Sq585wXuz5 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 z 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

FNg-?^NkfY%7z_@~Ih!p+^(G zLI%{kGR?#Vk4-u~l}Z058DLPs3-{&kK7N8Dz@qq4vD|N@+8IjW^NhpG>oJv`Ik-~y z-E^VvQdu_)YJz|o1A8g=6 za<4i4#eTFH=Bug_2F9_SU7_yTMh2;4|CE`w>HQ=uS=S3foPircqdUA$A#CXAEk0xU zS4G&ocB|NxJUcN+xj0%xx`IZqrYKT+DVbm{?-W`!yyGV*q^hwlO7G{U{x!-qLM0p>vYqYnu6Ci-{I z4#4)Wi{slT4Y_4lPn>yfR4yJ$HY3ShjJqb4+BU19*Qv48j`0uKT~`kuk07)t4ilds zG*y4H94} zSHuG>-+dr8+3Ds=Y!z4gldubyeZz9`EAHJMq_%!W#=`-%(L%;PoPM?bMCsj_7KZKK zxTzyhT_Ct#m~pt&%)$99EX1Oox_PAcp@@7|Uy+5jUOyY6 zq)6fhQ4EPgEFs_Yju7UDgn}sG$6sQ=Ni5QItk|7Fg$|EEtyyndy6H>dEcF z6cPW4Bf64GxG9Qnv=J7jFzmwJ8APe(3;ug6cq~eNdEKa)0bx`#q$8oc(G}wS^`#Z^ z7jpSVQocgT$p%g^0YyfagFlZo5_4*<3~uEaYoM{!km6W(OY6f&pCHV+)mjIYD$yw zUuG(OiT;j+Tp>+U4m4j$OXm))@IgY{+(XgZHxGX3$nZP+$z;-;1-_9a2;Oa(Rvvp( z=^~LG*`norY)f;RD;KSht)}LcaB#?FX*1~?Xg@Tw;t)q$B*7MMl-EA_Wl#cJMJatPWR17op0!o(Xl+Wu6UrmZ(KOlyE&EQ_zdj+^=ce zV8Jsow3|hMH4F>w-?MKKh zC*~u7>Ga~UUeoRx!w2sonVPT zG4IU7)Q+xcqmERaAE;R8FVV$^lMK375B=GFffH}NK= z`!|Ca(e*(4vQHBb2P9-K&;u2$I+$2E5a9pP5%NN^Eg3hx9-`i<^ZPpzpV!;oF?2_)f6MnDxQIMH-gESxY=%p{PCpA4b$%aCqrO2Qbk&`w zHU_s#wo@Xr;iV)kg`EUy?_7jG+6<_h2YeO_S7b8_{uIZFc>3AOX&=_$Ewk0m1xV0J z%UGx-F@=}Y#p${geyS;GF^!}%tvR}BfPz0l)@8CtflhF$`e1OkE&e=u9ksM-6)hLD z&P7XO!jS|~9#;~Zhvhx&UDk+Ml1I-7(sI$T+24Jzu21>nh9<^Fjj)ph5X}wwnt?## zC1AcSTviFarX6Gl#e_hxdsAWe>Ua}9b$t!EI8SR*_@r=KYpE9uytm67YeL;FJQJ~7 zlv~U4MJJ@JA3Yx>OPWO2{0Kw0^FSue11GWY2$)8jE}qvWWDgdn^vXHQiWKXYO+-`J z|6AsND<ZT8y{7%)g(se^<+#c9q=^Qd9e#RrK!N~RSFLYN zh3k9ygOA^3!P3GBnBi30!0abqJ{MtPOL>5UV$2rk!#nN^iH=uS{{iWq8+5ERsYp`QZ6^ z7;EJ3Q4;)X4eMjiaZSgj*Jf-ilz-0sM=2@)-wn5f^y;GX^FN9TAz3mIw(Xh{#rGkd z6M$kPjOsfXV*#YZDB|>0Kj3A_`IYxeO!py`O zb0k8`$=dAwTXNvseKT$gT98d+ahBJ!Dpmw0W$$n=TIU6n2D=blKa-T`*dBfn+n%_D zqdC;wgZQgjPuS(2isL-A7pQFdyfS0eC?viVB+E>+BdE+rP4UaXk0erd&mrfUPLXj< zX-?Yi>lBjWvsy#U4SQ8(!Rj#p1R1>9rS}$ko1^tgXKkb?=cg#qRjV3*Xz35B%BWcv zs%8%wnBjn0Z=~DL$Az4($+Zi#4;W!+>H`~bA3+H0G>DELr9Yda5mBKcmNI1Ust3#M z8oWsz$GYN%0U1;bW!}-t9`F%>Xc@HjpYOR50!&ChLwAxH0f8y&*7v2Y2=>DxR!d{~ z94-3kD{U7YED&JE0}f8L{|K7mw=m)eVGqh0&M7etP7-`=a-g;Mvn4k*?p|WGRt1yK z68x%IDglISG$%O5%UlePWKZss%r>alF^>+n4#{T#DIL7!6*Z&g!6;;{) z8V4Oogat%4kPPW0$qsu;>1i9L#6p`z|alh0D5*e(q3} zDOr~GD8^7tszs3$zL?bh*>=0Tbr-hdmF4{+Abfk5B&Dlgs{OXG?G41-Y4JQ4o`)zE zuBK}`IXHqqb>7;TRdCjE?@E-nrk57C?vO~vc$IQRL6kw`NJN-f{;`Is2p-2^C4>p1TE*z1@2$-hQ+qURu0Nc$n7#w5FVg$JtGDaAzTs_mD)KYM+51W zT^m^@DAs&O^7OFI0d@>vM=!Bs@0}lrOdEoM9Zr{n zJvDq{=!x}cRX+O8lPmVZX+N*{T%XIg_mQGd@|yUx@sd?lf$6j?<9%7A^ZAdP>$HrS z+>S4b9X1p@*BQg0clAF=hD^k!fpk~z(Jrz^VJr`B#>SFh%EOSLoqOc}q!RzF5We+) zp@fp2y#`D!FNrtLd{!$f{Yk83*Zyud)VLB2~rSX1u?K zkXc6?u*|&9X@tH#7D(Bc@y%wC1;+ePOYdHSVi4 zy0-54JFZ^&+h4?k4~uH2n#p|J6HyE5Z_Lrd@968~$yQfGt?D&RpF_b4$o-Zjl`(tg zkEFkdPgP zLG#}UctS*1jsv746~Cj@>WEl9x}CJUtx03Ag%YCl!eC68M=Tyh7GMydix`%~O~!As zGah!oWz~jh-}0wy{=FkwbtfIG<{z)fpD)i}J^~12ZeQJ_`igyXk{XQo>k<+rU5Gew z?IcPO4f&E=C72R}L*KU-`5`wOOhBd}ZD!Ec89~~7x*_(m9uVC>N|}n1% zCo*;Qjsp-wj~X+OmwBD9t~i&nF{P7;3#bBr(3e6;Bh}y~6gVb#gYAxM-eD{hhlKmU zD>}Y+^xfj^d^1A8U)?^Ul%e1P$!K0L5}(;9fo(r0 zV_GSL{d04XKC+sEC*~%h&%=BM7iGs5w68BD9kheBtce?xLO=WU)BK9Iv{p zY6d&JalMscY{ah+)@=?`_SxP|NfV+)4lxhZ!f(rr!Ta9ukweEFE7g&$G<|M3dbiud z&8$Za;IMda(5PiY7AhP*koFhqNarWus}lof6md)FIdpLX5!jkJ?+nAQ_v#z zO}_sd!U*lV6*%JgMDCf*deu~2xa)04y}UrweQofao+c|dm*)G2@h-(}Jc|rduns^p zv#&v6mK3AK;r&}YuFqrJ-CZHpSkQ^i!qQ5xy&h3K!?A-cum1iOGJo#q z+fEO1VehLn%Gc^F?xXn3rnNc9V=?titfRM`Q?Kte-##5<_l5>T^WH(B|QL zy`2V@_(pWiBJO74CZ-xaqmdD^0X1`RUBsG^ngrU_3iBbuoOlxaJc^QX-(zz&C;aj9 zy)xh?8Q|64BCG(>K2Oi^^gD+(wu}?ZEIo47M8Me+Tln5!OH+NHz)#13 zOH!T4?VH=1nkh;s(Gcgdog1K)B8QA(d#ywJe5}ix^f^}awA}@3`+x`;Yu&6nlOBhl zKI{$+ppQusE2t#3p4~%$^eo!+MJ$L&ziM?CCH&kex)}0}aARgrnIl8tO%UPqy!0v5 zB(%_S0y`|hJWAbtPr;(o-Q9>EH4cn27i41 z%24@`bJ(CcSQ4!3<%ldxsw!wZ z{xnvH)%M`%9XY*cRVVQaEf7W+)XI%(AkO@%GqF0v{Ne}493Nu?eVvelt) za`*V6?-y#yGRUx(rm*WomTL0HiYMG!$jYtNs(A@LLpcs}QxMapDXQO#)>LUjgK9nd6GJuft68Rt#^tNCmpqb_uIt=dkMEcg48r}*QT$+s z_SVPLj8nnt#tm$mfS2A+OxfDWQU<3b$A3FvJZEC|+DqTox!AfiH5#bj>$bFLf8PSC z=IFmY?5068Tf%NEHk8cW@`LnJ#@2cr7CYyJ>&ZggWX*xs3Oi5YvV4w6ZrZ9C6{haP zow)0tHs+@P=XmQ{cUQP2|KbDBCu75|fda0X@AkT$nC~`1uuK-+(3?PoZEhH`YsGhK zlJ({$t}elYlwzUk^*E2B<5*Z=0P!fEbVjeU4cQ2l|K|+7{hL+}yZ1tnCgOe3`#YM^ zL9;I}c-3YfqG%L~x$jIuGnTvOZzyaUky88-mal8jKa3Ir?Hn99iHLJVWr!5|bx8Ix zc_(ddv88ZQE*XVEsLSp|g-9kS(MD9rCoaU)oC*t#BwJK}J8}Cyw?W?2)hMa&#y8x^ zkmIZY0^}xKg3{s%+M}^(>{6E~3jxQ;EM3Qr`O*L3m3vcRtBBQ5vk6j;E0OF>oi z;B3XOCd-fDBHi7ZrCquJru6om?kX$w1AWw@(%|IOwsiL19>OtDmZSch|Gmdt&qF~I zJL$Ih49b3x#8=<|9av1I;ExN{VA~4 zUQwzcpB-xuM;xfW+PgL(wK%^D%8>a&vyq8%v#GBLBMVWkz2A}QZ|Mw`{YX)s zV5+ntBu=M#-aGU;8`>S8ZVjw1L)%Fx#GbI99SGyhxj9HMOZff$qs1HKIdR;_%qval z8HHpcE)kKIg$&T+3h3@?Ezfi8N%osWsLq|;eIpN?Pyz(Do!8nfnMw{tJ)yieHxBtz zi_#Tsh>&aO(*Z0&5~KGsF9n5gAp1c3VkaN6zGA$cAa==M#LI8iIxxRKswz}|~>-;bEI)j7OB-{kl1!leLIFV@pU&GlUI6e^Ms&ih+XszsVr{NY8!B>=>)vc209YthDbdMh5u-+14887y`XC}V3wlU^}^cFj4 zi$p~sz(W}v$u1N82or}sB22wgR80Iy>T2JSJ+bL__s!md0qQ~5LI&VRmuG=WPO>#b#o2fsZ+?XfxEg$g+f&D?apxdG;uq!b zH5CrECwA%}QOB#;HK_r|dUphEdPZ|xnPl)D8WDaP3^`-x%tprvefI)`s2WMyTul=T zKN`-E7OTW5AlBm|YG$>#zVZds752vtRZL;(;8xYqYv0ixSbR3s$G|TnAlVEVd^r(% z6UB1h3JQtzUs}F>crYhgNz@Ia&18|he>4?NmpD*3g(*!1GYb|Sdfn}WJs+2|`fU?z z2|2fhBD%87M2!n(4z`zGSQ~`Me<3h1GPF#IkJxT38$Z9htLI+Gi8#7l4?Jk9!Fyf~ zkFw~Xn=fXYrwPY_o5J(lp2_X8^oRQVxXO^VgO?_YG2;%z!&Z^rwauE?g&xM~46ZbO zeb1wvz@w;b7cuceCFY0I>G#nd?C;lu10&)pITdgdZaV29-+IAhI3{=w3V%Av#SOr@ zz4qn&JacdTA!@+;NIfk&C<59?db&NmaR1aX$*}0uSg98yJlK&v6}H4COlocWNdZlm zRwC}kR8tI{a+P`=GeKqNk{88|W~OW5;F-4{$n{P6d?k9t$TNvFW_eOfElHS6A5Ipwyk@dMK_N53yu2=mfXi!=F{1ZB1bDJ$G) ziKWiyF8UW6iXdxviJITv1SL8ayRVNRQ%BcCy>b1vQD6UZ4QRg}E1M+Qde(+A4m29X z1=0TPwMQ~=K7~1XL23e>nAEg|ef)~U;wv2RL{YpKaXi%K|ETE>EiSm!K3y9;J#{0) zVn8WCAP2?9cRlM|k!~aV-<@qIpWV}vK|X&Nkj`6CMjze9v1vjMz}d?7=nT{DIubps zLMl}=K_<1Y>|Jxc^XkrBbwQ+%J+($x5no#P3YrhASs4(G*wdl-btoF2C`KD6HW4>4@B;ZB1yr+IF9u`{TDO!wISY~P1BGt%rc zPn)4#3{by=m$$i@=pu(A8z4%t)x*~nG<5)+D(2^-?>2=k-fx`iSsTlITY~)i{$60I zijC!>aNu2>h7Ow<%WsnJ;WXd-A9EnRr?EoNR`Rs6An&D(UPn{YyIFll(^^_til}oX zCwIYc#)pNq)qa2vsl$jw)#654Oory(%3J;;4G)Tcu>zE+jpXRQgo&1^uMv-Vr~1!k==$xY37rs_M8@ed)w$eQ+^hj5qnHjLV|X7+mcq%GLQCR zR7Lr5ak4Gbqe_7GGHc&g{PyZG!bLZZ*lSq?CN!&*hhkE6TtU zR}XKS+QZ}YqPQiTpZ!<((?EnPboi3!>GEy263hw_6?gi<@`Ue8(mz3kpZ|JJAYBiH zciHPt_*vO(I3;esEifRbD}$%8`ut)-efQ_wY0}>xZyn9JD7HzBACZca=mQ*%9acLKC+cy+VU^31|+ww_v6i~?@xZIe&*3AJVjAk^WN&B@N~ZaVZm zYDmAM3-g3wawWwIVVb$r0)MrBR(D6rB-}_rQyo!KT=XYKm(wmp@YIZ3XW}c<0Q=3c zR_vCQo2hlp!ddS)pWC{KwxIA=)OoSTFsS6;BdYkIvi#iE-ZazoDyxwXvY#Ss%%r!C z+bL&xTe)05KUjD2fh6yEm{n5qK!MJ(k|Yc!&uNFGUoqsT`<$K@2mH9*d5mqo(JdDX zYghHD{!NcXxLP4#7PH*FbQ0clQtijavhayX)&)b?^PodG+4@ zxqt1dy=u)lhs@FC>$T-WN$LNLP*U>V{`k1BnIfB9bl~9XJv4`WwbO&hC3AE0Ai}y4 zY2O~h`Dj`x-BUAh|Nb1?g?K<-DVvJI#QQ7s51`D|w!$p0-}tAeD#2FgFPmTWT3I=h zhH)l|h@L%(h7aKM3-p~fWwp``-|U>jG>q{~v=M++3K>JWG%@%jOyyIX&=p5->@xN- z1WmJH4^5wAE)bMzFazrb{o2Gk=FG&OcP@}Vg0T&|=)%?H3g;v`K;e2dg>y#(d2II; zOV&{V`Us|mKfnqPgI-2H1lLwO53_FCh|uMb;0xpl8H9;S7tAwrzTL`A9v))CjN*v( zVa)C~s%L7$hikjiruzM;9~i@cIc_*R*=V>;!yxT&o~hzC9Zr@VXfzUPUrMh|Dn@X* zn7_qc;bZ%^DhqFg(8#%)0way;nM;9k@-`?Mc~aV$ZlOn>HOiaFsp~SFNw;ZZUI%x$ z$Z=GIiXiV?5nsd%pGs{Ao1NnGomEPf-yAq$LukDCNhXqdCSn@B!jh818CFnXR4=pVSw~Xi1~It&a$W1r zY>DKRHsYK#pZ!F^W5y8Sm9E7VMSNm~E%n}43Wk3=rlhPlyV~aVLC@my^1)6O^AqC4 z71MJgdwp@ye?K?h{{(3rF@JJ$tzx0^JP!cd-4}{IO2vkwEoxE}UIC_6R5)|9%>;#{ z8XOBxaeEa7Jo}nSTV1Xwp$l3h$3Y^%p@$1Vfq-NKDAd3WASwpF&B+YaoEX>}hKVd-6;NK} zRa9Pq#wTy0U%UG z`Ls8Y(u3WE1C^(Dr5p96I=Fj>7uXLyuq5yYY7M+^;_nqqTw+7aR?b6_ZJ2d&YjEsy zXDqF8f634;3=V%A!T$+5>2+m=HdNc%*IU^7Tx>jDN+0SXdhX!GB4=I)&LVa*O}ilH z%La{z{**N|vbGBRj--$}RJsxiL)N(LKw##$5qD|U^F5c}yA}h_V#_lFKfj*Kr0Xwz z4V+Od8)|(Sx_>Lj{mXA@63RlVm^bNKnP9UJni;2lq9=j&QY>kRK4DJI12v{}rlY8> zD)C3ZgW0UEQXyXuzX_+IdL1ph*pLiW4>QuZ?LH?qIh3A3K72Q+qiIOvkW^bjnjsh_ z^)7mw4FCi8hTe9_ceK?(uFcKE%Yil%?2BC9Y&D_!Y91o(VuA9v0O(QJ2yP~FsLYDJk$S$>6r7`eQ;8Jrs1MIR^?)t1=L=l;oZ&=viM*_n<=lzU_<9pPY8g=5k7Z4k0HJ!tKj!eII2U$Y;37OUNG-J5_?q zbk|=&y2ddp1V@fcOEnq^^A%>y!zx$ZwaP@WCK{6=kGdq3ntc=HKrI=xAAP^t5iJ-z zNWvAI^{Gd=VEF3ohS~L{V3!zy6?5pD#cgga$AbY$e_xWwj6smdo40$-wU4dnlc}H+ zE=K(u5}(;8W<^72RAehF#5sBW@@kDjZ1EQ7C2Bk(2^5uA7T<JA4YXyWuae!|k@T$3 zPEGlYw)=$63O3Guf{x5Y^UP?bA<=f*+7m9nPrL-+e^9dVe_@#b#YyszVW6uh*Je)* zMVfj}^JT`N4@a7L-PRP&pE!%2FIh*9Ifr~u#D0fkIR_;2TUlN&AT}2EzXm)Hp~tmH z%*{2RZxZX!@DtMuN2hX9Y)3c`ts+w=Kd}=!EEP|&n}I6&D)@gNIONYCa^+vhY!sWB zm|2ONBTM0z=i^sy7BgY|IIhNoW1RJ_U7BNR7#AJ;T*F0dp zez066{32XIRYykLYNVdVZ>3ufP)SfTf?Qlo9qu9Uk~bvVV(|$SZ0-|_uxjD#o1viL zp!Zr?UAG(_tE4TYRjsF6rzL>;Ap!UEG9SS{TSCgv+&*{dbQS8oRzE;6Jdn%IW2U*dyo37UJdA8_L8a+Lfi3ZX7kBEXF zCd8C4S&thV89r=It#&W>Rs3)9ssBguf$Q7|fKWV7yxn-Yd=-_b(v%}FLhes2#Ixn| z$EVHCp)?aEsUzb;hHu_bO)AmtiZ={|Zw5OjQHNyzz=$Ttb#%bQX7g8!kRnE4+s~H8 zO9h+qkV27eaKJXTY{i-!{o|y{?+zdo*uwX`ZPNqRhW=>e3I&9Z8ert(D zRt~alB{oq;a0zjn1~jpSZn>{rNmJ3&!qrXjk=F!U*2KI6+N8n$K}LpyV?|gkT~r@6 z=GSH)dZ5p&62wfv+=>wWQtmh-lZdYENjM{}82+C2kP?1<*Bw(URs_|Iomk6F34+Em=B&8L5U zyw?YZ$?!;}D72K%Y~OX(l@otsmUDctdhjI>V5QR96{tF_5I!vjtIN3;k)_*g58W8V zP$jxa5CT4vm&jWG(peP;-nF9Ira@!f=*62yU1ykli0yQG?Huhr*b@hIIRfYtSVCPi zG^#JTMm0bm<4iZf-fp97mX#Y;n|Oa{y+EAiChgKL`Bp(%?H&j8(Fnsf<$LcZS|fNk znh~ETiQJQT{{yNe|MTMTzw5d?M}nei-T_?S96D+-vfOOIjNdHalE+AtRT5NdmLdnR z1F(DDL|EbTV4VWpvfRAjF9anp#tVy(!jd zZK?~y*fIA}cA@BB`5piic?Orsx6|w$eo5ZY28qCM=BQ?^Z}>Gnog4T;=1IndEkq(COC?UZ)YV6`uYB^I z_l4>s57I{qD~7y?N@RT<3mB%ABu@5W8DiFiBuIr>4cvD-?6&)URPSA|+Dx+P;-|Kn zB0%?kUBFUWY&xTqeN$q_A?q+*{BLFr*!9b!!}bjMPHBx)ms$3>glv$!^w2xv9IDat z=21_BGhYnEE3}7rRamDl6bYXZYYsCFwOdwSzHSu}6v8r5v6rw25GrF~F#HZoz{banf;WD*!o-XT?8WA)Uit*!MP;Myp~z!lW(8#%;kN&=*O0 zK#FmigpwjUV6;u~T(CdnG93JQQe?97R6*$?q&Sk1uGpL^G}EnY;v{7##vC5F&gkTq6t+McpqlXiVaJKI9Q=~EaP z|5#4IuKs-eTvA`Q4o3F}cV>ll0*zi@66%zb(X%pgy$66N$_aj}7GjXaru^^kKYwK! zMORX%+jpSSPMqPwX-@f{barB=ev3^5IuV#hpl+NO`6vB_^Sl%w*eQpQMhpEN-D2w! zznUIyA4f5SAED!92I(0L%r}C-6g$3Ua8GR?^0#T#;=naYoV+81KTHmz zZ!tF$hRG*$82QKaN|^qIP&!vM=J0vDf2Z;v=VU_upXVfCm&Itn>2=r%ykq}O06@I_ zhk+VBHL{;N23U&MSp`1c!5_GyIn13(u!&G*?fycX8md_m^SX!F@g-Cya?4tp2Vu=H zq02F53B9{VoLuhXL()$A5*qBT0A0yBz9ngc)FL)yNPm!t#aOoY$2K10auBs^#V+7F z5}s-%R}>dq5p!poK1C$V5$&FTA(T1>Y()$eM~ivDb*vieZu?ph^+k5qVI!6q}3+M-6V1cFBYxg(2`R2{9Wyz(?`n4t*Pz5$IiEipp+Y<=Pqg zSPJwOD=lP!oPGbLpy^>sc=~C_c^)RMt^=Ju6{605t4VHU4x=H$LYAz9-}D8-m{Y}a z&kzH$xK_$7y!FVKXghYS>ZAnbu?{EgY}N;TXTjFLmZ?Milhn0Pl2NDp&R$-B>S`K7 zZ&e_er}mIg=c;CfdGNvM&eTPim%iY5)UeH5Yprr?od>?w(vdf{mrqr^k~FIqBw!>( zU~A>Zi+aa;Nk*8>mc##}Zyj3LavR`QKLzMwF3Y#^#HNUUUpZVa!3#f-V!4wsV ziw= z0iGe64e@rMI~VVB@{$q;=VJtk{ee8Z-;LPGPl|r_?JvRi%RwfB$OXh*aZ2cjSpqC)@!@%wJe#XAp;568d-_eC5s-Pl3xkFWIX9f@u@Xgwlei+ACl*$Z{M;-Ovb8CSdi@wdBQ5HFk zJC{X*ZpCFtx6S&q1Ro*v=3-gM0^bZ9;Hy!h+~R#^sl*+mD_o~^J++895!r? z>q{cGfYHlVNz@4YDQ^^YX%w$uhAUs&K%8v;tsE__8eYcz^Dpt!^)7pZ`FpHG=7+(YC4Hilkee~7XU~%qaZz6&E>bHBTGyAWuMber~14~h3-|Kuag=63z-HoGT|pn@FwNBweuHYUDu)GKyP{5;_`}I$4Z3M(D3#TGYVvVo=(Az z*N>?V{T_DuiT2&vw2^}kp5yQSlzK0l@(sDB5@@@TCtL-ioPXgwKRxA3aN(kes%!m- z3s=N94F0qi5F<4?0!fcoUJ_{ueEBbt(8cu_R6N9#dBXR(0q0Q^>e1hyuk**+FY;mO3<9aNw^HdS0(#!Ulx8%; z`c6&QNGQ5DgrawMf!KGVFNmuFdf925=v<$-N-ajyh+JqtmcgmKV<(Is-Nx~ATQfwV zYlkKJX*_H6ZZmlnwG2*io>d(sl?677mb*o}{EAg-t~^_JDFPu43g)|>9EKBNuqrluXEe0FKu2QDSRJVS@nxKU^@M#5+x+V`)v@f8i4wf7Mc*h zrS_`36rhfU(WmcHYm@8krT#cRg;ha3epkfCXGnp}zV!JETrjPJ! z$ddN)V8DoVama2*|NRcSu4}C&^rL><@PA!gUlMPaA8{7O0gK5r%;NgTyLeve$NEm< zV5(oofr*RV(oJsm zOy;#=r)>}Ox;UI|Q{3f@D|tm-$d%?p`Uf`s@g?w^&=ibKh{t_-$TaJ8 zFJteo;~B=`L@AX@TB05OiUn24NwjHmQ9d$rAY37;?Ko%x`?lVvl7JlSLi;rNIScno zc|1hDx~k1Joh4v_OE?A5ETb;F%YhKvidV)ff0%15|SO;_*8RpWPhA8|{wg#SpF&-R+?vaqT%NG5xIOLxn(m-s^M8Khtlpy>!YEFHD_yb*r?J2*lm zI=pWlIb=Vr(?F)Dr%!$2E-+}{+`G3x>A2n+_BxCx`t=?g`{dz@X?PB$g8?OW$Yd}H z2?I2AaDhS&l9;OcId22Lzs3*PjG2@4R9>*HzPB{SF$cC@jUhK_l65)ep;aewgIsL0 zwS=-_NzxmaDR_h^5b3>6S1qlduMgCYPtN*@M#w3JhaV0A{haua_ELUQYo3+!W%zVM zH1GquP$>N$=lHFMHe!{*j2;A^y_k3K*}7AGl9kXFdf3!`I*5%U^xcZX=5P*Z_Qa|1 zliA6gY6As16$MymBS3GmV_0W|-^mcqEE4FsZSNi;TM@Hn*K#jBP+m8YK^_LW^>pzQ z9h@79_?X%oc$xP~d5Sy`2&v(rQMO4^Dg=L0Ylv!1p3 z)aY=CQ*&d;+!vHUJEfQcOj~DL-qzd*rXilc`it>#)Uo&3lNXlM(Ppnp9wP1?C+OF^ z;tNd}@oMQ9Gg~SQwGMbUn(*-uF7*otP6)oW6Z-EnFB~?egnRNX!#r5dxTo{;#JyStnZ+MpI$!OG^B#2V|ESQL>y^>$IFlK3|7|1!!-f z*e}C!Sm!4Yo(=^7zp?8Os)oNo%*IobUU6z-&K zo;g!{Xo+Hg@K8rDJXQPtDyaT?RlH)QZ>pn(cu~~v44$=EAzr|_leC>|r{1CWqg3b9 z^hzXCzeJOApjfjbUbzKhBLP4@jl)$5Fj*#q5>S8ji3}^Ia4?Ha>hRJo15x%7 z5d6k2(&>p4!qI~=rx3RVei0k84nFjmPJWK1u3IS`a1+sv3O?||>@Xa`dO0ULzu%JT zyvso%9}{ou`B6mneT5xeAS-RyIUryfreoHgYmmNS&z&!VZXq&zC|(Z_qVwG9tw1j2 z550mZN96yWkUAQ6ydPfZTY5klPNspJw4aFHI`)LWE?^2-Mp!`>dpyZNj%&LGhBf{( zdgM_Oz(HAQYQ`~2ES0%cvPf387Uv!McQAZh1)1>t8FB4jKj?>b;kFk9Ib5oGyHWHS zz|jhWo?3w0L?>+X6Su zq{!W{8=0^|+-0gM)+13Dv0ZrTgN|EwDqT*gO*!0tN}&d&+MxW8X^xK1^XR6Y^{IPb z3>DsMK(ae3;s{1HuACb@>w%*gKOmE;gyUba-Ptzs8Ef43H2Gpmad??&?KVblzw!YwfAKPjH-zlucpV7g!~ z9h|YA_~@2MkDa|N1wN<#V-Vz^!|-mZ{(emlYR9GReVUysxd**H^^AnJY=q@xE*^VG z2=9%}F$f5FhlE3Z&e|Jyr_*RZe*B(jQr461N^f7X*0(T>2%nOijK?|%Sc_x3=JSHO zz+61}23`3E_Mg#tYcN4}{qk%VDHbUAux)ZmIjc{#Ciu3C}AxzWaSeCtl~xC%A4AerOJgIr`kW#&TjQ zh1^au;U`=ceV&gunMMTMI}B!X!!#?Hrrm0_S%>sl?d|Og=%>kM=v&_&4WOgu7TMcO zS}>=HoO#7ch@MlVks3l2?1V%9I-!HAL>uSu^g7!`Zt&UTsS5aJ=9yx)W~5p!%{6uo zTftQ{rj2!gu|x+&PS#mCD8+TUBq`}09l;8{(mZl1@;gEeZYqh-Pc~87D$o4y>~1yX zLAA$~Q{*W+ATIb8@(1IcMBRRAA44FbxTN~LPx&o}#QWezR+f3j&Ei<`QMqiX_897n z_#$hpj6OYrG3r1qgFFpPU7u{!=y|aDH%S21`0z)I1xLO-)^Ip=ru^;EMbn7xucO6zaS zBiRjM-CZuj)-b^0l`RN@5^I_;Dh`1jpX##>R;GK|c7wBq%VDzG z^RHTWj0Qx8d(uqJX_k4wy~gA5xR^!cX!FtGEK6TX66%?~Y&n^olUab+OW{A&LI1WK zg<`Fb^t_3^ari+_yZ{t4zipdlPdyVq2RH3zQ&`+s;+-gy#Vp}7jL0q8w>Z0cM?&Nx z(7i|J4}B=D{)DT>W_g`C^Mr1-qARLkCOAJIlN2|Q*lr87K-rgJWIw8p?*#~d6P)0#ikL5ycESwz!B5zz4aTnAxU3Wl_kOGv@ zovybpsZMoI4PfP;GfTfrnVJPQ(dP)F(zy{b%S~We6JD&L5vt1;11kY2jMR(_q z$b=ca{a`?(H%{a&(ed~R24Z%{k++if6ejCM*ZKk6Htz-2BPiXdo33Sp%eY`jb_b zHsbeaU;Q5~lGh3|O^OCr*4?_)n!I+t-3Nn(+;)`- zwn87#;csLqQY{(=l4)@j-w$0hz*Cm=4_3h0PrAJy={V?Ra^Sy*Iuqh9qdWDb6*_laV{1Da8U zXL`GQLBC5o1cb=U1TRd07{{lpP^YyhCRW~-(8fctbqmIb`{E}eX@K9xOnw6~QB(l~ zW7=O&MQM{kJBivf!vv<+zUDzOHAy{S|uS zm5^ONz~b7-ly42^j{ohfnefA=nfJD?>awXhagW6u!j&80gF?|WVw3?^W3-5rko7M?RIE>k5WdJSLwmm){uLt&H{=m0{Sf zOj6xwnbC|plqPl`lBPj^w%g3#@Wk@);~LeD6M|wEGzl#yh8>-0dU?9iZz|$da!Ukb zCit<&&62|)JAmDzLO4fWM>7%GZCYo;8wp5aq0ft~l&9j}@02aZy2+KPoP$5SIXkKt zB%4#i;(>4X+$QNub|2leb1g1O+rT>ipWYs@`ErKERB?A+kg|_Z|0QE%^`}Z6L+_(C zW}H8{t8HtE=)2`35)$(9jEp!7Ktco>__BRSr%{r;-@e~kLJp>K1=M|Q2)i{7vTPZ^ z)Mrt;xF5hezuv?l(u=_}_JWWa`rPnNcZmoH3|b2hE5^=x*jdMzNdihZKVe6^wE#6~ zvEArF^)UfPjVzBO36{k1d#3hE7t1hnW5g#h*wpR7v>poMt*NCx6b`jDCR+5d3OM#ecRj0F})WW660x*%^)43lD^A zL%OnBjJ^2^tfR<4X9aU7@VQZ=u`zxsQo#-yIwc%%6&fQ3h$0iUw_Mn|!k31w`Q>KX zR5heH5~`SlQrzu?xP;Y1+`kUSyJ878lTWvs9(G6wEqe8NTbNr)1v$QdOOeIQn}b^z z_d^Au;rIRkBcU(lqI(%cKrb+bZTF3rqb5ZauQfH0NIrV{U zDWD3e0B)*FG<-doFGZezVD0&P^8=I$Q&wcYmkN^YsH@K}i&4D|Y6!ZZZ z42LHX=9NjGj`0{6EO$EVYWgV!|1L0yf8wm74drJUPc^V=FLswYuzHL7XA8#guNJJz z$sfMwt|ky^21|uA@9{is=WFBUBD>;*1olYwfi8qxhfJ0f{Cxe*1W%6Y8x0ZH#8jgG zhceKS>nxxjHy&J@47!twr>?cfi}NJvnsSH_g-(kCK<^N!6_cz5ihv$G>HOqU$!<8$ zh)bMHK`o&}_)Ly=Ba3&F83P`WQly7K#VhGE{;M5#g3Zld#NC(??;p zF_@(-LB`R|LMME}GkX{2&P?XDo!K+eZ&HATpb_Qi^@Do^5772T^50?F$gKzzDGSnk z8JKad#i|MM@kv)N6zn-5eo}26px2wHZyjyl!43m9JU)aLF-GQ9xtCIVQh_H`q(8t(52XA6~r-FG0s3dr6Hi9bp1}Isv z)>k5Swbpud$l?vrJL?53FD|YRuxz{tX6j8HCq3~*1j(E5YFKzb6)?ixc-&||d@Ukt zf>L%bT))&MTyDSW3rJZE+p3PT^2(1CSIBLl5uMp8GJl+Wl*HUFe^34@cvpdnI&oy; zYEtV*{uxpQCp#Zj+00H+Xk*jqa{;UzSe~ek(dDcZ=D&GnW~iL3qqEKkK6jt*sp~#v z{Hr``3}M-9;+c)p7KwWU1t;9%iQl|3JvQJ0=HV&`i4bq_Vy$aKugPPqW`W;VUq zI}9-f`n(l4-NzHGKx78)9sWFnPxPkQc@$>89Wh8)-SJ}&B)T_<@D|LPvdUU>TsYro z2u0f*-?JAGh5<<9NHdjOQAeP)(F9`m-4d8@vOj=DNSrY3^7!1gUlAr-5>W*O-y&ei zSHuI&s2{COxG2EK$0U{mc#08blMHSEBr+&cHIN*E^}BK<+f67JQ9E2*`rX>LuxLMz zfLAgtA@XG66?F4YqhY}2dvs}|RJLKZ;coQBBDvZUu|@H&xgG5&taV?QtW{r=5Aix& zlRsY>fAHgjLa8|j4DF&WBI=?}a*p<+uEI^Ti?!_#CF92c=&Iz28(2^$8#&U2m)KL+ zIRv)*8Db=R%wJpAmB8`5ld!#P2a@T477kQP9Aa**X(|0lP}Nrh53$sr+9`!C=rbQC zlb5Q>%M0EutZXlEJ8KH))sZT=0&>N38TxF2;Jbc(a{@tq%(jX>UmWQg_$~W&8%@qC z_W&RNPrI#Q<=w=Nd)`|8N*PluE1ySxHgl|e>CtKn(5lu#`9x5{OkqZB2f*i{C-`7R z#0LM1ImjR(Ks)ZNCUgq-a{LBmfH9(qC}utdq}9L4wQ5jhx7TVxoxMRmT3kDhZJ3jG zQubjCt?JWfBiD0R?oYb-Bj9f6Zm&$%;$}m2r`?@-nT7w^_t9vm`7c&S>^0&oDDUm; zO-R5qF2*%!E;YN@BsT+?$Dvxm50zdEadF{GD*N?h8tQJ@Z3IYqBXBzHp z6V$M!!RAus6|Nl=te;Zj`^S!$&Bn7VR}?NCI=`|>|5ABtv8+5FUxbGD%Q94uBsa|16nWYB6NKHcZ7V+MtQ69dp&%lllC!>zA zp2x=)Y&OXc!4ap%Xkw2>FL?TaCxjuK!4}%t6pHzPr2Hr}t1@7rjHJ_rJYosE*N)-d zH}$pDL+~BTJ@O|P!v>t$!%4#)T@L-mI9o(C2^&lStzPR(Y^pf=a5i+gUE{qVnOPA=d1xGyXWlBl}P6P$VZ0}-x zMB*?)A|d*|=XjDGn0!Q4RxkGt$m>z>-*&?*u@|@JOO9vU)CoG$8$qe53-gdAzdm65 z+z@W+E_E!P=j4}*V$F(oAUCLttab6Xsc4u3J-W|GAr1M&E|#ivMmnMlSL5vQU0oZm zI4S%2@hlX%^b7C3Bgy`(hakyH_Fw4d5}#Izm4K~kWk_E_D2M_p^*)cP$Xe9}FuS)j z<~CXE=1CSI!MbeQe?_YQBX0Qv5}W^0Jp4#i44`QLdRYMYH8#^A^oS1|A&Hm)>P;%0 zx1UXm`05+l;B;h&K_z;Ry6xN_wj^7K0y+Fbd1lSCOY0hE$>K&Vrx5*i%*`{NjopZAE#F-s5InF8vYRhpr@KBf-s=%tiUL1+IGTySeDn#)OZJDD~j z;&P7Y>-3#JAz8=Mc4jepm=KwROAcuPM%I;>)+VzX5h=Pa-TBl{d`)1vMM@!IeKY%B zd$ok>VH(<(s?aU+vI6Qz&gjK&l@!2KjXb+qRD(Qp3i-_X9detxlaSKDI}bj>6dJ2K~7dEIX3R!-E@5Yipfv`qA+%hMyMx z*AdJT<2EkT&3Zv@vsKAPq^?FjXM<_OA}&UiW#v3a^Q?-Kr}X$F^Nz?yWFNz4qaf0H zw6b$a08d9>Wr`%8=B_K=`uG1Ju8%AKK7QLq0XRL66Ft#m=HG@)*}Dnz6JUZ>#@FZu zYxN(|Wf}3(203GT!*>g~7iBxvBx~lRYc?!Fj--gxD%5R35ey|H=c{YOeGPK=_XBr0 zk2}S5%{YL+=b=GQ)_lSO@niWOOv93@=!3@FJQgLaFN!*yylLXUBKr0)Nvqnu*Lts# zxjpZ`*h_Y;Z+aszhsZkM-5)#I|6DsU>DD&|H8(#1McaiJQyu>a^o?+*xBBv=Yy3D+Vr>sYd3rq!Uv&6%alNr8ua3bn;Z zZ+*WCVzLdE#*Q{6U;UZ`n@BZDBA6hj=E>}2k6{dA!ZZz;UBZ5~59S$Ptq(uwtw*VC zStL+A!o}0ab@*b*CHAO{DL)bp`TMy>6}J6jkwNlCV=8~s-CsU})0V%gWD z%zF0UwKss3edNS0{|(RHV9sE(wKWquNrF77aRq5*5ql<8F0EYnx-M@39z!X}|; ztJ3e(R=hi@=aKVQ0CmX-s4PLDm)TJ{x2jrE{nK5u!UgHDsTc$lTh%7mE}XRIH7wBA zu0Euf0T2NZ-Xqo9q<&%tWdx+wQnaz~vmmsNM;9x)p~N(_hR;KSZnwprF3x8EKU6o= zT5vtYu@(40)Pqv8=WKaWD2D~S?B%f!_oETo`X1Y{o4}G>*s^p$tH}DTYzVVApeD|; zBZ?Yz_R79-a7J1{G~f*O%j|GSy>%g7$C9w?@i1&^42c+}vT;HIwIII4?;3c|L1%!z zthjl%j-w*Eqkasey9yyV9ee~BT!L;e5k2gHFI@jhWh%|nv3>`C+LZ4LZH9A(z)OZ! zuQSTijh+N8BYy(1hh(uR{&jEg+tJVeS@!hu_K(hQ5ObXadJW!j1Y*tPLLK%w#=@jD z*Zz%qY}ZKso;&ffQtY|1r+h7Yw8)a$%`ttq816_yI;stf(k)^^Cky8%HU2oCwz+@l z#Ls;865&~4TkQx;kT^JhCYOtd&}Own53}1Qhs%laiJY=CSPgKX!lLX<82T$W<&1;G z)Xz9HJS}?K^GXj562znu8@j(oFDb-Bu=xfBLxxfWnyG*4Z_;gZ?qwUfj?3)OH`;5P zVixDfC}VTcc>maYx3r&RJ6F5erbO%+x7MlPx|T^OGbL|PD$Gn zJL|E_>0v*gI(XK4ID~RX#7W2U)?b`@iDJJ@0_Q;Ww)yEgD`h`vsxxes&xeHjJB{)B z%-iYno_YZMv3^(E z!&%np=7cP9=}#`QznGEQKAyCXv&%g+9C8-L&Z9q*=uF!@@&`BQxF3*y;K9evlu{hv zLA5GFMVv5B?Y1WWu#9zSMQK;rYN((*_d!QS=OeL>fPzM3$+gPK1TW)=pngzp^m{Ef z$5a{Iog|ot`(3{ewLdt&c+8CRaeI{sQYi#S9jU%MY)XdtJ6W^BTqB_4_F8T1`r7er z8r}4&xgj33z!^Gn6u+q69+cd=kH+|&)-{c{DPss&=}1WY?pU*?LH~U_=JlPTAyS*N z>)K!5d^79ra&x{YfOgyi6D7G zi;0?vz^6QaO?X2Y4HdXV(YJ>gFeKm|3hZwkg%LF_Bf>k8Du}pXmM|kzF0|o`Nxm^Ux7{!j1 z97j5+7FT8LdVEP`w^;pN;Q%n=LN`g%!>xnAdFTUFZ>$e^1#ak}^G?Ul0EDxQMSnu| zurzu*_N>L+za)aR8v`M)4)!OGW|VAzOr=?C_rz~Z%6WMve7SCou)#@CQ14;Y3VG+N zhdUo%>p9+yigQ};ta0JYJJ9qr!+9s+2-%`(F2hKP_B15_$2a93mc3lp>KZk#y1K3* z#}#X!3~m(2mb!d62~UNJs^3F@wbK^~RC7|eyRbRK=(&ZU0Pr-*zPbhV&@LBKiobqwDNwwMM}?&2X^<{d80SjIiiuRi5xqv4PPV?gUy3y z-qPMUeD7cxJ{c5aJs*%4GeB~tYFSNSKYdSu2auZzNN}!=xJO2h;KW8osU>owjRuDV zzC#ZhXQIZP#*1YPp_VX4A!8VsJ}^4dGZ2~Q6|rgY^0GX9*cK2GAqdbg5E6NrTsb>y zveudXNzmn!^O0Q*wM_nJWg*-=>i97m*0GTaC?x-x_mTiq>h`B$ELu zm+K#J+40>Gxm;5-=50U|rJ@L;Z%S#G?LxQ16G+peYQDbLP{iIz$rw-}fVOK^7qOk3 zQc$WrtfQ)1WvaWvX`L@bLa(sfL4vMQwd{e|Wx1bIQ|iZi)-s*I>#}OzRO|1jIn>;g zOHiG8_aL7#xCi_r*8QVgix=ibdA<3ya`WnO9Pg)&178$3g-a~{`{&c2Q93W$jC_RS>s*>$NrdX zeF?br5lUY;v6nodI-3bT3`8BA%iVU1K%r`~6&*ySfp>`XY|^VmB$4vzEMaSHQ< z4-S6QboKP&kYdCg8kCkC_#;joYh5Yvbm+KIk5V>ByglswE5S+4j;vjiP0CIS>3dWo z;?S71EQ5gp-IQpXXy9jf6@Ri8P=q?Y*|8qI1{!Vhr#`ClpA98=4hAR0+{5Pya&N)* zv>!d=34xWL&8+KMNbsUS9M7q5$jIu^7qf$k=Pq)adnm^@9bo z`Aq-cE&ecgV7y^bu3^^z9zOnq)?b3Uy7u^}l;CWcYrv)4(eEZt0zpkrYSK9B&)1uE zV#4OxC9pX^lpk;Q8YMwyem%3^op6ud!*X)9Gr@BC77wJ2p3SBY;}+I7c3koN`4R-e zxnItA_G5I5T<0IVuTCy+qd#87_y4dsacbZ|YN}<{Vz@i9Pd2`du0GB?Ty1%=gNRP0 z!soj7+8HfuANwB(@7a!=RxVZzlgR4^JNe`_qZ&SGSMDAk2}&ubl$}WbG!8p|b=9_S z(x}bLV-oSVB6gEWFp)z;cv>uPYD+)qv$txg2ZjbNuQd(|Drn{9O z{zYf%>H=DJ69AxPLrYy^6cbv}6=NWI(ugCM0!LL1!QF#vOyZcEeN$IZ#n*Frw493S zc6qU8`=u`zB3ApNS-TTy;0Up2ns|}h#mt1csb4aQ*RdOOI|g_tVeAz_G^v@B zZScmup&@g4+*P6i1NNm)qRL2}|JBtw@x*T21w-7GHqZ2Y`wQmaqPKi#UJ_2(IR*DH zr9|(MlwfYECGJOytKsfvYisN9M#9uj$8bOMHIb0wo_1I5H<~HBx?V{vaDSF6_p;3HVJn5_I`m;zWFworn;(g-4Fb)|u%URt1d){Py`_i<~kT;Vd=?-~lx)oVEBiKI2sLo%viF$f< zta8E}R+=?lUj5(=X-))Q?*iYv625g_UP-*}FBl8oX|stFHk9NA=;|3ggQ?zn<-{IU z^*xs?eC=6@4BT=W(8Q4sm#0YY_X0M2IZG3 zIja{dGR!HX&x8o$w+oEbP1)EfH^RzV3+EU!TJX^((?NnTD%a}L7NV1K*Lash3t|9~?<0Cw-bm)T6FATj zaG}^ZvkC(%G}aZLV5gTWlm<*(QtuYRqa$*8 z5sQ4wB_S4moD_;x9oO?UhLDmZx@Tr@w8r)!Pd}qiz5Uxcp$dEWg%QnTI6uXDGzI8v z@0cmp!kkBFU12pzQEL4zDoTi%5Og)8NWv{QJ6Y- zS_dA1J~yXdwJddQifo+Pd{AoE$&)~$pn@8bd$mA9c%%}p{jlb|w7y!hk_^TAu4b)v zK^sPF?_&?{s*iAdSQa5O_QBs4QA12f$~|j0jr&+U8JOOr+JF~&inu@-Rc_`GCre#! zFgkrK^Fa7JBm7-69oY6)bH#tYPRRe_JvY)uVeoCWwuZB+q2kA6h^LD_YIKT5TK{{l zJ*;%zc4}5jGjqzyyAfy0HU)-S>P$|U-T37~k`Us@VkHp(7qG+`F9$iJ_F?h;_WG+6 z1D1A@4-sf$6xCZwx2^~TKP$5VZ_gJtSj2Jv?Ofh;`GZu}CFzp)j|QgtLxDK>X@-mgStEtM}b@TKC{FhB3x5s}6v|EEuheg2& zabZ9l;5Pm5WTj2=7&qW7xrs|GL-qxs)K9w7lsZsI3;Et5`+Ld_Io9-`ABkPR`ncA5 zBFv3*)gD|nYphwq5`IjRO_r+Kw7nn-dbby(z!#*Z6C52&adZ_U;;qBYd24YSBv=l4 z%E%R!ph7->yypObe^3l+GjuuM0n?8LJG_RRn(|G#M7Yz-Vv-KR&jp0NTUI^FT+T60PoC_o_R&@O^Z1r_ujC%)3;B&La1i>iEtZ^v}NKfw>2*S#>@3Gl46 zD|V#BB;rli{rD)aQ*wk;lx+te+i)jwKJ@92V!Y{o5bVy~*P#eDEunt$R$8P-nmKO& z7y0L|kT(Kh#n8XQQ@$OvQD!FAI=<&V=IF&v50Z2+!_0bSrgN~CqmCJIgm)lRTp=cb z51>U@`<^Rk3M_=%%Z()IUux~RdJMGjjf>HCq}#p3PL8fZ6n=c}vmorVTpOQJFDppy z;b#6!Xt4F0RrCFmQ%d#gTY}p2a;f6n=egGT&JL4OBH7`wy}30Il0o0bv8BaN)}UI0 zTD^cKzmoClNHg!I;b$gu_4Q=GxsihIlIz(P+kHNR5ad5?x zNmBkus1caxW&bF{g3zdwDuQ06vME9iHOti9!+TH;BIn|UiJFiUx!kYQIdi2P9AN#f z<$+zpEeXh7JL-DB9frXCS#U4%bObLSSY%o zP6^Ux^%T`_bT|<-=uf96?peUtnL;y zU%BfddC`G?1g~$^1Xmh1k&Z}Q+Yj~fOoNu~DqE_Y*Wb4IPrMggWe0mJ4fRUP%GMHd zuP_O&%BfW3pdGINZBKA)eIBw-foX;pDZrPr%}$>j-?f!QQ;l}}DCu3{vm>wFQUCc6vkLmZ5nUTiPm))*MtjrEW^r{X-Bgl&~Pr7urE-1(ky8#Z=1u!Q_8*2 zRpc}sd9>|FcMzuzj!DE&RPPNPo?P{1IrRIo7gRgJ>18?R5rg{&%q}$0EFI>J1j73p zPtQw|c1y;!PrYQ5sThB*%TFmA-~D`@O!aPLu`&GZFG{K;PSW2?%{_tR%=8=%^s$w^ z4dq(M3LO}3)GtgzqWrlG6F+-pj0pwC;NoL+4WH|)IH*c26PE#m| zYG=%jT1FyMdR(Y=A%Bf}X$1O6Br46U*J|*<-i% zeFEV)^BILNMF)j`1j4#>s^a_=TxF8qoh}_|IwO?TOkMBXd}&Y35Hg<_osge6WLH=l zs(3<25;h*+b%EuV@zOiaE*IPPxgVp}fqzgITcvYW{umd~A~vRGjGt{^qv3Ctj>`i9 z?*1T=qj1@qFwKXy_#*=?8c({_A8UOtkCxl~<)Fo15#X?-`{Dh5`i)AMSvUL0MugUZ z&nhk*qSq>JnT9%p1XfpnO{P}y5?1WZSZ95r)Z9sx{Mssix2p4X zcbb^OIqo4X_m_JcrxOpOy2lwkKbB==qSZSpF>4HNDYhgyU}m|Nf{d?!L4)Wa;Ne9YGs#@g;f@k4j*h z_A21KX?cgo!uqT#0zZ=(jjk5Eh2nw06DxS7PZ7Rj+Nx zVIxNCe?7n4Q+3=F^u1T+sc^v`Q2HJepmzd$9O@T~whkS@zTYHRhzJPA_Ww6vkR*Q> zPZf9}sX!O2=3k?AjKyGz8EoY6X=SRO$0||z{R?WG7Yt~dzsL#KG5U(Il2q|Kw3X?e zkC-@J3-!FMQ5e)uUY&XXg|(1CGKY>X3J%RFyA9Om#Wt$tHcsihS_m#eKH#3=1K63U z)#O<|gN#BC%L@Ag32b3T*|W=MI2p-#VbW4ww?^&yd`9L^DF+o2*JOmK`HhaQS5Ce8 z#MpiO`^az<7zra266hV8xl(W@O(@g)H@u1H}5! zx^p|H*8XezQD0TopqWHMRaROg#ZjGG9?TcdrKjO}0u?B2MQ~f5ai4d%qnP_nim`W% zl3KS#yHHN9Q)sK?*!e;!B@z1P?e~jDLD1&XHN|?d{7dTb^-<~y4Fwwu_LLS?(|wSv z4BigJfR!?nut!J+8oh$0rDnTig}Ow3S@tmwU~7iGQ+-v;9`;4=lAS-R&}mfnxh+<8 zmJ6+}4pB+UfoC19QyqO3t1cU>3>$N#O!tQUmHeX;Wq}IS8XTC8V*5~jCdVj*^rfh9 znLHbdVhv4xdN%w!UDK%q8zXE^LMUPRQp@$)V}Ee2>oQtxPK3i>to+4t{@;Kh71$q; z@GPs>ZX*hNwES3v|AvyfdELzR%z z{{GYQ<1UYb6A|ujm*UucBi<9-N*pUKdlgN!4jl%|yKOaShk)OYHNM@|J~aXhjMKC) z8Ljn7-f=Ho^a$D_8xwm~OVtaHVtf5P>y2<)^aM*4H#}j_6rYRHVCC(CR$<{cD3k8E5lXaaOnTS4Xm*ww_)zzI zapI)YnG-RP@6h(B9SX(DC7oW>MjUMSeGL!Bd(XXIW6Yv|>V4AlWU+Qub&3kDna&&r zk)eDa2kB`HlB9mC<+B~1z>us!eywVwMuI0l6jYlymX%5a{@{!G2%QcygnLqsDh~ME zob*E(y2W@#>2&3{Av@4qDX$owetk-!p0A>fjQ|QTkFBH_dhXCiwLIV2GA;B6JtITk z?WWrQmFjT6xpg=7Nl#-J2F6!%D*l6E8w*E1LjGaZ2XTn!+j>oDTJ!PvR9jYN=;`J- zVFpHQ2@GS!S`h=#3xA_bVn_)D!#(bO&pG`}s|9aQ_#-4cDl4ydMq7m?A$inLk6m`R z)7mkL?wc}IFHdyRs_D8IlRGt`4<@?QMF<^cCo)o?7UL6n?4ytK3g*?i>#ZUn>Ymk& z@yLXDo2i=1I#iy-@T~H%kP)bPHZQy;;<+bryzkU2041fNPv*^vPX64SP}E3}h(}>J zoULtuY`)4zGi))K*E{A9jw; z8X{p;=#;A#DsIjm5w1DU^|chMnx>2&bAX-l_om_}T2`5%amB)wN*|abtbe!^+2W2W zgC$H**ow%E?!=FIXV*OcG&S6@)LSV4Cf)rzl|DXaE^rad8f6`J^P$dXm?tCE0iguAH zwY|fbM8NooX>prznMTBQJp&Cb4;O0~*8gqnDQ2b+$EQ!NLobP|AHVx*Cl=mq zuN7!wQOG(YdCwg)W;@zTy~X%9~u2ej@8Hz{}cWu z7k4IB-^brT=hk+i{jBQQsE;XC`gN%zRzK{OFl6u`;v_^~!n5a_<-wUsVU@1gC{X>Q z;bDoN6Pav#buDR5mp3yr^)|~DXKUXbtDr_ z&-Q8<)hm9r!#_i8fm~Yp{WY{Q^x4@;vuR!DFQ#b&CH=YddZnQDf}+>obm*g<1I%j-Mt*dz17lx0634!bSp6HKMhS{5)e; zAQ0$s&rJk!D3Bh7`E^{TuBF9);JnUpu{60e>N52Ec##5pvDIHRLX>^Ot8 z?3)di<8ID?4{a5i?Q98}ZO6^mYcZUZBlV{HO^2ghl2AIQ^LR?vYc1c`Y>)UQ&%y7XjqCjpQyym0F2^3gkL}k#|Z--WcJB zKeFhAqIuzr%S^|p&FK4Bwa}KBqm^k@bghhX@yw!|;k`c!qkl|Ji$rpRd?gqOogo>| zsrThX_)8IZI25jC`Cpy)hY*lruJd)0Xdr+EjZMH>_Z{ziK|?!%J+wx&E<*9G zAlMtv`owa?Wc@qBby6t~BpAPSIrLJQ@dH;X+eP%8(!@Hl%PLlr)rS{*hwMAgus;0z z#?Y4BYpsZI9o!EfQ3g;xWsz0ftz}#wBGcqVw*oeoPypzM1#)&ja z3qyLm2mjzGSQM;@og z>WH8YpS~H~>3i4B_Zx)y`>w*0J&(kPWB`K2IQiL3$0q#)8Sd&~f;e+w>-K>zR>Ilq zlsfFI33nHC0mHUQ^>(BF-B%71r5Rt28h!riX<#-F52z4-C$iGisw5pG>3j*E#_{6! zo01!{9j9mRvcX%8{xg3lzUkDc;f-B0r!&X>b#KR$wZ|YpKcK{CM%Tig))=WtM7=nzaL$pM5u$lijfx zsYl3|EAjB&nIh|vni~6hDHFr4S`a)1*o#HoF@u*n`CKyF{gSVBwqRER(S;s3f85O- zW%Q={nrJtCs!QEBedo>_HT;cVYkKbqhfcxKHt(ji+qkeA>6BUFV}F&+Ay?=H8rLt8{$_TeIHX>B)5PlZ;3UV#Ws#Ll4!{>t-e zLiL>M4cmD!N735NdAp5mw+OIvKU11D8-ZwvnB00@!p4oX`H zB@=E4#%#vFMIK&^K|EKx$plRO+#VC3ibuX6SQ?iG{8r^tmKzNybE6gKIWq z(YvKp%A5=3q<(Tl2c22rg|D1nKrg$um^MQMsecW$oWB)F?^O636#k8{sOa-LB{_Ur zke)c&MomC~JJyXkrmpTONK|TFZuO;}-nX%tg&;qHusg*3SUrRcAXCd!Zvzrqt(vx9 zS;Gp>YKAO-x5H}egnhKiKlM_z&v+ShrC5UWSHoXM_aNRd1{pBNtvbv@cV?~PKvV+p zEck&ha@e0Xw>}F_B5y`p_jpmfnjBiW4(igAV?%TJMILenPQekw)-1d&l@07@6mk8` zfo)sxw=%S&`?X(BLo~lYek-(lMxI>4_zf*ax|7PVGx!i_!bBEiehSq+mX&7t{6v0_ zD_06ErO)1Xl3RR6fO_FzFDlGq{#|?4d-x(itt`d0r&=b2p$Ezm=SsnUVE3j+s1c}o;`gN;OBiGi_ zp>SZ@tb=qVrBsF~u%EQbdxE)zV@_mF3Gzy;u&Ty-v#3!*5nOrx<*sHVN-LnuM*{q0 z|F=Z(=21m0yVXoSh|OnUZ>~#8)YpU&Aa*kJ?{)eEMaPnV}{ns?l0=WJWeJ;spGtTY+}3xXcv2ArW$3*N7i^Yd(IvtcKU15+UM@iXviXrIuy@%2aJ>Bc zb=Rx-fsysio9w(5ES7ftQb4>L<@zt43y62%!0Q(kmneL0A-+9eEyq6Yve8yZsjep+C>Squ{g>nn< zg+fN`e_f15hIfs^anNKtk=Bk5@*q2+8!6iGtE)JNjNI^A^TZeIG})u=A5q%cWKxEc zGZCDT<)H>0=yS2|EN^?O+)pjny9>`A3zV_Q+>!4xAVoTKmb?(pM+!$Lm!c0W25U>b zOs+jPK2tcndd7uHQ7+`OPsyyW^RT{-EO#!)@W;49jprRF(Q{luK1&2D~`B=n&}Lc?R&*ijQYP_sgABVp2P=euZf3YxL3PT*5Xc$kbrX=)7^4d1`xbBe^d zA_u0whw|^i+lkJ|6MWx>7`aN+l;nQZqM=OCtXU3@qMavs?;#E zqZ0O`c7!RERTIy@_~l(nHCqz+ll>F9h?ZrE+}D2B~MM|%>9IK z=a_x|HF6nNXFR&J+~6Ygy0`5Mvu<+fyK8fht7c4)wsd!HZtinEPZ7fHyQ}Fo`24v3 zdE;J1*Q+1jc`6+Y{EoZ5Hj?DeL>d6{ckn#hXSZZ?e(Sqye0Z+34_T#teFe4AK!C;U zdc3F#3tkHnu0IGOT)z1u=&o$i;WPCvFo#?Y)uY(^Oa}=ZmFp`NV5P{M^8A zooe}I;O!s5Hr+Ci{M)x~Yqi;bZ?-lMp9kI?Q=T36L1Sjom)dSNIfZVHx(1Dv_^Zkp zrs`d&c|7(O-c406usHCB)}|zqlBI?`6?t6gySR6DU2TXR56K!_Tk<`G%qgV@}AjFEk2V+;4d=vJouCMZ#oQq`bAXoSrrZE7Az zHkU3--R(B#w^v&qX~G!!M=M>ZoM6Z>Q-N{)aVSQyVCz!jvA4a?ADh^{R-CzEfPT)c zXhmDKCSMfK^m1Nz?PKKai5bx16X2s+7l9$2v<9bpBaN}bswk9gY1q(T=G*;fmy1pRko7H&hi>-veS~RS(E=Cp$ zqUvrhV(+8e^Ns~YDezY>N9ZW!*R?6I5GnMo_igb~5)b|YUmBp9uGeUcO5E<(^cB@u z3mBCPQugxm@!@(E8iSuPbcK*Vf6h%41F(Yic*ytS#o+BXV%YZcd_gVKkZx`k>aZ++ zao__&eN-UWqvm0g4=h`3$UUU(uiaN+brKhhlyY@{heuMQbrPBdRnf~BR(~27ZPnj){;M*G^T7BQg2L{6plB>9T zNH2)3qZPR!&L{su4{FqUlIv@dS}nQyTWXzpM28;?XTzl}OdZ>sE}K)^T$Sukn#{(y zzt)2%5R+```h`>v+-m%Wg40Vg;Yki+7JXmqruaPf;UVl9K4Mh*w0?!#Z90NVQEs>p zbh*+--C~Yzgx$5letHU+XT2U*L(P824~xII=e-nG-#;a*h`j6SZ8+;9Ik}-{_x`2q zZ=LOT@~-);kaH?gJy;Fft*|92^NcE$6r;vL$%ioT4{!F^JTG!3lYJ%S!6Z&}w$~aq zqREbhXhD~qX5%=`wU(im1F*BeiDmo|9ROPV8?7*+aXXM26 zkzx|Sf(_3l)Z8NfFSQAy;3ISqv*MzcjD`!U~Cl_ZTy%JFixPwA-3G2=tAC*WG(!HvZC073m;Vc1STH3@kpzmlz|)Y4*@MT!9T8_s?b>_tf(Q_=y-XP)d|bdQ{5~PL zr&Y$CfH>AQW6(F2`#gsO9&Atd*gTK&qH@lP$;job!y4h3Bs75XxGqWdNSDe#{;4z= z{YEXsFkOs|Z8ayfYHozSvc*T7&@V+=#WX=Z6Wmbw*gfW>Z;sx1jIFqNCY>#;{?B|` zO+@YlJ41Qh<6)!5O?Rc$f<(LCC3x=2Od#x7xC>#MQa9`>U?{iih9KMj!Nw3aZZ|a~`uTGj+(R#Y>nang$`y zgLJ(e#8n!ze(2m`d|Ie9wJUK5)h*G_cnp~oB`d^n&z_!J+TgaR1vmWA7<15q=}$HL zNGMMAyR?OF{eh-mkEC6p1`vUgw=+ycM->1En1}9CQF{B$@FgR$*j{-}k;9`Gh-Zv^ zU+_y}Gl%`8hvjMgHCW1;c1z0!_GbD+!8}Rd_?dSS?C^!zVUN8cA|eKRnFbXK?fCuu z{V6LvJUvw}jUebtz{r`u6L*bpj}5&tkAQ;ei*^kBN%zeQ20)4Yt{`b07NxD4IB32 z-od+A<*j4Utm=<4{UtA78z;>OH_=LZ>LABRE~OPbVE@$6kZp9TMv+B1hDBY3ZoU-e z3(CF~%z?u2ywhi1e|yW5`G%E1ULa)@{;;KGo=+M3B7{o-OO-pq`gLe?eWa5Nu1rrr zS1Z@u-8acjA)(AS%F>FUna32p&vC*TnWQ_tK73Dm!%W<97tyNWdn|FieP7s>;i4Y9 zYldEtQ||7a>0tR>*UHIsT&P}M>_Qc-_s%JLMLAj?KRXF?yGFA~GTCQ<&jh8`F*B+= zpCKKmUWiw&#y_H1m#YYECM1ra|KM=>Vyctj_V)2343SH{0ij+8!_2w1nvxQlRi_8( z%7hdpmNePzLC5rZ!PYk42>9XnKIn7cdT0suhjqVJlV+!-I)}3G34-(mc3ZJwcVv%h zd(N@6|AJ5!z1i55(C$|v=xQWhv0bIiSoXvzljcv$WqsZam~@}Z&sV0pV_qH0lA*tJ zsN>>>tZf~pX!c4Wq&3#THvdm|uzB ze82)~Z&ZXdlXR5SYhGV?+uh*1p7-nA(wo>>pNHBB8?R8Cs9^ zNjB$FJ4ywH)AU`eeZviQmcLBf|1uG$ss65kxrb1%x}^n61oUGzpQL)(FmM?^5ndtT z$xW-JN+iYOP2&2%`UXK1r~8M`I@@}kDqMgJ zc28e6s0Ln5_~@fMr6)Rw@En+M={RR=Z0I4_HtH~2fuN%F@ZX>^7jpjTk<*l>_KWm) z^ngM&ZJ16Xt9^T0XzloCtELEfd|pG@qf9of7s3+pWLZ8q&>}~^$|b7StCwO8#Dw$p zCP&>?NrOzatQ=|m(!5WzY1ti~&wrvLSpC=;6P<3dn=;mczkP4WG^dS>V7+^_ zZ?u>@m7Lx^u7~vlW-vD&%mWk#Z5z%?IkE}T<1@m%QquGYQ;!KrJeFn;bK`(ad3W80 zc&(-fT3Z}er-;v-uY?@`N>&A(_QYMx-~NpN&tR70vKD9b;``UHLCa*LQPUYf7*w?4ze!aDrE{^` z?8|o=masmj%^uy|3_A9D2Xk5={{gj=?JRTp#a-FM&5{}PC+qD-i|%PN`QLsFb_C^_ zf%oqmHDaYhHr4p<<89i%p>e8WVOQ26-0)3nYg<_v*O>4vBp%Y*)=sKJTXszUrD|(Y zN-SJ|f*Te+IsB1{u~wt(7o>QNU3;GNcm1e#tu0r*DRKe^Zd%}g3wVEPP${{6lX9$s zc)UNTKUJi~W$4g6%r#3>EHY1}EG#iUJrQPx%9*C<(VKTV7@^qKqW-~-Sr=GWfp@DH zFQdnmGXT;9zN6*E)u8Ha@26F1q@krr=AgN#Cv3zQf*Q{ndPb76UM|!d)-TaosHx~c ztd;>U=ZUPB*0-BUK?8pXJn&MYtGGPu%-7t7o7-5*IWOT}KCx6Hyc9NzpBKZzn^6LB zPrquExGt!8AfxY_qo3SWs%a~RDfSm%k1=-re!=CepyonN2@%Ghxsf^ z09Z$pO~r01Pl{RR8c45l>X{S*{$4Lv4r-RcAw^nfhoVczPZt1nyid~{rfp3UP1Cqy zC;e@pMYTXlX9ej1AU9xV#`Wrd@0FCyrqF)fD|w5iZE);?9p>8JU*iCvsdOe9`b>$68L~FtysT z3z1K5_c=vjhE8X{w8X=}7ct5rru%GVw|-4cS|*kL@cjHARJl5jok6c}Z|CDIK3hk2 zkJgxx7&rp9%O+DYvA3WU*ph;gPpbMKFDz*Gh_+w#|O4odnm`=AOWIk7s;x zwMx`rHL0#D;hW{s>?##23(^+WI$x<1rp$75e9GD|eY9S@hP>QgXAR`=-_{9=b{1ke zu8t_0fF)HWIB=Mz!G?k%gp(PyWhQnJL98jmDCe1TV@TeduCs$fudYS;R@cYbvT+c~ z_$#4`=(+f%|5vFBl3!`)TEaAJwVbpJ(VLqPYZiW;KyB< zeb~Xr`2d{+aKocY>eORb*$^Wg#4AOTW*`b>M!9n!=Cf}Yy3E_JKMB&n%+Z$^;)T!y z?@qI~TCy}O^rQ+B=LuB~BJurJFn*p4uz6Z9Ue4KzwcXsynYSeWdbc=SE}ggjFfCXF zB+Vu0X#(hk<%$oXehPbNgFthMPHRgUhS5%$zC$&4`iwHl_cwR%eI=L(UatGm{Tc{H zg@RD`g$Yge5!vA#JLBs)7kuNU{CE*X7I5+d9f|M$34qFhROH{BjdA5U1w|*Xs$|qL z^aDhp)P8~*=9Z*7tE!Hr z_2!)VrqwfFZ_$JO`h=cTU1h-Yp*Hul|66@eHgwZ$6cG@AuyI3jgPc{GEt%X)rc3G) z6`0~I)G0mQ$(@^kv$bf+&SnbEogWwuYUNlB*?OV3s=NQ$Kuqpdi9w|o) zF_y-mX(Oc$ZFQj9Qg^mt&`#Zt$+eDksqXVZAeh*6muwXZ39DFrHI&ee=+U$N@@h$?DrDhh6I`co5GhUR7?xu;#rnI3fhn|I__ zLcm%6bG>>kxkV*fI!j=f5$qIOIPfGndu73O1oAk}sv5Za zbm#utGPD`a$|tv+{yRz^^%y2uR}lOAlSXaQSH$3%D$_ZHvOMeW5y`)Petm~TsPqKK@}I6iPx6-N@I7Co0wrcZjs?W(1?rxPc1+1dQT_k3agk00{B%X)$K zKd*Mn28ren@j=rfSlH0Q^TWe{bJ4|0*OLY%js{@j%$5&;!|+A-xmr|j5a7Uxs7a46 zVn*i+uJ|-wD`<;Ft}btc52*wlW%c#vpB{z)6rkt76yPT`PJ#~z?v>2UP>WvLz#A0@ zkd?F%wq#+a+ibOkD1Z2K)AwgqNs1FF6zXK!6;Ie0C@-Y4eJUL4@@zfLEJdJuSm7`2 z^zpy;kKE*Lx@SAjt!ieYv+4l%F#>4AZ!UTz;qxx>1$s?dZ{_8Yegm|R%15tG2043y zzM<6&#Qk!#|BvNRVFS|n1qxBhlL7tRKp@y3PPQTn4k4idR+;YbFYhM4*E!5IB`r3B^03=oQ-~FgZ_qyWe z8jjyl2<>+dQFSSH_6T$7@yiRKv6RzqgMoHzp0G+u(t@5ouRG{p{T5cUtSqcI$kVZ4 z?X2a{|4;>NB`*!MQ6I-_IyqXs+rHe@Zqs9PUcNo>TyFz#FI%a4X6s2xX!qWmOQX( z?yd*1fW)=ss;2ao)To z?xR24fgf-b@=6mrUk{!>1#2FuC@X8c{s?>x`)=r-^R?iF4tWgHUC1t1uJ*a-KZ@7v$i2MMc^spdBvsGa9gb zcM5KOA7C}av=R3<{{ra3i3GH&`)7Br2_Gwx6k~q(P#^Lgm3m~8J?kY_kpfX)wM`Nr zXuBK&7lp>FXU;Dy7(A645#FM{-ADR3A9s_bv7CO!F}EQyNn%ys8D#4y#w?jO@?{6g zXA*cCkf;uG!a9CCxU~=kF4o{)z@GjxtEv!-X7}}BTia4<;v@}fnD_|jwT~kitT1fS zN)txSfCzBH++GVV`_-T%NP%u4p9a+fzXZeI#78)@%kNk+HSVq=8RAEy7c|SXY`8cy zTj8?y(#-0~n*fi(pOb1gand8$O2FwmJIF_!X4L7qw2 zSm`mVR5{64Ee5o`DQ)ApgM)+U>rA4iclfJWSy`|40P3{=0;tVv-U0UmkMQ$=NX^dn z_GqH!oV?J`=1jLeAe$es#GbQaKs%qc$~L^y^LaSveln4L=LUB#+}v8ztlQPBLcFVi`1%Q$m0^7lqnd@23v zOmXFE2psUSEEsav&`IGk-~zN*jeT)tL0}bd9`R2bgcKDqKOdQHyK`RvZsL`{RXdww z3sMVm1xqCu209JpY1y?)??nVaZHWcjQSvxSRYT+F+&l8Cd!4{Y_b_#n27{7ZRbuJf zKN@~i!QToo6l&Kd26KO$Q-=nhrGz<^lA z+M7U(3dwaCV5IX5mNUPo?!36nrCfUf0R@FhKaS01{hVe$`1wUsnO& zI(tNL-Dg}v7TsL<=?=l`CH)%$GL`X0Ne6;U5i)O|+i@Q9FQ8MfB zAV(AKeI>|NjE5dLn!^9%Xto%W-z~UJyq}9eu13&iO^6WgE9wJ96J5=BfFbe$SL{EO z+`mts^IrM%=xEURj&MZmG`4loSc0(~h++On(Crm+j!4U=n`edzcvZ&#G+`iU0vA~0 ze_mkVC9<_@|7xS!gVG|4QTOlq-{l$qZnx6?kDrkI58v>AAH0F{UvBdMZpHuIivM2* z;$hM5yAt5rvA$aQ>fYG+0#AH5^Hs&3T)Lm++)^BkkM{x-2mX^bA_juagOGNsr{3qk zKiwPmSYGPj*73#1k)6Y2D%4`kEE&7^J)8fJ>&W8$>WSo_|)c zI-0EE+&xUbh5!RSV^YQLyJi2m%wTP-W;-no8UNRfR!?IAM;A#7gB}ZIE!Vye%rn8xwFyCE2w?jfr)q0cgJSE>M#`~UhcHJ^BG&1ac522JlF`$EZm|Fqw) z#d?gDINEE!-wG)Jc%vtPll-q$%cC1z-@;E&_(}b~ToOs`rJIJ<_K^ta`ai4bw(>H^ z{Z@yfBYbL_-J->_!lVu4X%+wRdVeU7hKW&HPrNoyM|GkdDF1oSQkJ(PFJb=|%@#KD zqw&wZ|IfOHm{u~CXqRl!4t3~b3^)>yz7W}$#0#Kah5K`hiNI_kJo0HVqW-yTRKCPC z{ok)Ce*-gAt zI%DWK@6_u5}rz4UH_pKJ>6cimm^o|3X zhcJ^AFo}qWBH!jyUSWku;rT*V(ju*yhf%nvkhRPT{7TsSlC_lV`Rj5+n;ZMJk^7)S zpP?B2HOmJj=Wy(Pgtq7R71x6TIP9Yo!iL~)fS}qe`N4g1&<&|yiU!oXRAk0}+<@Bm z7)W_Y0HtnaICGhHWl!7PUfbGzcPmHBnL03K?lkLsrH>)uS2PJ5-!>C{MjY=732Mco z5so_%1{CZ5tWMj;{wcyL*MUQ=o_@YRHd4Ma{*d2`RfkJu`(Raz{~WPF2Rm9NCKCn* z#swg?Dq1}_4E*a$4Ky8I+-ylETpu*yPa6k{XZaoo8wxyoyz+}k^%ql`LEhkfh6!~3 zx0n3Lisl^=BLaR|S?BbEKBGTgxmMsK{*tX`^RWiajxyV4l`=+*gwVikOipO0AerwaGkvLLQPA{kk!jKV6suPma-C$bac&Gg{?ix#%Rfi*g?;{t zTS%<59$&&Flh!iF4&NQP8+O2=v~_lYgJ~ojRs4DlX3eSV5BjaqLWxsl`w)*_bN0qU6v!NOXSsrsXUiWk~Neixbl(onN%;u{q$)SO? z5%=qq<{lBqP~2SgCnD+l?PySvFm8YHtsX@0*eVJmKEMHNLC;T9wxa3_up=S?mxIQ( zF=6)#AB7(ilwN&|HtIvyjngep0nq7tyl4EEa@M}i%y8!eqXXsrz=4%SnWtl^xVN{r zo2<(zY}#x4H6!r;86O`X)UQ>7F?ue2l0!GTLwmIQzt&>;yo?dC*<0d^h{!29&%J-V z-dGm57*Du^f5=snNy%14b9?=xCi{^$6~6#SWBTe*b4WXdN?|vr-)i>3UBsp1oKIggj!-%(_b!YoSDp}Ud zvC6L87x2TD0US>>t;5fQK$@tnGk|tDI{NIM+qkV_1v9NU*xGjP{K&2_MIh>z6)}Lc@0pS_dSp9SHtdjBD!|8EfgN!o2XoflxSOyz<^h#wC$2Tr!787 z@8iFZCam!Do{0O+TlCK6sDyaZw)oJp8pqBjs z8FSL$CTnWaGq1~&&F$^&nZjNf*_df%&E^TslVPR}cgK+iP9=K7H}p0toy?NcyLqPT z40+l4Jyx8)$orebZr$KVb1aJ!B}+(jY%V-Wg4RZRU1?0j?Ktpc-nN6I%(H*$!ZyOd zv;?a;LE`FV0D$?|0Ro{V{3mJpv-hknk|=0`4cN%0=|zio*)f&s7dEZ((f&!G86q0! zfl~S7UjH+sllQrG`FYvb8^l3Zp%XOzQReL>E1NEVc;-L8D|FN`b;X;P5J) zgd%|u^ckD%J4qAZZL0qcJ8{8&?D~ zL$F%Y?H%Vld7lAWGM2T9^r@8=e0H?Al`_~w`9Zg2uY4|(W5Ioi*#+-D>L~HAv|RrA zb{q%x!@!rgFp&#lLpua?eR*hy05mTkX}277weJF?IutONYbo4~-pZl3Xx zbHD;=IhyvX|JjO*A$Tc}5_mRVmpc5IYqg|$0=(bsvvSd>AXls`PaKhPfZKEy4gQ!) zF=?yHv{|lRqNw4|C%q0^t&s*{06Oke$MXXJT*dMOW_x!5Llz7ORutQP0UBlv;9BBU za!~hOT2yWdm5MtM-^~XyLk`oJzg3_SFog}m49w)4-j8x_r#XvTGk zinK0yXWcGZfOaVPJWylnehE*%a(F>VN42iM+D&l)xD{}CX*#87hwSwWc`5Zku{qnL zG}sfM`z`>vqXg*TApq>-lsH@5(rEAr*zrUOPliz+9Q23hYyO$!09E+H=Jio%^(Vvp z`I%Rw$Ee#>6MXCWWpN$*mIM8N{5x>$_u&i}NXUQCdVLW64$inDez}p%zaoD6o7bJN zF5Tzo05)xOF`m{MdLN8{j+(6T5KjO>3IXxQonC-GuVH33ak}CA?Vj!R*BuEUlj|-r z==i3vZqZ9KR`;VC{IT zVanrN_Yjax7P)nWEq6K91e`RsjIJF&#|?$DNHl#3da-LEzSps7`3O0<|q8=ItZX8 zovN|1(c>CQFgDI(_)>HlXF0v@UcmlE2MsLtzu0@rs3^O)Z&-Q|5C){Ahf+F}5Tv98 zq#R00N>OP924RQ+WM~GYq!d8`0i|mIL1Jh@k?s=dkOrSU*S+rN{$JN~J@40dt#`eC za4lJK#y{`SgXDd<+OJsaowuQdcB%1D_51->&1o_#)?+zfbs zhRCblsGmM_@dq1jheL|xi*%Q|J0Fnixz!s0#{EFBxwR!`_2+mvg=o(4dSUa%$<%=Y ztN&K>O=cG8K;NrtuQRXx%v{-bI^hIhu2ZgukKgp`0EM}DDh&QBF!wAnejF8WU%p?^ zZM}njhc8oX3dpdAZGyAKp;$aRzxDl|-ea8K&o|+7K)l}yh(0tpHnV%odRSrfRfW6E z+1|Hpjz8NRHTaznFZmyS>g3ca-oY9Id~-^En_vRu+<(SwEp^VwO20ND*}f%IJX#5gLznOUhOjUdLQVdzjY2TGzyl~5I+4;)coH7 zU21CT*TuXRfD#=H(U>S`({FwZJbPMESvmXjZQPH>hHy6T)csjr*ckm1%U<8JY5zt& zyn%o>;f~X$B+=9t(6h7#zvMN_!IC#u6A7`*VZ$dV%~Sx7RPu3jgy7eKOZ~dkL?FP( z?G6&OMS!S^_EZ79ZJm=0YdhY`jThF`EGC<80pOUaxVTtm@#Vb=*UdVwRi+Kv0T*#g z&h96cFqns6!AueWKeyPQe{J-aV-u#|C3id0<`|I2r;2Xcp9Ogq*jQM;(CNts(=0^7Z>hG*1Mc? z{ai((f-ZF-Ua&@d1~mROL75+AblUHEiZK(PFAO6t{6n>xmK*e=fmx)F{Y~{b` zL4wDA!Ji6KFl?}#qZvAqT0D-2|8rjm4+#wTZ$+T~s-d{Qp1R|J$R7LrSDk;*&iPmnpXq{y!FPu~R3DTF2rw4sY}wrK97~ z`9NCmx39mT035u3EjJ)~v*}J2E*B9c*o@%MLPv=<0!2Mry-ld9>JTUr{x;tZnAzF! z{YPH(BR4$prNB}}pW>fg#ra6VlFzShJoVoGiAKKz$jX0D7nh3&iZDXj2x3xF(!G7B z-20uI2l&-J;0SLj343-k27|%KHt-q~6B2wM9)A1g4T06iYCb!#WBY(Lp&A7M>i?dh zHP>eD<{2WuZoCDUL%ooxQO(zYhl>8DD@O%{wb%U>tnap$f-XT50VnH-t!A?23V(BR zmRPwBnT%(HcO0FZiaMFlXxt=NFax&0uJ|9%*wN9kU7meL$#MKOyyDw zYVky-c%R-UzWMkE2Y9X(tWA$v-Y)pyp@c+^f5DRwMS z8yOyn2EHyFs;6;$j9)7M`6gmBnatq5?mOZ?oby=jrY0EiO!raH=m&6FHef$;eDY-M zE_W`TH-!ot|L1D%-k8|B$2O9nEs@&D)FU0-ke zJ!~Bp2kM1#k@10nU};cr$^erosI!hI#ctyFl=Hy-DI$fEUwzZ(F+vAZ6jD+fY~wW# zEIvQD`S5Y`OQkVBnkgquU*9i$LR_QqchB!|I-L{HLd>)rBRU72bV}VtYYtE`avMe) z$xE5bI1}8C*amUZxjRp@>Ku+ibtVR1j%w0#n7u<86!uq;wi(9?d&5ZQ(Pt@=` zS+5>{8>eueTv$Yo2cc%h*(?~UX##FfqY|pjco75D+~QM5nV`Sh|2aRC3OGgZKOHVI zo6mKTkV$R?ki;LVw?$Q|IIU+!dH+dS>E5PZS zPmY$e$IJT_o>Bu)X>e0*%i~;W%X@RGf$%>6APKn@muejhJQfX%vQ8fzt%Q;m2iMN! z(@qw0&)IKdwB9>UD}*7WoyY9;uh6iX1HZNy2bUB`sRx&O|>9l3zhnndiH)4+VzlKyF|? zvNl@YF#Vwdm2&(e7*CYgdYDOu&*6_|TwPBWoPCWA;ncVYA0jc!6l-;Xfo zw>%a!mCaF%^UCRnf$GYq!?EKX|Mr~=3un~oI7z)XCLXU2f2;;uL9O+cSxuz%@sZqd zIMU_o>);#CW8c9x`!MsSSD97A^U>Pntf%17yaMB9t_o|!v3se|+RPH=Tp`q=&cEET8?rO5J638M;P~+32Gkov!}~?zH=V=)C}g%dVAW( z-CJvNE#bAjHLwfem)M?U%K3QPb$!Tn-U_Q#GhgxBv46~8O7wKNq*BT)#O?#oSw zHAlL$FWX;BEaj@djT$EnH;dR+Drvqf;p@0 z-Ef_nxL@t!>^xRc%60oiOL{p5e-VP0w*Hm?gv{jxri>^){v+1?ed(^JPlKh!tb)7c{JfnWRo z+{fTInpxoLFk;{|ZmKy~GA5??R^Yt!f{Nu~^`v)t43l^ZdFY^m_gQt*S?~F-;-7Co zDZKvs4AS`L_~V~4(DLrbl^ahM8X4eFmnrP%RNx;ZzX*-4rtCg*#2yG%J>(bn2@dgN z(svHJy}xaB7Nv*}z$5?b0B_9#(?a-rKWUu(=2&HSZ^56V>_6@j0yMW2#Ju;YJ$?Z! z!E>nGKZN-4&mG`=QbmRuKOx8Td zpbT4zT?7)1=bcR)e-1lbeIw_P&)Nv)nH*#eh_PDn zpd^co+v~)32QOBVv-9l^j&T5`*aPe_Xw;|Pc0&crP~yzSwMIxebiG79F|@8_p@DZA8g(M9 zd?vlT2hUr8n%3m01-DSbQXzuW5~0xOMd8O~Qw1OYbD zg>FUuQ6H<{?;(>(Dk6KP-J;y}w}FqjJ*9tI=ZYF7wP7MrDYa^qH|%hxB9?XEW8S*{ zM#`f+FAlZ8RgWnH)nE&rNs(sMzImVpK9Qmu>)G#*ft5fD@xzG6v*;*8Fa&8MGUdCR zDdoLp>XRkZn|O(pqvw{(M7-?TLZV(B%gu~=|NiNU2xM;HXg`H0_Nx)$UjqpJ#{gbL zrC84ujGTdPT$`;T^d-2+K}gz#lM z4f61WHSYOn>@w3a$l*5nCV7*v7WE3pKe-u&Tkg^>xZLTR#wre9&%(Yo%)V&n5_tzd z!KnT|K6iYYwduzac(pU+GZm0^t3<6zW|5VgCgot?-rxE{Jr2?{IHx}HTEPsE0D=rc z7gf4-8CFt*{Gf$O(V0{{-;OJpMySf+9t&&dOXZ;wI(ji!I6PTZe?V%9y@Tz{GP$hc zYVbndufvl1jk1sai-IN3B`6`+1*ENg7wJ=~yTsw_>$!oCmtQM~tZ7>xC(s3}^@|tq zAPNqbPdn)@z!ON96Lx}p)u+F*$5IG9U->BZ626sSq;umGBrm^Wg#~)FFD|Rca_tB6 zv*oi>Q*8Fjo~BQqzU#iAE|s!$XtROw>PhvCcGJ=NxA%Y4+zr!6u@0_0{R4g8OD(vcIjih-H>+?^W#M{VOD^{5_)_G}n%boP^-+5^?R}TFxw`p9J)pI6KI9u6vLs|s3HKT2$|t6 zByj&x@3Z+5iftw0WQeeuoiH0XBh1jlMf0+x-;efsO2qg?-jLw$%XBtnI`C{b&?_oDtT#yL zQYcT{c-haF)HcMTC#|BtIQ+MQ=~z@54{7aJU^1pZA*C4+Y2O1wOOwk!euOBTs|C#mLosz54GVyU0!5Z~+ z!tcVx?tgj^Yz~i+AM*c7r1x)Im*j)RQ9$`_KqmoKF5w@Zp#c?+p=R|*kFBvavHsFa@ewkXDW z`Wfic#-VyNmBdxQy`QtK*Hprg8sE3`CFZ;aa@2I+9Y1~yvX^l$pZBiPlFq8}IyFyNtmJ-d~`!oZ4P>R4K6%O&_Xc9wmcfArJ3|s5{ zPr}Dv83oP}tr=H?FR|Uc41dKCmhpgH@DZ0xwnjHb$6hKiutvMzk z-F*oWc>Od!W=whw)33Q+pdcTN3v;yv_x~b&FI_w*kl8PG7ZIqJeb2J1wnPlecy_*& z?s~I8LzQULa-ufTd0RpAdFu_&Si2iP8LQed=2@Bc`H1NIJo zW>7ztJn28&xtKm64~l{m2OUZc3EbUfMD~rR#y`EehiW_3Ux?eL?Os@>De>!ZZO_S# z>c9t|f6VGmasiI+i&Ko^GbiU@CaaL&QCnnG`9WrX!IrV}`tvxl&k89xlo9M<~6P_%DhIx>&gy|+&f5iNow2W zb@-Z5Z56oA#qHlM%oS=j=3u-%S}+jWY1zJscUKthFi{u&s$~{;=(_wd9kwStp6iMk zfLJxEpU?ye{ZJ>79G_S3JN~`ePx}O7<6(w57UDFn@sOSY8k4fo@<-X2H@$Zmmza;f zDSR#YQEYAw!h43Q=*4B}PJkY|`KWG7Hbr`+VWw$)%$9>h#`ob|*>V1wCn>B6%664!i(|FVoN>lb{%t@-zb z^iIKscyprGb5e8~0NjcV68AARr#XG|{Q$wQP7K;+Z_w!DyfGqG8{c^J5zQ?T?Muu$ zaE~>Q9^3r3eT|yq$dhx4h*{N$EA9<<8A|I;E=vOA<9k=)<Qiy2xCnlb#$)h~M00nnRq_G0zB}N8~ze9CbA3sl)lF0F4B_ zS0dT&EnOUa!|JMV66ep;7b2_K_6Wu#nY)*$r?9evMl#)a@{;8QoK*6wsL3unLIN*X zoj`>uB*jb!J@|urk*64`uBa~@v5@zidA7e7x^QKgZRz641gOGIDq|>xMZTpvbNWzJ zN7Q!R&EU^Mv^<@LCTeOOOIdlzc!nXB%J{pOH6UdpW5C0{wjbeLDtap4aqnPbGV_$1 zHiVxYb!5y$d<{bld2TO0|C1uAV(kl_dI()k2m-NpKg^k1(-pg|KI|IpMZ-u7-x_q0 z_&!RVTj|=Su*_Ma2(fH#i$V70rVn8O?&jE(PT zGcat9idVMMKSN*0A;cUk^rKbSOVy8ekf*m=-XTx++a8uC6CV@QYWEP8GHJ?MJNh*R zoMl+3W?U|wQ{ABP`CJ1lOs(#OuqSHFP_o^;{)Y1HI?hp*d#6u>{oBJrLQD=E(m`i5 zLCm>xAvlAwO8JJ6?65*y3DJ5kD#dqEl6q8RC>zuy!)AdR9Ne{?X_mDfdBZ23muz}y zdskXMO#%)5*l&uVK~0%ZsSd9)lGR95>auzZ&RgG=~jYKwb^;6qE(TG*BmEz{Kw|8vJG@~`n0s-zLQ?OBvqesSm^#|ue zH8AAbvRWf%N%-xd-U>thxNCDn`43`DwtM})amZiFqO=#Mh=v+8Q;}K6uLuSGl%$5H zLo`F(47l!Q8%Er5$lpA@odYfYe0cO(o{QFQqQWn%{`Dobsg$#YugaiL@9HTA9IJwMZCmR5k_0Va&zO*0xFQzyfh(RyLixHnR*G8`Bet+9(b%~lc+yt`J1)4a1LtM>Y`5G> z#yO5QRubSR!i3N83|G13s$OvB`}SiQda9dwQ}$Y0w}vJer-SeJ%qL&%^)vepXhVW8 zh*F+J6{)+O^eGA$VZvK!4_ijKzB1oCj_#UF==s*gfc>1IY$|DuCYWK;V<=DX= z+%sUbo+Ua{YbyVGMcO?9YP>ZVV0$-yNc9H~3rl+;`>wJ#NQ)G7M9M7H{S}#b^6)JpTJX`0=lKL4=vxFW~pA?Y{Rr zSYA^A>RP{ERg+L6lYjqqnNF7c=;}!XC+DA+B*T$!c~FdIVUFsobhq`BDQ1so&;}l! zo%hu?j(e`PLOsF*9_c_c+A1?M?h(@?=jpPQ6t@skgb@M;*^ydfI+yrSNnPgIVJS47 zJsb=@DqHknR|y%=I|Y=vgfDA@AG{Owe}g(;nLd2ct$LSKwoub!!E&JS;U8a%OuOK8 z1_e7!#qvP-d+ufAGP_~?ddd=?ssP05fx?dM^h(^PlP>|E;zxiKX6^Txyp2+_#4xjM;GKsf7)6CB29lms@h`WM*UEz!;^pp;h|cB8Xu%K# z6Kbr9kM0lXJ9H4Lp;HU)y?<`fL=q)4;6f~#gpS}5qIhDks7)NIXMBw|x?`juYZ2o- zU1T$+7ftG$(v5S0xi>~^&cXus$rMAi8wkJXH0f33h_`V|> z`arASqPaLRB0uUejC51 z@HN}s(KA+%8l*#u>O@0_duh}V!?M@1amO^RI;Q};6OzgbVex`IU~u0J-tCCzx;=6F z(56N#C(|yIS5+|ZSM8swB@Dqx$7CobKiR*^|t$;d449!iPq$eW6X@#Ij7X-2k_ zTqa5L+3l6CZ|m~U6(o$nQO!Z}qkprREQrrVM`{()BH!}mAF9=1!Yopcc9-k5v|FD^ zkDRJhP3$4s(Vm!;K zol<1cGmD4OWYQY>`3|#+9I1Ay_B4tf07>;b)47n4nNQc(D<3xVZ}sQ#A;ii<)fb-H z*8ii#a<$S@l`bK;o}uj1NRi24Z^b?yA?o$?Y{a5|1vn-$|mL-N%u=lnSEDNW;fgk zp3Q2-sR+Ogaa|9F7wH$AR)OeIx2{;p{~JGRy3@xRZ*HH04D~fwinPVK-PoWhddWPNQhqP4uNVw^$_wO-h~_RjFPB3arUh zrn!-Z&Bl|7w+Bv=>=3QOK~Nq>ktGv{iZXWs2=L7bF2|}>{t$N_1gF8mOFcu#Fx^Kl zSZFGu+?PuOLuHp`c|=78TBG``&sqKBs0*$lFk|p-ZWH7dNWE^9$Eh|Qe)h&IgBZ=| z9u6qtv5S9FMj`0iH^XAYHHnSVBp>xXBWxk#XpUM_*=ht*XWfhMuBa+=LdU9IISw|z zT(sH|EP$vdA1dftUZIJGtAEp7xN^2m5x360hnIDYZOwk^FZ8}kyhHhT-cRy%4vDDB zON;TGxvXrB_OiR#0#g@arBzvWAk0zUi6r8nShVVrbl|=Na5%dV+-P;rIe&fS@V(+$ zft-e0z*SL4qLZ-JMqtmgbP@3FRI?L_1T2{7Zv44*joTYP@%HA_myfcQ-+@Vh3k0_4 z+H@ubH(lN(l&90kcGADR>FsEO(HB@+;TQCztq@p@fIf#mv8YGn6D@X24bJyhgs$!b zb^T>QPD8UTLnL}aZ9#vr*1nT=GdqtkY0ap005s8F72Xayy7OH*wGbQ0fNi}ZCK@H8 zr8Zu$z@xGECY*i8>T|(WWd}j}D&7dVjSG#L@^m@c7{;^=EVG*%GO*o|>avR5t!GMr z9hxXb0+hAxiB-1NR2MB4z7D%P9dP2z_#tRQ&Fxr3%=Es5+7|xpb+?X<8}TT!#6M8x zSw>{xAJf+bMZ}x@+5U3^97vNp2T<&(hc1aIp#(knE9w^x@WAb7CvbXf4|GA+F6{Jn zz_D>0%+v2+V}0Su&|CQ97X&L>ftQCLZRa~SM`0b5rI#EH5U1?qXv&;F@iz42D)Fbb z#G*hkJRS{#np#f_p!D6m!6z)p`-{X1a7XGtvT`w3#j&>--*(%v^A7L{@o z{P_qd&3}3LnE6vee-XK}3n5zPw1t8~5qY+fYbU#ha)a#$NWuGCutL+X#WhY2>?`k& z(@NDY!E}%ZdDlO^W*eY{Pg#Sb@upfXIdW52i1RP^q|FOpy3HR-7(;FzOOE=!gOP}O z#v_+AeuG}jb?>PK?yr%8$3=p3mn=y{jTRK}x#2&D{SISuRH(|90#JxfHRW@2MbJRX zKi|8<_2{L7kZupy!gzP-2g3DL_O>BS)M$$xy9g2`F$ooo^{u+W=&f~S&>)6Jt5fcv9so~g*n~clTVgoE`FvRrpRpIKm zZ}0UE#`wl(nd~t)@WJ-o--E6A3JgKbp|D20nSH*;Z}NMEXl^?vN~A27O)l9~=~$&6 zFEHVD;Q4|x9e(%WL!zqtjK#c=8<#uuEyw6Gbz8EdX}<6+5n)aGkOu^ZX4e<=2u! zcXI97gOUwEM`miHy=KBHR4G#~x5q`AxzJwr!NOn8I0QzJbBYAbH=Aq>9^j4NbZf2l zfZ5^OI0_4Rd-E93AUjX=z-HOHffqfRh_4eFon&z1&B>!*-`s8p;QKd02Yz4>;PXt* z$!p%>zgh8#&{ktDkoSy6MRrg;r49ONwwj0+t-d+b<~H4G8kWsyILA z^X)^OdWM0yrq>7snE6q255t&au*Z%7o7E<9j_c*-h0a9FFmVHpHsu>)WibLHKo0-8 zH?Y<4lOjZENyg*l6Wv^9`ljvult_JskGF$pDU|7Np2#A$9`I+yH^8HlHPoKdT%*C# ze22e=%@$NFc?u*#NBtN2*B&u3DKZShOe$+iKU{6@4*2BAz1#90bt~UWW6h&HVm`t1 zq5Dbme`RLdgbHBMXWsIwlB#fN z?-sBY=@=?+!ERtY(318%W#T%~7fLBLuNN}V89jIrEER95eM)L5&WzI=`%CdE68@uF zf`z>M^oq1gM#}d~9xopCWvmD!%^O|(maVBzOj{O-CXH1V$O#EpworwV|#V(jd9j{jzc2^o_)>wklikbbcA$Ii#8R`~e(_xso*f%ob;~)Z} ziMyFVKk_0nbQW;}{8<}QalVWHmVBl@qs2m)TiJIy$U@0gLNxsRe*ZGcIlDc_C2JZQ z*=19xfoZexd?aYT1*07epZ;@xpsNm({jv}<7z;ML={rWpmDg+Q!;~3do@KJy zVS;I0@CETlv_?NjiDAhTRvr&Am`)`H*irznY1|yRf0<_kXgD%XRp6yaj~og*`|z?% zz^K=GbKVL0H96C!z+H+`t2>m(jW4!kcN?yey3^YC8{XA^CptLszUvm+Q)$m5ma9J% z9RlnqIKf{b2ZzA#k>Iu_ptS|l1eAs{{~7Xu{3eicSC5#CS2-sJD0VP)i~&w|z4A;4 zigijXeB4?m3NK4+?#_vg4x#QbD)jCgP+vGhtW$;$LHh_YAQsCZ}1T{@O`qFW1q13b~sVX-G%h}$0MXxvw z?l)bu?Uz>~d)^XCjn)hkC8-KCXTRA zw)3^_R?0{>ed*B^n%u1>bxg4az< zMX`A}!~9ZD(mtygzY8XFi&9Hn)qxfx12zFzYcIHIBbmhL7?x6fw%YX%t#bqgl!b>{Ef*-t7m&4D0z zGMrCv&h3{wLx}U{u4idJ2bLcTdlI8pZNZ-?1aPBPsVszx1ZR=)51V8HQd#!M?Cz=w zs8IO&g43I1WIK*H4g3lk7e+XzFVC*i4SYUvqqKHwCTWZG&6PYm0ltLcr%gb3(Yb8Z z=wCa0;3(P>Nglf~tdLBpzF&!dEy#VgG*b-;r<`LzDCzjE2`byB16tOwgm zG)TQ{&pzJ3l=R@nboSi@tICNZ@Dr`eRkq{}&e<*Wz2izYSB zbx62Gi5Uqmh%50B&Djs;-qGD~nXLOQG>hKj4o~dZj1b*2`}skFSk#@Y{9&(03tFH` z?33O?JIwNnd{s7tM`)0204@_q->GTL2fYYS*%@h~j^;Wl1#$fC?~TdvUWX;I@%e2h z_TP^%*Y`885^|(c0Ew2nN~(CQNkg~0nh{@8XeZ~32S2~Q5t&b3m+)y}eFQPKQsxs? z>_&+3k1&WHOQiX~?@ASTCXos)Lf0csri#oYO^WeWz53c1c{RjtDm3%34+R8H8ovX6mr#PeyYG{(Yn`)LT_``h9JRZxmn1$_cdBQtrZX=)b@R#Rqy zk3Jc``6Bqt#^ohXb&U*7yQWN;KQuh-&2eIvlRdprwawU_N^aZe40AAV)#@?& zNEFsww6VY9c?_IqUP*%yg|S5F`PV9J&6;g;9$D#J6OdWcH^)ABIZB3PzklD2=w6T@ zPEfs4l~$`6P?0Ci8C^bnc!{$C8n|uC@snG?HO(h1j+deH?XMIqq&3s+9MCqp#RGHp zezHfdReGo%FUP9yoT2cHscn|O~e5Pq?0%uRK0CDZujp|DpZOO`oBXaIi-HHZqC%ncl`i9ZGHsDMe){({Qf& z0|jN-fX{*oY?Ag?UzQ81TK<6(R1Gb+U}`|~LUUKlfHsU=^=eYCO>3Y{Y7~6QL;fhUcI-k^{m4q5HksH*Q8H8`MTk{O)~lX+gp;tr2p} z;QnHPiu*63fLAnt{gLNHH%jMu)_{@UVZpqB2Om$-TosK^hG;Co;z~T{gSEb0U`XZumaLiBC1dH(u!5uxq+ou=$5=rt+<-vV!bhTwDM?%k|%$I1>Rm%z97Apnk@TS}W;1 z`jcp}rpU#U*o9nJhUd`BYxh*L-xrq6IIs`?k&h6^YqLALY3FX%j4Dq+^qwCYhu~p~ zfAH-QcTAco>?<2VQ#KLmB#WuY7ghKZ{=A$uSg+-9i7S9YQLfOobKXH@bF#jAVqA^n zA>j5V+&z~weHiKwO>A)YdF_4!E!UDpaS6XHa!4wR?a^~3F`)vIxYKzqFm+i;L z`GfkaR_)tG69#@1i;Vqf0!#E~p%{N*-7Sv*)dvaMJ?=V9FY`|MJX70#JA%{HLB|ES zDk0leBbKP^kBN_Q+5YWKYpP8dpOF4~m(mBK4^k($u z-)#JIev-K+T(AJ%i*T7n^;*=s-VE7tos%%%Fr5Yv_A^`Ul}l?qm+MNm@(L-e+SAf` zEvnHAN{7kx-0IPv@IpA3=vwx_M0wiKl7Ur8!bqI;95(&4WEX7fvQLI5)Gi&>No0EGlIBPf&v~! zBVWh#h%a1@o4WT{>*a+w6nDO$WJ*eYJRroo*r4H`9fb=_Mh4w z(FN#taRn2<*T*jiSf+h}FVhWu_6@VU<&@+MYu0Y!^pXvv$-`@prTeuc117G|Oa!Ga z-s=42pzG#x40z`CK7vLADkDoUHf}EQZbfv%pIIGrv~H5_(Rs!-^0_PmUgy~|Fbi<0 z-sJil;~>5wgdigHt@K#b@;h2gu^i&}h=1~_46*R)mjw@1+$(M>(o3vA1#W?If8G*v zwRu$(K}3_UDYQR}S8IYzYjl5oTzm48gblMIFtC)^Z@yseZV_ve`GHPS%1H3hP8Tdx zkz!}<=rL-Y2K9FTi0D{16-}Wp)aTxNT`vlYB%^a7cSfL1_t@;7$cyV#628Vdjx*@H zrl)vTk=TG!iuIYclf%qVJ;0(XXEG`s2Vk4Kj|}2R;0O5j^&-ird6}RyCI5u+o}&n) z=01BGCnDG`GZImjV`dt+Ez(KF7VCT*+4u-sJF46$LBIY_$)55%aw~=pvzUj|MIAc; zY$i3lg@fHucxk*vs!!h`x*f$RTE(lKT+>ls(DSxSqUf{Acm2$6(W8opICvOIQkH^I zeV8wZ4U>Q;)#5;8ur=d_x_;fMIk~T9@-`6`e*g+pW?X#V_l$Cmsvt^94GZmnMn4`A zaBintx$b}H#=pXBVsC%vBxOD-9TL5QFKe*#;(vfK+o&rikN{$7&%PVp$VXP4zo0e& z^;0sscGjg(WM19p$5oi)MijceK3e{sid}xhsE*rM*4SSnCNY>buP%B1N@-^d?O3<` z47S5Ubc1PmMD58GXvg4k=`tDph*RLsLTAaZMA;4%Ck6dV?dzl`y4Np6O?s`3Y!?+e zRCTf{Kahw^6ZG3(b6=0+_oE}XDje$!;%oXrwnU5}0f@zG7EumRK9+5=N=6gdoq%vN z*?V^%W7nfmB{_|o$lDC3WS(o!+~$7I*4*vC{TBfBpR6;Er@31cCl8Aq*`ud}PjJ=I zNH}oWURXh0olWuNpwU0|h-G~OvekkqIoyW5yT}5$DEkqWv4KV|Cnf5am_6f3FZV+8 z2ea~rB|De6Q2u;&jN+}sP+4Ar?dU`G)We`4<*WA|-#6Tjz2NYNQN+UZ4aHM>vNH`Y z?wwcS2fVm=wNUZ*OnQa-1tUx9q(jMA!h)^??jQMG4)V|%tf*(S6sHT2$)z4y(;}>S zEIC*6arRRKm+W~e90yvAqF=Bnj`d^hPe+Ug&US<6(JZ&{eM2W3+vTb-%Vd{W-H@G8 zU8bs{9poL5%}$N6&wk%Ts%~cwRPPCPKjp;qa`uqJ@u*`qKf^#iDw!x?$2qi@Z>>7Wh3veDLulWd_zCi6ls%LNcYH*bgqAx zO=8uKU$HRy_xUlH6l?KHd8Vw>v)x`|>A0|bpM$9!j}$a+v9au@)!xmkrtb0T%gm_v zXZ$XxqhEUW54WFeU};=N6Z3)6f@eq!BdGhY+eJO#-%UHGj$P*zO!wsU>>wM{Giv%s z%&3Ci`40wMnUCDcT}qQH_X3LaT8G^Lgx(5GD8PcD#ZgTVxg`$iS=6rA zog8Dp!w%t#tN(3b5{#r3iVvftw2#SEdQK-)!w9ibH8(TLWkhm>3Pu$I`E8&F{ip4p z(@jlLw`%7i1v3sQB%4sbEP15H-{-s(Xa~Wzlr#PMDEBI^1OQ88pi?K2$*Ad-ZKewT z{22%HG;i$Xl0wox=0)))Ra>SI&PbxP58^Z`aHGG`1Q)rwE($=*a9j8WBE9L-A4fL1 z%l804)fmNgtvFOgWCtNj0a4g)r4!MJkB$%%%QYEgMGTKoBKYnm-1P$a{!aztJttSb22v?k8rSwhEUS zg96p?j@4AS&=lUpf^XR~)`&c@V0a8OJ&hKa!+Y&rpaOqIco_2UpEL9-MSf1ExZR8H zX(ULpXaijFf&f(_icEtx^AE{27;k`l#MXpy4 zxA*zokU!7|qxz2`1V0e*>FG}awp5MZ1@?hYl6&?5=597pux3Cd1)S5q=l_VCm*1)mfdj36@Rd!Cnu(`Wi zV?zbdy6fiC$H`})qf*%zFiAQp0{bDv!1r%jAbORT^zZ=%&?;mfG&8^l_}gbfa}2>O znxJDzB^*L#eS2v~>*cQbgx}u!_%OazCd<& zr$kBhcpsFxX)$nnY>W51dHCSsxqg7;_30G0_Jke(V7a3InAwYMor(OG_Fu5R zyG|PuwN*}|66WO(W9S+>;y8TL8vLn0eloa(9{V-)q5jDPuq`rv(SNVY22!uY?y>c$ zhI%SinXiCJd55(Gm(RKQw@l6iVlbs&S`Ua1a{w|G->>YdavpyO=uWSkgU`W4$%%<} zwY9Zxsv;)TCZwKx$041@DhfV~sja~f5w`i3^;K%Hx(o_%U8BFJ$13PZVocO`wGDO! z|B=o~K+U~~b$H=s zJr(}P7?FR>!oPl;OY#4$%c68HV+S0+BcoNHrJ9g1^*OF7s!Oh=8t++rouI=H*;Tgx zcwvb#ihEy%f{VZWj8CIni;RzNsKb|{+U&=jxaSluKme8uE5gyd9Jg&yPS?+ zcNFusRJ_=@_t)@;`D4MAR0&4i#W4_kCYOJ&4trT29M$F=M(btyDUSK}^fuIaJ@Ko& z_t!vYMEuW}Lg~<8`E@fs^_u&P^vF^;4~_M&wQkdGtbz@ubi-0^EIt^yo*^Y%{M>t= zSutE*{-tNDaj}^zokHqEe!VP@vV-FfqNTfjKILGONh-ALuv<4RcL`~bb1!6*e|A{Z z^wFri&hqQW6e_lf{#VysObZVRpRj_>%DCvhtE8=6-TH23a(en|qgAyF+v-?th^0*a zN3XT78*ABe-V;(z6Hl^*OdmeALk6xLx<6|enqRJa_6d5M%ryOna6j!wwB=F@s!h=8 zxQIme`;TZg(aHLZM|Q4_btB&F@~L*&CDZm%$;D+}rE%aTTOsD%OLvRD`7V#eo64DA zcYQKCRG8#UMvkA9aD)HYb>Uvk-HI26{p*?^_FCGfO9i@6UHM*a+?#&i#VV_Kx~471 z*I;$(w>--Y4|JvL@Vl91niuuno8`>qj3YZn*<+1oWR{D(sEwt-+7{AFKi3Pzw28*Y zK0W?`lwYTl^WVcU2Ua6HT=-v#vOa6Hl(79&>G&fTzG;*s<0jU@AY%5|b4j=qz~T4j z)v4@0l6tQll8={qR?{tK-pqO`9alR67$S=;Pu#>&l<^2^Bx>{aSLvr?BSw!l(Ps(q zo(t&A;l|=g@7eH)Ts@1fOYimC}0$uHIEa_I4u&rl(L|$`|qh`D5 zM3G$dDXpAwtU2S$k9=k1K|oJ&<*JmKccswk zBSx%w)%vGv-xN#Rv`x&q8SbuYOItZqJ{@`%K~aCOQC{7ySA{&eG?My3qgHF`*U;_< zgwOia)5LdurD0JfH^mX1Tg_F@Czs3*Mj2Qt? zUI>@adR<0U`+hTQFfp?2EE|$KKP#xR8)j#@^(6oI%IHwcHKb-Xl9gri?1cJ$Q{&|N zzIlo8VQq2trki5*^L5hIp@woQwr7nu9w%5c$IKuD2X#*TJ4!}OsmlgZC@b%mI+H3& zJ1_a0*ZCI@72NB->GQ<(y>3>SFGaFhwaD^l!!#31b!LUb;P=t0C%un;6x=qi7m@0C zGE@Y8`sn+T==}{Bb{b}nliuO`n^~4Za^^;O=suLD^FNXk{Uj1m_lxLBA3lF4e!WbO zoV~f(kc;e1{2{+XIwdWi-9GUgmnj&Yo$y@y+t$%7pC2;i4%!pxBLC!Y&^p6#6MUmDqa5eFTNWky%#IO04nr28)w85re~bj|{Fz$aCt4D=cu1%C zYF6N_D2Eq@DmKQ3bI*3Eiu;nPl3NXDC;Ok+ zCvT2+-B?}!az`?X9=q38G=e>Tup=bRmlDmiP*}R6;Uc21EPv}qyB>p(7wUL$B%tE) z5SCa{4gWo0<^T8~v~&^seSRF{vc=|ORKr$Jmc1PP+7F5>8m6X@fst%7Zn%;ww_09U zj!f@&D7^RZS&6*it=yDVVk;?KB`ok9+MdLV@buiZkiTH)wz@2r`BUvB%phIru|3;Z zb*Tv3czr(s!RctbaFtu90Hf$Yy$>UZ+{Np$&LJ1S-v=B0iFa|a`SNa&*M}vL^->*p z!kZem_rpuZo-J$z|0s0Wm6Wh$6tS8mel#vsY_WLl=rhiKOv-CXe!Toq6J2-E#KNZE zvrR`!yUly6dw!f|!_Fg4-yZe(Y~D>jI%+t%RO21*9xWe3HdHn4vrz>?i+TEw-hL*s z_DcqGvmpf{CI^oc&#O^gBhnpu9)TK{$xzkbe68*G2HEE%tXQO*olmAd#(9}F!bbvR zeBVW_KG@j%IX3WQxMYQRmyDcPbUgiV;MoDvzdw(g%)Gv;nBqLE_RhqYaXLOg06gwl z^bW{&;e93e*J4Nu{g2>ND1?Y(zqK*PJe4i~Mflx|8R08lpM1N${Z1M>tGp-G`4Jy$ z_F()IJG^ru2c8hs^V5Nsqe*;-bm^xF*|+KuVaV%Vu}|$1)v0XljK3JMCN67-ZRF2} z6zhE~0XR(Z;sR@_nzl*ZMYu$G!7~RIcs+X@QZak@qe+KR-letaaW&HmsNFyE=l_ej zw+v|V|KCTy27)3IDpQaa5h+DNqzsUlfFL!-K#0cpa zjF8UJ4d*@mo&WK3e&6%_Jn|9lzTfxz)z|B~AUg8U`iC>`XBaihPip0AHf_!Jbxxha zq6UYxzPBe-_uOb43J65?! z0#ot*1D{V+jXZJ_T*1;M*$i9#BD#+PUdfkOqNCPBe^9-VlML3sa%L?UiBpD0EzbI` znLs{Kx?*Uv|D8SB?s7mwD>3F?gLd{_&y$cVMmh#!t(&J#MmDaW3c_!DiI_$S80bmR z)3n8k+Le7@#0U2-3>zQX5Q-gpbBjad8=Ee%iltN|q>vvz#sw<+k#=am4F>(S2w62dPG?6P51Lu`r4*p)X8W-UH8`0)f~>@@$IQT;zSQR)Izi0;lwSXcG2d2o zo@;mNhKiUY3Uqj6a^J?O{qXvkjT*6VqN%Os)qP(HBB%4C? zne8Ha2u(3#TeWWKdu5ABQr7X6mA&XYtamm}@|1-pX2GTFUOFj}*|~`ODPTfT6ObAx{q1(WL2Hn$^e0!!`nN5xyouYWXGJ3hNFT zZ2mxGG>wZPEuSl)*lK*}pDU*Hh3}ULmy4IiYOd+XOFJxc^4Qtpj_h?p^mR#~M#7`Y z#+4y4-*-&R-$uv3qu1E{xC=!*l^YqjLUjM7mAiBz^mx?``(lVhEtEh0m@-~V9jd*` zM?NzD>}fth7Bd>=9?69&&(kZIr3&Q4+irxYNb)C&(cpHzqva%99}8>Q5eprJj8xw@ z>TK0)p+6PE>c5XFngV-6CB~RKIy>LHYMsLN@Sd;uvHD(#^Y|D}bzU^x=UWf-at%~6 zU4z@;wZd)?Zxg<)Xn3GMt?iRJNEN4VIVyyfHwx>gil-Q^1@3Bq1_+FA(>;91C5os%+0ynnd3XFzfd*z8PkCXUJSa~!b3Id z?rGaB?Y1Su72Iz2&Ur&uTSjj#?-Q#nwKi0T%#H74zK&Gy*BK_b%9s9tRK8WCCiX6S ze8`p0Le(gcG!piS3f(sSxmCG(pFBsBeWU&Ri1!45Q(NSOyi~`kCKO?~f1d*G?@pT* zW2I)f2Eg|rM~Neg?zddgnkL~DEu7YP?QAEF&~wCOt%wXx*RTper_TMr;{uyBNX6qF zd&}f#kwXV%#y%asdaANoCfFhxbICIo9Obm*GUxJh{RJ&F_lbumj_ zngEDW#_Ulrxp(gfZz%1vp)(hVzAkX&D1GH5ZS)fo1~pha#nLT%*G$OXhHL1vS&k=6 z>1o~TQ*X1MH#*=oNnioEMNqf0OTfGFq|MCsvKiM~TF0y3<=wV+eFjat$hKQ13P=yx45td4X+msiQX;C^+Q8qV*f0S?dtyq?qG(Nbg@c zw8*+|IfBW)$gyMxwf|k6fdCm6_}sj;=q#J6L-<;NwNO!CPWvUFrV?zU8m2=GRgjf; z#WFgyd^US2B6_S1k1n_2vfv84t0uAQ8-0$ro-k(GS=?(aTZA>T8L4oo-juCQ%jz?w zzb$MH5rA3Zb#hCbXNobMrtGdhyA`r!rT<9UR<)Nq&poRgW09y2f)&0t1Q~#C=R2GX z)`r>o=jU8`<9$V^rLN1?h|%cOu_?Cg$^G^i?7;g5On;UK1mf_@VBcZF`*_sAN3u^X zE8BKuIgKy0TDLyr+~ks^^B~`^AB2Dq_!8c@vGmj1p_2C8^iBFo6NYXzYNJE21fPIEcW zYeyiy{g`gO7L9H_>Ff{je5_beu=^rb)Izr-x57#j z$?8ZV`uwihp8iFL_7J$3f3AD2)LCLI@y_6cDn?dQ7x+m&JfPf(Ht_0>$~pL*2|#Gs zT>DO1kMX(g;`g-D zi;o^QZLP@8GR`tNzx0VNlJr1d4W$IR+U$daXR=MtRk95`NfumDz zku4i#VtjpD4nxKK7i&P=Gl-M$_<}Y|H;^XCvu`XA>X^i>t`MpxxGwb7??s-oD11A& zqR#d9(xkvg>vyvXPh6IIYL;<_hV3n_G+?77-(+`wV7s+&#ACZG@XW2I7?0METEKc% zFQyGl=MWG{q;02#D8tFOznfcH6 zAY2Y=o;H-J4Qg}^-DQ)ts}(?P?a7X!OZdbwRoZbd<~w4q~>7RB~~^bLO;`AdVwNW#iGW8^z40= z^vlAw7;L?Ovdj4Qbz`r-VStOD-g{?p;+Cez_TmI56X<-JfY?*eKkC{cuk_&!VJluc zR|uw0)7YeViVs%>_mJr;Vq}Qe^JL2B0)mH*?LQxui1FYS; zSoGZadLblnuWaG%4M2(EqB=v#5u$FndF}<)p#D z!Sqjr=Xj)e!kGN(G@u(?HRf5I%y_;$)11OB38BlRGBV*qdsXcW5pu&L{L2IMfA-J! zWH@P83?^;vc271uDl~*y^wpZ{e*1`+SKmn<$_#ze;Sau> z3o|;@7vcXn)?d89>WaIV&(Er0dW)VK=eu3s{Bdj09FE+oY`}Of8YW^| zWtyE^^Tffk279ku7CY+c`E`qjy=<3;O7sZ;ay@IrHK1efPHu4NfD3eX%pX)JSw6Hv zuA>P%1!&JPw(X{MrZh+_pYrCw70{eZLmNNn6Apl5mmFcBg_B)SRUk&ud9n54q)6D6 zHnnYE%G&oI z(ll%@m_7+l*!56{jq^L9#AYhf zCBtI6LvxG4;U9M3xAJmE^BXSwAg=e!t(dccvmYD6@$`ug_7)-Dofh_3!JR_cNlqI! zURa9P+FrV;i+kS?-jW=a6&7J7h_SpIQK z*H86#&f@piNQFEoCI=kg7~Q%4MxgxvyZIlsdhNbRCrd@^`)habZKCKWZS%cFiVNCi zP7AT7kz@UjF<`hgm{`R)Qq{QVy6A9Jg~<8_`*nlSk|?qTPxD?nPbP@?YhFq|g0L_^ zHrmOJ7uaj|MCT&RG1l7@6A^9BV?^wF#KQaoqvwjMM~^%$^)KD>UFa)OBsjF*kGBp(zlEomhYsu)i)6u`M^>Hvt9|x+yaT?qu)Ue)%Cyeo`=A7471za{ttuVdKn+8EK1an-(gp zbh%MaG=}2_q@7yw5TaJPDR2mSV-XcbU&r5-hlSMzq!RjX{l6yB2SktU7c~i_S6U4JsJ9v-V>TN3z{gAV-L>V-U|BdI~_`6mA)-Rsd+bQIoq6A(QMV6*k$9* z?pkraM^1UF{^W0(Tr4Z$-_G>__Zm)-il5OZzo%k50#y>b1Na2;z@;>T19#V zZqM>m1+uR0H_bE|Xl(-eXFATM0qkh<$8WmJh6c9@m8pgBi-~7w)_z@OEgfw(2n+q& z^%FNvumM#f>$ex!u%{#x5_;s@o>0pzS;9Q_B86Pnvz)&cB>l>cit}i(Usu&3Jz3}T zEL!s+p|^v)xcn;y2Vs5eV&Y8V>E@!D=Fqj@zg~6EyLPeLDQY|PxTI2?$l0A)2%n@q zPF(10D_q8naP}K$4dy8E{>wbRQ8o>HOtW7a`|=fY{4;D|g|AFd?~C3Ss|%<3!_M)? z{!l1h$*9!FGN?0;XiPeA>1aa~2tQpJRdfTzv^M+%J?bcgp!+j^sI8@|7J*{>Tc2_ernl zX{hv6HFmF-_nu=^%W~EuX&V<556qxeMX>{Vxd~EEEr){?;_>YyQ8Z(vnuy-43Ib(Y ze<-aHT^jI%W&!?n&uL_ad>!a4PaJOzRyD32&Dch5cV)>R)qG6u$uJH(@)B5xV&=DB zr7D^qj2uah_%~^zmBZR3FTsbD&T`MOCkUYfW8Qa9#P^0I3Rbp7SHS!yt`=r#6)n#9 zo_`44LW6wGIob<6oF&<`*9GEP6u2S0TYm=Fk2=NdmElf;aA?L+ciclu_gR zRdiEKFGhXeD6IJN74E=p?sAR_cMLp~Yo&NtIxInu(@gkm zu&C9anH4KXK9ITE0%Jz68EO3f44e^BB_^9BP7zdWWf@js3j##0i1n}{I;-Jd-p$r3 zoDKhK_yUWJRpa}l)=-msUfSnOvY+RrRbOe_Pc9d?-&^oEW^ygK2}c>=#@a?z4PFn^ zWV)`edld1@T8U3ww?FF7EK3?+2S(GC@6BTU4EtUy&p-v8M;@wkZjO)M_t=Ix_F7@b z^c=T%%qVHKoU?GBwFS_Qi!Z{m^76Bx3b6^@KR^+jwWytX{a=CPIjzaU(Hn(fUn?-Y zFRq-0M3z^ssp5xgjYNf*1a{m>F0kBqaarr=dz3~jWLsL&+c;mqtZ3}_O8ff4M#owr z4E06S-h2I`TU(GZClgaoj?LzLk8}9%bcs{op7(Ha(X<|M)Bqo9eb2ragwE=yM@a^Z zWd|C-3BL@(%qTAZUK;*?Sb(fvzmv9K^jnhrV5|_Dxbvuzv8A8ejDtParKK>_v?2*F zjmU`8$#+%k;Y{PY68|5u=mk0j(vT%@yy2IH$^89KLateoHF3wApRGQ<8)fP(%JCi< z%8k|eGb&bOzHqG=v@G)gX4$a_78hC z87My^P+aMQv*|2bZ@a)E%(tXG@AUl z%FPA8b|WiSyev8?(5;x2^efHyY9Xt>V#V#;D5riK#;cC6VRdK1D-!<-i0Sjb+ha9v zFn}^#(tRTxpwMfF08{v&$}PtF<@Tz#i<8aIqY@Gj&m^oL;!ulDx3(ibV&jve1Y*qZ zrr~VcVoQooK;9RcwZTEE(3tQu$Dry7hq{{{@TvMsXsUo(UvXI+N1*8|JDOeYO4SXs z1jdBd1F6cNLW{rN(5eiXhoirR#9vc253JTLG*QZCQv*_VOWAJg(*?L}_r~AjB~^#T zPxAfVR-G<9dc=AqGmou^yveCiO{WFD6c<{2`K}?qeKQr0hl+S))nD1@vtEjoT7T*# ze~3XofSeBkH7RQ{{TE+_lHK@r;8MjlyglrfVAL0PXN;Dlfa|)d`9h+UTi1n|YkS9o zlC(SJEo-5&N~kSWh4NX}XG13`&NU?pQ<$7h_c6WsI4b?0F$1a#A2O(J-3+|+WwG$f zyORO}#f}=~I7v^isxX46p*e{jq)8)JJn4 zLvGX%HgJ0aW!_vf(sHY2-_iy@A5{rR=d3>$%^#hgw<6@fd=nWJwWotXB%u4Vv$ILp zc)JUWiVh`>D!E>9jRBVN_Y;tJHCT zV4Pa=XykH6P8OD%uiu~NqDscq4;8QdXzG!s^8Pu9q9NfT2jpP5|5n$elC~D&a$-ae z%*y@S=B-6*3W_S5S<(oyDNwzQx-cxW#tX^r`gJl_fs)eAoy+9a1C5DeBD{L4N<|%a zj2~q_$2}7Y8);v}81tAbwzf1-pf(-yMuRX^&QR^rLGsvY&1ArGF2^NY<#LxFNbK^j#u*m*t$H{UF~83LHvIx1*$_y5-Bs2{(JB8+N^4)v=x~Jh z>xOnrikjlPK#YK1#SqbF#b$wE`&mHm9>L6K2WKP5hpjn9scWMW(%at)w^xo08S+vi zcvQdP=aX!-nzxEuUpa%$l*f-eAU(lhv{;9xeMFB|B5#g2i#ZetBYQ}%6N|84^L?%h z&M^Sl%$LWR>FFdz#C5^23b|DVOZ0!9n1r%O_O;*pbzX9FOlyf4O91#u#~OJ_btau*ahnRssvW!$?v%;b+UJL=?Cv$pIVXRjk|5mKC_(Z z6emS#TcqpM5%(fpBiSwH%7^#kgFLJS$xaJkN+6Y$k&6irZ|nQ2fJ48KiHi!e42D6DZx@NUyjx_b!t0a8$-cnTe*d(6Z{PgimYO)gm=%v^Is%x&Z@uI zq}kNgd2U_iR;G>6GIc5`iHiJa4Jb=ZD?&yZ!DZ*-bd32Vg5q|?2KP;k!c(mW?k9_P z%A=mI2HwlfvmIh3aIWO|(5h)Wv&j5hvoG|NWf=#gA%$cXDxf2{GPqo^f`T9%!&rbe zDr*gMN}h!(LLD~8dkrwYn~*{33P*`<(=l6w(Ic^GO`1OiWsbjxIY;Da5{}BEhZqC=AjooAxuehf| z^2DBPdlZ@ESx`dSj^v9P%Ic5>Dv7z6XZB6u3?C0%%ErBb0qVglGfd4)31jqMZ3c2Z zbXRI|g7?C{$jul22hMJaVA;2_3c+N!mS|~4=sA0TNli81+h<~CigQ>#LthmXbQV6D zU#5S75lPMMUs0CYDKQC04ng*`o*d_qFo z5$CT#&`AY88scOJXkN(lZy?xf(a9r|S$rZ&bGCd3zq?;HnNT%@Gi*tEVUcQI>Q<+l(iJMY( zgVQVV5)O-irO8P>pj6(MgPI-%=t1+1-%I>Zy*GZE3~cvVKHMI~l9ek2Hv$jjMFNsj zxH}Wc3sBNvb%ND&Z^_n&@Z;UpZnGM6Yj%1zrUBots|0J%=A~u893-wZHw~v;hZot$ zRIRoYX&0MCg6|_9gnQ?SS60Ks7Pe_)+&-q7o58(b`rvQfEcRus$}ta36wC$SF@8~Q z(aNePvK16zIpEU1;Wid5hWNaE}(V@vfD0^hl5q=uF1eJ2+?-*pB;TTx){F zf10dT_zz@qdSL8?SKVgpvTWnI+6}PFkx$;m0J1%_kYcKScGEhbXM-S~nPA~92g`+! z7{h}Jh;(hVSQ#LA_M*p-*EtE|A1a&1$ow>h3TJGGikq#1Jlk6e!?+ZN=oPNLl-+Gs z^JEh^OJrxM2NbF(HlKrn$cPA6=>j0Mxi7ZOC5QZJNSBvawH3SlnCJimK?i{T(1I_v zynLuZlws@VW7CcefANup-U9(xYKPj)i(0_5 zX0(PPYdTwh>AcKP9Df;v$SBO_==uA4(Zj@(lgR%nrC>VJ@UySMq;-w zO-&Y$7s>}m217aLqMJ-0c_E3K5SY~V*KJUpOabFJKHQ@zuEm|o9u<6(gZb9Sgqd94 zTsv)AbbNNgZ(4q=m7#8`qg@&M`fy*@+u(f~GBA?NvqW}NrHax(N2F?bu*0E4dM2z4 ztTZ}vKu-%z#5U=q-1be_8Un=9Ud*xw{K`EvX7 z;ByeS9HUkIeux24mnP6iZUx9gPVc@M2P*1o!d&)cS6`q1wnRtlIcp?oLGAt4(R-s)VW~}gw0L+} ze^h+)hxffGV0EM1LIj1K-`$Qg+S$cFu*B8)%8+%)r!Z}6_~f+iL{KAaVlM3y&DE6n ziiAHMVO=2SQctl8pfKK2-^fZd9@np*e5WuTW=-b#_5!~nh8n)-lbxh!m@){YA&h(u z7Yq*%sU9Z#yqQ&yfnJ(sJ0el~@XIJ3)1|msP)`<&XlhuYqjC#lV~4)!S11zeZ`3T< z_jX?w(X-s49gt7*L>3V}Ml$*EIX8IQ=ARd4=O*{8G4SQ&mJ3Vur(>SoY?#0JF{kny zalST*t4mZsw9S5fO+b=ITpy>8S5-OxQA z>=u1C5b&*`H@5I3<3Ce3P_7{snp++V*3zM4klRbE;lO^aXhtIo$rKv>_Wj8JK_v)jo4@@EDO)l5@ z*P=TvHXN4Zd9`tw&6!gfV0MAQjBr`e-k)WU&XMcZux&EpjN%pVf^1YawgJ04-timH=V@WT7lgzf zSp`hc^zAH*Si5dfSRcHIO0(U$G`zujcZlJ_rx$16vKgJN3vj()&{_7ob_=8cT4efk zLcT6w2D{}ih-M{g)rTDos+4B`u*M$Y&UKnny}*kpk4m^c9Y)jTrlJ z%BTapysfN$cSMX+7 zMn#5MUX6+I=3nfttne5~R@cNTqPc_aA%NIjA)^taFtZj1`4PhR6o;-(Z4=cengnXs3Wyjb!SVSn*W zhu!exIyncGdlwM}`vrfVGrpRZZTI8tr1#z^nx=X#@hD>9OvcaVb@x2!K=$^#Ugcd2Y)zW zj5_tRRFn(KV{c`R<_|Gh@d@y8jW99K=U_1H;m^ATDn3W2noPq~T=%D@Qnd}V&A7Rl z>wHc}d-%P&DKQxS2(-cIIbsu|tQLiNzjO*~g!A*=?S6mn=sdouWlMx6%oocGS?Nn_ zd{H3kopgz4wvxCjhI}Rqg`x%euc_zv+;ubQkeIm^jpY}95=Y+)jaUYPj(64S=%`xB z3w1sUGQJJ-)VXHB*|RRcZd5C;4nM@1~o125rIjyG&cD?Y~_ zYG)r=o!iq+nN33}9zHON!Pb#_j zGF0GXD3~m zQjcKx5?QneUtP5|1PGGh)9UeocdiR|CQZ7_2ZtBFPKUDQ@ytVFt|WYQ@#yL69W0+v z!C0&Y3+y__t*r$dW9NsM2>LM72JTetMoxp6813ikW)5Z@`Qa+eIhC%FqJ5e>C(UE# zELkO}`3uEd>zBn|%-+n($SDb74nEvb7LV4obc+!hYk;7O3s|hvw-pI~Bxi;?L;eBn zfugr8ZnZJmKfk7F>GX?4<`h`kVQ!Q$$FnjYV+Ud>PTu1<*!5(VaQvK_)~L-kIYKiZ zN3j4FbrZr-uSHH%X`H?lE@BB4l=QnH9Fe~GfW#2gCf3x9KF?hq*>iQWeTurE1=At3 zzsR_Mat=UEYB;S^G#*@7hjra!H-|Y21x~;BJHSoWakHEhrzy>#qcY$Og*Al)5&%6$ z-tLwEJoM;R5g*Kk6&(x=x;&smyz5C2HVsbu!VVFdyR~yo91_U%E&HH?yNNbr_QrfP zPI;HyR_as@oJ4E{i3;jkU|v4oq0JY8Ub)kXoTY=_TpT%w_&9LqZ&$143!%qX!zai~ zrs(hFBpOiRLg@E^zS`#gxoX{|2pj5K5v40@o$qf;7^$IIYxt^7o zQ4&n*-&2XpNvW)zLTS5aPMN0?rd8sQLp{8hy^j*whR=V6l~VN@NS_~fx=`9g5tQ0w++QRbQkp2{}qW=C5bG)Lhf4$vhu zy}v)lzcA|aVP?~Yp|bC~D>g#fo>;pQhim<+8Z^ctihSW(Q7{#6d_pwYtT_RS_^3Sw zQWBQ})s$O#9I{-`k;T_tnns~qKmQMxTtI`M^pB#xXhhRZ1V=&K&mEmaav$?fO(c6S3 z&FmweNPC@HCN4~}G{wHs#r~AxFE{J1!4LM7qD(x#SRs(h97fzsP{P2ZLBU*J7 z6mdc08eOF1tFiB963THL2B*F-#k`5`p&&CwLygx)x|{>aOW=Fe1TI%{l`zMSiLQ(4 zV2|c{F0x2f13h}#qJ%OyEp%AOosMRQ+ySg~eZMF0&QE?1$Nr}%;He?#1qWni-l~`k zhb|uNuWZNX06Mm+nP>7QoCmHfyieMnbGo>NG|mOh%ik(|rRBly>#{ktDQ44m5?a=pdJV0IP~6m#1Wkkz)Qc4UN(~zgmKl6=P+SmHnBbJel#1ch|&zb{Xr7 zmZzsTIgr9{{fc<5YFBW9zdQi2YmdFDvib0Ja%}3#hvX*xdP{a!C5H#fzGMbEE}iBX z{QmAXkZqn;&ql^=obCLHDPGUi%EBmjem`l=|KbVC0Q2_V`%A?q9%j;bE9g;idby;G zd4Y8M&>`?uiVgIT`O2xDi)E?JK=SPs`NGmka{bjGt4EJYKj+At%<{fzL4%iSm3z51 zx`rn53w<%YeYz{znxWn*9c|bXhkJu#GF1Ws+$Q)aPouo*op(8g*da()Ch5`zr>N-Y znF&UE^cahjy$iF1StWOX2GYx}Ai6?l#Xws}XGR^XlxQnnljyneaG!MOa(E>yB+zh; z>Z6AXc9l|3UBy=LE|>pkucpQA2-)sPUTXyl|(Ve7ssC88j{e27!f%wgHQ;l6h|uSBO#<8Vp+C8`YB%P(y~0FV zg41~(eUcxb`x4k=p{VuHZy9ttuzDsT@%WT`FYKgS?7>dE9#HI+-E^C0_^?!C|zfWrDogJN||J@w4rgYW`ZWj8Ovp7T88+~kgTX7T{JFWg;a-TG)NiTo#NmJd_pB@) z`N!{RuHG3scaCx(nVSze{gw^pZIH|2J@8QQx>72gvhs%ik3^p}^*9Ne%*e=Se=MXh zyY;Ezs~qz@12NQbUCtfu0|({cO`79(1Kbp+rY1(4@TaYVwMzuTqwkGH^k^~cSXf_0mUc(WHCEf%Rv{lk;pwK|xA_w%x+QIV*yXbH3f-9>%Qa zWM>WucWKyY?nqND55+RcR&YEsOgKnsi`(?xDaj;R2St6jwASyjIcw>$==16Fg=<#S z5P?FDH)mkZrRO~{jt)Uu+7bJl)-kZbsE=_oo!^lW{q_!pKpz2-?Goxas-4Xb^hyZ} zK$3VpzEKC^6iKErdQM08vMt%VNt@HP@!i#5yrLF-L(vx6r*C&f8>h0Yudl~p+a|1$ z%t7z|^No%DWg}o_uQn%u-S=X^|J?mGjEh2uFm>ZZa!eupc!=i>ox9;K?eP+Vmh}0H zA05w5j>#XbDAwRHO5OkHnuXoxbX2N-a4h$!=;knx-55vrs5APBSKHcz-2)%zQDE*L zcd&%nqofiPb~?zedJ3+u!;8q-1TgR)x;{B?f_0W#x*Pw zMV#bmT8!5xn37&Cj9`79pSIn}Qh1mfGU!w~HD!X$GDwFr!XBq+s3xmauSMpSniy8O zmk8ODi7O06LYz5cqYp_;!XKLm58s^GUFhV!G;l^Zf};CF2{LJ$^TX>UE}5_|lM^9N zJ0Da(q?0A{%-Y55CKSu0bs(VS>prVODahYk@Mtp`KYyH9)7r zRR&=q(Di<{U6IaIu~>4YvKvAeDz*EH@K`D#%kS=*6Q~K`b{7shK!zy0M@y<@H^3W1 zbRU&I9Xv}Dl@w*x%&!?0VUqrRFZLF^C}Tk8z~Xf;Xseq!m*eNd9y_nj!q!&xG=jO! zC-t0cs>oW{8un`f($d}T(`E$vx2#rtQ9=cq3uwfdJY7sZqmbS#FP%pB-E7-xTomIu z*a|B}6yn~`GZ$E`8kmET-P6MOjs?p&bpOx~r>tzuw;_f{%~A2OC^w0+z9JXHELz*p z6q^0zs%RGbpGQ$w1$8{QIj44k?2sj3m##)ka(091hAZYmth^$*94j@waTtZb&z_dFh1p;UTn{{g)^%YW)q^?|&Boh9_Rd^*-zzwpU9gDxK_()Uws65eHp^D9277i7pzNvY@J-vUH3EBAVQ?>uwcbDoqvPK%(vE2ytd(`l(`mcDxi+^=a|m z{JE@*tfEYkiw1P~)kr9^`s}{9a(H74Q1(M;hey4}+#mbr6cVUt3#x~u6dOYsqN((g zb+9GJ4|=+UW=|>VofcBhMS1|bV?mX6aFxZ`z?a<-YB( zpNtPQ^t(O9?x465;Ob|GMq2PDeJsA za3T8CF4o>DY{ahP)K<%aZCS)-Dn2l9vzW4v-@58u&{=IZK@a1dnPBO9m(YH6^ncuDjH$obW%{gzEViA{Bc;sinCPjoaXkjwQTtPh}$|c+*+O z>|UFayVCuZt_H!edBW?QB~1i=|1sodG`VFVXZ{Cn$>{in&hBC5IU?qt11_fUS^Qjg z8o}^r4dQbtF&;Mw;|?zV${vbu!7qg=Boz~uaXg+A8Q95Z;WHyDPg+HL;7ZLm`1G(u zE31WAMiD~zikJ{j-QGrPQR{{XwR|8V`?jspQ$cE_>l2cQ^!JoLsodx;lQb4xY0Z!%erZx;=d|6Ah@8_qn!g~T4 zoea#@Ha2!)y}kWIJF6apvda~tTu|f7!E!y}KR%b1mhOsP=cZ5h_xH#B!?eOtTcTvf zQ+(5;844wk3~+Mz{3iA}oKLeAM&BzcZywb63W`U-x=V^X@irj+w&$@FS zoB4~a=M6szaC7%|i_mEW$KPPMCz{IZTU7q-2Ll6BPHrv{Vv?1ejWOlZCIH$g=u@Sl zlxKyhJa4fv3FBc^SLfuu-f)*08ydQAcs|$S@CkwL$UqBm(c7nK8_Gnvw#(>;x3BS^ zApo_nA}x1c48vr40^o?(&g0@}_IlcK!cQPWxG5BRjzZ2!B!%$cc99}8;gZ1Ph`aQ2 z|Jz$Bk}wz0UO+Dqkw_iYq+UM`G8gNac!&2w`n@qdJw1Tp&9$m6NxYwlX`VlbY9QbY zq%uz22JBh}XItSXjO12taNlrqbDy5My7YETzKheD?-pO225nE#Pwh9UscA64B*X0| z`{qhcR@UYUG&-+veqImX-fW{R^kRJb#@kwgYW}--BB9|q)V5zSxt2A#U2EqEx*GF^ zS32Xv5|=F*goTTc^?~ZnfP-={x8nVt=8zwT1XyGTph8uXPON9qVF_R+a>s`H>;Y)X z?1{`f$p ztE?Zl;S71+O;;8Z#c-rLDQL<3XnaNP4A0yBr+JCeHm#rRoNMhG_l%5Nwr~BpwttZ8 ze~>qdBxjb)tgJ<#NLC<^mMxgiw1Tv*;MOrJNn5!JbRWaNLtYr)De?OzLi6QWc-l+F z;qda8_&n@nh6++S^#edDJXxCNjM@hH6WC*~gkHaG9fV4;ZMUyJe@oxb?T=%veQ}B7-XTp`-mJ^T(958k4zX*XK7d{#SF4y@pVdo|#!F;b2Ap zAQEe9?HoY(k=bHzcn?^q;DJM=4Y4uWYgWLOYDKau@Ab_Sp+W;eRpx2#@R0;|bbSrXL6X4?OaA(}2-A0Ry($d$- zt%!;EjmG@6kdPP@bMHskB&~XsJ^fwT(%HOW-p1WTeU(j`^05Zh=3Iaq^Iy$l&=s@p z+-UR;soLzjb#Bp9*T08q$L z8L-P9$hv78Wr5AV-0V{9B}iTo2-t&*gKR^=Q~2!U%GS(GK54DTrfwNpTH046UcCt< zjPY@cwsmzC@k?{zk5yQS&+L`glP&u`{p5GZs=fFjJe+3SCR$8>YR@vSv%${Yl{sdx zEGljkAO2jU&Wo#;%dd_N6CZz#xn$uca}~h?-`2Kz_TBHer{f2zX)$CznFRma)0nPn zcc?+Ia2~d6+~q8vn*%;1dMV$a7U0Mh0ZAYB>Rr$o5VbzA4{{ju0scjDF~1HuSZIpN0bl{5Aa2KKVYJ#Ojm5*|&mQvsjVa1K+gTnb9z6h3 zCC{*u%Y0F8jsljKKU9jA^a{dvALWOOM^{!ph0zrbmhDExL@xM>*Fa3T)NBi9hNe`g zh{2>3zYW?&bbMt=iIYr?;?t*V{)0Q706UlZ?c1)O-?oXlDe#UgsRz z*Liu|HXhKV5%}^djmTO;UTe)f@Uuj~AU-%1ZHNLVk!fmfj&-X*8Uv}BEwUmAQ1Y<> z(?uLxV)>(+>)Z6|m5RjIrznSlcoHqr5}adc*kmf*K*GE9haBtwydd?()0}Q;xWjKg zVIBYs(ej*+-L<)5Av`*r;3o&E614cpApI7lYCx-&_w!N$VK%I?@25ycMxHH6lg?8# z0NXhx+b^bY@Xh`Ds{ron0kIUe?(VT6OcGr`-n0BtzZpFIdy=MO1}HAKelXh(01>y} z^Y7lC9^~eJ*m$)y4rsFxV$2ig)NYnUc6Dh0$i>Ve&`8QsNs<|vLj5P~J1DBeuZj=4 z1zQ39Mj@HNdi!FE4afjw|4QJ2XSMl|%csMS1w_0XyViukhi;OQsusd0X&j} zfuz$GKR-VNt@51W^JITJ+r_RWyEAsmgH%Jg1cq!Cqqj#*qY;Zk)_I%hM6#mf`V>Zo zR9FS@QA5;1l`nvD;f8-_`~8J%(&*F20(b9rb9n+-{H!GhBfsug5{G;pjri~jGMMJL zQlJJuYDzUHk7gWPo5CM%TUuI*nYCVFmU1P%PcKY3_peCg!s?p+YNWhm>uAGesf||% zZf6&UA9U|%AVhq7{rQ4Dsjx}!W`t3Ei|dH#ZFRQsydMH-U@u@z{<gLX?OE6Fqvgh#n<~5=4*gch26|b$|B0pZgzp-p!j~X1?cnly$6itjWuga2%u} zLRII@0a%y;z!*G`rUs41mtRV`vySu76~#o@0}E=~1|rcdX+wASDpx)(uC@>K&l{h; zniqWgu@%q{6fced6U;lR7wu9h+!8&#vHsy(qycnQXGWs1iuh3u;GVCQ{$ zISH%VQ>{_>9r>%iA(;z^T`B*`H>T;0rzj073y;0?O`j%QWDhX>E#0_HsXx?Q;5hhV zPD8WlVAAmbT)|#OcQde#LdTL&5}nRJ@B8oAk1$< zf4p*=TUWe~D1w7rDXLS-lEAjFUov6nQJ?yP)%xWKO1H*2-f5&I6r z$Kif3iF6jJJ}7rZ_1?H~V;uyU8XRG)SLZnLj=tizw{<_S=u2?^ozo(4tgD2%??>)K z4c@VU{XPvAaXrkGa@iqOwbiIgO;0yd=Sq&>x@R3);=J{FT#fT0CoRXt53zpm`?suj zz}~v;>({Sy|8V}bmGMbNPtT3?3L$jIog1gq6X^7&Hq7uDSe85I7pz^OG9nxtnkbz< zLS~oc9+B zwE)%2+BYdZKD1uF+S5k&9N?Y%^W9pCVhw32mp$q-lZI2`I3)yo4eorcaeIMFne~#$ z5jIX=KM%61zg&N~B0@DBk1}IM$bgM~LGO3e!9?f90U3q?n{MtARbmM%ZwEZHQ_WKx z5aaO&IK-`|$gTXn2K8_53aGj6JJbm8Mmra1eEqACpkC*10o1MNdR!ACx{POkDz1$$rn%o2XV|M!m8|5n;Kx|SMdvp?=K)+zJz2(%`U&zZo_4`-hf04PMKQLhQ8 zWSZYL9zQ+-PRZ-JQ4H9jgaRy-$HzQv{I%M`J&iNNm9Eo&GCS<`xo(l2>nl-V7Aww!1&SyrUPqYwYb^>$-qD zr9o%MUV0i&2>w-W;nHOo^n123k*J?r;s@YPv5&1sogC~d)Ip4guT?^??4;FD;7$~q z?_7w8Lnw;V1?QhKg)@$?h-DIM{VHtkzgm3mSu>}&n4rFnCKss$^Mg6-aug+B2zKOh&frdzm>DdOG@+OF?DQ=mOs{mp4akoZaYWMW`F z!#d8vqDVOBU-#l~S@{#`o}Qk-#CO2@;?0rd&ca)ZPm{QubGwe2nOVe^rau2x7cO7p zGi=v`<<=()92fRD0(Mh6a+1a6V~d{BkRh z>FFn8m?adx;OFvOP1hKGTfbI%m(hf)^bmaQgV`ov#^w!Z>r)^H&UFrft;@K28g+3h zKl6WnRAj~0RvR_Wz3tP_G3e_eMOadLaI$nd1e|yB{6sWf;*B0+c%Wz=^(4v`WLw0f*URe8(b38NecH3wAB>HGyJJ zb;Cq+HD)ZH3~2yxS|JFGoz_E0*taw$F_Ub7_;%mtyVsZKn$HsdDxm&zVTc77asoDG zPjIxIp99ctozigJEU6Gh^AXI!gUuny6@OaEMQd=pNUmU-W?b?&qyRP=@4bGF9-SPr z4l@nO13w8CiAOQf=EFh>#PFv`tDWr~U`YXdv~YQDMe6!>UmMY(Hk==#k)h$C-2@d} z=KucDFe5x)T7fcX>Xey5``6c!_+T1I@R0xpFcvO2^r`4!*OxE*_OlN-7N^d@K~r2y z`#hFVRpbO{50NFoFnD^`%*u3~k&%%I=7_53sme93h>%wgdzt{#Sbw)!iKZ9K)?E3% z4fg-NBH?fB@vq+ngpV4ER)&P8q9^vGgx6>pOrkTEJ{8$P43shb|7sNevs0qI|L--^ z|Na}8?0Wi~TlU9B?%R96=$50C2J??65@4ot+>!L|G_-xg`6sR_E6 zl@u5*$8okV$NnXV{m;-1<{QG17H#@k5A`sLe_RKC3#L|j& z6B9YRQp>2?wz2-8nGL;8IKt31r&r5WrbE0qJ2KG^q!CVOo5e@`CdnBrfZ`E&fT239vCQ1S%C2u*RzJU z*X8B=3v*E%grc1-l$Q4|!dI^R^|-3F-9UiGOkQQ3s|A3F>WP{Om4R*a zxN@@%r_4*4MpvAeXYpxaEyep1qPMjln4uf!V7fn~tL!7O~EC0VYL(eZ?guf~LPc z!<1OE$j#8T-90_kV2yqgDPzq<|DX?7t_#K}XA{Z91uU%Na~tOO$1HvFyJa~Uf`FW5 z5@&NhmJhnFlLH{=2++Fh6WQjq4_K4Y-+|H4j0H|tg!&yY`_)esBl6F9^BwF@tvNp) zYnr?%{e98liX8q|u|M2(&YYi9)TxQq(;b(nwYh%q(^s(00r{H2>6P(;K{-233RwNqI=6DwP2vmsVU2 zDIKqG4ZE}sx2F4W9r*Q20FOyxS@x#%@t0u^=nmq3tdA&BA$Ju$cRe^AXsJ zpt95L}5Sc~6Wt^&{ZrZf+K}$(c{NNIe zWf;F&r1lg5yqxD-!$q*@&vgY4lOlbYlmdNA()|L^>Ds(j3!t>Caz*_zWB(rUO5NN7 z)SEfWwSo!-LM>C0Dx0`7c#xHWyjFnK2im20gqArikM>)e<0+u?`Q$oOfh!{>K@0s| z7@-N^rY6P5Bm6k7k3xwzH`1k_2HeKC!e+I7mh!lQvtjn^?O5pHdemiX%@kneI|C=R zty#`R?eEP;@z<#^7B;LjpO6+gflL5GTMi@?Zp&DBu?M7eqZ-$hedqz9QWJd-^Y)*y z{JYVXUbft~-DR3jy;f#JFdrPHJYA+Of^xUhzuPYQGH*Enoom>=>q1PLSHfW*9PO$V zTcT@DL7`|qc@vP53rCCEHYo)g-?h-DeHfUM`)0{8mQa2Vj+}zR(RvL}+sC?mP z7MCwU6C!e?amD#9gCbj{K3n(%+CG$z(5ia zw>nU|!60hk_2_j-z_J#c&l8suFTLfWr8Y|sBMcSfb`das_4l- z(czW1=sy5p++vMGi0&MEaqG^-ftEe@BPFwVkqIHp5o2THaSX0%XSm~apk~|ZbToNV z{%#^|&UQyzj+i0F8jl6mlc3Ef9(SFtyk+t7y!I1#vaf+$f))Bzf2|&R;sQV&_tAIs z6)bdno~6|eCC%~R$G?(SiZ`^mK-EXl)0o{s6a`J6eFzIeNE+ zyhi_)-5y;BJgMrvbzW@3auI2s@-6C`Uv`O28QV;IIvqsIVry<%J$wgR=f*j1xFNZT z0pB_XRjaY3R*8X0i?1xybmMY-Qj(klWe3B8AJEPQafMpv5B%;r{S?#oXEt~iC!Yf1 zK*dpBuwD3TW0o|NYmJ!gQs8WwKXu11KvF!#YB#uVE(JWfnhW%f3usS<4SnV1W7UQa znnLJw)bJyx%&N93A^{sK*$*C0F+{cM6R)OfMe4QK++z^io+67`ePTPV0DG(d+dt($ zLh*YoCm<6|*{%RupfY__Z&7^L{k!B^w3@BlS7iI_?7qC%f4z~^mb_vTW^4BqU`KMW zHjHNDb_dISGH8_F?ic9*gc#kAG~R5aUaj`IQDep>F7=FQ&*{ZCh!==4Rc_s!S>FXp zoK>Bo8dd&hn{;RBM)wbMEjF)_y9R=$TjFAxF-jm$S`gQ2E5=X#`zJdMi>^%#LNC<(trN+N&d`7PE{0_jg0r&^93#rp&dyEKi^Rk zJIUp1XE-bNDf=kcK8cs6d=0lFLB95Ekp;m}9EIvj7#hPnd-tpwg%CtVDaFL(Z$b-; z;`7QADzXKT)-+hw1)xq{8p<1K0kzSl^|fO~gu++N8v12&8&2`41DmP6Rr|WGBTV?r zt1*BSb)Fz}V0)MwOWOFyq|)vmL+BvyVH)Hc%?B9qA`1tSV-oR{@SOrzr9q$7wivGC zYp6JW+ezA0M6#^e z@2POV#ja_uSoFP&6m$Bbon5}fu;<|DG%|luZGX`g_^`Tl6vJQ@B$d$u5cyY2yYXh7z|ZN{$8oy~sr z5d|s<rlhiv=D{cFJI68k1qGgy_Vkg10X|6R(AQ)E=9{5J7y73uJd%| z^Drg{QB*B6MFL#tUvKQ3M{)#>f7Zku>iaeJi8zVv0SN!~4;~s^?B-rf^R*xp-(R0c zn8Pl2|G_+gk;VLhOF*wfAVtK<58(3Mk~f|hUrM&*ozXqSacdbV)+4(m)C3Z;krvz| zt0lQJS?MwcTeR6x>tyhI&r>8wOKv6*oU&Ji#6+17l9{NXVE4L7dkeob+hkimxL_qo z5|AMdQ%|^?SBPee@|kk}P}fyBt#UTx^Qt%RJmC_C2R;Cw!W%-YQ7oDy;1fnc736eJ zE_KEfJ(Axunq*IGJ(1On3zb_Q^5h=Nk7Td^V!wfWi`}`Ap6W#19i{u@&@9@3g55PP z%sa0Pl6vyHY4%r&wU+p85yVZ{sSFi^gZj9Z<{{@z=y$}(S3c-HRswi9%0OvG{X+G| z#q7nIWoEp4Ks(%bH5sub-ne?N%fiEqWYD$l$P?%V4rPis+@@Jca*Nqlg1gqpMLss4 z*udV<)J`Yli*gP&0s!m7#{@ReZg5Jf- zEq7>QEGH?B-j}mzRMAGy5%n7(wmouebZ=iEc8Hh%z;3W<-?W4jY&$f-Zlu*B;@&C8 z3G7U&a1>j@%@P~BE>?C3$pflgC($ezKwNwIfeoEoyJ+6u=qtJb_3JNo<#b{89Fa^) z@f7un9k7h% z&-@NtmY1^bi21q8G4*hEPr85AJkwYIiL%Shtzpa8jFTa(?ODIa`A%LcsLEgROJ9wj zrifw~pAP&4ilo4Ru0W;Gu$M{`#GR0=LVgaf_Kz3^<*zwio^Rt*Lft#viI%yK<-K~2 z(%rR=0I;xP`p*XIK9Ohvg?4KgYaIi&wTkBXThU zDwklS3EEAEpGD2zR$I2ytEH1(Pkus3Lub84=+{Na^qfY(_qiL_C8#PQnkGMdeaSe1 zNjFU&pmEBLU7srwt}G&oV{sjOZW&#bW*AFnvr@*$9pc*fzj#_X&$QGuO&i2q_5h$a?99qd&Jj}jo6v7TfS7-;|ZgbW|9dikfjks%y>{>XgkQ3 z)L4_IUc6dR34^)6(kEoCW|Bo%7P9V9bIa_vH2P-yFGr}`6*<|znWKc;CDvz2KsO

lDukUiMu!NJ+#uK!2Nn`k_o%?(X%CdfA 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 JxoWop{tppX`cVJ? literal 0 HcmV?d00001 diff --git a/docs/src/components/footer.astro b/docs/src/components/footer.astro index 54dc092f..9408dcd6 100644 --- a/docs/src/components/footer.astro +++ b/docs/src/components/footer.astro @@ -1,7 +1,7 @@ --- -import { version } from '../../package.json'; +import { version } from "../../package.json"; -const isNotHomepage = Astro.props.slug !== ""; +const isNotHomepage = Astro.locals.starlightRoute.id !== ""; --- { @@ -121,9 +121,7 @@ const isNotHomepage = Astro.props.slug !== "";

Resources
  • - - Demo - + Demo
  • API Reference @@ -140,19 +138,13 @@ const isNotHomepage = Astro.props.slug !== "";
    wanderer
    @@ -193,7 +188,7 @@ const isNotHomepage = Astro.props.slug !== ""; color: var(--sl-color-text); } footer ul { - list-style-type: none; + list-style-type: none !important; padding: 0; } diff --git a/docs/src/content/docs/guides/api.md b/docs/src/content/docs/develop/api.md similarity index 78% rename from docs/src/content/docs/guides/api.md rename to docs/src/content/docs/develop/api.md index 9efa6d87..1be8074f 100644 --- a/docs/src/content/docs/guides/api.md +++ b/docs/src/content/docs/develop/api.md @@ -24,7 +24,7 @@ http://localhost:3000/api/v1/auth/login ## Upload trails -One common use case for wanderer's API is bulk uploading GPX files to create new trails. For that, the API provides a separate endpoint: `/trail/upload`. You must first log in to use the endpoint. Afterwards you can send a GPX file to the endpoint to let wanderer parse it an create a new trail in your collection. wanderer will try to infer as much information as possible from the file itself. All additional information can be added to the trail via the UPDATE [endpoint](/api-reference/operations/updatetrail). +One common use case for wanderer's API is bulk uploading GPX files to create new trails. For that, the API provides a separate endpoint: `/trail/upload`. You must first log in to use the endpoint. Afterwards you can send a GPX file to the endpoint to let wanderer parse it an create a new trail in your collection. wanderer will try to infer as much information as possible from the file itself. All additional information can be added to the trail via the UPDATE [endpoint](/api-reference/operations/updatetrail). ### Example ```bash diff --git a/docs/src/content/docs/develop/federation.md b/docs/src/content/docs/develop/federation.md new file mode 100644 index 00000000..26154270 --- /dev/null +++ b/docs/src/content/docs/develop/federation.md @@ -0,0 +1,491 @@ +--- +title: Federation +description: Technical documentation of federation in wanderer +--- + +wanderer is a federated trail-sharing platform built on ActivityPub. It enables users to publish trails, follow other explorers across instances, and interact with content such as comments, lists, and summit logs. All user-generated content in wanderer—whether it's a trail, a list, a comment, or a summit log—is modeled as a `Note` object in ActivityPub, adhering to a consistent structure for federation. + +This technical documentation provides a detailed overview of how federation works in wanderer, including the types of objects exchanged, the structure of those objects, and how interactions such as mentions, likes, and follows are processed across instances. + +Below, you’ll find examples of the different JSON representations used in federated communication. These illustrate how wanderer encodes and interprets core actions and content as standardized `Note` objects. + +## Context + +```json +"@context":[ + "https://www.w3.org/ns/activitystreams" +] +``` +The context is identical for all activities and objects. + +## Actors +An actor represents a user of wanderer in a federated context. + +### Person + +```json +{ + "id": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "type": "Person", + "inbox": "https://demo.wanderer.to/api/v1/activitypub/user/demo/inbox", + "outbox": "https://demo.wanderer.to/api/v1/activitypub/user/demo/outbox", + "summary": "Born the day we installed the site.", + "name": "demo", + "preferredUsername": "demo", + "followers": "https://demo.wanderer.to/api/v1/activitypub/user/demo/followers", + "following": "https://demo.wanderer.to/api/v1/activitypub/user/demo/following", + "url": "https://demo.wanderer.to/profile/@demo", + "published": "2025-05-05T15:07:59.943Z", + "icon": { + "type": "Image", + "url": "https://demo.wanderer.to/api/v1/files/users/26b1si1344ficl6/wlezq_um7vh2722q.jpg" + }, + "publicKey": { + "id": "https://demo.wanderer.to/api/v1/activitypub/user/demo#main-key", + "owner": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw0xyaRWP5X955bwSnUbr\nmwEF/2Fdmn5nlRRmEvej1BR0oBcPMVPYrrK4sz37mrAJ7Wbmg4KjmSDEROD4sApr\nM5FmKeU1OBsV2O3bL1DSW/8PXaf4JQRgl0AO+LiSAd7A/GO0viAzJXyJT4Rpaamf\n8Naclh7YR5E4JXrsjahPEWtUWcQ4g8Yhc6n2ptQ33ACI7Q1R3+U7q1tMaRCKAbdT\nbRahzqGs3iSxV+FjnsMR109KqDQJDMjwRB11USJTA4/nMpV6w8RS+171xNHl12Sg\nGpiuusmXMYYuoECdKDtLY7AsntusYMzXUjPzKfE+5EqPmIj5OTbg3A24p9hWIv5s\nmwIDAQAB\n-----END PUBLIC KEY-----\n" + } +} +``` + +### Outbox + +Paginated outbox of an actor. + +```json +{ + "type": "OrderedCollectionPage", + "first": "https://demo.wanderer.to/api/v1/activitypub/user/demo/outbox?page=1", + "next": "https://demo.wanderer.to/api/v1/activitypub/user/demo/outbox?page=2", + "partOf": "https://demo.wanderer.to/api/v1/activitypub/user/demo/outbox", + "totalItems": 23, + "orderedItems": [ + { + "id": "https://demo.wanderer.to/api/v1/activitypub/activity/ecy96j9vpke00hr", + "actor": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "type": "Create", + "to": [ + "https://www.w3.org/ns/activitystreams#Public" + ], + "cc": [ + "https://social.tchncs.de/users/flomp/inbox", + "https://demo.wanderer.to/api/v1/activitypub/user/demo/inbox" + ], + "published": "2025-06-20 19:41:53.504Z", + "object": { + "id": "https://demo.wanderer.to/api/v1/comment/htm169g4b2i48fc", + "type": "Note", + "content": "

    @flomp@social.tchncs.de

    Wow! What a beautiful trail!

    ", + "attributedTo": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "inReplyTo": "https://demo.wanderer.to/api/v1/trail/2ce3af7a2e80f52", + "tag": [ + { + "id": "https://social.tchncs.de/users/flomp", + "type": "Mention", + "name": "@flomp@social.tchncs.de", + "href": "https://social.tchncs.de/users/flomp" + } + ], + "published": "2025-06-20T19:41:53Z" + } + } + ] +} +``` + +### Followers + +Paginated collection of followers of an actor. + +```json +{ + "type": "OrderedCollectionPage", + "first": "https://demo.wanderer.to/api/v1/activitypub/user/demo/followers?page=1", + "partOf": "https://demo.wanderer.to/api/v1/activitypub/user/demo/followers", + "totalItems": 3, + "orderedItems": [ + "https://social.tchncs.de/users/flomp", + "https://trails.magdeburg.jetzt/api/v1/activitypub/user/momar", + "https://darmstadt.social/users/stormii" + ] +} +``` + +### Following + +Paginated collection of actors being followed by an actor. + +```json +{ + "type": "OrderedCollectionPage", + "first": "https://demo.wanderer.to/api/v1/activitypub/user/demo/following?page=1", + "partOf": "https://demo.wanderer.to/api/v1/activitypub/user/demo/following", + "totalItems": 3, + "orderedItems": [ + "https://social.tchncs.de/users/milan", + "https://social.tchncs.de/users/flomp", + "https://trails.tchncs.de/api/v1/activitypub/user/milan" + ] +} +``` + +## Objects + +### Trail + +Represents a trail with various metadata like description, photos, elevation data etc. + +:::note +Waypoints, comments and summit logs are not part of a federated trail object. They are instead fetched on demand from the source instance when requesting a trail. +::: + +```json +{ + "id": "https://demo.wanderer.to/api/v1/trail/2ce3af7a2e80f52", + "type": "Note", + "name": "12 days in the Zugspitz region on the peak hiking trail", + "content": "

    12 days in the Zugspitz region on the peak hiking trail

    @flomp@social.tchncs.de

    https://demo.wanderer.to/trail/view/@demo/2ce3af7a2e80f52

    ", + "attachment": [ + { + "type": "Image", + "mediaType": "image/jpeg", + "url": "https://demo.wanderer.to/api/v1/files/trails/2ce3af7a2e80f52/route_ldv172t0my.webp" + }, + { + "type": "Document", + "mediaType": "application/xml+gpx", + "url": "https://demo.wanderer.to/api/v1/files/trails/2ce3af7a2e80f52/12_days_in_the_zugspitz_region_on_the_peak_hiking_trail_5ts04zgsuk.gpx" + } + ], + "attributedTo": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "location": { + "type": "Place", + "name": "Murnau am Staffelsee, Bayern, Deutschland", + "latitude": 47.678592, + "longitude": 11.196068 + }, + "tag": [ + { + "type": "Note", + "name": "category", + "content": "Biking" + }, + { + "type": "Note", + "name": "difficulty", + "content": "easy" + }, + { + "type": "Note", + "name": "elevation_gain", + "content": "8902.000000m" + }, + { + "type": "Note", + "name": "elevation_loss", + "content": "8906.000000m" + }, + { + "type": "Note", + "name": "distance", + "content": "202403.824936m" + }, + { + "type": "Note", + "name": "duration", + "content": "4037.183333m" + }, + { + "id": "https://social.tchncs.de/users/flomp", + "type": "Mention", + "name": "@flomp@social.tchncs.de", + "href": "https://social.tchncs.de/users/flomp" + }, + { + "type": "Note", + "name": "tag", + "content": "My awesome tag" + } + ], + "url": "https://demo.wanderer.to/trail/view/@demo/2ce3af7a2e80f52", + "published": "2025-06-17T21:40:02Z", + "startTime": "2025-06-14T00:00:00Z" +} +``` + +### Summit log + +Represents a summit log that is attached to a trail. The trail is referenced in the "InReplyTo" field. It contains very similar metadata to a trail object. + +```json +{ + "id": "https://demo.wanderer.to/api/v1/summit-log/0l889g7nbju9ic2", + "type": "Note", + "content": "

    Hello World! This is a summit log!

    @flomp@social.tchncs.de

    ", + "attachment": [ + { + "type": "Image", + "mediaType": "image/jpeg", + "url": "https://demo.wanderer.to/api/v1/files/summit_logs/0l889g7nbju9ic2/walchensee_heimgarten_fahrenbergkopf_herzogstand_2020_10_25_loncv4fixp.jpg" + }, + { + "type": "Document", + "mediaType": "application/xml+gpx", + "url": "https://demo.wanderer.to/api/v1/files/summit_logs/0l889g7nbju9ic2/12_days_in_the_zugspitz_region_on_the_peak_hiking_trail_8mw5gysia0.gpx" + } + ], + "attributedTo": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "inReplyTo": "https://demo.wanderer.to/api/v1/trail/2ce3af7a2e80f52", + "tag": [ + { + "type": "Note", + "name": "elevation_gain", + "content": "6343.200000m" + }, + { + "type": "Note", + "name": "elevation_loss", + "content": "6347.400000m" + }, + { + "type": "Note", + "name": "distance", + "content": "202403.824936m" + }, + { + "type": "Note", + "name": "duration", + "content": "242231.000000m" + }, + { + "id": "https://social.tchncs.de/users/flomp", + "type": "Mention", + "name": "@flomp@social.tchncs.de", + "href": "https://social.tchncs.de/users/flomp" + } + ], + "url": "https://demo.wanderer.to/trail/view/@demo/2ce3af7a2e80f52", + "published": "2025-06-20T19:38:19Z", + "startTime": "2025-06-20T00:00:00Z" +} +``` + +### Comment + +A comment attached to a trail. The trail is referenced in the "InReplyTo" field. Contains only text. + +```json +{ + "id": "https://demo.wanderer.to/api/v1/comment/htm169g4b2i48fc", + "type": "Note", + "content": "

    @flomp@social.tchncs.de

    Wow! What a beautiful trail!

    ", + "attributedTo": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "inReplyTo": "https://demo.wanderer.to/api/v1/trail/2ce3af7a2e80f52", + "tag": [ + { + "id": "https://social.tchncs.de/users/flomp", + "type": "Mention", + "name": "@flomp@social.tchncs.de", + "href": "https://social.tchncs.de/users/flomp" + } + ], + "published": "2025-06-20T19:41:53Z" +} +``` + +### List + +A collection of trails. + +```json +{ + "id": "https://demo.wanderer.to/api/v1/list/65i686yf6u3b394", + "type": "Note", + "name": "My Awesome List", + "content": "

    With my awesome description.

    https://demo.wanderer.to/lists/@demo/65i686yf6u3b394

    ", + "attachment": [ + { + "type": "Image", + "mediaType": "image/jpeg", + "url": "https://demo.wanderer.to/api/v1/files/lists/65i686yf6u3b394/walchensee_heimgarten_fahrenbergkopf_herzogstand_2020_10_25_m1ubtj7rwk.jpg" + } + ], + "attributedTo": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "url": "https://demo.wanderer.to/lists/@demo/65i686yf6u3b394", + "published": "2025-05-18T22:03:19Z" +} +``` + +## Activities + +### Create or Update trail + +Issued whenever a trail is created or updated. Broadcasted to all followers and all mentions. Editing a previously created trail will broadcast an identical activity, except the `type` being `Update`. The `object` is a [Trail](#trail). + +```json +{ + "id": "https://demo.wanderer.to/api/v1/activitypub/activity/wqt6poxjevq9oax", + "actor": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "type": "Create", + "to": [ + "https://www.w3.org/ns/activitystreams#Public" + ], + "cc": [ + "https://demo.wanderer.to/api/v1/activitypub/user/demo/followers", + "https://social.tchncs.de/users/flomp/inbox" + ], + "published": "2025-06-15 14:56:38.800Z", + "object": {} +} +``` + +### Create or Update summit log + +Issued whenever a summit log is created or updated. Broadcasted to the trail author, the author's followers and all mentions. Editing a previously created summit log will broadcast an identical activity, except the `type` being `Update`. The `object` is a [Summit Log](#summit-log). + +```json +{ + "id": "https://demo.wanderer.to/api/v1/activitypub/activity/i31uc0lki3crxwm", + "actor": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "to": "https://www.w3.org/ns/activitystreams#Public", + "type": "Create", + "cc": [ + "https://demo.wanderer.to/api/v1/activitypub/user/demo/followers", + "https://social.tchncs.de/users/flomp/inbox" + ], + "published": "2025-06-20 19:38:19.978Z", + "object": {} +} +``` + +### Create or Update comment + +Issued whenever a comment is created or updated. Broadcasted to the trail's author and all mentions. Editing a previously created comment will broadcast an identical activity, except the `type` being `Update`. The `object` is a [Comment](#comment). + +```json +{ + "id": "https://demo.wanderer.to/api/v1/activitypub/activity/ecy96j9vpke00hr", + "actor": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "type": "Create", + "to": [ + "https://www.w3.org/ns/activitystreams#Public" + ], + "cc": [ + "https://social.tchncs.de/users/flomp/inbox", + "https://demo.wanderer.to/api/v1/activitypub/user/demo/inbox" + ], + "published": "2025-06-20 19:41:53.504Z", + "object": {} +} +``` + + +### Create or Update list + +Issued whenever a list is created or updated. Broadcasted to all followers. Editing a previously created list will broadcast an identical activity, except the `type` being `Update`. The `object` is a [List](#list). + +```json +{ + "id": "https://demo.wanderer.to/api/v1/activitypub/activity/zq30he84ng9of67", + "actor": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "type": "Create", + "to": [ + "https://www.w3.org/ns/activitystreams#Public" + ], + "cc": [ + "https://demo.wanderer.to/api/v1/activitypub/user/demo/followers", + ], + "published": "2025-06-20 19:51:37.079Z", + "object": {} +} +``` + +### Follow user + +Each actor in wanderer can be followed. The actor being followed will immediately send back an `Accept` activity. Future public trails and lists published by the actor being followed will be broadcasted to the following actors inbox. + +```json +{ + "id": "https://demo.wanderer.to/api/v1/activitypub/activity/ika3t06qjyvlx72", + "actor": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "type": "Follow", + "to": null, + "cc": null, + "published": "2025-06-01 07:23:56.517Z", + "object": "https://social.tchncs.de/users/flomp" +} +``` + +### Accept follow + +Automatically send by an actor as a response upon receiving a `Follow` activity. + +```json +{ + "id": "https://demo.wanderer.to/api/v1/activitypub/activity/9jpjjvvi79ayp9d", + "actor": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "type": "Accept", + "to": null, + "cc": null, + "published": "2025-06-17 19:48:29.417Z", + "object": { + "id": "https://social.tchncs.de/8f702e81-9f85-419f-8e45-c44c8b6d8365", + "type": "Follow", + "actor": "https://social.tchncs.de/users/flomp", + "object": "https://demo.wanderer.to/api/v1/activitypub/user/demo" + } +} +``` + +### Undo follow + +An unfollow is represented by an `Undo` activity with the original follow as its `object`. + +```json +{ + "id": "https://demo.wanderer.to/api/v1/activitypub/activity/n3n7ka5msa3il84", + "actor": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "type": "Undo", + "to": null, + "cc": null, + "published": "2025-06-20 20:14:37.107Z", + "object": { + "id": "https://demo.wanderer.to/api/v1/activitypub/activity/ika3t06qjyvlx72", + "type": "Follow", + "actor": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "object": "https://social.tchncs.de/users/flomp" + } +} +``` + +### Like trail + +A like for a trail. + +```json +{ + "id": "https://demo.wanderer.to/api/v1/activitypub/activity/jjlcgm0il3jy2y7", + "actor": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "type": "Like", + "to": null, + "cc": null, + "published": "2025-06-18 18:48:55.300Z", + "object": "https://demo.wanderer.to/api/v1/trail/23fd1747a29c3af" +} +``` + +### Undo like trail + +Removing a like from a previously liked trail. + +```json +{ + "id": "https://demo.wanderer.to/api/v1/activitypub/activity/jjlcgm0il3jy2y7", + "actor": "https://demo.wanderer.to/api/v1/activitypub/user/demo", + "type": "Undo", + "to": null, + "cc": null, + "published": "2025-06-18 18:48:55.300Z", + "object": "https://demo.wanderer.to/api/v1/trail/23fd1747a29c3af" +} +``` \ No newline at end of file diff --git a/docs/src/content/docs/getting-started/local-development.md b/docs/src/content/docs/develop/local-development.md similarity index 53% rename from docs/src/content/docs/getting-started/local-development.md rename to docs/src/content/docs/develop/local-development.md index 1cd03949..7f5b47e7 100644 --- a/docs/src/content/docs/getting-started/local-development.md +++ b/docs/src/content/docs/develop/local-development.md @@ -1,9 +1,9 @@ --- title: Local development -description: How to install wanderer for local development +description: How to install wanderer for local development --- -If you would like to set up a development environment on your own machine to work on wanderer please first follow the bare-metal installation steps in the [installation guide](/getting-started/installation#from-source). We will slightly modify the launch script to launch a node server in development mode instead: +If you would like to set up a development environment on your own machine to work on wanderer please first follow the bare-metal installation steps in the [installation guide](/run/installation#from-source). We will slightly modify the launch script to launch a node server in development mode instead: ```bash trap "kill 0" EXIT @@ -13,6 +13,7 @@ export MEILI_URL=http://127.0.0.1:7700 export MEILI_MASTER_KEY=p2gYZAWODOrwTPr4AYoahCZ9CI8y9bUd0yQLGk-E3m8 export PUBLIC_POCKETBASE_URL=http://127.0.0.1:8090 export PUBLIC_VALHALLA_URL=https://valhalla1.openstreetmap.de +export POCKETBASE_ENCRYPTION_KEY=9ada3c93163812101e50e2bf49e880bc cd search && ./meilisearch --master-key $MEILI_MASTER_KEY & cd db && ./pocketbase serve & @@ -21,15 +22,15 @@ cd web && npm run dev & wait ``` -This will bring up a `meilisearch` instance on `http://127.0.0.1:7700`, a `PocketBase` instance on `http://127.0.0.1:8090`, and a `vite` server for the wanderer frontend on `http://localhost:5173`. +This will bring up a `meilisearch` instance on `http://127.0.0.1:7700`, a `PocketBase` instance on `http://127.0.0.1:8090`, and a `vite` server for the wanderer frontend on `http://localhost:5173`. -## Accessing the backend +## PocketBase dashboard -Sometimes it can be useful to edit data directly in the database. `PocketBase` offers a convenient web UI to do so. Simply head over to `http://127.0.0.1:8090/_/`. If you access the admin panel for the first time you will be asked to create an admin account. Afterwards, you can create, read, update, and delete data in the respective tables. To learn more about `PocketBase` you can head over to their extensive [documentation](https://pocketbase.io/docs). +It is highly advisable to create an admin user to access PocketBase's dashboard. To do so, please refer to the [backend configuration](/run/backend-configuration#setup) section of the documentation. ## Building -When you are done with development and would like to build wanderer for production there are some steps to follow. +When you are done with development and would like to build wanderer for production there are some steps to follow. ### PocketBase @@ -48,7 +49,7 @@ For the frontend there are no further caveats. Simply run `npm run build`. ### Docker -To create local docker images of wanderer simply run the script below. These will work as drop-in replacements for the ones hosted on docker hub. This will only work if you have already completed the steps above. +To create local docker images of wanderer simply run the script below. These will work as drop-in replacements for the ones hosted on docker hub. This will only work if you have already completed the steps above. ```bash # db diff --git a/docs/src/content/docs/getting-started/configuration.md b/docs/src/content/docs/getting-started/configuration.md deleted file mode 100644 index 364d35ea..00000000 --- a/docs/src/content/docs/getting-started/configuration.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Configuration -description: How to configure wanderer with environment variables ---- - -Global settings for wanderer can be adjusted via environment variables. If you depoloyed wanderer with docker you can change the environment variables directly in the `docker-compose.yaml`. If you deployed wanderer on bare-metal you can change the environment variables in the launch script. - -## Common -These variables are shared between all three services. - -| Environment Variable | Description | Default | -| -------------------- | ---------------------------------------------------------------- | ------------------------------------------- | -| MEILI_URL | IP or hostname (including the port) of your meilisearch instance | http://search:7700 | -| MEILI_MASTER_KEY | Master API key for your meilisearch instance | vODkljPcfFANYNepCHyDyGjzAMPcdHnrb6X5KyXQPWo | - -## Meilisearch -Since we use an unmodified installation of meilisearch you can use all variables listed in meilisearch's documentation. You can find a full list over [here](https://www.meilisearch.com/docs/learn/configuration/instance_options). - -| Environment Variable | Description | Default | -| -------------------- | ----------------------------- | ------- | -| MEILI_NO_ANALYTICS | Disable meilisearch telemetry | true | - -## Pocketbase -| Environment Variable | Description | Default | -| ----------------------------- | ----------------------------------------------------------------------------------- | --------- | -| POCKETBASE_ENCRYPTION_KEY | Valid 32 character AES key. Used to encrypt secrets | | -| POCKETBASE_CRON_SYNC_SCHEDULE | Valid cron expression. Sets how often trails are synced from 3rd party integrations | 0 2 * * * | -| POCKETBASE_SMTP_ENABLED | Enables or disables SMTP functionality. Accepted values are true or false | false | -| POCKETBASE_SMTP_SENDER_ADRESS | The email address used as the "From" address in outgoing emails | | -| POCKETBASE_SMTP_SENDER_NAME | The display name shown as the sender in outgoing emails | | -| POCKETBASE_SMTP_HOST | The hostname or IP address of the SMTP server | | -| POCKETBASE_SMTP_PORT | The port number used to connect to the SMTP server | | -| POCKETBASE_SMTP_USERNAME | The username used to authenticate with the SMTP server | | -| POCKETBASE_SMTP_PASSWORD | The password used to authenticate with the SMTP server | | - -## Frontend - -| Environment Variable | Description | Default | -| --------------------- | -------------------------------------------------------------------- | ----------------------------------- | -| ORIGIN | Public IP or hostname (including the port) of your wanderer instance | http://localhost:3000 | -| BODY_SIZE_LIMIT | Maximum allowed upload size | Infinity | -| PUBLIC_POCKETBASE_URL | IP or hostname (including the port) of your pocketbase instance | http://db:8090 | -| PUBLIC_DISABLE_SIGNUP | Disables signup option for new users | false | -| PUBLIC_VALHALLA_URL | Public IP or hostname (including the port) of a valhalla instance | https://valhalla1.openstreetmap.de | -| PUBLIC_NOMINATIM_URL | Public IP or hostname (including the port) of a nominatim instance | https://nominatim.openstreetmap.org | -| UPLOAD_FOLDER | Folder from which wanderer auto-uploads trails | /app/uploads | -| UPLOAD_USER | Username for the account with which wanderer auto-uploads trails | | -| UPLOAD_PASSWORD | Password for the account with which wanderer auto-uploads trails | | diff --git a/docs/src/content/docs/getting-started/installation.mdx b/docs/src/content/docs/getting-started/installation.mdx deleted file mode 100644 index fe38458c..00000000 --- a/docs/src/content/docs/getting-started/installation.mdx +++ /dev/null @@ -1,192 +0,0 @@ ---- -title: Installation -description: Detailed installation instructions for docker and bare-metal ---- -import { version } from '../../../../package.json'; - -wanderer consists of three components: -1. the frontend written with [SvelteKit](https://github.com/sveltejs/kit) -2. the backend, a custom [PocketBase](https://github.com/pocketbase/pocketbase) fork -3. the index, a standard [meilisearch](https://github.com/meilisearch/meilisearch) application - -You can install these components in two ways. - -## Docker - -This is the easiest and most convenient way to install wanderer. After cloning the repository you will find a [docker-compose.yml](https://github.com/Flomp/wanderer/blob/main/docker-compose.yml) file in the root directory that will install and run all necessary components by running `docker compose up -d`. - -:::note -If you are not hosting wanderer at `http://localhost:3000` make sure to change `ORIGIN` environment variable to `http(s)://:`. Otherwise you will run into CORS errors. -::: - -```yml -version: '3' - -x-common-env: &cenv - MEILI_URL: http://search:7700 - MEILI_MASTER_KEY: vODkljPcfFANYNepCHyDyGjzAMPcdHnrb6X5KyXQPWo - -services: - search: - container_name: wanderer-search - image: getmeili/meilisearch:v1.11.3 - environment: - <<: *cenv - MEILI_NO_ANALYTICS: true - ports: - - 7700:7700 - networks: - - wanderer - volumes: - - ./data/data.ms:/meili_data/data.ms - restart: unless-stopped - healthcheck: - test: curl --fail http://localhost:7700/health || exit 1 - interval: 15s - retries: 10 - start_period: 20s - timeout: 10s - db: - container_name: wanderer-db - image: flomp/wanderer-db - depends_on: - search: - condition: service_healthy - environment: - <<: *cenv - ports: - - "8090:8090" - networks: - - wanderer - restart: unless-stopped - volumes: - - ./data/pb_data:/pb_data - web: - container_name: wanderer-web - image: flomp/wanderer-web - depends_on: - search: - condition: service_healthy - db: - condition: service_started - environment: - <<: *cenv - ORIGIN: http://localhost:3000 - BODY_SIZE_LIMIT: Infinity - PUBLIC_POCKETBASE_URL: http://db:8090 - PUBLIC_DISABLE_SIGNUP: false - UPLOAD_FOLDER: /app/uploads - UPLOAD_USER: - UPLOAD_PASSWORD: - PUBLIC_VALHALLA_URL: https://valhalla1.openstreetmap.de - PUBLIC_NOMINATIM_URL: https://nominatim.openstreetmap.org - volumes: - - ./data/uploads:/app/uploads - ports: - - "3000:3000" - networks: - - wanderer - restart: unless-stopped - -networks: - wanderer: - driver: bridge -``` -### Networking -All three components must be on the same network for wanderer to function properly. This is the case in the default configuration shown above. However, if you run wanderer behind a proxy like traefik, please ensure all three components can communicate. -Notice that you must set the `ORIGIN` environment variable for the web service to the public IP or hostname including the port that wanderer is reachable at. Otherwise, you will see wanderer's frontend throw an `Cross-site POST form submissions are forbidden` error. - -The standard configuration makes all three services publically available by forwarding their ports. For the database and the index service this is not strictly necessary. In case you do not require direct access to them you can disable their ports in the docker-compose file. - -### Volumes -By default, wanderer uses two volumes. One for meilisearch indices and one for all PocketBase data. In the default configuration, the data is stored in volumes. However, if you prefer to use bind mounts you can simply adapt the configuration accordingly. - -### Environment -The default configuration contains all necessary environment variables. However, there are more options that allow you to modify how the backend and index operate. For more details, you can take a look at the respective section of the [documentation](/getting-started/configuration). - -:::caution -Ensure that you change the `MEILI_MASTER_KEY` to a different value if you plan to use wanderer in a production environment. -::: - -### Updating - -To update all containers to a new version simply run `docker compose pull && docker compose up -d`. Make sure to read the changelog to check for breaking changes. - -## From source - -While not recommended it is absolutely possible to install wanderer from source. - -### Prerequisites -1. git installed && git clone https://github.com/Flomp/wanderer.git --branch v{version} --single-branch -2. go >= 1.23.0 installed -3. node >= 18.17.0 installed -4. npm >= 8.15.0 installed - -### meilisearch -wanderer uses meilisearch without any further modifications. As a result, you can simply head over to [their website](https://www.meilisearch.com/docs/learn/getting_started/installation) and follow the instructions for your preferred platform. We assume that you put the binary in the `wanderer/search` directory. If you did not, adapt the launch script below accordingly. - -### PocketBase -wanderer uses a slightly modified version of the PocketBase backend framework. As a result, you will need to build the PocketBase binary first. -```bash -cd wanderer/db -go mod tidy && go build -``` -This will create a binary in the `wanderer/db` folder. Verify that it is there. - -### Web -wanderer's frontend is written in SvelteKit. We first install all dependencies and build the project. -```bash -cd wanderer/web -npm ci --omit=dev -npm run build -``` - -This will create a directory `wanderer/web/build`. Verify that it is there. - -In case vitest is not installed please do so using -```bash -npm i -s vitest -``` - -### Launch - -To launch our three services we will use a small bash script. This ensures that all necessary environment variables are set and the services are started in the correct order. All three services are executed as background tasks, but are being trapped so that terminating the bash script will also terminate all three services at once. - -:::caution -Caution: Ensure that you change the `MEILI_MASTER_KEY` to a different value if you plan to use wanderer in a production environment. -::: - -```bash -trap "kill 0" EXIT - -# learn more about the configuration: -# https://wanderer.to/getting-started/configuration/ -# required -export ORIGIN=http://localhost:3000 -export MEILI_URL=http://127.0.0.1:7700 -export MEILI_MASTER_KEY=YOU_SHOULD_DEFINITELY_CHANGE_ME -export PUBLIC_POCKETBASE_URL=http://127.0.0.1:8090 -export PUBLIC_VALHALLA_URL=https://valhalla1.openstreetmap.de - -# optional -# export MEILI_NO_ANALYTICS=true -# export BODY_SIZE_LIMIT=Infinity -# export PUBLIC_DISABLE_SIGNUP=false -# export UPLOAD_FOLDER=/app/uploads -# export UPLOAD_USER= -# export UPLOAD_PASSWORD= - -cd search && ./meilisearch --master-key $MEILI_MASTER_KEY & -cd db && ./pocketbase serve & -cd web && node build & - -wait -``` - -### Updating - -To update wanderer to the newest version simply run `git pull origin main` and run the launch script. Make sure to read the changelog to check for breaking changes. - -## Verify the installation -No matter which installation method you chose, you should now be able to access wanderer on localhost:3000. - diff --git a/docs/src/content/docs/guides/authentication.md b/docs/src/content/docs/guides/authentication.md deleted file mode 100644 index 7ac8e461..00000000 --- a/docs/src/content/docs/guides/authentication.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Authentication -description: Authentication with email/password and OAuth ---- - -For the majority of wanderer's features you need an account to interact with them. - -## Email/Username & Password - -The quickest way to create an account is by heading over to `/register` and entering a username, a valid email address, and a password of your choice. -After registering you will be redirected to the homepage and can start creating your first trail. - -:::note -The username must be at least 3 characters long, the password at least 8. -::: - -## OAuth2 - -Alternatively, wanderer supports authenticating via OAuth2. The following providers are supported: - -- GitHub -- Apple -- Google -- Microsoft -- Yandex -- Facebook -- Instagram -- GitLab -- Bitbucket -- Gitee -- Gitea -- Discord -- Twitter -- Kakao -- VK -- Spotify -- Twitch -- Patreon (v2) -- Strava -- LiveChat -- mailcow -- OpenID Connect - -### Prerequisites - -To set up OAuth support you will need to access the PocketBase backend. Make sure to forward port 8090 of the `wanderer-db` container. Access the PocketBase admin panel in your browser at `http://:8090/_/` and create an admin account. - -### Create an OAuth app - -This step will vary wildly from provider to provider. Please refer to your provider's documentation for the specific steps. - -No matter your provider, you will need a redirect URL. This redirect URL must have the following format: `$ORIGIN/login/redirect`. `$ORIGIN` refers to the `ORIGIN` environment variable that defines the public host at which your wanderer instance can be reached. So for the default installation, the redirect URL is `http://localhost:3000/login/redirect`. - -In any case, once you have successfully created your OAuth app you will receive a Client ID and a Client Secret. - -### Enable a provider in PocketBase -![Pocketbase OAuth](../../../assets/guides/pocketbase_oauth.png) - -In the PocketBase admin panel navigate to the `users` table. Click the gear icon at the top to open the table's settings and navigate to `Options`. In the tab `OAuth2`, add your provider and fill in the Client ID and Client Secret from the step before and save your changes. - -### Login using OAuth -![wanderer OAuth](../../../assets/guides/wanderer_oauth.png) - -That's it! You should now see your OAuth provider appear in wanderer's login form. Click the button, authorize wanderer, and wait for the authentication to finish. You are now logged in and can use wanderer like any other user. - -## Forgot your password? -wanderer offers the option to send password reset emails in case a user forgets his password. - -### Prerequisites - -To set up password reset emails you will need to access the PocketBase backend. Make sure to forward port 8090 of the `wanderer-db` container. Access the PocketBase admin panel in your browser at `http://:8090/_/` and create an admin account. - -### Configure SMTP settings - -![Pocketbase Mail Settings](../../../assets/guides/pocketbase_mail_settings.png) - -Next in the pocketbase admin panel go to Settings -> Mail settings an enable "Use SMTP mail server". Enter the details of your SMTP server and send a test email to ensure your configuration is correct. On the same page you can also adjust the email template of the password reset email. - -Alternatively, you can set these options via the respective [environment variables](/getting-started/configuration/#pocketbase). - -### Request password reset -Once the SMTP access is configured, users can click the "Forgot password" link in the login form. After requesting the reset the user will receive an email with a unique link to reset their password. \ No newline at end of file diff --git a/docs/src/content/docs/guides/create-a-trail.md b/docs/src/content/docs/guides/create-a-trail.md deleted file mode 100644 index c9c7a37c..00000000 --- a/docs/src/content/docs/guides/create-a-trail.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Create a trail -description: How to create a trail by uploading or drawing a trail using Valhalla ---- - -## What is a trail? - -In wanderer a trail is an object that contains both GPS data and various kinds of metadata (like a description, photos, waypoints etc.) that make it easily searchable. - -## Create a trail -To create a new trail click the button in the top right corner. - -### Provide a route -A route is the GPS data of a trail. There are two main ways that a user can provide a route. - -#### Upload a file - -Click the `Upload file` button and choose a file. The file must be either in GPX, FIT, TCX, or KML format. Once you have selected a file you will see a couple of things happen: -- the map will display and focus on your track. -- the elevation profile and speed charts (if your file contains that information) will be updated accordingly. -- in the left-hand panel information like the trail name, location, and distance will be displayed. - -#### Draw a route - -Instead of clicking the `Upload file` button, you can also click the `Draw a route` button. This will activate the drawing mode. Notice that your cursor is now a cross when hovering over the map. Clicking on the map in drawing mode will create a new waypoint. You can drag and drop it anywhere on the map to update its position. To delete it, click first on the waypoint and then on the red trashcan icon. Creating a second waypoint will create a route between it and the previous one. - -![Valhalla routing](../../../assets/guides/valhalla_routing.png) - -By default, wanderer uses the [valhalla routing engine](https://github.com/valhalla/valhalla) to calculate the route between the two points. Via the menu in the top-left corner of the map, you can choose your preferred mode of transport which will influence the route calculation. If you disable auto-routing wanderer will not use `valhalla`, but instead, simply draw a straight line between the two points. - -When you are done with drawing click the `Stop drawing` button to deactivate the drawing mode. - -:::tip -wanderer uses a public, free `valhalla` server by default. The server is financed by donations. Please consider donating at [https://www.fossgis.de/verein/spenden/](https://www.fossgis.de/verein/spenden/). -::: - -### Basic Info - -Most of the data in this section should be self-explanatory. The only required field is the name: every trail needs a name. If you created your route by uploading a file, wanderer tries to infer most of the information directly from the file. However, you are of course free to edit this information afterwards. -Toggling the public switch to on will make the trail visible for everyone even visitors who are not logged in. - -### Waypoints - -Waypoints mark points of interest along the route. A trail can have as many waypoints as you like. Click the `+ Add Waypoint` button to start. By default, a waypoint will be positioned in the center of the map. You can change the position either directly by entering a new latitude and longitude or simply moving the waypoint around on the map after saving it first. - -Additionally, a waypoint has an icon that is displayed in the map marker. wanderer uses fontawsome icons, so any icon from this [list](https://fontawesome.com/search?q=share&o=r&m=free) is available. If you wish, you can also add photos to the waypoint to make it event more recognizable. - -### Photos - -You can also add photos to the trail itself. If you add more than one photo you can choose which one should be used as the thumbnail. It will be featured in the trail overview. - -### Summit book - -If you do the same trail multiple times but do not want to create a new trail every time, you can simply make a new entry in the summit book to log the completion of the trail. By default a new summit log entry is created automatically when you upload a fail containing GPS data in the trail creation process. For subsequent entries to the summit book you can provide an individual file containing your route data for this particular completion of the trail. - -## Save the trail - -Once you are done creating your trail simply click the button. This will save your trail to the database and create a new index entry to make ensure that you will find your trail in the future. diff --git a/docs/src/content/docs/guides/custom-categories.md b/docs/src/content/docs/guides/custom-categories.md deleted file mode 100644 index 0aaac9b4..00000000 --- a/docs/src/content/docs/guides/custom-categories.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Custom categories -description: How to create custom trail categories ---- - -wanderer uses categories to classify what kind of activity a trail belongs to. Out of the box you get: Biking, Canoeing, Climbing, Hiking, Skiing and Walking. However, you can adapt these categories to your needs or add completely new ones. - -## Backend access - -First, you need access to the PocketBase backend. If you are using docker make sure to forward the internal port 8090 to a public port. With the default configuration, the PocketBase admin panel is available at `http://localhost:8090/_/`. If this is your first time visiting the panel you will need to create an admin account. -To create backend access navigate to your docker-compose.yaml file and type: -``` -docker compose exec -it db /pocketbase superuser upsert email@example.com myverysecurepassword -``` -Now, you will have access with the user "email@example.com" and the password "myverysecurepassword" to all tables in the backend and can modify the underlying data directly. - -## Modifying categories - -![Pocketbase Categories](../../../assets/guides/pocketbase_categories.png) - -In the PocketBase admin panel, click on the `categories` table in the list on the left side. All existing categories will be listed here. To edit one simply click on the row, edit the data you want to change, and click "Save". To delete a category check the box at the beginning of the row and click "Delete selected". To create a new category click the "New record" button in the top right corner, give your new category a name and a background image, and click "Save". diff --git a/docs/src/content/docs/guides/integrations.md b/docs/src/content/docs/guides/integrations.md deleted file mode 100644 index 63533905..00000000 --- a/docs/src/content/docs/guides/integrations.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Integrations -description: How to set up third-party integrations with wanderer. ---- - -You can automatically sync trails to wanderer at regular intervals using the third-party integration feature. Currently, we support two providers: **strava** and **komoot**. - -It is important to note that synchronization only works from the provider to wanderer and not the other way around. Additionally, if a trail has already been synced to wanderer, subsequent changes made in the provider will not be transferred unless the trail is deleted in wanderer. - -## Prerequisites - -wanderer encrypts the credentials required to log in to either provider. To enable this encryption, you must create an encryption key and provide it via the `POCKETBASE_ENCRYPTION_KEY` [environment variable](/getting-started/configuration#pocketbase) to the `wanderer-db` container. To generate a new encryption key, run the following command: - -```bash -openssl rand -hex 16 -# Example output: ce7f0ddb97100c42e6409a8537c11e23 -``` - -:::caution -Do not share this key with anyone! -::: - -Once you have set the encryption key, restart the `wanderer-db` container and navigate to `/settings/integrations`. - -## strava Integration - -### Creating an App in strava - -Before integrating strava with wanderer, you need to create an API application in strava. Visit [strava's API settings](https://www.strava.com/settings/api) and follow the steps to create a new API application. Your setup should resemble the following: - -![strava API Application](../../../assets/guides/strava_api_app.png) - -### Setting Up the Integration - -1. Copy the **Client ID** and **Client Secret**. -2. Go to the integrations page in wanderer's settings. -3. Click the settings button for the strava integration. -4. Enter your **Client ID** and **Client Secret**. -5. Choose whether you want to sync routes, activities, or both. - -![wanderer strava Integration](../../../assets/guides/wanderer_integration_strava.png) - -6. Save the settings and toggle the integration on. -7. You will be redirected to strava's authorization page. Keep all checkboxes selected and click **Authorize**. -8. You will then be redirected back to wanderer. The strava integration is now active. - -## komoot Integration - -The komoot integration requires only your komoot username and password: - -1. Open the komoot settings from the integrations menu. -2. Enter your komoot credentials. -3. Save the settings. -4. Toggle the integration on. It will become active immediately. - -Your planned and completed trails will now sync with wanderer. - -## Sync Interval - -By default, trails are synced every night at **02:00 AM**. You can modify this schedule using the `POCKETBASE_CRON_SYNC_SCHEDULE` [environment variable](/getting-started/configuration#pocketbase). - -:::note -Please set a reasonable sync interval. Both strava and komoot impose usage limits on their APIs. Exceeding these limits may result in rejected requests or account suspension. -::: - diff --git a/docs/src/content/docs/guides/share-trails.md b/docs/src/content/docs/guides/share-trails.md deleted file mode 100644 index e6a371ae..00000000 --- a/docs/src/content/docs/guides/share-trails.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Share trails -description: How to share trails with other users ---- - -wanderer allows you to share your trails with other users. You can either publish you trail making it accessible for everyone or share it with specific users. To get started head over to `/trails` and select the trail you want to share or publish. - -## Publish a trail - -From the ⋮ menu select "Edit". In the panel on the right toggle the "Public" switch to on and save the trail. Your trail is now public and everyone can see it. Even people without an account. - - -## Share a trail - -![Share trail](../../../assets/guides/wanderer_share.gif) - -If you want to be more particular about who can see your trail you can instead share your trail. From the ⋮ menu select "Share". In the dialog, search for the user you want to share your trail with. You can now choose the permission the user should have. You can choose between "View" or "Edit". A user with "Edit" permission can change all data (including the route) of the trail. - -If you no longer want to share the trail with a user, simply click the red trashcan icon next to their name. \ No newline at end of file diff --git a/docs/src/content/docs/index.mdx b/docs/src/content/docs/index.mdx index 5db40aa4..2f9528d3 100644 --- a/docs/src/content/docs/index.mdx +++ b/docs/src/content/docs/index.mdx @@ -4,8 +4,8 @@ description: The self-hosted trail database template: splash hero: title: | - Welcome to wanderer - tagline: wanderer is a self-hosted trail database. You can upload your recorded GPS tracks or create new ones and add various metadata to build an easily searchable catalogue. + Welcome to wanderer + tagline: wanderer is a decentralized, self-hosted trail database. You can upload your recorded GPS tracks or create new ones and add various metadata to build an easily searchable catalogue. image: html: |

    - {title}: + {title}

    {description}

    diff --git a/web/src/lib/components/notification/notification_dropdown.svelte b/web/src/lib/components/notification/notification_dropdown.svelte index 74879046..3aac53b4 100644 --- a/web/src/lib/components/notification/notification_dropdown.svelte +++ b/web/src/lib/components/notification/notification_dropdown.svelte @@ -30,11 +30,9 @@ notifications.reduce((value, n) => (value += n.seen ? 0 : 1), 0), ); - onMount(() => { - if (!notifications.length && page.data.notifications?.items?.length) { - notifications = page.data.notifications.items; - } - }); + $effect(() => { + notifications = page.data.notifications.items + }) async function toggleMenu(e: MouseEvent) { e.stopPropagation(); @@ -66,7 +64,7 @@ scrollTop + clientHeight >= scrollHeight * 0.8 && pagination.page !== pagination.totalPages && !loadingNextPage - ) { + ) { await loadNextPage(); } } @@ -79,7 +77,7 @@ } pagination.page += 1; const result = await notifications_index( - { recipient: $currentUser.id }, + { recipient: $currentUser.actor }, pagination.page, ); diff --git a/web/src/lib/components/profile/activity_card.svelte b/web/src/lib/components/profile/activity_card.svelte index be178b35..5ad2a170 100644 --- a/web/src/lib/components/profile/activity_card.svelte +++ b/web/src/lib/components/profile/activity_card.svelte @@ -1,39 +1,34 @@ -

    +
    avatar
    - {#if !user.private} - {user.username} - {:else} - {user.username} - {/if} + {actor.preferred_username} {activity.type === "trail" ? $_("planned-a-trail") : $_("completed-a-trail")} @@ -74,9 +69,9 @@
    - {#each activity.photos.slice(0,3) as photo, i} + {#each activity.photos.slice(0, 3) as photo, i} {#if isVideoURL(photo)}
    diff --git a/web/src/lib/components/summit_log/summit_log_modal.svelte b/web/src/lib/components/summit_log/summit_log_modal.svelte index 99952093..7722d988 100644 --- a/web/src/lib/components/summit_log/summit_log_modal.svelte +++ b/web/src/lib/components/summit_log/summit_log_modal.svelte @@ -15,6 +15,7 @@ import PhotoPicker from "../trail/photo_picker.svelte"; import TrailPicker from "../trail/trail_picker.svelte"; import type { SummitLog } from "$lib/models/summit_log"; + import Editor from "../base/editor.svelte"; interface Props { children?: Snippet<[any]>; onsave?: (summitLog: SummitLog) => void; @@ -108,6 +109,7 @@ {#snippet children({ openModal })} @@ -134,7 +136,7 @@ showThumbnailControls={false} >
    -
    +
    {#if $data.expand} {/if}
    - + searchListPosition="fixed" + >
    diff --git a/web/src/lib/components/summit_log/summit_log_table.svelte b/web/src/lib/components/summit_log/summit_log_table.svelte index 4494485d..ae4fbfd3 100644 --- a/web/src/lib/components/summit_log/summit_log_table.svelte +++ b/web/src/lib/components/summit_log/summit_log_table.svelte @@ -10,23 +10,32 @@ import { _ } from "svelte-i18n"; import MapWithElevationMaplibre from "../trail/map_with_elevation_maplibre.svelte"; import { fetchGPX } from "$lib/stores/trail_store"; + import { currentUser } from "$lib/stores/user_store"; interface Props { summitLogs?: SummitLog[]; + handle: string; showCategory?: boolean; showTrail?: boolean; showAuthor?: boolean; showRoute?: boolean; showPhotos?: boolean; + showMenu?: boolean; + ondelete?: (summitLog: SummitLog) => void; + onedit?: (summitLog: SummitLog) => void; } let { summitLogs = [], + handle, showCategory = false, showTrail = false, showAuthor = false, showRoute = false, showPhotos = false, + showMenu = false, + ondelete, + onedit, }: Props = $props(); let mapModal: Modal; @@ -64,7 +73,7 @@ } - +
    {#if showPhotos && summitLogs.some((l) => l.photos.length)} @@ -98,12 +107,16 @@ {$_("map")} {/if} + {#if showMenu} + + {/if} {#each summitLogs as log, i} openMap(log)} ontext={(log) => openText(log)} {showCategory} @@ -113,6 +126,9 @@ summitLogs.some((l) => l.photos.length)} showDescription={summitLogs.some((l) => l.text?.length)} showRoute={showRoute && summitLogs.some((l) => l.gpx)} + showMenu={showMenu && log.author == $currentUser?.actor} + {ondelete} + {onedit} > {/each} @@ -122,7 +138,7 @@ {/if} @@ -137,17 +153,17 @@ {#snippet content()} -

    {currentText}

    +
    {@html currentText}
    {/snippet}
    diff --git a/web/src/lib/components/summit_log/summit_log_table_row.svelte b/web/src/lib/components/summit_log/summit_log_table_row.svelte index a97cd20e..b44eb589 100644 --- a/web/src/lib/components/summit_log/summit_log_table_row.svelte +++ b/web/src/lib/components/summit_log/summit_log_table_row.svelte @@ -5,38 +5,59 @@ import { formatDistance, formatElevation, + formatHTMLAsText, formatTimeHHMM, } from "$lib/util/format_util"; import { _ } from "svelte-i18n"; import PhotoGallery from "../photo_gallery.svelte"; + import Dropdown, { type DropdownItem } from "../base/dropdown.svelte"; interface Props { log: SummitLog; + handle: string; showCategory?: boolean; showTrail?: boolean; showRoute?: boolean; showAuthor?: boolean; showDescription?: boolean; showPhotos?: boolean; + showMenu?: boolean; ontext?: (summitLog: SummitLog) => void; onopen?: (summitLog: SummitLog) => void; + ondelete?: (summitLog: SummitLog) => void; + onedit?: (summitLog: SummitLog) => void; } let { log, + handle, showCategory = false, showTrail = false, showRoute = false, showAuthor = false, showDescription = false, showPhotos = false, + showMenu = false, onopen, ontext, + ondelete, + onedit, }: Props = $props(); let gallery: PhotoGallery; let imgSrc: string[] = $state([]); + + let dropdownItems: DropdownItem[] = [ + { + text: $_("edit"), + value: "edit", + }, + { + text: $_("delete"), + value: "delete", + }, + ]; $effect(() => { if (log.photos?.length) { imgSrc = log.photos @@ -65,6 +86,14 @@ showDescription, ].reduce((b, v) => (v ? b + 1 : b), 7); } + + function handleDropdownClick(item: DropdownItem): void { + if (item.value == "edit") { + onedit?.(log); + } else if (item.value == "delete") { + ondelete?.(log); + } + } @@ -130,10 +159,7 @@ {#if showCategory} {/if} {#if showTrail} @@ -141,8 +167,7 @@ @@ -154,7 +179,7 @@ >

    - {log.text} + {formatHTMLAsText(log.text)}

    {/if} @@ -164,43 +189,54 @@ {/if} - {#if showRoute && log.gpx} + {#if showRoute} + {/if} + {#if showMenu} + {/if} diff --git a/web/src/lib/components/trail/like_button.svelte b/web/src/lib/components/trail/like_button.svelte new file mode 100644 index 00000000..7eda5b49 --- /dev/null +++ b/web/src/lib/components/trail/like_button.svelte @@ -0,0 +1,112 @@ + + + + + diff --git a/web/src/lib/components/trail/map_with_elevation_maplibre.svelte b/web/src/lib/components/trail/map_with_elevation_maplibre.svelte index 1c5271ed..2708afa3 100644 --- a/web/src/lib/components/trail/map_with_elevation_maplibre.svelte +++ b/web/src/lib/components/trail/map_with_elevation_maplibre.svelte @@ -13,12 +13,10 @@ createPopupFromTrail, FontawesomeMarker, } from "$lib/util/maplibre_util"; - import { polylineToGeoJSON } from "$lib/util/polyline_util"; import type { ElevationProfileControl } from "$lib/vendor/maplibre-elevation-profile/elevationprofile-control"; import { FullscreenControl } from "$lib/vendor/maplibre-fullscreen/fullscreen-control"; import MaplibreGraticule from "$lib/vendor/maplibre-graticule/maplibre-graticule"; import { StyleSwitcherControl } from "$lib/vendor/maplibre-style-switcher/style-switcher-control"; - import { T } from "@threlte/core"; import type { Feature, FeatureCollection, GeoJSON } from "geojson"; import * as M from "maplibre-gl"; import "maplibre-gl/dist/maplibre-gl.css"; @@ -1135,6 +1133,17 @@ }); function handleKeydown(e: KeyboardEvent) { + const target = e.target as HTMLElement; + + const isInputField = + target.tagName === "INPUT" || + target.tagName === "TEXTAREA" || + target.isContentEditable; + + if (isInputField) { + return; + } + if (e.key == "m") { if (trails.length === 1) { removeCaretLayer(); @@ -1144,6 +1153,17 @@ } function handleKeyup(e: KeyboardEvent) { + const target = e.target as HTMLElement; + + const isInputField = + target.tagName === "INPUT" || + target.tagName === "TEXTAREA" || + target.isContentEditable; + + if (isInputField) { + return; + } + if (e.key == "m") { if (trails.length === 1) { addTrailLayer(trails[0], trails[0].id!, 0, data[0]); @@ -1160,7 +1180,10 @@
    -
    - {$_( - log.expand?.trails_via_summit_logs?.at(0)?.expand?.category - ?.name ?? "-", - )} + {$_(log.expand?.trail?.expand?.category?.name ?? "-")}

    - {#if !log.expand.author.private} - - avatar - - {:else} + avatar - {/if} +

    - + {#if log.gpx} + + {/if} + + + {#snippet children({ toggleMenu: openDropdown })} + + {/snippet} +