From 16bed1b8c0e817a89e1dc7337391ddad704e483d Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Sat, 2 May 2026 02:01:53 -0600 Subject: [PATCH] First pass at basic functionality. This PR introduces the beginnings of Sprint Padawan. Reviewed-on: https://git.atri.dad/atridad/sprintpadawan/pulls/1 --- .env.example | 1 + .envrc | 1 + .gitignore | 15 + Dockerfile | 21 + Makefile | 13 + README.md | 29 +- VERSION.md | 1 + api/auth.go | 89 ++ api/dashboard.go | 53 + api/rooms.go | 155 +++ api/routes.go | 32 + api/sse.go | 59 + api/stories.go | 277 +++++ api/templates.go | 121 ++ api/types.go | 233 ++++ docker-compose.yml | 9 + flake.lock | 61 + flake.nix | 39 + go.mod | 16 + go.sum | 22 + lib/db.go | 134 ++ lib/room.go | 248 ++++ lib/story.go | 189 +++ lib/user.go | 82 ++ main.go | 82 ++ static/fonts/JetBrainsMono-Medium.ttf | Bin 0 -> 112204 bytes static/fonts/JetBrainsMono-Regular.ttf | Bin 0 -> 112172 bytes static/fonts/Outfit-Bold.ttf | Bin 0 -> 48340 bytes static/fonts/Outfit-Medium.ttf | Bin 0 -> 47800 bytes static/fonts/Outfit-SemiBold.ttf | Bin 0 -> 48456 bytes static/fonts/PlusJakartaSans-Bold.ttf | Bin 0 -> 63336 bytes static/fonts/PlusJakartaSans-Medium.ttf | Bin 0 -> 63404 bytes static/fonts/PlusJakartaSans-Regular.ttf | Bin 0 -> 63336 bytes static/fonts/PlusJakartaSans-SemiBold.ttf | Bin 0 -> 63412 bytes static/fonts/fonts.css | 63 + static/img/favicon.ico | Bin 0 -> 15406 bytes static/img/logo.png | Bin 0 -> 8760 bytes static/img/logo.webp | Bin 0 -> 13586 bytes static/js/htmx.min.js | 1 + static/js/sse.js | 290 +++++ static/styles/main.css | 1364 +++++++++++++++++++++ templates/index.html | 120 ++ templates/layouts.html | 85 ++ templates/login.html | 74 ++ templates/register.html | 91 ++ templates/room.html | 98 ++ templates/room_form.html | 31 + templates/room_partials.html | 316 +++++ templates/story_edit.html | 34 + templates/story_form.html | 34 + templates/vote_form.html | 15 + 51 files changed, 4597 insertions(+), 1 deletion(-) create mode 100644 .env.example create mode 100644 .envrc create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 VERSION.md create mode 100644 api/auth.go create mode 100644 api/dashboard.go create mode 100644 api/rooms.go create mode 100644 api/routes.go create mode 100644 api/sse.go create mode 100644 api/stories.go create mode 100644 api/templates.go create mode 100644 api/types.go create mode 100644 docker-compose.yml create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 go.mod create mode 100644 go.sum create mode 100644 lib/db.go create mode 100644 lib/room.go create mode 100644 lib/story.go create mode 100644 lib/user.go create mode 100644 main.go create mode 100644 static/fonts/JetBrainsMono-Medium.ttf create mode 100644 static/fonts/JetBrainsMono-Regular.ttf create mode 100644 static/fonts/Outfit-Bold.ttf create mode 100644 static/fonts/Outfit-Medium.ttf create mode 100644 static/fonts/Outfit-SemiBold.ttf create mode 100644 static/fonts/PlusJakartaSans-Bold.ttf create mode 100644 static/fonts/PlusJakartaSans-Medium.ttf create mode 100644 static/fonts/PlusJakartaSans-Regular.ttf create mode 100644 static/fonts/PlusJakartaSans-SemiBold.ttf create mode 100644 static/fonts/fonts.css create mode 100644 static/img/favicon.ico create mode 100644 static/img/logo.png create mode 100644 static/img/logo.webp create mode 100644 static/js/htmx.min.js create mode 100644 static/js/sse.js create mode 100644 static/styles/main.css create mode 100644 templates/index.html create mode 100644 templates/layouts.html create mode 100644 templates/login.html create mode 100644 templates/register.html create mode 100644 templates/room.html create mode 100644 templates/room_form.html create mode 100644 templates/room_partials.html create mode 100644 templates/story_edit.html create mode 100644 templates/story_form.html create mode 100644 templates/vote_form.html diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..24cbd50 --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +ROOT_DIR=./data diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d5beae2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# binary +sprintpadawan +server +main + +# db +app.db +app.db-wal + +# env +.env + +# os +.DS_Store +.direnv/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..36a3ea1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +# Build stage +FROM golang:alpine AS builder +RUN apk add --no-cache build-base +WORKDIR /app +COPY go.mod go.sum ./ +RUN go mod download +COPY . . +RUN CGO_ENABLED=1 GOOS=linux go build -o sprintpadawan main.go + +# Runtime stage +FROM alpine:latest +RUN apk --no-cache add ca-certificates tzdata +WORKDIR /app + +ENV ROOT_DIR=/data +RUN mkdir -p /data + +COPY --from=builder /app/sprintpadawan . + +EXPOSE 8080 +CMD ["./sprintpadawan"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2dffd08 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +.PHONY: dev build clean + +# Run the development server +dev: + go run main.go + +# Build the standalone binary +build: + go build -o sprintpadawan main.go + +# Clean the compiled binary +clean: + rm -f sprintpadawan diff --git a/README.md b/README.md index 6d4f7fe..0daf4c1 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,29 @@ -# sprintpadawan +# SprintPadawan +A lightweight real-time sprint planning tool. Built with Go, HTMX, and Turso (The FOSS DB, not the platform). + +## Development + +This project uses Go 1.26. If you use Nix, a flake is provided to set up the environment. You can load it with `nix develop` or `direnv allow`. + +Available Make commands: +* `make dev`: Runs the development server. +* `make build`: Compiles everything into a single binary. +* `make clean`: Removes the binary. + +When running locally without Docker, the application will create an `app.db` SQLite database file in your current working directory. + +## Docker + +The project includes a Docker setup for those who use it. + +1. Create a `.env` file in the project root. +2. Set the `ROOT_DIR` variable to the directory on your host machine where you want the database to be saved. + +Example `.env`: +ROOT_DIR=/home/user/sprintpadawan_data + +3. Start the container: +docker compose up -d + +The Docker container maps your host `ROOT_DIR` to `/data` inside the container. Sprint Padawan is permanently configured to write its database to `/data` when running in Docker. diff --git a/VERSION.md b/VERSION.md new file mode 100644 index 0000000..0ea3a94 --- /dev/null +++ b/VERSION.md @@ -0,0 +1 @@ +0.2.0 diff --git a/api/auth.go b/api/auth.go new file mode 100644 index 0000000..c6ad2a1 --- /dev/null +++ b/api/auth.go @@ -0,0 +1,89 @@ +package api + +import ( + "log" + "net/http" + "time" + + "sprintpadawan/lib" +) + +func handleLogin(w http.ResponseWriter, r *http.Request) { + if r.Method == http.MethodGet { + if isLoggedIn(r) { + http.Redirect(w, r, "/", http.StatusSeeOther) + return + } + renderTemplate(w, "login.html", nil) + return + } + + username := r.FormValue("username") + password := r.FormValue("password") + + user, err := lib.GetUserByUsername(username) + if err != nil || !lib.CheckPasswordHash(password, user.PasswordHash) { + renderTemplate(w, "login.html", map[string]string{"Error": "Invalid credentials"}) + return + } + + sessionID, err := lib.CreateSession(user.ID) + if err != nil { + http.Error(w, "failed to create session", http.StatusInternalServerError) + return + } + http.SetCookie(w, &http.Cookie{ + Name: "session_token", + Value: sessionID, + Expires: time.Now().Add(24 * time.Hour), + HttpOnly: true, + SameSite: http.SameSiteLaxMode, + Path: "/", + }) + + http.Redirect(w, r, "/", http.StatusSeeOther) +} + +func handleRegister(w http.ResponseWriter, r *http.Request) { + if r.Method == http.MethodGet { + if isLoggedIn(r) { + http.Redirect(w, r, "/", http.StatusSeeOther) + return + } + renderTemplate(w, "register.html", nil) + return + } + + username := r.FormValue("username") + password := r.FormValue("password") + confirm := r.FormValue("confirm_password") + + if password != confirm { + renderTemplate(w, "register.html", map[string]string{"Error": "Passwords do not match"}) + return + } + + if err := lib.CreateUser(username, password); err != nil { + renderTemplate(w, "register.html", map[string]string{"Error": "Username taken"}) + return + } + + http.Redirect(w, r, "/login", http.StatusSeeOther) +} + +func handleLogout(w http.ResponseWriter, r *http.Request) { + cookie, err := r.Cookie("session_token") + if err == nil { + if err := lib.DeleteSession(cookie.Value); err != nil { + log.Printf("delete session error: %v", err) + } + } + http.SetCookie(w, &http.Cookie{ + Name: "session_token", + Value: "", + Expires: time.Now().Add(-1 * time.Hour), + SameSite: http.SameSiteLaxMode, + Path: "/", + }) + http.Redirect(w, r, "/login", http.StatusSeeOther) +} diff --git a/api/dashboard.go b/api/dashboard.go new file mode 100644 index 0000000..191fe72 --- /dev/null +++ b/api/dashboard.go @@ -0,0 +1,53 @@ +package api + +import ( + "log" + "net/http" + + "sprintpadawan/lib" +) + +type RoomView struct { + ID int + Name string + Code string + Scale string + IsOwner bool + MemberCount int +} + +func handleIndex(w http.ResponseWriter, r *http.Request) { + if r.URL.Path != "/" { + http.NotFound(w, r) + return + } + + user := r.Context().Value(userKey).(*lib.User) + rooms, err := lib.GetRoomSummariesForUser(user.ID) + if err != nil { + http.Error(w, "failed to load rooms", http.StatusInternalServerError) + return + } + data := struct { + *lib.User + Rooms []RoomView + }{ + User: user, + } + + for _, room := range rooms { + data.Rooms = append(data.Rooms, RoomView{ + ID: room.ID, + Name: room.Name, + Code: room.Code, + Scale: room.Scale, + IsOwner: room.OwnerID == user.ID, + MemberCount: room.MemberCount, + }) + } + + if err := templates.ExecuteTemplate(w, "index.html", data); err != nil { + log.Printf("template error: %v", err) + http.Error(w, "internal server error", http.StatusInternalServerError) + } +} diff --git a/api/rooms.go b/api/rooms.go new file mode 100644 index 0000000..59607f4 --- /dev/null +++ b/api/rooms.go @@ -0,0 +1,155 @@ +package api + +import ( + "fmt" + "log" + "net/http" + + "sprintpadawan/lib" +) + +func handleNewRoom(w http.ResponseWriter, r *http.Request) { + if err := templates.ExecuteTemplate(w, "room_form.html", nil); err != nil { + log.Printf("template error: %v", err) + } +} + +func handleCreateRoom(w http.ResponseWriter, r *http.Request) { + user := r.Context().Value(userKey).(*lib.User) + name := r.FormValue("name") + scale := r.FormValue("scale") + room, err := lib.CreateRoom(name, user.ID, scale) + if err != nil { + log.Printf("create room error: %v", err) + http.Error(w, "failed to create room", http.StatusInternalServerError) + return + } + http.Redirect(w, r, fmt.Sprintf("/rooms/%d", room.ID), http.StatusSeeOther) +} + +func handleJoinRoom(w http.ResponseWriter, r *http.Request) { + user := r.Context().Value(userKey).(*lib.User) + code := r.FormValue("code") + room, err := lib.GetRoomByCode(code) + if err != nil { + http.Error(w, "room not found", http.StatusNotFound) + return + } + if err := lib.AddUserToRoom(room.ID, user.ID); err != nil { + http.Error(w, "failed to join room", http.StatusInternalServerError) + return + } + http.Redirect(w, r, fmt.Sprintf("/rooms/%d", room.ID), http.StatusSeeOther) +} + +func handleRoom(w http.ResponseWriter, r *http.Request) { + roomID, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user := r.Context().Value(userKey).(*lib.User) + room, err := lib.GetRoomByID(roomID) + if err != nil { + http.NotFound(w, r) + return + } + if err := lib.AddUserToRoom(room.ID, user.ID); err != nil { + http.Error(w, "failed to join room", http.StatusInternalServerError) + return + } + + data, err := buildRoomData(room, user) + if err != nil { + http.Error(w, "failed to load room data", http.StatusInternalServerError) + return + } + renderTemplate(w, "room.html", data) +} + +func handlePartialStories(w http.ResponseWriter, r *http.Request) { + roomID, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user := r.Context().Value(userKey).(*lib.User) + renderRoomStories(w, roomID, user) +} + +func handlePartialMembers(w http.ResponseWriter, r *http.Request) { + roomID, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user := r.Context().Value(userKey).(*lib.User) + renderRoomMembers(w, roomID, user) +} + +func handlePartialVoteArea(w http.ResponseWriter, r *http.Request) { + roomID, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user := r.Context().Value(userKey).(*lib.User) + room, err := lib.GetRoomByID(roomID) + if err != nil { + http.Error(w, "room not found", http.StatusNotFound) + return + } + if room.ActiveStoryID == nil { + w.WriteHeader(http.StatusNoContent) + return + } + + story, err := lib.GetStoryByID(*room.ActiveStoryID) + if err != nil { + http.Error(w, "story not found", http.StatusNotFound) + return + } + + roomData, err := buildRoomData(room, user) + if err != nil { + http.Error(w, "failed to load room data", http.StatusInternalServerError) + return + } + data := struct { + RoomData RoomData + Story lib.Story + }{ + RoomData: roomData, + Story: *story, + } + renderTemplate(w, "vote-area", data) +} + +func handleDeleteRoom(w http.ResponseWriter, r *http.Request) { + roomID, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user := r.Context().Value(userKey).(*lib.User) + + room, err := lib.GetRoomByID(roomID) + if err != nil { + http.Error(w, "room not found", http.StatusNotFound) + return + } + + if room.OwnerID != user.ID { + http.Error(w, "unauthorized", http.StatusUnauthorized) + return + } + + err = lib.DeleteRoom(roomID) + if err != nil { + log.Printf("delete room error: %v", err) + http.Error(w, "failed to delete room", http.StatusInternalServerError) + return + } + + w.WriteHeader(http.StatusOK) +} diff --git a/api/routes.go b/api/routes.go new file mode 100644 index 0000000..cb308bd --- /dev/null +++ b/api/routes.go @@ -0,0 +1,32 @@ +package api + +import "net/http" + +func SetupRoutes(mux *http.ServeMux) { + mux.HandleFunc("/login", handleLogin) + mux.HandleFunc("/register", handleRegister) + mux.HandleFunc("/logout", handleLogout) + + mux.HandleFunc("/", requireAuth(handleIndex)) + mux.HandleFunc("/rooms/new", requireAuth(handleNewRoom)) + mux.HandleFunc("/rooms/create", requireAuth(handleCreateRoom)) + mux.HandleFunc("/rooms/join", requireAuth(handleJoinRoom)) + mux.HandleFunc("/rooms/{id}", requireAuth(handleRoom)) + mux.HandleFunc("/rooms/{id}/delete", requireAuth(handleDeleteRoom)) + + mux.HandleFunc("/rooms/{id}/partial/stories", requireAuth(handlePartialStories)) + mux.HandleFunc("/rooms/{id}/partial/members", requireAuth(handlePartialMembers)) + mux.HandleFunc("/rooms/{id}/partial/vote-area", requireAuth(handlePartialVoteArea)) + + mux.HandleFunc("/rooms/{id}/stories/new", requireAuth(handleNewStoryForm)) + mux.HandleFunc("/rooms/{id}/stories", requireAuth(handleAddStory)) + mux.HandleFunc("/rooms/{id}/active", requireAuth(handleSetActiveStory)) + mux.HandleFunc("/rooms/{id}/vote", requireAuth(handleVote)) + mux.HandleFunc("/rooms/{id}/reveal", requireAuth(handleReveal)) + mux.HandleFunc("/rooms/{id}/stories/{story_id}/edit", requireAuth(handleEditStoryForm)) + mux.HandleFunc("/rooms/{id}/stories/{story_id}/rename", requireAuth(handleRenameStory)) + mux.HandleFunc("/rooms/{id}/stories/{story_id}/delete", requireAuth(handleDeleteStory)) + mux.HandleFunc("/rooms/{id}/stories/{story_id}/reset", requireAuth(handleResetStory)) + mux.HandleFunc("/rooms/{id}/stories/{story_id}/unreveal", requireAuth(handleUnrevealStory)) + mux.HandleFunc("/sse/{room_id}", requireAuth(handleSSE)) +} diff --git a/api/sse.go b/api/sse.go new file mode 100644 index 0000000..26f8fef --- /dev/null +++ b/api/sse.go @@ -0,0 +1,59 @@ +package api + +import ( + "fmt" + "net/http" + "time" + + "sprintpadawan/lib" +) + +func handleSSE(w http.ResponseWriter, r *http.Request) { + roomID, err := getPathInt(r, "room_id") + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user, ok := r.Context().Value(userKey).(*lib.User) + if !ok { + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return + } + + w.Header().Set("Content-Type", "text/event-stream") + w.Header().Set("Cache-Control", "no-cache") + w.Header().Set("Connection", "keep-alive") + w.Header().Set("X-Accel-Buffering", "no") + + flusher, ok := w.(http.Flusher) + if !ok { + http.Error(w, "streaming unsupported", http.StatusInternalServerError) + return + } + + ch := make(chan string, 10) + addSSEClient(roomID, user.ID, ch) + broadcast(roomID, "members") + + notify := r.Context().Done() + heartbeat := time.NewTicker(25 * time.Second) + defer heartbeat.Stop() + + fmt.Fprint(w, ": connected\n\n") + flusher.Flush() + + for { + select { + case <-notify: + removeSSEClient(roomID, ch) + broadcast(roomID, "members") + return + case <-heartbeat.C: + fmt.Fprint(w, ": keep-alive\n\n") + flusher.Flush() + case event := <-ch: + fmt.Fprintf(w, "event: %s\ndata: true\n\n", event) + flusher.Flush() + } + } +} diff --git a/api/stories.go b/api/stories.go new file mode 100644 index 0000000..d5471cb --- /dev/null +++ b/api/stories.go @@ -0,0 +1,277 @@ +package api + +import ( + "fmt" + "log" + "net/http" + + "sprintpadawan/lib" +) + +func handleNewStoryForm(w http.ResponseWriter, r *http.Request) { + roomID, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + room, err := lib.GetRoomByID(roomID) + if err != nil { + http.Error(w, "room not found", http.StatusNotFound) + return + } + renderTemplate(w, "story_form.html", room) +} + +func handleAddStory(w http.ResponseWriter, r *http.Request) { + id, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user := r.Context().Value(userKey).(*lib.User) + title := r.FormValue("title") + if _, err := lib.CreateStory(id, title); err != nil { + log.Printf("create story error: %v", err) + http.Error(w, "failed to create story", http.StatusInternalServerError) + return + } + broadcast(id, "stories") + if isHTMX(r) { + renderRoomStories(w, id, user) + return + } + http.Redirect(w, r, fmt.Sprintf("/rooms/%d", id), http.StatusSeeOther) +} + +func handleSetActiveStory(w http.ResponseWriter, r *http.Request) { + id, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user := r.Context().Value(userKey).(*lib.User) + sid, err := getFormInt(r, "story_id") + if err != nil { + http.Error(w, "invalid story id", http.StatusBadRequest) + return + } + + if err := lib.SetActiveStory(id, sid); err != nil { + http.Error(w, "failed to set active story", http.StatusInternalServerError) + return + } + + broadcast(id, "stories") + broadcast(id, "members") + if isHTMX(r) { + renderRoomStories(w, id, user) + return + } + http.Redirect(w, r, fmt.Sprintf("/rooms/%d", id), http.StatusSeeOther) +} + +func handleResetStory(w http.ResponseWriter, r *http.Request) { + id, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user := r.Context().Value(userKey).(*lib.User) + sid, err := getPathInt(r, "story_id") + if err != nil { + http.Error(w, "invalid story id", http.StatusBadRequest) + return + } + + if err := lib.UnrevealStory(sid); err != nil { + http.Error(w, "failed to reset story", http.StatusInternalServerError) + return + } + if err := lib.ClearVotesForStory(sid); err != nil { + http.Error(w, "failed to clear votes", http.StatusInternalServerError) + return + } + + broadcast(id, "stories") + broadcast(id, "members") + if isHTMX(r) { + renderRoomStories(w, id, user) + return + } + http.Redirect(w, r, fmt.Sprintf("/rooms/%d", id), http.StatusSeeOther) +} + +func handleVote(w http.ResponseWriter, r *http.Request) { + id, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user := r.Context().Value(userKey).(*lib.User) + value := r.FormValue("value") + sid, err := getFormInt(r, "story_id") + if err != nil { + http.Error(w, "invalid story id", http.StatusBadRequest) + return + } + + if err := lib.VoteOnStory(sid, user.ID, value); err != nil { + http.Error(w, "failed to vote", http.StatusInternalServerError) + return + } + broadcast(id, "members") + story, storyErr := lib.GetStoryByID(sid) + if storyErr == nil && story.Voted { + broadcast(id, "stories") + } + + if isHTMX(r) { + if storyErr != nil { + http.Error(w, "story not found", http.StatusNotFound) + return + } + room, err := lib.GetRoomByID(id) + if err != nil { + http.Error(w, "room not found", http.StatusNotFound) + return + } + tmplData := struct { + RoomID int + Story lib.Story + Scale string + UserVote string + }{ + RoomID: id, + Story: *story, + Scale: room.Scale, + UserVote: value, + } + renderTemplate(w, "vote_form.html", tmplData) + return + } + + http.Redirect(w, r, fmt.Sprintf("/rooms/%d", id), http.StatusSeeOther) +} + +func handleReveal(w http.ResponseWriter, r *http.Request) { + id, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user := r.Context().Value(userKey).(*lib.User) + sid, err := getFormInt(r, "story_id") + if err != nil { + http.Error(w, "invalid story id", http.StatusBadRequest) + return + } + if err := lib.RevealVotes(sid); err != nil { + http.Error(w, "failed to reveal votes", http.StatusInternalServerError) + return + } + broadcast(id, "stories") + if isHTMX(r) { + renderRoomStories(w, id, user) + return + } + http.Redirect(w, r, fmt.Sprintf("/rooms/%d", id), http.StatusSeeOther) +} + +func handleUnrevealStory(w http.ResponseWriter, r *http.Request) { + id, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user := r.Context().Value(userKey).(*lib.User) + sid, err := getPathInt(r, "story_id") + if err != nil { + http.Error(w, "invalid story id", http.StatusBadRequest) + return + } + if err := lib.UnrevealStory(sid); err != nil { + http.Error(w, "failed to hide votes", http.StatusInternalServerError) + return + } + broadcast(id, "stories") + if isHTMX(r) { + renderRoomStories(w, id, user) + return + } + http.Redirect(w, r, fmt.Sprintf("/rooms/%d", id), http.StatusSeeOther) +} + +func handleEditStoryForm(w http.ResponseWriter, r *http.Request) { + roomID, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + storyID, err := getPathInt(r, "story_id") + if err != nil { + http.Error(w, "invalid story id", http.StatusBadRequest) + return + } + story, err := lib.GetStoryByID(storyID) + if err != nil { + http.Error(w, "story not found", http.StatusNotFound) + return + } + data := struct { + RoomID int + Story lib.Story + }{ + RoomID: roomID, + Story: *story, + } + renderTemplate(w, "story_edit.html", data) +} + +func handleRenameStory(w http.ResponseWriter, r *http.Request) { + id, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user := r.Context().Value(userKey).(*lib.User) + sid, err := getPathInt(r, "story_id") + if err != nil { + http.Error(w, "invalid story id", http.StatusBadRequest) + return + } + title := r.FormValue("title") + if err := lib.RenameStory(sid, title); err != nil { + http.Error(w, "failed to rename story", http.StatusInternalServerError) + return + } + broadcast(id, "stories") + if isHTMX(r) { + renderRoomStories(w, id, user) + return + } + http.Redirect(w, r, fmt.Sprintf("/rooms/%d", id), http.StatusSeeOther) +} + +func handleDeleteStory(w http.ResponseWriter, r *http.Request) { + id, err := getRoomID(r) + if err != nil { + http.Error(w, "invalid room id", http.StatusBadRequest) + return + } + user := r.Context().Value(userKey).(*lib.User) + sid, err := getPathInt(r, "story_id") + if err != nil { + http.Error(w, "invalid story id", http.StatusBadRequest) + return + } + if err := lib.DeleteStory(sid); err != nil { + http.Error(w, "failed to delete story", http.StatusInternalServerError) + return + } + broadcast(id, "stories") + if isHTMX(r) { + renderRoomStories(w, id, user) + return + } + http.Redirect(w, r, fmt.Sprintf("/rooms/%d", id), http.StatusSeeOther) +} diff --git a/api/templates.go b/api/templates.go new file mode 100644 index 0000000..02c9967 --- /dev/null +++ b/api/templates.go @@ -0,0 +1,121 @@ +package api + +import ( + "context" + "fmt" + "html/template" + "io/fs" + "log" + "net/http" + + "sprintpadawan/lib" +) + +var templates *template.Template + +func InitTemplates(fsys fs.FS) { + templates = template.Must(template.New("").Funcs(template.FuncMap{ + "scaleToOptions": scaleToOptions, + "derefInt": func(i *int) int { + if i == nil { + return 0 + } + return *i + }, + "slice": func(s string, start, end int) string { + if len(s) == 0 { + return "" + } + if start < 0 { + start = 0 + } + if end > len(s) || end <= 0 { + end = len(s) + } + if start > end { + return "" + } + return s[start:end] + }, + "dict": func(values ...interface{}) (map[string]interface{}, error) { + if len(values)%2 != 0 { + return nil, fmt.Errorf("odd number of arguments to dict") + } + d := make(map[string]interface{}) + for i := 0; i < len(values); i += 2 { + key, ok := values[i].(string) + if !ok { + return nil, fmt.Errorf("dict keys must be strings") + } + d[key] = values[i+1] + } + return d, nil + }, + }).ParseFS(fsys, "templates/*.html")) +} + +func isHTMX(r *http.Request) bool { + return r.Header.Get("HX-Request") == "true" +} + +func renderTemplate(w http.ResponseWriter, name string, data interface{}) { + w.Header().Set("Content-Type", "text/html; charset=utf-8") + if err := templates.ExecuteTemplate(w, name, data); err != nil { + log.Printf("template error (%s): %v", name, err) + http.Error(w, "internal server error", http.StatusInternalServerError) + } +} + +func renderRoomStories(w http.ResponseWriter, roomID int, user *lib.User) { + room, err := lib.GetRoomByID(roomID) + if err != nil { + http.Error(w, "room not found", http.StatusNotFound) + return + } + data, err := buildRoomData(room, user) + if err != nil { + http.Error(w, "failed to load room data", http.StatusInternalServerError) + return + } + renderTemplate(w, "stories-panel", data) +} + +func renderRoomMembers(w http.ResponseWriter, roomID int, user *lib.User) { + room, err := lib.GetRoomByID(roomID) + if err != nil { + http.Error(w, "room not found", http.StatusNotFound) + return + } + data, err := buildRoomData(room, user) + if err != nil { + http.Error(w, "failed to load room data", http.StatusInternalServerError) + return + } + renderTemplate(w, "members-panel", data) +} + +func requireAuth(next http.HandlerFunc) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + cookie, err := r.Cookie("session_token") + if err != nil { + http.Redirect(w, r, "/login", http.StatusSeeOther) + return + } + user, err := lib.GetUserFromSession(cookie.Value) + if err != nil || user == nil { + http.Redirect(w, r, "/login", http.StatusSeeOther) + return + } + ctx := context.WithValue(r.Context(), userKey, user) + next.ServeHTTP(w, r.WithContext(ctx)) + } +} + +func isLoggedIn(r *http.Request) bool { + cookie, err := r.Cookie("session_token") + if err != nil { + return false + } + user, err := lib.GetUserFromSession(cookie.Value) + return err == nil && user != nil +} diff --git a/api/types.go b/api/types.go new file mode 100644 index 0000000..bfb35a5 --- /dev/null +++ b/api/types.go @@ -0,0 +1,233 @@ +package api + +import ( + "errors" + "net/http" + "strconv" + "sync" + + "sprintpadawan/lib" +) + +type contextKey string + +const userKey contextKey = "user" + +type sseClient struct { + ch chan string + userID int +} + +type MemberView struct { + Username string + HasVoted bool + ID int +} + +type RoomData struct { + *lib.Room + User *lib.User + Members []MemberView + Stories []lib.Story + IsOwner bool + UserVotes map[int]string + StoryVotes map[int][]lib.VoteView +} + +var ( + roomClients = make(map[int][]*sseClient) + clientsMu sync.RWMutex +) + +func addSSEClient(roomID, userID int, ch chan string) { + clientsMu.Lock() + defer clientsMu.Unlock() + roomClients[roomID] = append(roomClients[roomID], &sseClient{ch: ch, userID: userID}) +} + +func removeSSEClient(roomID int, ch chan string) { + clientsMu.Lock() + defer clientsMu.Unlock() + clients := roomClients[roomID] + for i, c := range clients { + if c.ch == ch { + roomClients[roomID] = append(clients[:i], clients[i+1:]...) + break + } + } + if len(roomClients[roomID]) == 0 { + delete(roomClients, roomID) + } +} + +func broadcast(roomID int, event string) { + clientsMu.RLock() + snapshot := append([]*sseClient(nil), roomClients[roomID]...) + clientsMu.RUnlock() + + if len(snapshot) == 0 { + return + } + + deadSet := make(map[*sseClient]struct{}) + for _, c := range snapshot { + select { + case c.ch <- event: + default: + deadSet[c] = struct{}{} + } + } + + if len(deadSet) == 0 { + return + } + + clientsMu.Lock() + defer clientsMu.Unlock() + + current := roomClients[roomID] + alive := current[:0] + for _, c := range current { + if _, dead := deadSet[c]; dead { + continue + } + alive = append(alive, c) + } + if len(alive) == 0 { + delete(roomClients, roomID) + return + } + roomClients[roomID] = alive +} + +func GetConnectedUserIDs(roomID int) []int { + clientsMu.RLock() + defer clientsMu.RUnlock() + seen := make(map[int]bool) + var ids []int + for _, c := range roomClients[roomID] { + if !seen[c.userID] { + seen[c.userID] = true + ids = append(ids, c.userID) + } + } + return ids +} + +func scaleToOptions(scale string) []string { + switch scale { + case "fibonacci": + return []string{"1", "2", "3", "5", "8", "13", "21", "?"} + case "tshirt": + return []string{"XS", "S", "M", "L", "XL", "XXL", "?"} + case "linear": + return []string{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "?"} + default: + return []string{"1", "2", "3", "5", "8", "13", "21", "?"} + } +} + +func getRoomID(r *http.Request) (int, error) { + return getPathInt(r, "id") +} + +func getPathInt(r *http.Request, key string) (int, error) { + raw := r.PathValue(key) + if raw == "" { + return 0, errors.New("missing path parameter") + } + id, err := strconv.Atoi(raw) + if err != nil || id <= 0 { + return 0, errors.New("invalid path parameter") + } + return id, nil +} + +func getFormInt(r *http.Request, key string) (int, error) { + raw := r.FormValue(key) + if raw == "" { + return 0, errors.New("missing form value") + } + id, err := strconv.Atoi(raw) + if err != nil || id <= 0 { + return 0, errors.New("invalid form value") + } + return id, nil +} + +func buildRoomData(room *lib.Room, user *lib.User) (RoomData, error) { + members, err := lib.GetRoomMembers(room.ID) + if err != nil { + return RoomData{}, err + } + + stories, err := lib.GetStoriesForRoom(room.ID) + if err != nil { + return RoomData{}, err + } + + connectedIDs := GetConnectedUserIDs(room.ID) + connectedMap := make(map[int]bool) + for _, cid := range connectedIDs { + connectedMap[cid] = true + } + connectedMap[user.ID] = true + + storyIDs := make([]int, 0, len(stories)) + revealedStoryIDs := make([]int, 0, len(stories)) + for _, s := range stories { + storyIDs = append(storyIDs, s.ID) + if s.Voted { + revealedStoryIDs = append(revealedStoryIDs, s.ID) + } + } + + votesByStory, err := lib.GetVotesForStories(storyIDs) + if err != nil { + return RoomData{}, err + } + + storyVotes, err := lib.GetVoteViewsForStories(revealedStoryIDs) + if err != nil { + return RoomData{}, err + } + + activeVotesByUser := make(map[int]bool) + if room.ActiveStoryID != nil { + for _, v := range votesByStory[*room.ActiveStoryID] { + activeVotesByUser[v.UserID] = true + } + } + + var memberViews []MemberView + for _, m := range members { + if !connectedMap[m.ID] { + continue + } + hasVoted := activeVotesByUser[m.ID] + memberViews = append(memberViews, MemberView{ + Username: m.Username, + HasVoted: hasVoted, + ID: m.ID, + }) + } + + userVotes := make(map[int]string) + for _, s := range stories { + for _, v := range votesByStory[s.ID] { + if v.UserID == user.ID { + userVotes[s.ID] = v.Value + } + } + } + + return RoomData{ + Room: room, + User: user, + Members: memberViews, + Stories: stories, + IsOwner: room.OwnerID == user.ID, + UserVotes: userVotes, + StoryVotes: storyVotes, + }, nil +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..09a7b7b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,9 @@ +services: + app: + build: . + container_name: sprintpadawan + ports: + - "8080:8080" + volumes: + - ${ROOT_DIR:-./data}:/data + restart: unless-stopped diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..3f06416 --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1777268161, + "narHash": "sha256-bxrdOn8SCOv8tN4JbTF/TXq7kjo9ag4M+C8yzzIRYbE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1c3fe55ad329cbcb28471bb30f05c9827f724c76", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..1368f54 --- /dev/null +++ b/flake.nix @@ -0,0 +1,39 @@ +{ + description = "SprintPadawan Go 1.26 development environment"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = + { + self, + nixpkgs, + flake-utils, + }: + flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = import nixpkgs { + inherit system; + }; + in + { + devShells.default = pkgs.mkShell { + buildInputs = [ + pkgs.go + pkgs.gopls + pkgs.gotools + pkgs.go-tools + pkgs.gnumake + ]; + + shellHook = '' + echo "SprintPadawan Dev Environment Loaded" + go version + ''; + }; + } + ); +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..586dc37 --- /dev/null +++ b/go.mod @@ -0,0 +1,16 @@ +module sprintpadawan + +go 1.26.1 + +require ( + github.com/google/uuid v1.6.0 + github.com/joho/godotenv v1.5.1 + golang.org/x/crypto v0.50.0 + turso.tech/database/tursogo v0.5.3 +) + +require ( + github.com/ebitengine/purego v0.10.0 // indirect + github.com/tursodatabase/turso-go-platform-libs v0.5.3 // indirect + golang.org/x/sys v0.43.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..560dcda --- /dev/null +++ b/go.sum @@ -0,0 +1,22 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= +github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +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/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/tursodatabase/turso-go-platform-libs v0.5.3 h1:JvlE+vC2IbyVrxlAVuPoBKvDCQF9hX4c17amhthNqSg= +github.com/tursodatabase/turso-go-platform-libs v0.5.3/go.mod h1:bo+Lpv5OYOX1gRV9L5DLKMsYxmDs56SkZwnCOLEFcxU= +golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= +golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +turso.tech/database/tursogo v0.5.3 h1:ICh0AtACo8aVxPj/wsqCnT8Erl/WkNYuhy59/L5RDTI= +turso.tech/database/tursogo v0.5.3/go.mod h1:JjsqX4S3fT1arHjqKuiuGxhJQE+VlYboU5YVqHOjy6s= diff --git a/lib/db.go b/lib/db.go new file mode 100644 index 0000000..ed26ffa --- /dev/null +++ b/lib/db.go @@ -0,0 +1,134 @@ +package lib + +import ( + "database/sql" + "log" + "os" + "path/filepath" + + _ "turso.tech/database/tursogo" +) + +var DB *sql.DB + +// init sqlite db — creates app.db at project root (run from root) or ROOT_DIR if set +func InitDB() { + var err error + + dbPath := "app.db" + if rootDir := os.Getenv("ROOT_DIR"); rootDir != "" { + dbPath = filepath.Join(rootDir, "app.db") + } + + DB, err = sql.Open("turso", dbPath) + if err != nil { + log.Fatal(err) + } + + if _, err = DB.Exec("PRAGMA foreign_keys = ON;"); err != nil { + log.Fatal(err) + } + + // make users table + userTable := ` + CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + password_hash TEXT NOT NULL + );` + _, err = DB.Exec(userTable) + if err != nil { + log.Fatal(err) + } + + // make sessions table + sessionTable := ` + CREATE TABLE IF NOT EXISTS sessions ( + id TEXT PRIMARY KEY, + user_id INTEGER NOT NULL, + expires_at DATETIME NOT NULL, + FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE + );` + _, err = DB.Exec(sessionTable) + if err != nil { + log.Fatal(err) + } + + // make rooms table + roomTable := ` + CREATE TABLE IF NOT EXISTS rooms ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + code TEXT UNIQUE NOT NULL, + scale TEXT NOT NULL DEFAULT 'fibonacci', + owner_id INTEGER NOT NULL, + created_at DATETIME NOT NULL, + active_story_id INTEGER, + FOREIGN KEY(owner_id) REFERENCES users(id) ON DELETE CASCADE + );` + _, err = DB.Exec(roomTable) + if err != nil { + log.Fatal(err) + } + + // make room_members table + memberTable := ` + CREATE TABLE IF NOT EXISTS room_members ( + room_id INTEGER NOT NULL, + user_id INTEGER NOT NULL, + joined_at DATETIME NOT NULL, + PRIMARY KEY (room_id, user_id), + FOREIGN KEY(room_id) REFERENCES rooms(id) ON DELETE CASCADE, + FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE + );` + _, err = DB.Exec(memberTable) + if err != nil { + log.Fatal(err) + } + + // make stories table + storyTable := ` + CREATE TABLE IF NOT EXISTS stories ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + room_id INTEGER NOT NULL, + title TEXT NOT NULL, + points INTEGER, + voted INTEGER NOT NULL DEFAULT 0, + FOREIGN KEY(room_id) REFERENCES rooms(id) ON DELETE CASCADE + );` + _, err = DB.Exec(storyTable) + if err != nil { + log.Fatal(err) + } + + // make votes table + voteTable := ` + CREATE TABLE IF NOT EXISTS votes ( + story_id INTEGER NOT NULL, + user_id INTEGER NOT NULL, + value TEXT NOT NULL, + PRIMARY KEY (story_id, user_id), + FOREIGN KEY(story_id) REFERENCES stories(id) ON DELETE CASCADE, + FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE + );` + _, err = DB.Exec(voteTable) + if err != nil { + log.Fatal(err) + } + + indexes := []string{ + "CREATE INDEX IF NOT EXISTS idx_sessions_user_expires ON sessions(user_id, expires_at);", + "CREATE INDEX IF NOT EXISTS idx_sessions_expires ON sessions(expires_at);", + "CREATE INDEX IF NOT EXISTS idx_rooms_owner ON rooms(owner_id);", + "CREATE INDEX IF NOT EXISTS idx_room_members_room ON room_members(room_id);", + "CREATE INDEX IF NOT EXISTS idx_room_members_user ON room_members(user_id);", + "CREATE INDEX IF NOT EXISTS idx_stories_room ON stories(room_id);", + "CREATE INDEX IF NOT EXISTS idx_votes_story ON votes(story_id);", + "CREATE INDEX IF NOT EXISTS idx_votes_user ON votes(user_id);", + } + for _, stmt := range indexes { + if _, err = DB.Exec(stmt); err != nil { + log.Fatal(err) + } + } +} diff --git a/lib/room.go b/lib/room.go new file mode 100644 index 0000000..34e744a --- /dev/null +++ b/lib/room.go @@ -0,0 +1,248 @@ +package lib + +import ( + "fmt" + "strings" + "time" + + "github.com/google/uuid" +) + +type Room struct { + ID int + Name string + Code string + Scale string + OwnerID int + CreatedAt time.Time + ActiveStoryID *int +} + +type RoomMember struct { + RoomID int + UserID int + JoinedAt time.Time +} + +type RoomSummary struct { + Room + MemberCount int +} + +// generate unique room code +func generateRoomCode() string { + code := uuid.New().String()[:8] + return code +} + +// create room +func CreateRoom(name string, ownerID int, scale string) (*Room, error) { + code := generateRoomCode() + + tx, err := DB.Begin() + if err != nil { + return nil, err + } + defer tx.Rollback() + + createdAt := time.Now() + res, err := tx.Exec("INSERT INTO rooms (name, code, scale, owner_id, created_at, active_story_id) VALUES (?, ?, ?, ?, ?, NULL)", name, code, scale, ownerID, createdAt) + if err != nil { + return nil, err + } + + roomID64, err := res.LastInsertId() + if err != nil { + return nil, err + } + roomID := int(roomID64) + + if _, err := tx.Exec("INSERT INTO room_members (room_id, user_id, joined_at) VALUES (?, ?, ?)", roomID, ownerID, createdAt); err != nil { + return nil, err + } + + if err := tx.Commit(); err != nil { + return nil, err + } + + return &Room{ + ID: roomID, + Name: name, + Code: code, + Scale: scale, + OwnerID: ownerID, + CreatedAt: createdAt, + ActiveStoryID: nil, + }, nil +} + +// get room by id +func GetRoomByID(id int) (*Room, error) { + row := DB.QueryRow("SELECT id, name, code, scale, owner_id, created_at, active_story_id FROM rooms WHERE id = ?", id) + r := &Room{} + err := row.Scan(&r.ID, &r.Name, &r.Code, &r.Scale, &r.OwnerID, &r.CreatedAt, &r.ActiveStoryID) + if err != nil { + return nil, err + } + return r, nil +} + +// get room by code +func GetRoomByCode(code string) (*Room, error) { + row := DB.QueryRow("SELECT id, name, code, scale, owner_id, created_at, active_story_id FROM rooms WHERE code = ?", code) + r := &Room{} + err := row.Scan(&r.ID, &r.Name, &r.Code, &r.Scale, &r.OwnerID, &r.CreatedAt, &r.ActiveStoryID) + if err != nil { + return nil, err + } + return r, nil +} + +// get rooms for user +func GetRoomsForUser(userID int) ([]Room, error) { + summaries, err := GetRoomSummariesForUser(userID) + if err != nil { + return nil, err + } + rooms := make([]Room, 0, len(summaries)) + for _, s := range summaries { + rooms = append(rooms, s.Room) + } + return rooms, nil +} + +func GetRoomSummariesForUser(userID int) ([]RoomSummary, error) { + rows, err := DB.Query(` + SELECT r.id, r.name, r.code, r.scale, r.owner_id, r.created_at, r.active_story_id, COUNT(rm.user_id) as member_count + FROM rooms r + LEFT JOIN room_members rm ON r.id = rm.room_id + WHERE r.owner_id = ? + GROUP BY r.id + `, userID) + if err != nil { + return nil, err + } + defer rows.Close() + var rooms []RoomSummary + for rows.Next() { + var r RoomSummary + var memberCount int + err := rows.Scan(&r.ID, &r.Name, &r.Code, &r.Scale, &r.OwnerID, &r.CreatedAt, &r.ActiveStoryID, &memberCount) + if err != nil { + return nil, err + } + r.MemberCount = memberCount + rooms = append(rooms, r) + } + return rooms, nil +} + +// set active story for room +func SetActiveStory(roomID, storyID int) error { + _, err := DB.Exec("UPDATE rooms SET active_story_id = ? WHERE id = ?", storyID, roomID) + return err +} + +// add user to room +func AddUserToRoom(roomID, userID int) error { + _, err := DB.Exec("INSERT OR IGNORE INTO room_members (room_id, user_id, joined_at) VALUES (?, ?, ?)", roomID, userID, time.Now()) + return err +} + +// get room members +func GetRoomMembers(roomID int) ([]User, error) { + rows, err := DB.Query(` + SELECT u.id, u.username, u.password_hash + FROM users u + JOIN room_members rm ON u.id = rm.user_id + WHERE rm.room_id = ? + `, roomID) + if err != nil { + return nil, err + } + defer rows.Close() + var members []User + for rows.Next() { + var u User + err := rows.Scan(&u.ID, &u.Username, &u.PasswordHash) + if err != nil { + return nil, err + } + members = append(members, u) + } + return members, nil +} + +// delete room by id +func DeleteRoom(id int) error { + _, err := DB.Exec("DELETE FROM rooms WHERE id = ?", id) + return err +} + +func GetVotesForStories(storyIDs []int) (map[int][]Vote, error) { + votesByStory := make(map[int][]Vote) + if len(storyIDs) == 0 { + return votesByStory, nil + } + + placeholders := strings.TrimSuffix(strings.Repeat("?,", len(storyIDs)), ",") + args := make([]interface{}, 0, len(storyIDs)) + for _, id := range storyIDs { + args = append(args, id) + } + + query := fmt.Sprintf("SELECT story_id, user_id, value FROM votes WHERE story_id IN (%s)", placeholders) + rows, err := DB.Query(query, args...) + if err != nil { + return nil, err + } + defer rows.Close() + + for rows.Next() { + var v Vote + if err := rows.Scan(&v.StoryID, &v.UserID, &v.Value); err != nil { + return nil, err + } + votesByStory[v.StoryID] = append(votesByStory[v.StoryID], v) + } + + return votesByStory, nil +} + +func GetVoteViewsForStories(storyIDs []int) (map[int][]VoteView, error) { + voteViewsByStory := make(map[int][]VoteView) + if len(storyIDs) == 0 { + return voteViewsByStory, nil + } + + placeholders := strings.TrimSuffix(strings.Repeat("?,", len(storyIDs)), ",") + args := make([]interface{}, 0, len(storyIDs)) + for _, id := range storyIDs { + args = append(args, id) + } + + query := fmt.Sprintf(` + SELECT v.story_id, u.username, v.value + FROM votes v + JOIN users u ON v.user_id = u.id + WHERE v.story_id IN (%s) + `, placeholders) + rows, err := DB.Query(query, args...) + if err != nil { + return nil, err + } + defer rows.Close() + + for rows.Next() { + var ( + storyID int + vv VoteView + ) + if err := rows.Scan(&storyID, &vv.Username, &vv.Value); err != nil { + return nil, err + } + voteViewsByStory[storyID] = append(voteViewsByStory[storyID], vv) + } + + return voteViewsByStory, nil +} diff --git a/lib/story.go b/lib/story.go new file mode 100644 index 0000000..8e9afdf --- /dev/null +++ b/lib/story.go @@ -0,0 +1,189 @@ +package lib + +import ( + "database/sql" + "strconv" +) + +type Story struct { + ID int + RoomID int + Title string + Points *int + Voted bool +} + +type Vote struct { + ID int + StoryID int + UserID int + Value string +} + +// create story +func CreateStory(roomID int, title string) (*Story, error) { + res, err := DB.Exec("INSERT INTO stories (room_id, title, voted) VALUES (?, ?, 0)", roomID, title) + if err != nil { + return nil, err + } + id64, err := res.LastInsertId() + if err != nil { + return nil, err + } + return &Story{ + ID: int(id64), + RoomID: roomID, + Title: title, + Points: nil, + Voted: false, + }, nil +} + +// get stories for room +func GetStoriesForRoom(roomID int) ([]Story, error) { + rows, err := DB.Query("SELECT id, room_id, title, points, voted FROM stories WHERE room_id = ? ORDER BY id", roomID) + if err != nil { + return nil, err + } + defer rows.Close() + var stories []Story + for rows.Next() { + var s Story + var points sql.NullInt64 + var voted int + err := rows.Scan(&s.ID, &s.RoomID, &s.Title, &points, &voted) + if err != nil { + return nil, err + } + if points.Valid { + p := int(points.Int64) + s.Points = &p + } + s.Voted = voted == 1 + stories = append(stories, s) + } + return stories, nil +} + +// vote on story +func VoteOnStory(storyID, userID int, value string) error { + _, err := DB.Exec("INSERT OR REPLACE INTO votes (story_id, user_id, value) VALUES (?, ?, ?)", storyID, userID, value) + return err +} + +// get votes for story +func GetVotesForStory(storyID int) ([]Vote, error) { + rows, err := DB.Query("SELECT story_id, user_id, value FROM votes WHERE story_id = ?", storyID) + if err != nil { + return nil, err + } + defer rows.Close() + var votes []Vote + for rows.Next() { + var v Vote + err := rows.Scan(&v.StoryID, &v.UserID, &v.Value) + if err != nil { + return nil, err + } + votes = append(votes, v) + } + return votes, nil +} + +// reveal votes — just marks the story as revealed +func RevealVotes(storyID int) error { + _, err := DB.Exec("UPDATE stories SET voted = 1 WHERE id = ?", storyID) + return err +} + +type VoteView struct { + Username string + Value string +} + +// get votes with usernames for display +func GetVotesWithUsernames(storyID int) ([]VoteView, error) { + rows, err := DB.Query(` + SELECT u.username, v.value + FROM votes v + JOIN users u ON v.user_id = u.id + WHERE v.story_id = ? + `, storyID) + if err != nil { + return nil, err + } + defer rows.Close() + var views []VoteView + for rows.Next() { + var vv VoteView + err := rows.Scan(&vv.Username, &vv.Value) + if err != nil { + return nil, err + } + views = append(views, vv) + } + return views, nil +} + +// unreveal story — set voted back to 0 and clear points +func UnrevealStory(storyID int) error { + _, err := DB.Exec("UPDATE stories SET voted = 0, points = NULL WHERE id = ?", storyID) + return err +} + +// clear all votes for a story +func ClearVotesForStory(storyID int) error { + _, err := DB.Exec("DELETE FROM votes WHERE story_id = ?", storyID) + return err +} + +// rename story +func RenameStory(storyID int, title string) error { + _, err := DB.Exec("UPDATE stories SET title = ? WHERE id = ?", title, storyID) + return err +} + +// delete story and its votes +func DeleteStory(storyID int) error { + _, err := DB.Exec("DELETE FROM stories WHERE id = ?", storyID) + return err +} + +func tshirtToPoints(s string) float64 { + switch s { + case "XS": + return 1 + case "S": + return 3 + case "M": + return 5 + case "L": + return 8 + case "XL": + return 13 + case "XXL": + return 21 + case "?": + return 0 + default: + n, _ := strconv.Atoi(s) + return float64(n) + } +} + +func GetStoryByID(id int) (*Story, error) { + row := DB.QueryRow("SELECT id, room_id, title, points, voted FROM stories WHERE id = ?", id) + var s Story + var points sql.NullInt64 + var voted int + err := row.Scan(&s.ID, &s.RoomID, &s.Title, &points, &voted) + if err != nil { + return nil, err + } + if points.Valid { + p := int(points.Int64) + s.Points = &p + } + s.Voted = voted == 1 + return &s, nil +} diff --git a/lib/user.go b/lib/user.go new file mode 100644 index 0000000..add0252 --- /dev/null +++ b/lib/user.go @@ -0,0 +1,82 @@ +package lib + +import ( + "time" + + "github.com/google/uuid" + "golang.org/x/crypto/bcrypt" +) + +type User struct { + ID int + Username string + PasswordHash string +} + +// hash password +func HashPassword(password string) (string, error) { + bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14) + return string(bytes), err +} + +// check password +func CheckPasswordHash(password, hash string) bool { + err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) + return err == nil +} + +// create new user +func CreateUser(username, password string) error { + hash, err := HashPassword(password) + if err != nil { + return err + } + _, err = DB.Exec("INSERT INTO users (username, password_hash) VALUES (?, ?)", username, hash) + return err +} + +// get user by name +func GetUserByUsername(username string) (*User, error) { + row := DB.QueryRow("SELECT id, username, password_hash FROM users WHERE username = ?", username) + u := &User{} + err := row.Scan(&u.ID, &u.Username, &u.PasswordHash) + if err != nil { + return nil, err + } + return u, nil +} + +// create session token +func CreateSession(userID int) (string, error) { + sessionID := uuid.New().String() + expiresAt := time.Now().Add(24 * time.Hour) + + _, err := DB.Exec("INSERT INTO sessions (id, user_id, expires_at) VALUES (?, ?, ?)", sessionID, userID, expiresAt) + if err != nil { + return "", err + } + return sessionID, nil +} + +// get user from session +func GetUserFromSession(sessionID string) (*User, error) { + row := DB.QueryRow(` + SELECT u.id, u.username, u.password_hash + FROM users u + JOIN sessions s ON u.id = s.user_id + WHERE s.id = ? AND s.expires_at > ? + `, sessionID, time.Now()) + + u := &User{} + err := row.Scan(&u.ID, &u.Username, &u.PasswordHash) + if err != nil { + return nil, err + } + return u, nil +} + +// delete session +func DeleteSession(sessionID string) error { + _, err := DB.Exec("DELETE FROM sessions WHERE id = ?", sessionID) + return err +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..18ee94c --- /dev/null +++ b/main.go @@ -0,0 +1,82 @@ +package main + +import ( + "compress/gzip" + "embed" + "io" + "log" + "net/http" + "path/filepath" + "regexp" + "strings" + + "github.com/joho/godotenv" + + "sprintpadawan/api" + "sprintpadawan/lib" +) + +type gzipResponseWriter struct { + io.Writer + http.ResponseWriter +} + +var fingerprintPattern = regexp.MustCompile(`[-.][a-f0-9]{8,}\.`) + +func (w gzipResponseWriter) Write(b []byte) (int, error) { + return w.Writer.Write(b) +} + +func gzipMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if !strings.Contains(r.Header.Get("Accept-Encoding"), "gzip") { + next.ServeHTTP(w, r) + return + } + + w.Header().Set("Content-Encoding", "gzip") + w.Header().Set("Vary", "Accept-Encoding") + + gz := gzip.NewWriter(w) + defer gz.Close() + + gzw := gzipResponseWriter{Writer: gz, ResponseWriter: w} + next.ServeHTTP(gzw, r) + }) +} + +func cacheMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if fingerprintPattern.MatchString(filepath.Base(r.URL.Path)) { + w.Header().Set("Cache-Control", "public, max-age=31536000, immutable") + } else { + w.Header().Set("Cache-Control", "public, max-age=3600") + } + next.ServeHTTP(w, r) + }) +} + +//go:embed static templates +var embeddedFiles embed.FS + +func main() { + // load .env file if it exists + _ = godotenv.Load() + + lib.InitDB() + api.InitTemplates(embeddedFiles) + + mux := http.NewServeMux() + + // serve static assets + staticHandler := http.FileServer(http.FS(embeddedFiles)) + mux.Handle("/static/", cacheMiddleware(gzipMiddleware(staticHandler))) + + api.SetupRoutes(mux) + + addr := ":8080" + log.Printf("Starting SprintPadawan server on http://localhost%s", addr) + if err := http.ListenAndServe(addr, mux); err != nil { + log.Fatalf("server error: %v", err) + } +} diff --git a/static/fonts/JetBrainsMono-Medium.ttf b/static/fonts/JetBrainsMono-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..51ccd916b8e4116526b9585e4a11c53dd841b809 GIT binary patch literal 112204 zcmd4434B#W@-N=q=VT8d`<@W8lZ0?{lbekI*?|xiSwmQ}K>{I(N!Sq)6_G(y+z?S2 zWRO7zQ5hFR2N^|FR8({vw?T$MM0Au<2NA;mTitz=n-F~S`@ebb^O8^XQe9nDy)UQE zxr{T$yy2LP4KFS!tvy|Pk}*-t7;hauZtR5nlkS6JtD+mbs0CF^TAW-&Gw8!XAJtT~pe}p<+;fZ>&!J2YwKTW2 zR}FW)hq3I7j19WIrM0f5-g*7ap!Wp5%X9ql&3nw-5M})GW!4uyGjHe5u_m^cIaAEx z&tQTu#>I|fpxX2E;7iw;8+*_&bFIXPO!Is1TQ<$=oA)C#jMK#BllOLPmj1^_&;2~O zf& zqGp&WDiL==Y@LjcQa+!_tUO<4aid&}ZDr!JH#`3|g02)VD}-}^_35~*%4uBWDN&3+ z{I|a#SG@QbsZrodN>L5cpJ0O#4+4a;>2PPV#c-G6pR?ucX1HtF5x8%&_u+oTzJhy} zorC)m2Pf{zz2JJIhj1Rq2f@wYL*VA~DR8Iq8E|Lu`EZ+f6WkWw0(T)_1a~=K0e2-| z1$Q;S3GP~s7T|aByWrl7Udj1`{6V-6^M~PXC2@Bh7NEJP!v@P`2X)wVpm9Pw?bLW@mdIA=uouf@WjgH5 z!da>g`=F(xRT$0g$pUrQ$pPONVXXstraSZ-&zji+R)vu?lC{HcWDTr_O<{HL=dya> zMk8E{*h0{iA>7UiSt}?Tkf#m3Y&1AD0f@GpwE&mP2I0RAd|E-(0&E+!Y(uyaelxIh zkv^7{vhrRy+W8IaCV4U>w@Mx)Es9ye$;#63-xV4RZiVROS8CZi&+*_n7v*Y1X9 z)m1hMb=5)<%Fu#wL#0!7MEY1HM6rpei8^R_r529-#vykzn+M7o)K3&EfFAA0Nwq_@ zns`Nh&V@9hSjehT_8L$wKrLP=r8k_t`~#?aqF)V0-Cu)QU>>-wV!vVcvfr}D**^9v zJIX#`r`Y%GBF4KPAH^s0Dt-fB&tK->@n0}LMvDqjBi4u~#eVUnxMa8*enzA*z{oHP zjnPJhQDZb2OO2b1+l|e}?~M12&y90toM|x!o2BM8=5%wed7b%yxx;+HJY>FWerkSc zo-;2wxjOkdMLLx^O>$~;TIsaO=@F-=oL+P~?DW3V-<*DOj&&|_9^*XKxz>4u^Zm|m zI)CW=h4WeGf4exjc)NtT#Ji-qNb|_^816CN zV}?h)N1Mk=kHE_r!)1$y=OO7Y6_D)budHO*^| z*R@_Nyl(N@==Gr2POqo?^1hyZgZeJ%dt=|{`u?NucYS~H&i5YWJ=yy=-tYSK@fqQ> z(&tv6yL}$^+2!*`pFjJ&?ekZklRp3Sx!~*M>+Kun8}Hlhd%f>o-*^4``i1(%`C0r1 z`<41#_5SzyZ}Z>f z|BC-R{vZ4Q!~gpL-+;1!#(>2EHwJ77xIf@fz`KDw&@(V7FgkEx;NZa0z-t1h2hI&_ z4ZJRJZQyHx?*)DqcslT3fgM3^LHV|G(8$pI(Av=ZL$`+>41Fu~qtL&HejEC8m>JeLEGw)qY;;&fSWQ?{ z*wV0@!d?hF6!vb|+3=X~)bO0};_$KI%fdH>KN7w>{Q2-#!;gl45`HTD`v{i^--w8a z#E6=R+am6X*cWjy;@yZ(Bfg3Bj|`7Yh#VVvXXKNS`y*e8d?)g3-Tk(OH@QuepFr5hNzdLzKQy=e`5b>{cHL+^*i9H;9H1@kVm$=Bd+_-UZ&2e|cJsWo>-akG(esuiG_*>)ej(<4*jrfZR zQ3;b0W+ZG(*qpE}VOPSN3GXL-lJNJ$u*8_ev3&R|g&)_(^I& zYE)`+>a^5VsV}E~klHaQWl-^;C4>Gj=zzuBQeqinnPQo3X|S|fmRoMJ+-AAg^04J~ z%jaoMX{l+&Y3*shOMBkxWX-e|Ti07(v|dX0OYfgPBE3HSk@Q#7zsv~9D9@ObF+bzg zj2|*C+B|HbwisKAt=u->w!`*??Odjj>7N;&nUcm?C7x1hF!=H${(CRJijr2MgE5T2lAiD|8xGE`S08R z3jzv87Ti~GvM{c&uJE?P7YctaiYOXcG`^_5sJ&=K(W6B#7yYGpVDaqYyNX{b{;K#= ziBm~r$(WL=lIuz~mFz9~pya30KBXb0MWy3Q7nB|>{k-(T@X+Cw;pM{{hVK~u&hQf> zQb+u5#J-Vy18@fZ_6CTUFmm}|x^y5`yO$H!lskUF7y!upAP;`oWx6PHcgHSyVrZ%+JZ z;@1;@n&dtyVp7_q@=2AG=1gjvbi<^3CheTGf6}{?KAUuU(l3*pC;LtAH#uo?*5r|s zr%hfk`TEHZPkw&#dz1e$#hem8C1c8nDQ#0WPI+p|>r+0T@~;Y~ihzowirk8^6>}<< zR@_?gP{r%2y2QH2>N@6>%vnC??m7GC9Gmm$TyyTU zxu@!%Y;b7^Z5Yz9vf;jlM;i7woSEk`Z_vEbdDqU{IPcv2zVmJKXU>0U{>SsbZFFl) zZJf~fo5p7v|JwM|g4hL?1$hf*Ex3Kb0}J*qIJw}5Cf_DYQ(4p8rkk4XXnL=?u=!B) zmn~i`c`b`uKD>71wYOjU{I%y>!&`^8R<_>Iy0i72)(dUUZ3%5-+h(;r+n(6|bo*Zx zdM_NhaL2++i;5P#yy(=T9~NC)?7lc^apL04#nTtJExuv#hQ-?!?^*ov;`bJRy~Jlp z?vmk4s+KHVa^sRsOLi|gw&aT?mzRbw9k4WeY5vj?OUEs(SUP)Y{nD1DOO~!$x_0Ru zOE)duy7bV}&z63@^!zfEPrJAW6Pgg{_67YS9q@&v|{Fp`&R5(@%oDIuZy{^_`165 z?z--s>rSuaD-%~vUwP}w{ns1UdtV=Wz4iLi>r1geqLUi!w|q)4qM67`1SmDzLEcy@8NIrFZtK}M}Ap^iFA=Ariy*oA-yJE7oUlLiGLfW;c4_W ze2p+8#z-_Wjcj9~vC>#)tT*m3erx>R*kinIykq>u^fW`w7&F%_GRI=KG|Rlxe8T)H z^5)2gB7ctZj`EKRjf#wlj*5+nkFrFiN99HpN3}#Pjan9UYt-XWyQ5x=`cr?u{(=3Y z`=|E5zyFufEZT^6i}sB6jSh$ojgE|tiH?g-j82Zuiq4B3iM6aQ`j!}{nBbVWnD&^C zxK(j$&6v4tO>*0CS!y(keN3tH6;oMmdak3uTQ4cqv z9yS>G=*Z=7k~VeU3hN3KFWY(+izMFmHNM@8v+utw#` zdT2*ItcrT9vmOFuJ=`JdK}5Sodqnp|Jp}7|NYM2#B6@aoZS?9Gq3hw7I2Lz9+^uo< z#BGh+759{^hqvR7#eIo-*ot~+N;sYHBkE!6@jX-zVhehPyg9&4$$8!n_0r?7iYWv@=lbU zC{dUbF(-mgJpT84Pb7bF?u-3j>_1WS#kLdX3Fj|<{Nn71eW2WaVjE*$xF0`d=Wu*G zW5=I9e$Vkg9)Ilk?~gxve1|;+`2ELsA0I*S&lUpOKD++2#qcM7HU@6-XL+9`eirfR zF2+87;p2{vu8;XL=40bA8YSEWMDd;C4a#dwH)a~MjcTLTm}AuAOwcZ|t>hxLNxJRE z3K{L@7>kg;N~Xg#aK~h9G>J9M>nYL}$KderVE-$FKaE2Pn}5 z54cCnx6PyGdkB3<@vc96iutL+;e2v}F{k4y=JXx;&Vec>!(Lrs3W-O>Ffm7zirwN9 z<7F{dl;gZqA`XhdVzS5;BSfAUf{}1Y92Nz}0n}P33uFCR9Lr+aY#7e2W7s&H$Sc@X zHVfy=yRWx!TXPI|HDBYV=3ls{F)&BD z@xHjF3Bv4@j&YgI^LYuc!2Qfj+|JaCF~%EWtaw}O6#2N%cv}2H{Ly&R__I0Ec!f8L zYVnSkV!UcjFkTZ!M5-8MmW#g{2St%NQ4Hh@aPrH>n9dP}%onqyJ8qM_anBIUB60SO zX9F-Vj$}ow1gFbr+%L^zvvF2k%<9D}IA`9)Hn2O`ow(Cj#)smh`A7C5dxQO%z0Tfb z?_x~+m3_)iunu;fU0}bk4{*m6&4YO;AH<`?t9&5NqNRKUAIWEPE3d}f{2FHGXIKC` zj60BbSU>h2W~2961WvFq>_ZmI{=zcYmn?yOj5+G>%!YB7h_h`T`wlbKw`?eGwua!G zTflx~`RoTa8dpH0(2a}P&#attHk|#Njpa`48t%ef*#z9&Ou}8{MDD>R^FC|}_hOaY zhfT+A*fgAzec22iz}k2+tKuQ7l_#+!+`_KoHg-MF!b*|JZs0lWCZ5M`|xxXZQ&Ey?R+?Uh)-q@@CoceK8ZcTr?KDjDz=L~$s5?yxLbRQ&*Q^b zBadbG@X^eT?Z-*}pRApyU_JVVh2Z{f5l>||<6dq(FJ`;>95c-vWR5e-Fo#Yu$D5QWl zZo%xgj^E0EgS&*=`5k-%zlU$;58%FUE7s3#{CBwR+sS{=ck#z?9_;Q#0_W?`;4Wqzp;VrIPP4&V9D%r+_+q3BiJR@!27fLJciZqFjmJS*c=|o=3@S@ z#U1wo9>{>p6HSu`1k(aT%c{#h6k71kmICek3hHd8K*?oL0dz{y@$9N6< z1FvIG@VR2Ps1nn~OfgH$Fpd~+i((OEyd%EBjmuZ!Yw=I@r?M3cuTy9{l^R9P4R~KyZDDVAYK-K6UUABjCaL3<749k<3r;k z%O~wS==*%>3G_Em588fgtKW^+W=3~FI%h+x- z821>@;f807@ke8#@tDzU+-*FI^}F2IYmCQ!rpZ`sTx;BCj5Eq`6V#6N;C7?c*ktT9 zwiyp#?^AEwWwaUh8_!_(GuC+8SZq9Kv>5jqlZ;1=Eyf~afpNVt)mUXz8pDht+$)VV zh8k0h5ylYX31chnnsyrx8wJJ-##2VAu@8HO5@WJ4+{iQjU_4~x8_#1uRg8P6CB`yi zIrbOV87qu6#%tk!%byvW&q-nvrgV8xh#o1&Rq`k{B;0Vj;jpg4r<^ zv!W<2EuYA|8mroy(DSfHGKReqrSk<Wb%#+{ac@r*k z*ZsfZqFC4=yXXJ9OWH!~D_r+n;W zepMIy40mrw`m2ZC-HGRa$8|S}&#$|^%F2~GC|By!y${$+ef3gw)y)5d#;t=m|KD`& z<@)s!slN2Us2s{QnnR&uy{>r0a%fxbCUH?h-vp`hUfBJ4?F#M=nl7 zZpYpJTdq8RxH-70mfVif81Kb>o9aa4(Xt5ts_VJU?J(8hf5&w@NPK?X{ZC}M?MEFx z(~G+Y_+4(l>dJQ7el-`;ACl$$4_&uSkht;J-TxI&(#5fF{~ru@t^&|{J$i^<6MLWc zpp~B6Nkg^rc2QC)^&dyqajj7^hUXSpI_35liCv|Zy8vWO#sdEz(Vs?hTSMTDtjSKjan>J$qDPWO%y_*GtzTx&2YP`4W>R!)XW$+%u2` z2t5Iw4xcPQDy0QTJMJ28#u=R~Kvqc$kXNMz$eYpv<0O1W}0Rm~T0O5^f0fKWUEI@Gb zgarsrp0EJH+4DI5myrbsG=K#Nzm6Ipam>I_^o6C!q<@n2>%UPfbjKX z0m5%13lM%MS%C13WC6nOA`1|HH|mn%W(C{ucfOo^$=*{Y-4x|QBYwGB_De76mPt1Su3)CLiD9^1C}mF4 zCdOad#3bNetb$bnlK&4v0C*Ej0*t!~OaR^;VE1Pt{NI3ztH`tKK{}CK@~i)c5D$8S zi5eEbuL6*72Y-YM0oPmw?0WpS{Rqe-Aii+`yN+cJVLPq>xZYqq@T7NoFL1T;{QtpI z-=qG~6QY5$m*dxb($f+05dS{~G2l%=bvNc$UQ6*RPJG7z3<$*1y_12O>i zy0suoWhn&^jbj;T?IYb#1}1bG@tOb_1t8rBh%eC*U&>EmDhs6%Z+jb1nChPTjJX-Tgh3#w1 zNQ8-=bfh*Jp~D;CZvxy6xDjwW0Oe+czXz~UhyPPL(jiJi5d33+hqV6){A|Ey8dkxt z0}#y~Kz~3#9jCsJo&Dtyz*2-My$xV5`=1deU7G;+0vZ5!0oH363!nN6#i>0=2daZ% z+W#B;`vIXEh!?>+z;~jeBSTdD@+n|D!qY{?rHd+T_dEIk4_+O+Ma9qmf{!}uK!56Z zOH^D$Jzm7z(6Itg0XTyAD}a22L4PqGKKi0eCz=NUFGI$8$k>YT9U5l9M|ppNo|jPG zOBnZ;Ub_nX19Z1R7mQgu%`eRep9K$h&DR@Y==jU`(7_XcK6dFO%6lDv>XzDp+KB2+ z0`|A$)0i3qNCMdB8t{^7RDaZ$C@lg&JgD#f1egej0*nKU22j7JxE+XoC}2IH3Q!B6 zJOtFI9U&ia%1=Q3w+uji#j1h9C%H7HsozoF2>@zSCyd+g;BN(F0!Ti|-V1QliEuPd zQC|`g9l`??CGBC*1MIYR zpIx{TFL9$3-Z773Sn>?fG{l4U>^)@IUIH&Q7e0F_hS$+i089+2o0@h%zdk1g{ z^WTe@2SMKf8NUG6@e}~_a>vJ*6CV&27Y-=@;#&?h&m!yzz#Q=l)`Cl*rMa5GK5x@n zVP798{0qqh?Jtnuf%&cDW&q^Lc)ao{d=YEcrE`dH?hYMTM}96u+8N+6=XBf&+7{@y z81cU&j`8}-3q5Fvzve@E?O|HaI#AE{IIRIvCioJrgY*H8*0oDmOD<8k5;&}>9X8Y- zwTB(jReiFDuspyf3ibdDZ%Z)PtuTh$QoN1C@IHuwo8j+PcuIq13WJRX!@U~2dZ~FWvx^S{6BV9<3 zHvmtA-~U8D>GuicLEe=PK;^%-2dqHc4mb8lyB0hu@n(w^_^v;?Ps88kI*F&}WQp$UW4tEJNMw8u+XW7h0Y(OC6o`|mD$bifQ?QZY?Lm+dZQK= zJN~c?`ickeKv)IU!CESq9p)jp%M9b;u;q9IR(bu{n>>p5hZRx`ESr*eEIZHRV6m6L z6In7J02`kab_5nbWP^197C7&~Mky7yq82ugr?FISWrL&zmJQZFCt!n=#^(K zIVjap*a5wZ`_dtNC?Cf2VL4L3-sgq9h!?|NtCSCywoYYy6uT2PBTukBuu1s_7ELxj z8aJzBStcwN-oR|lG`8TYF|^eb_Ct5!PIV+Jf}PO;_FMikyAES?0<6R)vPsg$=oMIfy$Tz(i?Bm_4K`bc zVFC6!ERSH51Z%yO{4Ly?-@xC7wbwiHCi*@8KJKDF;2-k8@Q-jO{V^>1D&@WOXLv7h z8gAdu^1rctxSRe$-c6r`{n$U)m;4la5Efux;*MI`VVxyQEV9Fb&DA;nFWA-o$baJh z#;x_w`~q&RFY-&g12)G@a3O>tOyMM)g$wSl-Gn==wmh+~@`Bx#x9}0ZxXC74u0Rn4 z+uRTl3QOg15g{T)KM^JRi)axeVnrO@9!(I5Vt_~z$s$DzBr8B+5oxgIO&1x$CNg0G zm<=1iTv#=dJ>yW=Jm!l6Q7DRFr&I##$KkMa94X4gC~5yV2KI*IV6!+L_AwL1Bv?XD z!G3S5s1(y+<1|BBIn9Q>Q#Gs$YegOGC+CWK(IDoD`Jz!Q5KW?4w1{g(t7sGLVxd?h z7K;*SJH_wC zF6J#BV^3j*eH<2^ufXzgFKi#5f#uonVcGW*tk9gWqW=LlqfdxEc(3j$SY__TGlpki z&GnpkUhIPn*M8V?y#y;Svf(-i3$ItitFR({4R)lj!@BEDaRk<0Z;N+e7y7PvPrNUV z!4~X8*noW`{wh8epNLOkh5k8Nf5A5F1gybM!XE4ttjSKpp6rbHni;Sp`vx{;|7178 zD$@n_W#6+M;vBnK{0qC2AHUBh+o7-aY=ND%dltqC!S(F$D-Knuww1U z?qPSs%JWgYO}QO*l^bD8#n~3NncdHR$2P&b%7AUtAy`^D!Q#pVZw|T{?uG~K;`~c$m(GQ zHxCwZjj&d0f(2X)EZ$mS)z%LCwneaLTLKF-vOik^`?Hm>XIlm9v(>Pty9qXTYhZu2 z7It>)V0X73mT4PcA9n|A>^8zK?rzxD-3!~fO|XyK3~RY9u#I~N_HJ8YE4K|ccH3ch zw*z)^J7H(H3$}NU!|H7}?Be#o4(=(~((Q#!-ZQYqdk%JR`(Put-+0k@$@r6Tz zX#ClD#dy^?WV~h^#ybaZ!20)y@s{y6-aa^LybJ5V_l;xHHt;XfI`CuT6XR3kGrY(7 zH{-bRg>l08yK&O^2W)KJ@U(CZ-W^@X*0URpQ^uFDSw78H8>iVp<16Eg@wIW*_{R9w z_^0um@x5`*_?Pj6@uTsR@o(e2@w0Kk_{F$rTrxV0%P@T7rZ5fDG@VRm)5UZ(-As4W z1Mfog!CL@*O>fi3^fmop`5ge;?;u!zhrs?j%nUap%t*7J8D;i2qw&^6EZ#JYHxtZ6 zbAXv-CYvedKr$Xi`h|TIqYS};603Su$~=nPB16JhIXyq_@xZzjw#XPZ@KHLROI z#SPAF*j0T5OVLkYIr>-F9)He`n>A*wS!d3{yRY?TgE`NfZ#J3>%qFwhY%#AjTg^6D z-!3#4;c3|tbE&z^TyCzwTe2(7>&;c>4d!a|M)M}~W^;{si@Dak)m&%(#$0dSW^OQV z$6FD1nj6i#%)8Bd%zMrI%uVL~=4SH&=Ys0ixcN~&rWw%2(S)iku$ zELcqoBNmo4tJQsYCs%Vsbycg!h%OrE zkq&iQr0bw4+hwGdHd0A*9@*Z|SX<{&)|FFnPtSBNm$l+t-dR#hT6&>b4w=qlRMHrS zqzs!;(lpn3tb^EMT@S^&u*JGQigl9}+v`g=T~UeC*!t$yCRIhnTImvdE=^UeYrDkK zXKek#rnyzE3l}t2Eo^rgtBWRUr=-ARY+GYhTfNeBy!IRvwq-g`kXVliJqmA4(+cNE zQI@pqQgb5e*Lk8t_Drdk#hO;&JjtQVCAw@SnNE|s%2J{kmg*WQv6oGksidUOq;6%I zq{}i%HIvh%)&^AWB-vQbQlL%|A4RmQ?B?Wbu!UHdljF)nrU6v#NnrG1?0d<8j* zzMxS1nomKxOO-Bkl^zLIb*i8>U1f2v>C&!NwuW<^RMNSwvu)B!3bn39T4s@!QKWS( zvbooF^3m#RwF(Pe>a-el-3FvAhQ(@=bQqX6=ebg%$J{RMR1H|u-RE|4H|uF&)_2i3 zH%NWm8tAh#jT6U@Qu2#*brj{eG-&w^dWbg2R+qf3=~*80x_Bvh=~H8oZ> z)i%^PH_BRbZtScOjN2l!5h^)1sS0hXqEFbgHn-H*IX5|wWn>z4=w{6h&0eglu2|Pk zv97{m-Mq#2D%Qj*G*z)~ppvvc&E5Kavo5R+BqgPN7IrJaLVF4H$XzH$?m{(k7b|5KcPZ<(xO3z#RwH+5SEA|~=xR$HN3N`K zj9gu(r8&;aBwP1ooxM(WjEpon+gLKvr0($5l$DXDDj>t6{Tw@;T3R#G)KJc_*z>8m zA|p*n&QQ}M_^GjwktSy|ONK=)S{Z4wj*xDTtFe=jrl!-3G}-!=46BxF)pD#_KdW6o zO>fnDS+!nPt%p_XWtFol_-TDCcK%wvRqJQfdRgprcD?Q8wad}^S~P!)mS@p&ESiti zuAi1?(fX?`j3qyfVYvf1%kpLDHHy4ELMmnU79 z$EM4juJuf}$91{VwchDk?+mS9hL)3|%aLK%Pt#{;y)v|38Cs7FtyhNDCqwIFv-8*T zGqipgS}#49X4vd{+skX0qxH3E{x&Vorsdc)pA5TxTAt0`4mw_v<5bYtQeR~j*0onT z4X;|Tph^yq^qdTrl9sjx%oAoMl8h20Ppn7C9EshZ)2OPJmMUz67F5?(iO~zi7~D8E zV4KlEyGJpu!5ClP>@=Za?t&^~V%0*INs5&*uD-!20*q^GP+|&l+@<{X=BDO0Pc2bK zTp>{g+(@8G*ZfsP^OOy&P@_bq3Mp<3SV|h__ABVm)#P+?EY3umKs);LNy#L zg{oUx3N^nh%`Z#y%hLR^G`}p(FDu6j#}v%%SmE(yySmn}mb%u4=2|+OVAEGCHxfk! z6H{xd+Uf#(PoolBvy?{GtV}sz5LYG5%2WfzqV{T5OPa+OA2z73Ynr9J)W(LnRUzF_ zjwzwtQ?M7Qf?_gLU!8s`%J8qU^nzv4CtZQqN3<4YwvpTVX8e4^JfZ8re zV&7`)8R{DA=CseUE8tJ4`E~8xka0bbL_JI6S{v}SJSEzZs#A2hBi*c~g$t_dS}`n| zlmeM)5&H9JG9p6Zs=VA7eTJc;tL zqdE&1xzKP6VQovEU#ZD zR&HA*Wk^?-nAK9%N@IAA>Q9a-)QMzAm3hJ(@;G!lCD|d(p=b_Rhe`}~KzA#1s6#?m zPzs3aiaT^?hoGdg{I95bW(aV|&{fZldMs?h+}2jp+*&6k#5!c?O6pOEezKxF8%bvL zR=6%9fer|Ve&egqjt!`@$^^+vXLVq3CAy0`(m_v}Lb{?dS7=wfXOfzq)rQfURg&XY z)r9%Jv93YyRI=0-$5LPsMdOLMw4_u{+EzRW8iH$bFO5qV}Oy9EBu% zt2z%@t!jS_yv+q77GN3iKxH*7s%orjs;Tp+Thf5e-_+hv)u{5R{hZZmDRNg@Q5H7@ z+ZI;0)wL_4Y@2&y^W27-DmsO_>0om!C0Zf7t9+P&;pmB|eP7l8=MSGBe_FJ9Op^-Igi za+h&ApKDaMn?%(%FP3*ss3=rCWuh^vX)+b2y1Bhxg%-BdYU&cTP^VkeLY`HsN|{xv z7V@l8m2T4;3Y*?g*s!6fZK}rcf4-Dq(;Et#-cZ=Gvz&BlivtxltF(yQvQ@j=vehDP z%Pw|loZ~>3EqBGBQ*~^^cBHl4Aw5TFY0FVs+H$m(IcmFM%Tc`r-y&1;ax}jjxr@gI zi0WN7bvcH3sY_!!?%8VVoTTegJ74)y+aj%PiT2gqpVg-B53IH#%~f3+A+EJ5%5t02 z(AZd4Tiv`w=~19IE4Biym%2c*+H@<}^x(0n6Fcyl4kz~Z)`qINx+BaLa z)@sw+GMl>KLR^;0Ux)nx=)Hc$l$AC?32f<(0 zh`N-r+A?*?)hWknvuS=dwJo(}>UObdz0|1*bh=(Lbxo@44e+z))B34X6zJ9V)22?P zR-3vNu-eqA+G?}tex*+7R+~B%B3J$%p-Jde;`rGB}ddSf98Jb^~ zu19qmhCW(9b&7{Rx_o*&Y*SMq@OJq+zn)WU7A;Sm+O4)MO{Y%7;BTk5mq+WXZbP8I zPFJ@DD5us(oq7@1`m58q)s}9L>+-2nIQZ!Pr%usm4_&XBnqFdRDio+ZWV}ou97%EKR3wFOaVF(#H*(p1o}9wgdci{bkw9rTM5^ zAJm_YtJ@BgU-MVDG)TAWtNXLMB>|m|tJ?>}b-SwD3)GixCw0q!`qJY_-DaTQ+S7IU z)a?h_L-SR)P>^r$zZ$P@B_PjUZ@T7`m5 zHHs|OQrRovXZcpO_uRDvS1q7L7YqKZ&XC;cM0ZBJ61qZ?#J`KAYp2$ic1`LmCy9c( z;@u7(e)a1$8v zIw5tUq-;qQYNzU^zD)ABCuv_IJ9V)qI`q^|UiP#uG2wPp4`1^1mNnzRD98cfSP}k? zcyuP2JJ=Da*~^3g#{>#XY+s4(s*^|=*Ih(kp*X1GE0gVKTFD`_8>(At^pQz+&3x>! z&YKsd5)A_l4vG@SQGHb_YJ^BKRnT6BOth5aa8$gq7+#X3b5sR(M!Shrb<@>qev(Y} z411we5frYAGQxpUr8yQwwda+1)t(AZ3}i7?tvO~_%6Aed4WvMahElw`)R4SX0VJ|B zyCUpyOBOC^x{%$frC-m)E;=biRa@5)SQS@|Y{zm0cI9*I)xHksDs?Rq< zWVy))b2ZHis@>!>I0`AAmO>B7+ftNT)!43aa%*Qv*AL3l^#i7KOM#nwKIo7;qfdQv z^Zcsn=0#ZaJ9)}2g(Y1-$V*Qv^u)DrbzNig;w~cnlq_989ZT0w%hL5zvUIf%v!thI zdnyI9<;Ag%WXXtEXR%bYvuuu}g^m%cW2DG2lIa*JkP)xW(mJMP$cS&ZayzD%Iz-YO z<)tZ2d>re-f!6A%fmIbymDZ|?-pBrwL1yyme2OZg?y@RWP*#Hs`ZzxGm6*O=k8KsP zeB!Kv@+q?ny3x~Mg_Lz5gC6RUu?#z@Cm7O|h)(4sO82Qu^r19|u*D&q;}A~QVXFf@ zh3)hdw$oEM-CK1D$zO_hKv;Sra(W`t9T8GyPeeB!QhHAc#e>F632wWzFSp8w%kfiU zDb)BvjaN@rfKN9jjKgb*WP$IFcOy;xJ-a3Pdv-IKYe8j66l=oMk|;K=Xgu7eQ3aK7 zM~^L!Vujx2mn27fYD)5Dt>3Dl!Hr^b#w){x>Q{|QA<>f<1y*=tc`B3<&qoT+! zA6mAktfH)J!7vl2{U2yuP@#=uFW^_)30dQF&2$;f2Dpg`XET70!nHd7*2;w*~78RunYlcjSLp z&;)-~{+xoQVTXt98n$Iv$}rzy=FsUw%Z7YBSO7Fp^o z=Abi!HVs-gXvHAU)C(n{sq0dgl!OlaeBhCR^#dzQLQ@W=>@5j}U!0Ou5}JG{d2e!c z^0=gqq_atDla?hlCiy2h4>&(y?Enfl4hT%Vn7BT%DWN0bY*J%FWkNn_9lt+*7u<^Y zQhbm4U|AV{O(L_bEcU(F1F_R%%VLhj94ae|X^p8Jwk7)W=%c8iEzv8ZTcWG`cl1Bo ze{=s;{ZspgN4*mDOw`V(;;5v4`}#eO(9V99{qiHfjXZ9tk8FvYSrQuYZN#U;%!tN_ z%3)^s8{yBCgoazgqe?=<_Jlo@RUVca7M@ie`grJOxJjYGS>++yLhcBO3h~M+58fWU zF4#ZVIp}=Q+Ms!XKLnn@FNMq=W(Is0@HyP3fN}oE{SW$&_s{Tq1;0xY?dKhI-uH3e zjlR*ou0iL0p7Gi4Gu|iP`&;j0-YdMT`=0B2tncc+^?d`qE_$u^YVr#A5`FgcxwlVz zA6NYP$`;QuPm9L^k8K{~JTl!+y1(JR#C@i_r`tKV&2FpQQr-Mr_qg8cTI`zS@{!9+ zE{!hZoliKw;@s+7;dHkX2DiB%cDu7-C%p}J*?F)aj}j;Kyo4`sVuTC4E#QujDRN*R zKSG29;{{v)EEx+G*&567PJf69lXIl}dMDmjadC(Zh1EOeIpmH7Kl-9PenAWKhw>S3 zMu_7L6-o)!Sn?VDiWYuvs)$_fMi>D7@)&(b^k#hFcL=`m3;o!Q_?qxwd>6`2!6DBX zG5XGsnrW#-_afX5ITo2e9HqlAK$)wVfCcjnaI4H!a4XE~;Z6muonnooxLH!%Bq?s} zL9q<+JaZ}Bq2>~}8RlZRHU}OnCB=1;VuhqwE-9crtg&-pOO0O-vzL!AV+mKcv;GgP zsTcONoYwUpuIoP*^%*XuF??5$V7 zUK)v!d8!j9N=}xX1m-=h3DH55l9kLT`3Z0C(0Au4C$t5C8t(!jU4kw-w7Cx$D*2(_ zN?u}RJfG^5@mZ2rE8^aYi^PyTFD8cJ2LzO~;trG?Fznl&vc#Rbmh(huZ?cLH;nQvh zq^ucI7G{$SdaISB69!)KHYPH*WNgv0HUb04Sbv4Ajat^QtH?t8WP3@@(@0kFX2!EF zYFUIKS(!{^oyj_*WyJ#n$ojaaEYu->Nl@0Iy)`G|4aN-Y+jMIdokiYSDQ&8hhQ3rh zUP~hkq!k@zqBx(v?WW_;A#N$Q$T%NkWD4;CJQCCkCXD=TCj-5eX*1^NphmFRm&m__!S<< zn2W-{lvQ{X7yxRDWN}drmqK0r^A5zQe~#--Vj)^T|0c?Vuh&EO!uJqwl^hg?BsMXT zKRbUmutYIaLH;;J)lJszTGp6eWuf)+@0PNzk(}lrzFKj?SJhSNFyG|2urd%-O=o%RO|?;2D2LctMW{h<>l3Y-g^fjKVuD>~Aok{NmD ztVgUzv@Ron8^J{0aVx!5-m{k110(Q$Xs@-Lhu&gcB_)m|EvR*^O06-lnL!~F>6`S!Wt)r<_^sT#$U;hbV$nG zz>M5_3pU3}m)sS=VW*lqdC(QBCu;c{@Dq4rx7S+EK^qK0`-1Hd(qhPA#J6dAgh4{i z5he!RG3X8@EoVP4fI+Ji74q6=3?E&~yL+$YoDY#x&ANl7tm%l`XI;XOtf!dBnVmBm zVQ7S-;5FeC$~u+$IH z0`)f*BAuegY8`gYHpyvl#wQ7U~~)=S_WZA25K(lyOi&=4Ah(pAmzBC zQstoiI^MJ0fS5pkdAs)&#`!}goIgz2A>|DsdAZNwr_|6_QZ`B){eCgVZSHnp=u0A0 zzl4M5yqOu!n^Wec%tH)0o!3eb&TCWfwI-qj*!#-{(Sn%3_XX^l^w|3i#A@MOF8QZO zJuHalDn6Vr;5HCvS?9!LIxDC+&JxbS&cQOy2Udat;H>9NCEbZm#T(2RS$=2ye(!Aj zj#DnaHR7vyWa3vqoQ^qRJV3wzlAQAl<4y+@0G9-u$k|4t(&=%n578mX_7gMkd$^mD z>+KrZP6D%r{*_KPtegPh)b7--@+z&=9>6#u+s8ny95&wQy@j&!(bj8{O{rgk)DPn_ zr4@>O*NMXiA94gRpDG#nZ5ydy7JlbEr7Y=i(qW}d<~hazA|*TNnO?N{T5E$}z`B|? znV7B8bCVWH$#JAjHd;MB9ExVb~0Pa31OAsmu27cs-yk(8T6t%{tPwGxE& zY*ONt+MvyXz|p{$6!0E=?{$;02z!plGh?OX7~+|Q(P`ZTz8DV>NjQ;pD(e(l;iA@t za7fC?g*Gj=)3(z}n+%LIfUwTA(b(} zA$xTvPGnVNRRGhZwIMo4OMjdhNn36BxlE-^`exuZgWm?*2uE$gk5X?o&i7s)XtR(IQ6`fK9m6U}EM(VD@Vbhz>~uwxC6J(!bJRz&ha8 zf#1E>d%J0nD>Z168aU$?e==@6GI1xMNAv*VJzHuJLK@i6`c`{iBn-*Ip3j3jlve`HYt%EM(NAfPHE2!loZEWbQl!0&b)_XC zU+NSjbwZn9rQr!Foj73|Y8wiSu5C_qke0TQ89XBaA5KuZq^$yO75GKR)6UGU4afK2 z4|K)w%_DWj?xlY4y(2Dx;aAa6KN*J*KdN})%S%!!zI-CsOYs||Op=1#Jz%%e!EzB8 z)S3L|7C7MR3U=tyNZuHscKRbtIMhv#dEfFB($QkbNbScnvJs}8y&Z#)Wdo#J;(=7! zS+M_SQTUgwV`%~fp!00}HsuANjUp$@@$yUWy)|wp6A4LhNfzBf@brCX0nD#)cS~Gf z;6(b4^c}#gk~|qF9LVDunGyeOTqAs`MI2ThfQbJTE=kuKL>yznxPU(53`{Sr5r^3; z9{fSxM{0ob$KS0uNDRqh;JbQIXKTdb>-6!haCLpe9!I=7zFNk4EJhna{CLF$yipSo zxVylYJd_?+oHSz}Vj}jT_$aA|2kBwm11=bW@tzV#cjLmk#kvLB(E3aI5)NK$H8WzX z<4(q%)bhsxHxB&9#l7dKLC7o60CPw0Z4n!e9O2l*5NB7ZK`QvTVy!zOaV}DWP-`eK z&uI+^2lANX%!oOjvOQ(H(jW#s03c%C#x4fw5>N*rg|atX?p=cz%(p2s;gSYUq(R!_ zkW~g=Ya|Y* z=o}mqETv&ifd)z7V=4d}de$n^0@Kh#qp9^tQ=)^HypjBNL)qo@EefO!Lre^5g6+Gb{y$|**!Tt zx+1zl>);L?_Myq{(WMGA@B&uE^H|r;M`!4~s&{_NaN~mpUY4lmWzm_uwL30{U#N%k+!o=h7 zr3Q%@!vK+Ff!n14PtC(u>u4@Du}U~Rdq_=0c>zfIjwBEK4)H*p^Pfsas)_RBqeH+F z#Sfj(#b2*lVi`CId_}F-+kVXXJTXJc`bKiP3Grwxi!k69H-d>o??i7UD-N?dK_a3u zAN6|9t6{Z3Ww~NL##aRep7obYT6_Tvnnr;h90-u(3~*wg=Rou?9;(IXWR4$1&olq=$@`wI)5*XZ#i?PZ%L(eo5R?HX)v=`4EQ6gViG; zHgYz?Dvo(4!9T%Y#yPAiB*+~M=`PETecM}-tBTBbjK`pC;CO;0C1d@=ysuh|FbG9m!2H}E z(~dAGqA=D8VrmiZlp)XE8^k(bged5}|3qQW6Nlc1e8;6Mlrrvw=0X^fg*uEo8g~?7 zl7%`Xh&zCIrz{tYP_b5*#|iUgx2Gvl=slsTM4uCnq|XtzmxwSVC6S5H_BeHdr#SBX zLTf{*L?jh`lpu5>;&!RL-*;lPL+k{sYkC=v{V;wBkn>Y1eKz9zHJ?wE^nRGT`|W}& zrS;nk3Iz_*B38r3hxqrhRz=LizGfa=lJZxQGT;K^5tv;FfcpqIG2qkytPT-{h!gHF zN_GTpF(OjwA2{TUz^nxj5#ewpCSeRP*yBXFN4STr)wyMF4gVIa66xgRces0Ph6Wr}*hWMMXk3-D>NG2%b&tS)R2Cmd0{$pSibm@TSznCA+T&;J-?_@m2 zB4xfqS|qMQJd$_=2t!hE_Y&h7<0++3yd5jb#n5aS=kc|`0HV(ltpu!beyNc9#Z{$R z84p_`so#=P-4UOo^Am=ocrg(+F@*M>G9HJyFRVDMSjKtWw-`l$une86Yc4zuscJ5~ z%6&r|S}tyHbe@#|Cdp60IFH+kG9*ge8^DQ#MG1?5@z?wb2d(0kFe7eB+!9(QC}-Rp z2}azU{@?chR?|vdd{a;Zr#fq($5}ECC)YSjC?p`yVW|V!KMuV&v|8d`BOT(;;dIDD z$7sHUgATEHS`qt0><^*2h(U)~oCE6a){|RI1LmLdI8GMlYi~7B&pArNL-n~ieGv<5{%|Xy9=9B~xb1I1D zpU#rYRq;#R6YTe3&RE0db>EN1>|{pF&X}D+*b5;40pc0A0z5ZD%Elly|NMzGjGIGk z9fP!>d`bHfum-Hd@DE&)mQGmc5i^dNG2>#!1^EY24 z<~lVO^|X!f-^7Ifrhe3?8NQNA?eHn%{+J8;p*?_m0XPwRIQB3w_Ax{_NbsM|4FBo< z#`hbK7;^ff{s6+itY1E*OTcKAcObX{5!VA};ES^b`l-tmI~sq?NFgr;qAbY!ywqk4 z;~~2k4^(4^a3VH0HWwKC*dZLG`Mu4Ikkx@OiozeX@!Ky!gtP>78##LI#X5;~5xVGl z>9H>Qt%6*&dwZ6+#T-JMh9zl67?L<0+Ik0Ukn$*w{a6UhOl6$=p%etc`V5Ag=!1T- zEWh`b@WYJc=LMG}{87prkL!*L3V_=SoQN43GZdIph!fq@N)unq@xJfTKXB02_kaZ9 zdjKItDW&5#kFJsVR1CjMA$937cClL7_ft<2H=GT-_EUS5L>BdH`zbM`ONy^mpd3;Q zl;1a&4ePzeeNl1(P~xNmsS_FZxu~`OgOcil70KsJ_;Fxm3;2AD_{VT%sePcQhOROT zp9{c0vLc_hNBF&O3GN(d+m82#cG8!fgjmM6Hg3jIb!g?Kp(Oa6{@H80HCI>Jf?_4-noa z+%8Rc=y9GZ%kIL~zzVXOjf2HpBGY$~p@*<1Jp`9HZ<8AMgU?e6fcve~fJK30=tG+C zR^TYUjv1lrLf82mLQG+>4u>wGe~IDY*u#XvLN0U;T%{#?Cw9CdbYk~?Z)h$b*n10w z#v%s*`5z+v`n4nOix^=Z)N&a(GM_vt11TZ6!wdNiu9O*a92f;Em+X7aSWD1CKS`;s zut{HrRj87cv0T(npyC^{6RmMlN_v1~N1jKV<_eNc7=%Kw5A#0YeE?w<$3Dz^Pe{9r z^YBkWQHxw#Rowdy#8C(Em2Sm|1H4zMcsP1J&7a;ah?5klD_XPpLM~9;7fgi_X3BVn9mZp4jM4@ zEUZLpde^|G7(0?x!K)`@&{(RmPRzD2zBYDb|l`8Pi3yAO>j0w;Hf^?fgt~H zNSmRd9V#pbEMuG_0)W@#38WmVe z@kMO=t>zU^pM%hk1I`2>H~6fTI%MOq%!dkqyA?PQ78@1|%t4Z@=|~66WC6Pac6+K* z9AV}FvxWXaMOvXH0U}^sz&f2*YK56Z;LF_hoA~LNQ5Q9Lie2eWxKv__SJSQ+dtX@tf!LoA_^<6u$1?!`B|(lm zH`#lQi&~#+^bYna^Q}ia>O%FI8%U=RjIAJ&MlC}aggo%{BWO*~8Yzzt=`?lIH2AI75;)t9d) z$-$WEU2g(c(v>g>xo>B}wbfPCA9ueS7=UZFrc(WdWOa15m$IwsrM=uMu(LrMA@6lk z9!lzGZ+XIyybLCM&-+tfR`FQGPrJu<#{Cih$oC@|=k6wQ0DKQqUJ00q+|KgBz0dM) zA2Q+gAzY$ePC5jg2K_+=z%2t#1RV=H2Fz~FbE(qA4fZT}I|cv1Bc~f$79iZ#!gZA1 zggaQ8*RRq;+|b_$K(SbAfcAIG*BoF2fjXH8OsWJa$>#*ZkrH&RxZ%X$=H;$dV90jG z9foU%PiL*UevA0GaAkhi&q1M}OHaWo<$BooYr5jM=(+0-scSoF7KnAp^=_@J#Q0)v zq84ynEoFhf+YgRC#{VH;P9mLp3^=$_=~27zW!&u*!~w2_D(-h4@x6#UuAKC2nbz)k zdM5b)XnXU(xQZixeEPjPbXl@2jYhXL8fixNHJW=y*XXh>OR_A<@}XNkHNFitXSgxM z0RnNBYr!Fbu!ImG4x3{G#1Ik^LI?pu9C86BgfE*AV9jCc>G!GbH-}^ycK`T!{6;f1 z{i>_0tE;Q3tNWd$C*xru$6sbpIHh|zr5GXckS~MKoqGV2jAx8z0C@#95%&p3^tPd2 z+YHAIf_p5!93{2;%#eig@)QjSKTpYgR zT1K3U)XwzOS6Vz-1yCJ4%4ak&Is8i@%gZn~;J59()~)z{sd_&_fNAODs5PXo#b?yI z^dWIAn>TZ6j`CWP&m|E{F9eR#Wu?5PErcfx(y=UET)?~)Fe&YwG|0y?e2tW&`WsM8fX4v0cnhjVsY|Njh#%dnbXVRts8*&;{&My)jNq&2!Aol{K1DjXb&{?NMI;1YuqFDDvo%vCrvn1ST!JYuR0Z98~L| za-b;reT}Sp3(wF{t;giQ0QMKksne1MpcchaldV#N9J6y#lZ>8EdPTd8-#f;sfm|j* zhs#O?CM{dK3>rXwN3Da(5jEgm((UpqGU))cBN?L%my~o!ep)R_)UaeX_H+pOUErxC z7ipyABD@pjBZMOr`Y{>2pbIcW#?Xg1r``;!Fzm%{5VbFPOCv9Ni(aDkB`=}OOB!j( zOL&j+f-U(W8{oAYuh6-!nwC zEhYJ`=NL4|!{U9Agx=Q_;>GJqdI5chE4&^jq275l=BhP@>E ziM`J;2nbq`v=ghPe_?+C6eW@{j_6`9sHI}%FHM!d4ruVO-Fa4QHz{8ur%dB{N6UD< zs|jn$QCvM3^=G6r5vY`MeF`{0d(G%Vef=mar|hQ}U||Xf1L#bAMx#wh!ZV}r611WR z87?{bW9dHWzF2x8ArhXr6SmP8NNFPaAJ5&w*vCCRoIc=}Hi`?dUcjW}caz@*B&UY5#ZbSJFG^WdWGAa5gIm9lWJpEYkMlxw7fa+c5UTS0AE@(?g( z0Cxh1EeA|ma{H3o@$Hma8^KU#{6An}`~&O8>O30%8ep%%o_H;sSBHB*m*z3-OODbd z^mBqLkxic^k@1I7(>0pQ@S^)WIDMp#cB7xR;}wQVNgpS{!opZlv+9s70f|g{onC-7 zs+1E3q8#}z*zH`(UtAjE3%M;MYqFt_(s^kn4dG5EHQ^oipe5=&C>_K%%91$8{v|D9 zF4{I&M06jlFpSIfm_ce`RY02q76eR6>PYGUBy5cn47F$xbJ51d-42_G(}gG)!zIb5 zU=a}&f)XabrU@*r$z{Y1@g%Khc-a=JJrVsPW5m&g`=d=NU3h{SnsL1OYzjcJyf> zUZO72X}BUfy9J-sHtJuEL_rtmB>iz%5y$aPW!=1{5UdD{BDw%`0VX93lb5KcUL}}Q z)UQXJL4OUs00WJBXir>{em~x$?PdD)?70|Px>+UX_ktGd-MAYU?rb1zdvPZzJXTVG`}R>G(JUXkq~Dm59v#sf<^5HT_x@mcT^E3 zc!x|&9wOC75ULGhSNj^?sV;oievI$WX`kcYndW9d-p2J`;=A@ie0~+zgX(vT6fIp8 zUm~m#T_D}A>eqJ6HpC+XR!nzdMY1Q>veBabT9PY`rh-%0jql;{L=d9L3yL;JBu|x3 zEusW?(pxb~h*Ic1JQ=Q;f9D!Si{67~;XITvE77Gb#P=|rOu7(H1`U6cSP?MXAl*rQCz@U2AE_xY&Z-^xmpXALw(Q?GM?j!7rx<6c{9HxN`6&K z3ckV41qF9=3Km)amTNKoYw_GtqS?x6$OR@`?1vmy!fA*z!~t@jikV=bLHZChe8_HQ zH{%;@8RnZ_x|oh#N2QOTtrNUjl?M^7)zlP{K?U`Su_zT0sk~ zxy1Om?5nsR7fR+4KI}1K>?##gu3G0_w0>_yj-OGX8v)&j%zr@#?I9mZXt&>fAEh~A~Juxx3DhA;2vO-q@Km=lAgxh zkMp`R36mBrkDQP|5YR3`mhp5}b*`3f0)(!xu8Zgi)U}`2)u-AFaahs2S#vS60sCTC zwWx=1>Jo7{gV$Mv&tYr?L7nVj%vlE`9PUz~G?Pt6pbx3gs{rkeK-*O){07WGOF2iF zq~?w=tSV~?@e+O1g_>|hN8O>-nEfInjv&^WT;N zD&fh*L^b_3z@aIC%6PUhUicoiSqVxl5H_o@T6rI#HMES|i0o3N^_p{e8H11umkDYFviP z9ibdd#Qj1#tn=#4Ksma?^1T6{8S0QBZ5pOXC-6zHiPvcCspixYb1Gxz_3RtUJ*-lB z64y)8iCJsCy`kcVH~er%<*zH7@2g*u zD$7fg>E<8&fGzv2dreBp8W)|A$1%u{NmkH--qEhhUkp0JPty}+&uFYT^$Er*-9Z@U zN~9|JF+fo&f~PehiihsFEcOnfS|;e_i$bqB3mT;lGu0wgZ-_t-aJ*N>Vu;X(Qs<-( zvt_hJ_*~ENT)hA)sJ`Yb==UOchoU^ev$VrpjpatPEyJ%z+wzuL)}U?Fq-q|BwDI2} zIL6UGGPqrhQ!!4UzcV#vm?cG4M}re**X#Ah^bEV*Sh7$E*grgNRkgj#@^W)Cn`Yly zC=xHaEAkujQnJd@(z92*xIjQ6RD`M1!(xuo9BuU&Xp?aAA&v(DZ7Il*hBTUu7NebC zW(P@Ss>OICyX}!%Z+%4h$01Ao1y1S2*ozZ?AA9miXre8si{H;>F%$S8ixz6}Ah6~D z>oQ~@7t^?~*Jl{h^?HlLnIS&daM-G&!D_KM!XE~IxApvrZo6xs*0rhq;(gw>Ht)V2 z&c;T^PU*z-aQ*Vq1nfcaHjdPfG`iev>%Db#9!PWF+$kwVdK0I25nrv2)CQ*$m1P($ zKwhLbrh>z$$&SidZQCZ7Yg1d>v@7IyxdH)~%O7%0C)g)iSX=A3y*c0gkKGbT&+(Pw z>3fTk`l8>oBrSWRPfjn%wb*}tF2bp|7gD}K7lj^!e2Vt0<&>`h`AO)lMCwi6R~g_N zdW&~bD)rKu=eoB0eA~Om$NlZ?{&DGqYr0K28Qkoe4Ek7(H;6t@P_f96B_uhfIm||x z`u!|i2`uy1^U<;H)vJ|bXCp;BIBmQKFmfPY!s`A1p)SZ0#)*{3`9PZ77=DeiZ!14$ zh00%8P&zUG>#=voK^HH}=_(PDQBV9`2pvgZ47zbq=!OUs`Vc)N@IosRUg*O_uCIkY z6u-4b?x={l16om~1o|+7=jsSFF$M~)7@?XpgTOl!!J8fnglRmV_2oOH0A~rJCHuG-OP7upf|e>`BeffpS!OqMfr)E%L64 z(h+Un7;0qj5wQd#{Xw0#MQ^7LvmYoAGpF*L^oQva)5_0cGz=8mXK5G*G#RP5#k9XwE_yQ$@^A7 z*P>3wwYD6Vf9L_cEO-ruUI~R>kxnQtvg%nY>r%dt{-P1sgR(T*`B-PXytpGlYEum2 zt|hBi&wdblFKD9KLFUrZ#M=r=QTrs`PN}s!fCu`+l4>_j-f|23$}P8yOWEV&vu}+P z^}Hm%zcq$e3!#En3!#E50!k7gFbE4kKuO{S6kMU&=1PdJ2((pRj0RyB2n;0g0>eaV zv@A)yfR2M|_?L6lyuIg;_!t(j+E|JIgJ8&fX%Dj}!kuW_Xr5;p>)a_`TdEjcb}=my zm!auda_HijR-do+L1wxn;oz1)Fz9DrpPK!2%K@Sv_e#Z_-#wh)8~lWE0F7use6;9F_H|Mjp^(>#Lob08%pV18%Tda7pMc{8QT zzq2XZmi_11PZ2Ly1GfRV(L2DMRxLSb?8&ekQdb{(S<=hXhhCC&7@M;Qcn_?e>*n=mhbE$u}!WTsY{Rn(mnubIDmTA?OR_Lp^D^C)FkXp(o%7-l2XsM*vRCt z!B!)KLs)LCvTe%Ym}(R6E|16M^m-%qnti-Q`BBS+eLUc1ZLr)t%73{7Bn7+<&JU_H zR+q-bK%=@e78=%?rz9~83k+fw?!(-NvhaaW3hffVK`zuf#VjnKViqP!#4IeJS4Yam z@mW|v#VjnSCVmO1&`G>buD=CTcqI#4D724&lJ*g0p?#pA32KqcVcq4C=g7Ea%I7MJ zJkKUwg#Xv)r7m07?6_i)Zjkn@Ok29Lx7Is*b=VGFv_n+hSUBfHqCfbkq?Um$P%EI( zmc^DGel^Tpi%cyOWrZanT1Ffb&@pax5Hv5QpW&lNWP)_C;LSKF5jHzXV=>w6!Y^~W zAnObHVu<)^@_Yf^?`cc3WJrk#5f0Uq7v*Q>Wj5ZWiYxT=QkxBfZXTEXBiXrG<>bGy z(s|-5Yx3q^m3$IbgJF%s<}fiko9{cE-A{S!$x)^Gkq8YKGA^Ib<@EbY<%~1$m zu@S@TaGT zc&l=}bvo-Q7T@Y(jqa8fw{qOos#0!4`;$>CQBEFKy57L&-YDrO+c$ewHXpg@>Ma*I zo12{%NGBZQEz4&zlxHX+#lG0$bT`wuAa2@t&tDwV^9!M3?x5KlHDe5kvSRLN!FV%C zCpCyya{E{{EgGyggtQRoAa~rPdgJLCCQO{%Os-k6-8<9K=xwbk-`Ka-Io&pW0Sg6O z4u4hoNZ*imYeLjMzavubWeUSq$|H zp`adoYk`MBbS}f{`MLb_{~hhWnCGg;e@;UdIPIU?Eb5hoEfBL(3;2%~fd8Vkg8#68 zkacqcCm=%_h~0Lh!4?j)M8hi%7oSx7ol`CEd|wN8x;M2oIXx|{?y93-fCUrRJle4J z?*+_0*4#Yd91D6}t!rNhIA=d5-mOL-8zAS|6wTqi>@ZXG2Gg`99B>J%C5Od@uokNf zPCD5Nx6A1cHB7d(Pc}Fv+k6dg#kmq3sW&wV*X#v?`a*0TouvLJY#L5Kx+ZMOn{$Bjjj*P zA=WmKQfB`}fk*lqwGJW@K+#-5hlu71>Y}|$b2E#qEhJ&=$o4ehqrfqH^9Q@mOH9>j zQxf-weh9ZLyJ9dibFh+~oTX^D5#5Q<7LU~8E_fYqXb_XmmrVQve4A>?mMj_M>E4Mt zxb8?Ql$)k~l1|T0idrb|ilK3kz<< z_P>eqyk_3dUyJGIg-{{K0!l3wWrZ9sEQ{Vpi=Yc7Ct5@^WSSgx*5IM4>nw(%=Z{~w zIewW=yDWa|dB>l>a8CmNypQc?n}3#OO-Qh&{Y<$_IrM6pEiuuW_IqH>16CifA{)V; z8q40)Q@`JR`I4owl$vzu?%%T|>{rUWIW@~=B17%bd^FhU($T##h}{U0P1QDX&jX1r^6Q#SRP6wh-#&F>?XECQ|kQ zZ-*bfp_fyki@ZpY2;*s8^p1n-9cZKcok-aWVxSL1pclqKqx5-V@J6BT2=q$%stAUQ z7SM-Mk>8^9HN@O;aiq?A`Tj`ROCnIc{Ot(z(imuR1X{0B0-i{<5ookFa4G_A_*<0M z{s^=&(iXk+&j>VtkdTaisYYI6Eh3GT$p2IIuFDizKI7|YpD!=$4GNj6&b2^=rCD$=+1JsR-d1P#masy@?uC`xqJm*AJCDL|ak;j%O&yd&vfoZ7mEDhz2Pt}V6Bhfn zuCHkbxWDXfY^Yhk6)oeKdCQ&`E#vK72=!>Gy*-deqGB0xGGi>qc`JPp$7dmB&xM_b zTyI&2+t9W+nG2kT#fYZa6Gt`5ML=^Xn{eNphjN@#wD3i^^`>)>-H9 z&n)+MnSG_+t}cUTOIvWtm7c#O&QUSYFVTTG@dQ)OLUWmQ9iWIc9l_JtiI z_m1x9ZdRGl+`XaEbvqewx4W=2j9ak7Dz{ND+5MkeCoP$R=Mxia+ImrEXuHYOTVVHi z><+hEViREdm|*+wBWxdVHwC-{-T-^Ow^!}s1W0BUMUG-e2-FDz+q4u;qa!Um5?yf9 zHaVS}f^CS7JQ(oScnvd22lM@2PvArH({5@Rb2!FYCaVL@=E9COtgXo3+8W4WVcARI zBj(kxE>I;h7V3>iWGvLPC^Ra)Vm=di#eCL-`4$*3-@3IlpNZdu*Fy3x<}(2m^BFq>HXI!US5>+vxI=D2Kcp3bnalgpdZO(L;`opOuLj`S+cXM$osr>{-=zYkG zl#S7pCSn4Z`6$dmW*|iyQ(wOG&f)H_-JM%-;sm>Xa$S4hcy9Laq;ft+L?0q_GHA>P zUsYX=NC*r`OsO#=l00z>1?s}AOwYLUKg!D_Q$}xaaB^}m*qf2TW~SHWauw+D92+UM zxi+Uab?qL*Yk8A#+w2Ry8<@Sxy@^KTCQl={#_Q%IoU3HmdAjGn>d)oUaL*9Bj9E@YzvRYSc zTc_O2CY}B!uW~PFrtSt7NzZ;k5WypzTO;ED>C-<||M<&_iq~f0>4v2fnP89b#suzQLmo5f%$3UaC*DneMO;j87 zNt9BnmMGP0TVw8sQqu5#v`!k!g1$z+wkz637OQ{;fQPhyHDO0KLv}P$5S#H8VFQ+6 z)Oi7+pk`07GMx6M{E#!~Jxf`crMRr@MR$2YH0MiYn{;(aL19TrVL?fRe>6q~C4SzP zfw^w>8|o1T(*-TG4|Ayi^a+$)5*`y2?4ltsaJ{SXuWZ%9&BvzwE_QTk_6(0g0gI$1 zNmjAAa|z2@^tK(cmBeK$)$XDdV4KCbHZ*bbh2MGf;#(#VYS{Hh~dg*mu=>&3!JnJjCXdCy}RNVD=aQ}psc%|{bq9Z zSA`{9c3=-m<>Y}f$QZ5o@g5^6Rth3em!9g&0~Np@fwuA0DBLGqfm(q9!-v+06=0IM z-%ixXu=e;GF**z(ya-Lx?7YzkRbs_BmNvA<2Q+!mK=5q&I)iEx+s+<|ks;|@pPo`* zUR9TAU23ned&hIKvT|1EW@lwd)(&H}t0Q2?`>JMTgdHs?G8ZUg>}a8x{_?&>edJ3c zG7?)~%z&SX9q%yUBE#Jqz;GuXajn7o8{!Opa{qYl3}Kctz&V2AnU!;`@_CDt7TzkY z7I1Hnm)2|1+u+6!NfOt`sx}U*Aqn%mCI6Tty!r(XJ@E=QOfyS zEc$|vY_c3d6DSqXXscq&Ht=<3PCsvzC>yrd&?@rgRSbT<&P-+VVtNx+TUZ{*wo~~M z043pd=34m2;57LH$p1~2$g3wCguDG@D#e&|^Gp%8+tX&PWbp~Q$PzCtGgAWG9nodx zESFh=f*1ZR*5beH-{rrb>ctB4Sd;4}H}czVay1cGczv8#RibBNMhWp%NFhiAMd2t( zDePc4{a9h9q~66MBjm~u55tj>uqug(jT~$3?QON$vzcDXvfEmFPndJF%<`yVmCt6+ z!jzM3&&f5LbMuOdzJD34oAYF~nCNRBskp#zq&f;dA0GtG6F%TWvCJ56PLPejadX@cSEJ%Rcb> z>qkE`<{~U;(%2%pvxxBwTV}rH%x*||z>02(8f0`Xd_@D!qDo9wuNQ+ z*4ecoZGBlqU42z$=kS`T3G2`nLr7a?v({8tOP7zV-Lg5}8m!JSmzoPp^ohyKySmr( zwr1vAit_XINlR8O?;Q^7kW}6Z%n&sDmM#YMPzolft>)A&<74HltaID{r3JrTo{{Tr zurwNTDFr>_f76`#ajIuOr*W!&jBT5n?>Xr~Ux4T63(?}XkEtj6(ZC$6I-@7V%C<;# z(Ay%r2x6AE)!YwC9P4*Ywgxx3D_47b!*y8ZZgf)mL{){|7ie%aN~ulb4OIjF`c)My zg;fvw0;6y^ozBL!&2`Q|qjUD3RQH{zTL-%jE6h~4>TRapIlbo5?^r6Ns-Cg23d`(o zQL+vtlcb-JeF%G%OhY(1+$~Kfn|15Tfm?44{qA?Jul6rzWs`T@F{%8{Gl`xH-zSrA z=0fPlaQ5A+*$oFG_y2wE+P^P?qgJMUT)@HLV8A*(i-PmlPEBlyV39(1-Z}e~g?J!E zq79VCa+Va4j#=0)-8^A2MDWj-h!^Kog#NEXPopOEbTgN2VHNfxDx-%#k}77$1uNtg zQ|E`g$hZj|zzR8AuiWQpYVy!u?wjy?`DkeuqlM2c3!%aSTL={vn1GTsBrphTsGnAN z;FpAAt3ux;ni(i^{H`63Nmk`(LDRBjO$BUx_5|+A#a-m-=g+?@x}a{6F*9Jhp1fypgI#No zq-_d2x+k{qvf1M`urKzh1Ao6RUkvIFTxL{DdCPp~byO=)ROxyo&z zoY%(t6}~X(doIBXp+Z&#lw?(u6|%apETj^xK(;4#8d^VV6};jn-@ACikgS!H4HFlC z@5zg2@L8J@7h<_A;nt*_`1qWpTb2J&PTrf8A0MBebT6=0!``8+%_XqSTrn(V5BC1* zz&=B=PMd59?NdHH_L8Jmev$58w#=Q*oJcf4OZmOLrEpavEnNr|Efr8|sVFO2T8&YO z+Eu7Q+p75n@BM{1#JChtl6Qflk?(%sP%gs)3K@>jM)D(|el9=c32V_>9=i&!gAcGW z>;}41`7LvAX5-_Vm80W?ftTg2+Zxllg;2yYBW0;|qO4e>d5|4v-^7fUinAfGR-qa` z;U#cBLqz5xb#c&W!D`noxiBZQQ1YUBDRyn=(V`HZ5f~?}Q#KeSp_A}Sv^vv`W zYejAOQ@WZ`TXjW7dU|G2ZdGm}ny2|Ldz{@X{RKUmgIb~M;Rf&($g`I1DqXFuF1m7y zigIzW#~W)q>-_$@&f3PhqMXj0BL0T<3E4x$5E4Um4B;(@M|EK9i``XZ(sLU*vKMfO z-KRXgw`;4%v$bpQUT;f_cdv9}>KWujwjw31#qDVU=0Sl8n4wpJeLKEKb`N0BR_b>4 zkn&^PH+vmQ^Iv&nXb_C1 zmWlRyyUSnSxY0hg*4|eMv#MsTw|UYH8djrClrM#uotlGM_^wh)RCLL!r)8b=(xGWt zFTIRV;pLWro*Zcme!&IBLw&ikUjwK3{k;D!;G7zXj2_xYqNjZ%C`DtefoJApFSLN7 z?zFknlEnK^#G0rFv7rfFXGt^KO7OJHt3wYNq;+d`Q(dds8`x8EK)LMFOMwq_J?-@X zreThsWDdJ8@V$wD=b84%%GdL3azwT8JJn?1vQ3qw4zUMAFCiBSNFh)vjTDX4YtRyW zCmgghOHZQ?-=P6`?x3FM4u-Y&3DUFnd3yG-6)&H6FeycnmLx#Wp8hW>U-@=HAT>2m zz}C!Kfr*bj&aR)=G(>16Aev!lZ~)_SsO%+YZd`*VT2 z^rY35pYO7sEOi%9>x$4iWMrYW_kkulVFH5;9K(u^IaT<{WE4@QWGk^FOM} za#z9(Gs%X16Q7)NHXCF%$#d3*Fg`uFA7e&`&@~?_7@q8R$`?XUhE^Uv4Avi#4$dC> z2h|3hD;0>+umZxRQ@v~~w0Z{nlxFu!hxujYrGcCB;jptU1~=VhWN#{i>$ml8TkqgC zTp(RL%dbDveM56sawz~!CI{k~{ADqoIvRQ@bo7!-P|bA^2J0o%bds3ZEcS37x4P*T z4zFb>bVbKjuXk(56<=_-x4XZ95%Q{YqP1lbx#3X4KrnY&#iHhd!}VAM&t+G?w@x5h zH$;erq)SE?V3Kie3Xaa_95T}GT~0eCp}<7t>X}?{3+<2cju)@rx@ALgagE(xQ_PC7 z7g%|9Gag91X}zPyS?f@~NkR|WKE>$k1V)lKje&d$u0d6#>NqSRw~gc0FU!tndOXZ_ z)y9phuHBTvh=mFuLdmFA5**H;v8FRlO|>p(Zvl17nw z!Ew$5PC1Q3SEPozjn{9e>|MXU_uA`ER+f~OmVp1tA6SX??-cl*{*ZH1uzkwq zno2;Jl+f;<+!dQ>jldkWZ4y^4T`)26*3#}xL&|fk#OZcdC@%ns#)($i z(MleBq-ZDx3m-13-GNzxazdivJa$d@@T#$~Rm0tVBO`s*(o!p~giS-YE8jyGK6}mD z>FKq~p`lH~_0{as>iYU><%(*UixNd!`G^$bBTe0p0P-;lq}kOx!up$=S9rFxzY*Ge z_5K3~oGmTPYYZ)K8FyeJ;(I0DYjHbi6rDU%^NgtcY^wPh!U$B$#J->Un;q$RQzVAnK`3^1_8>M)N4K$U!nEhh>9RZrQ(o z%a;Afw0Ha7^5MVR?Mv7{#agEJ?VD1bXqj+~ws;R7^tQ0Rt={HlFZy21yhJY_qYmbI zD>Ps8Y#E)1Pe+#8qv>1=g2SwG)A`qZ;g(xg^(HS_)wXs56gWK|C$0pxZ~Bv~Zrr}M zzctMp+%vT*IMFcH_>$=cKIX^Zdltyr_R6icRk)*`bFy>=<^!>Sj%OUXXG zl-;cSUb0Rp0koh0%5C<0(0=${F#E&z+!$*gUdk%A&~4kEQv%>qE}ws_=o?sTun%F* z%(D-%VJx>awFDaNJeY^ybpHOET2^rQ?bNa5ELCxmb;xGEyL=23@Ej4uA@!775&n*~ zW2=^=mqS4jRzsx~XoYGUVyhKmOyLDrq{bSO_svXgtQx2sAD`JbJy|_aJW`w;ws>vM=)jT)UaVs6Ve|T@wPJ_FwzN)^i`l18n zm1)-8x)O(eXX2jzy1;NvN1&@~_o$&am|0L>WGNrEnKKHOnzLHhl(bdbTO@6JaA-=amw$aNe~0hJa;bgNHWDNS)uXbwt)_ zCF^g@fu&0W=HJYoSXVx^d8Al*nUz&uc3l8uhOJAhh()5?dGdh8I0Ul-CMKFSd*ZFP zxa9D)PAqHCdP?-Zv#e4p(G4-iJ?iQO?!ioo@7>VNOAv$CYo4DY9GI4*V(^vY;94&A z)N%ISarV=R3B^Zu2ydF!@8LIxzl+RhWNL9JMtLoCXDOejbNH@CSfAX@?v_2gnptmu&o=v{XmTqR;G@} zfrORGIUi#Q##)(H#m}Br{4rLh=%+=jOsi7LUZo4DL7RtLnWXnV+sd>mRqVIoim@_z zEsI*2Rwclmnmxg-%=PN1NFWYCDvjjU$12tJp<9W|w;rjr+iQ9s6{9cHf8C$ty|ZXmex8P zwWVZJT91#f=^q=ct*ok3{v|QsQa5^&Ta@AP$w{I%(VUJhj#`w`vg`t;Wfn)* z`gO~1+$po(b~f%Puv!Zox>0XEoA}9KM_u~>`?c~v8+WWPDX1%i^)GQ>p_9vuuqbJ~ z#a0qyQF_L%7<4XQw{H0tulSv_pt!ie3Br#bAMC8|7+@*NzXq)Z)rB_5rMjks(SX<% z`hE>YSqerOEMw?lJ`%{3;;Tw(Qk&`vQ7&`6uqCGsAc5HjNBjHV_q*&qd^s>bn>llR zfyie@4J)}N8LlDh`bQ1Pc^P`FbRO<{%9K7Z)lRt(36v<^=q^~F=?+k;G&bzr1TzwC zBF{XUL4}3qnA|DEwbU#mk%I*-vq%;a$rt6OfzPSoMH6JGh4*`e?LRtF;%i@HEUvpz zO;QU<&fdYn-tKKKKN8iRXI7pP@>j`8{nvn&SMpUvVMUXX#FIWPe0A_AFL`Xt3of4MM*i?5Iio=5u2ARN_812 zCT9;){%M&zz_Vh8hC+AWEs4|^HC;;%vq3ON~@ErT598JMc~b|K08YoQ>8S;lRMSya`tG#wMTH>}z^A&)d{Q z7N*e25Dmb=uU#eYtEaIh*Wc z)sV?FSfyl-jZqEI{qv%2{X)(_!NU;>BGDZ1LXGC&6Zc5cFy66_#*J+nmEr)a`5wtD z4-UmE#Gz(l(IYu_0Xn(a-S4)cxqVe%d z;|wVY`$Wsj+bhaD%9LzsH@vxdQ7amuu;tNim=S1QH@+u9+GNb;h*9u#bFh@*>Sj+W z&A3L{RnmbegifcXSo8EWVVxK2!gp?e5mt6N=O$4PPa3scfLfTwh3~njg{XHhLTQn3@!;9QNE6l70u8H zThX_su?7Yclb=e7eeZ8lOdeyB;|(Y62!s?C4!eWm$T?&Em$QAPo-G|6TRf%SoST1J zTpe_|g4M;7I@!|hU~+K6>6{2EvyL{*T9Y?7)v-8FYpX~3xUT7DaD8qTEyF31@X6sa zBRk=|IkXkGKNZ;JBx3?6`Oqq=hB=!eW#RLK*mOy0&GhJc<>!%ugpQ3=m-Vd~+JO9+c_#`1C&gu?dD>oh$k19` zABVRLQiOtAm+A(Ko($9W?WT;L@cxPfY&TNVQg{wd?3NY@>zmy?6TwI_V2Z?kkg>&` zBN!jX$k7W9iVTSA)I@|PPh%I-5H33yn}%>q`l-l62n?ny9qU9A!ZDT>lZHTYCv-Mt z7ML7Z56GA6YQ=_JW4j9W%0VV*~Q97zsah%G|qIihXOmz z-V&RqsK{e0@tR+2obV(iXn!}c?nz^CxFNXB=iAy@)?~3Xm6bJ@lr+<*>4Yzpr}~j7kxD~(HhlM1XZ`5z<(+|!n&Cj*n%#*z^$pg#+>-Rl@&gxD zBe|x&+-2CAxX-Y5d1Jd)YOz}|DI_(`zI-bPt^C4P8Qmg)<+5=^KeAI!eO4UC4^WH z`fkxvk^0#ZH6S(uz3rGxAkOJ%SWR)kRg}Y=H>q5%=2vrXnOhI!Ek|c4TAN6-*;!;cyyE2*dzo(Ej`(CrPEI-? z<^LC^=QXrC;V)Fat?~^1F2$IUD;IkZ0?DGyg6Y;|8VI@V4W7`>vFhex>@kmzmzL1b zzlYB3WTVPG6MM34sd={4Z;}QQI-e|?VNRQOZk1Glb3Q7$%&WFpOr(}KH6m|OA@Ftv zeJvNyEZ^=8wR=46?Vi!mmd?(W@ji$`C`soUJb2l!yGGMe*ESAL)^BX8_q*!r+b0p+ z^#xX4cV*p9qJ`{y%AgH<;6`{Xb!aWTFWC9Wp`jOK5UC%;a4EBI?9Q20QqD+;Ia4>) z&oUJ^`}ycb<&Bc^DRdLhmNta7TU75rXVTDJB(reHfz+pQM`fQo*hgE)uyf4O;PxDo zj7_8U^&`y-6AO`DD0WuTt`xGG3&FLB9T<*nFBmR;u1#&N)9z4{ojPPXJXVIcT=2pd zA$&D!{j|68kk`jY$_})Hq&y3{fS;2i@Ke0pRu46#Hiq<2I8+Z!-G}_r|2{uIr?xm9 zpI~c+yiQ?d{qjqw1FPGarFB^sL&jllk%WIK;PHFI@=gASkZ;Oc;{2vutjkvpe24wv zN!J&6R+31>La&LO7LuTLND!S2(v6ikdX^UEFE zv6(TwBT!|_KXz>A2qmnzn%Rr%d%ioe^B9Y3c738&U$IMf+%wlZx?!n&TH4DL+~8Qiv? zQoiF)#k;M+5K7oJ_>-P>%L9SsXcyNgJeKw;_@~$IkE5|5pp@Ytpa_yhpob&S^Es6F z0LMT*01PoXT!cYDm&cSP3<4@J@R7$cQ0yy=!A@KusFWa}7>L66kr1IGYu_eDCiq32 zdrqrCMsD3XEQhr1`}cf?^&r(9K8$wr*^twBN>Gwa+~6|^hkh)ea9PEuM=m7nB*>pw zX^7fMWWmz8%rr^35YteNr9a06PNU}1A`w*JUk`zyQ_IDf&#=5`763|_T%8hV^YxdX zVshQ(u&h{0tMYm)T#Xm9SLLvWu$o<)wJKNXw@HVIleAt%t70^J!E52MjL(?8T#!t` zXgc=>hhMoiw|8uExi_`bIbC$+S}eJ^66PI))iU86X~Q8{uC_K84#8@BtvHX$kV}Qhc_6Ku<9C|b_ToeWlb}Gcdo5)HwV2q3#?(Zx#i;SZ<5i=R|sjP1hxfl zcX+Li)Ph4;8nlE#>Wx|2H@iYjZck&Qr{@8r4&CtV)(hQR65w{Y8k-$XcVP29W1D}R zy?5LNrvtbl>FhMOlo7WyJ8%RXMWIsJO~~@dJ*d3&=b2mYVMmn?+qV=xr;9ZNeg+h1 zi9~yN8x0nm>TQl}`~y9#eC&L~jLvKK_`IIthNKxCy8%lZxp^xZ*G-+DFwtLH8E|#F z1Liz-%j6r`HO?JVofCUWGRdN(EFNPdas@pD!yQLqV)*cE9`cg~Z?T!Xsw?C-7d(3K zC0%;3%!j0r?byQI<;Rua-_hyZQO^pLhvmEiNI=JS-$+k$a}QnM03x@%ra1H$LjVU# zTz-J*=VsW;v(kZ?=eN$@0D8JW&r;0w+3KEIZe>P$H*(yVAS&iSGSTDQ`ec+5}$)@{9=7j1L5R@y=X=yD|c8cS`%v5`C3OUb!ko3ss=|@Nz=00 zlChTc+edx1wqTmwvcAbRP*XGDY921JFKe~d`H5e=6|~Z6=9UtlwuKEW*k!;|I-~r0 zB*LeePQf`@Wf$usE^Th>+~)I#x*R*}mA|r?2)m$3ZkRj7e!<$|@5Anyodx99xtrMw z%m)bO1P=KMAiv~gs#VC9xa%16qYSJlUgk!Wd6+|LRmfE+^BBidr$R(sgc&-W-*p6c z{e+i+*5{C$=PqT>a7Y6nbOO!|k=h+p2Hd%UeUbeF=Q;f^^3IkI4lbw5T2W!e#lG0r zeoK2Ff9ohOxuv9>zd>$pWk=WxawDBjoEFsww_bJ8P z?eIm@Vl{#YKaxVQ8}GT#m|12vm-a|&T08nGtQWn)j;ueJQjt+yT3Q_J>1iomp1l^L z$~0G^Eyv`ha0XrEAUV?`W^;GL~1A#5EGEl0h7PIfAHaJdO*nJKhC5~E3+tj6>5JBt%fc_ z{$6yg!cGJ?7B_DR& zrL~kUZ*1wIaW8tR5q7Mofy@gKWRGB-Kk7S&P0ME1Tw*DWw->sDqSs0)E7=!&Tk<>d z?s+0TGY_roZ7Z`75tcHv;0Rj#6SM&1JuOWg@6SDW>q=I6H-4FFx_VH7>mg}wMoXVT zuVs;aLAi=VNkpA5KHzC)k8G~Oa365guFA-=VGl-*X+>?rKu2+Tj%j6WLtil1XRqnO z{&)7pW=C;LYF=DXT2_8R)-rQ^&a##gM{}?++gK8xm)2BBTUyM4wEXyDV@@IGkdP+M zp)~9;7Z!SWwlf%FIrOH=nzo^?uC*EI+Y`W?5)$hpVb=7vLT$=dc&-ihbAdID_$?QwFk)<*7nf%vWB^t$LRhdN)R|HSD(1bkAm5yw zV{T)eZcj&5Wq)F6+V3 z%SdSG6{v$l5B_lJ;0xgzVCAV9T{f~j@U)8X2r-gWoNN5?=AKaNxyaYmjx<)YIVZpS z_CIcO20Jh3HLF#zo4hp{Ik_38T))rh=}+_2)cBO$oB*bI3Fm2Fh1eKICwX?^erA=W zwY8;XH8lw}rDb(>Wu-Ofxx41Z*`=C)qn1DgzsjMtSWun3fvucKzO zrLw9hy{M|v!fBA|sw_oSRYev|65_O!Le00iMuyN)%haY}0Ga1~v(Nj+-pS0*&&&#!fz#_KhEK$+ZU1LRPexZkNl8Hly&b!j?N<(8D@|JR za*ND)dED;440QYpbfir`p{ti~^VY5Pwd55S z=MjNN%9PO1=faJ!N0c!%8-jz}yZo2~BJ?yVd4 zPD?GGV9i+PUtsxe#%*;rKtB z3o%2J3qf`6i|7q>HlWLd)CdDk%ruz{R0u~@8GhJblU!Q1R8Ds|GgcL?GSyb4=yWLw z(+SB2-O|chQ%_Nk(dkH+mzI?-sqL>@l9{GA=+ZNj*L&O2OD#!yh6B@c$8zIx3zlfp z9iFT;YqC6!bnTJ?fB;U=F+-BYmfq%VPiwHJrP&)GG!o5AJRdZNKG|u?R44eX)Qh4xI(wG@u;p z^0iQ^%x*-GB3yk2Vs*SSwR*j!U(~R&HMjzGSC!X#yaPmq&9!&0%Z9qE2E02bORYy6 zSL#+Y9xb&_macLft*M->s=nK?iqEP~!76c1rB@$3e>m|gMaQiDR=H~ zT-H&}&;D{?bQI;(Sq(KoPhbQtpBtC5_$&ur>c9pwF6Qq0@)gRXc;mB8c-BMw3eO** zeTyi|!ey(k80%9m!yEez737717iF`~DjUHYEeo3d43Fmt*`P_m8rF!knulTRLe{Bh-W{-^X`|9tN~x`_8TYD(F&ydJd{w)*(-^N#9(0cwsVs0JA*dOp80J2$MA6LGdIb*WJ3ghoOV(h z5ByRLZHW5VqLkTacMW|7mGt=%@`X1~9y^witJCFWK7tll-qH$$Z*uDM z3bfjyeEu0NAnMphXg$2m5*wNgQ8JiJ?BEl#LFva&UV5y-^@!!v)$eC$e_CMg@D5g@vxVx#hsr_krRSAbK?$!61~CCZJ)idkAm;asLEN~q5b3o+%dxMpok{yXv`lJ_Q%s0 zg+{0SA#@EvZyP@TDl_2kP>8)6Qgyh{^@NVDxjE%3V7!~SAob1u1lmn6J$oyj9ICi5 zGkO3gE5k;12KBk<_r>fCxLTZ!UW;;=U2ah}vPT!SIcD2vLOILwm_4peF`(#I@HZOZ zZ`dU7>?fQe@59h;XRZXC&hrKQ^mhQK-~U7Weh>Y=9ltM^)&ll(-36gYLYa-`R3E!G|?RB`varY*O3o{d0eWo_~gye~u`Dk71MibT~YCc(ZG;6BZ719>^<#Y&nB7~s^e+|+zbC+`552>_RCD1^3 zQsSRRcZT*NJOUb%NDm{bwi4(aC1M1ZICR|Qi<$LY z_`T|#i3#dq@crxHyH)!6or0_PYg{V)BGDh{dFqE}=l1h{xC4G9om6X+0%{)zsE?JO zz(Z={veGpBCVECMH9bvw5ORQQlH16C6XQXQ35q+@rM$mIxto1$M3JPx4E958QPz)0 z^6Zbd9G$p%;@*4lb`)4nAD#OpuzZhVXh;`QN7j5ygl+amL$fzZ_pF#rm-APgxmCVx zXk*war(**4rBP9&>+N9-p5&`N8Dm2j`NUxw+G~!ADEMZa$mTe)=Hj!(a5_ zQS?artLTi`r!;=aC|w30u8Z3^|5q&SJMm#+0m^I?z?b$;fo}2^^kH8697Dpc5q<2bqc=q%uG02w0 z(;!1~)M?ejqE?@ndlS64)Z1&_Z&bQ*0KA z&HgJ&ZoP-5W%ywFp6~Kc=1i8C1m;7=aWqvs1R=x%8!OLGLe& z0>-A#MSE6wRukD77mMW+6qiU~=-b zBZP)aK8Lnn*|RRp8k@?^)9EU6@(Xfw`ik6H^JkE^Feauun>5~Qr?LO%O^pLt?wx1% z8lArvS;#XO#m-N$mPCSSE_Zh3QNUPCA@Z!NxI{Jo=+%ucxKS<>!$YgkY2k3ei!h4*Wd{^+s!u6`Z^1 z|An&0EwKerAEG-9WKQH1|?{kRY$`Xt60rPRLBv_PF%sv0( z0*)-gBm$|@K#Zb)up3Bg!L|{(*F5WlJZl|YpQ8!-*!Pt#_WjfUoY&ZBi->IYgUQKH zCnqEQ6^&iO68IV7H?$U$$JgxB_&8WJItt5^M#axO^Mj(QBD6`T&a6XS2beRqo>xcN z<k=ikYcrMUA1 z>V*A?xUhkt|HD3vtSrSXEs|GR!79>i35m8erB;ET`;hYfo|m`Y5T7VXiSe(^()n=Y zh4PrCRqFa4+4EhqAHe$2p8gl$uSD9E0=qA!RkYHkjL8Si{9d-5{u8Hf_PMjj6#nm- zBw)Hz@a^=^xpgV{2RrK!CfqYc=ek#uoLy7<7TY&i4DD13r9qj5u& zG0wiJbt7h+&9C-^)bFx7` z5gkC37r`{TM9zwMt8EWwE%;X7}#3$@n+eJYez^6u2`{HaR(eplQJ5&d>LlhC0pe;$kXC?`U}o zcwmw@BkQh$>>`~5@i#2gnjGRmfmj7Yf6$`>ZAS5E2!j#M6{xczX`SclnApf!^X6;0m5SH{h(t#BFM)#I^&YqrN-b!FVPfij2T zuZehU;NZ^qE8j3UD=Hh~jE!@KI$LdvUZce>f(In=v<8YVU@4W>$Y}8pi)69S$1p&U zX(69S*!Xq=Qsa~uI6e@4X2Zwqu|GDr-3>^-ZD2L^yT+_zyXZj?zn`6?<2?@z4ZRg` z=eh%aPp-$$?!%KCm}V(uDnd&m4~MS`Vm%uh$#AI_Swuu&DH!QeMI~8c&DdkI0{=W) z+gqo-x{$Wn;ch*Oe=VMd7M$Yan@Vs_wic`yT~UBtC-obe?4A}6|BAo%rVS7jtOg)A zmCpaj)o6@-2Ll3ER5{jmXl0VBq-=D{u3FFCcMq<-_wKy>Kl~wlBy;xocRTvVa&x{r zuKblwW9IR4zAFgXHIR4F5+ID8P9ho+*)*}W2mk(pL@f8_j{Sf7(|+30yZ`3(JsVk@ zeWbZ*)ZVlHX7<%4hocF&;X(1IZd&P?lXhC)YN*CD5QOO(W>h*J$4t4B=pJ;@%FKF8 zMqy!wYq}lJ4Uu-SMm)&Gn4fR7xpUZFrH;*gFFCQh=7jT^xy)F@ShPlz(w9mt{J7f&%Z;)y2w`uJP;_q?Qip8ozv_1fwUxPCS< z@h$b^Pe~^sD}wK{q4_66#Mwzp>gGRJ42vyFA+8hio-dX-FmT(zz}`ilGxn0^U99}x zDOP?pr$DjDI_4+kP+U}f8H<`{9-nDGHYHb_d6}*$l7drsn?&odu0-Wdg(%wr8Wqc$ zv`-Nl)d`KtG=-WVsQ(g0YA{k%JqGWZA033hq)F`Hd_wE?#>SZzR;T>B*jvONQF@EK z#jGyqp2k+eY4=!>&yu+@)8Z={BcAkWw!%iL#HV@t(`Xh`tst_5*dKd)l`r=8{-}rY z1QEkzpMqkP(m5m5N<`twHGsadlMLsSH^~+snzR&Ji5$MV; zEzQX`b*=C(=bth=Plth-ohmRZvkNj_2wHudRz&$}jTzf^_<2m!M$*^#OKAxt;}${D zU91jUbCh282)63rIc;^pZH@lg{tMbmgKc7C8}LZ@uQ4)I^s8!Hgul3P-qoNh6cq?dY zRjRGkO08|9VzpGX7rd?37gpO^KT9=aPQL%z`<$6GlYrXa{rdZU-xrw2nZ5VgYp=cb z+H3E<_FCMAg}<@9o}QP;>VvF5*cH)rGH%;x`}h2em7tS+SCiB7r}i=Fs|P+yCaX~XX*draFK z7u$A3T|=orpg!O*LqKE7H_KM&y^pC!MNwAKeDuPj=iZc@hJE$qo6*+`(cxD472pfq z8RHzfdR(24akV*GZ(rY!jT?r$dN29a`^JzV99{d_>Vk_RI(E&hdl>V2T&wfqvpYFko zFMArtl_H~KMTHBSIAkmRtenmE)44BXC8)y=sCTi$&+hDf2dQ(|VrZT`N(ZcEVgWGc z{9xVp*RDg5EhR1ae3%nnt6uhrBY?eH$0wk30k~%h`wVynrDot7)rX?t>G%y2;d-4m zmvQ9C6(UF}p&r2$2wL2|&9mpX*3CxjQEzRad3IM@ZD*EA$qTvNMUDx~>j>rr0?e6T zT%7On(+?>{d*`-vw#==q&Z#WazBwipw%hYO*7>25f==?^fH(e}>qh%RQV3M$o?pV$ zKK-_M=+PS=-Mle1(`3p@*$`r%sHtp{aPq1iA*vb68QhpE@5D-NdX&l?K`GnR0yaqn zvkOfr5A?K0HKnMQq-#h*Khm@#xsvNfkzaGoD1JWHE+^5ouyfmGd;7p+2bGGoYsHL= zy28-P=q@!Xc4~L283p1Dvs(2<+@#(^7pWP7wXi3wvh|OxPO>CflWsr%752+>)Ef#L($m8QavA2xnE$7|=zR{(rTl749W1w*QX&CM-u(PwLScWX;aUI8{? zA|+;+R8Q^H-&$LzO=a_Dw@z!F9epb(oK{#MSw=qsUduJSD)@fw5((x8wG2x(F~WGQ z&L}>7X{TT9!pbikmydSIjd&YjWU}3@>N=L0>v6ks-R|s~mX?}exvT_(HBC)5!3ssL zxGLA>%5`}>>O*u*hpwu-Jsvk+)Tmmod#T&wbuD#!CpXnD4K-Id92LzW?aO4I>OmGS z+cmX*TK!b<=5bFW7VGJHqy{XE?RuEI*C*=qy+_V@6$ldwV?{UgLE{Jk`x8 zbRKQ)!YTl>8TzbH+K#rb!tIvCRe;uNmYUe)?FkL$P@-!Ic)>rdj$1gscH2IVVoNck zwj;g?$Be@qOTR?gZ68Cq3iK>IFlc^Aj57o&Nbfwcar=a9%q-BFAHf({MQ{ zr!p<0^zQZlIJy3Ao7a+7nM23x1Zy7dH4o5gFSJt9R#}?Wm3Ghi6Yu$7OmkV2nbNJu$rg9UVX})7_|1*tM<&xw zGOuD`2K|n9pRn}2;peX41eTniuI_1JYt!?rR@u@$cfJBV-D#}9Ro$KLn;@rExqhYg za){UynU5X-^~`~K@~DRRq2gXFyaa{A4pyQ5;fWkC4lzwD6`2T`5+$0P6!}!6B*Chb z<^t9QytT0L#B~se%P?~?(2WFVt)sFVYG{%-ovm$F_oNjFGR|dtK(lmtf-jw|YfzZU3dNI~a-xOo*3-F3^&qxnZ*`0dN7+!H@ z9tOO8$#42M4PLAZX-6R1vwPRylj^o&^p5l>_n;q>-6{86@Sgv0rpuDdOx*}nfbsky zhAx)`92)o}4m$(1SS3227@1psc`Tzus>f-<_>98aGMQr% z2l|Q>w3$+1$H!A>JjK#}9-sDC71v+1a_s!LH2K!ZKr~HGi%V0cjNq6~E64ZhWA!P& zA1R8aDa+!@nXWmtBbGK2mu4;-hCL2ovh(FW#h8X4bX=5W(KK)(+NUgwwp^O4m#WQ5 zS)#te0dgFrK|{*kxRfD7$`NA<3+gGLBWuu-M4QS4h1{!PiVT=+F@zx7; zA_K$`vfwh_5-ZQ+lC?|%NMt~-Weg;6>hsiU0ZHQ@Ktf%FBeh(8p4b^tT5bh9Fi;}O z4SFjyR1@&vsT=}AXxz#gJ{K2c;nd<4!8)cH@phJLt(pL7NcOR0vqNXlx&?*NQo(qV zzd_n8ZIdpMzA9ZQT_as5{X14v--3nzozfoZUf7&IAUz~KDm^a!M0#5Kx%4aP1?eT} zx6*6UakLxKmEtPs=WO(e-RJ)&ev`e;k++-mzklUd<&a)$bMvMD(yw&K1^oN3=cGSK zZ%OY-A4q>iq~U)^r=(G)AmqjbgqW~FdGoLWsLrLVf>qJBGHYV3tewqbbJ+s6h%IAh zvo&ljJCCl}ux;!T_EmNzyM|qdJH$7!Z?W6how)jNFZ(WgfIY+>WseKKCElg$6F3Ls zFXMOpH_D@bPy9Snnx6NI4`}v4C$lujhwBezy(!Mks2d$o& zr)dSh`1jc0k3!e#qsnQJp0XPT=tofu_!oA5{IhssZ;bb=_)T7Z`ZT1-xBlOod4(yfrKhByNxzVulU|g5BOR6gOZso&f0lNgzQ`+nR>RB& zpE;r+yt2b)vffXh^nz#p=y!T%|A(KA_33y}qt3`5&1xZ~V?K%g2hpS7)!Y9kAB>Pu zMRRj>pwh!Qf5X3{9}jB(SWy46@1Odj7pHN`wQ`&t^vQSADv_UKYc>Sf9>A55<=y3D{E?yR`MViGaf@r7r9gmOR!HXE?`cEm0cqiI#wFDorA z%a@&9l$nO#9zq6WYw-ss&N)XEOJV27vIe%GaBw2KnrGXu!H)b+t3r06oU27$&1-rg z1~(v?qAksUPF+FP=!q0ebcbCPnYSN+|$FxSsE8Vk6Azz;4|;4?T42{{0Kg7I*rJ73pq^+3HDO zzC6RtT9&Y>>NAVgXJ%&9d+winzo$MUqruI;U^ha-$?|eU%>=&nSovV`lb4h6rff(7 zrj!=I;tGk!=x~qc!f_oS3}Vmw8JrLRLKwLQS?~z08v!Af0tl2wQWELILqj}EXo&W? zbqr=H#nC(0XR6(#jznuW=7W8shNVCGc`4GKm53+Vxf7zygY>CMzkPG z4Sqhax0-gY^p?LF(g8=_#$CN9X$6f^B-emVDPvgZvj+SSxf@jhqL6t=tIuL`Ux=2k zybS$*E0qZ_I2olSD}LcAHRurzEx;J6y<6_9fwtYixks-Ft6kI;@F~2y$b0OUZ}B=q zxT#81(Q8FM)N2kPYH8$Uay!itcZ{^`2m-6FRuaEp$=FkqM8pMT*_-IdqmGeb#V%Yv&FYSi><6N5_Kasg$ktR`v`@jN2+;kC^7n>^g73q%Qrf@ zA=?(ad{yKs`6{-rzkdk0pe>Y(@7W}awqTE#=L~S0Io8vEfC@yeI?&Jd$;;JLDmT>6 zK7nZBbuii?;~oWIhlJ57%Guf0ezp8S|LgtolOu2F`OyPMQt9JA!;y&?I_9!-Hntgg!wH;-7;V`sP4? ze?R&uu6w9mqH@vCTI)D%Y`ljF5>{n+A4CuL^Hu@~buS@Y9fP6Q<*Q!T>(=YN8F?@=MZH6>vwb{61SaPKuba^` zQM`z9$dle5;<-rn^PJKUJ?oGNuOYUNsv?X4Nu=wL2nx>=0_*c!1W4qJa)VAeJulTN zau4+D*>yUmRV!32QgSLv{v;%Qt{qH3Hrxd4$;P2kKB+_ zz?!!zn$rQ;gbB5b#2{K%hnzUjm8H2XT~0&$xm=?C4PfqImkg>?2U+?M{*Y&AbThkI zSugUCzifrL27kA(J!-GKntfYctMLRQ?t{KSqiTqF=w+}|La#!$5pem8 zSL0pYrFu{3=`oHJ9YuAZCDfCso#ZQID>Z;~3rmNjiKVcuh7?`~V~WbqKgdd=5psn3 zLuBdU0^C+!n)-@n7>!E$t};8`A34^K++b&-3jLwn&}a*&_FYajUe1Pcbl#`GM9!fh z`Q_JM8`=2UYph1RsQ+SZA)86`oWNLtI+8BeMzM**h5hh~$j4XAxkASRH4lvjfWrX| z2QK5O@AUo~8hVVKtKO+@W*zDiN-MqdeuN_*k`mE=WNq@3kr_ITk;3UkqaJ72uao=` zoGo(jvXDS%CvqTNBxj301m zxlA?G8!}2m^q)S4iRXm$5+f66@~j#^qdmw8-UO`#caqTL>}4L#AFiEC7RX~gez?=0WNxj=*iMUB(skVCDyLzGSHn%_ZZ!I z-*S5CGLix#2`Tw{R63(&MoGU9z5pRp$l@F|ki~h{aO3*fe*e0`MNmpE?;L3AUwp@T z>P{LvXf4fLq69apzw-oqao!z^`&n_Ixr%LM^OScU7Bb19GGv&o#)=RsK4=oS$@_Ags24J z#(N2#sRooSBtfiXMM+-caMRD>R}?#iP3ZpUqi)>#OvC5iGWG_0qfA}K_Lr%JYGE1M zuP!sfz}PSY0&~dT$jjYw^@btT>&bOn{?V_l!kw(=Y_Z$$f2q!SD=I}0_0_Z;tQgUqLRL3*DG z%=l~o2^vii^8}4+F^AHeizxy!7D5~|2Fd(3$b4$o=gWLfGfp=X=+*+dok8Xk4e4)O znGc@QXsOA3jxovnHpqM(n`ocW{1cV=8WzBK7&5;nCi89RIbG(9+Ogt1Oa1=Hi)^9# z5W9=bS051^&BuTySBLviCztso2V=65%YZDJ8mXr>by4dFj0ezEmsNJI-ht>`x6^wB zdC-?456{8VvC|kEQ@pQ9f&qtgj>Y}dqr?mG7>+ObPb2>lbW9G3OLmc;bAV9e<>f;D zb2%c~L^R|atVvVM0EyZymo|`1TuN&4RM&Wkp?xGL|KByAr2zj0l{!lc=2=<`S^UT;~K|T8dN?CL|(2P8ODG%mUz8l z{xhsgI4n|vw9!I37#}SJi}WaMuzcRCgmfv5KcP(t>S?1&Xj3$_F{sA$oZuUpyQ6Ef zIIT(JhOwjEp#K?L2+rcPn)^wLSpc>8I5IZ<|=NovLMpEd)GC$}lz7m?eEnmg|i-ow0)ssFg7rw-)3Ek3wh zqUAN`625lkG~-;NFev@CCFj-mvSGTX1=G+fgB&x;xG{R_Fn6uyK0>Ooc%`ODwcKP$7W%{s z%s#N6zxQHG_u7b$sJP1S8PXSP*0rF+r>9d*lk&pW%rTv8mMzk{=`S6UH=l0B7x~in;7naiejb)X|}kM!raZJ~K9y4zia zWkvbrDfY}|Esb5wDi^iY;tu~xOKx3JQLQ!Ik{j{`>a5U}E2T}iEkKcj{B#$apPEK{ zhtA*mxv9oOyiaoIyiuMtzS~_KL%985pCHPocwPafT<@M91)l=@v>8*Ym zMp6u02j?j)!N$RuoC4DtHV*4j9yJVu!w-8d-fe!IwivL@YHgo>wE^S$i^9{Ug==eF zUazY*0ofaN?_L>??@HFwSY0#u-+$)K&Gmv`GT2t!Iz5INw@l1Gc#wHJPrBgbciNPxp#kS4eA)DIuQ+@? zeR6<1VyCecOX2gHSgoBL7#Kh+E?0NrbQ14?&;^M)0T3{II7x@V>W}n?ll%7%?BBmh zzM$`oH~J!jq&YQ@Mi95@ZKAy{A&FgS9Kr{SU=1RIh@8{GkktSiEci^dI6kbgExP; z(*V=>6rBWQ&%l5sGuxshSxrket~Y08!PT9`#IBs!&@i#Q zzP>yyJ3B4aX2bocuAI&Vg@s++9Zq&0u1Fnpb#~y`sdup8Fkw$x1OC`E167(HdUEn>mg z5%)o=e|q^(ue)SB+j{Weh7I5uagV$jI~CA8YqP>mGD0Y|E=u!2) z5X-vnKI9hnze*F_Z#V#~k_tc*EpWJi!FnhL7ZSKQ+pM=;q8JM>^;dj-hS!cIv ze$}w^5FJ2%-Fig3)9B#ho@}Uyie|Fr|9g*6Gu>R^(W-GOL~5xxtn-4Gn8rf^)sj>dY)_ zPWiTJ)3+|G{=n~Im%IFam%7vC$H>vJ96(?Br5fT+!gH#O8~rlJN8qSy8OGTQV@Tjf zSP-7{+1xi}N?&txZ)0O`vk^0@n=qu$HBJ33E&Wa6y~FQ1Nci9_N;84Y=i+k4+BrQ= zTPsPqzr(}jTKPQMNr04#qq>H<8N~X86Dt+iG2CYUhrCW+M*1!80%H2135a?QpNJq* z(qC1@aND*b-#lqj)zx2b%qgwD=<?t9#z1-4Wc6gY=_*Ba!T& zd67DgMiL}E`e+R5vKkgmqVP2zlY>GrM zz6e{=j+erA_6uvsxOuK?$e*WFGbq%C?9ZK9p^n_BY1D;d^OZQ9b~XoEH+$kstKF+k ztDviOaq2nzc0PqWTB?C6yQG`{6_ojsgnVEufs8AYQv+XwkcYlZrZ2w8`J&YRqWK_Y zRhkhgPQ8cwtmX2C#woNK8neO)8pXF%;O~IkIghu%W4HtEP=C3!clAO~dRckpL|>!* z$8xsnyCtykUby!tK-9+OWmV_pO!T@+9J$~&J3CIzp1riIycDaqiHKp{tNv|fX9~Ng ze176u563rfrGvN(cO#y~KFup4=2Y6vQ12d)cSqJOQQFmS^r_!Ou2U~*5iPQ@hQK}) zh037I)*^C-Z!TFw#d* z@e4|E>Zpt&(<1SQTBmio+z6BnE~ z!9qs2`;{N|eTe@VaW1her}j$cK(bQo3EHbBEB#V_KB!qeLM@4|7wi`DdLxu;yTu8d z3+1xUZimaD-@#vdYJwZ}ckr9=F9sK5h)PjXHfd5>Nqkfa%(r{t-$wU{Ok>Rf4Cs6^ zT0fl=j28{iP`8{bmyO&P7aTBFHEM4g8z~SQynE#&*okX)SE9bir>4wPADJ?B$7qOz zv{zaT{G#3n8L*)jJZw2m?X{f$+3n)R-4R~0V8Jioj?fSf3EUE<7#7iySMQ_Y_+anw zZRY2q!)~&9JqRJ$G`1CPGB9ESjE84I0jQm=;@PdI0 zS1WZRH^j#n;Z#MaD3WG@u#k$_wu6ATMn--}VW0AIAHM3R^7D~~r~P`n5WxvO`>-}| z!_SYgWZd*^J@xQGrvP&0)27Q!me@Rg>Y76_fN|3~X2xF3j2mb+mxmCYBm+@A79OP; za~C4F?8K<2-|HZb5o-s#G_v~A=s{K^KZ&^yjt+zbsE1<)9tsC;_2B&RwQQPRvek)n zFd+90p1&Jcc#q~P&LBWObkLAm&zIhL}ZHx(`%YF0uEC~PW`CY z2u$!-6docIt=GI6g3cq5ubkfSxdwW}CsUWMB^IGlM3o0A1~@rO;1zK8TpRM zsyyuHJgWx{1K;ch-{>3{Uv^}NR@OW;++a#F$IAAYCs^JVW!ZnBUf=?IA?)h;oPL7A zHVzC7zx*`KN+PevX&d6KGyW+>{Th-_G$b8jAcpE`MUhs;%?*zj+j=BS=LNklzK z91cwRxQ&(!W3c*5eOgJ=jzd?x_12Y7pV}EMc})G?$&={mYodJmoLU>@Q}bujA>%1# zG0AruxC}Fl?qP(8N3s+$(g82v*cOZTemNW<;^ep$lRNiebwti$gQlm37sknYL2GXz zkI8nj4}Vh<1-=~l6Z&?htVP1XN!OQ-gky9RIe5lEI5jx~MH_PT;HI%aIL-|9SMmNO zzhEewWb@ciIPrcdl~X^En%SplUnB0u@z2hVy-yNQ8f(SJk|MUwP&~G z@mQ{3Chm`VG`_j=>v3*D8~Z$sIXuwo8NvX4Ufa))(`RJ$7HF!Sx~A%6Fu}_z%_8?s z;I!XI9+kT`Y*3ep6~GdRz?p_G0koSrG;NK-;f;k^OiPq;!JY;*bd$F*U;F}ITT?}RZP*)%sSMb{u#w(G zyBXDqP_XvW2^3LancOw9f$&$C+wevY=dOl~tOG*R4L~T0!j(H6)15(+Z`x25d5vjaUyE(**}&2| z=YkdIkzeV%HZ(3DZ13kV)=<#x{{X@+ytdg4algupnFBa#f`B4||b=Ef~}lTJpI13dOoYOMXEu z>0XYO6m{X6o7$_ha`hTM8sC1 zJMp?Ttm8hoNG5i+o1LFIMB4V zY}K^K8_}NR#-`za=q*ZwrfDEiXu1wkiV(d~%IxU9;_bJu>^-%!_d(O;SVLSBg$9iT z6zc2*ZqS&E*kO4q_AYSlK>nW14zs?;pn0A~RNTYtu-d>{?0FVTUbgyE^;g*i7E3{P z(O)n8=%Wj-xpx90ucV~he;*>Su(V|8I_;Qmk3p+NL`~?05_I+Fev3gD)$@c_tB*Pn z?m6-h);5PsgQw1aMqL2C<{fCYq_6c1(}xPAH3;kk@6l-M^*%L#={0#y-7%%nwC>b9 zy&TxvZyP!|3J);?{{~EdCNRZnmbBXEBHt4j(`^&dYUK>n*Cu)nv0HN}hAer**FUwR z5I^^dpAOIXpCuRYW4bQk4*pChcklxenP78E*NB_(cmNr{U-J-MY7O`XPHGM(-m%Nv-V zHBDz3c7mrIH(EqL=ix*XKbO`PdGh$r z)$sEb=O#Q}g1pJmMgy8>85`iHCe7A=xz8xk666c#p=|WX8fk;pJ{;u7b%@?E`sZmn zDB4lPhe8){j=V$tk!LR|3RD+)^X%xZqEK<5#-EpGx8-|_YKx0&5zrvpo}X7-i{Ggm zbDXO>n~Q6FD8_#-K}ue}9bJl^4ut#wW6Sdt)qKOCtiR(bF3w$)8z|1rEe_<4_vy|J zOl+J**>a1EU5TI15D&krY4zY!wFKJEM_3)h_q#KU&E2Tmc=&uO2u6<6%$w~?PWELZ zy15;Jmo{x@6L{35RGFnFzb3zl{b#IiC_d8TfCJy_<^(u#!I)U&!wQ(mK{L^yKFRD` zTI9*-d)>KxNL3A$AT$#yxlesxpQzK4-;68-<`k*t=xb^IguX%;L&%7O7nU1v zGBO=;GsqfAx6p{1-ldxb7sSpsX@r=${hMa77jMeJHXF_GYG#M4swU5=4NR@CEO+F% z*L1a(Os$_(Zuf_R!Md4i+H~W+4DB#7tXt;c?6I?~a`v)iok3S|z~#+tYj5eKZ^7A1 zmvmM{E%`bO$C3zIsm)7}M&a-z6Nwp}i@9MTj%0E0uk*e5M34pAG}(=dH=L+q`Zc7@Z5CY%dr+P*Uyl`aM?m5pBM`VaahjGj#z(pR=1PO5q1v z6G`;xEX>DU`V0gz5#DaqmC_&CBkVEq79Q8L@uM|ibgsalfA@N{G2wAO% z=kPu9r`Sotc^ZQ+5)3FZYa{zM+CWz8U+B4&eNXjlrx0qXDVH)gdxw1smoGLugeyw9*V z&+eueA%%f}I)b-CJjlEFGkvAs@d^C@09aq)u;L)GpufD_k5{Y^we~^e#{M!h(DK;Cu34V3l*()Noq3Um6x1=}y=NwRdUyi3mGDX^}CcU>Oq5~p7S+tk-LZrDb- z0D`f{L9G(3SO_|DvBy)+waX<34-)h(fPMlnV)j^DuJ6Bo(}Ha=-gF{D+8sKi&x24c26%328*Xdl*-cgan0_4 zLcZv+e{H06ycOe=nKP%*%j5HT@RCGp1u!*nJF+tK@P%li@eJovF!;4>p1ga>5=waq)cTgvOuMSKFbt%`jZJt< zvZ^&11>Nf>hHNGBuBq8+wpr!Hg}E?VlBFh;ITGz9crP>K#cbzp8(A>O6nyu~_kuBZd@qD&%n0K(+3PFJbNhUe z$(67p#H-HZbh$jaIYfBriP21U)97~ydt#9%)?7UB(Ji-7%5$TW*uCgyNDufY1@5p? zMGj#!{aj~`cXFM7s>9nM zkH^C!C5ae3JopazhS6n!#T4QmWb|=tG1c;CeWY4Ub^KW$ofZ@3DU{d8q{Y<0pQGc; zG&$jU3V+tej>Xi-pY@SpF+mP;c!IkvCiu1C&s?6t&Z>n!>(sTFX7Xp9Vir>eEEck?SpNj&{-6XQ(+(1E8OLmtx0GO@fP^3fAaXybltZRH#(O}Q zX-c^!(~!1br0Ft^Cqbqu<&bGqYFwE{xk#o-TL9q%@{N&OltaiZLykDPg&dmPQi>tB z9y_DlQi|i{)-dGOyJM*tKVlN)*04ctd5Vf4%g};rl?up(AN~_^OQ|@G+)}0k;%!86 zve<*%Ql@KiODSMCDM!bXTa(iByOvcoX8V*mI3AqLO9f|hD7`erJg8KO| z^4*3TXu90GZQAwQl#wGxkjA#jH^~{eDMK7%kXvk9VOI8vwtD%dxwcF$xB%yiORh6X zo97`h_MJ}JJm2Z`PO0^`*ggM~(uSmlHp(ofrF<0XBgJA`#-H`EU@fz5iZ&^%hv}eH?7SlOg3(}<) zaSB9gRHtCroo{42gswm-$EU1E$lSeq(Yr!2-hgiz#Iux2mUa3JW0WT&U2B%lPgIkX zR`dH-i5X0<+TgXxpCWu%jBy%n<-Fv zbLZC(8sN;ON$SK(Z@mmE(YU1_Lf!de>*g~R?GEr;K1M{oRyiRpy?IV$eM)kX0c2BJ zT1smB#G-Uh>LilAyX2jaF9!e}w-pjvHda&7Ok#s`SIw_3n^-e{RZ>Aot}_!RvEg80 z0N?UwHOM=0hX{e_nmYf}?y_fQcyfdFcDFs>n;XP*Bumf?DFcHNr6!!gybLk|M_)Jq&{U5Bq zU~}t??)d><*jLiEV5YL`l1siat2wW@IInpYQC5dQr>xPw)Jwy>5TQs6#hcciw@OLX z%YWsPOX474uOd!+v}DK$=tRnrQfKuR_>z-c(+pshZPm$1$*o>jhG#;-c{+H&z6R|( ziuPrYt)k9pI(Ff)G}RPHmfkkE%jaqH7Iw{TtIn?|@MflFb%ZMN%k#aNX_*~0N@`Q1 z+vRdMHhn!UD=j09n0e(PqP-#9I!{Du-0yeFuHf!_{Y zvUQ8vq4gwD-&i8V+XgE{&TqQbZD6F?l-Fy3 z#@+)ok5ojI8pCZGWpsACY#gGfFK)bRS#ptkfX0aQcYIbI#fj4h3-#$wTw;ut($;qtaV3b%qc7>Y3{14Qk|9*^MvcV|NE!xPwH{+ENAsJ53{K`EP(Hxg@x*$<@reIor^_= z6dL`3T%v3M_7n9Ro^nRX zE1?@m8Z~A3k%mXj;^q{_>KYgu zoi%#g0K4C}u2+Nh9JtIHH@;~6shRIYB7PU*Gv+L;Zce&>T`*(4K<`;Rue!CFq#->B zzWcm}rE~kd81*z`PiYAWizAZueETm`G0l{B&*@Ach;_-D0+m?h?ZVO{9 zaTj9&=?zVDsz-a?jj^gH}j`iBiqefDdzNN zFhLmO{DmW+dhDmXUvD-ycB5hDI*Ae4<`4DvZkySw;Cp5mr-{q^Z|~SF{bPsE{*-s& zh`G@?kGLzisz2z!++{3?89>D|v3Oox8!1uWR^7l!yF?a(90o#yqgL@p$wV!<$!~%8 z9ECgMd3+k`R6~7D^VOnY7F?2CRD5RC)hy5Lje(N8r&IdG2Es2=WIE<4(>YkI^09- z9k}nZ&*6T>&cgkHgA;e>zHt4}Yd8<#1K?)yL2wKCB)C)fbhtD50=SL55pFYYhTF~; z!ClT*z+J^x!(GF#g}aWURrqcEHn^M6Q#t=5|0CRc_&sp9@jt=c!S9E=i$4ta&-~AD zck|tF_wc9SzQ|vM`!at8?qU8G+#~!wxbO21;C{qEf_t1FhkJs50{2t?DcsZiYqKA65ySZ}{1?UrH4qoB0zFK)3wOA_!XIv+2!tCfg5mBGyWl=4o@Cs#o7v1TbIoCJ zCz^F|7n^Hkt5c0{qW)k~+daqAb(pg#9-za5`EpZ-4OYMo>afYu*cKgjK|8I{VON&I zChM>-%Vx1EjOO)5?~}5?uY)K0r8o1`ct3;~8_Sy5LRO7YG@P};Z(#Lo4x7Yk;m>1r zz!9{uX4cB`*#P{vBE1Ev&A_&@bU;0FrGrlkatvUjSvjj@72wduih-*}dLyVtf}#=7 zA2Mq}*^XS*NS}yUi{wJ-G0YBLc9wzvOL@d}aEa;0r8Cz+zBKpcH0Y|&rTIFg zmO%ezj0`HjsvXkTCLxB6M_tvT1i!^0hK)h)CN>|Gb5KJutOzwhwM_Nbig@xRH9im0 zh@zd%M%~N-wwJxc4zu^!DfTTp zkMSJHNAQWf8YA*1{sKSCe?`w9EviJVSSOwk&x_9uW_TGPMqeY%$T7-{F~(G5u5qQY z!noepX#COGX&f~^HoiBL%}jH!Ioup?&NSzntIfO32h8WqSIi^kKg}=9?_HRSmrICC zUzd?ClU)|MTy+2GUgy2DyoY#Kc-MMw^M2U-Y3~=j4|)IO6Y3M|)88l8r^IKJ z&lH~;pC+H{d~WgigU=41k9zN>t1@V(vl z9^VIjpX_Dy^6eGgYgw=BdhPA?S+BFbe)TK%8|gRM?wiALEg&GEcR+GLd%)^|Cj;IN^b3p(ObpBjEC?JLI5x07aAn{P zfwu?VANY9SUjh#Xz7zOS;8%e^28ke_prJuygQf?y2dxgeE9g%_4+XsxbU5h!pi@C- zg9C#{1TPF;5`1m&&B2?4Uk-jdM1=T+goVU~q=yuQ3=J6@GCia&q%~w!$PFO}L*5Db zDCF~y??NtydWHsvP7S>+^zP6H!dO^#SaaBYVF$wA3i}}Jba=n;tneY>cZP2Ze>nWh z2o@0)F*ss&#GMh_BKAeR7I8G<!evA~6K9P>d!pISk6Ciu5tFQWaU!=vM)M?~Kg{c!Zt(fgubi#{FwP4u}wtWQ9nh(57>Qu++-Gq%sI zeSY8PnLda6d=_KGgvS)bRL883`Af{_G2ix$?>njQ%)aycw)DNT@9TZPi;a&>i=7cW zH};;`H)B7F{XF*PxIS@7arU?gad*Z&6}La`Slp-aM!YS)G`=!^M*Q6P#`vq^uaDmt z|5E%L@n0vH36Tjo2_q945^hS^o$y(re`0uIMdI?rwTZVTZb>|lcrGa_X-v}Oq??lN zNcv;aeMtwB4kaB;`Y1UhIXXEpxj4BZd2I5+R(b{N;A^D z(o)lArfo=jG3~>&Py74#kLW+7|H}UB`rp?7?*0$--`)SO{a@|>_w-)r5$Or(6VjKZ zKb!t$`nds#0|pOh8F2rAXKh}#LfdfLSld)vjcuWAk?ktmI@_(b&9)b9?_s*`moX%x zDPwEKZacGQ*oWA!w?Az^m+6}sm06NGC-d&ieVHe+g0hBYjmesuwJ+;mSwA{l9l?%h zN0MWxW3J;~#|MtD9T&2DW%tca%g)Iz&92Ozl3kmfN#k-5omV}fPmy9T>E?HR8Ub3}hZ^>JwNu^b#H%7&FqEn8f+ zvFwquH_N^$cPkGpA5>mhURVB?^7qQW9~wL~b?DHcbBF$E=<7rOIV^S9wqZ{VyD&U) z_^9D+!&eNyXZS0_zpU`7$gG%JaZSapinl9%84)+4a>UIe4pp*B|H{0|S(SgPe5~^M z%GWE8Ri3W=VWc@SU}Vh5{v-284jnmuQapdNaJ4fyr`Qpg8M}9K$$5HO1 z!bc^I8Z>Iu=+-NCkNt4$PvcU@%^Y{bxC`S)kDoby@%a14?;d|}{NKl)9{=wNZWAIV zq)!+=VbX*-6PhQiny_)geG{IUaA?A@37<|lH_@2rH!*5r(!{KZ;$$yyq(ByrS z|1tU7DXvo@r}UpvG-cG3SyP&)te$eyl+9CiO*uH_)Rcc$c~&J<*{e#b##Yr-wN|aJ z+Elf(YH!s$Ri~?dofbn_Gvq&?Vomh+Sk*~>3ycBO&>gc%=B5)o2Rdwe#i8k)1RGwWcugRFU$y;kuqb@ zjBzs>W~`a9X~u&y{x;+78K2GgVW!v2h?yBPOJ+`#bRzSNE3m~;>ipvQ3+LZF|CTd-xpy9>T*aBE0wxT4{PhTRSS zX!ven?85Yg`3q+(+^}%-!e#Wv2ZAop9w;gTo)jp{GzV@FN z6)t*y(I<<(UG&ppx5d2|CoIlfJY{k7;#G@(xA>mL4=;Xx@!`dvFX^=;cS+fjnM+!i zT)kw|l3h#QUh>Z+zb=hfnzS@~>ENa1OGho8xOB$Sxl0?DE?T;3>Dr|mmTp>l_tF=a zzQ6SIr9Uk5To$>k|FZIB4a@FWwr$yS%MLI5XxVqmJ(q_rcPt;fylVOE<@1-fEMK;K z&GPljH!k12eB1H|mp`@q#pU0u=(Qq!#q<@MRy?}m;EHcn#;z<`S+jEE%0nwZTg6r- zt(v-O-KuA=5?A%QD(Bhv{ubm~m#lSz?Yhr(wTztNEz;dGvMBcSrve;};VY z6A=>~6B`pBlNe)*$&AU5DUE54SsJq}=7yMEF^^!~`fK07z9D^M`=j`fr{5|2zgnuR8n-rXMWzy$KKc-GTzU}xE7cS!D%}@_9*z@MItvKmX zJ#6KV@;CS?{ssSzpBG`mF6-eL)WZSP!@IH`nBm${4+*j!+E5SIq8>IFw;F#k9yI=J zyo!3@rmq=k#+w7pQu7LPhIxzmhLD;DEG8-@M%RNqCQsHw8|q);-oMwioIlOxHt_u7_c7?&b4_l8vM)e@Jpl8V20^E+A<9$#s-Tp4Tap6|bwBSrT4@sxl zr$oSQJe?=PSC z@rRB-aQyz`JFFDopF94@@nIDIupQ9);Z+|lhClwpQE*E?Ech__!`>e}$k?%Gk6n28 zs<_YMju{WpD8c!X@ff~Syh?eEX~qm=mNDC?!HJ;GXf)a+wuM}zHcGe6SRtcb9AgpE zSIcy`#(Ka;V<+6_0jG@%W{??ThGCRM;d&&V=*+jxqbA*G{KlWTj}lGrfcv_6$UJPm zjnGkwcm7!^<_8LAeqf$p%;mU>xqL&uYlw=;uy1FWLgIcgM9dZC;t}z_@i#F~REm+J zOzal}#YB-WhKT|(2qWQuI4FvYeWGVWhy;P$0Xj51!u8SaqSDGG64@q~C-JZZdUykHJDUgQm8ws=!aGF~#r z883_1MY{a#xdxgEm-olu8kA1*S zunX)Q`Wt#V@Gil_YaoEK4VGj80M%?m;>W38E4x9_6=sNGi)$!t_Iv z5?4GU(2YykPpp!2HkAFyMspW-1$X1_Y#jGw6L9}Ho_n#0+=or#zO0J-vuU{Pnu>FB z0GrN(Su0Ov)jXWF@D#R$+t^C(U{~=RtQ6VoYM#fg#SQ5-d>~uH^V#os30u#L*$upi z-GdvlEqpw?nGa=m^NH*ad>s2DpTPdar?LllHG7c#nb)%?aCi1NpU;P|1|HAu;3Js_ zdk!c0f3Y^6hV|%c7LNP5MYvD84)<<1@>2E)pKE5A1I#gI1?JER=2&y2nPoa~D^*|) z!Wxr_TdKjBVYAIVv&~$@PmBBb=a{{}`Ca^0%>KXUEBIR66g2WC-0fY-+inf zj^Bv2;ugMv-@!NYKj1!ZE7s3#{65^~?c@*e2l+#|(R-Rd!=L4Q`E&d)d>{WC|0_Sh zU*oUy`?0?KiNA!qy_fkx{tDlZdx=;1!~7}!Ja6UOaYuNF-_74-_u;m28?R#9`84Lw zUSxsn0P|wcW5wFXeA(Y{YrG#fV1LDZ`cqiXpJ8se`*3H^;zsmo+&7(MnYaVV#tml* z`w%y7|HNI@aoo6k%u?A$xNo`0hOu8+J@3mF@HjSyN3vSpo6Y6XY#!$S8r*9y0 ziE1%T%n&ohbmMj7kSGW{gye3{1pNLPzKJhp4PjTFM+jvWyHI5m7$L-9!#(Tzf#!Sqx z4aV<`TCBozjdhr{Z!qRyO&({A#4LV|afLC$n2yzXm$AcGfc?sY#&)CLxWjnbxX&16 zJZX$K9x|GY+l{BNeped1jj`CzG#YDg6Lcr;ger{9MjO_Hn~fIZF5C%iGyZ_RPn~g_ z(Q5qO*n{2AXyXZEG46|+jZMY`<9=g{vB+3xTxCo#RvT5u5TnGHYz#LB8q)L3dPF_sz2vAdTP`!mB32FHz-n-ORP8NuQr_GxKG7Itd=jQ)nh z$TMt)-AFOgv1`dUQjGz)^BQPm7@0mE)Oj zLv>ptdLGtD#;|vybiS~N(q4g!MXEO4}{@-ysrF%wE_`l;`s`G!M<~`+(LAj)f#nTf{gFHQd+jXYDeAv?@ zp8pxw;{x&dZMR2R$x;X9N`1Qa0jt!PFGXj~{7+~+&JpMTo32%^-!75rOTSHXxztPh zA)cI`rE&NFg6oZEme5eT9$(SO`fZmeQPTe_u7^D1{I}fWsMBK}|0(wf)rp6btLx_w zjd71l-Gfvo8jqGm_%~heTRiqt9sXxrkLQTbZ@d2;Ssr^(=Er()aX$3e?(v(htgpK- z=R*2jvb_Io7ZNv8o&T2m+dN4Z)oTCiZpSJBeQ!h$(Q9JQ^B%O)b319MR^CoZN~Qke z>^iSCYR2%!IT}>T?KTpD2ZmhPE7n4%)fR^Ex*d-rWQ`Zu&pRbTE4i{027I)u)+5Bb z=w{`zQWd>3jfLsXlW445&h#B&SuQFsI5?Ha>PrgWLm!YMi}X}^)oiBp#Pk1jh6`nCtaK|S{uJe9KT8f*OZ-4dIZ%fCN!KRb4C!7i zDPyHu2pbVtQV>16S7Pd^Z8WJx3dE7OumI zoa{MPOM8x&q&>%L(w^f(Y0q&|+H-s-?KyrSdk&boz@7u=aoBV4c(Ui<1!T{`i^!gX zk0N^xKAP+~_!zS1;A6?2gO4YB4&;D62d^S~4nCFaIrucP=RkhgbKpb|dk#EjhCK(L zL-riJmh3tBJhJEDb!5-M>&c!2(qPZQ8_1pmr%c#$;G7A24xBS#&w-QXar`eMdk$y- zdk(&m>^YzZ>^YzX>^YzX>^b-iWY59ZlRXFj9ocj68_Ax7-$eEt{8qB(;2X)FgWpE> z9Q=0FCBr>{0)aX`?-aN2J^Qeafv|5b0mi-nAA*yBk963=UEb%&)169$^~ro&d|QLHIubGcP00(t~s&x#ZXX51~Kk2}oyxR=_;%QB)r+TKjtI-Ll%+}oLjj#h?@vz#;nwP9O*=jGUKay{) z2iXYII2-{WnnDc}23-6FKE|5#Ne;~=Bx^jtnonttBXwE=~x?up*2TdD`ri_)yMfaYPUYfEQKU#b_Y&Mmz$)-K-U1dkzn z4FJBZW6DGPNf+`-Kbn6?Mk#=BR=ZNYS^APp8o#6~)g|ddbQUe~BN}Rd(#6uz@~wIz zpLh_S!X%eu5uZ;R&q0Sa`YEq7{g+mR{|z3{Rq_o%7&`v)Gjs?9#3KD9%DWN( z+Kx7&dXs?NE%`L2sLoOW)?9=9GL7nw>XhaitL>=oUIb8IAe`0TigcWC1eBL>)JD{P zH2{*+6A+yRR(~cQ1sX_Cl1t-(_>yb_>f62;x2Rj$-jr_1ratGa6Xm0EO6x2E@w38I zK8nMaa{%FcQM&mUO9n)fk2Lh1|G&V|KZK9sL*btIIpbv==r-$#)*0taEBiY2cb(VS zr#uwzlGiD2rFHnk#{z0kD@;D(7r#f4MQ7oh)1AYT_8{m17OmyuzTgtP#8JQO zmZy7uIR_IB@kr>I{=ed3>CxRMo`kb}D_zdVBu}UJNE5EoJM_}@&ic!=-{4`%>&fq4 zw^E00b!Fv~<-d#^XFlC^>&Q>K&p=)L06z#o>mQ9L8jCdkM(Q}>XiQO`!CWin0h&h$ zXb!Q)J&jXq++TsP9*dSdS(fjCchz(>&d~>d{X2l>@fXybc;SA8-$od7xP(tICvF#$ zf2O$_{`sT8JJVp!yAXps(C61<@V6?k=56Qofx^E)<^^x~Pr$DR+yHn}$5WI~Y3CP$ z-@g&ZT;&Wz|5FLl&H#@xT(}Fgi=p2t#7`ma2LJhPG{j%?p}ba@*0T#kJLA8gexywB zC7KJQ4{)?r{Q9|)Dc2sf#RaS>vOTCx2&mmqHg+GDhn0X&0l4Lcl?{Uh3*&!*4|^yH zxVeQ54rAmKybTzp{EJ)RQ(j6ZtD`pn&%lyvJ$zd8X4(O!_LW*dvR}Aze>?0M4I>$vwNd#j&eZSyAVkm>&tiF?)2EF0D$C)qFj3f!rVgPl+gpMdvrCUKm8*bzR3{higp*5xQ} zR;S@smh8M{;Wl+P?ow-TlR6i+LHW2#t-~GaeAo*WurFar^ek>s7b;sFHi%!zPVpAl zKGnmDhU|70Da#$$w~+153f!Zvg4NMgY(8#uujXs;e%3-*eO@Ciy)K~1nsB>%9c-q) zfCUi87-%MYAJ{?N0Gl7O__+zTQ5*Qpu!Xrr+6vu<8`a^gg5SY@(iTL&hxHZgf$+xI zKVZ+ag)L%>aX)-FYquMOFkBAYAN zSDoemh7Ila{0IIc?yP^}KjY5&JpYwnfPFC&TnJ$ZQ@99M;U?ULhwv0$u+Q?r9d<9_ z2P>@rZMPL7LPeMe7ZI>ZjuO2^wCE#ZL|+jr;zYbiz?+~+B3bkkDI!&*iT-5qCu|}E zmb;lEOE^R}to?Ff@0Sk?MzUQT4Ex4HQ6!2*32c(eVCgs%R*l0&g%}}i9Y?{oa187d z$HEq7Jgi|Rib>e-O~E^3Q(@0EU64i7EZ8>97IQ=m-Xog}8_7CRFXoE{qCqSajiO03 ziz`KoXccXuT`Urd#S*a;JKbesxmY1qidEt&v07X$)`)Awwcl z;wG^{+ze~4AlLVvG2rxLe#K zwu*bjHt{D|)O`nwz#m{W)(f_T(d;2u<@^cOjN4$Tcs=aLT*Y?SJ`NH0i5;*g^Ttz^ zS+FH6gyrW>@ql=c`H6?v7Uf63r2fMB3VbMkQTKi$m^`dwQ7Nal2X7m+Ua=j*Ahh^6x z*l8XXZ;7|XJK_lJzK+7)>s|4lI40f~AHd@LBeL{@9oPw2ew`Gbic_#0I}O{hFT|J3 zfYsR7upj#uyA~FhZm=c$mhBK{*>&RI*qwYQz861;AH_NGllWQuBF>9n#RYK@woCuQ zGmNKM47(W?t9{rV>~^e&_v6jY?XaQT2)ikcH&ZvW-(%&x3zk#{?3fO~s>%h{Rc?m6 z;bC~JR&?0kFi%fGt)gtg{@j#>#<>Rvv7!2EzVp5bVT;zyhoYHew}4DSHN% zVdbz48wLxq3fQq#!lrE$EY8Njs%RV4 z4Q%JGg?-&x*qW__P2GCf*xd*#v<+Xj2O?Xa=i0h_p;u&H|xc6Pg9;r0k@;2wj`+vBjC+YS4>J+Qoc8a8ixVGsA5 z@fYKH&R=5`LiLS>!=NjXb@fqxsPqQ_~X|~_^ z-1x%y()h~w+BjqU%lO9l);MeY+xX7--uS`z(Ku)PWc+OWVw^XAH7*zzVdTb5VH&1s zx|pt}o9S+Pn4YE=-h1$Y#eXl;&-6C~%s^Oq2gA-g6qerMu=S2Kqs-oBwAsguG5eaa zctaxIOfVD8B)nVN&rC5>%`~&WnGRc58!TS!uxuqe*K9Kf&!_TW={itaybd;pn1yDM zS&X+UO3gB}+#G5S!+WU}<_NPAwy~q|&czs5%8oV1;a$}Uc&atYoNP`ptIVl*7h^i! zLYQgJGONwmuw?!KcFs4!GW1)R?N=j9{NXC(`M8|c$qFfy>(!Sv@e|7P`kvlq^7B@dd{5M#x~c|In|(s*V0to=2|9obuE)f#kyFl zT%tvnXi+6v<&rGVvJQ4Si`K5V$gNCkQ>L|%wNNZeW6LPdavdrqc@6DUj#$_->~_zg z9bC;}v#VRYhIP`o4tJ{45?u!+xo*R?wBbsc>+rVvhMHQhiq4#hduFz4rK}a#%8ruS zGBS(JO2~8_rIJQDC1p8`vc`F?qn*T->Ut>Eg)P*LIoBXLMbAsi&&sa&g_3RYCEG8X4(KSTSO+INtTajBc9 zNX9WPt#PXJ73C@VqGIi9K1G>s)w(B=hD#BI1h^zjodb;OxaQyjND?^cBhh-=@OOY zxU_ecpiGy$T-QUHRU%!IvT~pHE+uHUN}xw>yBxXgYUD0f$}a9y)?;zU$X%>P?$XXg z)iu!7mO77IS>qVFx=zdUT$f38I)KS}(iS%dYjXYrX7pb_GAJkImw*<=eG>cCDAqqO$rY>iuE~lDvf!F19SnXh?YdtcxUJeVd^~u!w zWNLjfb$K#%c^tajnOe_GE3V6xsrAm(dS_|yXKDSiv|f5H&2m_JTjjOnXnh@;zeCG&XgLneC(F`L%X3)mpyOqEE=3K^ zb=78ZZCka=(CUQ?tK|U6%*%2sYi_N_JYiNL$tXke_&S8l;n@ATjHqsIuEsWK;q01f zF|u8ZY8R91vCXKb-J=*&Z;Y*Lav4`YZ(+4DzPjCQf?{QisjD|i0ApI~m6)PDPbt5x zsj;cmTT7G?cSw{04-%--HGdV+JY~dl^upSCnuy4)iKCY$vf@f8CgN&Y=-DWb%RDNy zOHFMFYs!RbeP(De3PVQOTNxjP%kGi#(`XT;BIibNMy zM%+hU!^CEA&)Lv)lg-OR@J zg|lm0Ff1CC0;)A;Do>)qyP%v?Lc6APNC?vSE8A;Z+v=MXXMc^Xy|TT!K{EE6(}am^ zrgSAD#0haZbZ7QJMcqY6WLI3*mQiV)3<4Cwx%GM}R7Xj|T5B%)z8H zQ+X2QZ=pI080w6f*(o^4(%HE(13QpXo~n=zoE4DhPSQ@EeX3j0h3i`v%)BHZ^8|OG zoy!~8ftA})~OQ1oX}m$ z9O0DE8I%GNI^#~=*(oTgZ2uKi_YA>K89M9PS&#Nc%x$f6np$e5gm|Y6ok`v5Fi=)> zM8wr+E=6}zM?2|BQ%Gl2=8EWycTZCDv)VA) zbIS5Osv9xiH`Lbaol1_{;@FC8qGT))mzR~xN!xBKE;nm%&@s!}TjatFjNCWbZE7EC z$5BYKx2yAj-LCf6z&qR^Vj-3hFH~0jqUwg)#yR+G&ysp{{>HZY>IRih?dR-vTZyOA zin4eh*xEk3wYE(WINtd=;t+QDOKlsi5slH=V{OZRPx zldl!QX(t1<0<2EKG&#R4~eR2S}gCJP*JFO%0y#S(_|~m?54Il6>4v;(bQ#Xq0Y3ag*>NR zl`^MXE#x`nD&3(s6b`+ia9~4G(>NQ){{>QpLvJV?dPCvJ&2iDG%}!LB!Ss=Be$5BTw}fN1o1~r}^c{ zT|6#8RPS=A%Q3{u-5T0(&sJ0GB3-wd1<)E*V0V;guIkzdajjKJ zj>p{khKAaj*-cASxr@|h#Zjd7QWr>ehi(Oj9y|_pVh3K+;l$q7QeQn!cLWD6mStSG zqC?%*+8ugZ=1>=0i0g9V@<`IRv?;$~uF?lLMXH3lK8tnx6zh6ax56lq+D1C`7;vcV zAo%MVQI}G7N474xI_20M4$aS@wxy12-7XHTmpV0pPS;Deu1R&h0e)6Kt)DtYfnIGt z9qLqScc@zdyF;C-?GBsnSL&2*cc@b#(zU+oHUV+1k4@{NPVu1E{VChh-;%HEAxqO| zX?{7n9@S|W`e^;sDIWUh^6BlcLrsOiTk>^&J*PNqTAn(!+Z{QYPMwCq-=eq5qxDs{ zA<$o^tJ?yUQ|qHny@+f5)#=>s$h6|ReCiYqKDz&@Q#9H`*K4+>SDS9=r`st<%gNDv z^yb`=rQ21VazU^4wQIbd)g9{g1@&U_)AgUD>D287(zRatxZ%*VmqXolfWNN49IITK zkGl0i{pq;6?Lhf8e|1ZPbW2~|pVci1=yY7&J|M2!Roz~ozH~dOTL#pZ9!Kgn1O3)Y z*X2{UA7~HFSKUHEzSVygzU{CZV%s9PuG)8)?Abn12ia%#g*JfCuHt)0`< zSR-eh3_VIRGO|7BRIm^yE|rpL%XF!0YHzKTbeURurf$8=a#f1Va@9)3x^$W4O1sQ* zt&JK*Hha13mGE-{s@uBnTEeOq(xQt6e`ZHW?sQ^1qMZqyAxRR{Nz%Df>qWaJb(WJv zp`GzAhmSz(fQCJK=kctkLz}mxv`(Ko;w&P}!jbR17YwixI@JrZP|kF|gzTgV>4 z)7*!!1(JmrY-E_8Epd?d0 z!zz?2g2HuD_I9FFY0gDa?RhC)wWq=p16fQ}YtGq~@*M<911Zp{p%kx9H6$-p0Ez6# zt_Zu`l0`|HPGpyA>C-*2lTJ!e)z*0gR>f5#+qoPeo%x)5b$}DPT3w5TI-#67L^$C) zgHnmu&N!|DtSi7SIY?+`Tt;j<@A9Tu{qJUl+_@E{?5;QC8k&BV_QWm zpE#?ae9A0?9`rO=A!QxNpqF}NEW;kHZra;uEE96x2Y zVvR4>c=coj_)KHmm=cC>hTwB9cvsTY->zGtzg;(jxffNH#jr*^Ey1r>l#GSjIHITu z?#R)VF|2s(=#dEH=Y_}}J0b=a?DVZW6Z|;7)#=(L=F%kw8c-Ub6mThr6{nnTxEE_< zRdePnY-VGmTRIn4zHBfVfv{ZZ+NGODvS8g#Zi93eO1BxV32XRy_u=Z*Pu--T62+0l$z^ zC2fFb!_vQ=Er4A-{X$AR?9f-RRctlhm$(*o!(=ykGroO#JG&D$vRl|auqobwFQGn& zU)^{V_QHE$S-Th3xPODq@Bw@g^>w^wa2Q`RJqoMB4`F5aG3?w=!Q%2O*r|UD3*{g2 zjnrT9MHcnFS8wji{qdedi2Pn^Zytm97~**%Pv)t3Pr-)orDpMLypNENcMt~S`z^(I z?|{CgTEQ#ve!&>LRWKg!6HLbUS*GFbfmwKS;7WWm{_)DH%F4>YBMyz&S2-Ad`iL0v zD+gCBs+e3+G5qZCcZaVX-Y{(Uu+77U4ND*T!O;CfCl9R{T2TIa`SU{y;8&FwmOWSY z;Lw7y{IcY-h|(KNTS~qtdAFplq^hK{q_X(u;;)K7DsC*E1^1(3_o6dJ>x)(tH5Ohd z{HCZ8{_4WHMUD9O{)0od3`rXjFvJ`@ZE(e)V}lM3*)k}5P}qj$hD;GO<+Sw#B!^d)5x{XgpedjGoqRb>%r`_p!pMZhmjODT&;J&?LP zb$05QlnW_erL0R?meP8;ujmeEk7m~h8X-KL{DkQBFpG$lY z?&QRBe0zF-MMc7xgzSon__yQt#ZQZ`h&vK@prRtKC9Y=37W@{)Vbsu;*j2I3v9tSL z==)XQ&3#w*P462O^J2`Nn4K}DF)4la_SuEd&OTLr3Zu_NAGg&-H%HGXi|Bo(_Xk7F z-VMF0hL};WM(rt!h_Xk;ltn~77I}A0Wn_9}R8D2Yu87TWQzF80D)Ad0w}i)p`{q=J zZ4X-?78K?hdM+Ym8U6=Sk03J(qaS@bvaL>#^BmwMV)~ko#lqo7_v?Q{3Kl zd)}?VZLI4F*B4z|TqnESj$fBy=5w&yodrATZLrHOfCYJsIH~6)d~FjWT;Od1PlQa7 z2mAP8A_^E^*!t(lScJ&cSk46Arihetr2JAR-dAyRiVcR_0R6HUeKYhre9d zhBbA2cgtyA|53XB<58dZQaDM(Hm#^$WRE9!bwz(*YiTD%X*@*Y1p1`|F-?Ec<|0k5Yc2Eas>RM2{c6`C9 z7+-KAseV#wpp+UdrS?%ZhVOX`^yF+=XCz6$iXK}9*wEwm%`{CcQdO-IchSMU5Cah7 zhQ3Zt`2p0gJu#Bn%?*@-w}`ILr7Olt8zV~xx>BT;r%@h!85w!Y8vqfy1cV`)`An3% zm*cBfL{VC$pzNHY(z3jnVQvt=m(mPKs}xhEJQu9om3W6P9-~8YE87chcJZ^6Sxp?l ziI+!XWS;84iL#SrCxM~2JxMpBgIBhS8D&4<%^iBnl5#>@0I2aUkfhYwpybfzPQ<9> z2YM=bnVs=Ms!zseN?t99`)PTEA$h(`48e~DC~2h^P;$VKGu>s0TXiiLi1MCfl^(!{ z-S$aY)1@rTCRvYYS%iVC(rrv+ZOPiAWo-lokagoFvNmd2LoOo=?UU;(WlbenrJEVg z!I#uJFeEFRiJUKTzRj8}S=hJf)-3r7d21x^ zDN-8xQt4PNjWFO=a*&DALi)0sjz5jKt(3m22mMNRDkzO1S_xL)y-k<2sOOTF;I|F) z&~K1!lH~Ll;@*mj#E|StCUSqy{TW!2RiGf3O5Q~lN@|Uh%AQ)VgvNcTlr=$eqOe`d zA`JKyAIF%B!M~JMd>9x2YKmlWQ3;nqoppN)V$?s!^dzwutzUR8<-wQgp?mS$h_^@% z3PTbbnJAo9I15;!n4zF>jH2oy>t-!$RFAUI`h~YkSyxC-a}lSvkV!gWNEYUs!sfze zgdwZwtO6;!d%5r%k|@_Oaj+*@gS{EgJS91gmYgsXWYU}8B#SWc2AyUibART3C2P>T zzyLBIS5%<1>M&mSkYVDL9%W&j9<)_*9w}v^jR$SevIs-6PBJlQ#h?{h))8O`ckid>6afjKVuD>~Ao ziWvoG?XTNk*SZV?ZWt2<$L)I+B{*0m-ym*8OyK>{9&5P(y~Vy-N*qpFQ0v+owLHQ= zUcn2?gaSl$j~}#ZR8qae1n+4JEA?-^1wCVkG2Kd5~)Qx;xx}$ z7?L-G3EK}g>_doR;3x&QQ;Nz-R*{f*|0fQy5z3_4m;KSi32WKJ3yw{l+aLa&Ol(f9(fB_6xt*DUK8aMvBmLKW4mh+Axr#VD4IY8GkN_M$g&Z_~pfON6^7K=pT6@Sn*y=Uq|T@tdghdk{=L@w16y?TN^Nd^aIW^@HGa3_h5ULftu?dBxPhs85kY?g_c1Wl7X5_`zGxhEdw>@ z21q-us8l&%W!nht~!u4p{4k>Q{$;*ElKbwZWlD1Le=(mnBZu7ST zvr6&jgo75Yo0;LdIcwr_xzL#pfd)<{BpBynhua0Iqt@1TVCw3!RELm~pcFuB?U4!f!U^ z<69&2%gx}KjbHq5IpTuxfJi@*oVSN@mwgI=O94*ccPKG3U3O6pO$X2M12bIia=9zD z&eF(n5}390uXJ)?5WrUQo$KI92tKG6CR9rVk=FH)yfq#R5+sIZ?$GB`MrmybhotO9%&=cb$xoqHMb7LR3BvwW zO7f-Jpv^+T(V$(~*%W9K(nu(MT9Gj%%zEYb8)WSi? zUekdSIrzy;U>cPSPIQozxr-SoTOC!7D#TEZ%*_%+$_B?UMF|ejCh9QtX5(DXeI;WH zT4!$NTq!M@_+)~^vzU>YLjOvG46M!okr|drWAM+x9_BXr9r>- zz^w5nYee@W-m|0z;iQ2Bt#7ybB4J1t_I&mNdx4Ua zgt@0*45-pn+#ZEEdJufs8u$rrObv*8Q(g&H&xl1or8(B1HMwJM>vl_#aR}>5b5fzy zDOBo&Ho;26lhQhH!ZFw}7#LmKoai7eV3twK6Qt{;z!JbdtAZ3yi?Ct@NC>?C) zfkB-CWc}dl3S2{{M)Jl8wbK`A!l`b$&HJ{;k&YHaMw*d%RxZM{v$rq^*)~ABEfGki zoelec7K48&-PQ;SK*!nm5ak7+jiM*Y@$yU0y)|Jc6GNfzBf@XWnv0nD!nw@X|v z;6&z*%pJh2mOL3J9LN(In2~q}zYX1h7;+|HC3$&s2m-HnZy!hG7 zh@YKsGU23_KL)rl;5R1WZD$R_UxWsjJ9=)5_$cIv!XAb=yGsqy!N(nI-RlzPCN+q# zM*#D*)_`yzk2}tcxZ`Qt)3z%O;?M&CBJL1&F-VtyItVY8z2Rcd8pLhJ$~XfqY2ZQ{ zWbA^h3h-Jhaac{6$ha#5>q}gV;>!s~8qB~-8yhzRKBJs*l@dgnA3{zVgzb|W{MfSw zsUJY+u(&WO4RZ=KNC6*H0oc&9R*?~sfgT!5txuW~9lX@7%!vJf{*?x)8-T;OiG4Np z)h-$gmKuC7HRxeKlscJ-)XA~3|Kn?H(7}e@nOX{ot4SVy?-4rKHrh4M$z|#`oX! zJ}qrMR>*xR`})${!|;2Pq#62V%7ftcVBb>`d!BR~@WX%~fJX`XViagvG2r-sDP!gbOh=_}cLe(G6+ei*|ktKgCb|CSoeM;!qAVH^W@R%$RYeInz@-)X*tgM{Sc zXy4-Gh$r!@`kz#|}sR2(fz*p;NE;X@AI6ZqvPeyqGNcn~&_x}d*5S{a1N=CYg z^5dgJz!JrG9ni^NuUcXmI0<}3t;gGb%=tVyOUn9Ma=I4rSS^b%;FmCriDbWIKP4*x zvpPXCqB0-#dd_FVYJtjf$$X5j3JN^yuava-0vI%n0X;YnAjcQLiT>XG(Z6`S=J~mj zOe-0F1qT1XBPT{IfdE|4lyc0`3DG!?5l1CGVEj#M(rtal?{4y>VN&L2#4YVE#IrRY z!ccjzdL+e1&q7$mG4CV=B?ZYihgF3Hxq~6yW!bSWc|&qlvB~&$TMw;D_XrZ`dzd60 z{nENAXE80!RaHHde}kmv3VVm&ZI6!qMHVzB2)K<`7o<5Ct%nQ%gLAq>ev z9VQ%3IE*mKLLCw$>_fammK#Q>Sf|V5g88z`)07zWo(NTH6B z9eNidPPl(4*}ZX#(L0^~fkV#Tn6&_+cNAQSNg4$V_Bg#gdwWK%)464DjXHx>iF9%a zJlM6)qu#|42Y|G{OMReQ)B&CMh>{$&8|S#)aHW)}?VwQLRO+O1STw0pU$TEsO2-HU zAphG^hAZNvGhyCRGLkU1lRT|6L*ljA$Dw8bBoma0Utq`h1zf2^;xS+pbn1ZTznCAs zxLof_+{t*HP0D$$j_;A{L%6J0izR1$ZQW@t7XE2HYky$!d z=UjLiQq^2|nY)+-v|PgO*a9j4HIko%ah|XhWk{B|SAi2ri;@-r6QubQ4q7EFVMfA| zgeA00P|k$85{!hoeb4kgqiLls0cog#Qyn$X?JSvqlWT%40uqqtpwt2FpMc&QFi-N3K^ek89j{dc-Sz+mxrN+ zk?RF138joj4+#B1;`Re465SIqLxoziC*epw#%;W3=%LUj5`-fa}acj zJ0(HHoeHJ-r=#R@Rs2l%1nVBm6>Hf1uKUrroy>^a8MiYOdjaI%M?4c&fagX?*%+$k zpTClZ33I8fw{((!;(g_Pa;>IvDZcN;m(4bK2L8NJc1S75>u7G|V zu2WYNdkoygtWNs}J>QhOeYjJAA-+5axnDXb<3?1x~~tj6VpBHHHWW z2|?4C5j3sO*gj(sL(U-7A3y|E^eLot2^g)`?U=XTb_gfp^W*b@vBnPJAT96^Gs4$|z$glT&?fLX2_n2XxXZ}VYcJMG ztc%b^*Gso`F>p2Hs@>aD#4YXs;xsHtGs2L>Y0%a$c!QKjaqP#!VP-1hJP@TI2-9aU zUC1a15(Bc#3$<9gdrILX#3JYz54hIU;u$x&NA3)DPwidwdZ#js}=ev za@;Sagdo0K=O+xL`0c_Pw=HrT!YGN~76p-XenmWT4dORSAG9(jja`gL+$Dbt42>3b z(z#^ZMq-Zf8w;26-ACMFHh~*@DppX!Z3j-otcih)$QZ;e972)a%h(M1A z2tN~UrzSk&I8T>lcVlZ|1v#6IfyG=h(|3^(2e2nS0GBv#lNtnp&*KV!yH{$!V!$!t zZq0Wqa1>w9jEMCS>-`TPrZ8BCBbLy=#PBHWVIp857cm#E(h|KBJ6;hnzU#g>BA@r~ zxrHL)kpqDIcawg7+7J&wj4*%Hav3->{{krkDdD)o3;zbLlo@^;7zHYq?0c?QOVC0; zNU83yNneIlsESpveAG^e;v2pbt#MLH`UA<1K8HBX6(pN52!&%G=C{vpAHph*eVE^4 z;cYU`qdovd4RUQ&alcy-M;*Xdx|Jdh@LR3oQRwwFfBH2ePEw?ENUtV&~^=m>{U*a2qvuMax_U+NRK8#wI5{FlIW z(tx37VKrRavj+a9*paLbTP-=?K^pWv1U^{33BYF)Y0!Ib@4dj#{T1Pe4k3TsM~0Qs zKVrz~_k#oxW)HJ#N;&KLeIQ25d@6PbZyvZJz1tk@2MGj7xlQU(j`&W^XQPtnw+St@ z39gd278DAc%PYsPxDK2IzVdF3-)^g&UnTY!>!h?>NE)3^LKkUigaJptWF|suLTi+? zP-^=yP>t8p-4O?bQt3%+S-Pm*BC{i=tV8eByQZm^dtMiXei+dPm$+<@+F)N1F$-EX zOWaMsi6|KP12auaBOGK#4a2z2jT#1D)`_Ia2ERmvI`vXJ5 z0&6M0h;7|!Uh?!g6#Y2(i(upipLJ4)Ts)RJssOkffD@7Nk@3LnC&`+Qbihm&{7CR4 z-s%)bn7P1gp?^@3R%l6p2woq&UgwosVI~pyGPiXTKMgaAlTB?XbPkOPo+xFlB|Z_` z!N(gK6ieK75{FqLI9+pW$hh9tCLSGp4}m6+nQY1fOrudIO(>`w@S)^()g89>mI zQ0JYS?7hZ$tQux;AvJl*xnV0#gVo z8g#G@3| zm#-qpVVLRNuLW1ql`sf-ZfC;1#a-1O_q-h#fctDsrTPoWy3o;H%C4%1_VS#JoekOu zc~?q#C~2V8@`NFISxf|+3!=WP;_--|_Kfd{2O<7$z`HWeJx$~Q1RSKi5-<~ae8mU$ zJj;6=Wy0eqT%ui0I)t7E{eA_&Edx%39tk}H%p;oTQl*Ip>{;-33jTpdP7ky!KzOW! z>nyzycd#_CU#5q6puZ7-VzJZ!?e9^jIlu-2buu29bO}OYa3}6f_2ILcCD+# z1YmBW7I0r9Wr4rPcg{T~=x$(6BAt2+IJi^kQM>SE+~Y;W0q(^r9(WG%-H1D{ob+s& z*6#UwCb(pt^uP|;W3}4_scDPU6eGj~{mV_womT=Ug3kw^2j(awQSB3s^esiZmb&eC zQ?8!~D#GpyX z`qpjbcdz{aXnXVcwu-B7Tyw8vIo>zfvEyBqPmJT z==;YHa~0jAxo6ItIWu#%nF~ov;7=h|jX4k!lJ%jAhaglVR{pHlvtGw{l*p_AWI0Mb zFYXf)agQsDIH%Rl5~#2Ac(V$i23V9&>Ed$uGa$=ZSR3%$4qodv++U_XPY__rcnr1f zOlZV+)SB^txUv?koVugDmb9};M8?IyQJGcAYuZY9vLPK=IpPB5ZGcJH?_@(hvT&=F zqx!wjDBsO|*C6_zAc%jFwHdWHGYSAJfR1@QGk)e#Z6upy^G<@^%fp>+7XGrvfG zyxz^6zDaO+KXC5HC-LVTPGN6$FW~eWE4*Q)34O&Gn>U9?$PS> z-Taa>i|J1-Eu;k27y8M_=WU*2cDAh1^m^pcmFti4`Zp5RtZyTaE)Dyf4r?$e>uXtG z1LUAu2bBXwY5&m4hPUtz4OM$g`y*g~q?|fE%>dM*cxnn%YLH`gHfqw)^C>Usv-q=9 zoEpew3g&QG(O^+4ZNTWFnGq$hc{>546QI~#jY2%r@p0=Q{SRLQG4o( zDD$FDN_`QZFIRleapVXq(^{zt{Wm9kT&0exK^bcX8oajyX~F2Q1SxiY50zr0P+= zi$Al5Xv-k^Zsr(t$TQ-7kb>UVmEw=rmGUd}9j<6RPC~s4YAjT1jLO3z9VP{Bk*HQ3 z{I66a<|p*Vwq zyzeNB*Sm_arXR&Mgi(K5I;}ya^e?7^1GLwSF4Q-IvU2)<`U5OV0bu~0$xrF@=_z<; z6#fLQ=s|`{PWxE8U%Ee@UPy?9H||7r^hHvdjQ+=aw=nkc%n+v!_@xPP0X7Vnl=g1g zyMRRJ5GqGh_~EH-p+DTAWy$sYlJJhPa{8TLBoEJn0=-H>BCPRi&-6YdeF#3k&7T=0 zTxl2MKDz!A1o)DEh2HrI&*>8PkK=w8eMYs@?+@YrK72;+k0O43t8O`BY(x#iN=u*l zYUwLb`T#q?OS7cCcpewq!pl;5jP9fe-UkQngM>s%FLfxqfO( z>I1-(3*1Q@)(4oBdPnLVxcf-0jbNyA+25gI{2g&)bsb&yDqycdpLjKzSBGan7v3G& z#&N|<8!9A279Yw#qKeE7sOXo&4(LRjE_lHh zE=m3f8WB+;C}HxeI?vKGxeUJ{-lX*uFB_oRlhH3SMjTyu-cPkBA5VsS$x*$}Cu*1B zH^ke&@Tb;}mdXc#?;t+oYoC;e(@|Q;Z<&C*Gh*>_2cE};-#na>5!_d*nA~cexxk-m z{05+$12Xh1yo-(Sfp!V)SFc$8(SEoHn5iE`#ADG6Dm{i@#hi_tXUH`5M|9362=GaF zpifKjC+ea(4VN}&2k>2OW5RDVFX*B~5Me)$qh*lQa(*vraY7rO#)T(a2pica z304)4x=$k^2iSA)DeA)tlOV3R+6*sAeX-gM$1(0i?=EV&;oH!6zKu_+v5D8X7b%2a z6Bl5OfJw_Hmtj>hkVH|r2Eg#m0E^IYfc|g?S`9P&k_J5fk zJSm>2BTTRknVu{}s*NC28^*5wReVxixYvJ-`=9H7&hMG-WwY0p9dhffAw=dJk`g^YeQ?qv+9lm{~XvWvohc=}U1RrISe)kSqZpIyGV3z~-I@Jji&!b+sweG?k3 zpoL;CaW*bHg0i?!vWW0uj}c>6s+bDZI`^XWdo?+JN`+1UI)Ti8K?mfYa{O?`s1V-B zH`Vd9O0_W;&2VxxB%y*+P{1jWa4+;F9ae53hqQk1uT(-?Ki*$l7i4e`FiFzT(sfBc z!PAfNx|S0rJzB1vkU$X7E z@lh@6A)LBI9M0u+mg9RA8$nPfdkAaRL5;(`DwI~TO&at86?!G0gBrA3g~D#Y3Y5V) z!X!0!gdwV|E5)Daqh8d6ODpv>rz*ZhnCsE{@Y38P?U6M8$y-8WohXXnJLUykJNR!I zfJ%5XF;Pvwt>(~lKxMq!7=O5r>Z}B%76_eHXsx`D&>GrJN;)fPtyG5bYzPJ#>H82q z2})!9N=O=w>Lt83Y$xW4o%F}crvf8m-@vs7{j&z2gav%S9nGwa`NaijGN3ZvyNy4< zqANlYps1JS;4HHo@rQfDN>F?QaU3cC;PfG@by%Hs7HJu}=fJn;@JCcYI|hane5bX5 zE?RRzneJo!G2Q)CFRlbZ0mhh&i~a=1F2}Ezqcm9*qNJ#O3)XLXPTY-S{U%;5ntiy8 z2|3df9gu*SoQWxi`Xg=>Vf4@lijAV!JS*nA->H(lUVdDyk$fVhx-^ykFrMwlMU+vE zS-9FX%E3fDFQmh|px#`Rqbn-k>+zkT4jIy>V~TVF-x74obUJ%xS*E2dld-Z0yHB~7 z)hdtUdQmztXKj{TaKF2N7h?%;;64FP1D`$Ho^7_7joEga)oM#fFg8DS(WC1df7clN zURy?%1P>KG{KOM1?KS_J)YLUTIw6l^kROq(paZ?5Ust>obOS$4Pn12av*OezD68}Y zVVJLxtnwp(qLhXwm=wc9Ph1}V1eKEs`uQcHSDXQj(TA04398p?(5)Qr7veE!^r6&Q z>BDLnYY~;>c&=I!di5F5Z)tef#CU>tX-Byl&y84H#$S)M1p0fqt_*5Pxz*9qinHqz5==R{cDu>4SP0lDXQ#DcAi2D_INv?@m&GFS ztfR81qik7Wohi4_{p=zE(WrP`qheCyv{jC^dJ42j*gK$u&36LtJiyu!*Q#Q7OUCph<@4d%b7jZD_c9p8d|11ufEjR z*XO(RKu2e=<3j1g%(~|ON|w&**SNeBO{+RP+yg^i2R1uGqQ~byk`kmhae^1|*6PS? zX>CPyxh6BvmnWDq!DZBCNA;{RxY6O*7z|FgL;@~XXQ#^*h_p;6HBSXte{izdJ{jCj)v zI15wsRxbFKkRZA#llp1m(VngC?OS^`Zw?L&1UE}3S~qnnzw6xG8txA=bAbF^Nh%f@ z@`OakY)6?%rk+0oR}wOE7NTRr0|Uyp&P0lKaN2keVDv!3gy#GILtT)i8MGjg^MPh_ z6aT}%Gnmi6!zz{EumOyK*Hoq85Mf8!ti@A|% z!>pLdXKgVnir<3T6NPb4U~W|D!>p*`xk`g3#z8SRYHgwULEv4Z;Z2lDS_E{hfD$Eq zu3St5=+nxMe-y*}q6Xad;^E(tAkNU7j{hOTg_c`~j;*pK3-NM&uTdlpZQ zqO+E0-xO+Oc%wZWveIwW)m!cFDfWPJjJcJkq~DHwFrxf0ZjQm^_GxpB1G5=Tb4$%L zxBh*}iKeT|8yWfL;<<+OlIY4F8^;1FR`$hEj0&`JF%*)*p&2wUf!hMZ7JaNN^{s%e zMV*XhZgwg<0x)mm&y2qfk#{1Iccc@_an?3xWnqOZCmMr8C`;p=k9Nk(izkw#E+t(& zl{zpm_d)!#po!PRrNzhF3QAG?c6_|2*6siv%pkNHZNKd{cJ*zyjYzE{BXiI2vByjD z=Yw&)S_~DuS_~Cj5m1tNfkEg20!myFP;dp*ZlA9qx-=+$BPdZDM}yD~1e7FRVAz-y zD@zhDpwpmQ0$vAi?^z^1js?sfFY#{+hAfo!D0?)@Vr`?d`Z z>H(T~s9u@o0H?!ZA{j0-<*>cV-$21z;geydRM3I;!pkD1pfu(uP??vTo7dXvbdtcg zcqON7mWyRm=HP+BBPIGzRXNt*%P5B%D;%4QF{XY1MJ!Lk^{5=r)0{E9Q=c1kk=mky`+~x&6o1~R#mV&=B(15 z<$bFx$`){gKh1fxPVk7^1&g6#o`}q6kmUj%iLzb14QV8A; zIJ~Dp#9Bd+eZo6C;%SjK2{J(1Z}a;`D%i?7hikl1qlzR^)I^d7YB{art#3|y!nwN)?tA`ti$72{ZJOR5K5t4;x{oPP@Q5O7ErMc6I86j0(zA; zSL^sXETCc?7E}|z1XRpQyiPuY3#hP87PnB$KLSegk0^`z2hvT@EV&vQUJ*R!IMRf4 zV!m3L;nk7@qL|LIrh?Wt@1ayk)9R$sY>t~DuO(tj-7QC5OrP0Bqv4Zq= zVV|`+%gfD+`C`;;HhH0dUgGRb&CimJvc{nrTTxj7%(t(q;)7%*zxm2&RscZwHOz0`Q& zb#jhfaK?Cv$s_Si(p7@HK5lc>fx37;<=JV?CMyybtjIKJ;b4BUF=VlX8qM_uvVkr8 z)_?rRx0HVwc+-uTuJq7I@n&@)k0I-G6S9J~a`>Q|so=u1&2SjtgEVDsjzzD}gyS2ADrM?EuBf zt_1GZRaF4M!ZhH*I64(Ey>&2=UUrz?z&b_TXS77tu${}zdOP$E?zsQ|MEEc7ehfm zIM)jsgDA~H6#XnV`oBs2FBX{VX`j`UMV9+#HVnL8+yb#G^`ZyR0`!1rt>^*jtwKmd zImrVt+-@>z&X$;y#o^?O>O{+w?~RAs*EF6(H%W0eN(|733%*4-OV-bJXP$ot7MCC!AZXHZW;t{T^3` zH_|*A?A*W|EFJ$cx{^@;@h^BgySylYpOi;@Q!N9bz!iyK41}NwIk|lQ7G6@cMpyy! z$Jsl_rR!h-TuA*GEg@q?Q#}o$+%9(MU#Tdw!K3hscmTZQ<++Sp%Vk7JgA>wF2Kz4y zt%{R|Jk?`kQ|ta%bai72_sk3tdbK+X%)%4%tV$Wx#7D?)(LbW5uHSLpj&tt>G#FOJ-%Y!Lk#nBYenXsmFNO+DW-(OAjDXTC zE-(nKA_A*MXn_JMbeP2$gjOM-wDyX!SbK#`NTYHu*D4n46r{YyxAEa-u0=eiHC4Jj zsyl30+-RCd+U=aF(z)QRkP^@Sw2B9yA z_6dDKw3_q<0i6aV(9>bHk>B4c`VzvgX$uRQ9MczAOhcG#j(9sTgnD z>ED=cp!Gj_bOjZ{qbq2O^(n2)JcgpKj5@n)&lVO6%(B1#aKojkS$chD>Lu$Rg;AE# zvMw)gT?>1Ejy&G*)?qzA!F{!O3Kj><8Th4(r9A!xmQB56OOuT9d8^kr$p(=Pa@Pj0 zY%nk;8>IG;HG900LC=^$FL%NUcr&-5IxVfbAy+C~@ZBm|^J=XrDc0J&xf8^9UNi6I zd*XU|F;qygfKrP^Ss}%X%cAemqDr)gEYm#9AlY)vRD*r0##)S(&;M-Oo@LnyhU{hg zHvjDTt%sIn8}R)ywwG=DO{Oh5*_QbmrFU7MrbNIRWQhLgb8(zhmd7f5Y%r_?{n)49?aw_kkrTkgm(*KHU>0+p8sen>TMOo2OGjwIt zu0e&aycmO!eE}ue7Z`->3n5cA?X5qer$wgZQ~jxlm@$9EH6eg z*B?xnjLps*ZX7yj)yc^{y>@11?3kymDQJi++rM^d*LZsR2B&}I8+9$dq;-QU$DMX( zmAPm2rq#;T+tb~l9)I&tb4|SiRPg%bOi(e)DR!8Nw#Cp6?lTwAi?y;B@^%Dh_LMVW z2X^Sm4itETOFnT>eF7_}e6LpaqB!VL4SI1LG)7;09NrkTEee(P$X99@E?Gn$N@>4o z^hsrLPh1+U6LxBhzC%$csE*NhSsZkkhPPRzgjSSB4XV{foYJ5ze~$6GU4wd~Z2^YA zXiyIvLNfZrAvH;j@H5uZN-k_PXPy>9<1w|*mKXL0Inn$)u%gMe*V@-3Q9W6S)u20B$oS>5)MXG$B-7Dc=6Kp6gc11RYO|_=D z^y8;&b%2FCu_8GbY^Bx zdobAU3DjT#qLu89hU zIqlpBPv%u{YQG$j18uHQ$ki6W*Zt%C+vKN*jdMWzg%h%dMqf@lS z&gWRPke$YiuJsbh9^}ksw{cIiHoFR~o_Z-|k2e0+cc211;ldHRbj|D}d+A$S_}gcH5Oml5%8l z-MT?|1+^uV}iGTsMCGa-N`>t8|j%;FL4|7(wy~~ zbyCO_JfEH#?Fy@PhOKR0Z(F;^vy4rG?dJ%#zpAl4;th5ABmOS-(ZB$gOd5%e(5tYj zqfTBapH)mIxV3ZP9-+~Z9UX~fFw!U{9w6Vyv7o2LZ;ULvpfcd~1et-%v?Kn>mX=BX zMn|CAV(DJRIxT@vC{PrYGMSH!-$dsERrcbc9hyYOL)({x#-vxQX9BNS&&Htr00Y+B zHoo49--OLVV^^$a0xH%sf{OJ_K*f4SP?@i10xH%s0i_Wmpzs80ZHYlKjyM#Q@KsKf zjnNR_!WNz@BJk2GC(3$bc=;+PpdLOxDSrT3E7rJHAuq@iQQeU0WP&vzt`lSSg&gb7 z3!I(BMVOodQ!Oo10emVC`8+KiW5m#G%it^D3a{7WW2IQ*^6UkRd$`7*ovJz|-|Sx0 z)3llidfl8}Zh`;^f`q861gh}#k2 z4=756v|-jqeLPB&E&Ksk_sGFPN+5X}GhaP=bfov5drHb)dyRc{WGXN)QdBfGqHM-^ z7)MOw6lg34SJjysJ`kvpSWsi*5z`+a0j}=QnJLZ;x zwl4{7i-Yb)ZwS2pI4H@gfZFG1y_~=Y*{Zq3IXl>;F31$J;wvU%b=lcN-J_c#zSg#Y zbYgb9DbTZJT)B~La|J?vnsYWIm z{>58tM_?FhHbDVHgv~BOnxJIt$zx3a{SkJ>h*GQB5H*}z;#o%>)hsZQ?kJ!g=}SS| z;-InGo0o)wCc=x^Bu1%KPn0I;gKTLPnSe-PI1ts1r4a!HdfO>#O=K2A!Ba@*Z z<|T;F`O?@R3)PjUN3mdhjQ6LULGPDYt!21`MjFlfQrRY5S6)D zq`pzHw87{W*%Nh;trRX>nRX{de{E*dRAk4|t>6FQ_M_**(Xjmu<)re*fBq9#rr;Sv zd0UEWrF4*8Wy_MhceOSv+^{?lxse~Eu$#5byu zk zHmI9~Bi;Fb%kFi$Q$3>cBOKEg%imAJ`BI+VOUBRHMqq8#+s`t&X7ZBIH1#z=*(0{W( z$Upe_C;XgKd1zmP-oc~pyw*5qR0mpEwoTOqJ{HzH6By3WcF+u~`kV0h5O%KZsL)F_ zJY3sRp;2vz>O87ph-y0orCCAL8P#@3uc_CdvD)HW7}aYC17<@N1N0g`?|qCY#N}s= zGJhKH50__V4RkbIvqTrLUk9=>Dax$a&e|D}0OCs_=X!dqJ; z#8V-GZZ1Dj|41b?U|-BXvV>2Bj2Pmd<`dBdvE~(-?Hn5Fth5&}y_9dS>>T=iMM;50 zKbADuR%y@2n=A_K#U&LLC8bvD_ph^-!XdJ@?_~d)s3+vejJ2+`z}qM8SJqiik_QAI zOt+H0VQ!f~`#9>`l-Ga zp*z!DE&K&btIdnNI`_h#GtxD>anlH|_4%m29QEf+okw-fSwD{V7ciV?Bi2aM!Zp%l zR>wf*`QxUdm4j=yMtmLZ0ZjdYb?eXDP?jI)j%uhJ1DCQEA!W@ZdyAp%d`8HJ27nbA zvPWfU9fQ{$Yf}UxIuUC{t+1SJ_FQNk+%=(wv2lkmHXIeg{jA2Z&1^;6XpdDV& z+!AeT?nQJ9i&v>}DV(uxFbfOy)r5}@KScb6(r4Z%~H%N0xTiw<(eCM5! zS6_7>8SG}ABX{08qCD!uNiy1VGFfF#xO|LfK0U^+-lskP-oU_nOW>%KX%820Fqjtd znK;<~NMvS0!y@gx>#n(57vtelL~XD@>d%lOnqwBXYuN%}Nz(8yl!#{+RD}MgxH!0l zp7wLu?o!7bWffS@5*M$T+8gmZ+X9jOh>NpH|fRY|0FbF+J#KjS+RH4GZvlxTWg9MZ`27!U}Aeu?Y_jfC06*%L< z;ItG_g1DKy4dvDdZ(9gzPff%Asj0okV=YwGoi{e_*&}8E;NxvtxuB&rR14}B(BS-1 zWi>j1f#?)vg=WL)q$q_7#VRcLs%kc(O+vHbE#;bxfRbhtjfL|(el;q?^_oS&|CnME zQ)M>o7J=|uRg-~*3k_!XCSn3% zweNjz;$q6q%}Tm({r4oRa$}h%Gt*PX_97e|jqh5?a*U6j$HM4l8M7)j>dBXkhn=!f zl9tJyH6Ccv_|iT&vDu|hlB7g~7nm>3wIdrXmt7tEHg|$uTG*D6(N?Hj2|kOsE6L=# zxL#ch6_P5TB&njTkkrLx(bs4NeuIT;{j}J3^ON7*ah@?%FQ*!JZU62QI}R9A4f^!N z3)u>md@Q*jF|i=|nDU|W)@*XovSmfdv&2zoJ7ucRz!}F<_U%g40zUTfESF!3Ek~^+jxi1@S}LH_Qc+g4)CnyfwX0C0KBzm& zdw($wA?*T6(k^faY3EQb!2${i)@UR75l|sN5ipYGCGN9|M!zGh1^I(FDNnKP2)lSB zqFl|r54SW2~ipFPU%MwBL%_JT3Y^yF5hxZ@eYy4n_>uZ6Cnii#p!?9q;fa6uNk`NB5x?Ym5#~T9X4FVG|7XUNE*&xCvY@l@-cr$mg|E4WuBXb8)n*Yi@LVHkJ>`PRi zk=sRHSsCVHdTR9;JvQ~NIh@X;%b(xRGhxzcU4@oS=`Uqa?J2p868+_bg#5bXIl7YXnwSBNv{Nd9R##BP@44R;_n->9 ztk9Aalo|w&Nc%;u3ie&%FS?ZiyKm%_D=(hhRy|m=b@Jd98+O+X*6m>j*(M}nbn)w} z%5`iFwk+WSHV4+89LSOydE+`DS7Kv(En_Kr+&>@96J+IG+dTS6LfF$a9PW&)^Yr(5 zJ^hikbGo))DpV@hc}b1qE{C_b!__k~=xp+)^HAjYbI57ME; zP6o;fe~O(%-RY`tllqUC2$L))tJa3MTpo=4)F`c5 zV^}>r%@9bFu2l|PeF*plfgig&fN7lLN3FCM3im#K&ok?hg`dE)$KlJu?^KhKOCVK} zImzydyp8-PAcZ)oG?KS5L5G&$o^a4!tOOc!xF;PF8Hl*QmP@rde#kRxUogx5sQ=|n zUr5c6q_pIHo0Lx;m5P)*%RTAoo^p2197X2&lU(Ajit-HFVe9;#rE*!qT2MxL{|1NV zbAa^IK;*Wn$(C7;WD3LwDL}}hAXYPzJQMcj3GZs}M6-RpceSOpsHpWKtD~sMVa*S< zZ1BAkm~woBxk^i2Rqxbz%0Lt1o@$TX&s#SDj(q}-A&yg) zDQsj?hILeK6_?XgduAL(&5dT|0CB+C`hwp5qbRyVI>Ik2FRhLI zc--`qiM^++TD3p4e^mpoVXt)K9KU`;&rQyMflC2s%5%Vr$^Xoz`FkR7NA5Xv2-O^f zFjxC7VV;cK9Ng@5ZVujjgR8I4bpuAoi?C!U9kYNI*V+lOh9DZxNK(u{^5Y0%}jx552yc%Gl-A}adH=m@KVpKhBzuC-pJG)( zem)#-zhCuUK|S@42?-&QtT7w z!tgp+fp;6}9H5(O$)-FI!SNX7G!C6w4UX_FVR!$UHT{QgdBbh3uC}^~bUK(}b!g~w^%J|_B`z-RsA0e60BKeVA>w> zcL@9){)l}#&`HtWB>R+~(0*>@;`r2Rxa6p9+ffzmVN9TiMD(84BAi3S*CGy8_XwiY z5a$3sxP-tHV{rYfCU0n^X zq%Grj(sHf*^qO_&P?&Oj%TPxv+uPdF(W>0o+CeqZ5=66%7$4c{4g`=7>7zppcFtKrobN~`>(&~>Z_gIUCf`equ)2_z(Pd3Bd%up9#=;%^^XpkFO8DYsD&JDIS@iE zFh@B;UO%P}IlP<=5sfX;$VI+jMvOl%h&^&#i|0K&?N#tFMFXu!h&5&%+`V?%F=*esX7|C!OzU9lIjn%C zypR8se<^RA#DBmNnEwQNXdO-rBx#Cs3u-zc_i1v2Lsid>Ca$HMS=QR~lc$WH`i3T_ z!+z0$`bJZAadTxy!c@|(;bzzBI)6uxf9HB*zc0VE-cngVR9lf>o>fuc4O_YzntXb_ zA?WR+bB~0!#63MUV=vSRC)XgM{P+9T$O+Q#VLQKA zi+ka9&}SxfUA$J3^=#ABW`xfq>kDE_@bhyg#_D$L+-SjOX=mNlHwVWEbChGyEP&Z0 zawp8DNhlUjGOd65)7**oD6^a*Q53gJ;IWk0b7$zKR-zkXjAzu?1)gc*(l^Rix<;I2 z^qfL<3%%5O#tt0z^6;=yMHqxNO>ukJ&Cz=;ADTnC{y8X>^Obr9UqzvRax;@_pIp)4 zx+hI0(IuPdr+1w{6`tO;YkH_77`)mQ2)JfvcTV2A;oRBTb2r>NxpVdu`;RWqt)5T_ zA6=-MMhtudpanbw^;o;uhv-kzGaZHV zc`ZxonO3Eiy*PJ*>zSJbKX5_=IKX9R(WJU5a_@$7cTU`UZ;R8}a<624X2YuRVV*D0gplaoX=(W;Ivj@K#kiy6Xu zLZ`e$W_9h*&}10q{998ZtrKqq{t!8Xz4b@r`dV0MtQ2Bus*orL^`WbU9RX}Jw7@*j>P#$q~BUo zW3^OQCru8Hejr)@IkwdDt*Jxio7!FX@wN z2q`X84>Eqz;_c?SFq4y!`|lU|FlvrgYLp3rH6oekFFb3@4ZRg9Ly*1?!SbkH*$A&p zfo9R18TBXC(iT%KVWYsT5J|u;--mwxhjjh|OpU;8NZ)MPfUJV47O0mto4@NLv#+bm zr_IM?Yfx(!`R;Jfy>q1TGV;#FPQ^>16_}rj7xlA~g3V9GyCgNspwCXdxQty*rY3u@ zWqodLq(#XHhp7hcS>rmi@U)SXV)qg#cqmFi%$EaRsJgyA-|wxJ^e!Sl?~KU-z;s<wI|j9GAk5O7i?^5lZKURcMNwfJlt-6R;B>r+Oj zrbn=)0vnF9va}r)N!VbdCZr(y2KzVSl2Qcal!IU*8OYOmA6Z&z_#*C<2;MGHotlE+ zb$UW@+g)`@d;-F(^o+tp z!NlZ5S#L}+Ua z$#1L~cqu0^?g(t@=-3jf?Xp_CYWXLPnlS9lJk`!bJy=|v4y!l-BC6(K`Be|T6n+@W zu;JQHsA2uiK&ZoCx7yVlJ}+r1p}nfPxGJ}?{=h|chqI}n!EKyM+HG9Z=M5V4dS6pR zmnG~isK_eMuc#fWue8*c=KJV;*Dgq05japn?f1$~+PP{>lgYpU4MwBc*^2xfYgbPF z(18)N+X)f+MTVOe9| zB}+NBLQ!NQ+h%84D7^XQ{%L01v_Cl=+n-afkcu9~@_dfjou2MCD|8C{2Jq|@YKMmz zS#t4*0+1})%vf&o@-{>~&Ngpk$3(rq0vpK_jVzgl{#}%X%Vw0jCU@mmWUR1c@H4(t z>lCz&bJ~LQL+JCjC|?LNuWDwrifd<%sA)Wlgdo@*?C@Q(t>+wPq~GJ|@As@**RyhE z&v;Z6#t$6&WzS@G=34KX&CL_Owr)?Gb8sZ!b_cjXoKN%KV(U8})(Y)*faOJgH1awM zHz76LZjzP{u74mBmNKU-=H-UzVR)jeVN?$)&s5c}2FrPdw2&~Ygt2*toNqLw&de#C z#AzLYiRPN&w$4>ZDLjC^V(sl7->kIUH__Cz-oGfN5P5~(5PAi>Q=}3|aw&MGX@M%g z77vzj9GdE%ZjE%c(V?kRQT9yD?0@dd5WV^_7wx6|vd_=if;UNV{VEICd2Xb@PsWX{ z8IzFO6q<#iHa~Roab%Ugwa=7YRgo(W`yv-NKkVx`ZP&zpxEyn1;a4ExP_{_Ec}{Co zx)U|&=E?cc{do@7=X-`{*{`2;AL7|aA^{71CURLww!0xe$jAaOD7PVp?<<8Cq2{kp zTt#(KsD4i~lc#r%2HiWu8+J|`T%C>86|=MFZD141eV!2e!iNA?fF4)y%msh)C8-TVsTnM&{c%00!>BUxO242)$8gS-MKLyxl$JLP(`Q# zn4DP6%fR6}NC^Z6adBBMeZW^Y8gjS# z6Z}bQhMpNcKWWP7s(IE{TWfn(eAcvL=G`&+%+Q)1kEe%Zp2nY*d(lpUe+l~iTmukL z%54x(=(JkdD>di=4&^<-F;EWxLtO3_VGz*1xUz&nKm`Uq?l=bUQp3QxLQo0X6hU*M zmJjx?a9!Uf#wGYgoqJZDK}Jp;TUu{0?AUnzr|1q+;P7Fzo3DkOzK;YYX~Ye_esJi= z0*XP-$2=$|-wtfz#ahxrPbnKxRizK&T&6K)X$jvc@T*nSK?xS#KpL<1F*$P}q3l6=)X4I7{apsi=pE&bs<$L9YRIZTT z;efVqTLb+|`X2TYlY=Yr)Kg!->Z%IRU%>-Hu^41TB2=kwY+QX>X-x$?4HSUBKYw|Q^U#86E`m$%2; zRaMSz9r>W3p_QG#xo6`ZNKO~}I|p=`G@ljb8RVwm;7bf2p2tHyE_jQ8P#v~kmy~>W z=9l{HV3m8kv14nGe`v^$E6KGZ3nz_` z;V*xm8I*S;>}PY*wL2dhpSz64ijcrR!H3bR_5&!2^{;lkm>?_e05Z|%T>Ipr*t2qD zZKJQX)z?t9G2DCMIi8;Sn(1&a)_LUM_l{0i)%7GbjJpDpmIhN-RbyLwVg2 z9`3$1H0-Odyp_PWR?^!&?qs*IpUYmdpR;2#!ku5Zc;nPIcAKA7uO04DzT!v8ub?E= z4qG%keohdsN7{g6H{E}4Zhp1dTpg0b{;r{F%jGB7ZEG*esLLfEVQ^?=z}&lH%1`sb zwP?#jvM-uFryY7nvjI8HjUtrE3cJGH)fRJArMY;+ci+DtI22~r5Bkm3sHLiNoqzcJ z!d|a`kTBj1`o0N_@YGNiAeJC83v7Au*wD9c46)lLHvI2=`Znb>%3g=sA4aP&8$o@K z&H(BJfWc!nsbO2pyhWa{F=VJNsi>~8;k9V88H<&`qBfQ)^=?}6|3!D)mlGfT3%URW?hlnU+-AeZK=u6?Q3wZ z3t+Cb8S1tQiUv zg^KQbL1Pd&6kWGvniK6T!p`w2ck)adneT3;cQ+K`)J2T#vZdwO1kpwU6I@tuCaPI6W(9kEk@y46pcq|6KEPD;6SNqN#JDQ6W6}&`*3OF6dNw}z z;AP#{>~kw#Uf&|rq40x`W~}>lv<9r?yoO}#rG@T+(?z2r#6(hYw(-ZC`$x5&%Q`}C zOG&ZCQdGR^u9wesc7-nDHLF#zFLyNL+{p>Lfu!u7hN8f%ddy8xZ)^tDo>Lc8xcs`BzGx|E6NH^O!dHGLk~WawnPu55utpfn#t&6Q=!H#vtsW)HDzl#32Y+saq0 zC@mpn5_DVxI&iK%EI-^L!9lFdn7viy#;7G<^9jZLLbHEhAaLkVXlr}pSer+q?-#S= z>m9?9t?lbu?yKQ#U-MjL}(#I|vo?Us_D7_zTAD+KkJfG+AqRZghwK;^lWgms= zCjA?(?)%!ob?Kv*t(+ac3=ik+x_i^?ZO;+?V`!a>)(Pv_3WXX`ei{x?p!pI4S;c-w zo}Pu>Jh`-}yyP0Im6K#^VArmI6<=z{Tu2~jmXh=#zpn>7VVWE2cG(76?sH(Xfa5+# zzb#x-b6;SkVJL84O%1(|E3Q@^38l*Hrt(%GBx;%wwX49-luXYN(4*;kOAY zcJX?K3@dp(wtm#jDQFo$^O)`z&`O^`TaD;Rn2vPvz%TxJ=bh-R@aYf95Yrt&iR;x8 zJf>jJJaXrq|J)UpQ^KOZccB=)slousLsFrf{lQgNoxbWSb}l<#xkb5!aG=CbMTs(A zf)!nJ%{Q*OMk@jt+m13c`}9a75-;2nw*dMChmJ;}z;~FHL$}{c@<&m;!_3dh zMeI}k1(LdkOH!DXONp_Pi1YE1z@fu0$}`awFS_atU=Eb|jzyGZ(Xvffgu}{z z;Dh~|3i86hi?XR_l-2OY%7Ui1*ss|4WTP%!a!DJct&bB2kD|n0Ja3d-@WzrITdb?Z zo30YkUo;!qFhS&%@lW>aXP(~i+;hqU{GZDA-~anR=%Uswe1?uJGnVmBmiWxG+n;$F z&(J@W|NGwi@6&~5q341=Lc^PSOx$~vSCm)Y!%z+54jfV@=Kl{{hqLYZ=)*(sL(R`^ zkp43=#x4xAOHV(lW3UuI1HVx|eL()AK2gJ;s1F;GfL}WGb?sT`i?$eLHriW5x1f@~ z?|uvi_Mht4KLRX20M$=EmR(>l6q@L}`8~Zr_*YJSUZLJllFz@R1w&OJ@!3X>)=%*JmjTs_R3sUf%QbTSeiW3(37pSN~yMz0-L$2y}F^> zHfAkdVXLTWd$poGY$&fNs;Moi2-LdWrB?b%Qqqa}uA9&PH3;-lfbid#|0%-mj!nMN zC1Bsag-gJ`*~q6X0%HA?l>bpF;8_X=p0A6YVyHp+ANF}TK5P$0)cILFq5tGGo>D57W-0H@#oTl{_({k|K&cT1yyKRq85 zzn}UF{)JvR2g4qiKaUbfqTx?|gFhLdC*fE;Cdup_z`N$YG53-GEN#a9G6XwKxpi;EO5x3)OyY8~fSSc-ER- zmbk1u6Io;roP1g{k8-qc>=d>Lr?s^A-kUOwyK2vL{sHv&2)Uw(d3;k}Xd5cza z<@4bB-Qc=aI*q5!v(?Iy;87!Txirb{`!3+Kn(zZGx&3hasOVHYTCw@MjvKiqXJ zd^G&vgZMZGET@jnKL;$|CjS{yh15~C5EEgWdt!X8 z8w_&cor1IllM{M2*G0}56tP~Pz%wTR#=7r@=m5qu+BigVGy zfdH4l1S#+W-dd}y1^nlLCt$WOp;#MUVTrZQWI^Zr8*+9yXSrUgq%^D3FP}xAeo>K> zn-YFM9De^SCglA5sXJkvrD7MKP3k^%5Us(#=)t3CRrhbu6>~q;`LWCPa#(M@T)X*y zwciZ!LrdAz+n;K-q;qTT!r}|hu;u{Mths^S0kY;26S8wtp(4Z$D}VD&VcR7n8LLOD zHQVmcA+qh{WY~5DPBKW#$hOU>(kcT1lot8+CYoR{i)JW!A{S893$5sU5??SAd9SK4OwJ%e9L!Kx;tcU zlAYO(AHzudZ*C&pEsV6gD?Ap-AdNWxo9r~=w6K`eHSjZAq^`h=2|k0rk`v4F67)nZ zG5y@Lm?$pA_#Kk@|6x@*b(2b;3%Qq_;PL?8y?zFbWFZip(SPG*)9ftc zv_}6WUsWC!RiZii@2MXzpq-_u#A{#TTcP|z{Z;+K+r!c-lz*^BYFg}Tv^RKT@S%Fa z)LXTYbf-)Fq+M+%wQp3nR<|B|;5X~Ges){`oi=}3+oL@AWcxxMERXWwj4unA@phCM zi@pf1EU!@BW*wX>OMP9$5zd%}Od?Pmqv)2T7PA&cp2)g3lhr^LHFm5cC3@i+6)y?Y z^J-4^sSg%3Hr65{n>`W6TPed@f5p6(&;*_(&kbrW(v^`%hL3|K{i4u2X;eJdw$L4_ zPK4Fc$FNxk3VOl^Q6Hw%3+;%kiSGI5u+vjkGO>QW0~=1w zf+yvTE(TAn@{C+M*C_q!w2eD-k3kO$hvz;PR;COc^{h{xUTrvX@&|^{Cyy-gBvW$n zebg43kxDI$bVZ6_Ku*8IX;qKN)~U@Mg?oh%%Qz243+#cH7157Nt(1T`~Jm?zf^`9y$iG zoPDfVd3($0)BD&j*$c{f7c1vNQ`h1g2~sE7F46cGv_cPP$GhjTzb;GO3h$i_@(Hg1 z{JU_Y(IxU##LK;C!9zY`T)>CtWSAdbv&J2AcMTRanJe2$#s=M?j`(-c(*Y1S+;GFK z8I!%0-kPN3=7EOrwzQiLAO2nJrS#+%-4A-c4QglD9q+~?)) zinF{1;;`&J{lpdO0hntvD=8btrGcvO>*7(NrT8n*+t39LX8JX#0%Dlx@UhcA3+-9?T z&)T%~^t3VW>b#DU()Q&jo0e9BlFQplO4^r?`OR*tmCDg4THXsDWXM|(rKusk$bdv} zdb3_$rg$YF#lH~PK*FibBwhnyG{Lk2bqx}Z1_5<>EPL`?DdK8fF|ca$YWL_2i!{|$ z_Jy~PH?=m@rnqaH{O-eFNZh`r$!lZ@iFiL?cw6F?Ur5|G(%>?FoQn4Yj_h3ag%=au zjd*>azMrKUTWeZ+mSOB5|MMaB-3;_j2xQMte2fBz2$03U4Z{dgrXW7|t?_MRG?6cU zL&Hbxz8BS(G`Lu8^RCIN=t~+l(V?DjZvQIeEvAFvi?Id&2N)JimrYSu%+tuh;SoW^ zvay8>m#UL#LV^{-M3*WoX%h1zjcyhGg97E9Y&S*{x}EOO*YRJs$Jw0_F}6=qGF@e0 zCQu1At6{CD)zjrQ;wMLxm+16m?km?JgYg71YasEWC1_3TToTa;+>24RiyX;+ zz?(H&HwLeI>#eKWJ3HI2x-&c$X8owdv%x+VzLR~qtG&GoxG{}D2YeGJsUu)*r`T3Y zJ>GaAlvnMwl6dtpg(%TI=%Rt;&E}kqdmXI z*V5Q-Z6B?x8*?|i+Z`nhwauN4HGPh>Fl!>uINq6!x@*ub_!r9@$e-XBWvbxR2a}Os zO!pA}dx0r0(7)ep9B7=ubz*q<3H9qQF&d(=N}8>6(m^iSv-q1MggV;x$D zm=cwnk5Hxq=F|w_{Jeju6>};@heL>-e33jg7%A#Z2K$;H8iapoF0q62%e>otzU^Mt zr2Nw6x3EW*PK)2hnnLZHyXQauOq1^1cx!jl4c0a#8~GKf!y$Q&2-0KP45b zA_-2Aa6p>DbN z^!M1^Ay-d<%~nvjA{6TARlognDIlcW3|c!lt?=+ugc+N5_*qQULYlMjFC`_Al$!-b zx3Z>6pGE0}i`iGH{E{{Kw)yZsul$NQW~=O{ae78Ah$Wo0KSeDgOLwZMWvQNxuZ8w} zpe>7Pp`bS8MaAE}wWDKeHwg`Y>3kE%JlncCP#fHYmyiZ4gT0VeI(y?M@WfMZs#rOP z_~d*hZ*FHzgpIf&@C&Rey4Fp>+Q4QAH_pb;O<{I%@VFqKfuSp4bTi$Lel-50A5A?O zeiHvM2xaNma7rycLp3_pYFz02V8+(R*`FYK9<{2#fgI;XECmp5Xk##(w@7_%x;qU`OpJowVW9 zG+B7!$Ak(ieCZ3krw5Q*GY|vb2f&ve?~}eSp~#+`&|P9sBt&t_V|1ILuaa>k~bdjqt3tQ7ioL>Tj*uotP@? z)0XXHtLbD?CgoU?k}Nrj0#2KCMSBfxC z2^9&cK+xsxcl8c>?4eBAP-L%g^$vLHyS})&u&Bb6#7c5&OKdilk8{^c3oQglE<4)q z8SwPm8*}SQ)o-TyQg>cyVZ!Q`s`3F!d&396FDO6@-MVIIPyEyuXM79Y4`2N7#04pt zdSo%~ZDt=TDa>E$%gFGRDvy&i#y=N#gsJ>q?5Xt+({qoPdNVVUul zbLT&}IWd7PW5#7iSHFl+tz1%WPfl(rliF#ejGg~fM46RBBPChQ&7-3LkmY4>gnosk zXQ4KXZHbf38`pNNWNB$lLy_uhYW)71-J3eR^v-8*Qp8nD<{8o(}*{FMeER3 z-|?A!bPiOon;!-Rx+8o?S(2Z!V_A{qXKc%_*s*aOC(e_g zBqVVRNk|ZZJP42gNn4;aK(o-a3oSLTEu;_@a38cZ%kGxPvQUbF@Rg=%Xo0p+%A?Sx zltLG5>-zhjGxthYvJ;@+_x0P~_c@VtrI|T%=FFKhXJ*cvQ&UT(&b8I5T77vj{rPc=MID%x)fRo?Ywp*2W)NIJLACsp8sGT6KdU?tw1C z^HZ`O1tuX4C#6ejL&7c;Xgdnhxv2$1c4 z(C($s(*fx4t_hpS$f*B!5fJ_#=9kzrpzEaN*JtH~Zr}1>f8BDs+vmut&!=N{g0&P{ z#dcaXwub}`pJ|&1D^ScMfQ&EB`Lo5w?6Pz*t*+<^aYw`k>)g`prKgB!c9GL5Y|HeG zPZc$0sTmbG2&c%{0rcKQ43EsAV5KjY76r6JLzYp$zcZsaJ*&!v)zo5FRhF|T>&`82 zy%~5etH_xyw1}prJBo7-lVy~|Z%G_KGMg?S11r%kpykm%6qca-pD3!ECeq8Y^*g%7 z+1aH|r|O6-S*8Kc;w%yE(QnQ6PgAoRik{LpGDM8@Wsu+CFMF_+JgOmTsJtEPY{n%N zuc+03^TT|fEkoD_HI)dN5hofA5QCBgt6o_GSX;TZIF-be5QximQ6R{g89NBg-uj4L zb*A~U#o1l@9a+;Q8JCDVK(lOhnm=1??$-Y)s~AXY%TnkUBoi(GqDvOE8m;2NI&8jRhXL?NR~D*E|3khGkhB{nV*o3kr2m~P^ZWj5h-7G>-IqzL%!2&ng>hpWLcRt(WMW*4)?9{0S7 z^vxEW&r9^WYzKJZ<|$fX;RJ&@%w`eaPOMg!X;;(fhqV`{8V%?b*{^l_uZ?~+#z%#y zFvf@M=ix*@UpjfbTxWK?gR~&_87B7@$U>|bavFOa8W#O-}Oy9dYn(iYSO~dLVJ+;5}jNM zZv1F;iyUjVugbCZ33x@jb9_Bfxj6IANxV{&dl>M_lz{CY40wqyqeGHbj*B4%F4~%;G}~2UmnYK3lhW)}qp-|D zIdPu4NwcQm2NM@|GGa+NVoecsW(w#C z|F#mGY?s(=P5VM}+T+%=!%1ndNV2r6Af86PmCbeu^qZ)QS18mhYg)5Q%`%&2;8JJl zH!5b(O2U+B37DM7G)`%sg~mpG7^B2P+D05=d;jS<56y z;M8ZR)e@4)BjY3w2uEtU{tU6RdZT(H*g=32ac(eMVW66V2d6Rw(H6T=w0$ft$imd( zieM+xg=jkiMysYl8j^)9S?|zkv}sFWwOO#9>2E{atX;}(<#WpCm8+C}%9oUXgkAeh zSXbSl+@;*3d`r1s`GNAU%0tS3C{HL)DbFfDQGTYppuB{3L%LF21@pv>KCuh^|HN;q zuPgSuF7xm2`KUc+*4ovz=kNMRp8CMQe}7K;jq;lErt*&RC*?2jC^@D~2n``OrXk9N z8_HXWm=4uBBx*$iZ7z%1qDSqjC=J(4DVbq+EjdDwiu?P_9v~Rlcm;pnP4qMfryEO+@p%Px+4WedS-2e^(w+ z{!@8Ud0Kf+`Kj`A<(JB@r2kpkb^0W)hZs5zymw$O+?f&J<_lM1gwfK>A#dtZK(WaKf z&RVi@jTO?`#h1>Tcj;n&Pl6gYf2B0mN8@$OI6)nVu-B!vN=ZeWqbgy#Tsq z19sJClkKtA(q15qdYqL7?fC`HO05mQI4PD0zR*FEQ)`D20h~b=I06;!q&!5{P&*uY zI5RRDZTM@<2-O9;ixyW`FD~j1d^K2C7tG47$jkG)va($Myu6CsEc|vqG9X)bpssrH zS+ZD$I4_Ykcp(bcRg1lx?LGr`>=#BAY7xp6b?fW6re_mygNiNQ(j4g2wPcr`O2Jfa zpwl#SS2}qQHl_dK{Lr>&Q5(GiGiL@W8XA&Fp2RiR$b4;!W;RsF%n2U9gI1-%bd{DO zv_=TyjoeU}yiDm>_aKM8J>)cV>Ce3N)>}r_x8C~w@4=UJB8YRT=aCy$AkAdS2NS&z z1;A);<$XB~9$?A#JDZ-JPvKeRx9xGTG@ z^r7hwm$qf&;o<2Im5~Q5Md{+0nZUOdD<4dL>HwK>s+JUBN@+nXu8{a59q@539N7WF z5ca$u#|Z%-v?JG$s5?UIMnFiU00O0vltlXI$OvZ%^NoKKg9X}*_`U0s)o#jzq;MnhQ zWA9;FL8BDOHDD7G0tX{WxV>hr$cK9E!5|QNUOcAH zVFX@#?X@^B5)Q~kShx*D^k-hvI{`t@A!t16Bu1Q1XfC@%D-3YdTCQHU_K3O(yuhus ztDDfxLpaL-gd@21t}6?)#-u(rb2FB96U(pYJE`F6)vJ@shT~-ou2a*frgpb`XlUpN zR^rdlxe0OIVbt|St>s4;J#+AnEmnt=5$4kc8my<)=jSMoQSSW)_wLhLXum+gua6-= z;4=4e4Zsd{z(Nt#{NdZHxu&WI%sf;VQ?T7-$7mh`9`8NyfY|_oBkPq^*8I-)02)W_ z`}T-vdy(OoSa6Uxnq ztREc~+4_6xm6SIcLtyP_>_+wZXcWDO^5Su$Je4LpE?Ig#t_>cOMUNu$_+c)_?X%RW zxcPoC*&zoo%8%(^iE@ovOB9yeR2xc6{6Tq{v1Iv1JBwuD;!&@RU8!Cv4o0IRzy)og zT-YbEBhn|g1$)GtGsw1cVtsU&3dF7)jv_+mfSyU^Mxx?6_tbG>U#o>KY-K+!#{_DPF6@Q|1-NjI6{MoKxau<|Ldrr#L2oKA#Lz-Hx1?GfWId zURJMs*{s{F_j=^P$dvVtyetlKhFD`f9X%7riztUY+0iiPBH7P5l@a=GLL$6I#6hZx zFaji*ZbBj`oF@#{=UfCx=8SWLNjWnw)hcsukDA#{Iv+vGX&31SrqTBh=2$5yW!IV@S#GNWn|(4alN)h<{_Wi8gUK&ZV-3q8`X8<8~WJ>PYB{Z z=nFKeMu>-=2Ro(oDkL-Ulfk=5eR{pw6C}M2-sLVed%{dlaHQ-gssk;dop#?b=$-o! z&U|R}#QRaqQ6G-MFPEe-QkY&e>T!nsGRY6g*)j*0g#r%D-yRE)|n zkIC&+14Ii(9JL*FuneObMyLWFXch=@+>C=BgU3+LkTViH;xiyfGKoh$k3P<8!GrOn zd`2!lD~n4w#+C2@EQW+5meetyWy)L1$2nQ1TIvm3r6Kyy9K*zOQhLde2{butg4W0h z-UO{AcaqR#_Jl0CmpC+~5P_HCH+D81B6T=yK~e) zcIU3q&MgZAfz3lJp_E*P3%}9RZ#h@Ln#K-VOEZ@&!A2EW&pS|JcwQi*eK zIX#M-!c+oWJx8nu=b(f}w@>0>T0DV;TRNjFhc=5jlv$jo-;8op2Sx<(C`!Pl%kZ0? z5AzLm(K$D*jCO8a5D;^K5S1X@xR>CaYP)tJNf0MlQZ~aH)+>ZJplKcooe+8V-H84d zk%i9#RpJ%#N|nAw+*hTS>*ZC5CBDWA17pJu2*RuSV$Vm^#sk`0RpW(K)E1)_u!8yqEpB*rMx?iNq! z9gz4>>a$UpXbs64m-wTk2w5e*p{;-?C6{APqiK_MC2o&Vp2xa5o9*NrG;hTFQl=9O zIXg==gnN$r+9LDO1cpp~Dly~P01`BwBIgMj*K!V}ITup|WGsX@W(<<~b0G7nT^}#= znPyBk8|c;zx}8Mk6AkHaN|_IyGH7YYe8!k${v61B6PtLS(fkva`34ricoZ^!eM08D z(Q~HEm$hTXxkCT$_;X^pe!uu9u}ptJax{+tL#~cSQ76lMl7k6Z$uhu2QzP}Xp)MNz zfbjsDnzG8n>K%yAx}9Z|p)X|~&cW%}X-teM?rV}@z#*HlxR-iV@*3)hV>q?sKY{#9 z(J{HLEZJp#<^ZY2s{>O0vmB9aA{sIW8`2arK&p1j(gw1LrKBNGO>KC4G;AtV`Rpm^`^4Dya#1xt1BG`lpTn*iG${Api95!(X00U#rI%v#T@!2YY z0VE^Kf870}302PNGywrm8n9;Vpn=SnGV@yJ9^^IXW#-1n4%5UUwQ6H>F=hbpfC1gW zf#G|2!D#T8mB(m>%5$dVRcIiTGm(+}iw+quiLwNZAr2wiuw=M6JZsC$`HJUj6W1iZ zGNAG(kT6+0vWx*^EOEUOo@HIaut*6qMhod+JX#1A=~2dD`M6aH=~4!NLYtD*Ge(uv zrf6tmP)+JN$u~52$Jb^_T9d&IlSjEl|FgCboW-bd;d8oA}M(d1@0h zAGtHY%q-XZlB1XdjSU4}E%M%nv06+(7#gOMJYkaD;td$NQ^RA1^9!RUY6I;cVV4CZ z3>hX%BrrUY_MF7$))_(KVrb8l>*KZORM~klsg=ZksF!+WD!EPhK8f5;)!ey9xQDrq zssC8gQwMTy%MX@Iw7h06;k7f8aekgrWL*ZoP#yLvW*Ocy z{5!>7qSGSY@&pNBsWGoN$i*SbTf?tP1>X z-`3Hw?J(`_(>}XUJn(%n58i(vb%e(I=f@6-irDcF^gn6~^$T%UauB)ZDp56Gokg>j z_0HnwW_|Dbo!|c+zn^1y24B~61f$=hX}8;ovS*Ke;5g{rHnstzr< zYCxPmxVL}yj-~pFc28x)X-oGkJ*^?+?YDO>p{IKbZ>(5{AE*23m$!AU znmJflH@&1f-|PPNg7p_&a(2(+4HZ54UzFv$VCeCf^e* zF6u1)`l@H`RsPGX2&Z1$ZTbk7>>1=KwZLUiiY6CawqCVm%c{s=&AC#Um4#?>xEM%HmlRnk}itwNi+{N<7AXBEaMndwx}JkqfAfd>?!~aLmS|s znZh0fyd3H;;Lhh0X_S$z7Nu=#JJL3!pHfrS(bXJ2bN=az+e$z3sx-ZD($J=u_>plzNjv+81Jb?4SVM#^w{#c<<2J zJD-^v9K?N+Pp78Fv8g3A87P4`R-$g{t~qmdEj@MToH;vB?HUY+2fO&ach>y*vu4ff z^%qmnpkjaTyd7QJ7Y;4l-er7*8&-D=b*yS^T!oL-4Xb)u_O|r&v{3H7^w!dYag@N; z%RGhU*Ay6&Q(#)ZCSe`oxMApr0BpIq+X6Ugv0$4$r@Qa-7L3C?+jY6L9jkqj3VXV$I_>^t?W#>UvbC~izn1O51z{}C+QMNR{hYTsyEYsDH|sb5 z%3U4I^fafRdtQ3jlNqdb{|dDaVc-36^y;K&2Ix&tMKUG=?yOwdH*dv?`PJcYbyZUn zoEY`?M(EYtQd8T~Qd`pk`E)n@Ht%M?&vbK@qb5jSU`-BFZ33#+w%l>|NEj>ZL zW65u~YDwWaO|H}?1_uYxip%t?aWaW_K!`w|rU3#ZWdZ3ASox9eFmeC=gZJORL%lTe z#v75?b)+@*bKR2|nN!-`J>huMx`nDIJxqNNzoZ3|Z?8E45g4G^hR*kp8 zPxYD@Vm^hB8>|5mSOQZoFlAhU?I;|A^IpfVBcn79>8=^wPNG|nuv`GAxZ%woE;Yb3 z0S%Wuan;j>T^4iXp()gtMrT6Ilx?`gk?V4(Hk;bNVW-{Ya)M!0@ujNv_NwZ(w(4xJ zH#;joA9tf>d*>}K&2Q^$af^RLRLCC}%v)Ke>5*YKW{Xj z_AEIf1@N0;%s2@d0kr{PYlx?uE@>>%3~JUbIKQjw`~{1)bs?5UB7w!uEU4v`fW{wuGTAveUpQEYZ0Kk4a@94!@C-G9pVEh zU|Nn)ui)9s(w;;Mk3^GC%k+5ed_ayiSx6FM0|KJ?_H3?xt{e zw|-GmcXyM!u+Z(nFOI$o#JZ;LKKfSZi6@8g3rZBa#kw7RVkN$K3JN^ouC8#nTfeJ2 z9Pa8X@W>JpM=_XvF|3Y*&9SInrJMw_&&_ z)YgWG1Gr!XmLtm`p8w#Rx-Fllxoj0)l_>Ze4L4lFhK#v*pebDAZO+YgBHU2Rx~{Hu zExuxpGuIXN);2W_T-=xM_vaUsmuEDt**Uj&XKlXImD^b0TT<7(p{;F0cij?SL1V7V znP0Q3cka$Ljqe1C#AQW+K#_iRQ2-;yz;ZkKDxfqGcM_fyP>$wX;3IJ~wG8X*g)t=Y zBP<9{`s~`&(XpwkYh!2U#x5&nR5xKrpBrXJySt;a<$Hgi=n&z9w>ZrtHXn=2No!|% zoUm4sHXp#x<=N`Fw2J_ZB#G(<=5`S4eI`~WuoJk+{9o#3bq#5^xCe;ohbAEEIea35 zNM*F4K{PgoYRl|1XEyA;wlhD}c*$j#tZKkpV<^Aly1g?SX4=bYLye81fh2dA@&=Dn zjYb%q(b(l^B~K0=#)u_v6+CERPjP6%Ar8X-o5R)zD+4?|ob>)?n)raE`@U-`H_O$o6X~wvAmLyR1 zKb~AO)*50yLpP3+Zft{Y92%Ug8+Ur38;_H2tXgzq8$9U#RV{=>CEa*6tY$y4evCWk zrhfc!Dz$(*ZOJ}za&+EUX!Gp!*}NsxScg>p~^MN z^?wh_d`dzNPfZ|mT{5=i(-89i616{huaK`s8DX>pwxbKbZ6qla*fw)ED@tqwr-Wyr(Ye>uZ83p zJA(VT6fGkUD+ugB`JsW+HES6)!#j3l(0+yyg94E=oZ9H!0d?5~qFKn`6Np3sH(fG9 z0!7Q?*k?{!S72TDanW*U2dZ5LWQa%1*|p2`61`)G88JuyJmMlyaGoiH=CJad5~IP1 z-5c7aqZ+#4dFz+r3$aTR!4;rw!*}It(8EiCbEWpok8nJuJ;Pq))$xO%+fJq%^lS2u zNR%T;`iepI$Fa`Xhl3^owLU}yv5h`G@hw>H9f$Vn#2kdX@LY;Yx^O5bTIpgu=qko{ z52CQ94yr3--w}`GhcYrk`FbCqjXxq^uolz5b{-s-cy0EAEP+l*;KNn}20mWk1gzpX zS@0T%2m1*|Owq=Vp)E~}SvtpVngXX|gV@cO5}`@Rh&WFrD8rZ-d}Z<$qX18=CU0eu z)faP@WGz3mymm>GkRL2&8{0;aS+{?O#6Olk&vuDT~K79VMw5u31$_l~Ca|7dZGN|)cgtl8m4eTpkc z{nu7kkmXB*D!dwqkh?rB9YZdwvbE@A9YbDiEA;5kkayJ##Baz*7ik`kdJ;F0LN8Y~ zh*#hl3@fZ4U-Xc+I<&f?6CC|F@Bt;h3MXL$`VRIJMxMf+cmgAS0wwQ5N$48Zk~n{$ zRV0@t2;+}R2qusO90>`qR74}Fhj0ILu@WszKqDwg9$H?Qs8>*M>nhf*l$$q zGN!mx{}XJWjva8E_tDMr#f}L-+u#2L9226?&A3D0mUfP2VUE65KMl!;w~bz5e>^_)dhB~? zKnC_j%yAdtfe1+P=tn1nG=5CmYC;;nNvk;lq(m$vj!+t!0;^_IMo>VcZDYf>ArtP{ zHrr}~n-mr)727{0MMmQKuorR>`V`WLV;#v#Ina?A@M!1Ov2WOdJw0PD*`ixH+|hT< zut)pg6*RJsA|6>HAC2t?QQkjsv=PJ=iEUDkoIC!Mc0QtwsNam$o(m6`*C$6CfmM9~ zURF3}RWRP_0*H90o*57QG@?EkoBedaY!{+9p=Wcc?97Ob3&hbdDMGTkEW7N~{EfC2LwF`SS zs{WIS2Qk|`j5!dl4x|Ji!O9_V;9d{z4&Qc7cRHuL^n5xTP&W+?-iu2-aFFZx*1)S# zy=U;%L4b?5iK4YCK}5zvI5gHtU=^O2I10vo@XkA1x7rRElgEaw_u1}@bI69CfT$Ez zlV%W#K~tm55ih7KDF)3^@>)HD_0oh z@F4i;1p1KvW+dhWA&ccQWA61MGFvj3t+vS6@tz)A-q`(Ht-vIQ#o-}F(fNj7Lr{7g z5|$~R$rOiS3P$5!jA&nkui;Gvb&;PJ{YBziXl&Z&#=i(P?S}#8S_&P8SZD8mb8fTn zTyoj*y+&F4Z%2#m8IDBRCH5?*Q5La+E+Rj0uo=Scp1&YKFvMkpgQNfa49(`xik%a& z2PP({TIh(fKGHO?N@rZnJ}uztp0#g&mWz$v_6(zne!|?3e&Lcla^of2FFvpnmBjS-Xh5qP; zPjGCHCHuh~ts&yL3v9L`?+^6}%qrL0{$q4)lC+n!E-10vrej!<+*pz-^3~XJ#KoDX zUMb_^;Kb`w$HlR_jQr}~7#2r=EZNoN|3YA#WDk|v*ddIv_tCyi+_A&gT3S@2jV3J0o>Ni6N zpKt1`1y~JWN7O|wp1^7E#J;1h930g9wwUo!m+!p`@+`P>!$x# zf1Y@K_cKk35cp%XVH5DBVhB>dFIJ}mDjHkK(L)3E&QizDZzU2~1C z$gMw{aEvQ5Ty7hdES6^WW+!>J{|I}XEOpbsAJVfu%^482EO5oggdbtS`>fca-~5c$ zWo!QEz)8Z8$QcB4JyiW)n~_qIVv!uj%B9j=xwIQAC||R;NrsO)3CDT+jrplRQ?aOS17Y?)RxcFrkO{8(@`L43G zv@(}?oAs|(qpwO83>ujJ)NcoV3oQtGfibs}7RNngOz{-g)5){-Hrv?X;Fx{eu)TBi z$!@0hzJ0L=uu?y8nmN}?J;;Cn1&GvHIb(0L?;Sm*`xN_sj$W}%mW`aYJhD$w!69-t zO6pHsx1sqJgb?1=?_?&}=Fp|i_mR47*m-&H+z+oZaWM7^PFsGOYzgmeoe-MQmVY)h z$U(Fx*gJRhrBjR+r9v~b5L$CHZl)d*Lb%>IWe#lJ^442hw~lSxHf%e9mBfZPZqQ0V zp-2R{K^v(;?7r>T#lRT^d4INh?WPlH!w)q=0UQ>G^;u$>2iiuVOaGSsuXzXqTbx(* zZuH%Eqc;p^WYT8A_r8sgEFv=<`pyES7k$U^HDm8VLqwd=pOHpw>UvVMHAbCVhJKFG z3g=ndgJbxnympr_NfKTHrvdxulCHboj-PD8w30O z?=2l12ZyME9{|%wB&Jx?l4kpK>^l-;x^+UDEp`?zqHC!{YYiqQ6it?V7_H8gTZh`NtxjzKkP3l^LnS3&1kL+ zHY1BSue8_~D149+)_>`pKHW=R@y%ChNmW(nBJ&%4<`x#`JKo@N-wV!Ii9O-Dh(HBP z3_>Jvf^%Y&Pom&lB2kq-{F{Ka*IQcRM{6dv06#bBPn}G9yiVBqfWP$kZ?=Jck)HqQ zmxESmmLgl2f2cP$DBFzo;XpsBGt5pgKTps(@lGNRk~&bq_%SrfSLQ7$s%)Z9*=^S6 zPuzu6w5c*twCS@JWu3{e#BBXkpUD(S&G9&|pbV`ZJgV0~+o8x!@B&}ZE-bn#{61CH z#$F&D!sT;1eJ=5w@NLk)vEw4)vu1H!+@7z;ay$u1bljMeAc@-BXWB@_m|V=} zg*cjp0f5Q(@^iLIdj=0bSQzjXm*$b|30H!N%cg_5FyCor!dxp8F6^wTD)Cu=At6QQ8|>{CmxA6vFohqGxA3H1O&+N!BXh&2 z5;Si}%AH)45Kj*oRNDlqxkK3?o0QIzKfxeVkNtAhkqwQn8W90PP#Ql27?hM3I%bIqXm?2&lw~F=pdy!W?Wlm?A=hb&{h(|VO zw~F2BPq8bUusOSxe57Ds5%!+(Ix7xck-Hp_%+%b=X!Ka8G~(>>e&xuSHz6bl#~~tUL2GGR&QMaa(C1P>R=> z@u^;0QCb!Vl$BPPpM?MGfVGQZB|(Cnab=|+uS6-z{h)e{_y^5Jlo7CV6xF+;JJf6T z({`+K6lr(JGzxfnbnC_oI7wB$re1@%UsQ_dU_`wX{X5RwrT-OglnWpPG?Plui(?N_ zF7ZglDvw%u=nz5Q4d|}|M#3g*_m@`gKYK-lN-tZMoP%&902*aD=S#@4Y#HOY9~Y7j z0}A%Eh;9fzMq-yOM;8t(XsoJkS}>qq8R>H&L&P+nK~4h$;rxFsFjW_v50; z?J~yR5zy;;t%LSdMLW!-xB)dGarLw_QrC!tH&hqqz0_FKFXzN0hc{1Kl z@Ly)fOXRKDb*Av+jr)meCD?c17A0{3B9+3y_~m=G3*UJMUndTT*Oe;xD#2MLw((3O zn!s7buDm6k4dV6QJlB#)Em?NHK2a-nVONAsHLZMWa^BD5Y>HkmEO*$V)S7$BUTF9E z%S(&>{?YdO`gVFXm*f{0mK5X@;gv@xa>W-XzDd{3jZBtzW_TVXeAOq z6l60sm?&-h3Z<9*bQkDwHz8zKQ8fDR!NDqp0A> zR(mFXBwpdTJRC7e#^T{1Jmek5lmZT0n0?5YBiUhV=I`cMb=X??yE#4`Hq2BgZ;ncb zt&P9ON0@C^%6HgYAip_w9JWsWZjKCx4U&-4C3ib)Xcm8Gi3V${ZvJjk*I}E_-%W}+ zY&a|C3k}Jom5VQFN2ior_1Wc1A`P9eNiOg4WO{n5D||&Pxj?}u<9#tna&cc!tw)g0 z@T$O)>-yfycWL8Cjv!6!Qg0DD?#mF*SR|L&RhsKw($T2i((BG;(FHi4Tz368lQ$Tb z<~VcMR`WPC$BM&->+MK4M}xyQz~7I8W;6mEwzd4-t=$A-us=Wp8?Dc{fJ@B0nT zb=cPN_d}}WONVW}kuG`5VcTGQmz?3SoyD4vDYuAIAXMXeg-~8qJE5nszCbCj&RRc5 z?L2S*JSAo0)p*Kbo<%Cz*qORfl0?y#MFv)+=t`Qn>Z(1aKrufdqxM37IHr9TqY%4v z$r?lmb>K$F`hJ>l`q%B>b=DsB%7vW>Y&E@e;hw#FKc+OvokZy^d(PT5b?G}%ciH5+ zd9I?}0lMsiIX(gEvikJwtoGj8=Jd3H1!Q+-*0ijyP3l{vLOcJ13{eQ`Lxv zGWw(%_dqMWNTWW2^)BgqhV`zvbyswc{`u=p|I#^;AFv)&X(~drDv;*F;-30+S5CNnW?Nc%K>wl%raL<$GpnmAFwL74 zmMAdJkmU!UBhZD56Vb(lyJIp@^j9Q!t!@%c?%`&t%04Yq{1i7VHJp($$J0qDX{v^* z8u;Uuvv#!3S=wJ&-sG?BU)rl(y=Tv!{w|81)`h7w0fA0g<9%tChM^(C=vs=mM9w>Dc4y~iJDrvFcyMLW196X* zsh-PpP2snjw`|^F@*C4K&TlB;iD?A~JJ^_( zGj~;aWm?({liRcl8`7rbc2@YZ3eqZ~7HH7_#v#EfrsOt*GA6ryW(uO{$1c9|;&V=0 zuH8JDCi{2nScHQwM0$gBuL12D;9QK}rszaCG;VDTv=_k901$^B%kC=%>w-5FmF^fG z-ceP4TagdeRPTw)>(-WR&#QM24-X#-E-BpQZYkBjqJCCg9~%SYEfaIapCB&_NoL{n z5fSJLn!|J@itZI*an7NS$Tdc@_wIFH$n@GXL|WRCGq21naAer0?Th^CQSr9^l5asl zV{eIYBS?A>&n3&t^*^f1kg{fzWwfaW5#yDNXkPoGn;blB!( z%H#b{%1|?V-sD`T|AZeWtLc>I+ML{_^W|gGLiz~ON6*cjliz0L(1}7=UgCYP`STVQ zSY1~45+d*~oD({KLH_*d)-CHv?@4->H>7?2Kb;=pPa*Ag;mxa%E5)nAOWY=`>aQk0 z7L|&e%WT&uPb>R6Q#t5mK!K0t>N!dNnGdVy5A89GKtSA+KCN5#p|C*Ixg z_SA{qU4If5OPPv3Rq_LM7UFd0;5J-mq1Q#r71CNc-~4ehMv#Lu8E!Vl5H;9*l@mmo zjCZ7|e`!{WsS9$aiDyNNUktMzmNMx?LY+pI8t-u&E!_Cq5T9~PPs;fsfcoqgd-#1( zY!+igf{4;JDHZ?G=Q;@~^GMS{wBfy2-VGB$!jDF#eLO}8>GmpB4ieJ3R7j_jLRz|V z#?v=Dqs3y*_?M9GA)GOjGu{%?xdmrT;Eb24afAq=JU+rxNS8~ze-}A^!22C||8dH# z%0lk?wWs5?fYOF>>;Yb)C1H$+CrlK{gsCE%u#@OdI7Eyj93}Dyr-(UJ`E*?iZ9*yelZZI3m6xJRwR5zY#wWs4*ec=V~pgn8_$^BgVm#SAfxb|}yki1}h6IVJPEP)rsJ zcy~VUEu`lcay*;YdBjfR{b8aXtvO6A;{B<-S0LJR)p?|uLi^^EN}VxJ%tddhoR=z6 z`0c{EQ%O5dr(7uRBCZ2{(?O)sOLsTRFS;SWrsq#3=Uj5>(kyM`wd>2!v}C=x+I(@Z zu8&#UXs(w6sg!OcbtIH~8Mj(pmofOmW8nocK9)ht@H{#A=j)2%R_ba~Wg zGAZZic4}-P)gG$l8e`hiimHuN8z<2_QY)elBiQKEZ^%dyKRdTzE}B+jSYW}F%`)gi zCytz(#45{EAL}xC@|^i%qz(sR4yWR_CZ(w+CDs1jFoTtmFQR>%LWW*qXak8ek8 z5a&>8=|T-7L=7=s!YZBhUzeoS5vzKqT3jZqKUZBTMA=GS%XBHXQ%+T~T}@J{*6{*~ z)iJ~q*o>y7Rq?7u&o%UqA(o<<31Wcmp?ICYSzeV^oonHYAV+$vjw9AASA80lt3}%* z>^t^I(zCOOQ(D@^uPTiy&vX2$w5m?(oj>un`iT?W#6WSUSRpowN71aZlOKpr$-c9k zBkz@O%0u!q`HRusm|{F;yk-;`mB!B&tHsX}Wocu{vJAIuvOH$_lV!K%UzRdUjgxe0 z;S}oB$|=>Uo73%1zv};)p@#ef%9tTEzTb}f9ib7 zxy-r7+S%IAy1}}``n`*nOSa2Wm%qB~b-C#Bi)%;MKCW9`pKyKN^%plUw+?Qd-6pur zbX)AU#%-(H6K==d{_XaITeZ8@y_I{adpGxi?svK`bAR0Z&+ad~zvccf_fq#u9#I}` zJf?aq@L1__*yA&gQyyg=mp$yB9-cv-v7VDWANKsC=LyfVo|P@ywV2mpd5eQBe)h6@ z-R3pMYqHloujO73cy0IE=k4U}?Y-Q4gZFOllisyHhEEHh5T7`o4nCcIhWd>4+2B*? zbHL}QPqEKgpGu#rzFxjVd>8nx@_ohk9p4ZAoc*%>dixFa8|#Iw*Q*^mNDXs_3VqKZvf0af*qJ=^3*k=Jl9^F{fgFj*X0M8`~+iZ|v={ zcgN0%eIWMFvERmp#-+v$jJrK8^pTu2^_l|EJ-z)z1_}us<@$2LN*vhTdh*oP` z{gBW*;qio`g#RS`oamJ}DRF1w_pK9KPiwus^}*I3w?5nYVvTw3*XpW1By>d8f_SZ7#KK(KfN|khXbk=eJ$ec1PR2Z4b9S+4f4ixOM~E zjcT{7-P7$pXjj^7pl=xwUA4rSHVt{*rW&{xV#~$wb*!rps*ET@H}9$-88(%$KX= z$40o3ZM<##%lO9PWO224GCEpEt&e&->T+~IbXas$bZm4&bm!1$zF1h94;rwDU9snMu@)BVdHCy zU=+G@rG%)}T_~`HEAO!k*Pw4k?)kiOE7ei|%?(59J`s|6O?Uj)e+r(!Ofipsh@{tVmoaiK^ZR{bwOG$gwjB@iac#~2!c6dYtmYo((F4qI?=wps z6UF$Ir|>Gz%6QpLwvxl7mkeYk?L%+&MLiwmY}rXv(!;~Cvx{X{W@9&6Yn~i|xxn+n7dv62~Q1$tg99%hZOMLZ;)7Jn2^il@W_;-6xl*vqPFzj#d!5^svn z#BuQn>x*y2JK{8R`!dGJB4+R9tibMPu3E>8y+#Cz4a`s*SxszX7T=2B{)h+_53;^^ z6z_c}v&&uf#<0IiBU0 z_^1EIi~SDoZN4~%xA%j%M|_Vruo&OvUwGLc$%V{r1#+oeBCNg(UmD3nwcQcpf z%Sm!FR-gpW@oW6llX!P$WINejwq{hel}U1(94SZ1F<5{*Ti1=(lw>4$THYz!B0(rEO3*~_7C7axMBpUc>6K9Bz^7oDU4Xo z0Y~~Qc~&2L%hmMd44t3K^Vjs`+PB6>y+@scs9TnU5cxKFn_ z%M7?%coC!O`>6g35owkI{2j#}QA?32FH@f~ ztm!`beWe9BG$N_{C0~N=KVen{F)rA zIQ=&*mkr~fbrXg)Ic^%Sj>8}v)E;MRc~NA`v0|L;%`s5^*78^rMsZvNpF#?K*PmA} z?3}X4s;<;idyiyhf0EhkCO_;l3Q`@BhO~%(F+1&+PPF-CX18sk6|>@Xys;^)Iupft z=6F|Xk}ututB<0VkEDn6)N^|sK8_bX7p3VCz1Is3E!x*p7ogjn47zba@j$=C6h%rTBcMoTZkF>VCi@ov&BrAfuA*( zdG}f7?|#CDTRjg&_7@jqHoI2?#C+LN?Y`js+=J)S1+Qz6xQhSNO$?UZ@xM;ssVv4< zS;P)pPuWY{CUeA4`e+!wQ(xJS*?c&<>yQ6EP%On$8G&!J9Is}X^78O7R^mC_Au5^Y z@5J*PDu;o(!oT`joWV=_25;*mp5kfwC_DW-<>S^~c?%K+LGI+q`Ev`beJ1Df4lfJlc8Ck zHoWiB*KulJ^Hej-v^4kr4N05^yX^Ziwg3sLv-F|2I)E0 zp=RvRCb1crmcDbRwHP*i(cEdd3l`0pox7;OWtf?(b%dFIM3eNHS=Kvrtj;towWE4X z?c1rZb!20zwA5bKJ9TrkxU*TtcRGrDr&(O*I~UBDJIy*;XXr6{@{9$O7tNVEJAbL$ z=qWSu7vwLTvCukt+JfB0`5t2%-?Wa^QPy$#H1}~0tzyk>+68@GavfL8b#%ex#*|ZZ zVXgW4#XY~_4VQe!Ir&W+G%ekIT0;`2>8kB#%ygOINIIiQ(zNt!M{8$WXPd1zyRltT z(|cRznz3`6#Aak!^67(l&6;YSnY)#ZP}P$QnxxOnwl37Mjy~vQEogizeH!`v81ti-Ig@8{Sve7?`?e3dav2`%k*jP%Nkn6GIioqnCUTZ z;-ZNK6Q@p`F|ok6$uV*H6Q}$tW`U((Vu8!D`~~wm6il@;P}EDo67`pB!Sn_B>Tj2+ z^A;`8uQL|w_ZQAss@`A7aGR?R@@H@#OC^{)Lua6yB_*em<2B9knyy~cQnE9Q-XqMY zUMV^%JJozEH7&)d@1h0sbYxm;rkN-w({DxfRTqJte=%*%@YvRL2=a(BYO27 z+;?P$#kmW5%`Qku4OEuuSFyoU=FOg+yWm&x$`@eTW2N4jxyrl;;B~`20JZBR@gOX- z^4ZCcos+v@mI#|OYtAg~pQs&L91Weq%*&}oYoi!@@6PPtL%h2_{|Q#plDXQG-%(s^ z5OZ;N=J1Zp{q68DqV*lM4VDyAl^Od9e>M&gzGMj`{LxT5H9uO|>J?XvKM+1=Tp@hb z;!L>P_=K>I5TD0$Cv1bwuntzi(k3k6cs5LhNtC?#9WrNKTK301N06JvQ!!2+Du$34Cl3{4%uz9fszh^C47(%5 z;EAcSY+>&GzbVU~R30unbXj(&T%EsHF@<->Vp>Ocg_@%95#Kj0aQRFDR^bxvn@9Y*WEN=gx_Ybqn@9Ji_UejT% z4y&4k7xeM>I{a3Jj`Uyan9p^1%=Iu&5**awejS=Iuj=D}a8=>@f)1b4;gdSt>AKBz zv+Ft?u4)o4)yHPIKp)T6p_zWF>m+g;r$h62q&^<%I>0r@wX18EYl>?deH^dDs3u{E zKK9e0PESsZHZyd!x^m?5vkJ{)NB9qy8saNm$_UTu@RSbCm|}ITeq26vr93W2T|Us^ z0TsGZHe%k;;T|2nq~pz$&+C|HU7q0VM|HSWhi1%1mo>z%(BWbonlWZL-(@E6PSK%0 zcBPyy6I{mVaD)n7pVP-fbl6XaJ$2Ywg^u(YI;Mk5YjTU#VT2BYbm*f)cNdgnwdt@< zhnI9%p~F&Dd+TW(p48!&I{euBq4hoM+dAB*!+$mjU)0Bc(c#lNG}He|?JbZEvD=;OK8>DD~!cpZ*v5)RkLW;jS6_tBx5{$p!*^4zDxjyil%g~X*<+gTHI z7_GxF9R}#oONEX!u1$_rdV`jur_9j#nw8b5bFB`|V>7IBzCir<&fgM#t;5fCXvQ3C za(vkOq4PoK{W^SAhyT#w3p#vGhfnHorw+I2Yi-uyIvtuZtDKoJoEPYDwhql0Go0!? ziFccZCjV$RviizI{oa#2y&{_ zVVMrk>hP2fi=B9?#_6aIKhWU;9lqhThxnJAo~LQ0ct$-RB3@#bLvqhX9sffgU)S^I zbv>(I*YoLho&LJAlhQ-Yt!r>WAL{aa$a6$eT-4>fsLOd?$6wTG ze$eqh==dM>6{D5sAfxqlqxE&8^>w55b))rlqg8rC-J>9-KC7iZtEGOor7llPU6Pji zDhKrypOJr|B(GV%P@yhWg`Q2;YL8{Dx{6qUTM7ULlD(8v%tcjNQ^|8wNE8ROi zbv`|H4n1`a9d%4copXea@2KP3==e4|UhQ*9*+$3ju>6VR9r}tp^c8pLa_-RScc}Et z@XAkkSzqxUo&FyE?marUdvtF1nB~{U$vQsSJl64p)UnW4A*4oxv=t#ONyt^$eK`Cae%+OI<)xtY;J7{l9?$GfAbomG9k`K^rH9(hefG&RzU6KqP4$$fE)!{^) zW}$hk!}a>y^*VmNuEjEa)_VQ!99{Q07M^60bMzJG=qt|AXU)-P&Cz9>qpy2ZpR0XM zIfon!c9_(Yaq3yWmb|Jb<09ENOy)>E8P|qAy8axgC*ykJ1?RD=rk;!&#U0F*>}IJa ziLiR*>zIS3aTeQwsYTaKlkO-lX1^-2lFfTm(-JS`}C7>Z|P^^ zKG4s^9b(r?;Oz=>6?mC~JOv)Ox@+D@9>?Qh6bz^AgP;%f=uQimtAQ7IN3xTo!VP*X zm+A0l9loT)A9Z+zomti<`uJ5H?$%))VbhhyEaA-GJi+8V6vY|FY2{x!EwfB#CE>?) zZusFjAz`mmk@oLzc&p)0`_J`c_t4S5b}#`vQBJ{W-4w z9PM$D96z>yV^{O4YO5FRkL#nx>+7@3zS8gLUeiZgIO7>w_h~z;H~TevF)jZGj=mAG z_E+tPMKs5>s##jj2;rFCcGQ*eZU2n1BJ8ihca*8vzC!1FO@!FX)KTM)*&dGC5^X8r(Z+a`@P}E-b5AkZ#C4x>_hcr znE5oQ7wY!JLbPN@Sv{W_#_sU|?sX_T&`R5ZH0;1!?8GYUKv(_rLT{d4_yc#<|1RF) zzWNb<^TbCywJ@0{?n<#07xR3wTs!Q*wOW#5)r2LX6Fz(}N2=x>Ob_0thv0d9ypZUb^ze!MJ1ySa^=~V@ zcmkk3p}O1Qt6M?xbVoOKJ5*bE@zmrp%CG9JthI$!@uXI&Mcj1%IO+azrsn-A-vEA{ zbZuMc+B)mny6f6{=z1E|a~*l88hYs-le$)tTJ7gLs#fax%OkYZNBp|#`dD>+{B=)y z>7I1eJ?ZMGPaD~WyMwAe-aOOLj$>6T?*I~B9z_X-cs{w}roTs%A5C7|@Ow1* zhTrzbcm}KNSHHzcRf)Fdv5CiS{7pXE>SR1mn(-u)RsFUr{`GIu=1DL2X>qj0+by1JF{MSn79pPRc|OYTRQIo4J6l&+tvu5EqVu!Pn>FK|#|PyY zPqZsD9_3l46-J)(X5&$MtR4FBqg{hhik}`IYBo>gUQiNaqa}Cg(%C!g$k<5I&m?tW z4js-DKBG`bcb-d{$H-mC??^qO?_@;pV766Hdrspn(sRtjf8loqDtQ+*z0dDbt&)4S zN|vFI6O3H-e9}tp8lFXKYSgdRTDf0qWesjr)ti;t`&# ziV)kmhZrSx$XLnKK0N0XFCOEbVFLG>l&yGN>*vu!EolYQOr1_VGNA57mIOl7mSCyVFFBqNstS9Fxmd1n8N%x!~V9I z$-VAbFdOE;T$pD+CKlSyivm~#i(v^Yg?nKcEQb}a5>~-#xF6QQT383`VFPT0O|Tgr zge~w8Y=wtm8$1Hr?PtUeULS?WU?=Q>z3?i$2K(T3cmv*q{qPnXfcN1Dc^rk0;23_{ zarhWMfluKx_#D1~FX1aFwtpl};01ic>$mV7oQ5+{N-mR9|I3i^>n9`!B^6eEd4}e-+L1?2mmNsZY}nm7H-@ zoFxx~*iHKUK(t+hwrkLK4ce|j+cjvk294IB(Hb;bgN|y@Q4Kn(K}R*{s0JO?praae zRD+Ic&`}Ngslkej;JVK-3rGI0yi+LYf0utAZAr~(fp2*I7QTbia0ccv!p||n&oRQ! zF~ZL=!p||n&oRQ!F~ZL=!p||n&oRQ!F~ZL=L#jLKzT6-2)xUm(F%S!J5DzJMUp;v3 z3B4c(dP5)R3;m!!41mEf++M+`ImoCv$f!BUX!wB9@G-sc38P^zqhT+jVK1X$FQZ{E zqu~;EIgm9`AWusM@+3nb&oTsJe*<|=A&~V_AeJ|f=M@66y@A;8K40ggE*bA@1Yp@Sqhd1C&*bi^P0XV|> zN8uwV#$!H(wfKhDZ{a&Q4QJpiyAl1B-eG$0Fuo)AduVNM@Bv@&1NDrB`VE922nO}( zvQP+vaEO3Nh=P_74KbV>3vmz+t%ys6BxnQbnb~&G9y&lWq_AR1MmX`UMujVpsx8 z;a*q<%V7nqgjKK_?uRw77S_Rf*Z>=06KsYDVGBG2Tj62Y29LmYR<=8MeH0#po$z;T z*GsS){sAw;Kj9VF!~1*TRd@~d!Rzn_yb1f^EqI%>@4x|$-{tin6v2D&zWr+ycLl{= zL2*~Gy=Bha zU`I;H>qjVq^KgN4%AvwuhV4CpryhWZ9>6L`+ApBa3#jt~>b!tD`Ro$7fGfCxJ9vO6 zc!4+gfG_w#48%el#6t?D=)r4G=mj~@8~Q+B=m-5_01SpvtXW6H7#Pbq8V7g5c(@xT zz(kk?xsV5wvHVl8VKeQ!u|2!7J-e|zyRkjHQBNJ}sY5+=sHYC~)S;d_)KiCg>QGM| z>ZwCLb*QHf_0*xBI@D8#dg@S59qOq=J$0z34)xTbo;uW1hkEKzPaW#1Lp^n?T~nBe`lXmSK1- z?AVg00TyrqXRv|`xPlwFg9ms*3XHE9V}x9)xw7`V@lUMc65$nl zDJlL#ivMulS^S%)xtkeHC7VeegQG0dK;7cnc0d(|PZPd5slL2sN)l zqd)OH-9p-+02aYwSOQDoURVaIH&(z(SOxddtE+jvAJ)KHSO@E218js%uo)hNE$|R* zg@<7qJObMpAv<_|6dr?}@HlzzqL$CWUpOv==i#sL0{jhLgulZ}up9mXFT+3K71%>Q zd*M}h4fet7@CLjI`{6Bko3!u10gm70^&k|%d+_y~&mTlsUR;2Vy=h40`r zoPo0_s+4qUceD)7V*$MFZ=<8Pd20QV^n)n-k1|euDgkXK+G}b3N<6iNjD-SN1dCw_ zEQNbv87zktuo70mYPcWPz*<-b>tO?IgiWv+9)vCM5Nw5qVH-RGrnWBA@|S7(%e4Gu zTJ18ec9~YYOsid{)h^R&mua=jwAy7_?J}))nbx{Y>r^$ZFjaI0o6>4dPT3Vr&R;Z;FYH5X9TA`L!sHGKZX@y!^p_W#t zr4?#vg<4vnmR6{x6>4dPT3Vr&R;Z;FYH5X9TA`L!sHGKZX@y!^p_W#tMSHchKrJm$ zOAFMZyE4dPT3Vr&R;Z;FYH5X9TA`L!sHGKZX$9p`R#Ec{)cg`PucGEv z)VzwCS5fmSbfI)miVjNY`|q37x)zJ`K4+aE)hXIYrHrzdD}}H_@ILvUvR@@u>4wkq zVvR0fjV|yc@6H}b~Uf}!x~r%>tH=>fQ_&THp7Fk z1s;N}@GxwHN5E9g8QSa&ZFYt>JHvRbq}?hRuN92fO2%s??wD}p@{0wb=hBiM#o1dZ0&(P*)X!A3S*K)>d zIcJWA#P6!qD}oc0{no1j z<$E<>6A!ONubloXr~k_7zjFGooc=4P|H|pVa{8~FzALBi%IUju`mUV5E2rAQ0JuAIIr zr|-(?yK?%joW3ik@5<@Ba{8{EzALBien9W#^j$f9S5DuRJNixaO%;7pMc-7>H&yga z6@61h-&D~z<@8NCeN#@~l+!om^i4T^Q%>KM(>LYxO*ws2Mc-7>H|6wA6@61h-&D~z zRgS*-0bBY5w)6*l;@{ghWsDBBVmrs!Dr0PwF}BJWTV;%`GRB7Ln;)>bKVWlzz~=sd zU);2Bs_2_48N}X1l>H0(q+GB2)e{XT80%^eAOnv_+4>WDyj>vAN zcS5)u#j}Be&)N%i;{~5A_;0|n= zf$g;U4qhLH$6zPyfxYl5yaxN=b$A2bg#GXq9DpO7e-u7~V(Or*_BXtK3*W(MI0L1; z|09&ad3yzFXhDBpLOmB)v8UJ18_Yyn3m)PmO#5(U=)_LEu&ij^i-nZ=ZUSg;B z5<9(@*y+8*PVXgldM~lldx@RiOClLkC`T%4)lgT&=>kae;5D*NjnGzb3BCC+h8aRgW=o(9mUFfG>n0< zjNWl@7mSCyVFFBqNstS9Fqxj3LjTTS1)+Lt7R-h@Fc;>LW}&?VU6-Ki5_DaHu1nB$ z3A!#p*Cpt>1YMV)>k@Qb!pvHUwoA}<3ED0}+a+kb1Z|g~?Gm(Ig0@T0b_v=pLE9y0 zy98~QpzRX0U4pht(DqTZU4pht&~^#hF3~gV|2(6XVYSP!+GSYnGOTtPR=W(VUB?1#7DZPLC22RMG0*Mm?5@4@?UgmN8)kKh<;KMo(mC-5nJ z2A{(h@Fjc&#q4;UV6}A$oqWUbx9}aDhBI)Md`rpiM<|2yaDns6p~8Ne(ea6Fi+|W& z?`)JXQtH@QW+vtDW%U1AMnEYepp+3%$_OZB1eBuWQj}bZl1ou?DJtEC+DcJdDQYW4 zZKbHK6t$J2wo=qqirPw1TPZ3lMOEie)p=BP9#x%3E#EuT^8HQM>!wT; zgi?x7N)bvaLMcTkr3j^*LMcTkr3j@Ip_C%#?}I4eAWArh5)Pt-gDBx3N;rrTicmrk zN+?1JMJS;NB^05AB9u^s5{ghl5lT3S5)Pt-B9w3tCGd$bcn{v^p34!gdlWu`WAyHE z_!vHcPvJB89KL`r;VUS%A4ds%TY&vNlyDp+97hSqQNnSQa2zEZMhT}-!YPz+3MHIE z3CB>vF_dr&zxh+>K|G|`H=>?%sOKE&Ifr`Ap`LT7=N#%ehkDMTo^z<@9O~h7 zd-i{$o>J6Pih4>>&$kZsoI*XPu{Ec$HK(yPr?EAsu{CAbnnKi5hM2A$g{Y?x^%SC>Lex`; zdJ0ibA?hhaJ)fhVLex`;dJ0ibA?i7RdJdqT1E}W!>N$XV4xpX`sOJx;rx5iNqMkz3 zQ;2#BQBNW2DMUSmsHYJ196&uhgTV2-ydH!icn{vU^VAjBJqjPeF%)$iK88==Q}_%% zhcDnu_zH^Q1h(N6W%!2UZ{a&Q4QJr2eIM%i9QAyTdOk-zpQE0GsOKQ+If#1pqn`b! z=LqUK(nLKUpq@gl9&dVjIlWgxkCoD6=b0T&&^u=-^&?#UIj+8mD?Q8njUUOA1QF;l zirkg<=AgX_v{!-l@CU&etl$E!;0EsC0iM8jGO;VBKIdZP4vhLVq?P+PR_^0ixsPLI z*Uw6czT-ZQmHRkWb_cB7$FXuB$I5*iEBA4%+{dwUAIHjl94q&6tdzd8nfAu=RK+;B z3&z9UFaajQB*=w4n2ar*f)_l4J)oJ)sk2}<%z?SEkbS@cSOkk<2`q(sVHqrk6|fRk z!D_f4*1%d=2kT)2Y=lj)86Jc!@DOZ;hhZB$0z2SQcno&J9@q=7!fUV(UWYf}P1p}_ z!2u}7gI8WX{x^E5MK87Jr53%^qL*5Ha!>l5bLq8H^cvq^2TtG&R&W7Va07Sn08cQz zu8UZWi&%||SdEKVjf?*auj?Y#<|5YSBG%^O@ASGV{}*1@MJ(AxEZIdY*+nebMJ(Ax zEZIdY*+nebMJ(CHCSKRYn|NJkP}xZ=+(|6lNxZHqysj#|t}48)D!i^Lysj#|t}48) zD!i^Lysj!#_8ls_fXdFIvd>W2XQ=EmRQ4Gv`;4*nACy*#(n?WUDM~9vX{9Kw6s47- zv{IB-iqc9^S}987X%4s_*1%d=2kT)2Y=lj)86Jc!@DOZ;hhZB$0^1oiJ9vE*9)q2* z2lm3N@EYuc*WnF#6ZXSfZ~)BxhDxkjC04Bxt5%CutHr9-V%2J~YPDFkTC7?vR;?DR zR*O}uMWt%3sdmcLy`G!xBUWP7DzR#nShY&5S|wJk7OPf^RYS%0j~cwAG}fx=kjdUs zQxB;JcO0#(Rjk|(;@eh0ebZVngg_{SK{!M}Bt$_=h=x{>2uaWe+Cn>M4;>&GQXvh} zApvRKkA^WYh1Q+HI(jBg9n6B+FbC#R zbI0C2``3Z2$U|s}3;2l_xcgMDi~iCjIRpDR|Vs% zg7H>uN@m0b2s$hIoFup1nUuvaZ!Pu%`Y*jF}Di~W8 zjI9dBRt00Lg0WS>*s5S`RWPn`_-JfJ{Eu6iz zaP(e*-mkK^7S4*`Dsx#1&n*ns*5;f;Ki^_mxQl?|PuZ`KLk0HVSMs!oOr*t>M)-b5 zuz(XdgB4uB72LobJirsY@bJ9B2YkT~VjvdcARbbY0~O_Sfmh*XhUCv8iR))G};p88)>Hn_7lVEyJdkVN=Vnsb$zywL_!s5+0_%pJ#+T z&j@**5%N4E3kd1htf)mJ-xb z!aPtceV`TVueLn9-X0wH=9vSWc@9{jHv=r-1kPXu7jOkPa0d_Y1TR|18+^bQ{2&Hm zAr9g}tqgnc+7o&~4)lgT&=>kae;5FRVL0oKQFyweVT|^8%g}ipIEh8m~s<)o8pLjaQ@bYBXMr#;ehIH5#u*l*(jMPhpmy!EA7| zCstfJ>kMb99o|c%Q1@)O*Q&k|&@740SJ|?1Qan#SC+Qb;$FhzRsQrbnspBy{&Vtx` z470Bz2cFAB!@|hrGinyf?ZGGz>Ao?(tzvv*g0q8N{DWN*dmB-6XOIm_TnC!jtFEf7$7Tle}M@ zX$-o)Z}sZc`ac11j^%`rz&$EH>?|j8|L9ah{O*SMDSTQ@eGj|7h6TNI4gcm>u>`xs zC1wXFHoIDO+V(Nq(+(FjxvFJA&LfZHERzja`LN+CdFm<+@h>#QkLNki#`wn4PGGie zjNjUjej3ky>UevS@xAe0L;Ngxh|e0S|9_xr{a8bMzEFFo_3=+N#82fpR95UNz2z-h zmTwKDk9}F`gzCBn#_9GArj28K(|s+xO0&JMKl6o?oYP58vqeAMO7^zBBkA7_*AIQP zdi6&eH>%c!7VnL*5rl)0PW+WuU#W{}jK~PX&fYl{izgXkc z<=%e2LqOi4-H^?IL)X(LBCjm_;eYq0H$KQ7Bk3~v*%B(Zg3;AlAJ zX8KMa()sQzb#3)|!D#zW#xuroMuTvU?OtK2bc zLw?7OQ#K46xi)o1#ITGGw`I3%nSEP_tl^O})7N@rPg#H4ZR_*0vyx{<#kTA`A~kJ9 z=jhm|naNqSsJ@EUm-_Uy($_g!)NsUq$kmg6>-y+l>*_bkk?2s`|4<&w7Y)jbMj6ze zo;J%hlkY!O$}r2TlxN1@Exy*}RXy}MJrvAp*6g9iE{dYHybRqX|9H9Qq>RjoJzw27 zd_#VAHf?4*_tfU}yxzShWo$~Hc>mDb)=bDSd%%Ke~6)0_k4 zYTN4FH_Ki=v()zQTU|q!oAIj39rr(#Tsm6$rZtdmj>f&&Wh@_>tx7%kF)A8sPyaeQ;+fYS7MOR_8DdRyuD5T^t}v~MeQUgue8|xx4Odh)&b(qC z`=ZJ=nI%z5Gvmke>7<**-_5rRH^wX5XQrRPbLx%p%J!M@)7X2}@hE((wtZ&&EZLbF zTl96?H?*LxWxd@}HOsXzu?`cubswEP-F8SWyz5UM9VcTm)=kdN={&1lyX?t1 zIa4|&kL}sdd42GGyT{az!&-})f3Q#3jVXMuv8q+HZJ|L)8scY2=Z0}xYf-IfroWqK zAJlxMTKVzjwN<9mREi9F+U6l2RJGMLPTaUreP)Uu<7C4**nX{J&ZM~ex$4vJ>N~TaR`ue$r@VB%m`|jq)@7oKmlN@i zs4w^Tg&b~C>M`T<>@Vr~&xyZ7*Vl|6Z#Pxale2$l5`Q;)T&mq%i2u1s{u9_OHTR~4 z9K<&dDBTN-vOv@`Ue2{`pZ=6(>pj=bIZEziPZGaqHL2@aL$KuJ1Yapac)Tt3CBRiJY)l~&dwOD5S)bYsq+ASe8N?cZq~eQ~V`OEBl4CrT&dB74N`mP`bS3K?(5~dA2KqT>mBueTGty#QP=wudf&9BPcu81xiTM7 zvL^X9SiGkB|4CcCLwIz}uhTFMsO!;gl$Jg+uQ!8Pzp)(3zcS;e^0^+}&h~_+>BXPr z`?^n~?KKuF-<|8<-13+cZlazkI~Z}X$^=Cj^0DC?rYb*WxWiu=-eY1$RL9$r)l2qJ z&yM&hL$Nv8lh+TuZT;kq4|mMZNxQvE%k0U$(?)cOHmwfV)9s|bwLT;X$%IcW$0^jnf+S`o3qU)2yK6ew(>*jT`;7|v{Z`AFM z+eWO)h2N^9v7*D#0sn-CGOBsQEaNmj6|F30xc$7vlkYsYFrVO?@mbZxM*r~Ur8NFF z`T9M1a@qgb{>I74*B9iC{@uNxRAQEFDxb+!UO27il&jUC{N#4n(2QHPpmJhORX97w zrLy>%Z9~`N&7y%}i-#vB4qH4Jd1OxLVTy!*)@8a66K#KzD{tDIIa5%OR?J#8wi_pX zhYe!RHP;6>_;L=%T~eO6{}7oH5s?!4hnIWL?$Kj*Z`;40l5$x{hnVONA(cx&+O*@p(9UK$D8E2p?Q`Y%p5JWT^81u01hY0EP4D(=p(eWR)- zQxa`|tG6<%^e7(U7{wbKtlcWCoq5$b?DntLSB=-Lw|zIi{)Y}Dc*}C!Xbq_?dN#{5 zgU^+#+0zGaAQ7*sjZ$&_?3tO-!8tP{E308Grfi!tUX=_Py)t8J>>b%@+3{Wa_v;eh zWB$NF%Ue&4?v<33V#aLq=+rqsv2A>GWPDgi%jEu9y(Xk)w9k);ZW$RK6A}`gIygIj zp=u$0W!*x<9WAtz7BU?1A5tQong1PSYFL{6j#)4Z7u=R_^6V_8V+CRS@|t0gVUNDWNs zV9_>%S()aSckR7z)89rV=LGu?OlpU!OW@XmVorf&D@= z2e#TZbgO*+&BPs}ZM!|aUy6tgONow64s~`O?dp+!caQ$Fx*DhbL;R*%-Q286y<6M5 z%ku+g^L-cWQVC-gqd@y!%41RXsro6~1IB3Mjq3x9PMbFIo=$~oRVveW(CO;+X{LX+ zei`C8Pd?nR(hZ=UxC-qzO82$;Mgyh3PN+|Pvl6pDJ)Mxr_3Qn3b%+-~Y4rNRPsjI2 zXx%mL=|Sr}2CW?_U$PBu(>*4pTN}C0cE`vygV2)BM{8-ULrd@IInaz(9=sVph0pG) zxzUVQbEz4h*DPMmrDptizJZ}Jy_!qS_z8}A%FO4AwzYg$*v;$EFn>0$%Sp$4dDA*s z+#QpoQki)bHA|XTpXTsbI@!}z>ovsB;(OxV8`9S_#OL$LVfD>gKJ@i|S{vUqMyC76 z`KL=6ZL50WlfIunZ~G7C>yXjK+?T#_vG{4o?HH0*TO%Z zTmI+Hf9A9^MoUe1^~&}2*}6BTn7twI(5-03t5!GT^Q3o^c-87={CHt&60cg_jGrKT zQ4e$f?`>TVy-yiq!H=abF*4ZVpXi@%I34o0RlW6|zx26&hjhO8qpEv9*vl7RZLoc9 zn<|&}u^pAS^^rL4hVo*K=Nvf+oPXUW7BvbYZB_d|TlCo;Tjc{!@umK6*`AP7ZGCN5 zbjI2es4MJTkC%=?_`Hn{LOM36^;8fjuJJLGjD+ERWtTjL+tqM#@NQX zPT+e98sqmgq@LE_j7>7KWtAh=h5v34(wN#3(h#4|lgEv@6gA{BHPej!$+AOMvmdZY zk`BLEwKHo{`nwC?7U+Xd#Ts4N!^BLzr>iHqR*Wo{;K1zq?L|kw%b}?wGMt<;Mx^$g z)vens+n;xZ22YJnjfkMz)50TC-IMyZJx*tvJ@0N5+jcEpymoa|MvU3_gjlyA_5sdP zrg}Tv%zvrhAJTitF@u-&>%VMBr-`ldeA`FHq@$ncsAS*Vgh?Jb1p@{y%t=hl^Y@EP zkB!ZU3iQuwokZK~+_j=sI}}ALV?oUL3a+a6rI^ERdEEv_<<{4~%`wt$Q4Zru!;Bha zPg1p|UsQRla^`H+FJ@_!LR72^|M}t`UM&vgsD6pA?-xfo>&IcUf#@8^NMwJ&S@%cZ zwA(W+mW&a>F)0!CBT+`|3=Z4XsOjTv`zCE>7{;bY(JhX_D5t4whcd^v!o~*DLVBOQ zp^buq6PaAJGR$>!{fa3l$dcG9ShgIvq+idOy%LgJdUg5cm4Efp0gal)|W{rWB*G+=HIi<9kcnU^C&l4IjDBU^S#jPD#YGJdK@ zuY!T7x%=GyEh7E-UncF^WJktyZQHh6OlauHHf>D37(QCnn{=y8#1C?)nt1hH8||B0 zLv{P-rln~R_ivV}Prb(f=h8LP`cJAfs9KfMD)Y1rLhHmTt(&pq;~gWQNvs+H%t$w> z=>)!Et1(_#Ni&ye>1J%Y>I+9KR+1<0`6f#4yb1ZeafWe(N1U#F^d?Ir?GhJcPRdCe z95Kl~)VF24?V8+X_;i_=9TPdp-6Ou`^>R67%^I{8#9osh^P)eR)B6VvD=%{j#Pd!3 z4Gl`C;rGT(2G*?W4|uG4#`4NFy%W* z%P2>Q`)gG=_F6N4cbWZNT(Yu)gMwVBUP1z^pX}`4UyVQAmFynu8JTFcc1dj2p8s1L zJmtTsnXzSs)yrEtXT>KZTdmy_eOgC7&`?{YB2`sNGc`?1CRplZqH$_65{r zmFO@Ef#x>+lH~Z%grF`dqdImPm26AcB?A+Z0~13d`78O3Y}*l|_<9?9TV<&7qThKI zRqy2c-y+Anz#FpE_T&4TW{e(F$oebeGjdj*Ic`|JtgEV=sdWN(wbf4z#dT3K&5G(}kE zpoobc!QMfUyV6E?ceKjMxaf&3Ji@{aX_H+>r7&#j8;B=tRNf_gFD+}P#=8oRoSWr# zLoSp{@65;0-{w7q#B8>Z{PjJBIWPY0@5h`!vjy(DcENVFhwZEu2I9XZH#=zmUVYc9+9USYs|*#tkMs%rFH;qt%l{}->sN2vLjG@v z%3sA><&2*k<&=YT?k4v>h3QjULgY~;{Of*J0 zTt0;Lbo-d#_`oh{qq5R(Pci=(V`SgespIH$)weRDRg!;fXjtbv+IJYy$#%r?w`cdU zsmY_e*}ibJrVrQtJtHw~Y{#rSQksv%^pR=gYwDYNFcOuo{F0;HR`P1zOHuQkx&~{R zTa5RHInFWe8?IL3@bQ}r(}t_oyY-GH{B;Ltkqv9Absy85G?cVntuMZS;!obJytKHQS=-==c&jG@^qxk& z*;ALj(Rq&^d~d&gONR_us=^rMug63y|IDLz!GHk^dgm-0Frc9KgOQo|hI*lv8L8^5 zuc3QF?F1Orr+Ke5a)EKLJ)68Q6-xi_Pb2@KJxGsNv+co%e zy6JAHL&FZut?H6jzgKh1I>|pb-qkScrhE#sw9`7O{`9e*HBt=z*)wA`4y%&LU5zGl z{LRWWW`O*9fbHU7-L$HK?;VoRF*>?qLVPE}r~&fd18kj}7HLIHmxRPFF)^JJ2^(5j zDa$O$)C5Pn>D8N~-5hH;rMPsXi&orCS8wd_2f76N`rpuaH(R~s$C#_P)QIpjcb4kM z+xBa1`oQlSdsi-AY}+SqYgoRqS}^s_)v-pmSUalw3%~Q~^=n72o_fR8Eq}J{FfXqb zEA=}E^hpSH|NT1^{=WaKoeJAtIcV|XmDg{px595|+sgi!nvH!Eo4S=*yL$SM8y=S# zaF=_Oe?oh0G(FPpoDdka(8Dv?v>x&eJ(AwlBW7Z6)tZUS1aDx`EbPXG-YnmGW2W-I zYnaYIG9aP-a}MwPhU>^Z4J%LP5=nW{lzBZhmq?yDt&y+upEj8tm@gaL*^CZOj)j!@ zP?x%q;DpqFYUW{xgBZP^&B=KZ^<1@k`t4Y-T(UGud;<0Dy)r?X50;^ka+lYv^VJiX>LPO#MJ0xAdF0c2P+O6|lnb{+P5x}3YPC;Q*@E>^7Y%*+J+u!K?N>Y?!X5*LS2*(a#qe!@zj;GX#o|F57JrHv<l+mAhS^&XhcMXLah zQqLyL1YFaMS8Ev+&wgL)##ptUG-LCc#Hu;Qj2$1`m{!d(X6%G?*B-Ns3ylQ7Ne!RmAx-p*#e51Q+YvPRnT?=!!KaowN;9&n4hHN&zwVb>t z=H0z>q7PrM{@3Uwe;Pga`F8?kz$*c^?__x1n_uL;qLk}|b@y}RA%e|28W#0X^RW*L z@9Vav@YBoNb4MAnjA!=N+Cn~(UFLs8N%dK}X5Tn!Hbd9Ij8`>N@%SjMRK3htRWCDk zd_ZHY(vKNCVYI4KFx{j6OPje5FS2Rx#@+qkn*BBV=g2O$nexfmZ?!0WH>oumA$Xu*>9F-y?twzce2B6ZGH{;K%><%uchi_UhD4Rs`PFI zA?$+qvZu$cK5oCBuz~_z^pYS@Z-mGjcSi~`r}XJFzWw6XtrA+>t{ETLN}6t!$X|L) z?wma~-Mdwrq*m8|R<^|Uq~YDQ$=(UIbi*ee>ezp2rEGiswd-dW^R{H;jcle1TUDCt?=@d8 z8t0N@V>@(+jZIeNLS*&j3Sm#@7UiNeO&93DDoW2?LvDF}+mmWaHryJns{6s{MQgb8 z{GMO^H3QYGpl;%-+gJse`Tb%NsO6cQU4}>J+%B8iL|w0PG_Km5pyYU~Zp+Cvd{Qqh)CyuZvCE zXJAA7UPLYTS;|at0vnQs-@JgZtwcRcB`FOPHb50IBv2v+q_nH z*~sg6w!BQfvDvRBSl_+&NkiNJahH7Vw>F~XVRM(vQrxO0g9=QDV&V2o%K;2H1)6^Jgp*67imKu1N{~`XH>*Sk`mH&SfkWKeC zUqt-B?CdMMdZ`6PmSe&4-;K@xPdk_Y!iSgAxL8ti7v8C{&*8(WPbjI8pziqasytca zZ?>zu>YZ68AY}s7S@Ll?*x-|N?BB+)SJpVhf&=xIhwq)&+CEMDp#jCu^YrF(Ic5KH^;w3mvf=LKj2)KkKkkq6El9bT0bS7oe zkETF}DYQ)&w$hJ}E=>7`&d`OK>Gwf^whT1W(#Fs8yYES|yd=#ZlP`L*-n;jnbC+}O zIp>~pUULio4wY0g@ZR7x!TQtu+|6_>eP>C~e&V z7*WS2Q+~dYerUTirsN>}yl%{<)7f{TtMk4M{r7cs-P>PWYc|)Gxav%%x{Tqk?%4T{ zLqq3x?mR#AdH+Of+qmC1-qtpbLkz)}h|qVlON$!%$ZTHObNFvjZ+?L*bP3aBu5$rOI1$>7}D&-vCi-oL08T zUE&{VZV8SzIGdY_zPn+d^cY}Mzp`9lp@Z)gv|wm|F}qou3odcH3WP#38ZjW7Z$0Ro zSk=$!YhQonpZSl-Yj zyJ|>7gtYT7yo^b~tR$b(#(0?^l`aBZVfZU-+t(C%?b%;fW*2&_^;5Oc+uMYL*+PM_ zXVl-)G&oF*{2M81Gh02?*mUdCliB!+fk!|3p9We)rzkDTc7J^Cy#)z*uZ-C~e-^7| zpoET)4kM(5$0&VMUiBis4dG-oepX9uXfiP$$$-4T9 za$VT5#?x%8xpkesG(W#ouP@bVOZDcG5;J7HjNnL>uRFNbknWAz!u>v9f7llFrW@7< zyM0w7!DE`@`~sIo<0{B6)({`$$C6@H6Gjym3)VV4`$qplh|pSO9a!ozY2Gqx+Roop zWEHyYwbKy{XWQ*fHLu0TRHyTiz#6FXaE*!1)Ysh-9US6+L$>Js1|!|Gj0Qh-!$CCg z6{huuDc!OD$hwYu*57obqvLR|v(jL!bUG>xhN|mPx)fPWButJlZ(^KhoQq=i{`3fc zi3H(e^=h2v=U+Z{40st($9f}lZzKw>AuCwyj2fq0NBY`!RH=N<7eV*4pnGi*rTgMC zk?vj5MY`9b-xlB$qkHVPH$?X&v;B~3Qqk_Tl^bw4uAmNYqV1yQ-b$OL zMw6*_`AywB!_nEdn#?C{>s92T44-#GXSy!wGsxI*1$JrCKjQ`|-`=)A8hQPj?^a|P zJhuAj+U9-j2I_DDcO9%!O8G-W0_AH=*P?vrNKBEif|4o!>}QYs5C0L95?Dg{c3^1# zf1-T*y4xa-7B^E=p|9LlU%#zFA9hMTEsn^Z&O&c~zPC`k3P*$<52bv6cQAc9<);U` z{nw{_oSZQ3>r(!5JNn*tE5Jx?bvtUK``g<0H$`42@j=z=5tg)uv&gSU`V4Y)e2Vvz z(bHg9eBcaeCw7)2`Q^WwAP4BBx{Ci~g1D zZDSnl7zP;}7L_s=kn7Xf!=-12iq?G z`KIlYdvD&OCwWJ9klFzM{sbv0BkBqMvX+ak&6elp%B4(AN=nEZjy_i1*XtjtHYTGE zX^RX==)0eV*`^vIov*$<&pl0s;v)^NtHiG|$dgLyd2sF7)IOM=D$mQ-=Cxt^YTGpV z8;)=O4mr2_L_x+PeWVnyHG;fC<drrk5 zJCi-HIJD*DJA-fR78HO z;D<2wbZ!08KUfjEDU{*c^d*N$Wt10NhAP{b+(d6N3lhA8@mu7lIIBR$C1Rj!Q1Ta2 zMDX4$^nQtun40>Gg(f?&nCbN|hOo&PHsZf2Y@ln`K!T99-i2-|VeK+IY~nOw2l91r zZ;?B~U)a~*@7cBS5ydGt2|l`Ur*~lBz^U>($wAK<*e&U?4t@JIm^8vbR=G67*f4>|BV+9A%_|6za%XpRf+q| zr!O5mi2IU-E#xy~7(+Wsv_n37eE)u7WESowcHl+VqNpU$d8A7EFUq@}&hGNw+Q!D( zS?`JSgM;T!czbHTb=#ijBeZ4?YN}#2vG~B%>>+x#mYO;y)ae!K&vr+i-*elyYIL` zxK}{qz~CT8yADvR1x_Jo0b=yAUrG0&x;tuq@Pi+0mIklBJ~PAoXl90TaRbU1tX}>r zcU)ao9yAi;%1kPO7nb;&ya~=FBQ8nC{C|O08ObSf32UFedsQNM7mBWLW`Tc)LMhbY zaOtgg1eU3DQ)Uj9Ns7VTm6-|V&OA@KyW1M)?nO&~0;Y@HMSjG*A;KgpcMI#vTO@NS zpXT3Mx}%UMk7s5pJXU)sWY2XOPdk?Wr0WVjmAoVLbhUmi>(ug2pgypc{7%3cyXT4> z&UJl!&}+4%g}hJx0jF`;PwBavjPncEyCx@3PEW6!oczM{bj!uqKe~@_sPSH+1{gXg zGYZ#Frl-F!Imw@$o<2D_xmbk=FfxT2F$iMYLJ>L!w8f0rbDKrWKgvGpY( z*tv}Okb;8K1^mAkoYvtf!s6)%ZTZPX$!kJc3EktmP)K}^XL3nITE@`#PfIW*oD7aS zBxiohhgIa6t$Z-@*Ugt1a(OGi7Dfn(ZQ&I2Qznd9;1Dt>H6zC-bf`oo8}U?LFmX{E z7v(+i?Ig*+S4oA*B=ZCZ0-_%HG#2KrmODoR!O_pPZav-0DsIbFtPN~wj80dTZ)9f^49Q8JLdALZc(`nUu{oG5RWM+=sQZ{s`rRC6YS>Ks4cSj+^dddy0!w zSV2h8BXCk8*tN@q9Wv3oY=+G9mu#lcXvEtQ&Y4uWbb320C-?CaEz_0JXq{fq73)pj zylr_AxD7blOM*ioU5RE(KFn(>6UL$TOo-YB(Q z{SPU&f4tXx;a>6y=){b<#O%{qxrPf16$lbiZ>$VQZNP$qODa*M7%jG{#wxpiG*W-7 zd84M*P-w7KHB{MxqkVO_p{_L;aHA17Hb>SNtakdRf71h7)tsh4&ROdMfu3TYcgUbq zD^yyRv)1_Btq%UrOK(AUO{&mcf>A0#OaqU3V__+)OJ0w$$ocr7#WO7}S(mb91}Sp3 z>&TWs+2$i%-A6YE0-KLCRF73ujMtQQ=r?2mN9| z9`xh~g@26kr@9~YLMz8CFXAg&!9gD2J=}6kg}8L8fY2R~mPGt^-FSI;oErGb$M5&H zM17r8!S2%1?qFGWNlAB(Cp#}M+Y>N2oko&TwJj2vsH~c(shzCa``h1cPMvJ?+*Ic8 z@p^mwWjA@AwB}@H<=Cw{9ZVPS7sG!0D)R*Xk^xVNsDBxi_~y(ZnuSA1Wu&~f>-(fw z6`s@0g}br`1A|#4LWcSCMAz8J|2Nt4%U|-3|9Z{+_pkXiU3+?R57{O3{qNZRf8_0O zxjMYw_F`Psg@tN-$UUyMQcqiPahs>K&9%dzRvT%!HRYQ<3wKH0k){Dx3EiW6P8^n= zxOzKldSDsBTgJAP)mm4(c*~K zpXV&Vy4G9FdbuHNu~jSlxkiOjE!UeZI(hR{@*q_d===($9L`@^nK^1pKB5`&RleNZ zoSdw@%*_oY#y3JG5(T^*FGN z%s1xOLsNorh?A&b2_EA|Ezy zuL!!v3JSO)9nXRujC=NgJ7Gkb-PnIbZHaOyDrX3>(bU~S%9#UH1A$-!``G(Wo$o(? z;e%t3J+FO<(LZN-01ERD`IBTfU(55PiT^J7&FJVt4CCu*Q4IL_FvBnn0=E$()WBlA z?~s6;N(dpUg+`+p_!C~QYb;6QcCwoCYThaTx=l(-(x8Ru4+!`OHX3-AiYwkR*au41{q^` z0l)`mXD{3?&v5r!8W;%w1l6iN(TcT#7DB zH%ZG?=Bl`EcWJI7SE0r?9euCl>zJ2U7kh0N=kGA4FFHHBji&|yiHW>Ip2eC)uZi6+ zL&QBxDtDFdy8YpibL5pb-z0MW545$Og=$74c#pwrl5%v|3j!epl`LaklRf8l_HU@g zF;?+8fB(zO*XH}by=#N2#0LLi75|I!0Uy?~5mLe&b{p!CUI_kGi4!VBnaAWgsx^tb zZIWQRVkb^|R!#nCj^9X1kzK-3U*y8I!O5!CtX!?;f4<61YCu@)Xee^lIUIG)qDK48 zYK2^*kt@`s#opj7LJ)3!k+T7}S=tPXFlCxwE1&6NP5@_kT+!rJR)Tz8grpujMq2s5 z@_!>K$jkCBUwM(F@_)TVFG8(#s5KC)MRN&Bts!F`xiG>%wwWAf_y-P?-Awif|L8~y znPKkXPf}QN$vWolL@lK;z|!nsguI>HIyrOf82KpOnl1(pmbWg+ImILw3je^tpJSC>=-%l7Nv*$!(LI=as}l1IWUdvQe_ly$&|KcD#kA@L%znF3p=X&l1ARVUU!c&56rY$M2ctv;nL5VZ7p0{YH2-y5rP*9*vsRi+l~$2J z)r`_qVYOD6&Gc&O)v^kWmSu6kKu1|m-e6wDt}CJ3BEdNmdM{}(xa}Ng$ZpluxeRWH zN^Qu(pNw9mV%Zj#Q^m20Rwq4*LR)p@f)E`jJQCm(Tff5Q6>X*p<723jjj~OjvX6P3pJ<-ZxdkHJgRHPeN|J$K( zS#y>lyGWm>NK5I?$f1_9IQ6BHVZm}1r=e8Dx6pGR_U*8Ju zkgQ`^mq`4pNVRrYaaic0*VQz3;omj1ji$$#)C*J=OP1(;Hzd<1K;MvDPjR>r*}n4v J^8tML{|`q-nqL3_ literal 0 HcmV?d00001 diff --git a/static/fonts/Outfit-Medium.ttf b/static/fonts/Outfit-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0ba786a6ecc7a7b9d168248dd49c35dfd8f8a08f GIT binary patch literal 47800 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 literal 0 HcmV?d00001 diff --git a/static/fonts/PlusJakartaSans-Bold.ttf b/static/fonts/PlusJakartaSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..91ab25815b53f0c840aa955e3fa96745fdf56062 GIT binary patch literal 63336 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

t<{on}-@#v(-p9 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

"); e = u("#--htmx-preserve-pantry--") } e.moveBefore(n, null) } else { e.parentNode.replaceChild(n, e) } } }) } function Le(l, e, c) { se(e.querySelectorAll("[id]"), function (t) { const n = ee(t, "id"); if (n && n.length > 0) { const r = n.replace("'", "\\'"); const o = t.tagName.replace(":", "\\:"); const e = f(l); const i = e && e.querySelector(o + "[id='" + r + "']"); if (i && i !== e) { const s = t.cloneNode(); Oe(t, i); c.tasks.push(function () { Oe(t, s) }) } } }) } function Ae(e) { return function () { G(e, Q.config.addedClass); kt(ue(e)); Ne(f(e)); he(e, "htmx:load") } } function Ne(e) { const t = "[autofocus]"; const n = $(h(e, t) ? e : e.querySelector(t)); if (n != null) { n.focus() } } function a(e, t, n, r) { Le(e, n, r); while (n.childNodes.length > 0) { const o = n.firstChild; K(ue(o), Q.config.addedClass); e.insertBefore(o, t); if (o.nodeType !== Node.TEXT_NODE && o.nodeType !== Node.COMMENT_NODE) { r.tasks.push(Ae(o)) } } } function Ie(e, t) { let n = 0; while (n < e.length) { t = (t << 5) - t + e.charCodeAt(n++) | 0 } return t } function Pe(t) { let n = 0; if (t.attributes) { for (let e = 0; e < t.attributes.length; e++) { const r = t.attributes[e]; if (r.value) { n = Ie(r.name, n); n = Ie(r.value, n) } } } return n } function ke(t) { const n = ie(t); if (n.onHandlers) { for (let e = 0; e < n.onHandlers.length; e++) { const r = n.onHandlers[e]; be(t, r.event, r.listener) } delete n.onHandlers } } function De(e) { const t = ie(e); if (t.timeout) { clearTimeout(t.timeout) } if (t.listenerInfos) { se(t.listenerInfos, function (e) { if (e.on) { be(e.on, e.trigger, e.listener) } }) } ke(e); se(Object.keys(t), function (e) { if (e !== "firstInitCompleted") delete t[e] }) } function b(e) { he(e, "htmx:beforeCleanupElement"); De(e); if (e.children) { se(e.children, function (e) { b(e) }) } } function Me(t, e, n) { if (t instanceof Element && t.tagName === "BODY") { return Ve(t, e, n) } let r; const o = t.previousSibling; const i = c(t); if (!i) { return } a(i, t, e, n); if (o == null) { r = i.firstChild } else { r = o.nextSibling } n.elts = n.elts.filter(function (e) { return e !== t }); while (r && r !== t) { if (r instanceof Element) { n.elts.push(r) } r = r.nextSibling } b(t); if (t instanceof Element) { t.remove() } else { t.parentNode.removeChild(t) } } function Xe(e, t, n) { return a(e, e.firstChild, t, n) } function Fe(e, t, n) { return a(c(e), e, t, n) } function Be(e, t, n) { return a(e, null, t, n) } function Ue(e, t, n) { return a(c(e), e.nextSibling, t, n) } function je(e) { b(e); const t = c(e); if (t) { return t.removeChild(e) } } function Ve(e, t, n) { const r = e.firstChild; a(e, r, t, n); if (r) { while (r.nextSibling) { b(r.nextSibling); e.removeChild(r.nextSibling) } b(r); e.removeChild(r) } } function _e(t, e, n, r, o) { switch (t) { case "none": return; case "outerHTML": Me(n, r, o); return; case "afterbegin": Xe(n, r, o); return; case "beforebegin": Fe(n, r, o); return; case "beforeend": Be(n, r, o); return; case "afterend": Ue(n, r, o); return; case "delete": je(n); return; default: var i = Un(e); for (let e = 0; e < i.length; e++) { const s = i[e]; try { const l = s.handleSwap(t, n, r, o); if (l) { if (Array.isArray(l)) { for (let e = 0; e < l.length; e++) { const c = l[e]; if (c.nodeType !== Node.TEXT_NODE && c.nodeType !== Node.COMMENT_NODE) { o.tasks.push(Ae(c)) } } } return } } catch (e) { O(e) } } if (t === "innerHTML") { Ve(n, r, o) } else { _e(Q.config.defaultSwapStyle, e, n, r, o) } } } function ze(e, n, r) { var t = x(e, "[hx-swap-oob], [data-hx-swap-oob]"); se(t, function (e) { if (Q.config.allowNestedOobSwaps || e.parentElement === null) { const t = te(e, "hx-swap-oob"); if (t != null) { He(t, e, n, r) } } else { e.removeAttribute("hx-swap-oob"); e.removeAttribute("data-hx-swap-oob") } }); return t.length > 0 } function $e(e, t, r, o) { if (!o) { o = {} } e = y(e); const i = o.contextElement ? m(o.contextElement, false) : ne(); const n = document.activeElement; let s = {}; try { s = { elt: n, start: n ? n.selectionStart : null, end: n ? n.selectionEnd : null } } catch (e) { } const l = xn(e); if (r.swapStyle === "textContent") { e.textContent = t } else { let n = P(t); l.title = n.title; if (o.selectOOB) { const u = o.selectOOB.split(","); for (let t = 0; t < u.length; t++) { const a = u[t].split(":", 2); let e = a[0].trim(); if (e.indexOf("#") === 0) { e = e.substring(1) } const f = a[1] || "true"; const h = n.querySelector("#" + e); if (h) { He(f, h, l, i) } } } ze(n, l, i); se(x(n, "template"), function (e) { if (e.content && ze(e.content, l, i)) { e.remove() } }); if (o.select) { const d = ne().createDocumentFragment(); se(n.querySelectorAll(o.select), function (e) { d.appendChild(e) }); n = d } qe(n); _e(r.swapStyle, o.contextElement, e, n, l); Te() } if (s.elt && !le(s.elt) && ee(s.elt, "id")) { const g = document.getElementById(ee(s.elt, "id")); const p = { preventScroll: r.focusScroll !== undefined ? !r.focusScroll : !Q.config.defaultFocusScroll }; if (g) { if (s.start && g.setSelectionRange) { try { g.setSelectionRange(s.start, s.end) } catch (e) { } } g.focus(p) } } e.classList.remove(Q.config.swappingClass); se(l.elts, function (e) { if (e.classList) { e.classList.add(Q.config.settlingClass) } he(e, "htmx:afterSwap", o.eventInfo) }); if (o.afterSwapCallback) { o.afterSwapCallback() } if (!r.ignoreTitle) { kn(l.title) } const c = function () { se(l.tasks, function (e) { e.call() }); se(l.elts, function (e) { if (e.classList) { e.classList.remove(Q.config.settlingClass) } he(e, "htmx:afterSettle", o.eventInfo) }); if (o.anchor) { const e = ue(y("#" + o.anchor)); if (e) { e.scrollIntoView({ block: "start", behavior: "auto" }) } } yn(l.elts, r); if (o.afterSettleCallback) { o.afterSettleCallback() } }; if (r.settleDelay > 0) { E().setTimeout(c, r.settleDelay) } else { c() } } function Je(e, t, n) { const r = e.getResponseHeader(t); if (r.indexOf("{") === 0) { const o = S(r); for (const i in o) { if (o.hasOwnProperty(i)) { let e = o[i]; if (D(e)) { n = e.target !== undefined ? e.target : n } else { e = { value: e } } he(n, i, e) } } } else { const s = r.split(","); for (let e = 0; e < s.length; e++) { he(n, s[e].trim(), []) } } } const Ke = /\s/; const v = /[\s,]/; const Ge = /[_$a-zA-Z]/; const We = /[_$a-zA-Z0-9]/; const Ze = ['"', "'", "/"]; const w = /[^\s]/; const Ye = /[{(]/; const Qe = /[})]/; function et(e) { const t = []; let n = 0; while (n < e.length) { if (Ge.exec(e.charAt(n))) { var r = n; while (We.exec(e.charAt(n + 1))) { n++ } t.push(e.substring(r, n + 1)) } else if (Ze.indexOf(e.charAt(n)) !== -1) { const o = e.charAt(n); var r = n; n++; while (n < e.length && e.charAt(n) !== o) { if (e.charAt(n) === "\\") { n++ } n++ } t.push(e.substring(r, n + 1)) } else { const i = e.charAt(n); t.push(i) } n++ } return t } function tt(e, t, n) { return Ge.exec(e.charAt(0)) && e !== "true" && e !== "false" && e !== "this" && e !== n && t !== "." } function nt(r, o, i) { if (o[0] === "[") { o.shift(); let e = 1; let t = " return (function(" + i + "){ return ("; let n = null; while (o.length > 0) { const s = o[0]; if (s === "]") { e--; if (e === 0) { if (n === null) { t = t + "true" } o.shift(); t += ")})"; try { const l = vn(r, function () { return Function(t)() }, function () { return true }); l.source = t; return l } catch (e) { fe(ne().body, "htmx:syntax:error", { error: e, source: t }); return null } } } else if (s === "[") { e++ } if (tt(s, n, i)) { t += "((" + i + "." + s + ") ? (" + i + "." + s + ") : (window." + s + "))" } else { t = t + s } n = o.shift() } } } function C(e, t) { let n = ""; while (e.length > 0 && !t.test(e[0])) { n += e.shift() } return n } function rt(e) { let t; if (e.length > 0 && Ye.test(e[0])) { e.shift(); t = C(e, Qe).trim(); e.shift() } else { t = C(e, v) } return t } const ot = "input, textarea, select"; function it(e, t, n) { const r = []; const o = et(t); do { C(o, w); const l = o.length; const c = C(o, /[,\[\s]/); if (c !== "") { if (c === "every") { const u = { trigger: "every" }; C(o, w); u.pollInterval = d(C(o, /[,\[\s]/)); C(o, w); var i = nt(e, o, "event"); if (i) { u.eventFilter = i } r.push(u) } else { const a = { trigger: c }; var i = nt(e, o, "event"); if (i) { a.eventFilter = i } C(o, w); while (o.length > 0 && o[0] !== ",") { const f = o.shift(); if (f === "changed") { a.changed = true } else if (f === "once") { a.once = true } else if (f === "consume") { a.consume = true } else if (f === "delay" && o[0] === ":") { o.shift(); a.delay = d(C(o, v)) } else if (f === "from" && o[0] === ":") { o.shift(); if (Ye.test(o[0])) { var s = rt(o) } else { var s = C(o, v); if (s === "closest" || s === "find" || s === "next" || s === "previous") { o.shift(); const h = rt(o); if (h.length > 0) { s += " " + h } } } a.from = s } else if (f === "target" && o[0] === ":") { o.shift(); a.target = rt(o) } else if (f === "throttle" && o[0] === ":") { o.shift(); a.throttle = d(C(o, v)) } else if (f === "queue" && o[0] === ":") { o.shift(); a.queue = C(o, v) } else if (f === "root" && o[0] === ":") { o.shift(); a[f] = rt(o) } else if (f === "threshold" && o[0] === ":") { o.shift(); a[f] = C(o, v) } else { fe(e, "htmx:syntax:error", { token: o.shift() }) } C(o, w) } r.push(a) } } if (o.length === l) { fe(e, "htmx:syntax:error", { token: o.shift() }) } C(o, w) } while (o[0] === "," && o.shift()); if (n) { n[t] = r } return r } function st(e) { const t = te(e, "hx-trigger"); let n = []; if (t) { const r = Q.config.triggerSpecsCache; n = r && r[t] || it(e, t, r) } if (n.length > 0) { return n } else if (h(e, "form")) { return [{ trigger: "submit" }] } else if (h(e, 'input[type="button"], input[type="submit"]')) { return [{ trigger: "click" }] } else if (h(e, ot)) { return [{ trigger: "change" }] } else { return [{ trigger: "click" }] } } function lt(e) { ie(e).cancelled = true } function ct(e, t, n) { const r = ie(e); r.timeout = E().setTimeout(function () { if (le(e) && r.cancelled !== true) { if (!gt(n, e, Mt("hx:poll:trigger", { triggerSpec: n, target: e }))) { t(e) } ct(e, t, n) } }, n.pollInterval) } function ut(e) { return location.hostname === e.hostname && ee(e, "href") && ee(e, "href").indexOf("#") !== 0 } function at(e) { return g(e, Q.config.disableSelector) } function ft(t, n, e) { if (t instanceof HTMLAnchorElement && ut(t) && (t.target === "" || t.target === "_self") || t.tagName === "FORM" && String(ee(t, "method")).toLowerCase() !== "dialog") { n.boosted = true; let r, o; if (t.tagName === "A") { r = "get"; o = ee(t, "href") } else { const i = ee(t, "method"); r = i ? i.toLowerCase() : "get"; o = ee(t, "action"); if (o == null || o === "") { o = ne().location.href } if (r === "get" && o.includes("?")) { o = o.replace(/\?[^#]+/, "") } } e.forEach(function (e) { pt(t, function (e, t) { const n = ue(e); if (at(n)) { b(n); return } de(r, o, n, t) }, n, e, true) }) } } function ht(e, t) { const n = ue(t); if (!n) { return false } if (e.type === "submit" || e.type === "click") { if (n.tagName === "FORM") { return true } if (h(n, 'input[type="submit"], button') && (h(n, "[form]") || g(n, "form") !== null)) { return true } if (n instanceof HTMLAnchorElement && n.href && (n.getAttribute("href") === "#" || n.getAttribute("href").indexOf("#") !== 0)) { return true } } return false } function dt(e, t) { return ie(e).boosted && e instanceof HTMLAnchorElement && t.type === "click" && (t.ctrlKey || t.metaKey) } function gt(e, t, n) { const r = e.eventFilter; if (r) { try { return r.call(t, n) !== true } catch (e) { const o = r.source; fe(ne().body, "htmx:eventFilter:error", { error: e, source: o }); return true } } return false } function pt(l, c, e, u, a) { const f = ie(l); let t; if (u.from) { t = p(l, u.from) } else { t = [l] } if (u.changed) { if (!("lastValue" in f)) { f.lastValue = new WeakMap } t.forEach(function (e) { if (!f.lastValue.has(u)) { f.lastValue.set(u, new WeakMap) } f.lastValue.get(u).set(e, e.value) }) } se(t, function (i) { const s = function (e) { if (!le(l)) { i.removeEventListener(u.trigger, s); return } if (dt(l, e)) { return } if (a || ht(e, l)) { e.preventDefault() } if (gt(u, l, e)) { return } const t = ie(e); t.triggerSpec = u; if (t.handledFor == null) { t.handledFor = [] } if (t.handledFor.indexOf(l) < 0) { t.handledFor.push(l); if (u.consume) { e.stopPropagation() } if (u.target && e.target) { if (!h(ue(e.target), u.target)) { return } } if (u.once) { if (f.triggeredOnce) { return } else { f.triggeredOnce = true } } if (u.changed) { const n = event.target; const r = n.value; const o = f.lastValue.get(u); if (o.has(n) && o.get(n) === r) { return } o.set(n, r) } if (f.delayed) { clearTimeout(f.delayed) } if (f.throttle) { return } if (u.throttle > 0) { if (!f.throttle) { he(l, "htmx:trigger"); c(l, e); f.throttle = E().setTimeout(function () { f.throttle = null }, u.throttle) } } else if (u.delay > 0) { f.delayed = E().setTimeout(function () { he(l, "htmx:trigger"); c(l, e) }, u.delay) } else { he(l, "htmx:trigger"); c(l, e) } } }; if (e.listenerInfos == null) { e.listenerInfos = [] } e.listenerInfos.push({ trigger: u.trigger, listener: s, on: i }); i.addEventListener(u.trigger, s) }) } let mt = false; let xt = null; function yt() { if (!xt) { xt = function () { mt = true }; window.addEventListener("scroll", xt); window.addEventListener("resize", xt); setInterval(function () { if (mt) { mt = false; se(ne().querySelectorAll("[hx-trigger*='revealed'],[data-hx-trigger*='revealed']"), function (e) { bt(e) }) } }, 200) } } function bt(e) { if (!s(e, "data-hx-revealed") && X(e)) { e.setAttribute("data-hx-revealed", "true"); const t = ie(e); if (t.initHash) { he(e, "revealed") } else { e.addEventListener("htmx:afterProcessNode", function () { he(e, "revealed") }, { once: true }) } } } function vt(e, t, n, r) { const o = function () { if (!n.loaded) { n.loaded = true; he(e, "htmx:trigger"); t(e) } }; if (r > 0) { E().setTimeout(o, r) } else { o() } } function wt(t, n, e) { let i = false; se(r, function (r) { if (s(t, "hx-" + r)) { const o = te(t, "hx-" + r); i = true; n.path = o; n.verb = r; e.forEach(function (e) { St(t, e, n, function (e, t) { const n = ue(e); if (g(n, Q.config.disableSelector)) { b(n); return } de(r, o, n, t) }) }) } }); return i } function St(r, e, t, n) { if (e.trigger === "revealed") { yt(); pt(r, n, t, e); bt(ue(r)) } else if (e.trigger === "intersect") { const o = {}; if (e.root) { o.root = ae(r, e.root) } if (e.threshold) { o.threshold = parseFloat(e.threshold) } const i = new IntersectionObserver(function (t) { for (let e = 0; e < t.length; e++) { const n = t[e]; if (n.isIntersecting) { he(r, "intersect"); break } } }, o); i.observe(ue(r)); pt(ue(r), n, t, e) } else if (!t.firstInitCompleted && e.trigger === "load") { if (!gt(e, r, Mt("load", { elt: r }))) { vt(ue(r), n, t, e.delay) } } else if (e.pollInterval > 0) { t.polling = true; ct(ue(r), n, e) } else { pt(r, n, t, e) } } function Et(e) { const t = ue(e); if (!t) { return false } const n = t.attributes; for (let e = 0; e < n.length; e++) { const r = n[e].name; if (l(r, "hx-on:") || l(r, "data-hx-on:") || l(r, "hx-on-") || l(r, "data-hx-on-")) { return true } } return false } const Ct = (new XPathEvaluator).createExpression('.//*[@*[ starts-with(name(), "hx-on:") or starts-with(name(), "data-hx-on:") or' + ' starts-with(name(), "hx-on-") or starts-with(name(), "data-hx-on-") ]]'); function Ot(e, t) { if (Et(e)) { t.push(ue(e)) } const n = Ct.evaluate(e); let r = null; while (r = n.iterateNext()) t.push(ue(r)) } function Rt(e) { const t = []; if (e instanceof DocumentFragment) { for (const n of e.childNodes) { Ot(n, t) } } else { Ot(e, t) } return t } function Ht(e) { if (e.querySelectorAll) { const n = ", [hx-boost] a, [data-hx-boost] a, a[hx-boost], a[data-hx-boost]"; const r = []; for (const i in Mn) { const s = Mn[i]; if (s.getSelectors) { var t = s.getSelectors(); if (t) { r.push(t) } } } const o = e.querySelectorAll(H + n + ", form, [type='submit']," + " [hx-ext], [data-hx-ext], [hx-trigger], [data-hx-trigger]" + r.flat().map(e => ", " + e).join("")); return o } else { return [] } } function Tt(e) { const t = g(ue(e.target), "button, input[type='submit']"); const n = Lt(e); if (n) { n.lastButtonClicked = t } } function qt(e) { const t = Lt(e); if (t) { t.lastButtonClicked = null } } function Lt(e) { const t = g(ue(e.target), "button, input[type='submit']"); if (!t) { return } const n = y("#" + ee(t, "form"), t.getRootNode()) || g(t, "form"); if (!n) { return } return ie(n) } function At(e) { e.addEventListener("click", Tt); e.addEventListener("focusin", Tt); e.addEventListener("focusout", qt) } function Nt(t, e, n) { const r = ie(t); if (!Array.isArray(r.onHandlers)) { r.onHandlers = [] } let o; const i = function (e) { vn(t, function () { if (at(t)) { return } if (!o) { o = new Function("event", n) } o.call(t, e) }) }; t.addEventListener(e, i); r.onHandlers.push({ event: e, listener: i }) } function It(t) { ke(t); for (let e = 0; e < t.attributes.length; e++) { const n = t.attributes[e].name; const r = t.attributes[e].value; if (l(n, "hx-on") || l(n, "data-hx-on")) { const o = n.indexOf("-on") + 3; const i = n.slice(o, o + 1); if (i === "-" || i === ":") { let e = n.slice(o + 1); if (l(e, ":")) { e = "htmx" + e } else if (l(e, "-")) { e = "htmx:" + e.slice(1) } else if (l(e, "htmx-")) { e = "htmx:" + e.slice(5) } Nt(t, e, r) } } } } function Pt(t) { if (g(t, Q.config.disableSelector)) { b(t); return } const n = ie(t); const e = Pe(t); if (n.initHash !== e) { De(t); n.initHash = e; he(t, "htmx:beforeProcessNode"); const r = st(t); const o = wt(t, n, r); if (!o) { if (re(t, "hx-boost") === "true") { ft(t, n, r) } else if (s(t, "hx-trigger")) { r.forEach(function (e) { St(t, e, n, function () { }) }) } } if (t.tagName === "FORM" || ee(t, "type") === "submit" && s(t, "form")) { At(t) } n.firstInitCompleted = true; he(t, "htmx:afterProcessNode") } } function kt(e) { e = y(e); if (g(e, Q.config.disableSelector)) { b(e); return } Pt(e); se(Ht(e), function (e) { Pt(e) }); se(Rt(e), It) } function Dt(e) { return e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase() } function Mt(e, t) { let n; if (window.CustomEvent && typeof window.CustomEvent === "function") { n = new CustomEvent(e, { bubbles: true, cancelable: true, composed: true, detail: t }) } else { n = ne().createEvent("CustomEvent"); n.initCustomEvent(e, true, true, t) } return n } function fe(e, t, n) { he(e, t, ce({ error: t }, n)) } function Xt(e) { return e === "htmx:afterProcessNode" } function Ft(e, t) { se(Un(e), function (e) { try { t(e) } catch (e) { O(e) } }) } function O(e) { if (console.error) { console.error(e) } else if (console.log) { console.log("ERROR: ", e) } } function he(e, t, n) { e = y(e); if (n == null) { n = {} } n.elt = e; const r = Mt(t, n); if (Q.logger && !Xt(t)) { Q.logger(e, t, n) } if (n.error) { O(n.error); he(e, "htmx:error", { errorInfo: n }) } let o = e.dispatchEvent(r); const i = Dt(t); if (o && i !== t) { const s = Mt(i, r.detail); o = o && e.dispatchEvent(s) } Ft(ue(e), function (e) { o = o && (e.onEvent(t, r) !== false && !r.defaultPrevented) }); return o } let Bt = location.pathname + location.search; function Ut() { const e = ne().querySelector("[hx-history-elt],[data-hx-history-elt]"); return e || ne().body } function jt(t, e) { if (!B()) { return } const n = _t(e); const r = ne().title; const o = window.scrollY; if (Q.config.historyCacheSize <= 0) { localStorage.removeItem("htmx-history-cache"); return } t = U(t); const i = S(localStorage.getItem("htmx-history-cache")) || []; for (let e = 0; e < i.length; e++) { if (i[e].url === t) { i.splice(e, 1); break } } const s = { url: t, content: n, title: r, scroll: o }; he(ne().body, "htmx:historyItemCreated", { item: s, cache: i }); i.push(s); while (i.length > Q.config.historyCacheSize) { i.shift() } while (i.length > 0) { try { localStorage.setItem("htmx-history-cache", JSON.stringify(i)); break } catch (e) { fe(ne().body, "htmx:historyCacheError", { cause: e, cache: i }); i.shift() } } } function Vt(t) { if (!B()) { return null } t = U(t); const n = S(localStorage.getItem("htmx-history-cache")) || []; for (let e = 0; e < n.length; e++) { if (n[e].url === t) { return n[e] } } return null } function _t(e) { const t = Q.config.requestClass; const n = e.cloneNode(true); se(x(n, "." + t), function (e) { G(e, t) }); se(x(n, "[data-disabled-by-htmx]"), function (e) { e.removeAttribute("disabled") }); return n.innerHTML } function zt() { const e = Ut(); const t = Bt || location.pathname + location.search; let n; try { n = ne().querySelector('[hx-history="false" i],[data-hx-history="false" i]') } catch (e) { n = ne().querySelector('[hx-history="false"],[data-hx-history="false"]') } if (!n) { he(ne().body, "htmx:beforeHistorySave", { path: t, historyElt: e }); jt(t, e) } if (Q.config.historyEnabled) history.replaceState({ htmx: true }, ne().title, window.location.href) } function $t(e) { if (Q.config.getCacheBusterParam) { e = e.replace(/org\.htmx\.cache-buster=[^&]*&?/, ""); if (Y(e, "&") || Y(e, "?")) { e = e.slice(0, -1) } } if (Q.config.historyEnabled) { history.pushState({ htmx: true }, "", e) } Bt = e } function Jt(e) { if (Q.config.historyEnabled) history.replaceState({ htmx: true }, "", e); Bt = e } function Kt(e) { se(e, function (e) { e.call(undefined) }) } function Gt(o) { const e = new XMLHttpRequest; const i = { path: o, xhr: e }; he(ne().body, "htmx:historyCacheMiss", i); e.open("GET", o, true); e.setRequestHeader("HX-Request", "true"); e.setRequestHeader("HX-History-Restore-Request", "true"); e.setRequestHeader("HX-Current-URL", ne().location.href); e.onload = function () { if (this.status >= 200 && this.status < 400) { he(ne().body, "htmx:historyCacheMissLoad", i); const e = P(this.response); const t = e.querySelector("[hx-history-elt],[data-hx-history-elt]") || e; const n = Ut(); const r = xn(n); kn(e.title); qe(e); Ve(n, t, r); Te(); Kt(r.tasks); Bt = o; he(ne().body, "htmx:historyRestore", { path: o, cacheMiss: true, serverResponse: this.response }) } else { fe(ne().body, "htmx:historyCacheMissLoadError", i) } }; e.send() } function Wt(e) { zt(); e = e || location.pathname + location.search; const t = Vt(e); if (t) { const n = P(t.content); const r = Ut(); const o = xn(r); kn(t.title); qe(n); Ve(r, n, o); Te(); Kt(o.tasks); E().setTimeout(function () { window.scrollTo(0, t.scroll) }, 0); Bt = e; he(ne().body, "htmx:historyRestore", { path: e, item: t }) } else { if (Q.config.refreshOnHistoryMiss) { window.location.reload(true) } else { Gt(e) } } } function Zt(e) { let t = we(e, "hx-indicator"); if (t == null) { t = [e] } se(t, function (e) { const t = ie(e); t.requestCount = (t.requestCount || 0) + 1; e.classList.add.call(e.classList, Q.config.requestClass) }); return t } function Yt(e) { let t = we(e, "hx-disabled-elt"); if (t == null) { t = [] } se(t, function (e) { const t = ie(e); t.requestCount = (t.requestCount || 0) + 1; e.setAttribute("disabled", ""); e.setAttribute("data-disabled-by-htmx", "") }); return t } function Qt(e, t) { se(e.concat(t), function (e) { const t = ie(e); t.requestCount = (t.requestCount || 1) - 1 }); se(e, function (e) { const t = ie(e); if (t.requestCount === 0) { e.classList.remove.call(e.classList, Q.config.requestClass) } }); se(t, function (e) { const t = ie(e); if (t.requestCount === 0) { e.removeAttribute("disabled"); e.removeAttribute("data-disabled-by-htmx") } }) } function en(t, n) { for (let e = 0; e < t.length; e++) { const r = t[e]; if (r.isSameNode(n)) { return true } } return false } function tn(e) { const t = e; if (t.name === "" || t.name == null || t.disabled || g(t, "fieldset[disabled]")) { return false } if (t.type === "button" || t.type === "submit" || t.tagName === "image" || t.tagName === "reset" || t.tagName === "file") { return false } if (t.type === "checkbox" || t.type === "radio") { return t.checked } return true } function nn(t, e, n) { if (t != null && e != null) { if (Array.isArray(e)) { e.forEach(function (e) { n.append(t, e) }) } else { n.append(t, e) } } } function rn(t, n, r) { if (t != null && n != null) { let e = r.getAll(t); if (Array.isArray(n)) { e = e.filter(e => n.indexOf(e) < 0) } else { e = e.filter(e => e !== n) } r.delete(t); se(e, e => r.append(t, e)) } } function on(t, n, r, o, i) { if (o == null || en(t, o)) { return } else { t.push(o) } if (tn(o)) { const s = ee(o, "name"); let e = o.value; if (o instanceof HTMLSelectElement && o.multiple) { e = M(o.querySelectorAll("option:checked")).map(function (e) { return e.value }) } if (o instanceof HTMLInputElement && o.files) { e = M(o.files) } nn(s, e, n); if (i) { sn(o, r) } } if (o instanceof HTMLFormElement) { se(o.elements, function (e) { if (t.indexOf(e) >= 0) { rn(e.name, e.value, n) } else { t.push(e) } if (i) { sn(e, r) } }); new FormData(o).forEach(function (e, t) { if (e instanceof File && e.name === "") { return } nn(t, e, n) }) } } function sn(e, t) { const n = e; if (n.willValidate) { he(n, "htmx:validation:validate"); if (!n.checkValidity()) { t.push({ elt: n, message: n.validationMessage, validity: n.validity }); he(n, "htmx:validation:failed", { message: n.validationMessage, validity: n.validity }) } } } function ln(n, e) { for (const t of e.keys()) { n.delete(t) } e.forEach(function (e, t) { n.append(t, e) }); return n } function cn(e, t) { const n = []; const r = new FormData; const o = new FormData; const i = []; const s = ie(e); if (s.lastButtonClicked && !le(s.lastButtonClicked)) { s.lastButtonClicked = null } let l = e instanceof HTMLFormElement && e.noValidate !== true || te(e, "hx-validate") === "true"; if (s.lastButtonClicked) { l = l && s.lastButtonClicked.formNoValidate !== true } if (t !== "get") { on(n, o, i, g(e, "form"), l) } on(n, r, i, e, l); if (s.lastButtonClicked || e.tagName === "BUTTON" || e.tagName === "INPUT" && ee(e, "type") === "submit") { const u = s.lastButtonClicked || e; const a = ee(u, "name"); nn(a, u.value, o) } const c = we(e, "hx-include"); se(c, function (e) { on(n, r, i, ue(e), l); if (!h(e, "form")) { se(f(e).querySelectorAll(ot), function (e) { on(n, r, i, e, l) }) } }); ln(r, o); return { errors: i, formData: r, values: An(r) } } function un(e, t, n) { if (e !== "") { e += "&" } if (String(n) === "[object Object]") { n = JSON.stringify(n) } const r = encodeURIComponent(n); e += encodeURIComponent(t) + "=" + r; return e } function an(e) { e = qn(e); let n = ""; e.forEach(function (e, t) { n = un(n, t, e) }); return n } function fn(e, t, n) { const r = { "HX-Request": "true", "HX-Trigger": ee(e, "id"), "HX-Trigger-Name": ee(e, "name"), "HX-Target": te(t, "id"), "HX-Current-URL": ne().location.href }; bn(e, "hx-headers", false, r); if (n !== undefined) { r["HX-Prompt"] = n } if (ie(e).boosted) { r["HX-Boosted"] = "true" } return r } function hn(n, e) { const t = re(e, "hx-params"); if (t) { if (t === "none") { return new FormData } else if (t === "*") { return n } else if (t.indexOf("not ") === 0) { se(t.slice(4).split(","), function (e) { e = e.trim(); n.delete(e) }); return n } else { const r = new FormData; se(t.split(","), function (t) { t = t.trim(); if (n.has(t)) { n.getAll(t).forEach(function (e) { r.append(t, e) }) } }); return r } } else { return n } } function dn(e) { return !!ee(e, "href") && ee(e, "href").indexOf("#") >= 0 } function gn(e, t) { const n = t || re(e, "hx-swap"); const r = { swapStyle: ie(e).boosted ? "innerHTML" : Q.config.defaultSwapStyle, swapDelay: Q.config.defaultSwapDelay, settleDelay: Q.config.defaultSettleDelay }; if (Q.config.scrollIntoViewOnBoost && ie(e).boosted && !dn(e)) { r.show = "top" } if (n) { const s = F(n); if (s.length > 0) { for (let e = 0; e < s.length; e++) { const l = s[e]; if (l.indexOf("swap:") === 0) { r.swapDelay = d(l.slice(5)) } else if (l.indexOf("settle:") === 0) { r.settleDelay = d(l.slice(7)) } else if (l.indexOf("transition:") === 0) { r.transition = l.slice(11) === "true" } else if (l.indexOf("ignoreTitle:") === 0) { r.ignoreTitle = l.slice(12) === "true" } else if (l.indexOf("scroll:") === 0) { const c = l.slice(7); var o = c.split(":"); const u = o.pop(); var i = o.length > 0 ? o.join(":") : null; r.scroll = u; r.scrollTarget = i } else if (l.indexOf("show:") === 0) { const a = l.slice(5); var o = a.split(":"); const f = o.pop(); var i = o.length > 0 ? o.join(":") : null; r.show = f; r.showTarget = i } else if (l.indexOf("focus-scroll:") === 0) { const h = l.slice("focus-scroll:".length); r.focusScroll = h == "true" } else if (e == 0) { r.swapStyle = l } else { O("Unknown modifier in hx-swap: " + l) } } } } return r } function pn(e) { return re(e, "hx-encoding") === "multipart/form-data" || h(e, "form") && ee(e, "enctype") === "multipart/form-data" } function mn(t, n, r) { let o = null; Ft(n, function (e) { if (o == null) { o = e.encodeParameters(t, r, n) } }); if (o != null) { return o } else { if (pn(n)) { return ln(new FormData, qn(r)) } else { return an(r) } } } function xn(e) { return { tasks: [], elts: [e] } } function yn(e, t) { const n = e[0]; const r = e[e.length - 1]; if (t.scroll) { var o = null; if (t.scrollTarget) { o = ue(ae(n, t.scrollTarget)) } if (t.scroll === "top" && (n || o)) { o = o || n; o.scrollTop = 0 } if (t.scroll === "bottom" && (r || o)) { o = o || r; o.scrollTop = o.scrollHeight } } if (t.show) { var o = null; if (t.showTarget) { let e = t.showTarget; if (t.showTarget === "window") { e = "body" } o = ue(ae(n, e)) } if (t.show === "top" && (n || o)) { o = o || n; o.scrollIntoView({ block: "start", behavior: Q.config.scrollBehavior }) } if (t.show === "bottom" && (r || o)) { o = o || r; o.scrollIntoView({ block: "end", behavior: Q.config.scrollBehavior }) } } } function bn(r, e, o, i) { if (i == null) { i = {} } if (r == null) { return i } const s = te(r, e); if (s) { let e = s.trim(); let t = o; if (e === "unset") { return null } if (e.indexOf("javascript:") === 0) { e = e.slice(11); t = true } else if (e.indexOf("js:") === 0) { e = e.slice(3); t = true } if (e.indexOf("{") !== 0) { e = "{" + e + "}" } let n; if (t) { n = vn(r, function () { return Function("return (" + e + ")")() }, {}) } else { n = S(e) } for (const l in n) { if (n.hasOwnProperty(l)) { if (i[l] == null) { i[l] = n[l] } } } } return bn(ue(c(r)), e, o, i) } function vn(e, t, n) { if (Q.config.allowEval) { return t() } else { fe(e, "htmx:evalDisallowedError"); return n } } function wn(e, t) { return bn(e, "hx-vars", true, t) } function Sn(e, t) { return bn(e, "hx-vals", false, t) } function En(e) { return ce(wn(e), Sn(e)) } function Cn(t, n, r) { if (r !== null) { try { t.setRequestHeader(n, r) } catch (e) { t.setRequestHeader(n, encodeURIComponent(r)); t.setRequestHeader(n + "-URI-AutoEncoded", "true") } } } function On(t) { if (t.responseURL && typeof URL !== "undefined") { try { const e = new URL(t.responseURL); return e.pathname + e.search } catch (e) { fe(ne().body, "htmx:badResponseUrl", { url: t.responseURL }) } } } function R(e, t) { return t.test(e.getAllResponseHeaders()) } function Rn(t, n, r) { t = t.toLowerCase(); if (r) { if (r instanceof Element || typeof r === "string") { return de(t, n, null, null, { targetOverride: y(r) || ve, returnPromise: true }) } else { let e = y(r.target); if (r.target && !e || r.source && !e && !y(r.source)) { e = ve } return de(t, n, y(r.source), r.event, { handler: r.handler, headers: r.headers, values: r.values, targetOverride: e, swapOverride: r.swap, select: r.select, returnPromise: true }) } } else { return de(t, n, null, null, { returnPromise: true }) } } function Hn(e) { const t = []; while (e) { t.push(e); e = e.parentElement } return t } function Tn(e, t, n) { let r; let o; if (typeof URL === "function") { o = new URL(t, document.location.href); const i = document.location.origin; r = i === o.origin } else { o = t; r = l(t, document.location.origin) } if (Q.config.selfRequestsOnly) { if (!r) { return false } } return he(e, "htmx:validateUrl", ce({ url: o, sameHost: r }, n)) } function qn(e) { if (e instanceof FormData) return e; const t = new FormData; for (const n in e) { if (e.hasOwnProperty(n)) { if (e[n] && typeof e[n].forEach === "function") { e[n].forEach(function (e) { t.append(n, e) }) } else if (typeof e[n] === "object" && !(e[n] instanceof Blob)) { t.append(n, JSON.stringify(e[n])) } else { t.append(n, e[n]) } } } return t } function Ln(r, o, e) { return new Proxy(e, { get: function (t, e) { if (typeof e === "number") return t[e]; if (e === "length") return t.length; if (e === "push") { return function (e) { t.push(e); r.append(o, e) } } if (typeof t[e] === "function") { return function () { t[e].apply(t, arguments); r.delete(o); t.forEach(function (e) { r.append(o, e) }) } } if (t[e] && t[e].length === 1) { return t[e][0] } else { return t[e] } }, set: function (e, t, n) { e[t] = n; r.delete(o); e.forEach(function (e) { r.append(o, e) }); return true } }) } function An(o) { return new Proxy(o, { get: function (e, t) { if (typeof t === "symbol") { const r = Reflect.get(e, t); if (typeof r === "function") { return function () { return r.apply(o, arguments) } } else { return r } } if (t === "toJSON") { return () => Object.fromEntries(o) } if (t in e) { if (typeof e[t] === "function") { return function () { return o[t].apply(o, arguments) } } else { return e[t] } } const n = o.getAll(t); if (n.length === 0) { return undefined } else if (n.length === 1) { return n[0] } else { return Ln(e, t, n) } }, set: function (t, n, e) { if (typeof n !== "string") { return false } t.delete(n); if (e && typeof e.forEach === "function") { e.forEach(function (e) { t.append(n, e) }) } else if (typeof e === "object" && !(e instanceof Blob)) { t.append(n, JSON.stringify(e)) } else { t.append(n, e) } return true }, deleteProperty: function (e, t) { if (typeof t === "string") { e.delete(t) } return true }, ownKeys: function (e) { return Reflect.ownKeys(Object.fromEntries(e)) }, getOwnPropertyDescriptor: function (e, t) { return Reflect.getOwnPropertyDescriptor(Object.fromEntries(e), t) } }) } function de(t, n, r, o, i, D) { let s = null; let l = null; i = i != null ? i : {}; if (i.returnPromise && typeof Promise !== "undefined") { var e = new Promise(function (e, t) { s = e; l = t }) } if (r == null) { r = ne().body } const M = i.handler || Dn; const X = i.select || null; if (!le(r)) { oe(s); return e } const c = i.targetOverride || ue(Ee(r)); if (c == null || c == ve) { fe(r, "htmx:targetError", { target: te(r, "hx-target") }); oe(l); return e } let u = ie(r); const a = u.lastButtonClicked; if (a) { const L = ee(a, "formaction"); if (L != null) { n = L } const A = ee(a, "formmethod"); if (A != null) { if (A.toLowerCase() !== "dialog") { t = A } } } const f = re(r, "hx-confirm"); if (D === undefined) { const K = function (e) { return de(t, n, r, o, i, !!e) }; const G = { target: c, elt: r, path: n, verb: t, triggeringEvent: o, etc: i, issueRequest: K, question: f }; if (he(r, "htmx:confirm", G) === false) { oe(s); return e } } let h = r; let d = re(r, "hx-sync"); let g = null; let F = false; if (d) { const N = d.split(":"); const I = N[0].trim(); if (I === "this") { h = Se(r, "hx-sync") } else { h = ue(ae(r, I)) } d = (N[1] || "drop").trim(); u = ie(h); if (d === "drop" && u.xhr && u.abortable !== true) { oe(s); return e } else if (d === "abort") { if (u.xhr) { oe(s); return e } else { F = true } } else if (d === "replace") { he(h, "htmx:abort") } else if (d.indexOf("queue") === 0) { const W = d.split(" "); g = (W[1] || "last").trim() } } if (u.xhr) { if (u.abortable) { he(h, "htmx:abort") } else { if (g == null) { if (o) { const P = ie(o); if (P && P.triggerSpec && P.triggerSpec.queue) { g = P.triggerSpec.queue } } if (g == null) { g = "last" } } if (u.queuedRequests == null) { u.queuedRequests = [] } if (g === "first" && u.queuedRequests.length === 0) { u.queuedRequests.push(function () { de(t, n, r, o, i) }) } else if (g === "all") { u.queuedRequests.push(function () { de(t, n, r, o, i) }) } else if (g === "last") { u.queuedRequests = []; u.queuedRequests.push(function () { de(t, n, r, o, i) }) } oe(s); return e } } const p = new XMLHttpRequest; u.xhr = p; u.abortable = F; const m = function () { u.xhr = null; u.abortable = false; if (u.queuedRequests != null && u.queuedRequests.length > 0) { const e = u.queuedRequests.shift(); e() } }; const B = re(r, "hx-prompt"); if (B) { var x = prompt(B); if (x === null || !he(r, "htmx:prompt", { prompt: x, target: c })) { oe(s); m(); return e } } if (f && !D) { if (!confirm(f)) { oe(s); m(); return e } } let y = fn(r, c, x); if (t !== "get" && !pn(r)) { y["Content-Type"] = "application/x-www-form-urlencoded" } if (i.headers) { y = ce(y, i.headers) } const U = cn(r, t); let b = U.errors; const j = U.formData; if (i.values) { ln(j, qn(i.values)) } const V = qn(En(r)); const v = ln(j, V); let w = hn(v, r); if (Q.config.getCacheBusterParam && t === "get") { w.set("org.htmx.cache-buster", ee(c, "id") || "true") } if (n == null || n === "") { n = ne().location.href } const S = bn(r, "hx-request"); const _ = ie(r).boosted; let E = Q.config.methodsThatUseUrlParams.indexOf(t) >= 0; const C = { boosted: _, useUrlParams: E, formData: w, parameters: An(w), unfilteredFormData: v, unfilteredParameters: An(v), headers: y, target: c, verb: t, errors: b, withCredentials: i.credentials || S.credentials || Q.config.withCredentials, timeout: i.timeout || S.timeout || Q.config.timeout, path: n, triggeringEvent: o }; if (!he(r, "htmx:configRequest", C)) { oe(s); m(); return e } n = C.path; t = C.verb; y = C.headers; w = qn(C.parameters); b = C.errors; E = C.useUrlParams; if (b && b.length > 0) { he(r, "htmx:validation:halted", C); oe(s); m(); return e } const z = n.split("#"); const $ = z[0]; const O = z[1]; let R = n; if (E) { R = $; const Z = !w.keys().next().done; if (Z) { if (R.indexOf("?") < 0) { R += "?" } else { R += "&" } R += an(w); if (O) { R += "#" + O } } } if (!Tn(r, R, C)) { fe(r, "htmx:invalidPath", C); oe(l); return e } p.open(t.toUpperCase(), R, true); p.overrideMimeType("text/html"); p.withCredentials = C.withCredentials; p.timeout = C.timeout; if (S.noHeaders) { } else { for (const k in y) { if (y.hasOwnProperty(k)) { const Y = y[k]; Cn(p, k, Y) } } } const H = { xhr: p, target: c, requestConfig: C, etc: i, boosted: _, select: X, pathInfo: { requestPath: n, finalRequestPath: R, responsePath: null, anchor: O } }; p.onload = function () { try { const t = Hn(r); H.pathInfo.responsePath = On(p); M(r, H); if (H.keepIndicators !== true) { Qt(T, q) } he(r, "htmx:afterRequest", H); he(r, "htmx:afterOnLoad", H); if (!le(r)) { let e = null; while (t.length > 0 && e == null) { const n = t.shift(); if (le(n)) { e = n } } if (e) { he(e, "htmx:afterRequest", H); he(e, "htmx:afterOnLoad", H) } } oe(s); m() } catch (e) { fe(r, "htmx:onLoadError", ce({ error: e }, H)); throw e } }; p.onerror = function () { Qt(T, q); fe(r, "htmx:afterRequest", H); fe(r, "htmx:sendError", H); oe(l); m() }; p.onabort = function () { Qt(T, q); fe(r, "htmx:afterRequest", H); fe(r, "htmx:sendAbort", H); oe(l); m() }; p.ontimeout = function () { Qt(T, q); fe(r, "htmx:afterRequest", H); fe(r, "htmx:timeout", H); oe(l); m() }; if (!he(r, "htmx:beforeRequest", H)) { oe(s); m(); return e } var T = Zt(r); var q = Yt(r); se(["loadstart", "loadend", "progress", "abort"], function (t) { se([p, p.upload], function (e) { e.addEventListener(t, function (e) { he(r, "htmx:xhr:" + t, { lengthComputable: e.lengthComputable, loaded: e.loaded, total: e.total }) }) }) }); he(r, "htmx:beforeSend", H); const J = E ? null : mn(p, r, w); p.send(J); return e } function Nn(e, t) { const n = t.xhr; let r = null; let o = null; if (R(n, /HX-Push:/i)) { r = n.getResponseHeader("HX-Push"); o = "push" } else if (R(n, /HX-Push-Url:/i)) { r = n.getResponseHeader("HX-Push-Url"); o = "push" } else if (R(n, /HX-Replace-Url:/i)) { r = n.getResponseHeader("HX-Replace-Url"); o = "replace" } if (r) { if (r === "false") { return {} } else { return { type: o, path: r } } } const i = t.pathInfo.finalRequestPath; const s = t.pathInfo.responsePath; const l = re(e, "hx-push-url"); const c = re(e, "hx-replace-url"); const u = ie(e).boosted; let a = null; let f = null; if (l) { a = "push"; f = l } else if (c) { a = "replace"; f = c } else if (u) { a = "push"; f = s || i } if (f) { if (f === "false") { return {} } if (f === "true") { f = s || i } if (t.pathInfo.anchor && f.indexOf("#") === -1) { f = f + "#" + t.pathInfo.anchor } return { type: a, path: f } } else { return {} } } function In(e, t) { var n = new RegExp(e.code); return n.test(t.toString(10)) } function Pn(e) { for (var t = 0; t < Q.config.responseHandling.length; t++) { var n = Q.config.responseHandling[t]; if (In(n, e.status)) { return n } } return { swap: false } } function kn(e) { if (e) { const t = u("title"); if (t) { t.innerHTML = e } else { window.document.title = e } } } function Dn(o, i) { const s = i.xhr; let l = i.target; const e = i.etc; const c = i.select; if (!he(o, "htmx:beforeOnLoad", i)) return; if (R(s, /HX-Trigger:/i)) { Je(s, "HX-Trigger", o) } if (R(s, /HX-Location:/i)) { zt(); let e = s.getResponseHeader("HX-Location"); var t; if (e.indexOf("{") === 0) { t = S(e); e = t.path; delete t.path } Rn("get", e, t).then(function () { $t(e) }); return } const n = R(s, /HX-Refresh:/i) && s.getResponseHeader("HX-Refresh") === "true"; if (R(s, /HX-Redirect:/i)) { i.keepIndicators = true; location.href = s.getResponseHeader("HX-Redirect"); n && location.reload(); return } if (n) { i.keepIndicators = true; location.reload(); return } if (R(s, /HX-Retarget:/i)) { if (s.getResponseHeader("HX-Retarget") === "this") { i.target = o } else { i.target = ue(ae(o, s.getResponseHeader("HX-Retarget"))) } } const u = Nn(o, i); const r = Pn(s); const a = r.swap; let f = !!r.error; let h = Q.config.ignoreTitle || r.ignoreTitle; let d = r.select; if (r.target) { i.target = ue(ae(o, r.target)) } var g = e.swapOverride; if (g == null && r.swapOverride) { g = r.swapOverride } if (R(s, /HX-Retarget:/i)) { if (s.getResponseHeader("HX-Retarget") === "this") { i.target = o } else { i.target = ue(ae(o, s.getResponseHeader("HX-Retarget"))) } } if (R(s, /HX-Reswap:/i)) { g = s.getResponseHeader("HX-Reswap") } var p = s.response; var m = ce({ shouldSwap: a, serverResponse: p, isError: f, ignoreTitle: h, selectOverride: d, swapOverride: g }, i); if (r.event && !he(l, r.event, m)) return; if (!he(l, "htmx:beforeSwap", m)) return; l = m.target; p = m.serverResponse; f = m.isError; h = m.ignoreTitle; d = m.selectOverride; g = m.swapOverride; i.target = l; i.failed = f; i.successful = !f; if (m.shouldSwap) { if (s.status === 286) { lt(o) } Ft(o, function (e) { p = e.transformResponse(p, s, o) }); if (u.type) { zt() } var x = gn(o, g); if (!x.hasOwnProperty("ignoreTitle")) { x.ignoreTitle = h } l.classList.add(Q.config.swappingClass); let n = null; let r = null; if (c) { d = c } if (R(s, /HX-Reselect:/i)) { d = s.getResponseHeader("HX-Reselect") } const y = re(o, "hx-select-oob"); const b = re(o, "hx-select"); let e = function () { try { if (u.type) { he(ne().body, "htmx:beforeHistoryUpdate", ce({ history: u }, i)); if (u.type === "push") { $t(u.path); he(ne().body, "htmx:pushedIntoHistory", { path: u.path }) } else { Jt(u.path); he(ne().body, "htmx:replacedInHistory", { path: u.path }) } } $e(l, p, x, { select: d || b, selectOOB: y, eventInfo: i, anchor: i.pathInfo.anchor, contextElement: o, afterSwapCallback: function () { if (R(s, /HX-Trigger-After-Swap:/i)) { let e = o; if (!le(o)) { e = ne().body } Je(s, "HX-Trigger-After-Swap", e) } }, afterSettleCallback: function () { if (R(s, /HX-Trigger-After-Settle:/i)) { let e = o; if (!le(o)) { e = ne().body } Je(s, "HX-Trigger-After-Settle", e) } oe(n) } }) } catch (e) { fe(o, "htmx:swapError", i); oe(r); throw e } }; let t = Q.config.globalViewTransitions; if (x.hasOwnProperty("transition")) { t = x.transition } if (t && he(o, "htmx:beforeTransition", i) && typeof Promise !== "undefined" && document.startViewTransition) { const v = new Promise(function (e, t) { n = e; r = t }); const w = e; e = function () { document.startViewTransition(function () { w(); return v }) } } if (x.swapDelay > 0) { E().setTimeout(e, x.swapDelay) } else { e() } } if (f) { fe(o, "htmx:responseError", ce({ error: "Response Status Error Code " + s.status + " from " + i.pathInfo.requestPath }, i)) } } const Mn = {}; function Xn() { return { init: function (e) { return null }, getSelectors: function () { return null }, onEvent: function (e, t) { return true }, transformResponse: function (e, t, n) { return e }, isInlineSwap: function (e) { return false }, handleSwap: function (e, t, n, r) { return false }, encodeParameters: function (e, t, n) { return null } } } function Fn(e, t) { if (t.init) { t.init(n) } Mn[e] = ce(Xn(), t) } function Bn(e) { delete Mn[e] } function Un(e, n, r) { if (n == undefined) { n = [] } if (e == undefined) { return n } if (r == undefined) { r = [] } const t = te(e, "hx-ext"); if (t) { se(t.split(","), function (e) { e = e.replace(/ /g, ""); if (e.slice(0, 7) == "ignore:") { r.push(e.slice(7)); return } if (r.indexOf(e) < 0) { const t = Mn[e]; if (t && n.indexOf(t) < 0) { n.push(t) } } }) } return Un(ue(c(e)), n, r) } var jn = false; ne().addEventListener("DOMContentLoaded", function () { jn = true }); function Vn(e) { if (jn || ne().readyState === "complete") { e() } else { ne().addEventListener("DOMContentLoaded", e) } } function _n() { if (Q.config.includeIndicatorStyles !== false) { const e = Q.config.inlineStyleNonce ? ` nonce="${Q.config.inlineStyleNonce}"` : ""; ne().head.insertAdjacentHTML("beforeend", " ." + Q.config.indicatorClass + "{opacity:0} ." + Q.config.requestClass + " ." + Q.config.indicatorClass + "{opacity:1; transition: opacity 200ms ease-in;} ." + Q.config.requestClass + "." + Q.config.indicatorClass + "{opacity:1; transition: opacity 200ms ease-in;} ") } } function zn() { const e = ne().querySelector('meta[name="htmx-config"]'); if (e) { return S(e.content) } else { return null } } function $n() { const e = zn(); if (e) { Q.config = ce(Q.config, e) } } Vn(function () { $n(); _n(); let e = ne().body; kt(e); const t = ne().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']"); e.addEventListener("htmx:abort", function (e) { const t = e.target; const n = ie(t); if (n && n.xhr) { n.xhr.abort() } }); const n = window.onpopstate ? window.onpopstate.bind(window) : null; window.onpopstate = function (e) { if (e.state && e.state.htmx) { Wt(); se(t, function (e) { he(e, "htmx:restored", { document: ne(), triggerEvent: he }) }) } else { if (n) { n(e) } } }; E().setTimeout(function () { he(e, "htmx:load", {}); e = null }, 0) }); return Q }(); \ No newline at end of file diff --git a/static/js/sse.js b/static/js/sse.js new file mode 100644 index 0000000..da68ad1 --- /dev/null +++ b/static/js/sse.js @@ -0,0 +1,290 @@ +/* +Server Sent Events Extension +============================ +This extension adds support for Server Sent Events to htmx. See /www/extensions/sse.md for usage instructions. + +*/ + +(function () { + /** @type {import("../htmx").HtmxInternalApi} */ + var api + + htmx.defineExtension('sse', { + + /** + * Init saves the provided reference to the internal HTMX API. + * + * @param {import("../htmx").HtmxInternalApi} api + * @returns void + */ + init: function (apiRef) { + // store a reference to the internal API. + api = apiRef + + // set a function in the public API for creating new EventSource objects + if (htmx.createEventSource == undefined) { + htmx.createEventSource = createEventSource + } + }, + + getSelectors: function () { + return ['[sse-connect]', '[data-sse-connect]', '[sse-swap]', '[data-sse-swap]'] + }, + + /** + * onEvent handles all events passed to this extension. + * + * @param {string} name + * @param {Event} evt + * @returns void + */ + onEvent: function (name, evt) { + var parent = evt.target || evt.detail.elt + switch (name) { + case 'htmx:beforeCleanupElement': + var internalData = api.getInternalData(parent) + // Try to remove remove an EventSource when elements are removed + var source = internalData.sseEventSource + if (source) { + api.triggerEvent(parent, 'htmx:sseClose', { + source, + type: 'nodeReplaced', + }) + internalData.sseEventSource.close() + } + + return + + // Try to create EventSources when elements are processed + case 'htmx:afterProcessNode': + ensureEventSourceOnElement(parent) + } + } + }) + + /// //////////////////////////////////////////// + // HELPER FUNCTIONS + /// //////////////////////////////////////////// + + /** + * createEventSource is the default method for creating new EventSource objects. + * it is hoisted into htmx.config.createEventSource to be overridden by the user, if needed. + * + * @param {string} url + * @returns EventSource + */ + function createEventSource(url) { + return new EventSource(url, { withCredentials: true }) + } + + /** + * registerSSE looks for attributes that can contain sse events, right + * now hx-trigger and sse-swap and adds listeners based on these attributes too + * the closest event source + * + * @param {HTMLElement} elt + */ + function registerSSE(elt) { + // Add message handlers for every `sse-swap` attribute + if (api.getAttributeValue(elt, 'sse-swap')) { + // Find closest existing event source + var sourceElement = api.getClosestMatch(elt, hasEventSource) + if (sourceElement == null) { + // api.triggerErrorEvent(elt, "htmx:noSSESourceError") + return null // no eventsource in parentage, orphaned element + } + + // Set internalData and source + var internalData = api.getInternalData(sourceElement) + var source = internalData.sseEventSource + + var sseSwapAttr = api.getAttributeValue(elt, 'sse-swap') + var sseEventNames = sseSwapAttr.split(',') + + for (var i = 0; i < sseEventNames.length; i++) { + const sseEventName = sseEventNames[i].trim() + const listener = function (event) { + // If the source is missing then close SSE + if (maybeCloseSSESource(sourceElement)) { + return + } + + // If the body no longer contains the element, remove the listener + if (!api.bodyContains(elt)) { + source.removeEventListener(sseEventName, listener) + return + } + + // swap the response into the DOM and trigger a notification + if (!api.triggerEvent(elt, 'htmx:sseBeforeMessage', event)) { + return + } + swap(elt, event.data) + api.triggerEvent(elt, 'htmx:sseMessage', event) + } + + // Register the new listener + api.getInternalData(elt).sseEventListener = listener + source.addEventListener(sseEventName, listener) + } + } + + // Add message handlers for every `hx-trigger="sse:*"` attribute + if (api.getAttributeValue(elt, 'hx-trigger')) { + // Find closest existing event source + var sourceElement = api.getClosestMatch(elt, hasEventSource) + if (sourceElement == null) { + // api.triggerErrorEvent(elt, "htmx:noSSESourceError") + return null // no eventsource in parentage, orphaned element + } + + // Set internalData and source + var internalData = api.getInternalData(sourceElement) + var source = internalData.sseEventSource + + var triggerSpecs = api.getTriggerSpecs(elt) + triggerSpecs.forEach(function (ts) { + if (ts.trigger.slice(0, 4) !== 'sse:') { + return + } + + var listener = function (event) { + if (maybeCloseSSESource(sourceElement)) { + return + } + if (!api.bodyContains(elt)) { + source.removeEventListener(ts.trigger.slice(4), listener) + } + // Trigger events to be handled by the rest of htmx + htmx.trigger(elt, ts.trigger, event) + htmx.trigger(elt, 'htmx:sseMessage', event) + } + + // Register the new listener + api.getInternalData(elt).sseEventListener = listener + source.addEventListener(ts.trigger.slice(4), listener) + }) + } + } + + /** + * ensureEventSourceOnElement creates a new EventSource connection on the provided element. + * If a usable EventSource already exists, then it is returned. If not, then a new EventSource + * is created and stored in the element's internalData. + * @param {HTMLElement} elt + * @param {number} retryCount + * @returns {EventSource | null} + */ + function ensureEventSourceOnElement(elt, retryCount) { + if (elt == null) { + return null + } + + // handle extension source creation attribute + if (api.getAttributeValue(elt, 'sse-connect')) { + var sseURL = api.getAttributeValue(elt, 'sse-connect') + if (sseURL == null) { + return + } + + ensureEventSource(elt, sseURL, retryCount) + } + + registerSSE(elt) + } + + function ensureEventSource(elt, url, retryCount) { + var source = htmx.createEventSource(url) + + source.onerror = function (err) { + // Log an error event + api.triggerErrorEvent(elt, 'htmx:sseError', { error: err, source }) + + // If parent no longer exists in the document, then clean up this EventSource + if (maybeCloseSSESource(elt)) { + return + } + + // Otherwise, try to reconnect the EventSource + if (source.readyState === EventSource.CLOSED) { + retryCount = retryCount || 0 + retryCount = Math.max(Math.min(retryCount * 2, 128), 1) + var timeout = retryCount * 500 + window.setTimeout(function () { + ensureEventSourceOnElement(elt, retryCount) + }, timeout) + } + } + + source.onopen = function (evt) { + api.triggerEvent(elt, 'htmx:sseOpen', { source }) + + if (retryCount && retryCount > 0) { + const childrenToFix = elt.querySelectorAll("[sse-swap], [data-sse-swap], [hx-trigger], [data-hx-trigger]") + for (let i = 0; i < childrenToFix.length; i++) { + registerSSE(childrenToFix[i]) + } + // We want to increase the reconnection delay for consecutive failed attempts only + retryCount = 0 + } + } + + api.getInternalData(elt).sseEventSource = source + + + var closeAttribute = api.getAttributeValue(elt, "sse-close"); + if (closeAttribute) { + // close eventsource when this message is received + source.addEventListener(closeAttribute, function () { + api.triggerEvent(elt, 'htmx:sseClose', { + source, + type: 'message', + }) + source.close() + }); + } + } + + /** + * maybeCloseSSESource confirms that the parent element still exists. + * If not, then any associated SSE source is closed and the function returns true. + * + * @param {HTMLElement} elt + * @returns boolean + */ + function maybeCloseSSESource(elt) { + if (!api.bodyContains(elt)) { + var source = api.getInternalData(elt).sseEventSource + if (source != undefined) { + api.triggerEvent(elt, 'htmx:sseClose', { + source, + type: 'nodeMissing', + }) + source.close() + // source = null + return true + } + } + return false + } + + + /** + * @param {HTMLElement} elt + * @param {string} content + */ + function swap(elt, content) { + api.withExtensions(elt, function (extension) { + content = extension.transformResponse(content, null, elt) + }) + + var swapSpec = api.getSwapSpecification(elt) + var target = api.getTarget(elt) + api.swap(target, content, swapSpec) + } + + + function hasEventSource(node) { + return api.getInternalData(node).sseEventSource != null + } +})() diff --git a/static/styles/main.css b/static/styles/main.css new file mode 100644 index 0000000..623c280 --- /dev/null +++ b/static/styles/main.css @@ -0,0 +1,1364 @@ +/* reset */ +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +/* tokens */ +:root { + --bg: #0d0d12; + --bg-surface: #15151e; + --bg-surface-hover: #1c1c28; + --border: #232332; + --border-accent: rgba(99, 102, 241, 0.4); + + --text-primary: #f8fafc; + --text-secondary: #94a3b8; + --text-muted: #64748b; + + --accent: #6366f1; /* Indigo */ + --accent-hover: #4f46e5; + --accent-glow: rgba(99, 102, 241, 0.15); + + --success-bg: rgba(16, 185, 129, 0.05); + --success-border: rgba(16, 185, 129, 0.2); + --success-text: #10b981; + --success-label: #34d399; + + --radius-sm: 8px; + --radius-md: 14px; + --radius-lg: 24px; + --radius-full: 9999px; + + --shadow-card: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); + --shadow-btn: 0 0 30px var(--accent-glow); + + --font: "Plus Jakarta Sans", "Inter", system-ui, sans-serif; + --font-heading: "Outfit", "Inter", sans-serif; + --font-mono: "JetBrains Mono", monospace; +} + +/* base */ +html { + color-scheme: dark; +} + +body { + font-family: var(--font); + background-color: var(--bg); + color: var(--text-primary); + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 2rem; + line-height: 1.6; +} + +/* card */ +.card { + background: var(--bg-surface); + border: 1px solid var(--border); + border-radius: var(--radius-lg); + padding: 3.5rem 3rem; + max-width: 480px; + width: 100%; + text-align: center; + position: relative; + box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.2), 0 10px 10px -5px rgba(0, 0, 0, 0.04); +} + +/* app shell body — reset centering, fill viewport */ +body.app-body { + display: block; + padding: 0; + min-height: 100vh; + height: 100vh; + overflow: hidden; +} + +/* top glow line */ +.card::before { + content: ""; + position: absolute; + top: 0; + left: 10%; + right: 10%; + height: 1px; + background: linear-gradient(90deg, transparent, var(--accent), transparent); + opacity: 0.6; +} + +/* logo / wordmark */ +.logo { + display: inline-flex; + align-items: center; + gap: 0.5rem; + margin-bottom: 1.25rem; +} + +.logo-icon { + width: 36px; + height: 36px; + border-radius: var(--radius-sm); + background: linear-gradient(135deg, var(--accent), #6366f1); + display: flex; + align-items: center; + justify-content: center; + font-size: 1.1rem; + box-shadow: 0 0 16px var(--accent-glow); +} + +/* heading */ +h1 { + font-size: 1.875rem; + font-weight: 700; + letter-spacing: -0.03em; + color: var(--text-primary); + line-height: 1.2; +} + +h1 span { + background: linear-gradient(135deg, #c4b5fd, var(--accent)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.subtitle { + font-size: 0.9rem; + color: var(--text-secondary); + margin-top: 0.4rem; + margin-bottom: 2.25rem; +} + +/* divider */ +.divider { + height: 1px; + background: var(--border); + margin: 2rem 0; +} + +/* button */ +.ping-btn { + display: inline-flex; + align-items: center; + gap: 0.5rem; + background: linear-gradient(135deg, var(--accent), #6366f1); + color: #fff; + font-family: var(--font); + font-size: 0.9rem; + font-weight: 600; + padding: 0.65rem 1.6rem; + border: none; + border-radius: var(--radius-md); + cursor: pointer; + letter-spacing: 0.01em; + transition: + opacity 0.2s ease, + transform 0.15s ease, + box-shadow 0.2s ease; + box-shadow: var(--shadow-btn); + position: relative; + overflow: hidden; +} + +.ping-btn::after { + content: ""; + position: absolute; + inset: 0; + background: linear-gradient(rgba(255, 255, 255, 0.12), transparent); + pointer-events: none; +} + +.ping-btn:hover { + opacity: 0.9; + box-shadow: 0 0 32px var(--accent-glow); + transform: translateY(-1px); +} + +.ping-btn:active { + transform: scale(0.97) translateY(0); +} + +.ping-btn.htmx-request { + opacity: 0.6; + cursor: wait; + transform: none; + box-shadow: none; +} + +/* ping result area */ +#ping-result { + margin-top: 1.75rem; + min-height: 3rem; + display: flex; + align-items: center; + justify-content: center; +} + +/* result box */ +.result-box { + background: var(--success-bg); + border: 1px solid var(--success-border); + border-radius: var(--radius-md); + padding: 0.85rem 1.5rem; + width: 100%; + text-align: left; + display: flex; + align-items: center; + gap: 1rem; + animation: fadeSlideIn 0.25s ease forwards; +} + +.result-dot { + width: 8px; + height: 8px; + border-radius: 50%; + background: var(--success-text); + box-shadow: 0 0 8px var(--success-text); + flex-shrink: 0; + animation: pulse 2s ease infinite; +} + +.result-content { + display: flex; + flex-direction: column; + gap: 0.1rem; +} + +.result-label { + font-size: 0.7rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--success-label); +} + +.result-message { + font-family: var(--font-mono); + font-size: 0.9rem; + color: var(--success-text); +} + +/* stats row */ +.stats { + display: flex; + gap: 1rem; + margin-top: 2rem; +} + +.stat { + flex: 1; + background: var(--bg-surface); + border: 1px solid var(--border); + border-radius: var(--radius-md); + padding: 0.85rem 1rem; + transition: + background 0.2s ease, + border-color 0.2s ease; +} + +.stat:hover { + background: var(--bg-surface-hover); + border-color: var(--border-accent); +} + +.stat-value { + font-size: 1.25rem; + font-weight: 700; + color: var(--text-primary); + font-family: var(--font-mono); +} + +.stat-label { + font-size: 0.75rem; + color: var(--text-muted); + margin-top: 0.1rem; +} + +/* footer */ +footer { + margin-top: 2.5rem; + font-size: 0.78rem; + color: var(--text-muted); + display: flex; + align-items: center; + gap: 0.4rem; +} + +footer a { + color: var(--text-secondary); + text-decoration: none; + transition: color 0.2s; +} + +footer a:hover { + color: var(--accent); +} + +/* animations */ +@keyframes fadeSlideIn { + from { + opacity: 0; + transform: translateY(6px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes pulse { + 0%, + 100% { + opacity: 1; + } + 50% { + opacity: 0.4; + } +} + +/* scrollbar */ +::-webkit-scrollbar { + width: 6px; +} +::-webkit-scrollbar-track { + background: transparent; +} +::-webkit-scrollbar-thumb { + background: var(--border); + border-radius: 99px; +} + +/* Auth */ + +/* body variant — keeps the grid bg from body, just re-centers */ +.auth-body { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: 100vh; + padding: 2rem; +} + +/* narrower card */ +.auth-card { + background: var(--bg-surface); + border: 1px solid var(--border); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-card); + padding: 2.5rem 2.25rem; + max-width: 420px; + width: 100%; + text-align: center; + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + position: relative; + overflow: hidden; +} + +.auth-card::before { + content: ""; + position: absolute; + top: 0; + left: 10%; + right: 10%; + height: 1px; + background: linear-gradient(90deg, transparent, var(--accent), transparent); + opacity: 0.6; +} + +/* logo row */ +.auth-logo { + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + margin-bottom: 1.25rem; +} + +/* headings */ +.auth-title { + font-size: 1.6rem; + font-weight: 700; + letter-spacing: -0.03em; + color: var(--text-primary); + line-height: 1.2; + margin-bottom: 0.35rem; +} + +.auth-subtitle { + font-size: 0.875rem; + color: var(--text-secondary); + margin-bottom: 2rem; +} + +/* form layout */ +.auth-form { + display: flex; + flex-direction: column; + gap: 1.25rem; + text-align: left; +} + +.form-group { + display: flex; + flex-direction: column; + gap: 0.4rem; +} + +.form-label { + font-size: 0.8rem; + font-weight: 600; + color: var(--text-secondary); + text-transform: uppercase; + letter-spacing: 0.07em; +} + +.form-input { + width: 100%; + background: rgba(255, 255, 255, 0.05); + border: 1px solid var(--border); + border-radius: var(--radius-md); + padding: 0.7rem 1rem; + color: var(--text-primary); + font-family: var(--font); + font-size: 0.95rem; + transition: + border-color 0.2s ease, + box-shadow 0.2s ease; +} + +.form-input::placeholder { + color: var(--text-muted); +} + +.form-input:focus { + outline: none; + border-color: var(--accent); + box-shadow: 0 0 0 3px var(--accent-glow); +} + +/* error message box */ +.form-error { + background: rgba(239, 68, 68, 0.08); + border: 1px solid rgba(239, 68, 68, 0.25); + border-radius: var(--radius-md); + padding: 0.7rem 1rem; + font-size: 0.85rem; + color: #f87171; + display: flex; + gap: 0.5rem; + align-items: center; +} + +/* full-width primary button */ +.btn-primary { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + background: var(--accent); + color: #fff; + font-family: var(--font); + font-size: 0.95rem; + font-weight: 600; + padding: 0.85rem; + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: var(--radius-md); + cursor: pointer; + transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); +} + +.btn-primary:hover { + background: var(--accent-hover); + transform: translateY(-1px); + box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.2); +} + +.btn-primary:active { + transform: translateY(0); +} + +/* footer link line below the card */ +.auth-footer { + margin-top: 1.5rem; + font-size: 0.85rem; + color: var(--text-muted); + text-align: center; +} + +.auth-footer a { + color: var(--accent); + text-decoration: none; + transition: opacity 0.2s; +} + +.auth-footer a:hover { + opacity: 0.8; +} + +/* "or" divider */ +.auth-divider { + display: flex; + align-items: center; + gap: 0.75rem; + color: var(--text-muted); + font-size: 0.8rem; +} + +.auth-divider::before, +.auth-divider::after { + content: ""; + flex: 1; + height: 1px; + background: var(--border); +} + +/* Dashboard */ + +.app-shell { + display: block; + height: 100vh; + width: 100%; + overflow: hidden; + background: #09090b; +} + +.brand-mark { + display: flex; + align-items: center; + gap: 0.75rem; + text-decoration: none; +} + +.brand-mark .logo-icon { + width: 32px; + height: 32px; + background: linear-gradient(135deg, var(--accent), #4f46e5); + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + color: white; + font-size: 1.1rem; + font-weight: bold; + box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3); + flex-shrink: 0; +} + +.brand-mark .logo-text { + font-family: var(--font-heading); + font-size: 1.15rem; + font-weight: 600; + letter-spacing: -0.02em; + color: var(--text-primary); +} + +.brand-mark .logo-text span { + color: var(--accent); +} + +.user-row { + display: flex; + align-items: center; + gap: 0.65rem; + padding: 0.6rem 0.75rem; + border-radius: var(--radius-md); +} + +.user-avatar { + width: 32px; + height: 32px; + border-radius: 8px; + background: #27272a; + display: flex; + align-items: center; + justify-content: center; + color: var(--text-primary); + font-weight: 600; + font-size: 0.85rem; + flex-shrink: 0; +} + +.user-info { + display: flex; + flex-direction: column; + gap: 0.1rem; + overflow: hidden; + flex: 1; +} + +.user-name { + font-size: 0.85rem; + font-weight: 600; + color: var(--text-primary); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.user-role { + font-size: 0.72rem; + color: var(--text-muted); +} + +.sign-out-btn { + width: 100%; + margin-top: 0.5rem; + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.55rem 0.75rem; + border-radius: var(--radius-md); + background: transparent; + border: 1px solid var(--border); + color: var(--text-secondary); + font-size: 0.85rem; + font-family: var(--font); + cursor: pointer; + transition: all 0.15s; +} + +.sign-out-btn:hover { + border-color: rgba(239, 68, 68, 0.4); + color: #f87171; + background: rgba(239, 68, 68, 0.06); +} + +/* main content area */ +.main-content { + display: flex; + flex-direction: column; + overflow-y: auto; + background: #0d0d12; + min-height: 100vh; +} + +.topbar { + display: flex; + align-items: center; + justify-content: space-between; + padding: 1rem 2.5rem; + border-bottom: 1px solid #18181b; + background: rgba(13, 13, 18, 0.94); + backdrop-filter: blur(16px); + flex-shrink: 0; + position: sticky; + top: 0; + z-index: 5; + gap: 1rem; +} + +.topbar-brand, +.topbar-actions { + display: flex; + align-items: center; + gap: 0.75rem; +} + +.topbar-brand { + min-width: 0; +} + +.topbar-title { + font-size: 1rem; + font-weight: 600; + color: var(--text-primary); +} + +.room-title { + max-width: 24rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.topbar-btn { + width: auto; + padding: 0.5rem 1rem; +} + +.topbar-user { + display: inline-flex; + align-items: center; + gap: 0.7rem; + min-height: 44px; + padding: 0.3rem 0.85rem 0.3rem 0.3rem; + border-radius: var(--radius-full); + border: 1px solid var(--border); + background: rgba(255, 255, 255, 0.02); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03); +} + +.topbar-user-name { + font-size: 0.85rem; + font-weight: 600; + color: var(--text-secondary); + line-height: 1; +} + +.topbar-user .user-avatar { + width: 38px; + height: 38px; + border-radius: 16px; + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(255, 255, 255, 0.04); + color: var(--text-primary); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03); +} + +.topbar-link-btn { + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 40px; + padding: 0.55rem 0.9rem; + border-radius: var(--radius-full); + background: transparent; + border: 1px solid var(--border); + color: var(--text-secondary); + font-size: 0.85rem; + font-family: var(--font); + font-weight: 600; + cursor: pointer; + transition: all 0.15s; +} + +.topbar-link-btn:hover { + border-color: rgba(239, 68, 68, 0.4); + color: #f87171; + background: rgba(239, 68, 68, 0.06); +} + +.page-content { + padding: 2rem; + flex: 1; + max-width: 900px; + width: 100%; + margin: 0 auto; +} + +/* welcome hero */ +.welcome-hero { + padding: 2rem; + background: var(--bg-surface); + border: 1px solid var(--border); + border-radius: var(--radius-lg); + margin-bottom: 2rem; + position: relative; + overflow: hidden; +} + +.welcome-hero::before { + content: ""; + position: absolute; + top: 0; + left: 10%; + right: 10%; + height: 1px; + background: linear-gradient(90deg, transparent, var(--accent), transparent); + opacity: 0.6; +} + +.welcome-greeting { + font-size: 1.6rem; + font-weight: 700; + letter-spacing: -0.02em; + margin-bottom: 0.35rem; +} + +.welcome-greeting span { + background: linear-gradient(135deg, #c4b5fd, var(--accent)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.welcome-sub { + color: var(--text-secondary); + font-size: 0.9rem; +} + +/* dashboard stat cards grid */ +.dashboard-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1rem; + margin-bottom: 2rem; +} + +.dash-card { + background: var(--bg-surface); + border: 1px solid var(--border); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-card); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + padding: 1.25rem 1.5rem; + text-align: left; + position: relative; + overflow: hidden; + transition: + background 0.2s ease, + border-color 0.2s ease; +} + +.dash-card:hover { + background: var(--bg-surface-hover); + border-color: var(--border-accent); +} + +.dash-card-label { + font-size: 0.72rem; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--text-muted); + margin-bottom: 0.5rem; +} + +.dash-card-value { + font-size: 1.5rem; + font-weight: 700; + font-family: var(--font-mono); + color: var(--text-primary); +} + +/* rooms grid */ +.rooms-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 1rem; +} + +.room-card { + display: block; + background: var(--bg-surface); + border: 1px solid var(--border); + border-radius: var(--radius-lg); + padding: 1.25rem 1.5rem; + text-decoration: none; + transition: all 0.15s; + position: relative; +} + +.room-card:hover { + background: var(--bg-surface-hover); + border-color: var(--border-accent); + transform: translateY(-2px); +} + +.room-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + margin-bottom: 0.75rem; +} + +.room-name { + font-size: 1.1rem; + font-weight: 600; + color: var(--text-primary); +} + +.room-code { + font-family: var(--font-mono); + font-size: 0.75rem; + color: var(--accent); + background: rgba(139, 92, 246, 0.12); + padding: 0.2rem 0.5rem; + border-radius: var(--radius-sm); +} + +.room-meta { + display: flex; + gap: 1rem; + font-size: 0.8rem; + color: var(--text-secondary); +} + +.room-owner-badge { + position: absolute; + top: 1rem; + right: 1rem; + font-size: 0.65rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.05em; + color: var(--accent); + background: rgba(139, 92, 246, 0.15); + padding: 0.2rem 0.5rem; + border-radius: var(--radius-sm); +} + +.empty-state { + text-align: center; + padding: 3rem; + color: var(--text-secondary); +} + +/* modal */ +.modal-overlay { + position: fixed; + inset: 0; + background: rgba(9, 9, 11, 0.8); + display: flex; + align-items: center; + justify-content: center; + z-index: 100; +} + +.modal { + background: #18181b; + border: 1px solid #27272a; + border-radius: var(--radius-lg); + padding: 2.5rem; + max-width: 420px; + width: 90%; + box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5); +} + +.modal-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 1.5rem; +} + +.modal-header h2 { + font-size: 1.25rem; + font-weight: 600; + color: var(--text-primary); +} + +.modal-close { + background: #27272a; + border: none; + color: var(--text-secondary); + width: 28px; + height: 28px; + border-radius: 6px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: all 0.2s; +} + +.modal-close:hover { + background: #3f3f46; + color: var(--text-primary); +} + +/* room detail */ +.back-btn { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + border-radius: var(--radius-md); + background: var(--bg-surface); + border: 1px solid var(--border); + color: var(--text-secondary); + text-decoration: none; + transition: all 0.15s; +} + +.back-btn:hover { + background: var(--bg-surface-hover); + color: var(--text-primary); +} + +.room-code-badge { + font-family: var(--font-mono); + font-size: 0.8rem; + color: var(--accent); + background: rgba(139, 92, 246, 0.12); + padding: 0.25rem 0.75rem; + border-radius: var(--radius-md); +} + +.scale-badge { + font-size: 0.75rem; + color: var(--text-secondary); + background: var(--bg-surface); + padding: 0.25rem 0.75rem; + border-radius: var(--radius-md); + border: 1px solid var(--border); +} + +.room-layout { + display: grid; + grid-template-columns: 1fr 240px; + gap: 1.5rem; + min-height: 400px; +} + +.room-stream { + display: none; +} + +.stories-panel, +.members-panel { + background: var(--bg-surface); + border: 1px solid var(--border); + border-radius: var(--radius-lg); + padding: 1.25rem; +} + +.panel-title { + font-size: 0.8rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--text-muted); + margin-bottom: 1rem; +} + +.stories-list, +.members-list { + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.story-card { + background: #18181b; + border: 1px solid #27272a; + border-radius: var(--radius-md); + padding: 1.25rem; + transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); + position: relative; + cursor: default; +} + +.story-card:hover { + border-color: #3f3f46; + transform: translateY(-2px); + box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3); +} + +.story-revealed { + border-color: rgba(99, 102, 241, 0.2); + background: rgba(99, 102, 241, 0.03); +} + +.story-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 0.75rem; + margin-bottom: 0.75rem; +} + +.story-title { + font-size: 0.95rem; + font-weight: 500; + color: var(--text-primary); + flex: 1 1 auto; + word-break: break-word; + margin-top: 0.15rem; /* align text baseline with buttons */ +} + +.story-actions { + display: flex; + gap: 0.4rem; + align-items: center; + flex-wrap: wrap; + flex: 0 0 auto; +} + +.story-action-form { + margin: 0; +} + +.story-btn { + display: inline-flex; + align-items: center; + justify-content: center; + height: 26px; + padding: 0 0.6rem; + font-size: 0.75rem; + font-weight: 500; + border-radius: var(--radius-sm); + cursor: pointer; + transition: all 0.15s; + border: 1px solid transparent; +} + +.story-btn-primary { + background: var(--accent); + color: white; + border-color: var(--accent); +} +.story-btn-primary:hover { + background: var(--accent-hover); + border-color: var(--accent-hover); +} + +.story-btn-secondary { + background: transparent; + color: var(--text-secondary); + border-color: var(--border); +} +.story-btn-secondary:hover { + background: var(--bg-surface-hover); + color: var(--text-primary); +} + +.story-badge { + display: inline-flex; + align-items: center; + justify-content: center; + height: 26px; + padding: 0 0.6rem; + font-size: 0.75rem; + font-weight: 500; + border-radius: var(--radius-sm); +} + +.story-badge-active { + color: var(--success-text); + border: 1px solid var(--success-border); + background: var(--success-bg); +} + +.story-badge-revealed { + color: var(--accent); + border: 1px solid rgba(139, 92, 246, 0.4); + background: rgba(139, 92, 246, 0.1); +} + +.story-points { + font-family: var(--font-mono); + font-size: 1rem; + font-weight: 700; + color: var(--accent); + background: rgba(139, 92, 246, 0.15); + padding: 0.25rem 0.75rem; + border-radius: var(--radius-md); +} + +.vote-form { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; +} + +.vote-option { + background: #1c1c28; + border: 1px solid #2d2d3d; + border-radius: var(--radius-md); + padding: 0.5rem 0.85rem; + font-family: var(--font-mono); + font-size: 0.85rem; + color: var(--text-secondary); + cursor: pointer; + transition: all 0.2s; +} + +.vote-option:hover { + background: var(--bg-surface-hover); + border-color: var(--accent); + color: var(--text-primary); +} + +.vote-option.vote-selected { + border-color: var(--accent); + background: var(--accent); + color: #fff; + box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3); +} + +.story-active { + border-color: rgba(16, 185, 129, 0.2); + background: rgba(16, 185, 129, 0.02); +} + +.story-action-btn { + display: inline-flex; + align-items: center; + justify-content: center; + width: 42px; + height: 42px; + padding: 0; + border-radius: 14px; + background: rgba(255, 255, 255, 0.02); + border: 1px solid var(--border); + color: var(--text-muted); + cursor: pointer; + transition: all 0.15s; + flex-shrink: 0; +} + +.story-action-btn svg { + width: 16px; + height: 16px; +} + +.story-action-btn:hover { + background: var(--bg-surface-hover); + color: var(--text-primary); + border-color: var(--border-accent); + transform: translateY(-1px); +} + +.story-action-btn-toggle { + color: var(--accent); + border-color: rgba(99, 102, 241, 0.35); + background: rgba(99, 102, 241, 0.08); +} + +.story-action-btn-toggle:hover { + color: #c7d2fe; + border-color: rgba(99, 102, 241, 0.5); + background: rgba(99, 102, 241, 0.16); +} + +.story-action-btn-activate { + color: #f8fafc; + border-color: rgba(148, 163, 184, 0.26); + background: rgba(148, 163, 184, 0.08); +} + +.story-action-btn-activate:hover { + color: #ffffff; + border-color: rgba(148, 163, 184, 0.42); + background: rgba(148, 163, 184, 0.16); +} + +.story-action-btn-reset { + color: var(--success-text); + border-color: rgba(16, 185, 129, 0.26); + background: rgba(16, 185, 129, 0.06); +} + +.story-action-btn-reset:hover { + color: #6ee7b7; + border-color: rgba(16, 185, 129, 0.4); + background: rgba(16, 185, 129, 0.14); +} + +.story-action-btn.story-action-delete:hover { + border-color: rgba(239, 68, 68, 0.4); + color: #f87171; + background: rgba(239, 68, 68, 0.06); +} + +.revealed-votes { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin-top: 0.75rem; + padding-top: 0.75rem; + border-top: 1px solid var(--border); +} + +.revealed-vote { + display: flex; + align-items: center; + gap: 0.4rem; + background: var(--bg-surface); + border: 1px solid var(--border); + border-radius: var(--radius-md); + padding: 0.3rem 0.6rem; +} + +.revealed-vote-user { + font-size: 0.8rem; + color: var(--text-secondary); +} + +.revealed-vote-value { + font-family: var(--font-mono); + font-size: 0.85rem; + font-weight: 700; + color: var(--accent); + background: rgba(139, 92, 246, 0.15); + padding: 0.1rem 0.4rem; + border-radius: var(--radius-sm); +} + +.member-row { + display: flex; + align-items: center; + gap: 0.65rem; + padding: 0.5rem; + border-radius: var(--radius-md); +} + +.member-name { + font-size: 0.9rem; + color: var(--text-secondary); +} + +/* SSE indicator */ +.sse-indicator { + display: inline-flex; + align-items: center; + gap: 0.375rem; + font-size: 0.75rem; + font-weight: 500; + color: var(--text-muted); + padding: 0.25rem 0.5rem; + border-radius: var(--radius-full); + background: var(--bg-surface-hover); + border: 1px solid var(--border); +} + +.sse-dot { + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--text-muted); +} + +.sse-connected .sse-indicator { + color: var(--success-text); + background: var(--success-bg); + border-color: var(--success-border); +} + +.sse-connected .sse-dot { + background: var(--success-text); + animation: pulse 2s ease infinite; +} + +@media (max-width: 768px) { + .topbar { + padding: 1rem 1.1rem; + align-items: flex-start; + flex-direction: column; + } + + .topbar-brand, + .topbar-actions { + width: 100%; + flex-wrap: wrap; + } + + .topbar-actions { + justify-content: flex-start; + } + + .page-content { + padding: 1.1rem; + } + + .room-title { + max-width: 100%; + } + + .topbar-user { + order: 2; + } +} diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..4024fdb --- /dev/null +++ b/templates/index.html @@ -0,0 +1,120 @@ + + + {{template "app-head" (dict "Title" "Dashboard" "UseHTMX" true "UseSSE" + false)}} + +
+
+
+
+ {{template "brand-mark" .}} + Planning Rooms +
+
+ + {{template "session-controls" .}} +
+
+ +
+
+

+ Welcome back, {{.Username}} +

+

+ Create or join a planning room to start estimating. +

+
+ + {{if .Rooms}} +
+ {{range .Rooms}} +
+ +
+ {{.Name}} +
+ {{if .IsOwner}} + + Owner + + {{end}} + {{.Code}} + {{if .IsOwner}} + + {{end}} +
+
+
+ {{.Scale}} + {{.MemberCount}} members +
+
+ {{end}} +
+ {{else}} +
+

No rooms yet. Create one to get started.

+
+ {{end}} +
+
+
+ + + + diff --git a/templates/layouts.html b/templates/layouts.html new file mode 100644 index 0000000..8698468 --- /dev/null +++ b/templates/layouts.html @@ -0,0 +1,85 @@ +{{define "app-head"}} + + + + {{.Title}} — SprintPadawan + + + + + + + + + + + + + + + + {{if .UseHTMX}} + + {{end}} {{if .UseSSE}} + + {{end}} + +{{end}} {{define "auth-head"}} + + + + {{.Title}} — SprintPadawan + + + + + + + + + + + + + + + + +{{end}} {{define "brand-mark"}} + + SprintPadawan + +{{end}} {{define "session-controls"}} +
+
{{slice .Username 0 1}}
+ {{.Username}} +
+
+ +
+{{end}} diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..d97dbbb --- /dev/null +++ b/templates/login.html @@ -0,0 +1,74 @@ + + + {{template "auth-head" (dict "Title" "Sign In")}} + +
+ +

Sign in to your account

+ + {{if .Error}} +
+ + + + + + {{.Error}} +
+ {{end}} + +
+
+ + +
+ +
+ + +
+ + +
+ + +
+ + diff --git a/templates/register.html b/templates/register.html new file mode 100644 index 0000000..c49bb8b --- /dev/null +++ b/templates/register.html @@ -0,0 +1,91 @@ + + + {{template "auth-head" (dict "Title" "Register")}} + +
+ +

Create your account

+ + {{if .Error}} +
+ + + + + + {{.Error}} +
+ {{end}} + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ + diff --git a/templates/room.html b/templates/room.html new file mode 100644 index 0000000..5d37c1b --- /dev/null +++ b/templates/room.html @@ -0,0 +1,98 @@ +{{define "room.html"}} + + + {{template "app-head" (dict "Title" .Room.Name "UseHTMX" true "UseSSE" + true)}} + +
+
+
+
+ {{template "brand-mark" .}} + + + + + + + {{.Room.Name}} + {{.Room.Code}} +
+
+ {{.Room.Scale}} + {{if .IsOwner}} + + {{end}} {{template "session-controls" .User}} +
+
+ +
+
+ + +
+ +
+ {{template "stories-panel" .}} {{template + "members-panel" .}} +
+
+
+
+ + + + {{template "sse-script"}} + + +{{end}} diff --git a/templates/room_form.html b/templates/room_form.html new file mode 100644 index 0000000..b952a2e --- /dev/null +++ b/templates/room_form.html @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/templates/room_partials.html b/templates/room_partials.html new file mode 100644 index 0000000..c8a6bbf --- /dev/null +++ b/templates/room_partials.html @@ -0,0 +1,316 @@ +{{define "stories-panel"}} +
+
+

Stories

+
+ + Live +
+
+
+ {{template "stories-list" .}} +
+
+{{end}} + +{{define "stories-list"}} {{range .Stories}} {{$isActive := eq (derefInt +$.Room.ActiveStoryID) .ID}} +
+
+ {{.Title}} +
+ {{if $isActive}} + Active + {{end}} {{if $.IsOwner}} {{if .Voted}} +
+ +
+ {{else}} +
+ + +
+ {{end}} {{if not $isActive}} +
+ + +
+ {{end}} {{if $.IsOwner}} +
+ +
+ + + {{end}} {{end}} +
+
+ + {{if $isActive}} +
+ {{template "vote-area" (dict "RoomData" $ "Story" .)}} +
+ {{end}} {{if .Voted}} +
+ {{range (index $.StoryVotes .ID)}} +
+ {{.Username}} + {{.Value}} +
+ {{end}} +
+ {{end}} +
+{{else}} +
+

No stories yet. Add one to start voting.

+
+{{end}} {{end}} + +{{define "vote-area"}} {{$data := .RoomData}} {{$story := .Story}} {{$userVote +:= index $data.UserVotes $story.ID}} +
+ {{range scaleToOptions $data.Room.Scale}} + + {{end}} +
+{{end}} + +{{define "members-panel"}} +
+

Members ({{len .Members}})

+
+ {{range .Members}} +
+
+ {{slice .Username 0 1}} +
+ {{.Username}} + {{if .HasVoted}} + + + + {{end}} +
+ {{end}} +
+
+{{end}} + +{{define "sse-script"}} + +{{end}} diff --git a/templates/story_edit.html b/templates/story_edit.html new file mode 100644 index 0000000..ea7340c --- /dev/null +++ b/templates/story_edit.html @@ -0,0 +1,34 @@ + diff --git a/templates/story_form.html b/templates/story_form.html new file mode 100644 index 0000000..0740be3 --- /dev/null +++ b/templates/story_form.html @@ -0,0 +1,34 @@ + diff --git a/templates/vote_form.html b/templates/vote_form.html new file mode 100644 index 0000000..be43428 --- /dev/null +++ b/templates/vote_form.html @@ -0,0 +1,15 @@ +{{$userVote := .UserVote}} {{$roomID := .RoomID}} {{$storyID := .Story.ID}} +
+ {{range scaleToOptions .Scale}} + + {{end}} +

N7r0I!E; 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�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 literal 0 HcmV?d00001 diff --git a/static/fonts/fonts.css b/static/fonts/fonts.css new file mode 100644 index 0000000..ee76a17 --- /dev/null +++ b/static/fonts/fonts.css @@ -0,0 +1,63 @@ +@font-face { + font-family: 'JetBrains Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(/static/fonts/JetBrainsMono-Regular.ttf) format('truetype'); +} +@font-face { + font-family: 'JetBrains Mono'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(/static/fonts/JetBrainsMono-Medium.ttf) format('truetype'); +} +@font-face { + font-family: 'Outfit'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(/static/fonts/Outfit-Medium.ttf) format('truetype'); +} +@font-face { + font-family: 'Outfit'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(/static/fonts/Outfit-SemiBold.ttf) format('truetype'); +} +@font-face { + font-family: 'Outfit'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(/static/fonts/Outfit-Bold.ttf) format('truetype'); +} +@font-face { + font-family: 'Plus Jakarta Sans'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(/static/fonts/PlusJakartaSans-Regular.ttf) format('truetype'); +} +@font-face { + font-family: 'Plus Jakarta Sans'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(/static/fonts/PlusJakartaSans-Medium.ttf) format('truetype'); +} +@font-face { + font-family: 'Plus Jakarta Sans'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(/static/fonts/PlusJakartaSans-SemiBold.ttf) format('truetype'); +} +@font-face { + font-family: 'Plus Jakarta Sans'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(/static/fonts/PlusJakartaSans-Bold.ttf) format('truetype'); +} diff --git a/static/img/favicon.ico b/static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f06ae95d15ca4ee652d63f5c1566497f7cfc30b2 GIT binary patch literal 15406 zcmeHO3vg8B6~3a9f+9)GgS@7{a&E{-$o z%s>Bq{O6qSod5ifd(OX-bd7Ya6dx~f?T}VnCrQ&JNpd(Y-8&N`X#+p2s=EBXNRsv^ zOOlh@FbPv!dd`)h-#M>$(rKSBUajDr7L$;-{qB%2I5@O8NO}crhP{C`NuBjM-zMNuz7yBN#^N6J0L%Np(O9@naVxI{r|CKTDeIy*d1;|BfyltG`*VW}`Jc$n3l`?GP#7u?Ey`h}L? z7=14DU|!%E2?t3JjvMlIJkImMe~t1t+D_)_3-pkVJs{gCKdbEq8H1V~m|tTgy|MQE zQDe?Ais!P7F@1slj>O}1tDlM|-9!iHs?U3o=*4@+utjMD_^44|TU}H_>G28lF0Vm? zpV=C+*blA|7zXG0Q;hOB%4=W}uVv2KdU|hxbqxKjtw|&Dd3+m{k9J-8MU=a34^>pu z(6JV;B|Bg~u_}K*uYXCr{uaIaF;zQD>7zx9O=E~gK5WodP)yE~=cwS&37S^qBKW2m z8%8UCd(&)6x&L7*9sUpHzkP(<#pW=Wk$;NqyQ_KLnBvSUq>{dW$Qbh8JV*<8FVLs6 zFI3vcjQo}CZ}GR@MpJmt6JDHu9hT+84!PU+QY&N9+E-eY5C3Xn`@+tUqgQgayh$Ae zMVfm%fx(Rapn-oivCrl1*f%2Id2*N>zuq;bB(AuN)|Qm%`lDI-z<~L`rO-KoA%FK_ zDo;$JCu*jSDSLQtDRfn9I-cAp=%1zn8s{NI^@H$G%i=34C%U39M$+vi2 z_87)shkRfGhC8?~Qh9Ee#aM8!#He*WO1_EpSBu{&r;8@k&!i`+ry7#4Tz}2%KeXiI z`S%$^!u8`LuF2v153IvR_FsCk#k&VwWz?RTt!snu{g*7?!2VOnh*Yni+MqfAvTW?_ z$Lv2Z*&xspiFdT`L*9kf8iRmwJu|4KyR2RsW zF?a(nvkq}abbzi*^PEu`SE?Pyz@dX~KWq*LuZ7RpvA)}_7y5yDcI%CY0Z%ZQ+kMEz zl+Pe`_IP!z=HAc_U4RMLl;0QO{uF8pEVUvFF~_9wanw^)Yx;ZBtUS)$d?y^YxaWQ3 z8)o^5_A5CylJ<=Wa=bu1i%HFMtH7(Qu{QCy&X-nYBL1D6cr)EF@dkRDW3X2FM51FK zx(KXF?6^Mb>&%KotM|T_V>q3TJWB4qhY}t6^j!T6Ii8_MWAz=@)NuT4`zovaK*x5W zXQoc4v>9$W?&U12qRlg!V$u&h2CBpHa~`@b8vLL|EU%8^W*O^Vpq!VsQF2BWZJp`1 zT?g#DVu2qztgEZ1i5&Ms{3~nY7D`E-La%?b+19x=miT+Q531Pi*)P5>#}P9*CqIp2 zXm7aZ*wzoR#E(9Bp`noym)%Y!r#~at;Fpx~vkjD)k`{H2PWX4M@gHC4r8-vy<^SP5 zxer{Siu~42 z7OsOG_`wtTnukg&D7mtR3f}pEFh-TOFX{b^ijJPuECu_H(!|DQ^7DG3cXlpT_`w%@ zh97aBDV1~X$N?&Kz`Q?c<}51W`KDN-6mTClC8uz%+-G4SoU$0>etJg;XnN6z?(vwq6@1g{rn#Zn3tZcsiQ2;X(Nw{y#vldX0Y#U5a*|?@cooyJ>lQ)hzYTsVxFJa z*3?X;lP6Q$xN-C-uh&M-RE^S+F>1wdL%zU{QEhn)#^V0>d}eL>%}G?ody4}m&Zfv% zG~$Qoj{#qMAQpJlcpl+1o->k?sWU6boQ-_JW#PUf?vWQqzKH$ERQy~GpOI&K_&*N| z(=rUjtYu7$O)YjP@FRc0a=Y1&qCOvP1iz^^zTm%xyn*j&`M%KMFz4;K-8xgeV>C{b z7}%y8&ol%l2%LH~am&C=Td@19%%3vuWAGWh z|B;2`R^DSgU`&U+K|khJwnxm@2joy7YuMirL_Q7}l$fHqCg%0`MZt{0MgFq>R)3A1 Z1w63_FzYAL=yR3!ss*lE;H$O3{{V<`J9Pj6 literal 0 HcmV?d00001 diff --git a/static/img/logo.png b/static/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c79234d01e507a83d5b693b9f2d7c04a5c33335f GIT binary patch literal 8760 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 literal 0 HcmV?d00001 diff --git a/static/img/logo.webp b/static/img/logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..509f7344c68f7c873e26079cafdaa5db02dc79ab GIT binary patch literal 13586 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 literal 0 HcmV?d00001 diff --git a/static/js/htmx.min.js b/static/js/htmx.min.js new file mode 100644 index 0000000..753c4ca --- /dev/null +++ b/static/js/htmx.min.js @@ -0,0 +1 @@ +var htmx = function () { "use strict"; const Q = { onLoad: null, process: null, on: null, off: null, trigger: null, ajax: null, find: null, findAll: null, closest: null, values: function (e, t) { const n = cn(e, t || "post"); return n.values }, remove: null, addClass: null, removeClass: null, toggleClass: null, takeClass: null, swap: null, defineExtension: null, removeExtension: null, logAll: null, logNone: null, logger: null, config: { historyEnabled: true, historyCacheSize: 10, refreshOnHistoryMiss: false, defaultSwapStyle: "innerHTML", defaultSwapDelay: 0, defaultSettleDelay: 20, includeIndicatorStyles: true, indicatorClass: "htmx-indicator", requestClass: "htmx-request", addedClass: "htmx-added", settlingClass: "htmx-settling", swappingClass: "htmx-swapping", allowEval: true, allowScriptTags: true, inlineScriptNonce: "", inlineStyleNonce: "", attributesToSettle: ["class", "style", "width", "height"], withCredentials: false, timeout: 0, wsReconnectDelay: "full-jitter", wsBinaryType: "blob", disableSelector: "[hx-disable], [data-hx-disable]", scrollBehavior: "instant", defaultFocusScroll: false, getCacheBusterParam: false, globalViewTransitions: false, methodsThatUseUrlParams: ["get", "delete"], selfRequestsOnly: true, ignoreTitle: false, scrollIntoViewOnBoost: true, triggerSpecsCache: null, disableInheritance: false, responseHandling: [{ code: "204", swap: false }, { code: "[23]..", swap: true }, { code: "[45]..", swap: false, error: true }], allowNestedOobSwaps: true }, parseInterval: null, _: null, version: "2.0.4" }; Q.onLoad = j; Q.process = kt; Q.on = ye; Q.off = be; Q.trigger = he; Q.ajax = Rn; Q.find = u; Q.findAll = x; Q.closest = g; Q.remove = z; Q.addClass = K; Q.removeClass = G; Q.toggleClass = W; Q.takeClass = Z; Q.swap = $e; Q.defineExtension = Fn; Q.removeExtension = Bn; Q.logAll = V; Q.logNone = _; Q.parseInterval = d; Q._ = e; const n = { addTriggerHandler: St, bodyContains: le, canAccessLocalStorage: B, findThisElement: Se, filterValues: hn, swap: $e, hasAttribute: s, getAttributeValue: te, getClosestAttributeValue: re, getClosestMatch: o, getExpressionVars: En, getHeaders: fn, getInputValues: cn, getInternalData: ie, getSwapSpecification: gn, getTriggerSpecs: st, getTarget: Ee, makeFragment: P, mergeObjects: ce, makeSettleInfo: xn, oobSwap: He, querySelectorExt: ae, settleImmediately: Kt, shouldCancel: ht, triggerEvent: he, triggerErrorEvent: fe, withExtensions: Ft }; const r = ["get", "post", "put", "delete", "patch"]; const H = r.map(function (e) { return "[hx-" + e + "], [data-hx-" + e + "]" }).join(", "); function d(e) { if (e == undefined) { return undefined } let t = NaN; if (e.slice(-2) == "ms") { t = parseFloat(e.slice(0, -2)) } else if (e.slice(-1) == "s") { t = parseFloat(e.slice(0, -1)) * 1e3 } else if (e.slice(-1) == "m") { t = parseFloat(e.slice(0, -1)) * 1e3 * 60 } else { t = parseFloat(e) } return isNaN(t) ? undefined : t } function ee(e, t) { return e instanceof Element && e.getAttribute(t) } function s(e, t) { return !!e.hasAttribute && (e.hasAttribute(t) || e.hasAttribute("data-" + t)) } function te(e, t) { return ee(e, t) || ee(e, "data-" + t) } function c(e) { const t = e.parentElement; if (!t && e.parentNode instanceof ShadowRoot) return e.parentNode; return t } function ne() { return document } function m(e, t) { return e.getRootNode ? e.getRootNode({ composed: t }) : ne() } function o(e, t) { while (e && !t(e)) { e = c(e) } return e || null } function i(e, t, n) { const r = te(t, n); const o = te(t, "hx-disinherit"); var i = te(t, "hx-inherit"); if (e !== t) { if (Q.config.disableInheritance) { if (i && (i === "*" || i.split(" ").indexOf(n) >= 0)) { return r } else { return null } } if (o && (o === "*" || o.split(" ").indexOf(n) >= 0)) { return "unset" } } return r } function re(t, n) { let r = null; o(t, function (e) { return !!(r = i(t, ue(e), n)) }); if (r !== "unset") { return r } } function h(e, t) { const n = e instanceof Element && (e.matches || e.matchesSelector || e.msMatchesSelector || e.mozMatchesSelector || e.webkitMatchesSelector || e.oMatchesSelector); return !!n && n.call(e, t) } function T(e) { const t = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i; const n = t.exec(e); if (n) { return n[1].toLowerCase() } else { return "" } } function q(e) { const t = new DOMParser; return t.parseFromString(e, "text/html") } function L(e, t) { while (t.childNodes.length > 0) { e.append(t.childNodes[0]) } } function A(e) { const t = ne().createElement("script"); se(e.attributes, function (e) { t.setAttribute(e.name, e.value) }); t.textContent = e.textContent; t.async = false; if (Q.config.inlineScriptNonce) { t.nonce = Q.config.inlineScriptNonce } return t } function N(e) { return e.matches("script") && (e.type === "text/javascript" || e.type === "module" || e.type === "") } function I(e) { Array.from(e.querySelectorAll("script")).forEach(e => { if (N(e)) { const t = A(e); const n = e.parentNode; try { n.insertBefore(t, e) } catch (e) { O(e) } finally { e.remove() } } }) } function P(e) { const t = e.replace(/]*)?>[\s\S]*?<\/head>/i, ""); const n = T(t); let r; if (n === "html") { r = new DocumentFragment; const i = q(e); L(r, i.body); r.title = i.title } else if (n === "body") { r = new DocumentFragment; const i = q(t); L(r, i.body); r.title = i.title } else { const i = q('"); r = i.querySelector("template").content; r.title = i.title; var o = r.querySelector("title"); if (o && o.parentNode === r) { o.remove(); r.title = o.innerText } } if (r) { if (Q.config.allowScriptTags) { I(r) } else { r.querySelectorAll("script").forEach(e => e.remove()) } } return r } function oe(e) { if (e) { e() } } function t(e, t) { return Object.prototype.toString.call(e) === "[object " + t + "]" } function k(e) { return typeof e === "function" } function D(e) { return t(e, "Object") } function ie(e) { const t = "htmx-internal-data"; let n = e[t]; if (!n) { n = e[t] = {} } return n } function M(t) { const n = []; if (t) { for (let e = 0; e < t.length; e++) { n.push(t[e]) } } return n } function se(t, n) { if (t) { for (let e = 0; e < t.length; e++) { n(t[e]) } } } function X(e) { const t = e.getBoundingClientRect(); const n = t.top; const r = t.bottom; return n < window.innerHeight && r >= 0 } function le(e) { return e.getRootNode({ composed: true }) === document } function F(e) { return e.trim().split(/\s+/) } function ce(e, t) { for (const n in t) { if (t.hasOwnProperty(n)) { e[n] = t[n] } } return e } function S(e) { try { return JSON.parse(e) } catch (e) { O(e); return null } } function B() { const e = "htmx:localStorageTest"; try { localStorage.setItem(e, e); localStorage.removeItem(e); return true } catch (e) { return false } } function U(t) { try { const e = new URL(t); if (e) { t = e.pathname + e.search } if (!/^\/$/.test(t)) { t = t.replace(/\/+$/, "") } return t } catch (e) { return t } } function e(e) { return vn(ne().body, function () { return eval(e) }) } function j(t) { const e = Q.on("htmx:load", function (e) { t(e.detail.elt) }); return e } function V() { Q.logger = function (e, t, n) { if (console) { console.log(t, e, n) } } } function _() { Q.logger = null } function u(e, t) { if (typeof e !== "string") { return e.querySelector(t) } else { return u(ne(), e) } } function x(e, t) { if (typeof e !== "string") { return e.querySelectorAll(t) } else { return x(ne(), e) } } function E() { return window } function z(e, t) { e = y(e); if (t) { E().setTimeout(function () { z(e); e = null }, t) } else { c(e).removeChild(e) } } function ue(e) { return e instanceof Element ? e : null } function $(e) { return e instanceof HTMLElement ? e : null } function J(e) { return typeof e === "string" ? e : null } function f(e) { return e instanceof Element || e instanceof Document || e instanceof DocumentFragment ? e : null } function K(e, t, n) { e = ue(y(e)); if (!e) { return } if (n) { E().setTimeout(function () { K(e, t); e = null }, n) } else { e.classList && e.classList.add(t) } } function G(e, t, n) { let r = ue(y(e)); if (!r) { return } if (n) { E().setTimeout(function () { G(r, t); r = null }, n) } else { if (r.classList) { r.classList.remove(t); if (r.classList.length === 0) { r.removeAttribute("class") } } } } function W(e, t) { e = y(e); e.classList.toggle(t) } function Z(e, t) { e = y(e); se(e.parentElement.children, function (e) { G(e, t) }); K(ue(e), t) } function g(e, t) { e = ue(y(e)); if (e && e.closest) { return e.closest(t) } else { do { if (e == null || h(e, t)) { return e } } while (e = e && ue(c(e))); return null } } function l(e, t) { return e.substring(0, t.length) === t } function Y(e, t) { return e.substring(e.length - t.length) === t } function ge(e) { const t = e.trim(); if (l(t, "<") && Y(t, "/>")) { return t.substring(1, t.length - 2) } else { return t } } function p(t, r, n) { if (r.indexOf("global ") === 0) { return p(t, r.slice(7), true) } t = y(t); const o = []; { let t = 0; let n = 0; for (let e = 0; e < r.length; e++) { const l = r[e]; if (l === "," && t === 0) { o.push(r.substring(n, e)); n = e + 1; continue } if (l === "<") { t++ } else if (l === "/" && e < r.length - 1 && r[e + 1] === ">") { t-- } } if (n < r.length) { o.push(r.substring(n)) } } const i = []; const s = []; while (o.length > 0) { const r = ge(o.shift()); let e; if (r.indexOf("closest ") === 0) { e = g(ue(t), ge(r.substr(8))) } else if (r.indexOf("find ") === 0) { e = u(f(t), ge(r.substr(5))) } else if (r === "next" || r === "nextElementSibling") { e = ue(t).nextElementSibling } else if (r.indexOf("next ") === 0) { e = pe(t, ge(r.substr(5)), !!n) } else if (r === "previous" || r === "previousElementSibling") { e = ue(t).previousElementSibling } else if (r.indexOf("previous ") === 0) { e = me(t, ge(r.substr(9)), !!n) } else if (r === "document") { e = document } else if (r === "window") { e = window } else if (r === "body") { e = document.body } else if (r === "root") { e = m(t, !!n) } else if (r === "host") { e = t.getRootNode().host } else { s.push(r) } if (e) { i.push(e) } } if (s.length > 0) { const e = s.join(","); const c = f(m(t, !!n)); i.push(...M(c.querySelectorAll(e))) } return i } var pe = function (t, e, n) { const r = f(m(t, n)).querySelectorAll(e); for (let e = 0; e < r.length; e++) { const o = r[e]; if (o.compareDocumentPosition(t) === Node.DOCUMENT_POSITION_PRECEDING) { return o } } }; var me = function (t, e, n) { const r = f(m(t, n)).querySelectorAll(e); for (let e = r.length - 1; e >= 0; e--) { const o = r[e]; if (o.compareDocumentPosition(t) === Node.DOCUMENT_POSITION_FOLLOWING) { return o } } }; function ae(e, t) { if (typeof e !== "string") { return p(e, t)[0] } else { return p(ne().body, e)[0] } } function y(e, t) { if (typeof e === "string") { return u(f(t) || document, e) } else { return e } } function xe(e, t, n, r) { if (k(t)) { return { target: ne().body, event: J(e), listener: t, options: n } } else { return { target: y(e), event: J(t), listener: n, options: r } } } function ye(t, n, r, o) { Vn(function () { const e = xe(t, n, r, o); e.target.addEventListener(e.event, e.listener, e.options) }); const e = k(n); return e ? n : r } function be(t, n, r) { Vn(function () { const e = xe(t, n, r); e.target.removeEventListener(e.event, e.listener) }); return k(n) ? n : r } const ve = ne().createElement("output"); function we(e, t) { const n = re(e, t); if (n) { if (n === "this") { return [Se(e, t)] } else { const r = p(e, n); if (r.length === 0) { O('The selector "' + n + '" on ' + t + " returned no matches!"); return [ve] } else { return r } } } } function Se(e, t) { return ue(o(e, function (e) { return te(ue(e), t) != null })) } function Ee(e) { const t = re(e, "hx-target"); if (t) { if (t === "this") { return Se(e, "hx-target") } else { return ae(e, t) } } else { const n = ie(e); if (n.boosted) { return ne().body } else { return e } } } function Ce(t) { const n = Q.config.attributesToSettle; for (let e = 0; e < n.length; e++) { if (t === n[e]) { return true } } return false } function Oe(t, n) { se(t.attributes, function (e) { if (!n.hasAttribute(e.name) && Ce(e.name)) { t.removeAttribute(e.name) } }); se(n.attributes, function (e) { if (Ce(e.name)) { t.setAttribute(e.name, e.value) } }) } function Re(t, e) { const n = Un(e); for (let e = 0; e < n.length; e++) { const r = n[e]; try { if (r.isInlineSwap(t)) { return true } } catch (e) { O(e) } } return t === "outerHTML" } function He(e, o, i, t) { t = t || ne(); let n = "#" + ee(o, "id"); let s = "outerHTML"; if (e === "true") { } else if (e.indexOf(":") > 0) { s = e.substring(0, e.indexOf(":")); n = e.substring(e.indexOf(":") + 1) } else { s = e } o.removeAttribute("hx-swap-oob"); o.removeAttribute("data-hx-swap-oob"); const r = p(t, n, false); if (r) { se(r, function (e) { let t; const n = o.cloneNode(true); t = ne().createDocumentFragment(); t.appendChild(n); if (!Re(s, e)) { t = f(n) } const r = { shouldSwap: true, target: e, fragment: t }; if (!he(e, "htmx:oobBeforeSwap", r)) return; e = r.target; if (r.shouldSwap) { qe(t); _e(s, e, e, t, i); Te() } se(i.elts, function (e) { he(e, "htmx:oobAfterSwap", r) }) }); o.parentNode.removeChild(o) } else { o.parentNode.removeChild(o); fe(ne().body, "htmx:oobErrorNoTarget", { content: o }) } return e } function Te() { const e = u("#--htmx-preserve-pantry--"); if (e) { for (const t of [...e.children]) { const n = u("#" + t.id); n.parentNode.moveBefore(t, n); n.remove() } e.remove() } } function qe(e) { se(x(e, "[hx-preserve], [data-hx-preserve]"), function (e) { const t = te(e, "id"); const n = ne().getElementById(t); if (n != null) { if (e.moveBefore) { let e = u("#--htmx-preserve-pantry--"); if (e == null) { ne().body.insertAdjacentHTML("afterend", "