From 0535a50edf3750ea243fe7d33dbf392135251ce9 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 16:37:47 +0100 Subject: [PATCH 001/119] fix(vcs): watch untracked dirs that git lists no file in relist also lists the untracked directories with --directory and walks the directories below them that git does not ignore. A new file in an empty untracked directory, or in one with only ignored files, is then a change. Files and the watcher share the ls-files arguments. --- vcs/refs.go | 9 ++++-- vcs/watch.go | 77 ++++++++++++++++++++++++++++++++++++++++++++--- vcs/watch_test.go | 33 ++++++++++++++++++++ 3 files changed, 111 insertions(+), 8 deletions(-) diff --git a/vcs/refs.go b/vcs/refs.go index b3fc054..4d1298f 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -132,6 +132,11 @@ type Entry struct { Ignored bool } +// listArgs are the arguments of git ls-files that list the tracked and +// the untracked files. In a merge conflict, git lists a path once for each +// stage. --deduplicate lists it once. +var listArgs = []string{"-co", "--deduplicate", "--exclude-standard"} + // Files returns the tracked and the untracked files, and the ignored paths, // sorted by path. func (r *Repo) Files(ctx context.Context) ([]Entry, error) { @@ -139,9 +144,7 @@ func (r *Repo) Files(ctx context.Context) ([]Entry, error) { args []string ignored bool }{ - // In a merge conflict, git lists a path once for each stage. - // --deduplicate lists it once. - {[]string{"-co", "--deduplicate", "--exclude-standard"}, false}, + {listArgs, false}, {[]string{"-oi", "--exclude-standard", "--directory"}, true}, } var es []Entry diff --git a/vcs/watch.go b/vcs/watch.go index 6da2f3a..95ef1c3 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -131,12 +131,22 @@ func (w *Watcher) Changed(ctx context.Context) (Change, error) { // returns the sum of the list. func (w *Watcher) relist(ctx context.Context) (uint64, error) { w.listed = false - paths, err := w.r.lsFiles(ctx, "-co", "--deduplicate", "--exclude-standard") + paths, err := w.r.lsFiles(ctx, listArgs...) + if err != nil { + return 0, err + } + untracked, err := w.r.untrackedDirs(ctx) if err != nil { return 0, err } root := w.r.root seen := map[string]bool{root: true} + addDirs := func(p string) { + for d := p; !seen[d]; d = filepath.Dir(d) { + seen[d] = true + w.dirs = append(w.dirs, d) + } + } w.dirs = append(w.dirs[:0], root) w.files = w.files[:0] s := newSum() @@ -145,15 +155,72 @@ func (w *Watcher) relist(ctx context.Context) (uint64, error) { // git lists a nested repository with a slash at the end. p = filepath.Join(root, strings.TrimSuffix(p, "/")) w.files = append(w.files, p) - for d := filepath.Dir(p); !seen[d]; d = filepath.Dir(d) { - seen[d] = true - w.dirs = append(w.dirs, d) - } + addDirs(filepath.Dir(p)) + } + for _, d := range untracked { + addDirs(filepath.Join(root, d)) } w.listed = true return uint64(s), nil } +// untrackedDirs returns the untracked directories, relative to the root, +// and each directory below them that git does not ignore. git lists no +// file in a directory that is empty or has only ignored files. A new file +// there changes only that directory, thus the [Watcher] must watch it. +// untrackedDirs does not go into a nested repository. +func (r *Repo) untrackedDirs(ctx context.Context) ([]string, error) { + ps, err := r.lsFiles(ctx, "-o", "--directory", "--exclude-standard") + if err != nil { + return nil, err + } + var level, dirs []string + for _, p := range ps { + if d, ok := strings.CutSuffix(p, "/"); ok { + level = append(level, d) + } + } + for len(level) > 0 { + dirs = append(dirs, level...) + var next []string + for _, d := range level { + abs := filepath.Join(r.root, filepath.FromSlash(d)) + if _, err := os.Lstat(filepath.Join(abs, ".git")); err == nil { + continue // a nested repository + } + des, _ := os.ReadDir(abs) + for _, de := range des { + if de.IsDir() { + next = append(next, d+"/"+de.Name()) + } + } + } + if level, err = r.notIgnored(ctx, next); err != nil { + return nil, err + } + } + return dirs, nil +} + +// notIgnored returns the paths that git does not ignore. +func (r *Repo) notIgnored(ctx context.Context, paths []string) ([]string, error) { + if len(paths) == 0 { + return nil, nil + } + in := strings.NewReader(strings.Join(paths, "\x00")) + out, err := r.runInput(ctx, nil, in, "check-ignore", "-z", "--stdin") + if exitedWith(err, 1) { + return paths, nil // git ignores none + } + if err != nil { + return nil, err + } + ignored := strings.Split(out, "\x00") + return slices.DeleteFunc(paths, func(p string) bool { + return slices.Contains(ignored, p) + }), nil +} + // sumRefs returns the sum of the files that change with HEAD, a ref, or // the config. func (w *Watcher) sumRefs() uint64 { diff --git a/vcs/watch_test.go b/vcs/watch_test.go index f5a3e35..49fb02c 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -3,6 +3,7 @@ package vcs_test import ( "os" "path/filepath" + "strings" "testing" "time" @@ -220,3 +221,35 @@ func TestWatcherBudget(t *testing.T) { t.Errorf("call after the pause: %+v, want Files", got) } } + +// TestWatcherUntrackedDir checks that a new file in an untracked directory +// that git lists no file in is a change. A new file in an ignored +// directory in it is not. +func TestWatcherUntrackedDir(t *testing.T) { + tests := []struct { + name, setup, edit string + want bool + }{ + {"empty", "e/", "e/c.txt", true}, + {"only ignored files", "g/ignored.txt", "g/c.txt", true}, + {"empty below empty", "d/e/", "d/e/c.txt", true}, + {"ignored below untracked", "u/build/", "u/build/c.txt", false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + r, dir := newRepo(t) + if d, ok := strings.CutSuffix(tt.setup, "/"); ok { + if err := os.MkdirAll(filepath.Join(dir, d), 0o755); err != nil { + t.Fatal(err) + } + } else { + write(t, dir, tt.setup, "x\n") + } + w := newWatcher(t, r) + write(t, dir, tt.edit, "c\n") + if got := changed(t, w); got.Files != tt.want { + t.Errorf("after a new %s: %+v, want Files %v", tt.edit, got, tt.want) + } + }) + } +} From ac9cd322f0c04dfa119410e0e8ba23da8292e321 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 16:39:12 +0100 Subject: [PATCH 002/119] fix(tree): keep the row of an expanded ignored directory compress and loneFile stop at a directory that git lists as one path. An expanded ignored directory with one child then keeps its row, and the user can collapse it. --- internal/tree/tree.go | 16 ++++++++++------ internal/tree/tree_test.go | 13 +++++++++++++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/internal/tree/tree.go b/internal/tree/tree.go index 65af917..f5a9469 100644 --- a/internal/tree/tree.go +++ b/internal/tree/tree.go @@ -40,6 +40,9 @@ type node struct { files map[string]int // the entry index of each file, by name ignored bool changed bool + // listed is true for a directory from an Entry with Dir. Its row + // stays, so that the user can collapse it. + listed bool } func newNode() *node { return &node{dirs: map[string]*node{}, files: map[string]int{}} } @@ -66,7 +69,7 @@ func insert(root *node, e Entry, i int) { for _, p := range parts { cur = cur.child(p) } - cur.ignored = e.Ignored + cur.ignored, cur.listed = e.Ignored, true return } if len(parts) == 0 { @@ -121,9 +124,10 @@ func flatten(rows *[]Row, dir *node, prefix string, depth int, toggled map[strin } // compress follows the directories with one child and no files from n. It -// returns the joined name, the path, and the directory where it stops. +// stops at a listed directory. It returns the joined name, the path, and +// the directory where it stops. func compress(name, path string, n *node) (string, string, *node) { - for len(n.files) == 0 && len(n.dirs) == 1 { + for !n.listed && len(n.files) == 0 && len(n.dirs) == 1 { for c, sub := range n.dirs { name, path, n = name+"/"+c, path+"/"+c, sub } @@ -131,10 +135,10 @@ func compress(name, path string, n *node) (string, string, *node) { return name, path, n } -// loneFile returns the name and the index of the file of n, if n has one -// file and no directories. +// loneFile returns the name and the index of the file of n, if n is not +// listed and has one file and no directories. func loneFile(n *node) (name string, i int, ok bool) { - if len(n.dirs) == 0 && len(n.files) == 1 { + if !n.listed && len(n.dirs) == 0 && len(n.files) == 1 { for name, i := range n.files { return name, i, true } diff --git a/internal/tree/tree_test.go b/internal/tree/tree_test.go index 8f7b963..7279555 100644 --- a/internal/tree/tree_test.go +++ b/internal/tree/tree_test.go @@ -169,6 +169,19 @@ func TestBuildIgnored(t *testing.T) { t.Error("the rows under an ignored directory are not ignored, want ignored") } + // An expanded ignored directory with one child keeps its own row, so + // the user can collapse it. + es = []Entry{ + {Path: "a", Ignored: true, Dir: true}, + {Path: "a/b", Ignored: true, Dir: true}, + {Path: "a/b/c.o", Ignored: true}, + } + rows = Build(es, set("a", "a/b"), false) + want = []string{"0:dir:a", "1:dir:b", "2:file:c.o"} + if got := shape(rows); !slices.Equal(got, want) { + t.Fatalf("Build = %q, want %q", got, want) + } + rows = Build([]Entry{{Path: "build.log", Ignored: true}}, nil, false) if !rows[0].Ignored || rows[0].File != 0 { t.Errorf("ignored file %+v, want an ignored file row", rows[0]) From 1c489965d843ea3e0ece331812d331a28ed9182e Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 16:49:47 +0100 Subject: [PATCH 003/119] test(tui): wait twice the watcher pause in the watched tests The relist runs two git processes, so a check after a change can take longer than the first check. TestPRBranchSwitch then missed the switch in about one run of 16. --- tui/watch_test.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tui/watch_test.go b/tui/watch_test.go index 09cea4f..b31a27e 100644 --- a/tui/watch_test.go +++ b/tui/watch_test.go @@ -20,8 +20,9 @@ func watched(t *testing.T) (m model, dir string, pause time.Duration) { start := time.Now() m = step(t, m, tickMsg{}) // The pause of the watcher is 20 times its check, which is a part of - // the tick. - return m, dir, 21 * time.Since(start) + // the tick. A check after a change can take longer than the first + // check, thus wait twice as long. + return m, dir, 42 * time.Since(start) } // TestTickRunsNoGitWhenIdle checks that a tick runs no git process while From 608ccac7d6c3f3d468f4abcc2a8a67675b61aed6 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 16:49:47 +0100 Subject: [PATCH 004/119] fix(vcs): remote HEADs, forge by host, index errors, merge-base error - Branches hides the HEAD of each remote. It filters by the full ref name, then shortens. - PullRequest selects the forge by the host of the remote URL, in the URL and the scp forms. A host override matches the host only. GitLab is gitlab.com or the gitlab host, as in herdr-reviewr. - copyIndex returns a stat error other than a missing index. - ForkPoint wraps the error of git merge-base. --- vcs/pr.go | 34 +++++++++++++++++++++++++--------- vcs/pr_test.go | 16 +++++++++++++++- vcs/refs.go | 16 ++++++++++------ vcs/repo.go | 8 ++++++-- vcs/repo_test.go | 33 ++++++++++++++++++++++++++++++--- 5 files changed, 86 insertions(+), 21 deletions(-) diff --git a/vcs/pr.go b/vcs/pr.go index 377f149..6fbc19a 100644 --- a/vcs/pr.go +++ b/vcs/pr.go @@ -92,25 +92,26 @@ type Comment struct { } // PullRequest returns the pull request of the current branch. It selects the -// forge from the URL of the remote "upstream", or else "origin". Then it runs +// forge from the host of the remote "upstream", or else "origin". Then it runs // the command-line tool of the forge: gh, glab, or az. The tool must be // installed and signed in. The text of the pull request has no control // characters. func (r *Repo) PullRequest(ctx context.Context, h Hosts) (*PullRequest, error) { - remote := strings.ToLower(r.remoteURL(ctx)) // host names ignore case - has := func(host string) bool { - return host != "" && strings.Contains(remote, strings.ToLower(host)) + remote := r.remoteURL(ctx) + if remote == "" { + return nil, errNoRemote } + host := remoteHost(remote) + is := func(name string) bool { return name != "" && strings.EqualFold(host, name) } var pr *PullRequest var err error switch { - case remote == "": - return nil, errNoRemote - case has("github.com") || has(h.GitHub): + case is("github.com") || is(h.GitHub): pr, err = r.gitHub(ctx, h.GitHub) - case has("gitlab") || has(h.GitLab): + case is("gitlab.com") || is(h.GitLab): pr, err = r.gitLab(ctx) - case has("dev.azure.com") || has("visualstudio.com") || has(h.Azure): + case is("dev.azure.com") || is("ssh.dev.azure.com") || + strings.HasSuffix(host, ".visualstudio.com") || is(h.Azure): pr, err = r.azure(ctx) default: return nil, errUnsupported @@ -125,6 +126,21 @@ func (r *Repo) PullRequest(ctx context.Context, h Hosts) (*PullRequest, error) { return pr, nil } +// remoteHost returns the host of the remote URL u, in lower case. u is a +// URL such as "ssh://git@host:22/path", or has the scp form +// "git@host:path", as herdr-reviewr reads it. A local path has no host. +func remoteHost(u string) string { + var auth string // [user@]host[:port] + if _, rest, ok := strings.Cut(u, "://"); ok { + auth, _, _ = strings.Cut(rest, "/") + } else if a, _, ok := strings.Cut(u, ":"); ok { + auth = a + } + auth = auth[strings.LastIndex(auth, "@")+1:] + host, _, _ := strings.Cut(auth, ":") + return strings.ToLower(host) +} + // cleanPR removes the control characters from the text of pr, because the // text comes from other users. func cleanPR(pr *PullRequest) { diff --git a/vcs/pr_test.go b/vcs/pr_test.go index 0b7271d..9d87cb5 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -159,11 +159,25 @@ func TestPullRequestErrors(t *testing.T) { fakePath(t, dir) fakeTool(t, dir, "az", map[string]string{azArgs("none"): `[]`}) const azure = "https://dev.azure.com/o/p/_git/r" + const unsupported = "the remote is not on GitHub, GitLab, or Azure DevOps" + corp := vcs.Hosts{GitLab: "Git.Corp"} tests := []struct { remote, branch string + hosts vcs.Hosts want error // if not nil, err must wrap it msg string // if not empty, the text of err }{ + // The host selects the forge, not a name in the path. + {remote: "https://example.com/github.com/r.git", branch: "feat", msg: unsupported}, + {remote: "git@example.com:gitlab/r.git", branch: "feat", msg: unsupported}, + {remote: "https://git.corp.example/r", branch: "feat", hosts: corp, msg: unsupported}, + {remote: "git@git.corp:o/r.git", branch: "feat", hosts: corp, msg: "glab isn't installed"}, + {remote: "ssh://git@GitHub.com:22/o/r", branch: "feat", msg: "gh isn't installed"}, + { + remote: "https://u@org.visualstudio.com/p/_git/r", + branch: "other", + msg: "unexpected call: " + azArgs("other"), + }, {remote: "", branch: "feat", msg: "no git remote"}, { remote: "https://example.com/r.git", @@ -186,7 +200,7 @@ func TestPullRequestErrors(t *testing.T) { if tt.branch != "feat" { git(t, dir, "checkout", "-qb", tt.branch) } - _, err := r.PullRequest(t.Context(), vcs.Hosts{}) + _, err := r.PullRequest(t.Context(), tt.hosts) switch { case err == nil: t.Errorf("PullRequest(%q): no error, want an error", tt.remote) diff --git a/vcs/refs.go b/vcs/refs.go index 4d1298f..704628e 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -69,16 +69,20 @@ func (r *Repo) Commits(ctx context.Context, since string) ([]Commit, error) { // Branches returns the names of the local and the remote branches. func (r *Repo) Branches(ctx context.Context) ([]string, error) { - out, err := r.run(ctx, nil, - "for-each-ref", "--format=%(refname:short)", "refs/heads", "refs/remotes") + // A ref name has no space. The short name of refs/remotes/origin/HEAD + // is "origin", thus filter by the full name. + out, err := r.run(ctx, nil, "for-each-ref", + "--format=%(refname) %(refname:short)", "refs/heads", "refs/remotes") if err != nil { return nil, err } var bs []string - // The short name of refs/remotes/origin/HEAD is "origin". - for b := range strings.FieldsSeq(out) { - if !strings.HasSuffix(b, "/HEAD") && b != "origin" { - bs = append(bs, b) + for l := range strings.Lines(out) { + full, short, _ := strings.Cut(strings.TrimSuffix(l, "\n"), " ") + remoteHead := strings.HasPrefix(full, "refs/remotes/") && + strings.HasSuffix(full, "/HEAD") + if short != "" && !remoteHead { + bs = append(bs, short) } } return bs, nil diff --git a/vcs/repo.go b/vcs/repo.go index dd2c0ff..1ac730e 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -14,6 +14,7 @@ import ( "errors" "fmt" "io" + "io/fs" "os" "os/exec" "path/filepath" @@ -200,7 +201,7 @@ func (r *Repo) MergeBase(ctx context.Context, base string) (string, error) { func (r *Repo) ForkPoint(ctx context.Context, base string) (string, error) { out, err := r.run(ctx, nil, "merge-base", "--end-of-options", base, "HEAD") if err != nil { - return "", fmt.Errorf("no merge base with %s", base) + return "", fmt.Errorf("no merge base with %s: %w", base, err) } return strings.TrimSpace(out), nil } @@ -243,9 +244,12 @@ func (r *Repo) Snapshot(ctx context.Context) (string, error) { // to find files that changed in the same second as the index. func (r *Repo) copyIndex(dst string) error { st, err := os.Stat(r.index) - if err != nil { + if errors.Is(err, fs.ErrNotExist) { return nil // a new repository has no index } + if err != nil { + return err + } b, err := os.ReadFile(r.index) if err != nil { return err diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 685bc30..9c50e0f 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -148,8 +148,9 @@ func TestScopes(t *testing.T) { if got := names(changes(t, r, mb, now)); got != "A.gitignore Ma.txt Ab.txt Anew.txt" { t.Errorf("branch: %s, want A.gitignore Ma.txt Ab.txt Anew.txt", got) } - if _, err := r.MergeBase(ctx, "nosuchbranch"); err == nil { - t.Error("MergeBase(nosuchbranch): no error, want an error") + _, err = r.MergeBase(ctx, "nosuchbranch") + if _, ok := errors.AsType[*exec.ExitError](err); !ok { + t.Errorf("MergeBase(nosuchbranch) = %v, want the error of git", err) } // In a turn, rexdiff takes a snapshot and then the agent edits a file. @@ -416,7 +417,7 @@ func TestOwns(t *testing.T) { // TestRefs checks Branches, DefaultBase, and Resolve. func TestRefs(t *testing.T) { - r, _ := newRepo(t) + r, dir := newRepo(t) ctx := t.Context() if bs, err := r.Branches(ctx); err != nil || strings.Join(bs, " ") != "feat main" { t.Errorf("Branches = %v, %v, want [feat main], nil", bs, err) @@ -424,6 +425,16 @@ func TestRefs(t *testing.T) { if b := r.DefaultBase(ctx); b != "main" { t.Errorf("DefaultBase = %q, want main", b) } + // The HEAD of each remote is not a branch. + for _, remote := range []string{"origin", "up"} { + git(t, dir, "update-ref", "refs/remotes/"+remote+"/main", "main") + git(t, dir, "symbolic-ref", "refs/remotes/"+remote+"/HEAD", + "refs/remotes/"+remote+"/main") + } + want := "feat main origin/main up/main" + if bs, err := r.Branches(ctx); err != nil || strings.Join(bs, " ") != want { + t.Errorf("Branches with remotes = %v, %v, want %s", bs, err, want) + } if _, err := r.Resolve(ctx, "nosuchref"); err == nil { t.Error("Resolve(nosuchref): no error, want an error") } @@ -512,6 +523,22 @@ func TestNewRepo(t *testing.T) { } } +// TestSnapshotBadIndex checks that Snapshot fails if it cannot read the +// real index. Only a missing index means no index. +func TestSnapshotBadIndex(t *testing.T) { + r, dir := newRepo(t) + idx := filepath.Join(dir, ".git", "index") + if err := os.Remove(idx); err != nil { + t.Fatal(err) + } + if err := os.Symlink("index", idx); err != nil { // a loop + t.Fatal(err) + } + if tree, err := r.Snapshot(t.Context()); err == nil { + t.Errorf("Snapshot with a bad index = %s, want an error", tree) + } +} + // TestSnapshotRacyEdit checks that Snapshot sees a same-size edit in the // same second as the last write of the index. func TestSnapshotRacyEdit(t *testing.T) { From ad850b45f660f7af3e7554b4df9d76ca3b005bf3 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 16:51:16 +0100 Subject: [PATCH 005/119] refactor(vcs): rename ErrNotFound and ForkPoint ErrNoPullRequest names what is not found. MergeBaseCommit runs git merge-base, and MergeBase returns its tree. --- tui/overlay.go | 2 +- tui/pr.go | 2 +- vcs/hostile_test.go | 2 +- vcs/pr.go | 8 ++++---- vcs/pr_test.go | 2 +- vcs/repo.go | 10 ++++++---- vcs/repo_test.go | 2 +- 7 files changed, 15 insertions(+), 13 deletions(-) diff --git a/tui/overlay.go b/tui/overlay.go index 6f94492..6da583e 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -374,7 +374,7 @@ func (m *model) openCommitPicker() { if m.tab == tabPR { return } - since, err := m.repo.ForkPoint(m.ctx, m.base) + since, err := m.repo.MergeBaseCommit(m.ctx, m.base) if head, herr := m.repo.Resolve(m.ctx, "HEAD"); err != nil || herr != nil || since == head { since = "" } diff --git a/tui/pr.go b/tui/pr.go index 0f7e73d..69126ac 100644 --- a/tui/pr.go +++ b/tui/pr.go @@ -143,7 +143,7 @@ func (m *model) renderPR() { return case pr == nil: if !m.pr.loading { - p.note = vcs.ErrNotFound.Error() + p.note = vcs.ErrNoPullRequest.Error() } p.set(nil, nil) return diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index a011aca..389ec44 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -339,7 +339,7 @@ func TestPullRequestBadJSON(t *testing.T) { want error // nil for an error of any type ok bool // true if PullRequest must not fail }{ - {name: "empty object", out: `{}`, want: vcs.ErrNotFound}, + {name: "empty object", out: `{}`, want: vcs.ErrNoPullRequest}, {name: "not JSON", out: `warning: no pull request`}, {name: "huge number", out: `{"title": "T", "number": 1e30}`}, { diff --git a/vcs/pr.go b/vcs/pr.go index 6fbc19a..0331fe9 100644 --- a/vcs/pr.go +++ b/vcs/pr.go @@ -12,8 +12,8 @@ import ( ) var ( - // ErrNotFound means that the branch has no pull request. - ErrNotFound = errors.New("no pull request for this branch") + // ErrNoPullRequest means that the branch has no pull request. + ErrNoPullRequest = errors.New("no pull request for this branch") errNoRemote = errors.New("no git remote") errUnsupported = errors.New("the remote is not on GitHub, GitLab, or Azure DevOps") @@ -120,7 +120,7 @@ func (r *Repo) PullRequest(ctx context.Context, h Hosts) (*PullRequest, error) { return nil, err } if pr.Title == "" { - return nil, ErrNotFound + return nil, ErrNoPullRequest } cleanPR(pr) return pr, nil @@ -409,7 +409,7 @@ func (r *Repo) azure(ctx context.Context) (*PullRequest, error) { return nil, err } if len(v) == 0 { - return nil, ErrNotFound + return nil, ErrNoPullRequest } p := v[0] return &PullRequest{ diff --git a/vcs/pr_test.go b/vcs/pr_test.go index 9d87cb5..ef567ac 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -184,7 +184,7 @@ func TestPullRequestErrors(t *testing.T) { branch: "feat", msg: "the remote is not on GitHub, GitLab, or Azure DevOps", }, - {remote: azure, branch: "none", want: vcs.ErrNotFound}, + {remote: azure, branch: "none", want: vcs.ErrNoPullRequest}, { remote: azure, branch: "other", diff --git a/vcs/repo.go b/vcs/repo.go index 1ac730e..4280b69 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -188,17 +188,19 @@ func (r *Repo) Parent(ctx context.Context, rev string) (string, error) { return r.Tree(ctx, first) } -// MergeBase returns the tree of the best common ancestor of base and HEAD. +// MergeBase returns the tree of the commit that [Repo.MergeBaseCommit] +// returns. func (r *Repo) MergeBase(ctx context.Context, base string) (string, error) { - c, err := r.ForkPoint(ctx, base) + c, err := r.MergeBaseCommit(ctx, base) if err != nil { return "", err } return r.Tree(ctx, c) } -// ForkPoint returns the best common ancestor commit of base and HEAD. -func (r *Repo) ForkPoint(ctx context.Context, base string) (string, error) { +// MergeBaseCommit returns the best common ancestor commit of base and +// HEAD, as git merge-base finds it. +func (r *Repo) MergeBaseCommit(ctx context.Context, base string) (string, error) { out, err := r.run(ctx, nil, "merge-base", "--end-of-options", base, "HEAD") if err != nil { return "", fmt.Errorf("no merge base with %s: %w", base, err) diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 9c50e0f..dfe0ca8 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -590,7 +590,7 @@ func TestCommitsLikeHerdr(t *testing.T) { return s } - since, err := r.ForkPoint(ctx, "main") + since, err := r.MergeBaseCommit(ctx, "main") if err != nil { t.Fatal(err) } From 2ae3fa2fe96b1c7ac1db5ddb1123362cdcca8b22 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 16:52:54 +0100 Subject: [PATCH 006/119] refactor(rex): make the status of an Agent a named field Agent.Status is a field, as Event.Status is. The fields of Status do not show as fields of Agent. --- rex/rex.go | 2 +- rex/rex_test.go | 6 ++---- tui/overlay.go | 6 +++--- tui/send.go | 9 +++++++-- tui/tui_test.go | 2 +- tui/turn_test.go | 6 +++--- 6 files changed, 17 insertions(+), 14 deletions(-) diff --git a/rex/rex.go b/rex/rex.go index bb0f60b..073f194 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -204,7 +204,7 @@ type Agent struct { Name string // the label of the block, or else the app name Window string // the label of the window of the block, or "" Cwd string // the working directory of the program - Status + Status Status } // terminalCreator is the creator that Rex gives to a terminal block. diff --git a/rex/rex_test.go b/rex/rex_test.go index 1e4ec55..a75b79f 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -84,16 +84,14 @@ func TestAgents(t *testing.T) { Name: "agent", Window: "main", Cwd: "/repo", - App: "pi", - State: rex.StateBlocked, + Status: rex.Status{App: "pi", State: rex.StateBlocked}, }, { Block: "block:cc", Name: "claude-code", Window: "side", Cwd: "/repo", - App: "claude-code", - State: rex.StateWorking, + Status: rex.Status{App: "claude-code", State: rex.StateWorking}, }, } if !slices.Equal(agents, want) { diff --git a/tui/overlay.go b/tui/overlay.go index 6da583e..7d11f16 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -311,9 +311,9 @@ func (m *model) openAgentPicker(agents []rex.Agent) { var items []pickItem armed := 0 for i, a := range agents { - detail := a.App + " · " + string(a.State) - if a.State == rex.StateBlocked { - detail = a.App + " · at a prompt" + detail := a.Status.App + " · " + string(a.Status.State) + if a.Status.State == rex.StateBlocked { + detail = a.Status.App + " · at a prompt" } if a.Window != "" { detail += " · " + a.Window diff --git a/tui/send.go b/tui/send.go index 850a685..faf675d 100644 --- a/tui/send.go +++ b/tui/send.go @@ -25,7 +25,7 @@ func (m *model) listAgents(msg agentsMsg) tea.Cmd { c, ctx := m.rex, m.ctx return func() tea.Msg { agents, err := c.Agents(ctx) - isRexdiff := func(a rex.Agent) bool { return a.App == appName } + isRexdiff := func(a rex.Agent) bool { return a.Status.App == appName } agents = slices.DeleteFunc(agents, isRexdiff) msg.agents, msg.err = agents, err return msg @@ -223,7 +223,12 @@ func (m *model) endTurn() { // review to the agent, or lets the user pick one. func (m *model) onAgents(msg agentsMsg) tea.Cmd { for _, a := range msg.agents { - *m.agent(a.Block) = agentState{app: a.App, state: a.State, cwd: a.Cwd, hasCwd: true} + *m.agent(a.Block) = agentState{ + app: a.Status.App, + state: a.Status.State, + cwd: a.Cwd, + hasCwd: true, + } } switch { case msg.err == nil: diff --git a/tui/tui_test.go b/tui/tui_test.go index d75d2ba..7cf5b2a 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -131,7 +131,7 @@ func status(block, app string, state rex.State) eventMsg { // sample returns the first list of the agents: the agent app in block, // in dir, at rest. func sample(block, app, dir string) agentsMsg { - a := rex.Agent{Block: block, Cwd: dir, App: app, State: rex.StateIdle} + a := rex.Agent{Block: block, Cwd: dir, Status: rex.Status{App: app, State: rex.StateIdle}} return agentsMsg{agents: []rex.Agent{a}} } diff --git a/tui/turn_test.go b/tui/turn_test.go index ee9c393..cc5032a 100644 --- a/tui/turn_test.go +++ b/tui/turn_test.go @@ -31,7 +31,7 @@ func TestTurnNeedsSample(t *testing.T) { } // The first list sees pi at work. That is no start. working := sample("p", "pi", dir) - working.agents[0].State = rex.StateWorking + working.agents[0].Status.State = rex.StateWorking m = step(t, m, working) if m.pending != nil { t.Errorf("pending %+v after a first list at work, want none", m.pending) @@ -106,8 +106,8 @@ func TestTurnPromotesOnChange(t *testing.T) { func TestTurnTwoAgents(t *testing.T) { m, dir := turnModel(t) m = step(t, m, agentsMsg{agents: []rex.Agent{ - {Block: "p", Cwd: dir, App: "pi", State: rex.StateIdle}, - {Block: "q", Cwd: dir, App: "cc", State: rex.StateIdle}, + {Block: "p", Cwd: dir, Status: rex.Status{App: "pi", State: rex.StateIdle}}, + {Block: "q", Cwd: dir, Status: rex.Status{App: "cc", State: rex.StateIdle}}, }}) m = step(t, m, status("p", "pi", rex.StateWorking)) m = step(t, m, status("q", "cc", rex.StateWorking)) From 81e2925a6142765c6bfe40d98b2d35212f117fb3 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 16:56:02 +0100 Subject: [PATCH 007/119] feat(rex,turn,tui): report a reconnect of rex events as a gap Watch sends an Event with Reconnect when it starts rex events again. tui then calls Tracker.Gap, forgets the agents, and lists them again, as herdr-reviewr does after a lost connection. turn exports only Tracker: Observe takes the states of the agents, and the fold and its states are internal. --- internal/turn/turn.go | 69 +++++++++++++++++++++----------------- internal/turn/turn_test.go | 64 ++++++++++++++++++----------------- rex/rex.go | 18 +++++++--- rex/rex_test.go | 25 ++++++++++++++ tui/model.go | 2 +- tui/send.go | 16 ++++++--- tui/turn_test.go | 18 ++++++++++ 7 files changed, 141 insertions(+), 71 deletions(-) diff --git a/internal/turn/turn.go b/internal/turn/turn.go index e550e47..124952a 100644 --- a/internal/turn/turn.go +++ b/internal/turn/turn.go @@ -1,66 +1,73 @@ -// Package turn finds the turns of the agents in a repository. A turn -// starts when the repository goes from rest to work. It ends when the -// repository rests again. The rules come from herdr-reviewr. +// Package turn finds the start and the end of each turn of the agents in +// a repository, from the states of the agents. A turn starts when the +// agents go from rest to work. It ends when they rest again. The rules +// come from herdr-reviewr. package turn import "github.com/rednafi/rexdiff/rex" -// State is the work state of a repository. Fold makes it from the states +// state is the work state of a repository. fold makes it from the states // of all the agents in the repository. -type State int +type state int const ( - // Resting tells that each agent rests, or that there is no agent. - Resting State = iota - // Working tells that at least one agent works. - Working - // Held tells that no agent works, but one does not rest. For example, + // resting tells that each agent rests, or that there is no agent. + resting state = iota + // working tells that at least one agent works. + working + // held tells that no agent works, but one does not rest. For example, // it waits at a prompt. A turn that is open stays open. - Held + held ) -// resting tells if s is a state between turns. A blocked agent and an +// rests tells if s is a state between turns. A blocked agent and an // unknown state are in the middle of a turn. -func resting(s rex.State) bool { return s == rex.StateIdle || s == rex.StateDone } +func rests(s rex.State) bool { return s == rex.StateIdle || s == rex.StateDone } -// Fold returns the state of a repository whose agents are in the states +// fold returns the state of a repository whose agents are in the states // states. One working agent makes the repository work. -func Fold(states ...rex.State) State { - held := false +func fold(states ...rex.State) state { + isHeld := false for _, s := range states { if s == rex.StateWorking { - return Working + return working } - held = held || !resting(s) + isHeld = isHeld || !rests(s) } - if held { - return Held + if isHeld { + return held } - return Resting + return resting } // Tracker finds the start and the end of each turn in a series of states. // The zero Tracker is ready to use. type Tracker struct { - // prevResting tells if the last state is Resting. It is false at + // prevResting tells if the last state is resting. It is false at // first, so the first state starts no turn. prevResting bool // worked tells if the repository works after its last rest. An end - // can come through Held, but a start cannot. Thus the two edges keep + // can come through held, but a start cannot. Thus the two edges keep // different memories. worked bool } -// Observe takes the next state. A turn starts when s is Working after -// Resting. A turn ends when s is Resting after work, also through Held. -func (t *Tracker) Observe(s State) (started, ended bool) { - started = s == Working && t.prevResting - ended = t.worked && s == Resting - t.prevResting = s == Resting +// Observe takes the states of all the agents in the repository at one +// time. A turn starts when one agent works after all rest. A turn ends +// when all rest after work, also through a prompt. +func (t *Tracker) Observe(states ...rex.State) (started, ended bool) { + return t.observe(fold(states...)) +} + +// observe takes the next state of the repository. +func (t *Tracker) observe(s state) (started, ended bool) { + started = s == working && t.prevResting + ended = t.worked && s == resting + t.prevResting = s == resting switch s { - case Working: + case working: t.worked = true - case Resting: + case resting: t.worked = false } return started, ended diff --git a/internal/turn/turn_test.go b/internal/turn/turn_test.go index 37df7c2..76f2f71 100644 --- a/internal/turn/turn_test.go +++ b/internal/turn/turn_test.go @@ -13,27 +13,27 @@ func TestFold(t *testing.T) { tests := []struct { name string states []rex.State - want State + want state }{ // No agent rests, so a fresh pane tracks the next turn it sees. - {"no agent", nil, Resting}, - {"idle and working", []rex.State{rex.StateIdle, rex.StateWorking}, Working}, - {"blocked and working", []rex.State{rex.StateBlocked, rex.StateWorking}, Working}, - {"idle and done", []rex.State{rex.StateIdle, rex.StateDone}, Resting}, - {"blocked and idle", []rex.State{rex.StateBlocked, rex.StateIdle}, Held}, + {"no agent", nil, resting}, + {"idle and working", []rex.State{rex.StateIdle, rex.StateWorking}, working}, + {"blocked and working", []rex.State{rex.StateBlocked, rex.StateWorking}, working}, + {"idle and done", []rex.State{rex.StateIdle, rex.StateDone}, resting}, + {"blocked and idle", []rex.State{rex.StateBlocked, rex.StateIdle}, held}, // An unknown state never rests, so it starts no turn. - {"unknown", []rex.State{"compacting"}, Held}, + {"unknown", []rex.State{"compacting"}, held}, } for _, tt := range tests { - if got := Fold(tt.states...); got != tt.want { - t.Errorf("%s: Fold(%q) = %v, want %v", tt.name, tt.states, got, tt.want) + if got := fold(tt.states...); got != tt.want { + t.Errorf("%s: fold(%q) = %v, want %v", tt.name, tt.states, got, tt.want) } } } // step is one state for a Tracker and the edges that it gives. type step struct { - s State + s state started, ended bool } @@ -42,7 +42,7 @@ func run(t *testing.T, steps ...step) { t.Helper() var tr Tracker for i, st := range steps { - started, ended := tr.Observe(st.s) + started, ended := tr.observe(st.s) if started != st.started || ended != st.ended { t.Errorf("step %d (%v): started %v, ended %v; want %v, %v", i, st.s, started, ended, st.started, st.ended) @@ -51,55 +51,59 @@ func run(t *testing.T, steps ...step) { } func TestEmptyRepoStartsOnFirstWorker(t *testing.T) { - run(t, step{Fold(), false, false}, step{Fold(rex.StateWorking), true, false}) + var tr Tracker + tr.Observe() + if started, _ := tr.Observe(rex.StateWorking); !started { + t.Error("the first worker after no agent starts no turn") + } } func TestStartAfterRest(t *testing.T) { // The first state never starts a turn. - run(t, step{Resting, false, false}, step{Working, true, false}) + run(t, step{resting, false, false}, step{working, true, false}) } func TestHeldBackToWorkContinues(t *testing.T) { // A prompt in the middle of a turn does not start another turn. run(t, - step{Resting, false, false}, - step{Working, true, false}, - step{Held, false, false}, - step{Working, false, false}, + step{resting, false, false}, + step{working, true, false}, + step{held, false, false}, + step{working, false, false}, ) } func TestEndOnlyAfterWork(t *testing.T) { run(t, - step{Resting, false, false}, // no work before, so no end - step{Working, true, false}, // a start is never an end - step{Held, false, false}, // a pause, not an end - step{Working, false, false}, - step{Resting, false, true}, + step{resting, false, false}, // no work before, so no end + step{working, true, false}, // a start is never an end + step{held, false, false}, // a pause, not an end + step{working, false, false}, + step{resting, false, true}, ) } func TestEndThroughHeld(t *testing.T) { // The prompt keeps the turn open. A rest after it ends the turn once. run(t, - step{Resting, false, false}, - step{Working, true, false}, - step{Held, false, false}, - step{Resting, false, true}, - step{Resting, false, false}, + step{resting, false, false}, + step{working, true, false}, + step{held, false, false}, + step{resting, false, true}, + step{resting, false, false}, ) } func TestLoneFirstWorkingStartsNothing(t *testing.T) { // The start of this turn is not seen. - run(t, step{Working, false, false}) + run(t, step{working, false, false}) } func TestGap(t *testing.T) { var tr Tracker - tr.Observe(Resting) + tr.Observe(rex.StateIdle) tr.Gap() - if started, _ := tr.Observe(Working); started { + if started, _ := tr.Observe(rex.StateWorking); started { t.Error("the first state after a gap starts a turn") } } diff --git a/rex/rex.go b/rex/rex.go index 073f194..65c048b 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -377,13 +377,16 @@ func ReloadConfig(ctx context.Context) (string, error) { return string(out), err } -// Event is a change to a block in the session. +// Event is a change to a block in the session, or a reconnect. type Event struct { Block string // the ID of the block Closed bool // true if the block closed // Status is the new status of the program in the block. If the program // removes its status, Status is the zero Status. Status Status + // Reconnect is true if Watch starts rex again. The events between the + // two runs of rex are lost. A Reconnect event has no block. + Reconnect bool } const ( @@ -395,10 +398,11 @@ const ( // Watch calls fn for each event in the session, from one goroutine. It // runs "rex events" to get the events. If rex stops, Watch starts it again -// after 2 seconds. Watch returns the error of ctx when ctx is done. +// after 2 seconds. Then it calls fn with a Reconnect event before the +// next events. Watch returns the error of ctx when ctx is done. func (c *Client) Watch(ctx context.Context, fn func(Event)) error { - for { - c.watchOnce(ctx, fn) + for again := false; ; again = true { + c.watchOnce(ctx, again, fn) select { case <-ctx.Done(): return ctx.Err() @@ -408,12 +412,16 @@ func (c *Client) Watch(ctx context.Context, fn func(Event)) error { } // watchOnce runs "rex events" and calls fn for each event until rex stops. -func (c *Client) watchOnce(ctx context.Context, fn func(Event)) { +// If again is true, the first event is a Reconnect event. +func (c *Client) watchOnce(ctx context.Context, again bool, fn func(Event)) { cmd := c.command(ctx, "events", "-s", c.session, "--json") out, err := cmd.StdoutPipe() if err != nil || cmd.Start() != nil { return } + if again { + fn(Event{Reconnect: true}) + } lines := bufio.NewScanner(out) lines.Buffer(make([]byte, maxEventLine), maxEventLine) for lines.Scan() { diff --git a/rex/rex_test.go b/rex/rex_test.go index a75b79f..c135f94 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -193,6 +193,31 @@ func TestWatch(t *testing.T) { } } +// TestWatchReconnect checks that Watch reports a reconnect after it starts +// rex again. +func TestWatchReconnect(t *testing.T) { + c, dir := fakeRex(t) + line := `{"type":"session_event","payload":{"event":{"type":"block_closed",` + + `"payload":{"block_id":"block:pi"}}}}` + path := filepath.Join(dir, "events") + if err := os.WriteFile(path, []byte(line+"\n"), 0o644); err != nil { + t.Fatal(err) + } + closed := rex.Event{Block: "block:pi", Closed: true} + want := []rex.Event{closed, {Reconnect: true}, closed} + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) + defer cancel() + var got []rex.Event + c.Watch(ctx, func(e rex.Event) { + if got = append(got, e); len(got) == len(want) { + cancel() + } + }) + if !slices.Equal(got, want) { + t.Errorf("events got:\n%+v\nwant:\n%+v", got, want) + } +} + // TestFromEnv checks that FromEnv uses the environment that Rex sets. func TestFromEnv(t *testing.T) { t.Setenv("REX_SESSION", "") diff --git a/tui/model.go b/tui/model.go index 7679e9d..ac55df5 100644 --- a/tui/model.go +++ b/tui/model.go @@ -610,7 +610,7 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { case copiedMsg: m.onCopied(msg) case eventMsg: - m.onEvent(rex.Event(msg)) + cmd = m.onEvent(rex.Event(msg)) case prMsg: cmd = m.onPR(msg) case grepMsg: diff --git a/tui/send.go b/tui/send.go index faf675d..ef642ff 100644 --- a/tui/send.go +++ b/tui/send.go @@ -10,7 +10,6 @@ import ( tea "charm.land/bubbletea/v2" "github.com/rednafi/rexdiff/internal/clipboard" - "github.com/rednafi/rexdiff/internal/turn" "github.com/rednafi/rexdiff/rex" ) @@ -48,8 +47,16 @@ func (m *model) agent(block string) *agentState { } // onEvent keeps the state of the agent in the block of e, and follows the -// turns. -func (m *model) onEvent(e rex.Event) { +// turns. After a reconnect, it forgets the agents and lists them again, +// as herdr-reviewr does after a lost connection. Nobody sees the agents +// in the gap, so the next state starts no turn. +func (m *model) onEvent(e rex.Event) tea.Cmd { + if e.Reconnect { + m.tracker.Gap() + clear(m.agents) + m.sampled = false + return m.listAgents(agentsMsg{}) + } if e.Closed { delete(m.agents, e.Block) } else { @@ -59,6 +66,7 @@ func (m *model) onEvent(e rex.Event) { a.app, a.state = app, state } m.observeTurn() + return nil } // member is an agent that works in the repository. @@ -143,7 +151,7 @@ func (m *model) observeTurn() { for i, a := range ms { states[i] = a.state } - started, ended := m.tracker.Observe(turn.Fold(states...)) + started, ended := m.tracker.Observe(states...) if started { m.startTurn(ms) } diff --git a/tui/turn_test.go b/tui/turn_test.go index cc5032a..4f0b19c 100644 --- a/tui/turn_test.go +++ b/tui/turn_test.go @@ -38,6 +38,24 @@ func TestTurnNeedsSample(t *testing.T) { } } +// TestTurnReconnect checks that a reconnect of rex events forgets the +// agents and lists them again. A list at work after the gap starts no +// turn, because the start is not seen. +func TestTurnReconnect(t *testing.T) { + m, dir := turnModel(t) + next, cmd := m.Update(eventMsg{Reconnect: true}) + m = *next.(*model) + if cmd == nil || m.sampled || len(m.agents) != 0 { + t.Fatalf("after a reconnect: cmd %v, sampled %v, agents %d; want a list, no agents", + cmd != nil, m.sampled, len(m.agents)) + } + working := sample("p", "pi", dir) + working.agents[0].Status.State = rex.StateWorking + if m = step(t, m, working); m.pending != nil { + t.Errorf("pending %+v after a list at work after a gap, want none", m.pending) + } +} + // TestTurnWithoutChange checks that a turn that changes no file does not // become the last turn. func TestTurnWithoutChange(t *testing.T) { From 4d141e01ee51b99f3b1eed41060b89863103fd95 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 16:57:55 +0100 Subject: [PATCH 008/119] docs(vcs,rex,update,internal): fix unclear doc comments Snapshot, Watcher, Owns, ReadFile, SavedBase, SavedTurn, and Contains tell what they do and return. The rex states name no consumer. Install tells why it ignores a cancel. editor.Program and search.CodeLimit have plain docs. --- internal/editor/editor.go | 6 +++--- internal/search/search.go | 6 ++++-- rex/rex.go | 4 ++-- update/update.go | 5 +++-- vcs/refs.go | 9 +++++---- vcs/repo.go | 20 +++++++++++--------- vcs/watch.go | 8 ++++---- 7 files changed, 32 insertions(+), 26 deletions(-) diff --git a/internal/editor/editor.go b/internal/editor/editor.go index f136b14..d2eeef3 100644 --- a/internal/editor/editor.go +++ b/internal/editor/editor.go @@ -31,9 +31,9 @@ func Template(template, file string, line int) Command { return Command{script, program(template), dialectOf(template).window} } -// Program returns the command that opens file at line with command, the -// command of an editor program such as the value of $EDITOR. Program adds -// file and line in the form that the editor expects. +// Program returns the command that opens file at line in an editor. +// command starts the editor, for example the value of $EDITOR. Program +// adds file and line in the form that the editor expects. func Program(command, file string, line int) Command { d := dialectOf(command) n, f := strconv.Itoa(line), ShellQuote(file) diff --git a/internal/search/search.go b/internal/search/search.go index 816320a..f99332d 100644 --- a/internal/search/search.go +++ b/internal/search/search.go @@ -8,10 +8,12 @@ import ( "github.com/sahilm/fuzzy" ) -// The search shows at most these numbers of results. A "… more" row -// tells that there are others. +// The limits of the results. A "… more" row tells that there are others. const ( + // FileLimit is the largest number of files that the search shows. FileLimit = 50 + // CodeLimit is the largest number of matching lines that the search + // shows. CodeLimit = 200 ) diff --git a/rex/rex.go b/rex/rex.go index 65c048b..ab264f0 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -132,8 +132,8 @@ type Status struct { // sends no status. type State string -// The states of the OSC 7501 protocol that rexdiff uses. A State can have -// other values, for example "error". +// The known states of the OSC 7501 protocol. A State can have other +// values, for example "error". const ( StateIdle State = "idle" // waits for the next instruction of the user StateWorking State = "working" // does a task diff --git a/update/update.go b/update/update.go index baa9370..2c1059f 100644 --- a/update/update.go +++ b/update/update.go @@ -162,8 +162,9 @@ func (u *Updater) Latest(ctx context.Context) (Release, bool, error) { // Install installs the release r. Then it checks that the binary of rexdiff // has the version of r. Install does not stop the running rexdiff. Install -// ignores a cancel of ctx, because a brew that stops early can leave a broken -// cask. Install stops after five minutes. +// uses the values of ctx, but ignores its cancel. An install that stops +// early can leave a broken cask or binary. Install stops after five +// minutes. func (u *Updater) Install(ctx context.Context, r Release) error { ctx, cancel := context.WithTimeout(context.WithoutCancel(ctx), installTimeout) defer cancel() diff --git a/vcs/refs.go b/vcs/refs.go index 704628e..dfc2a37 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -268,8 +268,9 @@ const ( turnRef = "refs/worktree/rexdiff/turn-base" ) -// SavedBase returns the base that [Repo.SaveBase] keeps for this worktree, -// or "" if there is none. +// SavedBase returns the base that [Repo.SaveBase] keeps for this worktree. +// It returns "" if no base is saved, or if the saved value is not a ref +// name. func (r *Repo) SavedBase(ctx context.Context) string { out, err := r.run(ctx, nil, "cat-file", "blob", baseRef) name := strings.TrimSpace(out) @@ -304,8 +305,8 @@ func (r *Repo) SaveBase(ctx context.Context, name string) error { return err } -// SavedTurn returns the tree that [Repo.SaveTurn] keeps for this worktree, -// or "" if there is none. +// SavedTurn returns the tree that [Repo.SaveTurn] keeps for this worktree. +// It returns "" if no tree is saved, or if git cannot resolve the ref. func (r *Repo) SavedTurn(ctx context.Context) string { tree, err := r.Resolve(ctx, turnRef) if err != nil { diff --git a/vcs/repo.go b/vcs/repo.go index 4280b69..687ccbb 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -209,10 +209,10 @@ func (r *Repo) MergeBaseCommit(ctx context.Context, base string) (string, error) } // Snapshot writes the working tree as a tree object and returns its ID. -// The tree has the tracked and the untracked files. It does not have -// ignored files, or files that git cannot add, for example a git repository -// with no commit. Snapshot uses a temporary index, so the real -// index does not change. +// The tree has the tracked and the untracked files. It does not have the +// ignored files. It also does not have the files that git cannot add, for +// example a nested repository with no commit. Snapshot uses a temporary +// index, so the real index does not change. func (r *Repo) Snapshot(ctx context.Context) (string, error) { // git does not read an empty index file, but it reads a missing one // as empty. A new repository has no index. @@ -473,8 +473,9 @@ func tooBig(versions ...string) bool { // ReadFile reads the file at path in the working tree. The path is relative // to the root. ReadFile reads only a regular file in the root, also through -// a symbolic link. If the file is binary or too big, ReadFile returns -// ErrBinary or ErrTooBig. +// a symbolic link. For another file, for example a directory or a named +// pipe, it returns an error. If the file is binary or too big, ReadFile +// returns ErrBinary or ErrTooBig. func (r *Repo) ReadFile(path string) (string, error) { root, err := os.OpenRoot(r.root) if err != nil { @@ -508,6 +509,7 @@ func (r *Repo) ReadFile(path string) (string, error) { // Contains reports whether dir is the root or a directory below it. It // follows symbolic links, so /tmp and /private/tmp on macOS are the same. +// Contains does not run git, thus it does not see a nested repository. func (r *Repo) Contains(dir string) bool { root := evalSymlinks(r.root) dir = evalSymlinks(dir) @@ -515,9 +517,9 @@ func (r *Repo) Contains(dir string) bool { } // Owns reports whether dir is in the working tree of r, and not in another -// repository or worktree below the root. As in herdr-reviewr, only an -// absolute dir can be in it. Owns runs git only for a dir below the root. -// An error tells that git cannot run, so the answer is not known. +// repository or worktree below the root. As in herdr-reviewr, a relative +// dir is not in it. Owns runs git only if [Repo.Contains] reports true. +// An error means that git cannot run, and the answer is not known. func (r *Repo) Owns(ctx context.Context, dir string) (bool, error) { if !filepath.IsAbs(dir) || !r.Contains(dir) { return false, nil diff --git a/vcs/watch.go b/vcs/watch.go index 95ef1c3..6bbd465 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -15,10 +15,10 @@ import ( // use less than 1/21 of a core. herdr-reviewr uses the same factor. const budgetFactor = 20 -// Watcher tells, without a git process, if the working tree or the refs -// can have changed. It compares the file status of the files that git -// lists, of their directories, and of the git files. It runs git only -// after a directory or a git file changes. +// Watcher tells if the working tree or the refs can have changed. It +// compares the file status of the files that git lists, of their +// directories, and of the git files. While nothing changes, it runs no +// git process. After a change, it runs git to list the files again. // // A Watcher does not see a change of the global core.excludesFile, or a // copy that keeps the size and the modification time of a file. From 3877713dd38a6079c9bd9e6e58931f0effc2d9d9 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:07:10 +0100 Subject: [PATCH 009/119] fix(diff): save comments on files that are not UTF-8 encoding/json/v2 rejects invalid UTF-8, so a comment on a Latin-1 line or path broke the resume file. Such bytes become U+FFFD. --- diff/comment.go | 6 ++++-- diff/comment_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/diff/comment.go b/diff/comment.go index 259c4f2..5cb1132 100644 --- a/diff/comment.go +++ b/diff/comment.go @@ -2,6 +2,7 @@ package diff import ( "cmp" + "encoding/json/jsontext" "encoding/json/v2" "fmt" "slices" @@ -189,7 +190,8 @@ type savedComments struct { // MarshalJSON encodes the comments with their code and their diff rows, // so that UnmarshalJSON restores the same comments, for example after a -// restart. +// restart. Bytes that are not UTF-8, for example in a Latin-1 file, +// become U+FFFD. func (cs *Comments) MarshalJSON() ([]byte, error) { saved := savedComments{Last: cs.last} for _, c := range cs.items { @@ -199,7 +201,7 @@ func (cs *Comments) MarshalJSON() ([]byte, error) { Code: c.code, Snippet: c.snippet, }) } - return json.Marshal(saved) + return json.Marshal(saved, jsontext.AllowInvalidUTF8(true)) } // UnmarshalJSON reads comments that MarshalJSON wrote. diff --git a/diff/comment_test.go b/diff/comment_test.go index a58dc96..82ba5d6 100644 --- a/diff/comment_test.go +++ b/diff/comment_test.go @@ -1,6 +1,7 @@ package diff_test import ( + "encoding/json/v2" "os" "os/exec" "path/filepath" @@ -243,3 +244,30 @@ func TestCommentsJSON(t *testing.T) { t.Errorf("comment of an old file = %+v, want lines 2-3 on a diff", c) } } + +// TestCommentsJSONLatin1 checks that a comment on a file that is not UTF-8, +// for example a Latin-1 file, survives a JSON round trip. The bytes that +// are not UTF-8 become U+FFFD. +func TestCommentsJSONLatin1(t *testing.T) { + const path = "caf\xe9.txt" + var cs diff.Comments + c := commentOn(path, diff.SideNew, "caf\xe9 cr\xe8me\n", 1, 1) + c.Text = "na\xefve" + cs.Add(c) + b, err := json.Marshal(&cs) + if err != nil { + t.Fatalf("Marshal: %v", err) + } + var back diff.Comments + if err := json.Unmarshal(b, &back); err != nil { + t.Fatalf("Unmarshal: %v", err) + } + got := back.Find(1) + if got == nil { + t.Fatal("Find(1) = nil after a round trip") + } + want := "caf\uFFFD.txt:1\n caf\uFFFD cr\uFFFDme\nna\uFFFDve" + if r := review(*got); r != want { + t.Errorf("Review after a round trip = %q, want %q", r, want) + } +} From a41ba11f709a0a8f8be5eb87c243b94d7748264f Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:09:00 +0100 Subject: [PATCH 010/119] fix(diff): walk grapheme clusters in Cell A cluster of several code points, for example an emoji with a joiner or a flag, takes one width on the screen. Cell counted the width of each rune, so it gave the wrong rune after such a cluster. --- diff/cell.go | 16 ++++++++++------ diff/cell_test.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/diff/cell.go b/diff/cell.go index 67fe577..342c16c 100644 --- a/diff/cell.go +++ b/diff/cell.go @@ -2,6 +2,7 @@ package diff import ( "strings" + "unicode/utf8" "github.com/charmbracelet/x/ansi" @@ -88,20 +89,23 @@ func expand(line string) string { return diffview.Escape(strings.ReplaceAll(line, "\t", strings.Repeat(" ", tabWidth))) } -// runeAt returns the index of the rune of line that covers column col. -// It returns the number of runes if col is past the end. +// runeAt returns the index of the first rune of the grapheme cluster of +// line that covers column col. It returns the number of runes if col is +// past the end. func runeAt(line string, col int) int { i, c := 0, 0 - for _, r := range line { + for line != "" { + g, _ := ansi.FirstGraphemeCluster(line, ansi.GraphemeWidth) w := tabWidth - if r != '\t' { - w = ansi.StringWidth(diffview.Escape(string(r))) + if g != "\t" { + w = ansi.StringWidth(diffview.Escape(g)) } if col < c+w { return i } c += w - i++ + i += utf8.RuneCountInString(g) + line = line[len(g):] } return i } diff --git a/diff/cell_test.go b/diff/cell_test.go index 6d911b5..8b5e85a 100644 --- a/diff/cell_test.go +++ b/diff/cell_test.go @@ -152,3 +152,34 @@ func TestCellMatchesScreen(t *testing.T) { } } } + +// TestCellGraphemes checks Cell after grapheme clusters of more than one +// code point, in a cut line and in a wrapped line. +func TestCellGraphemes(t *testing.T) { + for _, g := range []string{"❤️", "👨‍👩‍👧", "🇺🇸"} { + line := strings.Repeat(g+"x ", 20) + src := []rune(line) + for _, o := range []diff.Options{{Width: 200}, {Width: 40, Wrap: true}} { + d := diff.RenderFile("x.txt", line+"\n", o) + found := 0 + for i, l := range d.Lines { + plain := ansi.Strip(l) + for k := range len(plain) { + if plain[k] != 'x' { + continue + } + x := ansi.StringWidth(plain[:k]) + _, _, char, ok := d.Cell(i, x) + if !ok || char >= len(src) || src[char] != 'x' { + t.Errorf("%q wrap %v: Cell(%d, %d) = %d, %v; want the index of an x", + g, o.Wrap, i, x, char, ok) + } + found++ + } + } + if found != 20 { + t.Errorf("%q wrap %v: %d x cells, want 20", g, o.Wrap, found) + } + } + } +} From cb9fb1fe64574e163308fc21f546237d9c1fb73a Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:11:10 +0100 Subject: [PATCH 011/119] fix(diff,diffview): move the content by the offset in a wide character A sideways scroll that starts inside a wide character kept or dropped the whole character, so Cell was one cell off. CutLeft puts a space in place of the cut character, in Render and in RenderFile. --- diff/cell_test.go | 26 ++++++++++++++++++++++++++ diff/file.go | 4 ++-- internal/diffview/diffview.go | 2 +- internal/diffview/util.go | 13 +++++++++++++ internal/diffview/util_test.go | 23 +++++++++++++++++++++++ 5 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 internal/diffview/util_test.go diff --git a/diff/cell_test.go b/diff/cell_test.go index 8b5e85a..7c6188b 100644 --- a/diff/cell_test.go +++ b/diff/cell_test.go @@ -183,3 +183,29 @@ func TestCellGraphemes(t *testing.T) { } } } + +// TestCellOffsetInWideChar checks Cell when the offset cuts a wide +// character. The content moves by the offset, so Cell agrees with the +// screen. +func TestCellOffsetInWideChar(t *testing.T) { + const line = "日本x" + for _, off := range []int{1, 3} { + o := diff.Options{Width: 40, Offset: off} + for name, d := range map[string]*diff.Diff{ + "diff": diff.Render("x.txt", "", line+"\n", o), + "file": diff.RenderFile("x.txt", line+"\n", o), + } { + row := len(d.Rows) - 1 + for char, needle := range []rune(line) { + if !strings.ContainsRune(ansi.Strip(d.Lines[row]), needle) { + continue + } + x := column(t, d, row, string(needle), false) + if _, _, got, ok := d.Cell(row, x); !ok || got != char { + t.Errorf("%s offset %d: Cell on %q = %d, %v; want %d, true", + name, off, needle, got, ok, char) + } + } + } + } +} diff --git a/diff/file.go b/diff/file.go index 049e49c..754a9d4 100644 --- a/diff/file.go +++ b/diff/file.go @@ -74,9 +74,9 @@ func fileLineParts(l string, code int, o Options) []string { wrapped := ansi.Hardwrap(lipgloss.Wrap(l, code, ""), code, true) return strings.Split(wrapped, "\n") case o.Width > 0: - return []string{ansi.Truncate(ansi.TruncateLeft(l, o.Offset, ""), code, "…")} + return []string{ansi.Truncate(diffview.CutLeft(l, o.Offset), code, "…")} } - return []string{ansi.TruncateLeft(l, o.Offset, "")} + return []string{diffview.CutLeft(l, o.Offset)} } // fileColours returns highlight(path, src), and keeps it for the next diff --git a/internal/diffview/diffview.go b/internal/diffview/diffview.go index a9c54fe..7fda79e 100644 --- a/internal/diffview/diffview.go +++ b/internal/diffview/diffview.go @@ -521,7 +521,7 @@ func (v *View) codeLines( parts[i] = ansi.Truncate(p, w, "") } } else { - code = ansi.GraphemeWidth.Cut(code, v.xOffset, len(code)) + code = CutLeft(code, v.xOffset) parts[0] = ansi.Truncate(code, width, ellipsis) if v.xOffset > 0 && strings.TrimSpace(parts[0]) != "" { sym = strings.TrimSuffix(sym, " ") + ellipsis diff --git a/internal/diffview/util.go b/internal/diffview/util.go index 188f3b5..dcb0f64 100644 --- a/internal/diffview/util.go +++ b/internal/diffview/util.go @@ -24,3 +24,16 @@ func btoi(b bool) int { } return 0 } + +// CutLeft removes the first n cells of s, which can have ANSI codes. If +// the cut is inside a wide character, a space takes the place of the rest +// of that character. Thus the text after the cut moves by n cells. +func CutLeft(s string, n int) string { + want := max(ansi.StringWidth(s)-n, 0) + cut := ansi.TruncateLeft(s, n, "") + for ansi.StringWidth(cut) > want { + n++ + cut = ansi.TruncateLeft(s, n, "") + } + return strings.Repeat(" ", want-ansi.StringWidth(cut)) + cut +} diff --git a/internal/diffview/util_test.go b/internal/diffview/util_test.go new file mode 100644 index 0000000..9ac8608 --- /dev/null +++ b/internal/diffview/util_test.go @@ -0,0 +1,23 @@ +package diffview + +import "testing" + +func TestCutLeft(t *testing.T) { + tests := []struct { + s string + n int + want string + }{ + {"日本x", 0, "日本x"}, + {"日本x", 1, " 本x"}, + {"日本x", 2, "本x"}, + {"日本x", 3, " x"}, + {"日本x", 9, ""}, + {"\x1b[31m日本\x1b[m", 1, " \x1b[31m本\x1b[m"}, + } + for _, tt := range tests { + if got := CutLeft(tt.s, tt.n); got != tt.want { + t.Errorf("CutLeft(%q, %d) = %q, want %q", tt.s, tt.n, got, tt.want) + } + } +} From 858ccdffefba9962fa2e8dade7c3043ba1de8353 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:13:24 +0100 Subject: [PATCH 012/119] fix(diff,tui): give old resume comments the revision of their scope A state file of v0.2.7 has no anchors, so its comments loaded on the working tree diff. A comment in the commits scope then never showed. SetOldRev gives them the revision of the saved scope. --- diff/comment.go | 15 ++++++++++++++- diff/comment_test.go | 10 ++++++++++ tui/anchor_test.go | 26 ++++++++++++++++++++++++++ tui/resume.go | 1 + 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/diff/comment.go b/diff/comment.go index 5cb1132..c0d5787 100644 --- a/diff/comment.go +++ b/diff/comment.go @@ -28,6 +28,8 @@ type Comment struct { code []string // the text of the lines Start to End snippet []string // the rows as unified diff lines, or empty to use code + // noAnchor is true for a comment from a file with no anchors. + noAnchor bool } // Anchor is the view that a comment is made in. A comment shows only in a @@ -114,6 +116,17 @@ func (cs *Comments) All() []*Comment { return all } +// SetOldRev sets the Rev of each comment that [Comments.UnmarshalJSON] +// reads from the file of an older rexdiff. Such a file has no anchors, and +// its comments are on the diff of the scope that the file saves. +func (cs *Comments) SetOldRev(rev string) { + for _, c := range cs.items { + if c.noAnchor { + c.Anchor.Rev, c.noAnchor = rev, false + } + } +} + // Find returns the comment with the given ID, or nil. func (cs *Comments) Find(id int) *Comment { for _, c := range cs.items { @@ -216,7 +229,7 @@ func (cs *Comments) UnmarshalJSON(b []byte) error { cs.items = append(cs.items, &Comment{ ID: c.ID, Path: c.Path, Side: c.Side, Start: c.Start, End: c.End, Text: c.Text, Anchor: Anchor{InDiff: inDiff, Rev: c.Rev}, - code: c.Code, snippet: c.Snippet, + code: c.Code, snippet: c.Snippet, noAnchor: c.InDiff == nil, }) } return nil diff --git a/diff/comment_test.go b/diff/comment_test.go index 82ba5d6..fc3433c 100644 --- a/diff/comment_test.go +++ b/diff/comment_test.go @@ -243,6 +243,16 @@ func TestCommentsJSON(t *testing.T) { if c == nil || c.Anchor != (diff.Anchor{InDiff: true}) || c.Start != 2 { t.Errorf("comment of an old file = %+v, want lines 2-3 on a diff", c) } + back.SetOldRev("x..y") + cs2.SetOldRev("a..b") + for i, c := range back.All() { + if c.Anchor != anchors[i] { + t.Errorf("comment %d after SetOldRev: anchor %+v, want %+v", i, c.Anchor, anchors[i]) + } + } + if want := (diff.Anchor{InDiff: true, Rev: "a..b"}); c.Anchor != want { + t.Errorf("comment of an old file after SetOldRev: anchor %+v, want %+v", c.Anchor, want) + } } // TestCommentsJSONLatin1 checks that a comment on a file that is not UTF-8, diff --git a/tui/anchor_test.go b/tui/anchor_test.go index fdd648c..6e832ee 100644 --- a/tui/anchor_test.go +++ b/tui/anchor_test.go @@ -120,3 +120,29 @@ func (m *model) fileIndex(path string) int { } return -1 } + +// TestResumeOldComments checks the comments of a state file of v0.2.7, +// which has no anchors. A comment gets the revision of the saved scope, so +// that a comment in the commits scope still shows. +func TestResumeOldComments(t *testing.T) { + m, _ := newTestModel(t) + path := filepath.Join(t.TempDir(), "state.json") + state := `{"tab":0,"scope":"commits","from":"aaa","to":"bbb",` + + `"comments":{"last":1,"items":[{"id":1,"path":"a.go","side":1,` + + `"start":2,"end":2,"text":"x","stale":false,"code":["b"],"snippet":null}]}}` + if err := os.WriteFile(path, []byte(state), 0o600); err != nil { + t.Fatal(err) + } + s, err := loadState(path) + if err != nil { + t.Fatalf("loadState: %v", err) + } + m.restoreSettings(s) + want := diff.Anchor{InDiff: true, Rev: "aaa..bbb"} + if c := m.comments.Find(1); c == nil || c.Anchor != want { + t.Errorf("comment after the restore = %+v, want anchor %+v", c, want) + } + if m.anchor() != want { + t.Errorf("anchor of the view = %+v, want %+v", m.anchor(), want) + } +} diff --git a/tui/resume.go b/tui/resume.go index 7503cdc..b45fe46 100644 --- a/tui/resume.go +++ b/tui/resume.go @@ -150,6 +150,7 @@ func (m *model) restoreSettings(s *savedState) { m.folds = s.Folds if s.Comments != nil { m.comments = *s.Comments + m.comments.SetOldRev(m.diffRev()) } m.lastSent, m.beside = s.LastSent, s.Beside } From a1211bec55774c7ea3369b4caac4690cd5315b11 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:14:14 +0100 Subject: [PATCH 013/119] fix(rexdiff): reject arguments after the repo The flag package stops at the first argument that is not a flag, so flags after the repo and extra arguments were ignored. --- cmd/rexdiff/main.go | 9 +++++++-- cmd/rexdiff/testdata/script/errors.txt | 8 +++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/cmd/rexdiff/main.go b/cmd/rexdiff/main.go index 267e573..a373096 100644 --- a/cmd/rexdiff/main.go +++ b/cmd/rexdiff/main.go @@ -181,9 +181,14 @@ func parseFlags(args []string, stderr io.Writer) (flags, error) { fmt.Fprint(stderr, usage) fs.PrintDefaults() } - err := fs.Parse(args) + if err := fs.Parse(args); err != nil { + return f, err + } + if fs.NArg() > 1 { + return f, fmt.Errorf("unknown argument %s (flags go before the repo)", fs.Arg(1)) + } f.repo = fs.Arg(0) - return f, err + return f, nil } // oneOf returns a flag function that sets *p to a value from allowed. diff --git a/cmd/rexdiff/testdata/script/errors.txt b/cmd/rexdiff/testdata/script/errors.txt index 9426a89..22ab7f4 100644 --- a/cmd/rexdiff/testdata/script/errors.txt +++ b/cmd/rexdiff/testdata/script/errors.txt @@ -19,8 +19,14 @@ stderr '^rexdiff: config: invalid value for layout: expected one of unified, spl exec rexdiff -check -config '{"layout": "split"}' ! stderr . -# rexdiff does not start with bad settings. +# Flags go before the repo. rexdiff takes one repo. exec git init -q repo +! exec rexdiff repo -wrap=false +stderr '^rexdiff: unknown argument -wrap=false \(flags go before the repo\)$' +! exec rexdiff repo other +stderr '^rexdiff: unknown argument other \(flags go before the repo\)$' + +# rexdiff does not start with bad settings. ! exec rexdiff -config '{"layuot": "split"}' repo stderr '^rexdiff: config: unknown key "layuot"$' From f195686b7155fa7918ee88c1d8e3aa8a4f71e276 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:15:35 +0100 Subject: [PATCH 014/119] refactor(diff,search): move Match to the search package The smart case match of the find band belongs with the search, not with the diff API. --- {diff => internal/search}/match.go | 2 +- {diff => internal/search}/match_test.go | 10 +++------- internal/search/search.go | 4 ++-- tui/find.go | 9 +++++---- 4 files changed, 11 insertions(+), 14 deletions(-) rename {diff => internal/search}/match.go (98%) rename {diff => internal/search}/match_test.go (81%) diff --git a/diff/match.go b/internal/search/match.go similarity index 98% rename from diff/match.go rename to internal/search/match.go index ef80d10..ff709cc 100644 --- a/diff/match.go +++ b/internal/search/match.go @@ -1,4 +1,4 @@ -package diff +package search import ( "strings" diff --git a/diff/match_test.go b/internal/search/match_test.go similarity index 81% rename from diff/match_test.go rename to internal/search/match_test.go index cf1e194..6948c04 100644 --- a/diff/match_test.go +++ b/internal/search/match_test.go @@ -1,10 +1,6 @@ -package diff_test +package search -import ( - "testing" - - "github.com/rednafi/rexdiff/diff" -) +import "testing" // TestMatch checks the smart case of herdr-reviewr. func TestMatch(t *testing.T) { @@ -25,7 +21,7 @@ func TestMatch(t *testing.T) { {"ab", "abc", false}, } for _, tt := range tests { - if got := diff.Match(tt.text, tt.query); got != tt.want { + if got := Match(tt.text, tt.query); got != tt.want { t.Errorf("Match(%q, %q) = %v, want %v", tt.text, tt.query, got, tt.want) } } diff --git a/internal/search/search.go b/internal/search/search.go index f99332d..49e0c59 100644 --- a/internal/search/search.go +++ b/internal/search/search.go @@ -1,5 +1,5 @@ -// Package search finds the files of the search screen. The limits come -// from herdr-reviewr. +// Package search finds the files of the search screen, and the lines of +// the find band. The limits and the smart case come from herdr-reviewr. package search import ( diff --git a/tui/find.go b/tui/find.go index 5ca3458..c5bf3b8 100644 --- a/tui/find.go +++ b/tui/find.go @@ -13,6 +13,7 @@ import ( "github.com/charmbracelet/x/ansi" "github.com/rednafi/rexdiff/diff" + "github.com/rednafi/rexdiff/internal/search" ) // findState is the query of the find band. The band is open in modeFind. @@ -126,17 +127,17 @@ func (m *model) findHits(q string) []findHit { case r.Continued: case r.Fold.Lines > 0: for n := r.Fold.New; n < r.Fold.New+r.Fold.Lines; n++ { - if diff.Match(line(new, n), q) { + if search.Match(line(new, n), q) { hits = append(hits, findHit{i, n}) } } case r.Old > 0 || r.New > 0: - if (r.New > 0 && diff.Match(line(new, r.New), q)) || - (r.Old > 0 && diff.Match(line(old, r.Old), q)) { + if (r.New > 0 && search.Match(line(new, r.New), q)) || + (r.Old > 0 && search.Match(line(old, r.Old), q)) { hits = append(hits, findHit{i, 0}) } case p.content(i): - if diff.Match(ansi.Strip(p.lines[i]), q) { + if search.Match(ansi.Strip(p.lines[i]), q) { hits = append(hits, findHit{i, 0}) } } From 6b12e484a6288f4ef534d9ba27591aaf06439c93 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:17:45 +0100 Subject: [PATCH 015/119] perf(diff): render the style of the line numbers once in RenderFile RenderFile styled each line number. It formats the number in a styled format, and counts the lines without a slice. BenchmarkRenderFile of 4000 lines goes from 5.2 ms and 31800 allocations to 2.5 ms and 14800. --- diff/bench_test.go | 20 ++++++++++++++++++++ diff/file.go | 12 +++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 diff/bench_test.go diff --git a/diff/bench_test.go b/diff/bench_test.go new file mode 100644 index 0000000..ca7a072 --- /dev/null +++ b/diff/bench_test.go @@ -0,0 +1,20 @@ +package diff_test + +import ( + "strings" + "testing" + + "github.com/rednafi/rexdiff/diff" +) + +// BenchmarkRenderFile renders a file of 4000 lines that the cache keeps +// highlighted, as when the user scrolls a file view sideways. +func BenchmarkRenderFile(b *testing.B) { + src := strings.Repeat("func f(x int) int {\n\treturn x * 2 // comment\n}\n\n", 1000) + o := diff.Options{Width: 120, Cache: new(diff.Cache)} + diff.RenderFile("a.go", src, o) + b.ReportAllocs() + for b.Loop() { + diff.RenderFile("a.go", src, o) + } +} diff --git a/diff/file.go b/diff/file.go index 754a9d4..df99384 100644 --- a/diff/file.go +++ b/diff/file.go @@ -28,10 +28,16 @@ func RenderFile(path, src string, o Options) *Diff { "\t", strings.Repeat(" ", tabWidth), ).Replace(src) hl := strings.Split(o.Cache.fileColours(path, src), "\n") - hl = hl[:min(len(hl), len(Lines(src)))] // chroma can add a final newline + lines := 0 + for range strings.Lines(src) { + lines++ + } + hl = hl[:min(len(hl), lines)] // chroma can add a final newline digits := len(strconv.Itoa(len(hl))) numWidth := digits + 2 // a space on each side of the number - numStyle := lipgloss.NewStyle().Foreground(lipgloss.Color(lineNumberColor)) + // The style renders once, around a format for the number. + numFmt := lipgloss.NewStyle().Foreground(lipgloss.Color(lineNumberColor)). + Render(" %*d ") + " " d := &Diff{newNum: numWidth, src: [2]string{raw, raw}, wrap: o.Wrap} d.codeAt = [2]int{numWidth + 1, numWidth + 1} if !o.Wrap { @@ -43,7 +49,7 @@ func RenderFile(path, src string, o Options) *Diff { for k, p := range fileLineParts(l, code, o) { num := blank if k == 0 { - num = numStyle.Render(fmt.Sprintf(" %*d ", digits, i+1)) + " " + num = fmt.Sprintf(numFmt, digits, i+1) } line := num + p if o.Width > 0 { // the number or a wide character can be too wide From b0ceb46ff52f58350682e07c9de16c887cfefe46 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:34:53 +0100 Subject: [PATCH 016/119] fix(tui): keep the view on failed or held reloads A tick does not reload while the comment box is open. The reload runs when the box closes. A failed reload of the Changes tab keeps the files, the selection, and the cursor, and flashes the error. The error shows in place of the files only if nothing loaded. A failed read of the pull request keeps the last good one, except when the branch has no pull request. Without a watcher, a tick reloads every 5 s. A failed start or an error of the watcher starts it again on the retry backoff, as in herdr-reviewr. --- README.md | 8 ++- tui/comment.go | 6 ++- tui/model.go | 131 ++++++++++++++++++++++++++++++++++----------- tui/nav.go | 3 +- tui/reload_test.go | 119 ++++++++++++++++++++++++++++++++++++++++ tui/send.go | 4 +- tui/tui.go | 3 +- tui/tui_test.go | 9 +++- tui/turn_test.go | 3 +- tui/watch_test.go | 17 +++--- 10 files changed, 252 insertions(+), 51 deletions(-) create mode 100644 tui/reload_test.go diff --git a/README.md b/README.md index 58109b9..5f04e8c 100644 --- a/README.md +++ b/README.md @@ -49,11 +49,15 @@ them, run `rexdiff uninstall`. rexdiff checks the files about once a second without running git, and runs git only after a change. In a large repository it checks less often, so its checks -use at most about 5% of a core. `r` reloads at once. +use at most about 5% of a core. `r` reloads at once. If the checks fail, +rexdiff reloads every 5 s and tries the checks again after 1 s, then waits twice +as long each time, up to a minute. A failed reload keeps the files that show and +shows "refresh failed" at the bottom. While the comment box is open, the view +does not change. The pull request tab reads the pull request again each minute while it shows, and after a commit, a push, or a fetch. A switch to another branch clears it -until the new pull request loads. +until the new pull request loads. A failed read keeps the last pull request. Last turn shows the changes since the start of the last agent turn that changed a file. A turn starts when an agent in this repository starts to work, diff --git a/tui/comment.go b/tui/comment.go index 8c8c371..7da36d5 100644 --- a/tui/comment.go +++ b/tui/comment.go @@ -192,13 +192,15 @@ func (m *model) updateComment(msg tea.KeyPressMsg) tea.Cmd { return cmd } -// closeComment closes the comment box and clears the selection. After an -// edit from the comment list, it opens the list again. +// closeComment closes the comment box and clears the selection. Then it +// does the reload that waits for the box. After an edit from the comment +// list, it opens the list again. func (m *model) closeComment() { row := m.draft.listRow m.mode, m.draft = modeNormal, nil m.cur().anchor = -1 m.editor.Blur() + m.reloadDue() if row >= 0 && m.comments.Len() > 0 { m.openCommentList() m.overlay.cur = min(row, len(m.overlay.shown)-1) diff --git a/tui/model.go b/tui/model.go index ac55df5..f6335aa 100644 --- a/tui/model.go +++ b/tui/model.go @@ -3,6 +3,7 @@ package tui import ( "cmp" "context" + "errors" "image/color" "log/slog" "slices" @@ -193,8 +194,12 @@ type model struct { ticks int // watch tells when the files or the refs change, or is nil. If it is - // nil, each tick reloads the current tab. - watch *vcs.Watcher + // nil, a tick reloads the current tab every pollEvery, after polled. + // After a failure of the watcher, a tick starts it again at watchAt. + watch *vcs.Watcher + polled time.Time + watchAt time.Time + watchWait time.Duration // the wait after the next failure, or 0 // reloadOwed is true if a change is seen but the Changes tab does not // show it yet. A reload waits until reloadAt, after the pause of the // last one, and until retryAt, after a failure. @@ -454,24 +459,37 @@ func (m *model) trees() (from, to, note string, err error) { // reload reads the changes of the scope again, even if the trees do not // change. -func (m *model) reload() { - m.shownTrees = "" // no trees are "", so reloadIfChanged reads them - m.reloadIfChanged() -} +func (m *model) reload() { m.loadChanges(true) } // reloadIfChanged reads the changes of the scope again if the trees differ -// from the shown trees. After a failure, the next tick tries again after a -// wait. -func (m *model) reloadIfChanged() { +// from the shown trees. +func (m *model) reloadIfChanged() { m.loadChanges(false) } + +// loadChanges reads the changes of the scope if force is true or if the +// trees differ from the shown trees. While the comment box is open, the +// reload waits until the box closes, as in herdr-reviewr. After a +// failure, the next tick tries again after a wait. As in herdr-reviewr, a +// failure keeps the files that show, and the error shows in their place +// only if no files show. +func (m *model) loadChanges(force bool) { + if m.mode == modeComment { + m.reloadOwed = true + return + } m.reloadOwed = false from, to, note, err := m.trees() trees := from + ".." + to + same := trees == m.shownTrees && !force var files []vcs.File - if err == nil && note == "" && trees != m.shownTrees { + if err == nil && note == "" && !same { files, err = m.repo.Diff(m.ctx, from, to) } m.retry(err) - if err == nil && note == "" && trees == m.shownTrees { + if err == nil && note == "" && same { + return + } + if err != nil && m.shownTrees != "" { + m.flash("refresh failed: " + err.Error()) return } if err != nil { @@ -688,6 +706,14 @@ func (m *model) onPR(msg prMsg) tea.Cmd { if f.trailing { next = m.loadPR() } + // As in herdr-reviewr, a failed read keeps the last good pull request. + // The end of the pull request is not a failure. + if msg.err != nil && m.pr.pr != nil && !errors.Is(msg.err, vcs.ErrNoPullRequest) { + m.pr.loading = false + m.flash("refresh failed: " + msg.err.Error()) + m.renderPR() + return next + } m.pr = prState{pr: msg.pr} if msg.err != nil { m.pr.err = msg.err.Error() @@ -732,6 +758,18 @@ const ( retryMax = time.Minute // the longest wait after a failure ) +// pollEvery is the time between two reloads without a watcher, as in +// herdr-reviewr. +const pollEvery = 5 * time.Second + +// backoff returns the wait before the next try after a failure, and +// doubles *wait. The waits go from retryFirst to retryMax. +func backoff(wait *time.Duration) time.Duration { + w := max(*wait, retryFirst) + *wait = min(2*w, retryMax) + return w +} + // retry sets the wait before the next reload after the error err. Each // failure doubles the wait, from 1 s to 60 s. A reload with no error // clears the wait. @@ -740,33 +778,52 @@ func (m *model) retry(err error) { m.retryWait, m.retryAt = 0, time.Time{} return } - wait := max(m.retryWait, retryFirst) - m.retryWait = min(2*wait, retryMax) - m.retryAt = time.Now().Add(wait) + m.retryAt = time.Now().Add(backoff(&m.retryWait)) m.reloadOwed = true } -// changed tells what the watcher sees. Without a watcher, or after an -// error of the watcher, it tells that both change. +// dropWatch drops the watcher after the error err. A tick starts it again +// after a wait. +func (m *model) dropWatch(err error) { + m.log.Warn("watch failed", "err", err) + m.watch = nil + m.watchAt = time.Now().Add(backoff(&m.watchWait)) +} + +// changed tells what the watcher sees. Without a watcher, it tells that +// both change every pollEvery. After an error, it drops the watcher and +// tells that both change. func (m *model) changed() vcs.Change { all := vcs.Change{Files: true, Refs: true} + now := time.Now() + if m.watch == nil && !m.watchAt.IsZero() && !now.Before(m.watchAt) { + w, err := m.repo.Watch(m.ctx) + if err != nil { + m.dropWatch(err) + } else { + m.watch, m.watchAt = w, time.Time{} + } + } if m.watch == nil { + if now.Sub(m.polled) < pollEvery { + return vcs.Change{} + } + m.polled = now return all } m.watch.Show(m.shownIgnored()) - start := time.Now() ch, err := m.watch.Changed(m.ctx) - m.log.Debug("watch", "took", time.Since(start), "files", ch.Files, "refs", ch.Refs) + m.log.Debug("watch", "took", time.Since(now), "files", ch.Files, "refs", ch.Refs) if err != nil { - m.log.Warn("watch failed", "err", err) + m.dropWatch(err) + m.polled = now return all } + m.watchWait = 0 return ch } -// onTick reloads the current tab if the watcher sees a change. On the -// Changes tab, a reload waits for the pause after the last one, and for -// the wait after a failure. +// onTick reloads the current tab if the watcher sees a change. func (m *model) onTick() tea.Cmd { m.ticks++ ch := m.changed() @@ -776,15 +833,7 @@ func (m *model) onTick() tea.Cmd { m.reloadOwed = m.reloadOwed || ch.Files || ch.Refs m.filesOwed = m.filesOwed || ch.Files now := time.Now() - switch { - case m.tab == tabChanges && m.reloadOwed && !now.Before(m.reloadAt) && !now.Before(m.retryAt): - m.reloadIfChanged() - m.reloadAt = time.Now().Add(budgetFactor * time.Since(now)) - case m.tab == tabFiles && m.filesOwed: - m.reloadFiles() // reloadFiles renders the file too - case m.tab == tabFiles: - m.refreshViewer() - } + m.reloadDue() if m.status != "" && time.Now().After(m.statusTill) { m.status = "" } @@ -807,6 +856,26 @@ func (m *model) onTick() tea.Cmd { return tea.Batch(cmds...) } +// reloadDue reloads the current tab if a change waits for it. On the +// Changes tab, a reload waits for the pause after the last one, and for +// the wait after a failure. As in herdr-reviewr, the view does not change +// while the comment box is open. +func (m *model) reloadDue() { + if m.mode == modeComment { + return + } + now := time.Now() + switch { + case m.tab == tabChanges && m.reloadOwed && !now.Before(m.reloadAt) && !now.Before(m.retryAt): + m.reloadIfChanged() + m.reloadAt = time.Now().Add(budgetFactor * time.Since(now)) + case m.tab == tabFiles && m.filesOwed: + m.reloadFiles() // reloadFiles renders the file too + case m.tab == tabFiles: + m.refreshViewer() + } +} + // cur returns the pane of the current tab. func (m *model) cur() *pane { switch m.tab { diff --git a/tui/nav.go b/tui/nav.go index 2210c96..a4adedc 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -349,7 +349,8 @@ func (m *model) setTab(t tab) { // setScope shows the Changes tab in scope s. func (m *model) setScope(s Scope) { - m.tab, m.scope, m.folds = tabChanges, s, nil + // The files of the last scope do not show while the new one fails. + m.tab, m.scope, m.folds, m.shownTrees = tabChanges, s, nil, "" m.reload() m.changes.cur, m.changes.top = 0, 0 } diff --git a/tui/reload_test.go b/tui/reload_test.go new file mode 100644 index 0000000..3457a45 --- /dev/null +++ b/tui/reload_test.go @@ -0,0 +1,119 @@ +package tui + +import ( + "errors" + "os" + "strings" + "testing" + "time" + + "github.com/rednafi/rexdiff/vcs" +) + +// TestNoReloadInCommentBox checks that a tick does not reload while the +// comment box is open, and that the reload runs when the box closes. +func TestNoReloadInCommentBox(t *testing.T) { + m, dir := newTestModel(t) + m = press(t, m, "]", "c") + write(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") + if m = step(t, m, tickMsg{}); shows(m, "return 42") || !m.reloadOwed { + t.Errorf("a tick with the box open: owed %v, view:\n%s\nwant no reload, a reload owed", + m.reloadOwed, view(m)) + } + if m = press(t, m, "esc"); !shows(m, "return 42") { + t.Errorf("after the box closes, view got:\n%s\nwant the edit", view(m)) + } +} + +// TestReloadErrorKeepsFiles checks that a failed reload keeps the files, +// the selection, and the cursor, and flashes the error. +func TestReloadErrorKeepsFiles(t *testing.T) { + m, _ := newTestModel(t) + m = press(t, m, "]", "j") + cur, sel, n := m.changes.cur, m.changeSel, len(m.files) + noGit(t) + m = press(t, m, "r") + if len(m.files) != n || m.changeSel != sel || m.changes.cur != cur || m.shownTrees == "" { + t.Errorf("after a failed reload: %d files, sel %d, cursor %d, trees %q; want %d, %d, %d, kept", + len(m.files), m.changeSel, m.changes.cur, m.shownTrees, n, sel, cur) + } + if !strings.HasPrefix(m.status, "refresh failed: ") || m.changes.note != "" { + t.Errorf("status %q, note %q; want \"refresh failed: …\", no note", m.status, m.changes.note) + } +} + +// TestReloadErrorNote checks that a failed first load shows the error in +// place of the files. +func TestReloadErrorNote(t *testing.T) { + m, _ := newTestModel(t) + noGit(t) + m = press(t, m, "b") // another scope has nothing loaded + if m.files != nil || m.changes.note == "" { + t.Errorf("a failed first load: %d files, note %q; want none, the error", len(m.files), m.changes.note) + } +} + +// TestPRErrorKeepsPR checks that a failed read keeps the last good pull +// request, and that the end of the pull request clears it. +func TestPRErrorKeepsPR(t *testing.T) { + m, _ := newTestModel(t) + m = press(t, m, "3") + m = step(t, m, prMsg{gen: m.prf.gen, pr: &vcs.PullRequest{Title: "Good"}}) + m = step(t, m, prMsg{gen: m.prf.gen, err: errors.New("network down")}) + if m.pr.pr == nil || !shows(m, "Good") || !strings.Contains(m.status, "network down") { + t.Errorf("after a failed read: pr %+v, status %q, view:\n%s\nwant the PR kept, a flash", + m.pr.pr, m.status, view(m)) + } + m = step(t, m, prMsg{gen: m.prf.gen, err: vcs.ErrNoPullRequest}) + if m.pr.pr != nil { + t.Errorf("after no pull request: pr %+v, want none", m.pr.pr) + } +} + +// TestPollWithoutWatcher checks that without a watcher a tick reloads +// only every pollEvery. +func TestPollWithoutWatcher(t *testing.T) { + m, dir := newTestModel(t) + m = step(t, m, tickMsg{}) + write(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") + if m = step(t, m, tickMsg{}); shows(m, "return 42") { + t.Errorf("a tick before the poll is due, view got:\n%s\nwant no reload", view(m)) + } + m.polled, m.reloadAt = time.Now().Add(-pollEvery), time.Time{} + if m = step(t, m, tickMsg{}); !shows(m, "return 42") { + t.Errorf("a tick after pollEvery, view got:\n%s\nwant the edit", view(m)) + } +} + +// TestWatchRestarts checks that a tick starts the watcher again after a +// failure, with a wait that doubles. +func TestWatchRestarts(t *testing.T) { + m, _ := newTestModel(t) + path := os.Getenv("PATH") + noGit(t) + m.watchAt = time.Now() + if m = step(t, m, tickMsg{}); m.watch != nil || !m.watchAt.After(time.Now()) { + t.Fatalf("a failed start: watcher %v, next try %v; want none, a wait", m.watch, m.watchAt) + } + t.Setenv("PATH", path) + if m = step(t, m, tickMsg{}); m.watch != nil { + t.Fatal("a tick before the wait ends starts the watcher") + } + m.watchAt = time.Now() + if m = step(t, m, tickMsg{}); m.watch == nil { + t.Error("a tick after the wait: no watcher, want one") + } +} + +// TestWatchErrorRestarts checks that an error of the watcher drops it, so +// that a later tick starts it again. +func TestWatchErrorRestarts(t *testing.T) { + m, dir, pause := watched(t) + noGit(t) + write(t, dir, "new.go", "package a\n") // the watcher lists the files again + time.Sleep(pause) + if m = step(t, m, tickMsg{}); m.watch != nil || m.watchAt.IsZero() { + t.Errorf("after an error of the watcher: watcher %v, next try %v; want none, a try", + m.watch, m.watchAt) + } +} diff --git a/tui/send.go b/tui/send.go index ef642ff..a556270 100644 --- a/tui/send.go +++ b/tui/send.go @@ -244,9 +244,7 @@ func (m *model) onAgents(msg agentsMsg) tea.Cmd { case !m.sampled && !msg.send: // Without a list, the turns do not start. Thus list again later. m.log.Warn("agent list failed", "err", msg.err) - wait := max(m.sampleWait, retryFirst) - m.sampleWait = min(2*wait, retryMax) - m.sampleAt = time.Now().Add(wait) + m.sampleAt = time.Now().Add(backoff(&m.sampleWait)) } m.observeTurn() if !msg.send { diff --git a/tui/tui.go b/tui/tui.go index d63b016..6b476b9 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -94,8 +94,7 @@ func Run(ctx context.Context, o Options) (resume string, err error) { m := newModel(ctx, o, cfg) if m.watch, err = o.Repo.Watch(ctx); err != nil { - // Without the watcher, each tick reloads. - m.log.Warn("watch failed", "err", err) + m.dropWatch(err) } var saved *savedState if o.Resume != "" { diff --git a/tui/tui_test.go b/tui/tui_test.go index 7cf5b2a..974b517 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -388,7 +388,8 @@ func TestSendError(t *testing.T) { } // TestMissingHead checks that the Changes tab shows an error, and not each -// file as added, when the object of the HEAD commit is missing. +// file as added, when the object of the HEAD commit is missing. The files +// that show stay, and the error is a flash. func TestMissingHead(t *testing.T) { m, dir := newTestModel(t) sha, err := exec.Command("git", "-C", dir, "rev-parse", "HEAD").Output() @@ -401,6 +402,12 @@ func TestMissingHead(t *testing.T) { t.Fatal(err) } m.reload() + if got := paths(m); !slices.Equal(got, []string{"a.go"}) || + !strings.Contains(m.status, "unknown revision HEAD") { + t.Errorf("files %v, status %q; want [a.go] and the error", got, m.status) + } + m.shownTrees = "" // nothing shows + m.reload() if v := view(m); len(m.files) > 0 || !strings.Contains(v, "unknown revision HEAD") { t.Errorf("files %v, want none and the error:\n%s", paths(m), v) } diff --git a/tui/turn_test.go b/tui/turn_test.go index 4f0b19c..8991881 100644 --- a/tui/turn_test.go +++ b/tui/turn_test.go @@ -104,7 +104,8 @@ func TestTurnPromotesOnChange(t *testing.T) { t.Fatal("a tick with no change promotes the turn") } write(t, dir, "c.go", "package a\n") - m = step(t, m, tickMsg{}) // without a watcher, each tick sees a change + m.polled = time.Time{} // without a watcher, the poll sees the change + m = step(t, m, tickMsg{}) if m.turn == nil || !m.turn.running || m.pending != nil { t.Fatalf("turn %+v, pending %+v, want a running turn", m.turn, m.pending) } diff --git a/tui/watch_test.go b/tui/watch_test.go index b31a27e..c5bb0a7 100644 --- a/tui/watch_test.go +++ b/tui/watch_test.go @@ -3,6 +3,7 @@ package tui import ( "errors" "os" + "strings" "testing" "time" ) @@ -60,22 +61,22 @@ func TestRefreshForces(t *testing.T) { } // TestTickRetries checks that a tick retries a failed reload after the -// wait, and that the error then clears. +// wait, and that the wait then clears. func TestTickRetries(t *testing.T) { m, _, _ := watched(t) path := os.Getenv("PATH") noGit(t) - if m = press(t, m, "r"); !shows(m, "unknown revision") { - t.Fatalf("view got:\n%s\nwant the git error", view(m)) + if m = press(t, m, "r"); m.retryAt.IsZero() || !strings.HasPrefix(m.status, "refresh failed: ") { + t.Fatalf("after a failed reload: retry at %v, status %q; want a wait, a flash", + m.retryAt, m.status) } t.Setenv("PATH", path) - if m = step(t, m, tickMsg{}); !shows(m, "unknown revision") { - t.Errorf("view got:\n%s\nwant the error until the wait ends", view(m)) + retryAt := m.retryAt + if m = step(t, m, tickMsg{}); m.retryAt != retryAt { + t.Errorf("a tick in the wait: retry at %v, want %v", m.retryAt, retryAt) } m.retryAt, m.reloadAt = time.Now(), time.Now() // the waits end - if m = step(t, m, tickMsg{}); shows(m, "unknown revision") { - t.Errorf("view got:\n%s\nwant no error after the retry", view(m)) - } + m = step(t, m, tickMsg{}) if !m.retryAt.IsZero() || m.retryWait != 0 { t.Errorf("after a good reload, retryAt %v, retryWait %v; want zero", m.retryAt, m.retryWait) } From 9976a04829429f7ebe3ba9e21345dfbc6ab932a9 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:37:22 +0100 Subject: [PATCH 017/119] fix(tui): reset the cursor, the selection, and the arm where they go stale The end of a code search rebuilds the list only in the code mode, so the cursor of the file matches stays. A click or a pick of a file drops an armed crossing. A change of the scope clears the selection and the arm. Tab shows a hidden file list with the focus, as in herdr-reviewr. A click above the rows that show in an overlay picks no row. --- tui/model.go | 10 ++++-- tui/mouse.go | 4 ++- tui/nav.go | 13 +++++-- tui/overlay.go | 6 ++-- tui/state_test.go | 86 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 110 insertions(+), 9 deletions(-) create mode 100644 tui/state_test.go diff --git a/tui/model.go b/tui/model.go index f6335aa..15593c6 100644 --- a/tui/model.go +++ b/tui/model.go @@ -677,8 +677,8 @@ func (m *model) onKey(msg tea.KeyPressMsg) tea.Cmd { return m.updateNormal(msg) } -// onGrep shows the code matches of the search, but only if the search -// still shows their query. +// onGrep keeps the code matches of the search, but only if the search +// still shows their query. The list shows them in the code mode. func (m *model) onGrep(msg grepMsg) { ov := m.overlay if ov == nil || ov.kind != overlaySearch || ov.input.Value() != msg.query { @@ -690,7 +690,11 @@ func (m *model) onGrep(msg grepMsg) { // Show only the error, and no old results under it. s.hits, s.hitsMore, s.err = nil, false, msg.err.Error() } - ov.showSearch() + // The list of the file matches stays, with its cursor. The chips + // show the count of the code matches. + if s.code { + ov.showSearch() + } } // onPR shows the pull request that loadPR reads, unless a later read diff --git a/tui/mouse.go b/tui/mouse.go index 6e04126..e81b02e 100644 --- a/tui/mouse.go +++ b/tui/mouse.go @@ -23,6 +23,7 @@ func (m *model) onClick(mouse tea.Mouse) tea.Cmd { if mouse.Button != tea.MouseLeft { return nil } + m.armed = 0 // as a key does if m.mode == modeOverlay && m.overlay != nil { return m.clickOverlay(mouse) } @@ -315,7 +316,8 @@ func (m *model) clickOverlay(mouse tea.Mouse) tea.Cmd { return nil } idx := mouse.Y - y - listY - if idx < 0 || idx >= min(len(m.overlay.shown), m.overlay.rowsTo) || !m.overlay.pickable(idx) { + if idx < m.overlay.rowsFrom || idx >= min(len(m.overlay.shown), m.overlay.rowsTo) || + !m.overlay.pickable(idx) { return nil } if idx == m.overlay.cur { // a click on the selected row picks it diff --git a/tui/nav.go b/tui/nav.go index a4adedc..54b1a8c 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -119,6 +119,10 @@ func (m *model) moveKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { last := max(len(p.lines)-1, 0) inList := m.focusList && m.tab != tabPR switch { + case key.Matches(msg, k.Focus) && m.listHiddenHere(): + // As in herdr-reviewr, tab shows a hidden list with the focus. + m.listHidden, m.focusList = false, true + m.rerender() case key.Matches(msg, k.Focus): m.focusList = !m.focusList case key.Matches(msg, k.Down) && inList: @@ -347,12 +351,13 @@ func (m *model) setTab(t tab) { m.rerender() } -// setScope shows the Changes tab in scope s. +// setScope shows the Changes tab in scope s, from its first row. func (m *model) setScope(s Scope) { // The files of the last scope do not show while the new one fails. m.tab, m.scope, m.folds, m.shownTrees = tabChanges, s, nil, "" m.reload() - m.changes.cur, m.changes.top = 0, 0 + m.changes.toStart() + m.armed = 0 } // onFold tells if the cursor is on a fold of the Changes tab. @@ -430,13 +435,15 @@ func (m *model) listSel() int { } // pickFile selects file i of the file list of the current tab. The -// cursor of the list goes to the row of the file, if the row shows. +// cursor of the list goes to the row of the file, if the row shows. The +// pick drops an armed crossing. func (m *model) pickFile(i int) { if t := m.list(); t != nil { if r := t.rowOf(i); r >= 0 { t.cur = r } } + m.armed = 0 switch m.tab { case tabChanges: if i < 0 || i >= len(m.files) { diff --git a/tui/overlay.go b/tui/overlay.go index 7d11f16..c137b23 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -64,7 +64,9 @@ type overlay struct { mark int // the commit picker: the item at the start of the range, or -1 agents []rex.Agent search searchState - rowsTo int // the index after the last row that shows + // rowsFrom and rowsTo are the index of the first row that shows and + // the index after the last one. + rowsFrom, rowsTo int } // searchState has the results of the search. As in herdr-reviewr, the @@ -820,7 +822,7 @@ func (m *model) overlayRows(inner, limit int) (rows []string, start int) { ov := m.overlay maxRows := min(len(ov.shown), max(limit, 1)) start = max(0, ov.cur-maxRows+1) - ov.rowsTo = start + maxRows + ov.rowsFrom, ov.rowsTo = start, start+maxRows for i := start; i < len(ov.shown) && i < start+maxRows; i++ { it := ov.items[ov.shown[i]] if !ov.pickable(i) { diff --git a/tui/state_test.go b/tui/state_test.go new file mode 100644 index 0000000..5548409 --- /dev/null +++ b/tui/state_test.go @@ -0,0 +1,86 @@ +package tui + +import ( + "fmt" + "testing" + + tea "charm.land/bubbletea/v2" +) + +// TestGrepKeepsFileCursor checks that the end of a code search does not +// move the cursor of the file matches. +func TestGrepKeepsFileCursor(t *testing.T) { + m, _ := newTestModel(t) + m = press(t, m, "/") + m, cmd := typeQuery(t, m, "go") + m.overlay.down() + if m.overlay.cur != 1 { + t.Fatalf("cursor %d after a move, want 1", m.overlay.cur) + } + if m = step(t, m, findGrep(cmd())); m.overlay.cur != 1 { + t.Errorf("after the code search: cursor %d, want 1", m.overlay.cur) + } +} + +// TestClickDisarms checks that a click or a pick of a file drops an armed +// crossing. +func TestClickDisarms(t *testing.T) { + m := press(t, twoFiles(t), "]") + if m.armed != 1 { + t.Fatalf("armed %d, want 1", m.armed) + } + if m = step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: m.mainX() + 5, Y: m.mainY()}); m.armed != 0 { + t.Errorf("after a click: armed %d, want 0", m.armed) + } + m.armed = 1 + if m.pickFile(1); m.armed != 0 { + t.Errorf("after a pick: armed %d, want 0", m.armed) + } +} + +// TestFocusShowsList checks that tab shows a hidden file list and gives it +// the focus, as in herdr-reviewr. +func TestFocusShowsList(t *testing.T) { + m, _ := newTestModel(t) + m = press(t, m, "z") + if m = step(t, m, tabKey); m.listHidden || !m.focusList { + t.Errorf("tab with a hidden list: hidden %v, focus %v; want shown, focused", + m.listHidden, m.focusList) + } +} + +// TestOverlayClickAboveRows checks that a click above the rows that show +// picks no row. +func TestOverlayClickAboveRows(t *testing.T) { + m, dir := newTestModel(t) + for i := range 12 { + git(t, dir, "branch", fmt.Sprintf("b%02d", i)) + } + m = step(t, m, tea.WindowSizeMsg{Width: 120, Height: 16}) + m = press(t, m, "B") + for range 10 { + m.overlay.down() + } + _, _, y, _ := m.overlayBox() + cur := m.overlay.cur + m = step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: m.w / 2, Y: y + 1}) // the title + if m.overlay == nil { + t.Fatal("a click on the title closes the overlay") + } + if m.overlay.cur != cur { + t.Errorf("a click on the title: cursor %d, want %d", m.overlay.cur, cur) + } +} + +// TestScopeClearsSelection checks that a change of the scope clears the +// selection and the armed crossing. +func TestScopeClearsSelection(t *testing.T) { + m, _ := newTestModel(t) + m = press(t, m, "]", "v") + m.armed = 1 + m.setScope(ScopeBranch) + if m.changes.anchor != -1 || m.armed != 0 || m.changes.cur != 0 { + t.Errorf("after a change of the scope: anchor %d, armed %d, cursor %d; want -1, 0, 0", + m.changes.anchor, m.armed, m.changes.cur) + } +} From 1e5a3070c18c6f3d788013f94aad968892696028 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:40:00 +0100 Subject: [PATCH 018/119] fix(tui): keep the comment box in view and on its line The comment box takes the width of the main pane at each render and when it opens. A release of the mouse and a key in the box scroll the box into view. An edit from the comment list opens the box only if the pane shows the line of the comment. Else it flashes. --- tui/box_test.go | 83 +++++++++++++++++++++++++++++++++++++++++++++++++ tui/comment.go | 10 ++++++ tui/model.go | 3 +- tui/overlay.go | 4 +++ tui/render.go | 4 +++ 5 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 tui/box_test.go diff --git a/tui/box_test.go b/tui/box_test.go new file mode 100644 index 0000000..38b35c9 --- /dev/null +++ b/tui/box_test.go @@ -0,0 +1,83 @@ +package tui + +import ( + "slices" + "testing" + + tea "charm.land/bubbletea/v2" + "charm.land/lipgloss/v2" + + "github.com/rednafi/rexdiff/diff" +) + +// boxShows reports whether the comment box of m shows in the main pane. +func boxShows(m model) bool { + p, h := m.cur(), m.mainHeight() + _, rowAt := m.mainLines(h) + i := slices.Index(rowAt, p.end(p.cur)) + return m.mode == modeComment && i >= 0 && i+1+lipgloss.Height(m.editor.View()) <= h +} + +// longFileModel returns a test model that shows long.go in the Files tab. +func longFileModel(t *testing.T) model { + t.Helper() + m, dir := newTestModel(t) + longFile(t, dir) + m = press(t, m, "2") + m.reloadFiles() + m.jumpToFile("long.go", diff.SideNew, 1) + if m.viewer.path != "long.go" { + t.Fatalf("the Files tab shows %q, want long.go", m.viewer.path) + } + return m +} + +// TestEditorWidth checks that the width of the comment box follows the +// width of the main pane. +func TestEditorWidth(t *testing.T) { + m, _ := newTestModel(t) + m = press(t, m, "z", "]", "c") + want := m.editor + want.SetWidth(max(m.mainWidth()-8, 20)) + if m.editor.Width() != want.Width() { + t.Errorf("box width %d with a hidden list, want %d", m.editor.Width(), want.Width()) + } +} + +// TestGutterClickShowsBox checks that a click on the line numbers of the +// last row on the screen scrolls the comment box into view. +func TestGutterClickShowsBox(t *testing.T) { + m := longFileModel(t) + y := m.mainY() + m.mainHeight() - 1 + m = step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: m.mainX() + gutter, Y: y}) + m = step(t, m, tea.MouseReleaseMsg{Button: tea.MouseLeft, X: m.mainX() + gutter, Y: y}) + if !boxShows(m) { + t.Errorf("after a click on the last row, mode %v, view:\n%s\nwant the box", m.mode, view(m)) + } +} + +// TestTypingShowsBox checks that a key in the comment box scrolls the box +// into view. +func TestTypingShowsBox(t *testing.T) { + m := longFileModel(t) + m = press(t, m, ":", "8", "0", "enter", "c") + m.viewer.top = 0 + if m = press(t, m, "x"); !boxShows(m) { + t.Errorf("after a key in the box, view:\n%s\nwant the box", view(m)) + } +} + +// TestListEditNeedsLine checks that e in the comment list opens no box if +// the pane does not show the line of the comment. Here the file of the +// comment leaves the changes, so the jump shows it in the Files tab. +func TestListEditNeedsLine(t *testing.T) { + m, dir := newTestModel(t) + m = press(t, m, "]", "c", "h", "i", "enter") + write(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") + m.reload() + m.status = "" + if m = press(t, m, "l", "e"); m.mode == modeComment || m.status == "" { + t.Errorf("e on a comment whose line is gone: mode %v, status %q; want no box, a flash", + m.mode, m.status) + } +} diff --git a/tui/comment.go b/tui/comment.go index 7da36d5..08c8d66 100644 --- a/tui/comment.go +++ b/tui/comment.go @@ -141,6 +141,7 @@ func (m *model) startComment(pref diff.Side) tea.Cmd { ) c.Anchor = m.anchor() m.draft = &draft{Comment: c, listRow: -1} + m.sizeEditor() m.editor.SetValue("") m.mode = modeComment // Put the cursor on the last line of the range, so that the box opens @@ -153,12 +154,20 @@ func (m *model) startComment(pref diff.Side) tea.Cmd { // the comment list opens at listRow, if listRow is 0 or more. func (m *model) editComment(c *diff.Comment, listRow int) tea.Cmd { m.draft = &draft{Comment: *c, editID: c.ID, listRow: listRow} + m.sizeEditor() m.editor.SetValue(c.Text) m.mode = modeComment cursorToLine(m.cur(), c.Side, c.End) return m.editor.Focus() } +// showsLine reports whether the current pane shows the last line of c, +// with the anchor of c. +func (m *model) showsLine(c *diff.Comment) bool { + p := m.cur() + return m.anchor() == c.Anchor && p.path == c.Path && p.rowOf(c.Side, c.End) >= 0 +} + // updateComment handles a key while the comment box is open. func (m *model) updateComment(msg tea.KeyPressMsg) tea.Cmd { switch { @@ -189,6 +198,7 @@ func (m *model) updateComment(msg tea.KeyPressMsg) tea.Cmd { } var cmd tea.Cmd m.editor, cmd = m.editor.Update(msg) + m.ensureVisible() return cmd } diff --git a/tui/model.go b/tui/model.go index 15593c6..485da57 100644 --- a/tui/model.go +++ b/tui/model.go @@ -600,7 +600,6 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { switch msg := msg.(type) { case tea.WindowSizeMsg: m.w, m.h = msg.Width, msg.Height - m.editor.SetWidth(max(m.mainWidth()-8, 20)) m.rerender() case tea.FocusMsg: m.focused = true @@ -644,7 +643,7 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { case tea.MouseMotionMsg: m.onDrag(msg.Mouse()) case tea.MouseReleaseMsg: - return m.onRelease() + cmd = m.onRelease() // the comment box can open below the screen case tea.MouseWheelMsg: m.onWheel(msg.Mouse()) case tea.PasteMsg: diff --git a/tui/overlay.go b/tui/overlay.go index c137b23..463e0da 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -615,6 +615,10 @@ func (m *model) updateCommentList(msg tea.KeyPressMsg) tea.Cmd { m.closeOverlay() m.jumpToComment(c) m.focusList = false + if !m.showsLine(c) { + m.flash("the line of the comment does not show") + return nil + } m.ensureVisible() return m.editComment(c, row) case key.Matches(msg, k.Delete) && it != nil: diff --git a/tui/render.go b/tui/render.go index 8123969..7113ecd 100644 --- a/tui/render.go +++ b/tui/render.go @@ -90,6 +90,7 @@ func (m *model) codeWidth() int { return m.mainWidth() - gutter } // their source lines. A cursor on a header stays above the first line // below the header. func (m *model) rerender() { + m.sizeEditor() p := m.cur() next := p.cur for next < len(p.rows) && m.target(next, diff.SideNew) == nil { @@ -117,6 +118,9 @@ func (m *model) rerender() { } } +// sizeEditor fits the comment box to the width of the main pane. +func (m *model) sizeEditor() { m.editor.SetWidth(max(m.mainWidth()-8, 20)) } + // splitMinWidth is the narrowest code width that shows the split layout. // It is the same as in herdr-reviewr: two halves of 60 columns, each with // its line numbers, and a column between them. From f065aa426277fb2163c99027fd27f1713f37ebcc Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:44:01 +0100 Subject: [PATCH 019/119] fix(tui): size the file list as herdr-reviewr does Without file_list_width, the file list at a side takes 32% of the width, as in herdr-reviewr. A body that leaves no row for a list above or below shows no list, so the screen keeps its footer. The Files tab keeps the path that it shows in its own field, so a tick does not render Markdown again. --- README.md | 6 ++-- tui/config.go | 20 +++++++------- tui/fold_test.go | 2 +- tui/layout_test.go | 69 ++++++++++++++++++++++++++++++++++++++++++++++ tui/model.go | 13 ++++++--- tui/navpos_test.go | 4 +-- tui/render.go | 32 +++++++++++++-------- tui/split_test.go | 14 +++++----- tui/tui_test.go | 6 ++-- tui/view.go | 4 +-- 10 files changed, 128 insertions(+), 42 deletions(-) create mode 100644 tui/layout_test.go diff --git a/README.md b/README.md index 5f04e8c..3d24d08 100644 --- a/README.md +++ b/README.md @@ -111,7 +111,8 @@ collapsed in all files. There, a collapsed directory with a change has a dot. Ignored directories are dim and read their files when you expand them. An expanded one shows new and removed files. -At a side, the file list takes 15% to 60% of the width. Above or below, it takes +At a side, the file list takes 32% of the width, and `<` `>` change that from 15% +to 60%. Above or below, it takes a quarter of the rows, and `<` `>` change that from 15% to 50%. Side by side needs 135 columns. A narrower pane shows one column. @@ -148,7 +149,8 @@ Other settings: - `default_scope` - `markdown_view` - `file_list`: `right`, `bottom`, `left`, or `top` -- `file_list_width`: the width of the file list at a side, in columns +- `file_list_width`: the width of the file list at a side, in columns. Without + it, the list takes 32% of the width - `diff_signs`: `true` marks changed lines with `+` and `-`, in place of a coloured bar - `review_prefix` - `url_opener` diff --git a/tui/config.go b/tui/config.go index 1916a8f..1fbbd89 100644 --- a/tui/config.go +++ b/tui/config.go @@ -92,7 +92,7 @@ type config struct { // top. FileList position `json:"file_list"` // FileListWidth is the width of the file list at a side, in columns. - // It is minListWidth or more. + // It is minListWidth or more, or 0 if the text does not set it. FileListWidth int `json:"file_list_width"` // DiffSigns marks a changed line with + or -, in place of a bar. DiffSigns bool `json:"diff_signs"` @@ -172,11 +172,10 @@ const minListWidth = 16 // set. func defaultConfig() config { return config{ - Layout: LayoutUnified, - DefaultScope: ScopeUncommitted, - MarkdownView: markdownViewSource, - FileList: positionRight, - FileListWidth: 32, + Layout: LayoutUnified, + DefaultScope: ScopeUncommitted, + MarkdownView: markdownViewSource, + FileList: positionRight, } } @@ -246,7 +245,7 @@ var jsonKinds = map[jsontext.Kind]string{ // check returns an error for the first value that rexdiff does not accept. // set has the keys that the text sets. func (c config) check(set map[string]jsontext.Value) error { - if err := c.checkChoices(); err != nil { + if err := c.checkChoices(set); err != nil { return err } if err := c.checkTexts(set); err != nil { @@ -259,8 +258,9 @@ func (c config) check(set map[string]jsontext.Value) error { } // checkChoices checks the values that have fixed choices or a range. They -// are the layout, the scope, the markdown view, and the file list. -func (c config) checkChoices() error { +// are the layout, the scope, the markdown view, and the file list. set +// has the keys that the text sets. +func (c config) checkChoices(set map[string]jsontext.Value) error { choices := []struct { key, value string allowed []string @@ -275,7 +275,7 @@ func (c config) checkChoices() error { return invalid(k.key, "one of "+strings.Join(k.allowed, ", "), k.value) } } - if c.FileListWidth < minListWidth { + if set["file_list_width"] != nil && c.FileListWidth < minListWidth { want := strconv.Itoa(minListWidth) + " or more" return invalid("file_list_width", want, strconv.Itoa(c.FileListWidth)) } diff --git a/tui/fold_test.go b/tui/fold_test.go index 6095d77..36b31f6 100644 --- a/tui/fold_test.go +++ b/tui/fold_test.go @@ -201,7 +201,7 @@ func TestFoldsSurviveRestart(t *testing.T) { // split layout and with wrap. func TestClickFold(t *testing.T) { for _, keys := range [][]string{nil, {"|"}, {"w"}} { - m := step(t, newFoldModel(t), tea.WindowSizeMsg{Width: 200, Height: 70}) + m := step(t, newFoldModel(t), tea.WindowSizeMsg{Width: 210, Height: 70}) m = press(t, m, keys...) tail := slices.IndexFunc(m.changes.rows, func(r diff.Row) bool { return r.Fold.Lines == 7 }) m = click(t, m, m.mainX()+10, screenY(t, m, tail)) diff --git a/tui/layout_test.go b/tui/layout_test.go new file mode 100644 index 0000000..2dd000d --- /dev/null +++ b/tui/layout_test.go @@ -0,0 +1,69 @@ +package tui + +import ( + "strings" + "testing" + + tea "charm.land/bubbletea/v2" + + "github.com/rednafi/rexdiff/diff" +) + +// TestTinyStackedList checks that a body of 3 rows with the list below +// fits the screen, and that the list then takes no clicks. +func TestTinyStackedList(t *testing.T) { + for _, pos := range []position{positionBottom, positionTop} { + m, _ := newTestModel(t) + m.listPos = pos + m = step(t, m, tea.WindowSizeMsg{Width: 120, Height: 6}) + if h := m.bodyHeight(); h != 3 { + t.Fatalf("%s: body height %d, want 3", pos, h) + } + lines := strings.Split(view(m), "\n") + if last := lines[len(lines)-1]; !strings.Contains(last, "comment") { + t.Errorf("%s: the last line is %q, want the footer", pos, last) + } + m = step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: 5, Y: m.mainY() + 1}) + if m.focusList { + t.Errorf("%s: a click on the main pane gives the focus to the list", pos) + } + } +} + +// TestListDefaultWidth checks that the file list at a side takes 32% of +// the width if file_list_width is not set, as in herdr-reviewr. +func TestListDefaultWidth(t *testing.T) { + m, _ := newTestModel(t) + if got := m.sideWidth(); got != 120*32/100 { + t.Errorf("120 columns: list width %d, want %d", got, 120*32/100) + } + if m = step(t, m, tea.WindowSizeMsg{Width: 200, Height: 40}); m.sideWidth() != 64 { + t.Errorf("200 columns: list width %d, want 64", m.sideWidth()) + } + cfg, err := parseConfig(`{"file_list_width": 40}`) + if err != nil { + t.Fatal(err) + } + m = newModel(t.Context(), Options{Repo: m.repo}, cfg) + if got := m.sideWidth(); got != 40 { + t.Errorf("file_list_width 40: list width %d, want 40", got) + } +} + +// TestMarkdownNotRerendered checks that a tick does not render the +// markdown of the Files tab again if the file does not change. +func TestMarkdownNotRerendered(t *testing.T) { + m, dir := newTestModel(t) + write(t, dir, "notes.md", "# Title\n\nSome text.\n") + m = press(t, m, "2") + m.reloadFiles() + m.jumpToFile("notes.md", diff.SideNew, 1) + m = press(t, m, "m") + if !m.rendered || len(m.viewer.lines) == 0 { + t.Fatal("m: no rendered markdown") + } + m.viewer.lines[0] = "sentinel" + if m = step(t, m, tickMsg{}); m.viewer.lines[0] != "sentinel" { + t.Error("a tick with no change renders the markdown again") + } +} diff --git a/tui/model.go b/tui/model.go index 485da57..3a36538 100644 --- a/tui/model.go +++ b/tui/model.go @@ -244,7 +244,10 @@ type model struct { allFiles []vcs.Entry // the Files tab allSel int fileTree navTree - viewed string // the content in the Files tab, to notice edits + // viewed and viewedPath are the content and the path in the Files + // tab, to notice edits. The path of the pane is "" for Markdown. + viewed string + viewedPath string changes, viewer, prPane pane pr prState @@ -261,9 +264,11 @@ type model struct { // crossing to the file at armedPath. Else it is 0. armed int armedPath string - listW int // the width of the file list at a side, in columns - listPct int // the share of the body rows, above or below - cache diff.Cache // the syntax colours, for a fast sideways scroll + // listW is the width of the file list at a side, in columns, or 0 for + // the default share of the width. + listW int + listPct int // the share of the body rows, above or below + cache diff.Cache // the syntax colours, for a fast sideways scroll comments diff.Comments editor textarea.Model diff --git a/tui/navpos_test.go b/tui/navpos_test.go index 6a595fc..f01533a 100644 --- a/tui/navpos_test.go +++ b/tui/navpos_test.go @@ -57,8 +57,8 @@ func TestListPositions(t *testing.T) { func TestListSizes(t *testing.T) { m, _ := newTestModel(t) // 120 columns m = press(t, m, "<") - if got := m.sideWidth(); got != 36 { - t.Errorf("one grow from 32 columns: width %d, want 36", got) + if got := m.sideWidth(); got != 42 { + t.Errorf("one grow from 38 columns: width %d, want 42", got) } for range 20 { m = press(t, m, "<") diff --git a/tui/render.go b/tui/render.go index 7113ecd..d34dc12 100644 --- a/tui/render.go +++ b/tui/render.go @@ -4,6 +4,7 @@ package tui // file viewer, and Markdown. import ( + "cmp" "errors" "slices" "strings" @@ -20,11 +21,13 @@ import ( // left of the main pane. const gutter = 2 -// The sizes of the file list, as in herdr-reviewr. At a side, the width -// stays between listMinPct and listMaxSidePct of the screen width. Above -// or below, the list takes listStackPct of the body rows by default, and -// stays between listMinPct and listMaxStackPct. +// The sizes of the file list, as in herdr-reviewr. At a side, the list +// takes listSidePct of the screen width by default, and stays between +// listMinPct and listMaxSidePct. Above or below, the list takes +// listStackPct of the body rows by default, and stays between listMinPct +// and listMaxStackPct. const ( + listSidePct = 32 listStackPct = 25 listMinPct = 15 listMaxSidePct = 60 @@ -36,7 +39,10 @@ const ( func (m *model) listShown() bool { return !m.listHidden && m.tab != tabPR } // sideWidth returns the width of the file list at a side, in columns. -func (m *model) sideWidth() int { return m.clampSide(m.listW) } +// Without a width in columns, the list takes listSidePct of the screen. +func (m *model) sideWidth() int { + return m.clampSide(cmp.Or(m.listW, m.w*listSidePct/100)) +} // clampSide returns w within the bounds of the width of the file list at // a side. @@ -58,12 +64,16 @@ func (m *model) listWidth() int { // listHeight returns the number of body rows that the file list takes // above or below the main pane, with its rule. The body has h rows. It -// returns 0 if the list does not show there. +// returns 0 if the list does not show there, or if the rule leaves no +// row for the list. func (m *model) listHeight(h int) int { if !m.listShown() || !m.listPos.stacked() { return 0 } - return splitAxis(h, m.listPct) + if lh := splitAxis(h, m.listPct); lh > 1 { + return lh + } + return 0 } // mainWidth returns the width of the main pane, with its gutter. @@ -230,7 +240,7 @@ func (p *pane) setNote(note string) { // renderViewer shows the selected file in the Files tab, even if the file // does not change. func (m *model) renderViewer() { - m.viewer.path = "" // no file has the path "", so refreshViewer renders + m.viewedPath = "" // no file has the path "", so refreshViewer renders m.refreshViewer() } @@ -239,16 +249,16 @@ func (m *model) renderViewer() { func (m *model) refreshViewer() { p := &m.viewer if m.allSel >= len(m.allFiles) { - p.path = "" + p.path, m.viewedPath = "", "" p.set(nil, nil) return } path := m.allFiles[m.allSel].Path content, err := m.repo.ReadFile(path) - if err == nil && content == m.viewed && p.path == path { + if err == nil && content == m.viewed && m.viewedPath == path { return } - m.viewed = content + m.viewed, m.viewedPath = content, path p.path = path switch { case errors.Is(err, vcs.ErrBinary): diff --git a/tui/split_test.go b/tui/split_test.go index ca47a9b..9a49cc3 100644 --- a/tui/split_test.go +++ b/tui/split_test.go @@ -31,28 +31,28 @@ func TestSplitNeedsWidth(t *testing.T) { // TestSplitFollowsWidth checks that split shows again when the pane gets // wide again. func TestSplitFollowsWidth(t *testing.T) { - m := newSplitModel(t, 200) + m := newSplitModel(t, 210) if !m.splitShown() { - t.Fatalf("width 200 (code %d): unified shows, want split", m.codeWidth()) + t.Fatalf("width 210 (code %d): unified shows, want split", m.codeWidth()) } if m = step(t, m, tea.WindowSizeMsg{Width: 120, Height: 40}); m.splitShown() { t.Error("after a resize to 120: split shows, want unified") } - if m = step(t, m, tea.WindowSizeMsg{Width: 200, Height: 40}); !m.splitShown() { - t.Error("after a resize to 200: unified shows, want split") + if m = step(t, m, tea.WindowSizeMsg{Width: 210, Height: 40}); !m.splitShown() { + t.Error("after a resize to 210: unified shows, want split") } if m = press(t, m, "|"); m.split || m.splitShown() { - t.Error("| at width 200: split shows, want unified") + t.Error("| at width 210: split shows, want unified") } if m = press(t, m, "|"); !m.splitShown() { - t.Error("| again at width 200: unified shows, want split") + t.Error("| again at width 210: unified shows, want split") } } // TestSplitAddedFile checks that a file with lines on one side shows one // column, and that | does nothing. func TestSplitAddedFile(t *testing.T) { - m := newSplitModel(t, 200) + m := newSplitModel(t, 210) m = press(t, m, "b") // the branch scope adds b.go i := -1 for j, f := range m.files { diff --git a/tui/tui_test.go b/tui/tui_test.go index 974b517..68b8125 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -204,7 +204,7 @@ func TestComment(t *testing.T) { m = press(t, m, "h", "i", "enter") // The split layout uses two rows for the same change. It needs a wide // pane. - m = step(t, m, tea.WindowSizeMsg{Width: 200, Height: 40}) + m = step(t, m, tea.WindowSizeMsg{Width: 210, Height: 40}) m = press(t, toTop(press(t, m, "|")), "]", "v", "j", "c", "o", "k", "enter") cs := m.comments.All() @@ -670,7 +670,7 @@ func TestWrap(t *testing.T) { t.Fatalf("w: wrap %v, %d lines, want more than %d", m.wrap, len(m.changes.lines), cut) } - if v := view(m); !strings.Contains(v, "x + 1") { + if v := view(m); !strings.Contains(v, "+ 1") { t.Errorf("view got:\n%s\nwant the end of the long line", v) } // The cursor moves by source lines. @@ -695,7 +695,7 @@ func TestWrap(t *testing.T) { i := slices.IndexFunc(lines, func(l string) bool { return strings.Contains(l, "💬 ok") }) - if i < 1 || !strings.Contains(lines[i-1], "x + 1") { + if i < 1 || !strings.Contains(lines[i-1], "+ 1") { t.Errorf("view got:\n%s\nwant the comment below the end of the line", view(m)) } diff --git a/tui/view.go b/tui/view.go index f3f9f10..206ec5f 100644 --- a/tui/view.go +++ b/tui/view.go @@ -684,8 +684,8 @@ func (m *model) listY() int { // listRows returns the number of lines of the file list, with its title. func (m *model) listRows() int { h := m.bodyHeight() - if lh := m.listHeight(h); lh > 0 { - return lh - 1 + if m.listPos.stacked() { + return max(m.listHeight(h)-1, 0) } return h } From a886a2bccce48ef6b4ca4657a4d8adc6f9a36912 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:47:19 +0100 Subject: [PATCH 020/119] fix(tui): make Q answer only the quit prompt, and keep U free As in herdr-reviewr, Q does nothing outside the prompt before a quit, so it cannot drop unsent comments. The check of the keybindings setting includes the fixed key U of the upgrade. The README lists each key that rexdiff binds, and the width that side by side needs. --- README.md | 24 +++++++++++++++++++----- tui/keys.go | 6 ++++-- tui/keys_test.go | 9 +++++++++ tui/nav.go | 6 +++--- tui/quit_test.go | 15 +++++++++++++++ tui/tui_test.go | 6 +++++- 6 files changed, 55 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3d24d08..6262c63 100644 --- a/README.md +++ b/README.md @@ -76,19 +76,28 @@ that show. | Key | Action | | --- | --- | +| `j` `k` or `↓` `↑` | move down or up. With the focus on the file list, move in the list | +| `ctrl+d` `ctrl+u` | half a page down or up | +| `pgdn` `pgup` | a page down or up | +| `tab` | move the focus between the diff and the file list. A hidden list shows | | `u` `b` `t` | uncommitted, branch, or last-turn changes | +| `g` | commits scope. With no commits picked, it opens the commit picker | +| `B` | pick the base branch of the branch scope | | `G` | pick commits: `v` marks the start of a range, enter opens, esc clears or closes | | `]` `[` | next or previous change. Past the last one, press it again to go to the next file | | `→` or click | show the unchanged lines of a fold (`⋯ 12 unmodified lines`) | | `f` `F` | next or previous file | | `→` `←` or click | expand or collapse a directory in the file list | -| `c` | new comment, also on a line that has one | +| `→` `←` | scroll sideways, without wrap | +| `w` | wrap long lines | +| `v` | select lines | +| `c` | new comment, also on a line that has one. The focus must be on the diff | | `e` | edit the comment at the cursor, else open the file in the editor | -| `d` | delete the comment at the cursor | +| `d` | delete the comment at the cursor. The focus must be on the diff | | `n` `N` | next or previous comment in the file | | `l` | list the comments: `e` edit, `d` delete, `s` send, `y` copy, enter jump | -| `s` | send the comments to the agent | -| `y` | copy the comments and clear them, as a send does | +| `s` or `S` | send the comments to the agent | +| `y` or `Y` | copy the comments and clear them, as a send does | | `\|` | side by side | | `:` | go to a line (`0` first, `$` last) | | `/` | search files. `tab` switches to code, `↑` `↓` or `ctrl+n` `ctrl+p` move, `pgup` `pgdn` scroll the preview, enter opens | @@ -98,9 +107,13 @@ that show. | `z` | hide or show the file list | | `<` `>` | make the file list larger or smaller | | `1` `2` `3` | changes, all files, or pull request | +| `o` | open the pull request in the browser | +| `r` | reload at once | +| `U` | install the new version that the bottom line shows | | `esc` | clear the selection, then the armed `]` or `[`, then the key list | | `?` | all keys | | `q` | quit, or ask first if comments are unsent | +| `Q` | when `q` asks first, quit and drop the comments. Else it does nothing | The search shows up to 50 files and 200 lines of code, then "… more". With no query, it lists the files you opened from the search in this session first. @@ -115,7 +128,8 @@ At a side, the file list takes 32% of the width, and `<` `>` change that from 15 to 60%. Above or below, it takes a quarter of the rows, and `<` `>` change that from 15% to 50%. -Side by side needs 135 columns. A narrower pane shows one column. +Side by side needs 135 columns for the code, so the diff pane must be 137 columns +wide with its cursor column. A narrower pane shows one column. An edit with blank text keeps the comment as it was. diff --git a/tui/keys.go b/tui/keys.go index c14bbd5..9545465 100644 --- a/tui/keys.go +++ b/tui/keys.go @@ -150,7 +150,8 @@ type binding struct { // bindings returns each action of c with its key binding in k, in the // order of the table of herdr-reviewr. The check of the keybindings // setting uses this order to name the actions of a key that two actions -// use. herdr-reviewr has no focus action. +// use. herdr-reviewr has no focus action. The upgrade is last. Its key +// is fixed, and the check keeps it free. func (k *keyMap) bindings(c keybindings) []binding { return []binding{ {"down", c.Down, &k.Down}, @@ -199,6 +200,7 @@ func (k *keyMap) bindings(c keybindings) []binding { {"refresh", c.Refresh, &k.Refresh}, {"quit", c.Quit, &k.Quit}, {"quit-discard", c.QuitDiscard, &k.QuitDiscard}, + {"upgrade", nil, &k.Upgrade}, } } @@ -340,7 +342,7 @@ func (h helpKeys) FullHelp() [][]key.Binding { view := []key.Binding{ k.Search, k.Find, k.Rendered, k.Split, k.Wrap, k.NavPosition, k.NavHide, k.NavGrow, } - other := []key.Binding{k.OpenPR, k.Refresh, k.Keys, k.Quit, k.QuitDiscard} + other := []key.Binding{k.OpenPR, k.Refresh, k.Keys, k.Quit} return [][]key.Binding{move, scopes, comments, view, other} } diff --git a/tui/keys_test.go b/tui/keys_test.go index 558fac6..d03aa23 100644 --- a/tui/keys_test.go +++ b/tui/keys_test.go @@ -68,3 +68,12 @@ func TestKeybindingPageUp(t *testing.T) { t.Errorf("pageup bound to page-up: cursor %d, want 0", m.changes.cur) } } + +// TestKeybindingUpgrade checks that a key of the upgrade is not free for +// another action. +func TestKeybindingUpgrade(t *testing.T) { + _, err := parseConfig(`{"keybindings": {"send": ["U"]}}`) + if !errorHas(err, "`U`", "`send`", "`upgrade`") { + t.Errorf("send on U: error %v, want the clash with upgrade", err) + } +} diff --git a/tui/nav.go b/tui/nav.go index 54b1a8c..92cea84 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -23,13 +23,13 @@ const ( listStep = 4 ) -// updateNormal handles a key when no box is open. +// updateNormal handles a key when no box is open. As in herdr-reviewr, +// the key of QuitDiscard does nothing here. It only answers the prompt +// before a quit. func (m *model) updateNormal(msg tea.KeyPressMsg) tea.Cmd { k := m.keys var cmd tea.Cmd switch { - case key.Matches(msg, k.QuitDiscard): - return tea.Quit case key.Matches(msg, k.Quit): if m.comments.Len() > 0 { m.openConfirmQuit() diff --git a/tui/quit_test.go b/tui/quit_test.go index 2ea98e6..972e9a5 100644 --- a/tui/quit_test.go +++ b/tui/quit_test.go @@ -90,3 +90,18 @@ func TestNoCtrlCHomeEnd(t *testing.T) { cur, m.changes.cur) } } + +// TestQuitDiscardInert checks that Q does nothing outside the prompt +// before a quit, as in herdr-reviewr. +func TestQuitDiscardInert(t *testing.T) { + m, _ := newTestModel(t) + if _, cmd := m.Update(tea.KeyPressMsg{Code: 'Q', Text: "Q"}); quits(cmd) { + t.Error("Q with no comments: a quit, want nothing") + } + m = press(t, m, "]", "c", "h", "i", "enter") + next, cmd := m.Update(tea.KeyPressMsg{Code: 'Q', Text: "Q"}) + if m = *next.(*model); quits(cmd) || m.comments.Len() != 1 || m.overlay != nil { + t.Errorf("Q with a comment: quit %v, %d comments, overlay %v; want nothing", + quits(cmd), m.comments.Len(), m.overlay) + } +} diff --git a/tui/tui_test.go b/tui/tui_test.go index 68b8125..41428c9 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -438,7 +438,11 @@ func TestParseConfig(t *testing.T) { wrap`) keys := map[string][]string{} for i, n := range names { - keys[n] = []string{string(rune('A' + i))} // a key for each action + r := rune('A' + i) // a key for each action + if r >= 'U' { + r++ // U upgrades rexdiff + } + keys[n] = []string{string(r)} } all, err := json.Marshal(map[string]any{"keybindings": keys}) if err != nil { From 5164cf9e84715710e4d3c520bf52233629c0caa9 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:53:26 +0100 Subject: [PATCH 021/119] feat(vcs,tui): give the code search a time budget of 80 ms As in herdr-reviewr, a code search stops after 80 ms. Grep returns the matches that it finds before the deadline of its context, with more set, so the chip shows a "+". A cancel is still an error. --- README.md | 4 +++- internal/search/search.go | 6 ++++++ tui/model.go | 35 ++++++++++++++++++++--------------- tui/overlay.go | 4 +++- tui/search_test.go | 31 +++++++++++++++++++++++++++++++ tui/tui_test.go | 2 ++ vcs/hostile_test.go | 35 +++++++++++++++++++++++++++++++++++ vcs/refs.go | 22 ++++++++++++++++------ 8 files changed, 116 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 6262c63..637d9b2 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,9 @@ that show. | `q` | quit, or ask first if comments are unsent | | `Q` | when `q` asks first, quit and drop the comments. Else it does nothing | -The search shows up to 50 files and 200 lines of code, then "… more". With no +The search shows up to 50 files and 200 lines of code, then "… more". A code +search stops after 80 ms and shows the lines that it found, with a `+` after the +count. With no query, it lists the files you opened from the search in this session first. The preview below the results shows the file, with the match in the middle. diff --git a/internal/search/search.go b/internal/search/search.go index 49e0c59..a438024 100644 --- a/internal/search/search.go +++ b/internal/search/search.go @@ -4,6 +4,7 @@ package search import ( "slices" + "time" "github.com/sahilm/fuzzy" ) @@ -17,6 +18,11 @@ const ( CodeLimit = 200 ) +// CodeBudget is the time that a code search takes at most. After it, the +// search shows the lines that it finds, and a "+" tells that there can be +// others. +const CodeBudget = 80 * time.Millisecond + // Files returns at most limit of paths that match q, the best match // first, and the number of all the matches. For an empty q, the paths in // recent come first, in their order, and then the other paths. diff --git a/tui/model.go b/tui/model.go index 3a36538..677a2ce 100644 --- a/tui/model.go +++ b/tui/model.go @@ -17,6 +17,7 @@ import ( uv "github.com/charmbracelet/ultraviolet" "github.com/rednafi/rexdiff/diff" + "github.com/rednafi/rexdiff/internal/search" "github.com/rednafi/rexdiff/internal/termtext" "github.com/rednafi/rexdiff/internal/turn" "github.com/rednafi/rexdiff/rex" @@ -279,6 +280,9 @@ type model struct { // session, the last pick first. recent []string grepCancel context.CancelFunc // stops the code search that runs + // grepBudget is the time of a code search, search.CodeBudget. A test + // can set a longer time. + grepBudget time.Duration find findState drag dragState click clickChain @@ -303,21 +307,22 @@ func newModel(ctx context.Context, o Options, cfg config) model { ta.KeyMap.InsertNewline.SetKeys(defaultKeys().Newline.Keys()...) m := model{ - ctx: ctx, - repo: o.Repo, - rex: o.Rex, - log: o.Log, - notice: o.Notice, - updater: o.Updater, - w: 120, - h: 40, - focused: true, - base: o.Base, - baseFlag: o.Base != "", - wrap: o.Wrap, - editor: ta, - help: newHelp(), - agents: map[string]*agentState{}, + ctx: ctx, + repo: o.Repo, + rex: o.Rex, + log: o.Log, + notice: o.Notice, + updater: o.Updater, + w: 120, + h: 40, + focused: true, + base: o.Base, + baseFlag: o.Base != "", + wrap: o.Wrap, + editor: ta, + help: newHelp(), + agents: map[string]*agentState{}, + grepBudget: search.CodeBudget, } if m.log == nil { m.log = slog.New(slog.DiscardHandler) diff --git a/tui/overlay.go b/tui/overlay.go index 463e0da..70bb063 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -289,7 +289,9 @@ func (m *model) runSearch() tea.Cmd { return nil } ov.showSearch() - ctx, cancel := context.WithCancel(m.ctx) + // As in herdr-reviewr, a code search has a time budget. Past it, the + // search shows the matches that it finds by then. + ctx, cancel := context.WithTimeout(m.ctx, m.grepBudget) m.grepCancel = cancel repo := m.repo return func() tea.Msg { diff --git a/tui/search_test.go b/tui/search_test.go index 9c3df4c..8ab4c78 100644 --- a/tui/search_test.go +++ b/tui/search_test.go @@ -2,12 +2,16 @@ package tui import ( "fmt" + "os" + "path/filepath" "slices" "strings" "testing" + "time" tea "charm.land/bubbletea/v2" + "github.com/rednafi/rexdiff/internal/search" "github.com/rednafi/rexdiff/vcs" ) @@ -285,3 +289,30 @@ func TestSearchPreviewFile(t *testing.T) { t.Errorf("view got:\n%s\nwant \"no preview\"", view(m)) } } + +// TestSearchBudget checks that a code search past its time budget shows +// the matches that it finds by then, with a "+" in the chip. +// TestGrepDeadline in vcs checks the matches. +func TestSearchBudget(t *testing.T) { + m, _ := newTestModel(t) + m.grepBudget = search.CodeBudget + m = press(t, m, "/") + bin := t.TempDir() + // The fake git prints one match, then hangs. + script := "#!/bin/sh\nprintf 'a.go\\0001\\000hit\\n'\nexec /bin/sleep 10\n" + if err := os.WriteFile(filepath.Join(bin, "git"), []byte(script), 0o755); err != nil { + t.Fatal(err) + } + t.Setenv("PATH", bin) + m.overlay.input.SetValue("hit") + cmd := m.inputChanged() + start := time.Now() + msg := cmd() + if d := time.Since(start); d > 5*time.Second { + t.Fatalf("the code search takes %v, want about %v", d, search.CodeBudget) + } + // On a slow machine, the budget can end before the match. + if m = step(t, m, msg); !shows(m, "code 1+") && !shows(m, "code 0+") { + t.Errorf("view got:\n%s\nwant the chip \"code 1+\"", view(m)) + } +} diff --git a/tui/tui_test.go b/tui/tui_test.go index 41428c9..95c09ac 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -10,6 +10,7 @@ import ( "slices" "strings" "testing" + "time" tea "charm.land/bubbletea/v2" uv "github.com/charmbracelet/ultraviolet" @@ -41,6 +42,7 @@ func newTestModel(t testing.TB) (model, string) { t.Fatal(err) } m := newModel(t.Context(), Options{Repo: repo}, defaultConfig()) + m.grepBudget = time.Minute // a slow test machine does not cut the searches m.reload() m = step(t, m, tea.WindowSizeMsg{Width: 120, Height: 40}) return m, dir diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index 389ec44..cafa500 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -1,6 +1,7 @@ package vcs_test import ( + "context" "errors" "fmt" "os" @@ -9,6 +10,7 @@ import ( "reflect" "strings" "testing" + "time" "github.com/rednafi/rexdiff/vcs" ) @@ -367,3 +369,36 @@ func TestPullRequestBadJSON(t *testing.T) { }) } } + +// TestGrepDeadline checks that Grep returns the matches that it finds +// before the deadline of ctx, with more set, as herdr-reviewr does with +// its time budget. A cancel is still an error. +func TestGrepDeadline(t *testing.T) { + r, _ := newRepo(t) + bin := t.TempDir() + // The fake git prints one match, then hangs. + script := "#!/bin/sh\nprintf 'a.go\\0001\\000hit\\n'\nexec /bin/sleep 10\n" + if err := os.WriteFile(filepath.Join(bin, "git"), []byte(script), 0o755); err != nil { + t.Fatal(err) + } + t.Setenv("PATH", bin) + + ctx, cancel := context.WithTimeout(t.Context(), 300*time.Millisecond) + defer cancel() + ms, more, err := r.Grep(ctx, "hit", 10) + if err != nil || !more || len(ms) != 1 || ms[0].Text != "hit" { + t.Errorf("Grep past the deadline = %+v, %v, %v; want the hit, more, no error", ms, more, err) + } + + ctx, cancel = context.WithTimeout(t.Context(), 0) + defer cancel() + if ms, more, err := r.Grep(ctx, "hit", 10); err != nil || !more || len(ms) != 0 { + t.Errorf("Grep after the deadline = %+v, %v, %v; want none, more, no error", ms, more, err) + } + + ctx, stop := context.WithCancel(t.Context()) + stop() + if _, _, err := r.Grep(ctx, "hit", 10); !errors.Is(err, context.Canceled) { + t.Errorf("Grep after a cancel: error %v, want context.Canceled", err) + } +} diff --git a/vcs/refs.go b/vcs/refs.go index dfc2a37..0c8a639 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -198,6 +198,8 @@ type Match struct { // Grep returns at most limit lines of the tracked and the untracked files // that contain the text q. The search ignores case and binary files. When // it finds limit lines, it stops git, and more tells if there are others. +// At the deadline of ctx, Grep stops git and returns the lines that it +// finds before it, with more set to true. func (r *Repo) Grep(ctx context.Context, q string, limit int) (ms []Match, more bool, err error) { if strings.Contains(q, "\n") { // git reads each line of q as a pattern. A match is one line, so no @@ -217,6 +219,9 @@ func (r *Repo) Grep(ctx context.Context, q string, limit int) (ms []Match, more return nil, false, err } if err := cmd.Start(); err != nil { + if pastDeadline(ctx) { + return nil, true, nil + } if errors.Is(err, exec.ErrNotFound) { err = errors.New("git isn't installed") } @@ -228,15 +233,20 @@ func (r *Repo) Grep(ctx context.Context, q string, limit int) (ms []Match, more } err = cmd.Wait() switch { + case err == nil, more, exitedWith(err, 1): // done, stopped, or no match + return ms, more, nil + case pastDeadline(ctx): + return ms, true, nil case ctx.Err() != nil: return nil, false, ctx.Err() - case more, exitedWith(err, 1): // stopped, or no match - return ms, more, nil - case err != nil: - msg, _, _ := strings.Cut(strings.TrimSpace(stderr.String()), "\n") - return nil, false, fmt.Errorf("git grep: %w", &runError{cmp.Or(msg, err.Error()), err}) } - return ms, false, nil + msg, _, _ := strings.Cut(strings.TrimSpace(stderr.String()), "\n") + return nil, false, fmt.Errorf("git grep: %w", &runError{cmp.Or(msg, err.Error()), err}) +} + +// pastDeadline reports whether ctx ends at its deadline. +func pastDeadline(ctx context.Context) bool { + return errors.Is(ctx.Err(), context.DeadlineExceeded) } // readMatches reads at most limit matches of "git grep -n -z". Each match From def41575a85fcb684875641f27f890774d88d189 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:54:50 +0100 Subject: [PATCH 022/119] test(tui): shorten a line of the overlay click test --- tui/state_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tui/state_test.go b/tui/state_test.go index 5548409..10e0c56 100644 --- a/tui/state_test.go +++ b/tui/state_test.go @@ -63,7 +63,8 @@ func TestOverlayClickAboveRows(t *testing.T) { } _, _, y, _ := m.overlayBox() cur := m.overlay.cur - m = step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: m.w / 2, Y: y + 1}) // the title + title := tea.MouseClickMsg{Button: tea.MouseLeft, X: m.w / 2, Y: y + 1} + m = step(t, m, title) if m.overlay == nil { t.Fatal("a click on the title closes the overlay") } From ce3b29fbe4a6deb9e77aeb13f94c11536557eaa2 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 17:58:41 +0100 Subject: [PATCH 023/119] refactor(tui,cmd): check the choices with one helper tui checks the options and the settings with choice. The flag check in cmd joins the names with strings.Join. --- cmd/rexdiff/main.go | 18 +++++------------- tui/config.go | 36 ++++++++++++++++++------------------ tui/tui.go | 17 +++++++++-------- 3 files changed, 32 insertions(+), 39 deletions(-) diff --git a/cmd/rexdiff/main.go b/cmd/rexdiff/main.go index a373096..3f9c193 100644 --- a/cmd/rexdiff/main.go +++ b/cmd/rexdiff/main.go @@ -196,25 +196,17 @@ func parseFlags(args []string, stderr io.Writer) (flags, error) { func oneOf[T ~string](p *T, allowed ...T) func(string) error { return func(v string) error { if !slices.Contains(allowed, T(v)) { - return fmt.Errorf("expected one of %s", join(allowed)) + var want []string + for _, a := range allowed { + want = append(want, string(a)) + } + return fmt.Errorf("expected one of %s", strings.Join(want, ", ")) } *p = T(v) return nil } } -// join returns the values separated by ", ". -func join[T ~string](values []T) string { - var b strings.Builder - for i, v := range values { - if i > 0 { - b.WriteString(", ") - } - b.WriteString(string(v)) - } - return b.String() -} - // openLog returns a logger that appends to the file at path. If path is // empty, the logger discards everything. func openLog(path string) (*slog.Logger, func() error, error) { diff --git a/tui/config.go b/tui/config.go index 1fbbd89..6968f70 100644 --- a/tui/config.go +++ b/tui/config.go @@ -1,6 +1,7 @@ package tui import ( + "cmp" "encoding/json/jsontext" json "encoding/json/v2" "errors" @@ -261,19 +262,13 @@ func (c config) check(set map[string]jsontext.Value) error { // are the layout, the scope, the markdown view, and the file list. set // has the keys that the text sets. func (c config) checkChoices(set map[string]jsontext.Value) error { - choices := []struct { - key, value string - allowed []string - }{ - {"layout", string(c.Layout), names(layouts...)}, - {"default_scope", string(c.DefaultScope), names(configScopes...)}, - {"markdown_view", string(c.MarkdownView), names(markdownViews...)}, - {"file_list", string(c.FileList), names(positions...)}, - } - for _, k := range choices { - if !slices.Contains(k.allowed, k.value) { - return invalid(k.key, "one of "+strings.Join(k.allowed, ", "), k.value) - } + if err := cmp.Or( + choice("layout", c.Layout, layouts), + choice("default_scope", c.DefaultScope, configScopes), + choice("markdown_view", c.MarkdownView, markdownViews), + choice("file_list", c.FileList, positions), + ); err != nil { + return err } if set["file_list_width"] != nil && c.FileListWidth < minListWidth { want := strconv.Itoa(minListWidth) + " or more" @@ -421,10 +416,15 @@ func hostLabel(s string) bool { // focusAgent tells if the focus moves to the agent after a send. func (c config) focusAgent() bool { return c.FocusAgent == nil || *c.FocusAgent } -func names[T ~string](values ...T) []string { - s := make([]string, len(values)) - for i, v := range values { - s[i] = string(v) +// choice returns an error if value is not one of allowed. key is the name +// of the value in the error. +func choice[T ~string](key string, value T, allowed []T) error { + if slices.Contains(allowed, value) { + return nil + } + want := make([]string, len(allowed)) + for i, a := range allowed { + want[i] = string(a) } - return s + return invalid(key, "one of "+strings.Join(want, ", "), string(value)) } diff --git a/tui/tui.go b/tui/tui.go index 6b476b9..bccd077 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -8,8 +8,6 @@ import ( "errors" "fmt" "log/slog" - "slices" - "strings" tea "charm.land/bubbletea/v2" @@ -57,13 +55,16 @@ type Options struct { // check returns an error for options that Run cannot use. func (o Options) check() error { - switch { - case o.Repo == nil: + if o.Repo == nil { return errors.New("no repository") - case o.Layout != "" && !slices.Contains(layouts, o.Layout): - return invalid("layout", "one of "+strings.Join(names(layouts...), ", "), string(o.Layout)) - case o.Scope != "" && !slices.Contains(configScopes, o.Scope): - return invalid("scope", "one of "+strings.Join(names(configScopes...), ", "), string(o.Scope)) + } + if o.Layout != "" { + if err := choice("layout", o.Layout, layouts); err != nil { + return err + } + } + if o.Scope != "" { + return choice("scope", o.Scope, configScopes) } return nil } From b16c21bd21a13df6118d8dc4957834c9237308ed Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 18:08:52 +0100 Subject: [PATCH 024/119] refactor(tui): move the click on the main pane to clickMain --- tui/mouse.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tui/mouse.go b/tui/mouse.go index e81b02e..3087ba1 100644 --- a/tui/mouse.go +++ b/tui/mouse.go @@ -55,6 +55,13 @@ func (m *model) onClick(mouse tea.Mouse) tea.Cmd { } return nil } + return m.clickMain(mouse) +} + +// clickMain handles a press of the left button on the main pane. A click +// moves the cursor and starts a drag. A double or a triple click copies +// the text. +func (m *model) clickMain(mouse tea.Mouse) tea.Cmd { h := m.mainHeight() y := mouse.Y - m.mainY() if y < 0 || y >= h || mouse.X < m.mainX() || mouse.X >= m.mainX()+m.mainWidth() { From e08a6ef230853535714d2f2462db313b585736b8 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 18:08:52 +0100 Subject: [PATCH 025/119] refactor(tui): handle each message in one type switch --- tui/model.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/tui/model.go b/tui/model.go index 677a2ce..0416136 100644 --- a/tui/model.go +++ b/tui/model.go @@ -599,16 +599,9 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { // handle does the work of Update. Update then checks for a restart. func (m *model) handle(msg tea.Msg) tea.Cmd { var cmd tea.Cmd - switch msg.(type) { - case tea.KeyPressMsg, tea.MouseClickMsg: // these can move the cursor - m.changes.free, m.viewer.free, m.prPane.free = false, false, false - } - switch msg.(type) { - case tea.KeyPressMsg, tea.WindowSizeMsg: // these end a chain of clicks - m.click = clickChain{} - } switch msg := msg.(type) { case tea.WindowSizeMsg: + m.click = clickChain{} m.w, m.h = msg.Width, msg.Height m.rerender() case tea.FocusMsg: @@ -649,6 +642,7 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { case editorDoneMsg: m.onEditorDone(msg) case tea.MouseClickMsg: + m.followCursor() return m.onClick(msg.Mouse()) case tea.MouseMotionMsg: m.onDrag(msg.Mouse()) @@ -659,12 +653,20 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { case tea.PasteMsg: cmd = m.onPaste(msg.Content) case tea.KeyPressMsg: + m.click = clickChain{} + m.followCursor() return m.onKey(msg) } m.ensureVisible() return cmd } +// followCursor makes the panes keep the cursor on the screen again. A key +// or a click can move the cursor. +func (m *model) followCursor() { + m.changes.free, m.viewer.free, m.prPane.free = false, false, false +} + // onKey gives a key to the part of the screen that takes the keys. func (m *model) onKey(msg tea.KeyPressMsg) tea.Cmd { m.log.Debug("key", "key", msg.String(), "mode", m.mode, "scope", m.scope) From 7cbd91e2a32a8589398478eac93fca10b1834372 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 18:10:17 +0100 Subject: [PATCH 026/119] refactor(tui): find the expanded ignored directories with one helper --- tui/tree.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tui/tree.go b/tui/tree.go index 4c730df..b40ae99 100644 --- a/tui/tree.go +++ b/tui/tree.go @@ -182,8 +182,7 @@ func (m *model) withIgnored(es []vcs.Entry) []vcs.Entry { // The loop also reads the entries that it adds, for the directories // in an ignored directory. for i := 0; i < len(es); i++ { - dir, isDir := strings.CutSuffix(es[i].Path, "/") - if isDir && es[i].Ignored && m.fileTree.toggled[dir] { + if dir, ok := m.openIgnored(es[i]); ok { es = append(es, m.repo.IgnoredDir(dir)...) } } @@ -199,14 +198,20 @@ func (m *model) shownIgnored() []string { } var dirs []string for _, e := range m.allFiles { - dir, isDir := strings.CutSuffix(e.Path, "/") - if isDir && e.Ignored && m.fileTree.toggled[dir] { + if dir, ok := m.openIgnored(e); ok { dirs = append(dirs, dir) } } return dirs } +// openIgnored returns the path of e without the last "/", and reports +// whether e is an ignored directory that the user expands in the Files tab. +func (m *model) openIgnored(e vcs.Entry) (string, bool) { + dir, isDir := strings.CutSuffix(e.Path, "/") + return dir, isDir && e.Ignored && m.fileTree.toggled[dir] +} + // onDir reports whether the file list has the focus and its cursor is on // a directory. func (m *model) onDir() bool { From d67766480c92b8f96322bc5b2e91fb84bb53f514 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 18:13:12 +0100 Subject: [PATCH 027/119] perf(tui): find the hits of the find band once per frame View finds the hits once and gives them to the footer and to the main pane. The callers that need only the rows of the screen give no hits. --- tui/box_test.go | 2 +- tui/find.go | 22 ++++++++-------------- tui/mouse.go | 4 ++-- tui/tui_test.go | 4 ++-- tui/view.go | 36 ++++++++++++++++++++++-------------- 5 files changed, 35 insertions(+), 33 deletions(-) diff --git a/tui/box_test.go b/tui/box_test.go index 38b35c9..18087c7 100644 --- a/tui/box_test.go +++ b/tui/box_test.go @@ -13,7 +13,7 @@ import ( // boxShows reports whether the comment box of m shows in the main pane. func boxShows(m model) bool { p, h := m.cur(), m.mainHeight() - _, rowAt := m.mainLines(h) + _, rowAt := m.mainLines(h, nil) i := slices.Index(rowAt, p.end(p.cur)) return m.mode == modeComment && i >= 0 && i+1+lipgloss.Height(m.editor.View()) <= h } diff --git a/tui/find.go b/tui/find.go index c5bf3b8..13b9a03 100644 --- a/tui/find.go +++ b/tui/find.go @@ -186,27 +186,21 @@ func (m *model) stepFind(d int) { cursorToLine(p, diff.SideNew, h.line) } -// findRows returns the rows of the hits that show, for the marks in the -// gutter. -func (m *model) findRows() map[int]bool { +// shownHits returns the hits of the query in the find band, or nil if +// the band is closed. +func (m *model) shownHits() []findHit { if m.mode != modeFind { return nil } - rows := map[int]bool{} - for _, h := range m.findHits(m.find.input.Value()) { - if h.line == 0 { - rows[h.row] = true - } - } - return rows + return m.findHits(m.find.input.Value()) } // findBand renders the find band: the query, and the count at the right. -// The count is "i/n" on a hit, n off a hit, or "no matches". -func (m *model) findBand() string { +// The count is "i/n" on a hit, n off a hit, or "no matches". hits are the +// hits of the query. +func (m *model) findBand(hits []findHit) string { count := "" - if q := m.find.input.Value(); q != "" { - hits := m.findHits(q) + if m.find.input.Value() != "" { before, on := m.findPlace(hits) switch { case len(hits) == 0: diff --git a/tui/mouse.go b/tui/mouse.go index 3087ba1..076782e 100644 --- a/tui/mouse.go +++ b/tui/mouse.go @@ -67,7 +67,7 @@ func (m *model) clickMain(mouse tea.Mouse) tea.Cmd { if y < 0 || y >= h || mouse.X < m.mainX() || mouse.X >= m.mainX()+m.mainWidth() { return nil } - _, rowAt := m.mainLines(h) + _, rowAt := m.mainLines(h, nil) if y >= len(rowAt) || rowAt[y] < 0 { return nil } @@ -118,7 +118,7 @@ func (m *model) onDrag(mouse tea.Mouse) { p.top = min(p.top+1, max(len(p.lines)-1, 0)) p.cur = max(min(p.top+h-1, len(p.lines)-1), 0) default: - _, rowAt := m.mainLines(h) + _, rowAt := m.mainLines(h, nil) for yy := min(y, len(rowAt)-1); yy >= 0; yy-- { if rowAt[yy] >= 0 { p.cur = rowAt[yy] diff --git a/tui/tui_test.go b/tui/tui_test.go index 95c09ac..9f9b1f6 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -322,7 +322,7 @@ func TestDragAfterReload(t *testing.T) { // screenY returns the screen line of row i of the current pane. func screenY(t *testing.T, m model, i int) int { t.Helper() - _, rowAt := m.mainLines(m.mainHeight()) + _, rowAt := m.mainLines(m.mainHeight(), nil) y := slices.Index(rowAt, i) if y < 0 { t.Fatalf("row %d is not on the screen, want it on the screen", i) @@ -359,7 +359,7 @@ func TestClickOldNumber(t *testing.T) { func TestClickCommentBox(t *testing.T) { m, _ := newTestModel(t) m = press(t, m, "]", "c", "h", "i") - _, rowAt := m.mainLines(m.mainHeight()) + _, rowAt := m.mainLines(m.mainHeight(), nil) box := bodyY + slices.Index(rowAt, m.changes.cur) + 1 clicks := []struct { where string diff --git a/tui/view.go b/tui/view.go index 206ec5f..1bd8b0d 100644 --- a/tui/view.go +++ b/tui/view.go @@ -331,8 +331,9 @@ func fitName(p string, room int) string { } // mainLines renders the visible part of the main pane. rowAt[y] is the row -// on screen line y, or -1 for a note, a comment, or the comment box. -func (m *model) mainLines(h int) (lines []string, rowAt []int) { +// on screen line y, or -1 for a note, a comment, or the comment box. hits +// are the find hits that get a mark. The marks do not change rowAt. +func (m *model) mainLines(h int, hits []findHit) (lines []string, rowAt []int) { p := m.cur() if note := m.emptyNote(); note != "" { return []string{"", " " + dimStyle.Render(note)}, []int{-1, -1} @@ -350,12 +351,17 @@ func (m *model) mainLines(h int) (lines []string, rowAt []int) { add(l, -1) } } - hits := m.findRows() + marked := map[int]bool{} + for _, h := range hits { + if h.line == 0 { // a hit in a fold has no row of its own + marked[h.row] = true + } + } for i := p.top; i < len(p.lines) && len(lines) < h; i++ { // A wrapped line shows its marks on its first row, and its // comments below its last row. t := m.target(i, diff.SideNew) - add(m.rowMark(i, t, lo, hi, hits[i])+p.lines[i], i) + add(m.rowMark(i, t, lo, hi, marked[i])+p.lines[i], i) if t != nil && p.end(i) == i { addBelow(m.commentsBelow(t)) } @@ -480,7 +486,7 @@ func (m *model) ensureVisible() { p.top = max(p.top, last-h+1) p.top = min(last, p.top, max(len(p.lines)-1, 0)) for p.top < last { - _, rowAt := m.mainLines(h) + _, rowAt := m.mainLines(h, nil) idx := slices.Index(rowAt, p.end(p.cur)) if idx >= 0 && idx+1+box <= h { return @@ -490,12 +496,13 @@ func (m *model) ensureVisible() { } // footer renders the notice, the status, and the help of the keys. The -// notice wraps, so that the user can read all of it. -func (m *model) footer() string { +// notice wraps, so that the user can read all of it. hits are the hits of +// the find band. +func (m *model) footer(hits []findHit) string { if m.notice != "" { - return delStyle.Render(wrapWords(m.notice, m.w)) + "\n" + m.footerLine() + return delStyle.Render(wrapWords(m.notice, m.w)) + "\n" + m.footerLine(hits) } - return m.footerLine() + return m.footerLine(hits) } // wrapWords breaks s into lines of width w or less, at spaces only. @@ -531,9 +538,9 @@ func wrapWords(s string, w int) string { // footerLine renders the status and the help of the keys, or the find // band. -func (m *model) footerLine() string { +func (m *model) footerLine(hits []findHit) string { if m.mode == modeFind { - return m.findBand() + return m.findBand(hits) } m.help.SetWidth(m.w) var badge string @@ -571,7 +578,7 @@ func (m *model) footerLine() string { } // bodyHeight returns the number of lines between the header and the footer. -func (m *model) bodyHeight() int { return m.heightAbove(m.footer()) } +func (m *model) bodyHeight() int { return m.heightAbove(m.footer(m.shownHits())) } // heightAbove returns the height of the body above footer. func (m *model) heightAbove(footer string) int { @@ -580,12 +587,13 @@ func (m *model) heightAbove(footer string) int { // View renders the screen. func (m *model) View() tea.View { - footer := m.footer() + hits := m.shownHits() + footer := m.footer(hits) h := m.heightAbove(footer) hdr, _ := m.header() mh := m.mainHeightOf(h) - ml, _ := m.mainLines(mh) + ml, _ := m.mainLines(mh, hits) main := box(ml, m.mainWidth(), mh) body := main rule := dimStyle.Render(strings.Repeat("─", m.w)) From e011087cfef7dea9d9e6d7820657737f406951b4 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 18:18:37 +0100 Subject: [PATCH 028/119] perf(tui): read the open file only when the watcher sees a change With a watcher, the Files tab reads the open file after the watcher reports a change of the files, and no more on each tick. The watcher also gets the open ignored file, as in herdr-reviewr, because git does not list it. Without a watcher, each tick reads the file. --- tui/model.go | 4 +-- tui/tree.go | 16 +++++++--- tui/watch_test.go | 78 +++++++++++++++++++++++++++++++++++++++++++++++ vcs/watch.go | 17 ++++++----- vcs/watch_test.go | 8 ++++- 5 files changed, 107 insertions(+), 16 deletions(-) diff --git a/tui/model.go b/tui/model.go index 0416136..27128fb 100644 --- a/tui/model.go +++ b/tui/model.go @@ -886,8 +886,8 @@ func (m *model) reloadDue() { m.reloadAt = time.Now().Add(budgetFactor * time.Since(now)) case m.tab == tabFiles && m.filesOwed: m.reloadFiles() // reloadFiles renders the file too - case m.tab == tabFiles: - m.refreshViewer() + case m.tab == tabFiles && m.watch == nil: + m.refreshViewer() // without a watcher, each tick reads the file } } diff --git a/tui/tree.go b/tui/tree.go index b40ae99..bf02154 100644 --- a/tui/tree.go +++ b/tui/tree.go @@ -190,19 +190,25 @@ func (m *model) withIgnored(es []vcs.Entry) []vcs.Entry { return es } -// shownIgnored returns the ignored directories that the user expands in -// the Files tab, when that tab shows. The watcher reports their changes. +// shownIgnored returns the ignored paths that the Files tab shows, when +// that tab shows. They are the directories that the user expands and the +// open file. The watcher reports their changes, as in herdr-reviewr. func (m *model) shownIgnored() []string { if m.tab != tabFiles { return nil } - var dirs []string + var paths []string for _, e := range m.allFiles { if dir, ok := m.openIgnored(e); ok { - dirs = append(dirs, dir) + paths = append(paths, dir) } } - return dirs + if m.allSel < len(m.allFiles) { + if e := m.allFiles[m.allSel]; e.Ignored && !strings.HasSuffix(e.Path, "/") { + paths = append(paths, e.Path) + } + } + return paths } // openIgnored returns the path of e without the last "/", and reports diff --git a/tui/watch_test.go b/tui/watch_test.go index c5bb0a7..01b32a4 100644 --- a/tui/watch_test.go +++ b/tui/watch_test.go @@ -3,9 +3,12 @@ package tui import ( "errors" "os" + "path/filepath" "strings" "testing" "time" + + tea "charm.land/bubbletea/v2" ) // watched returns a test model with a watcher, after its first tick. The @@ -96,3 +99,78 @@ func TestRetryBackoff(t *testing.T) { } } } + +// watchedTree returns newTreeModel on the Files tab, with a watcher, after +// its first tick. The next check of the watcher is due after the time that +// it returns. +func watchedTree(t *testing.T) (m model, dir string, pause time.Duration) { + t.Helper() + m, dir = newTreeModel(t) + w, err := m.repo.Watch(t.Context()) + if err != nil { + t.Fatal(err) + } + m.watch = w + m = press(t, m, "2") + start := time.Now() + m = step(t, m, tickMsg{}) + return m, dir, 42 * time.Since(start) +} + +// openFile moves the cursor of the file list down to the file at path. +func openFile(t *testing.T, m model, path string) model { + t.Helper() + for range len(m.fileTree.rows) { + if shownPath(m) == path { + return m + } + m = press(t, m, "j") + } + if shownPath(m) != path { + t.Fatalf("shows %s, want %s", shownPath(m), path) + } + return m +} + +// TestFilesTabWaitsForWatcher checks that, with a watcher, a tick reads +// the open file of the Files tab only after the watcher reports a change. +func TestFilesTabWaitsForWatcher(t *testing.T) { + m, dir, pause := watchedTree(t) + const path = "top.go" + m = openFile(t, m, path) + fi, err := os.Stat(filepath.Join(dir, path)) + if err != nil { + t.Fatal(err) + } + // An edit that keeps the size and the time is not a change for the + // watcher. + write(t, dir, path, "package a\n\nvar x = 2\n") + if err := os.Chtimes(filepath.Join(dir, path), fi.ModTime(), fi.ModTime()); err != nil { + t.Fatal(err) + } + time.Sleep(pause) + if m = step(t, m, tickMsg{}); shows(m, "var x = 2") { + t.Errorf("no change for the watcher, view got:\n%s\nwant no read", view(m)) + } + write(t, dir, path, "package a\n\nvar x = 42\n") + time.Sleep(pause) + if m = step(t, m, tickMsg{}); !shows(m, "var x = 42") { + t.Errorf("view got:\n%s\nwant the edit", view(m)) + } +} + +// TestTickSeesIgnoredEdit checks that a tick shows an edit of the open +// file in an expanded ignored directory, as in herdr-reviewr. +func TestTickSeesIgnoredEdit(t *testing.T) { + m, dir, pause := watchedTree(t) + m.fileTree.cur = 0 + m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) // expand out + m = openFile(t, m, "out/x.txt") + time.Sleep(pause) + m = step(t, m, tickMsg{}) // the watcher gets the open file + write(t, dir, "out/x.txt", "an edit\n") + time.Sleep(pause) + if m = step(t, m, tickMsg{}); !shows(m, "an edit") { + t.Errorf("view got:\n%s\nwant the edit", view(m)) + } +} diff --git a/vcs/watch.go b/vcs/watch.go index 6bbd465..5396ce8 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -59,14 +59,15 @@ func (r *Repo) Watch(ctx context.Context) (*Watcher, error) { return &Watcher{r: r, gitDir: gitDir, common: common, now: time.Now}, nil } -// Show sets the ignored directories that the user expands. dirs are -// relative to the root. Git does not list the paths in an ignored -// directory, thus Changed also reports a file that a shown directory gets -// or loses. A new set reports no change. -func (w *Watcher) Show(dirs []string) { - abs := make([]string, len(dirs)) - for i, d := range dirs { - abs[i] = filepath.Join(w.r.root, filepath.FromSlash(d)) +// Show sets the ignored paths that show: the directories that the user +// expands and the open file. paths are relative to the root. Git does not +// list ignored paths, thus Changed also reports an edit of a shown file, +// and a file that a shown directory gets or loses. A new set reports no +// change. +func (w *Watcher) Show(paths []string) { + abs := make([]string, len(paths)) + for i, p := range paths { + abs[i] = filepath.Join(w.r.root, filepath.FromSlash(p)) } if !slices.Equal(abs, w.shown) { w.shown, w.shownSum = abs, sumPaths(abs) diff --git a/vcs/watch_test.go b/vcs/watch_test.go index 49fb02c..cab5651 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -124,7 +124,8 @@ func TestWatcherUnignore(t *testing.T) { } // TestWatcherShown checks that a file that an expanded ignored directory -// gets or loses is a change, as in herdr-reviewr. +// gets or loses is a change, and an edit of a shown ignored file, as in +// herdr-reviewr. func TestWatcherShown(t *testing.T) { r, dir := newRepo(t) w := newWatcher(t, r) @@ -151,6 +152,11 @@ func TestWatcherShown(t *testing.T) { if got := changed(t, w); got.Files { t.Errorf("a new file after Show(nil): %+v, want no Files", got) } + w.Show([]string{"ignored.txt"}) + write(t, dir, "ignored.txt", "an edit\n") + if got := changed(t, w); !got.Files { + t.Errorf("an edit of a shown file: %+v, want Files", got) + } } // TestWatcherNested checks that a commit in a nested repository or in a From bd8e4d7fbeeaa4536747b92fa8a0dd5853c327f6 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 18:21:07 +0100 Subject: [PATCH 029/119] refactor(editor,tui): pick the editor in internal/editor editor.Resolve picks the editor of the settings, $VISUAL, $EDITOR, or core.editor, and returns the messages for the user. tui only runs the command. Template and Program are not exported. --- internal/editor/editor.go | 39 ++++++++++++++++++++------ internal/editor/editor_test.go | 50 +++++++++++++++++++++++++--------- tui/editor.go | 23 ++++------------ 3 files changed, 74 insertions(+), 38 deletions(-) diff --git a/internal/editor/editor.go b/internal/editor/editor.go index d2eeef3..2c1bb3c 100644 --- a/internal/editor/editor.go +++ b/internal/editor/editor.go @@ -1,9 +1,11 @@ -// Package editor makes the sh command that opens a file at a line in a -// text editor. It also tells if the editor opens a window or draws in the -// terminal. +// Package editor picks the text editor of the user, and makes the sh +// command that opens a file at a line in it. It also tells if the editor +// opens a window or draws in the terminal. package editor import ( + "cmp" + "errors" "path/filepath" "runtime" "slices" @@ -18,11 +20,32 @@ type Command struct { Window bool // the editor opens a window, not a terminal editor } -// Template returns the command that opens file at line with template, +// Resolve returns the command that opens file at line. It uses template, +// the editor command of the settings, if it is not empty. Else it uses the +// first of visual, env, and git that is not blank. They are $VISUAL, +// $EDITOR, and core.editor. Each error is a message for the user. +func Resolve(template, visual, env, git, file string, line int) (Command, error) { + var c Command + if template != "" { + c = fromTemplate(template, file, line) + } else { + e := cmp.Or(strings.TrimSpace(visual), strings.TrimSpace(env), strings.TrimSpace(git)) + if e == "" { + return Command{}, errors.New("no editor: set `editor` in rexdiff.lua, $EDITOR, or git's core.editor") + } + c = fromEditor(e, file, line) + } + if c.Program == "" { + return Command{}, errors.New("the editor command names no program") + } + return c, nil +} + +// fromTemplate returns the command that opens file at line with template, // a command that the user writes. The template gets file in place of // {file}, and line in place of {line}. Without {file}, file goes at the // end. -func Template(template, file string, line int) Command { +func fromTemplate(template, file string, line int) Command { r := strings.NewReplacer("{file}", ShellQuote(file), "{line}", strconv.Itoa(line)) script := r.Replace(template) if !strings.Contains(template, "{file}") { @@ -31,10 +54,10 @@ func Template(template, file string, line int) Command { return Command{script, program(template), dialectOf(template).window} } -// Program returns the command that opens file at line in an editor. -// command starts the editor, for example the value of $EDITOR. Program +// fromEditor returns the command that opens file at line in an editor. +// command starts the editor, for example the value of $EDITOR. fromEditor // adds file and line in the form that the editor expects. -func Program(command, file string, line int) Command { +func fromEditor(command, file string, line int) Command { d := dialectOf(command) n, f := strconv.Itoa(line), ShellQuote(file) at := ShellQuote(file + ":" + n) diff --git a/internal/editor/editor_test.go b/internal/editor/editor_test.go index db21f0a..fc095bc 100644 --- a/internal/editor/editor_test.go +++ b/internal/editor/editor_test.go @@ -39,15 +39,10 @@ func TestCommands(t *testing.T) { {"", "myeditor --wait", `myeditor --wait +12 '/r/a b.go'`, true}, } for _, tt := range tests { - var got editor.Command - if tt.template != "" { - got = editor.Template(tt.template, abs, 12) - } else { - got = editor.Program(tt.editor, abs, 12) - } - if got.Script != tt.script || got.Window != tt.window { - t.Errorf("editor %q%q = %+v, want script %q, window %v", - tt.template, tt.editor, got, tt.script, tt.window) + got, err := editor.Resolve(tt.template, "", tt.editor, "", abs, 12) + if err != nil || got.Script != tt.script || got.Window != tt.window { + t.Errorf("editor %q%q = %+v, %v; want script %q, window %v", + tt.template, tt.editor, got, err, tt.script, tt.window) } } } @@ -63,12 +58,41 @@ func TestCommandProgram(t *testing.T) { {`""`, ""}, {"'' vim", ""}, } + const noProgram = "the editor command names no program" for _, tt := range tests { - if got := editor.Program(tt.command, "/a", 1).Program; got != tt.want { - t.Errorf("Program(%q).Program = %q, want %q", tt.command, got, tt.want) + for _, c := range []struct{ template, env string }{{tt.command, ""}, {"", tt.command}} { + got, err := editor.Resolve(c.template, "", c.env, "", "/a", 1) + switch { + case tt.want == "" && (err == nil || err.Error() != noProgram): + t.Errorf("Resolve(%q, %q) error = %v, want %q", c.template, c.env, err, noProgram) + case tt.want != "" && got.Program != tt.want: + t.Errorf("Resolve(%q, %q).Program = %q, want %q", c.template, c.env, got.Program, tt.want) + } } - if got := editor.Template(tt.command, "/a", 1).Program; got != tt.want { - t.Errorf("Template(%q).Program = %q, want %q", tt.command, got, tt.want) + } +} + +// TestResolveOrder checks that the settings come first, then $VISUAL, +// $EDITOR, and core.editor. A blank value does not count. +func TestResolveOrder(t *testing.T) { + tests := []struct { + template, visual, env, git string + want string + }{ + {"zed {file}", "vim", "nano", "hx", "zed"}, + {"", "vim", "nano", "hx", "vim"}, + {"", " ", "nano", "hx", "nano"}, + {"", "", "\t", "hx", "hx"}, + } + for _, tt := range tests { + got, err := editor.Resolve(tt.template, tt.visual, tt.env, tt.git, "/a", 1) + if err != nil || got.Program != tt.want { + t.Errorf("Resolve(%q, %q, %q, %q) = %q, %v; want %q", + tt.template, tt.visual, tt.env, tt.git, got.Program, err, tt.want) } } + const noEditor = "no editor: set `editor` in rexdiff.lua, $EDITOR, or git's core.editor" + if _, err := editor.Resolve("", " ", "", "\n", "/a", 1); err == nil || err.Error() != noEditor { + t.Errorf("Resolve with no editor: error = %v, want %q", err, noEditor) + } } diff --git a/tui/editor.go b/tui/editor.go index bc3bd35..bbd1b4f 100644 --- a/tui/editor.go +++ b/tui/editor.go @@ -2,7 +2,6 @@ package tui import ( "bytes" - "cmp" "errors" "fmt" "os" @@ -24,23 +23,13 @@ import ( // background. The messages are the same as in herdr-reviewr. func (m *model) openEditor(path string, line int) tea.Cmd { abs := filepath.Join(m.repo.Root(), path) - var ed editor.Command - if m.cfg.Editor != "" { - ed = editor.Template(m.cfg.Editor, abs, line) - } else { - e := cmp.Or( - strings.TrimSpace(os.Getenv("VISUAL")), - strings.TrimSpace(os.Getenv("EDITOR")), - strings.TrimSpace(m.repo.Editor(m.ctx)), - ) - if e == "" { - m.flash("no editor: set `editor` in rexdiff.lua, $EDITOR, or git's core.editor") - return nil - } - ed = editor.Program(e, abs, line) + var git string + if m.cfg.Editor == "" { + git = m.repo.Editor(m.ctx) } - if ed.Program == "" { - m.flash("the editor command names no program") + ed, err := editor.Resolve(m.cfg.Editor, os.Getenv("VISUAL"), os.Getenv("EDITOR"), git, abs, line) + if err != nil { + m.flash(err.Error()) return nil } // The editor makes the file again when it saves, so do not open a From b89c68e01edbba0191bb0db2af6b860ca8a518aa Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 18:23:16 +0100 Subject: [PATCH 030/119] refactor(tui): drop the focused field that nothing reads --- tui/model.go | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/tui/model.go b/tui/model.go index 27128fb..0129483 100644 --- a/tui/model.go +++ b/tui/model.go @@ -186,13 +186,12 @@ type model struct { phase updatePhase restartState string // the file of the state for the restart, or "" - w, h int - bg, fg color.Color - red color.Color // the ANSI red of the terminal, or nil - green color.Color // the ANSI green of the terminal, or nil - dark bool - focused bool - ticks int + w, h int + bg, fg color.Color + red color.Color // the ANSI red of the terminal, or nil + green color.Color // the ANSI green of the terminal, or nil + dark bool + ticks int // watch tells when the files or the refs change, or is nil. If it is // nil, a tick reloads the current tab every pollEvery, after polled. @@ -315,7 +314,6 @@ func newModel(ctx context.Context, o Options, cfg config) model { updater: o.Updater, w: 120, h: 40, - focused: true, base: o.Base, baseFlag: o.Base != "", wrap: o.Wrap, @@ -605,10 +603,7 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { m.w, m.h = msg.Width, msg.Height m.rerender() case tea.FocusMsg: - m.focused = true m.reloadIfChanged() - case tea.BlurMsg: - m.focused = false case tickMsg: cmd = m.onTick() case tea.BackgroundColorMsg: From f61a74228037028ffc348a808b6a30c4aa21f889 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 18:24:39 +0100 Subject: [PATCH 031/119] style: format with gofumpt --- cmd/rexdiff/install_test.go | 6 ++++-- diff/fold_test.go | 12 ++++++++---- internal/tree/tree.go | 3 ++- tui/copy_test.go | 6 ++++-- tui/keys.go | 12 ++++++++---- 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/cmd/rexdiff/install_test.go b/cmd/rexdiff/install_test.go index ec91c29..6e48fc3 100644 --- a/cmd/rexdiff/install_test.go +++ b/cmd/rexdiff/install_test.go @@ -94,8 +94,10 @@ func TestUpgrade(t *testing.T) { } write(noMark) n := upgrade(ctx, bin) - for _, want := range []string{"cannot upgrade rexdiff.lua", lua, codeMark, - "cannot tell your settings from its code", "Put that line back"} { + for _, want := range []string{ + "cannot upgrade rexdiff.lua", lua, codeMark, + "cannot tell your settings from its code", "Put that line back", + } { if !strings.Contains(n, want) { t.Errorf("notice = %q, want %q in it", n, want) } diff --git a/diff/fold_test.go b/diff/fold_test.go index 89875d3..726d59c 100644 --- a/diff/fold_test.go +++ b/diff/fold_test.go @@ -135,11 +135,15 @@ func TestFoldEdges(t *testing.T) { }{ // Changes at 10 and 18 leave line 14 alone between the margins. The // line shows, because a fold of one line saves no row. - {"one line", numbered(21), numbered(21, 10, 18), - "@1/1+6 7:7 8:8 9:9 10:0 0:10 11:11 12:12 13:13 14:14 15:15 16:16 17:17 18:0 0:18 19:19 20:20 21:21"}, + { + "one line", numbered(21), numbered(21, 10, 18), + "@1/1+6 7:7 8:8 9:9 10:0 0:10 11:11 12:12 13:13 14:14 15:15 16:16 17:17 18:0 0:18 19:19 20:20 21:21", + }, // After an insert, the old and the new numbers of a fold differ. - {"insert at the top", numbered(12), "new\n" + numbered(12), - "@0/0+0 0:1 1:2 2:3 3:4 @4/5+9"}, + { + "insert at the top", numbered(12), "new\n" + numbered(12), + "@0/0+0 0:1 1:2 2:3 3:4 @4/5+9", + }, // A file without equal lines has no fold. {"all new", "", "a\nb\n", "@0/0+0 0:1 0:2"}, } diff --git a/internal/tree/tree.go b/internal/tree/tree.go index f5a9469..3bc1b61 100644 --- a/internal/tree/tree.go +++ b/internal/tree/tree.go @@ -96,7 +96,8 @@ func (n *node) child(name string) *node { // flatten adds the rows of the children of dir at path prefix. func flatten(rows *[]Row, dir *node, prefix string, depth int, toggled map[string]bool, - expanded bool, entries []Entry) { + expanded bool, entries []Entry, +) { for _, name := range slices.Sorted(maps.Keys(dir.dirs)) { display, path, n := compress(name, join(prefix, name), dir.dirs[name]) if fname, i, ok := loneFile(n); ok { diff --git a/tui/copy_test.go b/tui/copy_test.go index fc7b000..d987290 100644 --- a/tui/copy_test.go +++ b/tui/copy_test.go @@ -62,8 +62,10 @@ func TestCopyFails(t *testing.T) { setup func(t *testing.T) want string }{ - {"no tool", func(t *testing.T) { t.Setenv("PATH", t.TempDir()) }, - "copy failed: install wl-clipboard, xclip, or xsel"}, + { + "no tool", func(t *testing.T) { t.Setenv("PATH", t.TempDir()) }, + "copy failed: install wl-clipboard, xclip, or xsel", + }, {"exit 1", func(t *testing.T) { fakeClipboard(t, true) }, "copy failed"}, } for _, tt := range tests { diff --git a/tui/keys.go b/tui/keys.go index 9545465..74d0cd3 100644 --- a/tui/keys.go +++ b/tui/keys.go @@ -305,11 +305,15 @@ func (h helpKeys) ShortHelp() []key.Binding { case h.mode == modeComment: return []key.Binding{k.Save, k.Newline, k.Cancel} case h.armed > 0: - return []key.Binding{hint(k.NextHunk, firstKey(k.NextHunk), "next file"), - k.Comment, k.Send, k.Keys, k.Quit} + return []key.Binding{ + hint(k.NextHunk, firstKey(k.NextHunk), "next file"), + k.Comment, k.Send, k.Keys, k.Quit, + } case h.armed < 0: - return []key.Binding{hint(k.PrevHunk, firstKey(k.PrevHunk), "prev file"), - k.Comment, k.Send, k.Keys, k.Quit} + return []key.Binding{ + hint(k.PrevHunk, firstKey(k.PrevHunk), "prev file"), + k.Comment, k.Send, k.Keys, k.Quit, + } case h.visual: return []key.Binding{ k.Comment, From 97f0a083f0a30a4ad76ca99bf459354f93c40c9f Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 18:41:11 +0100 Subject: [PATCH 032/119] build(lint): adopt a stricter golangci-lint config and fix the findings Add the bug-finder, style and security linters and the gofumpt formatter. Discard the errors of best-effort cleanups explicitly, give the test commands a context, and name the test helpers right. Two nolint comments mark real false positives: the editor command has no context on purpose, and a hash keeps the bits of a negative int64. --- .golangci.yml | 55 ++++++++++++++++++++++++++++++++++++++ cmd/rexdiff/main.go | 17 ++++++------ cmd/rexdiff/script_test.go | 4 ++- diff/comment_test.go | 2 +- diff/diff.go | 2 ++ rex/rex.go | 4 +-- rex/rex_test.go | 5 +++- tui/bench_test.go | 1 + tui/click_test.go | 2 +- tui/copy_test.go | 4 +-- tui/editor.go | 15 ++++++++--- tui/editor_test.go | 2 +- tui/find.go | 3 ++- tui/nav.go | 4 +-- tui/release_test.go | 17 +++++++++--- tui/resume.go | 7 ++--- tui/tui.go | 5 +++- tui/tui_test.go | 42 ++++++++++++++--------------- update/update.go | 6 ++--- update/update_test.go | 4 ++- vcs/hostile_test.go | 4 +-- vcs/pr.go | 5 ++-- vcs/pr_test.go | 10 ++++--- vcs/refs.go | 6 ++--- vcs/repo.go | 16 +++++------ vcs/repo_test.go | 6 ++--- vcs/saved_test.go | 2 +- vcs/watch.go | 15 +++++++---- vcs/watch_test.go | 7 +++++ 29 files changed, 186 insertions(+), 86 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 75948a8..1be4496 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -7,6 +7,29 @@ linters: - ineffassign - staticcheck - unused + - errcheck + - errorlint + - nilerr + - noctx + - bodyclose + - forcetypeassert + - durationcheck + - makezero + - reassign + - nakedret + - gocritic + - revive + - misspell + - usestdlibvars + - perfsprint + - intrange + - copyloopvar + - modernize + - thelper + - dupword + - nolintlint + - gosec + - unparam settings: staticcheck: checks: @@ -18,7 +41,39 @@ linters: - -ST1021 - -ST1022 - -QF1001 # De Morgan: the current form reads better + errcheck: + exclude-functions: + - fmt.Fprint + - fmt.Fprintf + - fmt.Fprintln + dupword: + # The Lua code in cmd/rexdiff/install.go ends two blocks with "end end". + ignore: + - end + misspell: + # No locale: the comments use British spelling, for example "colour". + ignore-rules: + - reviewr + gosec: + # rexdiff runs git and rex, and reads and writes the user's files. + excludes: + - G204 # subprocess with a variable + - G301 # directory permissions + - G302 # file permissions on chmod + - G304 # file path from a variable + - G306 # file permissions on write + - G703 # file path from a variable, found by taint analysis + nolintlint: + require-explanation: true + require-specific: true + exclusions: + rules: + - path: _test\.go + linters: [forcetypeassert, unparam] + - linters: [revive] + text: redefines-builtin-id formatters: enable: - gofmt + - gofumpt diff --git a/cmd/rexdiff/main.go b/cmd/rexdiff/main.go index 3f9c193..a0a77c2 100644 --- a/cmd/rexdiff/main.go +++ b/cmd/rexdiff/main.go @@ -31,10 +31,10 @@ import ( func main() { ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt) - defer stop() - if err := run(ctx, os.Args[1:], os.Stdout, os.Stderr); err != nil { + err := run(ctx, os.Args[1:], os.Stdout, os.Stderr) + stop() + if err != nil { fmt.Fprintln(os.Stderr, "rexdiff:", err) - stop() os.Exit(1) } } @@ -207,16 +207,17 @@ func oneOf[T ~string](p *T, allowed ...T) func(string) error { } } -// openLog returns a logger that appends to the file at path. If path is -// empty, the logger discards everything. -func openLog(path string) (*slog.Logger, func() error, error) { +// openLog returns a logger that appends to the file at path, and a function +// that closes the file. If path is empty, the logger discards everything. +// The log is only for debugging, so the close ignores errors. +func openLog(path string) (*slog.Logger, func(), error) { if path == "" { - return slog.New(slog.DiscardHandler), func() error { return nil }, nil + return slog.New(slog.DiscardHandler), func() {}, nil } f, err := os.OpenFile(path, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o644) if err != nil { return nil, nil, err } h := slog.NewTextHandler(f, &slog.HandlerOptions{Level: slog.LevelDebug}) - return slog.New(h), f.Close, nil + return slog.New(h), func() { _ = f.Close() }, nil } diff --git a/cmd/rexdiff/script_test.go b/cmd/rexdiff/script_test.go index 74c6cd6..26a07a6 100644 --- a/cmd/rexdiff/script_test.go +++ b/cmd/rexdiff/script_test.go @@ -28,7 +28,9 @@ func fakeRex() { panic(err) } fmt.Fprintln(f, strings.Join(os.Args[1:], " ")) - f.Close() + if err := f.Close(); err != nil { + panic(err) + } if os.Getenv("REX_FAIL") != "" { fmt.Fprintln(os.Stderr, "no Rex server") os.Exit(1) diff --git a/diff/comment_test.go b/diff/comment_test.go index fc3433c..6007c3e 100644 --- a/diff/comment_test.go +++ b/diff/comment_test.go @@ -198,7 +198,7 @@ func TestSnippetIsTheRealDiff(t *testing.T) { } } // git diff exits with 1 when the files differ. - git := exec.Command( + git := exec.CommandContext(t.Context(), "git", "diff", "--no-index", "-U1", filepath.Join(dir, "old"), filepath.Join(dir, "new"), diff --git a/diff/diff.go b/diff/diff.go index 241b60d..9cbd3ab 100644 --- a/diff/diff.go +++ b/diff/diff.go @@ -18,6 +18,7 @@ import ( // Kind is the type of a rendered row. type Kind int +// These are the kinds of a row. const ( KindHunk Kind = iota // a hunk header, with no source line KindEqual // a line that is the same on the two sides @@ -29,6 +30,7 @@ const ( // Side identifies one version of a file. type Side int +// These are the two sides of a file. const ( SideOld Side = iota // the version before the change SideNew // the version after the change diff --git a/rex/rex.go b/rex/rex.go index ab264f0..c190df4 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -432,9 +432,9 @@ func (c *Client) watchOnce(ctx context.Context, again bool, fn func(Event)) { if lines.Err() != nil { // A line is too long. Stop rex, because rex can wait until Watch // reads the rest of its output. - cmd.Process.Kill() + _ = cmd.Process.Kill() } - cmd.Wait() + _ = cmd.Wait() // Watch starts rex again, whatever the error } // blockEvent is an event of one block in "rex events --json". diff --git a/rex/rex_test.go b/rex/rex_test.go index c135f94..2acc8d9 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -208,11 +208,14 @@ func TestWatchReconnect(t *testing.T) { ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() var got []rex.Event - c.Watch(ctx, func(e rex.Event) { + err := c.Watch(ctx, func(e rex.Event) { if got = append(got, e); len(got) == len(want) { cancel() } }) + if !errors.Is(err, context.Canceled) { + t.Errorf("Watch = %v, want context.Canceled", err) + } if !slices.Equal(got, want) { t.Errorf("events got:\n%+v\nwant:\n%+v", got, want) } diff --git a/tui/bench_test.go b/tui/bench_test.go index 4806a59..d63ec51 100644 --- a/tui/bench_test.go +++ b/tui/bench_test.go @@ -77,6 +77,7 @@ func BenchmarkScroll(b *testing.B) { // bigChange returns a model that shows a change to big.go, a file of 5,000 // long lines. The change edits each 100th line. func bigChange(b *testing.B) model { + b.Helper() m, dir := newTestModel(b) var old, cur strings.Builder for i := range 5000 { diff --git a/tui/click_test.go b/tui/click_test.go index 7a19332..c35acc8 100644 --- a/tui/click_test.go +++ b/tui/click_test.go @@ -25,7 +25,7 @@ func codeCell(t *testing.T, m model, needle string) (x, y int) { return 0, 0 } -// clicks clicks n times at x, y, and runs the command of the last click. +// clicks sends n clicks at x, y, and runs the command of the last click. func clicks(t *testing.T, m model, n, x, y int) model { t.Helper() for range n - 1 { diff --git a/tui/copy_test.go b/tui/copy_test.go index d987290..d84d12e 100644 --- a/tui/copy_test.go +++ b/tui/copy_test.go @@ -63,10 +63,10 @@ func TestCopyFails(t *testing.T) { want string }{ { - "no tool", func(t *testing.T) { t.Setenv("PATH", t.TempDir()) }, + "no tool", func(t *testing.T) { t.Helper(); t.Setenv("PATH", t.TempDir()) }, "copy failed: install wl-clipboard, xclip, or xsel", }, - {"exit 1", func(t *testing.T) { fakeClipboard(t, true) }, "copy failed"}, + {"exit 1", func(t *testing.T) { t.Helper(); fakeClipboard(t, true) }, "copy failed"}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/tui/editor.go b/tui/editor.go index bbd1b4f..571a77d 100644 --- a/tui/editor.go +++ b/tui/editor.go @@ -54,7 +54,7 @@ func (m *model) openEditor(path string, line int) tea.Cmd { } m.log.Debug("editor split", "err", err) } - return tea.ExecProcess(exec.Command("sh", "-c", ed.Script), func(err error) tea.Msg { + return tea.ExecProcess(command("sh", "-c", ed.Script), func(err error) tea.Msg { return editorDoneMsg{path: path, err: err} }) } @@ -64,7 +64,7 @@ func (m *model) openEditor(path string, line int) tea.Cmd { // If the editor fails, the returned command gives the error and the last // line of the stderr of the editor. func (m *model) runWindowEditor(path, script string) tea.Cmd { - cmd := exec.Command("sh", "-c", script) + cmd := command("sh", "-c", script) var stderr bytes.Buffer cmd.Stderr = &stderr cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true} @@ -119,10 +119,17 @@ func openURL(cfg config, url string) error { // waits for the program, so that the program does not stay a zombie // process. func start(name string, args ...string) error { - cmd := exec.Command(name, args...) + cmd := command(name, args...) if err := cmd.Start(); err != nil { return err } - go cmd.Wait() + go func() { _ = cmd.Wait() }() return nil } + +// command returns the command for an editor or a URL opener. The command +// has no context, because the program must not stop when rexdiff stops. +// For example, a kill of the editor can lose the edits of the user. +func command(name string, args ...string) *exec.Cmd { + return exec.Command(name, args...) //nolint:noctx // see the doc comment +} diff --git a/tui/editor_test.go b/tui/editor_test.go index 831a395..88ee57f 100644 --- a/tui/editor_test.go +++ b/tui/editor_test.go @@ -199,7 +199,7 @@ func TestTerminalEditorDone(t *testing.T) { if !shows(m, "edited a.go") { t.Errorf("view got:\n%s\nwant \"edited a.go\"", view(m)) } - err := exec.Command("sh", "-c", "exit 2").Run() + err := exec.CommandContext(t.Context(), "sh", "-c", "exit 2").Run() m = step(t, m, editorDoneMsg{path: "a.go", err: err}) if !shows(m, "editor exited with exit status 2") { t.Errorf("view got:\n%s\nwant \"editor exited with exit status 2\"", view(m)) diff --git a/tui/find.go b/tui/find.go index 13b9a03..7ac2585 100644 --- a/tui/find.go +++ b/tui/find.go @@ -6,6 +6,7 @@ package tui import ( "fmt" + "strconv" "strings" "charm.land/bubbles/v2/textinput" @@ -208,7 +209,7 @@ func (m *model) findBand(hits []findHit) string { case on: count = fmt.Sprintf("%d/%d", before+1, len(hits)) default: - count = fmt.Sprint(len(hits)) + count = strconv.Itoa(len(hits)) } } w := max(m.w-ansi.StringWidth(count)-1, 1) diff --git a/tui/nav.go b/tui/nav.go index 92cea84..3aab7b2 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -379,7 +379,7 @@ type openFolds struct { // hash returns the FNV-1a hash of s. func hash(s string) uint64 { h := fnv.New64a() - h.Write([]byte(s)) // a hash.Hash does not fail + _, _ = h.Write([]byte(s)) // a hash.Hash does not fail return h.Sum64() } @@ -714,7 +714,7 @@ func lineKey(msg tea.KeyPressMsg) bool { case tea.KeyBackspace, tea.KeyDelete, tea.KeyLeft, tea.KeyRight, tea.KeyHome, tea.KeyEnd: return true } - return len(msg.Text) == 1 && strings.Contains("0123456789$", msg.Text) + return len(msg.Text) == 1 && strings.ContainsAny(msg.Text, "0123456789$") } // pastedLine returns the line in pasted text for the go-to-line prompt. diff --git a/tui/release_test.go b/tui/release_test.go index faf5798..d4068c0 100644 --- a/tui/release_test.go +++ b/tui/release_test.go @@ -92,7 +92,7 @@ func TestUpdate(t *testing.T) { if m.restartState == "" { t.Fatal("no restart after the comment, want a restart") } - t.Cleanup(func() { os.Remove(m.restartState) }) + t.Cleanup(func() { removeState(t, m.restartState) }) // The new rexdiff reads back the comment and the place. saved, err := loadState(m.restartState) @@ -218,7 +218,7 @@ func TestRestartWaits(t *testing.T) { if m.restartState == "" { t.Fatal("no restart after the send, want a restart") } - os.Remove(m.restartState) + removeState(t, m.restartState) // In the PR tab, the key r returns the command that loads the PR. So r // does not restart. A message without a command starts the restart. @@ -232,7 +232,7 @@ func TestRestartWaits(t *testing.T) { if m.restartState == "" { t.Fatal("no restart on a message without a command, want a restart") } - os.Remove(m.restartState) + removeState(t, m.restartState) } // TestRestorePRPlace checks that the place in the PR tab comes back after @@ -298,7 +298,7 @@ func TestRestartOnTick(t *testing.T) { if m.restartState == "" || cmd == nil { t.Fatal("no restart on a tick, want a restart") } - os.Remove(m.restartState) + removeState(t, m.restartState) } // TestSavePendingPRPlace checks that a restart before the PR loads saves @@ -404,3 +404,12 @@ func TestPickerWaitsForComment(t *testing.T) { t.Errorf("comments = %q, want the comment that the user wrote", got) } } + +// removeState removes the state file at path, if it is there, and fails the +// test if it cannot. +func removeState(t *testing.T, path string) { + t.Helper() + if err := os.Remove(path); err != nil && !errors.Is(err, fs.ErrNotExist) { + t.Error(err) + } +} diff --git a/tui/resume.go b/tui/resume.go index b45fe46..4e76184 100644 --- a/tui/resume.go +++ b/tui/resume.go @@ -107,8 +107,8 @@ func (m *model) saveState() (string, error) { return "", err } if _, err := f.Write(b); err != nil { - f.Close() - os.Remove(f.Name()) + _ = f.Close() + _ = os.Remove(f.Name()) return "", err } return f.Name(), f.Close() @@ -120,7 +120,8 @@ func loadState(path string) (*savedState, error) { if err != nil { return nil, err } - os.Remove(path) + // A file that stays in the temporary directory does no harm. + _ = os.Remove(path) s := &savedState{Comments: new(diff.Comments)} if err := json.Unmarshal(b, s); err != nil { return nil, err diff --git a/tui/tui.go b/tui/tui.go index bccd077..9d31161 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -116,7 +116,10 @@ func Run(ctx context.Context, o Options) (resume string, err error) { } program := tea.NewProgram(&m, tea.WithContext(ctx)) if o.Rex != nil { - go o.Rex.Watch(ctx, func(e rex.Event) { program.Send(eventMsg(e)) }) + // Watch returns only the error of ctx, when ctx is done. + go func() { + _ = o.Rex.Watch(ctx, func(e rex.Event) { program.Send(eventMsg(e)) }) + }() } final, err := program.Run() if fm, ok := final.(*model); ok && err == nil { diff --git a/tui/tui_test.go b/tui/tui_test.go index 9f9b1f6..2b7ca5d 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -23,35 +23,35 @@ import ( // newTestModel makes a repository and a model that shows it. The branch // main has a.go. The branch feat adds b.go. The working tree changes a.go. -func newTestModel(t testing.TB) (model, string) { - t.Helper() - dir := t.TempDir() - run := func(args ...string) { git(t, dir, args...) } +func newTestModel(tb testing.TB) (model, string) { + tb.Helper() + dir := tb.TempDir() + run := func(args ...string) { git(tb, dir, args...) } run("init", "-q", "-b", "main") - write(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") + write(tb, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") run("add", ".") run("commit", "-qm", "init") run("checkout", "-qb", "feat") - write(t, dir, "b.go", "package a\n") + write(tb, dir, "b.go", "package a\n") run("add", ".") run("commit", "-qm", "add b") - write(t, dir, "a.go", "package a\n\nfunc A() int {\n\tx := 2\n\treturn x\n}\n") + write(tb, dir, "a.go", "package a\n\nfunc A() int {\n\tx := 2\n\treturn x\n}\n") - repo, err := vcs.Open(t.Context(), dir) + repo, err := vcs.Open(tb.Context(), dir) if err != nil { - t.Fatal(err) + tb.Fatal(err) } - m := newModel(t.Context(), Options{Repo: repo}, defaultConfig()) + m := newModel(tb.Context(), Options{Repo: repo}, defaultConfig()) m.grepBudget = time.Minute // a slow test machine does not cut the searches m.reload() - m = step(t, m, tea.WindowSizeMsg{Width: 120, Height: 40}) + m = step(tb, m, tea.WindowSizeMsg{Width: 120, Height: 40}) return m, dir } // git runs git in dir and fails the test if git fails. -func git(t testing.TB, dir string, args ...string) { - t.Helper() - cmd := exec.Command("git", args...) +func git(tb testing.TB, dir string, args ...string) { + tb.Helper() + cmd := exec.CommandContext(tb.Context(), "git", args...) cmd.Dir = dir cmd.Env = append( os.Environ(), @@ -61,21 +61,21 @@ func git(t testing.TB, dir string, args ...string) { "GIT_COMMITTER_EMAIL=t@t", ) if out, err := cmd.CombinedOutput(); err != nil { - t.Fatalf("git %v: %s", args, out) + tb.Fatalf("git %v: %s", args, out) } } // write writes a file in dir and fails the test if it cannot. -func write(t testing.TB, dir, name, content string) { - t.Helper() +func write(tb testing.TB, dir, name, content string) { + tb.Helper() if err := os.WriteFile(filepath.Join(dir, name), []byte(content), 0o644); err != nil { - t.Fatal(err) + tb.Fatal(err) } } // step gives msg to m and returns the new model. -func step(t testing.TB, m model, msg tea.Msg) model { - t.Helper() +func step(tb testing.TB, m model, msg tea.Msg) model { + tb.Helper() next, _ := m.Update(msg) return *next.(*model) } @@ -394,7 +394,7 @@ func TestSendError(t *testing.T) { // that show stay, and the error is a flash. func TestMissingHead(t *testing.T) { m, dir := newTestModel(t) - sha, err := exec.Command("git", "-C", dir, "rev-parse", "HEAD").Output() + sha, err := exec.CommandContext(t.Context(), "git", "-C", dir, "rev-parse", "HEAD").Output() if err != nil { t.Fatal(err) } diff --git a/update/update.go b/update/update.go index 2c1059f..fafe65d 100644 --- a/update/update.go +++ b/update/update.go @@ -347,9 +347,9 @@ func replaceFile(path string, content []byte, check func(tmp string) error) erro if err != nil { return err } - defer os.Remove(tmp.Name()) // does nothing after the rename + defer func() { _ = os.Remove(tmp.Name()) }() // fails after the rename if _, err := tmp.Write(content); err != nil { - tmp.Close() + _ = tmp.Close() return err } if err := tmp.Close(); err != nil { @@ -375,7 +375,7 @@ func get(ctx context.Context, url string, limit int64) ([]byte, error) { if err != nil { return nil, err } - defer resp.Body.Close() + defer func() { _ = resp.Body.Close() }() if resp.StatusCode != http.StatusOK { return nil, fmt.Errorf("GET %s: %s", url, resp.Status) } diff --git a/update/update_test.go b/update/update_test.go index 5577814..b583bc7 100644 --- a/update/update_test.go +++ b/update/update_test.go @@ -234,7 +234,9 @@ func TestDownload(t *testing.T) { http.NotFound(w, req) return } - w.Write(b) + if _, err := w.Write(b); err != nil { + t.Error(err) + } })) t.Cleanup(srv.Close) release := func(prefix string) Release { diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index cafa500..b26c9ec 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -193,7 +193,7 @@ func TestReadFileStaysInRoot(t *testing.T) { t.Fatal(err) } } - if err := exec.Command("mkfifo", filepath.Join(dir, "fifo")).Run(); err != nil { + if err := exec.CommandContext(t.Context(), "mkfifo", filepath.Join(dir, "fifo")).Run(); err != nil { t.Fatal(err) } bad := []string{"../secret", secret, "to-secret", "to-zero", "to-dir", "fifo"} @@ -248,7 +248,7 @@ func TestGitWorktree(t *testing.T) { if got != "Ma.txt Astaged.txt" { t.Errorf("Diff(Head, Snapshot) = %s, want Ma.txt Astaged.txt", got) } - st, _ := exec.Command("git", "-C", wt, "status", "--porcelain").Output() + st, _ := exec.CommandContext(t.Context(), "git", "-C", wt, "status", "--porcelain").Output() if string(st) != " M a.txt\nA staged.txt\n" { t.Errorf("git status in the worktree got:\n%s\nwant:\n%s", st, " M a.txt\nA staged.txt\n") diff --git a/vcs/pr.go b/vcs/pr.go index 0331fe9..f2e5baa 100644 --- a/vcs/pr.go +++ b/vcs/pr.go @@ -353,10 +353,9 @@ func (r *Repo) gitLab(ctx context.Context) (*PullRequest, error) { // request without them. var ds []gitLabDiscussion args := []string{"mr", "note", "list", "--output", "json"} - if err := r.decode(ctx, nil, &ds, "glab", args...); err != nil { - return pr, nil + if err := r.decode(ctx, nil, &ds, "glab", args...); err == nil { + pr.Comments = gitLabComments(ds) } - pr.Comments = gitLabComments(ds) return pr, nil } diff --git a/vcs/pr_test.go b/vcs/pr_test.go index ef567ac..4fd6c7c 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -7,6 +7,7 @@ import ( "path/filepath" "reflect" "slices" + "strings" "testing" "github.com/rednafi/rexdiff/vcs" @@ -17,12 +18,13 @@ import ( // "unexpected call". func fakeTool(t *testing.T, dir, name string, calls map[string]string) { t.Helper() - script := "#!/bin/sh\ncase \"$*\" in\n" + var script strings.Builder + script.WriteString("#!/bin/sh\ncase \"$*\" in\n") for args, out := range calls { - script += "'" + args + "') cat <<'EOF'\n" + out + "\nEOF\n;;\n" + script.WriteString("'" + args + "') cat <<'EOF'\n" + out + "\nEOF\n;;\n") } - script += "*) echo unexpected call: \"$*\" >&2; exit 1 ;;\nesac\n" - if err := os.WriteFile(filepath.Join(dir, name), []byte(script), 0o755); err != nil { + script.WriteString("*) echo unexpected call: \"$*\" >&2; exit 1 ;;\nesac\n") + if err := os.WriteFile(filepath.Join(dir, name), []byte(script.String()), 0o755); err != nil { t.Fatal(err) } } diff --git a/vcs/refs.go b/vcs/refs.go index 0c8a639..73f2018 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -37,7 +37,7 @@ func (r *Repo) Commits(ctx context.Context, since string) ([]Commit, error) { nFields = 5 // the number of fields in format ) _, err := r.run(ctx, nil, "rev-parse", "-q", "--verify", "HEAD") - if exitedWith(err, 1) { + if exitedOne(err) { return nil, nil } args := []string{"log", "--first-parent", format} @@ -229,11 +229,11 @@ func (r *Repo) Grep(ctx context.Context, q string, limit int) (ms []Match, more } ms, more = readMatches(bufio.NewReader(out), limit) if more { - cmd.Process.Kill() + _ = cmd.Process.Kill() } err = cmd.Wait() switch { - case err == nil, more, exitedWith(err, 1): // done, stopped, or no match + case err == nil, more, exitedOne(err): // done, stopped, or no match return ms, more, nil case pastDeadline(ctx): return ms, true, nil diff --git a/vcs/repo.go b/vcs/repo.go index 687ccbb..af299cf 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -133,10 +133,10 @@ type runError struct { func (e *runError) Error() string { return e.msg } func (e *runError) Unwrap() error { return e.err } -// exitedWith reports whether err is from a process that exited with code. -func exitedWith(err error, code int) bool { +// exitedOne reports whether err is from a process that exited with code 1. +func exitedOne(err error) bool { ee, ok := errors.AsType[*exec.ExitError](err) - return ok && ee.ExitCode() == code + return ok && ee.ExitCode() == 1 } // Resolve returns the object ID of rev, for example "HEAD" or "main^{tree}". @@ -163,7 +163,7 @@ func (r *Repo) Head(ctx context.Context) (string, error) { // rev-parse exits with 1 if HEAD names no commit yet. A broken HEAD, // for example one whose commit is missing, is an error. _, rerr := r.run(ctx, nil, "rev-parse", "-q", "--verify", "HEAD") - if exitedWith(rerr, 1) { + if exitedOne(rerr) { return emptyTree, nil } return "", err @@ -220,14 +220,14 @@ func (r *Repo) Snapshot(ctx context.Context) (string, error) { if err != nil { return "", err } - defer os.RemoveAll(dir) + defer func() { _ = os.RemoveAll(dir) }() idx := filepath.Join(dir, "index") if err := r.copyIndex(idx); err != nil { return "", err } env := []string{"GIT_INDEX_FILE=" + idx} _, err = r.run(ctx, env, "add", "-A", "--ignore-errors") - if exitedWith(err, 1) { + if exitedOne(err) { err = nil // git cannot add some files, but it adds the others } if err != nil { @@ -401,7 +401,7 @@ func (r *Repo) readBlobs(ctx context.Context, ids []string, blobs []blob) error } err = readBatch(bufio.NewReader(out), batch, blobs) if err != nil { - cmd.Process.Kill() + _ = cmd.Process.Kill() } if werr := cmd.Wait(); err == nil { err = werr @@ -481,7 +481,7 @@ func (r *Repo) ReadFile(path string) (string, error) { if err != nil { return "", err } - defer root.Close() + defer func() { _ = root.Close() }() st, err := root.Stat(path) if err != nil { return "", err diff --git a/vcs/repo_test.go b/vcs/repo_test.go index dfe0ca8..d8e497c 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -51,7 +51,7 @@ func newRepo(t *testing.T) (*vcs.Repo, string) { // git runs git in dir and fails the test if git fails. func git(t *testing.T, dir string, args ...string) { t.Helper() - cmd := exec.Command("git", args...) + cmd := exec.CommandContext(t.Context(), "git", args...) cmd.Dir = dir cmd.Env = append(os.Environ(), "GIT_AUTHOR_NAME=t", @@ -161,7 +161,7 @@ func TestScopes(t *testing.T) { } // Snapshot must not change the real index. - st, _ := exec.Command("git", "-C", dir, "status", "--porcelain").Output() + st, _ := exec.CommandContext(t.Context(), "git", "-C", dir, "status", "--porcelain").Output() if !strings.Contains(string(st), "?? new.txt") { t.Errorf("git status after Snapshot = %q, want ?? new.txt", st) } @@ -287,7 +287,7 @@ func TestFilesInConflict(t *testing.T) { run("checkout", "-q", "main") write(t, dir, "f.txt", "main\n") run("commit", "-qam", "main") - cmd := exec.Command("git", "merge", "other") + cmd := exec.CommandContext(t.Context(), "git", "merge", "other") cmd.Dir = dir if err := cmd.Run(); err == nil { t.Fatal("git merge other: no error, want a conflict") diff --git a/vcs/saved_test.go b/vcs/saved_test.go index 074ad64..1fe4968 100644 --- a/vcs/saved_test.go +++ b/vcs/saved_test.go @@ -45,7 +45,7 @@ func TestSavedBase(t *testing.T) { // hashObject writes s as a blob in the repository dir and returns its ID. func hashObject(t *testing.T, dir, s string) string { t.Helper() - cmd := exec.Command("git", "hash-object", "-w", "--stdin") + cmd := exec.CommandContext(t.Context(), "git", "hash-object", "-w", "--stdin") cmd.Dir, cmd.Stdin = dir, strings.NewReader(s) out, err := cmd.Output() if err != nil { diff --git a/vcs/watch.go b/vcs/watch.go index 5396ce8..f7e5d7b 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -210,7 +210,7 @@ func (r *Repo) notIgnored(ctx context.Context, paths []string) ([]string, error) } in := strings.NewReader(strings.Join(paths, "\x00")) out, err := r.runInput(ctx, nil, in, "check-ignore", "-z", "--stdin") - if exitedWith(err, 1) { + if exitedOne(err) { return paths, nil // git ignores none } if err != nil { @@ -296,6 +296,11 @@ func (s *sum) num(v uint64) { } } +// int adds v, for example a size or a time. +func (s *sum) int(v int64) { + s.num(uint64(v)) //nolint:gosec // a hash keeps all bits, so a wrap is fine +} + // stat adds the path and the file status of p. A missing file adds a // marker. stat reports whether p is a directory. func (s *sum) stat(p string) (isDir bool) { @@ -305,8 +310,8 @@ func (s *sum) stat(p string) (isDir bool) { s.num(0) return false } - s.num(uint64(fi.Size())) - s.num(uint64(fi.ModTime().UnixNano())) + s.int(fi.Size()) + s.int(fi.ModTime().UnixNano()) s.num(uint64(fi.Mode())) if st, ok := fi.Sys().(*syscall.Stat_t); ok { s.num(st.Ino) @@ -342,8 +347,8 @@ func (s *sum) nested(p string) { s.num(0) continue } - s.num(uint64(fi.Size())) - s.num(uint64(fi.ModTime().UnixNano())) + s.int(fi.Size()) + s.int(fi.ModTime().UnixNano()) } } diff --git a/vcs/watch_test.go b/vcs/watch_test.go index cab5651..3ead63e 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -46,6 +46,7 @@ func TestWatcher(t *testing.T) { }{ {"nothing", func(*testing.T, string) {}, vcs.Change{}}, {"same size, new time", func(t *testing.T, dir string) { + t.Helper() write(t, dir, "a.txt", "one\nxyz\n") // the same size p := filepath.Join(dir, "a.txt") later := time.Now().Add(time.Hour) @@ -54,23 +55,29 @@ func TestWatcher(t *testing.T) { } }, files}, {"new file", func(t *testing.T, dir string) { + t.Helper() write(t, dir, "c.txt", "c\n") }, files}, {"new directory", func(t *testing.T, dir string) { + t.Helper() write(t, dir, "x/y/c.txt", "c\n") }, files}, {"ignored", func(t *testing.T, dir string) { + t.Helper() write(t, dir, "build/more", "x\n") }, vcs.Change{}}, {"deleted", func(t *testing.T, dir string) { + t.Helper() if err := os.Remove(filepath.Join(dir, "b.txt")); err != nil { t.Fatal(err) } }, files}, {"commit", func(t *testing.T, dir string) { + t.Helper() git(t, dir, "commit", "-qam", "c") }, vcs.Change{Refs: true}}, {"checkout", func(t *testing.T, dir string) { + t.Helper() git(t, dir, "checkout", "-qb", "other") }, vcs.Change{Refs: true}}, } From b6fc857ffc8c4868337846fa0ad1ba8350036dc4 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 18:42:52 +0100 Subject: [PATCH 033/119] ci: tighten permissions, check drift, and add govulncheck and dependabot Give the workflows read access by default, and write access only to the release job, which pushes the cask. Add timeouts to each job, cancel a run that a new one replaces, fail on go mod tidy and go fix drift, and run govulncheck on each push, pull request and week. Dependabot updates the Go modules and the actions each week. --- .github/dependabot.yml | 10 ++++++++++ .github/workflows/ci.yml | 27 +++++++++++++++++++++++++++ .github/workflows/release.yml | 8 +++++++- 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..01fffd3 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: gomod + directory: / + schedule: + interval: weekly + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c84da4a..f43a712 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,14 +4,23 @@ on: push: branches: [master] pull_request: + # Each week, check the code against the new vulnerability reports. + schedule: + - cron: "0 6 * * 1" permissions: contents: read +# A new run of the same event and ref cancels the run before it. +concurrency: + group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} + cancel-in-progress: true + jobs: # Rex runs only on macOS, so rexdiff is tested there. test: runs-on: macos-latest + timeout-minutes: 20 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 @@ -22,18 +31,36 @@ jobs: lint: runs-on: ubuntu-latest + timeout-minutes: 10 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: go.mod + # Each check fails if the files differ from what the tool makes. + - name: go mod tidy + run: go mod tidy -diff + - name: go fix + run: test -z "$(go fix -diff ./... | tee /dev/stderr)" + # golangci-lint also runs the formatters gofmt and gofumpt. - uses: golangci/golangci-lint-action@v8 with: # Older releases cannot read the export data of a newer Go. version: v2.15.0 + govulncheck: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version-file: go.mod + - run: go run golang.org/x/vuln/cmd/govulncheck@v1.9.0 ./... + goreleaser: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e137c58..5975b4c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,12 +7,13 @@ on: types: [published] permissions: - contents: write + contents: read jobs: # CI runs only on branches, so a release runs the tests again. test: runs-on: macos-latest + timeout-minutes: 20 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 @@ -24,6 +25,11 @@ jobs: release: needs: test runs-on: ubuntu-latest + timeout-minutes: 20 + # GoReleaser uploads the files to the release and pushes + # Casks/rexdiff.rb to master with GITHUB_TOKEN. + permissions: + contents: write steps: - uses: actions/checkout@v4 with: From 9cf72b6f27bad2099b898c8dd4a7ac63a20a51ed Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 18:43:26 +0100 Subject: [PATCH 034/119] chore: fix the PATH of dev.sh, ignore more files, and document development dev.sh added an empty entry to PATH, the current directory, when REX_BIN_DIR was empty. The README lists the checks and what dev.sh needs. --- .gitignore | 2 ++ README.md | 18 ++++++++++++++++++ dev.sh | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d2fa71f..3fd8ea9 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ /dist/ *.test *.out +*.prof +.DS_Store diff --git a/README.md b/README.md index 637d9b2..9a89c5c 100644 --- a/README.md +++ b/README.md @@ -201,6 +201,24 @@ After a change: - git 2.31 or later - `gh`, `glab`, or `az` for the pull request tab. You must be logged in. +## Develop + +Before a commit, run the checks that CI runs. CI uses golangci-lint v2.15.0. + +```sh +go test -race ./... # test +golangci-lint run # lint, and check the format +golangci-lint fmt # format +go fix -diff ./... # check for code that go fix changes +go mod tidy -diff # check go.mod and go.sum +``` + +Some tests run the real rex if `REX_BIN_DIR` is the directory of rex. + +`./dev.sh` builds rexdiff and opens it in the Rex session `rexreview-test`, +beside a pane with the label "agent". It needs a running Rex, fish, and python3. +If rex is not on your `PATH`, set `REX_BIN_DIR` to its directory. + [Rex]: https://www.superlogical.com/rex diff --git a/dev.sh b/dev.sh index 0104105..a613b73 100755 --- a/dev.sh +++ b/dev.sh @@ -5,7 +5,7 @@ set -e BIN=/tmp/rexdiff-dev/rexdiff cd "$(dirname "$0")" && go build -o $BIN ./cmd/rexdiff -export PATH="$REX_BIN_DIR:$PATH" +export PATH="${REX_BIN_DIR:+$REX_BIN_DIR:}$PATH" S=rexreview-test; R=${REXDIFF_DEMO:-/tmp/rexreview-demo} has() { rex block inspect "$1" -s $S --json >/dev/null 2>&1; } rex ls | grep -q "^$S " || rex new $S --cwd $R -- fish >/dev/null From f0c8082c17bdb570ff8eebb3e1b1762b6bfaa341 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 18:45:41 +0100 Subject: [PATCH 035/119] build(deps): go 1.27.3, x/text, and goldmark with security fixes govulncheck found called vulnerabilities in crypto/x509 of go1.27.2, golang.org/x/text v0.27.0, and goldmark v1.7.8. --- go.mod | 14 +++++++------- go.sum | 24 ++++++++++++------------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/go.mod b/go.mod index 4d0e120..a06b0ff 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/rednafi/rexdiff -go 1.27.2 +go 1.27.3 require ( charm.land/bubbles/v2 v2.2.1 @@ -33,11 +33,11 @@ require ( github.com/muesli/cancelreader v0.2.2 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/xo/terminfo v1.0.0 // indirect - github.com/yuin/goldmark v1.7.8 // indirect + github.com/yuin/goldmark v1.8.6 // indirect github.com/yuin/goldmark-emoji v1.0.5 // indirect - golang.org/x/net v0.42.0 // indirect - golang.org/x/sync v0.22.0 // indirect - golang.org/x/sys v0.47.0 // indirect - golang.org/x/text v0.27.0 // indirect - golang.org/x/tools v0.35.0 // indirect + golang.org/x/net v0.59.0 // indirect + golang.org/x/sync v0.24.0 // indirect + golang.org/x/sys v0.48.0 // indirect + golang.org/x/text v0.43.0 // indirect + golang.org/x/tools v0.51.0 // indirect ) diff --git a/go.sum b/go.sum index b925765..2a86e6c 100644 --- a/go.sum +++ b/go.sum @@ -65,19 +65,19 @@ github.com/sahilm/fuzzy v0.1.3/go.mod h1:au6//VbVSqu6DFrkL2CfjlJ5iURpNCPeE+1GwY3 github.com/xo/terminfo v1.0.0 h1:2ZpYzqWzyyytjk3TP6aJVDhkMAkc99/1xKQdA3TDTBY= github.com/xo/terminfo v1.0.0/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= github.com/yuin/goldmark v1.7.1/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= -github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic= -github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= +github.com/yuin/goldmark v1.8.6 h1:d0VcaP1sx9GkFVkoW+KtggpGi2KZ965i14b0+bDQST4= +github.com/yuin/goldmark v1.8.6/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= github.com/yuin/goldmark-emoji v1.0.5 h1:EMVWyCGPlXJfUXBXpuMu+ii3TIaxbVBnEX9uaDC4cIk= github.com/yuin/goldmark-emoji v1.0.5/go.mod h1:tTkZEbwu5wkPmgTcitqddVxY9osFZiavD+r4AzQrh1U= golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= -golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= -golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= -golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= -golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= -golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= -golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/net v0.59.0 h1:5zfYln+w5XCxwrnMMJPufRgNoXEaGxl0wo5GqPXyues= +golang.org/x/net v0.59.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg= +golang.org/x/sync v0.24.0 h1:iqiDrGoDgyuvAKrhLQthUEzU/R378N78gXbBjxed7oA= +golang.org/x/sync v0.24.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0= +golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo= +golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og= +golang.org/x/text v0.43.0 h1:1QivrlhwAsnMOcqgOdl9my7s9OyZl8O5/UGUTJVXoWc= +golang.org/x/text v0.43.0/go.mod h1:hbSIYA/amXcRXTFSZqh8tWHEoqRvvbKPJ2uz/KU+a+s= +golang.org/x/tools v0.51.0 h1:k4Xc/1Om9jwkBJBo4NVLMSARBoWtK10mx+W5BnXCeAI= +golang.org/x/tools v0.51.0/go.mod h1:9eEncMayCV6zRMGhR5eZEC2iBx98qWcF1HZ9Z7wJOoA= From 07dfc21b6da81597ece77b35db07b3161b6eb1eb Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 19:02:25 +0100 Subject: [PATCH 036/119] test: run git in a hermetic environment from internal/testgit Each package that runs git calls testgit.Main from TestMain. It turns off the global and system config and the templates, unsets the variables that point git elsewhere, and fixes the author. The packages share the Git, WriteFile, Script, and NewRepo helpers in place of their own copies. --- cmd/rexdiff/install_test.go | 7 +- cmd/rexdiff/script_test.go | 7 +- diff/comment_test.go | 2 + internal/clipboard/clipboard_test.go | 6 +- internal/testgit/testgit.go | 130 +++++++++++++++++++++++ internal/testgit/testgit_test.go | 48 +++++++++ rex/rex_test.go | 19 +--- tui/anchor_test.go | 5 +- tui/bench_test.go | 11 +- tui/box_test.go | 3 +- tui/commits_test.go | 8 +- tui/copy_test.go | 9 +- tui/cross_test.go | 3 +- tui/editor_test.go | 22 +--- tui/fold_test.go | 15 +-- tui/layout_test.go | 3 +- tui/main_test.go | 9 ++ tui/notes_test.go | 11 +- tui/prfetch_test.go | 5 +- tui/reload_test.go | 7 +- tui/saved_test.go | 3 +- tui/search_test.go | 16 ++- tui/state_test.go | 3 +- tui/tree_test.go | 23 ++--- tui/tui_test.go | 59 +++-------- tui/turn_test.go | 11 +- tui/watch_test.go | 11 +- vcs/hostile_test.go | 64 ++++++------ vcs/main_test.go | 9 ++ vcs/pr_test.go | 13 ++- vcs/repo_test.go | 147 ++++++++++----------------- vcs/saved_test.go | 19 ++-- vcs/watch_test.go | 53 +++++----- 33 files changed, 437 insertions(+), 324 deletions(-) create mode 100644 internal/testgit/testgit.go create mode 100644 internal/testgit/testgit_test.go create mode 100644 tui/main_test.go create mode 100644 vcs/main_test.go diff --git a/cmd/rexdiff/install_test.go b/cmd/rexdiff/install_test.go index 6e48fc3..a29ca13 100644 --- a/cmd/rexdiff/install_test.go +++ b/cmd/rexdiff/install_test.go @@ -5,6 +5,8 @@ import ( "path/filepath" "strings" "testing" + + "github.com/rednafi/rexdiff/internal/testgit" ) // fakeRexDir returns a directory with a rex that writes its arguments to @@ -13,10 +15,7 @@ import ( func fakeRexDir(t *testing.T, log string) string { t.Helper() dir := t.TempDir() - script := "#!/bin/sh\necho \"$@\" >> " + log + "\n" - if err := os.WriteFile(filepath.Join(dir, "rex"), []byte(script), 0o755); err != nil { - t.Fatal(err) - } + testgit.Script(t, dir, "rex", "echo \"$@\" >> "+log+"\n") return dir } diff --git a/cmd/rexdiff/script_test.go b/cmd/rexdiff/script_test.go index 26a07a6..b28d3ff 100644 --- a/cmd/rexdiff/script_test.go +++ b/cmd/rexdiff/script_test.go @@ -7,6 +7,7 @@ import ( "strings" "testing" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rogpeppe/go-internal/testscript" ) @@ -62,13 +63,17 @@ func TestScripts(t *testing.T) { RequireExplicitExec: true, Setup: func(env *testscript.Env) error { // Each script runs in a new directory, $WORK. $WORK is also - // $HOME, so rexdiff does not see the files of the user. + // $HOME, so rexdiff and git do not see the files of the user. env.Setenv("HOME", env.WorkDir) env.Setenv("XDG_CONFIG_HOME", "") env.Setenv("REALREX", realRex) for _, k := range userEnv { env.Setenv(k, "") } + for _, kv := range testgit.Env() { + k, v, _ := strings.Cut(kv, "=") + env.Setenv(k, v) + } return nil }, Condition: func(cond string) (bool, error) { diff --git a/diff/comment_test.go b/diff/comment_test.go index 6007c3e..b36aa40 100644 --- a/diff/comment_test.go +++ b/diff/comment_test.go @@ -10,6 +10,7 @@ import ( "testing" "github.com/rednafi/rexdiff/diff" + "github.com/rednafi/rexdiff/internal/testgit" ) // comment returns a comment with text on all rows of the diff of old and @@ -203,6 +204,7 @@ func TestSnippetIsTheRealDiff(t *testing.T) { filepath.Join(dir, "old"), filepath.Join(dir, "new"), ) + git.Env = append(os.Environ(), testgit.Env()...) // no diff settings of the user out, _ := git.Output() _, body, _ := strings.Cut(string(out), "@@\n") if strings.TrimSuffix(body, "\n") != want { diff --git a/internal/clipboard/clipboard_test.go b/internal/clipboard/clipboard_test.go index 882c873..dc47956 100644 --- a/internal/clipboard/clipboard_test.go +++ b/internal/clipboard/clipboard_test.go @@ -7,6 +7,7 @@ import ( "testing" "github.com/rednafi/rexdiff/internal/clipboard" + "github.com/rednafi/rexdiff/internal/testgit" ) // fakeTool writes an executable script name in a new directory, and sets @@ -14,10 +15,7 @@ import ( func fakeTool(t *testing.T, name, script string) string { t.Helper() dir := t.TempDir() - path := filepath.Join(dir, name) - if err := os.WriteFile(path, []byte("#!/bin/sh\n"+script), 0o755); err != nil { - t.Fatal(err) - } + testgit.Script(t, dir, name, script) t.Setenv("PATH", dir) return dir } diff --git a/internal/testgit/testgit.go b/internal/testgit/testgit.go new file mode 100644 index 0000000..18e788d --- /dev/null +++ b/internal/testgit/testgit.go @@ -0,0 +1,130 @@ +// Package testgit has the test helpers that run git. The settings, hooks, +// and templates of the user do not change what git does in a test. +package testgit + +import ( + "errors" + "os" + "os/exec" + "path/filepath" + "strings" + "testing" +) + +// set is true after Main sets the environment. +var set bool + +// Main runs the tests of m in a git environment that ignores the setup of +// the user. Each package that runs git calls it from its TestMain. +// +// Git reads no global or system config, so no hooksPath, signing, +// fsmonitor, or diff setting applies. A new repository gets no hooks from +// a template. The variables that point git to another repository, or that +// add config, are unset. The commits have a fixed author. +func Main(m *testing.M) { + for _, kv := range Env() { + k, v, _ := strings.Cut(kv, "=") + if err := os.Setenv(k, v); err != nil { + panic(err) + } + } + for _, k := range unset { + if err := os.Unsetenv(k); err != nil { + panic(err) + } + } + set = true + m.Run() +} + +// Env returns the variables that Main sets, as "key=value" pairs. A test +// that runs a program with an environment of its own adds them. An empty +// GIT_TEMPLATE_DIR copies no template. +func Env() []string { + return []string{ + "GIT_CONFIG_GLOBAL=" + os.DevNull, + "GIT_CONFIG_NOSYSTEM=1", + "GIT_TEMPLATE_DIR=", + "GIT_AUTHOR_NAME=t", + "GIT_AUTHOR_EMAIL=t@t", + "GIT_COMMITTER_NAME=t", + "GIT_COMMITTER_EMAIL=t@t", + } +} + +// unset are the variables that make git use another repository, more +// config, or another diff program. +var unset = []string{ + "GIT_DIR", + "GIT_WORK_TREE", + "GIT_INDEX_FILE", + "GIT_OBJECT_DIRECTORY", + "GIT_ALTERNATE_OBJECT_DIRECTORIES", + "GIT_COMMON_DIR", + "GIT_NAMESPACE", + "GIT_CONFIG", + "GIT_CONFIG_COUNT", + "GIT_CONFIG_PARAMETERS", + "GIT_EXTERNAL_DIFF", + "GIT_DIFF_OPTS", +} + +// ready fails tb if Main does not run. +func ready(tb testing.TB) { + tb.Helper() + if !set { + tb.Fatal("testgit: TestMain does not call testgit.Main") + } +} + +// Git runs git in dir and returns its standard output. It fails tb if +// git fails. +func Git(tb testing.TB, dir string, args ...string) string { + tb.Helper() + ready(tb) + cmd := exec.CommandContext(tb.Context(), "git", args...) + cmd.Dir = dir + out, err := cmd.Output() + if err != nil { + var stderr []byte + if ee, ok := errors.AsType[*exec.ExitError](err); ok { + stderr = ee.Stderr + } + tb.Fatalf("git %v: %v: %s", args, err, stderr) + } + return string(out) +} + +// NewRepo makes a repository in dir with the branch main. It makes dir +// if it does not exist. +func NewRepo(tb testing.TB, dir string) { + tb.Helper() + if err := os.MkdirAll(dir, 0o755); err != nil { + tb.Fatal(err) + } + Git(tb, dir, "init", "-q", "-b", "main") +} + +// WriteFile writes content to the file name in dir. It makes the parent +// directories. +func WriteFile(tb testing.TB, dir, name, content string) { + tb.Helper() + p := filepath.Join(dir, filepath.FromSlash(name)) + if err := os.MkdirAll(filepath.Dir(p), 0o755); err != nil { + tb.Fatal(err) + } + if err := os.WriteFile(p, []byte(content), 0o644); err != nil { + tb.Fatal(err) + } +} + +// Script writes an executable sh script with body to the file name in +// dir, and returns its path. A test puts dir on PATH to fake a tool. +func Script(tb testing.TB, dir, name, body string) string { + tb.Helper() + p := filepath.Join(dir, name) + if err := os.WriteFile(p, []byte("#!/bin/sh\n"+body), 0o755); err != nil { + tb.Fatal(err) + } + return p +} diff --git a/internal/testgit/testgit_test.go b/internal/testgit/testgit_test.go new file mode 100644 index 0000000..e80df48 --- /dev/null +++ b/internal/testgit/testgit_test.go @@ -0,0 +1,48 @@ +package testgit_test + +import ( + "os" + "path/filepath" + "strings" + "testing" + + "github.com/rednafi/rexdiff/internal/testgit" +) + +func TestMain(m *testing.M) { testgit.Main(m) } + +// TestRepoIgnoresUser checks that a new repository reads only its own +// config and gets no hooks from a template. +func TestRepoIgnoresUser(t *testing.T) { + dir := t.TempDir() + testgit.NewRepo(t, dir) + for l := range strings.Lines(testgit.Git(t, dir, "config", "--list", "--show-origin")) { + if !strings.HasPrefix(l, "file:.git/config\t") { + t.Errorf("git config has %q, want only the config of the repository", l) + } + } + if _, err := os.Stat(filepath.Join(dir, ".git", "hooks")); !os.IsNotExist(err) { + t.Errorf("stat .git/hooks: %v, want no hooks directory", err) + } +} + +// TestHelpers checks the files that WriteFile and Script make, and that +// a commit gets the fixed author. +func TestHelpers(t *testing.T) { + dir := t.TempDir() + testgit.NewRepo(t, dir) + testgit.WriteFile(t, dir, "a/b/c.txt", "x\n") + testgit.Git(t, dir, "add", ".") + testgit.Git(t, dir, "commit", "-qm", "c") + if got := testgit.Git(t, dir, "log", "-1", "--format=%an <%ae>"); got != "t \n" { + t.Errorf("author %q, want t ", got) + } + p := testgit.Script(t, t.TempDir(), "tool", "echo hi\n") + fi, err := os.Stat(p) + if err != nil { + t.Fatal(err) + } + if fi.Mode().Perm()&0o100 == 0 { + t.Errorf("%s has mode %v, want an executable", p, fi.Mode()) + } +} diff --git a/rex/rex_test.go b/rex/rex_test.go index 2acc8d9..0ee3803 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -12,6 +12,7 @@ import ( "testing" "time" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/rex" ) @@ -20,8 +21,7 @@ import ( func fakeRex(t *testing.T) (*rex.Client, string) { t.Helper() dir := t.TempDir() - script := `#!/bin/sh -printf "%s\n" "$*" >> "` + dir + `/calls" + script := `printf "%s\n" "$*" >> "` + dir + `/calls" case "$*" in "api call -s S session.list_blocks {}") echo '{"blocks":[ @@ -59,10 +59,7 @@ more detail' >&2; exit 1 ;; *) ;; esac ` - bin := filepath.Join(dir, "rex") - if err := os.WriteFile(bin, []byte(script), 0o755); err != nil { - t.Fatal(err) - } + testgit.Script(t, dir, "rex", script) // The client comes from the environment that Rex gives a block. t.Setenv("REX_SESSION", "S") t.Setenv("REX_BLOCK", "block:self") @@ -258,10 +255,7 @@ func TestReloadConfigOutsideRex(t *testing.T) { if err := os.MkdirAll(dir, 0o755); err != nil { t.Fatal(err) } - script := "#!/bin/sh\necho \"reloaded: $*\"\n" - if err := os.WriteFile(filepath.Join(dir, "rex"), []byte(script), 0o755); err != nil { - t.Fatal(err) - } + testgit.Script(t, dir, "rex", "echo \"reloaded: $*\"\n") out, err := rex.ReloadConfig(t.Context()) if err != nil || out != "reloaded: config reload\n" { t.Errorf("ReloadConfig = %q, %v, want the report of the app rex", out, err) @@ -272,10 +266,7 @@ func TestReloadConfigOutsideRex(t *testing.T) { // of rex. The error also wraps the exit error of the process. func TestErrorKeepsCause(t *testing.T) { dir := t.TempDir() - script := "#!/bin/sh\necho 'Error: no Rex server' >&2\nexit 3\n" - if err := os.WriteFile(filepath.Join(dir, "rex"), []byte(script), 0o755); err != nil { - t.Fatal(err) - } + testgit.Script(t, dir, "rex", "echo 'Error: no Rex server' >&2\nexit 3\n") t.Setenv("REX_BIN_DIR", dir) _, err := rex.ReloadConfig(t.Context()) ee, ok := errors.AsType[*exec.ExitError](err) diff --git a/tui/anchor_test.go b/tui/anchor_test.go index 6e832ee..e239801 100644 --- a/tui/anchor_test.go +++ b/tui/anchor_test.go @@ -7,6 +7,7 @@ import ( "testing" "github.com/rednafi/rexdiff/diff" + "github.com/rednafi/rexdiff/internal/testgit" ) // TestCommentKeepsLine checks that a comment stays on its line numbers @@ -15,7 +16,7 @@ func TestCommentKeepsLine(t *testing.T) { m := commented(t) c := m.comments.All()[0] start, end := c.Start, c.End - write(t, m.repo.Root(), "a.go", + testgit.WriteFile(t, m.repo.Root(), "a.go", "// one\n// two\npackage a\n\nfunc A() int {\n\tx := 2\n\treturn x\n}\n") m.reload() if c.Start != start || c.End != end { @@ -33,7 +34,7 @@ func TestCommentKeepsLine(t *testing.T) { // shows "(stale)" in the comment list only. func TestStaleInList(t *testing.T) { m := commented(t) - git(t, m.repo.Root(), "checkout", "--", "a.go") + testgit.Git(t, m.repo.Root(), "checkout", "--", "a.go") m.reload() if shows(m, "(stale)") { t.Errorf("the diff shows (stale):\n%s", view(m)) diff --git a/tui/bench_test.go b/tui/bench_test.go index d63ec51..99265d9 100644 --- a/tui/bench_test.go +++ b/tui/bench_test.go @@ -9,6 +9,7 @@ import ( tea "charm.land/bubbletea/v2" "github.com/rednafi/rexdiff/diff" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -26,7 +27,7 @@ func BenchmarkReview(b *testing.B) { } content := "package a\nfunc f() {\n" + src.String() + "}\n" for i := range 20 { - write(b, dir, "big"+string(rune('a'+i))+".go", content) + testgit.WriteFile(b, dir, "big"+string(rune('a'+i))+".go", content) } // Select a large file. The reload keeps the selected file. m.reload() @@ -88,10 +89,10 @@ func bigChange(b *testing.B) model { } cur.WriteString(l) } - write(b, dir, "big.go", "package a\nfunc f() {\n"+old.String()+"}\n") - git(b, dir, "add", ".") - git(b, dir, "commit", "-qm", "big") - write(b, dir, "big.go", "package a\nfunc f() {\n"+cur.String()+"}\n") + testgit.WriteFile(b, dir, "big.go", "package a\nfunc f() {\n"+old.String()+"}\n") + testgit.Git(b, dir, "add", ".") + testgit.Git(b, dir, "commit", "-qm", "big") + testgit.WriteFile(b, dir, "big.go", "package a\nfunc f() {\n"+cur.String()+"}\n") m.reload() m.pickFile(slices.IndexFunc(m.files, func(f changed) bool { return f.Path == "big.go" })) return m diff --git a/tui/box_test.go b/tui/box_test.go index 18087c7..a92fc59 100644 --- a/tui/box_test.go +++ b/tui/box_test.go @@ -8,6 +8,7 @@ import ( "charm.land/lipgloss/v2" "github.com/rednafi/rexdiff/diff" + "github.com/rednafi/rexdiff/internal/testgit" ) // boxShows reports whether the comment box of m shows in the main pane. @@ -73,7 +74,7 @@ func TestTypingShowsBox(t *testing.T) { func TestListEditNeedsLine(t *testing.T) { m, dir := newTestModel(t) m = press(t, m, "]", "c", "h", "i", "enter") - write(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") + testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") m.reload() m.status = "" if m = press(t, m, "l", "e"); m.mode == modeComment || m.status == "" { diff --git a/tui/commits_test.go b/tui/commits_test.go index d7f196a..b4c6640 100644 --- a/tui/commits_test.go +++ b/tui/commits_test.go @@ -2,6 +2,8 @@ package tui import ( "testing" + + "github.com/rednafi/rexdiff/internal/testgit" ) // TestCommitPicker checks the commit picker of herdr-reviewr: no filter, @@ -9,7 +11,7 @@ import ( func TestCommitPicker(t *testing.T) { m, dir := newTestModel(t) for _, s := range []string{"c1", "c2", "c3"} { - git(t, dir, "commit", "-q", "--allow-empty", "-m", s) + testgit.Git(t, dir, "commit", "-q", "--allow-empty", "-m", s) } m = press(t, m, "G") if m.overlay == nil || m.overlay.kind != overlayCommits { @@ -52,8 +54,8 @@ func TestCommitPicker(t *testing.T) { // the base branch. func TestCommitPickerOnBase(t *testing.T) { m, dir := newTestModel(t) - git(t, dir, "stash", "-q") - git(t, dir, "checkout", "-q", "main") + testgit.Git(t, dir, "stash", "-q") + testgit.Git(t, dir, "checkout", "-q", "main") if m = press(t, m, "G"); !shows(m, "commits · last 50") || len(m.overlay.shown) != 1 { t.Errorf("G on main: view:\n%s\nwant the last 50 commits", view(m)) } diff --git a/tui/copy_test.go b/tui/copy_test.go index d84d12e..b4d1878 100644 --- a/tui/copy_test.go +++ b/tui/copy_test.go @@ -8,6 +8,7 @@ import ( "unicode/utf8" tea "charm.land/bubbletea/v2" + "github.com/rednafi/rexdiff/internal/testgit" ) // fakeClipboard puts a pbcopy first on PATH. It writes its input to the @@ -16,13 +17,11 @@ func fakeClipboard(t *testing.T, fail bool) string { t.Helper() dir := t.TempDir() out := filepath.Join(dir, "out") - script := "#!/bin/sh\n/bin/cat > " + out + "\n" + script := "/bin/cat > " + out + "\n" if fail { - script = "#!/bin/sh\nexit 1\n" - } - if err := os.WriteFile(filepath.Join(dir, "pbcopy"), []byte(script), 0o755); err != nil { - t.Fatal(err) + script = "exit 1\n" } + testgit.Script(t, dir, "pbcopy", script) t.Setenv("PATH", dir+string(os.PathListSeparator)+os.Getenv("PATH")) return out } diff --git a/tui/cross_test.go b/tui/cross_test.go index a6dec6f..b769ce0 100644 --- a/tui/cross_test.go +++ b/tui/cross_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/rednafi/rexdiff/diff" + "github.com/rednafi/rexdiff/internal/testgit" ) // twoFiles returns a model whose Changes tab has a.go and b.go, each with @@ -11,7 +12,7 @@ import ( func twoFiles(t *testing.T) model { t.Helper() m, dir := newTestModel(t) - write(t, dir, "b.go", "package b\n") + testgit.WriteFile(t, dir, "b.go", "package b\n") m.reload() if len(m.files) != 2 { t.Fatalf("got %d changed files, want 2", len(m.files)) diff --git a/tui/editor_test.go b/tui/editor_test.go index 88ee57f..bb6d931 100644 --- a/tui/editor_test.go +++ b/tui/editor_test.go @@ -10,26 +10,16 @@ import ( tea "charm.land/bubbletea/v2" "github.com/rednafi/rexdiff/diff" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/rex" ) -// writeScript writes an executable sh script with body to dir/name, and -// returns its path. -func writeScript(t *testing.T, dir, name, body string) string { - t.Helper() - path := filepath.Join(dir, name) - if err := os.WriteFile(path, []byte("#!/bin/sh\n"+body), 0o755); err != nil { - t.Fatal(err) - } - return path -} - // fakeRex makes m use a rex in a new directory that runs body. It returns // the directory. func fakeRex(t *testing.T, m *model, body string) string { t.Helper() dir := t.TempDir() - writeScript(t, dir, "rex", body) + testgit.Script(t, dir, "rex", body) t.Setenv("REX_SESSION", "S") t.Setenv("REX_BLOCK", "B") t.Setenv("REX_BIN_DIR", dir) @@ -58,7 +48,7 @@ func pressE(t *testing.T, m model) (model, tea.Cmd) { // in a new Rex block, and that e returns no command. func TestTerminalEditorInRex(t *testing.T) { bin := t.TempDir() - nvim := writeScript(t, bin, "nvim", "") + nvim := testgit.Script(t, bin, "nvim", "") t.Setenv("PATH", bin+string(os.PathListSeparator)+os.Getenv("PATH")) tests := []struct { name, editor, env, want string @@ -100,7 +90,7 @@ func TestWindowEditor(t *testing.T) { m, _ := newTestModel(t) bin := t.TempDir() out := filepath.Join(bin, "out") - code := writeScript(t, bin, "code", `{ echo "$*"; if (exec 3/dev/null; then echo tty; else echo no tty; fi; } > '`+out+"'\n") + code := testgit.Script(t, bin, "code", `{ echo "$*"; if (exec 3/dev/null; then echo tty; else echo no tty; fi; } > '`+out+"'\n") m.cfg.Editor = code + " -g {file}:{line}" log := logRex(t, &m) m, cmd := pressE(t, m) @@ -126,7 +116,7 @@ func TestWindowEditor(t *testing.T) { // TestEditorError checks that the footer tells why an editor fails. func TestEditorError(t *testing.T) { - code := writeScript(t, t.TempDir(), "code", "echo 'code: no such file' >&2\nexit 3\n") + code := testgit.Script(t, t.TempDir(), "code", "echo 'code: no such file' >&2\nexit 3\n") tests := []struct { name, editor, path, want string }{ @@ -169,8 +159,6 @@ func TestEditorNotOpened(t *testing.T) { m.cfg.Editor = tt.editor t.Setenv("VISUAL", "") t.Setenv("EDITOR", tt.env) - t.Setenv("GIT_CONFIG_GLOBAL", os.DevNull) - t.Setenv("GIT_CONFIG_NOSYSTEM", "1") log := logRex(t, &m) if tt.remove { if err := os.Remove(filepath.Join(m.repo.Root(), "a.go")); err != nil { diff --git a/tui/fold_test.go b/tui/fold_test.go index 36b31f6..d18200b 100644 --- a/tui/fold_test.go +++ b/tui/fold_test.go @@ -11,6 +11,7 @@ import ( tea "charm.land/bubbletea/v2" "github.com/rednafi/rexdiff/diff" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -31,11 +32,11 @@ func newFoldModel(t *testing.T) model { } return b.String() } - git(t, dir, "init", "-q", "-b", "main") - write(t, dir, "f.txt", lines()) - git(t, dir, "add", ".") - git(t, dir, "commit", "-qm", "init") - write(t, dir, "f.txt", lines(10, 30)) + testgit.NewRepo(t, dir) + testgit.WriteFile(t, dir, "f.txt", lines()) + testgit.Git(t, dir, "add", ".") + testgit.Git(t, dir, "commit", "-qm", "init") + testgit.WriteFile(t, dir, "f.txt", lines(10, 30)) repo, err := vcs.Open(t.Context(), dir) if err != nil { t.Fatal(err) @@ -140,7 +141,7 @@ func TestFoldStaysOpen(t *testing.T) { if err != nil { t.Fatal(err) } - write(t, dir, "f.txt", f(string(b))) + testgit.WriteFile(t, dir, "f.txt", f(string(b))) m.reload() } edit(func(s string) string { return "new\n" + s }) @@ -159,7 +160,7 @@ func TestFoldStaysOpen(t *testing.T) { } // After the commit, the file has 41 lines. Changes at lines 12 and 26 // make a fold of old lines 16 to 22, inside the open range. - git(t, dir, "commit", "-qam", "agent") + testgit.Git(t, dir, "commit", "-qam", "agent") edit(func(s string) string { lines := strings.Split(s, "\n") lines[11], lines[25] = "changed", "changed" diff --git a/tui/layout_test.go b/tui/layout_test.go index 2dd000d..ba7e31b 100644 --- a/tui/layout_test.go +++ b/tui/layout_test.go @@ -7,6 +7,7 @@ import ( tea "charm.land/bubbletea/v2" "github.com/rednafi/rexdiff/diff" + "github.com/rednafi/rexdiff/internal/testgit" ) // TestTinyStackedList checks that a body of 3 rows with the list below @@ -54,7 +55,7 @@ func TestListDefaultWidth(t *testing.T) { // markdown of the Files tab again if the file does not change. func TestMarkdownNotRerendered(t *testing.T) { m, dir := newTestModel(t) - write(t, dir, "notes.md", "# Title\n\nSome text.\n") + testgit.WriteFile(t, dir, "notes.md", "# Title\n\nSome text.\n") m = press(t, m, "2") m.reloadFiles() m.jumpToFile("notes.md", diff.SideNew, 1) diff --git a/tui/main_test.go b/tui/main_test.go new file mode 100644 index 0000000..ad0820f --- /dev/null +++ b/tui/main_test.go @@ -0,0 +1,9 @@ +package tui + +import ( + "testing" + + "github.com/rednafi/rexdiff/internal/testgit" +) + +func TestMain(m *testing.M) { testgit.Main(m) } diff --git a/tui/notes_test.go b/tui/notes_test.go index e753f9a..e955a83 100644 --- a/tui/notes_test.go +++ b/tui/notes_test.go @@ -9,6 +9,7 @@ import ( tea "charm.land/bubbletea/v2" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -23,7 +24,7 @@ func TestSkippedFileNotes(t *testing.T) { t.Run(tt.want, func(t *testing.T) { m, dir := newTestModel(t) // The name sorts first, so that both tabs select the file. - write(t, dir, "0.txt", tt.content) + testgit.WriteFile(t, dir, "0.txt", tt.content) m.reload() m.pickFile(0) if !shows(m, tt.want) { @@ -40,12 +41,12 @@ func TestSkippedFileNotes(t *testing.T) { // files, of an empty file, and of a file that rexdiff cannot read. func TestEmptyNotes(t *testing.T) { m, dir := newTestModel(t) - write(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") + testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") if m.reload(); !shows(m, "no changes") { t.Errorf("an empty scope got:\n%s\nwant \"no changes\"", view(m)) } - write(t, dir, "0.txt", "") + testgit.WriteFile(t, dir, "0.txt", "") if m = press(t, m, "2"); !shows(m, "empty file") { t.Errorf("an empty file got:\n%s\nwant \"empty file\"", view(m)) } @@ -109,7 +110,7 @@ func TestRenderedKey(t *testing.T) { if m = press(t, m, "m"); m.rendered { t.Error("m on a.go turns on rendered markdown, want no change") } - write(t, dir, "0.md", "\n\n") + testgit.WriteFile(t, dir, "0.md", "\n\n") m.reload() m.pickFile(0) m = press(t, m, "m") @@ -117,7 +118,7 @@ func TestRenderedKey(t *testing.T) { t.Errorf("m on a blank 0.md: rendered %v, status %q; want false, \"nothing here renders\"", m.rendered, m.status) } - write(t, dir, "0.md", "# Title\n") + testgit.WriteFile(t, dir, "0.md", "# Title\n") m.reload() if m = press(t, m, "m"); !m.rendered { t.Error("m on 0.md does not turn on rendered markdown") diff --git a/tui/prfetch_test.go b/tui/prfetch_test.go index 69cc0f5..5a6a4e5 100644 --- a/tui/prfetch_test.go +++ b/tui/prfetch_test.go @@ -4,6 +4,7 @@ import ( "testing" "time" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -80,7 +81,7 @@ func TestPRBranchSwitch(t *testing.T) { m = press(t, m, "3") m = step(t, m, prMsg{gen: m.prf.gen, pr: &vcs.PullRequest{Title: "T"}}) - git(t, dir, "commit", "-qam", "more") + testgit.Git(t, dir, "commit", "-qam", "more") time.Sleep(pause) m = step(t, m, tickMsg{}) if m.pr.pr == nil || !m.prf.inFlight { @@ -89,7 +90,7 @@ func TestPRBranchSwitch(t *testing.T) { } m = step(t, m, prMsg{gen: m.prf.gen, pr: &vcs.PullRequest{Title: "T"}}) - git(t, dir, "checkout", "-q", "main") + testgit.Git(t, dir, "checkout", "-q", "main") gen := m.prf.gen time.Sleep(pause) m = step(t, m, tickMsg{}) diff --git a/tui/reload_test.go b/tui/reload_test.go index 3457a45..1b40d0a 100644 --- a/tui/reload_test.go +++ b/tui/reload_test.go @@ -7,6 +7,7 @@ import ( "testing" "time" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -15,7 +16,7 @@ import ( func TestNoReloadInCommentBox(t *testing.T) { m, dir := newTestModel(t) m = press(t, m, "]", "c") - write(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") + testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") if m = step(t, m, tickMsg{}); shows(m, "return 42") || !m.reloadOwed { t.Errorf("a tick with the box open: owed %v, view:\n%s\nwant no reload, a reload owed", m.reloadOwed, view(m)) @@ -75,7 +76,7 @@ func TestPRErrorKeepsPR(t *testing.T) { func TestPollWithoutWatcher(t *testing.T) { m, dir := newTestModel(t) m = step(t, m, tickMsg{}) - write(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") + testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") if m = step(t, m, tickMsg{}); shows(m, "return 42") { t.Errorf("a tick before the poll is due, view got:\n%s\nwant no reload", view(m)) } @@ -110,7 +111,7 @@ func TestWatchRestarts(t *testing.T) { func TestWatchErrorRestarts(t *testing.T) { m, dir, pause := watched(t) noGit(t) - write(t, dir, "new.go", "package a\n") // the watcher lists the files again + testgit.WriteFile(t, dir, "new.go", "package a\n") // the watcher lists the files again time.Sleep(pause) if m = step(t, m, tickMsg{}); m.watch != nil || m.watchAt.IsZero() { t.Errorf("after an error of the watcher: watcher %v, next try %v; want none, a try", diff --git a/tui/saved_test.go b/tui/saved_test.go index 5081343..ef623d3 100644 --- a/tui/saved_test.go +++ b/tui/saved_test.go @@ -4,6 +4,7 @@ import ( "slices" "testing" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/rex" ) @@ -65,7 +66,7 @@ func TestSavedTurn(t *testing.T) { if m.repo.SavedTurn(t.Context()) != "" { t.Error("a turn with no change saves its tree") } - write(t, dir, "c.go", "package a\n") + testgit.WriteFile(t, dir, "c.go", "package a\n") m = step(t, m, status("block:agent", "pi", rex.StateIdle)) if m.turn == nil { t.Fatal("no turn after the agent changes a file") diff --git a/tui/search_test.go b/tui/search_test.go index 8ab4c78..722fd26 100644 --- a/tui/search_test.go +++ b/tui/search_test.go @@ -2,8 +2,6 @@ package tui import ( "fmt" - "os" - "path/filepath" "slices" "strings" "testing" @@ -12,6 +10,7 @@ import ( tea "charm.land/bubbletea/v2" "github.com/rednafi/rexdiff/internal/search" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -94,7 +93,7 @@ func TestSearchFlip(t *testing.T) { func TestSearchFileLimit(t *testing.T) { m, dir := newTestModel(t) for i := range 60 { - write(t, dir, fmt.Sprintf("zz%02d.txt", i), "x\n") + testgit.WriteFile(t, dir, fmt.Sprintf("zz%02d.txt", i), "x\n") } m = openQuery(t, m, "zz") ls := labels(m) @@ -140,7 +139,7 @@ func TestSearchCodeGroups(t *testing.T) { // git finds more matches than the search shows. func TestSearchCodeMore(t *testing.T) { m, dir := newTestModel(t) - write(t, dir, "many.txt", strings.Repeat("hit\n", 300)) + testgit.WriteFile(t, dir, "many.txt", strings.Repeat("hit\n", 300)) m = openQuery(t, m, "hit") m = step(t, m, tabKey) ls := labels(m) @@ -213,7 +212,7 @@ func longFile(t *testing.T, dir string) { } fmt.Fprintf(&b, "line %d\n", i+1) } - write(t, dir, "long.go", b.String()) + testgit.WriteFile(t, dir, "long.go", b.String()) } // lineOf returns the index of the first line of the view that has s, or @@ -273,7 +272,7 @@ func TestSearchPreviewScroll(t *testing.T) { // and the note of a binary file and of no result. func TestSearchPreviewFile(t *testing.T) { m, dir := newTestModel(t) - write(t, dir, "bin.dat", "a\x00b") + testgit.WriteFile(t, dir, "bin.dat", "a\x00b") m = openQuery(t, m, "a.go") if !shows(m, "─ preview · a.go ─", "1 package a") { t.Errorf("view got:\n%s\nwant the preview of a.go from line 1", view(m)) @@ -299,10 +298,7 @@ func TestSearchBudget(t *testing.T) { m = press(t, m, "/") bin := t.TempDir() // The fake git prints one match, then hangs. - script := "#!/bin/sh\nprintf 'a.go\\0001\\000hit\\n'\nexec /bin/sleep 10\n" - if err := os.WriteFile(filepath.Join(bin, "git"), []byte(script), 0o755); err != nil { - t.Fatal(err) - } + testgit.Script(t, bin, "git", "printf 'a.go\\0001\\000hit\\n'\nexec /bin/sleep 10\n") t.Setenv("PATH", bin) m.overlay.input.SetValue("hit") cmd := m.inputChanged() diff --git a/tui/state_test.go b/tui/state_test.go index 10e0c56..5980fc8 100644 --- a/tui/state_test.go +++ b/tui/state_test.go @@ -5,6 +5,7 @@ import ( "testing" tea "charm.land/bubbletea/v2" + "github.com/rednafi/rexdiff/internal/testgit" ) // TestGrepKeepsFileCursor checks that the end of a code search does not @@ -54,7 +55,7 @@ func TestFocusShowsList(t *testing.T) { func TestOverlayClickAboveRows(t *testing.T) { m, dir := newTestModel(t) for i := range 12 { - git(t, dir, "branch", fmt.Sprintf("b%02d", i)) + testgit.Git(t, dir, "branch", fmt.Sprintf("b%02d", i)) } m = step(t, m, tea.WindowSizeMsg{Width: 120, Height: 16}) m = press(t, m, "B") diff --git a/tui/tree_test.go b/tui/tree_test.go index f2c4c89..fb3e916 100644 --- a/tui/tree_test.go +++ b/tui/tree_test.go @@ -1,8 +1,6 @@ package tui import ( - "os" - "path/filepath" "slices" "strings" "testing" @@ -10,6 +8,7 @@ import ( tea "charm.land/bubbletea/v2" "github.com/charmbracelet/x/ansi" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -19,25 +18,19 @@ import ( func newTreeModel(t *testing.T) (model, string) { t.Helper() dir := t.TempDir() - run := func(args ...string) { git(t, dir, args...) } - run("init", "-q", "-b", "main") - if err := os.MkdirAll(filepath.Join(dir, "src"), 0o755); err != nil { - t.Fatal(err) - } - if err := os.MkdirAll(filepath.Join(dir, "out", "sub"), 0o755); err != nil { - t.Fatal(err) - } + run := func(args ...string) { testgit.Git(t, dir, args...) } + testgit.NewRepo(t, dir) for _, p := range []string{"src/a.go", "src/b.go", "top.go"} { - write(t, dir, p, "package a\n") + testgit.WriteFile(t, dir, p, "package a\n") } - write(t, dir, ".gitignore", "out/\n") + testgit.WriteFile(t, dir, ".gitignore", "out/\n") run("add", ".") run("commit", "-qm", "init") for _, p := range []string{"src/a.go", "src/b.go", "top.go"} { - write(t, dir, p, "package a\n\nvar x = 1\n") + testgit.WriteFile(t, dir, p, "package a\n\nvar x = 1\n") } - write(t, dir, "out/x.txt", "x\n") - write(t, dir, "out/sub/y.txt", "y\n") + testgit.WriteFile(t, dir, "out/x.txt", "x\n") + testgit.WriteFile(t, dir, "out/sub/y.txt", "y\n") repo, err := vcs.Open(t.Context(), dir) if err != nil { diff --git a/tui/tui_test.go b/tui/tui_test.go index 2b7ca5d..216f8a0 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -5,7 +5,6 @@ import ( "errors" "image/color" "os" - "os/exec" "path/filepath" "slices" "strings" @@ -17,6 +16,7 @@ import ( "github.com/charmbracelet/x/ansi" "github.com/rednafi/rexdiff/diff" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/rex" "github.com/rednafi/rexdiff/vcs" ) @@ -26,16 +26,16 @@ import ( func newTestModel(tb testing.TB) (model, string) { tb.Helper() dir := tb.TempDir() - run := func(args ...string) { git(tb, dir, args...) } - run("init", "-q", "-b", "main") - write(tb, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") + run := func(args ...string) { testgit.Git(tb, dir, args...) } + testgit.NewRepo(tb, dir) + testgit.WriteFile(tb, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") run("add", ".") run("commit", "-qm", "init") run("checkout", "-qb", "feat") - write(tb, dir, "b.go", "package a\n") + testgit.WriteFile(tb, dir, "b.go", "package a\n") run("add", ".") run("commit", "-qm", "add b") - write(tb, dir, "a.go", "package a\n\nfunc A() int {\n\tx := 2\n\treturn x\n}\n") + testgit.WriteFile(tb, dir, "a.go", "package a\n\nfunc A() int {\n\tx := 2\n\treturn x\n}\n") repo, err := vcs.Open(tb.Context(), dir) if err != nil { @@ -48,31 +48,6 @@ func newTestModel(tb testing.TB) (model, string) { return m, dir } -// git runs git in dir and fails the test if git fails. -func git(tb testing.TB, dir string, args ...string) { - tb.Helper() - cmd := exec.CommandContext(tb.Context(), "git", args...) - cmd.Dir = dir - cmd.Env = append( - os.Environ(), - "GIT_AUTHOR_NAME=t", - "GIT_AUTHOR_EMAIL=t@t", - "GIT_COMMITTER_NAME=t", - "GIT_COMMITTER_EMAIL=t@t", - ) - if out, err := cmd.CombinedOutput(); err != nil { - tb.Fatalf("git %v: %s", args, out) - } -} - -// write writes a file in dir and fails the test if it cannot. -func write(tb testing.TB, dir, name, content string) { - tb.Helper() - if err := os.WriteFile(filepath.Join(dir, name), []byte(content), 0o644); err != nil { - tb.Fatal(err) - } -} - // step gives msg to m and returns the new model. func step(tb testing.TB, m model, msg tea.Msg) model { tb.Helper() @@ -183,7 +158,7 @@ func TestScopes(t *testing.T) { } m = step(t, m, sample("block:agent", "pi", dir)) m = step(t, m, status("block:agent", "pi", rex.StateWorking)) - write(t, dir, "c.go", "package a\n") + testgit.WriteFile(t, dir, "c.go", "package a\n") m = step(t, m, status("block:agent", "pi", rex.StateIdle)) if got := paths(m); !slices.Equal(got, []string{"c.go"}) || m.turn.running { t.Errorf("turn scope shows %v (running %v), want [c.go]", got, m.turn.running) @@ -394,11 +369,7 @@ func TestSendError(t *testing.T) { // that show stay, and the error is a flash. func TestMissingHead(t *testing.T) { m, dir := newTestModel(t) - sha, err := exec.CommandContext(t.Context(), "git", "-C", dir, "rev-parse", "HEAD").Output() - if err != nil { - t.Fatal(err) - } - hex := strings.TrimSpace(string(sha)) + hex := strings.TrimSpace(testgit.Git(t, dir, "rev-parse", "HEAD")) obj := filepath.Join(dir, ".git", "objects", hex[:2], hex[2:]) if err := os.Remove(obj); err != nil { t.Fatal(err) @@ -648,7 +619,7 @@ func wrapModel(t *testing.T) (m model, dir, long string) { t.Helper() m, dir = newTestModel(t) long = "\treturn " + strings.Repeat("x + ", 40) + "1" - write(t, dir, "a.go", "package a\n\nfunc A() int {\n"+long+"\n}\n") + testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n"+long+"\n}\n") m.reload() m = step(t, m, tea.WindowSizeMsg{Width: 80, Height: 40}) return m, dir, long @@ -659,9 +630,9 @@ func wrapModel(t *testing.T) (m model, dir, long string) { func twoHunks(t *testing.T, m model, dir, long string) model { t.Helper() same := strings.Repeat("\tx++\n", 20) - write(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n"+same+"}\n") - git(t, dir, "commit", "-qam", "same") - write(t, dir, "a.go", "package a\n\nfunc A() int {\n"+long+"\n"+same+"\treturn 9\n}\n") + testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n"+same+"}\n") + testgit.Git(t, dir, "commit", "-qam", "same") + testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n"+long+"\n"+same+"\treturn 9\n}\n") m.reload() return m } @@ -817,7 +788,7 @@ func TestHostileText(t *testing.T) { } } m, dir := newTestModel(t) - write(t, dir, "e"+osc+"\n.go", "x"+osc+"\n") + testgit.WriteFile(t, dir, "e"+osc+"\n.go", "x"+osc+"\n") m.reload() raw("file list", m) m = press(t, m, "f", "]", "c") @@ -834,7 +805,7 @@ func TestHostileText(t *testing.T) { raw("the status after an error", m) m = step(t, m, sample("b", "pi"+osc, dir)) m = step(t, m, status("b", "pi"+osc, rex.StateWorking)) - write(t, dir, "turn.go", "x\n") + testgit.WriteFile(t, dir, "turn.go", "x\n") m = step(t, m, status("b", "pi"+osc, rex.StateIdle)) m = press(t, m, "t") if m.turn == nil { @@ -872,7 +843,7 @@ func TestMouseOffScreen(t *testing.T) { // commits and no files, with key bindings that conflict. func TestEmptyRepo(t *testing.T) { dir := t.TempDir() - git(t, dir, "init", "-q", "-b", "main") + testgit.NewRepo(t, dir) repo, err := vcs.Open(t.Context(), dir) if err != nil { t.Fatal(err) diff --git a/tui/turn_test.go b/tui/turn_test.go index 8991881..fc5cefe 100644 --- a/tui/turn_test.go +++ b/tui/turn_test.go @@ -7,6 +7,7 @@ import ( tea "charm.land/bubbletea/v2" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/rex" ) @@ -78,7 +79,7 @@ func TestTurnWithoutChange(t *testing.T) { func TestTurnKeepsOldBaseline(t *testing.T) { m, dir := turnModel(t) m = step(t, m, status("p", "pi", rex.StateWorking)) - write(t, dir, "c.go", "package a\n") + testgit.WriteFile(t, dir, "c.go", "package a\n") m = step(t, m, status("p", "pi", rex.StateIdle)) if m.turn == nil { t.Fatal("no turn after a change") @@ -103,7 +104,7 @@ func TestTurnPromotesOnChange(t *testing.T) { if m.turn != nil { t.Fatal("a tick with no change promotes the turn") } - write(t, dir, "c.go", "package a\n") + testgit.WriteFile(t, dir, "c.go", "package a\n") m.polled = time.Time{} // without a watcher, the poll sees the change m = step(t, m, tickMsg{}) if m.turn == nil || !m.turn.running || m.pending != nil { @@ -130,7 +131,7 @@ func TestTurnTwoAgents(t *testing.T) { }}) m = step(t, m, status("p", "pi", rex.StateWorking)) m = step(t, m, status("q", "cc", rex.StateWorking)) - write(t, dir, "c.go", "package a\n") + testgit.WriteFile(t, dir, "c.go", "package a\n") m = step(t, m, status("p", "pi", rex.StateIdle)) if m.pending == nil || m.turn != nil { t.Fatalf("turn %+v, pending %+v, want the turn still pending", m.turn, m.pending) @@ -155,7 +156,7 @@ func TestTurnOutsideAgent(t *testing.T) { t.Errorf("note %q, want \"no agent works here\"", m.changes.note) } m = step(t, m, status("p", "pi", rex.StateWorking)) - write(t, dir, "c.go", "package a\n") + testgit.WriteFile(t, dir, "c.go", "package a\n") m = step(t, m, status("p", "pi", rex.StateIdle)) if m.turn != nil || m.pending != nil { t.Errorf("turn %+v, pending %+v, want none", m.turn, m.pending) @@ -172,7 +173,7 @@ func TestTurnOutsideAgent(t *testing.T) { func TestTurnUnknownCwdHolds(t *testing.T) { m, dir := turnModel(t) m = step(t, m, status("p", "pi", rex.StateWorking)) - write(t, dir, "c.go", "package a\n") + testgit.WriteFile(t, dir, "c.go", "package a\n") // Outside Rex, the program cannot ask for the directory of block q. m = step(t, m, status("q", "cc", rex.StateIdle)) m = step(t, m, status("p", "pi", rex.StateIdle)) diff --git a/tui/watch_test.go b/tui/watch_test.go index 01b32a4..fad845f 100644 --- a/tui/watch_test.go +++ b/tui/watch_test.go @@ -9,6 +9,7 @@ import ( "time" tea "charm.land/bubbletea/v2" + "github.com/rednafi/rexdiff/internal/testgit" ) // watched returns a test model with a watcher, after its first tick. The @@ -46,7 +47,7 @@ func TestTickRunsNoGitWhenIdle(t *testing.T) { // TestTickSeesEdit checks that a tick shows an edit. func TestTickSeesEdit(t *testing.T) { m, dir, pause := watched(t) - write(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") + testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") time.Sleep(pause) if m = step(t, m, tickMsg{}); !shows(m, "return 42") { t.Errorf("view got:\n%s\nwant the edit", view(m)) @@ -57,7 +58,7 @@ func TestTickSeesEdit(t *testing.T) { func TestRefreshForces(t *testing.T) { m, dir, _ := watched(t) m.reloadAt = time.Now().Add(time.Hour) - write(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") + testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") if m = press(t, m, "r"); !shows(m, "return 42") { t.Errorf("view got:\n%s\nwant the edit", view(m)) } @@ -144,7 +145,7 @@ func TestFilesTabWaitsForWatcher(t *testing.T) { } // An edit that keeps the size and the time is not a change for the // watcher. - write(t, dir, path, "package a\n\nvar x = 2\n") + testgit.WriteFile(t, dir, path, "package a\n\nvar x = 2\n") if err := os.Chtimes(filepath.Join(dir, path), fi.ModTime(), fi.ModTime()); err != nil { t.Fatal(err) } @@ -152,7 +153,7 @@ func TestFilesTabWaitsForWatcher(t *testing.T) { if m = step(t, m, tickMsg{}); shows(m, "var x = 2") { t.Errorf("no change for the watcher, view got:\n%s\nwant no read", view(m)) } - write(t, dir, path, "package a\n\nvar x = 42\n") + testgit.WriteFile(t, dir, path, "package a\n\nvar x = 42\n") time.Sleep(pause) if m = step(t, m, tickMsg{}); !shows(m, "var x = 42") { t.Errorf("view got:\n%s\nwant the edit", view(m)) @@ -168,7 +169,7 @@ func TestTickSeesIgnoredEdit(t *testing.T) { m = openFile(t, m, "out/x.txt") time.Sleep(pause) m = step(t, m, tickMsg{}) // the watcher gets the open file - write(t, dir, "out/x.txt", "an edit\n") + testgit.WriteFile(t, dir, "out/x.txt", "an edit\n") time.Sleep(pause) if m = step(t, m, tickMsg{}); !shows(m, "an edit") { t.Errorf("view got:\n%s\nwant the edit", view(m)) diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index b26c9ec..8edb973 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -12,14 +12,15 @@ import ( "testing" "time" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) // commitAll commits all the changes in the working tree of dir. func commitAll(t *testing.T, dir string) { t.Helper() - git(t, dir, "add", "-A") - git(t, dir, "commit", "-qm", "all") + testgit.Git(t, dir, "add", "-A") + testgit.Git(t, dir, "commit", "-qm", "all") } // TestRevIsNotAnOption checks that git does not read a rev that starts @@ -28,7 +29,7 @@ func TestRevIsNotAnOption(t *testing.T) { r, _ := newRepo(t) ctx := t.Context() out := filepath.Join(t.TempDir(), "out") - write(t, filepath.Dir(out), "out", "keep\n") + testgit.WriteFile(t, filepath.Dir(out), "out", "keep\n") for _, rev := range []string{"--output=" + out, "--independent", "--all", "-h"} { if id, err := r.Resolve(ctx, rev); err == nil { t.Errorf("Resolve(%q) = %s, want an error", rev, id) @@ -109,10 +110,10 @@ func TestHostilePaths(t *testing.T) { // directories, line ends, and empty files. func TestDiffFileKinds(t *testing.T) { r, dir := newRepo(t) - git(t, dir, "config", "core.autocrlf", "false") - write(t, dir, "mode.sh", "echo\n") - write(t, dir, "dir", "a file\n") - write(t, dir, "type", "a file\n") + testgit.Git(t, dir, "config", "core.autocrlf", "false") + testgit.WriteFile(t, dir, "mode.sh", "echo\n") + testgit.WriteFile(t, dir, "dir", "a file\n") + testgit.WriteFile(t, dir, "type", "a file\n") commitAll(t, dir) outside := t.TempDir() @@ -130,14 +131,14 @@ func TestDiffFileKinds(t *testing.T) { if err := os.Remove(filepath.Join(dir, "dir")); err != nil { t.Fatal(err) } - write(t, dir, "dir/in", "in\n") + testgit.WriteFile(t, dir, "dir/in", "in\n") if err := os.Remove(filepath.Join(dir, "type")); err != nil { t.Fatal(err) } link("a.txt", "type") - write(t, dir, "crlf", "a\r\nb\r\n") - write(t, dir, "empty", "") - write(t, dir, "no-newline", "end") + testgit.WriteFile(t, dir, "crlf", "a\r\nb\r\n") + testgit.WriteFile(t, dir, "empty", "") + testgit.WriteFile(t, dir, "no-newline", "end") want := []vcs.File{ {Path: "crlf", Status: vcs.StatusAdded, New: "a\r\nb\r\n"}, @@ -161,12 +162,12 @@ func TestDiffFileKinds(t *testing.T) { func TestSnapshotNestedRepo(t *testing.T) { r, dir := newRepo(t) commitAll(t, dir) - git(t, dir, "init", "-q", "empty") - write(t, dir, "empty/x", "x\n") - write(t, dir, "full/y", "y\n") - git(t, filepath.Join(dir, "full"), "init", "-q") + testgit.Git(t, dir, "init", "-q", "empty") + testgit.WriteFile(t, dir, "empty/x", "x\n") + testgit.WriteFile(t, dir, "full/y", "y\n") + testgit.Git(t, filepath.Join(dir, "full"), "init", "-q") commitAll(t, filepath.Join(dir, "full")) - write(t, dir, "z.txt", "z\n") + testgit.WriteFile(t, dir, "z.txt", "z\n") got := changes(t, r, head(t, r), snapshot(t, r)) isSubmodule := strings.HasPrefix(got[0].New, "Subproject commit ") @@ -182,7 +183,7 @@ func TestReadFileStaysInRoot(t *testing.T) { // end, for example /dev/zero. r, dir := newRepo(t) secret := filepath.Join(filepath.Dir(dir), "secret") - write(t, filepath.Dir(dir), "secret", "secret\n") + testgit.WriteFile(t, filepath.Dir(dir), "secret", "secret\n") links := map[string]string{ "to-secret": secret, "to-zero": "/dev/zero", @@ -214,8 +215,8 @@ func TestReadFileStaysInRoot(t *testing.T) { // newline. func TestOpenRootWithNewline(t *testing.T) { dir := filepath.Join(t.TempDir(), "a\nb") - git(t, filepath.Dir(dir), "init", "-q", dir) - write(t, dir, "a.txt", "one\n") + testgit.Git(t, filepath.Dir(dir), "init", "-q", dir) + testgit.WriteFile(t, dir, "a.txt", "one\n") r, err := vcs.Open(t.Context(), dir) if err != nil { t.Fatal(err) @@ -235,10 +236,10 @@ func TestGitWorktree(t *testing.T) { _, dir := newRepo(t) ctx := t.Context() wt := filepath.Join(t.TempDir(), "wt") - git(t, dir, "worktree", "add", "-q", "-b", "other", wt, "main") - write(t, wt, "a.txt", "changed\n") - write(t, wt, "staged.txt", "s\n") - git(t, wt, "add", "staged.txt") + testgit.Git(t, dir, "worktree", "add", "-q", "-b", "other", wt, "main") + testgit.WriteFile(t, wt, "a.txt", "changed\n") + testgit.WriteFile(t, wt, "staged.txt", "s\n") + testgit.Git(t, wt, "add", "staged.txt") r, err := vcs.Open(ctx, wt) if err != nil { @@ -248,8 +249,8 @@ func TestGitWorktree(t *testing.T) { if got != "Ma.txt Astaged.txt" { t.Errorf("Diff(Head, Snapshot) = %s, want Ma.txt Astaged.txt", got) } - st, _ := exec.CommandContext(t.Context(), "git", "-C", wt, "status", "--porcelain").Output() - if string(st) != " M a.txt\nA staged.txt\n" { + st := testgit.Git(t, wt, "status", "--porcelain") + if st != " M a.txt\nA staged.txt\n" { t.Errorf("git status in the worktree got:\n%s\nwant:\n%s", st, " M a.txt\nA staged.txt\n") } @@ -259,7 +260,7 @@ func TestGitWorktree(t *testing.T) { func TestDetachedHead(t *testing.T) { r, dir := newRepo(t) ctx := t.Context() - git(t, dir, "checkout", "-q", "--detach", "main") + testgit.Git(t, dir, "checkout", "-q", "--detach", "main") got := names(changes(t, r, head(t, r), snapshot(t, r))) if got != "A.gitignore Ma.txt Anew.txt" { t.Errorf("Diff(Head, Snapshot) = %s, want A.gitignore Ma.txt Anew.txt", @@ -275,8 +276,8 @@ func TestDetachedHead(t *testing.T) { func TestGrepIsLiteral(t *testing.T) { r, dir := newRepo(t) ctx := t.Context() - write(t, dir, "g.txt", "abc\na.c\n-v\n--help\n[x\n(y\n\\d\n*\n^a\nx$\n") - git(t, dir, "config", "grep.column", "true") // adds a field to the output + testgit.WriteFile(t, dir, "g.txt", "abc\na.c\n-v\n--help\n[x\n(y\n\\d\n*\n^a\nx$\n") + testgit.Git(t, dir, "config", "grep.column", "true") // adds a field to the output tests := []struct { q string want []string @@ -314,7 +315,7 @@ func TestCommitsHostileSubject(t *testing.T) { r, dir := newRepo(t) subjects := []string{"a\x1fb", "\x1b[31mred\x1b[0m", "tab\there"} for _, s := range subjects { - git(t, dir, "commit", "-q", "--allow-empty", "-m", s) + testgit.Git(t, dir, "commit", "-q", "--allow-empty", "-m", s) } cs, err := r.Commits(t.Context(), "") if err != nil { @@ -377,10 +378,7 @@ func TestGrepDeadline(t *testing.T) { r, _ := newRepo(t) bin := t.TempDir() // The fake git prints one match, then hangs. - script := "#!/bin/sh\nprintf 'a.go\\0001\\000hit\\n'\nexec /bin/sleep 10\n" - if err := os.WriteFile(filepath.Join(bin, "git"), []byte(script), 0o755); err != nil { - t.Fatal(err) - } + testgit.Script(t, bin, "git", "printf 'a.go\\0001\\000hit\\n'\nexec /bin/sleep 10\n") t.Setenv("PATH", bin) ctx, cancel := context.WithTimeout(t.Context(), 300*time.Millisecond) diff --git a/vcs/main_test.go b/vcs/main_test.go new file mode 100644 index 0000000..b2f89b9 --- /dev/null +++ b/vcs/main_test.go @@ -0,0 +1,9 @@ +package vcs_test + +import ( + "testing" + + "github.com/rednafi/rexdiff/internal/testgit" +) + +func TestMain(m *testing.M) { testgit.Main(m) } diff --git a/vcs/pr_test.go b/vcs/pr_test.go index 4fd6c7c..5a48c77 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -10,6 +10,7 @@ import ( "strings" "testing" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -19,14 +20,12 @@ import ( func fakeTool(t *testing.T, dir, name string, calls map[string]string) { t.Helper() var script strings.Builder - script.WriteString("#!/bin/sh\ncase \"$*\" in\n") + script.WriteString("case \"$*\" in\n") for args, out := range calls { script.WriteString("'" + args + "') cat <<'EOF'\n" + out + "\nEOF\n;;\n") } script.WriteString("*) echo unexpected call: \"$*\" >&2; exit 1 ;;\nesac\n") - if err := os.WriteFile(filepath.Join(dir, name), []byte(script.String()), 0o755); err != nil { - t.Fatal(err) - } + testgit.Script(t, dir, name, script.String()) } // repoAt returns the test repository, on the branch feat, with origin at @@ -34,7 +33,7 @@ func fakeTool(t *testing.T, dir, name string, calls map[string]string) { func repoAt(t *testing.T, remote string) (*vcs.Repo, string) { t.Helper() r, dir := newRepo(t) - git(t, dir, "remote", "add", "origin", remote) + testgit.Git(t, dir, "remote", "add", "origin", remote) return r, dir } @@ -197,10 +196,10 @@ func TestPullRequestErrors(t *testing.T) { for _, tt := range tests { r, dir := newRepo(t) if tt.remote != "" { - git(t, dir, "remote", "add", "origin", tt.remote) + testgit.Git(t, dir, "remote", "add", "origin", tt.remote) } if tt.branch != "feat" { - git(t, dir, "checkout", "-qb", tt.branch) + testgit.Git(t, dir, "checkout", "-qb", tt.branch) } _, err := r.PullRequest(t.Context(), tt.hosts) switch { diff --git a/vcs/repo_test.go b/vcs/repo_test.go index d8e497c..805fa04 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -13,6 +13,7 @@ import ( "testing" "time" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -22,23 +23,20 @@ import ( func newRepo(t *testing.T) (*vcs.Repo, string) { t.Helper() dir := filepath.Join(t.TempDir(), "a repo ") // git keeps the space - if err := os.Mkdir(dir, 0o755); err != nil { - t.Fatal(err) - } - run := func(args ...string) { git(t, dir, args...) } - run("init", "-q", "-b", "main") - write(t, dir, "a.txt", "one\n") + testgit.NewRepo(t, dir) + run := func(args ...string) { testgit.Git(t, dir, args...) } + testgit.WriteFile(t, dir, "a.txt", "one\n") run("add", ".") run("commit", "-qm", "init") run("checkout", "-qb", "feat") - write(t, dir, "b.txt", "bee\n") + testgit.WriteFile(t, dir, "b.txt", "bee\n") run("add", ".") run("commit", "-qm", "b") - write(t, dir, "a.txt", "one\ntwo\n") - write(t, dir, "new.txt", "untracked\n") - write(t, dir, ".gitignore", "ignored.txt\nbuild/\n") - write(t, dir, "ignored.txt", "x\n") - write(t, dir, "build/out", "x\n") + testgit.WriteFile(t, dir, "a.txt", "one\ntwo\n") + testgit.WriteFile(t, dir, "new.txt", "untracked\n") + testgit.WriteFile(t, dir, ".gitignore", "ignored.txt\nbuild/\n") + testgit.WriteFile(t, dir, "ignored.txt", "x\n") + testgit.WriteFile(t, dir, "build/out", "x\n") // Open from a subdirectory. Open must find the root. r, err := vcs.Open(t.Context(), filepath.Join(dir, "build")) @@ -48,34 +46,6 @@ func newRepo(t *testing.T) (*vcs.Repo, string) { return r, dir } -// git runs git in dir and fails the test if git fails. -func git(t *testing.T, dir string, args ...string) { - t.Helper() - cmd := exec.CommandContext(t.Context(), "git", args...) - cmd.Dir = dir - cmd.Env = append(os.Environ(), - "GIT_AUTHOR_NAME=t", - "GIT_AUTHOR_EMAIL=t@t", - "GIT_COMMITTER_NAME=t", - "GIT_COMMITTER_EMAIL=t@t", - ) - if out, err := cmd.CombinedOutput(); err != nil { - t.Fatalf("git %v: %s", args, out) - } -} - -// write writes s to the file name in dir, and makes its parent directories. -func write(t *testing.T, dir, name, s string) { - t.Helper() - p := filepath.Join(dir, name) - if err := os.MkdirAll(filepath.Dir(p), 0o755); err != nil { - t.Fatal(err) - } - if err := os.WriteFile(p, []byte(s), 0o644); err != nil { - t.Fatal(err) - } -} - // snapshot returns the tree of the working tree. func snapshot(t *testing.T, r *vcs.Repo) string { t.Helper() @@ -154,15 +124,15 @@ func TestScopes(t *testing.T) { } // In a turn, rexdiff takes a snapshot and then the agent edits a file. - write(t, dir, "new.txt", "untracked\nmore\n") + testgit.WriteFile(t, dir, "new.txt", "untracked\nmore\n") tf := changes(t, r, now, snapshot(t, r)) if got := names(tf); got != "Mnew.txt" || tf[0].New != "untracked\nmore\n" { t.Errorf("turn: %s, want Mnew.txt with the new line", got) } // Snapshot must not change the real index. - st, _ := exec.CommandContext(t.Context(), "git", "-C", dir, "status", "--porcelain").Output() - if !strings.Contains(string(st), "?? new.txt") { + st := testgit.Git(t, dir, "status", "--porcelain") + if !strings.Contains(st, "?? new.txt") { t.Errorf("git status after Snapshot = %q, want ?? new.txt", st) } @@ -223,20 +193,20 @@ func TestDiffSkipsBinaryAndBigFiles(t *testing.T) { lines := strings.Repeat("x\n", 30_000) // two make 60,000 lines // Two versions with 25,000 lines each are not too big. limit := strings.Repeat("y\n", 25_000) - write(t, dir, "bytes", half) - write(t, dir, "lines", lines) - write(t, dir, "limit", limit) - git(t, dir, "add", ".") - git(t, dir, "commit", "-qm", "base") - write(t, dir, "bytes", "y"+half) - write(t, dir, "lines", "y"+lines) - write(t, dir, "limit", "z"+limit) - write(t, dir, "bin", "a\x00b") - write(t, dir, "late", strings.Repeat("x", 9000)+"\x00") // NUL at byte 9000 - write(t, dir, "big", strings.Repeat("x\n", 50_001)) - write(t, dir, "huge", strings.Repeat("x", 2_000_001)) + testgit.WriteFile(t, dir, "bytes", half) + testgit.WriteFile(t, dir, "lines", lines) + testgit.WriteFile(t, dir, "limit", limit) + testgit.Git(t, dir, "add", ".") + testgit.Git(t, dir, "commit", "-qm", "base") + testgit.WriteFile(t, dir, "bytes", "y"+half) + testgit.WriteFile(t, dir, "lines", "y"+lines) + testgit.WriteFile(t, dir, "limit", "z"+limit) + testgit.WriteFile(t, dir, "bin", "a\x00b") + testgit.WriteFile(t, dir, "late", strings.Repeat("x", 9000)+"\x00") // NUL at byte 9000 + testgit.WriteFile(t, dir, "big", strings.Repeat("x\n", 50_001)) + testgit.WriteFile(t, dir, "huge", strings.Repeat("x", 2_000_001)) // Diff reads this file after the skipped content. - write(t, dir, "small", "after\n") + testgit.WriteFile(t, dir, "small", "after\n") got := map[string]vcs.File{} for _, f := range changes(t, r, head(t, r), snapshot(t, r)) { got[f.Path] = f @@ -276,16 +246,16 @@ func TestDiffSkipsBinaryAndBigFiles(t *testing.T) { // once. func TestFilesInConflict(t *testing.T) { dir := t.TempDir() - run := func(args ...string) { git(t, dir, args...) } - run("init", "-q", "-b", "main") - write(t, dir, "f.txt", "base\n") + testgit.NewRepo(t, dir) + run := func(args ...string) { testgit.Git(t, dir, args...) } + testgit.WriteFile(t, dir, "f.txt", "base\n") run("add", ".") run("commit", "-qm", "base") run("checkout", "-qb", "other") - write(t, dir, "f.txt", "other\n") + testgit.WriteFile(t, dir, "f.txt", "other\n") run("commit", "-qam", "other") run("checkout", "-q", "main") - write(t, dir, "f.txt", "main\n") + testgit.WriteFile(t, dir, "f.txt", "main\n") run("commit", "-qam", "main") cmd := exec.CommandContext(t.Context(), "git", "merge", "other") cmd.Dir = dir @@ -332,7 +302,7 @@ func TestWorktree(t *testing.T) { t.Errorf("Files = %s, want %s", got, want) } - write(t, dir, "build/sub/x", "x\n") + testgit.WriteFile(t, dir, "build/sub/x", "x\n") var ignored []string for _, e := range r.IgnoredDir("build") { ignored = append(ignored, e.Path) @@ -349,7 +319,7 @@ func TestWorktree(t *testing.T) { if err != nil || len(ms) != 1 || ms[0] != match { t.Errorf("Grep(TWO) = %+v, %v, want [%+v], nil", ms, err, match) } - write(t, dir, "a:é\n.txt", "x: two\n") // git quotes this name unless -z + testgit.WriteFile(t, dir, "a:é\n.txt", "x: two\n") // git quotes this name unless -z ms, _, err = r.Grep(ctx, "x: two", 10) match = vcs.Match{Path: "a:é\n.txt", Line: 1, Text: "x: two"} if err != nil || len(ms) != 1 || ms[0] != match { @@ -384,10 +354,7 @@ func TestWorktree(t *testing.T) { func TestOwns(t *testing.T) { r, dir := newRepo(t) nested := filepath.Join(dir, "build", "nested") - if err := os.MkdirAll(nested, 0o755); err != nil { - t.Fatal(err) - } - git(t, nested, "init", "-q") + testgit.NewRepo(t, nested) tests := []struct { dir string want bool @@ -427,8 +394,8 @@ func TestRefs(t *testing.T) { } // The HEAD of each remote is not a branch. for _, remote := range []string{"origin", "up"} { - git(t, dir, "update-ref", "refs/remotes/"+remote+"/main", "main") - git(t, dir, "symbolic-ref", "refs/remotes/"+remote+"/HEAD", + testgit.Git(t, dir, "update-ref", "refs/remotes/"+remote+"/main", "main") + testgit.Git(t, dir, "symbolic-ref", "refs/remotes/"+remote+"/HEAD", "refs/remotes/"+remote+"/main") } want := "feat main origin/main up/main" @@ -442,13 +409,11 @@ func TestRefs(t *testing.T) { // TestEditor checks that Editor returns core.editor, or "" if it is not set. func TestEditor(t *testing.T) { - t.Setenv("GIT_CONFIG_GLOBAL", os.DevNull) - t.Setenv("GIT_CONFIG_NOSYSTEM", "1") r, dir := newRepo(t) if got := r.Editor(t.Context()); got != "" { t.Errorf("Editor with no core.editor = %q, want \"\"", got) } - git(t, dir, "config", "core.editor", "vim -f") + testgit.Git(t, dir, "config", "core.editor", "vim -f") if got := r.Editor(t.Context()); got != "vim -f" { t.Errorf("Editor = %q, want \"vim -f\"", got) } @@ -458,18 +423,18 @@ func TestEditor(t *testing.T) { // content that Diff gives for a submodule. func TestDiffRenameAndSubmodule(t *testing.T) { dir := t.TempDir() - git(t, dir, "init", "-q") - write(t, dir, "old.txt", "one\ntwo\nthree\n") + testgit.Git(t, dir, "init", "-q") + testgit.WriteFile(t, dir, "old.txt", "one\ntwo\nthree\n") const ( a = "1111111111111111111111111111111111111111" b = "2222222222222222222222222222222222222222" ) - git(t, dir, "add", ".") - git(t, dir, "update-index", "--add", "--cacheinfo", "160000,"+a+",sub") - git(t, dir, "commit", "-qm", "one") - git(t, dir, "mv", "old.txt", "new.txt") - git(t, dir, "update-index", "--cacheinfo", "160000,"+b+",sub") - git(t, dir, "commit", "-qm", "two") + testgit.Git(t, dir, "add", ".") + testgit.Git(t, dir, "update-index", "--add", "--cacheinfo", "160000,"+a+",sub") + testgit.Git(t, dir, "commit", "-qm", "one") + testgit.Git(t, dir, "mv", "old.txt", "new.txt") + testgit.Git(t, dir, "update-index", "--cacheinfo", "160000,"+b+",sub") + testgit.Git(t, dir, "commit", "-qm", "two") ctx := t.Context() r, err := vcs.Open(ctx, dir) @@ -512,8 +477,8 @@ func TestOpenOutsideARepo(t *testing.T) { // no index. func TestNewRepo(t *testing.T) { dir := t.TempDir() - git(t, dir, "init", "-q") - write(t, dir, "a.txt", "one\n") + testgit.Git(t, dir, "init", "-q") + testgit.WriteFile(t, dir, "a.txt", "one\n") r, err := vcs.Open(t.Context(), dir) if err != nil { t.Fatal(err) @@ -546,9 +511,9 @@ func TestSnapshotRacyEdit(t *testing.T) { // the modification time of the index. The copy of the index must keep // that time. r, dir := newRepo(t) - git(t, dir, "config", "core.trustctime", "false") - git(t, dir, "add", "-A") - git(t, dir, "commit", "-qm", "all") + testgit.Git(t, dir, "config", "core.trustctime", "false") + testgit.Git(t, dir, "add", "-A") + testgit.Git(t, dir, "commit", "-qm", "all") then := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC) touch := func(name string) { t.Helper() @@ -556,12 +521,12 @@ func TestSnapshotRacyEdit(t *testing.T) { t.Fatal(err) } } - write(t, dir, "b.txt", "bee\n") + testgit.WriteFile(t, dir, "b.txt", "bee\n") touch("b.txt") // The index entry gets the time of b.txt. - git(t, dir, "update-index", "--really-refresh") + testgit.Git(t, dir, "update-index", "--really-refresh") touch(".git/index") - write(t, dir, "b.txt", "BEE\n") // the same size and time + testgit.WriteFile(t, dir, "b.txt", "BEE\n") // the same size and time touch("b.txt") if got := names(changes(t, r, head(t, r), snapshot(t, r))); got != "Mb.txt" { @@ -574,7 +539,7 @@ func TestSnapshotRacyEdit(t *testing.T) { func TestCommitsLikeHerdr(t *testing.T) { r, dir := newRepo(t) ctx := t.Context() - run := func(args ...string) { git(t, dir, args...) } + run := func(args ...string) { testgit.Git(t, dir, args...) } run("checkout", "-qb", "side", "main") run("commit", "-q", "--allow-empty", "-m", "side") run("checkout", "-q", "feat") @@ -609,7 +574,7 @@ func TestCommitsLikeHerdr(t *testing.T) { } empty := t.TempDir() - git(t, empty, "init", "-q") + testgit.Git(t, empty, "init", "-q") er, err := vcs.Open(ctx, empty) if err != nil { t.Fatal(err) @@ -624,7 +589,7 @@ func TestCommitsLikeHerdr(t *testing.T) { func TestGrepLimit(t *testing.T) { r, dir := newRepo(t) ctx := t.Context() - write(t, dir, "many.txt", strings.Repeat("hit\n", 5000)) + testgit.WriteFile(t, dir, "many.txt", strings.Repeat("hit\n", 5000)) tests := []struct { limit int wantN int diff --git a/vcs/saved_test.go b/vcs/saved_test.go index 1fe4968..d4ad0fc 100644 --- a/vcs/saved_test.go +++ b/vcs/saved_test.go @@ -1,11 +1,11 @@ package vcs_test import ( - "os/exec" "path/filepath" "strings" "testing" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -36,7 +36,7 @@ func TestSavedBase(t *testing.T) { } } blob := hashObject(t, dir, "--upload-pack=x") - git(t, dir, "update-ref", "refs/worktree/rexdiff/base-pick", blob) + testgit.Git(t, dir, "update-ref", "refs/worktree/rexdiff/base-pick", blob) if got := r.SavedBase(ctx); got != "" { t.Errorf("SavedBase of an option = %q, want \"\"", got) } @@ -45,13 +45,10 @@ func TestSavedBase(t *testing.T) { // hashObject writes s as a blob in the repository dir and returns its ID. func hashObject(t *testing.T, dir, s string) string { t.Helper() - cmd := exec.CommandContext(t.Context(), "git", "hash-object", "-w", "--stdin") - cmd.Dir, cmd.Stdin = dir, strings.NewReader(s) - out, err := cmd.Output() - if err != nil { - t.Fatal(err) - } - return strings.TrimSpace(string(out)) + tmp := t.TempDir() + testgit.WriteFile(t, tmp, "blob", s) + out := testgit.Git(t, dir, "hash-object", "-w", filepath.Join(tmp, "blob")) + return strings.TrimSpace(out) } // TestSavedTurn checks that SaveTurn keeps a tree, also after git gc, and @@ -63,7 +60,7 @@ func TestSavedTurn(t *testing.T) { if err := r.SaveTurn(ctx, tree); err != nil { t.Fatal(err) } - git(t, dir, "gc", "-q", "--prune=now") + testgit.Git(t, dir, "gc", "-q", "--prune=now") if got := r.SavedTurn(ctx); got != tree { t.Errorf("SavedTurn = %q, want %q", got, tree) } @@ -86,7 +83,7 @@ func TestSavedPerWorktree(t *testing.T) { r, dir := newRepo(t) ctx := t.Context() other := filepath.Join(t.TempDir(), "wt") - git(t, dir, "worktree", "add", "-q", other, "main") + testgit.Git(t, dir, "worktree", "add", "-q", other, "main") r2, err := vcs.Open(ctx, other) if err != nil { t.Fatal(err) diff --git a/vcs/watch_test.go b/vcs/watch_test.go index 3ead63e..405762c 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -7,6 +7,7 @@ import ( "testing" "time" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -47,7 +48,7 @@ func TestWatcher(t *testing.T) { {"nothing", func(*testing.T, string) {}, vcs.Change{}}, {"same size, new time", func(t *testing.T, dir string) { t.Helper() - write(t, dir, "a.txt", "one\nxyz\n") // the same size + testgit.WriteFile(t, dir, "a.txt", "one\nxyz\n") // the same size p := filepath.Join(dir, "a.txt") later := time.Now().Add(time.Hour) if err := os.Chtimes(p, later, later); err != nil { @@ -56,15 +57,15 @@ func TestWatcher(t *testing.T) { }, files}, {"new file", func(t *testing.T, dir string) { t.Helper() - write(t, dir, "c.txt", "c\n") + testgit.WriteFile(t, dir, "c.txt", "c\n") }, files}, {"new directory", func(t *testing.T, dir string) { t.Helper() - write(t, dir, "x/y/c.txt", "c\n") + testgit.WriteFile(t, dir, "x/y/c.txt", "c\n") }, files}, {"ignored", func(t *testing.T, dir string) { t.Helper() - write(t, dir, "build/more", "x\n") + testgit.WriteFile(t, dir, "build/more", "x\n") }, vcs.Change{}}, {"deleted", func(t *testing.T, dir string) { t.Helper() @@ -74,11 +75,11 @@ func TestWatcher(t *testing.T) { }, files}, {"commit", func(t *testing.T, dir string) { t.Helper() - git(t, dir, "commit", "-qam", "c") + testgit.Git(t, dir, "commit", "-qam", "c") }, vcs.Change{Refs: true}}, {"checkout", func(t *testing.T, dir string) { t.Helper() - git(t, dir, "checkout", "-qb", "other") + testgit.Git(t, dir, "checkout", "-qb", "other") }, vcs.Change{Refs: true}}, } for _, tt := range tests { @@ -103,9 +104,9 @@ func TestWatcher(t *testing.T) { func TestWatcherNewDirectory(t *testing.T) { r, dir := newRepo(t) w := newWatcher(t, r) - write(t, dir, "x/c.txt", "c\n") + testgit.WriteFile(t, dir, "x/c.txt", "c\n") changed(t, w) - write(t, dir, "x/c.txt", "c\nd\n") + testgit.WriteFile(t, dir, "x/c.txt", "c\nd\n") if got := changed(t, w); !got.Files { t.Errorf("after an edit in x: %+v, want Files", got) } @@ -116,15 +117,15 @@ func TestWatcherNewDirectory(t *testing.T) { func TestWatcherUnignore(t *testing.T) { r, dir := newRepo(t) w := newWatcher(t, r) - write(t, dir, "ignored.txt", "xx\n") + testgit.WriteFile(t, dir, "ignored.txt", "xx\n") if got := changed(t, w); got.Files { t.Errorf("after an edit of an ignored file: %+v, want no Files", got) } - write(t, dir, ".gitignore", "build/\n") + testgit.WriteFile(t, dir, ".gitignore", "build/\n") if got := changed(t, w); !got.Files { t.Errorf("after the .gitignore edit: %+v, want Files", got) } - write(t, dir, "ignored.txt", "xxx\n") + testgit.WriteFile(t, dir, "ignored.txt", "xxx\n") if got := changed(t, w); !got.Files { t.Errorf("after an edit of the file: %+v, want Files", got) } @@ -136,7 +137,7 @@ func TestWatcherUnignore(t *testing.T) { func TestWatcherShown(t *testing.T) { r, dir := newRepo(t) w := newWatcher(t, r) - write(t, dir, "build/new", "x\n") + testgit.WriteFile(t, dir, "build/new", "x\n") if got := changed(t, w); got.Files { t.Errorf("a new file in a hidden build: %+v, want no Files", got) } @@ -144,7 +145,7 @@ func TestWatcherShown(t *testing.T) { if got := changed(t, w); got.Files { t.Errorf("after Show: %+v, want no Files", got) } - write(t, dir, "build/more", "x\n") + testgit.WriteFile(t, dir, "build/more", "x\n") if got := changed(t, w); !got.Files { t.Errorf("a new file in a shown build: %+v, want Files", got) } @@ -155,12 +156,12 @@ func TestWatcherShown(t *testing.T) { t.Errorf("a removed file in a shown build: %+v, want Files", got) } w.Show(nil) - write(t, dir, "build/more", "x\n") + testgit.WriteFile(t, dir, "build/more", "x\n") if got := changed(t, w); got.Files { t.Errorf("a new file after Show(nil): %+v, want no Files", got) } w.Show([]string{"ignored.txt"}) - write(t, dir, "ignored.txt", "an edit\n") + testgit.WriteFile(t, dir, "ignored.txt", "an edit\n") if got := changed(t, w); !got.Files { t.Errorf("an edit of a shown file: %+v, want Files", got) } @@ -174,20 +175,20 @@ func TestWatcherNested(t *testing.T) { t.Run(name, func(t *testing.T) { r, dir := newRepo(t) other := t.TempDir() - git(t, other, "init", "-q") - write(t, other, "f", "1\n") - git(t, other, "add", ".") - git(t, other, "commit", "-qm", "1") + testgit.Git(t, other, "init", "-q") + testgit.WriteFile(t, other, "f", "1\n") + testgit.Git(t, other, "add", ".") + testgit.Git(t, other, "commit", "-qm", "1") inner := filepath.Join(dir, "inner") if sub { - git(t, dir, "-c", "protocol.file.allow=always", + testgit.Git(t, dir, "-c", "protocol.file.allow=always", "submodule", "add", "-q", other, "inner") } else { - git(t, dir, "clone", "-q", other, "inner") + testgit.Git(t, dir, "clone", "-q", other, "inner") } w := newWatcher(t, r) - write(t, inner, "f", "2\n") - git(t, inner, "commit", "-qam", "2") + testgit.WriteFile(t, inner, "f", "2\n") + testgit.Git(t, inner, "commit", "-qam", "2") if got := changed(t, w); !got.Files { t.Errorf("after a commit in %s: %+v, want Files", name, got) } @@ -225,7 +226,7 @@ func TestWatcherBudget(t *testing.T) { return now }) changed(t, w) - write(t, dir, "c.txt", "c\n") + testgit.WriteFile(t, dir, "c.txt", "c\n") if got := changed(t, w); got != (vcs.Change{}) { t.Errorf("call in the pause: %+v, want none", got) } @@ -256,10 +257,10 @@ func TestWatcherUntrackedDir(t *testing.T) { t.Fatal(err) } } else { - write(t, dir, tt.setup, "x\n") + testgit.WriteFile(t, dir, tt.setup, "x\n") } w := newWatcher(t, r) - write(t, dir, tt.edit, "c\n") + testgit.WriteFile(t, dir, tt.edit, "c\n") if got := changed(t, w); got.Files != tt.want { t.Errorf("after a new %s: %+v, want Files %v", tt.edit, got, tt.want) } From c114ef9a3b53e834b500e20c8da6eb4b24409f3d Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 19:09:23 +0100 Subject: [PATCH 037/119] test(tui): drive the timers with a clock that the tests move The model reads the time from its now field, and gives the same clock to its watcher through Watcher.SetClock. The tests move a test clock in place of sleeps and edits of the time fields. onTick returns only the work of the tick, so a test runs it without the timer of the next tick. --- tui/click_test.go | 4 ++-- tui/model.go | 47 +++++++++++++++++++++++++--------------- tui/mouse.go | 2 +- tui/notes_test.go | 10 +++++++-- tui/pr.go | 6 ++--- tui/prfetch_test.go | 21 +++++++++++------- tui/reload_test.go | 18 ++++++++++----- tui/send.go | 5 ++--- tui/tree_test.go | 1 + tui/tui.go | 2 +- tui/tui_test.go | 15 +++++++++++++ tui/turn_test.go | 34 +++++++++++++++++------------ tui/view.go | 2 +- tui/watch_test.go | 53 +++++++++++++++------------------------------ vcs/export_test.go | 7 ------ vcs/watch.go | 6 ++++- vcs/watch_test.go | 4 ++-- 17 files changed, 134 insertions(+), 103 deletions(-) delete mode 100644 vcs/export_test.go diff --git a/tui/click_test.go b/tui/click_test.go index c35acc8..587fab4 100644 --- a/tui/click_test.go +++ b/tui/click_test.go @@ -5,7 +5,6 @@ import ( "slices" "strings" "testing" - "time" tea "charm.land/bubbletea/v2" "github.com/charmbracelet/x/ansi" @@ -84,6 +83,7 @@ func TestMultiClickCopies(t *testing.T) { // within the window. func TestClickChain(t *testing.T) { m, _ := newTestModel(t) + clk := setClock(&m) at := tea.Mouse{X: 40, Y: 10} for i, want := range []int{1, 2, 3, 3} { if n := m.countClick(at); n != want { @@ -93,7 +93,7 @@ func TestClickChain(t *testing.T) { if n := m.countClick(tea.Mouse{X: 41, Y: 10}); n != 1 { t.Errorf("another cell: count %d, want 1", n) } - m.click.at = time.Now().Add(-clickWindow) + clk.advance(clickWindow) if n := m.countClick(tea.Mouse{X: 41, Y: 10}); n != 1 { t.Errorf("after the window: count %d, want 1", n) } diff --git a/tui/model.go b/tui/model.go index 0129483..eea6f49 100644 --- a/tui/model.go +++ b/tui/model.go @@ -176,6 +176,7 @@ type model struct { repo *vcs.Repo rex *rex.Client // nil outside Rex log *slog.Logger + now func() time.Time // the clock, which a test can set cfg config keys keyMap @@ -310,6 +311,7 @@ func newModel(ctx context.Context, o Options, cfg config) model { repo: o.Repo, rex: o.Rex, log: o.Log, + now: time.Now, notice: o.Notice, updater: o.Updater, w: 120, @@ -430,7 +432,7 @@ const flashTime = 4 * time.Second // flash shows s in the footer for a short time. The text can come from Rex // or from git, so flash quotes it if it has control characters. func (m *model) flash(s string) { - m.status, m.statusTill = termtext.Quote(s), time.Now().Add(flashTime) + m.status, m.statusTill = termtext.Quote(s), m.now().Add(flashTime) } // trees returns the two trees that the Changes tab compares in the scope. @@ -605,7 +607,7 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { case tea.FocusMsg: m.reloadIfChanged() case tickMsg: - cmd = m.onTick() + cmd = tea.Batch(tick(time.Second), m.onTick()) case tea.BackgroundColorMsg: if !sameColor(m.bg, msg.Color) { m.bg, m.dark = msg.Color, msg.IsDark() @@ -788,7 +790,7 @@ func (m *model) retry(err error) { m.retryWait, m.retryAt = 0, time.Time{} return } - m.retryAt = time.Now().Add(backoff(&m.retryWait)) + m.retryAt = m.now().Add(backoff(&m.retryWait)) m.reloadOwed = true } @@ -797,7 +799,19 @@ func (m *model) retry(err error) { func (m *model) dropWatch(err error) { m.log.Warn("watch failed", "err", err) m.watch = nil - m.watchAt = time.Now().Add(backoff(&m.watchWait)) + m.watchAt = m.now().Add(backoff(&m.watchWait)) +} + +// startWatch starts the watcher of the repository. The watcher uses the +// clock of the model. +func (m *model) startWatch() error { + w, err := m.repo.Watch(m.ctx) + if err != nil { + return err + } + w.SetClock(m.now) + m.watch, m.watchAt = w, time.Time{} + return nil } // changed tells what the watcher sees. Without a watcher, it tells that @@ -805,13 +819,10 @@ func (m *model) dropWatch(err error) { // tells that both change. func (m *model) changed() vcs.Change { all := vcs.Change{Files: true, Refs: true} - now := time.Now() + now := m.now() if m.watch == nil && !m.watchAt.IsZero() && !now.Before(m.watchAt) { - w, err := m.repo.Watch(m.ctx) - if err != nil { + if err := m.startWatch(); err != nil { m.dropWatch(err) - } else { - m.watch, m.watchAt = w, time.Time{} } } if m.watch == nil { @@ -823,7 +834,7 @@ func (m *model) changed() vcs.Change { } m.watch.Show(m.shownIgnored()) ch, err := m.watch.Changed(m.ctx) - m.log.Debug("watch", "took", time.Since(now), "files", ch.Files, "refs", ch.Refs) + m.log.Debug("watch", "took", m.now().Sub(now), "files", ch.Files, "refs", ch.Refs) if err != nil { m.dropWatch(err) m.polled = now @@ -833,7 +844,8 @@ func (m *model) changed() vcs.Change { return ch } -// onTick reloads the current tab if the watcher sees a change. +// onTick reloads the current tab if the watcher sees a change. It +// returns the work of the tick. Update adds the next tick. func (m *model) onTick() tea.Cmd { m.ticks++ ch := m.changed() @@ -842,12 +854,12 @@ func (m *model) onTick() tea.Cmd { } m.reloadOwed = m.reloadOwed || ch.Files || ch.Refs m.filesOwed = m.filesOwed || ch.Files - now := time.Now() + now := m.now() m.reloadDue() - if m.status != "" && time.Now().After(m.statusTill) { + if m.status != "" && m.now().After(m.statusTill) { m.status = "" } - cmds := []tea.Cmd{tick(time.Second)} + var cmds []tea.Cmd // Without a watcher, each tick reports a change of the refs. Then only // the poll reads the pull request. if ch.Refs && m.watch != nil { @@ -857,7 +869,7 @@ func (m *model) onTick() tea.Cmd { m.sampleAt = time.Time{} // one list at a time cmds = append(cmds, m.listAgents(agentsMsg{})) } - if m.tab == tabPR && time.Since(m.prf.polled) >= prPoll { + if m.tab == tabPR && m.now().Sub(m.prf.polled) >= prPoll { cmds = append(cmds, m.requestPR(false)) } if m.ticks%colorTicks == 0 { // follow the changes of the terminal theme @@ -874,11 +886,12 @@ func (m *model) reloadDue() { if m.mode == modeComment { return } - now := time.Now() + now := m.now() switch { case m.tab == tabChanges && m.reloadOwed && !now.Before(m.reloadAt) && !now.Before(m.retryAt): m.reloadIfChanged() - m.reloadAt = time.Now().Add(budgetFactor * time.Since(now)) + end := m.now() + m.reloadAt = end.Add(budgetFactor * end.Sub(now)) case m.tab == tabFiles && m.filesOwed: m.reloadFiles() // reloadFiles renders the file too case m.tab == tabFiles && m.watch == nil: diff --git a/tui/mouse.go b/tui/mouse.go index 076782e..251f269 100644 --- a/tui/mouse.go +++ b/tui/mouse.go @@ -147,7 +147,7 @@ type clickChain struct { // countClick adds a press to the chain and returns the count. A press on // another cell, or after [clickWindow], starts a new chain. func (m *model) countClick(mouse tea.Mouse) int { - c, now := m.click, time.Now() + c, now := m.click, m.now() n := 1 if c.n > 0 && c.x == mouse.X && c.y == mouse.Y && now.Sub(c.at) < clickWindow { n = min(c.n+1, 3) diff --git a/tui/notes_test.go b/tui/notes_test.go index e955a83..cc10458 100644 --- a/tui/notes_test.go +++ b/tui/notes_test.go @@ -68,12 +68,18 @@ func TestEmptyNotes(t *testing.T) { // long they show. func TestStatusMessages(t *testing.T) { m, _ := newTestModel(t) + clk := setClock(&m) m = press(t, m, "]", "c", "h", "i", "enter") if m.status != "comment added" { t.Errorf("a new comment: status %q, want \"comment added\"", m.status) } - if d := time.Until(m.statusTill); d <= 3*time.Second || d > 4*time.Second { - t.Errorf("the status shows for %v, want 4s", d) + clk.advance(flashTime) + if m = step(t, m, tickMsg{}); m.status != "comment added" { + t.Errorf("a tick at the end of the flash: status %q, want it kept", m.status) + } + clk.advance(time.Nanosecond) + if m = step(t, m, tickMsg{}); m.status != "" { + t.Errorf("a tick after the flash: status %q, want none", m.status) } m = press(t, m, "e", "!", "enter") if m.status != "comment updated" { diff --git a/tui/pr.go b/tui/pr.go index 69126ac..122a2c4 100644 --- a/tui/pr.go +++ b/tui/pr.go @@ -45,8 +45,8 @@ type prFetch struct { // after it, unless the read hangs. func (m *model) requestPR(forced bool) tea.Cmd { f := &m.prf - f.polled = time.Now() - hung := f.inFlight && time.Since(f.started) >= prHang + f.polled = m.now() + hung := f.inFlight && f.polled.Sub(f.started) >= prHang if !forced && f.inFlight && !hung { f.trailing = true return nil @@ -63,7 +63,7 @@ func (m *model) loadPR() tea.Cmd { } ctx, cancel := context.WithCancel(m.ctx) f.gen++ - f.inFlight, f.trailing, f.started, f.cancel = true, false, time.Now(), cancel + f.inFlight, f.trailing, f.started, f.cancel = true, false, m.now(), cancel repo, gen := m.repo, f.gen hosts := vcs.Hosts{ GitHub: m.cfg.GitHubHost, diff --git a/tui/prfetch_test.go b/tui/prfetch_test.go index 5a6a4e5..e4d074e 100644 --- a/tui/prfetch_test.go +++ b/tui/prfetch_test.go @@ -29,17 +29,23 @@ func TestPRStaleResult(t *testing.T) { // after the last request, but only on the PR tab. func TestPRPoll(t *testing.T) { m, _ := newTestModel(t) - m.prf.polled = time.Now().Add(-61 * time.Second) + clk := setClock(&m) + clk.advance(61 * time.Second) if m = step(t, m, tickMsg{}); m.prf.inFlight { t.Error("a tick on the Changes tab reads the pull request") } m = press(t, m, "3") - m.prf.polled = time.Now().Add(-59 * time.Second) + if m = step(t, m, tickMsg{}); !m.prf.inFlight || m.prf.gen != 1 { + t.Fatalf("the first tick on the PR tab: in flight %v, gen %d, want a read", + m.prf.inFlight, m.prf.gen) + } + m = step(t, m, prMsg{gen: 1}) + clk.advance(59 * time.Second) if m = step(t, m, tickMsg{}); m.prf.inFlight { t.Error("a tick before a minute reads the pull request") } - m.prf.polled = time.Now().Add(-61 * time.Second) - if m = step(t, m, tickMsg{}); !m.prf.inFlight || m.prf.gen != 1 { + clk.advance(2 * time.Second) + if m = step(t, m, tickMsg{}); !m.prf.inFlight || m.prf.gen != 2 { t.Errorf("after a minute: in flight %v, gen %d, want a read", m.prf.inFlight, m.prf.gen) } } @@ -48,6 +54,7 @@ func TestPRPoll(t *testing.T) { // more read after it, and that r and a hung read start one at once. func TestPRTrailing(t *testing.T) { m, _ := newTestModel(t) + clk := setClock(&m) m = press(t, m, "3") m.requestPR(true) if cmd := m.requestPR(false); cmd != nil || !m.prf.trailing || m.prf.gen != 1 { @@ -68,7 +75,7 @@ func TestPRTrailing(t *testing.T) { if m = press(t, m, "r"); m.prf.gen != 4 { t.Errorf("r during a read: gen %d, want a new read", m.prf.gen) } - m.prf.started = time.Now().Add(-61 * time.Second) + clk.advance(61 * time.Second) if m.requestPR(false); m.prf.gen != 5 || m.prf.trailing { t.Errorf("a request after a hung read: gen %d, want a new read", m.prf.gen) } @@ -77,12 +84,11 @@ func TestPRTrailing(t *testing.T) { // TestPRBranchSwitch checks that a switch to another branch blanks the PR // tab, and that a commit on the branch keeps the pull request. func TestPRBranchSwitch(t *testing.T) { - m, dir, pause := watched(t) + m, dir := watched(t) m = press(t, m, "3") m = step(t, m, prMsg{gen: m.prf.gen, pr: &vcs.PullRequest{Title: "T"}}) testgit.Git(t, dir, "commit", "-qam", "more") - time.Sleep(pause) m = step(t, m, tickMsg{}) if m.pr.pr == nil || !m.prf.inFlight { t.Fatalf("after a commit: pr %+v, in flight %v, want the PR kept and a read", @@ -92,7 +98,6 @@ func TestPRBranchSwitch(t *testing.T) { testgit.Git(t, dir, "checkout", "-q", "main") gen := m.prf.gen - time.Sleep(pause) m = step(t, m, tickMsg{}) if m.pr.pr != nil || m.prf.gen == gen || !shows(m, "loading the pull request") { t.Errorf("after a switch: pr %+v, gen %d, want a blank tab and a read", m.pr.pr, m.prf.gen) diff --git a/tui/reload_test.go b/tui/reload_test.go index 1b40d0a..4d5f93c 100644 --- a/tui/reload_test.go +++ b/tui/reload_test.go @@ -75,12 +75,17 @@ func TestPRErrorKeepsPR(t *testing.T) { // only every pollEvery. func TestPollWithoutWatcher(t *testing.T) { m, dir := newTestModel(t) + clk := setClock(&m) m = step(t, m, tickMsg{}) testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") if m = step(t, m, tickMsg{}); shows(m, "return 42") { t.Errorf("a tick before the poll is due, view got:\n%s\nwant no reload", view(m)) } - m.polled, m.reloadAt = time.Now().Add(-pollEvery), time.Time{} + clk.advance(pollEvery - time.Nanosecond) + if m = step(t, m, tickMsg{}); shows(m, "return 42") { + t.Errorf("a tick just before pollEvery, view got:\n%s\nwant no reload", view(m)) + } + clk.advance(time.Nanosecond) if m = step(t, m, tickMsg{}); !shows(m, "return 42") { t.Errorf("a tick after pollEvery, view got:\n%s\nwant the edit", view(m)) } @@ -90,17 +95,19 @@ func TestPollWithoutWatcher(t *testing.T) { // failure, with a wait that doubles. func TestWatchRestarts(t *testing.T) { m, _ := newTestModel(t) + clk := setClock(&m) + m.dropWatch(errors.New("gone")) + clk.advance(retryFirst) path := os.Getenv("PATH") noGit(t) - m.watchAt = time.Now() - if m = step(t, m, tickMsg{}); m.watch != nil || !m.watchAt.After(time.Now()) { + if m = step(t, m, tickMsg{}); m.watch != nil || !m.watchAt.After(m.now()) { t.Fatalf("a failed start: watcher %v, next try %v; want none, a wait", m.watch, m.watchAt) } t.Setenv("PATH", path) if m = step(t, m, tickMsg{}); m.watch != nil { t.Fatal("a tick before the wait ends starts the watcher") } - m.watchAt = time.Now() + clk.advance(2 * retryFirst) if m = step(t, m, tickMsg{}); m.watch == nil { t.Error("a tick after the wait: no watcher, want one") } @@ -109,10 +116,9 @@ func TestWatchRestarts(t *testing.T) { // TestWatchErrorRestarts checks that an error of the watcher drops it, so // that a later tick starts it again. func TestWatchErrorRestarts(t *testing.T) { - m, dir, pause := watched(t) + m, dir := watched(t) noGit(t) testgit.WriteFile(t, dir, "new.go", "package a\n") // the watcher lists the files again - time.Sleep(pause) if m = step(t, m, tickMsg{}); m.watch != nil || m.watchAt.IsZero() { t.Errorf("after an error of the watcher: watcher %v, next try %v; want none, a try", m.watch, m.watchAt) diff --git a/tui/send.go b/tui/send.go index a556270..7f91041 100644 --- a/tui/send.go +++ b/tui/send.go @@ -5,7 +5,6 @@ import ( "fmt" "maps" "slices" - "time" tea "charm.land/bubbletea/v2" @@ -184,7 +183,7 @@ func (m *model) startTurn(ms []member) { app: ms[i].app, tree: tree, running: true, - at: time.Now(), + at: m.now(), } } @@ -244,7 +243,7 @@ func (m *model) onAgents(msg agentsMsg) tea.Cmd { case !m.sampled && !msg.send: // Without a list, the turns do not start. Thus list again later. m.log.Warn("agent list failed", "err", msg.err) - m.sampleAt = time.Now().Add(backoff(&m.sampleWait)) + m.sampleAt = m.now().Add(backoff(&m.sampleWait)) } m.observeTurn() if !msg.send { diff --git a/tui/tree_test.go b/tui/tree_test.go index fb3e916..513512a 100644 --- a/tui/tree_test.go +++ b/tui/tree_test.go @@ -37,6 +37,7 @@ func newTreeModel(t *testing.T) (model, string) { t.Fatal(err) } m := newModel(t.Context(), Options{Repo: repo}, defaultConfig()) + setClock(&m) m.reload() m = step(t, m, tea.WindowSizeMsg{Width: 120, Height: 40}) m.focusList = true diff --git a/tui/tui.go b/tui/tui.go index 9d31161..449e17d 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -94,7 +94,7 @@ func Run(ctx context.Context, o Options) (resume string, err error) { defer cancel() m := newModel(ctx, o, cfg) - if m.watch, err = o.Repo.Watch(ctx); err != nil { + if err := m.startWatch(); err != nil { m.dropWatch(err) } var saved *savedState diff --git a/tui/tui_test.go b/tui/tui_test.go index 216f8a0..c335995 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -43,11 +43,26 @@ func newTestModel(tb testing.TB) (model, string) { } m := newModel(tb.Context(), Options{Repo: repo}, defaultConfig()) m.grepBudget = time.Minute // a slow test machine does not cut the searches + setClock(&m) m.reload() m = step(tb, m, tea.WindowSizeMsg{Width: 120, Height: 40}) return m, dir } +// testClock is a clock that moves only when the test moves it. +type testClock struct{ t time.Time } + +// setClock makes m use a new test clock, and returns the clock. A +// watcher that m starts after it uses the clock too. +func setClock(m *model) *testClock { + c := &testClock{t: time.Date(2025, 1, 1, 12, 0, 0, 0, time.UTC)} + m.now = func() time.Time { return c.t } + return c +} + +// advance moves c forward by d. +func (c *testClock) advance(d time.Duration) { c.t = c.t.Add(d) } + // step gives msg to m and returns the new model. func step(tb testing.TB, m model, msg tea.Msg) model { tb.Helper() diff --git a/tui/turn_test.go b/tui/turn_test.go index fc5cefe..6d3e16d 100644 --- a/tui/turn_test.go +++ b/tui/turn_test.go @@ -99,13 +99,14 @@ func TestTurnKeepsOldBaseline(t *testing.T) { // it the last turn, before the turn ends. func TestTurnPromotesOnChange(t *testing.T) { m, dir := turnModel(t) + clk := setClock(&m) m = step(t, m, status("p", "pi", rex.StateWorking)) m = step(t, m, tickMsg{}) if m.turn != nil { t.Fatal("a tick with no change promotes the turn") } testgit.WriteFile(t, dir, "c.go", "package a\n") - m.polled = time.Time{} // without a watcher, the poll sees the change + clk.advance(pollEvery) // without a watcher, the poll sees the change m = step(t, m, tickMsg{}) if m.turn == nil || !m.turn.running || m.pending != nil { t.Fatalf("turn %+v, pending %+v, want a running turn", m.turn, m.pending) @@ -186,23 +187,27 @@ func TestTurnUnknownCwdHolds(t *testing.T) { } } -// tickAgents runs a tick of m and returns the agent lists that its -// commands give. +// tickAgents runs the work of a tick of m and returns the agent lists +// that its commands give. The work has no timer, so each command returns +// at once. func tickAgents(t *testing.T, m *model) []agentsMsg { t.Helper() - batch, _ := m.onTick()().(tea.BatchMsg) var out []agentsMsg - for _, c := range batch { - got := make(chan tea.Msg, 1) - go func() { got <- c() }() - select { - case msg := <-got: - if a, ok := msg.(agentsMsg); ok { - out = append(out, a) + var run func(tea.Cmd) + run = func(c tea.Cmd) { + if c == nil { + return + } + switch msg := c().(type) { + case tea.BatchMsg: + for _, c := range msg { + run(c) } - case <-time.After(300 * time.Millisecond): // the next tick + case agentsMsg: + out = append(out, msg) } } + run(m.onTick()) return out } @@ -211,6 +216,7 @@ func tickAgents(t *testing.T, m *model) []agentsMsg { // the list, the turns do not start. func TestSampleRetry(t *testing.T) { m, dir := newTestModel(t) + clk := setClock(&m) logRex(t, &m) // its output is no list m = step(t, m, m.listAgents(agentsMsg{})()) if m.sampled || m.sampleAt.IsZero() || m.sampleWait != 2*time.Second { @@ -220,7 +226,7 @@ func TestSampleRetry(t *testing.T) { if got := tickAgents(t, &m); len(got) != 0 { t.Errorf("a tick before the wait lists %d times, want 0", len(got)) } - m.sampleAt = time.Now().Add(-time.Millisecond) + clk.advance(time.Second) got := tickAgents(t, &m) if len(got) != 1 || got[0].err == nil { t.Fatalf("a tick after the wait lists %d times, want 1 that fails", len(got)) @@ -229,7 +235,7 @@ func TestSampleRetry(t *testing.T) { t.Errorf("after a second failure: wait %v, want 4s", m.sampleWait) } m = step(t, m, sample("p", "pi", dir)) - m.sampleAt = time.Now().Add(-time.Millisecond) + clk.advance(2 * time.Second) if !m.sampled || len(tickAgents(t, &m)) != 0 { t.Errorf("after a good list: sampled %v, want true and no more lists", m.sampled) } diff --git a/tui/view.go b/tui/view.go index 1bd8b0d..19a9e6f 100644 --- a/tui/view.go +++ b/tui/view.go @@ -161,7 +161,7 @@ func (m *model) turnLabel() string { if m.turn == nil || m.turn.at.IsZero() { return "" } - ago := time.Since(m.turn.at).Round(time.Second) + ago := m.now().Sub(m.turn.at).Round(time.Second) app := termtext.Quote(m.turn.app) // the app name comes from the agent if m.turn.running { return noteStyle.Render("● ") + app + dimStyle.Render(" working · "+ago.String()) diff --git a/tui/watch_test.go b/tui/watch_test.go index fad845f..5353cc2 100644 --- a/tui/watch_test.go +++ b/tui/watch_test.go @@ -13,30 +13,22 @@ import ( ) // watched returns a test model with a watcher, after its first tick. The -// next check of the watcher is due after the time that it returns. -func watched(t *testing.T) (m model, dir string, pause time.Duration) { +// clock of the test does not move, so each tick checks the watcher. +func watched(t *testing.T) (m model, dir string) { t.Helper() m, dir = newTestModel(t) - w, err := m.repo.Watch(t.Context()) - if err != nil { + if err := m.startWatch(); err != nil { t.Fatal(err) } - m.watch = w - start := time.Now() - m = step(t, m, tickMsg{}) - // The pause of the watcher is 20 times its check, which is a part of - // the tick. A check after a change can take longer than the first - // check, thus wait twice as long. - return m, dir, 42 * time.Since(start) + return step(t, m, tickMsg{}), dir } // TestTickRunsNoGitWhenIdle checks that a tick runs no git process while // nothing changes. func TestTickRunsNoGitWhenIdle(t *testing.T) { - m, _, pause := watched(t) + m, _ := watched(t) noGit(t) for range 3 { - time.Sleep(pause) m = step(t, m, tickMsg{}) } if shows(m, "isn't installed") { @@ -46,9 +38,8 @@ func TestTickRunsNoGitWhenIdle(t *testing.T) { // TestTickSeesEdit checks that a tick shows an edit. func TestTickSeesEdit(t *testing.T) { - m, dir, pause := watched(t) + m, dir := watched(t) testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") - time.Sleep(pause) if m = step(t, m, tickMsg{}); !shows(m, "return 42") { t.Errorf("view got:\n%s\nwant the edit", view(m)) } @@ -56,8 +47,8 @@ func TestTickSeesEdit(t *testing.T) { // TestRefreshForces checks that r reloads in the pause after a reload. func TestRefreshForces(t *testing.T) { - m, dir, _ := watched(t) - m.reloadAt = time.Now().Add(time.Hour) + m, dir := watched(t) + m.reloadAt = m.now().Add(time.Hour) // the pause after a slow reload testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") if m = press(t, m, "r"); !shows(m, "return 42") { t.Errorf("view got:\n%s\nwant the edit", view(m)) @@ -67,7 +58,8 @@ func TestRefreshForces(t *testing.T) { // TestTickRetries checks that a tick retries a failed reload after the // wait, and that the wait then clears. func TestTickRetries(t *testing.T) { - m, _, _ := watched(t) + m, _ := watched(t) + clk := setClock(&m) path := os.Getenv("PATH") noGit(t) if m = press(t, m, "r"); m.retryAt.IsZero() || !strings.HasPrefix(m.status, "refresh failed: ") { @@ -79,7 +71,7 @@ func TestTickRetries(t *testing.T) { if m = step(t, m, tickMsg{}); m.retryAt != retryAt { t.Errorf("a tick in the wait: retry at %v, want %v", m.retryAt, retryAt) } - m.retryAt, m.reloadAt = time.Now(), time.Now() // the waits end + clk.advance(retryFirst) m = step(t, m, tickMsg{}) if !m.retryAt.IsZero() || m.retryWait != 0 { t.Errorf("after a good reload, retryAt %v, retryWait %v; want zero", m.retryAt, m.retryWait) @@ -92,7 +84,7 @@ func TestRetryBackoff(t *testing.T) { m, _ := newTestModel(t) want := []int{1, 2, 4, 8, 16, 32, 60, 60} for i, w := range want { - before := time.Now() + before := m.now() m.retry(errors.New("fail")) got := m.retryAt.Sub(before).Round(time.Second) if got != time.Duration(w)*time.Second { @@ -102,20 +94,15 @@ func TestRetryBackoff(t *testing.T) { } // watchedTree returns newTreeModel on the Files tab, with a watcher, after -// its first tick. The next check of the watcher is due after the time that -// it returns. -func watchedTree(t *testing.T) (m model, dir string, pause time.Duration) { +// its first tick. +func watchedTree(t *testing.T) (m model, dir string) { t.Helper() m, dir = newTreeModel(t) - w, err := m.repo.Watch(t.Context()) - if err != nil { + if err := m.startWatch(); err != nil { t.Fatal(err) } - m.watch = w m = press(t, m, "2") - start := time.Now() - m = step(t, m, tickMsg{}) - return m, dir, 42 * time.Since(start) + return step(t, m, tickMsg{}), dir } // openFile moves the cursor of the file list down to the file at path. @@ -136,7 +123,7 @@ func openFile(t *testing.T, m model, path string) model { // TestFilesTabWaitsForWatcher checks that, with a watcher, a tick reads // the open file of the Files tab only after the watcher reports a change. func TestFilesTabWaitsForWatcher(t *testing.T) { - m, dir, pause := watchedTree(t) + m, dir := watchedTree(t) const path = "top.go" m = openFile(t, m, path) fi, err := os.Stat(filepath.Join(dir, path)) @@ -149,12 +136,10 @@ func TestFilesTabWaitsForWatcher(t *testing.T) { if err := os.Chtimes(filepath.Join(dir, path), fi.ModTime(), fi.ModTime()); err != nil { t.Fatal(err) } - time.Sleep(pause) if m = step(t, m, tickMsg{}); shows(m, "var x = 2") { t.Errorf("no change for the watcher, view got:\n%s\nwant no read", view(m)) } testgit.WriteFile(t, dir, path, "package a\n\nvar x = 42\n") - time.Sleep(pause) if m = step(t, m, tickMsg{}); !shows(m, "var x = 42") { t.Errorf("view got:\n%s\nwant the edit", view(m)) } @@ -163,14 +148,12 @@ func TestFilesTabWaitsForWatcher(t *testing.T) { // TestTickSeesIgnoredEdit checks that a tick shows an edit of the open // file in an expanded ignored directory, as in herdr-reviewr. func TestTickSeesIgnoredEdit(t *testing.T) { - m, dir, pause := watchedTree(t) + m, dir := watchedTree(t) m.fileTree.cur = 0 m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) // expand out m = openFile(t, m, "out/x.txt") - time.Sleep(pause) m = step(t, m, tickMsg{}) // the watcher gets the open file testgit.WriteFile(t, dir, "out/x.txt", "an edit\n") - time.Sleep(pause) if m = step(t, m, tickMsg{}); !shows(m, "an edit") { t.Errorf("view got:\n%s\nwant the edit", view(m)) } diff --git a/vcs/export_test.go b/vcs/export_test.go deleted file mode 100644 index 5b8b58a..0000000 --- a/vcs/export_test.go +++ /dev/null @@ -1,7 +0,0 @@ -package vcs - -import "time" - -// SetClock sets the clock of w. A clock that does not move turns off the -// pause between the checks. -func SetClock(w *Watcher, now func() time.Time) { w.now = now } diff --git a/vcs/watch.go b/vcs/watch.go index f7e5d7b..bd92d5e 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -25,7 +25,7 @@ const budgetFactor = 20 type Watcher struct { r *Repo gitDir, common string // absolute paths - now func() time.Time // the clock, which a test can set + now func() time.Time // the clock, see SetClock next time.Time // no check before this time started bool @@ -59,6 +59,10 @@ func (r *Repo) Watch(ctx context.Context) (*Watcher, error) { return &Watcher{r: r, gitDir: gitDir, common: common, now: time.Now}, nil } +// SetClock sets the clock of w. The pause between two checks follows it. +// A clock that does not move turns off the pause. +func (w *Watcher) SetClock(now func() time.Time) { w.now = now } + // Show sets the ignored paths that show: the directories that the user // expands and the open file. paths are relative to the root. Git does not // list ignored paths, thus Changed also reports an edit of a shown file, diff --git a/vcs/watch_test.go b/vcs/watch_test.go index 405762c..9b287f4 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -19,7 +19,7 @@ func newWatcher(t *testing.T, r *vcs.Repo) *vcs.Watcher { if err != nil { t.Fatal(err) } - vcs.SetClock(w, func() time.Time { return time.Time{} }) + w.SetClock(func() time.Time { return time.Time{} }) if ch := changed(t, w); ch != (vcs.Change{Files: true, Refs: true}) { t.Fatalf("first call: %+v, want both", ch) } @@ -221,7 +221,7 @@ func TestWatcherBudget(t *testing.T) { // Each reading of the clock moves it by 10 ms, so each call takes 10 // ms and the next call waits 200 ms. now := time.Now() - vcs.SetClock(w, func() time.Time { + w.SetClock(func() time.Time { now = now.Add(10 * time.Millisecond) return now }) From 81f79feb5742190dd12961a145c98b37106b9695 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 19:18:21 +0100 Subject: [PATCH 038/119] test: build each fixture repository once and run the tests in parallel testgit.Fixture makes a repository once per package and copies it for each test. The tests that do not set the environment run in parallel. TestSmallScreens runs a subtest per size, TestMultiClickCopies shares one model, and the search tests type with a cursor that does not blink. go test -count=1: tui 57.6 s to 10.3 s, vcs 11.1 s to 3.3 s. --- internal/testgit/testgit.go | 48 ++++++++++++++++++++-- internal/testgit/testgit_test.go | 27 +++++++++++++ tui/anchor_test.go | 5 +++ tui/box_test.go | 4 ++ tui/click_test.go | 23 +++++++++-- tui/commentkeys_test.go | 5 +++ tui/commits_test.go | 2 + tui/cross_test.go | 3 ++ tui/editor_test.go | 2 + tui/find_test.go | 6 +++ tui/fold_test.go | 35 ++++++++++------ tui/keys_test.go | 4 ++ tui/layout_test.go | 3 ++ tui/navpos_test.go | 4 ++ tui/notes_test.go | 9 +++++ tui/prfetch_test.go | 4 ++ tui/quit_test.go | 3 ++ tui/release_test.go | 14 +++++++ tui/reload_test.go | 3 ++ tui/saved_test.go | 3 ++ tui/search_test.go | 14 +++++++ tui/split_test.go | 3 ++ tui/state_test.go | 5 +++ tui/tree_test.go | 34 ++++++++++------ tui/tui_test.go | 68 +++++++++++++++++++++++--------- tui/turn_test.go | 8 ++++ tui/watch_test.go | 5 +++ vcs/hostile_test.go | 10 +++++ vcs/repo_test.go | 52 +++++++++++++++++------- vcs/saved_test.go | 3 ++ vcs/watch_test.go | 10 +++++ 31 files changed, 353 insertions(+), 66 deletions(-) diff --git a/internal/testgit/testgit.go b/internal/testgit/testgit.go index 18e788d..cab92ec 100644 --- a/internal/testgit/testgit.go +++ b/internal/testgit/testgit.go @@ -8,11 +8,12 @@ import ( "os/exec" "path/filepath" "strings" + "sync" "testing" ) -// set is true after Main sets the environment. -var set bool +// root is the directory of the fixtures. It is "" until Main runs. +var root string // Main runs the tests of m in a git environment that ignores the setup of // the user. Each package that runs git calls it from its TestMain. @@ -22,6 +23,11 @@ var set bool // a template. The variables that point git to another repository, or that // add config, are unset. The commits have a fixed author. func Main(m *testing.M) { + dir, err := os.MkdirTemp("", "testgit") + if err != nil { + panic(err) + } + defer func() { _ = os.RemoveAll(dir) }() for _, kv := range Env() { k, v, _ := strings.Cut(kv, "=") if err := os.Setenv(k, v); err != nil { @@ -33,7 +39,7 @@ func Main(m *testing.M) { panic(err) } } - set = true + root = dir m.Run() } @@ -72,7 +78,7 @@ var unset = []string{ // ready fails tb if Main does not run. func ready(tb testing.TB) { tb.Helper() - if !set { + if root == "" { tb.Fatal("testgit: TestMain does not call testgit.Main") } } @@ -128,3 +134,37 @@ func Script(tb testing.TB, dir, name, body string) string { } return p } + +// Fixture is a repository that a package makes once and copies for each +// test. A copy costs less than the git processes that make it. +type Fixture struct { + build func(tb testing.TB, dir string) + once sync.Once + dir string // the repository, or "" if build fails +} + +// NewFixture returns a fixture that build makes in an empty directory. +func NewFixture(build func(tb testing.TB, dir string)) *Fixture { + return &Fixture{build: build} +} + +// Copy copies the repository of f to dir. The first call makes the +// repository with the build function of f. +func (f *Fixture) Copy(tb testing.TB, dir string) { + tb.Helper() + ready(tb) + f.once.Do(func() { + dir, err := os.MkdirTemp(root, "fixture") + if err != nil { + tb.Fatal(err) + } + f.build(tb, dir) + f.dir = dir + }) + if f.dir == "" { + tb.Fatal("testgit: the fixture fails to build") + } + if err := os.CopyFS(dir, os.DirFS(f.dir)); err != nil { + tb.Fatal(err) + } +} diff --git a/internal/testgit/testgit_test.go b/internal/testgit/testgit_test.go index e80df48..9ad02db 100644 --- a/internal/testgit/testgit_test.go +++ b/internal/testgit/testgit_test.go @@ -46,3 +46,30 @@ func TestHelpers(t *testing.T) { t.Errorf("%s has mode %v, want an executable", p, fi.Mode()) } } + +// TestFixture checks that a fixture builds once, and that each copy is a +// repository of its own. +func TestFixture(t *testing.T) { + builds := 0 + f := testgit.NewFixture(func(tb testing.TB, dir string) { + tb.Helper() + builds++ + testgit.NewRepo(tb, dir) + testgit.WriteFile(tb, dir, "a.txt", "a\n") + testgit.Git(tb, dir, "add", ".") + testgit.Git(tb, dir, "commit", "-qm", "a") + }) + one, two := t.TempDir(), t.TempDir() + f.Copy(t, one) + f.Copy(t, two) + testgit.WriteFile(t, one, "a.txt", "changed\n") + if builds != 1 { + t.Errorf("%d builds, want 1", builds) + } + if got := testgit.Git(t, one, "status", "--porcelain"); got != " M a.txt\n" { + t.Errorf("status of the changed copy = %q, want M a.txt", got) + } + if got := testgit.Git(t, two, "status", "--porcelain"); got != "" { + t.Errorf("status of the other copy = %q, want clean", got) + } +} diff --git a/tui/anchor_test.go b/tui/anchor_test.go index e239801..d542bbb 100644 --- a/tui/anchor_test.go +++ b/tui/anchor_test.go @@ -13,6 +13,7 @@ import ( // TestCommentKeepsLine checks that a comment stays on its line numbers // when lines come above it, as in herdr-reviewr. func TestCommentKeepsLine(t *testing.T) { + t.Parallel() m := commented(t) c := m.comments.All()[0] start, end := c.Start, c.End @@ -33,6 +34,7 @@ func TestCommentKeepsLine(t *testing.T) { // TestStaleInList checks that a comment whose file leaves the changes // shows "(stale)" in the comment list only. func TestStaleInList(t *testing.T) { + t.Parallel() m := commented(t) testgit.Git(t, m.repo.Root(), "checkout", "--", "a.go") m.reload() @@ -47,6 +49,7 @@ func TestStaleInList(t *testing.T) { // TestFileCommentView checks that a comment on the Files tab shows only // there, and is stale only when its file is gone. func TestFileCommentView(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) m = press(t, m, "2", "j", "c", "f", "i", "l", "e", "enter") if m.comments.Len() != 1 || !shows(m, "💬 file") { @@ -74,6 +77,7 @@ func TestFileCommentView(t *testing.T) { // only at that pick, and that the comment list takes no edit of it in // another scope. func TestCommitsCommentHidden(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "G", "enter") // the newest commit adds b.go if m.scope != scopeCommits { @@ -126,6 +130,7 @@ func (m *model) fileIndex(path string) int { // which has no anchors. A comment gets the revision of the saved scope, so // that a comment in the commits scope still shows. func TestResumeOldComments(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) path := filepath.Join(t.TempDir(), "state.json") state := `{"tab":0,"scope":"commits","from":"aaa","to":"bbb",` + diff --git a/tui/box_test.go b/tui/box_test.go index a92fc59..b46aa81 100644 --- a/tui/box_test.go +++ b/tui/box_test.go @@ -36,6 +36,7 @@ func longFileModel(t *testing.T) model { // TestEditorWidth checks that the width of the comment box follows the // width of the main pane. func TestEditorWidth(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "z", "]", "c") want := m.editor @@ -48,6 +49,7 @@ func TestEditorWidth(t *testing.T) { // TestGutterClickShowsBox checks that a click on the line numbers of the // last row on the screen scrolls the comment box into view. func TestGutterClickShowsBox(t *testing.T) { + t.Parallel() m := longFileModel(t) y := m.mainY() + m.mainHeight() - 1 m = step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: m.mainX() + gutter, Y: y}) @@ -60,6 +62,7 @@ func TestGutterClickShowsBox(t *testing.T) { // TestTypingShowsBox checks that a key in the comment box scrolls the box // into view. func TestTypingShowsBox(t *testing.T) { + t.Parallel() m := longFileModel(t) m = press(t, m, ":", "8", "0", "enter", "c") m.viewer.top = 0 @@ -72,6 +75,7 @@ func TestTypingShowsBox(t *testing.T) { // the pane does not show the line of the comment. Here the file of the // comment leaves the changes, so the jump shows it in the Files tab. func TestListEditNeedsLine(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) m = press(t, m, "]", "c", "h", "i", "enter") testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") diff --git a/tui/click_test.go b/tui/click_test.go index 587fab4..ac7adf9 100644 --- a/tui/click_test.go +++ b/tui/click_test.go @@ -1,6 +1,8 @@ package tui import ( + "errors" + "io/fs" "os" "slices" "strings" @@ -37,6 +39,14 @@ func clicks(t *testing.T, m model, n, x, y int) model { return step(t, m, tea.MouseReleaseMsg{Button: tea.MouseLeft, X: x, Y: y}) } +// clearFile removes the file at path if it exists. +func clearFile(t *testing.T, path string) { + t.Helper() + if err := os.Remove(path); err != nil && !errors.Is(err, fs.ErrNotExist) { + t.Fatal(err) + } +} + // TestMultiClickCopies checks that a double click copies the word, a // triple click copies the source line, and a double click on the file list // copies the path. @@ -52,10 +62,14 @@ func TestMultiClickCopies(t *testing.T) { {"four", "return x", 4, "\treturn x"}, {"double on a symbol", ":= 2", 2, ""}, } + // The cases share one clipboard and one model. A click changes only + // the fields of the model value, so each case starts from a copy. + out := fakeClipboard(t, false) + base, _ := newTestModel(t) for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - out := fakeClipboard(t, false) - m, _ := newTestModel(t) + clearFile(t, out) + m := base x, y := codeCell(t, m, tt.needle) m = clicks(t, m, tt.n, x, y) got, _ := os.ReadFile(out) @@ -69,8 +83,8 @@ func TestMultiClickCopies(t *testing.T) { } t.Run("path", func(t *testing.T) { - out := fakeClipboard(t, false) - m, _ := newTestModel(t) + clearFile(t, out) + m := base y := m.listY() + 1 + slices.Index(rowNames(m), "a.go") m = clicks(t, m, 2, m.listX()+3, y) if got, _ := os.ReadFile(out); string(got) != "a.go" || m.status != "copied 4 chars" { @@ -82,6 +96,7 @@ func TestMultiClickCopies(t *testing.T) { // TestClickChain checks that the clicks count only on the same cell and // within the window. func TestClickChain(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) clk := setClock(&m) at := tea.Mouse{X: 40, Y: 10} diff --git a/tui/commentkeys_test.go b/tui/commentkeys_test.go index 0ae5447..b494c73 100644 --- a/tui/commentkeys_test.go +++ b/tui/commentkeys_test.go @@ -21,6 +21,7 @@ func commented(t *testing.T) model { // TestCommentAddsNew checks that c on a line with a comment adds a second // comment, as in herdr-reviewr. func TestCommentAddsNew(t *testing.T) { + t.Parallel() m := press(t, commented(t), "c", "o", "k", "enter") if m.comments.Len() != 2 || m.status != "comment added" { t.Errorf("c on a comment: %d comments, status %q; want 2, \"comment added\"", @@ -31,6 +32,7 @@ func TestCommentAddsNew(t *testing.T) { // TestEditBlankKeeps checks that an edit with blank text cancels the edit // and keeps the comment, as in herdr-reviewr. func TestEditBlankKeeps(t *testing.T) { + t.Parallel() m := press(t, commented(t), "e") if m.mode != modeComment || m.editor.Value() != "hi" { t.Fatalf("e on a comment: mode %v, text %q; want the box with hi", @@ -49,6 +51,7 @@ func TestEditBlankKeeps(t *testing.T) { // TestDeleteNeedsDiffFocus checks that c and d act only with the focus on // the diff. func TestDeleteNeedsDiffFocus(t *testing.T) { + t.Parallel() m := commented(t) tab := tea.KeyPressMsg{Code: tea.KeyTab} if m = step(t, m, tab); !m.focusList { @@ -69,6 +72,7 @@ func TestDeleteNeedsDiffFocus(t *testing.T) { // TestCommentList checks the keys of the comment list. func TestCommentList(t *testing.T) { + t.Parallel() m := press(t, commented(t), "c", "o", "k", "enter", "l") if !shows(m, "Comments (2)", "s send 2 · esc close · y copy · e edit · d delete") { t.Errorf("the list got:\n%s\nwant the title and the keys", view(m)) @@ -127,6 +131,7 @@ func TestCommentListCopy(t *testing.T) { // TestStepCommentInFile checks that n and N step only through the // comments of the open file and wrap around in it, as in herdr-reviewr. func TestStepCommentInFile(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "b") // the branch changes a.go and adds b.go if len(m.files) != 2 || shownPath(m) != "a.go" { diff --git a/tui/commits_test.go b/tui/commits_test.go index b4c6640..756965a 100644 --- a/tui/commits_test.go +++ b/tui/commits_test.go @@ -9,6 +9,7 @@ import ( // TestCommitPicker checks the commit picker of herdr-reviewr: no filter, // v anchors a range, and esc clears the anchor, then closes. func TestCommitPicker(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) for _, s := range []string{"c1", "c2", "c3"} { testgit.Git(t, dir, "commit", "-q", "--allow-empty", "-m", s) @@ -53,6 +54,7 @@ func TestCommitPicker(t *testing.T) { // TestCommitPickerOnBase checks that the picker lists the last commits on // the base branch. func TestCommitPickerOnBase(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) testgit.Git(t, dir, "stash", "-q") testgit.Git(t, dir, "checkout", "-q", "main") diff --git a/tui/cross_test.go b/tui/cross_test.go index b769ce0..8b1e530 100644 --- a/tui/cross_test.go +++ b/tui/cross_test.go @@ -29,6 +29,7 @@ func onChange(m model) bool { // TestHunkCrossing checks that ] past the last change arms a crossing, and // a second ] crosses, as in herdr-reviewr. [ does the same backward. func TestHunkCrossing(t *testing.T) { + t.Parallel() m := twoFiles(t) cur := m.changes.cur m = press(t, m, "]") @@ -55,6 +56,7 @@ func TestHunkCrossing(t *testing.T) { // TestHunkCrossingDisarms checks that another key drops an armed crossing. func TestHunkCrossingDisarms(t *testing.T) { + t.Parallel() m := press(t, twoFiles(t), "]", "j") if m.armed != 0 { t.Fatalf("] then j: armed %d, want 0", m.armed) @@ -78,6 +80,7 @@ func TestHunkCrossingDisarms(t *testing.T) { // TestEscLadder checks that esc drops one layer with each press: the // selection, the armed crossing, then the list of all keys. func TestEscLadder(t *testing.T) { + t.Parallel() m := press(t, twoFiles(t), "?", "]") if !m.help.ShowAll || m.armed != 1 { t.Fatalf("? ]: all keys %v, armed %d; want both", m.help.ShowAll, m.armed) diff --git a/tui/editor_test.go b/tui/editor_test.go index bb6d931..d3a9a09 100644 --- a/tui/editor_test.go +++ b/tui/editor_test.go @@ -182,6 +182,7 @@ func TestEditorNotOpened(t *testing.T) { // TestTerminalEditorDone checks the message after a terminal editor stops // outside Rex. func TestTerminalEditorDone(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = step(t, m, editorDoneMsg{path: "a.go"}) if !shows(m, "edited a.go") { @@ -197,6 +198,7 @@ func TestTerminalEditorDone(t *testing.T) { // TestNewLineNear checks the line that the editor opens for each kind of // row. func TestNewLineNear(t *testing.T) { + t.Parallel() rows := []diff.Row{ {Kind: diff.KindHunk}, {Kind: diff.KindEqual, Old: 1, New: 1}, diff --git a/tui/find_test.go b/tui/find_test.go index 96265fb..f68e2cb 100644 --- a/tui/find_test.go +++ b/tui/find_test.go @@ -31,6 +31,7 @@ func curRow(m model) diff.Row { // TestFindSmartCase checks that a query in lower case ignores case, and a // query with an upper case letter does not. func TestFindSmartCase(t *testing.T) { + t.Parallel() m := newFoldModel(t) for _, tt := range []struct { q string @@ -48,6 +49,7 @@ func TestFindSmartCase(t *testing.T) { // TestFindOpensFold checks that a step to a hit in a fold opens the fold. func TestFindOpensFold(t *testing.T) { + t.Parallel() m := newFoldModel(t) m = toTop(m) // the fold of lines 1 to 6 m = find(t, m, "line 2") @@ -66,6 +68,7 @@ func TestFindOpensFold(t *testing.T) { // TestFindSkipsLineNumbers checks that a find matches the text of the // lines, and not their numbers. func TestFindSkipsLineNumbers(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) if m = find(t, m, "5"); !strings.HasSuffix(lastLine(m), "no matches") { t.Errorf("a find of a line number: footer %q, want no matches", lastLine(m)) @@ -79,6 +82,7 @@ func TestFindSkipsLineNumbers(t *testing.T) { // TestFindSteps checks that enter and down go to the next hit, up goes // to the previous hit, and both wrap around. Esc drops the query. func TestFindSteps(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = toTop(m) m = find(t, m, "return") @@ -114,6 +118,7 @@ func TestFindSteps(t *testing.T) { // TestFindKeepsCommentKeys checks that n types into the band, and that n // goes to the next comment after the band closes. func TestFindKeepsCommentKeys(t *testing.T) { + t.Parallel() m := commented(t) line := curRow(m).New m = toTop(m) @@ -129,6 +134,7 @@ func TestFindKeepsCommentKeys(t *testing.T) { // TestFindNotOnPR checks that the PR tab has no find band. func TestFindNotOnPR(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "3") if m = step(t, m, tea.KeyPressMsg{Code: 'f', Mod: tea.ModCtrl}); m.mode != modeNormal { diff --git a/tui/fold_test.go b/tui/fold_test.go index d18200b..9157420 100644 --- a/tui/fold_test.go +++ b/tui/fold_test.go @@ -15,12 +15,9 @@ import ( "github.com/rednafi/rexdiff/vcs" ) -// newFoldModel returns a model that shows f.txt, a file of 40 lines with -// changes at lines 10 and 30. The diff folds lines 1 to 6, 14 to 26, and -// 34 to 40. -func newFoldModel(t *testing.T) model { - t.Helper() - dir := t.TempDir() +// foldRepo is the repository of newFoldModel. +var foldRepo = testgit.NewFixture(func(tb testing.TB, dir string) { + tb.Helper() lines := func(upper ...int) string { var b strings.Builder for i := 1; i <= 40; i++ { @@ -32,11 +29,20 @@ func newFoldModel(t *testing.T) model { } return b.String() } - testgit.NewRepo(t, dir) - testgit.WriteFile(t, dir, "f.txt", lines()) - testgit.Git(t, dir, "add", ".") - testgit.Git(t, dir, "commit", "-qm", "init") - testgit.WriteFile(t, dir, "f.txt", lines(10, 30)) + testgit.NewRepo(tb, dir) + testgit.WriteFile(tb, dir, "f.txt", lines()) + testgit.Git(tb, dir, "add", ".") + testgit.Git(tb, dir, "commit", "-qm", "init") + testgit.WriteFile(tb, dir, "f.txt", lines(10, 30)) +}) + +// newFoldModel returns a model that shows f.txt, a file of 40 lines with +// changes at lines 10 and 30. The diff folds lines 1 to 6, 14 to 26, and +// 34 to 40. +func newFoldModel(t *testing.T) model { + t.Helper() + dir := t.TempDir() + foldRepo.Copy(t, dir) repo, err := vcs.Open(t.Context(), dir) if err != nil { t.Fatal(err) @@ -60,6 +66,7 @@ func foldsOf(p *pane) []int { // TestExpandFold checks that the right arrow key shows the lines of a fold. // On a line of code, the key scrolls sideways. func TestExpandFold(t *testing.T) { + t.Parallel() m := newFoldModel(t) p := &m.changes if got := foldsOf(p); !slices.Equal(got, []int{6, 13, 7}) { @@ -101,6 +108,7 @@ func TestExpandFold(t *testing.T) { // TestGotoLineInFold checks that : with a line in a fold shows the fold and // moves the cursor to the line. func TestGotoLineInFold(t *testing.T) { + t.Parallel() m := newFoldModel(t) m = press(t, m, ":", "2", "0", "enter") p := &m.changes @@ -115,6 +123,7 @@ func TestGotoLineInFold(t *testing.T) { // TestExpandKeepsPlaces checks the cursor and the selection after a fold // shows. func TestExpandKeepsPlaces(t *testing.T) { + t.Parallel() m := newFoldModel(t) m.changes.cur = m.changes.rowOf(diff.SideNew, 29) m = press(t, m, "v") // the selection starts on line 29 @@ -132,6 +141,7 @@ func TestExpandKeepsPlaces(t *testing.T) { // TestFoldStaysOpen checks that an expanded fold stays open after edits of // the agent and closes after a commit. func TestFoldStaysOpen(t *testing.T) { + t.Parallel() m := newFoldModel(t) m.changes.cur = slices.IndexFunc(m.changes.rows, func(r diff.Row) bool { return r.Fold.Lines == 13 }) m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) @@ -174,6 +184,7 @@ func TestFoldStaysOpen(t *testing.T) { // TestFoldsSurviveRestart checks that the expanded folds and the cursor // line come back after a restart for an update. func TestFoldsSurviveRestart(t *testing.T) { + t.Parallel() m := newFoldModel(t) m.changes.cur = slices.IndexFunc(m.changes.rows, func(r diff.Row) bool { return r.Fold.Lines == 13 }) m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) @@ -201,6 +212,7 @@ func TestFoldsSurviveRestart(t *testing.T) { // TestClickFold checks that a click on a fold shows its lines, also in the // split layout and with wrap. func TestClickFold(t *testing.T) { + t.Parallel() for _, keys := range [][]string{nil, {"|"}, {"w"}} { m := step(t, newFoldModel(t), tea.WindowSizeMsg{Width: 210, Height: 70}) m = press(t, m, keys...) @@ -218,6 +230,7 @@ func TestClickFold(t *testing.T) { // TestFoldKeepsComment checks that a fold with a comment on one of its // lines shows, also after a new scope closes the expanded folds. func TestFoldKeepsComment(t *testing.T) { + t.Parallel() m := newFoldModel(t) m.changes.cur = slices.IndexFunc(m.changes.rows, func(r diff.Row) bool { return r.Fold.Lines == 13 }) m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) diff --git a/tui/keys_test.go b/tui/keys_test.go index d03aa23..ea03115 100644 --- a/tui/keys_test.go +++ b/tui/keys_test.go @@ -9,6 +9,7 @@ import ( // TestKeybindingErrors checks the errors of the keybindings setting. The // messages are the same as in herdr-reviewr. func TestKeybindingErrors(t *testing.T) { + t.Parallel() const names = "a list of keys, each a character or a named key " + "(left, right, up, down, pageup, pagedown), alone or after ctrl+ or alt+" tests := []struct{ text, want string }{ @@ -35,6 +36,7 @@ func TestKeybindingErrors(t *testing.T) { // TestKeybindingsValid checks settings with no error: a swap of two keys, // and the names of keys. func TestKeybindingsValid(t *testing.T) { + t.Parallel() for _, text := range []string{ `{"comment": ["v"], "select": ["c"]}`, `{"page-up": ["pageup", "alt+up"], "page-down": ["pgdown"]}`, @@ -49,6 +51,7 @@ func TestKeybindingsValid(t *testing.T) { // TestKeybindingPageUp checks that the herdr-reviewr name pageup binds the // page up key. func TestKeybindingPageUp(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) cfg, err := parseConfig(`{"keybindings": {"page-up": ["pageup"], "half-up": ["pgup"]}}`) if err == nil { @@ -72,6 +75,7 @@ func TestKeybindingPageUp(t *testing.T) { // TestKeybindingUpgrade checks that a key of the upgrade is not free for // another action. func TestKeybindingUpgrade(t *testing.T) { + t.Parallel() _, err := parseConfig(`{"keybindings": {"send": ["U"]}}`) if !errorHas(err, "`U`", "`send`", "`upgrade`") { t.Errorf("send on U: error %v, want the clash with upgrade", err) diff --git a/tui/layout_test.go b/tui/layout_test.go index ba7e31b..5956cdf 100644 --- a/tui/layout_test.go +++ b/tui/layout_test.go @@ -13,6 +13,7 @@ import ( // TestTinyStackedList checks that a body of 3 rows with the list below // fits the screen, and that the list then takes no clicks. func TestTinyStackedList(t *testing.T) { + t.Parallel() for _, pos := range []position{positionBottom, positionTop} { m, _ := newTestModel(t) m.listPos = pos @@ -34,6 +35,7 @@ func TestTinyStackedList(t *testing.T) { // TestListDefaultWidth checks that the file list at a side takes 32% of // the width if file_list_width is not set, as in herdr-reviewr. func TestListDefaultWidth(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) if got := m.sideWidth(); got != 120*32/100 { t.Errorf("120 columns: list width %d, want %d", got, 120*32/100) @@ -54,6 +56,7 @@ func TestListDefaultWidth(t *testing.T) { // TestMarkdownNotRerendered checks that a tick does not render the // markdown of the Files tab again if the file does not change. func TestMarkdownNotRerendered(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) testgit.WriteFile(t, dir, "notes.md", "# Title\n\nSome text.\n") m = press(t, m, "2") diff --git a/tui/navpos_test.go b/tui/navpos_test.go index f01533a..7b5ad3e 100644 --- a/tui/navpos_test.go +++ b/tui/navpos_test.go @@ -19,6 +19,7 @@ func screenLine(m model, y int) string { // TestListPositions checks that p moves the file list clockwise, and that // a list above or below takes a quarter of the body rows. func TestListPositions(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) want := []position{positionBottom, positionLeft, positionTop, positionRight} for _, w := range want { @@ -55,6 +56,7 @@ func TestListPositions(t *testing.T) { // TestListSizes checks the bounds of the file list at a side and above or // below the main pane. func TestListSizes(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) // 120 columns m = press(t, m, "<") if got := m.sideWidth(); got != 42 { @@ -96,6 +98,7 @@ func TestListSizes(t *testing.T) { // that a hidden list does not move or resize, and that the PR tab does // not hide the list. func TestListHide(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m.focusList = true m = press(t, m, "z") @@ -121,6 +124,7 @@ func TestListHide(t *testing.T) { // TestResumeListLeft checks that a saved state of an older version, with // list_left, restores the list at the left. func TestResumeListLeft(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) path := filepath.Join(t.TempDir(), "state.json") if err := os.WriteFile(path, []byte(`{"list_left": true, "list_w": 40}`), 0o600); err != nil { diff --git a/tui/notes_test.go b/tui/notes_test.go index cc10458..a85a0f0 100644 --- a/tui/notes_test.go +++ b/tui/notes_test.go @@ -16,12 +16,14 @@ import ( // TestSkippedFileNotes checks the notes in place of a binary file and of a // file that is too large, in both tabs. func TestSkippedFileNotes(t *testing.T) { + t.Parallel() tests := []struct{ content, want string }{ {"a\x00b\n", "binary file · no line comments"}, {strings.Repeat("x\n", 50_001), "file too large to show"}, } for _, tt := range tests { t.Run(tt.want, func(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) // The name sorts first, so that both tabs select the file. testgit.WriteFile(t, dir, "0.txt", tt.content) @@ -40,6 +42,7 @@ func TestSkippedFileNotes(t *testing.T) { // TestEmptyNotes checks the notes of an empty scope, of an empty list of // files, of an empty file, and of a file that rexdiff cannot read. func TestEmptyNotes(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") if m.reload(); !shows(m, "no changes") { @@ -67,6 +70,7 @@ func TestEmptyNotes(t *testing.T) { // TestStatusMessages checks the short messages in the footer, and how // long they show. func TestStatusMessages(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) clk := setClock(&m) m = press(t, m, "]", "c", "h", "i", "enter") @@ -112,6 +116,7 @@ func TestStatusMessages(t *testing.T) { // TestRenderedKey checks that m acts only on a markdown file that renders // some text. func TestRenderedKey(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) if m = press(t, m, "m"); m.rendered { t.Error("m on a.go turns on rendered markdown, want no change") @@ -134,6 +139,7 @@ func TestRenderedKey(t *testing.T) { // TestGotoLineInput checks the go-to-line prompt. It takes only digits // and "$", and a paste keeps only a line number. func TestGotoLineInput(t *testing.T) { + t.Parallel() m := newFoldModel(t) m = press(t, m, ":", "a", "b", "c") if got := m.overlay.input.Value(); got != "" { @@ -160,6 +166,7 @@ func TestGotoLineInput(t *testing.T) { // TestGotoLineClamps checks that : clamps the line to the file, and opens // the fold that has the line. func TestGotoLineClamps(t *testing.T) { + t.Parallel() tests := []struct { input string want int @@ -172,6 +179,7 @@ func TestGotoLineClamps(t *testing.T) { } for _, tt := range tests { t.Run(tt.input, func(t *testing.T) { + t.Parallel() m := newFoldModel(t) m = press(t, m, ":") m = step(t, m, tea.PasteMsg{Content: tt.input}) @@ -187,6 +195,7 @@ func TestGotoLineClamps(t *testing.T) { // TestGotoLineDeletedFile checks that : uses the old lines of a deleted // file. func TestGotoLineDeletedFile(t *testing.T) { + t.Parallel() m := newFoldModel(t) if err := os.Remove(filepath.Join(m.repo.Root(), "f.txt")); err != nil { t.Fatal(err) diff --git a/tui/prfetch_test.go b/tui/prfetch_test.go index e4d074e..a7b9b00 100644 --- a/tui/prfetch_test.go +++ b/tui/prfetch_test.go @@ -11,6 +11,7 @@ import ( // TestPRStaleResult checks that the result of an earlier read does not // show. func TestPRStaleResult(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "3") m.loadPR() @@ -28,6 +29,7 @@ func TestPRStaleResult(t *testing.T) { // TestPRPoll checks that a tick reads the pull request again a minute // after the last request, but only on the PR tab. func TestPRPoll(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) clk := setClock(&m) clk.advance(61 * time.Second) @@ -53,6 +55,7 @@ func TestPRPoll(t *testing.T) { // TestPRTrailing checks that an ambient request during a read starts one // more read after it, and that r and a hung read start one at once. func TestPRTrailing(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) clk := setClock(&m) m = press(t, m, "3") @@ -84,6 +87,7 @@ func TestPRTrailing(t *testing.T) { // TestPRBranchSwitch checks that a switch to another branch blanks the PR // tab, and that a commit on the branch keeps the pull request. func TestPRBranchSwitch(t *testing.T) { + t.Parallel() m, dir := watched(t) m = press(t, m, "3") m = step(t, m, prMsg{gen: m.prf.gen, pr: &vcs.PullRequest{Title: "T"}}) diff --git a/tui/quit_test.go b/tui/quit_test.go index 972e9a5..a84c93c 100644 --- a/tui/quit_test.go +++ b/tui/quit_test.go @@ -31,6 +31,7 @@ func quits(cmd tea.Cmd) bool { // TestQuitPrompt checks the keys of the prompt before a quit. They are // the keys of herdr-reviewr. func TestQuitPrompt(t *testing.T) { + t.Parallel() m := quitPrompt(t) const hint = "Q quit (1 pending) · esc cancel · s send 1 · y copy" if !shows(m, hint) { @@ -79,6 +80,7 @@ func TestQuitPromptSendCopy(t *testing.T) { // TestNoCtrlCHomeEnd checks that ctrl+c, home, and end do nothing, as in // herdr-reviewr. func TestNoCtrlCHomeEnd(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) if _, cmd := m.Update(tea.KeyPressMsg{Code: 'c', Mod: tea.ModCtrl}); quits(cmd) { t.Error("ctrl+c: a quit, want nothing") @@ -94,6 +96,7 @@ func TestNoCtrlCHomeEnd(t *testing.T) { // TestQuitDiscardInert checks that Q does nothing outside the prompt // before a quit, as in herdr-reviewr. func TestQuitDiscardInert(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) if _, cmd := m.Update(tea.KeyPressMsg{Code: 'Q', Text: "Q"}); quits(cmd) { t.Error("Q with no comments: a quit, want nothing") diff --git a/tui/release_test.go b/tui/release_test.go index d4068c0..37a63d1 100644 --- a/tui/release_test.go +++ b/tui/release_test.go @@ -64,6 +64,7 @@ func run(t *testing.T, m model, cmd tea.Cmd) (model, tea.Cmd) { // TestUpdate checks the prompt, the install, and the restart of an update // from the footer. func TestUpdate(t *testing.T) { + t.Parallel() u := &fakeUpdater{latest: update.Release{Tag: "v0.2.0"}, newer: true} m := updaterModel(t, u) const prompt = "rexdiff v0.2.0 is out: press U or click here to update" @@ -129,6 +130,7 @@ func comments(m model) string { // TestUpdateClick checks that a click on the footer starts the install. func TestUpdateClick(t *testing.T) { + t.Parallel() u := &fakeUpdater{latest: update.Release{Tag: "v0.2.0"}, newer: true} m := updaterModel(t, u) next, cmd := m.Update(tea.MouseClickMsg{Button: tea.MouseLeft, X: 3, Y: m.h - 1}) @@ -141,6 +143,7 @@ func TestUpdateClick(t *testing.T) { // TestUpdateFails checks that a failed install shows the reason, does not // restart, and lets the user try again. func TestUpdateFails(t *testing.T) { + t.Parallel() u := &fakeUpdater{ latest: update.Release{Tag: "v0.2.0"}, newer: true, @@ -163,6 +166,7 @@ func TestUpdateFails(t *testing.T) { // TestNoUpdate checks that the footer shows no release and U does nothing // without a newer release, after a failed check, or without an updater. func TestNoUpdate(t *testing.T) { + t.Parallel() for _, u := range []*fakeUpdater{ {latest: update.Release{Tag: "v0.1.0"}}, {err: errors.New("no network")}, @@ -185,6 +189,7 @@ func TestNoUpdate(t *testing.T) { // TestCommentsJSON checks that the comments give the same review after // JSON encoding and decoding. func TestCommentsJSON(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "j", "j", "j", "j", "c", "x", "enter") b, err := m.comments.MarshalJSON() @@ -207,6 +212,7 @@ func TestCommentsJSON(t *testing.T) { // TestRestartWaits checks that the restart waits for a running send and for // a message whose command is not done. func TestRestartWaits(t *testing.T) { + t.Parallel() u := &fakeUpdater{latest: update.Release{Tag: "v0.2.0"}, newer: true} m := updaterModel(t, u) m.sends = 1 // a send runs while the install ends @@ -238,6 +244,7 @@ func TestRestartWaits(t *testing.T) { // TestRestorePRPlace checks that the place in the PR tab comes back after // a restart, although the PR loads after the restore. func TestRestorePRPlace(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) saved := &savedState{PR: savedPane{Cur: 7, Top: 3}, Comments: new(diff.Comments)} m.restoreSettings(saved) @@ -254,6 +261,7 @@ func TestRestorePRPlace(t *testing.T) { // TestUpdateClickRule checks that a click on the footer starts the install, // and a click on the rule above it does nothing. func TestUpdateClickRule(t *testing.T) { + t.Parallel() u := &fakeUpdater{latest: update.Release{Tag: "v0.2.0"}, newer: true} m := updaterModel(t, u) rule := bodyY + m.bodyHeight() @@ -290,6 +298,7 @@ func TestRestartSaveFails(t *testing.T) { // TestRestartOnTick checks that a tick can start the restart, though its // command schedules the next tick. func TestRestartOnTick(t *testing.T) { + t.Parallel() u := &fakeUpdater{latest: update.Release{Tag: "v0.2.0"}, newer: true} m := updaterModel(t, u) m.phase = phaseInstalled @@ -304,6 +313,7 @@ func TestRestartOnTick(t *testing.T) { // TestSavePendingPRPlace checks that a restart before the PR loads saves // the PR place of the previous restart. func TestSavePendingPRPlace(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m.prPlace = &savedPane{Cur: 7, Top: 3} path, err := m.saveState() @@ -319,6 +329,7 @@ func TestSavePendingPRPlace(t *testing.T) { // TestWrapWordsNarrow checks that a width of 0, or a character wider than // the width, does not loop forever. func TestWrapWordsNarrow(t *testing.T) { + t.Parallel() tests := []struct { s string w int @@ -338,6 +349,7 @@ func TestWrapWordsNarrow(t *testing.T) { // TestRunChecksOptions checks that Run refuses options that it cannot use, // before it starts the program. func TestRunChecksOptions(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) tests := []struct { o Options @@ -358,6 +370,7 @@ func TestRunChecksOptions(t *testing.T) { // send runs stays after the send. The user can save the edit before or after // the send ends. func TestSendKeepsEdits(t *testing.T) { + t.Parallel() for _, saveFirst := range []bool{true, false} { m, _ := newTestModel(t) m = press(t, m, "j", "j", "j", "j", "c", "o", "l", "d", "enter") @@ -388,6 +401,7 @@ func TestSendKeepsEdits(t *testing.T) { // TestPickerWaitsForComment checks that the agent picker does not open over // a comment that the user starts while the agents load. func TestPickerWaitsForComment(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "j", "j", "j", "j", "c", "h", "i") m.sends = 1 diff --git a/tui/reload_test.go b/tui/reload_test.go index 4d5f93c..c2ee243 100644 --- a/tui/reload_test.go +++ b/tui/reload_test.go @@ -14,6 +14,7 @@ import ( // TestNoReloadInCommentBox checks that a tick does not reload while the // comment box is open, and that the reload runs when the box closes. func TestNoReloadInCommentBox(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) m = press(t, m, "]", "c") testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") @@ -57,6 +58,7 @@ func TestReloadErrorNote(t *testing.T) { // TestPRErrorKeepsPR checks that a failed read keeps the last good pull // request, and that the end of the pull request clears it. func TestPRErrorKeepsPR(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "3") m = step(t, m, prMsg{gen: m.prf.gen, pr: &vcs.PullRequest{Title: "Good"}}) @@ -74,6 +76,7 @@ func TestPRErrorKeepsPR(t *testing.T) { // TestPollWithoutWatcher checks that without a watcher a tick reloads // only every pollEvery. func TestPollWithoutWatcher(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) clk := setClock(&m) m = step(t, m, tickMsg{}) diff --git a/tui/saved_test.go b/tui/saved_test.go index ef623d3..597deb1 100644 --- a/tui/saved_test.go +++ b/tui/saved_test.go @@ -30,6 +30,7 @@ func pickBase(t *testing.T, m model, ref string) model { // TestSavedBase checks that a restart keeps the picked base, and that the // default branch clears it. func TestSavedBase(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) if m = pickBase(t, m, "feat"); m.base != "feat" { t.Fatalf("base = %q, want feat", m.base) @@ -46,6 +47,7 @@ func TestSavedBase(t *testing.T) { // TestBaseFlagWins checks that the flag wins over the saved base, and that // B then opens no picker. func TestBaseFlagWins(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = pickBase(t, m, "feat") m = reopen(t, m, "main") @@ -60,6 +62,7 @@ func TestBaseFlagWins(t *testing.T) { // TestSavedTurn checks that a restart keeps the tree at the start of the // last turn. func TestSavedTurn(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) m = step(t, m, sample("block:agent", "pi", dir)) m = step(t, m, status("block:agent", "pi", rex.StateWorking)) diff --git a/tui/search_test.go b/tui/search_test.go index 722fd26..72d3f63 100644 --- a/tui/search_test.go +++ b/tui/search_test.go @@ -15,8 +15,12 @@ import ( ) // typeQuery types q in the search and returns the command of the last key. +// The cursor does not blink, so the command has no timer of a blink. func typeQuery(t *testing.T, m model, q string) (model, tea.Cmd) { t.Helper() + st := m.overlay.input.Styles() + st.Cursor.Blink = false + m.overlay.input.SetStyles(st) var cmd tea.Cmd for _, r := range q { next, c := m.Update(tea.KeyPressMsg{Code: r, Text: string(r)}) @@ -66,6 +70,7 @@ var tabKey = tea.KeyPressMsg{Code: tea.KeyTab} // TestSearchFlip checks that tab switches the mode of the search and // keeps the query, as in herdr-reviewr. func TestSearchFlip(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = openQuery(t, m, "package") if m.overlay.search.code { @@ -91,6 +96,7 @@ func TestSearchFlip(t *testing.T) { // TestSearchFileLimit checks that the search shows 50 files, then a // "… more" row, and the count of all the matches in the chip. func TestSearchFileLimit(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) for i := range 60 { testgit.WriteFile(t, dir, fmt.Sprintf("zz%02d.txt", i), "x\n") @@ -115,6 +121,7 @@ func TestSearchFileLimit(t *testing.T) { // TestSearchCodeGroups checks that the code matches show under a header // for each file, and that the cursor skips the headers. func TestSearchCodeGroups(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = openQuery(t, m, "package") m = step(t, m, tabKey) @@ -138,6 +145,7 @@ func TestSearchCodeGroups(t *testing.T) { // TestSearchCodeMore checks the "+" of the chip and the "… more" row when // git finds more matches than the search shows. func TestSearchCodeMore(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) testgit.WriteFile(t, dir, "many.txt", strings.Repeat("hit\n", 300)) m = openQuery(t, m, "hit") @@ -154,6 +162,7 @@ func TestSearchCodeMore(t *testing.T) { // TestSearchStaleGrep checks that a code search for an old query shows // nothing, and that a change of the query stops the old search. func TestSearchStaleGrep(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "/") m, first := typeQuery(t, m, "pack") @@ -172,6 +181,7 @@ func TestSearchStaleGrep(t *testing.T) { // the user picks in this session first, then the other files, and no // code. func TestSearchEmptyQuery(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "/") if want := []string{"a.go", "b.go"}; !slices.Equal(labels(m), want) { @@ -190,6 +200,7 @@ func TestSearchEmptyQuery(t *testing.T) { // TestSearchNoMatches checks the message of a search with no result. func TestSearchNoMatches(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = openQuery(t, m, "qqqq") if !shows(m, "no matches") { @@ -227,6 +238,7 @@ func lineOf(m model, s string) int { // match below the results, with the match in the middle, and that the // results and the preview share the space, as in herdr-reviewr. func TestSearchPreview(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) longFile(t, dir) m = openQuery(t, m, "needle") @@ -246,6 +258,7 @@ func TestSearchPreview(t *testing.T) { // TestSearchPreviewScroll checks that pgdown and pgup scroll the preview. func TestSearchPreviewScroll(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) longFile(t, dir) m = openQuery(t, m, "needle") @@ -271,6 +284,7 @@ func TestSearchPreviewScroll(t *testing.T) { // TestSearchPreviewFile checks the preview of a file in the files mode, // and the note of a binary file and of no result. func TestSearchPreviewFile(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) testgit.WriteFile(t, dir, "bin.dat", "a\x00b") m = openQuery(t, m, "a.go") diff --git a/tui/split_test.go b/tui/split_test.go index 9a49cc3..96ff52c 100644 --- a/tui/split_test.go +++ b/tui/split_test.go @@ -18,6 +18,7 @@ func newSplitModel(t *testing.T, w int) model { // TestSplitNeedsWidth checks that a narrow pane shows one column, and that // | tells why. The choice of split stays. func TestSplitNeedsWidth(t *testing.T) { + t.Parallel() m := newSplitModel(t, 120) if m.splitShown() { t.Errorf("width 120 (code %d): split shows, want unified", m.codeWidth()) @@ -31,6 +32,7 @@ func TestSplitNeedsWidth(t *testing.T) { // TestSplitFollowsWidth checks that split shows again when the pane gets // wide again. func TestSplitFollowsWidth(t *testing.T) { + t.Parallel() m := newSplitModel(t, 210) if !m.splitShown() { t.Fatalf("width 210 (code %d): unified shows, want split", m.codeWidth()) @@ -52,6 +54,7 @@ func TestSplitFollowsWidth(t *testing.T) { // TestSplitAddedFile checks that a file with lines on one side shows one // column, and that | does nothing. func TestSplitAddedFile(t *testing.T) { + t.Parallel() m := newSplitModel(t, 210) m = press(t, m, "b") // the branch scope adds b.go i := -1 diff --git a/tui/state_test.go b/tui/state_test.go index 5980fc8..edc0e0d 100644 --- a/tui/state_test.go +++ b/tui/state_test.go @@ -11,6 +11,7 @@ import ( // TestGrepKeepsFileCursor checks that the end of a code search does not // move the cursor of the file matches. func TestGrepKeepsFileCursor(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "/") m, cmd := typeQuery(t, m, "go") @@ -26,6 +27,7 @@ func TestGrepKeepsFileCursor(t *testing.T) { // TestClickDisarms checks that a click or a pick of a file drops an armed // crossing. func TestClickDisarms(t *testing.T) { + t.Parallel() m := press(t, twoFiles(t), "]") if m.armed != 1 { t.Fatalf("armed %d, want 1", m.armed) @@ -42,6 +44,7 @@ func TestClickDisarms(t *testing.T) { // TestFocusShowsList checks that tab shows a hidden file list and gives it // the focus, as in herdr-reviewr. func TestFocusShowsList(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "z") if m = step(t, m, tabKey); m.listHidden || !m.focusList { @@ -53,6 +56,7 @@ func TestFocusShowsList(t *testing.T) { // TestOverlayClickAboveRows checks that a click above the rows that show // picks no row. func TestOverlayClickAboveRows(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) for i := range 12 { testgit.Git(t, dir, "branch", fmt.Sprintf("b%02d", i)) @@ -77,6 +81,7 @@ func TestOverlayClickAboveRows(t *testing.T) { // TestScopeClearsSelection checks that a change of the scope clears the // selection and the armed crossing. func TestScopeClearsSelection(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "]", "v") m.armed = 1 diff --git a/tui/tree_test.go b/tui/tree_test.go index 513512a..0dff82c 100644 --- a/tui/tree_test.go +++ b/tui/tree_test.go @@ -12,26 +12,31 @@ import ( "github.com/rednafi/rexdiff/vcs" ) -// newTreeModel makes a repository with changes in src/a.go, src/b.go, and -// top.go, and an ignored directory out. The model shows the Changes tab -// with the focus on the file list. -func newTreeModel(t *testing.T) (model, string) { - t.Helper() - dir := t.TempDir() - run := func(args ...string) { testgit.Git(t, dir, args...) } - testgit.NewRepo(t, dir) +// treeRepo is the repository of newTreeModel. It has changes in src/a.go, +// src/b.go, and top.go, and an ignored directory out. +var treeRepo = testgit.NewFixture(func(tb testing.TB, dir string) { + tb.Helper() + run := func(args ...string) { testgit.Git(tb, dir, args...) } + testgit.NewRepo(tb, dir) for _, p := range []string{"src/a.go", "src/b.go", "top.go"} { - testgit.WriteFile(t, dir, p, "package a\n") + testgit.WriteFile(tb, dir, p, "package a\n") } - testgit.WriteFile(t, dir, ".gitignore", "out/\n") + testgit.WriteFile(tb, dir, ".gitignore", "out/\n") run("add", ".") run("commit", "-qm", "init") for _, p := range []string{"src/a.go", "src/b.go", "top.go"} { - testgit.WriteFile(t, dir, p, "package a\n\nvar x = 1\n") + testgit.WriteFile(tb, dir, p, "package a\n\nvar x = 1\n") } - testgit.WriteFile(t, dir, "out/x.txt", "x\n") - testgit.WriteFile(t, dir, "out/sub/y.txt", "y\n") + testgit.WriteFile(tb, dir, "out/x.txt", "x\n") + testgit.WriteFile(tb, dir, "out/sub/y.txt", "y\n") +}) +// newTreeModel copies treeRepo to a new directory. The model shows the +// Changes tab with the focus on the file list. +func newTreeModel(t *testing.T) (model, string) { + t.Helper() + dir := t.TempDir() + treeRepo.Copy(t, dir) repo, err := vcs.Open(t.Context(), dir) if err != nil { t.Fatal(err) @@ -69,6 +74,7 @@ func shownPath(m model) string { // TestTreeKeys checks the cursor, the expand and collapse keys, and the // keys f and F in the tree of the Changes tab. func TestTreeKeys(t *testing.T) { + t.Parallel() m, _ := newTreeModel(t) if got, want := rowNames(m), []string{"src/", "a.go", "b.go", "top.go"}; !slices.Equal(got, want) { t.Fatalf("rows %q, want %q", got, want) @@ -123,6 +129,7 @@ func TestTreeKeys(t *testing.T) { // collapsed, a collapsed directory with a change has a dot, a click // toggles, and an ignored directory reads its entries when it expands. func TestFileTree(t *testing.T) { + t.Parallel() m, _ := newTreeModel(t) m = press(t, m, "2") m.focusList = true @@ -182,6 +189,7 @@ func listLine(m model, text string) string { // TestShownIgnored checks that the watcher gets the expanded ignored // directories of the Files tab, as in herdr-reviewr. func TestShownIgnored(t *testing.T) { + t.Parallel() m, _ := newTreeModel(t) m = press(t, m, "2") if got := m.shownIgnored(); len(got) != 0 { diff --git a/tui/tui_test.go b/tui/tui_test.go index c335995..fd94b15 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -3,6 +3,7 @@ package tui import ( "encoding/json" "errors" + "fmt" "image/color" "os" "path/filepath" @@ -21,11 +22,10 @@ import ( "github.com/rednafi/rexdiff/vcs" ) -// newTestModel makes a repository and a model that shows it. The branch -// main has a.go. The branch feat adds b.go. The working tree changes a.go. -func newTestModel(tb testing.TB) (model, string) { +// testRepo is the repository of newTestModel. The branch main has a.go. +// The branch feat adds b.go. The working tree changes a.go. +var testRepo = testgit.NewFixture(func(tb testing.TB, dir string) { tb.Helper() - dir := tb.TempDir() run := func(args ...string) { testgit.Git(tb, dir, args...) } testgit.NewRepo(tb, dir) testgit.WriteFile(tb, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") @@ -36,7 +36,14 @@ func newTestModel(tb testing.TB) (model, string) { run("add", ".") run("commit", "-qm", "add b") testgit.WriteFile(tb, dir, "a.go", "package a\n\nfunc A() int {\n\tx := 2\n\treturn x\n}\n") +}) +// newTestModel copies testRepo to a new directory and returns a model that +// shows it, and the directory. +func newTestModel(tb testing.TB) (model, string) { + tb.Helper() + dir := tb.TempDir() + testRepo.Copy(tb, dir) repo, err := vcs.Open(tb.Context(), dir) if err != nil { tb.Fatal(err) @@ -138,6 +145,7 @@ func paths(m model) []string { // TestScopes checks the files that each scope shows. func TestScopes(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) if got := paths(m); !slices.Equal(got, []string{"a.go"}) { t.Fatalf("uncommitted scope shows %v, want [a.go]", got) @@ -186,6 +194,7 @@ func TestScopes(t *testing.T) { // TestComment checks comments in the two layouts, and the send and quit // keys with unsent comments. func TestComment(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) // The unified layout uses three rows for the change. @@ -227,6 +236,7 @@ func TestComment(t *testing.T) { // TestTabs checks the Files tab and the PR tab. func TestTabs(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "2") @@ -246,6 +256,7 @@ func TestTabs(t *testing.T) { // TestPRChecks checks that the PR tab shows the counts of the checks of a // pull request, and the names of the checks that fail. func TestPRChecks(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "3") pr := &vcs.PullRequest{ @@ -267,6 +278,7 @@ func TestPRChecks(t *testing.T) { // TestSmallScreens checks that every key works on screens down to 1x1 and // that the view fits the screen. func TestSmallScreens(t *testing.T) { + t.Parallel() keys := []string{ "w", "j", "v", "j", "c", "\x1b[31mx\x07", "enter", "f", "F", "]", "[", "n", "N", "|", "p", "m", "t", "b", "u", "G", "esc", "/", "a", "esc", ":", "2", "enter", "?", @@ -276,29 +288,32 @@ func TestSmallScreens(t *testing.T) { {0, 0}, {1, 1}, {2, 2}, {10, 3}, {20, 5}, {40, 4}, {200, 6}, } for _, size := range sizes { - m, _ := newTestModel(t) - m = step(t, m, tea.WindowSizeMsg{Width: size.w, Height: size.h}) - for _, k := range keys { - m = press(t, m, k) - lines := strings.Split(view(m), "\n") - if len(lines) > max(size.h, 1) { - t.Errorf("%dx%d after %q: %d lines, want %d or fewer", - size.w, size.h, k, len(lines), max(size.h, 1)) - } - for _, l := range lines { - if w := ansi.StringWidth(l); w > max(size.w, 1) { - t.Errorf("%dx%d after %q: line width %d, want %d or fewer: %q", - size.w, size.h, k, w, max(size.w, 1), l) - break + t.Run(fmt.Sprintf("%dx%d", size.w, size.h), func(t *testing.T) { + t.Parallel() + m, _ := newTestModel(t) + m = step(t, m, tea.WindowSizeMsg{Width: size.w, Height: size.h}) + for _, k := range keys { + m = press(t, m, k) + lines := strings.Split(view(m), "\n") + if len(lines) > max(size.h, 1) { + t.Errorf("after %q: %d lines, want %d or fewer", k, len(lines), max(size.h, 1)) + } + for _, l := range lines { + if w := ansi.StringWidth(l); w > max(size.w, 1) { + t.Errorf("after %q: line width %d, want %d or fewer: %q", + k, w, max(size.w, 1), l) + break + } } } - } + }) } } // TestDragAfterReload checks that a drag does not panic when the pane gets // shorter. func TestDragAfterReload(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m.drag = dragState{active: true, gutter: true, moved: true, start: 48} m = step(t, m, tea.MouseReleaseMsg{Button: tea.MouseLeft}) @@ -330,6 +345,7 @@ func click(t *testing.T, m model, x, y int) model { // TestClickOldNumber checks a comment from a click on the old line number of // an unchanged line. func TestClickOldNumber(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) // The comment goes on the new side, so that it shows and d can delete it. equal := func(r diff.Row) bool { return r.Kind == diff.KindEqual } @@ -347,6 +363,7 @@ func TestClickOldNumber(t *testing.T) { // TestClickCommentBox checks that a click does not change the draft or close // the comment box. func TestClickCommentBox(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = press(t, m, "]", "c", "h", "i") _, rowAt := m.mainLines(m.mainHeight(), nil) @@ -383,6 +400,7 @@ func TestSendError(t *testing.T) { // file as added, when the object of the HEAD commit is missing. The files // that show stay, and the error is a flash. func TestMissingHead(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) hex := strings.TrimSpace(testgit.Git(t, dir, "rev-parse", "HEAD")) obj := filepath.Join(dir, ".git", "objects", hex[:2], hex[2:]) @@ -416,6 +434,7 @@ func errorHas(err error, texts ...string) bool { // TestParseConfig checks the settings that the Rex action sends as JSON. func TestParseConfig(t *testing.T) { + t.Parallel() // Each action in src/keymap.rs of herdr-reviewr has a key. names := strings.Fields(`base-pick collapse comment comments commit-pick copy delete down edit expand find goto-line half-down half-up keys navigator-grow @@ -519,6 +538,7 @@ func TestParseConfig(t *testing.T) { // TestDiffSigns checks that a bar marks a changed line by default, and that // the setting diff_signs changes the bar to + and -. func TestDiffSigns(t *testing.T) { + t.Parallel() line := func(m model, code string) string { for l := range strings.Lines(view(m)) { if strings.Contains(l, code) { @@ -548,6 +568,7 @@ func TestDiffSigns(t *testing.T) { // TestConfigFlags checks that the flags override the settings, and that // the settings set the keys and the file list. func TestConfigFlags(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) cfg, err := parseConfig(`{ "layout": "unified", @@ -582,6 +603,7 @@ func TestConfigFlags(t *testing.T) { // TestNotice checks that the footer shows all of a long notice on its own // lines. func TestNotice(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) // The path makes the first line end in "--" at column 82, past the // edge, if the wrap breaks at the hyphen. @@ -614,6 +636,7 @@ func TestNotice(t *testing.T) { // TestPalette checks that inserted lines get their tint from the green of // the terminal, as in pi's system theme. func TestPalette(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) m = step(t, m, tea.BackgroundColorMsg{Color: color.Black}) // The tint is black, mixed 16% toward pure green. @@ -654,6 +677,7 @@ func twoHunks(t *testing.T, m model, dir, long string) model { // TestWrap checks that the w key turns wrap on and off. func TestWrap(t *testing.T) { + t.Parallel() m, _, long := wrapModel(t) cut := len(m.changes.lines) @@ -709,6 +733,7 @@ func TestWrap(t *testing.T) { // TestWrapKeepsCursor checks that w keeps the cursor on its source line or // on its hunk header. func TestWrapKeepsCursor(t *testing.T) { + t.Parallel() m, dir, long := wrapModel(t) m.changes.cur = len(m.changes.rows) - 1 m = press(t, m, "w") @@ -737,6 +762,7 @@ func hunks(m model) []int { // TestTallLine checks a wrapped line that is taller than the screen. func TestTallLine(t *testing.T) { + t.Parallel() m, dir, long := wrapModel(t) m = press(t, m, "w") m = twoHunks(t, m, dir, long) @@ -794,6 +820,7 @@ func TestTallLine(t *testing.T) { // TestHostileText checks that the screen does not show raw escape sequences // from a file name, a comment, an agent, or an error from Rex. func TestHostileText(t *testing.T) { + t.Parallel() // The diff tests check the review text. const osc = "\x1b]0;owned\x07" // sets the title of the terminal raw := func(where string, m model) { @@ -832,6 +859,7 @@ func TestHostileText(t *testing.T) { // TestMouseOffScreen checks that mouse events outside the screen do not // panic, also while an overlay is open and the screen changes size. func TestMouseOffScreen(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) for _, keys := range [][]string{{}, {"G"}, {"/"}, {"2"}, {"3"}} { m = press(t, m, keys...) @@ -857,6 +885,7 @@ func TestMouseOffScreen(t *testing.T) { // TestEmptyRepo checks that keys do not panic in a repository with no // commits and no files, with key bindings that conflict. func TestEmptyRepo(t *testing.T) { + t.Parallel() dir := t.TempDir() testgit.NewRepo(t, dir) repo, err := vcs.Open(t.Context(), dir) @@ -889,6 +918,7 @@ func TestEmptyRepo(t *testing.T) { // TestFooterHints checks that the footer shows the keys of the select mode, // and the find band. func TestFooterHints(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) if m = press(t, m, "]", "v"); !strings.Contains(view(m), "extend") { t.Errorf("select mode: view got:\n%s\nwant the hint extend", view(m)) diff --git a/tui/turn_test.go b/tui/turn_test.go index 6d3e16d..169193b 100644 --- a/tui/turn_test.go +++ b/tui/turn_test.go @@ -23,6 +23,7 @@ func turnModel(t *testing.T) (model, string) { // TestTurnNeedsSample checks that a state before the first list of the // agents starts no turn. The start of that turn is not seen. func TestTurnNeedsSample(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) m.agents["p"] = &agentState{cwd: dir, hasCwd: true} m = step(t, m, status("p", "pi", rex.StateIdle)) @@ -43,6 +44,7 @@ func TestTurnNeedsSample(t *testing.T) { // agents and lists them again. A list at work after the gap starts no // turn, because the start is not seen. func TestTurnReconnect(t *testing.T) { + t.Parallel() m, dir := turnModel(t) next, cmd := m.Update(eventMsg{Reconnect: true}) m = *next.(*model) @@ -60,6 +62,7 @@ func TestTurnReconnect(t *testing.T) { // TestTurnWithoutChange checks that a turn that changes no file does not // become the last turn. func TestTurnWithoutChange(t *testing.T) { + t.Parallel() m, _ := turnModel(t) m = step(t, m, status("p", "pi", rex.StateWorking)) if m.pending == nil { @@ -77,6 +80,7 @@ func TestTurnWithoutChange(t *testing.T) { // TestTurnKeepsOldBaseline checks that a turn with no change keeps the // last turn that changes a file. func TestTurnKeepsOldBaseline(t *testing.T) { + t.Parallel() m, dir := turnModel(t) m = step(t, m, status("p", "pi", rex.StateWorking)) testgit.WriteFile(t, dir, "c.go", "package a\n") @@ -98,6 +102,7 @@ func TestTurnKeepsOldBaseline(t *testing.T) { // TestTurnPromotesOnChange checks that the first change in a turn makes // it the last turn, before the turn ends. func TestTurnPromotesOnChange(t *testing.T) { + t.Parallel() m, dir := turnModel(t) clk := setClock(&m) m = step(t, m, status("p", "pi", rex.StateWorking)) @@ -125,6 +130,7 @@ func TestTurnPromotesOnChange(t *testing.T) { // TestTurnTwoAgents checks that a turn ends only when all the agents in // the repository rest. func TestTurnTwoAgents(t *testing.T) { + t.Parallel() m, dir := turnModel(t) m = step(t, m, agentsMsg{agents: []rex.Agent{ {Block: "p", Cwd: dir, Status: rex.Status{App: "pi", State: rex.StateIdle}}, @@ -150,6 +156,7 @@ func TestTurnTwoAgents(t *testing.T) { // TestTurnOutsideAgent checks that an agent outside the repository starts // no turn, and that the scope tells that no agent works here. func TestTurnOutsideAgent(t *testing.T) { + t.Parallel() m, dir := newTestModel(t) m = press(t, m, "t") m = step(t, m, sample("p", "pi", t.TempDir())) @@ -172,6 +179,7 @@ func TestTurnOutsideAgent(t *testing.T) { // TestTurnUnknownCwdHolds checks that an agent whose directory is not // known holds the state, so it does not end a turn. func TestTurnUnknownCwdHolds(t *testing.T) { + t.Parallel() m, dir := turnModel(t) m = step(t, m, status("p", "pi", rex.StateWorking)) testgit.WriteFile(t, dir, "c.go", "package a\n") diff --git a/tui/watch_test.go b/tui/watch_test.go index 5353cc2..e257c9f 100644 --- a/tui/watch_test.go +++ b/tui/watch_test.go @@ -38,6 +38,7 @@ func TestTickRunsNoGitWhenIdle(t *testing.T) { // TestTickSeesEdit checks that a tick shows an edit. func TestTickSeesEdit(t *testing.T) { + t.Parallel() m, dir := watched(t) testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") if m = step(t, m, tickMsg{}); !shows(m, "return 42") { @@ -47,6 +48,7 @@ func TestTickSeesEdit(t *testing.T) { // TestRefreshForces checks that r reloads in the pause after a reload. func TestRefreshForces(t *testing.T) { + t.Parallel() m, dir := watched(t) m.reloadAt = m.now().Add(time.Hour) // the pause after a slow reload testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") @@ -81,6 +83,7 @@ func TestTickRetries(t *testing.T) { // TestRetryBackoff checks that each failure doubles the wait, from 1 s to // 60 s. func TestRetryBackoff(t *testing.T) { + t.Parallel() m, _ := newTestModel(t) want := []int{1, 2, 4, 8, 16, 32, 60, 60} for i, w := range want { @@ -123,6 +126,7 @@ func openFile(t *testing.T, m model, path string) model { // TestFilesTabWaitsForWatcher checks that, with a watcher, a tick reads // the open file of the Files tab only after the watcher reports a change. func TestFilesTabWaitsForWatcher(t *testing.T) { + t.Parallel() m, dir := watchedTree(t) const path = "top.go" m = openFile(t, m, path) @@ -148,6 +152,7 @@ func TestFilesTabWaitsForWatcher(t *testing.T) { // TestTickSeesIgnoredEdit checks that a tick shows an edit of the open // file in an expanded ignored directory, as in herdr-reviewr. func TestTickSeesIgnoredEdit(t *testing.T) { + t.Parallel() m, dir := watchedTree(t) m.fileTree.cur = 0 m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) // expand out diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index 8edb973..d9e517c 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -26,6 +26,7 @@ func commitAll(t *testing.T, dir string) { // TestRevIsNotAnOption checks that git does not read a rev that starts // with "-" as an option. func TestRevIsNotAnOption(t *testing.T) { + t.Parallel() r, _ := newRepo(t) ctx := t.Context() out := filepath.Join(t.TempDir(), "out") @@ -54,6 +55,7 @@ func TestRevIsNotAnOption(t *testing.T) { // TestHostilePaths checks that each part of the API keeps a path as it is. func TestHostilePaths(t *testing.T) { + t.Parallel() r, dir := newRepo(t) ctx := t.Context() commitAll(t, dir) @@ -109,6 +111,7 @@ func TestHostilePaths(t *testing.T) { // TestDiffFileKinds checks what Diff gives for links, file modes, // directories, line ends, and empty files. func TestDiffFileKinds(t *testing.T) { + t.Parallel() r, dir := newRepo(t) testgit.Git(t, dir, "config", "core.autocrlf", "false") testgit.WriteFile(t, dir, "mode.sh", "echo\n") @@ -160,6 +163,7 @@ func TestDiffFileKinds(t *testing.T) { // TestSnapshotNestedRepo checks that Snapshot adds the other files when git // cannot add a nested repository with no commit. func TestSnapshotNestedRepo(t *testing.T) { + t.Parallel() r, dir := newRepo(t) commitAll(t, dir) testgit.Git(t, dir, "init", "-q", "empty") @@ -179,6 +183,7 @@ func TestSnapshotNestedRepo(t *testing.T) { // TestReadFileStaysInRoot checks that ReadFile reads only the regular files // in the root. func TestReadFileStaysInRoot(t *testing.T) { + t.Parallel() // A repository can link to a secret file, or to a device that does not // end, for example /dev/zero. r, dir := newRepo(t) @@ -214,6 +219,7 @@ func TestReadFileStaysInRoot(t *testing.T) { // TestOpenRootWithNewline checks Open and Diff in a root whose path has a // newline. func TestOpenRootWithNewline(t *testing.T) { + t.Parallel() dir := filepath.Join(t.TempDir(), "a\nb") testgit.Git(t, filepath.Dir(dir), "init", "-q", dir) testgit.WriteFile(t, dir, "a.txt", "one\n") @@ -232,6 +238,7 @@ func TestOpenRootWithNewline(t *testing.T) { // TestGitWorktree checks Diff and Snapshot in a working tree that // "git worktree add" creates. func TestGitWorktree(t *testing.T) { + t.Parallel() // Such a working tree has its own index. Snapshot must not change it. _, dir := newRepo(t) ctx := t.Context() @@ -258,6 +265,7 @@ func TestGitWorktree(t *testing.T) { // TestDetachedHead checks Diff and Commits when HEAD is detached. func TestDetachedHead(t *testing.T) { + t.Parallel() r, dir := newRepo(t) ctx := t.Context() testgit.Git(t, dir, "checkout", "-q", "--detach", "main") @@ -274,6 +282,7 @@ func TestDetachedHead(t *testing.T) { // TestGrepIsLiteral checks that Grep finds the text, and does not read it // as a pattern or as an option. func TestGrepIsLiteral(t *testing.T) { + t.Parallel() r, dir := newRepo(t) ctx := t.Context() testgit.WriteFile(t, dir, "g.txt", "abc\na.c\n-v\n--help\n[x\n(y\n\\d\n*\n^a\nx$\n") @@ -312,6 +321,7 @@ func TestGrepIsLiteral(t *testing.T) { // TestCommitsHostileSubject checks that Commits keeps each byte of a // subject, for example the field separator of the log. func TestCommitsHostileSubject(t *testing.T) { + t.Parallel() r, dir := newRepo(t) subjects := []string{"a\x1fb", "\x1b[31mred\x1b[0m", "tab\there"} for _, s := range subjects { diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 805fa04..1410a86 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -17,26 +17,33 @@ import ( "github.com/rednafi/rexdiff/vcs" ) -// newRepo makes a repository with two commits: "init" on main and "b" on -// the branch feat. The working tree has uncommitted changes, an untracked -// file, and an ignored file. -func newRepo(t *testing.T) (*vcs.Repo, string) { - t.Helper() - dir := filepath.Join(t.TempDir(), "a repo ") // git keeps the space - testgit.NewRepo(t, dir) - run := func(args ...string) { testgit.Git(t, dir, args...) } - testgit.WriteFile(t, dir, "a.txt", "one\n") +// testRepo is the repository of newRepo. It has two commits: "init" on +// main and "b" on the branch feat. The working tree has uncommitted +// changes, an untracked file, and an ignored file. +var testRepo = testgit.NewFixture(func(tb testing.TB, dir string) { + tb.Helper() + testgit.NewRepo(tb, dir) + run := func(args ...string) { testgit.Git(tb, dir, args...) } + testgit.WriteFile(tb, dir, "a.txt", "one\n") run("add", ".") run("commit", "-qm", "init") run("checkout", "-qb", "feat") - testgit.WriteFile(t, dir, "b.txt", "bee\n") + testgit.WriteFile(tb, dir, "b.txt", "bee\n") run("add", ".") run("commit", "-qm", "b") - testgit.WriteFile(t, dir, "a.txt", "one\ntwo\n") - testgit.WriteFile(t, dir, "new.txt", "untracked\n") - testgit.WriteFile(t, dir, ".gitignore", "ignored.txt\nbuild/\n") - testgit.WriteFile(t, dir, "ignored.txt", "x\n") - testgit.WriteFile(t, dir, "build/out", "x\n") + testgit.WriteFile(tb, dir, "a.txt", "one\ntwo\n") + testgit.WriteFile(tb, dir, "new.txt", "untracked\n") + testgit.WriteFile(tb, dir, ".gitignore", "ignored.txt\nbuild/\n") + testgit.WriteFile(tb, dir, "ignored.txt", "x\n") + testgit.WriteFile(tb, dir, "build/out", "x\n") +}) + +// newRepo copies testRepo to a new directory, and returns the repository +// and its directory. +func newRepo(t *testing.T) (*vcs.Repo, string) { + t.Helper() + dir := filepath.Join(t.TempDir(), "a repo ") // git keeps the space + testRepo.Copy(t, dir) // Open from a subdirectory. Open must find the root. r, err := vcs.Open(t.Context(), filepath.Join(dir, "build")) @@ -98,6 +105,7 @@ func names(fs []vcs.File) string { // TestScopes checks the trees that each scope of a review compares. func TestScopes(t *testing.T) { + t.Parallel() r, dir := newRepo(t) ctx := t.Context() @@ -157,6 +165,7 @@ func TestScopes(t *testing.T) { // TestMissingCommit checks that Head and Parent fail when a commit object // is missing. func TestMissingCommit(t *testing.T) { + t.Parallel() // The empty tree is not a correct result. It shows every file as added. r, dir := newRepo(t) ctx := t.Context() @@ -188,6 +197,7 @@ func TestMissingCommit(t *testing.T) { // and big files, and do not read their content. The limits are the same as // in herdr-reviewr. Diff adds the sizes of the two versions. func TestDiffSkipsBinaryAndBigFiles(t *testing.T) { + t.Parallel() r, dir := newRepo(t) half := strings.Repeat("x", 1_100_000) + "\n" // two make 2,200,002 bytes lines := strings.Repeat("x\n", 30_000) // two make 60,000 lines @@ -245,6 +255,7 @@ func TestDiffSkipsBinaryAndBigFiles(t *testing.T) { // TestFilesInConflict checks that Files lists a path in a merge conflict // once. func TestFilesInConflict(t *testing.T) { + t.Parallel() dir := t.TempDir() testgit.NewRepo(t, dir) run := func(args ...string) { testgit.Git(t, dir, args...) } @@ -282,6 +293,7 @@ func TestFilesInConflict(t *testing.T) { // TestWorktree checks Files, Grep, ReadFile, and Contains in the working // tree. func TestWorktree(t *testing.T) { + t.Parallel() r, dir := newRepo(t) ctx := t.Context() @@ -384,6 +396,7 @@ func TestOwns(t *testing.T) { // TestRefs checks Branches, DefaultBase, and Resolve. func TestRefs(t *testing.T) { + t.Parallel() r, dir := newRepo(t) ctx := t.Context() if bs, err := r.Branches(ctx); err != nil || strings.Join(bs, " ") != "feat main" { @@ -409,6 +422,7 @@ func TestRefs(t *testing.T) { // TestEditor checks that Editor returns core.editor, or "" if it is not set. func TestEditor(t *testing.T) { + t.Parallel() r, dir := newRepo(t) if got := r.Editor(t.Context()); got != "" { t.Errorf("Editor with no core.editor = %q, want \"\"", got) @@ -422,6 +436,7 @@ func TestEditor(t *testing.T) { // TestDiffRenameAndSubmodule checks the old path of a rename and the // content that Diff gives for a submodule. func TestDiffRenameAndSubmodule(t *testing.T) { + t.Parallel() dir := t.TempDir() testgit.Git(t, dir, "init", "-q") testgit.WriteFile(t, dir, "old.txt", "one\ntwo\nthree\n") @@ -468,6 +483,7 @@ func TestDiffRenameAndSubmodule(t *testing.T) { // TestOpenOutsideARepo checks that Open fails outside a repository. func TestOpenOutsideARepo(t *testing.T) { + t.Parallel() if _, err := vcs.Open(t.Context(), t.TempDir()); err == nil { t.Error("Open outside a repository: no error, want an error") } @@ -476,6 +492,7 @@ func TestOpenOutsideARepo(t *testing.T) { // TestNewRepo checks Head and Snapshot in a repository with no commit and // no index. func TestNewRepo(t *testing.T) { + t.Parallel() dir := t.TempDir() testgit.Git(t, dir, "init", "-q") testgit.WriteFile(t, dir, "a.txt", "one\n") @@ -491,6 +508,7 @@ func TestNewRepo(t *testing.T) { // TestSnapshotBadIndex checks that Snapshot fails if it cannot read the // real index. Only a missing index means no index. func TestSnapshotBadIndex(t *testing.T) { + t.Parallel() r, dir := newRepo(t) idx := filepath.Join(dir, ".git", "index") if err := os.Remove(idx); err != nil { @@ -507,6 +525,7 @@ func TestSnapshotBadIndex(t *testing.T) { // TestSnapshotRacyEdit checks that Snapshot sees a same-size edit in the // same second as the last write of the index. func TestSnapshotRacyEdit(t *testing.T) { + t.Parallel() // git checks such "racily clean" files by their content. It finds them by // the modification time of the index. The copy of the index must keep // that time. @@ -537,6 +556,7 @@ func TestSnapshotRacyEdit(t *testing.T) { // TestCommitsLikeHerdr checks the commits of the commit picker. They are // the first-parent commits after since, else the last 50. func TestCommitsLikeHerdr(t *testing.T) { + t.Parallel() r, dir := newRepo(t) ctx := t.Context() run := func(args ...string) { testgit.Git(t, dir, args...) } @@ -587,6 +607,7 @@ func TestCommitsLikeHerdr(t *testing.T) { // TestGrepLimit checks that Grep stops at the limit and tells that there // are more matches. func TestGrepLimit(t *testing.T) { + t.Parallel() r, dir := newRepo(t) ctx := t.Context() testgit.WriteFile(t, dir, "many.txt", strings.Repeat("hit\n", 5000)) @@ -615,6 +636,7 @@ func TestGrepLimit(t *testing.T) { // TestGrepCanceled checks that Grep returns the error of a canceled // context. func TestGrepCanceled(t *testing.T) { + t.Parallel() r, _ := newRepo(t) ctx, cancel := context.WithCancel(t.Context()) cancel() diff --git a/vcs/saved_test.go b/vcs/saved_test.go index d4ad0fc..922bee3 100644 --- a/vcs/saved_test.go +++ b/vcs/saved_test.go @@ -12,6 +12,7 @@ import ( // TestSavedBase checks that SaveBase keeps a base, and that the default // branch deletes it. func TestSavedBase(t *testing.T) { + t.Parallel() r, dir := newRepo(t) ctx := t.Context() if got := r.SavedBase(ctx); got != "" { @@ -54,6 +55,7 @@ func hashObject(t *testing.T, dir, s string) string { // TestSavedTurn checks that SaveTurn keeps a tree, also after git gc, and // that "" deletes it. func TestSavedTurn(t *testing.T) { + t.Parallel() r, dir := newRepo(t) ctx := t.Context() tree := snapshot(t, r) // a tree that no commit has @@ -80,6 +82,7 @@ func TestSavedTurn(t *testing.T) { // TestSavedPerWorktree checks that each worktree has its own saved base // and turn. func TestSavedPerWorktree(t *testing.T) { + t.Parallel() r, dir := newRepo(t) ctx := t.Context() other := filepath.Join(t.TempDir(), "wt") diff --git a/vcs/watch_test.go b/vcs/watch_test.go index 9b287f4..8fa293f 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -39,6 +39,7 @@ func changed(t *testing.T, w *vcs.Watcher) vcs.Change { // TestWatcher checks the changes that a Watcher sees and does not see. A // change must have each part of want. No change must be none. func TestWatcher(t *testing.T) { + t.Parallel() files := vcs.Change{Files: true} tests := []struct { name string @@ -84,6 +85,7 @@ func TestWatcher(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + t.Parallel() r, dir := newRepo(t) w := newWatcher(t, r) tt.edit(t, dir) @@ -102,6 +104,7 @@ func TestWatcher(t *testing.T) { // TestWatcherNewDirectory checks that an edit in a new untracked directory // is a change. func TestWatcherNewDirectory(t *testing.T) { + t.Parallel() r, dir := newRepo(t) w := newWatcher(t, r) testgit.WriteFile(t, dir, "x/c.txt", "c\n") @@ -115,6 +118,7 @@ func TestWatcherNewDirectory(t *testing.T) { // TestWatcherUnignore checks that a file shows after a .gitignore edit // stops git from ignoring it. func TestWatcherUnignore(t *testing.T) { + t.Parallel() r, dir := newRepo(t) w := newWatcher(t, r) testgit.WriteFile(t, dir, "ignored.txt", "xx\n") @@ -135,6 +139,7 @@ func TestWatcherUnignore(t *testing.T) { // gets or loses is a change, and an edit of a shown ignored file, as in // herdr-reviewr. func TestWatcherShown(t *testing.T) { + t.Parallel() r, dir := newRepo(t) w := newWatcher(t, r) testgit.WriteFile(t, dir, "build/new", "x\n") @@ -170,9 +175,11 @@ func TestWatcherShown(t *testing.T) { // TestWatcherNested checks that a commit in a nested repository or in a // submodule is a change. func TestWatcherNested(t *testing.T) { + t.Parallel() for _, sub := range []bool{false, true} { name := map[bool]string{false: "nested", true: "submodule"}[sub] t.Run(name, func(t *testing.T) { + t.Parallel() r, dir := newRepo(t) other := t.TempDir() testgit.Git(t, other, "init", "-q") @@ -213,6 +220,7 @@ func TestWatcherRunsNoGit(t *testing.T) { // TestWatcherBudget checks that a call waits 20 times as long as the last // call took. func TestWatcherBudget(t *testing.T) { + t.Parallel() r, dir := newRepo(t) w, err := r.Watch(t.Context()) if err != nil { @@ -240,6 +248,7 @@ func TestWatcherBudget(t *testing.T) { // that git lists no file in is a change. A new file in an ignored // directory in it is not. func TestWatcherUntrackedDir(t *testing.T) { + t.Parallel() tests := []struct { name, setup, edit string want bool @@ -251,6 +260,7 @@ func TestWatcherUntrackedDir(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + t.Parallel() r, dir := newRepo(t) if d, ok := strings.CutSuffix(tt.setup, "/"); ok { if err := os.MkdirAll(filepath.Join(dir, d), 0o755); err != nil { From feec1cdfc5aee38438c5983670abcc22f609336a Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 19:23:28 +0100 Subject: [PATCH 039/119] test(tui): make the weak tests fail when the behaviour breaks TestSmallScreens checks the effect of each key, so a key that does nothing fails. TestMultiClickCopies tells no copy from an empty copy. TestEditorError checks the full message. TestTickRunsNoGitWhenIdle logs the git calls through a git on PATH. TestSampleRetry counts the lists in the log of rex, so the check before the wait is not vacuous. --- tui/click_test.go | 25 +++++++---- tui/editor_test.go | 6 +-- tui/tui_test.go | 110 ++++++++++++++++++++++++++++++++++++--------- tui/turn_test.go | 38 ++++++++++++---- tui/watch_test.go | 26 ++++++++--- 5 files changed, 160 insertions(+), 45 deletions(-) diff --git a/tui/click_test.go b/tui/click_test.go index ac7adf9..cdc4880 100644 --- a/tui/click_test.go +++ b/tui/click_test.go @@ -49,12 +49,12 @@ func clearFile(t *testing.T, path string) { // TestMultiClickCopies checks that a double click copies the word, a // triple click copies the source line, and a double click on the file list -// copies the path. +// copies the path. A double click off a word copies nothing. func TestMultiClickCopies(t *testing.T) { tests := []struct { name, needle string n int - want string + want string // the copy, or "" for no copy }{ {"double", "return", 2, "return"}, {"double on one letter", "x := 2", 2, "x"}, @@ -72,12 +72,18 @@ func TestMultiClickCopies(t *testing.T) { m := base x, y := codeCell(t, m, tt.needle) m = clicks(t, m, tt.n, x, y) - got, _ := os.ReadFile(out) - if string(got) != tt.want { - t.Errorf("clipboard %q, want %q", got, tt.want) + got, err := os.ReadFile(out) + if tt.want == "" { + if !errors.Is(err, fs.ErrNotExist) || m.status != "" { + t.Errorf("clipboard %q (%v), status %q; want no copy", got, err, m.status) + } + return } - if tt.want != "" && m.status != "copied "+plural(len([]rune(tt.want)), "char") { - t.Errorf("status %q, want the count of chars", m.status) + if err != nil || string(got) != tt.want { + t.Errorf("clipboard %q (%v), want %q", got, err, tt.want) + } + if want := "copied " + plural(len([]rune(tt.want)), "char"); m.status != want { + t.Errorf("status %q, want %q", m.status, want) } }) } @@ -87,8 +93,9 @@ func TestMultiClickCopies(t *testing.T) { m := base y := m.listY() + 1 + slices.Index(rowNames(m), "a.go") m = clicks(t, m, 2, m.listX()+3, y) - if got, _ := os.ReadFile(out); string(got) != "a.go" || m.status != "copied 4 chars" { - t.Errorf("clipboard %q, status %q; want a.go, copied 4 chars", got, m.status) + got, err := os.ReadFile(out) + if err != nil || string(got) != "a.go" || m.status != "copied 4 chars" { + t.Errorf("clipboard %q (%v), status %q; want a.go, copied 4 chars", got, err, m.status) } }) } diff --git a/tui/editor_test.go b/tui/editor_test.go index d3a9a09..5f31c1a 100644 --- a/tui/editor_test.go +++ b/tui/editor_test.go @@ -122,7 +122,7 @@ func TestEditorError(t *testing.T) { }{ {"fails", code + " -g {file}", os.Getenv("PATH"), "editor failed: exit status 3: code: no such file"}, // sh is not in PATH. - {"cannot start", code + " -g {file}", "", "editor failed: "}, + {"cannot start", code + " -g {file}", "", `editor failed: exec: "sh": executable file not found in $PATH`}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -133,8 +133,8 @@ func TestEditorError(t *testing.T) { if cmd != nil { m = step(t, m, cmd()) } - if !shows(m, tt.want) { - t.Errorf("view got:\n%s\nwant %q in the footer", view(m), tt.want) + if m.status != tt.want || !shows(m, tt.want) { + t.Errorf("status %q, view got:\n%s\nwant %q in the footer", m.status, view(m), tt.want) } }) } diff --git a/tui/tui_test.go b/tui/tui_test.go index fd94b15..5065f3f 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -80,6 +80,15 @@ func step(tb testing.TB, m model, msg tea.Msg) model { // press sends keys to m. A key is a name, such as "enter", or the text // that the key types, such as "j". func press(t *testing.T, m model, keys ...string) model { + t.Helper() + for _, k := range keys { + m = step(t, m, keyMsg(t, k)) + } + return m +} + +// keyMsg returns the press of the key k. k is as in press. +func keyMsg(t *testing.T, k string) tea.KeyPressMsg { t.Helper() named := map[string]rune{ "enter": tea.KeyEnter, @@ -87,18 +96,14 @@ func press(t *testing.T, m model, keys ...string) model { "home": tea.KeyHome, "end": tea.KeyEnd, } - for _, k := range keys { - code, ok := named[k] - switch { - case ok: - m = step(t, m, tea.KeyPressMsg{Code: code}) - case len(k) > 1 && strings.Trim(k, "abcdefghijklmnopqrstuvwxyz") == "": - t.Fatalf("press: no key is named %q", k) - default: - m = step(t, m, tea.KeyPressMsg{Code: []rune(k)[0], Text: k}) - } + code, ok := named[k] + switch { + case ok: + return tea.KeyPressMsg{Code: code} + case len(k) > 1 && strings.Trim(k, "abcdefghijklmnopqrstuvwxyz") == "": + t.Fatalf("press: no key is named %q", k) } - return m + return tea.KeyPressMsg{Code: []rune(k)[0], Text: k} } // toTop moves the cursor of the current pane to the first row. @@ -276,13 +281,73 @@ func TestPRChecks(t *testing.T) { } // TestSmallScreens checks that every key works on screens down to 1x1 and -// that the view fits the screen. +// that the view fits the screen. Each key must have its effect, so a key +// that does nothing on a small screen fails. func TestSmallScreens(t *testing.T) { t.Parallel() - keys := []string{ - "w", "j", "v", "j", "c", "\x1b[31mx\x07", "enter", "f", "F", "]", "[", "n", "N", - "|", "p", "m", "t", "b", "u", "G", "esc", "/", "a", "esc", ":", "2", "enter", "?", - "esc", "2", "j", "m", "3", "1", "x", "d", "y", "s", "esc", "q", "esc", "home", + type check func(before, after model, cmd tea.Cmd) bool + moved := func(b, a model, _ tea.Cmd) bool { return a.cur().cur != b.cur().cur } + isMode := func(md mode) check { + return func(_, a model, _ tea.Cmd) bool { return a.mode == md } + } + isOverlay := func(k overlayKind) check { + return func(_, a model, _ tea.Cmd) bool { return a.overlay != nil && a.overlay.kind == k } + } + isScope := func(sc Scope) check { return func(_, a model, _ tea.Cmd) bool { return a.scope == sc } } + isTab := func(tb tab) check { return func(_, a model, _ tea.Cmd) bool { return a.tab == tb } } + isFile := func(i int) check { return func(_, a model, _ tea.Cmd) bool { return a.changeSel == i } } + flashes := func(text string) check { + return func(_, a model, _ tea.Cmd) bool { return a.status == text } + } + closed := func(_, a model, _ tea.Cmd) bool { return a.overlay == nil && a.mode == modeNormal } + steps := []struct { + key string + want string + ok check + }{ + {"b", "the branch scope", isScope(ScopeBranch)}, + {"f", "the next file", isFile(1)}, + {"F", "the first file", isFile(0)}, + {"w", "wrap off", func(b, a model, _ tea.Cmd) bool { return a.wrap != b.wrap }}, + {"j", "a move", moved}, + {"v", "a selection", func(_, a model, _ tea.Cmd) bool { return a.cur().anchor >= 0 }}, + {"j", "a move", moved}, + {"c", "the comment box", isMode(modeComment)}, + {"\x1b[31mx\x07", "text in the box", func(_, a model, _ tea.Cmd) bool { return a.editor.Value() != "" }}, + {"enter", "a comment", func(_, a model, _ tea.Cmd) bool { return a.comments.Len() == 1 && a.mode == modeNormal }}, + {"k", "a move up", moved}, + {"]", "a move to the change", moved}, + {"]", "a crossing armed", func(_, a model, _ tea.Cmd) bool { return a.armed == 1 }}, + {"]", "the next file", isFile(1)}, + {"[", "a crossing armed", func(_, a model, _ tea.Cmd) bool { return a.armed == -1 }}, + {"[", "the first file", isFile(0)}, + {"n", "a move to the comment", moved}, + {"|", "split, or too narrow", func(b, a model, _ tea.Cmd) bool { + return a.split != b.split || a.status == "too narrow for split" + }}, + {"p", "the list moves", func(b, a model, _ tea.Cmd) bool { return a.listPos != b.listPos }}, + {"t", "the last-turn scope", isScope(ScopeLastTurn)}, + {"u", "the uncommitted scope", isScope(ScopeUncommitted)}, + {"G", "the commit picker", isOverlay(overlayCommits)}, + {"esc", "no overlay", closed}, + {"/", "the search", isOverlay(overlaySearch)}, + {"a", "a query", func(_, a model, _ tea.Cmd) bool { return a.overlay.input.Value() == "a" }}, + {"esc", "no overlay", closed}, + {":", "go to line", isOverlay(overlayGoto)}, + {"2", "a line number", func(_, a model, _ tea.Cmd) bool { return a.overlay.input.Value() == "2" }}, + {"enter", "no overlay", closed}, + {"?", "all keys", func(_, a model, _ tea.Cmd) bool { return a.help.ShowAll }}, + {"esc", "the short keys", func(_, a model, _ tea.Cmd) bool { return !a.help.ShowAll }}, + {"2", "the Files tab", isTab(tabFiles)}, + {"j", "a move in the file", moved}, + {"3", "the PR tab", isTab(tabPR)}, + {"1", "the Changes tab", isTab(tabChanges)}, + {"s", "no agent", flashes("not inside Rex, press y to copy")}, + {"y", "a copy", func(_, _ model, cmd tea.Cmd) bool { return cmd != nil }}, + {"q", "the quit prompt", isOverlay(overlayQuit)}, + {"esc", "no overlay", closed}, + {"d", "no comment", func(_, a model, _ tea.Cmd) bool { return a.comments.Len() == 0 }}, + {"q", "a quit", func(_, _ model, cmd tea.Cmd) bool { return quits(cmd) }}, } sizes := []struct{ w, h int }{ {0, 0}, {1, 1}, {2, 2}, {10, 3}, {20, 5}, {40, 4}, {200, 6}, @@ -292,16 +357,21 @@ func TestSmallScreens(t *testing.T) { t.Parallel() m, _ := newTestModel(t) m = step(t, m, tea.WindowSizeMsg{Width: size.w, Height: size.h}) - for _, k := range keys { - m = press(t, m, k) + for _, st := range steps { + before := m + next, cmd := m.Update(keyMsg(t, st.key)) + m = *next.(*model) + if !st.ok(before, m, cmd) { + t.Fatalf("after %q: want %s", st.key, st.want) + } lines := strings.Split(view(m), "\n") if len(lines) > max(size.h, 1) { - t.Errorf("after %q: %d lines, want %d or fewer", k, len(lines), max(size.h, 1)) + t.Errorf("after %q: %d lines, want %d or fewer", st.key, len(lines), max(size.h, 1)) } for _, l := range lines { if w := ansi.StringWidth(l); w > max(size.w, 1) { t.Errorf("after %q: line width %d, want %d or fewer: %q", - k, w, max(size.w, 1), l) + st.key, w, max(size.w, 1), l) break } } diff --git a/tui/turn_test.go b/tui/turn_test.go index 169193b..5114cce 100644 --- a/tui/turn_test.go +++ b/tui/turn_test.go @@ -1,7 +1,11 @@ package tui import ( + "errors" + "io/fs" + "os" "slices" + "strings" "testing" "time" @@ -225,26 +229,44 @@ func tickAgents(t *testing.T, m *model) []agentsMsg { func TestSampleRetry(t *testing.T) { m, dir := newTestModel(t) clk := setClock(&m) - logRex(t, &m) // its output is no list + log := logRex(t, &m) // its output is no list m = step(t, m, m.listAgents(agentsMsg{})()) if m.sampled || m.sampleAt.IsZero() || m.sampleWait != 2*time.Second { t.Fatalf("after a failed list: sampled %v, at %v, wait %v; want a retry", m.sampled, m.sampleAt, m.sampleWait) } - if got := tickAgents(t, &m); len(got) != 0 { - t.Errorf("a tick before the wait lists %d times, want 0", len(got)) + clk.advance(time.Second - time.Nanosecond) + if got := tickAgents(t, &m); len(got) != 0 || rexLists(t, log) != 1 { + t.Errorf("a tick before the wait: %d lists, %d rex lists; want 0, 1", + len(got), rexLists(t, log)) } - clk.advance(time.Second) + clk.advance(time.Nanosecond) got := tickAgents(t, &m) - if len(got) != 1 || got[0].err == nil { - t.Fatalf("a tick after the wait lists %d times, want 1 that fails", len(got)) + if len(got) != 1 || got[0].err == nil || rexLists(t, log) != 2 { + t.Fatalf("a tick after the wait: %d lists, %d rex lists; want 1 that fails, 2", + len(got), rexLists(t, log)) } if m = step(t, m, got[0]); m.sampleWait != 4*time.Second { t.Errorf("after a second failure: wait %v, want 4s", m.sampleWait) } m = step(t, m, sample("p", "pi", dir)) clk.advance(2 * time.Second) - if !m.sampled || len(tickAgents(t, &m)) != 0 { - t.Errorf("after a good list: sampled %v, want true and no more lists", m.sampled) + if got := tickAgents(t, &m); !m.sampled || len(got) != 0 || rexLists(t, log) != 2 { + t.Errorf("after a good list: sampled %v, %d lists, %d rex lists; want true, 0, 2", + m.sampled, len(got), rexLists(t, log)) } } + +// rexLists returns the number of the lists of the blocks in the log of +// logRex. +func rexLists(t *testing.T, log string) int { + t.Helper() + b, err := os.ReadFile(log) + if errors.Is(err, fs.ErrNotExist) { + return 0 + } + if err != nil { + t.Fatal(err) + } + return strings.Count(string(b), "session.list_blocks") +} diff --git a/tui/watch_test.go b/tui/watch_test.go index e257c9f..ab43b11 100644 --- a/tui/watch_test.go +++ b/tui/watch_test.go @@ -2,7 +2,9 @@ package tui import ( "errors" + "io/fs" "os" + "os/exec" "path/filepath" "strings" "testing" @@ -24,15 +26,29 @@ func watched(t *testing.T) (m model, dir string) { } // TestTickRunsNoGitWhenIdle checks that a tick runs no git process while -// nothing changes. +// nothing changes. A git on PATH logs each call. func TestTickRunsNoGitWhenIdle(t *testing.T) { - m, _ := watched(t) - noGit(t) + m, dir := watched(t) + gitPath, err := exec.LookPath("git") + if err != nil { + t.Fatal(err) + } + bin := t.TempDir() + log := filepath.Join(bin, "git.log") + testgit.Script(t, bin, "git", `echo "$*" >> '`+log+"'\nexec '"+gitPath+"' \"$@\"\n") + t.Setenv("PATH", bin+string(os.PathListSeparator)+os.Getenv("PATH")) for range 3 { m = step(t, m, tickMsg{}) } - if shows(m, "isn't installed") { - t.Errorf("view got:\n%s\nwant no git error", view(m)) + if b, err := os.ReadFile(log); !errors.Is(err, fs.ErrNotExist) { + t.Errorf("idle ticks run git:\n%s(%v)\nwant no call", b, err) + } + testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") + if m = step(t, m, tickMsg{}); !shows(m, "return 42") { + t.Errorf("view got:\n%s\nwant the edit", view(m)) + } + if _, err := os.Stat(log); err != nil { + t.Errorf("a tick after an edit runs no git through the log: %v", err) } } From 21d4463241af867203f1ffe72bcf6c2ecadba919 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 19:34:29 +0100 Subject: [PATCH 040/119] test: cover the URL opener, the agent picker, the forge hosts, and Restart Add tests for url_opener and the opener of the system, the rows and the picks of the agent picker, SetLabel and ConfigPath of rex, the host settings that pick gh, glab, or az, the settings sample of the README, update.Restart, and a state file that Run cannot read. Run builds its model in startModel, so a test can check the resume and the label. --- rex/rex_test.go | 27 +++++- tui/agents_test.go | 74 ++++++++++++++++ tui/open_test.go | 96 ++++++++++++++++++++ tui/prfetch_test.go | 50 +++++++++++ tui/readme_test.go | 197 ++++++++++++++++++++++++++++++++++++++++++ tui/run_test.go | 55 ++++++++++++ tui/tui.go | 43 +++++---- update/update_test.go | 33 +++++++ 8 files changed, 557 insertions(+), 18 deletions(-) create mode 100644 tui/agents_test.go create mode 100644 tui/open_test.go create mode 100644 tui/readme_test.go create mode 100644 tui/run_test.go diff --git a/rex/rex_test.go b/rex/rex_test.go index 0ee3803..c45a5e7 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -96,7 +96,8 @@ func TestAgents(t *testing.T) { } } -// TestCommands checks the rex calls of Resolve, Paste, Focus, and Split. +// TestCommands checks the rex calls of Resolve, Paste, Focus, Split, and +// SetLabel. func TestCommands(t *testing.T) { c, dir := fakeRex(t) ctx := t.Context() @@ -120,6 +121,9 @@ func TestCommands(t *testing.T) { if err := c.Split(ctx, "/repo", "sh", "-c", "vi x"); err != nil { t.Fatal(err) } + if err := c.SetLabel(ctx, "block:self", "rex\"diff"); err != nil { + t.Fatal(err) + } b, _ := os.ReadFile(filepath.Join(dir, "calls")) calls := string(b) @@ -128,6 +132,7 @@ func TestCommands(t *testing.T) { `"event":{"type":"paste","payload":{"text":"a\n\tb"}}}`, `api call -s S session.focus_block {"block_id":"block:pi"}`, `split -s S -b block:self --cwd /repo -- sh -c vi x`, + `api call -s S session.set_block_label {"block_id":"block:self","label":"rex\"diff"}`, } { if !strings.Contains(calls, want) { t.Errorf("calls got:\n%s\nwant a call %s", calls, want) @@ -239,6 +244,26 @@ func TestFromEnv(t *testing.T) { } } +// TestConfigPath checks that ConfigPath honours REX_CONFIG, then +// XDG_CONFIG_HOME, then the home directory. +func TestConfigPath(t *testing.T) { + t.Setenv("HOME", "/home/u") + tests := []struct{ name, config, xdg, want string }{ + {"REX_CONFIG", "/etc/rex.lua", "/xdg", "/etc/rex.lua"}, + {"XDG_CONFIG_HOME", "", "/xdg", "/xdg/rex/init.lua"}, + {"home", "", "", "/home/u/.config/rex/init.lua"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Setenv("REX_CONFIG", tt.config) + t.Setenv("XDG_CONFIG_HOME", tt.xdg) + if got := rex.ConfigPath(); got != tt.want { + t.Errorf("ConfigPath() = %q, want %q", got, tt.want) + } + }) + } +} + // TestReloadConfigOutsideRex checks that ReloadConfig runs the rex of the // Rex server app outside a Rex terminal. func TestReloadConfigOutsideRex(t *testing.T) { diff --git a/tui/agents_test.go b/tui/agents_test.go new file mode 100644 index 0000000..b3f309f --- /dev/null +++ b/tui/agents_test.go @@ -0,0 +1,74 @@ +package tui + +import ( + "os" + "strings" + "testing" + + "github.com/rednafi/rexdiff/rex" +) + +// agentPicker returns a test model with a comment and the agent picker +// open on three agents. The agent beside the pane is b2. It also returns +// the log of the fake rex. +func agentPicker(t *testing.T) (model, string) { + t.Helper() + m, dir := newTestModel(t) + log := logRex(t, &m) + m.beside = "b2" + m = press(t, m, "]", "c", "h", "i", "enter", "s") + m = step(t, m, agentsMsg{send: true, agents: []rex.Agent{ + {Block: "b1", Name: "pi", Window: "main", Cwd: dir, Status: rex.Status{App: "pi", State: rex.StateIdle}}, + {Block: "b2", Name: "agent", Cwd: dir, Status: rex.Status{App: "claude-code", State: rex.StateBlocked}}, + {Block: "b3", Name: "cc", Cwd: dir, Status: rex.Status{App: "codex", State: rex.StateWorking}}, + }}) + if m.overlay == nil || m.overlay.kind != overlayAgents { + t.Fatalf("a send to three agents: overlay %v, want the agent picker", m.overlay) + } + return m, log +} + +// TestAgentPicker checks the rows of the agent picker, and that a digit or +// enter sends to the agent of the row. +func TestAgentPicker(t *testing.T) { + m, _ := agentPicker(t) + for _, want := range []string{ + "send to which agent?", + "1 pi", "pi · idle · main", + "2 agent", "claude-code · at a prompt", "opened beside", + "3 cc", "codex · working", + } { + if !shows(m, want) { + t.Errorf("the picker got:\n%s\nwant %q", view(m), want) + } + } + if m.overlay.cur != 1 { + t.Errorf("the cursor is on row %d, want row 1, the agent beside", m.overlay.cur) + } + if m = press(t, m, "9"); m.overlay == nil { + t.Error("9 with three agents closes the picker, want no pick") + } + + tests := []struct{ name, keys, block string }{ + {"digit", "3", "b3"}, + {"enter", "enter", "b2"}, + {"move and enter", "j enter", "b3"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m, log := agentPicker(t) + keys := strings.Fields(tt.keys) + m = press(t, m, keys[:len(keys)-1]...) + next, cmd := m.Update(keyMsg(t, keys[len(keys)-1])) + if m = *next.(*model); m.overlay != nil || cmd == nil { + t.Fatalf("after %s: overlay %v, command %v; want a send", tt.keys, m.overlay, cmd != nil) + } + cmd() // the send checks the agent first + b, err := os.ReadFile(log) + want := "block call -s S -b " + tt.block + " program_status" + if err != nil || !strings.Contains(string(b), want) { + t.Errorf("rex calls %q (%v), want %s", b, err, want) + } + }) + } +} diff --git a/tui/open_test.go b/tui/open_test.go new file mode 100644 index 0000000..28ccca8 --- /dev/null +++ b/tui/open_test.go @@ -0,0 +1,96 @@ +package tui + +import ( + "os" + "path/filepath" + "runtime" + "syscall" + "testing" + "time" + + "github.com/rednafi/rexdiff/internal/testgit" + "github.com/rednafi/rexdiff/vcs" +) + +// prURL is the URL of the pull request in prModel. The opener must get it +// as one argument. +const prURL = "https://example.com/o/r/pull/1?a=1&b='x y'" + +// prModel returns a test model on the PR tab with a pull request. +func prModel(t *testing.T) model { + t.Helper() + m, _ := newTestModel(t) + m = press(t, m, "3") + return step(t, m, prMsg{gen: m.prf.gen, pr: &vcs.PullRequest{Title: "T", URL: prURL}}) +} + +// fifo makes a named pipe in a new directory and returns its path. The +// opener writes its arguments to it, so the test can wait for the opener +// without a sleep. +func fifo(t *testing.T) string { + t.Helper() + path := filepath.Join(t.TempDir(), "args") + if err := syscall.Mkfifo(path, 0o600); err != nil { + t.Fatal(err) + } + return path +} + +// readFifo returns what a writer writes to the pipe at path. It fails the +// test if no writer comes. +func readFifo(t *testing.T, path string) string { + t.Helper() + got := make(chan string, 1) + go func() { + b, _ := os.ReadFile(path) // blocks until the writer closes the pipe + got <- string(b) + }() + select { + case s := <-got: + return s + case <-time.After(10 * time.Second): // a guard; the opener runs at once + t.Fatal("the opener does not run") + return "" + } +} + +// TestOpenURLSetting checks that o opens the pull request with url_opener. +func TestOpenURLSetting(t *testing.T) { + t.Parallel() + m := prModel(t) + out := fifo(t) + m.cfg.URLOpener = `printf '%s\n' {url} > ` + out + m = press(t, m, "o") + if got := readFifo(t, out); got != prURL+"\n" { + t.Errorf("the opener got %q, want %q", got, prURL+"\n") + } + if m.status != "" { + t.Errorf("status %q, want none", m.status) + } +} + +// TestOpenURLDefault checks that o opens the pull request with the opener +// of the system, and shows why the opener does not start. +func TestOpenURLDefault(t *testing.T) { + m := prModel(t) + bin := t.TempDir() + out := fifo(t) + for _, name := range []string{"open", "xdg-open"} { + testgit.Script(t, bin, name, `printf '%s\n' "${0##*/}" "$@" > '`+out+"'\n") + } + t.Setenv("PATH", bin) + opener := "xdg-open" + if runtime.GOOS == "darwin" { + opener = "open" + } + m = press(t, m, "o") + if got, want := readFifo(t, out), opener+"\n"+prURL+"\n"; got != want { + t.Errorf("the opener got %q, want %q", got, want) + } + + t.Setenv("PATH", t.TempDir()) + m = press(t, m, "o") + if want := `open: exec: "` + opener + `": executable file not found in $PATH`; m.status != want { + t.Errorf("status %q, want %q", m.status, want) + } +} diff --git a/tui/prfetch_test.go b/tui/prfetch_test.go index a7b9b00..6438b53 100644 --- a/tui/prfetch_test.go +++ b/tui/prfetch_test.go @@ -1,6 +1,11 @@ package tui import ( + "cmp" + "errors" + "io/fs" + "os" + "path/filepath" "testing" "time" @@ -107,3 +112,48 @@ func TestPRBranchSwitch(t *testing.T) { t.Errorf("after a switch: pr %+v, gen %d, want a blank tab and a read", m.pr.pr, m.prf.gen) } } + +// TestForgeHosts checks that the host settings of the self-hosted forges +// pick the tool that reads the pull request. +func TestForgeHosts(t *testing.T) { + const host = "forge.corp.example" + bin := t.TempDir() + log := filepath.Join(bin, "log") + for _, tool := range []string{"gh", "glab", "az"} { + testgit.Script(t, bin, tool, `echo "$(basename "$0") $GH_HOST" >> '`+log+"'\nexit 1\n") + } + t.Setenv("PATH", bin+string(os.PathListSeparator)+os.Getenv("PATH")) + tests := []struct{ setting, want string }{ // want is the log of the tools + {"github_host", "gh " + host + "\n"}, + {"gitlab_host", "glab \n"}, + {"azure_devops_host", "az \n"}, + {"", ""}, // no tool reads the pull request of an unknown host + } + for _, tt := range tests { + t.Run(cmp.Or(tt.setting, "none"), func(t *testing.T) { + clearFile(t, log) + m, dir := newTestModel(t) + testgit.Git(t, dir, "remote", "add", "origin", "https://"+host+"/o/r.git") + text := "{}" + if tt.setting != "" { + text = `{"` + tt.setting + `": "` + host + `"}` + } + cfg, err := parseConfig(text) + if err != nil { + t.Fatal(err) + } + m.cfg = cfg + msg, _ := m.loadPR()().(prMsg) + if msg.err == nil { + t.Fatal("the read of the pull request: no error, want the error of the fake tool") + } + got, err := os.ReadFile(log) + if err != nil && !errors.Is(err, fs.ErrNotExist) { + t.Fatal(err) + } + if string(got) != tt.want { + t.Errorf("the tools ran %q, want %q", got, tt.want) + } + }) + } +} diff --git a/tui/readme_test.go b/tui/readme_test.go new file mode 100644 index 0000000..94dc4c2 --- /dev/null +++ b/tui/readme_test.go @@ -0,0 +1,197 @@ +package tui + +import ( + "encoding/json" + "fmt" + "os" + "strconv" + "strings" + "testing" + "unicode" +) + +// TestReadmeSettings checks that rexdiff accepts the settings sample of +// the README. The test turns the Lua table into the JSON that rexdiff.lua +// passes: the table without key and placement. +func TestReadmeSettings(t *testing.T) { + t.Parallel() + b, err := os.ReadFile("../README.md") + if err != nil { + t.Fatal(err) + } + _, sample, ok := strings.Cut(string(b), "```lua\nlocal settings = ") + if !ok { + t.Fatal("the README has no lua block with local settings") + } + sample, _, _ = strings.Cut(sample, "```") + p := &luaParser{src: sample} + v, err := p.value() + if err != nil { + t.Fatalf("the settings of the README: %v", err) + } + opts, ok := v.(map[string]any) + if !ok || len(opts) < 3 { + t.Fatalf("the settings of the README = %v, want a table of settings", v) + } + delete(opts, "key") + delete(opts, "placement") + text, err := json.Marshal(opts) + if err != nil { + t.Fatal(err) + } + if err := CheckConfig(string(text)); err != nil { + t.Errorf("CheckConfig(%s) = %v, want nil", text, err) + } +} + +// TestLuaParser checks the parser of the Lua tables of the README. +func TestLuaParser(t *testing.T) { + t.Parallel() + tests := []struct{ name, src, want string }{ + { + "table", `{ a = "x", -- note + b = false, c = 2, d = { e = { "S", "T" } } }`, + `{"a":"x","b":false,"c":2,"d":{"e":["S","T"]}}`, + }, + {"escape", `"a\"b"`, `"a\"b"`}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + p := &luaParser{src: tt.src} + v, err := p.value() + if err != nil { + t.Fatal(err) + } + if got, _ := json.Marshal(v); string(got) != tt.want { + t.Errorf("value = %s, want %s", got, tt.want) + } + }) + } + for _, bad := range []string{`{ a = }`, `{ a = "x"`, `"x`, `nil`} { + p := &luaParser{src: bad} + if v, err := p.value(); err == nil { + t.Errorf("value of %q = %v, want an error", bad, v) + } + } +} + +// luaParser reads a Lua table of strings, booleans, numbers, and tables. +// That is the form of the settings in the README. +type luaParser struct { + src string + pos int +} + +// skip moves past the spaces and the comments. +func (p *luaParser) skip() { + for p.pos < len(p.src) { + switch { + case unicode.IsSpace(rune(p.src[p.pos])): + p.pos++ + case strings.HasPrefix(p.src[p.pos:], "--"): + end := strings.IndexByte(p.src[p.pos:], '\n') + if end < 0 { + end = len(p.src) - p.pos + } + p.pos += end + default: + return + } + } +} + +// peek returns the next byte after the spaces, or 0 at the end. +func (p *luaParser) peek() byte { + p.skip() + if p.pos == len(p.src) { + return 0 + } + return p.src[p.pos] +} + +// word returns the name or the number at the position. +func (p *luaParser) word() string { + start := p.pos + for p.pos < len(p.src) { + c := rune(p.src[p.pos]) + if !unicode.IsLetter(c) && !unicode.IsDigit(c) && c != '_' && c != '.' { + break + } + p.pos++ + } + return p.src[start:p.pos] +} + +// value reads a value. +func (p *luaParser) value() (any, error) { + switch p.peek() { + case '{': + p.pos++ + return p.table() + case '"': + end := p.pos + 1 + for end < len(p.src) && p.src[end] != '"' { + if p.src[end] == '\\' { + end++ + } + end++ + } + if end >= len(p.src) { + return nil, fmt.Errorf("no end of the string at %d", p.pos) + } + s, err := strconv.Unquote(p.src[p.pos : end+1]) + p.pos = end + 1 + return s, err + } + w := p.word() + switch w { + case "true", "false": + return w == "true", nil + } + if n, err := strconv.ParseFloat(w, 64); err == nil { + return n, nil + } + return nil, fmt.Errorf("no value at %d: %q", p.pos, w) +} + +// table reads the fields of a table after its "{". A table with names is +// a map. A table without names is a list. +func (p *luaParser) table() (any, error) { + fields := map[string]any{} + var list []any + for { + if p.peek() == '}' { + p.pos++ + break + } + start := p.pos + name := p.word() + var v any + var err error + if name != "" && p.peek() == '=' { + p.pos++ + if v, err = p.value(); err != nil { + return nil, err + } + fields[name] = v + } else { + p.pos = start + if v, err = p.value(); err != nil { + return nil, err + } + list = append(list, v) + } + switch p.peek() { + case ',': + p.pos++ + case '}': + default: + return nil, fmt.Errorf("no , or } at %d", p.pos) + } + } + if len(list) > 0 { + return list, nil + } + return fields, nil +} diff --git a/tui/run_test.go b/tui/run_test.go new file mode 100644 index 0000000..33ac762 --- /dev/null +++ b/tui/run_test.go @@ -0,0 +1,55 @@ +package tui + +import ( + "errors" + "io/fs" + "os" + "path/filepath" + "slices" + "strings" + "testing" +) + +// TestStartBadResume checks that a state file that Run cannot read shows +// why in the footer, and that the changes still load. +func TestStartBadResume(t *testing.T) { + t.Parallel() + tests := []struct{ name, content, want string }{ + {"not JSON", "{oops", "cannot read the comments from before the update: "}, + {"missing", "", "cannot read the comments from before the update: open "}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + m, _ := newTestModel(t) + path := filepath.Join(t.TempDir(), "state.json") + if tt.content != "" { + if err := os.WriteFile(path, []byte(tt.content), 0o600); err != nil { + t.Fatal(err) + } + } + m = startModel(t.Context(), Options{Repo: m.repo, Resume: path}, defaultConfig()) + if !strings.HasPrefix(m.status, tt.want) { + t.Errorf("status %q, want %q", m.status, tt.want+"…") + } + if got := paths(m); !slices.Equal(got, []string{"a.go"}) { + t.Errorf("files %v, want [a.go]", got) + } + if _, err := os.Stat(path); !errors.Is(err, fs.ErrNotExist) { + t.Errorf("stat the state file: %v, want it removed", err) + } + }) + } +} + +// TestStartSetsLabel checks that Run labels the block of rexdiff in Rex. +func TestStartSetsLabel(t *testing.T) { + m, _ := newTestModel(t) + log := logRex(t, &m) + startModel(t.Context(), Options{Repo: m.repo, Rex: m.rex}, defaultConfig()) + b, err := os.ReadFile(log) + want := `api call -s S session.set_block_label {"block_id":"B","label":"rexdiff"}` + if err != nil || !strings.Contains(string(b), want) { + t.Errorf("rex calls %q (%v), want %s", b, err, want) + } +} diff --git a/tui/tui.go b/tui/tui.go index 449e17d..f7d98c6 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -93,12 +93,37 @@ func Run(ctx context.Context, o Options) (resume string, err error) { ctx, cancel := context.WithCancel(ctx) defer cancel() + m := startModel(ctx, o, cfg) + program := tea.NewProgram(&m, tea.WithContext(ctx)) + if o.Rex != nil { + // Watch returns only the error of ctx, when ctx is done. + go func() { + _ = o.Rex.Watch(ctx, func(e rex.Event) { program.Send(eventMsg(e)) }) + }() + } + final, err := program.Run() + if fm, ok := final.(*model); ok && err == nil { + if fm.restartState != "" { + // Keep the last screen until the new rexdiff draws, so that + // the restart does not show the shell of the pane. + fmt.Print("\x1b[?1049h\x1b[?25l\x1b[H" + fm.View().Content) + } + return fm.restartState, nil + } + return "", err +} + +// startModel returns the model that Run shows. It starts the watcher, +// reads the state of o.Resume, loads the changes, and labels the block of +// the program in Rex. +func startModel(ctx context.Context, o Options, cfg config) model { m := newModel(ctx, o, cfg) if err := m.startWatch(); err != nil { m.dropWatch(err) } var saved *savedState if o.Resume != "" { + var err error if saved, err = loadState(o.Resume); err != nil { m.flash("cannot read the comments from before the update: " + err.Error()) } else { @@ -114,21 +139,5 @@ func Run(ctx context.Context, o Options) (resume string, err error) { m.log.Debug("set label", "err", err) } } - program := tea.NewProgram(&m, tea.WithContext(ctx)) - if o.Rex != nil { - // Watch returns only the error of ctx, when ctx is done. - go func() { - _ = o.Rex.Watch(ctx, func(e rex.Event) { program.Send(eventMsg(e)) }) - }() - } - final, err := program.Run() - if fm, ok := final.(*model); ok && err == nil { - if fm.restartState != "" { - // Keep the last screen until the new rexdiff draws, so that - // the restart does not show the shell of the pane. - fmt.Print("\x1b[?1049h\x1b[?25l\x1b[H" + fm.View().Content) - } - return fm.restartState, nil - } - return "", err + return m } diff --git a/update/update_test.go b/update/update_test.go index b583bc7..77c5970 100644 --- a/update/update_test.go +++ b/update/update_test.go @@ -12,10 +12,12 @@ import ( "net/http" "net/http/httptest" "os" + "os/exec" "path/filepath" "runtime" "slices" "strings" + "syscall" "testing" ) @@ -393,3 +395,34 @@ func TestErrorWithoutOutput(t *testing.T) { t.Errorf("error = %v, want %s", err, want) } } + +// restartEnv makes the test binary run TestRestart as the process that +// restarts. +const restartEnv = "UPDATE_TEST_RESTART" + +// TestRestart checks that Restart runs the program with the arguments and +// the environment in the same process, and that a missing program is an +// error. +func TestRestart(t *testing.T) { + if os.Getenv(restartEnv) != "" { + err := Restart("/bin/sh", []string{"-c", `echo "$$|$0|$` + restartEnv + `"`, "a b"}) + fmt.Println("Restart:", err) + os.Exit(1) + } + run := "-test.run=^TestRestart$" + cmd := exec.CommandContext(t.Context(), os.Args[0], run) //nolint:gosec // the test binary + cmd.Env = append(os.Environ(), restartEnv+"=1") + var out bytes.Buffer + cmd.Stdout = &out + if err := cmd.Run(); err != nil { + t.Fatalf("the restart: %v, output %q", err, out.String()) + } + if want := fmt.Sprintf("%d|a b|1\n", cmd.Process.Pid); out.String() != want { + t.Errorf("the restarted program printed %q, want %q", out.String(), want) + } + + err := Restart(filepath.Join(t.TempDir(), "rexdiff"), nil) + if !errors.Is(err, syscall.ENOENT) { + t.Errorf("Restart of a missing program = %v, want ENOENT", err) + } +} From 25e5e574294cfa35b4c390340c0497de2fdf8a0d Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 19:36:23 +0100 Subject: [PATCH 041/119] test: name the cases of the table loops that share an input TestPullRequestErrors has two cases with one remote, so each case runs in a subtest named by its remote and branch. TestRunChecksOptions names its cases in place of printing the options. --- tui/release_test.go | 16 ++++++++++------ vcs/pr_test.go | 36 ++++++++++++++++++++---------------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/tui/release_test.go b/tui/release_test.go index 37a63d1..5d09a48 100644 --- a/tui/release_test.go +++ b/tui/release_test.go @@ -352,17 +352,21 @@ func TestRunChecksOptions(t *testing.T) { t.Parallel() m, _ := newTestModel(t) tests := []struct { + name string o Options want string }{ - {Options{}, "no repository"}, - {Options{Repo: m.repo, Layout: "sideways"}, `invalid value for layout: expected one of unified, split, not "sideways"`}, - {Options{Repo: m.repo, Scope: "commits"}, `invalid value for scope: expected one of uncommitted, branch, last-turn, not "commits"`}, + {"no repository", Options{}, "no repository"}, + {"layout", Options{Repo: m.repo, Layout: "sideways"}, `invalid value for layout: expected one of unified, split, not "sideways"`}, + {"scope", Options{Repo: m.repo, Scope: "commits"}, `invalid value for scope: expected one of uncommitted, branch, last-turn, not "commits"`}, } for _, tc := range tests { - if _, err := Run(t.Context(), tc.o); err == nil || err.Error() != tc.want { - t.Errorf("Run(%+v) error = %v, want %s", tc.o, err, tc.want) - } + t.Run(tc.name, func(t *testing.T) { + t.Parallel() + if _, err := Run(t.Context(), tc.o); err == nil || err.Error() != tc.want { + t.Errorf("Run error = %v, want %s", err, tc.want) + } + }) } } diff --git a/vcs/pr_test.go b/vcs/pr_test.go index 5a48c77..24f423f 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -1,6 +1,7 @@ package vcs_test import ( + "cmp" "errors" "os" "os/exec" @@ -194,22 +195,25 @@ func TestPullRequestErrors(t *testing.T) { {remote: "https://github.com/o/r", branch: "feat", msg: "gh isn't installed"}, } for _, tt := range tests { - r, dir := newRepo(t) - if tt.remote != "" { - testgit.Git(t, dir, "remote", "add", "origin", tt.remote) - } - if tt.branch != "feat" { - testgit.Git(t, dir, "checkout", "-qb", tt.branch) - } - _, err := r.PullRequest(t.Context(), tt.hosts) - switch { - case err == nil: - t.Errorf("PullRequest(%q): no error, want an error", tt.remote) - case tt.want != nil && !errors.Is(err, tt.want): - t.Errorf("PullRequest(%q): err = %v, want %v", tt.remote, err, tt.want) - case tt.msg != "" && err.Error() != tt.msg: - t.Errorf("PullRequest(%q): err = %q, want %q", tt.remote, err, tt.msg) - } + // Two cases have the same remote, so the name has the branch. + t.Run(cmp.Or(tt.remote, "no remote")+" on "+tt.branch, func(t *testing.T) { + r, dir := newRepo(t) + if tt.remote != "" { + testgit.Git(t, dir, "remote", "add", "origin", tt.remote) + } + if tt.branch != "feat" { + testgit.Git(t, dir, "checkout", "-qb", tt.branch) + } + _, err := r.PullRequest(t.Context(), tt.hosts) + switch { + case err == nil: + t.Error("PullRequest: no error, want an error") + case tt.want != nil && !errors.Is(err, tt.want): + t.Errorf("PullRequest: err = %v, want %v", err, tt.want) + case tt.msg != "" && err.Error() != tt.msg: + t.Errorf("PullRequest: err = %q, want %q", err, tt.msg) + } + }) } } From d30bb62df92575a2bb5af75d2f377a2a3b7825c9 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 19:57:09 +0100 Subject: [PATCH 042/119] fix(vcs): send untracked dirs to check-ignore with a ./ prefix --- vcs/watch.go | 8 +++++--- vcs/watch_test.go | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/vcs/watch.go b/vcs/watch.go index bd92d5e..50810c0 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -207,12 +207,14 @@ func (r *Repo) untrackedDirs(ctx context.Context) ([]string, error) { return dirs, nil } -// notIgnored returns the paths that git does not ignore. +// notIgnored returns the paths that git does not ignore. Each path gets +// the prefix "./", because git reads a path that starts with ":" as +// pathspec magic. git writes the paths with the prefix. func (r *Repo) notIgnored(ctx context.Context, paths []string) ([]string, error) { if len(paths) == 0 { return nil, nil } - in := strings.NewReader(strings.Join(paths, "\x00")) + in := strings.NewReader("./" + strings.Join(paths, "\x00./")) out, err := r.runInput(ctx, nil, in, "check-ignore", "-z", "--stdin") if exitedOne(err) { return paths, nil // git ignores none @@ -222,7 +224,7 @@ func (r *Repo) notIgnored(ctx context.Context, paths []string) ([]string, error) } ignored := strings.Split(out, "\x00") return slices.DeleteFunc(paths, func(p string) bool { - return slices.Contains(ignored, p) + return slices.Contains(ignored, "./"+p) }), nil } diff --git a/vcs/watch_test.go b/vcs/watch_test.go index 8fa293f..6dceb97 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -257,6 +257,9 @@ func TestWatcherUntrackedDir(t *testing.T) { {"only ignored files", "g/ignored.txt", "g/c.txt", true}, {"empty below empty", "d/e/", "d/e/c.txt", true}, {"ignored below untracked", "u/build/", "u/build/c.txt", false}, + // A path that starts with ":" is pathspec magic to git. + {"colon in the name", ":(x/e/", ":(x/e/c.txt", true}, + {"colon and exclude", ":!x/e/", ":!x/e/c.txt", true}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { From a211bde1853420552ab179ff06de310332f8945d Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 19:58:30 +0100 Subject: [PATCH 043/119] test: drop tests that add no confidence Drop the README sample test and its Lua parser, the tests of the test helpers, the URL opener tests, and the tests of SetLabel at start, Restart, ConfigPath, and the forge hosts in tui, which vcs covers. --- internal/testgit/testgit_test.go | 75 ------------ rex/rex_test.go | 20 ---- tui/open_test.go | 96 --------------- tui/prfetch_test.go | 50 -------- tui/readme_test.go | 197 ------------------------------- tui/run_test.go | 12 -- update/update_test.go | 33 ------ 7 files changed, 483 deletions(-) delete mode 100644 internal/testgit/testgit_test.go delete mode 100644 tui/open_test.go delete mode 100644 tui/readme_test.go diff --git a/internal/testgit/testgit_test.go b/internal/testgit/testgit_test.go deleted file mode 100644 index 9ad02db..0000000 --- a/internal/testgit/testgit_test.go +++ /dev/null @@ -1,75 +0,0 @@ -package testgit_test - -import ( - "os" - "path/filepath" - "strings" - "testing" - - "github.com/rednafi/rexdiff/internal/testgit" -) - -func TestMain(m *testing.M) { testgit.Main(m) } - -// TestRepoIgnoresUser checks that a new repository reads only its own -// config and gets no hooks from a template. -func TestRepoIgnoresUser(t *testing.T) { - dir := t.TempDir() - testgit.NewRepo(t, dir) - for l := range strings.Lines(testgit.Git(t, dir, "config", "--list", "--show-origin")) { - if !strings.HasPrefix(l, "file:.git/config\t") { - t.Errorf("git config has %q, want only the config of the repository", l) - } - } - if _, err := os.Stat(filepath.Join(dir, ".git", "hooks")); !os.IsNotExist(err) { - t.Errorf("stat .git/hooks: %v, want no hooks directory", err) - } -} - -// TestHelpers checks the files that WriteFile and Script make, and that -// a commit gets the fixed author. -func TestHelpers(t *testing.T) { - dir := t.TempDir() - testgit.NewRepo(t, dir) - testgit.WriteFile(t, dir, "a/b/c.txt", "x\n") - testgit.Git(t, dir, "add", ".") - testgit.Git(t, dir, "commit", "-qm", "c") - if got := testgit.Git(t, dir, "log", "-1", "--format=%an <%ae>"); got != "t \n" { - t.Errorf("author %q, want t ", got) - } - p := testgit.Script(t, t.TempDir(), "tool", "echo hi\n") - fi, err := os.Stat(p) - if err != nil { - t.Fatal(err) - } - if fi.Mode().Perm()&0o100 == 0 { - t.Errorf("%s has mode %v, want an executable", p, fi.Mode()) - } -} - -// TestFixture checks that a fixture builds once, and that each copy is a -// repository of its own. -func TestFixture(t *testing.T) { - builds := 0 - f := testgit.NewFixture(func(tb testing.TB, dir string) { - tb.Helper() - builds++ - testgit.NewRepo(tb, dir) - testgit.WriteFile(tb, dir, "a.txt", "a\n") - testgit.Git(tb, dir, "add", ".") - testgit.Git(tb, dir, "commit", "-qm", "a") - }) - one, two := t.TempDir(), t.TempDir() - f.Copy(t, one) - f.Copy(t, two) - testgit.WriteFile(t, one, "a.txt", "changed\n") - if builds != 1 { - t.Errorf("%d builds, want 1", builds) - } - if got := testgit.Git(t, one, "status", "--porcelain"); got != " M a.txt\n" { - t.Errorf("status of the changed copy = %q, want M a.txt", got) - } - if got := testgit.Git(t, two, "status", "--porcelain"); got != "" { - t.Errorf("status of the other copy = %q, want clean", got) - } -} diff --git a/rex/rex_test.go b/rex/rex_test.go index c45a5e7..dd9900b 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -244,26 +244,6 @@ func TestFromEnv(t *testing.T) { } } -// TestConfigPath checks that ConfigPath honours REX_CONFIG, then -// XDG_CONFIG_HOME, then the home directory. -func TestConfigPath(t *testing.T) { - t.Setenv("HOME", "/home/u") - tests := []struct{ name, config, xdg, want string }{ - {"REX_CONFIG", "/etc/rex.lua", "/xdg", "/etc/rex.lua"}, - {"XDG_CONFIG_HOME", "", "/xdg", "/xdg/rex/init.lua"}, - {"home", "", "", "/home/u/.config/rex/init.lua"}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - t.Setenv("REX_CONFIG", tt.config) - t.Setenv("XDG_CONFIG_HOME", tt.xdg) - if got := rex.ConfigPath(); got != tt.want { - t.Errorf("ConfigPath() = %q, want %q", got, tt.want) - } - }) - } -} - // TestReloadConfigOutsideRex checks that ReloadConfig runs the rex of the // Rex server app outside a Rex terminal. func TestReloadConfigOutsideRex(t *testing.T) { diff --git a/tui/open_test.go b/tui/open_test.go deleted file mode 100644 index 28ccca8..0000000 --- a/tui/open_test.go +++ /dev/null @@ -1,96 +0,0 @@ -package tui - -import ( - "os" - "path/filepath" - "runtime" - "syscall" - "testing" - "time" - - "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rednafi/rexdiff/vcs" -) - -// prURL is the URL of the pull request in prModel. The opener must get it -// as one argument. -const prURL = "https://example.com/o/r/pull/1?a=1&b='x y'" - -// prModel returns a test model on the PR tab with a pull request. -func prModel(t *testing.T) model { - t.Helper() - m, _ := newTestModel(t) - m = press(t, m, "3") - return step(t, m, prMsg{gen: m.prf.gen, pr: &vcs.PullRequest{Title: "T", URL: prURL}}) -} - -// fifo makes a named pipe in a new directory and returns its path. The -// opener writes its arguments to it, so the test can wait for the opener -// without a sleep. -func fifo(t *testing.T) string { - t.Helper() - path := filepath.Join(t.TempDir(), "args") - if err := syscall.Mkfifo(path, 0o600); err != nil { - t.Fatal(err) - } - return path -} - -// readFifo returns what a writer writes to the pipe at path. It fails the -// test if no writer comes. -func readFifo(t *testing.T, path string) string { - t.Helper() - got := make(chan string, 1) - go func() { - b, _ := os.ReadFile(path) // blocks until the writer closes the pipe - got <- string(b) - }() - select { - case s := <-got: - return s - case <-time.After(10 * time.Second): // a guard; the opener runs at once - t.Fatal("the opener does not run") - return "" - } -} - -// TestOpenURLSetting checks that o opens the pull request with url_opener. -func TestOpenURLSetting(t *testing.T) { - t.Parallel() - m := prModel(t) - out := fifo(t) - m.cfg.URLOpener = `printf '%s\n' {url} > ` + out - m = press(t, m, "o") - if got := readFifo(t, out); got != prURL+"\n" { - t.Errorf("the opener got %q, want %q", got, prURL+"\n") - } - if m.status != "" { - t.Errorf("status %q, want none", m.status) - } -} - -// TestOpenURLDefault checks that o opens the pull request with the opener -// of the system, and shows why the opener does not start. -func TestOpenURLDefault(t *testing.T) { - m := prModel(t) - bin := t.TempDir() - out := fifo(t) - for _, name := range []string{"open", "xdg-open"} { - testgit.Script(t, bin, name, `printf '%s\n' "${0##*/}" "$@" > '`+out+"'\n") - } - t.Setenv("PATH", bin) - opener := "xdg-open" - if runtime.GOOS == "darwin" { - opener = "open" - } - m = press(t, m, "o") - if got, want := readFifo(t, out), opener+"\n"+prURL+"\n"; got != want { - t.Errorf("the opener got %q, want %q", got, want) - } - - t.Setenv("PATH", t.TempDir()) - m = press(t, m, "o") - if want := `open: exec: "` + opener + `": executable file not found in $PATH`; m.status != want { - t.Errorf("status %q, want %q", m.status, want) - } -} diff --git a/tui/prfetch_test.go b/tui/prfetch_test.go index 6438b53..a7b9b00 100644 --- a/tui/prfetch_test.go +++ b/tui/prfetch_test.go @@ -1,11 +1,6 @@ package tui import ( - "cmp" - "errors" - "io/fs" - "os" - "path/filepath" "testing" "time" @@ -112,48 +107,3 @@ func TestPRBranchSwitch(t *testing.T) { t.Errorf("after a switch: pr %+v, gen %d, want a blank tab and a read", m.pr.pr, m.prf.gen) } } - -// TestForgeHosts checks that the host settings of the self-hosted forges -// pick the tool that reads the pull request. -func TestForgeHosts(t *testing.T) { - const host = "forge.corp.example" - bin := t.TempDir() - log := filepath.Join(bin, "log") - for _, tool := range []string{"gh", "glab", "az"} { - testgit.Script(t, bin, tool, `echo "$(basename "$0") $GH_HOST" >> '`+log+"'\nexit 1\n") - } - t.Setenv("PATH", bin+string(os.PathListSeparator)+os.Getenv("PATH")) - tests := []struct{ setting, want string }{ // want is the log of the tools - {"github_host", "gh " + host + "\n"}, - {"gitlab_host", "glab \n"}, - {"azure_devops_host", "az \n"}, - {"", ""}, // no tool reads the pull request of an unknown host - } - for _, tt := range tests { - t.Run(cmp.Or(tt.setting, "none"), func(t *testing.T) { - clearFile(t, log) - m, dir := newTestModel(t) - testgit.Git(t, dir, "remote", "add", "origin", "https://"+host+"/o/r.git") - text := "{}" - if tt.setting != "" { - text = `{"` + tt.setting + `": "` + host + `"}` - } - cfg, err := parseConfig(text) - if err != nil { - t.Fatal(err) - } - m.cfg = cfg - msg, _ := m.loadPR()().(prMsg) - if msg.err == nil { - t.Fatal("the read of the pull request: no error, want the error of the fake tool") - } - got, err := os.ReadFile(log) - if err != nil && !errors.Is(err, fs.ErrNotExist) { - t.Fatal(err) - } - if string(got) != tt.want { - t.Errorf("the tools ran %q, want %q", got, tt.want) - } - }) - } -} diff --git a/tui/readme_test.go b/tui/readme_test.go deleted file mode 100644 index 94dc4c2..0000000 --- a/tui/readme_test.go +++ /dev/null @@ -1,197 +0,0 @@ -package tui - -import ( - "encoding/json" - "fmt" - "os" - "strconv" - "strings" - "testing" - "unicode" -) - -// TestReadmeSettings checks that rexdiff accepts the settings sample of -// the README. The test turns the Lua table into the JSON that rexdiff.lua -// passes: the table without key and placement. -func TestReadmeSettings(t *testing.T) { - t.Parallel() - b, err := os.ReadFile("../README.md") - if err != nil { - t.Fatal(err) - } - _, sample, ok := strings.Cut(string(b), "```lua\nlocal settings = ") - if !ok { - t.Fatal("the README has no lua block with local settings") - } - sample, _, _ = strings.Cut(sample, "```") - p := &luaParser{src: sample} - v, err := p.value() - if err != nil { - t.Fatalf("the settings of the README: %v", err) - } - opts, ok := v.(map[string]any) - if !ok || len(opts) < 3 { - t.Fatalf("the settings of the README = %v, want a table of settings", v) - } - delete(opts, "key") - delete(opts, "placement") - text, err := json.Marshal(opts) - if err != nil { - t.Fatal(err) - } - if err := CheckConfig(string(text)); err != nil { - t.Errorf("CheckConfig(%s) = %v, want nil", text, err) - } -} - -// TestLuaParser checks the parser of the Lua tables of the README. -func TestLuaParser(t *testing.T) { - t.Parallel() - tests := []struct{ name, src, want string }{ - { - "table", `{ a = "x", -- note - b = false, c = 2, d = { e = { "S", "T" } } }`, - `{"a":"x","b":false,"c":2,"d":{"e":["S","T"]}}`, - }, - {"escape", `"a\"b"`, `"a\"b"`}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - p := &luaParser{src: tt.src} - v, err := p.value() - if err != nil { - t.Fatal(err) - } - if got, _ := json.Marshal(v); string(got) != tt.want { - t.Errorf("value = %s, want %s", got, tt.want) - } - }) - } - for _, bad := range []string{`{ a = }`, `{ a = "x"`, `"x`, `nil`} { - p := &luaParser{src: bad} - if v, err := p.value(); err == nil { - t.Errorf("value of %q = %v, want an error", bad, v) - } - } -} - -// luaParser reads a Lua table of strings, booleans, numbers, and tables. -// That is the form of the settings in the README. -type luaParser struct { - src string - pos int -} - -// skip moves past the spaces and the comments. -func (p *luaParser) skip() { - for p.pos < len(p.src) { - switch { - case unicode.IsSpace(rune(p.src[p.pos])): - p.pos++ - case strings.HasPrefix(p.src[p.pos:], "--"): - end := strings.IndexByte(p.src[p.pos:], '\n') - if end < 0 { - end = len(p.src) - p.pos - } - p.pos += end - default: - return - } - } -} - -// peek returns the next byte after the spaces, or 0 at the end. -func (p *luaParser) peek() byte { - p.skip() - if p.pos == len(p.src) { - return 0 - } - return p.src[p.pos] -} - -// word returns the name or the number at the position. -func (p *luaParser) word() string { - start := p.pos - for p.pos < len(p.src) { - c := rune(p.src[p.pos]) - if !unicode.IsLetter(c) && !unicode.IsDigit(c) && c != '_' && c != '.' { - break - } - p.pos++ - } - return p.src[start:p.pos] -} - -// value reads a value. -func (p *luaParser) value() (any, error) { - switch p.peek() { - case '{': - p.pos++ - return p.table() - case '"': - end := p.pos + 1 - for end < len(p.src) && p.src[end] != '"' { - if p.src[end] == '\\' { - end++ - } - end++ - } - if end >= len(p.src) { - return nil, fmt.Errorf("no end of the string at %d", p.pos) - } - s, err := strconv.Unquote(p.src[p.pos : end+1]) - p.pos = end + 1 - return s, err - } - w := p.word() - switch w { - case "true", "false": - return w == "true", nil - } - if n, err := strconv.ParseFloat(w, 64); err == nil { - return n, nil - } - return nil, fmt.Errorf("no value at %d: %q", p.pos, w) -} - -// table reads the fields of a table after its "{". A table with names is -// a map. A table without names is a list. -func (p *luaParser) table() (any, error) { - fields := map[string]any{} - var list []any - for { - if p.peek() == '}' { - p.pos++ - break - } - start := p.pos - name := p.word() - var v any - var err error - if name != "" && p.peek() == '=' { - p.pos++ - if v, err = p.value(); err != nil { - return nil, err - } - fields[name] = v - } else { - p.pos = start - if v, err = p.value(); err != nil { - return nil, err - } - list = append(list, v) - } - switch p.peek() { - case ',': - p.pos++ - case '}': - default: - return nil, fmt.Errorf("no , or } at %d", p.pos) - } - } - if len(list) > 0 { - return list, nil - } - return fields, nil -} diff --git a/tui/run_test.go b/tui/run_test.go index 33ac762..19cbb73 100644 --- a/tui/run_test.go +++ b/tui/run_test.go @@ -41,15 +41,3 @@ func TestStartBadResume(t *testing.T) { }) } } - -// TestStartSetsLabel checks that Run labels the block of rexdiff in Rex. -func TestStartSetsLabel(t *testing.T) { - m, _ := newTestModel(t) - log := logRex(t, &m) - startModel(t.Context(), Options{Repo: m.repo, Rex: m.rex}, defaultConfig()) - b, err := os.ReadFile(log) - want := `api call -s S session.set_block_label {"block_id":"B","label":"rexdiff"}` - if err != nil || !strings.Contains(string(b), want) { - t.Errorf("rex calls %q (%v), want %s", b, err, want) - } -} diff --git a/update/update_test.go b/update/update_test.go index 77c5970..b583bc7 100644 --- a/update/update_test.go +++ b/update/update_test.go @@ -12,12 +12,10 @@ import ( "net/http" "net/http/httptest" "os" - "os/exec" "path/filepath" "runtime" "slices" "strings" - "syscall" "testing" ) @@ -395,34 +393,3 @@ func TestErrorWithoutOutput(t *testing.T) { t.Errorf("error = %v, want %s", err, want) } } - -// restartEnv makes the test binary run TestRestart as the process that -// restarts. -const restartEnv = "UPDATE_TEST_RESTART" - -// TestRestart checks that Restart runs the program with the arguments and -// the environment in the same process, and that a missing program is an -// error. -func TestRestart(t *testing.T) { - if os.Getenv(restartEnv) != "" { - err := Restart("/bin/sh", []string{"-c", `echo "$$|$0|$` + restartEnv + `"`, "a b"}) - fmt.Println("Restart:", err) - os.Exit(1) - } - run := "-test.run=^TestRestart$" - cmd := exec.CommandContext(t.Context(), os.Args[0], run) //nolint:gosec // the test binary - cmd.Env = append(os.Environ(), restartEnv+"=1") - var out bytes.Buffer - cmd.Stdout = &out - if err := cmd.Run(); err != nil { - t.Fatalf("the restart: %v, output %q", err, out.String()) - } - if want := fmt.Sprintf("%d|a b|1\n", cmd.Process.Pid); out.String() != want { - t.Errorf("the restarted program printed %q, want %q", out.String(), want) - } - - err := Restart(filepath.Join(t.TempDir(), "rexdiff"), nil) - if !errors.Is(err, syscall.ENOENT) { - t.Errorf("Restart of a missing program = %v, want ENOENT", err) - } -} From 8dc3a04a06727180810ffba2aa7f7c8f16fabbc8 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 20:08:29 +0100 Subject: [PATCH 044/119] test: drop low-value test files and run every test that can in parallel Drop the files that test internals, copy other tests, or test what the code does not do. Each test that sets no environment runs in parallel. --- cmd/rexdiff/install_test.go | 1 + diff/bench_test.go | 20 ------- diff/cache_test.go | 20 ------- diff/cell_test.go | 4 ++ diff/comment_test.go | 7 +++ diff/diff_test.go | 9 +++ diff/fold_test.go | 2 + diff/hostile_test.go | 8 +++ internal/diffview/cache_test.go | 4 ++ internal/diffview/util_test.go | 23 -------- internal/editor/editor_test.go | 3 + internal/search/match_test.go | 1 + internal/search/search_test.go | 3 + internal/termtext/termtext_test.go | 1 + internal/tree/tree_test.go | 5 ++ internal/turn/turn_test.go | 8 +++ tui/box_test.go | 88 ---------------------------- tui/layout_test.go | 73 ----------------------- tui/quit_test.go | 16 ----- tui/release_test.go | 23 -------- tui/run_test.go | 43 -------------- tui/state_test.go | 93 ------------------------------ update/update_test.go | 8 +++ 23 files changed, 64 insertions(+), 399 deletions(-) delete mode 100644 diff/bench_test.go delete mode 100644 diff/cache_test.go delete mode 100644 internal/diffview/util_test.go delete mode 100644 tui/box_test.go delete mode 100644 tui/layout_test.go delete mode 100644 tui/run_test.go delete mode 100644 tui/state_test.go diff --git a/cmd/rexdiff/install_test.go b/cmd/rexdiff/install_test.go index a29ca13..519d909 100644 --- a/cmd/rexdiff/install_test.go +++ b/cmd/rexdiff/install_test.go @@ -110,6 +110,7 @@ func TestUpgrade(t *testing.T) { // TestLuaQuote checks that a path that Go escapes stays the same in Lua 5.1. // Lua 5.1 knows only a few escapes. func TestLuaQuote(t *testing.T) { + t.Parallel() got := luaQuote("/a\u200bb/\"x\"\\y\nz") want := "\"/a\u200bb/\\\"x\\\"\\\\y\\nz\"" if got != want { diff --git a/diff/bench_test.go b/diff/bench_test.go deleted file mode 100644 index ca7a072..0000000 --- a/diff/bench_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package diff_test - -import ( - "strings" - "testing" - - "github.com/rednafi/rexdiff/diff" -) - -// BenchmarkRenderFile renders a file of 4000 lines that the cache keeps -// highlighted, as when the user scrolls a file view sideways. -func BenchmarkRenderFile(b *testing.B) { - src := strings.Repeat("func f(x int) int {\n\treturn x * 2 // comment\n}\n\n", 1000) - o := diff.Options{Width: 120, Cache: new(diff.Cache)} - diff.RenderFile("a.go", src, o) - b.ReportAllocs() - for b.Loop() { - diff.RenderFile("a.go", src, o) - } -} diff --git a/diff/cache_test.go b/diff/cache_test.go deleted file mode 100644 index 6d7203e..0000000 --- a/diff/cache_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package diff - -import ( - "strings" - "testing" -) - -// TestCacheKeepsFile checks that RenderFile uses the colours that the cache -// keeps for the same file. RenderFile colours a changed file again. -func TestCacheKeepsFile(t *testing.T) { - var c Cache - RenderFile("a.go", "x := 1\n", Options{Cache: &c}) - c.file.out = "kept" - if got := RenderFile("a.go", "x := 1\n", Options{Cache: &c}).Lines[0]; !strings.Contains(got, "kept") { - t.Errorf("the same file shows %q, want the kept colours", got) - } - if got := RenderFile("a.go", "x := 2\n", Options{Cache: &c}).Lines[0]; strings.Contains(got, "kept") { - t.Errorf("a changed file shows %q, want new colours", got) - } -} diff --git a/diff/cell_test.go b/diff/cell_test.go index 7c6188b..ca2ab4e 100644 --- a/diff/cell_test.go +++ b/diff/cell_test.go @@ -40,6 +40,7 @@ func column(t *testing.T, d *diff.Diff, i int, needle string, last bool) int { // TestCell checks the source character of a cell, with tabs, an offset, // the split layout, and a file. func TestCell(t *testing.T) { + t.Parallel() const old, new = "a\n\told_name := 1\n", "a\n\tnew_name := 1\n" u := diff.Render("x.go", old, new, diff.Options{Width: 80}) off := diff.Render("x.go", old, new, diff.Options{Width: 80, Offset: 6}) @@ -95,6 +96,7 @@ func TestCell(t *testing.T) { // TestCellMatchesScreen checks that each code cell shows the character // that Cell gives, in each layout, with wrap, and with an offset. func TestCellMatchesScreen(t *testing.T) { + t.Parallel() var words []string for i := range 30 { words = append(words, "w"+string(rune('a'+i%26))+strings.Repeat("x", i%4)) @@ -156,6 +158,7 @@ func TestCellMatchesScreen(t *testing.T) { // TestCellGraphemes checks Cell after grapheme clusters of more than one // code point, in a cut line and in a wrapped line. func TestCellGraphemes(t *testing.T) { + t.Parallel() for _, g := range []string{"❤️", "👨‍👩‍👧", "🇺🇸"} { line := strings.Repeat(g+"x ", 20) src := []rune(line) @@ -188,6 +191,7 @@ func TestCellGraphemes(t *testing.T) { // character. The content moves by the offset, so Cell agrees with the // screen. func TestCellOffsetInWideChar(t *testing.T) { + t.Parallel() const line = "日本x" for _, off := range []int{1, 3} { o := diff.Options{Width: 40, Offset: off} diff --git a/diff/comment_test.go b/diff/comment_test.go index b36aa40..795361e 100644 --- a/diff/comment_test.go +++ b/diff/comment_test.go @@ -39,6 +39,7 @@ func review(c diff.Comment) string { // TestReviewMatchesHerdr checks that Review writes the text format of // herdr-reviewr. func TestReviewMatchesHerdr(t *testing.T) { + t.Parallel() var cs diff.Comments cs.Add(comment("c.go", diff.SideNew, "ctx\n\told\x1b[31m\n", @@ -68,6 +69,7 @@ func TestReviewMatchesHerdr(t *testing.T) { // TestReviewContinuedRows checks a comment on only continued rows. func TestReviewContinuedRows(t *testing.T) { + t.Parallel() old, new := "", strings.Repeat("word ", 20)+"\n" d := diff.Render("a.go", old, new, diff.Options{Width: 30, Wrap: true}) var cont []diff.Row @@ -88,6 +90,7 @@ func TestReviewContinuedRows(t *testing.T) { // TestComments checks Add, Find, At, EndingAt, Count, and Remove. func TestComments(t *testing.T) { + t.Parallel() var cs diff.Comments d := diff.Anchor{InDiff: true} a := cs.Add(diff.Comment{Path: "a.go", Side: diff.SideNew, Start: 2, End: 4, Anchor: d}) @@ -136,6 +139,7 @@ func TestComments(t *testing.T) { // TestNewComment checks comments from the rows of a change, in the two // layouts, on each side. func TestNewComment(t *testing.T) { + t.Parallel() old := "a\nb\nc\nd\n" new := "a\nB\nC\nd\n" for _, split := range []bool{false, true} { @@ -181,6 +185,7 @@ func TestNewComment(t *testing.T) { // TestSnippetIsTheRealDiff checks that the snippet matches git diff, with raw // text and tabs, in both layouts. func TestSnippetIsTheRealDiff(t *testing.T) { + t.Parallel() old := "func a() {\n\treturn 1\n}\n" new := "func a() {\n\t// two\n\treturn 2\n}\n" want := " func a() {\n-\treturn 1\n+\t// two\n+\treturn 2\n }" @@ -216,6 +221,7 @@ func TestSnippetIsTheRealDiff(t *testing.T) { // also checks a file of an older rexdiff, which has a stale field and no // anchor. func TestCommentsJSON(t *testing.T) { + t.Parallel() var cs diff.Comments anchors := []diff.Anchor{{}, {InDiff: true}, {InDiff: true, Rev: "a..b"}} for _, a := range anchors { @@ -261,6 +267,7 @@ func TestCommentsJSON(t *testing.T) { // for example a Latin-1 file, survives a JSON round trip. The bytes that // are not UTF-8 become U+FFFD. func TestCommentsJSONLatin1(t *testing.T) { + t.Parallel() const path = "caf\xe9.txt" var cs diff.Comments c := commentOn(path, diff.SideNew, "caf\xe9 cr\xe8me\n", 1, 1) diff --git a/diff/diff_test.go b/diff/diff_test.go index 9e62a72..7e090be 100644 --- a/diff/diff_test.go +++ b/diff/diff_test.go @@ -41,6 +41,7 @@ func kinds(rows []diff.Row) string { // TestRenderRowsFollowLines checks the row of each line, in each layout and // theme. func TestRenderRowsFollowLines(t *testing.T) { + t.Parallel() const width = 80 themes := []diff.Theme{ {}, @@ -105,6 +106,7 @@ func TestRenderRowsFollowLines(t *testing.T) { // TestRenderSameContentIsEmpty checks that two equal versions give no lines. func TestRenderSameContentIsEmpty(t *testing.T) { + t.Parallel() d := diff.Render("x.go", oldSrc, oldSrc, diff.Options{Width: 80}) if len(d.Lines) != 0 || len(d.Rows) != 0 { t.Fatalf("got %d lines and %d rows, want none", len(d.Lines), len(d.Rows)) @@ -114,6 +116,7 @@ func TestRenderSameContentIsEmpty(t *testing.T) { // TestRenderTabsAndOffset checks that a tab becomes spaces and that Offset // scrolls the code. func TestRenderTabsAndOffset(t *testing.T) { + t.Parallel() d := diff.Render("x.go", "", "\tx := 1\n", diff.Options{Width: 80}) if got := ansi.Strip(d.Lines[1]); !strings.Contains(got, "▌ x := 1") { t.Errorf("tab: line = %q, want %q in it", got, "▌ x := 1") @@ -128,6 +131,7 @@ func TestRenderTabsAndOffset(t *testing.T) { // TestMarks checks the mark at the start of the code of each line, in the two // layouts. func TestMarks(t *testing.T) { + t.Parallel() const before, after = "a\nb\nc\n", "a\nB\nc\n" // By default a bar marks a changed line, as in herdr-reviewr. Signs gives // + and -. The mark takes two cells in both cases, so the columns do not @@ -215,6 +219,7 @@ func markColours(lines []string) []string { // TestSideAt checks the side of each column, and if the column is on a line // number. func TestSideAt(t *testing.T) { + t.Parallel() // The unified layout has " 1 " old numbers, " 1 " new numbers, and the // code. u := diff.Render("x.go", oldSrc, newSrc, diff.Options{Width: 80}) @@ -251,6 +256,7 @@ func TestSideAt(t *testing.T) { // TestCount checks the numbers of added and deleted lines. func TestCount(t *testing.T) { + t.Parallel() tests := []struct { old, new string added, deleted int @@ -271,6 +277,7 @@ func TestCount(t *testing.T) { // TestRenderFile checks the line numbers and the rows of a file. func TestRenderFile(t *testing.T) { + t.Parallel() src := "package x\n\nfunc f() {\n\treturn\n}\n" d := diff.RenderFile("x.go", src, diff.Options{Width: 14}) if len(d.Lines) != 5 || len(d.Rows) != 5 { @@ -296,6 +303,7 @@ func TestRenderFile(t *testing.T) { // TestWrap checks that a wrapped long line shows all of its text and fits the // width. func TestWrap(t *testing.T) { + t.Parallel() long := "x := []string{" + strings.Repeat(`"word", `, 12) + "}" old, new := "a\nb\n", "a\n"+long+"\nb\n" const width = 40 @@ -356,6 +364,7 @@ func TestWrap(t *testing.T) { // TestCache checks that a shared [diff.Cache] gives the same lines as no // cache. It tries other offsets, other languages, and new content. func TestCache(t *testing.T) { + t.Parallel() const src = "def f(): # a comment\n\treturn 1\n" renders := []struct { path, old, new string diff --git a/diff/fold_test.go b/diff/fold_test.go index 726d59c..cb9f33b 100644 --- a/diff/fold_test.go +++ b/diff/fold_test.go @@ -56,6 +56,7 @@ func headers(d *diff.Diff) string { // TestFolds checks that a long run of equal lines folds into the hunk // header below it. func TestFolds(t *testing.T) { + t.Parallel() old, new := numbered(40), numbered(40, 10, 30) header := func(o, n, lines int) []string { return []string{foldText(diff.Fold{Old: o, New: n, Lines: lines})} } lines := func(lo, hi int) []string { @@ -128,6 +129,7 @@ func TestFolds(t *testing.T) { // TestFoldEdges checks the folds that show no line. func TestFoldEdges(t *testing.T) { + t.Parallel() tests := []struct { name string old, new string diff --git a/diff/hostile_test.go b/diff/hostile_test.go index 149da81..39b343a 100644 --- a/diff/hostile_test.go +++ b/diff/hostile_test.go @@ -13,6 +13,7 @@ import ( // TestHostileContent checks the lines and the rows of each hostile file, in // all layouts. func TestHostileContent(t *testing.T) { + t.Parallel() opts := []diff.Options{ {}, {Width: 20}, @@ -40,6 +41,7 @@ func TestHostileContent(t *testing.T) { // TestEscapesAreVisible checks that an escape in a file shows as a symbol, // so that the reader sees it. func TestEscapesAreVisible(t *testing.T) { + t.Parallel() tests := []struct{ src, want string }{ {"\x1b]52;c;aGk=\x07\n", "␛]52;c;aGk=␇"}, {"\x1b]7501;state=idle\x1b\\\n", "␛]7501;state=idle␛\\"}, @@ -63,6 +65,7 @@ func TestEscapesAreVisible(t *testing.T) { // TestWrapWideText checks that wrapped CJK and emoji text fits the width // and that no character is lost. func TestWrapWideText(t *testing.T) { + t.Parallel() line := strings.Repeat("日本語😀", 10) for _, o := range []diff.Options{ {Width: 25, Wrap: true}, @@ -87,6 +90,7 @@ func TestWrapWideText(t *testing.T) { // TestTabToSpacesIsAChange checks that a diff shows a change of a tab to // spaces, as Count and git do. func TestTabToSpacesIsAChange(t *testing.T) { + t.Parallel() d := diff.Render("x.go", "\tx\n", " x\n", diff.Options{}) if got := kinds(d.Rows); got != "@-+" { t.Errorf("kinds = %q, want %q", got, "@-+") @@ -96,6 +100,7 @@ func TestTabToSpacesIsAChange(t *testing.T) { // TestRenderFileLineCount checks the number of rows for each kind of line // ending. func TestRenderFileLineCount(t *testing.T) { + t.Parallel() tests := []struct { src string rows int @@ -119,6 +124,7 @@ func TestRenderFileLineCount(t *testing.T) { // TestRenderFileNarrow checks that wide text fits a width of 1 to 7 cells. func TestRenderFileNarrow(t *testing.T) { + t.Parallel() for w := 1; w < 8; w++ { o := diff.Options{Width: w, Wrap: true} checkLines(t, diff.RenderFile("x.txt", "日本\n 0000\n", o), o) @@ -128,6 +134,7 @@ func TestRenderFileNarrow(t *testing.T) { // TestReviewHostileComment checks that Review quotes a hostile path and // removes the control characters from the code and the text. func TestReviewHostileComment(t *testing.T) { + t.Parallel() c := comment("a\x1b]52;c;aGk=\x07.go", diff.SideNew, "", "x\x1b[2J\n", @@ -142,6 +149,7 @@ func TestReviewHostileComment(t *testing.T) { // TestBlackTint checks that an equal line with the text of a deleted line has // no background when the tint of deleted lines is black. func TestBlackTint(t *testing.T) { + t.Parallel() black := color.RGBA{A: 255} th := diff.Theme{Background: black, Foreground: color.White, Red: black} d := diff.Render("a.txt", "x\ny\nx\n", "y\nx\n", diff.Options{Theme: th}) diff --git a/internal/diffview/cache_test.go b/internal/diffview/cache_test.go index 2a24eb4..81768a8 100644 --- a/internal/diffview/cache_test.go +++ b/internal/diffview/cache_test.go @@ -10,6 +10,7 @@ import ( // TestCacheShared checks that a View uses the lines that another View puts // in the same Cache. func TestCacheShared(t *testing.T) { + t.Parallel() render := func(c *Cache) string { out, _, _ := New().Cache(c).Before("a.go", "x := 1\n").After("a.go", "x := 2\n").Render() return out @@ -33,6 +34,7 @@ func TestCacheShared(t *testing.T) { // TestCacheLimit checks that a full Cache empties, so that its memory stays // small. func TestCacheLimit(t *testing.T) { + t.Parallel() var c Cache line := strings.Repeat("x", 1<<20) for i := range maxCacheSize >> 20 { @@ -49,6 +51,7 @@ func TestCacheLimit(t *testing.T) { // TestCacheNil checks that a View with a nil Cache renders. func TestCacheNil(t *testing.T) { + t.Parallel() if out, _, _ := New().Cache(nil).Before("a.go", "x\n").After("a.go", "y\n").Render(); out == "" { t.Error(`Render with a nil Cache = "", want lines`) } @@ -57,6 +60,7 @@ func TestCacheNil(t *testing.T) { // TestCacheLexer checks that a View uses the last lexer of the Cache for // the same file. It selects a new lexer for a changed file. func TestCacheLexer(t *testing.T) { + t.Parallel() c := &Cache{} lexer := func(content string) string { v := New().Cache(c).Before("a.zzq", content) diff --git a/internal/diffview/util_test.go b/internal/diffview/util_test.go deleted file mode 100644 index 9ac8608..0000000 --- a/internal/diffview/util_test.go +++ /dev/null @@ -1,23 +0,0 @@ -package diffview - -import "testing" - -func TestCutLeft(t *testing.T) { - tests := []struct { - s string - n int - want string - }{ - {"日本x", 0, "日本x"}, - {"日本x", 1, " 本x"}, - {"日本x", 2, "本x"}, - {"日本x", 3, " x"}, - {"日本x", 9, ""}, - {"\x1b[31m日本\x1b[m", 1, " \x1b[31m本\x1b[m"}, - } - for _, tt := range tests { - if got := CutLeft(tt.s, tt.n); got != tt.want { - t.Errorf("CutLeft(%q, %d) = %q, want %q", tt.s, tt.n, got, tt.want) - } - } -} diff --git a/internal/editor/editor_test.go b/internal/editor/editor_test.go index fc095bc..8689736 100644 --- a/internal/editor/editor_test.go +++ b/internal/editor/editor_test.go @@ -8,6 +8,7 @@ import ( // TestCommands checks the command and the kind of each editor. func TestCommands(t *testing.T) { + t.Parallel() const abs = "/r/a b.go" tests := []struct { template, editor string @@ -50,6 +51,7 @@ func TestCommands(t *testing.T) { // TestCommandProgram checks the program of a command. An empty word in // quotes names no program. func TestCommandProgram(t *testing.T) { + t.Parallel() tests := []struct{ command, want string }{ {"nvim", "nvim"}, {" /usr/bin/vim -u NONE", "/usr/bin/vim"}, @@ -75,6 +77,7 @@ func TestCommandProgram(t *testing.T) { // TestResolveOrder checks that the settings come first, then $VISUAL, // $EDITOR, and core.editor. A blank value does not count. func TestResolveOrder(t *testing.T) { + t.Parallel() tests := []struct { template, visual, env, git string want string diff --git a/internal/search/match_test.go b/internal/search/match_test.go index 6948c04..812267d 100644 --- a/internal/search/match_test.go +++ b/internal/search/match_test.go @@ -4,6 +4,7 @@ import "testing" // TestMatch checks the smart case of herdr-reviewr. func TestMatch(t *testing.T) { + t.Parallel() tests := []struct { text, query string want bool diff --git a/internal/search/search_test.go b/internal/search/search_test.go index 2151b68..2314856 100644 --- a/internal/search/search_test.go +++ b/internal/search/search_test.go @@ -8,6 +8,7 @@ import ( // TestFiles checks the order and the limit of the files. func TestFiles(t *testing.T) { + t.Parallel() paths := []string{"a.go", "b.go", "c/d.go", "main.go"} tests := []struct { name, q string @@ -26,6 +27,7 @@ func TestFiles(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + t.Parallel() got, total := Files(paths, tt.recent, tt.q, tt.limit) if !slices.Equal(got, tt.want) || total != tt.wantTotal { t.Errorf("Files(%q, %q) = %q, %d; want %q, %d", @@ -38,6 +40,7 @@ func TestFiles(t *testing.T) { // TestFilesLimit checks that a query shows at most the limit, and counts // all the matches. func TestFilesLimit(t *testing.T) { + t.Parallel() var paths []string for i := range 60 { paths = append(paths, fmt.Sprintf("f%02d.txt", i)) diff --git a/internal/termtext/termtext_test.go b/internal/termtext/termtext_test.go index e37ddd3..f37a192 100644 --- a/internal/termtext/termtext_test.go +++ b/internal/termtext/termtext_test.go @@ -11,6 +11,7 @@ import ( // TestQuote checks that Quote quotes only the paths that are not safe. func TestQuote(t *testing.T) { + t.Parallel() tests := []struct{ in, want string }{ {"a.go", "a.go"}, {"日本.go", "日本.go"}, diff --git a/internal/tree/tree_test.go b/internal/tree/tree_test.go index 7279555..af91c11 100644 --- a/internal/tree/tree_test.go +++ b/internal/tree/tree_test.go @@ -40,6 +40,7 @@ func set(paths ...string) map[string]bool { } func TestBuildShape(t *testing.T) { + t.Parallel() tests := []struct { name string entries []Entry @@ -86,6 +87,7 @@ func TestBuildShape(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + t.Parallel() got := shape(Build(tt.entries, tt.toggled, tt.expanded)) if !slices.Equal(got, tt.want) { t.Errorf("Build = %q, want %q", got, tt.want) @@ -95,6 +97,7 @@ func TestBuildShape(t *testing.T) { } func TestBuildFileIndex(t *testing.T) { + t.Parallel() rows := Build(changed("z.rs", "a.rs"), nil, true) // The rows are in alphabetical order, so a.rs is first. if rows[0].File != 1 || rows[1].File != 0 { @@ -106,6 +109,7 @@ func TestBuildFileIndex(t *testing.T) { } func TestBuildChangeMark(t *testing.T) { + t.Parallel() es := append(changed("src/ui.rs"), Entry{Path: "src/app.rs"}, Entry{Path: "docs/a.md"}, Entry{Path: "docs/b.md"}) rows := Build(es, nil, false) @@ -146,6 +150,7 @@ func TestBuildChangeMark(t *testing.T) { } func TestBuildIgnored(t *testing.T) { + t.Parallel() rows := Build([]Entry{{Path: "target", Ignored: true, Dir: true}}, nil, false) if len(rows) != 1 { t.Fatalf("Build = %q, want one row", shape(rows)) diff --git a/internal/turn/turn_test.go b/internal/turn/turn_test.go index 76f2f71..2b5e7b6 100644 --- a/internal/turn/turn_test.go +++ b/internal/turn/turn_test.go @@ -10,6 +10,7 @@ import ( // TestFold checks how the states of the agents fold into one state. func TestFold(t *testing.T) { + t.Parallel() tests := []struct { name string states []rex.State @@ -51,6 +52,7 @@ func run(t *testing.T, steps ...step) { } func TestEmptyRepoStartsOnFirstWorker(t *testing.T) { + t.Parallel() var tr Tracker tr.Observe() if started, _ := tr.Observe(rex.StateWorking); !started { @@ -59,11 +61,13 @@ func TestEmptyRepoStartsOnFirstWorker(t *testing.T) { } func TestStartAfterRest(t *testing.T) { + t.Parallel() // The first state never starts a turn. run(t, step{resting, false, false}, step{working, true, false}) } func TestHeldBackToWorkContinues(t *testing.T) { + t.Parallel() // A prompt in the middle of a turn does not start another turn. run(t, step{resting, false, false}, @@ -74,6 +78,7 @@ func TestHeldBackToWorkContinues(t *testing.T) { } func TestEndOnlyAfterWork(t *testing.T) { + t.Parallel() run(t, step{resting, false, false}, // no work before, so no end step{working, true, false}, // a start is never an end @@ -84,6 +89,7 @@ func TestEndOnlyAfterWork(t *testing.T) { } func TestEndThroughHeld(t *testing.T) { + t.Parallel() // The prompt keeps the turn open. A rest after it ends the turn once. run(t, step{resting, false, false}, @@ -95,11 +101,13 @@ func TestEndThroughHeld(t *testing.T) { } func TestLoneFirstWorkingStartsNothing(t *testing.T) { + t.Parallel() // The start of this turn is not seen. run(t, step{working, false, false}) } func TestGap(t *testing.T) { + t.Parallel() var tr Tracker tr.Observe(rex.StateIdle) tr.Gap() diff --git a/tui/box_test.go b/tui/box_test.go deleted file mode 100644 index b46aa81..0000000 --- a/tui/box_test.go +++ /dev/null @@ -1,88 +0,0 @@ -package tui - -import ( - "slices" - "testing" - - tea "charm.land/bubbletea/v2" - "charm.land/lipgloss/v2" - - "github.com/rednafi/rexdiff/diff" - "github.com/rednafi/rexdiff/internal/testgit" -) - -// boxShows reports whether the comment box of m shows in the main pane. -func boxShows(m model) bool { - p, h := m.cur(), m.mainHeight() - _, rowAt := m.mainLines(h, nil) - i := slices.Index(rowAt, p.end(p.cur)) - return m.mode == modeComment && i >= 0 && i+1+lipgloss.Height(m.editor.View()) <= h -} - -// longFileModel returns a test model that shows long.go in the Files tab. -func longFileModel(t *testing.T) model { - t.Helper() - m, dir := newTestModel(t) - longFile(t, dir) - m = press(t, m, "2") - m.reloadFiles() - m.jumpToFile("long.go", diff.SideNew, 1) - if m.viewer.path != "long.go" { - t.Fatalf("the Files tab shows %q, want long.go", m.viewer.path) - } - return m -} - -// TestEditorWidth checks that the width of the comment box follows the -// width of the main pane. -func TestEditorWidth(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "z", "]", "c") - want := m.editor - want.SetWidth(max(m.mainWidth()-8, 20)) - if m.editor.Width() != want.Width() { - t.Errorf("box width %d with a hidden list, want %d", m.editor.Width(), want.Width()) - } -} - -// TestGutterClickShowsBox checks that a click on the line numbers of the -// last row on the screen scrolls the comment box into view. -func TestGutterClickShowsBox(t *testing.T) { - t.Parallel() - m := longFileModel(t) - y := m.mainY() + m.mainHeight() - 1 - m = step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: m.mainX() + gutter, Y: y}) - m = step(t, m, tea.MouseReleaseMsg{Button: tea.MouseLeft, X: m.mainX() + gutter, Y: y}) - if !boxShows(m) { - t.Errorf("after a click on the last row, mode %v, view:\n%s\nwant the box", m.mode, view(m)) - } -} - -// TestTypingShowsBox checks that a key in the comment box scrolls the box -// into view. -func TestTypingShowsBox(t *testing.T) { - t.Parallel() - m := longFileModel(t) - m = press(t, m, ":", "8", "0", "enter", "c") - m.viewer.top = 0 - if m = press(t, m, "x"); !boxShows(m) { - t.Errorf("after a key in the box, view:\n%s\nwant the box", view(m)) - } -} - -// TestListEditNeedsLine checks that e in the comment list opens no box if -// the pane does not show the line of the comment. Here the file of the -// comment leaves the changes, so the jump shows it in the Files tab. -func TestListEditNeedsLine(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - m = press(t, m, "]", "c", "h", "i", "enter") - testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") - m.reload() - m.status = "" - if m = press(t, m, "l", "e"); m.mode == modeComment || m.status == "" { - t.Errorf("e on a comment whose line is gone: mode %v, status %q; want no box, a flash", - m.mode, m.status) - } -} diff --git a/tui/layout_test.go b/tui/layout_test.go deleted file mode 100644 index 5956cdf..0000000 --- a/tui/layout_test.go +++ /dev/null @@ -1,73 +0,0 @@ -package tui - -import ( - "strings" - "testing" - - tea "charm.land/bubbletea/v2" - - "github.com/rednafi/rexdiff/diff" - "github.com/rednafi/rexdiff/internal/testgit" -) - -// TestTinyStackedList checks that a body of 3 rows with the list below -// fits the screen, and that the list then takes no clicks. -func TestTinyStackedList(t *testing.T) { - t.Parallel() - for _, pos := range []position{positionBottom, positionTop} { - m, _ := newTestModel(t) - m.listPos = pos - m = step(t, m, tea.WindowSizeMsg{Width: 120, Height: 6}) - if h := m.bodyHeight(); h != 3 { - t.Fatalf("%s: body height %d, want 3", pos, h) - } - lines := strings.Split(view(m), "\n") - if last := lines[len(lines)-1]; !strings.Contains(last, "comment") { - t.Errorf("%s: the last line is %q, want the footer", pos, last) - } - m = step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: 5, Y: m.mainY() + 1}) - if m.focusList { - t.Errorf("%s: a click on the main pane gives the focus to the list", pos) - } - } -} - -// TestListDefaultWidth checks that the file list at a side takes 32% of -// the width if file_list_width is not set, as in herdr-reviewr. -func TestListDefaultWidth(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - if got := m.sideWidth(); got != 120*32/100 { - t.Errorf("120 columns: list width %d, want %d", got, 120*32/100) - } - if m = step(t, m, tea.WindowSizeMsg{Width: 200, Height: 40}); m.sideWidth() != 64 { - t.Errorf("200 columns: list width %d, want 64", m.sideWidth()) - } - cfg, err := parseConfig(`{"file_list_width": 40}`) - if err != nil { - t.Fatal(err) - } - m = newModel(t.Context(), Options{Repo: m.repo}, cfg) - if got := m.sideWidth(); got != 40 { - t.Errorf("file_list_width 40: list width %d, want 40", got) - } -} - -// TestMarkdownNotRerendered checks that a tick does not render the -// markdown of the Files tab again if the file does not change. -func TestMarkdownNotRerendered(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - testgit.WriteFile(t, dir, "notes.md", "# Title\n\nSome text.\n") - m = press(t, m, "2") - m.reloadFiles() - m.jumpToFile("notes.md", diff.SideNew, 1) - m = press(t, m, "m") - if !m.rendered || len(m.viewer.lines) == 0 { - t.Fatal("m: no rendered markdown") - } - m.viewer.lines[0] = "sentinel" - if m = step(t, m, tickMsg{}); m.viewer.lines[0] != "sentinel" { - t.Error("a tick with no change renders the markdown again") - } -} diff --git a/tui/quit_test.go b/tui/quit_test.go index a84c93c..1e251ce 100644 --- a/tui/quit_test.go +++ b/tui/quit_test.go @@ -77,22 +77,6 @@ func TestQuitPromptSendCopy(t *testing.T) { } } -// TestNoCtrlCHomeEnd checks that ctrl+c, home, and end do nothing, as in -// herdr-reviewr. -func TestNoCtrlCHomeEnd(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - if _, cmd := m.Update(tea.KeyPressMsg{Code: 'c', Mod: tea.ModCtrl}); quits(cmd) { - t.Error("ctrl+c: a quit, want nothing") - } - m = press(t, m, "j") - cur := m.changes.cur - if m = press(t, m, "home", "end"); m.changes.cur != cur { - t.Errorf("home and end: the cursor moves from %d to %d, want no move", - cur, m.changes.cur) - } -} - // TestQuitDiscardInert checks that Q does nothing outside the prompt // before a quit, as in herdr-reviewr. func TestQuitDiscardInert(t *testing.T) { diff --git a/tui/release_test.go b/tui/release_test.go index 5d09a48..9b25c4f 100644 --- a/tui/release_test.go +++ b/tui/release_test.go @@ -186,29 +186,6 @@ func TestNoUpdate(t *testing.T) { } } -// TestCommentsJSON checks that the comments give the same review after -// JSON encoding and decoding. -func TestCommentsJSON(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "j", "j", "j", "j", "c", "x", "enter") - b, err := m.comments.MarshalJSON() - if err != nil { - t.Fatal(err) - } - var back diff.Comments - if err := back.UnmarshalJSON(b); err != nil { - t.Fatal(err) - } - if back.Review("p") != m.comments.Review("p") || back.Len() != 1 { - t.Errorf("review after JSON = %q, want %q", back.Review("p"), m.comments.Review("p")) - } - // After the restart, a new comment also gets a new ID. - if c := back.Add(diff.Comment{Path: "a.go", Start: 1, End: 1}); c.ID != 2 { - t.Errorf("ID of a new comment = %d, want 2", c.ID) - } -} - // TestRestartWaits checks that the restart waits for a running send and for // a message whose command is not done. func TestRestartWaits(t *testing.T) { diff --git a/tui/run_test.go b/tui/run_test.go deleted file mode 100644 index 19cbb73..0000000 --- a/tui/run_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package tui - -import ( - "errors" - "io/fs" - "os" - "path/filepath" - "slices" - "strings" - "testing" -) - -// TestStartBadResume checks that a state file that Run cannot read shows -// why in the footer, and that the changes still load. -func TestStartBadResume(t *testing.T) { - t.Parallel() - tests := []struct{ name, content, want string }{ - {"not JSON", "{oops", "cannot read the comments from before the update: "}, - {"missing", "", "cannot read the comments from before the update: open "}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - path := filepath.Join(t.TempDir(), "state.json") - if tt.content != "" { - if err := os.WriteFile(path, []byte(tt.content), 0o600); err != nil { - t.Fatal(err) - } - } - m = startModel(t.Context(), Options{Repo: m.repo, Resume: path}, defaultConfig()) - if !strings.HasPrefix(m.status, tt.want) { - t.Errorf("status %q, want %q", m.status, tt.want+"…") - } - if got := paths(m); !slices.Equal(got, []string{"a.go"}) { - t.Errorf("files %v, want [a.go]", got) - } - if _, err := os.Stat(path); !errors.Is(err, fs.ErrNotExist) { - t.Errorf("stat the state file: %v, want it removed", err) - } - }) - } -} diff --git a/tui/state_test.go b/tui/state_test.go deleted file mode 100644 index edc0e0d..0000000 --- a/tui/state_test.go +++ /dev/null @@ -1,93 +0,0 @@ -package tui - -import ( - "fmt" - "testing" - - tea "charm.land/bubbletea/v2" - "github.com/rednafi/rexdiff/internal/testgit" -) - -// TestGrepKeepsFileCursor checks that the end of a code search does not -// move the cursor of the file matches. -func TestGrepKeepsFileCursor(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "/") - m, cmd := typeQuery(t, m, "go") - m.overlay.down() - if m.overlay.cur != 1 { - t.Fatalf("cursor %d after a move, want 1", m.overlay.cur) - } - if m = step(t, m, findGrep(cmd())); m.overlay.cur != 1 { - t.Errorf("after the code search: cursor %d, want 1", m.overlay.cur) - } -} - -// TestClickDisarms checks that a click or a pick of a file drops an armed -// crossing. -func TestClickDisarms(t *testing.T) { - t.Parallel() - m := press(t, twoFiles(t), "]") - if m.armed != 1 { - t.Fatalf("armed %d, want 1", m.armed) - } - if m = step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: m.mainX() + 5, Y: m.mainY()}); m.armed != 0 { - t.Errorf("after a click: armed %d, want 0", m.armed) - } - m.armed = 1 - if m.pickFile(1); m.armed != 0 { - t.Errorf("after a pick: armed %d, want 0", m.armed) - } -} - -// TestFocusShowsList checks that tab shows a hidden file list and gives it -// the focus, as in herdr-reviewr. -func TestFocusShowsList(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "z") - if m = step(t, m, tabKey); m.listHidden || !m.focusList { - t.Errorf("tab with a hidden list: hidden %v, focus %v; want shown, focused", - m.listHidden, m.focusList) - } -} - -// TestOverlayClickAboveRows checks that a click above the rows that show -// picks no row. -func TestOverlayClickAboveRows(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - for i := range 12 { - testgit.Git(t, dir, "branch", fmt.Sprintf("b%02d", i)) - } - m = step(t, m, tea.WindowSizeMsg{Width: 120, Height: 16}) - m = press(t, m, "B") - for range 10 { - m.overlay.down() - } - _, _, y, _ := m.overlayBox() - cur := m.overlay.cur - title := tea.MouseClickMsg{Button: tea.MouseLeft, X: m.w / 2, Y: y + 1} - m = step(t, m, title) - if m.overlay == nil { - t.Fatal("a click on the title closes the overlay") - } - if m.overlay.cur != cur { - t.Errorf("a click on the title: cursor %d, want %d", m.overlay.cur, cur) - } -} - -// TestScopeClearsSelection checks that a change of the scope clears the -// selection and the armed crossing. -func TestScopeClearsSelection(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "]", "v") - m.armed = 1 - m.setScope(ScopeBranch) - if m.changes.anchor != -1 || m.armed != 0 || m.changes.cur != 0 { - t.Errorf("after a change of the scope: anchor %d, armed %d, cursor %d; want -1, 0, 0", - m.changes.anchor, m.armed, m.changes.cur) - } -} diff --git a/update/update_test.go b/update/update_test.go index b583bc7..3927c00 100644 --- a/update/update_test.go +++ b/update/update_test.go @@ -21,6 +21,7 @@ import ( // TestNewer checks which tags are newer than the running version. func TestNewer(t *testing.T) { + t.Parallel() tests := []struct { tag, have string want bool @@ -62,6 +63,7 @@ func file(t *testing.T, path, content string) string { // TestDetect checks that detect finds a Homebrew cask by the Caskroom of // its link, and go install by its flag. func TestDetect(t *testing.T) { + t.Parallel() dir := t.TempDir() cask := file(t, filepath.Join(dir, "Caskroom", "rexdiff", "0.1.0", "rexdiff"), "") link := filepath.Join(dir, "bin", "rexdiff") @@ -100,6 +102,7 @@ func TestDetect(t *testing.T) { // TestLatest checks Latest against a fake GitHub API. func TestLatest(t *testing.T) { + t.Parallel() answer := func(code int, body string) *Updater { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { w.WriteHeader(code) @@ -144,6 +147,7 @@ func (f *fakeRun) run(_ context.Context, env []string, name string, args ...stri // TestInstallCommands checks the commands of Homebrew and go install, and // the check of the new version. func TestInstallCommands(t *testing.T) { + t.Parallel() r := Release{Tag: "v0.2.0"} brew := &fakeRun{version: "v0.2.0"} u := &Updater{bin: "/opt/homebrew/bin/rexdiff", version: "v0.1.0", method: methodBrew, run: brew.run} @@ -219,6 +223,7 @@ func archive(t *testing.T, content string) []byte { // TestDownload checks the download of a release: the checksum, the binary // in the archive, and the replacement of the target file of a link. func TestDownload(t *testing.T) { + t.Parallel() name := fmt.Sprintf("rexdiff-v0.2.0-%s-%s.tar.gz", runtime.GOOS, runtime.GOARCH) good := archive(t, "new binary") sum := sha256.Sum256(good) @@ -308,6 +313,7 @@ func TestDownload(t *testing.T) { // program does not stop a brew that runs. A stopped brew can leave a broken // cask. func TestInstallOutlivesCancel(t *testing.T) { + t.Parallel() ctx, cancel := context.WithCancel(t.Context()) var sawCancel bool run := func(ctx context.Context, _ []string, name string, _ ...string) ([]byte, error) { @@ -328,6 +334,7 @@ func TestInstallOutlivesCancel(t *testing.T) { // TestBinaryTooLarge checks that a binary larger than the limit is an // error, not a binary that is cut short. func TestBinaryTooLarge(t *testing.T) { + t.Parallel() big := strings.Repeat("x", maxBinary+1) if _, err := binaryOf(archive(t, big)); err == nil || !strings.Contains(err.Error(), "larger than") { t.Errorf("binaryOf of a binary over the limit: %v, want an error", @@ -385,6 +392,7 @@ func TestDetectBrew(t *testing.T) { // TestErrorWithoutOutput checks that a command that fails with no output // has no empty part at the end of its error. func TestErrorWithoutOutput(t *testing.T) { + t.Parallel() u := &Updater{run: func(context.Context, []string, string, ...string) ([]byte, error) { return nil, errors.New(`exec: "brew": executable file not found in $PATH`) }} From 62aad8330817e5c137a886fdb8bf7da69b07547a Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 20:19:53 +0100 Subject: [PATCH 045/119] fix: bugs from the second review - A search cut at the deadline drops the cut record. - A failed reload over "no changes" shows the error. - The Files tab sees an edit of the target of a linked open file. - Test git reads no ignore or attributes file from HOME. - CI cancels an earlier run only on a pull request. --- .github/workflows/ci.yml | 4 ++-- internal/testgit/testgit.go | 7 +++++-- tui/model.go | 7 ++++--- tui/reload_test.go | 13 ++++++++++--- tui/tree.go | 10 +++++----- tui/tree_test.go | 18 +++++++++--------- tui/tui_test.go | 2 +- vcs/hostile_test.go | 4 ++-- vcs/refs.go | 12 ++++++++++-- vcs/watch.go | 27 ++++++++++++++------------- vcs/watch_test.go | 9 +++++++++ 11 files changed, 71 insertions(+), 42 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f43a712..8694376 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,10 +11,10 @@ on: permissions: contents: read -# A new run of the same event and ref cancels the run before it. +# On a pull request, a new run cancels the run before it. concurrency: group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} - cancel-in-progress: true + cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: # Rex runs only on macOS, so rexdiff is tested there. diff --git a/internal/testgit/testgit.go b/internal/testgit/testgit.go index cab92ec..d69d088 100644 --- a/internal/testgit/testgit.go +++ b/internal/testgit/testgit.go @@ -21,14 +21,17 @@ var root string // Git reads no global or system config, so no hooksPath, signing, // fsmonitor, or diff setting applies. A new repository gets no hooks from // a template. The variables that point git to another repository, or that -// add config, are unset. The commits have a fixed author. +// add config, are unset. HOME and XDG_CONFIG_HOME are a new directory, so +// no ignore or attributes file of the user applies. The commits have a +// fixed author. func Main(m *testing.M) { dir, err := os.MkdirTemp("", "testgit") if err != nil { panic(err) } defer func() { _ = os.RemoveAll(dir) }() - for _, kv := range Env() { + env := append(Env(), "HOME="+dir, "XDG_CONFIG_HOME="+dir) + for _, kv := range env { k, v, _ := strings.Cut(kv, "=") if err := os.Setenv(k, v); err != nil { panic(err) diff --git a/tui/model.go b/tui/model.go index eea6f49..be550a0 100644 --- a/tui/model.go +++ b/tui/model.go @@ -498,7 +498,7 @@ func (m *model) loadChanges(force bool) { if err == nil && note == "" && same { return } - if err != nil && m.shownTrees != "" { + if err != nil && len(m.files) > 0 { m.flash("refresh failed: " + err.Error()) return } @@ -585,7 +585,8 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { if m.phase != phaseInstalled { return m, cmd } - // A tick only starts the next tick, so it is no work. + // The work of a tick runs again in the new process, so it is not + // pending work. pending := cmd if _, ok := msg.(tickMsg); ok { pending = nil @@ -832,7 +833,7 @@ func (m *model) changed() vcs.Change { m.polled = now return all } - m.watch.Show(m.shownIgnored()) + m.watch.Show(m.shownPaths()) ch, err := m.watch.Changed(m.ctx) m.log.Debug("watch", "took", m.now().Sub(now), "files", ch.Files, "refs", ch.Refs) if err != nil { diff --git a/tui/reload_test.go b/tui/reload_test.go index c2ee243..07e2c87 100644 --- a/tui/reload_test.go +++ b/tui/reload_test.go @@ -44,11 +44,18 @@ func TestReloadErrorKeepsFiles(t *testing.T) { } } -// TestReloadErrorNote checks that a failed first load shows the error in -// place of the files. +// TestReloadErrorNote checks that a failed load shows the error in place +// of the files when no files show. func TestReloadErrorNote(t *testing.T) { - m, _ := newTestModel(t) + m, dir := newTestModel(t) + testgit.Git(t, dir, "commit", "-qam", "all") + if m = press(t, m, "r"); len(m.files) != 0 { + t.Fatalf("after a commit of all changes: %d files, want none", len(m.files)) + } noGit(t) + if m = press(t, m, "r"); m.changes.note == "" || m.changes.note == "no changes" { + t.Errorf("a failed reload over no changes: note %q, want the error", m.changes.note) + } m = press(t, m, "b") // another scope has nothing loaded if m.files != nil || m.changes.note == "" { t.Errorf("a failed first load: %d files, note %q; want none, the error", len(m.files), m.changes.note) diff --git a/tui/tree.go b/tui/tree.go index bf02154..e307855 100644 --- a/tui/tree.go +++ b/tui/tree.go @@ -190,10 +190,10 @@ func (m *model) withIgnored(es []vcs.Entry) []vcs.Entry { return es } -// shownIgnored returns the ignored paths that the Files tab shows, when -// that tab shows. They are the directories that the user expands and the -// open file. The watcher reports their changes, as in herdr-reviewr. -func (m *model) shownIgnored() []string { +// shownPaths returns the paths for Watcher.Show when the Files tab +// shows: the ignored directories that the user expands and the open file. +// The watcher reports their changes, as in herdr-reviewr. +func (m *model) shownPaths() []string { if m.tab != tabFiles { return nil } @@ -204,7 +204,7 @@ func (m *model) shownIgnored() []string { } } if m.allSel < len(m.allFiles) { - if e := m.allFiles[m.allSel]; e.Ignored && !strings.HasSuffix(e.Path, "/") { + if e := m.allFiles[m.allSel]; !strings.HasSuffix(e.Path, "/") { paths = append(paths, e.Path) } } diff --git a/tui/tree_test.go b/tui/tree_test.go index 0dff82c..78d019d 100644 --- a/tui/tree_test.go +++ b/tui/tree_test.go @@ -186,21 +186,21 @@ func listLine(m model, text string) string { return "" } -// TestShownIgnored checks that the watcher gets the expanded ignored -// directories of the Files tab, as in herdr-reviewr. -func TestShownIgnored(t *testing.T) { +// TestShownPaths checks that the watcher gets the expanded ignored +// directories and the open file of the Files tab, as in herdr-reviewr. +func TestShownPaths(t *testing.T) { t.Parallel() m, _ := newTreeModel(t) m = press(t, m, "2") - if got := m.shownIgnored(); len(got) != 0 { - t.Errorf("collapsed: %q, want none", got) + if got := m.shownPaths(); !slices.Equal(got, []string{".gitignore"}) { + t.Errorf("collapsed: %q, want the open file", got) } m.fileTree.cur = 0 m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) // expand out - if got := m.shownIgnored(); !slices.Equal(got, []string{"out"}) { - t.Errorf("out expanded: %q, want [out]", got) + if got := m.shownPaths(); !slices.Equal(got, []string{"out", ".gitignore"}) { + t.Errorf("out expanded: %q, want out and the open file", got) } - if m = press(t, m, "1"); len(m.shownIgnored()) != 0 { - t.Errorf("in the Changes tab: %q, want none", m.shownIgnored()) + if m = press(t, m, "1"); len(m.shownPaths()) != 0 { + t.Errorf("in the Changes tab: %q, want none", m.shownPaths()) } } diff --git a/tui/tui_test.go b/tui/tui_test.go index 5065f3f..8b505de 100644 --- a/tui/tui_test.go +++ b/tui/tui_test.go @@ -482,7 +482,7 @@ func TestMissingHead(t *testing.T) { !strings.Contains(m.status, "unknown revision HEAD") { t.Errorf("files %v, status %q; want [a.go] and the error", got, m.status) } - m.shownTrees = "" // nothing shows + m.files = nil // nothing shows m.reload() if v := view(m); len(m.files) > 0 || !strings.Contains(v, "unknown revision HEAD") { t.Errorf("files %v, want none and the error:\n%s", paths(m), v) diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index d9e517c..602b012 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -387,8 +387,8 @@ func TestPullRequestBadJSON(t *testing.T) { func TestGrepDeadline(t *testing.T) { r, _ := newRepo(t) bin := t.TempDir() - // The fake git prints one match, then hangs. - testgit.Script(t, bin, "git", "printf 'a.go\\0001\\000hit\\n'\nexec /bin/sleep 10\n") + // The fake git prints one match and a cut record, then hangs. + testgit.Script(t, bin, "git", "printf 'a.go\\0001\\000hit\\nb.go\\00012'\nexec /bin/sleep 10\n") t.Setenv("PATH", bin) ctx, cancel := context.WithTimeout(t.Context(), 300*time.Millisecond) diff --git a/vcs/refs.go b/vcs/refs.go index 73f2018..6db8d58 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -258,8 +258,16 @@ func readMatches(r *bufio.Reader, limit int) (ms []Match, more bool) { if err != nil { return ms, false } - num, _ := r.ReadString(0) - text, _ := r.ReadString('\n') + // A cut at the deadline can end the output in a record. Such a + // record is not a match. + num, err := r.ReadString(0) + if err != nil { + return ms, true + } + text, err := r.ReadString('\n') + if err != nil { + return ms, true + } n, _ := strconv.Atoi(strings.TrimSuffix(num, "\x00")) ms = append(ms, Match{ Path: strings.TrimSuffix(path, "\x00"), diff --git a/vcs/watch.go b/vcs/watch.go index 50810c0..77d2dd2 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -2,6 +2,7 @@ package vcs import ( "context" + "io/fs" "os" "path/filepath" "slices" @@ -63,11 +64,11 @@ func (r *Repo) Watch(ctx context.Context) (*Watcher, error) { // A clock that does not move turns off the pause. func (w *Watcher) SetClock(now func() time.Time) { w.now = now } -// Show sets the ignored paths that show: the directories that the user -// expands and the open file. paths are relative to the root. Git does not -// list ignored paths, thus Changed also reports an edit of a shown file, -// and a file that a shown directory gets or loses. A new set reports no -// change. +// Show sets the paths that show and that git does not list: the ignored +// directories that the user expands, and the open file, which can be +// ignored or a link. paths are relative to the root. Changed also reports +// an edit of a shown file or of the target of a shown link, and a file that +// a shown directory gets or loses. A new set reports no change. func (w *Watcher) Show(paths []string) { abs := make([]string, len(paths)) for i, p := range paths { @@ -256,12 +257,12 @@ func (w *Watcher) sumIndex() uint64 { } // sumPaths returns the sum of the path, the size, the modification time, -// the mode, and the inode of each file. It does not follow a symbolic -// link. +// the mode, and the inode of each file. It follows a symbolic link, so an +// edit of the target changes the sum. func sumPaths(paths []string) uint64 { s := newSum() for _, p := range paths { - s.stat(p) + s.stat(p, os.Stat) } return uint64(s) } @@ -272,7 +273,7 @@ func sumPaths(paths []string) uint64 { func sumFiles(paths []string) uint64 { s := newSum() for _, p := range paths { - if s.stat(p) { + if s.stat(p, os.Lstat) { s.nested(p) } } @@ -307,11 +308,11 @@ func (s *sum) int(v int64) { s.num(uint64(v)) //nolint:gosec // a hash keeps all bits, so a wrap is fine } -// stat adds the path and the file status of p. A missing file adds a -// marker. stat reports whether p is a directory. -func (s *sum) stat(p string) (isDir bool) { +// stat adds the path and the file status that stat gives for p. A missing +// file adds a marker. stat reports whether p is a directory. +func (s *sum) stat(p string, stat func(string) (fs.FileInfo, error)) (isDir bool) { s.str(p) - fi, err := os.Lstat(p) + fi, err := stat(p) if err != nil { s.num(0) return false diff --git a/vcs/watch_test.go b/vcs/watch_test.go index 6dceb97..40bf108 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -170,6 +170,15 @@ func TestWatcherShown(t *testing.T) { if got := changed(t, w); !got.Files { t.Errorf("an edit of a shown file: %+v, want Files", got) } + if err := os.Symlink("ignored.txt", filepath.Join(dir, "link")); err != nil { + t.Fatal(err) + } + w.Show([]string{"link"}) + changed(t, w) + testgit.WriteFile(t, dir, "ignored.txt", "one more edit\n") + if got := changed(t, w); !got.Files { + t.Errorf("an edit of the target of a shown link: %+v, want Files", got) + } } // TestWatcherNested checks that a commit in a nested repository or in a From f0259bdf1fcb38a4a670ddb3ca5cc0b8b464a40f Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 20:23:19 +0100 Subject: [PATCH 046/119] refactor: share the retry wait, keep work between reloads, and cache - A reload keeps the line counts and the old hash of a file that does not change. The hash names the folds, so a render does not hash. - find keeps the split lines of the shown file. - One retryTimer holds the waits of the reload, the watcher, and the agent list. One fileNote gives the notes of a file that does not show. - The model keeps the last markdown renderer. - Open resolves the links of the root once. - diffview has one tab width, and diff sets the style in Render. --- diff/cell.go | 4 +- diff/diff.go | 7 +-- diff/file.go | 3 +- diff/theme.go | 8 ---- internal/diffview/diffview.go | 41 +++++++---------- tui/find.go | 19 +++++++- tui/model.go | 84 +++++++++++++++++++++-------------- tui/nav.go | 2 +- tui/preview.go | 9 ++-- tui/reload_test.go | 8 ++-- tui/render.go | 37 ++++++++++++--- tui/send.go | 2 +- tui/turn_test.go | 8 ++-- tui/watch_test.go | 16 +++---- vcs/repo.go | 8 ++-- 15 files changed, 145 insertions(+), 111 deletions(-) diff --git a/diff/cell.go b/diff/cell.go index 342c16c..a09f3dd 100644 --- a/diff/cell.go +++ b/diff/cell.go @@ -86,7 +86,7 @@ func (d *Diff) segment(i int, s Side) string { // expand returns line as the screen shows it, with the tabs as spaces and // the control characters as symbols. func expand(line string) string { - return diffview.Escape(strings.ReplaceAll(line, "\t", strings.Repeat(" ", tabWidth))) + return diffview.Escape(strings.ReplaceAll(line, "\t", strings.Repeat(" ", diffview.TabWidth))) } // runeAt returns the index of the first rune of the grapheme cluster of @@ -96,7 +96,7 @@ func runeAt(line string, col int) int { i, c := 0, 0 for line != "" { g, _ := ansi.FirstGraphemeCluster(line, ansi.GraphemeWidth) - w := tabWidth + w := diffview.TabWidth if g != "\t" { w = ansi.StringWidth(diffview.Escape(g)) } diff --git a/diff/diff.go b/diff/diff.go index 9cbd3ab..33544d2 100644 --- a/diff/diff.go +++ b/diff/diff.go @@ -98,9 +98,6 @@ type Cache struct { file struct{ path, src, out string } // the last file of RenderFile } -// tabWidth is the number of spaces that replace a tab. -const tabWidth = 4 - // Diff is the rendered output. Lines[i] is the screen line for Rows[i]. // Lines is empty when there is nothing to show, for example when the two // versions are the same. @@ -127,7 +124,6 @@ func Render(path, old, new string, o Options) *Diff { Before(path, old). After(path, new). Width(o.Width). - TabWidth(tabWidth). XOffset(o.Offset) if o.Cache != nil { dv = dv.Cache(&o.Cache.lines) @@ -144,7 +140,8 @@ func Render(path, old, new string, o Options) *Diff { if o.Wrap { dv = dv.Wrap() } - dv = o.Theme.apply(dv) + dv = dv.Style(diffview.TerminalStyle(o.Theme.Background, o.Theme.Foreground, + o.Theme.Green, o.Theme.Red, o.Theme.dark())) out, rows, g := dv.Render() d := &Diff{split: o.Split, src: [2]string{old, new}, wrap: o.Wrap} diff --git a/diff/file.go b/diff/file.go index df99384..c309758 100644 --- a/diff/file.go +++ b/diff/file.go @@ -18,6 +18,7 @@ const lineNumberColor = "8" // RenderFile shows src, the content of the file at path, with line numbers // and syntax colours. Each row is a [KindEqual] row, with the same line // number on the two sides. The line numbers count as the [SideNew] side. +// RenderFile uses only the Width, Offset, Wrap, and Cache fields of o. func RenderFile(path, src string, o Options) *Diff { // Chroma makes a lone CR a line break. RenderFile shows a lone CR as a // symbol, so that the lines are the same as [Lines] gives. @@ -25,7 +26,7 @@ func RenderFile(path, src string, o Options) *Diff { src = strings.NewReplacer( "\r\n", "\n", "\r", "\u240d", - "\t", strings.Repeat(" ", tabWidth), + "\t", strings.Repeat(" ", diffview.TabWidth), ).Replace(src) hl := strings.Split(o.Cache.fileColours(path, src), "\n") lines := 0 diff --git a/diff/theme.go b/diff/theme.go index 40510c6..32752d4 100644 --- a/diff/theme.go +++ b/diff/theme.go @@ -2,8 +2,6 @@ package diff import ( "image/color" - - "github.com/rednafi/rexdiff/internal/diffview" ) // Theme sets the colours of the output. The lightness of Background selects @@ -29,9 +27,3 @@ func (t Theme) dark() bool { // The HSL lightness, from 0 to 1. return float64(hi+lo)/2/0xffff < 0.5 } - -// apply sets the colours of t on dv. The syntax colours come from the -// terminal palette of 16 colours. -func (t Theme) apply(dv *diffview.View) *diffview.View { - return dv.Style(diffview.TerminalStyle(t.Background, t.Foreground, t.Green, t.Red, t.dark())) -} diff --git a/internal/diffview/diffview.go b/internal/diffview/diffview.go index 7fda79e..ee1c946 100644 --- a/internal/diffview/diffview.go +++ b/internal/diffview/diffview.go @@ -17,12 +17,14 @@ import ( ) const ( - leadingSymbolsSize = 2 // the width of a symbol, such as symInsert - lineNumPadding = 1 // the space on each side of a line number - defaultTabWidth = 8 + leadingSymbolsSize = 2 // the width of a symbol, such as symInsert + lineNumPadding = 1 // the space on each side of a line number ellipsis = "…" // shows where a line is cut ) +// TabWidth is the number of spaces that replace a tab. +const TabWidth = 4 + // These symbols are at the start of the code of a line. A bar in the colour // of the line marks each changed line. [View.Signs] shows + and - in place // of the bar. @@ -47,15 +49,14 @@ const ( // View draws the difference between two versions of a file. type View struct { - layout layout - before file - after file - width int - xOffset int - style Style - tabWidth int - wrap bool // wrap long lines instead of cutting them - signs bool // mark a changed line with + or -, not with a bar + layout layout + before file + after file + width int + xOffset int + style Style + wrap bool // wrap long lines instead of cutting them + signs bool // mark a changed line with + or -, not with a bar isComputed bool err error @@ -107,13 +108,9 @@ func (c *Cache) put(k syntaxKey, s string) { c.size += n } -// New returns a View with the unified layout and a tab width of 8. +// New returns a View with the unified layout. func New() *View { - return &View{ - layout: layoutUnified, - tabWidth: defaultTabWidth, - cache: &Cache{}, - } + return &View{layout: layoutUnified, cache: &Cache{}} } // Cache makes v keep its highlighted lines in c. A nil c gives v a new @@ -170,12 +167,6 @@ func (v *View) XOffset(xOffset int) *View { return v } -// TabWidth sets the number of spaces that replace a tab. -func (v *View) TabWidth(tabWidth int) *View { - v.tabWidth = tabWidth - return v -} - // Render returns the rendered diff, one row for each of its lines, and the // columns of the line numbers. func (v *View) Render() (string, []Row, Geometry) { @@ -221,7 +212,7 @@ func (v *View) normalizeLineEndings() { // replaceTabs replaces the tabs in the lines of the diff with spaces. It runs // after computeDiff, so that a change from a tab to spaces is a change. func (v *View) replaceTabs() { - spaces := strings.Repeat(" ", v.tabWidth) + spaces := strings.Repeat(" ", TabWidth) for _, h := range v.unified.Hunks { for i := range h.Lines { h.Lines[i].Content = strings.ReplaceAll(h.Lines[i].Content, "\t", spaces) diff --git a/tui/find.go b/tui/find.go index 7ac2585..b9f08a1 100644 --- a/tui/find.go +++ b/tui/find.go @@ -99,14 +99,29 @@ func (m *model) paneSource() (old, new []string) { switch m.tab { case tabChanges: if f := m.changedFile(); f != nil { - return diff.Lines(f.Old), diff.Lines(f.New) + return m.findLines.of(f.Old, f.New) } case tabFiles: - return nil, diff.Lines(m.viewed) + return m.findLines.of("", m.viewed) } return nil, nil } +// splitLines keeps the lines of the last two sides, so a find does not +// split the file again on each frame. +type splitLines struct { + old, new string + oldLines, newLines []string +} + +// of returns the lines of old and new. +func (s *splitLines) of(old, new string) ([]string, []string) { + if old != s.old || new != s.new { + *s = splitLines{old, new, diff.Lines(old), diff.Lines(new)} + } + return s.oldLines, s.newLines +} + // findHits returns the lines of the pane that match q, in order. It // matches the source text of a line, and not the line numbers. A line on // both sides, as in the split layout, is one hit. diff --git a/tui/model.go b/tui/model.go index be550a0..8c2e993 100644 --- a/tui/model.go +++ b/tui/model.go @@ -119,10 +119,12 @@ func (p *pane) side(x int) (s diff.Side, onNumber bool) { return p.diff.SideAt(x) } -// changed is a changed file with its line counts. +// changed is a changed file with its line counts and the hash of its old +// content, which names its folds. type changed struct { vcs.File adds, dels int + oldHash uint64 } // turnState is a turn of the agents in the repository. It keeps a @@ -196,19 +198,17 @@ type model struct { // watch tells when the files or the refs change, or is nil. If it is // nil, a tick reloads the current tab every pollEvery, after polled. - // After a failure of the watcher, a tick starts it again at watchAt. - watch *vcs.Watcher - polled time.Time - watchAt time.Time - watchWait time.Duration // the wait after the next failure, or 0 + // After a failure of the watcher, a tick starts it again. + watch *vcs.Watcher + polled time.Time + watchRetry retryTimer // reloadOwed is true if a change is seen but the Changes tab does not // show it yet. A reload waits until reloadAt, after the pause of the - // last one, and until retryAt, after a failure. - reloadOwed bool - filesOwed bool // the same for the list of all files - reloadAt time.Time - retryAt time.Time - retryWait time.Duration // the wait after the next failure, or 0 + // last one, and until the retry, after a failure. + reloadOwed bool + filesOwed bool // the same for the list of all files + reloadAt time.Time + reloadRetry retryTimer tab tab scope Scope @@ -229,10 +229,9 @@ type model struct { // sampled is true after the first list of the agents. An edge before // it can be wrong, so the tracker gets no states before it. sampled bool - // After a failed list, a tick lists the agents again at sampleAt. - // Each failure doubles the wait, as in herdr-reviewr. - sampleAt time.Time - sampleWait time.Duration // the wait after the next failure, or 0 + // After a failed list, a tick lists the agents again, as in + // herdr-reviewr. + sampleRetry retryTimer // agentsHere tells if an agent works in the repository, or is nil if // the program does not know. agentsHere *bool @@ -284,6 +283,8 @@ type model struct { // can set a longer time. grepBudget time.Duration find findState + findLines splitLines // the lines that find searches + md mdRenderer // the last markdown renderer drag dragState click clickChain help help.Model @@ -515,14 +516,21 @@ func (m *model) loadChanges(force bool) { if f := m.changedFile(); f != nil { selPath = f.Path } + prev := make(map[string]changed, len(m.files)) + for _, c := range m.files { + prev[c.Path] = c + } m.files = make([]changed, len(files)) m.shownTrees, m.changeSel, m.changes.note = trees, -1, "" for i, f := range files { c := &m.files[i] - c.File = f - if !f.Binary && !f.TooBig { + if p, ok := prev[f.Path]; ok && p.Old == f.Old && p.New == f.New { + *c = p // the same change, so the counts stay + } else if !f.Binary && !f.TooBig { c.adds, c.dels = diff.Count(f.Old, f.New) + c.oldHash = hash(f.Old) } + c.File = f if f.Path == selPath { m.changeSel = i } @@ -775,12 +783,22 @@ const ( // herdr-reviewr. const pollEvery = 5 * time.Second -// backoff returns the wait before the next try after a failure, and -// doubles *wait. The waits go from retryFirst to retryMax. -func backoff(wait *time.Duration) time.Duration { - w := max(*wait, retryFirst) - *wait = min(2*w, retryMax) - return w +// retryTimer tells when to try again after a failure. Each failure +// doubles the wait, from retryFirst to retryMax. +type retryTimer struct { + at time.Time // the next try, or zero + wait time.Duration // the wait after the next failure, or 0 +} + +// fail sets the next try after a failure at now. +func (r *retryTimer) fail(now time.Time) { + w := max(r.wait, retryFirst) + r.at, r.wait = now.Add(w), min(2*w, retryMax) +} + +// due reports whether a try waits and its time is at or before now. +func (r *retryTimer) due(now time.Time) bool { + return !r.at.IsZero() && !now.Before(r.at) } // retry sets the wait before the next reload after the error err. Each @@ -788,10 +806,10 @@ func backoff(wait *time.Duration) time.Duration { // clears the wait. func (m *model) retry(err error) { if err == nil { - m.retryWait, m.retryAt = 0, time.Time{} + m.reloadRetry = retryTimer{} return } - m.retryAt = m.now().Add(backoff(&m.retryWait)) + m.reloadRetry.fail(m.now()) m.reloadOwed = true } @@ -800,7 +818,7 @@ func (m *model) retry(err error) { func (m *model) dropWatch(err error) { m.log.Warn("watch failed", "err", err) m.watch = nil - m.watchAt = m.now().Add(backoff(&m.watchWait)) + m.watchRetry.fail(m.now()) } // startWatch starts the watcher of the repository. The watcher uses the @@ -811,7 +829,7 @@ func (m *model) startWatch() error { return err } w.SetClock(m.now) - m.watch, m.watchAt = w, time.Time{} + m.watch, m.watchRetry.at = w, time.Time{} return nil } @@ -821,7 +839,7 @@ func (m *model) startWatch() error { func (m *model) changed() vcs.Change { all := vcs.Change{Files: true, Refs: true} now := m.now() - if m.watch == nil && !m.watchAt.IsZero() && !now.Before(m.watchAt) { + if m.watch == nil && m.watchRetry.due(now) { if err := m.startWatch(); err != nil { m.dropWatch(err) } @@ -841,7 +859,7 @@ func (m *model) changed() vcs.Change { m.polled = now return all } - m.watchWait = 0 + m.watchRetry = retryTimer{} return ch } @@ -866,8 +884,8 @@ func (m *model) onTick() tea.Cmd { if ch.Refs && m.watch != nil { cmds = append(cmds, m.refsChanged()) } - if m.rex != nil && !m.sampled && !m.sampleAt.IsZero() && !now.Before(m.sampleAt) { - m.sampleAt = time.Time{} // one list at a time + if m.rex != nil && !m.sampled && m.sampleRetry.due(now) { + m.sampleRetry.at = time.Time{} // one list at a time cmds = append(cmds, m.listAgents(agentsMsg{})) } if m.tab == tabPR && m.now().Sub(m.prf.polled) >= prPoll { @@ -889,7 +907,7 @@ func (m *model) reloadDue() { } now := m.now() switch { - case m.tab == tabChanges && m.reloadOwed && !now.Before(m.reloadAt) && !now.Before(m.retryAt): + case m.tab == tabChanges && m.reloadOwed && !now.Before(m.reloadAt) && !now.Before(m.reloadRetry.at): m.reloadIfChanged() end := m.now() m.reloadAt = end.Add(budgetFactor * end.Sub(now)) diff --git a/tui/nav.go b/tui/nav.go index 3aab7b2..33413a7 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -418,7 +418,7 @@ func (m *model) expandFold(f diff.Fold) { } o := m.folds[file.Path] if o == nil { - o = &openFolds{Old: hash(file.Old)} + o = &openFolds{Old: file.oldHash} m.folds[file.Path] = o } o.Ranges = append(o.Ranges, [2]int{f.Old, f.Old + f.Lines - 1}) diff --git a/tui/preview.go b/tui/preview.go index d57b85e..5fecfbd 100644 --- a/tui/preview.go +++ b/tui/preview.go @@ -1,14 +1,12 @@ package tui import ( - "errors" "slices" "strings" "charm.land/lipgloss/v2" "github.com/rednafi/rexdiff/diff" - "github.com/rednafi/rexdiff/vcs" ) // searchShare is the percent of the space of the search that the results @@ -101,11 +99,10 @@ func (m *model) searchPreview(width int) *preview { } pv := &preview{path: it.id, line: it.line, width: width, hit: -1, center: true} content, err := m.repo.ReadFile(it.id) + note, isNote := fileNote(err) switch { - case errors.Is(err, vcs.ErrBinary): - pv.lines = []string{dimStyle.Render(" " + noteBinary)} - case errors.Is(err, vcs.ErrTooBig): - pv.lines = []string{dimStyle.Render(" " + noteTooBig)} + case isNote: + pv.lines = []string{dimStyle.Render(" " + note)} case err != nil || content == "": pv.lines = []string{dimStyle.Render(" no preview")} default: diff --git a/tui/reload_test.go b/tui/reload_test.go index 07e2c87..a97e1b7 100644 --- a/tui/reload_test.go +++ b/tui/reload_test.go @@ -110,8 +110,8 @@ func TestWatchRestarts(t *testing.T) { clk.advance(retryFirst) path := os.Getenv("PATH") noGit(t) - if m = step(t, m, tickMsg{}); m.watch != nil || !m.watchAt.After(m.now()) { - t.Fatalf("a failed start: watcher %v, next try %v; want none, a wait", m.watch, m.watchAt) + if m = step(t, m, tickMsg{}); m.watch != nil || !m.watchRetry.at.After(m.now()) { + t.Fatalf("a failed start: watcher %v, next try %v; want none, a wait", m.watch, m.watchRetry.at) } t.Setenv("PATH", path) if m = step(t, m, tickMsg{}); m.watch != nil { @@ -129,8 +129,8 @@ func TestWatchErrorRestarts(t *testing.T) { m, dir := watched(t) noGit(t) testgit.WriteFile(t, dir, "new.go", "package a\n") // the watcher lists the files again - if m = step(t, m, tickMsg{}); m.watch != nil || m.watchAt.IsZero() { + if m = step(t, m, tickMsg{}); m.watch != nil || m.watchRetry.at.IsZero() { t.Errorf("after an error of the watcher: watcher %v, next try %v; want none, a try", - m.watch, m.watchAt) + m.watch, m.watchRetry.at) } } diff --git a/tui/render.go b/tui/render.go index d34dc12..5d03b21 100644 --- a/tui/render.go +++ b/tui/render.go @@ -193,6 +193,18 @@ const ( noteTooBig = "file too large to show" ) +// fileNote returns the note for a file that ReadFile does not read, and +// reports whether err has a note. +func fileNote(err error) (string, bool) { + switch { + case errors.Is(err, vcs.ErrBinary): + return noteBinary, true + case errors.Is(err, vcs.ErrTooBig): + return noteTooBig, true + } + return "", false +} + // renderChanges shows the selected file in the Changes tab. func (m *model) renderChanges() { p := &m.changes @@ -218,7 +230,7 @@ func (m *model) renderChanges() { case m.showsMarkdown(f): m.setMarkdown(p, f.New) default: - if o := m.folds[f.Path]; o != nil && o.Old != hash(f.Old) { + if o := m.folds[f.Path]; o != nil && o.Old != f.oldHash { delete(m.folds, f.Path) } o := m.diffOptions(p.xoff) @@ -260,13 +272,11 @@ func (m *model) refreshViewer() { } m.viewed, m.viewedPath = content, path p.path = path + note, isNote := fileNote(err) switch { - case errors.Is(err, vcs.ErrBinary): - p.path = "" - p.set([]string{dimStyle.Render(" " + noteBinary)}, nil) - case errors.Is(err, vcs.ErrTooBig): + case isNote: p.path = "" - p.set([]string{dimStyle.Render(" " + noteTooBig)}, nil) + p.set([]string{dimStyle.Render(" " + note)}, nil) case err != nil: m.log.Debug("read file", "path", path, "err", err) p.path = "" @@ -279,12 +289,17 @@ func (m *model) refreshViewer() { } // markdown returns a glamour renderer for the terminal theme, or nil. The -// renderer wraps at wrap columns. +// renderer wraps at wrap columns. The model keeps the last renderer, +// because a new one is slow to make. func (m *model) markdown(wrap int) *glamour.TermRenderer { style := "dark" if m.bg != nil && !m.dark { style = "light" } + md := &m.md + if md.r != nil && md.style == style && md.wrap == wrap { + return md.r + } r, err := glamour.NewTermRenderer( glamour.WithStandardStyle(style), glamour.WithWordWrap(wrap), @@ -292,9 +307,17 @@ func (m *model) markdown(wrap int) *glamour.TermRenderer { if err != nil { return nil } + *md = mdRenderer{r: r, style: style, wrap: wrap} return r } +// mdRenderer is a glamour renderer with its style and wrap width. +type mdRenderer struct { + r *glamour.TermRenderer + style string + wrap int +} + // renderMarkdown returns the lines of src, rendered with r. If r is nil or // fails, renderMarkdown returns the lines of src as they are. func renderMarkdown(r *glamour.TermRenderer, src string) []string { diff --git a/tui/send.go b/tui/send.go index 7f91041..251b901 100644 --- a/tui/send.go +++ b/tui/send.go @@ -243,7 +243,7 @@ func (m *model) onAgents(msg agentsMsg) tea.Cmd { case !m.sampled && !msg.send: // Without a list, the turns do not start. Thus list again later. m.log.Warn("agent list failed", "err", msg.err) - m.sampleAt = m.now().Add(backoff(&m.sampleWait)) + m.sampleRetry.fail(m.now()) } m.observeTurn() if !msg.send { diff --git a/tui/turn_test.go b/tui/turn_test.go index 5114cce..aba50ac 100644 --- a/tui/turn_test.go +++ b/tui/turn_test.go @@ -231,9 +231,9 @@ func TestSampleRetry(t *testing.T) { clk := setClock(&m) log := logRex(t, &m) // its output is no list m = step(t, m, m.listAgents(agentsMsg{})()) - if m.sampled || m.sampleAt.IsZero() || m.sampleWait != 2*time.Second { + if m.sampled || m.sampleRetry.at.IsZero() || m.sampleRetry.wait != 2*time.Second { t.Fatalf("after a failed list: sampled %v, at %v, wait %v; want a retry", - m.sampled, m.sampleAt, m.sampleWait) + m.sampled, m.sampleRetry.at, m.sampleRetry.wait) } clk.advance(time.Second - time.Nanosecond) if got := tickAgents(t, &m); len(got) != 0 || rexLists(t, log) != 1 { @@ -246,8 +246,8 @@ func TestSampleRetry(t *testing.T) { t.Fatalf("a tick after the wait: %d lists, %d rex lists; want 1 that fails, 2", len(got), rexLists(t, log)) } - if m = step(t, m, got[0]); m.sampleWait != 4*time.Second { - t.Errorf("after a second failure: wait %v, want 4s", m.sampleWait) + if m = step(t, m, got[0]); m.sampleRetry.wait != 4*time.Second { + t.Errorf("after a second failure: wait %v, want 4s", m.sampleRetry.wait) } m = step(t, m, sample("p", "pi", dir)) clk.advance(2 * time.Second) diff --git a/tui/watch_test.go b/tui/watch_test.go index ab43b11..43812d2 100644 --- a/tui/watch_test.go +++ b/tui/watch_test.go @@ -80,19 +80,19 @@ func TestTickRetries(t *testing.T) { clk := setClock(&m) path := os.Getenv("PATH") noGit(t) - if m = press(t, m, "r"); m.retryAt.IsZero() || !strings.HasPrefix(m.status, "refresh failed: ") { + if m = press(t, m, "r"); m.reloadRetry.at.IsZero() || !strings.HasPrefix(m.status, "refresh failed: ") { t.Fatalf("after a failed reload: retry at %v, status %q; want a wait, a flash", - m.retryAt, m.status) + m.reloadRetry.at, m.status) } t.Setenv("PATH", path) - retryAt := m.retryAt - if m = step(t, m, tickMsg{}); m.retryAt != retryAt { - t.Errorf("a tick in the wait: retry at %v, want %v", m.retryAt, retryAt) + retryAt := m.reloadRetry.at + if m = step(t, m, tickMsg{}); m.reloadRetry.at != retryAt { + t.Errorf("a tick in the wait: retry at %v, want %v", m.reloadRetry.at, retryAt) } clk.advance(retryFirst) m = step(t, m, tickMsg{}) - if !m.retryAt.IsZero() || m.retryWait != 0 { - t.Errorf("after a good reload, retryAt %v, retryWait %v; want zero", m.retryAt, m.retryWait) + if !m.reloadRetry.at.IsZero() || m.reloadRetry.wait != 0 { + t.Errorf("after a good reload, retryAt %v, retryWait %v; want zero", m.reloadRetry.at, m.reloadRetry.wait) } } @@ -105,7 +105,7 @@ func TestRetryBackoff(t *testing.T) { for i, w := range want { before := m.now() m.retry(errors.New("fail")) - got := m.retryAt.Sub(before).Round(time.Second) + got := m.reloadRetry.at.Sub(before).Round(time.Second) if got != time.Duration(w)*time.Second { t.Errorf("failure %d: wait %v, want %ds", i+1, got, w) } diff --git a/vcs/repo.go b/vcs/repo.go index af299cf..29525b6 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -59,7 +59,8 @@ func Open(ctx context.Context, dir string) (*Repo, error) { if err != nil { return nil, err } - r.root = strings.TrimSuffix(root, "\n") + // Resolve the links once, so Contains and Owns compare real paths. + r.root = evalSymlinks(strings.TrimSuffix(root, "\n")) index, err := r.run(ctx, nil, "rev-parse", "--path-format=absolute", "--git-path", "index") if err != nil { @@ -511,9 +512,8 @@ func (r *Repo) ReadFile(path string) (string, error) { // follows symbolic links, so /tmp and /private/tmp on macOS are the same. // Contains does not run git, thus it does not see a nested repository. func (r *Repo) Contains(dir string) bool { - root := evalSymlinks(r.root) dir = evalSymlinks(dir) - return dir == root || strings.HasPrefix(dir, root+string(filepath.Separator)) + return dir == r.root || strings.HasPrefix(dir, r.root+string(filepath.Separator)) } // Owns reports whether dir is in the working tree of r, and not in another @@ -532,7 +532,7 @@ func (r *Repo) Owns(ctx context.Context, dir string) (bool, error) { return false, err } top := strings.TrimSuffix(out, "\n") - return top != "" && evalSymlinks(top) == evalSymlinks(r.root), nil + return top != "" && evalSymlinks(top) == r.root, nil } // evalSymlinks returns p with its symbolic links resolved, or p if that From d8b1279456fd565a4b58e036205854327eff6700 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 20:25:32 +0100 Subject: [PATCH 047/119] refactor: name things by what they are - tui: the FileList keys and fileListTree follow the file_list setting. filesPane is the pane of the Files tab. ScopeLastTurn follows the scope. treeIDs, watchChanges, changedFile, and selectedChange tell what they return. - vcs: PRState, PRComment, and FileStatus tell what they belong to. HeadTree, ParentTree, and MergeBaseTree tell that they give a tree. - diff: the rune result of Cell is index. --- diff/cell.go | 2 +- tui/bench_test.go | 2 +- tui/comment.go | 8 +++--- tui/find.go | 2 +- tui/keys.go | 58 +++++++++++++++++++++--------------------- tui/model.go | 62 ++++++++++++++++++++++----------------------- tui/nav.go | 22 ++++++++-------- tui/pr.go | 2 +- tui/render.go | 10 ++++---- tui/resume.go | 8 +++--- tui/tree.go | 20 +++++++-------- tui/tree_test.go | 2 +- tui/view.go | 4 +-- vcs/hostile_test.go | 4 +-- vcs/pr.go | 34 ++++++++++++------------- vcs/pr_test.go | 4 +-- vcs/repo.go | 30 +++++++++++----------- vcs/repo_test.go | 14 +++++----- 18 files changed, 144 insertions(+), 144 deletions(-) diff --git a/diff/cell.go b/diff/cell.go index a09f3dd..3960985 100644 --- a/diff/cell.go +++ b/diff/cell.go @@ -15,7 +15,7 @@ import ( // side. The index can be past the end of the line, for a cell after the // code. ok is false if the cell is not on code, for example on a line // number, a mark, or a hunk header. -func (d *Diff) Cell(row, x int) (s Side, line, char int, ok bool) { +func (d *Diff) Cell(row, x int) (s Side, line, index int, ok bool) { if row < 0 || row >= len(d.Rows) || d.Rows[row].Kind == KindHunk { return 0, 0, 0, false } diff --git a/tui/bench_test.go b/tui/bench_test.go index 99265d9..75d29eb 100644 --- a/tui/bench_test.go +++ b/tui/bench_test.go @@ -94,6 +94,6 @@ func bigChange(b *testing.B) model { testgit.Git(b, dir, "commit", "-qm", "big") testgit.WriteFile(b, dir, "big.go", "package a\nfunc f() {\n"+cur.String()+"}\n") m.reload() - m.pickFile(slices.IndexFunc(m.files, func(f changed) bool { return f.Path == "big.go" })) + m.pickFile(slices.IndexFunc(m.files, func(f changedFile) bool { return f.Path == "big.go" })) return m } diff --git a/tui/comment.go b/tui/comment.go index 08c8d66..00f32d7 100644 --- a/tui/comment.go +++ b/tui/comment.go @@ -39,8 +39,8 @@ func (m *model) target(i int, pref diff.Side) *targetLine { return nil } -// changedFile returns the selected file of the Changes tab, or nil. -func (m *model) changedFile() *changed { +// selectedChange returns the selected file of the Changes tab, or nil. +func (m *model) selectedChange() *changedFile { if m.changeSel >= len(m.files) { return nil } @@ -49,7 +49,7 @@ func (m *model) changedFile() *changed { // contentFor returns the text of side s of the file at path. func (m *model) contentFor(path string, s diff.Side) string { - if f := m.changedFile(); m.tab == tabChanges && f != nil && f.Path == path { + if f := m.selectedChange(); m.tab == tabChanges && f != nil && f.Path == path { if s == diff.SideOld { return f.Old } @@ -92,7 +92,7 @@ func (m *model) revCurrent(c *diff.Comment) bool { // stale if its file is gone. func (m *model) stale(c *diff.Comment) bool { if c.Anchor.InDiff { - return !slices.ContainsFunc(m.files, func(f changed) bool { return f.Path == c.Path }) + return !slices.ContainsFunc(m.files, func(f changedFile) bool { return f.Path == c.Path }) } _, err := os.Lstat(filepath.Join(m.repo.Root(), c.Path)) return err != nil diff --git a/tui/find.go b/tui/find.go index b9f08a1..d254afc 100644 --- a/tui/find.go +++ b/tui/find.go @@ -98,7 +98,7 @@ func (m *model) updateFind(msg tea.KeyPressMsg) tea.Cmd { func (m *model) paneSource() (old, new []string) { switch m.tab { case tabChanges: - if f := m.changedFile(); f != nil { + if f := m.selectedChange(); f != nil { return m.findLines.of(f.Old, f.New) } case tabFiles: diff --git a/tui/keys.go b/tui/keys.go index 74d0cd3..502afea 100644 --- a/tui/keys.go +++ b/tui/keys.go @@ -20,17 +20,17 @@ type keyMap struct { NextHunk, PrevHunk, NextFile, PrevFile, Focus key.Binding // Scopes and tabs. - ScopeUncommitted, ScopeBranch, ScopeTurn, ScopeCommits key.Binding - BasePick, CommitPick, TabChanges, TabFiles, TabPR key.Binding + ScopeUncommitted, ScopeBranch, ScopeLastTurn, ScopeCommits key.Binding + BasePick, CommitPick, TabChanges, TabFiles, TabPR key.Binding // Comments. Select, Comment, Edit, Delete, NextComment, PrevComment key.Binding Comments, Send, Copy key.Binding // View and other actions. - Search, Find, GotoLine, Rendered, Split, Wrap key.Binding - NavPosition, NavHide, NavGrow, NavShrink key.Binding - OpenPR, Refresh, Keys, Quit, QuitDiscard key.Binding + Search, Find, GotoLine, Rendered, Split, Wrap key.Binding + FileListPosition, FileListHide, FileListGrow, FileListShrink key.Binding + OpenPR, Refresh, Keys, Quit, QuitDiscard key.Binding // Upgrade installs a newer release. It works only while the footer // tells about a newer release. Upgrade key.Binding @@ -69,7 +69,7 @@ func defaultKeys() keyMap { ScopeUncommitted: bind([]string{"u"}, "u", "uncommitted"), ScopeBranch: bind([]string{"b"}, "b", "branch"), - ScopeTurn: bind([]string{"t"}, "t", "last turn"), + ScopeLastTurn: bind([]string{"t"}, "t", "last turn"), ScopeCommits: bind([]string{"g"}, "g", "commits"), BasePick: bind([]string{"B"}, "B", "pick base branch"), CommitPick: bind([]string{"G"}, "G", "pick commits"), @@ -87,22 +87,22 @@ func defaultKeys() keyMap { Send: bind([]string{"s", "S"}, "s", "send to agent"), Copy: bind([]string{"y", "Y"}, "y", "copy comments"), - Search: bind([]string{"/"}, "/", "search files & code"), - Find: bind([]string{"ctrl+f"}, "ctrl+f", "find in file"), - GotoLine: bind([]string{":"}, ":", "go to line"), - Rendered: bind([]string{"m"}, "m", "rendered markdown"), - Split: bind([]string{"|"}, "|", "side by side"), - Wrap: bind([]string{"w"}, "w", "wrap lines"), - NavPosition: bind([]string{"p"}, "p", "move file list"), - NavHide: bind([]string{"z"}, "z", "hide file list"), - NavGrow: bind([]string{"<"}, "", "widen/narrow list"), - NavShrink: bind([]string{">"}, ">", "narrow list"), - OpenPR: bind([]string{"o"}, "o", "open PR in browser"), - Refresh: bind([]string{"r"}, "r", "refresh"), - Upgrade: bind([]string{"U"}, "U", "update rexdiff"), - Keys: bind([]string{"?"}, "?", "all keys"), - Quit: bind([]string{"q"}, "q", "quit"), - QuitDiscard: bind([]string{"Q"}, "Q", "quit, drop comments"), + Search: bind([]string{"/"}, "/", "search files & code"), + Find: bind([]string{"ctrl+f"}, "ctrl+f", "find in file"), + GotoLine: bind([]string{":"}, ":", "go to line"), + Rendered: bind([]string{"m"}, "m", "rendered markdown"), + Split: bind([]string{"|"}, "|", "side by side"), + Wrap: bind([]string{"w"}, "w", "wrap lines"), + FileListPosition: bind([]string{"p"}, "p", "move file list"), + FileListHide: bind([]string{"z"}, "z", "hide file list"), + FileListGrow: bind([]string{"<"}, "", "widen/narrow list"), + FileListShrink: bind([]string{">"}, ">", "narrow list"), + OpenPR: bind([]string{"o"}, "o", "open PR in browser"), + Refresh: bind([]string{"r"}, "r", "refresh"), + Upgrade: bind([]string{"U"}, "U", "update rexdiff"), + Keys: bind([]string{"?"}, "?", "all keys"), + Quit: bind([]string{"q"}, "q", "quit"), + QuitDiscard: bind([]string{"Q"}, "Q", "quit, drop comments"), Save: bind([]string{"enter"}, "enter", "save"), Newline: bind( @@ -169,7 +169,7 @@ func (k *keyMap) bindings(c keybindings) []binding { {"focus", c.Focus, &k.Focus}, {"scope-uncommitted", c.ScopeUncommitted, &k.ScopeUncommitted}, {"scope-branch", c.ScopeBranch, &k.ScopeBranch}, - {"scope-last-turn", c.ScopeLastTurn, &k.ScopeTurn}, + {"scope-last-turn", c.ScopeLastTurn, &k.ScopeLastTurn}, {"scope-commits", c.ScopeCommits, &k.ScopeCommits}, {"base-pick", c.BasePick, &k.BasePick}, {"commit-pick", c.CommitPick, &k.CommitPick}, @@ -179,10 +179,10 @@ func (k *keyMap) bindings(c keybindings) []binding { {"wrap", c.Wrap, &k.Wrap}, {"rendered", c.Rendered, &k.Rendered}, {"split", c.Split, &k.Split}, - {"navigator-position", c.NavigatorPosition, &k.NavPosition}, - {"navigator-hide", c.NavigatorHide, &k.NavHide}, - {"navigator-grow", c.NavigatorGrow, &k.NavGrow}, - {"navigator-shrink", c.NavigatorShrink, &k.NavShrink}, + {"navigator-position", c.NavigatorPosition, &k.FileListPosition}, + {"navigator-hide", c.NavigatorHide, &k.FileListHide}, + {"navigator-grow", c.NavigatorGrow, &k.FileListGrow}, + {"navigator-shrink", c.NavigatorShrink, &k.FileListShrink}, {"select", c.Select, &k.Select}, {"comment", c.Comment, &k.Comment}, {"edit", c.Edit, &k.Edit}, @@ -337,14 +337,14 @@ func (h helpKeys) FullHelp() [][]key.Binding { k.Down, k.HalfDown, k.NextHunk, k.NextFile, k.Focus, k.Left, k.GotoLine, } scopes := []key.Binding{ - k.TabChanges, k.ScopeUncommitted, k.ScopeBranch, k.ScopeTurn, k.ScopeCommits, + k.TabChanges, k.ScopeUncommitted, k.ScopeBranch, k.ScopeLastTurn, k.ScopeCommits, k.BasePick, k.CommitPick, } comments := []key.Binding{ k.Select, k.Comment, k.Edit, k.Delete, k.NextComment, k.Comments, k.Send, k.Copy, } view := []key.Binding{ - k.Search, k.Find, k.Rendered, k.Split, k.Wrap, k.NavPosition, k.NavHide, k.NavGrow, + k.Search, k.Find, k.Rendered, k.Split, k.Wrap, k.FileListPosition, k.FileListHide, k.FileListGrow, } other := []key.Binding{k.OpenPR, k.Refresh, k.Keys, k.Quit} return [][]key.Binding{move, scopes, comments, view, other} diff --git a/tui/model.go b/tui/model.go index 8c2e993..15dc315 100644 --- a/tui/model.go +++ b/tui/model.go @@ -119,9 +119,9 @@ func (p *pane) side(x int) (s diff.Side, onNumber bool) { return p.diff.SideAt(x) } -// changed is a changed file with its line counts and the hash of its old -// content, which names its folds. -type changed struct { +// changedFile is a changed file with its line counts and the hash of its +// old content, which names its folds. +type changedFile struct { vcs.File adds, dels int oldHash uint64 @@ -237,22 +237,22 @@ type model struct { agentsHere *bool memberDirs map[string]bool // the working directories of the members - files []changed // the Changes tab - changeSel int // the file that shows in the Changes tab - shownTrees string // the two trees of files, to notice a change - changeTree navTree + files []changedFile // the Changes tab + changeSel int // the file that shows in the Changes tab + shownTrees string // the two trees of files, to notice a change + changeTree fileListTree allFiles []vcs.Entry // the Files tab allSel int - fileTree navTree + fileTree fileListTree // viewed and viewedPath are the content and the path in the Files // tab, to notice edits. The path of the pane is "" for Markdown. viewed string viewedPath string - changes, viewer, prPane pane - pr prState - prf prFetch - prPlace *savedPane // the place of prPane after a restart + changes, filesPane, prPane pane + pr prState + prf prFetch + prPlace *savedPane // the place of prPane after a restart split bool // show the diff side by side wrap bool @@ -348,7 +348,7 @@ func newModel(ctx context.Context, o Options, cfg config) model { // first. The picker still lists all the agents. m.beside, _ = o.Rex.Resolve(ctx, o.Agent) } - m.changes.anchor, m.viewer.anchor, m.prPane.anchor = -1, -1, -1 + m.changes.anchor, m.filesPane.anchor, m.prPane.anchor = -1, -1, -1 m.cfg = cfg m.keys = defaultKeys() m.keys.applyConfig(cfg.Keybindings) @@ -436,16 +436,16 @@ func (m *model) flash(s string) { m.status, m.statusTill = termtext.Quote(s), m.now().Add(flashTime) } -// trees returns the two trees that the Changes tab compares in the scope. -// If there is nothing to compare, note tells why. -func (m *model) trees() (from, to, note string, err error) { +// treeIDs returns the IDs of the two trees that the Changes tab compares +// in the scope. If there is nothing to compare, note tells why. +func (m *model) treeIDs() (from, to, note string, err error) { ctx := m.ctx switch m.scope { case scopeCommits: if m.to == "" { return "", "", "no commits picked: press G to pick one or a range", nil } - if from, err = m.repo.Parent(ctx, m.from); err != nil { + if from, err = m.repo.ParentTree(ctx, m.from); err != nil { return "", "", "", err } to, err = m.repo.Tree(ctx, m.to) @@ -456,11 +456,11 @@ func (m *model) trees() (from, to, note string, err error) { } from = m.turn.tree case ScopeBranch: - if from, err = m.repo.MergeBase(ctx, m.base); err != nil { + if from, err = m.repo.MergeBaseTree(ctx, m.base); err != nil { return "", "", "", err } default: - if from, err = m.repo.Head(ctx); err != nil { + if from, err = m.repo.HeadTree(ctx); err != nil { return "", "", "", err } } @@ -488,7 +488,7 @@ func (m *model) loadChanges(force bool) { return } m.reloadOwed = false - from, to, note, err := m.trees() + from, to, note, err := m.treeIDs() trees := from + ".." + to same := trees == m.shownTrees && !force var files []vcs.File @@ -513,14 +513,14 @@ func (m *model) loadChanges(force bool) { return } var selPath string - if f := m.changedFile(); f != nil { + if f := m.selectedChange(); f != nil { selPath = f.Path } - prev := make(map[string]changed, len(m.files)) + prev := make(map[string]changedFile, len(m.files)) for _, c := range m.files { prev[c.Path] = c } - m.files = make([]changed, len(files)) + m.files = make([]changedFile, len(files)) m.shownTrees, m.changeSel, m.changes.note = trees, -1, "" for i, f := range files { c := &m.files[i] @@ -536,7 +536,7 @@ func (m *model) loadChanges(force bool) { } } m.buildTrees() - if f := m.changedFile(); f == nil || f.Path != selPath { + if f := m.selectedChange(); f == nil || f.Path != selPath { // Another file shows, so the cursor and the selection do not apply. m.changes.cur, m.changes.top, m.changes.anchor = 0, 0, -1 } @@ -670,7 +670,7 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { // followCursor makes the panes keep the cursor on the screen again. A key // or a click can move the cursor. func (m *model) followCursor() { - m.changes.free, m.viewer.free, m.prPane.free = false, false, false + m.changes.free, m.filesPane.free, m.prPane.free = false, false, false } // onKey gives a key to the part of the screen that takes the keys. @@ -833,10 +833,10 @@ func (m *model) startWatch() error { return nil } -// changed tells what the watcher sees. Without a watcher, it tells that -// both change every pollEvery. After an error, it drops the watcher and -// tells that both change. -func (m *model) changed() vcs.Change { +// watchChanges tells what the watcher sees. Without a watcher, it tells +// that both change every pollEvery. After an error, it drops the watcher +// and tells that both change. +func (m *model) watchChanges() vcs.Change { all := vcs.Change{Files: true, Refs: true} now := m.now() if m.watch == nil && m.watchRetry.due(now) { @@ -867,7 +867,7 @@ func (m *model) changed() vcs.Change { // returns the work of the tick. Update adds the next tick. func (m *model) onTick() tea.Cmd { m.ticks++ - ch := m.changed() + ch := m.watchChanges() if ch.Files && m.pending != nil { m.checkTurn() } @@ -922,7 +922,7 @@ func (m *model) reloadDue() { func (m *model) cur() *pane { switch m.tab { case tabFiles: - return &m.viewer + return &m.filesPane case tabPR: return &m.prPane } diff --git a/tui/nav.go b/tui/nav.go index 33413a7..08e99a0 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -95,7 +95,7 @@ func (m *model) scopeKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { m.setScope(ScopeUncommitted) case key.Matches(msg, k.ScopeBranch): m.setScope(ScopeBranch) - case key.Matches(msg, k.ScopeTurn): + case key.Matches(msg, k.ScopeLastTurn): m.setScope(ScopeLastTurn) case key.Matches(msg, k.ScopeCommits) && m.to == "": m.openCommitPicker() @@ -165,7 +165,7 @@ func (m *model) moveKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { // The wrap key works only on a diff, because rendered markdown // has its own wrap. The sideways scroll works only without wrap. m.wrap = !m.wrap - m.changes.xoff, m.viewer.xoff = 0, 0 + m.changes.xoff, m.filesPane.xoff = 0, 0 m.rerender() default: return nil, false @@ -245,13 +245,13 @@ func (m *model) viewKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { case m.splitAllowed(): m.flash("too narrow for split") } - case key.Matches(msg, k.NavPosition): + case key.Matches(msg, k.FileListPosition): m.moveList() - case key.Matches(msg, k.NavHide): + case key.Matches(msg, k.FileListHide): m.hideList() - case key.Matches(msg, k.NavGrow): + case key.Matches(msg, k.FileListGrow): m.resizeList(listStep) - case key.Matches(msg, k.NavShrink): + case key.Matches(msg, k.FileListShrink): m.resizeList(-listStep) case key.Matches(msg, k.OpenPR): m.openPR() @@ -409,7 +409,7 @@ func (m *model) expanded(path string, comments []*diff.Comment, f diff.Fold) boo // cursor to the first of them. The selection stays on its lines. func (m *model) expandFold(f diff.Fold) { p := &m.changes - file := m.changedFile() + file := m.selectedChange() if file == nil { return } @@ -457,7 +457,7 @@ func (m *model) pickFile(i int) { return } m.allSel = i - m.viewer.toStart() + m.filesPane.toStart() m.renderViewer() } m.drag = dragState{} @@ -487,7 +487,7 @@ func (m *model) stepChange(d int) { return } // A reload can drop the armed file. - isArmed := func(f changed) bool { return f.Path == m.armedPath } + isArmed := func(f changedFile) bool { return f.Path == m.armedPath } if i := slices.IndexFunc(m.files, isArmed); i >= 0 { target = i } @@ -577,7 +577,7 @@ func (m *model) jumpToComment(c *diff.Comment) { // jumpTo shows path with the cursor on line. It uses the Changes tab if // the file has changes, else the Files tab. func (m *model) jumpTo(path string, s diff.Side, line int) { - inChanges := func(f changed) bool { return f.Path == path } + inChanges := func(f changedFile) bool { return f.Path == path } if i := slices.IndexFunc(m.files, inChanges); i >= 0 { m.tab = tabChanges m.revealFile(path) @@ -603,7 +603,7 @@ func (m *model) jumpToFile(path string, s diff.Side, line int) { m.flash("the removed line is not in the file now") return } - cursorToLine(&m.viewer, diff.SideNew, line) + cursorToLine(&m.filesPane, diff.SideNew, line) } // cursorToLine puts the cursor of p on the row that shows line on side s. diff --git a/tui/pr.go b/tui/pr.go index 122a2c4..5146df5 100644 --- a/tui/pr.go +++ b/tui/pr.go @@ -101,7 +101,7 @@ func (m *model) refsChanged() tea.Cmd { } // prStateStyle returns the style that shows the state of a pull request. -func prStateStyle(s vcs.State) lipgloss.Style { +func prStateStyle(s vcs.PRState) lipgloss.Style { switch s { case vcs.StateOpen: return addStyle diff --git a/tui/render.go b/tui/render.go index 5d03b21..eb89ee8 100644 --- a/tui/render.go +++ b/tui/render.go @@ -143,7 +143,7 @@ func (m *model) splitAllowed() bool { if m.tab != tabChanges { return false } - f := m.changedFile() + f := m.selectedChange() return f != nil && !f.Binary && !f.TooBig && !m.showsMarkdown(f) && f.Old != "" && f.New != "" && f.Old != f.New } @@ -157,7 +157,7 @@ func (m *model) splitShown() bool { // showsMarkdown reports whether the Changes tab shows f as rendered // markdown. -func (m *model) showsMarkdown(f *changed) bool { +func (m *model) showsMarkdown(f *changedFile) bool { return m.rendered && isMarkdown(f.Path) && f.Status != vcs.StatusDeleted } @@ -208,7 +208,7 @@ func fileNote(err error) (string, bool) { // renderChanges shows the selected file in the Changes tab. func (m *model) renderChanges() { p := &m.changes - f := m.changedFile() + f := m.selectedChange() if f == nil { p.path = "" p.set(nil, nil) @@ -259,7 +259,7 @@ func (m *model) renderViewer() { // refreshViewer shows the selected file in the Files tab if the file // changes. func (m *model) refreshViewer() { - p := &m.viewer + p := &m.filesPane if m.allSel >= len(m.allFiles) { p.path, m.viewedPath = "", "" p.set(nil, nil) @@ -334,7 +334,7 @@ func renderMarkdown(r *glamour.TermRenderer, src string) []string { func (m *model) markdownSource() (src string, ok bool) { switch m.tab { case tabChanges: - f := m.changedFile() + f := m.selectedChange() if f == nil || !isMarkdown(f.Path) || f.Status == vcs.StatusDeleted { return "", false } diff --git a/tui/resume.go b/tui/resume.go index 4e76184..34c9158 100644 --- a/tui/resume.go +++ b/tui/resume.go @@ -80,7 +80,7 @@ func (m *model) saveState() (string, error) { s := savedState{ Tab: m.tab, Scope: m.scope, Base: m.base, From: m.from, To: m.to, Changes: m.changes.place(), - Viewer: m.viewer.place(), + Viewer: m.filesPane.place(), PR: m.prPane.place(), Split: m.split, Wrap: m.wrap, Rendered: m.rendered, ListPos: m.listPos, ListHidden: m.listHidden, FocusList: m.focusList, @@ -92,7 +92,7 @@ func (m *model) saveState() (string, error) { if m.prPlace != nil { // the PR has not loaded since the last restart s.PR = *m.prPlace } - if f := m.changedFile(); f != nil { + if f := m.selectedChange(); f != nil { s.ChangePath = f.Path } if m.allSel < len(m.allFiles) { @@ -159,7 +159,7 @@ func (m *model) restoreSettings(s *savedState) { // restorePlaces selects the files of s and moves the cursors to the places // in s. Call it after the first reload. func (m *model) restorePlaces(s *savedState) { - if i := slices.IndexFunc(m.files, func(f changed) bool { return f.Path == s.ChangePath }); i >= 0 { + if i := slices.IndexFunc(m.files, func(f changedFile) bool { return f.Path == s.ChangePath }); i >= 0 { m.changeSel = i } m.allFiles, _ = m.repo.Files(m.ctx) // an error shows an empty list @@ -175,7 +175,7 @@ func (m *model) restorePlaces(s *savedState) { m.renderChanges() m.refreshViewer() m.changes.restore(s.Changes) - m.viewer.restore(s.Viewer) + m.filesPane.restore(s.Viewer) m.prPlace = &s.PR // the PR loads later, and onPR restores the place m.rerender() } diff --git a/tui/tree.go b/tui/tree.go index e307855..0da5af3 100644 --- a/tui/tree.go +++ b/tui/tree.go @@ -12,8 +12,8 @@ import ( "github.com/rednafi/rexdiff/vcs" ) -// navTree is the file list of a tab. -type navTree struct { +// fileListTree is the file list of a tab. +type fileListTree struct { entries []tree.Entry rows []tree.Row cur int // the row of the cursor @@ -26,7 +26,7 @@ type navTree struct { // rebuild makes the rows of entries. The cursor stays on its directory or // its file. If the row is gone, or the cursor is -1, the cursor goes to // the file with index open, else to the first file. -func (t *navTree) rebuild(entries []tree.Entry, expanded bool, open int) { +func (t *fileListTree) rebuild(entries []tree.Entry, expanded bool, open int) { var dir, path string if t.cur >= 0 && t.cur < len(t.rows) { if r := t.rows[t.cur]; r.File < 0 { @@ -53,7 +53,7 @@ func (t *navTree) rebuild(entries []tree.Entry, expanded bool, open int) { } // file returns the index of the file at the cursor, or -1 on a directory. -func (t *navTree) file() int { +func (t *fileListTree) file() int { if t.cur >= len(t.rows) { return -1 } @@ -61,7 +61,7 @@ func (t *navTree) file() int { } // dir returns the row at the cursor if it is a directory. -func (t *navTree) dir() (tree.Row, bool) { +func (t *fileListTree) dir() (tree.Row, bool) { if t.cur >= len(t.rows) || t.rows[t.cur].File >= 0 { return tree.Row{}, false } @@ -70,7 +70,7 @@ func (t *navTree) dir() (tree.Row, bool) { // rowOf returns the row of the file with index i, or -1 if no row shows // it. -func (t *navTree) rowOf(i int) int { +func (t *fileListTree) rowOf(i int) int { if i < 0 { return -1 } @@ -79,7 +79,7 @@ func (t *navTree) rowOf(i int) int { // nextFile returns the first file row after row from in direction d (1 or // -1), or -1. -func (t *navTree) nextFile(from, d int) int { +func (t *fileListTree) nextFile(from, d int) int { for r := from + d; r >= 0 && r < len(t.rows); r += d { if t.rows[r].File >= 0 { return r @@ -90,7 +90,7 @@ func (t *navTree) nextFile(from, d int) int { // setExpanded expands or collapses the directory dir. It reports whether // the state changes. -func (t *navTree) setExpanded(dir string, want bool) bool { +func (t *fileListTree) setExpanded(dir string, want bool) bool { if (t.expanded != t.toggled[dir]) == want { return false } @@ -107,7 +107,7 @@ func (t *navTree) setExpanded(dir string, want bool) bool { // reveal expands each directory above path. It reports whether one // changes. -func (t *navTree) reveal(path string) bool { +func (t *fileListTree) reveal(path string) bool { changed := false for dir := path; ; { i := strings.LastIndexByte(dir, '/') @@ -120,7 +120,7 @@ func (t *navTree) reveal(path string) bool { } // list returns the file list of the current tab, or nil on the PR tab. -func (m *model) list() *navTree { +func (m *model) list() *fileListTree { switch m.tab { case tabChanges: return &m.changeTree diff --git a/tui/tree_test.go b/tui/tree_test.go index 78d019d..2708be9 100644 --- a/tui/tree_test.go +++ b/tui/tree_test.go @@ -68,7 +68,7 @@ func shownPath(m model) string { if m.tab == tabFiles { return m.allFiles[m.allSel].Path } - return m.changedFile().Path + return m.selectedChange().Path } // TestTreeKeys checks the cursor, the expand and collapse keys, and the diff --git a/tui/view.go b/tui/view.go index 19a9e6f..c5ca8db 100644 --- a/tui/view.go +++ b/tui/view.go @@ -188,7 +188,7 @@ func (m *model) agentLabel() string { } // statusMark returns the mark of a changed file in the file list. -func statusMark(s vcs.Status) string { +func statusMark(s vcs.FileStatus) string { switch s { case vcs.StatusAdded: return addStyle.Render("A") @@ -264,7 +264,7 @@ func (m *model) dirRow(r tree.Row, indent string, w int) string { // changedRow renders changed file f in the file list, w columns wide. The // row shows the name in the tree, after indent. -func (m *model) changedRow(f changed, indent, name string, w int) string { +func (m *model) changedRow(f changedFile, indent, name string, w int) string { adds := addStyle.Render(fmt.Sprintf("+%d", f.adds)) stat := adds + " " + delStyle.Render(fmt.Sprintf("-%d", f.dels)) if c := m.comments.Count(m.anchorOf(tabChanges), f.Path); c > 0 { diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index 602b012..0588a85 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -38,10 +38,10 @@ func TestRevIsNotAnOption(t *testing.T) { if id, err := r.Tree(ctx, rev); err == nil { t.Errorf("Tree(%q) = %s, want an error", rev, id) } - if id, err := r.MergeBase(ctx, rev); err == nil { + if id, err := r.MergeBaseTree(ctx, rev); err == nil { t.Errorf("MergeBase(%q) = %s, want an error", rev, id) } - if id, err := r.Parent(ctx, rev); err == nil { + if id, err := r.ParentTree(ctx, rev); err == nil { t.Errorf("Parent(%q) = %s, want an error", rev, id) } if _, err := r.Diff(ctx, rev, head(t, r)); err == nil { diff --git a/vcs/pr.go b/vcs/pr.go index f2e5baa..af88990 100644 --- a/vcs/pr.go +++ b/vcs/pr.go @@ -34,7 +34,7 @@ type PullRequest struct { Forge Forge Number int Title string - State State + State PRState URL string Author string Head string // the source branch @@ -42,7 +42,7 @@ type PullRequest struct { Body string // Markdown Checks []Check // Comments are the most recent comments, the oldest first. - Comments []Comment + Comments []PRComment } // Check is a CI check. @@ -62,15 +62,15 @@ const ( ForgeAzure Forge = "Azure DevOps" ) -// State is the state of a pull request. It is the same for each forge. -type State string +// PRState is the state of a pull request. It is the same for each forge. +type PRState string // The values of State. const ( - StateOpen State = "open" - StateDraft State = "draft" // open, but not ready for review - StateMerged State = "merged" - StateClosed State = "closed" // closed without a merge + StateOpen PRState = "open" + StateDraft PRState = "draft" // open, but not ready for review + StateMerged PRState = "merged" + StateClosed PRState = "closed" // closed without a merge ) // Result is the result of a CI check. It is the same for each forge. @@ -84,8 +84,8 @@ const ( ResultSkip Result = "skip" // skipped, or neutral ) -// Comment is a comment on a pull request. -type Comment struct { +// PRComment is a comment on a pull request. +type PRComment struct { Author string When string // the time, as the forge gives it Body string // Markdown @@ -241,7 +241,7 @@ func (r *Repo) gitHub(ctx context.Context, host string) (*PullRequest, error) { }) } for _, c := range lastN(v.Comments, maxComments) { - pr.Comments = append(pr.Comments, Comment{ + pr.Comments = append(pr.Comments, PRComment{ Author: c.Author.Login, When: c.CreatedAt, Body: c.Body, @@ -252,7 +252,7 @@ func (r *Repo) gitHub(ctx context.Context, host string) (*PullRequest, error) { // gitHubState returns the state of a GitHub pull request from its state // and its draft flag. -func gitHubState(s string, draft bool) State { +func gitHubState(s string, draft bool) PRState { switch { case s == "MERGED": return StateMerged @@ -266,7 +266,7 @@ func gitHubState(s string, draft bool) State { // gitLabState returns the state of a GitLab merge request. A locked merge // request is closed. -func gitLabState(s string) State { +func gitLabState(s string) PRState { switch s { case "opened": return StateOpen @@ -278,7 +278,7 @@ func gitLabState(s string) State { // azureState returns the state of an Azure DevOps pull request from its // status. An abandoned pull request is closed. -func azureState(s string) State { +func azureState(s string) PRState { switch s { case "active": return StateOpen @@ -362,14 +362,14 @@ func (r *Repo) gitLab(ctx context.Context) (*PullRequest, error) { // gitLabComments returns the most recent notes of the discussions, the // oldest first. It skips the notes that GitLab writes, for example "added // 1 commit". -func gitLabComments(ds []gitLabDiscussion) []Comment { - var cs []Comment +func gitLabComments(ds []gitLabDiscussion) []PRComment { + var cs []PRComment for _, d := range ds { for _, n := range d.Notes { if n.System { continue } - cs = append(cs, Comment{ + cs = append(cs, PRComment{ Author: n.Author.Username, When: n.CreatedAt, Body: n.Body, diff --git a/vcs/pr_test.go b/vcs/pr_test.go index 24f423f..f4b28a6 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -110,7 +110,7 @@ func TestPullRequest(t *testing.T) { {Name: "docs", Result: vcs.ResultSkip}, {Name: "e2e", Result: vcs.ResultPending}, }, - Comments: []vcs.Comment{ + Comments: []vcs.PRComment{ {Author: "bob", When: "2026-01-02T03:04:05Z", Body: "LGTM"}, }, }}, @@ -124,7 +124,7 @@ func TestPullRequest(t *testing.T) { Head: "fix", Base: "main", Body: "D", - Comments: []vcs.Comment{ + Comments: []vcs.PRComment{ {Author: "eve", When: "2026-01-02T03:04:05Z", Body: "Why?"}, {Author: "cy", When: "2026-01-03T03:04:05Z", Body: "Speed."}, }, diff --git a/vcs/repo.go b/vcs/repo.go index 29525b6..9005a37 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -154,9 +154,9 @@ func (r *Repo) Tree(ctx context.Context, rev string) (string, error) { return r.Resolve(ctx, rev+"^{tree}") } -// Head returns the tree of HEAD. If HEAD is a branch with no commits yet, +// HeadTree returns the tree of HEAD. If HEAD is a branch with no commits yet, // as in a new repository, it returns the empty tree. -func (r *Repo) Head(ctx context.Context) (string, error) { +func (r *Repo) HeadTree(ctx context.Context) (string, error) { t, err := r.Tree(ctx, "HEAD") if err == nil { return t, nil @@ -170,9 +170,9 @@ func (r *Repo) Head(ctx context.Context) (string, error) { return "", err } -// Parent returns the tree of the first parent of the commit rev. If rev has +// ParentTree returns the tree of the first parent of the commit rev. If rev has // no parent, it returns the empty tree. -func (r *Repo) Parent(ctx context.Context, rev string) (string, error) { +func (r *Repo) ParentTree(ctx context.Context, rev string) (string, error) { c, err := r.Resolve(ctx, rev+"^{commit}") if err != nil { return "", err @@ -189,9 +189,9 @@ func (r *Repo) Parent(ctx context.Context, rev string) (string, error) { return r.Tree(ctx, first) } -// MergeBase returns the tree of the commit that [Repo.MergeBaseCommit] +// MergeBaseTree returns the tree of the commit that [Repo.MergeBaseCommit] // returns. -func (r *Repo) MergeBase(ctx context.Context, base string) (string, error) { +func (r *Repo) MergeBaseTree(ctx context.Context, base string) (string, error) { c, err := r.MergeBaseCommit(ctx, base) if err != nil { return "", err @@ -263,20 +263,20 @@ func (r *Repo) copyIndex(dst string) error { return os.Chtimes(dst, time.Time{}, st.ModTime()) } -// Status is the type of change to a file. Its value is the letter that git +// FileStatus is the type of change to a file. Its value is the letter that git // uses, for example 'A'. -type Status byte +type FileStatus byte // The values of Status that [Repo.Diff] returns. const ( - StatusAdded Status = 'A' - StatusModified Status = 'M' - StatusDeleted Status = 'D' - StatusRenamed Status = 'R' + StatusAdded FileStatus = 'A' + StatusModified FileStatus = 'M' + StatusDeleted FileStatus = 'D' + StatusRenamed FileStatus = 'R' // statusTypeChange is a change of type, for example from a file to a // symbolic link. [Repo.Diff] shows it as [StatusModified]. - statusTypeChange Status = 'T' + statusTypeChange FileStatus = 'T' ) // File is a file that is different between two trees. Old and New are the @@ -286,7 +286,7 @@ const ( type File struct { Path string From string // for a rename, the old path - Status Status + Status FileStatus Old, New string // Binary is true if a version of the file has a NUL byte. Binary bool @@ -318,7 +318,7 @@ func (r *Repo) Diff(ctx context.Context, from, to string) ([]File, error) { if len(meta) != 5 { return nil, fmt.Errorf("git diff: bad output %q", fields[0]) } - f := File{Status: Status(meta[4][0]), Path: fields[1]} + f := File{Status: FileStatus(meta[4][0]), Path: fields[1]} if f.Status == statusTypeChange { f.Status = StatusModified } diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 1410a86..cc3c9fc 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -66,7 +66,7 @@ func snapshot(t *testing.T, r *vcs.Repo) string { // head returns the tree of HEAD. func head(t *testing.T, r *vcs.Repo) string { t.Helper() - tree, err := r.Head(t.Context()) + tree, err := r.HeadTree(t.Context()) if err != nil { t.Fatal(err) } @@ -76,7 +76,7 @@ func head(t *testing.T, r *vcs.Repo) string { // parent returns the tree of the parent of rev. func parent(t *testing.T, r *vcs.Repo, rev string) string { t.Helper() - tree, err := r.Parent(t.Context(), rev) + tree, err := r.ParentTree(t.Context(), rev) if err != nil { t.Fatal(err) } @@ -119,14 +119,14 @@ func TestScopes(t *testing.T) { unc[1].Old, unc[1].New, "one\n", "one\ntwo\n") } - mb, err := r.MergeBase(ctx, "main") + mb, err := r.MergeBaseTree(ctx, "main") if err != nil { t.Fatal(err) } if got := names(changes(t, r, mb, now)); got != "A.gitignore Ma.txt Ab.txt Anew.txt" { t.Errorf("branch: %s, want A.gitignore Ma.txt Ab.txt Anew.txt", got) } - _, err = r.MergeBase(ctx, "nosuchbranch") + _, err = r.MergeBaseTree(ctx, "nosuchbranch") if _, ok := errors.AsType[*exec.ExitError](err); !ok { t.Errorf("MergeBase(nosuchbranch) = %v, want the error of git", err) } @@ -181,14 +181,14 @@ func TestMissingCommit(t *testing.T) { } } remove(cs[1].SHA) - if id, err := r.Parent(ctx, "HEAD"); err == nil { + if id, err := r.ParentTree(ctx, "HEAD"); err == nil { t.Errorf("Parent(HEAD) = %s with no parent commit, want an error", id) } - if id, err := r.Parent(ctx, "nope"); err == nil { + if id, err := r.ParentTree(ctx, "nope"); err == nil { t.Errorf("Parent(nope) = %s, want an error", id) } remove(cs[0].SHA) - if id, err := r.Head(ctx); err == nil { + if id, err := r.HeadTree(ctx); err == nil { t.Errorf("Head = %s with no HEAD commit, want an error", id) } } From 237656a065eca6cfeeee3786492caae14a448918 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 20:28:32 +0100 Subject: [PATCH 048/119] test(rex,update): run the tests of the rex client in parallel A test client points at the fake rex, so the tests set no environment. --- rex/export_test.go | 9 +++++++++ rex/rex_test.go | 16 ++++++++-------- update/update_test.go | 6 ++++++ 3 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 rex/export_test.go diff --git a/rex/export_test.go b/rex/export_test.go new file mode 100644 index 0000000..9d394e6 --- /dev/null +++ b/rex/export_test.go @@ -0,0 +1,9 @@ +package rex + +import "path/filepath" + +// NewTestClient returns a client of the session S for the block +// block:self, with the rex in dir. +func NewTestClient(dir string) *Client { + return &Client{Block: "block:self", session: "S", bin: filepath.Join(dir, "rex")} +} diff --git a/rex/rex_test.go b/rex/rex_test.go index dd9900b..7a638dd 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -60,16 +60,13 @@ more detail' >&2; exit 1 ;; esac ` testgit.Script(t, dir, "rex", script) - // The client comes from the environment that Rex gives a block. - t.Setenv("REX_SESSION", "S") - t.Setenv("REX_BLOCK", "block:self") - t.Setenv("REX_BIN_DIR", dir) - return rex.FromEnv(), dir + return rex.NewTestClient(dir), dir } // TestAgents checks that Agents returns only the terminal blocks that send // an app name, without the block of the client. func TestAgents(t *testing.T) { + t.Parallel() c, _ := fakeRex(t) agents, err := c.Agents(t.Context()) if err != nil { @@ -99,6 +96,7 @@ func TestAgents(t *testing.T) { // TestCommands checks the rex calls of Resolve, Paste, Focus, Split, and // SetLabel. func TestCommands(t *testing.T) { + t.Parallel() c, dir := fakeRex(t) ctx := t.Context() if id, err := c.Resolve(ctx, "agent"); err != nil || id != "block:pi" { @@ -151,6 +149,7 @@ func blockEvent(block, name, payload string) string { // TestWatch checks that Watch reports only the changes of the status of // the program, and closed blocks. func TestWatch(t *testing.T) { + t.Parallel() c, dir := fakeRex(t) events := strings.Join([]string{ blockEvent("block:pi", "program_status_changed", `{"id":"",`+ @@ -198,6 +197,7 @@ func TestWatch(t *testing.T) { // TestWatchReconnect checks that Watch reports a reconnect after it starts // rex again. func TestWatchReconnect(t *testing.T) { + t.Parallel() c, dir := fakeRex(t) line := `{"type":"session_event","payload":{"event":{"type":"block_closed",` + `"payload":{"block_id":"block:pi"}}}}` @@ -270,12 +270,12 @@ func TestReloadConfigOutsideRex(t *testing.T) { // TestErrorKeepsCause checks that the error of a failed rex is the message // of rex. The error also wraps the exit error of the process. func TestErrorKeepsCause(t *testing.T) { + t.Parallel() dir := t.TempDir() testgit.Script(t, dir, "rex", "echo 'Error: no Rex server' >&2\nexit 3\n") - t.Setenv("REX_BIN_DIR", dir) - _, err := rex.ReloadConfig(t.Context()) + err := rex.NewTestClient(dir).Focus(t.Context(), "block:pi") ee, ok := errors.AsType[*exec.ExitError](err) if err == nil || err.Error() != "no Rex server" || !ok || ee.ExitCode() != 3 { - t.Errorf("ReloadConfig error = %v, exit error %v; want %q wrapping exit 3", err, ok, "no Rex server") + t.Errorf("Focus error = %v, exit error %v; want %q wrapping exit 3", err, ok, "no Rex server") } } diff --git a/update/update_test.go b/update/update_test.go index 3927c00..48c5990 100644 --- a/update/update_test.go +++ b/update/update_test.go @@ -348,6 +348,7 @@ func TestBinaryTooLarge(t *testing.T) { // TestVersion checks the version from the release build. A test binary has // no version, like a build for development. func TestVersion(t *testing.T) { + t.Parallel() for stamped, want := range map[string]string{"0.2.0": "v0.2.0", "v0.2.0": "v0.2.0", "": ""} { if got := Version(stamped); got != want { t.Errorf("Version(%q) = %q, want %q", stamped, got, want) @@ -356,6 +357,11 @@ func TestVersion(t *testing.T) { if u := Detect("/bin/rexdiff", ""); u != nil { t.Errorf("Detect of a build for development = %+v, want nil", u) } +} + +// TestDetectTestURL checks that a release build reads the latest release +// from REXDIFF_LATEST_URL. +func TestDetectTestURL(t *testing.T) { t.Setenv("REXDIFF_LATEST_URL", "http://127.0.0.1:1/latest") if u := Detect("/bin/rexdiff", "0.2.0"); u == nil || u.latestURL != "http://127.0.0.1:1/latest" || u.method != methodDownload { t.Errorf("Detect of a release build = %+v, "+ From 30f8552ba7e3ff25ee469f3cdf36791a97ede6d1 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 20:47:18 +0100 Subject: [PATCH 049/119] test: test the libraries only through their public API Each library test is in an _test package. Near copies merge into tables, the tests of the vendored diffview go, and each test that sets no environment runs in parallel. --- diff/cell_test.go | 13 +- diff/comment_test.go | 3 +- diff/diff_test.go | 66 ++-- diff/hostile_test.go | 11 +- internal/diffview/cache_test.go | 77 ----- internal/search/match_test.go | 29 -- internal/search/search_test.go | 59 +++- internal/tree/tree_test.go | 218 ++++++------ internal/turn/turn_test.go | 196 ++++++----- rex/export_test.go | 9 - rex/rex_test.go | 95 ++---- update/update_test.go | 576 ++++++++++++++------------------ vcs/hostile_test.go | 48 +-- vcs/pr_test.go | 30 +- vcs/repo_test.go | 91 +++-- 15 files changed, 669 insertions(+), 852 deletions(-) delete mode 100644 internal/diffview/cache_test.go delete mode 100644 internal/search/match_test.go delete mode 100644 rex/export_test.go diff --git a/diff/cell_test.go b/diff/cell_test.go index ca2ab4e..1df7b5c 100644 --- a/diff/cell_test.go +++ b/diff/cell_test.go @@ -103,23 +103,16 @@ func TestCellMatchesScreen(t *testing.T) { } long := "\t" + strings.Join(words, " ") + " 日本 end" old, new := "a\nb\n", "a\n"+long+"\nb\n" - renders := map[string]func(o diff.Options) *diff.Diff{ - "unified": func(o diff.Options) *diff.Diff { return diff.Render("x.go", old, new, o) }, - "split": func(o diff.Options) *diff.Diff { - o.Split = true - return diff.Render("x.go", old, new, o) - }, - "file": func(o diff.Options) *diff.Diff { return diff.RenderFile("x.go", new, o) }, - } opts := map[string]diff.Options{ "cut": {Width: 60}, "offset": {Width: 60, Offset: 13}, "wrap": {Width: 60, Wrap: true}, } src := map[diff.Side][]string{diff.SideOld: diff.Lines(old), diff.SideNew: diff.Lines(new)} - for rn, render := range renders { + for _, l := range renderers(old, new) { + rn := l.name for on, o := range opts { - d := render(o) + d := l.render(o) checked := 0 for i, l := range d.Lines { plain := ansi.Strip(l) diff --git a/diff/comment_test.go b/diff/comment_test.go index 795361e..5512568 100644 --- a/diff/comment_test.go +++ b/diff/comment_test.go @@ -209,7 +209,8 @@ func TestSnippetIsTheRealDiff(t *testing.T) { filepath.Join(dir, "old"), filepath.Join(dir, "new"), ) - git.Env = append(os.Environ(), testgit.Env()...) // no diff settings of the user + // No diff setting of the user applies. + git.Env = append(os.Environ(), testgit.Env()...) out, _ := git.Output() _, body, _ := strings.Cut(string(out), "@@\n") if strings.TrimSuffix(body, "\n") != want { diff --git a/diff/diff_test.go b/diff/diff_test.go index 7e090be..10a9222 100644 --- a/diff/diff_test.go +++ b/diff/diff_test.go @@ -38,6 +38,29 @@ func kinds(rows []diff.Row) string { return b.String() } +// renderer is a way to show the versions old and new. +type renderer struct { + name string + render func(o diff.Options) *diff.Diff +} + +// renderers returns the unified and the split diff of old and new, and the +// file new. +func renderers(old, new string) []renderer { + return []renderer{ + {"unified", func(o diff.Options) *diff.Diff { + return diff.Render("x.go", old, new, o) + }}, + {"split", func(o diff.Options) *diff.Diff { + o.Split = true + return diff.Render("x.go", old, new, o) + }}, + {"file", func(o diff.Options) *diff.Diff { + return diff.RenderFile("x.go", new, o) + }}, + } +} + // TestRenderRowsFollowLines checks the row of each line, in each layout and // theme. func TestRenderRowsFollowLines(t *testing.T) { @@ -104,12 +127,21 @@ func TestRenderRowsFollowLines(t *testing.T) { } } -// TestRenderSameContentIsEmpty checks that two equal versions give no lines. -func TestRenderSameContentIsEmpty(t *testing.T) { +// TestRenderKinds checks the kinds of the rows of a diff. Equal versions +// give no rows. A change of a tab to spaces is a change, as Count and git +// tell. +func TestRenderKinds(t *testing.T) { t.Parallel() - d := diff.Render("x.go", oldSrc, oldSrc, diff.Options{Width: 80}) - if len(d.Lines) != 0 || len(d.Rows) != 0 { - t.Fatalf("got %d lines and %d rows, want none", len(d.Lines), len(d.Rows)) + tests := []struct{ old, new, want string }{ + {oldSrc, oldSrc, ""}, + {"\tx\n", " x\n", "@-+"}, + } + for _, tt := range tests { + d := diff.Render("x.go", tt.old, tt.new, diff.Options{Width: 80}) + if got := kinds(d.Rows); got != tt.want || len(d.Lines) != len(d.Rows) { + t.Errorf("Render(%q, %q): kinds %q, %d lines; want %q, one line each", + tt.old, tt.new, got, len(d.Lines), tt.want) + } } } @@ -293,11 +325,6 @@ func TestRenderFile(t *testing.T) { if got := ansi.Strip(d.Lines[0]); got != " 1 package x" { t.Errorf("line 0 = %q, want %q", got, " 1 package x") } - // Control characters must not reach the terminal. - d = diff.RenderFile("x.txt", "a\x1b[31mb\n", diff.Options{}) - if strings.Contains(ansi.Strip(d.Lines[0]), "\x1b") { - t.Errorf("line 0 = %q, want no escape", d.Lines[0]) - } } // TestWrap checks that a wrapped long line shows all of its text and fits the @@ -307,23 +334,8 @@ func TestWrap(t *testing.T) { long := "x := []string{" + strings.Repeat(`"word", `, 12) + "}" old, new := "a\nb\n", "a\n"+long+"\nb\n" const width = 40 - renders := []struct { - name string - render func(o diff.Options) *diff.Diff - }{ - {"unified", func(o diff.Options) *diff.Diff { - return diff.Render("x.go", old, new, o) - }}, - {"split", func(o diff.Options) *diff.Diff { - o.Split = true - return diff.Render("x.go", old, new, o) - }}, - {"file", func(o diff.Options) *diff.Diff { - return diff.RenderFile("x.go", new, o) - }}, - } - for _, tt := range renders { - name, render := tt.name, tt.render + for _, l := range renderers(old, new) { + name, render := l.name, l.render cut := render(diff.Options{Width: width}) d := render(diff.Options{Width: width, Wrap: true}) if len(d.Lines) != len(d.Rows) || len(d.Lines) <= len(cut.Lines) { diff --git a/diff/hostile_test.go b/diff/hostile_test.go index 39b343a..f256e6e 100644 --- a/diff/hostile_test.go +++ b/diff/hostile_test.go @@ -44,6 +44,7 @@ func TestEscapesAreVisible(t *testing.T) { t.Parallel() tests := []struct{ src, want string }{ {"\x1b]52;c;aGk=\x07\n", "␛]52;c;aGk=␇"}, + {"a\x1b[31mb\n", "a␛[31mb"}, {"\x1b]7501;state=idle\x1b\\\n", "␛]7501;state=idle␛\\"}, {"a\x00b\n", "a␀b"}, {"\u009b31m\n", "\ufffd31m"}, @@ -87,16 +88,6 @@ func TestWrapWideText(t *testing.T) { } } -// TestTabToSpacesIsAChange checks that a diff shows a change of a tab to -// spaces, as Count and git do. -func TestTabToSpacesIsAChange(t *testing.T) { - t.Parallel() - d := diff.Render("x.go", "\tx\n", " x\n", diff.Options{}) - if got := kinds(d.Rows); got != "@-+" { - t.Errorf("kinds = %q, want %q", got, "@-+") - } -} - // TestRenderFileLineCount checks the number of rows for each kind of line // ending. func TestRenderFileLineCount(t *testing.T) { diff --git a/internal/diffview/cache_test.go b/internal/diffview/cache_test.go deleted file mode 100644 index 81768a8..0000000 --- a/internal/diffview/cache_test.go +++ /dev/null @@ -1,77 +0,0 @@ -package diffview - -import ( - "strings" - "testing" - - "github.com/alecthomas/chroma/v2/lexers" -) - -// TestCacheShared checks that a View uses the lines that another View puts -// in the same Cache. -func TestCacheShared(t *testing.T) { - t.Parallel() - render := func(c *Cache) string { - out, _, _ := New().Cache(c).Before("a.go", "x := 1\n").After("a.go", "x := 2\n").Render() - return out - } - c := &Cache{} - render(c) - if len(c.lines) == 0 { - t.Fatal("the cache is empty after a render, want lines") - } - for k := range c.lines { - c.lines[k] = "kept" - } - if got := render(c); strings.Count(got, "kept") != 2 { - t.Errorf("a View with the same cache shows\n%s\nwant the two kept lines", got) - } - if got := render(&Cache{}); strings.Contains(got, "kept") { - t.Errorf("a View with a new cache shows\n%s\nwant no kept lines", got) - } -} - -// TestCacheLimit checks that a full Cache empties, so that its memory stays -// small. -func TestCacheLimit(t *testing.T) { - t.Parallel() - var c Cache - line := strings.Repeat("x", 1<<20) - for i := range maxCacheSize >> 20 { - c.put(syntaxKey{r: uint32(i)}, line) - } - if got, want := len(c.lines), maxCacheSize>>20; got != want { - t.Errorf("the cache has %d lines, want %d", got, want) - } - c.put(syntaxKey{source: "a"}, "") - if len(c.lines) != 1 || c.size != 1 { - t.Errorf("the full cache has %d lines of %d bytes after a put, want 1 of 1", len(c.lines), c.size) - } -} - -// TestCacheNil checks that a View with a nil Cache renders. -func TestCacheNil(t *testing.T) { - t.Parallel() - if out, _, _ := New().Cache(nil).Before("a.go", "x\n").After("a.go", "y\n").Render(); out == "" { - t.Error(`Render with a nil Cache = "", want lines`) - } -} - -// TestCacheLexer checks that a View uses the last lexer of the Cache for -// the same file. It selects a new lexer for a changed file. -func TestCacheLexer(t *testing.T) { - t.Parallel() - c := &Cache{} - lexer := func(content string) string { - v := New().Cache(c).Before("a.zzq", content) - return v.chromaLexer().Config().Name - } - lexer("x\n") - c.lexer.l = lexers.Get("python") - if got := lexer("x\n"); got != "Python" { - t.Errorf("the same file has the lexer %q, want the kept Python", got) - } - if got := lexer("y\n"); got == "Python" { - t.Errorf("a changed file has the lexer %q, want a new lexer", got) - } -} diff --git a/internal/search/match_test.go b/internal/search/match_test.go deleted file mode 100644 index 812267d..0000000 --- a/internal/search/match_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package search - -import "testing" - -// TestMatch checks the smart case of herdr-reviewr. -func TestMatch(t *testing.T) { - t.Parallel() - tests := []struct { - text, query string - want bool - }{ - {"Foo bar", "foo", true}, - {"foo bar", "Foo", false}, - {"Foo bar", "Foo", true}, - {"FOO", "foo", true}, - {"x := 1", "", false}, - {"", "a", false}, - {"ÉCOLE", "école", false}, // only ASCII ignores case - {"école", "école", true}, - {"Éa", "Éa", true}, - {"\tx", "\tx", true}, - {"ab", "abc", false}, - } - for _, tt := range tests { - if got := Match(tt.text, tt.query); got != tt.want { - t.Errorf("Match(%q, %q) = %v, want %v", tt.text, tt.query, got, tt.want) - } - } -} diff --git a/internal/search/search_test.go b/internal/search/search_test.go index 2314856..d7b2ad1 100644 --- a/internal/search/search_test.go +++ b/internal/search/search_test.go @@ -1,34 +1,43 @@ -package search +package search_test import ( "fmt" "slices" "testing" + + "github.com/rednafi/rexdiff/internal/search" ) // TestFiles checks the order and the limit of the files. func TestFiles(t *testing.T) { t.Parallel() paths := []string{"a.go", "b.go", "c/d.go", "main.go"} + var many []string + for i := range 60 { + many = append(many, fmt.Sprintf("f%02d.txt", i)) + } tests := []struct { name, q string + paths []string recent []string limit int want []string wantTotal int }{ - {"empty query", "", nil, 50, paths, 4}, - {"recent first", "", []string{"main.go", "b.go"}, 50, []string{"main.go", "b.go", "a.go", "c/d.go"}, 4}, - {"a gone recent pick", "", []string{"gone.go", "b.go"}, 50, []string{"b.go", "a.go", "c/d.go", "main.go"}, 4}, - {"empty query limit", "", []string{"main.go"}, 2, []string{"main.go", "a.go"}, 4}, - {"fuzzy", "dgo", nil, 50, []string{"c/d.go"}, 1}, - {"recent does not rank a query", "go", []string{"main.go"}, 2, []string{"a.go", "b.go"}, 4}, - {"no match", "zzz", nil, 50, nil, 0}, + {"empty query", "", paths, nil, 50, paths, 4}, + {"recent first", "", paths, []string{"main.go", "b.go"}, 50, []string{"main.go", "b.go", "a.go", "c/d.go"}, 4}, + {"a gone recent pick", "", paths, []string{"gone.go", "b.go"}, 50, []string{"b.go", "a.go", "c/d.go", "main.go"}, 4}, + {"empty query limit", "", paths, []string{"main.go"}, 2, []string{"main.go", "a.go"}, 4}, + {"fuzzy", "dgo", paths, nil, 50, []string{"c/d.go"}, 1}, + {"recent does not rank a query", "go", paths, []string{"main.go"}, 2, []string{"a.go", "b.go"}, 4}, + {"no match", "zzz", paths, nil, 50, nil, 0}, + // A query shows at most the limit, and counts all the matches. + {"query limit", "f", many, nil, search.FileLimit, many[:search.FileLimit], 60}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got, total := Files(paths, tt.recent, tt.q, tt.limit) + got, total := search.Files(tt.paths, tt.recent, tt.q, tt.limit) if !slices.Equal(got, tt.want) || total != tt.wantTotal { t.Errorf("Files(%q, %q) = %q, %d; want %q, %d", tt.q, tt.recent, got, total, tt.want, tt.wantTotal) @@ -37,16 +46,30 @@ func TestFiles(t *testing.T) { } } -// TestFilesLimit checks that a query shows at most the limit, and counts -// all the matches. -func TestFilesLimit(t *testing.T) { +// TestMatch checks the smart case of herdr-reviewr. +func TestMatch(t *testing.T) { t.Parallel() - var paths []string - for i := range 60 { - paths = append(paths, fmt.Sprintf("f%02d.txt", i)) + tests := []struct { + text, query string + want bool + }{ + {"Foo bar", "foo", true}, + {"foo bar", "Foo", false}, + {"Foo bar", "Foo", true}, + {"FOO", "foo", true}, + {"x := 1", "", false}, + {"", "a", false}, + {"ÉCOLE", "école", false}, // only ASCII ignores case + {"école", "école", true}, + {"Éa", "Éa", true}, + {"\tx", "\tx", true}, + {"ab", "abc", false}, } - got, total := Files(paths, nil, "f", FileLimit) - if len(got) != FileLimit || total != 60 { - t.Errorf("Files(f) = %d paths, total %d; want %d, 60", len(got), total, FileLimit) + for _, tt := range tests { + got := search.Match(tt.text, tt.query) + if got != tt.want { + t.Errorf("Match(%q, %q) = %v, want %v", + tt.text, tt.query, got, tt.want) + } } } diff --git a/internal/tree/tree_test.go b/internal/tree/tree_test.go index af91c11..5f3487d 100644 --- a/internal/tree/tree_test.go +++ b/internal/tree/tree_test.go @@ -1,31 +1,59 @@ -package tree +package tree_test import ( "fmt" "slices" + "strings" "testing" + + "github.com/rednafi/rexdiff/internal/tree" ) // The tests come from file_list.rs of herdr-reviewr. // changed returns changed entries for paths. -func changed(paths ...string) []Entry { - var es []Entry +func changed(paths ...string) []tree.Entry { + var es []tree.Entry for _, p := range paths { - es = append(es, Entry{Path: p, Changed: true}) + es = append(es, tree.Entry{Path: p, Changed: true}) } return es } -// shape returns the rows as "depth:dir:name" or "depth:file:name". -func shape(rows []Row) []string { +// plain returns entries for paths with no change. +func plain(paths ...string) []tree.Entry { + var es []tree.Entry + for _, p := range paths { + es = append(es, tree.Entry{Path: p}) + } + return es +} + +// ignoredDir returns an ignored directory that git lists as one path. +func ignoredDir(path string) tree.Entry { + return tree.Entry{Path: path, Ignored: true, Dir: true} +} + +// shape returns the rows as "depth:dir:name" or "depth:file:name". The +// marks "+" (changed), "!" (ignored), and "v" (expanded) follow the name. +func shape(rows []tree.Row) []string { var out []string for _, r := range rows { kind := "file" if r.File < 0 { kind = "dir" } - out = append(out, fmt.Sprintf("%d:%s:%s", r.Depth, kind, r.Name)) + var b strings.Builder + fmt.Fprintf(&b, "%d:%s:%s", r.Depth, kind, r.Name) + for _, m := range []struct { + on bool + mark string + }{{r.Changed, "+"}, {r.Ignored, "!"}, {r.Expanded, "v"}} { + if m.on { + b.WriteString(" " + m.mark) + } + } + out = append(out, b.String()) } return out } @@ -39,11 +67,11 @@ func set(paths ...string) map[string]bool { return m } -func TestBuildShape(t *testing.T) { +func TestBuild(t *testing.T) { t.Parallel() tests := []struct { name string - entries []Entry + entries []tree.Entry toggled map[string]bool expanded bool want []string @@ -52,7 +80,10 @@ func TestBuildShape(t *testing.T) { name: "directories before files", entries: changed("src/app.rs", "src/ui.rs", "Cargo.toml"), expanded: true, - want: []string{"0:dir:src", "1:file:app.rs", "1:file:ui.rs", "0:file:Cargo.toml"}, + want: []string{ + "0:dir:src + v", "1:file:app.rs", "1:file:ui.rs", + "0:file:Cargo.toml", + }, }, { name: "a chain of one child ends in a file row", @@ -64,31 +95,82 @@ func TestBuildShape(t *testing.T) { name: "a chain stops at a branch", entries: changed("a/b/c/one.rs", "a/b/c/two.rs"), expanded: true, - want: []string{"0:dir:a/b/c", "1:file:one.rs", "1:file:two.rs"}, + want: []string{"0:dir:a/b/c + v", "1:file:one.rs", "1:file:two.rs"}, }, { name: "a collapsed directory hides its children", entries: changed("src/app.rs", "src/ui.rs"), toggled: set("src"), expanded: true, - want: []string{"0:dir:src"}, + want: []string{"0:dir:src +"}, }, { name: "all files starts collapsed", entries: changed("src/app.rs", "src/ui.rs"), - want: []string{"0:dir:src"}, + want: []string{"0:dir:src +"}, }, { name: "a toggle expands in all files", entries: changed("src/app.rs", "src/ui.rs"), toggled: set("src"), - want: []string{"0:dir:src", "1:file:app.rs", "1:file:ui.rs"}, + want: []string{"0:dir:src + v", "1:file:app.rs", "1:file:ui.rs"}, + }, + { + name: "only a directory with a change has the mark", + entries: append(changed("src/ui.rs"), plain("src/app.rs", "docs/a.md", "docs/b.md")...), + want: []string{"0:dir:docs", "0:dir:src +"}, + }, + { + name: "the mark stays when the directory expands", + entries: append(changed("src/ui.rs"), plain("src/app.rs", "docs/a.md", "docs/b.md")...), + toggled: set("src"), + want: []string{ + "0:dir:docs", "0:dir:src + v", "1:file:app.rs", + "1:file:ui.rs", + }, + }, + { + name: "a deep change marks each directory above it", + entries: append(changed("a/b/deep.rs"), plain("a/top.rs", "a/b/other.rs")...), + toggled: set("a"), + want: []string{"0:dir:a + v", "1:dir:b +", "1:file:top.rs"}, + }, + { + name: "an ignored directory starts collapsed", + entries: []tree.Entry{ignoredDir("target")}, + want: []string{"0:dir:target !"}, + }, + { + name: "the entries of an expanded ignored directory show under it", + entries: []tree.Entry{ + ignoredDir("target"), + {Path: "target/a.o", Ignored: true}, + {Path: "target/b.o", Ignored: true}, + }, + toggled: set("target"), + want: []string{"0:dir:target ! v", "1:file:a.o !", "1:file:b.o !"}, + }, + { + // The user can collapse such a directory. + name: "an ignored directory with one child keeps its row", + entries: []tree.Entry{ + ignoredDir("a"), + ignoredDir("a/b"), + {Path: "a/b/c.o", Ignored: true}, + }, + toggled: set("a", "a/b"), + want: []string{"0:dir:a ! v", "1:dir:b ! v", "2:file:c.o !"}, + }, + { + name: "an ignored file", + entries: []tree.Entry{{Path: "build.log", Ignored: true}}, + want: []string{"0:file:build.log !"}, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { t.Parallel() - got := shape(Build(tt.entries, tt.toggled, tt.expanded)) + got := shape(tree.Build(tt.entries, tt.toggled, tt.expanded)) if !slices.Equal(got, tt.want) { t.Errorf("Build = %q, want %q", got, tt.want) } @@ -96,99 +178,23 @@ func TestBuildShape(t *testing.T) { } } -func TestBuildFileIndex(t *testing.T) { - t.Parallel() - rows := Build(changed("z.rs", "a.rs"), nil, true) - // The rows are in alphabetical order, so a.rs is first. - if rows[0].File != 1 || rows[1].File != 0 { - t.Errorf("file indices %d, %d; want 1, 0", rows[0].File, rows[1].File) - } - if rows[0].Dir != "" { - t.Errorf("a file row has the directory %q, want none", rows[0].Dir) - } -} - -func TestBuildChangeMark(t *testing.T) { - t.Parallel() - es := append(changed("src/ui.rs"), - Entry{Path: "src/app.rs"}, Entry{Path: "docs/a.md"}, Entry{Path: "docs/b.md"}) - rows := Build(es, nil, false) - if got, want := shape(rows), []string{"0:dir:docs", "0:dir:src"}; !slices.Equal(got, want) { - t.Fatalf("Build = %q, want %q", got, want) - } - if rows[0].Changed || !rows[1].Changed { - t.Errorf("changed docs %v, src %v; want false, true", rows[0].Changed, rows[1].Changed) - } - if rows[1].Dir != "src" || rows[1].File != -1 || rows[1].Expanded { - t.Errorf("src row %+v, want a collapsed directory", rows[1]) - } - - // The mark stays when the directory expands. - rows = Build(es, set("src"), false) - want := []string{"0:dir:docs", "0:dir:src", "1:file:app.rs", "1:file:ui.rs"} - if got := shape(rows); !slices.Equal(got, want) { - t.Fatalf("Build = %q, want %q", got, want) - } - if !rows[1].Changed || !rows[1].Expanded { - t.Errorf("expanded src: changed %v, expanded %v; want true, true", - rows[1].Changed, rows[1].Expanded) - } - - // A change deep in the tree marks each directory above it. - es = append(changed("a/b/deep.rs"), Entry{Path: "a/top.rs"}, Entry{Path: "a/b/other.rs"}) - rows = Build(es, set("a"), false) - want = []string{"0:dir:a", "1:dir:b", "1:file:top.rs"} - if got := shape(rows); !slices.Equal(got, want) { - t.Fatalf("Build = %q, want %q", got, want) - } - if !rows[0].Changed || !rows[1].Changed { - t.Errorf("changed a %v, a/b %v; want true, true", rows[0].Changed, rows[1].Changed) - } - if rows[1].Dir != "a/b" { - t.Errorf("the path of b is %q, want a/b", rows[1].Dir) - } -} - -func TestBuildIgnored(t *testing.T) { +// TestBuildIndex checks the entry index of a file row, and the path of a +// directory row. +func TestBuildIndex(t *testing.T) { t.Parallel() - rows := Build([]Entry{{Path: "target", Ignored: true, Dir: true}}, nil, false) - if len(rows) != 1 { - t.Fatalf("Build = %q, want one row", shape(rows)) - } - if r := rows[0]; !r.Ignored || r.File != -1 || r.Expanded || r.Changed { - t.Errorf("ignored directory %+v, want an ignored, collapsed directory", r) - } - - // The entries of an expanded ignored directory show under it. - es := []Entry{ - {Path: "target", Ignored: true, Dir: true}, - {Path: "target/a.o", Ignored: true}, - {Path: "target/b.o", Ignored: true}, + es := append(changed("z.rs", "a/b/deep.rs"), plain("a/top.rs", "a/b/other.rs")...) + rows := tree.Build(es, nil, true) + type place struct { + dir string + file int } - rows = Build(es, set("target"), false) - want := []string{"0:dir:target", "1:file:a.o", "1:file:b.o"} - if got := shape(rows); !slices.Equal(got, want) { - t.Fatalf("Build = %q, want %q", got, want) - } - if !rows[0].Ignored || !rows[1].Ignored { - t.Error("the rows under an ignored directory are not ignored, want ignored") - } - - // An expanded ignored directory with one child keeps its own row, so - // the user can collapse it. - es = []Entry{ - {Path: "a", Ignored: true, Dir: true}, - {Path: "a/b", Ignored: true, Dir: true}, - {Path: "a/b/c.o", Ignored: true}, - } - rows = Build(es, set("a", "a/b"), false) - want = []string{"0:dir:a", "1:dir:b", "2:file:c.o"} - if got := shape(rows); !slices.Equal(got, want) { - t.Fatalf("Build = %q, want %q", got, want) + var got []place + for _, r := range rows { + got = append(got, place{r.Dir, r.File}) } - - rows = Build([]Entry{{Path: "build.log", Ignored: true}}, nil, false) - if !rows[0].Ignored || rows[0].File != 0 { - t.Errorf("ignored file %+v, want an ignored file row", rows[0]) + // The rows are in alphabetical order, so z.rs is last. + want := []place{{"a", -1}, {"a/b", -1}, {"", 1}, {"", 3}, {"", 2}, {"", 0}} + if !slices.Equal(got, want) { + t.Errorf("Build places = %v, want %v (rows %q)", got, want, shape(rows)) } } diff --git a/internal/turn/turn_test.go b/internal/turn/turn_test.go index 2b5e7b6..91867ca 100644 --- a/internal/turn/turn_test.go +++ b/internal/turn/turn_test.go @@ -1,117 +1,131 @@ -package turn +package turn_test import ( "testing" + "github.com/rednafi/rexdiff/internal/turn" "github.com/rednafi/rexdiff/rex" ) // The tests come from turn.rs of herdr-reviewr. -// TestFold checks how the states of the agents fold into one state. +// The states of one agent that give each state of a repository. +var ( + resting = []rex.State{rex.StateIdle} + working = []rex.State{rex.StateWorking} + held = []rex.State{rex.StateBlocked} +) + +// step is one call to a Tracker and the edges that it gives. With gap, +// the step calls Gap and not Observe. +type step struct { + states []rex.State + gap bool + started, ended bool +} + +// TestFold checks how the states of the agents fold into one state. After a +// rest, only work starts a turn. After work, only a rest ends it. func TestFold(t *testing.T) { t.Parallel() tests := []struct { name string states []rex.State - want state + // starts tells that the states start a turn after a rest. ends + // tells that they end a turn after work. A held state does neither. + starts, ends bool }{ // No agent rests, so a fresh pane tracks the next turn it sees. - {"no agent", nil, resting}, - {"idle and working", []rex.State{rex.StateIdle, rex.StateWorking}, working}, - {"blocked and working", []rex.State{rex.StateBlocked, rex.StateWorking}, working}, - {"idle and done", []rex.State{rex.StateIdle, rex.StateDone}, resting}, - {"blocked and idle", []rex.State{rex.StateBlocked, rex.StateIdle}, held}, + {"no agent", nil, false, true}, + {"idle and working", []rex.State{rex.StateIdle, rex.StateWorking}, true, false}, + {"blocked and working", []rex.State{rex.StateBlocked, rex.StateWorking}, true, false}, + {"idle and done", []rex.State{rex.StateIdle, rex.StateDone}, false, true}, + {"blocked and idle", []rex.State{rex.StateBlocked, rex.StateIdle}, false, false}, // An unknown state never rests, so it starts no turn. - {"unknown", []rex.State{"compacting"}, held}, + {"unknown", []rex.State{"compacting"}, false, false}, } for _, tt := range tests { - if got := fold(tt.states...); got != tt.want { - t.Errorf("%s: fold(%q) = %v, want %v", tt.name, tt.states, got, tt.want) - } + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + var rest turn.Tracker + rest.Observe(resting...) + if started, _ := rest.Observe(tt.states...); started != tt.starts { + t.Errorf("after a rest: started %v, want %v", started, tt.starts) + } + var work turn.Tracker + work.Observe(resting...) + work.Observe(working...) + if _, ended := work.Observe(tt.states...); ended != tt.ends { + t.Errorf("after work: ended %v, want %v", ended, tt.ends) + } + }) } } -// step is one state for a Tracker and the edges that it gives. -type step struct { - s state - started, ended bool -} - -// run gives the states of steps to a new Tracker, and checks the edges. -func run(t *testing.T, steps ...step) { - t.Helper() - var tr Tracker - for i, st := range steps { - started, ended := tr.observe(st.s) - if started != st.started || ended != st.ended { - t.Errorf("step %d (%v): started %v, ended %v; want %v, %v", - i, st.s, started, ended, st.started, st.ended) - } - } -} - -func TestEmptyRepoStartsOnFirstWorker(t *testing.T) { +// TestTracker checks the edges of a series of states. +func TestTracker(t *testing.T) { t.Parallel() - var tr Tracker - tr.Observe() - if started, _ := tr.Observe(rex.StateWorking); !started { - t.Error("the first worker after no agent starts no turn") + tests := []struct { + name string + steps []step + }{ + {"empty repo starts on the first worker", []step{ + {states: nil}, + {states: working, started: true}, + }}, + // The first state never starts a turn. + {"start after a rest", []step{ + {states: resting}, + {states: working, started: true}, + }}, + // A prompt in the middle of a turn does not start another turn. + {"held back to work continues", []step{ + {states: resting}, + {states: working, started: true}, + {states: held}, + {states: working}, + }}, + {"end only after work", []step{ + {states: resting}, // no work before, so no end + {states: working, started: true}, // a start is never an end + {states: held}, // a pause, not an end + {states: working}, + {states: resting, ended: true}, + }}, + // The prompt keeps the turn open. A rest after it ends the turn once. + {"end through held", []step{ + {states: resting}, + {states: working, started: true}, + {states: held}, + {states: resting, ended: true}, + {states: resting}, + }}, + // The start of this turn is not seen. + {"lone first working starts nothing", []step{ + {states: working}, + }}, + // Nobody sees the agents in a gap, so the next work starts no turn. + {"gap", []step{ + {states: resting}, + {gap: true}, + {states: working}, + }}, } -} - -func TestStartAfterRest(t *testing.T) { - t.Parallel() - // The first state never starts a turn. - run(t, step{resting, false, false}, step{working, true, false}) -} - -func TestHeldBackToWorkContinues(t *testing.T) { - t.Parallel() - // A prompt in the middle of a turn does not start another turn. - run(t, - step{resting, false, false}, - step{working, true, false}, - step{held, false, false}, - step{working, false, false}, - ) -} - -func TestEndOnlyAfterWork(t *testing.T) { - t.Parallel() - run(t, - step{resting, false, false}, // no work before, so no end - step{working, true, false}, // a start is never an end - step{held, false, false}, // a pause, not an end - step{working, false, false}, - step{resting, false, true}, - ) -} - -func TestEndThroughHeld(t *testing.T) { - t.Parallel() - // The prompt keeps the turn open. A rest after it ends the turn once. - run(t, - step{resting, false, false}, - step{working, true, false}, - step{held, false, false}, - step{resting, false, true}, - step{resting, false, false}, - ) -} - -func TestLoneFirstWorkingStartsNothing(t *testing.T) { - t.Parallel() - // The start of this turn is not seen. - run(t, step{working, false, false}) -} - -func TestGap(t *testing.T) { - t.Parallel() - var tr Tracker - tr.Observe(rex.StateIdle) - tr.Gap() - if started, _ := tr.Observe(rex.StateWorking); started { - t.Error("the first state after a gap starts a turn") + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + var tr turn.Tracker + for i, st := range tt.steps { + if st.gap { + tr.Gap() + continue + } + started, ended := tr.Observe(st.states...) + if started != st.started || ended != st.ended { + t.Errorf("step %d (%q): started %v, ended %v; want %v, %v", + i, st.states, started, ended, st.started, st.ended) + } + } + }) } } diff --git a/rex/export_test.go b/rex/export_test.go deleted file mode 100644 index 9d394e6..0000000 --- a/rex/export_test.go +++ /dev/null @@ -1,9 +0,0 @@ -package rex - -import "path/filepath" - -// NewTestClient returns a client of the session S for the block -// block:self, with the rex in dir. -func NewTestClient(dir string) *Client { - return &Client{Block: "block:self", session: "S", bin: filepath.Join(dir, "rex")} -} diff --git a/rex/rex_test.go b/rex/rex_test.go index 7a638dd..63b4e6b 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -16,12 +16,30 @@ import ( "github.com/rednafi/rexdiff/rex" ) -// fakeRex writes a shell script that answers like the rex tool, with -// recorded output. It logs each call to the file "calls" in its directory. -func fakeRex(t *testing.T) (*rex.Client, string) { +// client writes a rex script with body in a new directory. It sets the +// environment of the block block:self in the session S, and returns the +// client of FromEnv and the directory. A test that calls it cannot run in +// parallel. +func client(t *testing.T, body string) (*rex.Client, string) { t.Helper() dir := t.TempDir() - script := `printf "%s\n" "$*" >> "` + dir + `/calls" + testgit.Script(t, dir, "rex", body) + t.Setenv("REX_SESSION", "S") + t.Setenv("REX_BLOCK", "block:self") + t.Setenv("REX_BIN_DIR", dir) + c := rex.FromEnv() + if c == nil || c.Block != "block:self" { + t.Fatalf("FromEnv = %+v, want the block block:self", c) + } + return c, dir +} + +// fakeRex returns a client of a rex script that answers with recorded +// output. The script logs each call to the file "calls" in its directory, +// and prints the file "events" for "rex events". +func fakeRex(t *testing.T) (*rex.Client, string) { + t.Helper() + script := `printf "%s\n" "$*" >> "${0%/*}/calls" case "$*" in "api call -s S session.list_blocks {}") echo '{"blocks":[ @@ -55,18 +73,16 @@ case "$*" in echo 'Error: no block matches nosuch more detail' >&2; exit 1 ;; "events -s S --json") - cat "` + dir + `/events" ;; + cat "${0%/*}/events" ;; *) ;; esac ` - testgit.Script(t, dir, "rex", script) - return rex.NewTestClient(dir), dir + return client(t, script) } // TestAgents checks that Agents returns only the terminal blocks that send // an app name, without the block of the client. func TestAgents(t *testing.T) { - t.Parallel() c, _ := fakeRex(t) agents, err := c.Agents(t.Context()) if err != nil { @@ -96,7 +112,6 @@ func TestAgents(t *testing.T) { // TestCommands checks the rex calls of Resolve, Paste, Focus, Split, and // SetLabel. func TestCommands(t *testing.T) { - t.Parallel() c, dir := fakeRex(t) ctx := t.Context() if id, err := c.Resolve(ctx, "agent"); err != nil || id != "block:pi" { @@ -147,9 +162,9 @@ func blockEvent(block, name, payload string) string { } // TestWatch checks that Watch reports only the changes of the status of -// the program, and closed blocks. +// the program, and closed blocks. The fake rex stops after the events, so +// Watch reports a reconnect and then the events again. func TestWatch(t *testing.T) { - t.Parallel() c, dir := fakeRex(t) events := strings.Join([]string{ blockEvent("block:pi", "program_status_changed", `{"id":"",`+ @@ -171,42 +186,13 @@ func TestWatch(t *testing.T) { t.Fatal(err) } - want := []rex.Event{ + once := []rex.Event{ {Block: "block:pi", Status: rex.Status{App: "pi", State: rex.StateWorking}}, {Block: "block:pi"}, {Block: "block:pi", Closed: true}, } + want := slices.Concat(once, []rex.Event{{Reconnect: true}}, once) // Stop Watch when it reports all the events. - ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second) - defer cancel() - var got []rex.Event - err := c.Watch(ctx, func(e rex.Event) { - got = append(got, e) - if len(got) == len(want) { - cancel() - } - }) - if !errors.Is(err, context.Canceled) { - t.Errorf("Watch = %v, want context.Canceled", err) - } - if !slices.Equal(got, want) { - t.Errorf("events got:\n%+v\nwant:\n%+v", got, want) - } -} - -// TestWatchReconnect checks that Watch reports a reconnect after it starts -// rex again. -func TestWatchReconnect(t *testing.T) { - t.Parallel() - c, dir := fakeRex(t) - line := `{"type":"session_event","payload":{"event":{"type":"block_closed",` + - `"payload":{"block_id":"block:pi"}}}}` - path := filepath.Join(dir, "events") - if err := os.WriteFile(path, []byte(line+"\n"), 0o644); err != nil { - t.Fatal(err) - } - closed := rex.Event{Block: "block:pi", Closed: true} - want := []rex.Event{closed, {Reconnect: true}, closed} ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) defer cancel() var got []rex.Event @@ -223,25 +209,13 @@ func TestWatchReconnect(t *testing.T) { } } -// TestFromEnv checks that FromEnv uses the environment that Rex sets. +// TestFromEnv checks that FromEnv returns nil outside Rex. The client of +// the other tests comes from FromEnv in a fake block. func TestFromEnv(t *testing.T) { t.Setenv("REX_SESSION", "") if c := rex.FromEnv(); c != nil { t.Errorf("FromEnv outside Rex = %+v, want nil", c) } - // fakeRex sets the environment of a block. The client runs the rex - // command of REX_BIN_DIR, in the session REX_SESSION. - c, dir := fakeRex(t) - if c == nil || c.Block != "block:self" { - t.Fatalf("FromEnv = %+v, want the block block:self", c) - } - if err := c.Focus(t.Context(), "block:pi"); err != nil { - t.Fatal(err) - } - calls, err := os.ReadFile(filepath.Join(dir, "calls")) - if err != nil || !strings.Contains(string(calls), "api call -s S ") { - t.Errorf("calls %q, want a call to the fake rex in session S", calls) - } } // TestReloadConfigOutsideRex checks that ReloadConfig runs the rex of the @@ -270,12 +244,11 @@ func TestReloadConfigOutsideRex(t *testing.T) { // TestErrorKeepsCause checks that the error of a failed rex is the message // of rex. The error also wraps the exit error of the process. func TestErrorKeepsCause(t *testing.T) { - t.Parallel() - dir := t.TempDir() - testgit.Script(t, dir, "rex", "echo 'Error: no Rex server' >&2\nexit 3\n") - err := rex.NewTestClient(dir).Focus(t.Context(), "block:pi") + c, _ := client(t, "echo 'Error: no Rex server' >&2\nexit 3\n") + err := c.Focus(t.Context(), "block:pi") ee, ok := errors.AsType[*exec.ExitError](err) if err == nil || err.Error() != "no Rex server" || !ok || ee.ExitCode() != 3 { - t.Errorf("Focus error = %v, exit error %v; want %q wrapping exit 3", err, ok, "no Rex server") + t.Errorf("Focus error = %v, exit error %v; want %q wrapping exit 3", + err, ok, "no Rex server") } } diff --git a/update/update_test.go b/update/update_test.go index 48c5990..c77c5fa 100644 --- a/update/update_test.go +++ b/update/update_test.go @@ -1,4 +1,4 @@ -package update +package update_test import ( "archive/tar" @@ -7,45 +7,18 @@ import ( "context" "crypto/sha256" "encoding/hex" - "errors" "fmt" + "io" "net/http" "net/http/httptest" "os" "path/filepath" "runtime" - "slices" "strings" "testing" -) -// TestNewer checks which tags are newer than the running version. -func TestNewer(t *testing.T) { - t.Parallel() - tests := []struct { - tag, have string - want bool - }{ - {"v0.2.0", "v0.1.0", true}, - {"v0.1.1", "v0.1.0", true}, - {"v1.0.0", "v0.9.9", true}, - {"v0.10.0", "v0.9.0", true}, - {"0.2.0", "v0.1.0", false}, // GoReleaser names archives with the v - {"v0.1.0", "v0.1.0", false}, - {"v0.1.0", "v0.2.0", false}, - {"v0.2.0-rc1", "v0.1.0", false}, - {"v0.2.0", "v0.0.0-20261024-abcdef", false}, - {"", "v0.1.0", false}, - {"v0.2.0", "", false}, - {"v+1.0.0", "v0.9.0", false}, // Atoi accepts a sign - {"v1.-0.0", "v0.9.0", false}, - } - for _, tc := range tests { - if got := newer(tc.tag, tc.have); got != tc.want { - t.Errorf("newer(%q, %q) = %v, want %v", tc.tag, tc.have, got, tc.want) - } - } -} + "github.com/rednafi/rexdiff/update" +) // file writes content to a new file at path with mode 0755, and returns // path. @@ -60,136 +33,196 @@ func file(t *testing.T, path, content string) string { return path } -// TestDetect checks that detect finds a Homebrew cask by the Caskroom of -// its link, and go install by its flag. -func TestDetect(t *testing.T) { - t.Parallel() - dir := t.TempDir() - cask := file(t, filepath.Join(dir, "Caskroom", "rexdiff", "0.1.0", "rexdiff"), "") - link := filepath.Join(dir, "bin", "rexdiff") - if err := os.MkdirAll(filepath.Dir(link), 0o755); err != nil { - t.Fatal(err) - } - if err := os.Symlink(cask, link); err != nil { - t.Fatal(err) - } - plain := file(t, filepath.Join(dir, "plain", "rexdiff"), "") - tests := []struct { - bin, version string - goInstall bool - want method - }{ - {link, "v0.1.0", false, methodBrew}, - {link, "v0.1.0", true, methodBrew}, - {plain, "v0.1.0", true, methodGo}, - {plain, "v0.1.0", false, methodDownload}, +// detect returns the Updater of the rexdiff at bin, with the latest +// release at latest. A test that calls it cannot run in parallel. +func detect(t *testing.T, latest, bin, stamped string) *update.Updater { + t.Helper() + t.Setenv("REXDIFF_LATEST_URL", latest) + u := update.Detect(bin, stamped) + if u == nil { + t.Fatalf("Detect(%s, %s) = nil, want an Updater", bin, stamped) } - for _, tc := range tests { - u := detect(tc.bin, tc.version, tc.goInstall) - if u == nil || u.method != tc.want { - t.Errorf("detect(%s, %s, %v) = %+v, want %s", tc.bin, tc.version, tc.goInstall, u, tc.want) + return u +} + +// serve starts a server that answers with the file of files at the path +// of a request, or 404. The caller can add files after serve returns. It +// returns the address of the server. +func serve(t *testing.T, files map[string]string) string { + t.Helper() + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + b, ok := files[req.URL.Path] + if !ok { + http.NotFound(w, req) + return } - } - for _, v := range []string{"", "(devel)", "v0.0.0-20261024-abcdef"} { - if u := detect(plain, v, true); u != nil { - t.Errorf("detect of version %q = %+v, want nil", v, u) + if _, err := io.WriteString(w, b); err != nil { + t.Error(err) } - } - if u := detect("", "v0.1.0", false); u != nil { - t.Errorf("detect without a path = %+v, want nil", u) - } + })) + t.Cleanup(srv.Close) + return srv.URL } -// TestLatest checks Latest against a fake GitHub API. -func TestLatest(t *testing.T) { +// TestVersion checks the version from the release build, and the builds +// that cannot update. A test binary has no version, like a build for +// development. +func TestVersion(t *testing.T) { t.Parallel() - answer := func(code int, body string) *Updater { - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { - w.WriteHeader(code) - fmt.Fprint(w, body) - })) - t.Cleanup(srv.Close) - return &Updater{version: "v0.1.0", latestURL: srv.URL} - } - r, isNewer, err := answer(200, `{"tag_name": "v0.2.0", "assets": [{"name": "a", "browser_download_url": "u"}], "other": 1}`).Latest(t.Context()) - if err != nil || !isNewer || r.Tag != "v0.2.0" || len(r.assets) != 1 || r.assets[0].URL != "u" { - t.Errorf("Latest = %+v, %v, %v; want v0.2.0 with one asset, newer", r, isNewer, err) - } - if _, isNewer, err := answer(200, `{"tag_name": "v0.1.0"}`).Latest(t.Context()); err != nil || isNewer { - t.Errorf("Latest of the same version: newer %v, %v; want false, nil", isNewer, err) - } - if _, _, err := answer(403, `rate limit`).Latest(t.Context()); err == nil || !strings.Contains(err.Error(), "403") { - t.Errorf("Latest after 403: %v, want an error with the status", err) - } - if _, _, err := answer(200, `not json`).Latest(t.Context()); err == nil { - t.Error("Latest of bad JSON: no error, want an error") + for stamped, want := range map[string]string{"0.2.0": "v0.2.0", "v0.2.0": "v0.2.0", "": ""} { + if got := update.Version(stamped); got != want { + t.Errorf("Version(%q) = %q, want %q", stamped, got, want) + } } -} - -// fakeRun records the commands, and answers -version with version. -type fakeRun struct { - calls []string - version string - fail string // a command name that fails -} - -func (f *fakeRun) run(_ context.Context, env []string, name string, args ...string) ([]byte, error) { - f.calls = append(f.calls, strings.TrimSpace(strings.Join(env, " ")+" "+name+" "+strings.Join(args, " "))) - if name == f.fail { - return []byte("Updating Homebrew...\nError: another brew is running\n"), errors.New("exit status 1") + tests := []struct{ bin, stamped string }{ + {"/bin/rexdiff", ""}, + {"/bin/rexdiff", "(devel)"}, + {"/bin/rexdiff", "0.0.0-20261024-abcdef"}, + {"", "0.1.0"}, } - if len(args) == 1 && args[0] == "-version" { - return []byte(f.version + "\n"), nil + for _, tt := range tests { + if u := update.Detect(tt.bin, tt.stamped); u != nil { + t.Errorf("Detect(%q, %q) = %+v, want nil", tt.bin, tt.stamped, u) + } } - return nil, nil } -// TestInstallCommands checks the commands of Homebrew and go install, and -// the check of the new version. -func TestInstallCommands(t *testing.T) { - t.Parallel() - r := Release{Tag: "v0.2.0"} - brew := &fakeRun{version: "v0.2.0"} - u := &Updater{bin: "/opt/homebrew/bin/rexdiff", version: "v0.1.0", method: methodBrew, run: brew.run} - if err := u.Install(t.Context(), r); err != nil { - t.Fatal(err) - } - want := []string{ - "HOMEBREW_NO_ENV_HINTS=1 NONINTERACTIVE=1 brew update --quiet", - "HOMEBREW_NO_ENV_HINTS=1 NONINTERACTIVE=1 HOMEBREW_NO_AUTO_UPDATE=1 brew upgrade --cask rexdiff", - "/opt/homebrew/bin/rexdiff -version", - } - if !slices.Equal(brew.calls, want) { - t.Errorf("brew calls got:\n%s\nwant:\n%s", strings.Join(brew.calls, "\n"), strings.Join(want, "\n")) +// TestLatest checks Latest against a fake GitHub API, and which tags are +// newer than the running version. +func TestLatest(t *testing.T) { + release := func(tag string) string { + return `{"tag_name": "` + tag + `", "assets": [], "other": 1}` } - - gorun := &fakeRun{version: "v0.2.0"} - u = &Updater{bin: "/home/u/go/bin/rexdiff", version: "v0.1.0", method: methodGo, run: gorun.run} - if err := u.Install(t.Context(), r); err != nil { - t.Fatal(err) + tests := []struct { + name, have, body string // a body of "" is a 404 + tag string // the tag of the release, or "" + newer bool + err string // a part of the error, or "" + }{ + {"minor", "0.1.0", release("v0.2.0"), "v0.2.0", true, ""}, + {"patch", "v0.1.0", release("v0.1.1"), "v0.1.1", true, ""}, + {"major", "0.9.9", release("v1.0.0"), "v1.0.0", true, ""}, + {"two digits", "0.9.0", release("v0.10.0"), "v0.10.0", true, ""}, + // GoReleaser names archives with the v. + {"no v", "0.1.0", release("0.2.0"), "0.2.0", false, ""}, + {"same", "0.1.0", release("v0.1.0"), "v0.1.0", false, ""}, + {"older", "0.2.0", release("v0.1.0"), "v0.1.0", false, ""}, + {"release candidate", "0.1.0", release("v0.2.0-rc1"), "v0.2.0-rc1", false, ""}, + {"no tag", "0.1.0", release(""), "", false, ""}, + // Atoi accepts a sign, but a version has none. + {"sign", "0.9.0", release("v+1.0.0"), "v+1.0.0", false, ""}, + {"minus", "0.9.0", release("v1.-0.0"), "v1.-0.0", false, ""}, + {"status", "0.1.0", "", "", false, "404"}, + {"bad JSON", "0.1.0", "not json", "", false, "read the latest release"}, + } + files := map[string]string{} + base := serve(t, files) + for i, tt := range tests { + if tt.body != "" { + files[fmt.Sprint("/", i)] = tt.body + } } - env, rest, _ := strings.Cut(gorun.calls[0], " ") - prog, args, _ := strings.Cut(rest, " ") - if env != "GOBIN=/home/u/go/bin" || filepath.Base(prog) != "go" || args != "install github.com/rednafi/rexdiff/cmd/rexdiff@v0.2.0" { - t.Errorf("go call = %q, want GOBIN=/home/u/go/bin go install github.com/rednafi/rexdiff/cmd/rexdiff@v0.2.0", gorun.calls[0]) + for i, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + u := detect(t, fmt.Sprint(base, "/", i), "/bin/rexdiff", tt.have) + r, newer, err := u.Latest(t.Context()) + if tt.err != "" { + if err == nil || !strings.Contains(err.Error(), tt.err) { + t.Errorf("Latest: %v, want an error with %q", err, tt.err) + } + return + } + if err != nil || r.Tag != tt.tag || newer != tt.newer { + t.Errorf("Latest = %q, %v, %v; want %q, %v, nil", + r.Tag, newer, err, tt.tag, tt.newer) + } + }) } +} - // The error of a failed command has the last line of the output. - failing := &fakeRun{fail: "brew"} - u = &Updater{bin: "/b/rexdiff", method: methodBrew, run: failing.run} - err := u.Install(t.Context(), r) - if err == nil || err.Error() != "brew: exit status 1: Error: another brew is running" { - t.Errorf("Install with a failing brew: %v, want %q", - err, "brew: exit status 1: Error: another brew is running") - } +// TestInstallBrew checks the commands of a Homebrew install, and the check +// of the new version. +func TestInstallBrew(t *testing.T) { + // The fake brew logs the flags of brew and its arguments. Rex starts + // rexdiff with a PATH without Homebrew, so the brew beside the + // Caskroom comes first. + for _, k := range []string{"HOMEBREW_NO_ENV_HINTS", "NONINTERACTIVE", "HOMEBREW_NO_AUTO_UPDATE"} { + t.Setenv(k, "") + } + const logBrew = `echo "hints=$HOMEBREW_NO_ENV_HINTS ` + + `ni=$NONINTERACTIVE auto=$HOMEBREW_NO_AUTO_UPDATE ${0##*/} $*" ` + + `>> "${0%/*}/../calls"` + "\n" + const busy = "echo Updating Homebrew...\necho 'Error: another brew is running'\nexit 1\n" + const calls = "hints=1 ni=1 auto= brew update --quiet\n" + + "hints=1 ni=1 auto=1 brew upgrade --cask rexdiff\n" + tests := []struct { + name string + beside bool // the brew is beside the Caskroom, else in PATH + brew string // the script of the fake brew + version string // the version of the new rexdiff + cancel bool // cancel the context before Install + calls string // the log of brew, or "" for no check + err string // the error, or "" for none + }{ + {"beside the Caskroom", true, logBrew, "v0.2.0", false, calls, ""}, + {"in PATH", false, logBrew, "v0.2.0", false, calls, ""}, + // The error has the last line of the output. + { + "brew fails", true, busy, "v0.2.0", false, "", + "brew: exit status 1: Error: another brew is running", + }, + // The error has no empty part at its end. + { + "brew fails with no output", true, "exit 1\n", "v0.2.0", false, "", + "brew: exit status 1", + }, + // A new binary of another version is an error, so rexdiff does not + // restart into it. + { + "old version", true, logBrew, "v0.1.0", false, "", + "the update left rexdiff v0.1.0, not v0.2.0", + }, + // A stopped brew can leave a broken cask. The user can quit + // rexdiff while brew runs. + {"outlives a cancel", true, logBrew, "v0.2.0", true, calls, ""}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + prefix := t.TempDir() + cask := filepath.Join(prefix, "Caskroom", "rexdiff", "0.2.0", "rexdiff") + file(t, cask, "#!/bin/sh\necho "+tt.version+"\n") + path := filepath.Join(prefix, "path") + if tt.beside { + path = filepath.Join(prefix, "bin") + } + file(t, filepath.Join(path, "brew"), "#!/bin/sh\n"+tt.brew) + link := filepath.Join(prefix, "bin", "rexdiff") + if err := os.MkdirAll(filepath.Dir(link), 0o755); err != nil { + t.Fatal(err) + } + if err := os.Symlink(cask, link); err != nil { + t.Fatal(err) + } + t.Setenv("PATH", filepath.Join(prefix, "path")+":/usr/bin:/bin") - // A new binary of another version is an error, so rexdiff does not - // restart into it. - stale := &fakeRun{version: "v0.1.0"} - u = &Updater{bin: "/b/rexdiff", method: methodBrew, run: stale.run} - if err := u.Install(t.Context(), r); err == nil || !strings.Contains(err.Error(), "left rexdiff v0.1.0, not v0.2.0") { - t.Errorf("Install that leaves the old version: %v, want an error", - err) + ctx, cancel := context.WithCancel(t.Context()) + defer cancel() + if tt.cancel { + cancel() + } + u := detect(t, "http://127.0.0.1:1/latest", link, "0.1.0") + err := u.Install(ctx, update.Release{Tag: "v0.2.0"}) + if tt.err == "" && err != nil || tt.err != "" && (err == nil || err.Error() != tt.err) { + t.Errorf("Install = %v, want %q", err, tt.err) + } + if tt.calls == "" { + return + } + got, _ := os.ReadFile(filepath.Join(prefix, "calls")) + if string(got) != tt.calls { + t.Errorf("brew calls got:\n%s\nwant:\n%s", got, tt.calls) + } + }) } } @@ -221,189 +254,84 @@ func archive(t *testing.T, content string) []byte { } // TestDownload checks the download of a release: the checksum, the binary -// in the archive, and the replacement of the target file of a link. +// in the archive, the check of its version, and the replacement of the +// target file of a link. func TestDownload(t *testing.T) { - t.Parallel() name := fmt.Sprintf("rexdiff-v0.2.0-%s-%s.tar.gz", runtime.GOOS, runtime.GOARCH) - good := archive(t, "new binary") - sum := sha256.Sum256(good) - files := map[string][]byte{ - "/" + name: good, - "/sha256sums.txt": []byte(hex.EncodeToString(sum[:]) + " " + name + "\nabc other.tar.gz\n"), - "/bad/" + name: []byte("tampered"), - "/bad/sha256sums.txt": []byte(hex.EncodeToString(sum[:]) + " " + name + "\n"), - } - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - b, ok := files[req.URL.Path] - if !ok { - http.NotFound(w, req) - return + newBin := "#!/bin/sh\necho v0.2.0\n" + good := archive(t, newBin) + sums := func(b []byte) string { + sum := sha256.Sum256(b) + return hex.EncodeToString(sum[:]) + " " + name + "\nabc other.tar.gz\n" + } + stale := archive(t, "#!/bin/sh\necho v0.1.9\n") + // The limit of a binary is 128 MiB. + big := archive(t, strings.Repeat("x", 128<<20+1)) + files := map[string]string{} + base := serve(t, files) + for dir, a := range map[string][]byte{"good": good, "stale": stale, "big": big, "bad": good} { + files["/"+dir+"/"+name] = string(a) + files["/"+dir+"/sha256sums.txt"] = sums(a) + var assets []string + for _, f := range []string{name, "sha256sums.txt"} { + assets = append(assets, fmt.Sprintf( + `{"name": %q, "browser_download_url": %q}`, f, base+"/"+dir+"/"+f)) } - if _, err := w.Write(b); err != nil { - t.Error(err) - } - })) - t.Cleanup(srv.Close) - release := func(prefix string) Release { - return Release{Tag: "v0.2.0", assets: []asset{ - {Name: name, URL: srv.URL + prefix + "/" + name}, - {Name: "sha256sums.txt", URL: srv.URL + prefix + "/sha256sums.txt"}, - }} + files["/"+dir+"/latest"] = `{"tag_name": "v0.2.0", "assets": [` + + strings.Join(assets, ",") + `]}` } + files["/bad/"+name] = "tampered" + // The release of "none" has no files. + files["/none/latest"] = `{"tag_name": "v0.2.0"}` - dir := t.TempDir() - target := file(t, filepath.Join(dir, "real", "rexdiff"), "old binary") - link := filepath.Join(dir, "rexdiff") - if err := os.Symlink(target, link); err != nil { - t.Fatal(err) - } - fake := &fakeRun{version: "v0.2.0"} - u := &Updater{bin: link, version: "v0.1.0", method: methodDownload, run: fake.run} - if err := u.Install(t.Context(), release("")); err != nil { - t.Fatal(err) - } - if b, _ := os.ReadFile(target); string(b) != "new binary" { - t.Errorf("target file = %q, want the new binary", b) - } - if info, _ := os.Lstat(link); info.Mode()&os.ModeSymlink == 0 { - t.Errorf("after Install: %s is not a symlink, want a symlink", link) - } - if info, _ := os.Stat(target); info.Mode().Perm() != 0o755 { - t.Errorf("mode = %v, want 0755", info.Mode().Perm()) - } - if entries, _ := os.ReadDir(filepath.Dir(target)); len(entries) != 1 { - t.Errorf("the directory has %d files, want only rexdiff", len(entries)) - } - - // A file that does not match its checksum is not installed. - file(t, target, "old binary") - if err := u.Install(t.Context(), release("/bad")); err == nil || !strings.Contains(err.Error(), "does not match its checksum") { - t.Errorf("Install of a tampered archive: %v, want a checksum error", - err) - } - if b, _ := os.ReadFile(target); string(b) != "old binary" { - t.Errorf("target file after a bad download = %q, want the old binary", b) - } - - // download does not replace the old binary with a binary of another - // version, so the next start does not run it. - stale := &fakeRun{version: "v0.1.9"} - u.run = stale.run - if err := u.Install(t.Context(), release("")); err == nil || !strings.Contains(err.Error(), "left rexdiff v0.1.9, not v0.2.0") { - t.Errorf("Install of a binary of another version: %v, "+ - "want a version error", err) - } - if b, _ := os.ReadFile(target); string(b) != "old binary" { - t.Errorf("target file after a failed check = %q, want the old binary", b) - } - if entries, _ := os.ReadDir(filepath.Dir(target)); len(entries) != 1 { - t.Errorf("after a failed check: %d files, want only rexdiff", - len(entries)) - } - u.run = fake.run - - // A release without the archive of this system is an error. - if err := u.Install(t.Context(), Release{Tag: "v0.2.0"}); err == nil || !strings.Contains(err.Error(), "has no "+name) { - t.Errorf("Install of a release without assets: %v, want an error", - err) - } -} - -// TestInstallOutlivesCancel checks that the cancel of the context of the -// program does not stop a brew that runs. A stopped brew can leave a broken -// cask. -func TestInstallOutlivesCancel(t *testing.T) { - t.Parallel() - ctx, cancel := context.WithCancel(t.Context()) - var sawCancel bool - run := func(ctx context.Context, _ []string, name string, _ ...string) ([]byte, error) { - if name == "brew" { - cancel() // the user quits rexdiff while brew runs - sawCancel = ctx.Err() != nil - return nil, nil - } - return []byte("v0.2.0\n"), nil - } - u := &Updater{bin: "/b/rexdiff", method: methodBrew, run: run} - if err := u.Install(ctx, Release{Tag: "v0.2.0"}); err != nil || sawCancel { - t.Errorf("Install after a cancel = %v, brew sees the cancel %v; "+ - "want nil, false", err, sawCancel) - } -} - -// TestBinaryTooLarge checks that a binary larger than the limit is an -// error, not a binary that is cut short. -func TestBinaryTooLarge(t *testing.T) { - t.Parallel() - big := strings.Repeat("x", maxBinary+1) - if _, err := binaryOf(archive(t, big)); err == nil || !strings.Contains(err.Error(), "larger than") { - t.Errorf("binaryOf of a binary over the limit: %v, want an error", - err) - } - if b, err := binaryOf(archive(t, "ok")); err != nil || string(b) != "ok" { - t.Errorf("binaryOf = %q, %v, want \"ok\", nil", b, err) - } -} - -// TestVersion checks the version from the release build. A test binary has -// no version, like a build for development. -func TestVersion(t *testing.T) { - t.Parallel() - for stamped, want := range map[string]string{"0.2.0": "v0.2.0", "v0.2.0": "v0.2.0", "": ""} { - if got := Version(stamped); got != want { - t.Errorf("Version(%q) = %q, want %q", stamped, got, want) - } - } - if u := Detect("/bin/rexdiff", ""); u != nil { - t.Errorf("Detect of a build for development = %+v, want nil", u) - } -} - -// TestDetectTestURL checks that a release build reads the latest release -// from REXDIFF_LATEST_URL. -func TestDetectTestURL(t *testing.T) { - t.Setenv("REXDIFF_LATEST_URL", "http://127.0.0.1:1/latest") - if u := Detect("/bin/rexdiff", "0.2.0"); u == nil || u.latestURL != "http://127.0.0.1:1/latest" || u.method != methodDownload { - t.Errorf("Detect of a release build = %+v, "+ - "want a download from the test URL", u) - } -} - -// TestDetectBrew checks that a Homebrew install uses the brew beside its -// Caskroom. Rex starts rexdiff with a PATH without Homebrew. -func TestDetectBrew(t *testing.T) { - prefix := t.TempDir() - cask := file(t, filepath.Join(prefix, "Caskroom", "rexdiff", "0.2.0", "rexdiff"), "") - brew := file(t, filepath.Join(prefix, "bin", "brew"), "#!/bin/sh\n") - brew, _ = filepath.EvalSymlinks(brew) // detect follows /var on macOS - link := filepath.Join(prefix, "bin", "rexdiff") - if err := os.Symlink(cask, link); err != nil { - t.Fatal(err) - } - t.Setenv("PATH", "/usr/bin:/bin") // the PATH of the Rex app - u := detect(link, "v0.2.0", false) - if u == nil || u.method != methodBrew || u.brew != brew { - t.Fatalf("detect = %+v, want brew %s", u, brew) - } - fake := &fakeRun{version: "v0.2.1"} - u.run = fake.run - if err := u.Install(t.Context(), Release{Tag: "v0.2.1"}); err != nil { - t.Fatal(err) - } - if want := "HOMEBREW_NO_ENV_HINTS=1 NONINTERACTIVE=1 " + brew + " update --quiet"; fake.calls[0] != want { - t.Errorf("first brew call = %q, want %q", fake.calls[0], want) - } -} - -// TestErrorWithoutOutput checks that a command that fails with no output -// has no empty part at the end of its error. -func TestErrorWithoutOutput(t *testing.T) { - t.Parallel() - u := &Updater{run: func(context.Context, []string, string, ...string) ([]byte, error) { - return nil, errors.New(`exec: "brew": executable file not found in $PATH`) - }} - _, err := u.command(t.Context(), nil, "/x/brew", "upgrade") - if want := `brew: exec: "brew": executable file not found in $PATH`; err == nil || err.Error() != want { - t.Errorf("error = %v, want %s", err, want) + tests := []struct { + name, dir string + err string // a part of the error, or "" for none + }{ + {"good", "good", ""}, + {"tampered", "bad", "does not match its checksum"}, + // The old binary stays, so the next start does not run a binary of + // another version. + {"other version", "stale", "the update left rexdiff v0.1.9, not v0.2.0"}, + // A binary over the limit is an error, not a binary that is cut. + {"too large", "big", "larger than"}, + {"no archive", "none", "has no " + name}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + dir := t.TempDir() + target := file(t, filepath.Join(dir, "real", "rexdiff"), "old binary") + link := filepath.Join(dir, "rexdiff") + if err := os.Symlink(target, link); err != nil { + t.Fatal(err) + } + u := detect(t, base+"/"+tt.dir+"/latest", link, "0.1.0") + r, newer, err := u.Latest(t.Context()) + if err != nil || !newer { + t.Fatalf("Latest = %+v, %v, %v; want a newer release", r, newer, err) + } + err = u.Install(t.Context(), r) + want := newBin + if tt.err != "" { + want = "old binary" + if err == nil || !strings.Contains(err.Error(), tt.err) { + t.Errorf("Install: %v, want an error with %q", err, tt.err) + } + } else if err != nil { + t.Fatal(err) + } + if b, _ := os.ReadFile(target); string(b) != want { + t.Errorf("target file = %q, want %q", b, want) + } + if info, _ := os.Lstat(link); info.Mode()&os.ModeSymlink == 0 { + t.Errorf("after Install: %s is not a symlink, want a symlink", link) + } + if info, _ := os.Stat(target); info.Mode().Perm() != 0o755 { + t.Errorf("mode = %v, want 0755", info.Mode().Perm()) + } + if entries, _ := os.ReadDir(filepath.Dir(target)); len(entries) != 1 { + t.Errorf("the directory has %d files, want only rexdiff", len(entries)) + } + }) } } diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index 0588a85..17fd7dc 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -8,6 +8,7 @@ import ( "os/exec" "path/filepath" "reflect" + "slices" "strings" "testing" "time" @@ -59,13 +60,13 @@ func TestHostilePaths(t *testing.T) { r, dir := newRepo(t) ctx := t.Context() commitAll(t, dir) - paths := []string{ + hostile := []string{ "-n", "--output=x", "-", "tab\tname", "new\nline", "trail\n", `say "hi"`, `back\slash`, "ünï cödé", " spaces ", "*", "[a]", ":(glob)x", "\xff\xfe", } want := map[string]string{} // the content of each path - for i, p := range paths { + for i, p := range hostile { s := fmt.Sprintf("id%02d\n", i) if err := os.WriteFile(filepath.Join(dir, p), []byte(s), 0o644); err != nil { // For example, macOS needs UTF-8 names. @@ -90,12 +91,9 @@ func TestHostilePaths(t *testing.T) { if err != nil { t.Fatal(err) } - files := map[string]bool{} - for _, e := range es { - files[e.Path] = true - } + files := paths(es) for p, s := range want { - if !files[p] { + if !slices.Contains(files, p) { t.Errorf("Files has no %q, want it", p) } if got, err := r.ReadFile(p); got != s || err != nil { @@ -216,25 +214,6 @@ func TestReadFileStaysInRoot(t *testing.T) { } } -// TestOpenRootWithNewline checks Open and Diff in a root whose path has a -// newline. -func TestOpenRootWithNewline(t *testing.T) { - t.Parallel() - dir := filepath.Join(t.TempDir(), "a\nb") - testgit.Git(t, filepath.Dir(dir), "init", "-q", dir) - testgit.WriteFile(t, dir, "a.txt", "one\n") - r, err := vcs.Open(t.Context(), dir) - if err != nil { - t.Fatal(err) - } - if want, _ := filepath.EvalSymlinks(dir); r.Root() != want { - t.Errorf("Root = %q, want %q", r.Root(), want) - } - if got := names(changes(t, r, head(t, r), snapshot(t, r))); got != "Aa.txt" { - t.Errorf("Diff(Head, Snapshot) = %s, want Aa.txt", got) - } -} - // TestGitWorktree checks Diff and Snapshot in a working tree that // "git worktree add" creates. func TestGitWorktree(t *testing.T) { @@ -252,8 +231,7 @@ func TestGitWorktree(t *testing.T) { if err != nil { t.Fatal(err) } - got := names(changes(t, r, head(t, r), snapshot(t, r))) - if got != "Ma.txt Astaged.txt" { + if got := uncommitted(t, r); got != "Ma.txt Astaged.txt" { t.Errorf("Diff(Head, Snapshot) = %s, want Ma.txt Astaged.txt", got) } st := testgit.Git(t, wt, "status", "--porcelain") @@ -269,8 +247,7 @@ func TestDetachedHead(t *testing.T) { r, dir := newRepo(t) ctx := t.Context() testgit.Git(t, dir, "checkout", "-q", "--detach", "main") - got := names(changes(t, r, head(t, r), snapshot(t, r))) - if got != "A.gitignore Ma.txt Anew.txt" { + if got := uncommitted(t, r); got != "A.gitignore Ma.txt Anew.txt" { t.Errorf("Diff(Head, Snapshot) = %s, want A.gitignore Ma.txt Anew.txt", got) } @@ -286,7 +263,8 @@ func TestGrepIsLiteral(t *testing.T) { r, dir := newRepo(t) ctx := t.Context() testgit.WriteFile(t, dir, "g.txt", "abc\na.c\n-v\n--help\n[x\n(y\n\\d\n*\n^a\nx$\n") - testgit.Git(t, dir, "config", "grep.column", "true") // adds a field to the output + // grep.column adds a field to the output. + testgit.Git(t, dir, "config", "grep.column", "true") tests := []struct { q string want []string @@ -383,7 +361,7 @@ func TestPullRequestBadJSON(t *testing.T) { // TestGrepDeadline checks that Grep returns the matches that it finds // before the deadline of ctx, with more set, as herdr-reviewr does with -// its time budget. A cancel is still an error. +// its time budget. func TestGrepDeadline(t *testing.T) { r, _ := newRepo(t) bin := t.TempDir() @@ -403,10 +381,4 @@ func TestGrepDeadline(t *testing.T) { if ms, more, err := r.Grep(ctx, "hit", 10); err != nil || !more || len(ms) != 0 { t.Errorf("Grep after the deadline = %+v, %v, %v; want none, more, no error", ms, more, err) } - - ctx, stop := context.WithCancel(t.Context()) - stop() - if _, _, err := r.Grep(ctx, "hit", 10); !errors.Is(err, context.Canceled) { - t.Errorf("Grep after a cancel: error %v, want context.Canceled", err) - } } diff --git a/vcs/pr_test.go b/vcs/pr_test.go index f4b28a6..e492047 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -48,7 +48,8 @@ func azArgs(branch string) string { return "repos pr list --source-branch " + branch + " --status all --top 1 --output json" } -// TestPullRequest checks the pull request that each forge tool gives. +// TestPullRequest checks the pull request that each forge tool gives. The +// fake tools are in PATH, so only the subtests run in parallel. func TestPullRequest(t *testing.T) { dir := t.TempDir() fakePath(t, dir) @@ -141,16 +142,17 @@ func TestPullRequest(t *testing.T) { }}, } for _, tt := range tests { - r, _ := repoAt(t, tt.remote) - pr, err := r.PullRequest(t.Context(), tt.hosts) - if err != nil { - t.Errorf("PullRequest(%s) = %v, want no error", tt.remote, err) - continue - } - if !reflect.DeepEqual(pr, tt.want) { - t.Errorf("PullRequest(%s) got:\n%+v\nwant:\n%+v", - tt.remote, pr, tt.want) - } + t.Run(tt.remote, func(t *testing.T) { + t.Parallel() + r, _ := repoAt(t, tt.remote) + pr, err := r.PullRequest(t.Context(), tt.hosts) + if err != nil { + t.Fatalf("PullRequest = %v, want no error", err) + } + if !reflect.DeepEqual(pr, tt.want) { + t.Errorf("PullRequest got:\n%+v\nwant:\n%+v", pr, tt.want) + } + }) } } @@ -181,11 +183,6 @@ func TestPullRequestErrors(t *testing.T) { msg: "unexpected call: " + azArgs("other"), }, {remote: "", branch: "feat", msg: "no git remote"}, - { - remote: "https://example.com/r.git", - branch: "feat", - msg: "the remote is not on GitHub, GitLab, or Azure DevOps", - }, {remote: azure, branch: "none", want: vcs.ErrNoPullRequest}, { remote: azure, @@ -197,6 +194,7 @@ func TestPullRequestErrors(t *testing.T) { for _, tt := range tests { // Two cases have the same remote, so the name has the branch. t.Run(cmp.Or(tt.remote, "no remote")+" on "+tt.branch, func(t *testing.T) { + t.Parallel() r, dir := newRepo(t) if tt.remote != "" { testgit.Git(t, dir, "remote", "add", "origin", tt.remote) diff --git a/vcs/repo_test.go b/vcs/repo_test.go index cc3c9fc..1bf6db6 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -103,6 +103,26 @@ func names(fs []vcs.File) string { return strings.Join(n, " ") } +// uncommitted returns the names of the files that differ from HEAD to the +// working tree. +func uncommitted(t *testing.T, r *vcs.Repo) string { + t.Helper() + return names(changes(t, r, head(t, r), snapshot(t, r))) +} + +// paths returns the path of each entry. An ignored path starts with "!". +func paths(es []vcs.Entry) []string { + var out []string + for _, e := range es { + if e.Ignored { + out = append(out, "!"+e.Path) + } else { + out = append(out, e.Path) + } + } + return out +} + // TestScopes checks the trees that each scope of a review compares. func TestScopes(t *testing.T) { t.Parallel() @@ -212,7 +232,8 @@ func TestDiffSkipsBinaryAndBigFiles(t *testing.T) { testgit.WriteFile(t, dir, "lines", "y"+lines) testgit.WriteFile(t, dir, "limit", "z"+limit) testgit.WriteFile(t, dir, "bin", "a\x00b") - testgit.WriteFile(t, dir, "late", strings.Repeat("x", 9000)+"\x00") // NUL at byte 9000 + // The NUL of "late" is at byte 9000. + testgit.WriteFile(t, dir, "late", strings.Repeat("x", 9000)+"\x00") testgit.WriteFile(t, dir, "big", strings.Repeat("x\n", 50_001)) testgit.WriteFile(t, dir, "huge", strings.Repeat("x", 2_000_001)) // Diff reads this file after the skipped content. @@ -281,11 +302,7 @@ func TestFilesInConflict(t *testing.T) { if err != nil { t.Fatal(err) } - var got []string - for _, e := range es { - got = append(got, e.Path) - } - if want := []string{"f.txt"}; !slices.Equal(got, want) { + if got, want := paths(es), []string{"f.txt"}; !slices.Equal(got, want) { t.Errorf("Files = %q, want %q", got, want) } } @@ -301,25 +318,14 @@ func TestWorktree(t *testing.T) { if err != nil { t.Fatal(err) } - var got []string - for _, e := range es { - if e.Ignored { - got = append(got, "!"+e.Path) - } else { - got = append(got, e.Path) - } - } want := ".gitignore a.txt b.txt !build/ !ignored.txt new.txt" - if got := strings.Join(got, " "); got != want { + if got := strings.Join(paths(es), " "); got != want { t.Errorf("Files = %s, want %s", got, want) } testgit.WriteFile(t, dir, "build/sub/x", "x\n") - var ignored []string - for _, e := range r.IgnoredDir("build") { - ignored = append(ignored, e.Path) - } - if want := []string{"build/out", "build/sub/"}; !slices.Equal(ignored, want) { + ignored := paths(r.IgnoredDir("build")) + if want := []string{"!build/out", "!build/sub/"}; !slices.Equal(ignored, want) { t.Errorf("IgnoredDir(build) = %q, want %q", ignored, want) } if es := r.IgnoredDir("no such dir"); len(es) != 0 { @@ -331,7 +337,8 @@ func TestWorktree(t *testing.T) { if err != nil || len(ms) != 1 || ms[0] != match { t.Errorf("Grep(TWO) = %+v, %v, want [%+v], nil", ms, err, match) } - testgit.WriteFile(t, dir, "a:é\n.txt", "x: two\n") // git quotes this name unless -z + // git quotes this name unless -z. + testgit.WriteFile(t, dir, "a:é\n.txt", "x: two\n") ms, _, err = r.Grep(ctx, "x: two", 10) match = vcs.Match{Path: "a:é\n.txt", Line: 1, Text: "x: two"} if err != nil || len(ms) != 1 || ms[0] != match { @@ -362,8 +369,9 @@ func TestWorktree(t *testing.T) { // TestOwns checks which directories are in the working tree, as in // herdr-reviewr: a subdirectory is, a nested repository and a relative or -// outside path are not, and without git the answer is an error. +// outside path are not. func TestOwns(t *testing.T) { + t.Parallel() r, dir := newRepo(t) nested := filepath.Join(dir, "build", "nested") testgit.NewRepo(t, nested) @@ -384,11 +392,16 @@ func TestOwns(t *testing.T) { t.Errorf("Owns(%q) = %v, %v, want %v, nil", tt.dir, got, err, tt.want) } } +} + +// TestOwnsWithoutGit checks that Owns fails without git. No git runs for +// a path outside the root. +func TestOwnsWithoutGit(t *testing.T) { + r, dir := newRepo(t) t.Setenv("PATH", t.TempDir()) if _, err := r.Owns(t.Context(), dir); err == nil { t.Error("Owns without git gives no error") } - // No git runs for a path outside the root. if got, err := r.Owns(t.Context(), filepath.Dir(dir)); got || err != nil { t.Errorf("Owns(outside) without git = %v, %v, want false, nil", got, err) } @@ -489,19 +502,27 @@ func TestOpenOutsideARepo(t *testing.T) { } } -// TestNewRepo checks Head and Snapshot in a repository with no commit and -// no index. +// TestNewRepo checks Open, Root, Head, and Snapshot in a repository with +// no commit and no index. The path of a root can have a newline. func TestNewRepo(t *testing.T) { t.Parallel() - dir := t.TempDir() - testgit.Git(t, dir, "init", "-q") - testgit.WriteFile(t, dir, "a.txt", "one\n") - r, err := vcs.Open(t.Context(), dir) - if err != nil { - t.Fatal(err) - } - if got := names(changes(t, r, head(t, r), snapshot(t, r))); got != "Aa.txt" { - t.Errorf("Diff(Head, Snapshot) = %s, want Aa.txt", got) + for _, name := range []string{"repo", "a\nb"} { + t.Run(name, func(t *testing.T) { + t.Parallel() + dir := filepath.Join(t.TempDir(), name) + testgit.Git(t, filepath.Dir(dir), "init", "-q", dir) + testgit.WriteFile(t, dir, "a.txt", "one\n") + r, err := vcs.Open(t.Context(), dir) + if err != nil { + t.Fatal(err) + } + if want, _ := filepath.EvalSymlinks(dir); r.Root() != want { + t.Errorf("Root = %q, want %q", r.Root(), want) + } + if got := uncommitted(t, r); got != "Aa.txt" { + t.Errorf("Diff(Head, Snapshot) = %s, want Aa.txt", got) + } + }) } } @@ -548,7 +569,7 @@ func TestSnapshotRacyEdit(t *testing.T) { testgit.WriteFile(t, dir, "b.txt", "BEE\n") // the same size and time touch("b.txt") - if got := names(changes(t, r, head(t, r), snapshot(t, r))); got != "Mb.txt" { + if got := uncommitted(t, r); got != "Mb.txt" { t.Errorf("Diff(HEAD, Snapshot) = %s, want Mb.txt", got) } } From 0839aaf7155986b50fb0ccdc1fd3feea3fa7405f Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 21:09:19 +0100 Subject: [PATCH 050/119] fix(tui): open the fold of a line that a search or a comment jumps to A search hit or a comment on a line in a fold put the cursor nowhere, because no row showed the line. jumpTo opens the fold first, as : does. --- tui/nav.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/tui/nav.go b/tui/nav.go index 08e99a0..78be85f 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -582,12 +582,23 @@ func (m *model) jumpTo(path string, s diff.Side, line int) { m.tab = tabChanges m.revealFile(path) m.pickFile(i) + m.openFoldAt(s, line) cursorToLine(&m.changes, s, line) return } m.jumpToFile(path, s, line) } +// openFoldAt opens the fold of the Changes tab that has line on side s. +func (m *model) openFoldAt(s diff.Side, line int) { + for _, r := range m.changes.rows { + if f := r.Fold; f.Lines > 0 && line >= foldStart(f, s) && line <= foldEnd(f, s) { + m.expandFold(f) + return + } + } +} + // jumpToFile shows path in the Files tab with the cursor on line. func (m *model) jumpToFile(path string, s diff.Side, line int) { m.loadFiles() @@ -644,12 +655,7 @@ func (m *model) gotoLine(s string) { } n = min(max(n, 1), last) if m.tab == tabChanges { - for _, r := range p.rows { - if f := r.Fold; f.Lines > 0 && n >= foldStart(f, side) && n <= foldEnd(f, side) { - m.expandFold(f) - break - } - } + m.openFoldAt(side, n) } p.cur = lineRow(p.rows, n, side) } From 44019fa859adff027b4a8d82386a5610b37d4a87 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 21:09:42 +0100 Subject: [PATCH 051/119] test: test rexdiff as a user does, in a terminal The tests in test/ run the rexdiff binary in a pseudo-terminal on a real repository, type keys, click, and read the screen. A fake rex, gh, and editors stand in for the tools. The scripts of the command move there. The tests of tui and of cmd/rexdiff, and the test hooks of the model, go. --- cmd/rexdiff/install_test.go | 119 -- cmd/rexdiff/script_test.go | 86 -- cmd/rexdiff/testdata/script/help.txt | 14 - go.mod | 3 + go.sum | 6 + test/changes_test.go | 207 ++++ test/cli_test.go | 66 ++ test/comment_test.go | 220 ++++ test/fake_test.go | 159 +++ test/files_test.go | 126 +++ test/rexdiff_test.go | 268 +++++ .../testdata/script/cli.txt | 38 +- .../testdata/script/install.txt | 10 - test/update_test.go | 101 ++ test/upgrade_test.go | 68 ++ tui/agents_test.go | 74 -- tui/anchor_test.go | 154 --- tui/bench_test.go | 99 -- tui/click_test.go | 127 --- tui/commentkeys_test.go | 162 --- tui/commits_test.go | 64 -- tui/copy_test.go | 115 -- tui/cross_test.go | 103 -- tui/editor_test.go | 217 ---- tui/errors_test.go | 94 -- tui/find_test.go | 143 --- tui/fold_test.go | 254 ----- tui/keys_test.go | 83 -- tui/main_test.go | 9 - tui/model.go | 59 +- tui/mouse.go | 2 +- tui/navpos_test.go | 142 --- tui/notes_test.go | 209 ---- tui/overlay.go | 2 +- tui/pr.go | 4 +- tui/prfetch_test.go | 109 -- tui/quit_test.go | 94 -- tui/release_test.go | 410 ------- tui/reload_test.go | 136 --- tui/saved_test.go | 85 -- tui/search_test.go | 328 ------ tui/send.go | 5 +- tui/split_test.go | 77 -- tui/tree_test.go | 206 ---- tui/tui_test.go | 1005 ----------------- tui/turn_test.go | 272 ----- tui/view.go | 2 +- tui/watch_test.go | 181 --- vcs/export_test.go | 7 + vcs/watch.go | 6 +- 50 files changed, 1277 insertions(+), 5253 deletions(-) delete mode 100644 cmd/rexdiff/install_test.go delete mode 100644 cmd/rexdiff/script_test.go delete mode 100644 cmd/rexdiff/testdata/script/help.txt create mode 100644 test/changes_test.go create mode 100644 test/cli_test.go create mode 100644 test/comment_test.go create mode 100644 test/fake_test.go create mode 100644 test/files_test.go create mode 100644 test/rexdiff_test.go rename cmd/rexdiff/testdata/script/errors.txt => test/testdata/script/cli.txt (54%) rename {cmd/rexdiff => test}/testdata/script/install.txt (89%) create mode 100644 test/update_test.go create mode 100644 test/upgrade_test.go delete mode 100644 tui/agents_test.go delete mode 100644 tui/anchor_test.go delete mode 100644 tui/bench_test.go delete mode 100644 tui/click_test.go delete mode 100644 tui/commentkeys_test.go delete mode 100644 tui/commits_test.go delete mode 100644 tui/copy_test.go delete mode 100644 tui/cross_test.go delete mode 100644 tui/editor_test.go delete mode 100644 tui/errors_test.go delete mode 100644 tui/find_test.go delete mode 100644 tui/fold_test.go delete mode 100644 tui/keys_test.go delete mode 100644 tui/main_test.go delete mode 100644 tui/navpos_test.go delete mode 100644 tui/notes_test.go delete mode 100644 tui/prfetch_test.go delete mode 100644 tui/quit_test.go delete mode 100644 tui/release_test.go delete mode 100644 tui/reload_test.go delete mode 100644 tui/saved_test.go delete mode 100644 tui/search_test.go delete mode 100644 tui/split_test.go delete mode 100644 tui/tree_test.go delete mode 100644 tui/tui_test.go delete mode 100644 tui/turn_test.go delete mode 100644 tui/watch_test.go create mode 100644 vcs/export_test.go diff --git a/cmd/rexdiff/install_test.go b/cmd/rexdiff/install_test.go deleted file mode 100644 index 519d909..0000000 --- a/cmd/rexdiff/install_test.go +++ /dev/null @@ -1,119 +0,0 @@ -package main - -import ( - "os" - "path/filepath" - "strings" - "testing" - - "github.com/rednafi/rexdiff/internal/testgit" -) - -// fakeRexDir returns a directory with a rex that writes its arguments to -// log and exits 0. Set REX_BIN_DIR to it, so that no test reloads the real -// Rex. -func fakeRexDir(t *testing.T, log string) string { - t.Helper() - dir := t.TempDir() - testgit.Script(t, dir, "rex", "echo \"$@\" >> "+log+"\n") - return dir -} - -// TestUpgrade checks that upgrade replaces the code of rexdiff.lua if it -// differs from the code of the binary. It keeps the settings. -func TestUpgrade(t *testing.T) { - dir := t.TempDir() - reloads := filepath.Join(dir, "reloads") - t.Setenv("REX_CONFIG", filepath.Join(dir, "init.lua")) - t.Setenv("REX_BIN_DIR", fakeRexDir(t, reloads)) - lua := filepath.Join(dir, luaFile) - const bin = "/opt/rexdiff" - const settings = "local settings = { layout = \"split\" }\n\n" - write := func(content string) { - t.Helper() - if err := os.WriteFile(lua, []byte(content), 0o644); err != nil { - t.Fatal(err) - } - } - read := func() string { - t.Helper() - b, err := os.ReadFile(lua) - if err != nil { - t.Fatal(err) - } - return string(b) - } - ctx := t.Context() - - // Without rexdiff.lua, upgrade does nothing. - if n := upgrade(ctx, bin); n != "" { - t.Fatalf("upgrade without rexdiff.lua = %q, want no notice", n) - } - if _, err := os.Stat(lua); err == nil { - t.Fatal("upgrade without rexdiff.lua: the file exists, want no file") - } - - // If the file has old code for the same binary, upgrade replaces the - // code, keeps the settings, and reloads Rex. - old := strings.Replace(luaCode(bin), "local function must", "local function old_must", 1) - write(settings + old) - if n := upgrade(ctx, bin); n != "" { - t.Fatalf("upgrade = %q, want no notice", n) - } - if got := read(); got != settings+luaCode(bin) { - t.Errorf("rexdiff.lua after upgrade got:\n%s\nwant:\n%s", - got, settings+luaCode(bin)) - } - if b, _ := os.ReadFile(reloads); string(b) != "config reload\n" { - t.Errorf("rex calls = %q, want one config reload", b) - } - - // If the code is the same, upgrade does not write the file or reload Rex. - if n := upgrade(ctx, bin); n != "" { - t.Fatalf("second upgrade = %q, want no notice", n) - } - if b, _ := os.ReadFile(reloads); string(b) != "config reload\n" { - t.Errorf("rex calls = %q, want no second reload", b) - } - - // If the file runs another rexdiff, for example a build for - // development, upgrade does not change it. - other := settings + old - other = strings.Replace(other, luaQuote(bin), luaQuote("/tmp/dev/rexdiff"), 1) - write(other) - if n := upgrade(ctx, bin); n != "" || read() != other { - t.Errorf("upgrade of the file of another rexdiff = %q; want no notice, no change", n) - } - - // Without the line above the code, upgrade changes nothing. Its notice - // tells what is wrong and what to do. - noMark := strings.Replace(settings+old, codeMark+"\n", "", 1) - if !strings.Contains(noMark, luaQuote(bin)) { - t.Fatalf("the test file has no %s, want it", luaQuote(bin)) - } - write(noMark) - n := upgrade(ctx, bin) - for _, want := range []string{ - "cannot upgrade rexdiff.lua", lua, codeMark, - "cannot tell your settings from its code", "Put that line back", - } { - if !strings.Contains(n, want) { - t.Errorf("notice = %q, want %q in it", n, want) - } - } - if got := read(); got != noMark { - t.Errorf("rexdiff.lua without the line above the code, after upgrade "+ - "got:\n%s\nwant:\n%s", got, noMark) - } -} - -// TestLuaQuote checks that a path that Go escapes stays the same in Lua 5.1. -// Lua 5.1 knows only a few escapes. -func TestLuaQuote(t *testing.T) { - t.Parallel() - got := luaQuote("/a\u200bb/\"x\"\\y\nz") - want := "\"/a\u200bb/\\\"x\\\"\\\\y\\nz\"" - if got != want { - t.Errorf("luaQuote = %s, want %s", got, want) - } -} diff --git a/cmd/rexdiff/script_test.go b/cmd/rexdiff/script_test.go deleted file mode 100644 index b28d3ff..0000000 --- a/cmd/rexdiff/script_test.go +++ /dev/null @@ -1,86 +0,0 @@ -package main - -import ( - "fmt" - "os" - "path/filepath" - "strings" - "testing" - - "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rogpeppe/go-internal/testscript" -) - -// TestMain lets the scripts run rexdiff, and a fake rex, as commands. Each -// command is a copy of the test binary that calls the function here. -func TestMain(m *testing.M) { - testscript.Main(m, map[string]func(){ - "rexdiff": main, - "rex": fakeRex, - }) -} - -// fakeRex writes its arguments to $WORK/rex.log. A script reads the log to -// see what rexdiff asks Rex to do. fakeRex fails if $REX_FAIL is set. -func fakeRex() { - log := filepath.Join(os.Getenv("WORK"), "rex.log") - f, err := os.OpenFile(log, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o644) - if err != nil { - panic(err) - } - fmt.Fprintln(f, strings.Join(os.Args[1:], " ")) - if err := f.Close(); err != nil { - panic(err) - } - if os.Getenv("REX_FAIL") != "" { - fmt.Fprintln(os.Stderr, "no Rex server") - os.Exit(1) - } - fmt.Println("config reloaded") -} - -// userEnv lists the variables of the user that change what rexdiff and rex -// do. Each script starts with them empty. -var userEnv = []string{ - "REX_BIN_DIR", - "REX_CONFIG", - "REX_SESSION", - "REX_BLOCK", - "REX_AGENT_BLOCK", - "REXDIFF_LOG", - "REXDIFF_RESUME", -} - -// TestScripts runs the scripts in testdata/script. -func TestScripts(t *testing.T) { - // If the real rex tool is installed, $REALREX is its path, and the - // condition [realrex] is true. - realRex := filepath.Join(os.Getenv("REX_BIN_DIR"), "rex") - _, err := os.Stat(realRex) - hasRex := os.Getenv("REX_BIN_DIR") != "" && err == nil - testscript.Run(t, testscript.Params{ - Dir: "testdata/script", - RequireExplicitExec: true, - Setup: func(env *testscript.Env) error { - // Each script runs in a new directory, $WORK. $WORK is also - // $HOME, so rexdiff and git do not see the files of the user. - env.Setenv("HOME", env.WorkDir) - env.Setenv("XDG_CONFIG_HOME", "") - env.Setenv("REALREX", realRex) - for _, k := range userEnv { - env.Setenv(k, "") - } - for _, kv := range testgit.Env() { - k, v, _ := strings.Cut(kv, "=") - env.Setenv(k, v) - } - return nil - }, - Condition: func(cond string) (bool, error) { - if cond == "realrex" { - return hasRex, nil - } - return false, fmt.Errorf("unknown condition %q", cond) - }, - }) -} diff --git a/cmd/rexdiff/testdata/script/help.txt b/cmd/rexdiff/testdata/script/help.txt deleted file mode 100644 index 36d75f4..0000000 --- a/cmd/rexdiff/testdata/script/help.txt +++ /dev/null @@ -1,14 +0,0 @@ -# -h shows the usage and the flags, and exits 0. -exec rexdiff -h -stderr '^usage: rexdiff \[flags\] \[repo\]' -stderr '-layout value' -stderr '-config string' -! stdout . - -# -version prints the version. A build for development has none. -exec rexdiff -version -stdout '^\(devel\)$' - -# install -h writes no file. -exec rexdiff install -h -! exists .config/rex diff --git a/go.mod b/go.mod index a06b0ff..d1ffb2a 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,8 @@ require ( github.com/aymanbagabas/go-udiff v0.4.1 github.com/charmbracelet/ultraviolet v0.0.0-20261008173134-6b8d4baf91b4 github.com/charmbracelet/x/ansi v0.11.9 + github.com/charmbracelet/x/vt v0.1.0 + github.com/creack/pty v1.1.24 github.com/rogpeppe/go-internal v1.16.0 github.com/sahilm/fuzzy v0.1.3 ) @@ -19,6 +21,7 @@ require ( github.com/atotto/clipboard v0.1.4 // indirect github.com/aymerick/douceur v0.2.0 // indirect github.com/charmbracelet/colorprofile v0.4.3 // indirect + github.com/charmbracelet/x/exp/ordered v0.1.0 // indirect github.com/charmbracelet/x/exp/slice v0.1.0 // indirect github.com/charmbracelet/x/term v0.2.2 // indirect github.com/charmbracelet/x/termios v0.1.1 // indirect diff --git a/go.sum b/go.sum index 2a86e6c..27a9607 100644 --- a/go.sum +++ b/go.sum @@ -28,18 +28,24 @@ github.com/charmbracelet/x/ansi v0.11.9 h1:kIrqLBxtTVbLyyHO2Evoi93EjQo1mylWmpNEs github.com/charmbracelet/x/ansi v0.11.9/go.mod h1:DG/hpOnaI2QJ/KMMqLL2h0KVhluuJLazf8973P+Vy5w= github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f h1:pk6gmGpCE7F3FcjaOEKYriCvpmIN4+6OS/RD0vm4uIA= github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f/go.mod h1:IfZAMTHB6XkZSeXUqriemErjAWCCzT0LwjKFYCZyw0I= +github.com/charmbracelet/x/exp/ordered v0.1.0 h1:55/qLwjIh0gL0Vni+QAWk7T/qRVP6sBf+2agPBgnOFE= +github.com/charmbracelet/x/exp/ordered v0.1.0/go.mod h1:5UHwmG+is5THxMyCJHNPCn2/ecI07aKNrW+LcResjJ8= github.com/charmbracelet/x/exp/slice v0.1.0 h1:m46dwuDf3M5SFYMRhxYkLC6z9WnENGVKbcbJlp13/og= github.com/charmbracelet/x/exp/slice v0.1.0/go.mod h1:vqEfX6xzqW1pKKZUUiFOKg0OQ7bCh54Q2vR/tserrRA= github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk= github.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI= github.com/charmbracelet/x/termios v0.1.1 h1:o3Q2bT8eqzGnGPOYheoYS8eEleT5ZVNYNy8JawjaNZY= github.com/charmbracelet/x/termios v0.1.1/go.mod h1:rB7fnv1TgOPOyyKRJ9o+AsTU/vK5WHJ2ivHeut/Pcwo= +github.com/charmbracelet/x/vt v0.1.0 h1:oVueL3dwH/DlY/z6R6XHA9PQ/w3LdCCq99600Vs48vA= +github.com/charmbracelet/x/vt v0.1.0/go.mod h1:u1LOIABor9JqY54oZdktK3TCRrgzP6tzHrDYx1nd3wY= github.com/charmbracelet/x/windows v0.2.2 h1:IofanmuvaxnKHuV04sC0eBy/smG6kIKrWG2/jYn2GuM= github.com/charmbracelet/x/windows v0.2.2/go.mod h1:/8XtdKZzedat74NQFn0NGlGL4soHB0YQZrETF96h75k= github.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8= github.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0= github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk= github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= +github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s= +github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= github.com/dlclark/regexp2/v2 v2.2.1 h1:mf4KkFUj0gJuarK8P+LgiS+Lit7m9N1yAwEfPbee7R0= github.com/dlclark/regexp2/v2 v2.2.1/go.mod h1:avUrQvPaLz2DrFNHJF0taWAFFX2C1GMSSoeiqFjcBmU= github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= diff --git a/test/changes_test.go b/test/changes_test.go new file mode 100644 index 0000000..f94bf63 --- /dev/null +++ b/test/changes_test.go @@ -0,0 +1,207 @@ +package test + +import ( + "strings" + "testing" + + "github.com/rednafi/rexdiff/internal/testgit" +) + +// TestChanges checks the Changes tab: the file list with its counts, the +// diff of a file, the next file, and a fold that opens. +func TestChanges(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{}) + tm.waitFor("Changes (2)", "M a.go", "+2 -1", "M long.txt", "+2 -2", + "return 1", "x := 2", "not in Rex") + tm.keys("f") + tm.waitFor("first", "last", "⋯ 32 unmodified lines") + tm.keys("j", "j", "j", "j", "j", "j", "right") + tm.waitFor("line 20") + tm.waitGone("unmodified lines") + tm.keys("F") + tm.waitFor("x := 2") +} + +// TestScopes checks that each scope shows its changes. +func TestScopes(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{}) + tm.keys("b") + tm.waitFor("vs main", "Changes (3)", "A b.go") + tm.keys("u") + tm.waitFor("Changes (2)") + tm.waitGone("b.go") + tm.keys("t") + tm.waitFor("waiting for the first turn") + tm.keys("g") + tm.waitFor("commits · 1 over main", "add b") + tm.keys("enter") + tm.waitFor("Changes (1)", "A b.go", "var B = 2") + tm.keys("u", "B") + tm.waitFor("base branch for the branch scope") + tm.keys("f", "e", "a", "t", "enter") + tm.waitFor("vs feat", "Changes (2)") +} + +// TestSplit checks that | shows the old and the new lines side by side +// on a wide screen, and tells why it does not on a narrow one. +func TestSplit(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{width: 220}) + tm.keys("|") + tm.waitUntil(func(s string) bool { + for _, l := range lines(s, "return 1") { + if strings.Contains(l, "x := 2") { + return true + } + } + return false + }, "show return 1 beside x := 2") + + narrow := start(t, newRepo(t), opts{width: 120}) + narrow.keys("|") + narrow.waitFor("too narrow for split") +} + +// TestWrap checks that rexdiff wraps a long line, that w cuts it, and +// that → scrolls to its end. +func TestWrap(t *testing.T) { + t.Parallel() + repo := newRepo(t) + long := "var long = \"" + strings.Repeat("ab", 60) + "end\"\n" + testgit.WriteFile(t, repo, "b.go", "package a\n\n"+long) + tm := start(t, repo, opts{width: 120}) + tm.keys("f") + tm.waitFor("end\"") + tm.keys("w") + tm.waitGone("end\"") + for i := 0; !strings.Contains(tm.screen(), "end\""); i++ { + if i == 30 { + t.Fatalf("→ does not scroll to the end. The screen shows:\n%s", tm.screen()) + } + tm.keys("right") + } +} + +// TestFileList checks that p moves the file list, z hides it, and > and +// < change its width. +func TestFileList(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{}) + col := func() int { + ls := lines(tm.screen(), "Changes (2)") + if len(ls) == 0 { + return -1 + } + return strings.Index(ls[0], "Changes (2)") + } + right := col() + tm.keys(">") + if c := col(); c <= right { + t.Errorf("after >, the list starts at column %d, want after %d", c, right) + } + tm.keys("<", "<") + if c := col(); c >= right { + t.Errorf("after <, the list starts at column %d, want before %d", c, right) + } + tm.keys("p") // bottom + tm.waitUntil(func(s string) bool { + ls := strings.Split(s, "\n") + for i, l := range ls { + if strings.Contains(l, "Changes (2)") { + return i > 10 + } + } + return false + }, "show the list at the bottom") + tm.keys("z") + tm.waitGone("Changes (2)") + tm.keys("z") + tm.waitFor("Changes (2)") +} + +// TestKeys checks that ? shows all the keys. +func TestKeys(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{}) + tm.keys("?") + tm.waitFor("search files & code", "pick commits", "move file list") + tm.keys("esc") + tm.waitGone("pick commits") +} + +// TestGotoLine checks that : moves the cursor to a line of the new file. +func TestGotoLine(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{}) + tm.keys("f", ":", "3", "3", "enter") + tm.waitUntil(func(s string) bool { + for _, l := range lines(s, "▶") { + if strings.Contains(l, "line 33") { + return true + } + } + return false + }, "put the cursor on line 33") +} + +// TestFind checks that ctrl+f counts the lines with a text, and that +// enter moves to a hit. +func TestFind(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{}) + tm.keys("f", "ctrl+f", "l", "i", "n", "e", " ", "3") + tm.waitFor("find line 3", " 11") // line 3, and line 30 to line 39 + tm.keys("enter") + tm.waitUntil(func(s string) bool { + for _, l := range lines(s, "▶") { + if strings.Contains(l, "line 3") { + return true + } + } + return false + }, "put the cursor on a hit") +} + +// TestSettings checks that the settings change the layout, the marks of +// the changed lines, the place of the file list, and the keys. +func TestSettings(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{width: 220, args: []string{ + "-config", + `{"layout": "split", "diff_signs": true, "file_list": "left",` + + ` "keybindings": {"next-file": ["x"]}}`, + }}) + s := tm.waitFor("4 - return 1", "4 + x := 2", "x next/prev file") + for _, l := range lines(s, "return 1") { + if !strings.Contains(l, "x := 2") { + t.Errorf("line %q, want the old and the new line side by side", l) + } + } + if ls := lines(s, "Changes (2)"); len(ls) == 0 || strings.Index(ls[0], "Changes (2)") > 5 { + t.Errorf("the list starts at %q, want it at the left", ls) + } + tm.keys("x") + tm.waitFor("first") +} + +// TestTinyScreen checks that rexdiff draws and takes keys in a small +// terminal. +func TestTinyScreen(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{width: 40, height: 8}) + tm.keys("f", "j", "2", "/", "esc", "?", "esc", "1") + tm.waitFor("1 Changes") +} + +// TestHostileText checks that the escape codes in a file show as text, so +// a file cannot change the terminal. +func TestHostileText(t *testing.T) { + t.Parallel() + repo := newRepo(t) + testgit.WriteFile(t, repo, "evil.txt", "a\x1b[2Jb\x1b]0;title\x07c\n") + tm := start(t, repo, opts{}) + tm.keys("f") + tm.waitFor("a␛[2Jb␛]0;title␇c") +} diff --git a/test/cli_test.go b/test/cli_test.go new file mode 100644 index 0000000..e865841 --- /dev/null +++ b/test/cli_test.go @@ -0,0 +1,66 @@ +package test + +import ( + "os" + "path/filepath" + "strings" + "testing" + + "github.com/rogpeppe/go-internal/testscript" + + "github.com/rednafi/rexdiff/internal/testgit" +) + +// fakeRexCLI is the rex of the scripts. +const fakeRexCLI = `#!/bin/sh +printf '%s\n' "$*" >> "$WORK/rex.log" +if [ -n "$REX_FAIL" ]; then echo 'no Rex server' >&2; exit 1; fi +echo 'config reloaded' +` + +// TestScripts runs the scripts in testdata/script. A script runs the +// rexdiff binary and a fake rex. The fake writes its arguments to +// $WORK/rex.log, and fails if $REX_FAIL is set. If Rex is installed, +// $REALREX is its rex, and the condition [realrex] is true. +func TestScripts(t *testing.T) { + t.Parallel() + bin := filepath.Dir(binary(t)) + realRex := filepath.Join(os.Getenv("REX_BIN_DIR"), "rex") + _, err := os.Stat(realRex) + hasRex := os.Getenv("REX_BIN_DIR") != "" && err == nil + testscript.Run(t, testscript.Params{ + Dir: "testdata/script", + RequireExplicitExec: true, + Setup: func(env *testscript.Env) error { + fake := filepath.Join(env.WorkDir, ".fake") + if err := os.Mkdir(fake, 0o755); err != nil { + return err + } + err := os.WriteFile(filepath.Join(fake, "rex"), []byte(fakeRexCLI), 0o755) + if err != nil { + return err + } + // $WORK is also $HOME, so rexdiff and git see no file of the + // user. + env.Setenv("HOME", env.WorkDir) + env.Setenv("XDG_CONFIG_HOME", "") + env.Setenv("PATH", bin+string(os.PathListSeparator)+os.Getenv("PATH")) + env.Setenv("REX_BIN_DIR", fake) + env.Setenv("REALREX", realRex) + for _, k := range []string{ + "REX_CONFIG", "REX_SESSION", "REX_BLOCK", + "REX_AGENT_BLOCK", "REXDIFF_LOG", "REXDIFF_RESUME", + } { + env.Setenv(k, "") + } + for _, kv := range testgit.Env() { + k, v, _ := strings.Cut(kv, "=") + env.Setenv(k, v) + } + return nil + }, + Condition: func(string) (bool, error) { + return hasRex, nil // [realrex] is the only condition + }, + }) +} diff --git a/test/comment_test.go b/test/comment_test.go new file mode 100644 index 0000000..909303b --- /dev/null +++ b/test/comment_test.go @@ -0,0 +1,220 @@ +package test + +import ( + "os" + "path/filepath" + "strings" + "testing" + "time" + + "github.com/rednafi/rexdiff/internal/testgit" +) + +// comment adds the comment text on the first changed line of a.go. +func comment(tm *term, text string) { + tm.t.Helper() + tm.keys("]", "c") + tm.keys(strings.Split(text, "")...) + tm.keys("enter") + tm.waitFor("💬 " + text) +} + +// TestCommentList checks that a comment shows on its line and in the +// list, and that the list edits and deletes it. +func TestCommentList(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{}) + comment(tm, "hi") + tm.waitFor("comment added", "●1") + tm.keys("l") + tm.waitFor("Comments (1)", "a.go:4 (removed) hi") + tm.keys("e", " ", "m", "o", "r", "e", "enter") + tm.waitFor("a.go:4 (removed) hi more") + tm.keys("d") // the list closes with its last comment + tm.waitGone("Comments (", "💬") +} + +// TestRangeComment checks that v selects lines and c comments on all of +// them. +func TestRangeComment(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{}) + tm.keys("]", "v", "j", "j", "c", "r", "enter") + tm.keys("l") + tm.waitFor("a.go:4-5 r") +} + +// TestSend checks that s pastes the review into the agent and gives it +// the focus. +func TestSend(t *testing.T) { + t.Parallel() + repo := newRepo(t) + rex := newRex(t, repo) + tm := start(t, repo, opts{rex: rex}) + tm.waitFor("send → 1 agent") + comment(tm, "hi") + tm.keys("s") + tm.waitFor("sent 1 comment to agent") + tm.waitGone("💬") + calls := rex.calls(t) + for _, want := range []string{ + `block.event {"block_id":"block:pi","event":{"type":"paste",` + + `"payload":{"text":"a.go:4 (removed)\n-\treturn 1\nhi"}}}`, + `session.focus_block {"block_id":"block:pi"}`, + } { + if !strings.Contains(calls, want) { + t.Errorf("rex calls:\n%s\nwant a call with %s", calls, want) + } + } +} + +// TestCopy checks that y copies the review and clears the comments. +func TestCopy(t *testing.T) { + t.Parallel() + bin := tool(t, t.TempDir(), "pbcopy", `cat > "${0%/*}/clip"`+"\n") + tool(t, bin, "wl-copy", `cat > "${0%/*}/clip"`+"\n") + tm := start(t, newRepo(t), opts{path: bin, env: []string{"WAYLAND_DISPLAY=w"}}) + comment(tm, "hi") + tm.keys("y") + tm.waitFor("copied 1 comment") + tm.waitGone("💬") + b, err := os.ReadFile(filepath.Join(bin, "clip")) + if want := "a.go:4 (removed)\n-\treturn 1\nhi"; err != nil || string(b) != want { + t.Errorf("the clipboard has %q (%v), want %q", b, err, want) + } +} + +// TestQuit checks that q quits at once with no comment, and that with a +// comment it asks first. +func TestQuit(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{}) + tm.keys("q") + if err := tm.exited(); err != nil { + t.Errorf("q exits with %v, want no error", err) + } + + tm = start(t, newRepo(t), opts{}) + comment(tm, "hi") + tm.keys("Q") + time.Sleep(200 * time.Millisecond) + tm.waitFor("💬 hi") // Q does nothing outside the prompt + tm.keys("q") + tm.waitFor("1 unsent comment will be lost", + "Q quit (1 pending) · esc cancel · s send 1 · y copy") + tm.keys("esc") + tm.waitGone("unsent comment") + tm.keys("q", "Q") + if err := tm.exited(); err != nil { + t.Errorf("q, Q exits with %v, want no error", err) + } +} + +// TestEditorInPane checks that e opens a terminal editor at the line, in +// a new Rex pane. +func TestEditorInPane(t *testing.T) { + t.Parallel() + repo := newRepo(t) + rex := newRex(t, repo) + bin := tool(t, t.TempDir(), "nvim", "") + tm := start(t, repo, opts{rex: rex, path: bin, env: []string{"EDITOR=nvim"}}) + tm.keys("]", "j", "e") + want := "split -s S -b block:self --cwd " + repo + " -- " + deadline := time.Now().Add(10 * time.Second) + for !strings.Contains(rex.calls(t), want) { + if time.Now().After(deadline) { + t.Fatalf("rex calls:\n%s\nwant a call with %s", rex.calls(t), want) + } + time.Sleep(20 * time.Millisecond) + } + var split string + for _, l := range lines(rex.calls(t), want) { + split = l + } + if !strings.Contains(split, "nvim +4 ") || !strings.Contains(split, "a.go") { + t.Errorf("the split runs %q, want nvim +4 on a.go", split) + } +} + +// TestWindowEditor checks that e starts a window editor at the line. +func TestWindowEditor(t *testing.T) { + t.Parallel() + bin := t.TempDir() + tool(t, bin, "code", `printf '%s\n' "$@" > "${0%/*}/args"`+"\n") + tm := start(t, newRepo(t), opts{path: bin, env: []string{"VISUAL=code --wait"}}) + tm.keys("]", "j", "e") + path := filepath.Join(bin, "args") + deadline := time.Now().Add(10 * time.Second) + for { + b, _ := os.ReadFile(path) + if strings.Contains(string(b), "a.go:4") { + return + } + if time.Now().After(deadline) { + t.Fatalf("code got %q, want a.go:4. The screen shows:\n%s", b, tm.screen()) + } + time.Sleep(20 * time.Millisecond) + } +} + +// TestNoEditor checks that e tells how to set an editor when none is set. +func TestNoEditor(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{}) + tm.keys("]", "j", "e") + tm.waitFor("no editor: set `editor` in rexdiff.lua, $EDITOR, or git's core.editor") +} + +// TestMouse checks that a click picks a file, a click on a line number +// opens the comment box, and a triple click copies a line. +func TestMouse(t *testing.T) { + t.Parallel() + bin := tool(t, t.TempDir(), "pbcopy", `cat > "${0%/*}/clip"`+"\n") + tool(t, bin, "wl-copy", `cat > "${0%/*}/clip"`+"\n") + tm := start(t, newRepo(t), opts{path: bin, env: []string{"WAYLAND_DISPLAY=w"}}) + tm.click("M long.txt", 1) + tm.waitFor("⋯ 32 unmodified lines") + tm.click("M a.go", 1) + tm.click("func A() int {", 3) + tm.waitFor("copied 14 chars") + b, err := os.ReadFile(filepath.Join(bin, "clip")) + if err != nil || string(b) != "func A() int {" { + t.Errorf("the clipboard has %q (%v), want the line", b, err) + } + tm.click(" 5 ▌", 1) // the number of the new line 5 + tm.waitFor("✎ a.go:5") +} + +// TestAgentPicker checks that a send with two agents asks which one, and +// that a digit picks it. +func TestAgentPicker(t *testing.T) { + t.Parallel() + repo := newRepo(t) + rex := newRex(t, repo) + rex.addAgent(t, "block:cc", "cc", "claude-code") + tm := start(t, repo, opts{rex: rex}) + tm.waitFor("send → 2 agents") + comment(tm, "hi") + tm.keys("s") + tm.waitFor("send to which agent?", "1 agent", "2 cc") + tm.keys("2") + tm.waitFor("sent 1 comment to cc") + if calls := rex.calls(t); !strings.Contains(calls, `block.event {"block_id":"block:cc"`) { + t.Errorf("rex calls:\n%s\nwant a paste to block:cc", calls) + } +} + +// TestCommentStays checks that a comment stays when the agent edits the +// file. As in herdr-reviewr, it keeps its line number. +func TestCommentStays(t *testing.T) { + t.Parallel() + repo := newRepo(t) + tm := start(t, repo, opts{}) + tm.keys("]", "j", "c", "h", "i", "enter") // on x := 2 + tm.waitFor("💬 hi") + testgit.WriteFile(t, repo, "a.go", + "package a\n\n// A adds.\n// It is new.\nfunc A() int {\n\tx := 2\n\treturn x\n}\n") + tm.waitFor("It is new.") + tm.keys("l") + tm.waitFor("a.go:4 hi") +} diff --git a/test/fake_test.go b/test/fake_test.go new file mode 100644 index 0000000..ea911e6 --- /dev/null +++ b/test/fake_test.go @@ -0,0 +1,159 @@ +package test + +import ( + "os" + "path/filepath" + "strconv" + "strings" + "testing" + + "github.com/rednafi/rexdiff/internal/testgit" +) + +// repoFixture is a repository with a commit on main and on the branch +// feat. It has uncommitted edits of a.go, and of the first and the last +// line of long.txt. +var repoFixture = testgit.NewFixture(func(tb testing.TB, dir string) { + tb.Helper() + testgit.NewRepo(tb, dir) + testgit.WriteFile(tb, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") + testgit.WriteFile(tb, dir, "README.md", "# Title\n\nSome text.\n") + testgit.WriteFile(tb, dir, "docs/guide.txt", "guide\n") + testgit.WriteFile(tb, dir, ".gitignore", "out/\n") + testgit.WriteFile(tb, dir, "long.txt", numbered("line", 1, 40)) + testgit.Git(tb, dir, "add", ".") + testgit.Git(tb, dir, "commit", "-qm", "first") + testgit.Git(tb, dir, "checkout", "-qb", "feat") + testgit.WriteFile(tb, dir, "b.go", "package a\n\nvar B = 2\n") + testgit.Git(tb, dir, "add", ".") + testgit.Git(tb, dir, "commit", "-qm", "add b") + testgit.WriteFile(tb, dir, "a.go", "package a\n\nfunc A() int {\n\tx := 2\n\treturn x\n}\n") + testgit.WriteFile(tb, dir, "out/build.log", "built\n") + testgit.WriteFile(tb, dir, "long.txt", + "first\n"+numbered("line", 2, 39)+"last\n") +}) + +// numbered returns the lines " " for n from first to last. +func numbered(word string, first, last int) string { + var b strings.Builder + for n := first; n <= last; n++ { + b.WriteString(word + " " + strconv.Itoa(n) + "\n") + } + return b.String() +} + +// newRepo returns a copy of the fixture repository. The path has no +// symbolic link, as the root that git gives. +func newRepo(t *testing.T) string { + t.Helper() + tmp, err := filepath.EvalSymlinks(t.TempDir()) + if err != nil { + t.Fatal(err) + } + dir := filepath.Join(tmp, "repo") + repoFixture.Copy(t, dir) + return dir +} + +// fakeRex is a rex for the session S. rexdiff runs in the block +// block:self. The agents run in repo. The fake logs each call, reads the +// blocks and the status of each agent from files, and "rex events" +// prints the lines that the test adds. +type fakeRex struct { + dir string + blocks []string // the JSON of each block +} + +// newRex returns a fake rex with the agent pi in the block block:pi. +func newRex(t *testing.T, repo string) *fakeRex { + t.Helper() + r := &fakeRex{dir: t.TempDir()} + testgit.Script(t, r.dir, "rex", `d="${0%/*}" +printf '%s\n' "$*" >> "$d/calls" +case "$*" in +"api call -s S session.list_blocks {}") cat "$d/blocks" ;; +"session inspect S --json") + echo '{"windows":[{"window_id":"w1","label":"main"}]}' ;; +"block call -s S -b "*" program_status") cat "$d/status.$6" ;; +"block call -s S -b "*" process") + echo '{"foreground":{"cwd":"file://`+repo+`"}}' ;; +"block inspect "*) echo '{"block":{"block_id":"'"$3"'"}}' ;; +"events -s S --json") touch "$d/events"; exec tail -n +1 -f "$d/events" ;; +esac +`) + r.blocks = []string{`{"block_id":"block:self","label":"rexdiff",` + + `"window_id":"w1","creator_name":"com.superlogical.terminal"}`} + r.addAgent(t, "block:pi", "agent", "pi") + return r +} + +// addAgent adds an idle agent app in block with the label. +func (r *fakeRex) addAgent(t *testing.T, block, label, app string) { + t.Helper() + r.blocks = append(r.blocks, `{"block_id":"`+block+`","label":"`+label+ + `","window_id":"w1","creator_name":"com.superlogical.terminal"}`) + r.write(t, "blocks", `{"blocks":[`+strings.Join(r.blocks, ",")+`]}`) + r.write(t, "status."+block, status(app, "idle")) +} + +// write writes content to the file name of the fake. +func (r *fakeRex) write(t *testing.T, name, content string) { + t.Helper() + if err := os.WriteFile(filepath.Join(r.dir, name), []byte(content+"\n"), 0o600); err != nil { + t.Fatal(err) + } +} + +// status returns the program status of app in state. +func status(app, state string) string { + return `{"records":[{"state":"` + state + `","app":"` + app + `"}]}` +} + +// calls returns the calls of rex, one a line. +func (r *fakeRex) calls(t *testing.T) string { + t.Helper() + b, err := os.ReadFile(filepath.Join(r.dir, "calls")) + if err != nil && !os.IsNotExist(err) { + t.Fatal(err) + } + return string(b) +} + +// setState sets the state of the agent pi and sends the event of the +// change. +func (r *fakeRex) setState(t *testing.T, state string) { + t.Helper() + r.write(t, "status.block:pi", status("pi", state)) + event := `{"type":"session_event","payload":{"session_id":"S",` + + `"event":{"type":"block_event","payload":{"block_id":"block:pi",` + + `"name":"program_status_changed","payload":{"id":"","record":` + + `{"state":"` + state + `","app":"pi"},"reason":"report"}}}}}` + f, err := os.OpenFile(filepath.Join(r.dir, "events"), os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0o600) + if err != nil { + t.Fatal(err) + } + if _, err := f.WriteString(event + "\n"); err != nil { + t.Fatal(err) + } + if err := f.Close(); err != nil { + t.Fatal(err) + } +} + +// tool writes a fake program name with body to dir, and returns dir. +func tool(t *testing.T, dir, name, body string) string { + t.Helper() + testgit.Script(t, dir, name, body) + return dir +} + +// lines returns the lines of s that contain text. +func lines(s, text string) []string { + var out []string + for l := range strings.Lines(s) { + if strings.Contains(l, text) { + out = append(out, strings.TrimRight(l, "\n")) + } + } + return out +} diff --git a/test/files_test.go b/test/files_test.go new file mode 100644 index 0000000..c806495 --- /dev/null +++ b/test/files_test.go @@ -0,0 +1,126 @@ +package test + +import ( + "os" + "path/filepath" + "strings" + "testing" + "time" + + "github.com/rednafi/rexdiff/internal/testgit" +) + +// TestFilesTab checks that the Files tab lists all the files, opens a +// file, expands an ignored directory, and renders markdown. +func TestFilesTab(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{}) + tm.keys("2") + tm.waitFor("Files (6)", "docs/guide.txt", "▸ out/", "long.txt") + tm.keys("tab", "j", "right") + tm.waitFor("▾ out/", "build.log") + tm.keys("j", "j", "j") + tm.waitFor("# Title") + tm.keys("m") + tm.waitGone("# Title") + tm.waitFor("Title", "Some text.") +} + +// TestSearch checks that / finds files by name and lines by code, shows a +// preview, and opens the pick. A changed file opens in the Changes tab. +func TestSearch(t *testing.T) { + t.Parallel() + tm := start(t, newRepo(t), opts{}) + tm.keys("/", "l", "o", "n", "g") + tm.waitFor("files 1", "▶ long.txt", "preview · long.txt", "first") + tm.keys("enter") + tm.waitGone("preview ·") + tm.waitFor("first", "⋯ 32 unmodified lines") + + tm.keys("/", "tab", "l", "i", "n", "e", " ", "7") + tm.waitFor("code 1", "7: line 7", "▶ 7 line 7") + tm.keys("enter") + tm.waitUntil(func(s string) bool { + for _, l := range lines(s, "▶") { + if strings.Contains(l, "line 7") { + return true + } + } + return false + }, "put the cursor on line 7") +} + +// TestLiveReload checks that the Changes tab shows an edit and a new file +// without a key. +func TestLiveReload(t *testing.T) { + t.Parallel() + repo := newRepo(t) + tm := start(t, repo, opts{}) + tm.waitFor("Changes (2)") + testgit.WriteFile(t, repo, "new/c.go", "package c\n") + tm.waitFor("Changes (3)", "c.go") + testgit.WriteFile(t, repo, "a.go", "package a\n\nfunc A() int { return 3 }\n") + tm.waitFor("return 3 }") + if err := os.Remove(filepath.Join(repo, "new", "c.go")); err != nil { + t.Fatal(err) + } + tm.waitFor("Changes (2)") +} + +// TestLastTurn checks that the last-turn scope shows what the agent +// changes in its last turn. +func TestLastTurn(t *testing.T) { + t.Parallel() + repo := newRepo(t) + rex := newRex(t, repo) + tm := start(t, repo, opts{rex: rex}) + tm.keys("t") + // rexdiff takes the states of an agent after its first list of them. + tm.waitFor("waiting for the first turn", "send → 1 agent") + rex.setState(t, "working") + time.Sleep(500 * time.Millisecond) // the turn starts with a snapshot + testgit.WriteFile(t, repo, "turn.go", "package a\n") + rex.setState(t, "idle") + tm.waitFor("Changes (1)", "turn.go", "pi") +} + +// TestPR checks that the PR tab shows the pull request of the branch from +// gh, with its checks and comments, and that o opens it. +func TestPR(t *testing.T) { + t.Parallel() + repo := newRepo(t) + testgit.Git(t, repo, "remote", "add", "origin", "https://github.com/o/r.git") + bin := t.TempDir() + tool(t, bin, "gh", `cat <<'EOF' +{"number": 7, "title": "Add b", "state": "OPEN", "isDraft": false, + "url": "https://github.com/o/r/pull/7", "body": "The body of the PR.", + "author": {"login": "ann"}, "headRefName": "feat", "baseRefName": "main", + "comments": [{"author": {"login": "bob"}, "body": "Looks good.", + "createdAt": "2026-01-02T03:04:05Z"}], + "statusCheckRollup": [{"name": "test", "conclusion": "SUCCESS"}, + {"name": "lint", "conclusion": "FAILURE"}]} +EOF +`) + tool(t, bin, "opener", `printf '%s\n' "$@" > "${0%/*}/opened"`+"\n") + tm := start(t, repo, opts{path: bin, args: []string{ + "-config", + `{"url_opener": "opener {url}"}`, + }}) + tm.keys("3") + tm.waitFor("Add b #7", "● open", "feat → main", "by ann", + "checks: ✓ 1 ✗ 1", "✗ lint", "The body of the PR.", "bob", + "Looks good.") + tm.keys("o") + path := filepath.Join(bin, "opened") + deadline := time.Now().Add(10 * time.Second) + for { + b, _ := os.ReadFile(path) + if string(b) == "https://github.com/o/r/pull/7\n" { + return + } + if time.Now().After(deadline) { + t.Fatalf("the opener got %q, want the URL of the PR", b) + } + time.Sleep(20 * time.Millisecond) + } +} diff --git a/test/rexdiff_test.go b/test/rexdiff_test.go new file mode 100644 index 0000000..947a3e8 --- /dev/null +++ b/test/rexdiff_test.go @@ -0,0 +1,268 @@ +// Package test runs the rexdiff program as a user does. Each test starts +// the binary in a terminal, types keys, and reads the screen. A fake rex +// stands in for Rex, and the other tools are fakes on PATH. git is real. +package test + +import ( + "context" + "io" + "os" + "os/exec" + "path/filepath" + "strconv" + "strings" + "sync" + "testing" + "time" + "unicode/utf8" + + "github.com/charmbracelet/x/vt" + "github.com/creack/pty" + + "github.com/rednafi/rexdiff/internal/testgit" +) + +func TestMain(m *testing.M) { testgit.Main(m) } + +var ( + buildOnce sync.Once + binPath string + buildErr error +) + +// binary returns the path of a rexdiff binary that the package builds +// once. +func binary(t *testing.T) string { + t.Helper() + buildOnce.Do(func() { + dir, err := os.MkdirTemp("", "rexdiff-test") + if err != nil { + buildErr = err + return + } + binPath = filepath.Join(dir, "rexdiff") + out, err := exec.CommandContext(context.Background(), "go", "build", "-o", binPath, "../cmd/rexdiff").CombinedOutput() + if err != nil { + buildErr = &buildError{err, string(out)} + } + }) + if buildErr != nil { + t.Fatal(buildErr) + } + return binPath +} + +// buildError is an error of go build with its output. +type buildError struct { + err error + out string +} + +func (e *buildError) Error() string { return "go build: " + e.err.Error() + "\n" + e.out } + +// opts are the options of a rexdiff run. +type opts struct { + args []string // the flags; start adds the repo + width int // 0 means 160 + height int // 0 means 40 + rex *fakeRex // nil runs rexdiff outside Rex + path string // a directory of fake tools, or "" + env []string // more variables +} + +// term is a rexdiff that runs in a terminal. +type term struct { + t *testing.T + pty *os.File + emu *vt.Emulator + mu sync.Mutex // guards emu + cmd *exec.Cmd + done chan struct{} +} + +// start runs rexdiff on repo in a new terminal. The test stops it at the +// end. +func start(t *testing.T, repo string, o opts) *term { + t.Helper() + return startBin(t, binary(t), repo, o) +} + +// startBin is start with the rexdiff at bin. +func startBin(t *testing.T, bin, repo string, o opts) *term { + t.Helper() + w, h := o.width, o.height + if w == 0 { + w = 160 + } + if h == 0 { + h = 40 + } + cmd := exec.CommandContext(t.Context(), bin, append(o.args, repo)...) + cmd.Dir = repo + path := "/usr/bin:/bin:/usr/sbin:/sbin" + if git, err := exec.LookPath("git"); err == nil { + path = filepath.Dir(git) + ":" + path + } + if o.path != "" { + path = o.path + ":" + path + } + cmd.Env = append(os.Environ(), + "PATH="+path, "TERM=xterm-256color", "REX_SESSION=", "REX_BLOCK=", + "REX_BIN_DIR=", "REX_AGENT_BLOCK=", "EDITOR=", "VISUAL=", "REXDIFF_LOG=") + if o.rex != nil { + cmd.Env = append(cmd.Env, "REX_SESSION=S", "REX_BLOCK=block:self", + "REX_BIN_DIR="+o.rex.dir) + } + cmd.Env = append(cmd.Env, o.env...) + f, err := pty.StartWithSize(cmd, &pty.Winsize{Cols: uint16(w), Rows: uint16(h)}) + if err != nil { + t.Fatal(err) + } + tm := &term{t: t, pty: f, emu: vt.NewEmulator(w, h), cmd: cmd, done: make(chan struct{})} + go func() { // the screen + defer close(tm.done) + buf := make([]byte, 32<<10) + for { + n, err := f.Read(buf) + if n > 0 { + tm.mu.Lock() + _, _ = tm.emu.Write(buf[:n]) + tm.mu.Unlock() + } + if err != nil { + return + } + } + }() + go func() { _, _ = io.Copy(f, tm.emu) }() // the keys and the replies + t.Cleanup(func() { + _ = cmd.Process.Kill() + _ = cmd.Wait() + _ = f.Close() + <-tm.done + // The emulator stays open. Its Close races with its Read. + }) + tm.waitFor("1 Changes") + return tm +} + +// screen returns the text on the screen. +func (tm *term) screen() string { + tm.mu.Lock() + defer tm.mu.Unlock() + return tm.emu.String() +} + +// keys types each key. A key is a text, or a name such as "enter". +func (tm *term) keys(keys ...string) { + tm.t.Helper() + for _, k := range keys { + s, ok := keyCodes[k] + if !ok { + s = k + } + if _, err := tm.pty.WriteString(s); err != nil { + tm.t.Fatal(err) + } + // A pause lets rexdiff take the key. A lone esc needs a longer + // one, else it joins the next key. + pause := 20 * time.Millisecond + if k == "esc" { + pause = 150 * time.Millisecond + } + time.Sleep(pause) + } +} + +// keyCodes are the bytes of the named keys. +var keyCodes = map[string]string{ + "enter": "\r", + "esc": "\x1b", + "tab": "\t", + "space": " ", + "up": "\x1b[A", + "down": "\x1b[B", + "right": "\x1b[C", + "left": "\x1b[D", + "ctrl+d": "\x04", + "ctrl+u": "\x15", + "ctrl+f": "\x06", + "bs": "\x7f", +} + +// click clicks text on the screen the given number of times in a row. +func (tm *term) click(text string, times int) { + tm.t.Helper() + x, y := -1, -1 + for i, l := range strings.Split(tm.waitFor(text), "\n") { + if before, _, ok := strings.Cut(l, text); ok { + x, y = utf8.RuneCountInString(before), i + break + } + } + at := strconv.Itoa(x+1) + ";" + strconv.Itoa(y+1) + for range times { + for _, end := range []string{"M", "m"} { // press, release + if _, err := tm.pty.WriteString("\x1b[<0;" + at + end); err != nil { + tm.t.Fatal(err) + } + } + } +} + +// waitFor waits until the screen shows each of texts. It fails the test +// after a while. +func (tm *term) waitFor(texts ...string) string { + tm.t.Helper() + return tm.waitUntil(func(s string) bool { + for _, text := range texts { + if !strings.Contains(s, text) { + return false + } + } + return true + }, "show "+strings.Join(texts, ", ")) +} + +// waitGone waits until the screen shows none of texts. +func (tm *term) waitGone(texts ...string) string { + tm.t.Helper() + return tm.waitUntil(func(s string) bool { + for _, text := range texts { + if strings.Contains(s, text) { + return false + } + } + return true + }, "not show "+strings.Join(texts, ", ")) +} + +// waitUntil waits until ok is true for the screen. +func (tm *term) waitUntil(ok func(string) bool, what string) string { + tm.t.Helper() + deadline := time.Now().Add(10 * time.Second) + for { + s := tm.screen() + if ok(s) { + return s + } + if time.Now().After(deadline) { + tm.t.Fatalf("the screen does not %s. It shows:\n%s", what, s) + } + time.Sleep(20 * time.Millisecond) + } +} + +// exited waits until rexdiff exits and returns its error. +func (tm *term) exited() error { + tm.t.Helper() + errc := make(chan error, 1) + go func() { errc <- tm.cmd.Wait() }() + select { + case err := <-errc: + return err + case <-time.After(10 * time.Second): + tm.t.Fatalf("rexdiff does not exit. The screen shows:\n%s", tm.screen()) + return nil + } +} diff --git a/cmd/rexdiff/testdata/script/errors.txt b/test/testdata/script/cli.txt similarity index 54% rename from cmd/rexdiff/testdata/script/errors.txt rename to test/testdata/script/cli.txt index 22ab7f4..bd654e1 100644 --- a/cmd/rexdiff/testdata/script/errors.txt +++ b/test/testdata/script/cli.txt @@ -1,38 +1,24 @@ +# -h shows the usage, and -version the version. A build for development +# has no version. +exec rexdiff -h +stderr '^usage: rexdiff \[flags\] \[repo\]' +exec rexdiff -version +stdout '^\(devel\)$' + # rexdiff does not start when its input is wrong. Each error says what is # wrong, and which values are allowed. - ! exec rexdiff -layout sideways stderr 'invalid value "sideways" for flag -layout: expected one of unified, split' -! exec rexdiff -scope=week -stderr 'invalid value "week" for flag -scope: expected one of uncommitted, branch, last-turn' -! exec rexdiff -bogus -stderr 'flag provided but not defined: -bogus' - -# rexdiff needs a git repository. ! exec rexdiff $WORK stderr '^rexdiff: open .+: git rev-parse: fatal: not a git repository' - -# -check checks the settings without a repository, for the Rex action. -# TestParseConfig has the other bad settings. -! exec rexdiff -check -config '{"layout": "sideways"}' -stderr '^rexdiff: config: invalid value for layout: expected one of unified, split, not "sideways"$' -exec rexdiff -check -config '{"layout": "split"}' -! stderr . - -# Flags go before the repo. rexdiff takes one repo. exec git init -q repo ! exec rexdiff repo -wrap=false stderr '^rexdiff: unknown argument -wrap=false \(flags go before the repo\)$' -! exec rexdiff repo other -stderr '^rexdiff: unknown argument other \(flags go before the repo\)$' - -# rexdiff does not start with bad settings. ! exec rexdiff -config '{"layuot": "split"}' repo stderr '^rexdiff: config: unknown key "layuot"$' -# install takes no arguments. The key and the placement are settings. -! exec rexdiff install --placement=tab -stderr 'flag provided but not defined: -placement' -! exec rexdiff install extra -stderr 'unknown argument extra' -! exists .config/rex +# -check checks the settings without a repository, for the Rex action. +! exec rexdiff -check -config '{"layout": "sideways"}' +stderr '^rexdiff: config: invalid value for layout: expected one of unified, split, not "sideways"$' +exec rexdiff -check -config '{"layout": "split"}' +! stderr . diff --git a/cmd/rexdiff/testdata/script/install.txt b/test/testdata/script/install.txt similarity index 89% rename from cmd/rexdiff/testdata/script/install.txt rename to test/testdata/script/install.txt index 1880108..e943478 100644 --- a/cmd/rexdiff/testdata/script/install.txt +++ b/test/testdata/script/install.txt @@ -11,10 +11,6 @@ cmp .config/rex/init.lua installed.lua grep '^local settings = \{$' .config/rex/rexdiff.lua grep '^-- rexdiff code below. Install and upgrades replace it. Do not edit this line.$' .config/rex/rexdiff.lua -# The action starts rexdiff through the shell of the user, so that -# rexdiff gets EDITOR, VISUAL, and PATH. A "shell" option can stop that. -! grep 'shell = ' .config/rex/rexdiff.lua - # Rex accepts the action and its key. [realrex] exec $REALREX config check .config/rex/init.lua [realrex] stdout 'bindings: 2' @@ -77,12 +73,6 @@ grep 'require\("rexdiff"\)' other/init.lua [darwin] exec $WORK/brew/rexdiff install [darwin] grep 'local BIN = "'$WORK'/brew/rexdiff"' other/rexdiff.lua -# uninstall without an install changes nothing and does not fail. -env REX_CONFIG=$WORK/none/init.lua -exec rexdiff uninstall -stdout 'removed the rexdiff action, its key, and its settings from Rex' -! exists none - -- mine.lua -- rex.bind("cmd+e", "pane.zoom") -- installed.lua -- diff --git a/test/update_test.go b/test/update_test.go new file mode 100644 index 0000000..5b44535 --- /dev/null +++ b/test/update_test.go @@ -0,0 +1,101 @@ +package test + +import ( + "archive/tar" + "bytes" + "compress/gzip" + "crypto/sha256" + "encoding/hex" + "net/http" + "net/http/httptest" + "os/exec" + "path/filepath" + "runtime" + "strings" + "testing" + "time" +) + +// build builds rexdiff with version into dir, and returns its path. +func build(t *testing.T, dir, version string) string { + t.Helper() + bin := filepath.Join(dir, "rexdiff") + cmd := exec.CommandContext(t.Context(), "go", "build", "-o", bin, + "-ldflags", "-X main.version="+version, "../cmd/rexdiff") + if out, err := cmd.CombinedOutput(); err != nil { + t.Fatalf("go build: %v\n%s", err, out) + } + return bin +} + +// release serves the latest release tag with the binary at bin, as GitHub +// does. It returns the address of the latest release. +func release(t *testing.T, tag, bin string) string { + t.Helper() + content := read(t, bin) + var b bytes.Buffer + gz := gzip.NewWriter(&b) + tw := tar.NewWriter(gz) + hdr := &tar.Header{Name: "rexdiff", Mode: 0o755, Size: int64(len(content)), Typeflag: tar.TypeReg} + if err := tw.WriteHeader(hdr); err != nil { + t.Fatal(err) + } + if _, err := tw.Write([]byte(content)); err != nil { + t.Fatal(err) + } + if err := tw.Close(); err != nil { + t.Fatal(err) + } + if err := gz.Close(); err != nil { + t.Fatal(err) + } + name := "rexdiff-" + tag + "-" + runtime.GOOS + "-" + runtime.GOARCH + ".tar.gz" + sum := sha256.Sum256(b.Bytes()) + files := map[string][]byte{ + "/" + name: b.Bytes(), + "/sha256sums.txt": []byte(hex.EncodeToString(sum[:]) + " " + name + "\n"), + } + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + b, ok := files[r.URL.Path] + if !ok { + http.NotFound(w, r) + return + } + _, _ = w.Write(b) + })) + t.Cleanup(srv.Close) + files["/latest"] = []byte(`{"tag_name": "` + tag + `", "assets": [` + + `{"name": "` + name + `", "browser_download_url": "` + srv.URL + "/" + name + `"},` + + `{"name": "sha256sums.txt", "browser_download_url": "` + srv.URL + `/sha256sums.txt"}]}`) + return srv.URL + "/latest" +} + +// TestUpdate checks that U installs the latest release and starts it in +// the same terminal, with the comments and the place of the user. +func TestUpdate(t *testing.T) { + t.Parallel() + dir := t.TempDir() + bin := build(t, dir, "0.1.0") + latest := release(t, "v0.2.0", build(t, t.TempDir(), "0.2.0")) + tm := startBin(t, bin, newRepo(t), opts{env: []string{"REXDIFF_LATEST_URL=" + latest}}) + tm.waitFor("rexdiff v0.2.0 is out: press U or click here to update") + comment(tm, "hi") + tm.keys("U") + deadline := time.Now().Add(10 * time.Second) + for { + out, _ := exec.CommandContext(t.Context(), bin, "-version").Output() + if strings.TrimSpace(string(out)) == "v0.2.0" { + break + } + if time.Now().After(deadline) { + t.Fatalf("rexdiff -version = %q, want v0.2.0. The screen shows:\n%s", out, tm.screen()) + } + time.Sleep(50 * time.Millisecond) + } + // The new rexdiff is the latest, so it shows no update. It has the + // comment, but not the message of the old one. + tm.waitUntil(func(s string) bool { + return strings.Contains(s, "💬 hi") && !strings.Contains(s, "is out") && + !strings.Contains(s, "updating") && !strings.Contains(s, "comment added") + }, "show the comment in the new rexdiff") +} diff --git a/test/upgrade_test.go b/test/upgrade_test.go new file mode 100644 index 0000000..5f03eb3 --- /dev/null +++ b/test/upgrade_test.go @@ -0,0 +1,68 @@ +package test + +import ( + "os" + "os/exec" + "path/filepath" + "strings" + "testing" +) + +// TestUpgradeAtStart checks that rexdiff in Rex replaces old code in +// rexdiff.lua, keeps the settings, and reloads Rex. Without the line above +// the code, it changes nothing and tells why. +func TestUpgradeAtStart(t *testing.T) { + t.Parallel() + repo := newRepo(t) + rex := newRex(t, repo) + config := filepath.Join(t.TempDir(), "init.lua") + env := []string{"REX_CONFIG=" + config} + install := exec.CommandContext(t.Context(), binary(t), "install") + install.Env = append(os.Environ(), append(env, "REX_BIN_DIR="+rex.dir)...) + if out, err := install.CombinedOutput(); err != nil { + t.Fatalf("rexdiff install: %v\n%s", err, out) + } + lua := filepath.Join(filepath.Dir(config), "rexdiff.lua") + installed := read(t, lua) + edited := strings.Replace(installed, "local settings = {", "local settings = { layout = \"split\",", 1) + write(t, lua, strings.Replace(edited, "local function must", "local function old_must", 1)) + + tm := start(t, repo, opts{rex: rex, env: env}) + tm.keys("q") + if err := tm.exited(); err != nil { + t.Fatal(err) + } + if got := read(t, lua); got != edited { + t.Errorf("rexdiff.lua after the start:\n%s\nwant the new code under the settings:\n%s", got, edited) + } + if calls := rex.calls(t); !strings.Contains(calls, "config reload") { + t.Errorf("rex calls:\n%s\nwant a config reload", calls) + } + + const mark = "-- rexdiff code below. Install and upgrades replace it. Do not edit this line.\n" + noMark := strings.Replace(edited, mark, "", 1) + write(t, lua, noMark) + tm = start(t, repo, opts{rex: rex, env: env}) + tm.waitFor("cannot upgrade rexdiff.lua") + if got := read(t, lua); got != noMark { + t.Errorf("rexdiff.lua without the line changes to:\n%s", got) + } +} + +// read returns the content of the file at path. +func read(t *testing.T, path string) string { + t.Helper() + b, err := os.ReadFile(path) + if err != nil { + t.Fatal(err) + } + return string(b) +} + +// write writes content to the file at path. +func write(t *testing.T, path, content string) { + t.Helper() + if err := os.WriteFile(path, []byte(content), 0o600); err != nil { + t.Fatal(err) + } +} diff --git a/tui/agents_test.go b/tui/agents_test.go deleted file mode 100644 index b3f309f..0000000 --- a/tui/agents_test.go +++ /dev/null @@ -1,74 +0,0 @@ -package tui - -import ( - "os" - "strings" - "testing" - - "github.com/rednafi/rexdiff/rex" -) - -// agentPicker returns a test model with a comment and the agent picker -// open on three agents. The agent beside the pane is b2. It also returns -// the log of the fake rex. -func agentPicker(t *testing.T) (model, string) { - t.Helper() - m, dir := newTestModel(t) - log := logRex(t, &m) - m.beside = "b2" - m = press(t, m, "]", "c", "h", "i", "enter", "s") - m = step(t, m, agentsMsg{send: true, agents: []rex.Agent{ - {Block: "b1", Name: "pi", Window: "main", Cwd: dir, Status: rex.Status{App: "pi", State: rex.StateIdle}}, - {Block: "b2", Name: "agent", Cwd: dir, Status: rex.Status{App: "claude-code", State: rex.StateBlocked}}, - {Block: "b3", Name: "cc", Cwd: dir, Status: rex.Status{App: "codex", State: rex.StateWorking}}, - }}) - if m.overlay == nil || m.overlay.kind != overlayAgents { - t.Fatalf("a send to three agents: overlay %v, want the agent picker", m.overlay) - } - return m, log -} - -// TestAgentPicker checks the rows of the agent picker, and that a digit or -// enter sends to the agent of the row. -func TestAgentPicker(t *testing.T) { - m, _ := agentPicker(t) - for _, want := range []string{ - "send to which agent?", - "1 pi", "pi · idle · main", - "2 agent", "claude-code · at a prompt", "opened beside", - "3 cc", "codex · working", - } { - if !shows(m, want) { - t.Errorf("the picker got:\n%s\nwant %q", view(m), want) - } - } - if m.overlay.cur != 1 { - t.Errorf("the cursor is on row %d, want row 1, the agent beside", m.overlay.cur) - } - if m = press(t, m, "9"); m.overlay == nil { - t.Error("9 with three agents closes the picker, want no pick") - } - - tests := []struct{ name, keys, block string }{ - {"digit", "3", "b3"}, - {"enter", "enter", "b2"}, - {"move and enter", "j enter", "b3"}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - m, log := agentPicker(t) - keys := strings.Fields(tt.keys) - m = press(t, m, keys[:len(keys)-1]...) - next, cmd := m.Update(keyMsg(t, keys[len(keys)-1])) - if m = *next.(*model); m.overlay != nil || cmd == nil { - t.Fatalf("after %s: overlay %v, command %v; want a send", tt.keys, m.overlay, cmd != nil) - } - cmd() // the send checks the agent first - b, err := os.ReadFile(log) - want := "block call -s S -b " + tt.block + " program_status" - if err != nil || !strings.Contains(string(b), want) { - t.Errorf("rex calls %q (%v), want %s", b, err, want) - } - }) - } -} diff --git a/tui/anchor_test.go b/tui/anchor_test.go deleted file mode 100644 index d542bbb..0000000 --- a/tui/anchor_test.go +++ /dev/null @@ -1,154 +0,0 @@ -package tui - -import ( - "os" - "path/filepath" - "strings" - "testing" - - "github.com/rednafi/rexdiff/diff" - "github.com/rednafi/rexdiff/internal/testgit" -) - -// TestCommentKeepsLine checks that a comment stays on its line numbers -// when lines come above it, as in herdr-reviewr. -func TestCommentKeepsLine(t *testing.T) { - t.Parallel() - m := commented(t) - c := m.comments.All()[0] - start, end := c.Start, c.End - testgit.WriteFile(t, m.repo.Root(), "a.go", - "// one\n// two\npackage a\n\nfunc A() int {\n\tx := 2\n\treturn x\n}\n") - m.reload() - if c.Start != start || c.End != end { - t.Errorf("after two lines above: lines %d-%d, want %d-%d", c.Start, c.End, start, end) - } - if m.comments.At(m.anchor(), "a.go", c.Side, start) != c { - t.Errorf("no comment at line %d after the edit, want it", start) - } - if strings.Contains(view(m), "(stale)") { - t.Errorf("the diff shows (stale):\n%s", view(m)) - } -} - -// TestStaleInList checks that a comment whose file leaves the changes -// shows "(stale)" in the comment list only. -func TestStaleInList(t *testing.T) { - t.Parallel() - m := commented(t) - testgit.Git(t, m.repo.Root(), "checkout", "--", "a.go") - m.reload() - if shows(m, "(stale)") { - t.Errorf("the diff shows (stale):\n%s", view(m)) - } - if m = press(t, m, "l"); !shows(m, "a.go:4", "(stale)") { - t.Errorf("l after a revert got:\n%s\nwant the comment marked (stale)", view(m)) - } -} - -// TestFileCommentView checks that a comment on the Files tab shows only -// there, and is stale only when its file is gone. -func TestFileCommentView(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - m = press(t, m, "2", "j", "c", "f", "i", "l", "e", "enter") - if m.comments.Len() != 1 || !shows(m, "💬 file") { - t.Fatalf("a comment in Files: %d comments, view:\n%s", m.comments.Len(), view(m)) - } - if c := m.comments.All()[0]; c.Anchor != (diff.Anchor{}) { - t.Errorf("anchor = %+v, want a file view on the working tree", c.Anchor) - } - if m = press(t, m, "1"); shows(m, "💬 file") || shows(m, "●1") { - t.Errorf("the Changes tab shows the Files comment:\n%s", view(m)) - } - if m = press(t, m, "l"); shows(m, "(stale)") { - t.Errorf("the list marks the comment (stale):\n%s", view(m)) - } - m = press(t, m, "esc") - if err := os.Remove(filepath.Join(dir, "a.go")); err != nil { - t.Fatal(err) - } - if m = press(t, m, "l"); !shows(m, "(stale)") { - t.Errorf("l after a delete got:\n%s\nwant (stale)", view(m)) - } -} - -// TestCommitsCommentHidden checks that a comment on a commit pick shows -// only at that pick, and that the comment list takes no edit of it in -// another scope. -func TestCommitsCommentHidden(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "G", "enter") // the newest commit adds b.go - if m.scope != scopeCommits { - t.Fatalf("scope = %s, want commits", m.scope) - } - m = press(t, m, "]", "c", "p", "i", "c", "k", "enter") - if m.comments.Len() != 1 || !shows(m, "💬 pick") { - t.Fatalf("a comment on the pick: %d comments, view:\n%s", m.comments.Len(), view(m)) - } - // The branch scope also changes b.go. - m = press(t, m, "b") - if i := m.fileIndex("b.go"); i < 0 { - t.Fatalf("branch scope files %v, want b.go", paths(m)) - } else { - m.pickFile(i) - } - if shows(m, "💬 pick") { - t.Errorf("the branch scope shows the comment of the pick:\n%s", view(m)) - } - m = press(t, m, "l") - if shows(m, "e edit") { - t.Errorf("the list offers an edit of another diff:\n%s", view(m)) - } - if m = press(t, m, "e"); m.mode != modeOverlay { - t.Errorf("e on a comment of another diff: mode %v, want the list open", m.mode) - } - m = press(t, m, "esc", "g") - if i := m.fileIndex("b.go"); i >= 0 { - m.pickFile(i) - } - if !shows(m, "💬 pick") { - t.Errorf("back on the pick got:\n%s\nwant the comment", view(m)) - } - if m = press(t, m, "l"); !shows(m, "e edit") { - t.Errorf("the list at the pick got:\n%s\nwant e edit", view(m)) - } -} - -// fileIndex returns the index of path in the Changes tab, or -1. -func (m *model) fileIndex(path string) int { - for i, f := range m.files { - if f.Path == path { - return i - } - } - return -1 -} - -// TestResumeOldComments checks the comments of a state file of v0.2.7, -// which has no anchors. A comment gets the revision of the saved scope, so -// that a comment in the commits scope still shows. -func TestResumeOldComments(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - path := filepath.Join(t.TempDir(), "state.json") - state := `{"tab":0,"scope":"commits","from":"aaa","to":"bbb",` + - `"comments":{"last":1,"items":[{"id":1,"path":"a.go","side":1,` + - `"start":2,"end":2,"text":"x","stale":false,"code":["b"],"snippet":null}]}}` - if err := os.WriteFile(path, []byte(state), 0o600); err != nil { - t.Fatal(err) - } - s, err := loadState(path) - if err != nil { - t.Fatalf("loadState: %v", err) - } - m.restoreSettings(s) - want := diff.Anchor{InDiff: true, Rev: "aaa..bbb"} - if c := m.comments.Find(1); c == nil || c.Anchor != want { - t.Errorf("comment after the restore = %+v, want anchor %+v", c, want) - } - if m.anchor() != want { - t.Errorf("anchor of the view = %+v, want %+v", m.anchor(), want) - } -} diff --git a/tui/bench_test.go b/tui/bench_test.go deleted file mode 100644 index 75d29eb..0000000 --- a/tui/bench_test.go +++ /dev/null @@ -1,99 +0,0 @@ -package tui - -import ( - "fmt" - "slices" - "strings" - "testing" - - tea "charm.land/bubbletea/v2" - - "github.com/rednafi/rexdiff/diff" - "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rednafi/rexdiff/vcs" -) - -// BenchmarkReview reloads a large change and scrolls through it, as a user -// does. Use it to profile the program: -// -// go test ./tui -run '^$' -bench Review \ -// -cpuprofile cpu.out -memprofile mem.out -func BenchmarkReview(b *testing.B) { - m, dir := newTestModel(b) - // The benchmark makes 20 new files of 2,000 lines each. - var src strings.Builder - for i := range 2000 { - src.WriteString("\tx := compute(" + strings.Repeat("a", i%40) + ")\n") - } - content := "package a\nfunc f() {\n" + src.String() + "}\n" - for i := range 20 { - testgit.WriteFile(b, dir, "big"+string(rune('a'+i))+".go", content) - } - // Select a large file. The reload keeps the selected file. - m.reload() - m.pickFile(1) - down := tea.KeyPressMsg{Code: 'j', Text: "j"} - for b.Loop() { - m.reload() - for range 100 { - m = step(b, m, down) - _ = m.View() - } - } -} - -// BenchmarkScroll scrolls a large change sideways. It scrolls in the Changes -// tab with the folds closed and open, and in the Files tab. -// -// go test ./tui -run '^$' -bench Scroll -func BenchmarkScroll(b *testing.B) { - for _, name := range []string{"folded", "open", "file"} { - b.Run(name, func(b *testing.B) { - m := bigChange(b) - switch name { - case "open": - for { - i := slices.IndexFunc(m.changes.rows, func(r diff.Row) bool { return r.Fold.Lines > 0 }) - if i < 0 { - break - } - m.expandFold(m.changes.rows[i].Fold) - } - case "file": - m.setTab(tabFiles) - m.pickFile(slices.IndexFunc(m.allFiles, func(e vcs.Entry) bool { return e.Path == "big.go" })) - } - right := tea.KeyPressMsg{Code: tea.KeyRight} - left := tea.KeyPressMsg{Code: tea.KeyLeft} - for b.Loop() { - m = step(b, m, right) - _ = m.View() - m = step(b, m, left) - _ = m.View() - } - }) - } -} - -// bigChange returns a model that shows a change to big.go, a file of 5,000 -// long lines. The change edits each 100th line. -func bigChange(b *testing.B) model { - b.Helper() - m, dir := newTestModel(b) - var old, cur strings.Builder - for i := range 5000 { - l := fmt.Sprintf("\tx%d := compute(%q, %d) // a long line with words\n", i, strings.Repeat("a", i%40), i*7) - old.WriteString(l) - if i%100 == 0 { - l = "\ty := 1\n" - } - cur.WriteString(l) - } - testgit.WriteFile(b, dir, "big.go", "package a\nfunc f() {\n"+old.String()+"}\n") - testgit.Git(b, dir, "add", ".") - testgit.Git(b, dir, "commit", "-qm", "big") - testgit.WriteFile(b, dir, "big.go", "package a\nfunc f() {\n"+cur.String()+"}\n") - m.reload() - m.pickFile(slices.IndexFunc(m.files, func(f changedFile) bool { return f.Path == "big.go" })) - return m -} diff --git a/tui/click_test.go b/tui/click_test.go deleted file mode 100644 index cdc4880..0000000 --- a/tui/click_test.go +++ /dev/null @@ -1,127 +0,0 @@ -package tui - -import ( - "errors" - "io/fs" - "os" - "slices" - "strings" - "testing" - - tea "charm.land/bubbletea/v2" - "github.com/charmbracelet/x/ansi" -) - -// codeCell returns the screen cell of the first needle in the main pane. -func codeCell(t *testing.T, m model, needle string) (x, y int) { - t.Helper() - p := m.cur() - for i, l := range p.lines { - plain := ansi.Strip(l) - if before, _, ok := strings.Cut(plain, needle); ok { - return m.mainX() + gutter + ansi.StringWidth(before), screenY(t, m, i) - } - } - t.Fatalf("no %q in the main pane", needle) - return 0, 0 -} - -// clicks sends n clicks at x, y, and runs the command of the last click. -func clicks(t *testing.T, m model, n, x, y int) model { - t.Helper() - for range n - 1 { - m = click(t, m, x, y) - } - next, cmd := m.Update(tea.MouseClickMsg{Button: tea.MouseLeft, X: x, Y: y}) - if m = *next.(*model); cmd != nil { - m, _ = run(t, m, cmd) - } - return step(t, m, tea.MouseReleaseMsg{Button: tea.MouseLeft, X: x, Y: y}) -} - -// clearFile removes the file at path if it exists. -func clearFile(t *testing.T, path string) { - t.Helper() - if err := os.Remove(path); err != nil && !errors.Is(err, fs.ErrNotExist) { - t.Fatal(err) - } -} - -// TestMultiClickCopies checks that a double click copies the word, a -// triple click copies the source line, and a double click on the file list -// copies the path. A double click off a word copies nothing. -func TestMultiClickCopies(t *testing.T) { - tests := []struct { - name, needle string - n int - want string // the copy, or "" for no copy - }{ - {"double", "return", 2, "return"}, - {"double on one letter", "x := 2", 2, "x"}, - {"triple", "return x", 3, "\treturn x"}, - {"four", "return x", 4, "\treturn x"}, - {"double on a symbol", ":= 2", 2, ""}, - } - // The cases share one clipboard and one model. A click changes only - // the fields of the model value, so each case starts from a copy. - out := fakeClipboard(t, false) - base, _ := newTestModel(t) - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - clearFile(t, out) - m := base - x, y := codeCell(t, m, tt.needle) - m = clicks(t, m, tt.n, x, y) - got, err := os.ReadFile(out) - if tt.want == "" { - if !errors.Is(err, fs.ErrNotExist) || m.status != "" { - t.Errorf("clipboard %q (%v), status %q; want no copy", got, err, m.status) - } - return - } - if err != nil || string(got) != tt.want { - t.Errorf("clipboard %q (%v), want %q", got, err, tt.want) - } - if want := "copied " + plural(len([]rune(tt.want)), "char"); m.status != want { - t.Errorf("status %q, want %q", m.status, want) - } - }) - } - - t.Run("path", func(t *testing.T) { - clearFile(t, out) - m := base - y := m.listY() + 1 + slices.Index(rowNames(m), "a.go") - m = clicks(t, m, 2, m.listX()+3, y) - got, err := os.ReadFile(out) - if err != nil || string(got) != "a.go" || m.status != "copied 4 chars" { - t.Errorf("clipboard %q (%v), status %q; want a.go, copied 4 chars", got, err, m.status) - } - }) -} - -// TestClickChain checks that the clicks count only on the same cell and -// within the window. -func TestClickChain(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - clk := setClock(&m) - at := tea.Mouse{X: 40, Y: 10} - for i, want := range []int{1, 2, 3, 3} { - if n := m.countClick(at); n != want { - t.Errorf("press %d: count %d, want %d", i+1, n, want) - } - } - if n := m.countClick(tea.Mouse{X: 41, Y: 10}); n != 1 { - t.Errorf("another cell: count %d, want 1", n) - } - clk.advance(clickWindow) - if n := m.countClick(tea.Mouse{X: 41, Y: 10}); n != 1 { - t.Errorf("after the window: count %d, want 1", n) - } - m.countClick(at) - m = press(t, m, "j") - if n := m.countClick(at); n != 1 { - t.Errorf("after a key: count %d, want 1", n) - } -} diff --git a/tui/commentkeys_test.go b/tui/commentkeys_test.go deleted file mode 100644 index b494c73..0000000 --- a/tui/commentkeys_test.go +++ /dev/null @@ -1,162 +0,0 @@ -package tui - -import ( - "strings" - "testing" - - tea "charm.land/bubbletea/v2" -) - -// commented returns a model with the comment "hi" on the first change. -func commented(t *testing.T) model { - t.Helper() - m, _ := newTestModel(t) - m = press(t, m, "]", "c", "h", "i", "enter") - if m.comments.Len() != 1 { - t.Fatalf("got %d comments, want 1", m.comments.Len()) - } - return m -} - -// TestCommentAddsNew checks that c on a line with a comment adds a second -// comment, as in herdr-reviewr. -func TestCommentAddsNew(t *testing.T) { - t.Parallel() - m := press(t, commented(t), "c", "o", "k", "enter") - if m.comments.Len() != 2 || m.status != "comment added" { - t.Errorf("c on a comment: %d comments, status %q; want 2, \"comment added\"", - m.comments.Len(), m.status) - } -} - -// TestEditBlankKeeps checks that an edit with blank text cancels the edit -// and keeps the comment, as in herdr-reviewr. -func TestEditBlankKeeps(t *testing.T) { - t.Parallel() - m := press(t, commented(t), "e") - if m.mode != modeComment || m.editor.Value() != "hi" { - t.Fatalf("e on a comment: mode %v, text %q; want the box with hi", - m.mode, m.editor.Value()) - } - m.status = "" - m.editor.SetValue(" ") - m = press(t, m, "enter") - cs := m.comments.All() - if len(cs) != 1 || cs[0].Text != "hi" || m.status != "" || m.mode != modeNormal { - t.Errorf("a blank edit: %d comments, status %q, mode %v; want hi kept, no status", - len(cs), m.status, m.mode) - } -} - -// TestDeleteNeedsDiffFocus checks that c and d act only with the focus on -// the diff. -func TestDeleteNeedsDiffFocus(t *testing.T) { - t.Parallel() - m := commented(t) - tab := tea.KeyPressMsg{Code: tea.KeyTab} - if m = step(t, m, tab); !m.focusList { - t.Fatal("tab: the focus stays on the diff, want the file list") - } - if m = press(t, m, "d"); m.comments.Len() != 1 { - t.Errorf("d with the list focus: %d comments, want 1", m.comments.Len()) - } - if m = press(t, m, "c"); m.mode != modeNormal { - t.Errorf("c with the list focus: mode %v, want no comment box", m.mode) - } - m = press(t, step(t, m, tab), "d") - if m.comments.Len() != 0 || m.status != "comment deleted" { - t.Errorf("d on the diff: %d comments, status %q; want 0, \"comment deleted\"", - m.comments.Len(), m.status) - } -} - -// TestCommentList checks the keys of the comment list. -func TestCommentList(t *testing.T) { - t.Parallel() - m := press(t, commented(t), "c", "o", "k", "enter", "l") - if !shows(m, "Comments (2)", "s send 2 · esc close · y copy · e edit · d delete") { - t.Errorf("the list got:\n%s\nwant the title and the keys", view(m)) - } - if m = press(t, m, "j"); m.overlay.cur != 1 { - t.Errorf("j in the list: row %d, want 1", m.overlay.cur) - } - if m = press(t, m, "k"); m.overlay.cur != 0 { - t.Errorf("k in the list: row %d, want 0", m.overlay.cur) - } - for _, k := range []string{"esc", "l"} { - if m := press(t, m, k); m.overlay != nil { - t.Errorf("%s in the list: the list stays open, want it closed", k) - } - } - if m := press(t, m, "s"); m.overlay == nil || !strings.Contains(m.status, "not inside Rex") { - t.Errorf("s in the list: overlay %v, status %q; want a send", m.overlay, m.status) - } - - // e edits the comment, and the list opens again after the save. - m = press(t, m, "j", "e") - if m.mode != modeComment || m.editor.Value() != "ok" { - t.Fatalf("e in the list: mode %v, text %q; want the box with ok", - m.mode, m.editor.Value()) - } - m = press(t, m, "!", "enter") - if m.overlay == nil || m.overlay.kind != overlayComments || m.overlay.cur != 1 { - t.Fatalf("after the edit: overlay %v, want the list at row 1", m.overlay) - } - if got := m.comments.All()[1].Text; got != "ok!" || m.status != "comment updated" { - t.Errorf("after the edit: text %q, status %q; want ok!, \"comment updated\"", - got, m.status) - } - - // d deletes, and the list closes with the last comment. - if m = press(t, m, "d"); m.comments.Len() != 1 || !shows(m, "Comments (1)") { - t.Errorf("d in the list: %d comments, view:\n%s\nwant 1", m.comments.Len(), view(m)) - } - if m = press(t, m, "d"); m.overlay != nil || m.comments.Len() != 0 { - t.Errorf("d on the last comment: overlay %v, want the list closed", m.overlay) - } -} - -// TestCommentListCopy checks that y in the comment list copies, clears the -// comments, and closes the list. -func TestCommentListCopy(t *testing.T) { - fakeClipboard(t, false) - m := press(t, commented(t), "l") - m = stepRun(t, m, tea.KeyPressMsg{Code: 'y', Text: "y"}) - if m.overlay != nil || m.comments.Len() != 0 || m.status != "copied 1 comment" { - t.Errorf("y in the list: overlay %v, %d comments, status %q; want a copy", - m.overlay, m.comments.Len(), m.status) - } -} - -// TestStepCommentInFile checks that n and N step only through the -// comments of the open file and wrap around in it, as in herdr-reviewr. -func TestStepCommentInFile(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "b") // the branch changes a.go and adds b.go - if len(m.files) != 2 || shownPath(m) != "a.go" { - t.Fatalf("branch: %d files, shows %s; want 2, a.go", len(m.files), shownPath(m)) - } - m = press(t, m, "]", "c", "x", "enter", "j", "j", "c", "y", "enter") - m = press(t, m, "f", "j", "c", "z", "enter", "F") - if m.comments.Len() != 3 || shownPath(m) != "a.go" { - t.Fatalf("%d comments, shows %s; want 3, a.go", m.comments.Len(), shownPath(m)) - } - var rows []int - for _, c := range m.comments.All() { - if c.Path == "a.go" { - rows = append(rows, m.cur().rowOf(c.Side, c.Start)) - } - } - m.cur().cur = 0 - for i, want := range []int{rows[0], rows[1], rows[0]} { - if m = press(t, m, "n"); m.cur().cur != want || shownPath(m) != "a.go" { - t.Errorf("n %d: row %d in %s, want row %d in a.go", i+1, m.cur().cur, shownPath(m), want) - } - } - for i, want := range []int{rows[1], rows[0], rows[1]} { - if m = press(t, m, "N"); m.cur().cur != want || shownPath(m) != "a.go" { - t.Errorf("N %d: row %d in %s, want row %d in a.go", i+1, m.cur().cur, shownPath(m), want) - } - } -} diff --git a/tui/commits_test.go b/tui/commits_test.go deleted file mode 100644 index 756965a..0000000 --- a/tui/commits_test.go +++ /dev/null @@ -1,64 +0,0 @@ -package tui - -import ( - "testing" - - "github.com/rednafi/rexdiff/internal/testgit" -) - -// TestCommitPicker checks the commit picker of herdr-reviewr: no filter, -// v anchors a range, and esc clears the anchor, then closes. -func TestCommitPicker(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - for _, s := range []string{"c1", "c2", "c3"} { - testgit.Git(t, dir, "commit", "-q", "--allow-empty", "-m", s) - } - m = press(t, m, "G") - if m.overlay == nil || m.overlay.kind != overlayCommits { - t.Fatal("G: no commit picker, want the picker") - } - if !shows(m, "commits · 4 over main", "enter open · esc cancel · j k move · v select") { - t.Errorf("the picker got:\n%s\nwant the title and the keys", view(m)) - } - // The picker has no filter, so a letter does not hide rows. - if m = press(t, m, "x"); len(m.overlay.shown) != 4 || m.overlay.input.Value() != "" { - t.Errorf("x in the picker: %d rows, input %q; want 4 rows, no input", - len(m.overlay.shown), m.overlay.input.Value()) - } - - m = press(t, m, "v", "j", "j") - if m.overlay.mark != 0 || m.overlay.cur != 2 || !shows(m, "enter open 3 · esc clear") { - t.Errorf("v j j: mark %d, cursor %d, view:\n%s\nwant mark 0, cursor 2", - m.overlay.mark, m.overlay.cur, view(m)) - } - if m = press(t, m, "esc"); m.overlay == nil || m.overlay.mark != -1 { - t.Fatalf("esc with an anchor: overlay %v, want it open with no anchor", m.overlay) - } - if m = press(t, m, "esc"); m.overlay != nil { - t.Fatal("esc with no anchor: the picker stays open, want it closed") - } - - // A range of two commits, then the picker opens on it. - m = press(t, m, "G", "j", "v", "k", "enter") - items := func(m model) []pickItem { return m.overlay.items } - m = press(t, m, "G") - if m.scope != scopeCommits || m.to != items(m)[0].id || m.from != items(m)[1].id { - t.Errorf("the pick: from %s to %s, want the two newest commits", m.from, m.to) - } - if m.overlay.cur != 0 || m.overlay.mark != 1 { - t.Errorf("G on a pick: cursor %d, mark %d; want 0, 1", m.overlay.cur, m.overlay.mark) - } -} - -// TestCommitPickerOnBase checks that the picker lists the last commits on -// the base branch. -func TestCommitPickerOnBase(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - testgit.Git(t, dir, "stash", "-q") - testgit.Git(t, dir, "checkout", "-q", "main") - if m = press(t, m, "G"); !shows(m, "commits · last 50") || len(m.overlay.shown) != 1 { - t.Errorf("G on main: view:\n%s\nwant the last 50 commits", view(m)) - } -} diff --git a/tui/copy_test.go b/tui/copy_test.go deleted file mode 100644 index b4d1878..0000000 --- a/tui/copy_test.go +++ /dev/null @@ -1,115 +0,0 @@ -package tui - -import ( - "os" - "path/filepath" - "strings" - "testing" - "unicode/utf8" - - tea "charm.land/bubbletea/v2" - "github.com/rednafi/rexdiff/internal/testgit" -) - -// fakeClipboard puts a pbcopy first on PATH. It writes its input to the -// file that fakeClipboard returns. With fail, it exits 1. -func fakeClipboard(t *testing.T, fail bool) string { - t.Helper() - dir := t.TempDir() - out := filepath.Join(dir, "out") - script := "/bin/cat > " + out + "\n" - if fail { - script = "exit 1\n" - } - testgit.Script(t, dir, "pbcopy", script) - t.Setenv("PATH", dir+string(os.PathListSeparator)+os.Getenv("PATH")) - return out -} - -// stepRun gives msg to m, then gives m the message of the command that -// m returns. -func stepRun(t *testing.T, m model, msg tea.Msg) model { - t.Helper() - next, cmd := m.Update(msg) - m, _ = run(t, *next.(*model), cmd) - return m -} - -// TestCopyClearsComments checks that y copies the review and clears the -// comments, as a send does. -func TestCopyClearsComments(t *testing.T) { - out := fakeClipboard(t, false) - m, _ := newTestModel(t) - m = press(t, m, "]", "c", "h", "i", "enter") - want := m.reviewText() - m = stepRun(t, m, tea.KeyPressMsg{Code: 'y', Text: "y"}) - if m.status != "copied 1 comment" || m.comments.Len() != 0 { - t.Errorf("after y: status %q, %d comments; want %q, 0", - m.status, m.comments.Len(), "copied 1 comment") - } - got, err := os.ReadFile(out) - if err != nil || string(got) != want { - t.Errorf("the clipboard got %q (%v), want %q", got, err, want) - } -} - -// TestCopyFails checks that a failed copy keeps the comments and shows -// why. -func TestCopyFails(t *testing.T) { - tests := []struct { - name string - setup func(t *testing.T) - want string - }{ - { - "no tool", func(t *testing.T) { t.Helper(); t.Setenv("PATH", t.TempDir()) }, - "copy failed: install wl-clipboard, xclip, or xsel", - }, - {"exit 1", func(t *testing.T) { t.Helper(); fakeClipboard(t, true) }, "copy failed"}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - m, _ := newTestModel(t) - m = press(t, m, "]", "c", "h", "i", "enter") - tt.setup(t) - m = stepRun(t, m, tea.KeyPressMsg{Code: 'y', Text: "y"}) - if m.status != tt.want || m.comments.Len() != 1 || m.sends != 0 { - t.Errorf("after y: status %q, %d comments, %d sends; want %q, 1, 0", - m.status, m.comments.Len(), m.sends, tt.want) - } - }) - } -} - -// TestCopyFromList checks that a copy closes the comment list when it -// clears the last comment. -func TestCopyFromList(t *testing.T) { - fakeClipboard(t, false) - m, _ := newTestModel(t) - m = press(t, m, "]", "c", "h", "i", "enter", "l") - if m.overlay == nil || m.overlay.kind != overlayComments { - t.Fatal("after l: no comment list, want the list") - } - m.onCopied(copiedMsg{ids: []int{m.comments.All()[0].ID}, done: "copied 1 comment"}) - if m.overlay != nil || m.mode != modeNormal { - t.Errorf("after the copy: overlay %v, want the list closed", m.overlay) - } -} - -// TestDragCopies checks that a drag on the code copies the lines through -// the clipboard tool, and shows the count of the characters. -func TestDragCopies(t *testing.T) { - out := fakeClipboard(t, false) - m, _ := newTestModel(t) - x := m.mainX() + m.w/2 - y0 := screenY(t, m, 0) - m = step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: x, Y: y0}) - m = step(t, m, tea.MouseMotionMsg{Button: tea.MouseLeft, X: x, Y: y0 + 1}) - m = stepRun(t, m, tea.MouseReleaseMsg{Button: tea.MouseLeft, X: x, Y: y0 + 1}) - got, err := os.ReadFile(out) - want := "copied " + plural(utf8.RuneCount(got), "char") - if err != nil || m.status != want || strings.Count(string(got), "\n") != 1 { - t.Errorf("after a drag: status %q, clipboard %q (%v); want %q and 2 lines", - m.status, got, err, want) - } -} diff --git a/tui/cross_test.go b/tui/cross_test.go deleted file mode 100644 index 8b1e530..0000000 --- a/tui/cross_test.go +++ /dev/null @@ -1,103 +0,0 @@ -package tui - -import ( - "testing" - - "github.com/rednafi/rexdiff/diff" - "github.com/rednafi/rexdiff/internal/testgit" -) - -// twoFiles returns a model whose Changes tab has a.go and b.go, each with -// one block of changes. The cursor is on the change of a.go. -func twoFiles(t *testing.T) model { - t.Helper() - m, dir := newTestModel(t) - testgit.WriteFile(t, dir, "b.go", "package b\n") - m.reload() - if len(m.files) != 2 { - t.Fatalf("got %d changed files, want 2", len(m.files)) - } - return press(t, m, "]") -} - -// onChange tells if the cursor of the Changes tab is on a changed row. -func onChange(m model) bool { - k := m.changes.rows[m.changes.cur].Kind - return k == diff.KindInsert || k == diff.KindDelete || k == diff.KindChange -} - -// TestHunkCrossing checks that ] past the last change arms a crossing, and -// a second ] crosses, as in herdr-reviewr. [ does the same backward. -func TestHunkCrossing(t *testing.T) { - t.Parallel() - m := twoFiles(t) - cur := m.changes.cur - m = press(t, m, "]") - if m.armed != 1 || m.changeSel != 0 || m.changes.cur != cur { - t.Fatalf("] at the last change: armed %d, file %d, cursor %d; want 1, 0, %d", - m.armed, m.changeSel, m.changes.cur, cur) - } - if !shows(m, "] next file") { - t.Errorf("armed: view got:\n%s\nwant the hint \"] next file\"", view(m)) - } - m = press(t, m, "]") - if m.armed != 0 || m.changeSel != 1 || !onChange(m) { - t.Fatalf("] again: armed %d, file %d; want a crossing to b.go on its change", - m.armed, m.changeSel) - } - - if m = press(t, m, "["); m.armed != -1 || m.changeSel != 1 || !shows(m, "[ prev file") { - t.Fatalf("[ at the first change: armed %d, file %d; want -1, 1", m.armed, m.changeSel) - } - if m = press(t, m, "["); m.changeSel != 0 || !onChange(m) { - t.Errorf("[ again: file %d, want a.go on its change", m.changeSel) - } -} - -// TestHunkCrossingDisarms checks that another key drops an armed crossing. -func TestHunkCrossingDisarms(t *testing.T) { - t.Parallel() - m := press(t, twoFiles(t), "]", "j") - if m.armed != 0 { - t.Fatalf("] then j: armed %d, want 0", m.armed) - } - if m = press(t, m, "k", "]"); m.armed != 1 || m.changeSel != 0 { - t.Errorf("] after j: armed %d, file %d; want an arm, not a crossing", - m.armed, m.changeSel) - } - // A [ after a ] arms backward, if there is a file that way. - if m = press(t, m, "["); m.armed != 0 { - t.Errorf("[ after ]: armed %d, want no arm with no file above", m.armed) - } - // A selection holds the cursor. - cur := m.changes.cur - if m = press(t, m, "v", "]", "]"); m.changeSel != 0 || m.changes.cur != cur || m.armed != 0 { - t.Errorf("] with a selection: file %d, cursor %d, armed %d; want no move", - m.changeSel, m.changes.cur, m.armed) - } -} - -// TestEscLadder checks that esc drops one layer with each press: the -// selection, the armed crossing, then the list of all keys. -func TestEscLadder(t *testing.T) { - t.Parallel() - m := press(t, twoFiles(t), "?", "]") - if !m.help.ShowAll || m.armed != 1 { - t.Fatalf("? ]: all keys %v, armed %d; want both", m.help.ShowAll, m.armed) - } - if m = press(t, m, "esc"); m.armed != 0 || !m.help.ShowAll { - t.Errorf("esc: armed %d, all keys %v; want 0, true", m.armed, m.help.ShowAll) - } - if m = press(t, m, "esc"); m.help.ShowAll { - t.Error("esc again: the list of all keys stays, want it closed") - } - - m = press(t, m, "?", "v") - if m = press(t, m, "esc"); m.changes.anchor != -1 || !m.help.ShowAll { - t.Errorf("esc with a selection: anchor %d, all keys %v; want -1, true", - m.changes.anchor, m.help.ShowAll) - } - if m = press(t, m, "esc"); m.help.ShowAll { - t.Error("esc again: the list of all keys stays, want it closed") - } -} diff --git a/tui/editor_test.go b/tui/editor_test.go deleted file mode 100644 index 5f31c1a..0000000 --- a/tui/editor_test.go +++ /dev/null @@ -1,217 +0,0 @@ -package tui - -import ( - "os" - "os/exec" - "path/filepath" - "strings" - "testing" - - tea "charm.land/bubbletea/v2" - - "github.com/rednafi/rexdiff/diff" - "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rednafi/rexdiff/rex" -) - -// fakeRex makes m use a rex in a new directory that runs body. It returns -// the directory. -func fakeRex(t *testing.T, m *model, body string) string { - t.Helper() - dir := t.TempDir() - testgit.Script(t, dir, "rex", body) - t.Setenv("REX_SESSION", "S") - t.Setenv("REX_BLOCK", "B") - t.Setenv("REX_BIN_DIR", dir) - m.rex = rex.FromEnv() - return dir -} - -// logRex makes m use a rex that writes its arguments to a log. It returns -// the path of the log. -func logRex(t *testing.T, m *model) string { - t.Helper() - dir := fakeRex(t, m, `printf '%s\n' "$*" >> "$(dirname "$0")/rex.log"`+"\n") - return filepath.Join(dir, "rex.log") -} - -// pressE moves the cursor to the inserted line 4 of a.go and presses e. It -// returns the command of the key. -func pressE(t *testing.T, m model) (model, tea.Cmd) { - t.Helper() - m = press(t, m, "j", "j", "j", "j", "j") - next, cmd := m.Update(tea.KeyPressMsg{Code: 'e', Text: "e"}) - return *next.(*model), cmd -} - -// TestTerminalEditorInRex checks that a terminal editor opens at the line -// in a new Rex block, and that e returns no command. -func TestTerminalEditorInRex(t *testing.T) { - bin := t.TempDir() - nvim := testgit.Script(t, bin, "nvim", "") - t.Setenv("PATH", bin+string(os.PathListSeparator)+os.Getenv("PATH")) - tests := []struct { - name, editor, env, want string - }{ - {"settings", nvim + " +{line} {file}", "", nvim + " +4 "}, - {"environment", "", "nvim", "nvim +4 "}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - m, _ := newTestModel(t) - m.cfg.Editor = tt.editor - t.Setenv("VISUAL", "") - t.Setenv("EDITOR", tt.env) - log := logRex(t, &m) - m, cmd := pressE(t, m) - if cmd != nil { - t.Errorf("e returns a command %T, want none", cmd) - } - if !shows(m, "opened a.go") { - t.Errorf("view got:\n%s\nwant \"opened a.go\"", view(m)) - } - b, err := os.ReadFile(log) - if err != nil { - t.Fatal(err) - } - root := m.repo.Root() - want := "split -s S -b B --cwd " + root + " -- sh -c " + tt.want + - "'" + filepath.Join(root, "a.go") + "'" - if got := strings.TrimSpace(string(b)); got != want { - t.Errorf("rex got\n%s\nwant\n%s", got, want) - } - }) - } -} - -// TestWindowEditor checks that a window editor gets the file and the line, -// and runs without a terminal. -func TestWindowEditor(t *testing.T) { - m, _ := newTestModel(t) - bin := t.TempDir() - out := filepath.Join(bin, "out") - code := testgit.Script(t, bin, "code", `{ echo "$*"; if (exec 3/dev/null; then echo tty; else echo no tty; fi; } > '`+out+"'\n") - m.cfg.Editor = code + " -g {file}:{line}" - log := logRex(t, &m) - m, cmd := pressE(t, m) - if cmd == nil { - t.Fatal("e returns no command, want a command") - } - if msg := cmd(); msg != nil { - t.Fatalf("the editor command = %v, want nil", msg) - } - b, err := os.ReadFile(out) - if err != nil { - t.Fatal(err) - } - abs := filepath.Join(m.repo.Root(), "a.go") - if want := "-g " + abs + ":4\nno tty\n"; string(b) != want { - t.Errorf("the editor got\n%q\nwant\n%q", b, want) - } - if _, err := os.Stat(log); err == nil { - t.Errorf("rex log %s exists, want no Rex block for a window editor", - log) - } -} - -// TestEditorError checks that the footer tells why an editor fails. -func TestEditorError(t *testing.T) { - code := testgit.Script(t, t.TempDir(), "code", "echo 'code: no such file' >&2\nexit 3\n") - tests := []struct { - name, editor, path, want string - }{ - {"fails", code + " -g {file}", os.Getenv("PATH"), "editor failed: exit status 3: code: no such file"}, - // sh is not in PATH. - {"cannot start", code + " -g {file}", "", `editor failed: exec: "sh": executable file not found in $PATH`}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - m, _ := newTestModel(t) - m.cfg.Editor = tt.editor - t.Setenv("PATH", tt.path) - m, cmd := pressE(t, m) - if cmd != nil { - m = step(t, m, cmd()) - } - if m.status != tt.want || !shows(m, tt.want) { - t.Errorf("status %q, view got:\n%s\nwant %q in the footer", m.status, view(m), tt.want) - } - }) - } -} - -// TestEditorNotOpened checks the messages when rexdiff opens no editor. -func TestEditorNotOpened(t *testing.T) { - tests := []struct { - name, editor, env string - remove bool - want string - }{ - {"unset", "", "", false, "no editor: set `editor` in rexdiff.lua, $EDITOR, or git's core.editor"}, - {"no program", "'' {file}", "", false, "the editor command names no program"}, - {"no program env", "", `""`, false, "the editor command names no program"}, - {"file gone", "", "nvim", true, "a.go is gone"}, - {"not found", "", "no-such-editor-x", false, "editor not found: no-such-editor-x"}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - m, _ := newTestModel(t) - m.cfg.Editor = tt.editor - t.Setenv("VISUAL", "") - t.Setenv("EDITOR", tt.env) - log := logRex(t, &m) - if tt.remove { - if err := os.Remove(filepath.Join(m.repo.Root(), "a.go")); err != nil { - t.Fatal(err) - } - } - m, cmd := pressE(t, m) - if cmd != nil { - t.Errorf("e returns a command %T, want none", cmd) - } - if !shows(m, tt.want) { - t.Errorf("view got:\n%s\nwant %q in the footer", view(m), tt.want) - } - if _, err := os.Stat(log); err == nil { - t.Errorf("rex log %s exists, want no Rex block", log) - } - }) - } -} - -// TestTerminalEditorDone checks the message after a terminal editor stops -// outside Rex. -func TestTerminalEditorDone(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = step(t, m, editorDoneMsg{path: "a.go"}) - if !shows(m, "edited a.go") { - t.Errorf("view got:\n%s\nwant \"edited a.go\"", view(m)) - } - err := exec.CommandContext(t.Context(), "sh", "-c", "exit 2").Run() - m = step(t, m, editorDoneMsg{path: "a.go", err: err}) - if !shows(m, "editor exited with exit status 2") { - t.Errorf("view got:\n%s\nwant \"editor exited with exit status 2\"", view(m)) - } -} - -// TestNewLineNear checks the line that the editor opens for each kind of -// row. -func TestNewLineNear(t *testing.T) { - t.Parallel() - rows := []diff.Row{ - {Kind: diff.KindHunk}, - {Kind: diff.KindEqual, Old: 1, New: 1}, - {Kind: diff.KindDelete, Old: 2}, - {Kind: diff.KindInsert, New: 2}, - {Kind: diff.KindDelete, Old: 3}, - } - for i, want := range []int{1, 1, 2, 2, 2} { - if got := newLineNear(rows, i); got != want { - t.Errorf("newLineNear(row %d) = %d, want %d", i, got, want) - } - } - if got := newLineNear(rows[2:3], 0); got != 1 { - t.Errorf("newLineNear(a lone deleted line) = %d, want 1", got) - } -} diff --git a/tui/errors_test.go b/tui/errors_test.go deleted file mode 100644 index 1710c38..0000000 --- a/tui/errors_test.go +++ /dev/null @@ -1,94 +0,0 @@ -package tui - -import ( - "bytes" - "log/slog" - "strings" - "testing" - - "github.com/rednafi/rexdiff/rex" -) - -// noGit makes git not found for the rest of the test. -func noGit(t *testing.T) { - t.Helper() - t.Setenv("PATH", t.TempDir()) -} - -// TestPickerErrors checks that a picker shows the error of git and does -// not open. -func TestPickerErrors(t *testing.T) { - for _, k := range []string{"B", "G"} { - t.Run(k, func(t *testing.T) { - m, _ := newTestModel(t) - noGit(t) - m = press(t, m, k) - if m.overlay != nil { - t.Errorf("%s opens an overlay, want none", k) - } - if !shows(m, "git isn't installed") { - t.Errorf("view got:\n%s\nwant \"git isn't installed\"", view(m)) - } - }) - } -} - -// TestFilesRefreshError checks that the Files tab shows the error of -// git. -func TestFilesRefreshError(t *testing.T) { - m, _ := newTestModel(t) - noGit(t) - if m = press(t, m, "2"); !shows(m, "refresh failed: ", "git isn't installed") { - t.Errorf("view got:\n%s\nwant \"refresh failed: …git isn't installed\"", view(m)) - } -} - -// TestFilesRefreshKeepsList checks that a failed refresh keeps the list of -// files. -func TestFilesRefreshKeepsList(t *testing.T) { - m, _ := newTestModel(t) - m = press(t, m, "2") - n := len(m.allFiles) - noGit(t) - m.reloadFiles() - if len(m.allFiles) != n || n == 0 { - t.Errorf("after a failed refresh, %d files, want %d", len(m.allFiles), n) - } -} - -// TestSearchError checks that the search shows the error of the code -// search in place of the results. -func TestSearchError(t *testing.T) { - m, _ := newTestModel(t) - m = press(t, m, "/") - noGit(t) - m.overlay.input.SetValue("pac") - cmd := m.inputChanged() - if cmd == nil { - t.Fatal("typing in the search returns no command, want a grep") - } - m = step(t, m, cmd()) - if !shows(m, "git isn't installed") { - t.Errorf("view got:\n%s\nwant \"git isn't installed\"", view(m)) - } - if len(m.overlay.shown) != 0 { - t.Errorf("the search shows %d results under the error, want 0", len(m.overlay.shown)) - } -} - -// TestTurnSnapshotErrorLogs checks that a failed snapshot at the start of -// a turn goes to the log. -func TestTurnSnapshotErrorLogs(t *testing.T) { - m, dir := newTestModel(t) - var buf bytes.Buffer - m.log = slog.New(slog.NewTextHandler(&buf, nil)) - m = step(t, m, sample("block:agent", "pi", dir)) - noGit(t) - m = step(t, m, status("block:agent", "pi", rex.StateWorking)) - if m.turn != nil || m.pending != nil { - t.Errorf("turn = %+v, pending %+v, want none", m.turn, m.pending) - } - if !strings.Contains(buf.String(), "turn snapshot failed") { - t.Errorf("log got:\n%s\nwant \"turn snapshot failed\"", buf.String()) - } -} diff --git a/tui/find_test.go b/tui/find_test.go deleted file mode 100644 index f68e2cb..0000000 --- a/tui/find_test.go +++ /dev/null @@ -1,143 +0,0 @@ -package tui - -import ( - "strings" - "testing" - - tea "charm.land/bubbletea/v2" - - "github.com/rednafi/rexdiff/diff" -) - -// find opens the find band and types q. -func find(t *testing.T, m model, q string) model { - t.Helper() - m = step(t, m, tea.KeyPressMsg{Code: 'f', Mod: tea.ModCtrl}) - if m.mode != modeFind { - t.Fatalf("ctrl+f: mode %v, want the find band", m.mode) - } - for _, r := range q { - m = step(t, m, tea.KeyPressMsg{Code: r, Text: string(r)}) - } - return m -} - -// curRow returns the row at the cursor of the current pane. -func curRow(m model) diff.Row { - p := m.cur() - return p.rows[p.cur] -} - -// TestFindSmartCase checks that a query in lower case ignores case, and a -// query with an upper case letter does not. -func TestFindSmartCase(t *testing.T) { - t.Parallel() - m := newFoldModel(t) - for _, tt := range []struct { - q string - want int - }{ - {"LINE", 2}, // the new lines 10 and 30 - {"line 1", 12}, // lines 1 and 11 to 19, and both sides of 10 - {"Line", 0}, - } { - if got := len(m.findHits(tt.q)); got != tt.want { - t.Errorf("%d hits of %q, want %d", got, tt.q, tt.want) - } - } -} - -// TestFindOpensFold checks that a step to a hit in a fold opens the fold. -func TestFindOpensFold(t *testing.T) { - t.Parallel() - m := newFoldModel(t) - m = toTop(m) // the fold of lines 1 to 6 - m = find(t, m, "line 2") - m = press(t, m, "enter") - if r := curRow(m); r.New != 2 { - t.Errorf("enter: the cursor is on %+v, want line 2", r) - } - if f := m.changes.rows[0].Fold; f.Lines > 0 { - t.Errorf("the fold %+v stays closed, want it open", f) - } - if l := lastLine(m); !strings.HasSuffix(l, "1/11") { - t.Errorf("footer %q, want 1/11", l) - } -} - -// TestFindSkipsLineNumbers checks that a find matches the text of the -// lines, and not their numbers. -func TestFindSkipsLineNumbers(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - if m = find(t, m, "5"); !strings.HasSuffix(lastLine(m), "no matches") { - t.Errorf("a find of a line number: footer %q, want no matches", lastLine(m)) - } - m = press(t, m, "enter") - if m.changes.cur != 0 { - t.Errorf("enter with no hit: cursor %d, want 0", m.changes.cur) - } -} - -// TestFindSteps checks that enter and down go to the next hit, up goes -// to the previous hit, and both wrap around. Esc drops the query. -func TestFindSteps(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = toTop(m) - m = find(t, m, "return") - if l := lastLine(m); !strings.HasPrefix(l, "find return") || !strings.HasSuffix(l, " 2") { - t.Errorf("off a hit: footer %q, want the query and 2", l) - } - wantOld := func(m model, old int, count string) { - t.Helper() - if r := curRow(m); (old > 0 && r.Old != old) || (old == 0 && r.New != 5) { - t.Errorf("the cursor is on %+v, want old line %d or new line 5", r, old) - } - if l := lastLine(m); !strings.HasSuffix(l, count) { - t.Errorf("footer %q, want %s", l, count) - } - } - m = press(t, m, "enter") - wantOld(m, 4, "1/2") - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyDown}) - wantOld(m, 0, "2/2") - m = press(t, m, "enter") - wantOld(m, 4, "1/2") - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyUp}) - wantOld(m, 0, "2/2") - - if m = press(t, m, "esc"); m.mode != modeNormal { - t.Fatalf("esc: mode %v, want normal", m.mode) - } - if m = find(t, m, ""); m.find.input.Value() != "" { - t.Errorf("ctrl+f after esc: query %q, want none", m.find.input.Value()) - } -} - -// TestFindKeepsCommentKeys checks that n types into the band, and that n -// goes to the next comment after the band closes. -func TestFindKeepsCommentKeys(t *testing.T) { - t.Parallel() - m := commented(t) - line := curRow(m).New - m = toTop(m) - if m = find(t, m, "n"); m.find.input.Value() != "n" || m.mode != modeFind { - t.Fatalf("n in the band: query %q, mode %v; want n typed", m.find.input.Value(), m.mode) - } - m = press(t, m, "esc") - m = toTop(m) - if m = press(t, m, "n"); curRow(m).New != line { - t.Errorf("n: the cursor is on %+v, want the comment on line %d", curRow(m), line) - } -} - -// TestFindNotOnPR checks that the PR tab has no find band. -func TestFindNotOnPR(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "3") - if m = step(t, m, tea.KeyPressMsg{Code: 'f', Mod: tea.ModCtrl}); m.mode != modeNormal { - t.Errorf("ctrl+f on the PR tab: mode %v, want normal", m.mode) - } -} diff --git a/tui/fold_test.go b/tui/fold_test.go deleted file mode 100644 index 9157420..0000000 --- a/tui/fold_test.go +++ /dev/null @@ -1,254 +0,0 @@ -package tui - -import ( - "fmt" - "os" - "path/filepath" - "slices" - "strings" - "testing" - - tea "charm.land/bubbletea/v2" - - "github.com/rednafi/rexdiff/diff" - "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rednafi/rexdiff/vcs" -) - -// foldRepo is the repository of newFoldModel. -var foldRepo = testgit.NewFixture(func(tb testing.TB, dir string) { - tb.Helper() - lines := func(upper ...int) string { - var b strings.Builder - for i := 1; i <= 40; i++ { - word := "line" - if slices.Contains(upper, i) { - word = "LINE" - } - fmt.Fprintf(&b, "%s %d\n", word, i) - } - return b.String() - } - testgit.NewRepo(tb, dir) - testgit.WriteFile(tb, dir, "f.txt", lines()) - testgit.Git(tb, dir, "add", ".") - testgit.Git(tb, dir, "commit", "-qm", "init") - testgit.WriteFile(tb, dir, "f.txt", lines(10, 30)) -}) - -// newFoldModel returns a model that shows f.txt, a file of 40 lines with -// changes at lines 10 and 30. The diff folds lines 1 to 6, 14 to 26, and -// 34 to 40. -func newFoldModel(t *testing.T) model { - t.Helper() - dir := t.TempDir() - foldRepo.Copy(t, dir) - repo, err := vcs.Open(t.Context(), dir) - if err != nil { - t.Fatal(err) - } - m := newModel(t.Context(), Options{Repo: repo, Layout: LayoutUnified}, defaultConfig()) - m.reload() - return step(t, m, tea.WindowSizeMsg{Width: 100, Height: 70}) -} - -// foldsOf returns the number of lines of each fold that hides in p. -func foldsOf(p *pane) []int { - var out []int - for _, r := range p.rows { - if r.Fold.Lines > 0 { - out = append(out, r.Fold.Lines) - } - } - return out -} - -// TestExpandFold checks that the right arrow key shows the lines of a fold. -// On a line of code, the key scrolls sideways. -func TestExpandFold(t *testing.T) { - t.Parallel() - m := newFoldModel(t) - p := &m.changes - if got := foldsOf(p); !slices.Equal(got, []int{6, 13, 7}) { - t.Fatalf("folds = %v, want [6 13 7]", got) - } - if !shows(m, "⋯ 13 unmodified lines", "→ show the lines") { - t.Fatalf("view got:\n%s\nwant the fold and its key", view(m)) - } - m = press(t, m, "]") // the first change, line 10 - if shows(m, "→ show the lines") { - t.Error("on a line of code: the footer shows the → hint, want no hint") - } - // Go to the second change, then up to its header. - m = press(t, m, "]", "k", "k", "k", "k") - if r := m.changes.rows[m.changes.cur]; r.Fold.Lines != 13 || !shows(m, "→ show the lines") { - t.Fatalf("the cursor is on %+v, want the middle fold", r) - } - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) - p = &m.changes - if got := foldsOf(p); !slices.Equal(got, []int{6, 7}) { - t.Errorf("after →, folds = %v, want [6 7]", got) - } - if r := p.rows[p.cur]; r.New != 14 { - t.Errorf("after →, the cursor is on %+v, want line 14", r) - } - for n := 14; n <= 26; n++ { - if p.rowOf(diff.SideNew, n) < 0 { - t.Errorf("line %d is hidden, want it shown", n) - } - } - // On a line of code, the right arrow key scrolls. - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) - if m.changes.xoff == 0 || !slices.Equal(foldsOf(&m.changes), []int{6, 7}) { - t.Errorf("→ on code: xoff %d, folds %v; want a scroll and no change", - m.changes.xoff, foldsOf(&m.changes)) - } -} - -// TestGotoLineInFold checks that : with a line in a fold shows the fold and -// moves the cursor to the line. -func TestGotoLineInFold(t *testing.T) { - t.Parallel() - m := newFoldModel(t) - m = press(t, m, ":", "2", "0", "enter") - p := &m.changes - if r := p.rows[p.cur]; r.New != 20 { - t.Errorf("the cursor is on %+v, want line 20", r) - } - if got := foldsOf(p); !slices.Equal(got, []int{6, 7}) { - t.Errorf("folds = %v, want [6 7]", got) - } -} - -// TestExpandKeepsPlaces checks the cursor and the selection after a fold -// shows. -func TestExpandKeepsPlaces(t *testing.T) { - t.Parallel() - m := newFoldModel(t) - m.changes.cur = m.changes.rowOf(diff.SideNew, 29) - m = press(t, m, "v") // the selection starts on line 29 - m.changes.cur = 0 // the fold at the top - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) - p := &m.changes - if r := p.rows[p.cur]; r.New != 1 { - t.Errorf("the cursor is on %+v, want line 1", r) - } - if r := p.rows[p.anchor]; r.New != 29 { - t.Errorf("the selection starts on %+v, want line 29", r) - } -} - -// TestFoldStaysOpen checks that an expanded fold stays open after edits of -// the agent and closes after a commit. -func TestFoldStaysOpen(t *testing.T) { - t.Parallel() - m := newFoldModel(t) - m.changes.cur = slices.IndexFunc(m.changes.rows, func(r diff.Row) bool { return r.Fold.Lines == 13 }) - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) - dir := m.repo.Root() - edit := func(f func(string) string) { - b, err := os.ReadFile(filepath.Join(dir, "f.txt")) - if err != nil { - t.Fatal(err) - } - testgit.WriteFile(t, dir, "f.txt", f(string(b))) - m.reload() - } - edit(func(s string) string { return "new\n" + s }) - if got := foldsOf(&m.changes); !slices.Equal(got, []int{3, 7}) { - t.Errorf("after a line above, folds = %v, want [3 7]", got) - } - edit(func(s string) string { return strings.Replace(s, "line 20\n", "LINE 20\n", 1) }) - if got := foldsOf(&m.changes); !slices.Equal(got, []int{3, 7}) { - t.Errorf("after a change in the fold, folds = %v, want [3 7]", got) - } - // An undo of the change at line 31 makes one fold of old lines 14 to - // 40. It overlaps the open range, so it shows. - edit(func(s string) string { return strings.Replace(s, "LINE 30\n", "line 30\n", 1) }) - if got := foldsOf(&m.changes); !slices.Equal(got, []int{3}) { - t.Errorf("after an undo next to the fold, folds = %v, want [3]", got) - } - // After the commit, the file has 41 lines. Changes at lines 12 and 26 - // make a fold of old lines 16 to 22, inside the open range. - testgit.Git(t, dir, "commit", "-qam", "agent") - edit(func(s string) string { - lines := strings.Split(s, "\n") - lines[11], lines[25] = "changed", "changed" - return strings.Join(lines, "\n") - }) - if got := foldsOf(&m.changes); !slices.Equal(got, []int{8, 7, 12}) { - t.Errorf("after a commit, folds = %v, want [8 7 12]", got) - } -} - -// TestFoldsSurviveRestart checks that the expanded folds and the cursor -// line come back after a restart for an update. -func TestFoldsSurviveRestart(t *testing.T) { - t.Parallel() - m := newFoldModel(t) - m.changes.cur = slices.IndexFunc(m.changes.rows, func(r diff.Row) bool { return r.Fold.Lines == 13 }) - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) - m.changes.cur = m.changes.rowOf(diff.SideNew, 20) - path, err := m.saveState() - if err != nil { - t.Fatal(err) - } - saved, err := loadState(path) - if err != nil { - t.Fatal(err) - } - m2 := newModel(t.Context(), Options{Repo: m.repo, Layout: LayoutUnified}, defaultConfig()) - m2.restoreSettings(saved) - m2.reload() - m2.restorePlaces(saved) - if got := foldsOf(&m2.changes); !slices.Equal(got, []int{6, 7}) { - t.Errorf("after the restart, folds = %v, want [6 7]", got) - } - if r := m2.changes.rows[m2.changes.cur]; r.New != 20 { - t.Errorf("after the restart, the cursor is on %+v, want line 20", r) - } -} - -// TestClickFold checks that a click on a fold shows its lines, also in the -// split layout and with wrap. -func TestClickFold(t *testing.T) { - t.Parallel() - for _, keys := range [][]string{nil, {"|"}, {"w"}} { - m := step(t, newFoldModel(t), tea.WindowSizeMsg{Width: 210, Height: 70}) - m = press(t, m, keys...) - tail := slices.IndexFunc(m.changes.rows, func(r diff.Row) bool { return r.Fold.Lines == 7 }) - m = click(t, m, m.mainX()+10, screenY(t, m, tail)) - if got := foldsOf(&m.changes); !slices.Equal(got, []int{6, 13}) { - t.Errorf("keys %v: after the click, folds = %v, want [6 13]", keys, got) - } - if m.changes.rowOf(diff.SideNew, 40) < 0 { - t.Errorf("keys %v: line 40 is hidden, want it shown", keys) - } - } -} - -// TestFoldKeepsComment checks that a fold with a comment on one of its -// lines shows, also after a new scope closes the expanded folds. -func TestFoldKeepsComment(t *testing.T) { - t.Parallel() - m := newFoldModel(t) - m.changes.cur = slices.IndexFunc(m.changes.rows, func(r diff.Row) bool { return r.Fold.Lines == 13 }) - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) - m.changes.cur = m.changes.rowOf(diff.SideNew, 20) - m = press(t, m, "c") - m = step(t, m, tea.KeyPressMsg{Text: "why", Code: 'w'}) - m = press(t, m, "enter") - if m.comments.Len() != 1 { - t.Fatalf("%d comments, want 1", m.comments.Len()) - } - m = press(t, m, "b", "u") // the branch scope, then back - if m.folds != nil { - t.Errorf("after a new scope, expanded folds = %v, want nil", m.folds) - } - if m.changes.rowOf(diff.SideNew, 20) < 0 || !shows(m, "why") { - t.Errorf("view got:\n%s\nwant the commented line 20", view(m)) - } - if got := foldsOf(&m.changes); !slices.Equal(got, []int{6, 7}) { - t.Errorf("folds = %v, want [6 7]", got) - } -} diff --git a/tui/keys_test.go b/tui/keys_test.go deleted file mode 100644 index ea03115..0000000 --- a/tui/keys_test.go +++ /dev/null @@ -1,83 +0,0 @@ -package tui - -import ( - "testing" - - tea "charm.land/bubbletea/v2" -) - -// TestKeybindingErrors checks the errors of the keybindings setting. The -// messages are the same as in herdr-reviewr. -func TestKeybindingErrors(t *testing.T) { - t.Parallel() - const names = "a list of keys, each a character or a named key " + - "(left, right, up, down, pageup, pagedown), alone or after ctrl+ or alt+" - tests := []struct{ text, want string }{ - {`{"comment": ["v"]}`, "config: invalid value for keybindings: `v` is bound to both `select` and `comment`"}, - {`{"comment": ["c", "c"]}`, "config: invalid value for keybindings: `c` is bound twice to `comment`"}, - {`{"refresh": ["ctrl+f"]}`, "config: invalid value for keybindings: `ctrl+f` is bound to both `find` and `refresh`"}, - {`{"wrap": ["|"]}`, "config: invalid value for keybindings: `|` is bound to both `wrap` and `split`"}, - {`{"next-file": ["pageup"]}`, "config: invalid value for keybindings: `pageup` is bound to both `next-file` and `page-up`"}, - {`{"page-up": ["PageUp"]}`, `config: invalid value for keybindings.page-up: expected ` + names + `, not "PageUp"`}, - {`{"send": ["ss"]}`, `keybindings.send: expected ` + names + `, not "ss"`}, - {`{"send": [" "]}`, `keybindings.send: expected ` + names + `, not " "`}, - {`{"send": ["ctrl+"]}`, `keybindings.send: expected ` + names + `, not "ctrl+"`}, - {`{"send": [""]}`, `keybindings.send: expected ` + names + `, not ""`}, - {`{"send": []}`, `keybindings.send: expected ` + names + `, not "[]"`}, - } - for _, tt := range tests { - _, err := parseConfig(`{"keybindings": ` + tt.text + `}`) - if !errorHas(err, tt.want) { - t.Errorf("keybindings %s: error %v, want %q", tt.text, err, tt.want) - } - } -} - -// TestKeybindingsValid checks settings with no error: a swap of two keys, -// and the names of keys. -func TestKeybindingsValid(t *testing.T) { - t.Parallel() - for _, text := range []string{ - `{"comment": ["v"], "select": ["c"]}`, - `{"page-up": ["pageup", "alt+up"], "page-down": ["pgdown"]}`, - `{"find": ["alt+f"], "send": ["é"]}`, - } { - if _, err := parseConfig(`{"keybindings": ` + text + `}`); err != nil { - t.Errorf("keybindings %s: %v, want no error", text, err) - } - } -} - -// TestKeybindingPageUp checks that the herdr-reviewr name pageup binds the -// page up key. -func TestKeybindingPageUp(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - cfg, err := parseConfig(`{"keybindings": {"page-up": ["pageup"], "half-up": ["pgup"]}}`) - if err == nil { - t.Fatal("pageup and pgup on two actions: no error, want an error") - } - cfg, err = parseConfig(`{"keybindings": {"page-up": ["pageup"]}}`) - if err != nil { - t.Fatal(err) - } - m.keys = defaultKeys() - m.keys.applyConfig(cfg.Keybindings) - if m = press(t, m, "j", "j"); m.changes.cur != 2 { - t.Fatalf("after j j: cursor %d, want 2", m.changes.cur) - } - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyPgUp}) - if m.changes.cur != 0 { - t.Errorf("pageup bound to page-up: cursor %d, want 0", m.changes.cur) - } -} - -// TestKeybindingUpgrade checks that a key of the upgrade is not free for -// another action. -func TestKeybindingUpgrade(t *testing.T) { - t.Parallel() - _, err := parseConfig(`{"keybindings": {"send": ["U"]}}`) - if !errorHas(err, "`U`", "`send`", "`upgrade`") { - t.Errorf("send on U: error %v, want the clash with upgrade", err) - } -} diff --git a/tui/main_test.go b/tui/main_test.go deleted file mode 100644 index ad0820f..0000000 --- a/tui/main_test.go +++ /dev/null @@ -1,9 +0,0 @@ -package tui - -import ( - "testing" - - "github.com/rednafi/rexdiff/internal/testgit" -) - -func TestMain(m *testing.M) { testgit.Main(m) } diff --git a/tui/model.go b/tui/model.go index 15dc315..d0a1c85 100644 --- a/tui/model.go +++ b/tui/model.go @@ -17,7 +17,6 @@ import ( uv "github.com/charmbracelet/ultraviolet" "github.com/rednafi/rexdiff/diff" - "github.com/rednafi/rexdiff/internal/search" "github.com/rednafi/rexdiff/internal/termtext" "github.com/rednafi/rexdiff/internal/turn" "github.com/rednafi/rexdiff/rex" @@ -178,7 +177,6 @@ type model struct { repo *vcs.Repo rex *rex.Client // nil outside Rex log *slog.Logger - now func() time.Time // the clock, which a test can set cfg config keys keyMap @@ -279,9 +277,6 @@ type model struct { // session, the last pick first. recent []string grepCancel context.CancelFunc // stops the code search that runs - // grepBudget is the time of a code search, search.CodeBudget. A test - // can set a longer time. - grepBudget time.Duration find findState findLines splitLines // the lines that find searches md mdRenderer // the last markdown renderer @@ -308,22 +303,20 @@ func newModel(ctx context.Context, o Options, cfg config) model { ta.KeyMap.InsertNewline.SetKeys(defaultKeys().Newline.Keys()...) m := model{ - ctx: ctx, - repo: o.Repo, - rex: o.Rex, - log: o.Log, - now: time.Now, - notice: o.Notice, - updater: o.Updater, - w: 120, - h: 40, - base: o.Base, - baseFlag: o.Base != "", - wrap: o.Wrap, - editor: ta, - help: newHelp(), - agents: map[string]*agentState{}, - grepBudget: search.CodeBudget, + ctx: ctx, + repo: o.Repo, + rex: o.Rex, + log: o.Log, + notice: o.Notice, + updater: o.Updater, + w: 120, + h: 40, + base: o.Base, + baseFlag: o.Base != "", + wrap: o.Wrap, + editor: ta, + help: newHelp(), + agents: map[string]*agentState{}, } if m.log == nil { m.log = slog.New(slog.DiscardHandler) @@ -433,7 +426,7 @@ const flashTime = 4 * time.Second // flash shows s in the footer for a short time. The text can come from Rex // or from git, so flash quotes it if it has control characters. func (m *model) flash(s string) { - m.status, m.statusTill = termtext.Quote(s), m.now().Add(flashTime) + m.status, m.statusTill = termtext.Quote(s), time.Now().Add(flashTime) } // treeIDs returns the IDs of the two trees that the Changes tab compares @@ -809,7 +802,7 @@ func (m *model) retry(err error) { m.reloadRetry = retryTimer{} return } - m.reloadRetry.fail(m.now()) + m.reloadRetry.fail(time.Now()) m.reloadOwed = true } @@ -818,17 +811,15 @@ func (m *model) retry(err error) { func (m *model) dropWatch(err error) { m.log.Warn("watch failed", "err", err) m.watch = nil - m.watchRetry.fail(m.now()) + m.watchRetry.fail(time.Now()) } -// startWatch starts the watcher of the repository. The watcher uses the -// clock of the model. +// startWatch starts the watcher of the repository. func (m *model) startWatch() error { w, err := m.repo.Watch(m.ctx) if err != nil { return err } - w.SetClock(m.now) m.watch, m.watchRetry.at = w, time.Time{} return nil } @@ -838,7 +829,7 @@ func (m *model) startWatch() error { // and tells that both change. func (m *model) watchChanges() vcs.Change { all := vcs.Change{Files: true, Refs: true} - now := m.now() + now := time.Now() if m.watch == nil && m.watchRetry.due(now) { if err := m.startWatch(); err != nil { m.dropWatch(err) @@ -853,7 +844,7 @@ func (m *model) watchChanges() vcs.Change { } m.watch.Show(m.shownPaths()) ch, err := m.watch.Changed(m.ctx) - m.log.Debug("watch", "took", m.now().Sub(now), "files", ch.Files, "refs", ch.Refs) + m.log.Debug("watch", "took", time.Since(now), "files", ch.Files, "refs", ch.Refs) if err != nil { m.dropWatch(err) m.polled = now @@ -873,9 +864,9 @@ func (m *model) onTick() tea.Cmd { } m.reloadOwed = m.reloadOwed || ch.Files || ch.Refs m.filesOwed = m.filesOwed || ch.Files - now := m.now() + now := time.Now() m.reloadDue() - if m.status != "" && m.now().After(m.statusTill) { + if m.status != "" && time.Now().After(m.statusTill) { m.status = "" } var cmds []tea.Cmd @@ -888,7 +879,7 @@ func (m *model) onTick() tea.Cmd { m.sampleRetry.at = time.Time{} // one list at a time cmds = append(cmds, m.listAgents(agentsMsg{})) } - if m.tab == tabPR && m.now().Sub(m.prf.polled) >= prPoll { + if m.tab == tabPR && time.Since(m.prf.polled) >= prPoll { cmds = append(cmds, m.requestPR(false)) } if m.ticks%colorTicks == 0 { // follow the changes of the terminal theme @@ -905,11 +896,11 @@ func (m *model) reloadDue() { if m.mode == modeComment { return } - now := m.now() + now := time.Now() switch { case m.tab == tabChanges && m.reloadOwed && !now.Before(m.reloadAt) && !now.Before(m.reloadRetry.at): m.reloadIfChanged() - end := m.now() + end := time.Now() m.reloadAt = end.Add(budgetFactor * end.Sub(now)) case m.tab == tabFiles && m.filesOwed: m.reloadFiles() // reloadFiles renders the file too diff --git a/tui/mouse.go b/tui/mouse.go index 251f269..076782e 100644 --- a/tui/mouse.go +++ b/tui/mouse.go @@ -147,7 +147,7 @@ type clickChain struct { // countClick adds a press to the chain and returns the count. A press on // another cell, or after [clickWindow], starts a new chain. func (m *model) countClick(mouse tea.Mouse) int { - c, now := m.click, m.now() + c, now := m.click, time.Now() n := 1 if c.n > 0 && c.x == mouse.X && c.y == mouse.Y && now.Sub(c.at) < clickWindow { n = min(c.n+1, 3) diff --git a/tui/navpos_test.go b/tui/navpos_test.go deleted file mode 100644 index 7b5ad3e..0000000 --- a/tui/navpos_test.go +++ /dev/null @@ -1,142 +0,0 @@ -package tui - -import ( - "os" - "path/filepath" - "strings" - "testing" -) - -// screenLine returns line y of the screen of m. -func screenLine(m model, y int) string { - lines := strings.Split(view(m), "\n") - if y < 0 || y >= len(lines) { - return "" - } - return lines[y] -} - -// TestListPositions checks that p moves the file list clockwise, and that -// a list above or below takes a quarter of the body rows. -func TestListPositions(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - want := []position{positionBottom, positionLeft, positionTop, positionRight} - for _, w := range want { - m = press(t, m, "p") - if m.listPos != w { - t.Fatalf("after p: position %q, want %q", m.listPos, w) - } - title := screenLine(m, m.listY()) - if !strings.Contains(title, "Changes (1)") { - t.Errorf("%s: line %d is %q, want the title of the list", w, m.listY(), title) - } - if w.stacked() { - h := m.bodyHeight() - if got, want := m.listHeight(h), h*listStackPct/100; got != want { - t.Errorf("%s: the list takes %d of %d rows, want %d", w, got, h, want) - } - if m.mainWidth() != m.w { - t.Errorf("%s: main width %d, want the screen width %d", w, m.mainWidth(), m.w) - } - if m.mainHeight()+m.listHeight(h) != h { - t.Errorf("%s: main %d + list %d rows, want %d", w, m.mainHeight(), m.listHeight(h), h) - } - } - } - // A click on the file in the list above the main pane selects it. - m = press(t, m, "p", "p", "p") // top - m.focusList = false - m = click(t, m, 5, m.listY()+1) - if !m.focusList { - t.Error("a click on the file in the list above: the list has no focus, want focus") - } -} - -// TestListSizes checks the bounds of the file list at a side and above or -// below the main pane. -func TestListSizes(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) // 120 columns - m = press(t, m, "<") - if got := m.sideWidth(); got != 42 { - t.Errorf("one grow from 38 columns: width %d, want 42", got) - } - for range 20 { - m = press(t, m, "<") - } - if got := m.sideWidth(); got != 120*listMaxSidePct/100 { - t.Errorf("after many grows: width %d, want %d", got, 120*listMaxSidePct/100) - } - for range 30 { - m = press(t, m, ">") - } - if got := m.sideWidth(); got != 120*listMinPct/100 { - t.Errorf("after many shrinks: width %d, want %d", got, 120*listMinPct/100) - } - - m = press(t, m, "p") // bottom - m = press(t, m, "<") - if m.listPct != listStackPct+listStep { - t.Errorf("one grow below: share %d%%, want %d%%", m.listPct, listStackPct+listStep) - } - for range 20 { - m = press(t, m, "<") - } - if m.listPct != listMaxStackPct { - t.Errorf("after many grows below: share %d%%, want %d%%", m.listPct, listMaxStackPct) - } - for range 20 { - m = press(t, m, ">") - } - if m.listPct != listMinPct { - t.Errorf("after many shrinks below: share %d%%, want %d%%", m.listPct, listMinPct) - } -} - -// TestListHide checks that z hides the list and focuses the main pane, -// that a hidden list does not move or resize, and that the PR tab does -// not hide the list. -func TestListHide(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m.focusList = true - m = press(t, m, "z") - if !m.listHidden || m.focusList || m.listWidth() != 0 { - t.Fatalf("after z: hidden %v, list focus %v, width %d; want true, false, 0", - m.listHidden, m.focusList, m.listWidth()) - } - w, pos := m.listW, m.listPos - m = press(t, m, "p", "<") - if m.listPos != pos || m.listW != w { - t.Errorf("p and < on a hidden list: %q %d, want %q %d", m.listPos, m.listW, pos, w) - } - m = press(t, m, "z") - if m.listHidden { - t.Error("after a second z: the list is hidden, want it shown") - } - m = press(t, m, "3", "z") - if m.listHidden { - t.Error("z on the PR tab hides the list, want no change") - } -} - -// TestResumeListLeft checks that a saved state of an older version, with -// list_left, restores the list at the left. -func TestResumeListLeft(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - path := filepath.Join(t.TempDir(), "state.json") - if err := os.WriteFile(path, []byte(`{"list_left": true, "list_w": 40}`), 0o600); err != nil { - t.Fatal(err) - } - s, err := loadState(path) - if err != nil { - t.Fatalf("loadState: %v", err) - } - m.restoreSettings(s) - if m.listPos != positionLeft || m.listW != 40 || m.listPct != listStackPct { - t.Errorf("restored %q, width %d, share %d; want left, 40, %d", - m.listPos, m.listW, m.listPct, listStackPct) - } -} diff --git a/tui/notes_test.go b/tui/notes_test.go deleted file mode 100644 index a85a0f0..0000000 --- a/tui/notes_test.go +++ /dev/null @@ -1,209 +0,0 @@ -package tui - -import ( - "os" - "path/filepath" - "strings" - "testing" - "time" - - tea "charm.land/bubbletea/v2" - - "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rednafi/rexdiff/vcs" -) - -// TestSkippedFileNotes checks the notes in place of a binary file and of a -// file that is too large, in both tabs. -func TestSkippedFileNotes(t *testing.T) { - t.Parallel() - tests := []struct{ content, want string }{ - {"a\x00b\n", "binary file · no line comments"}, - {strings.Repeat("x\n", 50_001), "file too large to show"}, - } - for _, tt := range tests { - t.Run(tt.want, func(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - // The name sorts first, so that both tabs select the file. - testgit.WriteFile(t, dir, "0.txt", tt.content) - m.reload() - m.pickFile(0) - if !shows(m, tt.want) { - t.Errorf("Changes got:\n%s\nwant %q", view(m), tt.want) - } - if m = press(t, m, "2"); !shows(m, tt.want) { - t.Errorf("Files got:\n%s\nwant %q", view(m), tt.want) - } - }) - } -} - -// TestEmptyNotes checks the notes of an empty scope, of an empty list of -// files, of an empty file, and of a file that rexdiff cannot read. -func TestEmptyNotes(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") - if m.reload(); !shows(m, "no changes") { - t.Errorf("an empty scope got:\n%s\nwant \"no changes\"", view(m)) - } - - testgit.WriteFile(t, dir, "0.txt", "") - if m = press(t, m, "2"); !shows(m, "empty file") { - t.Errorf("an empty file got:\n%s\nwant \"empty file\"", view(m)) - } - if err := os.Remove(filepath.Join(dir, "0.txt")); err != nil { - t.Fatal(err) - } - if m.refreshViewer(); !shows(m, "couldn't read this file") { - t.Errorf("a removed file got:\n%s\nwant \"couldn't read this file\"", view(m)) - } - - m.allFiles = []vcs.Entry{} - m.buildFileTree() - if m.renderViewer(); !shows(m, "no files") { - t.Errorf("no files got:\n%s\nwant \"no files\"", view(m)) - } -} - -// TestStatusMessages checks the short messages in the footer, and how -// long they show. -func TestStatusMessages(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - clk := setClock(&m) - m = press(t, m, "]", "c", "h", "i", "enter") - if m.status != "comment added" { - t.Errorf("a new comment: status %q, want \"comment added\"", m.status) - } - clk.advance(flashTime) - if m = step(t, m, tickMsg{}); m.status != "comment added" { - t.Errorf("a tick at the end of the flash: status %q, want it kept", m.status) - } - clk.advance(time.Nanosecond) - if m = step(t, m, tickMsg{}); m.status != "" { - t.Errorf("a tick after the flash: status %q, want none", m.status) - } - m = press(t, m, "e", "!", "enter") - if m.status != "comment updated" { - t.Errorf("an edit: status %q, want \"comment updated\"", m.status) - } - m = press(t, m, "d") - if m.status != "comment deleted" || m.comments.Len() != 0 { - t.Errorf("d: status %q, %d comments; want \"comment deleted\", 0", - m.status, m.comments.Len()) - } - - m = press(t, m, "]", "c", "x", "enter", "l", "d") - if m.status != "comment deleted" || m.comments.Len() != 0 { - t.Errorf("d in the list: status %q, %d comments; want \"comment deleted\", 0", - m.status, m.comments.Len()) - } - - m = step(t, m, tea.KeyPressMsg{Code: 'f', Mod: tea.ModCtrl}) - m = press(t, m, "z", "z", "z", "enter") - if !strings.HasSuffix(lastLine(m), "no matches") { - t.Errorf("a find with no hit: footer %q, want \"no matches\"", lastLine(m)) - } - m = press(t, m, "esc") - - if m = press(t, m, "B", "z", "z", "z", "z"); !shows(m, "no matches") { - t.Errorf("a picker with no match got:\n%s\nwant \"no matches\"", view(m)) - } -} - -// TestRenderedKey checks that m acts only on a markdown file that renders -// some text. -func TestRenderedKey(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - if m = press(t, m, "m"); m.rendered { - t.Error("m on a.go turns on rendered markdown, want no change") - } - testgit.WriteFile(t, dir, "0.md", "\n\n") - m.reload() - m.pickFile(0) - m = press(t, m, "m") - if m.rendered || m.status != "nothing here renders" { - t.Errorf("m on a blank 0.md: rendered %v, status %q; want false, \"nothing here renders\"", - m.rendered, m.status) - } - testgit.WriteFile(t, dir, "0.md", "# Title\n") - m.reload() - if m = press(t, m, "m"); !m.rendered { - t.Error("m on 0.md does not turn on rendered markdown") - } -} - -// TestGotoLineInput checks the go-to-line prompt. It takes only digits -// and "$", and a paste keeps only a line number. -func TestGotoLineInput(t *testing.T) { - t.Parallel() - m := newFoldModel(t) - m = press(t, m, ":", "a", "b", "c") - if got := m.overlay.input.Value(); got != "" { - t.Errorf(":abc types %q, want nothing", got) - } - m = press(t, m, "1", "$") - if got := m.overlay.input.Value(); got != "$" { - t.Errorf(":1$ types %q, want \"$\"", got) - } - m = press(t, m, "7") - if got := m.overlay.input.Value(); got != "7" { - t.Errorf(":$7 types %q, want \"7\"", got) - } - m = step(t, m, tea.PasteMsg{Content: " `12`, "}) - if got := m.overlay.input.Value(); got != "12" { - t.Errorf("a paste of `12`, gives %q, want \"12\"", got) - } - m = step(t, m, tea.PasteMsg{Content: "f.txt:3"}) - if got := m.overlay.input.Value(); got != "12" { - t.Errorf("a paste of f.txt:3 gives %q, want \"12\" kept", got) - } -} - -// TestGotoLineClamps checks that : clamps the line to the file, and opens -// the fold that has the line. -func TestGotoLineClamps(t *testing.T) { - t.Parallel() - tests := []struct { - input string - want int - }{ - {"999999", 40}, - {"99999999999999999999", 40}, - {"$", 40}, - {"0", 1}, - {"1", 1}, - } - for _, tt := range tests { - t.Run(tt.input, func(t *testing.T) { - t.Parallel() - m := newFoldModel(t) - m = press(t, m, ":") - m = step(t, m, tea.PasteMsg{Content: tt.input}) - m = press(t, m, "enter") - p := &m.changes - if r := p.rows[p.cur]; r.New != tt.want { - t.Errorf(":%s: the cursor is on %+v, want line %d", tt.input, r, tt.want) - } - }) - } -} - -// TestGotoLineDeletedFile checks that : uses the old lines of a deleted -// file. -func TestGotoLineDeletedFile(t *testing.T) { - t.Parallel() - m := newFoldModel(t) - if err := os.Remove(filepath.Join(m.repo.Root(), "f.txt")); err != nil { - t.Fatal(err) - } - m.reload() - m = press(t, m, ":", "2", "5", "enter") - p := &m.changes - if r := p.rows[p.cur]; r.Old != 25 { - t.Errorf("the cursor is on %+v, want old line 25", r) - } -} diff --git a/tui/overlay.go b/tui/overlay.go index 70bb063..5df3fb9 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -291,7 +291,7 @@ func (m *model) runSearch() tea.Cmd { ov.showSearch() // As in herdr-reviewr, a code search has a time budget. Past it, the // search shows the matches that it finds by then. - ctx, cancel := context.WithTimeout(m.ctx, m.grepBudget) + ctx, cancel := context.WithTimeout(m.ctx, search.CodeBudget) m.grepCancel = cancel repo := m.repo return func() tea.Msg { diff --git a/tui/pr.go b/tui/pr.go index 5146df5..382e5ff 100644 --- a/tui/pr.go +++ b/tui/pr.go @@ -45,7 +45,7 @@ type prFetch struct { // after it, unless the read hangs. func (m *model) requestPR(forced bool) tea.Cmd { f := &m.prf - f.polled = m.now() + f.polled = time.Now() hung := f.inFlight && f.polled.Sub(f.started) >= prHang if !forced && f.inFlight && !hung { f.trailing = true @@ -63,7 +63,7 @@ func (m *model) loadPR() tea.Cmd { } ctx, cancel := context.WithCancel(m.ctx) f.gen++ - f.inFlight, f.trailing, f.started, f.cancel = true, false, m.now(), cancel + f.inFlight, f.trailing, f.started, f.cancel = true, false, time.Now(), cancel repo, gen := m.repo, f.gen hosts := vcs.Hosts{ GitHub: m.cfg.GitHubHost, diff --git a/tui/prfetch_test.go b/tui/prfetch_test.go deleted file mode 100644 index a7b9b00..0000000 --- a/tui/prfetch_test.go +++ /dev/null @@ -1,109 +0,0 @@ -package tui - -import ( - "testing" - "time" - - "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rednafi/rexdiff/vcs" -) - -// TestPRStaleResult checks that the result of an earlier read does not -// show. -func TestPRStaleResult(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "3") - m.loadPR() - m.loadPR() - m = step(t, m, prMsg{gen: 1, pr: &vcs.PullRequest{Title: "old"}}) - if m.pr.pr != nil || !m.prf.inFlight { - t.Fatalf("a stale result shows: %+v", m.pr.pr) - } - m = step(t, m, prMsg{gen: 2, pr: &vcs.PullRequest{Title: "new"}}) - if m.pr.pr == nil || m.pr.pr.Title != "new" || m.prf.inFlight { - t.Errorf("pr %+v, in flight %v, want the new one", m.pr.pr, m.prf.inFlight) - } -} - -// TestPRPoll checks that a tick reads the pull request again a minute -// after the last request, but only on the PR tab. -func TestPRPoll(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - clk := setClock(&m) - clk.advance(61 * time.Second) - if m = step(t, m, tickMsg{}); m.prf.inFlight { - t.Error("a tick on the Changes tab reads the pull request") - } - m = press(t, m, "3") - if m = step(t, m, tickMsg{}); !m.prf.inFlight || m.prf.gen != 1 { - t.Fatalf("the first tick on the PR tab: in flight %v, gen %d, want a read", - m.prf.inFlight, m.prf.gen) - } - m = step(t, m, prMsg{gen: 1}) - clk.advance(59 * time.Second) - if m = step(t, m, tickMsg{}); m.prf.inFlight { - t.Error("a tick before a minute reads the pull request") - } - clk.advance(2 * time.Second) - if m = step(t, m, tickMsg{}); !m.prf.inFlight || m.prf.gen != 2 { - t.Errorf("after a minute: in flight %v, gen %d, want a read", m.prf.inFlight, m.prf.gen) - } -} - -// TestPRTrailing checks that an ambient request during a read starts one -// more read after it, and that r and a hung read start one at once. -func TestPRTrailing(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - clk := setClock(&m) - m = press(t, m, "3") - m.requestPR(true) - if cmd := m.requestPR(false); cmd != nil || !m.prf.trailing || m.prf.gen != 1 { - t.Fatalf("an ambient request during a read: trailing %v, gen %d, want 1 trailing read", - m.prf.trailing, m.prf.gen) - } - next, cmd := m.Update(prMsg{gen: 1}) - m = *next.(*model) - if cmd == nil || m.prf.gen != 2 || !m.prf.inFlight || m.prf.trailing { - t.Fatalf("after the read: gen %d, in flight %v, trailing %v, want the trailing read", - m.prf.gen, m.prf.inFlight, m.prf.trailing) - } - if m = step(t, m, prMsg{gen: 2}); m.prf.inFlight { - t.Error("the trailing read starts another read") - } - - m.requestPR(false) - if m = press(t, m, "r"); m.prf.gen != 4 { - t.Errorf("r during a read: gen %d, want a new read", m.prf.gen) - } - clk.advance(61 * time.Second) - if m.requestPR(false); m.prf.gen != 5 || m.prf.trailing { - t.Errorf("a request after a hung read: gen %d, want a new read", m.prf.gen) - } -} - -// TestPRBranchSwitch checks that a switch to another branch blanks the PR -// tab, and that a commit on the branch keeps the pull request. -func TestPRBranchSwitch(t *testing.T) { - t.Parallel() - m, dir := watched(t) - m = press(t, m, "3") - m = step(t, m, prMsg{gen: m.prf.gen, pr: &vcs.PullRequest{Title: "T"}}) - - testgit.Git(t, dir, "commit", "-qam", "more") - m = step(t, m, tickMsg{}) - if m.pr.pr == nil || !m.prf.inFlight { - t.Fatalf("after a commit: pr %+v, in flight %v, want the PR kept and a read", - m.pr.pr, m.prf.inFlight) - } - m = step(t, m, prMsg{gen: m.prf.gen, pr: &vcs.PullRequest{Title: "T"}}) - - testgit.Git(t, dir, "checkout", "-q", "main") - gen := m.prf.gen - m = step(t, m, tickMsg{}) - if m.pr.pr != nil || m.prf.gen == gen || !shows(m, "loading the pull request") { - t.Errorf("after a switch: pr %+v, gen %d, want a blank tab and a read", m.pr.pr, m.prf.gen) - } -} diff --git a/tui/quit_test.go b/tui/quit_test.go deleted file mode 100644 index 1e251ce..0000000 --- a/tui/quit_test.go +++ /dev/null @@ -1,94 +0,0 @@ -package tui - -import ( - "strings" - "testing" - - tea "charm.land/bubbletea/v2" -) - -// quitPrompt returns a model with one comment and the prompt before a -// quit open. -func quitPrompt(t *testing.T) model { - t.Helper() - m, _ := newTestModel(t) - m = press(t, m, "]", "c", "h", "i", "enter", "q") - if m.overlay == nil || m.overlay.kind != overlayQuit { - t.Fatal("q with a comment: no quit prompt, want the prompt") - } - return m -} - -// quits tells if cmd quits the program. -func quits(cmd tea.Cmd) bool { - if cmd == nil { - return false - } - _, ok := cmd().(tea.QuitMsg) - return ok -} - -// TestQuitPrompt checks the keys of the prompt before a quit. They are -// the keys of herdr-reviewr. -func TestQuitPrompt(t *testing.T) { - t.Parallel() - m := quitPrompt(t) - const hint = "Q quit (1 pending) · esc cancel · s send 1 · y copy" - if !shows(m, hint) { - t.Errorf("the prompt got:\n%s\nwant %q", view(m), hint) - } - - // A held q does not quit, and the prompt stays open. - for range 3 { - next, cmd := m.Update(tea.KeyPressMsg{Code: 'q', Text: "q"}) - if m = *next.(*model); quits(cmd) || m.overlay == nil { - t.Fatalf("q in the prompt: quit %v, overlay %v; want no quit, the prompt open", - quits(cmd), m.overlay) - } - } - if _, cmd := m.Update(tea.KeyPressMsg{Code: 'Q', Text: "Q"}); !quits(cmd) { - t.Error("Q in the prompt: no quit, want a quit") - } - - // Any other key closes the prompt and keeps the comment. - for _, k := range []string{"j", "esc", "enter", "n"} { - m := press(t, quitPrompt(t), k) - if m.overlay != nil || m.mode != modeNormal || m.comments.Len() != 1 { - t.Errorf("%q in the prompt: overlay %v, %d comments; want it closed, 1", - k, m.overlay, m.comments.Len()) - } - } -} - -// TestQuitPromptSendCopy checks that s and y close the prompt and send or -// copy the comments. -func TestQuitPromptSendCopy(t *testing.T) { - m := press(t, quitPrompt(t), "s") - if m.overlay != nil || !strings.Contains(m.status, "not inside Rex") { - t.Errorf("s in the prompt: overlay %v, status %q; want it closed, a send", - m.overlay, m.status) - } - - fakeClipboard(t, false) - m = stepRun(t, quitPrompt(t), tea.KeyPressMsg{Code: 'y', Text: "y"}) - if m.overlay != nil || m.status != "copied 1 comment" || m.comments.Len() != 0 { - t.Errorf("y in the prompt: overlay %v, status %q, %d comments; "+ - "want it closed, a copy, 0", m.overlay, m.status, m.comments.Len()) - } -} - -// TestQuitDiscardInert checks that Q does nothing outside the prompt -// before a quit, as in herdr-reviewr. -func TestQuitDiscardInert(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - if _, cmd := m.Update(tea.KeyPressMsg{Code: 'Q', Text: "Q"}); quits(cmd) { - t.Error("Q with no comments: a quit, want nothing") - } - m = press(t, m, "]", "c", "h", "i", "enter") - next, cmd := m.Update(tea.KeyPressMsg{Code: 'Q', Text: "Q"}) - if m = *next.(*model); quits(cmd) || m.comments.Len() != 1 || m.overlay != nil { - t.Errorf("Q with a comment: quit %v, %d comments, overlay %v; want nothing", - quits(cmd), m.comments.Len(), m.overlay) - } -} diff --git a/tui/release_test.go b/tui/release_test.go deleted file mode 100644 index 9b25c4f..0000000 --- a/tui/release_test.go +++ /dev/null @@ -1,410 +0,0 @@ -package tui - -import ( - "context" - "errors" - "io/fs" - "os" - "path/filepath" - "strings" - "testing" - - tea "charm.land/bubbletea/v2" - - "github.com/rednafi/rexdiff/diff" - "github.com/rednafi/rexdiff/rex" - "github.com/rednafi/rexdiff/update" - "github.com/rednafi/rexdiff/vcs" -) - -// fakeUpdater is an Updater with a fixed latest release. -type fakeUpdater struct { - latest update.Release - newer bool - err error // the error of Latest - installErr error // the error of Install - installed []string // the tags that Install gets -} - -func (f *fakeUpdater) Latest(context.Context) (update.Release, bool, error) { - return f.latest, f.newer, f.err -} - -func (f *fakeUpdater) Install(_ context.Context, r update.Release) error { - f.installed = append(f.installed, r.Tag) - return f.installErr -} - -// updaterModel returns a model with u, after the release check. -func updaterModel(t *testing.T, u *fakeUpdater) model { - t.Helper() - m, _ := newTestModel(t) - m = newModel(t.Context(), Options{Repo: m.repo, Updater: u}, defaultConfig()) - m.reload() - m = step(t, m, tea.WindowSizeMsg{Width: 120, Height: 30}) - return step(t, m, m.checkRelease()()) -} - -// lastLine returns the last line of the view, without colours. -func lastLine(m model) string { - lines := strings.Split(view(m), "\n") - return lines[len(lines)-1] -} - -// run runs cmd and gives its message to m. -func run(t *testing.T, m model, cmd tea.Cmd) (model, tea.Cmd) { - t.Helper() - if cmd == nil { - t.Fatal("run: no command, want a command") - } - next, cmd := m.Update(cmd()) - return *next.(*model), cmd -} - -// TestUpdate checks the prompt, the install, and the restart of an update -// from the footer. -func TestUpdate(t *testing.T) { - t.Parallel() - u := &fakeUpdater{latest: update.Release{Tag: "v0.2.0"}, newer: true} - m := updaterModel(t, u) - const prompt = "rexdiff v0.2.0 is out: press U or click here to update" - if got := lastLine(m); !strings.Contains(got, prompt) { - t.Fatalf("footer = %q, want %q", got, prompt) - } - - // The key U starts the install. The footer shows the install. - next, cmd := m.Update(tea.KeyPressMsg{Code: 'U', Text: "U"}) - m = *next.(*model) - if got := lastLine(m); !strings.Contains(got, "updating rexdiff to v0.2.0…") { - t.Errorf("footer during the install = %q, want updating rexdiff to v0.2.0…", got) - } - // The user starts a comment while the release installs. - m = press(t, m, "j", "j", "j", "j", "c") - m, restart := run(t, m, cmd) - if len(u.installed) != 1 || u.installed[0] != "v0.2.0" { - t.Fatalf("Install got %v, want v0.2.0", u.installed) - } - if restart != nil || m.restartState != "" { - t.Fatal("rexdiff restarts while the user writes a comment, " + - "want no restart") - } - // The restart waits until the user saves the comment. - m = press(t, m, "f", "i", "x", "enter") - if m.restartState == "" { - t.Fatal("no restart after the comment, want a restart") - } - t.Cleanup(func() { removeState(t, m.restartState) }) - - // The new rexdiff reads back the comment and the place. - saved, err := loadState(m.restartState) - if err != nil { - t.Fatal(err) - } - if _, err := os.Stat(m.restartState); !errors.Is(err, fs.ErrNotExist) { - t.Errorf("after loadState: Stat = %v, want fs.ErrNotExist", err) - } - m2 := newModel(t.Context(), Options{Repo: m.repo}, defaultConfig()) - m2.restoreSettings(saved) - m2.reload() - m2.restorePlaces(saved) - if got, want := comments(m2), comments(m); got != want { - t.Errorf("comments after the restart = %q, want %q", got, want) - } - if m2.changes.cur != m.changes.cur || m2.scope != m.scope || m2.tab != m.tab { - t.Errorf("after the restart: cursor %d, scope %q, tab %d; want %d, %q, %d", - m2.changes.cur, m2.scope, m2.tab, m.changes.cur, m.scope, m.tab) - } - if got, want := m2.comments.Review(""), m.comments.Review(""); got != want { - t.Errorf("the review after the restart got:\n%s\nwant:\n%s", got, want) - } -} - -// comments returns the locations and the texts of the comments of m. -func comments(m model) string { - var b strings.Builder - for _, c := range m.comments.All() { - b.WriteString(c.Location() + " " + c.Text + "\n") - } - return b.String() -} - -// TestUpdateClick checks that a click on the footer starts the install. -func TestUpdateClick(t *testing.T) { - t.Parallel() - u := &fakeUpdater{latest: update.Release{Tag: "v0.2.0"}, newer: true} - m := updaterModel(t, u) - next, cmd := m.Update(tea.MouseClickMsg{Button: tea.MouseLeft, X: 3, Y: m.h - 1}) - m = *next.(*model) - if cmd == nil || m.phase != phaseInstalling { - t.Fatal("a click on the footer: no install, want the install") - } -} - -// TestUpdateFails checks that a failed install shows the reason, does not -// restart, and lets the user try again. -func TestUpdateFails(t *testing.T) { - t.Parallel() - u := &fakeUpdater{ - latest: update.Release{Tag: "v0.2.0"}, - newer: true, - installErr: errors.New("brew: exit status 1: Error: another brew is running"), - } - m := updaterModel(t, u) - next, cmd := m.Update(tea.KeyPressMsg{Code: 'U', Text: "U"}) - m, restart := run(t, *next.(*model), cmd) - if restart != nil || m.restartState != "" { - t.Fatal("rexdiff restarts after a failed install, want no restart") - } - if !strings.Contains(lastLine(m), "update failed: brew: exit status 1: Error: another brew is running") { - t.Errorf("footer = %q, want the reason", lastLine(m)) - } - if _, cmd := m.Update(tea.KeyPressMsg{Code: 'U', Text: "U"}); cmd == nil { - t.Error("U after a failed install: no command, want a new install") - } -} - -// TestNoUpdate checks that the footer shows no release and U does nothing -// without a newer release, after a failed check, or without an updater. -func TestNoUpdate(t *testing.T) { - t.Parallel() - for _, u := range []*fakeUpdater{ - {latest: update.Release{Tag: "v0.1.0"}}, - {err: errors.New("no network")}, - } { - m := updaterModel(t, u) - if m.release != nil || strings.Contains(lastLine(m), "is out") { - t.Errorf("updater %+v: footer %q, want no release", u, lastLine(m)) - } - if _, cmd := m.Update(tea.KeyPressMsg{Code: 'U', Text: "U"}); cmd != nil { - t.Errorf("updater %+v: U returns a command, want none", u) - } - } - m, _ := newTestModel(t) - if cmd := m.Init(); m.updater != nil || cmd == nil { - t.Errorf("updater = %v, Init returns a command %v; want nil, true", - m.updater, cmd != nil) - } -} - -// TestRestartWaits checks that the restart waits for a running send and for -// a message whose command is not done. -func TestRestartWaits(t *testing.T) { - t.Parallel() - u := &fakeUpdater{latest: update.Release{Tag: "v0.2.0"}, newer: true} - m := updaterModel(t, u) - m.sends = 1 // a send runs while the install ends - m = step(t, m, installedMsg{}) - if m.restartState != "" { - t.Fatal("restart while a send runs, want no restart") - } - m = step(t, m, sentMsg{agent: rex.Agent{Name: "pi"}}) - if m.restartState == "" { - t.Fatal("no restart after the send, want a restart") - } - removeState(t, m.restartState) - - // In the PR tab, the key r returns the command that loads the PR. So r - // does not restart. A message without a command starts the restart. - m = updaterModel(t, u) - m.tab = tabPR - m.phase = phaseInstalled - if next, cmd := m.Update(tea.KeyPressMsg{Code: 'r', Text: "r"}); cmd == nil || next.(*model).restartState != "" { - t.Fatal("restart on a message with a command, want no restart") - } - m = step(t, m, tea.FocusMsg{}) - if m.restartState == "" { - t.Fatal("no restart on a message without a command, want a restart") - } - removeState(t, m.restartState) -} - -// TestRestorePRPlace checks that the place in the PR tab comes back after -// a restart, although the PR loads after the restore. -func TestRestorePRPlace(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - saved := &savedState{PR: savedPane{Cur: 7, Top: 3}, Comments: new(diff.Comments)} - m.restoreSettings(saved) - m.restorePlaces(saved) - // A failed first load keeps the place for the next load. - m = step(t, m, prMsg{err: errors.New("no network")}) - body := strings.Repeat("line\n\n", 40) - m = step(t, m, prMsg{pr: &vcs.PullRequest{Title: "t", Body: body}}) - if m.prPane.cur != 7 || m.prPane.top != 3 { - t.Errorf("PR place = %d, %d; want 7, 3", m.prPane.cur, m.prPane.top) - } -} - -// TestUpdateClickRule checks that a click on the footer starts the install, -// and a click on the rule above it does nothing. -func TestUpdateClickRule(t *testing.T) { - t.Parallel() - u := &fakeUpdater{latest: update.Release{Tag: "v0.2.0"}, newer: true} - m := updaterModel(t, u) - rule := bodyY + m.bodyHeight() - if got := step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: 3, Y: rule}); got.phase == phaseInstalling { - t.Error("a click on the rule starts the install, want no install") - } - if got := step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: 3, Y: rule + 1}); got.phase != phaseInstalling { - t.Error("a click on the footer: no install, want the install") - } -} - -// TestRestartSaveFails checks that a failed save of the state tells the -// user and stops the restart. Then rexdiff continues with the old version. -func TestRestartSaveFails(t *testing.T) { - u := &fakeUpdater{latest: update.Release{Tag: "v0.2.0"}, newer: true} - m := updaterModel(t, u) - m.mode = modeComment // the install ends while the user writes - m = step(t, m, installedMsg{}) - if got := lastLine(m); !strings.Contains(got, "rexdiff v0.2.0 is installed; it starts when you are done") { - t.Errorf("footer while the restart waits = %q, want that v0.2.0 is installed", got) - } - m.mode = modeNormal - t.Setenv("TMPDIR", filepath.Join(t.TempDir(), "missing")) - m = step(t, m, tea.FocusMsg{}) - if m.restartState != "" || m.phase != phaseIdle || m.release != nil { - t.Errorf("after a failed save: state %q, phase %d, release %v; want none, idle, nil", - m.restartState, m.phase, m.release) - } - if !strings.Contains(m.status, "cannot save your comments for the restart") { - t.Errorf("status = %q, want the reason", m.status) - } -} - -// TestRestartOnTick checks that a tick can start the restart, though its -// command schedules the next tick. -func TestRestartOnTick(t *testing.T) { - t.Parallel() - u := &fakeUpdater{latest: update.Release{Tag: "v0.2.0"}, newer: true} - m := updaterModel(t, u) - m.phase = phaseInstalled - next, cmd := m.Update(tickMsg{}) - m = *next.(*model) - if m.restartState == "" || cmd == nil { - t.Fatal("no restart on a tick, want a restart") - } - removeState(t, m.restartState) -} - -// TestSavePendingPRPlace checks that a restart before the PR loads saves -// the PR place of the previous restart. -func TestSavePendingPRPlace(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m.prPlace = &savedPane{Cur: 7, Top: 3} - path, err := m.saveState() - if err != nil { - t.Fatal(err) - } - s, err := loadState(path) - if err != nil || s.PR != (savedPane{Cur: 7, Top: 3}) { - t.Errorf("saved PR place = %+v, %v; want 7, 3", s.PR, err) - } -} - -// TestWrapWordsNarrow checks that a width of 0, or a character wider than -// the width, does not loop forever. -func TestWrapWordsNarrow(t *testing.T) { - t.Parallel() - tests := []struct { - s string - w int - want string - }{ - {"ab c", 0, "a\nb\nc"}, - {"中 a", 1, "中\na"}, - {"a中b", 2, "a\n中\nb"}, - } - for _, tc := range tests { - if got := wrapWords(tc.s, tc.w); got != tc.want { - t.Errorf("wrapWords(%q, %d) = %q, want %q", tc.s, tc.w, got, tc.want) - } - } -} - -// TestRunChecksOptions checks that Run refuses options that it cannot use, -// before it starts the program. -func TestRunChecksOptions(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - tests := []struct { - name string - o Options - want string - }{ - {"no repository", Options{}, "no repository"}, - {"layout", Options{Repo: m.repo, Layout: "sideways"}, `invalid value for layout: expected one of unified, split, not "sideways"`}, - {"scope", Options{Repo: m.repo, Scope: "commits"}, `invalid value for scope: expected one of uncommitted, branch, last-turn, not "commits"`}, - } - for _, tc := range tests { - t.Run(tc.name, func(t *testing.T) { - t.Parallel() - if _, err := Run(t.Context(), tc.o); err == nil || err.Error() != tc.want { - t.Errorf("Run error = %v, want %s", err, tc.want) - } - }) - } -} - -// TestSendKeepsEdits checks that a comment that the user edits while its -// send runs stays after the send. The user can save the edit before or after -// the send ends. -func TestSendKeepsEdits(t *testing.T) { - t.Parallel() - for _, saveFirst := range []bool{true, false} { - m, _ := newTestModel(t) - m = press(t, m, "j", "j", "j", "j", "c", "o", "l", "d", "enter") - sent := sentMsg{agent: rex.Agent{Name: "pi"}, ids: []int{m.comments.All()[0].ID}} - m.sends = 1 // the send runs - m = press(t, m, "e", "!") // edit the comment - if saveFirst { - m = press(t, m, "enter") - m = step(t, m, sent) - } else { - m = step(t, m, sent) - m = press(t, m, "enter") - } - if got := comments(m); !strings.HasSuffix(strings.TrimSpace(got), "old!") { - t.Errorf("save first %v: comments after the send = %q, want the edited comment", saveFirst, got) - } - } - // The send removes a comment that the user does not change. - m, _ := newTestModel(t) - m = press(t, m, "j", "j", "j", "j", "c", "x", "enter") - m.sends = 1 - m = step(t, m, sentMsg{agent: rex.Agent{Name: "pi"}, ids: []int{m.comments.All()[0].ID}}) - if m.comments.Len() != 0 { - t.Errorf("comments after the send = %q, want none", comments(m)) - } -} - -// TestPickerWaitsForComment checks that the agent picker does not open over -// a comment that the user starts while the agents load. -func TestPickerWaitsForComment(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "j", "j", "j", "j", "c", "h", "i") - m.sends = 1 - agents := agentsMsg{send: true, agents: []rex.Agent{{Block: "a", Name: "pi"}, {Block: "b", Name: "cc"}}} - m = step(t, m, agents) - if m.mode != modeComment || m.overlay != nil { - t.Fatalf("mode %d, picker open %v; want the comment box, no picker", m.mode, m.overlay != nil) - } - if !strings.Contains(m.status, "then press s to pick one") || m.sends != 0 { - t.Errorf("status %q, sends %d; want the hint and no send", m.status, m.sends) - } - m = press(t, m, "enter") - if got := comments(m); !strings.Contains(got, "hi") { - t.Errorf("comments = %q, want the comment that the user wrote", got) - } -} - -// removeState removes the state file at path, if it is there, and fails the -// test if it cannot. -func removeState(t *testing.T, path string) { - t.Helper() - if err := os.Remove(path); err != nil && !errors.Is(err, fs.ErrNotExist) { - t.Error(err) - } -} diff --git a/tui/reload_test.go b/tui/reload_test.go deleted file mode 100644 index a97e1b7..0000000 --- a/tui/reload_test.go +++ /dev/null @@ -1,136 +0,0 @@ -package tui - -import ( - "errors" - "os" - "strings" - "testing" - "time" - - "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rednafi/rexdiff/vcs" -) - -// TestNoReloadInCommentBox checks that a tick does not reload while the -// comment box is open, and that the reload runs when the box closes. -func TestNoReloadInCommentBox(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - m = press(t, m, "]", "c") - testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") - if m = step(t, m, tickMsg{}); shows(m, "return 42") || !m.reloadOwed { - t.Errorf("a tick with the box open: owed %v, view:\n%s\nwant no reload, a reload owed", - m.reloadOwed, view(m)) - } - if m = press(t, m, "esc"); !shows(m, "return 42") { - t.Errorf("after the box closes, view got:\n%s\nwant the edit", view(m)) - } -} - -// TestReloadErrorKeepsFiles checks that a failed reload keeps the files, -// the selection, and the cursor, and flashes the error. -func TestReloadErrorKeepsFiles(t *testing.T) { - m, _ := newTestModel(t) - m = press(t, m, "]", "j") - cur, sel, n := m.changes.cur, m.changeSel, len(m.files) - noGit(t) - m = press(t, m, "r") - if len(m.files) != n || m.changeSel != sel || m.changes.cur != cur || m.shownTrees == "" { - t.Errorf("after a failed reload: %d files, sel %d, cursor %d, trees %q; want %d, %d, %d, kept", - len(m.files), m.changeSel, m.changes.cur, m.shownTrees, n, sel, cur) - } - if !strings.HasPrefix(m.status, "refresh failed: ") || m.changes.note != "" { - t.Errorf("status %q, note %q; want \"refresh failed: …\", no note", m.status, m.changes.note) - } -} - -// TestReloadErrorNote checks that a failed load shows the error in place -// of the files when no files show. -func TestReloadErrorNote(t *testing.T) { - m, dir := newTestModel(t) - testgit.Git(t, dir, "commit", "-qam", "all") - if m = press(t, m, "r"); len(m.files) != 0 { - t.Fatalf("after a commit of all changes: %d files, want none", len(m.files)) - } - noGit(t) - if m = press(t, m, "r"); m.changes.note == "" || m.changes.note == "no changes" { - t.Errorf("a failed reload over no changes: note %q, want the error", m.changes.note) - } - m = press(t, m, "b") // another scope has nothing loaded - if m.files != nil || m.changes.note == "" { - t.Errorf("a failed first load: %d files, note %q; want none, the error", len(m.files), m.changes.note) - } -} - -// TestPRErrorKeepsPR checks that a failed read keeps the last good pull -// request, and that the end of the pull request clears it. -func TestPRErrorKeepsPR(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "3") - m = step(t, m, prMsg{gen: m.prf.gen, pr: &vcs.PullRequest{Title: "Good"}}) - m = step(t, m, prMsg{gen: m.prf.gen, err: errors.New("network down")}) - if m.pr.pr == nil || !shows(m, "Good") || !strings.Contains(m.status, "network down") { - t.Errorf("after a failed read: pr %+v, status %q, view:\n%s\nwant the PR kept, a flash", - m.pr.pr, m.status, view(m)) - } - m = step(t, m, prMsg{gen: m.prf.gen, err: vcs.ErrNoPullRequest}) - if m.pr.pr != nil { - t.Errorf("after no pull request: pr %+v, want none", m.pr.pr) - } -} - -// TestPollWithoutWatcher checks that without a watcher a tick reloads -// only every pollEvery. -func TestPollWithoutWatcher(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - clk := setClock(&m) - m = step(t, m, tickMsg{}) - testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") - if m = step(t, m, tickMsg{}); shows(m, "return 42") { - t.Errorf("a tick before the poll is due, view got:\n%s\nwant no reload", view(m)) - } - clk.advance(pollEvery - time.Nanosecond) - if m = step(t, m, tickMsg{}); shows(m, "return 42") { - t.Errorf("a tick just before pollEvery, view got:\n%s\nwant no reload", view(m)) - } - clk.advance(time.Nanosecond) - if m = step(t, m, tickMsg{}); !shows(m, "return 42") { - t.Errorf("a tick after pollEvery, view got:\n%s\nwant the edit", view(m)) - } -} - -// TestWatchRestarts checks that a tick starts the watcher again after a -// failure, with a wait that doubles. -func TestWatchRestarts(t *testing.T) { - m, _ := newTestModel(t) - clk := setClock(&m) - m.dropWatch(errors.New("gone")) - clk.advance(retryFirst) - path := os.Getenv("PATH") - noGit(t) - if m = step(t, m, tickMsg{}); m.watch != nil || !m.watchRetry.at.After(m.now()) { - t.Fatalf("a failed start: watcher %v, next try %v; want none, a wait", m.watch, m.watchRetry.at) - } - t.Setenv("PATH", path) - if m = step(t, m, tickMsg{}); m.watch != nil { - t.Fatal("a tick before the wait ends starts the watcher") - } - clk.advance(2 * retryFirst) - if m = step(t, m, tickMsg{}); m.watch == nil { - t.Error("a tick after the wait: no watcher, want one") - } -} - -// TestWatchErrorRestarts checks that an error of the watcher drops it, so -// that a later tick starts it again. -func TestWatchErrorRestarts(t *testing.T) { - m, dir := watched(t) - noGit(t) - testgit.WriteFile(t, dir, "new.go", "package a\n") // the watcher lists the files again - if m = step(t, m, tickMsg{}); m.watch != nil || m.watchRetry.at.IsZero() { - t.Errorf("after an error of the watcher: watcher %v, next try %v; want none, a try", - m.watch, m.watchRetry.at) - } -} diff --git a/tui/saved_test.go b/tui/saved_test.go deleted file mode 100644 index 597deb1..0000000 --- a/tui/saved_test.go +++ /dev/null @@ -1,85 +0,0 @@ -package tui - -import ( - "slices" - "testing" - - "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rednafi/rexdiff/rex" -) - -// reopen returns a model of the repository of m, as after a restart, with -// the base flag base. -func reopen(t *testing.T, m model, base string) model { - t.Helper() - return newModel(t.Context(), Options{Repo: m.repo, Base: base}, defaultConfig()) -} - -// pickBase picks the base ref in the base picker. -func pickBase(t *testing.T, m model, ref string) model { - t.Helper() - m = press(t, m, "B") - if m.overlay == nil { - t.Fatal("B opens no picker") - } - m.overlay.input.SetValue(ref) - m.overlay.filter() - return press(t, m, "enter") -} - -// TestSavedBase checks that a restart keeps the picked base, and that the -// default branch clears it. -func TestSavedBase(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - if m = pickBase(t, m, "feat"); m.base != "feat" { - t.Fatalf("base = %q, want feat", m.base) - } - if got := reopen(t, m, "").base; got != "feat" { - t.Errorf("after a restart, base = %q, want feat", got) - } - m = pickBase(t, m, "main") - if got := m.repo.SavedBase(t.Context()); got != "" { - t.Errorf("after a pick of the default, SavedBase = %q, want \"\"", got) - } -} - -// TestBaseFlagWins checks that the flag wins over the saved base, and that -// B then opens no picker. -func TestBaseFlagWins(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = pickBase(t, m, "feat") - m = reopen(t, m, "main") - if m.base != "main" { - t.Errorf("base = %q, want the flag, main", m.base) - } - if m = press(t, m, "B"); m.overlay != nil { - t.Error("with the flag, B opens a picker") - } -} - -// TestSavedTurn checks that a restart keeps the tree at the start of the -// last turn. -func TestSavedTurn(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - m = step(t, m, sample("block:agent", "pi", dir)) - m = step(t, m, status("block:agent", "pi", rex.StateWorking)) - if m.repo.SavedTurn(t.Context()) != "" { - t.Error("a turn with no change saves its tree") - } - testgit.WriteFile(t, dir, "c.go", "package a\n") - m = step(t, m, status("block:agent", "pi", rex.StateIdle)) - if m.turn == nil { - t.Fatal("no turn after the agent changes a file") - } - m2 := reopen(t, m, "") - if m2.turn == nil || m2.turn.tree != m.turn.tree { - t.Fatalf("after a restart, turn = %+v, want the tree %s", m2.turn, m.turn.tree) - } - m2.setScope(ScopeLastTurn) - if got := paths(m2); !slices.Equal(got, []string{"c.go"}) { - t.Errorf("the saved turn shows %v, want [c.go]", got) - } -} diff --git a/tui/search_test.go b/tui/search_test.go deleted file mode 100644 index 72d3f63..0000000 --- a/tui/search_test.go +++ /dev/null @@ -1,328 +0,0 @@ -package tui - -import ( - "fmt" - "slices" - "strings" - "testing" - "time" - - tea "charm.land/bubbletea/v2" - - "github.com/rednafi/rexdiff/internal/search" - "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rednafi/rexdiff/vcs" -) - -// typeQuery types q in the search and returns the command of the last key. -// The cursor does not blink, so the command has no timer of a blink. -func typeQuery(t *testing.T, m model, q string) (model, tea.Cmd) { - t.Helper() - st := m.overlay.input.Styles() - st.Cursor.Blink = false - m.overlay.input.SetStyles(st) - var cmd tea.Cmd - for _, r := range q { - next, c := m.Update(tea.KeyPressMsg{Code: r, Text: string(r)}) - m, cmd = *next.(*model), c - } - return m, cmd -} - -// openQuery opens the search and types q. It runs the code search and -// gives its result to the model. -func openQuery(t *testing.T, m model, q string) model { - t.Helper() - m = press(t, m, "/") - m, cmd := typeQuery(t, m, q) - if cmd == nil { - return m - } - return step(t, m, findGrep(cmd())) -} - -// findGrep returns the grepMsg in msg, which can be a batch. -func findGrep(msg tea.Msg) tea.Msg { - if b, ok := msg.(tea.BatchMsg); ok { - for _, c := range b { - if c == nil { - continue - } - if g, ok := c().(grepMsg); ok { - return g - } - } - } - return msg -} - -// labels returns the labels of the rows of the search. -func labels(m model) []string { - var ls []string - for _, i := range m.overlay.shown { - ls = append(ls, m.overlay.items[i].label) - } - return ls -} - -var tabKey = tea.KeyPressMsg{Code: tea.KeyTab} - -// TestSearchFlip checks that tab switches the mode of the search and -// keeps the query, as in herdr-reviewr. -func TestSearchFlip(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = openQuery(t, m, "package") - if m.overlay.search.code { - t.Fatal("the search opens in the code mode, want files") - } - if !shows(m, "files 0 │ code 2") { - t.Errorf("view got:\n%s\nwant the chips \"files 0 │ code 2\"", view(m)) - } - m = step(t, m, tabKey) - if !m.overlay.search.code || m.overlay.input.Value() != "package" { - t.Errorf("after tab: code %t, query %q; want true, %q", - m.overlay.search.code, m.overlay.input.Value(), "package") - } - if want := []string{"a.go", " 1: package a", "b.go", " 1: package a"}; !slices.Equal(labels(m), want) { - t.Errorf("the code rows are %q, want %q", labels(m), want) - } - m = step(t, m, tabKey) - if m.overlay.search.code { - t.Error("a second tab stays in the code mode, want files") - } -} - -// TestSearchFileLimit checks that the search shows 50 files, then a -// "… more" row, and the count of all the matches in the chip. -func TestSearchFileLimit(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - for i := range 60 { - testgit.WriteFile(t, dir, fmt.Sprintf("zz%02d.txt", i), "x\n") - } - m = openQuery(t, m, "zz") - ls := labels(m) - if len(ls) != 51 || ls[50] != "… more" { - t.Errorf("the search shows %d rows, the last %q; want 51, \"… more\"", len(ls), ls[len(ls)-1]) - } - if !shows(m, "files 60 │") { - t.Errorf("view got:\n%s\nwant \"files 60 │\"", view(m)) - } - // The cursor stops on the last file, not on the "… more" row. - for range 60 { - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyDown}) - } - if m.overlay.cur != 49 { - t.Errorf("after 60 downs the cursor is on row %d, want 49", m.overlay.cur) - } -} - -// TestSearchCodeGroups checks that the code matches show under a header -// for each file, and that the cursor skips the headers. -func TestSearchCodeGroups(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = openQuery(t, m, "package") - m = step(t, m, tabKey) - if it := m.overlay.selected(); it == nil || it.id != "a.go" || it.line != 1 { - t.Fatalf("the cursor is on %+v, want the match in a.go", it) - } - m = step(t, m, tea.KeyPressMsg{Code: 'n', Mod: tea.ModCtrl}) - if it := m.overlay.selected(); it == nil || it.id != "b.go" || m.overlay.cur != 3 { - t.Errorf("after ctrl+n the cursor is on row %d, %+v; want 3, b.go", m.overlay.cur, it) - } - m = step(t, m, tea.KeyPressMsg{Code: 'p', Mod: tea.ModCtrl}) - if m.overlay.cur != 1 { - t.Errorf("after ctrl+p the cursor is on row %d, want 1", m.overlay.cur) - } - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyUp}) - if m.overlay.cur != 1 { - t.Errorf("up from the first match moves the cursor to row %d, want 1", m.overlay.cur) - } -} - -// TestSearchCodeMore checks the "+" of the chip and the "… more" row when -// git finds more matches than the search shows. -func TestSearchCodeMore(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - testgit.WriteFile(t, dir, "many.txt", strings.Repeat("hit\n", 300)) - m = openQuery(t, m, "hit") - m = step(t, m, tabKey) - ls := labels(m) - if len(ls) != 202 || ls[201] != "… more" { - t.Errorf("the search shows %d rows; want 202, the last \"… more\"", len(ls)) - } - if !shows(m, "code 200+") { - t.Errorf("view got:\n%s\nwant \"code 200+\"", view(m)) - } -} - -// TestSearchStaleGrep checks that a code search for an old query shows -// nothing, and that a change of the query stops the old search. -func TestSearchStaleGrep(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "/") - m, first := typeQuery(t, m, "pack") - m, _ = typeQuery(t, m, "z") - msg := findGrep(first()) - if g, ok := msg.(grepMsg); !ok || g.err == nil { - t.Errorf("the old code search returns %+v, want a canceled search", msg) - } - m = step(t, m, grepMsg{query: "pack", hits: []vcs.Match{{Path: "a.go", Line: 1, Text: "old"}}}) - if len(m.overlay.search.hits) != 0 { - t.Errorf("an old result shows %+v, want nothing", m.overlay.search.hits) - } -} - -// TestSearchEmptyQuery checks that an empty query lists the files that -// the user picks in this session first, then the other files, and no -// code. -func TestSearchEmptyQuery(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "/") - if want := []string{"a.go", "b.go"}; !slices.Equal(labels(m), want) { - t.Errorf("an empty query lists %q, want %q", labels(m), want) - } - m, _ = typeQuery(t, m, "b.go") - m = press(t, m, "enter", "/") - if want := []string{"b.go", "a.go"}; !slices.Equal(labels(m), want) { - t.Errorf("after a pick of b.go, an empty query lists %q, want %q", labels(m), want) - } - m = step(t, m, tabKey) - if len(labels(m)) != 0 || shows(m, "no matches") { - t.Errorf("the code mode of an empty query shows %q, want nothing", labels(m)) - } -} - -// TestSearchNoMatches checks the message of a search with no result. -func TestSearchNoMatches(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = openQuery(t, m, "qqqq") - if !shows(m, "no matches") { - t.Errorf("view got:\n%s\nwant \"no matches\"", view(m)) - } - m = step(t, m, tabKey) - if !shows(m, "no matches") { - t.Errorf("code mode view got:\n%s\nwant \"no matches\"", view(m)) - } -} - -// longFile writes a file of 100 lines, with "needle" on line 62. -func longFile(t *testing.T, dir string) { - t.Helper() - var b strings.Builder - for i := range 100 { - if i == 61 { - b.WriteString("needle here\n") - continue - } - fmt.Fprintf(&b, "line %d\n", i+1) - } - testgit.WriteFile(t, dir, "long.go", b.String()) -} - -// lineOf returns the index of the first line of the view that has s, or -// -1. -func lineOf(m model, s string) int { - return slices.IndexFunc(strings.Split(view(m), "\n"), func(l string) bool { - return strings.Contains(l, s) - }) -} - -// TestSearchPreview checks that the preview shows the file of the code -// match below the results, with the match in the middle, and that the -// results and the preview share the space, as in herdr-reviewr. -func TestSearchPreview(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - longFile(t, dir) - m = openQuery(t, m, "needle") - m = step(t, m, tabKey) - results, rule := lineOf(m, "─ results ─"), lineOf(m, "─ preview · long.go ─") - hit, end := lineOf(m, "▶ 62 needle here"), lineOf(m, "╰") - if results < 0 || rule < 0 || hit < 0 { - t.Fatalf("view got:\n%s\nwant the results, the preview of long.go, and line 62 marked", view(m)) - } - if top, bottom := rule-results, end-rule; top-bottom > 1 || bottom-top > 1 { - t.Errorf("the results take %d lines and the preview %d, want the same", top, bottom) - } - if mid := (rule + end) / 2; hit < mid-1 || hit > mid+1 { - t.Errorf("the match is on line %d of the view, want the middle of the preview, %d", hit, mid) - } -} - -// TestSearchPreviewScroll checks that pgdown and pgup scroll the preview. -func TestSearchPreviewScroll(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - longFile(t, dir) - m = openQuery(t, m, "needle") - m = step(t, m, tabKey) - _ = view(m) - top := m.overlay.search.preview.top - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyPgDown}) - _ = view(m) - if got := m.overlay.search.preview.top; got != top+pickerPage { - t.Errorf("after pgdown the preview starts at %d, want %d", got, top+pickerPage) - } - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyPgUp}) - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyPgUp}) - _ = view(m) - if got := m.overlay.search.preview.top; got != top-pickerPage { - t.Errorf("after 2 pgups the preview starts at %d, want %d", got, top-pickerPage) - } - if m.overlay.input.Value() != "needle" { - t.Errorf("the query is %q after the scroll, want \"needle\"", m.overlay.input.Value()) - } -} - -// TestSearchPreviewFile checks the preview of a file in the files mode, -// and the note of a binary file and of no result. -func TestSearchPreviewFile(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - testgit.WriteFile(t, dir, "bin.dat", "a\x00b") - m = openQuery(t, m, "a.go") - if !shows(m, "─ preview · a.go ─", "1 package a") { - t.Errorf("view got:\n%s\nwant the preview of a.go from line 1", view(m)) - } - m = press(t, m, "esc") - m = openQuery(t, m, "bin.dat") - if !shows(m, noteBinary) { - t.Errorf("view got:\n%s\nwant %q", view(m), noteBinary) - } - m = press(t, m, "esc") - m = openQuery(t, m, "qqqq") - if !shows(m, "─ preview ─", "no preview") { - t.Errorf("view got:\n%s\nwant \"no preview\"", view(m)) - } -} - -// TestSearchBudget checks that a code search past its time budget shows -// the matches that it finds by then, with a "+" in the chip. -// TestGrepDeadline in vcs checks the matches. -func TestSearchBudget(t *testing.T) { - m, _ := newTestModel(t) - m.grepBudget = search.CodeBudget - m = press(t, m, "/") - bin := t.TempDir() - // The fake git prints one match, then hangs. - testgit.Script(t, bin, "git", "printf 'a.go\\0001\\000hit\\n'\nexec /bin/sleep 10\n") - t.Setenv("PATH", bin) - m.overlay.input.SetValue("hit") - cmd := m.inputChanged() - start := time.Now() - msg := cmd() - if d := time.Since(start); d > 5*time.Second { - t.Fatalf("the code search takes %v, want about %v", d, search.CodeBudget) - } - // On a slow machine, the budget can end before the match. - if m = step(t, m, msg); !shows(m, "code 1+") && !shows(m, "code 0+") { - t.Errorf("view got:\n%s\nwant the chip \"code 1+\"", view(m)) - } -} diff --git a/tui/send.go b/tui/send.go index 251b901..82a90c3 100644 --- a/tui/send.go +++ b/tui/send.go @@ -5,6 +5,7 @@ import ( "fmt" "maps" "slices" + "time" tea "charm.land/bubbletea/v2" @@ -183,7 +184,7 @@ func (m *model) startTurn(ms []member) { app: ms[i].app, tree: tree, running: true, - at: m.now(), + at: time.Now(), } } @@ -243,7 +244,7 @@ func (m *model) onAgents(msg agentsMsg) tea.Cmd { case !m.sampled && !msg.send: // Without a list, the turns do not start. Thus list again later. m.log.Warn("agent list failed", "err", msg.err) - m.sampleRetry.fail(m.now()) + m.sampleRetry.fail(time.Now()) } m.observeTurn() if !msg.send { diff --git a/tui/split_test.go b/tui/split_test.go deleted file mode 100644 index 96ff52c..0000000 --- a/tui/split_test.go +++ /dev/null @@ -1,77 +0,0 @@ -package tui - -import ( - "testing" - - tea "charm.land/bubbletea/v2" -) - -// newSplitModel returns a test model that chooses the split layout, with -// a pane w columns wide. -func newSplitModel(t *testing.T, w int) model { - t.Helper() - m, _ := newTestModel(t) - m.split = true - return step(t, m, tea.WindowSizeMsg{Width: w, Height: 40}) -} - -// TestSplitNeedsWidth checks that a narrow pane shows one column, and that -// | tells why. The choice of split stays. -func TestSplitNeedsWidth(t *testing.T) { - t.Parallel() - m := newSplitModel(t, 120) - if m.splitShown() { - t.Errorf("width 120 (code %d): split shows, want unified", m.codeWidth()) - } - if m = press(t, m, "|"); m.status != "too narrow for split" || !m.split { - t.Errorf("| at width 120: status %q, split %v; want \"too narrow for split\", true", - m.status, m.split) - } -} - -// TestSplitFollowsWidth checks that split shows again when the pane gets -// wide again. -func TestSplitFollowsWidth(t *testing.T) { - t.Parallel() - m := newSplitModel(t, 210) - if !m.splitShown() { - t.Fatalf("width 210 (code %d): unified shows, want split", m.codeWidth()) - } - if m = step(t, m, tea.WindowSizeMsg{Width: 120, Height: 40}); m.splitShown() { - t.Error("after a resize to 120: split shows, want unified") - } - if m = step(t, m, tea.WindowSizeMsg{Width: 210, Height: 40}); !m.splitShown() { - t.Error("after a resize to 210: unified shows, want split") - } - if m = press(t, m, "|"); m.split || m.splitShown() { - t.Error("| at width 210: split shows, want unified") - } - if m = press(t, m, "|"); !m.splitShown() { - t.Error("| again at width 210: unified shows, want split") - } -} - -// TestSplitAddedFile checks that a file with lines on one side shows one -// column, and that | does nothing. -func TestSplitAddedFile(t *testing.T) { - t.Parallel() - m := newSplitModel(t, 210) - m = press(t, m, "b") // the branch scope adds b.go - i := -1 - for j, f := range m.files { - if f.Path == "b.go" { - i = j - } - } - if i < 0 { - t.Fatalf("the branch scope has %v, want b.go", paths(m)) - } - m.pickFile(i) - if m.splitShown() { - t.Error("an added file: split shows, want unified") - } - if m = press(t, m, "|"); m.status != "" || !m.split { - t.Errorf("| on an added file: status %q, split %v; want no status, true", - m.status, m.split) - } -} diff --git a/tui/tree_test.go b/tui/tree_test.go deleted file mode 100644 index 2708be9..0000000 --- a/tui/tree_test.go +++ /dev/null @@ -1,206 +0,0 @@ -package tui - -import ( - "slices" - "strings" - "testing" - - tea "charm.land/bubbletea/v2" - "github.com/charmbracelet/x/ansi" - - "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rednafi/rexdiff/vcs" -) - -// treeRepo is the repository of newTreeModel. It has changes in src/a.go, -// src/b.go, and top.go, and an ignored directory out. -var treeRepo = testgit.NewFixture(func(tb testing.TB, dir string) { - tb.Helper() - run := func(args ...string) { testgit.Git(tb, dir, args...) } - testgit.NewRepo(tb, dir) - for _, p := range []string{"src/a.go", "src/b.go", "top.go"} { - testgit.WriteFile(tb, dir, p, "package a\n") - } - testgit.WriteFile(tb, dir, ".gitignore", "out/\n") - run("add", ".") - run("commit", "-qm", "init") - for _, p := range []string{"src/a.go", "src/b.go", "top.go"} { - testgit.WriteFile(tb, dir, p, "package a\n\nvar x = 1\n") - } - testgit.WriteFile(tb, dir, "out/x.txt", "x\n") - testgit.WriteFile(tb, dir, "out/sub/y.txt", "y\n") -}) - -// newTreeModel copies treeRepo to a new directory. The model shows the -// Changes tab with the focus on the file list. -func newTreeModel(t *testing.T) (model, string) { - t.Helper() - dir := t.TempDir() - treeRepo.Copy(t, dir) - repo, err := vcs.Open(t.Context(), dir) - if err != nil { - t.Fatal(err) - } - m := newModel(t.Context(), Options{Repo: repo}, defaultConfig()) - setClock(&m) - m.reload() - m = step(t, m, tea.WindowSizeMsg{Width: 120, Height: 40}) - m.focusList = true - return m, dir -} - -// rowNames returns the names of the rows of the file list of the current -// tab, with "/" after a directory. -func rowNames(m model) []string { - var out []string - for _, r := range m.list().rows { - n := r.Name - if r.File < 0 { - n += "/" - } - out = append(out, n) - } - return out -} - -// shownPath returns the path of the file that the current tab shows. -func shownPath(m model) string { - if m.tab == tabFiles { - return m.allFiles[m.allSel].Path - } - return m.selectedChange().Path -} - -// TestTreeKeys checks the cursor, the expand and collapse keys, and the -// keys f and F in the tree of the Changes tab. -func TestTreeKeys(t *testing.T) { - t.Parallel() - m, _ := newTreeModel(t) - if got, want := rowNames(m), []string{"src/", "a.go", "b.go", "top.go"}; !slices.Equal(got, want) { - t.Fatalf("rows %q, want %q", got, want) - } - if m.changeTree.cur != 1 || shownPath(m) != "src/a.go" { - t.Fatalf("start: cursor row %d on %s, want row 1 on src/a.go", m.changeTree.cur, shownPath(m)) - } - - // On a directory, the pane keeps the file. - m = press(t, m, "k") - if m.changeTree.cur != 0 || shownPath(m) != "src/a.go" { - t.Errorf("k: cursor row %d, shows %s; want row 0, src/a.go", m.changeTree.cur, shownPath(m)) - } - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyLeft}) - if got, want := rowNames(m), []string{"src/", "top.go"}; !slices.Equal(got, want) { - t.Errorf("← on src: rows %q, want %q", got, want) - } - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) - if got := rowNames(m); len(got) != 4 { - t.Errorf("→ on src: rows %q, want src expanded", got) - } - - // f and F skip the directory. - m = press(t, m, "f") - if shownPath(m) != "src/a.go" || m.changeTree.cur != 1 { - t.Errorf("f from src: shows %s at row %d, want src/a.go at row 1", shownPath(m), m.changeTree.cur) - } - m = press(t, m, "f", "f") - if shownPath(m) != "top.go" { - t.Errorf("f f: shows %s, want top.go", shownPath(m)) - } - m = press(t, m, "F", "F", "F") - if shownPath(m) != "src/a.go" || m.changeTree.cur != 1 { - t.Errorf("F past the first file: shows %s at row %d, want src/a.go at row 1", - shownPath(m), m.changeTree.cur) - } - - // A file row keeps its +N -N, and a collapsed directory keeps the - // cursor after a reload. - if !shows(m, "a.go", "+2 -0") { - t.Errorf("view got:\n%s\nwant a.go with +2 -0", view(m)) - } - m = press(t, m, "k") - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyLeft}) - m.reload() - if r, ok := m.changeTree.dir(); !ok || r.Dir != "src" || r.Expanded { - t.Errorf("after a reload: cursor on %+v, want on the collapsed src", r) - } -} - -// TestFileTree checks the tree of the Files tab: the directories start -// collapsed, a collapsed directory with a change has a dot, a click -// toggles, and an ignored directory reads its entries when it expands. -func TestFileTree(t *testing.T) { - t.Parallel() - m, _ := newTreeModel(t) - m = press(t, m, "2") - m.focusList = true - if got, want := rowNames(m), []string{"out/", "src/", ".gitignore", "top.go"}; !slices.Equal(got, want) { - t.Fatalf("rows %q, want %q", got, want) - } - if got := listLine(m, "src/"); !strings.Contains(got, "•") { - t.Errorf("collapsed src is %q, want a dot for its change", got) - } - if got := listLine(m, "out/"); strings.Contains(got, "•") { - t.Errorf("out is %q, want no dot", got) - } - - // A click on src expands it, and a second click collapses it. - y := m.listY() + 1 + slices.Index(rowNames(m), "src/") - m = click(t, m, m.listX()+3, y) - if got := rowNames(m); !slices.Contains(got, "a.go") { - t.Errorf("after a click on src: rows %q, want its files", got) - } - m.click = clickChain{} // not a double click - m = click(t, m, m.listX()+3, y) - if got := rowNames(m); slices.Contains(got, "a.go") { - t.Errorf("after a second click on src: rows %q, want it collapsed", got) - } - - // → on the ignored out reads its entries. - m.fileTree.cur = 0 - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) - want := []string{"out/", "sub/", "x.txt", "src/", ".gitignore", "top.go"} - if got := rowNames(m); !slices.Equal(got, want) { - t.Fatalf("→ on out: rows %q, want %q", got, want) - } - if r := m.fileTree.rows[2]; !r.Ignored || m.allFiles[r.File].Path != "out/x.txt" { - t.Errorf("x.txt row %+v, want the ignored out/x.txt", r) - } - // The expanded directory stays open after a reload. - m.reloadFiles() - if got := rowNames(m); !slices.Equal(got, want) { - t.Errorf("after a reload: rows %q, want %q", got, want) - } - m = press(t, m, "j", "j") - if shownPath(m) != "out/x.txt" || !shows(m, "1 x") { - t.Errorf("j j: shows %s, view:\n%s\nwant out/x.txt", shownPath(m), view(m)) - } -} - -// listLine returns the line of the file list that has text. -func listLine(m model, text string) string { - for _, l := range m.listLines(m.listRows()) { - if l := ansi.Strip(l); strings.Contains(l, text) { - return l - } - } - return "" -} - -// TestShownPaths checks that the watcher gets the expanded ignored -// directories and the open file of the Files tab, as in herdr-reviewr. -func TestShownPaths(t *testing.T) { - t.Parallel() - m, _ := newTreeModel(t) - m = press(t, m, "2") - if got := m.shownPaths(); !slices.Equal(got, []string{".gitignore"}) { - t.Errorf("collapsed: %q, want the open file", got) - } - m.fileTree.cur = 0 - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) // expand out - if got := m.shownPaths(); !slices.Equal(got, []string{"out", ".gitignore"}) { - t.Errorf("out expanded: %q, want out and the open file", got) - } - if m = press(t, m, "1"); len(m.shownPaths()) != 0 { - t.Errorf("in the Changes tab: %q, want none", m.shownPaths()) - } -} diff --git a/tui/tui_test.go b/tui/tui_test.go deleted file mode 100644 index 8b505de..0000000 --- a/tui/tui_test.go +++ /dev/null @@ -1,1005 +0,0 @@ -package tui - -import ( - "encoding/json" - "errors" - "fmt" - "image/color" - "os" - "path/filepath" - "slices" - "strings" - "testing" - "time" - - tea "charm.land/bubbletea/v2" - uv "github.com/charmbracelet/ultraviolet" - "github.com/charmbracelet/x/ansi" - - "github.com/rednafi/rexdiff/diff" - "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rednafi/rexdiff/rex" - "github.com/rednafi/rexdiff/vcs" -) - -// testRepo is the repository of newTestModel. The branch main has a.go. -// The branch feat adds b.go. The working tree changes a.go. -var testRepo = testgit.NewFixture(func(tb testing.TB, dir string) { - tb.Helper() - run := func(args ...string) { testgit.Git(tb, dir, args...) } - testgit.NewRepo(tb, dir) - testgit.WriteFile(tb, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") - run("add", ".") - run("commit", "-qm", "init") - run("checkout", "-qb", "feat") - testgit.WriteFile(tb, dir, "b.go", "package a\n") - run("add", ".") - run("commit", "-qm", "add b") - testgit.WriteFile(tb, dir, "a.go", "package a\n\nfunc A() int {\n\tx := 2\n\treturn x\n}\n") -}) - -// newTestModel copies testRepo to a new directory and returns a model that -// shows it, and the directory. -func newTestModel(tb testing.TB) (model, string) { - tb.Helper() - dir := tb.TempDir() - testRepo.Copy(tb, dir) - repo, err := vcs.Open(tb.Context(), dir) - if err != nil { - tb.Fatal(err) - } - m := newModel(tb.Context(), Options{Repo: repo}, defaultConfig()) - m.grepBudget = time.Minute // a slow test machine does not cut the searches - setClock(&m) - m.reload() - m = step(tb, m, tea.WindowSizeMsg{Width: 120, Height: 40}) - return m, dir -} - -// testClock is a clock that moves only when the test moves it. -type testClock struct{ t time.Time } - -// setClock makes m use a new test clock, and returns the clock. A -// watcher that m starts after it uses the clock too. -func setClock(m *model) *testClock { - c := &testClock{t: time.Date(2025, 1, 1, 12, 0, 0, 0, time.UTC)} - m.now = func() time.Time { return c.t } - return c -} - -// advance moves c forward by d. -func (c *testClock) advance(d time.Duration) { c.t = c.t.Add(d) } - -// step gives msg to m and returns the new model. -func step(tb testing.TB, m model, msg tea.Msg) model { - tb.Helper() - next, _ := m.Update(msg) - return *next.(*model) -} - -// press sends keys to m. A key is a name, such as "enter", or the text -// that the key types, such as "j". -func press(t *testing.T, m model, keys ...string) model { - t.Helper() - for _, k := range keys { - m = step(t, m, keyMsg(t, k)) - } - return m -} - -// keyMsg returns the press of the key k. k is as in press. -func keyMsg(t *testing.T, k string) tea.KeyPressMsg { - t.Helper() - named := map[string]rune{ - "enter": tea.KeyEnter, - "esc": tea.KeyEscape, - "home": tea.KeyHome, - "end": tea.KeyEnd, - } - code, ok := named[k] - switch { - case ok: - return tea.KeyPressMsg{Code: code} - case len(k) > 1 && strings.Trim(k, "abcdefghijklmnopqrstuvwxyz") == "": - t.Fatalf("press: no key is named %q", k) - } - return tea.KeyPressMsg{Code: []rune(k)[0], Text: k} -} - -// toTop moves the cursor of the current pane to the first row. -func toTop(m model) model { - m.cur().cur = 0 - m.ensureVisible() - return m -} - -// view returns the screen of m without escape sequences. -func view(m model) string { return ansi.Strip(m.View().Content) } - -// shows reports whether the screen of m has each of texts. -func shows(m model, texts ...string) bool { - v := view(m) - for _, s := range texts { - if !strings.Contains(v, s) { - return false - } - } - return true -} - -// status returns the event that the agent app in block is in state. -func status(block, app string, state rex.State) eventMsg { - return eventMsg{Block: block, Status: rex.Status{App: app, State: state}} -} - -// sample returns the first list of the agents: the agent app in block, -// in dir, at rest. -func sample(block, app, dir string) agentsMsg { - a := rex.Agent{Block: block, Cwd: dir, Status: rex.Status{App: app, State: rex.StateIdle}} - return agentsMsg{agents: []rex.Agent{a}} -} - -// paths returns the paths of the files in the Changes tab. -func paths(m model) []string { - var ps []string - for _, f := range m.files { - ps = append(ps, f.Path) - } - return ps -} - -// TestScopes checks the files that each scope shows. -func TestScopes(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - if got := paths(m); !slices.Equal(got, []string{"a.go"}) { - t.Fatalf("uncommitted scope shows %v, want [a.go]", got) - } - if f := m.files[0]; f.adds != 2 || f.dels != 1 { - t.Errorf("a.go: +%d -%d, want +2 -1", f.adds, f.dels) - } - - m = press(t, m, "b") - if got := paths(m); !slices.Equal(got, []string{"a.go", "b.go"}) { - t.Errorf("branch scope vs %s shows %v, want [a.go b.go]", m.base, got) - } - - // The commit picker lists the newest commit first. The enter key picks it. - m = press(t, m, "G", "enter") - if got := paths(m); m.scope != scopeCommits || !slices.Equal(got, []string{"b.go"}) { - t.Errorf("commits scope shows %v, want [b.go]", got) - } - // A click on the commit in the header opens the commit picker again. - top, _, _ := strings.Cut(view(m), "\n") - i := strings.Index(top, shortSHA(m.to)) - m = step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: ansi.StringWidth(top[:i])}) - if m.mode != modeOverlay || m.overlay.kind != overlayCommits { - t.Errorf("after a click on the commit in the header: mode %v, "+ - "want the commit picker", m.mode) - } - m = press(t, m, "esc") - - // The turn scope shows only the changes of the turn of an agent. - m = press(t, m, "t") - if m.changes.note != "waiting for the first turn" { - t.Errorf("turn scope before a turn: note %q, want a note that no turn ran", m.changes.note) - } - m = step(t, m, sample("block:agent", "pi", dir)) - m = step(t, m, status("block:agent", "pi", rex.StateWorking)) - testgit.WriteFile(t, dir, "c.go", "package a\n") - m = step(t, m, status("block:agent", "pi", rex.StateIdle)) - if got := paths(m); !slices.Equal(got, []string{"c.go"}) || m.turn.running { - t.Errorf("turn scope shows %v (running %v), want [c.go]", got, m.turn.running) - } - if v := view(m); !strings.Contains(v, "pi · ") { - t.Errorf("view got:\n%s\nwant the agent of the turn in the header", v) - } -} - -// TestComment checks comments in the two layouts, and the send and quit -// keys with unsent comments. -func TestComment(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - - // The unified layout uses three rows for the change. - m = press(t, m, "]", "v", "j", "j", "c") - if m.mode != modeComment { - t.Fatalf("after c: mode %v, want the comment box", m.mode) - } - m = press(t, m, "h", "i", "enter") - // The split layout uses two rows for the same change. It needs a wide - // pane. - m = step(t, m, tea.WindowSizeMsg{Width: 210, Height: 40}) - m = press(t, toTop(press(t, m, "|")), "]", "v", "j", "c", "o", "k", "enter") - - cs := m.comments.All() - if len(cs) != 2 { - t.Fatalf("got %d comments, want 2", len(cs)) - } - rows := "a.go:4-5\n-\treturn 1\n+\tx := 2\n+\treturn x\n" - if got, want := m.comments.Review(""), rows+"hi\n\n"+rows+"ok"; got != want { - t.Errorf("Review got:\n%s\nwant:\n%s", got, want) - } - if m.status != "comment added" { - t.Errorf("after a save: status %q, want \"comment added\"", m.status) - } - m.status = "" // the status hides the count - if !shows(m, "💬 hi", "2 unsent comments") { - t.Errorf("view got:\n%s\nwant the comments", view(m)) - } - - m = press(t, m, "s") - if !strings.Contains(m.status, "not inside Rex") { - t.Errorf("send outside Rex: status %q, want \"not inside Rex\"", m.status) - } - // Quit asks first, because the comments are not sent. - if m = press(t, m, "q"); m.overlay == nil || m.overlay.kind != overlayQuit { - t.Error("q with unsent comments: no quit prompt, want a prompt") - } -} - -// TestTabs checks the Files tab and the PR tab. -func TestTabs(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - - m = press(t, m, "2") - if !shows(m, "Files (2)", "package a") { - t.Errorf("Files tab got:\n%s\nwant 2 files, with a.go shown", view(m)) - } - - // The repository has no remote, so the PR tab shows why. - m = press(t, m, "3") - m = step(t, m, m.loadPR()()) - if v := view(m); !strings.Contains(v, "no git remote") { - t.Errorf("the PR tab got:\n%s\nwant the note that there is no git remote", - v) - } -} - -// TestPRChecks checks that the PR tab shows the counts of the checks of a -// pull request, and the names of the checks that fail. -func TestPRChecks(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "3") - pr := &vcs.PullRequest{ - Title: "T", - State: vcs.StateOpen, - Checks: []vcs.Check{ - {Name: "test", Result: vcs.ResultPass}, - {Name: "docs", Result: vcs.ResultSkip}, - {Name: "build", Result: vcs.ResultFail}, - {Name: "e2e", Result: vcs.ResultPending}, - }, - } - m = step(t, m, prMsg{pr: pr}) - if !shows(m, "checks: ✓ 2 ✗ 1 ◌ 1", "✗ build") { - t.Errorf("the PR tab got:\n%s\nwant the checks", view(m)) - } -} - -// TestSmallScreens checks that every key works on screens down to 1x1 and -// that the view fits the screen. Each key must have its effect, so a key -// that does nothing on a small screen fails. -func TestSmallScreens(t *testing.T) { - t.Parallel() - type check func(before, after model, cmd tea.Cmd) bool - moved := func(b, a model, _ tea.Cmd) bool { return a.cur().cur != b.cur().cur } - isMode := func(md mode) check { - return func(_, a model, _ tea.Cmd) bool { return a.mode == md } - } - isOverlay := func(k overlayKind) check { - return func(_, a model, _ tea.Cmd) bool { return a.overlay != nil && a.overlay.kind == k } - } - isScope := func(sc Scope) check { return func(_, a model, _ tea.Cmd) bool { return a.scope == sc } } - isTab := func(tb tab) check { return func(_, a model, _ tea.Cmd) bool { return a.tab == tb } } - isFile := func(i int) check { return func(_, a model, _ tea.Cmd) bool { return a.changeSel == i } } - flashes := func(text string) check { - return func(_, a model, _ tea.Cmd) bool { return a.status == text } - } - closed := func(_, a model, _ tea.Cmd) bool { return a.overlay == nil && a.mode == modeNormal } - steps := []struct { - key string - want string - ok check - }{ - {"b", "the branch scope", isScope(ScopeBranch)}, - {"f", "the next file", isFile(1)}, - {"F", "the first file", isFile(0)}, - {"w", "wrap off", func(b, a model, _ tea.Cmd) bool { return a.wrap != b.wrap }}, - {"j", "a move", moved}, - {"v", "a selection", func(_, a model, _ tea.Cmd) bool { return a.cur().anchor >= 0 }}, - {"j", "a move", moved}, - {"c", "the comment box", isMode(modeComment)}, - {"\x1b[31mx\x07", "text in the box", func(_, a model, _ tea.Cmd) bool { return a.editor.Value() != "" }}, - {"enter", "a comment", func(_, a model, _ tea.Cmd) bool { return a.comments.Len() == 1 && a.mode == modeNormal }}, - {"k", "a move up", moved}, - {"]", "a move to the change", moved}, - {"]", "a crossing armed", func(_, a model, _ tea.Cmd) bool { return a.armed == 1 }}, - {"]", "the next file", isFile(1)}, - {"[", "a crossing armed", func(_, a model, _ tea.Cmd) bool { return a.armed == -1 }}, - {"[", "the first file", isFile(0)}, - {"n", "a move to the comment", moved}, - {"|", "split, or too narrow", func(b, a model, _ tea.Cmd) bool { - return a.split != b.split || a.status == "too narrow for split" - }}, - {"p", "the list moves", func(b, a model, _ tea.Cmd) bool { return a.listPos != b.listPos }}, - {"t", "the last-turn scope", isScope(ScopeLastTurn)}, - {"u", "the uncommitted scope", isScope(ScopeUncommitted)}, - {"G", "the commit picker", isOverlay(overlayCommits)}, - {"esc", "no overlay", closed}, - {"/", "the search", isOverlay(overlaySearch)}, - {"a", "a query", func(_, a model, _ tea.Cmd) bool { return a.overlay.input.Value() == "a" }}, - {"esc", "no overlay", closed}, - {":", "go to line", isOverlay(overlayGoto)}, - {"2", "a line number", func(_, a model, _ tea.Cmd) bool { return a.overlay.input.Value() == "2" }}, - {"enter", "no overlay", closed}, - {"?", "all keys", func(_, a model, _ tea.Cmd) bool { return a.help.ShowAll }}, - {"esc", "the short keys", func(_, a model, _ tea.Cmd) bool { return !a.help.ShowAll }}, - {"2", "the Files tab", isTab(tabFiles)}, - {"j", "a move in the file", moved}, - {"3", "the PR tab", isTab(tabPR)}, - {"1", "the Changes tab", isTab(tabChanges)}, - {"s", "no agent", flashes("not inside Rex, press y to copy")}, - {"y", "a copy", func(_, _ model, cmd tea.Cmd) bool { return cmd != nil }}, - {"q", "the quit prompt", isOverlay(overlayQuit)}, - {"esc", "no overlay", closed}, - {"d", "no comment", func(_, a model, _ tea.Cmd) bool { return a.comments.Len() == 0 }}, - {"q", "a quit", func(_, _ model, cmd tea.Cmd) bool { return quits(cmd) }}, - } - sizes := []struct{ w, h int }{ - {0, 0}, {1, 1}, {2, 2}, {10, 3}, {20, 5}, {40, 4}, {200, 6}, - } - for _, size := range sizes { - t.Run(fmt.Sprintf("%dx%d", size.w, size.h), func(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = step(t, m, tea.WindowSizeMsg{Width: size.w, Height: size.h}) - for _, st := range steps { - before := m - next, cmd := m.Update(keyMsg(t, st.key)) - m = *next.(*model) - if !st.ok(before, m, cmd) { - t.Fatalf("after %q: want %s", st.key, st.want) - } - lines := strings.Split(view(m), "\n") - if len(lines) > max(size.h, 1) { - t.Errorf("after %q: %d lines, want %d or fewer", st.key, len(lines), max(size.h, 1)) - } - for _, l := range lines { - if w := ansi.StringWidth(l); w > max(size.w, 1) { - t.Errorf("after %q: line width %d, want %d or fewer: %q", - st.key, w, max(size.w, 1), l) - break - } - } - } - }) - } -} - -// TestDragAfterReload checks that a drag does not panic when the pane gets -// shorter. -func TestDragAfterReload(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m.drag = dragState{active: true, gutter: true, moved: true, start: 48} - m = step(t, m, tea.MouseReleaseMsg{Button: tea.MouseLeft}) - - m.changes.set(nil, nil) // a reload finds no changes - m.drag = dragState{active: true} - m = step(t, m, tea.MouseMotionMsg{Button: tea.MouseLeft, Y: m.h}) - view(m) -} - -// screenY returns the screen line of row i of the current pane. -func screenY(t *testing.T, m model, i int) int { - t.Helper() - _, rowAt := m.mainLines(m.mainHeight(), nil) - y := slices.Index(rowAt, i) - if y < 0 { - t.Fatalf("row %d is not on the screen, want it on the screen", i) - } - return m.mainY() + y -} - -// click presses and releases the left button at x, y. -func click(t *testing.T, m model, x, y int) model { - t.Helper() - m = step(t, m, tea.MouseClickMsg{Button: tea.MouseLeft, X: x, Y: y}) - return step(t, m, tea.MouseReleaseMsg{Button: tea.MouseLeft, X: x, Y: y}) -} - -// TestClickOldNumber checks a comment from a click on the old line number of -// an unchanged line. -func TestClickOldNumber(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - // The comment goes on the new side, so that it shows and d can delete it. - equal := func(r diff.Row) bool { return r.Kind == diff.KindEqual } - i := slices.IndexFunc(m.changes.rows, equal) - m = click(t, m, m.mainX()+gutter, screenY(t, m, i)) - m = press(t, m, "h", "i", "enter") - if v := view(m); !strings.Contains(v, "💬 hi") { - t.Errorf("view got:\n%s\nwant the comment", v) - } - if m = press(t, m, "d"); m.comments.Len() != 0 { - t.Errorf("after d: comments %+v, want none", m.comments.All()) - } -} - -// TestClickCommentBox checks that a click does not change the draft or close -// the comment box. -func TestClickCommentBox(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = press(t, m, "]", "c", "h", "i") - _, rowAt := m.mainLines(m.mainHeight(), nil) - box := bodyY + slices.Index(rowAt, m.changes.cur) + 1 - clicks := []struct { - where string - y int - }{ - {"on", box}, - {"outside", screenY(t, m, 0)}, - } - for _, c := range clicks { - m = click(t, m, m.mainX()+6, c.y) - if m.mode != modeComment || m.editor.Value() != "hi" { - t.Errorf("a click %s the box: mode %v, draft %q; want the box open with hi", - c.where, m.mode, m.editor.Value()) - } - } -} - -// TestSendError checks that the footer shows the error of Rex after a send -// fails. -func TestSendError(t *testing.T) { - m, _ := newTestModel(t) - fakeRex(t, &m, "echo 'Error: no Rex server' >&2\nexit 1\n") - m = press(t, m, "]", "c", "h", "i", "enter") - m = step(t, m, m.deliver(rex.Agent{Block: "b", Name: "pi"})()) - if !strings.Contains(m.status, "no Rex server") { - t.Errorf("status %q, want the error of Rex", m.status) - } -} - -// TestMissingHead checks that the Changes tab shows an error, and not each -// file as added, when the object of the HEAD commit is missing. The files -// that show stay, and the error is a flash. -func TestMissingHead(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - hex := strings.TrimSpace(testgit.Git(t, dir, "rev-parse", "HEAD")) - obj := filepath.Join(dir, ".git", "objects", hex[:2], hex[2:]) - if err := os.Remove(obj); err != nil { - t.Fatal(err) - } - m.reload() - if got := paths(m); !slices.Equal(got, []string{"a.go"}) || - !strings.Contains(m.status, "unknown revision HEAD") { - t.Errorf("files %v, status %q; want [a.go] and the error", got, m.status) - } - m.files = nil // nothing shows - m.reload() - if v := view(m); len(m.files) > 0 || !strings.Contains(v, "unknown revision HEAD") { - t.Errorf("files %v, want none and the error:\n%s", paths(m), v) - } -} - -// errorHas reports whether err is not nil and has each of texts. -func errorHas(err error, texts ...string) bool { - if err == nil { - return false - } - for _, s := range texts { - if !strings.Contains(err.Error(), s) { - return false - } - } - return true -} - -// TestParseConfig checks the settings that the Rex action sends as JSON. -func TestParseConfig(t *testing.T) { - t.Parallel() - // Each action in src/keymap.rs of herdr-reviewr has a key. - names := strings.Fields(`base-pick collapse comment comments commit-pick copy - delete down edit expand find goto-line half-down half-up keys navigator-grow - navigator-hide navigator-position navigator-shrink next-comment next-file - next-hunk open-pr page-down page-up prev-comment prev-file prev-hunk quit - quit-discard refresh rendered scope-branch scope-commits scope-last-turn - scope-uncommitted search select send split tab-all-files tab-changes tab-pr up - wrap`) - keys := map[string][]string{} - for i, n := range names { - r := rune('A' + i) // a key for each action - if r >= 'U' { - r++ // U upgrades rexdiff - } - keys[n] = []string{string(r)} - } - all, err := json.Marshal(map[string]any{"keybindings": keys}) - if err != nil { - t.Fatal(err) - } - if _, err := parseConfig(string(all)); err != nil { - t.Errorf("parseConfig with every action: %v, want no error", err) - } - - // An unknown key is an error. - unknown := []struct{ text, key string }{ - {`{"layuot": "split"}`, `"layuot"`}, - {`{"keybindings": {"next-fiel": ["x"]}}`, `"keybindings.next-fiel"`}, - {`{"theme": "monokai"}`, `"theme"`}, - // Lua keys are case-sensitive. A key in another case is unknown and - // cannot skip the checks. - {`{"EDITOR": " "}`, `"EDITOR"`}, - {`{"keybindings": {"Send": ["x"]}}`, `"keybindings.Send"`}, - } - for _, c := range unknown { - if _, err := parseConfig(c.text); !errorHas(err, "config: unknown key "+c.key) { - t.Errorf("config %s: error %v, want unknown key %s", c.text, err, c.key) - } - } - - // Each bad value is an error that names the key, the allowed values, - // and the value. - const ( - editor = "editor: expected a command with only {file} and {line}" - opener = "url_opener: expected a command with only {url}" - scopes = "default_scope: expected one of uncommitted, branch, last-turn" - mdView = "markdown_view: expected one of source, rendered" - host = "gitlab_host: expected a bare hostname" - keyList = "keybindings.send: expected a list of keys" - ) - bad := []struct{ text, want string }{ - {`{"layout": "sideways"}`, `layout: expected one of unified, split, not "sideways"`}, - {`{"default_scope": "commits"}`, scopes + `, not "commits"`}, - {`{"markdown_view": "preview"}`, mdView + `, not "preview"`}, - {`{"file_list": "middle"}`, `file_list: expected one of right, bottom, left, top, not "middle"`}, - {`{"file_list_width": 3}`, `file_list_width: expected 16 or more, not "3"`}, - {`{"editor": " "}`, editor + `, not " "`}, - {`{"editor": "code {fil"}`, editor + `, not "code {fil"`}, - {`{"editor": "code {FILE}"}`, `editor: expected`}, - {`{"url_opener": "open {ur}"}`, opener + `, not "open {ur}"`}, - {`{"review_prefix": ""}`, `review_prefix: expected text, not ""`}, - {`{"gitlab_host": "https://git.x"}`, host + `, not "https://git.x"`}, - {`{"keybindings": {"send": []}}`, keyList}, - // Lua encodes an empty table as an object. - {`{"keybindings": {"send": {}}}`, keyList + `, not a table`}, - {`{"keybindings": {"send": [1]}}`, `keybindings.send.0: expected text, not a number`}, - {`{"layout": 1}`, `layout: expected text, not a number`}, - {`{"file_list_width": 40.5}`, `file_list_width: expected a whole number, not a number`}, - {`{"file_list_width": "wide"}`, `file_list_width: expected a whole number, not text`}, - {`{"focus_agent_after_send": "yes"}`, `expected true or false, not text`}, - {`["layout"]`, `config: expected a table of settings`}, - {`{"layout": `, `config: `}, - {`{"layout": "split", "layout": "unified"}`, `duplicate`}, - } - for _, c := range bad { - if _, err := parseConfig(c.text); !errorHas(err, c.want) { - t.Errorf("config %s: error %v, want %s", c.text, err, c.want) - } - } - - good := `{ - "editor": "code -g {file}:{line}", - "gitlab_host": "git.corp.example", - "focus_agent_after_send": false, - "file_list": "left", - "diff_signs": true - }` - c, err := parseConfig(good) - if err != nil { - t.Fatalf("parseConfig(good) = %v, want no error", err) - } - if c.focusAgent() || c.FileList != positionLeft || c.Layout != LayoutUnified || !c.DiffSigns { - t.Errorf("good config = %+v, want no focus, the list on the left, "+ - "the default layout, and signs", c) - } - if c, err := parseConfig(""); err != nil || c.Layout != defaultConfig().Layout { - t.Errorf(`parseConfig("") = %+v, %v; want the defaults`, c, err) - } -} - -// TestDiffSigns checks that a bar marks a changed line by default, and that -// the setting diff_signs changes the bar to + and -. -func TestDiffSigns(t *testing.T) { - t.Parallel() - line := func(m model, code string) string { - for l := range strings.Lines(view(m)) { - if strings.Contains(l, code) { - return l - } - } - return "" - } - m, _ := newTestModel(t) - if l := line(m, "x := 2"); !strings.Contains(l, "▌ x := 2") { - t.Errorf("by default, the inserted line is %q, want a bar", l) - } - cfg, err := parseConfig(`{"diff_signs": true}`) - if err != nil { - t.Fatal(err) - } - m.cfg = cfg - m.rerender() - if l := line(m, "x := 2"); !strings.Contains(l, "+ x := 2") { - t.Errorf("with diff_signs, the inserted line is %q, want +", l) - } - if l := line(m, "return 1"); !strings.Contains(l, "- return 1") { - t.Errorf("with diff_signs, the deleted line is %q, want -", l) - } -} - -// TestConfigFlags checks that the flags override the settings, and that -// the settings set the keys and the file list. -func TestConfigFlags(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - cfg, err := parseConfig(`{ - "layout": "unified", - "default_scope": "branch", - "file_list": "left", - "file_list_width": 40, - "keybindings": {"split": ["X"]} - }`) - if err != nil { - t.Fatal(err) - } - o := Options{Repo: m.repo, Layout: LayoutSplit} - m = newModel(t.Context(), o, cfg) - if !m.split || m.scope != ScopeBranch || m.listPos != positionLeft || m.listW != 40 { - t.Errorf("split %v, scope %q, list %q, width %d; want true, branch, left, 40", - m.split, m.scope, m.listPos, m.listW) - } - o.Scope = ScopeLastTurn - if m := newModel(t.Context(), o, cfg); m.scope != ScopeLastTurn { - t.Errorf("scope %q; want the flag, last-turn", m.scope) - } - m.reload() - // The pane is wide enough for split. - m = step(t, m, tea.WindowSizeMsg{Width: 200, Height: 40}) - m = press(t, m, "X") - if m.split { - t.Errorf("after the key X of the configuration: split %v, want false", - m.split) - } -} - -// TestNotice checks that the footer shows all of a long notice on its own -// lines. -func TestNotice(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - // The path makes the first line end in "--" at column 82, past the - // edge, if the wrap breaks at the hyphen. - notice := `cannot upgrade rexdiff.lua: /Users/rednafi/.config/rex/rexdiff.lua has no line ` + - `"-- rexdiff code below. Install and upgrades replace it. Do not edit this line.", ` + - strings.Repeat("the end word ", 20) + "LAST " + strings.Repeat("x", 100) - m = newModel(t.Context(), Options{Repo: m.repo, Notice: notice}, defaultConfig()) - m = step(t, m, tea.WindowSizeMsg{Width: 80, Height: 30}) - v := view(m) - // Each word of the notice is in the view, so a hyphen does not push - // "--" past the edge of the screen. - words := strings.Fields(v) - for _, w := range strings.Fields(notice)[:30] { - if !slices.Contains(words, w) { - t.Errorf("view got:\n%s\nwant %q of the notice", v, w) - } - } - if !strings.Contains(v, strings.Repeat("x", 80)) { - t.Errorf("view got:\n%s\nwant the start of a word wider than the screen", - v) - } - for line := range strings.SplitSeq(v, "\n") { - if ansi.StringWidth(line) > 80 { - t.Errorf("line %q is %d cells wide, want 80 or fewer", - line, ansi.StringWidth(line)) - } - } -} - -// TestPalette checks that inserted lines get their tint from the green of -// the terminal, as in pi's system theme. -func TestPalette(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - m = step(t, m, tea.BackgroundColorMsg{Color: color.Black}) - // The tint is black, mixed 16% toward pure green. - const tint = "48;2;0;40;0m" - if strings.Contains(m.View().Content, tint) { - t.Fatal("the view has the tint before the terminal reports its green, " + - "want no tint") - } - m = step(t, m, uv.UnknownOscEvent("\x1b]4;2;rgb:0000/ffff/0000\x1b\\")) - if !strings.Contains(m.View().Content, tint) { - t.Errorf("the view has no tint %q, want the green of the terminal", tint) - } -} - -// wrapModel returns a model that shows a change that makes line 4 of a.go -// too long for the screen. The screen is 80 columns wide. Wrap is off. -func wrapModel(t *testing.T) (m model, dir, long string) { - t.Helper() - m, dir = newTestModel(t) - long = "\treturn " + strings.Repeat("x + ", 40) + "1" - testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n"+long+"\n}\n") - m.reload() - m = step(t, m, tea.WindowSizeMsg{Width: 80, Height: 40}) - return m, dir, long -} - -// twoHunks commits 20 equal lines below line 4 of a.go. Then it changes -// line 4 and the line below the 20 lines, so the change has two hunks. -func twoHunks(t *testing.T, m model, dir, long string) model { - t.Helper() - same := strings.Repeat("\tx++\n", 20) - testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n"+same+"}\n") - testgit.Git(t, dir, "commit", "-qam", "same") - testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n"+long+"\n"+same+"\treturn 9\n}\n") - m.reload() - return m -} - -// TestWrap checks that the w key turns wrap on and off. -func TestWrap(t *testing.T) { - t.Parallel() - m, _, long := wrapModel(t) - cut := len(m.changes.lines) - - m = press(t, m, "w") - if !m.wrap || len(m.changes.lines) <= cut { - t.Fatalf("w: wrap %v, %d lines, want more than %d", - m.wrap, len(m.changes.lines), cut) - } - if v := view(m); !strings.Contains(v, "+ 1") { - t.Errorf("view got:\n%s\nwant the end of the long line", v) - } - // The cursor moves by source lines. - m = press(t, m, "]") - for range len(m.changes.lines) { - if m.changes.cont(m.changes.cur) { - t.Fatalf("the cursor is on continued row %d, want a source line", - m.changes.cur) - } - m = press(t, m, "j") - } - - // A comment on wrapped lines gets the same snippet. - m = press(t, toTop(m), "]", "v", "j", "c", "o", "k", "enter") - cs := m.comments.All() - want := "\n-\treturn 1\n+" + long + "\nok" - if r := m.comments.Review(""); len(cs) != 1 || !strings.HasSuffix(r, want) { - t.Fatalf("Review:\n%s\nwant one comment that ends with:%s", r, want) - } - // The comment shows below the last row of the wrapped line. - lines := strings.Split(view(m), "\n") - i := slices.IndexFunc(lines, func(l string) bool { - return strings.Contains(l, "💬 ok") - }) - if i < 1 || !strings.Contains(lines[i-1], "+ 1") { - t.Errorf("view got:\n%s\nwant the comment below the end of the line", - view(m)) - } - - // The sideways scroll applies only without wrap. - if m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}); m.changes.xoff != 0 { - t.Errorf("→ with wrap: xoff %d, want 0", m.changes.xoff) - } - if m = press(t, m, "w"); m.wrap || len(m.changes.lines) != cut { - t.Errorf("w again: wrap %v, %d lines, want %d", m.wrap, len(m.changes.lines), cut) - } - // A w in the Files tab applies to the Changes tab too. - if m = press(t, m, "2", "w", "w", "1"); len(m.changes.lines) != cut { - t.Errorf("w in the Files tab: the Changes tab has %d lines, want %d", - len(m.changes.lines), cut) - } -} - -// TestWrapKeepsCursor checks that w keeps the cursor on its source line or -// on its hunk header. -func TestWrapKeepsCursor(t *testing.T) { - t.Parallel() - m, dir, long := wrapModel(t) - m.changes.cur = len(m.changes.rows) - 1 - m = press(t, m, "w") - if got := m.target(m.changes.cur, diff.SideNew).line; got != 5 { - t.Errorf("after w: the cursor is on line %d, want 5", got) - } - - m = twoHunks(t, m, dir, long) - m.changes.cur = hunks(m)[1] - if m = press(t, m, "w"); m.changes.cur != hunks(m)[1] { - t.Errorf("after w: the cursor is on row %+v, want the second hunk header", - m.changes.rows[m.changes.cur]) - } -} - -// hunks returns the rows of the hunk headers in the Changes tab. -func hunks(m model) []int { - var rs []int - for i, r := range m.changes.rows { - if r.Kind == diff.KindHunk { - rs = append(rs, i) - } - } - return rs -} - -// TestTallLine checks a wrapped line that is taller than the screen. -func TestTallLine(t *testing.T) { - t.Parallel() - m, dir, long := wrapModel(t) - m = press(t, m, "w") - m = twoHunks(t, m, dir, long) - m = step(t, m, tea.WindowSizeMsg{Width: 30, Height: 12}) - - // The wheel scrolls past the line. - m = toTop(m) - wheel := []tea.MouseButton{tea.MouseWheelDown, tea.MouseWheelDown, tea.MouseWheelUp} - for _, b := range wheel { - top := m.changes.top - m = step(t, m, tea.MouseWheelMsg{Button: b, X: 1, Y: 5}) - m = step(t, m, tea.BlurMsg{}) // a later event keeps the view - if m.changes.top == top { - t.Fatalf("the wheel stops at row %d of %d, want a scroll", - top, len(m.changes.lines)) - } - } - // A taller screen shows more rows, not blank space below the view. - m = step(t, m, tea.WindowSizeMsg{Width: 30, Height: 40}) - if last := max(len(m.changes.lines)-m.mainHeight(), 0); m.changes.top > last { - t.Errorf("top %d of %d rows on a screen of %d rows, want %d or less", - m.changes.top, len(m.changes.lines), m.mainHeight(), last) - } - if m = press(t, m, "j"); m.changes.top > m.changes.cur { - t.Errorf("after j: top %d, cursor %d; want the cursor on the screen", - m.changes.top, m.changes.cur) - } - - // A cursor on the line shows its first rows. The comment box shows below - // the last row. An e on a line with a comment edits the comment. - m = step(t, m, tea.WindowSizeMsg{Width: 30, Height: 12}) - m = toTop(m) - for m.changes.rows[m.changes.cur].New != 4 { - m = press(t, m, "j") - } - if v := view(m); !strings.Contains(v, "return x") { - t.Errorf("view got:\n%s\nwant the first rows of the line", v) - } - m = press(t, m, "c", "o", "k", "enter", "e", "z", "z") - lines := strings.Split(view(m), "\n") - has := func(s string) func(string) bool { - return func(l string) bool { return strings.Contains(l, s) } - } - i := slices.IndexFunc(lines, has("okzz")) - if i < 0 || !slices.ContainsFunc(lines[:i], has("+ 1")) { - t.Errorf("view got:\n%s\nwant the comment box below the end of the line", - view(m)) - } - if strings.Contains(view(m), "💬 ok") { - t.Errorf("view got:\n%s\nwant no comment above the box that edits it", - view(m)) - } -} - -// TestHostileText checks that the screen does not show raw escape sequences -// from a file name, a comment, an agent, or an error from Rex. -func TestHostileText(t *testing.T) { - t.Parallel() - // The diff tests check the review text. - const osc = "\x1b]0;owned\x07" // sets the title of the terminal - raw := func(where string, m model) { - t.Helper() - if strings.Contains(m.View().Content, osc) { - t.Errorf("%s: the screen has the raw escape sequence, want none", where) - } - } - m, dir := newTestModel(t) - testgit.WriteFile(t, dir, "e"+osc+"\n.go", "x"+osc+"\n") - m.reload() - raw("file list", m) - m = press(t, m, "f", "]", "c") - m = step(t, m, tea.PasteMsg{Content: "hi" + osc + "\x1b[201~\r"}) - m = press(t, m, "enter") - raw("comment", m) - if cs := m.comments.All(); len(cs) != 1 || !strings.HasPrefix(cs[0].Path, "e\x1b") { - t.Fatalf("comments %+v, want one on the file with the escape sequence", cs) - } - - m = step(t, m, sentMsg{agent: rex.Agent{Name: "pi" + osc}}) - raw("the status after a send", m) - m = step(t, m, sentMsg{err: errors.New("Rex" + osc)}) - raw("the status after an error", m) - m = step(t, m, sample("b", "pi"+osc, dir)) - m = step(t, m, status("b", "pi"+osc, rex.StateWorking)) - testgit.WriteFile(t, dir, "turn.go", "x\n") - m = step(t, m, status("b", "pi"+osc, rex.StateIdle)) - m = press(t, m, "t") - if m.turn == nil { - t.Fatal("no turn after the agent writes a file") - } - raw("the turn in the header", m) -} - -// TestMouseOffScreen checks that mouse events outside the screen do not -// panic, also while an overlay is open and the screen changes size. -func TestMouseOffScreen(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - for _, keys := range [][]string{{}, {"G"}, {"/"}, {"2"}, {"3"}} { - m = press(t, m, keys...) - points := []struct{ x, y int }{ - {-1, -1}, {-50, 3}, {3, -50}, {1 << 30, 1 << 30}, {m.w, m.h}, - } - for _, pt := range points { - mouse := tea.Mouse{X: pt.x, Y: pt.y, Button: tea.MouseLeft} - m = step(t, m, tea.MouseClickMsg(mouse)) - m = step(t, m, tea.MouseMotionMsg(mouse)) - m = step(t, m, tea.MouseReleaseMsg(mouse)) - mouse.Button = tea.MouseWheelDown - m = step(t, m, tea.MouseWheelMsg(mouse)) - } - m = step(t, m, tea.WindowSizeMsg{Width: 5, Height: 3}) - m = press(t, m, "w", "w", "w") - m = step(t, m, tea.WindowSizeMsg{Width: 120, Height: 40}) - view(m) - m = press(t, m, "esc", "1") - } -} - -// TestEmptyRepo checks that keys do not panic in a repository with no -// commits and no files, with key bindings that conflict. -func TestEmptyRepo(t *testing.T) { - t.Parallel() - dir := t.TempDir() - testgit.NewRepo(t, dir) - repo, err := vcs.Open(t.Context(), dir) - if err != nil { - t.Fatal(err) - } - cfg := defaultConfig() - cfg.Keybindings = keybindings{ - Down: []string{}, - Comment: []string{"j", "c"}, - Send: []string{"x"}, - Copy: []string{"x"}, - } - m := newModel(t.Context(), Options{Repo: repo}, cfg) - m.reload() - keys := []string{ - "j", "k", "v", "c", "x", "enter", "f", "]", "n", "|", "m", "t", "b", "g", "G", - "enter", "B", "enter", "/", "a", "enter", ":", "9", "enter", "l", "esc", "e", "d", - "y", "s", "o", "r", "z", "<", "home", "end", "w", "esc", - } - for _, tab := range []string{"1", "2", "3"} { - m = press(t, m, tab) - for _, k := range keys { - m = press(t, m, k) - view(m) - } - } -} - -// TestFooterHints checks that the footer shows the keys of the select mode, -// and the find band. -func TestFooterHints(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - if m = press(t, m, "]", "v"); !strings.Contains(view(m), "extend") { - t.Errorf("select mode: view got:\n%s\nwant the hint extend", view(m)) - } - m = press(t, m, "esc") - m = step(t, m, tea.KeyPressMsg{Code: 'f', Mod: tea.ModCtrl}) - if !strings.HasPrefix(lastLine(m), "find Find in file…") { - t.Errorf("find band: footer %q, want the empty band", lastLine(m)) - } - m = press(t, m, "r", "e", "t", "u", "r", "n", "enter") - if l := lastLine(m); !strings.HasPrefix(l, "find return") || !strings.HasSuffix(l, "2/2") { - t.Errorf("find band: footer %q, want the query and 2/2", l) - } -} diff --git a/tui/turn_test.go b/tui/turn_test.go deleted file mode 100644 index aba50ac..0000000 --- a/tui/turn_test.go +++ /dev/null @@ -1,272 +0,0 @@ -package tui - -import ( - "errors" - "io/fs" - "os" - "slices" - "strings" - "testing" - "time" - - tea "charm.land/bubbletea/v2" - - "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rednafi/rexdiff/rex" -) - -// turnModel returns a test model in the last-turn scope, after the first -// list of the agents with pi at rest in the repository. -func turnModel(t *testing.T) (model, string) { - t.Helper() - m, dir := newTestModel(t) - m = press(t, m, "t") - return step(t, m, sample("p", "pi", dir)), dir -} - -// TestTurnNeedsSample checks that a state before the first list of the -// agents starts no turn. The start of that turn is not seen. -func TestTurnNeedsSample(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - m.agents["p"] = &agentState{cwd: dir, hasCwd: true} - m = step(t, m, status("p", "pi", rex.StateIdle)) - m = step(t, m, status("p", "pi", rex.StateWorking)) - if m.pending != nil { - t.Errorf("pending %+v before the first list, want none", m.pending) - } - // The first list sees pi at work. That is no start. - working := sample("p", "pi", dir) - working.agents[0].Status.State = rex.StateWorking - m = step(t, m, working) - if m.pending != nil { - t.Errorf("pending %+v after a first list at work, want none", m.pending) - } -} - -// TestTurnReconnect checks that a reconnect of rex events forgets the -// agents and lists them again. A list at work after the gap starts no -// turn, because the start is not seen. -func TestTurnReconnect(t *testing.T) { - t.Parallel() - m, dir := turnModel(t) - next, cmd := m.Update(eventMsg{Reconnect: true}) - m = *next.(*model) - if cmd == nil || m.sampled || len(m.agents) != 0 { - t.Fatalf("after a reconnect: cmd %v, sampled %v, agents %d; want a list, no agents", - cmd != nil, m.sampled, len(m.agents)) - } - working := sample("p", "pi", dir) - working.agents[0].Status.State = rex.StateWorking - if m = step(t, m, working); m.pending != nil { - t.Errorf("pending %+v after a list at work after a gap, want none", m.pending) - } -} - -// TestTurnWithoutChange checks that a turn that changes no file does not -// become the last turn. -func TestTurnWithoutChange(t *testing.T) { - t.Parallel() - m, _ := turnModel(t) - m = step(t, m, status("p", "pi", rex.StateWorking)) - if m.pending == nil { - t.Fatal("no pending turn after the start") - } - m = step(t, m, status("p", "pi", rex.StateIdle)) - if m.turn != nil || m.pending != nil { - t.Errorf("turn %+v, pending %+v, want none", m.turn, m.pending) - } - if m.changes.note != "waiting for the first turn" { - t.Errorf("note %q, want \"waiting for the first turn\"", m.changes.note) - } -} - -// TestTurnKeepsOldBaseline checks that a turn with no change keeps the -// last turn that changes a file. -func TestTurnKeepsOldBaseline(t *testing.T) { - t.Parallel() - m, dir := turnModel(t) - m = step(t, m, status("p", "pi", rex.StateWorking)) - testgit.WriteFile(t, dir, "c.go", "package a\n") - m = step(t, m, status("p", "pi", rex.StateIdle)) - if m.turn == nil { - t.Fatal("no turn after a change") - } - first := m.turn.tree - m = step(t, m, status("p", "pi", rex.StateWorking)) - m = step(t, m, status("p", "pi", rex.StateIdle)) - if m.turn.tree != first { - t.Error("a turn with no change replaces the last turn") - } - if got := paths(m); !slices.Equal(got, []string{"c.go"}) { - t.Errorf("last turn shows %v, want [c.go]", got) - } -} - -// TestTurnPromotesOnChange checks that the first change in a turn makes -// it the last turn, before the turn ends. -func TestTurnPromotesOnChange(t *testing.T) { - t.Parallel() - m, dir := turnModel(t) - clk := setClock(&m) - m = step(t, m, status("p", "pi", rex.StateWorking)) - m = step(t, m, tickMsg{}) - if m.turn != nil { - t.Fatal("a tick with no change promotes the turn") - } - testgit.WriteFile(t, dir, "c.go", "package a\n") - clk.advance(pollEvery) // without a watcher, the poll sees the change - m = step(t, m, tickMsg{}) - if m.turn == nil || !m.turn.running || m.pending != nil { - t.Fatalf("turn %+v, pending %+v, want a running turn", m.turn, m.pending) - } - if m.repo.SavedTurn(t.Context()) != m.turn.tree { - t.Error("the promoted turn is not saved") - } - if got := paths(m); !slices.Equal(got, []string{"c.go"}) { - t.Errorf("last turn shows %v, want [c.go]", got) - } - if !shows(m, "pi working") { - t.Errorf("view got:\n%s\nwant the running turn in the header", view(m)) - } -} - -// TestTurnTwoAgents checks that a turn ends only when all the agents in -// the repository rest. -func TestTurnTwoAgents(t *testing.T) { - t.Parallel() - m, dir := turnModel(t) - m = step(t, m, agentsMsg{agents: []rex.Agent{ - {Block: "p", Cwd: dir, Status: rex.Status{App: "pi", State: rex.StateIdle}}, - {Block: "q", Cwd: dir, Status: rex.Status{App: "cc", State: rex.StateIdle}}, - }}) - m = step(t, m, status("p", "pi", rex.StateWorking)) - m = step(t, m, status("q", "cc", rex.StateWorking)) - testgit.WriteFile(t, dir, "c.go", "package a\n") - m = step(t, m, status("p", "pi", rex.StateIdle)) - if m.pending == nil || m.turn != nil { - t.Fatalf("turn %+v, pending %+v, want the turn still pending", m.turn, m.pending) - } - m = step(t, m, status("q", "cc", rex.StateBlocked)) - if m.pending == nil { - t.Fatal("a blocked agent ends the turn") - } - m = step(t, m, status("q", "cc", rex.StateDone)) - if m.turn == nil || m.turn.app != "pi" || m.turn.running { - t.Errorf("turn %+v, want the ended turn of pi", m.turn) - } -} - -// TestTurnOutsideAgent checks that an agent outside the repository starts -// no turn, and that the scope tells that no agent works here. -func TestTurnOutsideAgent(t *testing.T) { - t.Parallel() - m, dir := newTestModel(t) - m = press(t, m, "t") - m = step(t, m, sample("p", "pi", t.TempDir())) - if m.changes.note != "no agent works here" { - t.Errorf("note %q, want \"no agent works here\"", m.changes.note) - } - m = step(t, m, status("p", "pi", rex.StateWorking)) - testgit.WriteFile(t, dir, "c.go", "package a\n") - m = step(t, m, status("p", "pi", rex.StateIdle)) - if m.turn != nil || m.pending != nil { - t.Errorf("turn %+v, pending %+v, want none", m.turn, m.pending) - } - // A relative or unknown directory is not in the repository. - m = step(t, m, sample("p", "pi", ".")) - if m.changes.note != "no agent works here" { - t.Errorf("relative cwd: note %q, want \"no agent works here\"", m.changes.note) - } -} - -// TestTurnUnknownCwdHolds checks that an agent whose directory is not -// known holds the state, so it does not end a turn. -func TestTurnUnknownCwdHolds(t *testing.T) { - t.Parallel() - m, dir := turnModel(t) - m = step(t, m, status("p", "pi", rex.StateWorking)) - testgit.WriteFile(t, dir, "c.go", "package a\n") - // Outside Rex, the program cannot ask for the directory of block q. - m = step(t, m, status("q", "cc", rex.StateIdle)) - m = step(t, m, status("p", "pi", rex.StateIdle)) - if m.pending == nil || m.turn != nil { - t.Fatalf("turn %+v, pending %+v, want the turn still pending", m.turn, m.pending) - } - m = step(t, m, eventMsg{Block: "q", Closed: true}) - if m.turn == nil { - t.Error("the turn does not end after the unknown agent closes") - } -} - -// tickAgents runs the work of a tick of m and returns the agent lists -// that its commands give. The work has no timer, so each command returns -// at once. -func tickAgents(t *testing.T, m *model) []agentsMsg { - t.Helper() - var out []agentsMsg - var run func(tea.Cmd) - run = func(c tea.Cmd) { - if c == nil { - return - } - switch msg := c().(type) { - case tea.BatchMsg: - for _, c := range msg { - run(c) - } - case agentsMsg: - out = append(out, msg) - } - } - run(m.onTick()) - return out -} - -// TestSampleRetry checks that a failed first list of the agents is -// tried again after a wait that doubles, as in herdr-reviewr. Without -// the list, the turns do not start. -func TestSampleRetry(t *testing.T) { - m, dir := newTestModel(t) - clk := setClock(&m) - log := logRex(t, &m) // its output is no list - m = step(t, m, m.listAgents(agentsMsg{})()) - if m.sampled || m.sampleRetry.at.IsZero() || m.sampleRetry.wait != 2*time.Second { - t.Fatalf("after a failed list: sampled %v, at %v, wait %v; want a retry", - m.sampled, m.sampleRetry.at, m.sampleRetry.wait) - } - clk.advance(time.Second - time.Nanosecond) - if got := tickAgents(t, &m); len(got) != 0 || rexLists(t, log) != 1 { - t.Errorf("a tick before the wait: %d lists, %d rex lists; want 0, 1", - len(got), rexLists(t, log)) - } - clk.advance(time.Nanosecond) - got := tickAgents(t, &m) - if len(got) != 1 || got[0].err == nil || rexLists(t, log) != 2 { - t.Fatalf("a tick after the wait: %d lists, %d rex lists; want 1 that fails, 2", - len(got), rexLists(t, log)) - } - if m = step(t, m, got[0]); m.sampleRetry.wait != 4*time.Second { - t.Errorf("after a second failure: wait %v, want 4s", m.sampleRetry.wait) - } - m = step(t, m, sample("p", "pi", dir)) - clk.advance(2 * time.Second) - if got := tickAgents(t, &m); !m.sampled || len(got) != 0 || rexLists(t, log) != 2 { - t.Errorf("after a good list: sampled %v, %d lists, %d rex lists; want true, 0, 2", - m.sampled, len(got), rexLists(t, log)) - } -} - -// rexLists returns the number of the lists of the blocks in the log of -// logRex. -func rexLists(t *testing.T, log string) int { - t.Helper() - b, err := os.ReadFile(log) - if errors.Is(err, fs.ErrNotExist) { - return 0 - } - if err != nil { - t.Fatal(err) - } - return strings.Count(string(b), "session.list_blocks") -} diff --git a/tui/view.go b/tui/view.go index c5ca8db..4097184 100644 --- a/tui/view.go +++ b/tui/view.go @@ -161,7 +161,7 @@ func (m *model) turnLabel() string { if m.turn == nil || m.turn.at.IsZero() { return "" } - ago := m.now().Sub(m.turn.at).Round(time.Second) + ago := time.Since(m.turn.at).Round(time.Second) app := termtext.Quote(m.turn.app) // the app name comes from the agent if m.turn.running { return noteStyle.Render("● ") + app + dimStyle.Render(" working · "+ago.String()) diff --git a/tui/watch_test.go b/tui/watch_test.go deleted file mode 100644 index 43812d2..0000000 --- a/tui/watch_test.go +++ /dev/null @@ -1,181 +0,0 @@ -package tui - -import ( - "errors" - "io/fs" - "os" - "os/exec" - "path/filepath" - "strings" - "testing" - "time" - - tea "charm.land/bubbletea/v2" - "github.com/rednafi/rexdiff/internal/testgit" -) - -// watched returns a test model with a watcher, after its first tick. The -// clock of the test does not move, so each tick checks the watcher. -func watched(t *testing.T) (m model, dir string) { - t.Helper() - m, dir = newTestModel(t) - if err := m.startWatch(); err != nil { - t.Fatal(err) - } - return step(t, m, tickMsg{}), dir -} - -// TestTickRunsNoGitWhenIdle checks that a tick runs no git process while -// nothing changes. A git on PATH logs each call. -func TestTickRunsNoGitWhenIdle(t *testing.T) { - m, dir := watched(t) - gitPath, err := exec.LookPath("git") - if err != nil { - t.Fatal(err) - } - bin := t.TempDir() - log := filepath.Join(bin, "git.log") - testgit.Script(t, bin, "git", `echo "$*" >> '`+log+"'\nexec '"+gitPath+"' \"$@\"\n") - t.Setenv("PATH", bin+string(os.PathListSeparator)+os.Getenv("PATH")) - for range 3 { - m = step(t, m, tickMsg{}) - } - if b, err := os.ReadFile(log); !errors.Is(err, fs.ErrNotExist) { - t.Errorf("idle ticks run git:\n%s(%v)\nwant no call", b, err) - } - testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") - if m = step(t, m, tickMsg{}); !shows(m, "return 42") { - t.Errorf("view got:\n%s\nwant the edit", view(m)) - } - if _, err := os.Stat(log); err != nil { - t.Errorf("a tick after an edit runs no git through the log: %v", err) - } -} - -// TestTickSeesEdit checks that a tick shows an edit. -func TestTickSeesEdit(t *testing.T) { - t.Parallel() - m, dir := watched(t) - testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") - if m = step(t, m, tickMsg{}); !shows(m, "return 42") { - t.Errorf("view got:\n%s\nwant the edit", view(m)) - } -} - -// TestRefreshForces checks that r reloads in the pause after a reload. -func TestRefreshForces(t *testing.T) { - t.Parallel() - m, dir := watched(t) - m.reloadAt = m.now().Add(time.Hour) // the pause after a slow reload - testgit.WriteFile(t, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 42\n}\n") - if m = press(t, m, "r"); !shows(m, "return 42") { - t.Errorf("view got:\n%s\nwant the edit", view(m)) - } -} - -// TestTickRetries checks that a tick retries a failed reload after the -// wait, and that the wait then clears. -func TestTickRetries(t *testing.T) { - m, _ := watched(t) - clk := setClock(&m) - path := os.Getenv("PATH") - noGit(t) - if m = press(t, m, "r"); m.reloadRetry.at.IsZero() || !strings.HasPrefix(m.status, "refresh failed: ") { - t.Fatalf("after a failed reload: retry at %v, status %q; want a wait, a flash", - m.reloadRetry.at, m.status) - } - t.Setenv("PATH", path) - retryAt := m.reloadRetry.at - if m = step(t, m, tickMsg{}); m.reloadRetry.at != retryAt { - t.Errorf("a tick in the wait: retry at %v, want %v", m.reloadRetry.at, retryAt) - } - clk.advance(retryFirst) - m = step(t, m, tickMsg{}) - if !m.reloadRetry.at.IsZero() || m.reloadRetry.wait != 0 { - t.Errorf("after a good reload, retryAt %v, retryWait %v; want zero", m.reloadRetry.at, m.reloadRetry.wait) - } -} - -// TestRetryBackoff checks that each failure doubles the wait, from 1 s to -// 60 s. -func TestRetryBackoff(t *testing.T) { - t.Parallel() - m, _ := newTestModel(t) - want := []int{1, 2, 4, 8, 16, 32, 60, 60} - for i, w := range want { - before := m.now() - m.retry(errors.New("fail")) - got := m.reloadRetry.at.Sub(before).Round(time.Second) - if got != time.Duration(w)*time.Second { - t.Errorf("failure %d: wait %v, want %ds", i+1, got, w) - } - } -} - -// watchedTree returns newTreeModel on the Files tab, with a watcher, after -// its first tick. -func watchedTree(t *testing.T) (m model, dir string) { - t.Helper() - m, dir = newTreeModel(t) - if err := m.startWatch(); err != nil { - t.Fatal(err) - } - m = press(t, m, "2") - return step(t, m, tickMsg{}), dir -} - -// openFile moves the cursor of the file list down to the file at path. -func openFile(t *testing.T, m model, path string) model { - t.Helper() - for range len(m.fileTree.rows) { - if shownPath(m) == path { - return m - } - m = press(t, m, "j") - } - if shownPath(m) != path { - t.Fatalf("shows %s, want %s", shownPath(m), path) - } - return m -} - -// TestFilesTabWaitsForWatcher checks that, with a watcher, a tick reads -// the open file of the Files tab only after the watcher reports a change. -func TestFilesTabWaitsForWatcher(t *testing.T) { - t.Parallel() - m, dir := watchedTree(t) - const path = "top.go" - m = openFile(t, m, path) - fi, err := os.Stat(filepath.Join(dir, path)) - if err != nil { - t.Fatal(err) - } - // An edit that keeps the size and the time is not a change for the - // watcher. - testgit.WriteFile(t, dir, path, "package a\n\nvar x = 2\n") - if err := os.Chtimes(filepath.Join(dir, path), fi.ModTime(), fi.ModTime()); err != nil { - t.Fatal(err) - } - if m = step(t, m, tickMsg{}); shows(m, "var x = 2") { - t.Errorf("no change for the watcher, view got:\n%s\nwant no read", view(m)) - } - testgit.WriteFile(t, dir, path, "package a\n\nvar x = 42\n") - if m = step(t, m, tickMsg{}); !shows(m, "var x = 42") { - t.Errorf("view got:\n%s\nwant the edit", view(m)) - } -} - -// TestTickSeesIgnoredEdit checks that a tick shows an edit of the open -// file in an expanded ignored directory, as in herdr-reviewr. -func TestTickSeesIgnoredEdit(t *testing.T) { - t.Parallel() - m, dir := watchedTree(t) - m.fileTree.cur = 0 - m = step(t, m, tea.KeyPressMsg{Code: tea.KeyRight}) // expand out - m = openFile(t, m, "out/x.txt") - m = step(t, m, tickMsg{}) // the watcher gets the open file - testgit.WriteFile(t, dir, "out/x.txt", "an edit\n") - if m = step(t, m, tickMsg{}); !shows(m, "an edit") { - t.Errorf("view got:\n%s\nwant the edit", view(m)) - } -} diff --git a/vcs/export_test.go b/vcs/export_test.go new file mode 100644 index 0000000..9f10dc0 --- /dev/null +++ b/vcs/export_test.go @@ -0,0 +1,7 @@ +package vcs + +import "time" + +// SetClock sets the clock of w. The pause between two checks follows it. +// A clock that does not move turns off the pause. +func (w *Watcher) SetClock(now func() time.Time) { w.now = now } diff --git a/vcs/watch.go b/vcs/watch.go index 77d2dd2..6250cb0 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -26,7 +26,7 @@ const budgetFactor = 20 type Watcher struct { r *Repo gitDir, common string // absolute paths - now func() time.Time // the clock, see SetClock + now func() time.Time // the clock, time.Now next time.Time // no check before this time started bool @@ -60,10 +60,6 @@ func (r *Repo) Watch(ctx context.Context) (*Watcher, error) { return &Watcher{r: r, gitDir: gitDir, common: common, now: time.Now}, nil } -// SetClock sets the clock of w. The pause between two checks follows it. -// A clock that does not move turns off the pause. -func (w *Watcher) SetClock(now func() time.Time) { w.now = now } - // Show sets the paths that show and that git does not list: the ignored // directories that the user expands, and the open file, which can be // ignored or a link. paths are relative to the root. Changed also reports From efc634982c84f43a6e420eeb0d247c3ae763e9df Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 21:21:30 +0100 Subject: [PATCH 052/119] fix(tui): copy to the clipboard in order A double and a triple click each started a copy in the background, so the word could land on the clipboard after the line. A copy now runs before the next frame, as in herdr-reviewr. --- tui/model.go | 7 ------- tui/mouse.go | 15 ++++++++------- tui/nav.go | 3 ++- tui/overlay.go | 4 ++-- tui/send.go | 39 +++++++++++++-------------------------- 5 files changed, 25 insertions(+), 43 deletions(-) diff --git a/tui/model.go b/tui/model.go index d0a1c85..61fbcce 100644 --- a/tui/model.go +++ b/tui/model.go @@ -366,11 +366,6 @@ type ( ids []int // the IDs of the sent comments err error } - copiedMsg struct { - ids []int // the comments to remove, or nil - done string // the status if the copy works - err error - } grepMsg struct { query string hits []vcs.Match @@ -626,8 +621,6 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { cmd = m.onAgents(msg) case sentMsg: m.onSent(msg) - case copiedMsg: - m.onCopied(msg) case eventMsg: cmd = m.onEvent(rex.Event(msg)) case prMsg: diff --git a/tui/mouse.go b/tui/mouse.go index 076782e..b83213c 100644 --- a/tui/mouse.go +++ b/tui/mouse.go @@ -48,7 +48,8 @@ func (m *model) onClick(mouse tea.Mouse) tea.Cmd { r := m.listStart(m.listRows()) + y - 1 if m.countClick(mouse) >= 2 { if path := m.rowPath(r); path != "" { - return m.copyChars(path) + m.copyChars(path) + return nil } } m.clickRow(r) @@ -75,7 +76,8 @@ func (m *model) clickMain(mouse tea.Mouse) tea.Cmd { x := mouse.X - m.mainX() - gutter if n := m.countClick(mouse); n >= 2 { if text := m.clickText(rowAt[y], x, n); text != "" { - return m.copyChars(text) + m.copyChars(text) + return nil } } m.focusList = false @@ -223,11 +225,10 @@ func (m *model) textAt(i, x int) (line string, char int, ok bool) { // copyChars copies text and then shows the count of its characters, as // herdr-reviewr does. -func (m *model) copyChars(text string) tea.Cmd { - if text == "" { - return nil +func (m *model) copyChars(text string) { + if text != "" { + m.copyText(text, "copied "+plural(utf8.RuneCountInString(text), "char"), nil) } - return m.copyText(text, "copied "+plural(utf8.RuneCountInString(text), "char"), nil) } // onRelease ends a drag. A drag on the line numbers opens the comment @@ -248,7 +249,7 @@ func (m *model) onRelease() tea.Cmd { return m.startComment(d.pref) case d.moved: // a drag on the code copies the range lo, hi := p.span(d.start, p.cur) - return m.copyChars(strings.Join(m.sourceLines(lo, hi, d.pref), "\n")) + m.copyChars(strings.Join(m.sourceLines(lo, hi, d.pref), "\n")) } return nil } diff --git a/tui/nav.go b/tui/nav.go index 78be85f..45361be 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -204,7 +204,8 @@ func (m *model) commentKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { case key.Matches(msg, k.Send): return m.startSend(), true case key.Matches(msg, k.Copy): - return m.copyComments(), true + m.copyComments() + return nil, true default: return nil, false } diff --git a/tui/overlay.go b/tui/overlay.go index 5df3fb9..1aac747 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -584,7 +584,7 @@ func (m *model) updateQuit(msg tea.KeyPressMsg) tea.Cmd { case key.Matches(msg, k.Send): return m.startSend() case key.Matches(msg, k.Copy): - return m.copyComments() + m.copyComments() } return nil } @@ -606,7 +606,7 @@ func (m *model) updateCommentList(msg tea.KeyPressMsg) tea.Cmd { case key.Matches(msg, k.Send): return m.startSend() case key.Matches(msg, k.Copy): - return m.copyComments() + m.copyComments() case key.Matches(msg, k.Edit) && it != nil: // As in herdr-reviewr, a comment on another diff takes no edit. c := m.comments.Find(it.comment) diff --git a/tui/send.go b/tui/send.go index 82a90c3..a782ac5 100644 --- a/tui/send.go +++ b/tui/send.go @@ -359,45 +359,32 @@ func (m *model) startSend() tea.Cmd { // copyComments copies the review to the clipboard. A good copy clears // the comments, as a send does. -func (m *model) copyComments() tea.Cmd { +func (m *model) copyComments() { if m.comments.Len() == 0 { m.flash("no comments yet") - return nil + return } var ids []int for _, c := range m.comments.All() { ids = append(ids, c.ID) } - m.sends++ - return m.copyText(m.reviewText(), "copied "+plural(len(ids), "comment"), ids) -} - -// copyText returns a command that writes text to the clipboard. If the -// copy works, onCopied removes the comments ids and shows done. -func (m *model) copyText(text, done string, ids []int) tea.Cmd { - ctx := m.ctx - return func() tea.Msg { - err := clipboard.Write(ctx, text) - return copiedMsg{ids: ids, done: done, err: err} - } + m.copyText(m.reviewText(), "copied "+plural(len(ids), "comment"), ids) } -// onCopied shows the result of a copy. A good copy of the comments -// removes them. The comments that the user adds or changes during the -// copy stay. -func (m *model) onCopied(msg copiedMsg) { - if msg.ids != nil { - m.sends-- - } +// copyText writes text to the clipboard. If the copy works, it removes +// the comments ids and shows done. As in herdr-reviewr, the copy runs +// before the next frame, so two copies keep their order. +func (m *model) copyText(text, done string, ids []int) { + err := clipboard.Write(m.ctx, text) switch { - case errors.Is(msg.err, clipboard.ErrNoTool): + case errors.Is(err, clipboard.ErrNoTool): m.flash("copy failed: install wl-clipboard, xclip, or xsel") - case msg.err != nil: - m.log.Warn("copy failed", "err", msg.err) + case err != nil: + m.log.Warn("copy failed", "err", err) m.flash("copy failed") default: - m.clearComments(msg.ids) - m.flash(msg.done) + m.clearComments(ids) + m.flash(done) } } From 9adf88b1f7ed9234c14fce93c1f4b1782ddf5236 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 21:21:30 +0100 Subject: [PATCH 053/119] test: serve the recorded output of a real rex from the fake rex The fake rex prints what rex 0.0.1792787366 prints, from testdata/rex, with the values of each test. A real rex gives the cwd as a path. --- rex/rex.go | 2 +- test/fake_test.go | 60 +++++++++++++++++++++++++------------------- test/rexdiff_test.go | 1 + 3 files changed, 36 insertions(+), 27 deletions(-) diff --git a/rex/rex.go b/rex/rex.go index c190df4..f31cf32 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -182,7 +182,7 @@ func (c *Client) Status(ctx context.Context, block string) (Status, error) { // Cwd returns the working directory of the program in block. func (c *Client) Cwd(ctx context.Context, block string) (string, error) { type process struct { - Cwd string `json:"cwd"` // a file:// URL + Cwd string `json:"cwd"` // a path, or a file:// URL } // The foreground process is the program that holds the terminal, for // example an agent that runs in a shell. The child is the shell. diff --git a/test/fake_test.go b/test/fake_test.go index ea911e6..e2210c5 100644 --- a/test/fake_test.go +++ b/test/fake_test.go @@ -56,9 +56,9 @@ func newRepo(t *testing.T) string { } // fakeRex is a rex for the session S. rexdiff runs in the block -// block:self. The agents run in repo. The fake logs each call, reads the -// blocks and the status of each agent from files, and "rex events" -// prints the lines that the test adds. +// block:self. The agents run in repo. The fake logs each call and prints +// the output of a real rex from testdata/rex, with the values of the test. +// "rex events" prints the lines that the test adds. type fakeRex struct { dir string blocks []string // the JSON of each block @@ -72,28 +72,44 @@ func newRex(t *testing.T, repo string) *fakeRex { printf '%s\n' "$*" >> "$d/calls" case "$*" in "api call -s S session.list_blocks {}") cat "$d/blocks" ;; -"session inspect S --json") - echo '{"windows":[{"window_id":"w1","label":"main"}]}' ;; +"session inspect S --json") cat "$d/session" ;; "block call -s S -b "*" program_status") cat "$d/status.$6" ;; -"block call -s S -b "*" process") - echo '{"foreground":{"cwd":"file://`+repo+`"}}' ;; -"block inspect "*) echo '{"block":{"block_id":"'"$3"'"}}' ;; +"block call -s S -b "*" process") cat "$d/process" ;; +"block inspect "*) cat "$d/inspect.$3" ;; "events -s S --json") touch "$d/events"; exec tail -n +1 -f "$d/events" ;; esac `) - r.blocks = []string{`{"block_id":"block:self","label":"rexdiff",` + - `"window_id":"w1","creator_name":"com.superlogical.terminal"}`} + r.write(t, "session", recorded(t, "session.json")) + r.write(t, "process", recorded(t, "process.json", "{{CWD}}", repo)) + r.addBlock(t, "block:self", "rexdiff") r.addAgent(t, "block:pi", "agent", "pi") return r } -// addAgent adds an idle agent app in block with the label. -func (r *fakeRex) addAgent(t *testing.T, block, label, app string) { +// recorded returns the file name of testdata/rex, with each pair of +// old and new values replaced. +func recorded(t *testing.T, name string, oldNew ...string) string { + t.Helper() + b, err := os.ReadFile(filepath.Join("testdata", "rex", name)) + if err != nil { + t.Fatal(err) + } + return strings.TrimSpace(strings.NewReplacer(oldNew...).Replace(string(b))) +} + +// addBlock adds a terminal block with the label. +func (r *fakeRex) addBlock(t *testing.T, block, label string) { t.Helper() - r.blocks = append(r.blocks, `{"block_id":"`+block+`","label":"`+label+ - `","window_id":"w1","creator_name":"com.superlogical.terminal"}`) + r.blocks = append(r.blocks, recorded(t, "block.json", "{{ID}}", block, "{{LABEL}}", label)) r.write(t, "blocks", `{"blocks":[`+strings.Join(r.blocks, ",")+`]}`) - r.write(t, "status."+block, status(app, "idle")) + r.write(t, "inspect."+label, recorded(t, "inspect.json", "{{ID}}", block, "{{LABEL}}", label)) +} + +// addAgent adds a block with the label, and an idle agent app in it. +func (r *fakeRex) addAgent(t *testing.T, block, label, app string) { + t.Helper() + r.addBlock(t, block, label) + r.write(t, "status."+block, recorded(t, "status.json", "{{STATE}}", "idle", "{{APP}}", app)) } // write writes content to the file name of the fake. @@ -104,11 +120,6 @@ func (r *fakeRex) write(t *testing.T, name, content string) { } } -// status returns the program status of app in state. -func status(app, state string) string { - return `{"records":[{"state":"` + state + `","app":"` + app + `"}]}` -} - // calls returns the calls of rex, one a line. func (r *fakeRex) calls(t *testing.T) string { t.Helper() @@ -123,16 +134,13 @@ func (r *fakeRex) calls(t *testing.T) string { // change. func (r *fakeRex) setState(t *testing.T, state string) { t.Helper() - r.write(t, "status.block:pi", status("pi", state)) - event := `{"type":"session_event","payload":{"session_id":"S",` + - `"event":{"type":"block_event","payload":{"block_id":"block:pi",` + - `"name":"program_status_changed","payload":{"id":"","record":` + - `{"state":"` + state + `","app":"pi"},"reason":"report"}}}}}` + values := []string{"{{ID}}", "block:pi", "{{STATE}}", state, "{{APP}}", "pi"} + r.write(t, "status.block:pi", recorded(t, "status.json", values...)) f, err := os.OpenFile(filepath.Join(r.dir, "events"), os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0o600) if err != nil { t.Fatal(err) } - if _, err := f.WriteString(event + "\n"); err != nil { + if _, err := f.WriteString(recorded(t, "event.json", values...) + "\n"); err != nil { t.Fatal(err) } if err := f.Close(); err != nil { diff --git a/test/rexdiff_test.go b/test/rexdiff_test.go index 947a3e8..c5f98ab 100644 --- a/test/rexdiff_test.go +++ b/test/rexdiff_test.go @@ -207,6 +207,7 @@ func (tm *term) click(text string, times int) { tm.t.Fatal(err) } } + time.Sleep(50 * time.Millisecond) // as a hand clicks } } From a754646fb782861cce4a1544a6bb5eec8f998af9 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 21:23:13 +0100 Subject: [PATCH 054/119] test: run rexdiff in a real Rex when REXDIFF_REX is set TestRealRex opens a session of its own, runs rexdiff in a pane beside a shell that says it is pi, and checks that a send pastes the review into the shell. It does not change the config of Rex. --- .golangci.yml | 1 + test/rex_test.go | 126 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 test/rex_test.go diff --git a/.golangci.yml b/.golangci.yml index 1be4496..d1aa276 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -62,6 +62,7 @@ linters: - G302 # file permissions on chmod - G304 # file path from a variable - G306 # file permissions on write + - G702 # subprocess with a variable, found by taint analysis - G703 # file path from a variable, found by taint analysis nolintlint: require-explanation: true diff --git a/test/rex_test.go b/test/rex_test.go new file mode 100644 index 0000000..3845098 --- /dev/null +++ b/test/rex_test.go @@ -0,0 +1,126 @@ +package test + +import ( + "encoding/json" + "os" + "os/exec" + "strconv" + "strings" + "testing" + "time" +) + +// realRex runs rex in the session of a test with a real Rex. +type realRex struct { + t *testing.T + bin string // the path of rex + session string +} + +// run runs rex with args and returns its output. It fails the test if rex +// fails. +func (r *realRex) run(args ...string) string { + r.t.Helper() + out, err := exec.CommandContext(r.t.Context(), r.bin, args...).Output() + if err != nil { + r.t.Fatalf("rex %s: %v", strings.Join(args, " "), err) + } + return string(out) +} + +// blocks returns the IDs of the blocks of the session, by label. +func (r *realRex) blocks() map[string]string { + r.t.Helper() + var reply struct { + Blocks []struct { + ID string `json:"block_id"` + Label string `json:"label"` + } `json:"blocks"` + } + out := r.run("api", "call", "-s", r.session, "session.list_blocks", "{}") + if err := json.Unmarshal([]byte(out), &reply); err != nil { + r.t.Fatal(err) + } + ids := map[string]string{} + for _, b := range reply.Blocks { + ids[b.Label] = b.ID + } + return ids +} + +// write types data into block. +func (r *realRex) write(block, data string) { + r.t.Helper() + args, err := json.Marshal(map[string]string{"data": data}) + if err != nil { + r.t.Fatal(err) + } + r.run("block", "call", "-s", r.session, "-b", block, "write", string(args)) +} + +// waitFor waits until the screen of block shows each of texts. +func (r *realRex) waitFor(block string, texts ...string) { + r.t.Helper() + deadline := time.Now().Add(15 * time.Second) + for { + s := r.run("capture", "-s", r.session, "-b", block) + ok := true + for _, text := range texts { + ok = ok && strings.Contains(s, text) + } + if ok { + return + } + if time.Now().After(deadline) { + r.t.Fatalf("block %s does not show %q. It shows:\n%s", block, texts, s) + } + time.Sleep(100 * time.Millisecond) + } +} + +// TestRealRex runs rexdiff in a pane of a real Rex, beside a shell that +// says it is the agent pi. It checks that rexdiff finds the agent, and +// that a send pastes the review into the shell. It runs only if +// REXDIFF_REX is the path of rex and Rex runs. It makes a session of its +// own, and does not change the config of Rex. +func TestRealRex(t *testing.T) { + bin := os.Getenv("REXDIFF_REX") + if bin == "" { + t.Skip("set REXDIFF_REX to the path of rex to run rexdiff in a real Rex") + } + repo := newRepo(t) + r := &realRex{t: t, bin: bin, session: "rexdiff-test-" + strconv.Itoa(os.Getpid())} + r.run("new", r.session, "--cwd", repo, "--", "sh") + t.Cleanup(func() { + _ = exec.Command(bin, "kill", r.session).Run() //nolint:noctx // t.Context is done + }) + shell := r.blocks()["shell"] + r.run("block", "rename", shell, "agent", "-s", r.session) + r.write(shell, `printf '\033]7501;state=idle:app=pi\007'`+"\n") + + r.run("split", "-s", r.session, "-b", shell, "--cwd", repo, "--shell=none", + "--", binary(t), "-config", `{"focus_agent_after_send": false}`, repo) + var pane string + for deadline := time.Now().Add(15 * time.Second); pane == ""; { + for label, id := range r.blocks() { + if label != "agent" { + pane = id + } + } + if time.Now().After(deadline) { + t.Fatal("rexdiff does not start in a pane") + } + } + r.waitFor(pane, "Changes (2)") + r.write(pane, "]") + r.write(pane, "c") + r.write(pane, "hi from rexdiff") + r.write(pane, "\r") + r.waitFor(pane, "💬 hi from rexdiff") + r.write(pane, "s") + r.waitFor(pane, "sent 1 comment to agent") + r.waitFor(shell, "a.go:4 (removed)", "hi from rexdiff") + if got := r.blocks(); got["rexdiff"] == "" { + t.Errorf("blocks %v, want the label rexdiff on the pane", got) + } +} From e94a930f6adea4f4ea15bf09a81799004b0d513d Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 21:38:46 +0100 Subject: [PATCH 055/119] test: add the recorded output of rex --- test/testdata/rex/README.md | 13 +++++++++++++ test/testdata/rex/block.json | 1 + test/testdata/rex/event.json | 1 + test/testdata/rex/inspect.json | 1 + test/testdata/rex/process.json | 1 + test/testdata/rex/session.json | 1 + test/testdata/rex/status.json | 1 + 7 files changed, 19 insertions(+) create mode 100644 test/testdata/rex/README.md create mode 100644 test/testdata/rex/block.json create mode 100644 test/testdata/rex/event.json create mode 100644 test/testdata/rex/inspect.json create mode 100644 test/testdata/rex/process.json create mode 100644 test/testdata/rex/session.json create mode 100644 test/testdata/rex/status.json diff --git a/test/testdata/rex/README.md b/test/testdata/rex/README.md new file mode 100644 index 0000000..43b8175 --- /dev/null +++ b/test/testdata/rex/README.md @@ -0,0 +1,13 @@ +These files are the output of a real rex (0.0.1792787366-g623b2d). The +fake rex of the tests prints them. Each {{NAME}} is a value that a test +fills in: a block ID, a label, a path, an app, or a state. + +- block.json: one block of `rex api call -s S session.list_blocks {}` +- session.json: `rex session inspect S --json`, without the layout +- process.json: `rex block call -s S -b ID process` +- status.json: `rex block call -s S -b ID program_status` +- event.json: a line of `rex events -s S --json` when the status changes +- inspect.json: `rex block inspect LABEL -s S --json`, without the API + +To record them again, run a shell in a new Rex session, report a status +with `printf '\033]7501;state=working:app=pi\007'`, and run the commands. diff --git a/test/testdata/rex/block.json b/test/testdata/rex/block.json new file mode 100644 index 0000000..a16a98c --- /dev/null +++ b/test/testdata/rex/block.json @@ -0,0 +1 @@ +{"block_id": "{{ID}}", "label": "{{LABEL}}", "creator_name": "com.superlogical.terminal", "flavor": "com.superlogical.terminal.shell", "host_id": "6615b6b5-455d-4643-821a-e3708549a8a9", "placement": "placed", "window_id": "window:w1", "owner": "client:01a174af-41e7-7c83-8334-3ff8f508a957"} diff --git a/test/testdata/rex/event.json b/test/testdata/rex/event.json new file mode 100644 index 0000000..99764ae --- /dev/null +++ b/test/testdata/rex/event.json @@ -0,0 +1 @@ +{"type": "session_event", "payload": {"session_id": "session:S", "event": {"type": "block_event", "payload": {"block_id": "{{ID}}", "creator_name": "com.superlogical.terminal", "name": "program_status_changed", "payload": {"id": "", "record": {"state": "{{STATE}}", "app": "{{APP}}", "effective_app": "{{APP}}", "updated_at": "2026-10-25T21:11:03.076057+01:00", "owner": {"pid": 61344, "name": "bash"}}, "reason": "report"}}}}} diff --git a/test/testdata/rex/inspect.json b/test/testdata/rex/inspect.json new file mode 100644 index 0000000..52d2828 --- /dev/null +++ b/test/testdata/rex/inspect.json @@ -0,0 +1 @@ +{"session_id": "session:S", "block": {"block_id": "{{ID}}", "label": "{{LABEL}}", "creator_name": "com.superlogical.terminal", "flavor": "com.superlogical.terminal.shell", "host_id": "6615b6b5-455d-4643-821a-e3708549a8a9", "placement": "placed", "window_id": "window:w1", "owner": "client:01a174af-41e7-7c83-8334-3ff8f508a957"}} diff --git a/test/testdata/rex/process.json b/test/testdata/rex/process.json new file mode 100644 index 0000000..1b680fa --- /dev/null +++ b/test/testdata/rex/process.json @@ -0,0 +1 @@ +{"last_exit": null, "child": {"pid": 61344, "user_id": 501, "user": "u", "name": "bash", "path": "/bin/bash", "invoked_path": "/bin/bash", "argv0": "sh", "cwd": "{{CWD}}"}, "foreground": {"pid": 61344, "user_id": 501, "user": "u", "name": "bash", "path": "/bin/bash", "invoked_path": "/bin/bash", "argv0": "sh", "cwd": "{{CWD}}"}, "home": "/Users/u"} diff --git a/test/testdata/rex/session.json b/test/testdata/rex/session.json new file mode 100644 index 0000000..c16fe7a --- /dev/null +++ b/test/testdata/rex/session.json @@ -0,0 +1 @@ +{"revision": 3, "session_id": "session:S", "label": "S", "windows": [{"window_id": "window:w1", "label": "main"}]} diff --git a/test/testdata/rex/status.json b/test/testdata/rex/status.json new file mode 100644 index 0000000..03da5ab --- /dev/null +++ b/test/testdata/rex/status.json @@ -0,0 +1 @@ +{"records": [{"state": "{{STATE}}", "app": "{{APP}}", "effective_app": "{{APP}}", "updated_at": "2026-10-25T21:11:03.076057+01:00", "owner": {"pid": 61344, "name": "bash"}}]} From 0f42c66076b11b591a98581b3ef5e3a435d3cabe Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 22:18:50 +0100 Subject: [PATCH 056/119] fix: a hung clipboard tool fails after 2 s and does not freeze the UI --- tui/send.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tui/send.go b/tui/send.go index a782ac5..1e550dc 100644 --- a/tui/send.go +++ b/tui/send.go @@ -1,6 +1,7 @@ package tui import ( + "context" "errors" "fmt" "maps" @@ -179,6 +180,7 @@ func (m *model) startTurn(ms []member) { return } i := slices.IndexFunc(ms, func(a member) bool { return a.state == rex.StateWorking }) + m.log.Debug("turn start", "block", ms[i].block, "tree", tree) m.pending = &turnState{ block: ms[i].block, app: ms[i].app, @@ -371,11 +373,17 @@ func (m *model) copyComments() { m.copyText(m.reviewText(), "copied "+plural(len(ids), "comment"), ids) } +// copyTimeout is the longest time of a copy. +const copyTimeout = 2 * time.Second + // copyText writes text to the clipboard. If the copy works, it removes // the comments ids and shows done. As in herdr-reviewr, the copy runs -// before the next frame, so two copies keep their order. +// before the next frame, so two copies keep their order. A clipboard tool +// that does not answer fails after copyTimeout. func (m *model) copyText(text, done string, ids []int) { - err := clipboard.Write(m.ctx, text) + ctx, cancel := context.WithTimeout(m.ctx, copyTimeout) + defer cancel() + err := clipboard.Write(ctx, text) switch { case errors.Is(err, clipboard.ErrNoTool): m.flash("copy failed: install wl-clipboard, xclip, or xsel") From bc109e0b9f327e7137c0414805350e8cb713c1b7 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 22:18:50 +0100 Subject: [PATCH 057/119] fix: a slow code search waits for its first line past the budget As in herdr-reviewr, the 80 ms budget cuts a search only when it has a line. A cold git grep took longer than 80 ms and showed no match. --- internal/search/search.go | 12 ++++++++---- tui/overlay.go | 6 ++---- vcs/hostile_test.go | 37 ++++++++++++++++++++++--------------- vcs/refs.go | 34 ++++++++++++++++++++++++++++------ vcs/repo_test.go | 12 ++++++------ 5 files changed, 66 insertions(+), 35 deletions(-) diff --git a/internal/search/search.go b/internal/search/search.go index a438024..59dd401 100644 --- a/internal/search/search.go +++ b/internal/search/search.go @@ -18,10 +18,14 @@ const ( CodeLimit = 200 ) -// CodeBudget is the time that a code search takes at most. After it, the -// search shows the lines that it finds, and a "+" tells that there can be -// others. -const CodeBudget = 80 * time.Millisecond +// CodeBudget is the time of a code search, as in herdr-reviewr. After it, +// the search shows the lines that it finds, and a "+" tells that there can +// be others. A search with no line yet goes on until its first line, or +// until CodeTimeout. +const ( + CodeBudget = 80 * time.Millisecond + CodeTimeout = 2 * time.Second +) // Files returns at most limit of paths that match q, the best match // first, and the number of all the matches. For an empty q, the paths in diff --git a/tui/overlay.go b/tui/overlay.go index 1aac747..14bf231 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -289,13 +289,11 @@ func (m *model) runSearch() tea.Cmd { return nil } ov.showSearch() - // As in herdr-reviewr, a code search has a time budget. Past it, the - // search shows the matches that it finds by then. - ctx, cancel := context.WithTimeout(m.ctx, search.CodeBudget) + ctx, cancel := context.WithTimeout(m.ctx, search.CodeTimeout) m.grepCancel = cancel repo := m.repo return func() tea.Msg { - hits, more, err := repo.Grep(ctx, q, search.CodeLimit) + hits, more, err := repo.Grep(ctx, q, search.CodeLimit, search.CodeBudget) return grepMsg{q, hits, more, err} } } diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index 17fd7dc..8244f98 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -100,7 +100,7 @@ func TestHostilePaths(t *testing.T) { t.Errorf("ReadFile(%q) = %q, %v; want %q", p, got, err, s) } q := strings.TrimSpace(s) - if ms, _, err := r.Grep(ctx, q, 10); err != nil || len(ms) != 1 || ms[0].Path != p { + if ms, _, err := r.Grep(ctx, q, 10, time.Minute); err != nil || len(ms) != 1 || ms[0].Path != p { t.Errorf("Grep(%q) = %+v, %v; want one match in %q", q, ms, err, p) } } @@ -281,7 +281,7 @@ func TestGrepIsLiteral(t *testing.T) { {"abc\na.c", nil}, // no line has a newline } for _, tt := range tests { - ms, _, err := r.Grep(ctx, tt.q, 10) + ms, _, err := r.Grep(ctx, tt.q, 10, time.Minute) if err != nil { t.Errorf("Grep(%q) = %v, want no error", tt.q, err) continue @@ -365,20 +365,27 @@ func TestPullRequestBadJSON(t *testing.T) { func TestGrepDeadline(t *testing.T) { r, _ := newRepo(t) bin := t.TempDir() - // The fake git prints one match and a cut record, then hangs. - testgit.Script(t, bin, "git", "printf 'a.go\\0001\\000hit\\nb.go\\00012'\nexec /bin/sleep 10\n") + // The fake git prints one match and a cut record, then hangs. With + // SLOW set, it first waits past the budget. + testgit.Script(t, bin, "git", `[ -n "$SLOW" ] && /bin/sleep 0.3 +printf 'a.go\0001\000hit\nb.go\00012' +exec /bin/sleep 10 +`) t.Setenv("PATH", bin) - - ctx, cancel := context.WithTimeout(t.Context(), 300*time.Millisecond) - defer cancel() - ms, more, err := r.Grep(ctx, "hit", 10) - if err != nil || !more || len(ms) != 1 || ms[0].Text != "hit" { - t.Errorf("Grep past the deadline = %+v, %v, %v; want the hit, more, no error", ms, more, err) + grep := func(timeout, budget time.Duration) ([]vcs.Match, bool, error) { + ctx, cancel := context.WithTimeout(t.Context(), timeout) + defer cancel() + return r.Grep(ctx, "hit", 10, budget) } - - ctx, cancel = context.WithTimeout(t.Context(), 0) - defer cancel() - if ms, more, err := r.Grep(ctx, "hit", 10); err != nil || !more || len(ms) != 0 { - t.Errorf("Grep after the deadline = %+v, %v, %v; want none, more, no error", ms, more, err) + if ms, more, err := grep(5*time.Second, 50*time.Millisecond); err != nil || !more || + len(ms) != 1 || ms[0].Text != "hit" { + t.Errorf("Grep past the budget = %+v, %v, %v; want the hit, more, no error", ms, more, err) + } + t.Setenv("SLOW", "1") + if ms, more, err := grep(5*time.Second, time.Millisecond); err != nil || !more || len(ms) != 1 { + t.Errorf("Grep with no line at the budget = %+v, %v, %v; want the first hit, more", ms, more, err) + } + if ms, more, err := grep(100*time.Millisecond, time.Millisecond); err != nil || !more || len(ms) != 0 { + t.Errorf("Grep past the deadline = %+v, %v, %v; want none, more, no error", ms, more, err) } } diff --git a/vcs/refs.go b/vcs/refs.go index 6db8d58..43a323d 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -13,6 +13,8 @@ import ( "slices" "strconv" "strings" + "sync/atomic" + "time" ) // Commit is a commit in the log. @@ -198,9 +200,10 @@ type Match struct { // Grep returns at most limit lines of the tracked and the untracked files // that contain the text q. The search ignores case and binary files. When // it finds limit lines, it stops git, and more tells if there are others. -// At the deadline of ctx, Grep stops git and returns the lines that it -// finds before it, with more set to true. -func (r *Repo) Grep(ctx context.Context, q string, limit int) (ms []Match, more bool, err error) { +// After the time budget, Grep stops git when it has a line, and returns +// the lines with more set to true. At the deadline of ctx, Grep stops git +// and returns the lines that it finds before it, with more set to true. +func (r *Repo) Grep(ctx context.Context, q string, limit int, budget time.Duration) (ms []Match, more bool, err error) { if strings.Contains(q, "\n") { // git reads each line of q as a pattern. A match is one line, so no // match can have the newline of q. @@ -227,7 +230,22 @@ func (r *Repo) Grep(ctx context.Context, q string, limit int) (ms []Match, more } return nil, false, fmt.Errorf("git grep: %w", err) } - ms, more = readMatches(bufio.NewReader(out), limit) + // Past the budget, Grep stops git if it has a line, or else at the + // next line. + var found, late, killed atomic.Bool + timer := time.AfterFunc(budget, func() { + late.Store(true) + if found.Load() { + killed.Store(true) + _ = cmd.Process.Kill() + } + }) + ms, more = readMatches(bufio.NewReader(out), limit, func() bool { + found.Store(true) + return late.Load() + }) + timer.Stop() + more = more || killed.Load() if more { _ = cmd.Process.Kill() } @@ -251,8 +269,9 @@ func pastDeadline(ctx context.Context) bool { // readMatches reads at most limit matches of "git grep -n -z". Each match // is "path NUL line NUL text LF". Only the text ends with a newline, -// because the path can have a newline. more tells if there is more output. -func readMatches(r *bufio.Reader, limit int) (ms []Match, more bool) { +// because the path can have a newline. After each match, a true stop ends +// the read. more tells if there is more output. +func readMatches(r *bufio.Reader, limit int, stop func() bool) (ms []Match, more bool) { for len(ms) < limit { path, err := r.ReadString(0) if err != nil { @@ -274,6 +293,9 @@ func readMatches(r *bufio.Reader, limit int) (ms []Match, more bool) { Line: n, Text: strings.TrimSpace(text), }) + if stop() { + return ms, true + } } _, err := r.Peek(1) return ms, err == nil diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 1bf6db6..adf32da 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -332,19 +332,19 @@ func TestWorktree(t *testing.T) { t.Errorf("IgnoredDir(no such dir) = %v, want none", es) } - ms, _, err := r.Grep(ctx, "TWO", 10) + ms, _, err := r.Grep(ctx, "TWO", 10, time.Minute) match := vcs.Match{Path: "a.txt", Line: 2, Text: "two"} if err != nil || len(ms) != 1 || ms[0] != match { t.Errorf("Grep(TWO) = %+v, %v, want [%+v], nil", ms, err, match) } // git quotes this name unless -z. testgit.WriteFile(t, dir, "a:é\n.txt", "x: two\n") - ms, _, err = r.Grep(ctx, "x: two", 10) + ms, _, err = r.Grep(ctx, "x: two", 10, time.Minute) match = vcs.Match{Path: "a:é\n.txt", Line: 1, Text: "x: two"} if err != nil || len(ms) != 1 || ms[0] != match { t.Errorf("Grep(x: two) = %+v, %v, want [%+v], nil", ms, err, match) } - if ms, _, err := r.Grep(ctx, "nothing has this", 10); err != nil || len(ms) != 0 { + if ms, _, err := r.Grep(ctx, "nothing has this", 10, time.Minute); err != nil || len(ms) != 0 { t.Errorf("Grep with no match = %+v, %v, want none, nil", ms, err) } @@ -643,13 +643,13 @@ func TestGrepLimit(t *testing.T) { {6000, 5000, false}, } for _, tt := range tests { - ms, more, err := r.Grep(ctx, "hit", tt.limit) + ms, more, err := r.Grep(ctx, "hit", tt.limit, time.Minute) if err != nil || len(ms) != tt.wantN || more != tt.wantMore { t.Errorf("Grep(hit, %d) = %d matches, more %t, %v; want %d, %t, nil", tt.limit, len(ms), more, err, tt.wantN, tt.wantMore) } } - if ms, _, _ := r.Grep(ctx, "hit", 2); ms[1] != (vcs.Match{Path: "many.txt", Line: 2, Text: "hit"}) { + if ms, _, _ := r.Grep(ctx, "hit", 2, time.Minute); ms[1] != (vcs.Match{Path: "many.txt", Line: 2, Text: "hit"}) { t.Errorf("Grep(hit, 2)[1] = %+v, want many.txt:2", ms[1]) } } @@ -661,7 +661,7 @@ func TestGrepCanceled(t *testing.T) { r, _ := newRepo(t) ctx, cancel := context.WithCancel(t.Context()) cancel() - if _, _, err := r.Grep(ctx, "one", 10); !errors.Is(err, context.Canceled) { + if _, _, err := r.Grep(ctx, "one", 10, time.Minute); !errors.Is(err, context.Canceled) { t.Errorf("Grep with a canceled context = %v, want %v", err, context.Canceled) } } From fe3cc06ed41316b4bfd7da8f05e64d2075f13beb Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 22:18:50 +0100 Subject: [PATCH 058/119] fix: draw nothing until the terminal tells its size The first frame used a guessed width of 120 columns. --- tui/model.go | 5 ++++- tui/view.go | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/tui/model.go b/tui/model.go index 61fbcce..8631a1a 100644 --- a/tui/model.go +++ b/tui/model.go @@ -187,7 +187,10 @@ type model struct { phase updatePhase restartState string // the file of the state for the restart, or "" + // The size of the terminal. Until the terminal tells it, w and h are + // a guess, and sized is false. w, h int + sized bool bg, fg color.Color red color.Color // the ANSI red of the terminal, or nil green color.Color // the ANSI green of the terminal, or nil @@ -599,7 +602,7 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { switch msg := msg.(type) { case tea.WindowSizeMsg: m.click = clickChain{} - m.w, m.h = msg.Width, msg.Height + m.w, m.h, m.sized = msg.Width, msg.Height, true m.rerender() case tea.FocusMsg: m.reloadIfChanged() diff --git a/tui/view.go b/tui/view.go index 4097184..033a988 100644 --- a/tui/view.go +++ b/tui/view.go @@ -587,6 +587,12 @@ func (m *model) heightAbove(footer string) int { // View renders the screen. func (m *model) View() tea.View { + if !m.sized { + // A frame of the guessed size shows wrong for a moment. + v := tea.NewView("") + v.AltScreen = true + return v + } hits := m.shownHits() footer := m.footer(hits) h := m.heightAbove(footer) From e449c31f6492c4963d818f58d06c35370d9705ab Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 22:18:50 +0100 Subject: [PATCH 059/119] test: run the black-box tests one at a time, and cut the scripts that repeat other tests --- test/changes_test.go | 167 +++++++++++--------- test/cli_test.go | 10 +- test/comment_test.go | 254 +++++++++++++++++-------------- test/fake_test.go | 25 ++- test/files_test.go | 84 +++++----- test/norace_test.go | 6 + test/race_test.go | 6 + test/rex_test.go | 38 +++-- test/rexdiff_test.go | 213 ++++++++++++++++++-------- test/testdata/script/cli.txt | 18 +-- test/testdata/script/install.txt | 49 +----- test/update_test.go | 42 ++--- test/upgrade_test.go | 1 - 13 files changed, 504 insertions(+), 409 deletions(-) create mode 100644 test/norace_test.go create mode 100644 test/race_test.go diff --git a/test/changes_test.go b/test/changes_test.go index f94bf63..640fb7d 100644 --- a/test/changes_test.go +++ b/test/changes_test.go @@ -1,16 +1,18 @@ package test import ( + "os" + "path/filepath" "strings" "testing" + "unicode/utf8" "github.com/rednafi/rexdiff/internal/testgit" ) // TestChanges checks the Changes tab: the file list with its counts, the -// diff of a file, the next file, and a fold that opens. +// diff of a file, the next and the previous file, and a fold that opens. func TestChanges(t *testing.T) { - t.Parallel() tm := start(t, newRepo(t), opts{}) tm.waitFor("Changes (2)", "M a.go", "+2 -1", "M long.txt", "+2 -2", "return 1", "x := 2", "not in Rex") @@ -23,9 +25,29 @@ func TestChanges(t *testing.T) { tm.waitFor("x := 2") } -// TestScopes checks that each scope shows its changes. +// TestMove checks the keys that move the cursor: the next and the +// previous change, a page, half a page, and : for a line. +func TestMove(t *testing.T) { + tm := start(t, newRepo(t), opts{height: 16}) + tm.keys("f", "j", "j", "j", "j", "j", "j", "right") // all of long.txt + tm.waitFor("line 10") + tm.keys("]", "]") + tm.waitCursor("line 40") + tm.keys("[") + tm.waitCursor("line 1") + for _, keys := range [][2]string{{"pgdown", "pgup"}, {"ctrl+d", "ctrl+u"}} { + tm.keys(keys[0], keys[0], keys[0]) + tm.waitGone(" first") + tm.keys(keys[1], keys[1], keys[1]) + tm.waitFor(" first") + } + tm.keys(":", "3", "3", "enter") + tm.waitCursor("line 33") +} + +// TestScopes checks that each scope shows its changes, and the pickers of +// the commits and the base. func TestScopes(t *testing.T) { - t.Parallel() tm := start(t, newRepo(t), opts{}) tm.keys("b") tm.waitFor("vs main", "Changes (3)", "A b.go") @@ -38,16 +60,38 @@ func TestScopes(t *testing.T) { tm.waitFor("commits · 1 over main", "add b") tm.keys("enter") tm.waitFor("Changes (1)", "A b.go", "var B = 2") - tm.keys("u", "B") + tm.keys("G") + tm.waitFor("commits · 1 over main") + tm.keys("esc", "u", "B") tm.waitFor("base branch for the branch scope") - tm.keys("f", "e", "a", "t", "enter") + tm.typed("feat") + tm.keys("enter") tm.waitFor("vs feat", "Changes (2)") } +// TestFlags checks that -scope, -base, and -layout set the start, and that +// -log writes a log. +func TestFlags(t *testing.T) { + log := filepath.Join(t.TempDir(), "log") + tm := start(t, newRepo(t), opts{width: 220, args: []string{ + "-scope", "branch", "-base", "main", "-layout", "split", "-log", log, + }}) + s := tm.waitFor("vs main", "Changes (3)") + if ls := lines(s, "return 1"); len(ls) != 1 || !strings.Contains(ls[0], "x := 2") { + t.Errorf("lines %q, want return 1 beside x := 2", ls) + } + tm.keys("q") + if err := tm.exited(); err != nil { + t.Fatal(err) + } + if b, err := os.ReadFile(log); err != nil || len(b) == 0 { + t.Errorf("the log has %d bytes (%v), want a log", len(b), err) + } +} + // TestSplit checks that | shows the old and the new lines side by side // on a wide screen, and tells why it does not on a narrow one. func TestSplit(t *testing.T) { - t.Parallel() tm := start(t, newRepo(t), opts{width: 220}) tm.keys("|") tm.waitUntil(func(s string) bool { @@ -67,7 +111,6 @@ func TestSplit(t *testing.T) { // TestWrap checks that rexdiff wraps a long line, that w cuts it, and // that → scrolls to its end. func TestWrap(t *testing.T) { - t.Parallel() repo := newRepo(t) long := "var long = \"" + strings.Repeat("ab", 60) + "end\"\n" testgit.WriteFile(t, repo, "b.go", "package a\n\n"+long) @@ -76,39 +119,34 @@ func TestWrap(t *testing.T) { tm.waitFor("end\"") tm.keys("w") tm.waitGone("end\"") - for i := 0; !strings.Contains(tm.screen(), "end\""); i++ { - if i == 30 { - t.Fatalf("→ does not scroll to the end. The screen shows:\n%s", tm.screen()) - } + eventually(t, func() bool { tm.keys("right") + return strings.Contains(tm.screen(), "end\"") + }, func() string { return "→ does not scroll to the end:\n" + tm.screen() }) +} + +// column returns the column of text in the first line of s that has it, +// or -1. +func column(s, text string) int { + for _, l := range lines(s, text) { + before, _, _ := strings.Cut(l, text) + return utf8.RuneCountInString(before) } + return -1 } -// TestFileList checks that p moves the file list, z hides it, and > and -// < change its width. +// TestFileList checks that < and > change the width of the file list, p +// moves it, z hides it, and tab shows it again. func TestFileList(t *testing.T) { - t.Parallel() tm := start(t, newRepo(t), opts{}) - col := func() int { - ls := lines(tm.screen(), "Changes (2)") - if len(ls) == 0 { - return -1 - } - return strings.Index(ls[0], "Changes (2)") - } - right := col() - tm.keys(">") - if c := col(); c <= right { - t.Errorf("after >, the list starts at column %d, want after %d", c, right) - } - tm.keys("<", "<") - if c := col(); c >= right { - t.Errorf("after <, the list starts at column %d, want before %d", c, right) - } + right := column(tm.waitFor("Changes (2)"), "Changes (2)") + tm.keys("<") + tm.waitUntil(func(s string) bool { return column(s, "Changes (2)") < right }, "widen the list") + tm.keys(">", ">") + tm.waitUntil(func(s string) bool { return column(s, "Changes (2)") > right }, "narrow the list") tm.keys("p") // bottom tm.waitUntil(func(s string) bool { - ls := strings.Split(s, "\n") - for i, l := range ls { + for i, l := range strings.Split(s, "\n") { if strings.Contains(l, "Changes (2)") { return i > 10 } @@ -117,13 +155,12 @@ func TestFileList(t *testing.T) { }, "show the list at the bottom") tm.keys("z") tm.waitGone("Changes (2)") - tm.keys("z") + tm.keys("tab") // the focus shows a hidden list tm.waitFor("Changes (2)") } // TestKeys checks that ? shows all the keys. func TestKeys(t *testing.T) { - t.Parallel() tm := start(t, newRepo(t), opts{}) tm.keys("?") tm.waitFor("search files & code", "pick commits", "move file list") @@ -131,65 +168,60 @@ func TestKeys(t *testing.T) { tm.waitGone("pick commits") } -// TestGotoLine checks that : moves the cursor to a line of the new file. -func TestGotoLine(t *testing.T) { - t.Parallel() - tm := start(t, newRepo(t), opts{}) - tm.keys("f", ":", "3", "3", "enter") - tm.waitUntil(func(s string) bool { - for _, l := range lines(s, "▶") { - if strings.Contains(l, "line 33") { - return true - } - } - return false - }, "put the cursor on line 33") -} - // TestFind checks that ctrl+f counts the lines with a text, and that // enter moves to a hit. func TestFind(t *testing.T) { - t.Parallel() tm := start(t, newRepo(t), opts{}) - tm.keys("f", "ctrl+f", "l", "i", "n", "e", " ", "3") + tm.keys("f", "ctrl+f") + tm.typed("line 3") tm.waitFor("find line 3", " 11") // line 3, and line 30 to line 39 tm.keys("enter") - tm.waitUntil(func(s string) bool { - for _, l := range lines(s, "▶") { - if strings.Contains(l, "line 3") { - return true - } - } - return false - }, "put the cursor on a hit") + tm.waitCursor("line 3") } // TestSettings checks that the settings change the layout, the marks of -// the changed lines, the place of the file list, and the keys. +// the changed lines, the place and the width of the file list, the +// scope, and the keys. func TestSettings(t *testing.T) { - t.Parallel() tm := start(t, newRepo(t), opts{width: 220, args: []string{ "-config", `{"layout": "split", "diff_signs": true, "file_list": "left",` + + ` "file_list_width": 50, "default_scope": "branch",` + ` "keybindings": {"next-file": ["x"]}}`, }}) - s := tm.waitFor("4 - return 1", "4 + x := 2", "x next/prev file") + s := tm.waitFor("vs main", "4 - return 1", "4 + x := 2", "x next/prev file") for _, l := range lines(s, "return 1") { if !strings.Contains(l, "x := 2") { t.Errorf("line %q, want the old and the new line side by side", l) } } - if ls := lines(s, "Changes (2)"); len(ls) == 0 || strings.Index(ls[0], "Changes (2)") > 5 { - t.Errorf("the list starts at %q, want it at the left", ls) + if c := column(s, "Changes (3)"); c < 0 || c > 5 { + t.Errorf("the list starts at column %d, want it at the left", c) + } + if ls := lines(s, "M a.go"); len(ls) == 0 || column(ls[0], "│") < 48 || column(ls[0], "│") > 52 { + t.Errorf("the list rows %q, want a width of 50", ls) } tm.keys("x") - tm.waitFor("first") + tm.waitFor("var B = 2") +} + +// TestReviewPrefix checks that review_prefix comes before the review. +func TestReviewPrefix(t *testing.T) { + bin := clipboard(t) + tm := start(t, newRepo(t), opts{path: bin, env: clipEnv, args: []string{ + "-config", + `{"review_prefix": "Please fix:"}`, + }}) + comment(tm, "hi") + tm.keys("y") + waitFile(t, filepath.Join(bin, "clip"), func(s string) bool { + return s == "Please fix:\n\n"+review + }) } // TestTinyScreen checks that rexdiff draws and takes keys in a small // terminal. func TestTinyScreen(t *testing.T) { - t.Parallel() tm := start(t, newRepo(t), opts{width: 40, height: 8}) tm.keys("f", "j", "2", "/", "esc", "?", "esc", "1") tm.waitFor("1 Changes") @@ -198,7 +230,6 @@ func TestTinyScreen(t *testing.T) { // TestHostileText checks that the escape codes in a file show as text, so // a file cannot change the terminal. func TestHostileText(t *testing.T) { - t.Parallel() repo := newRepo(t) testgit.WriteFile(t, repo, "evil.txt", "a\x1b[2Jb\x1b]0;title\x07c\n") tm := start(t, repo, opts{}) diff --git a/test/cli_test.go b/test/cli_test.go index e865841..c101022 100644 --- a/test/cli_test.go +++ b/test/cli_test.go @@ -23,7 +23,6 @@ echo 'config reloaded' // $WORK/rex.log, and fails if $REX_FAIL is set. If Rex is installed, // $REALREX is its rex, and the condition [realrex] is true. func TestScripts(t *testing.T) { - t.Parallel() bin := filepath.Dir(binary(t)) realRex := filepath.Join(os.Getenv("REX_BIN_DIR"), "rex") _, err := os.Stat(realRex) @@ -45,14 +44,11 @@ func TestScripts(t *testing.T) { env.Setenv("HOME", env.WorkDir) env.Setenv("XDG_CONFIG_HOME", "") env.Setenv("PATH", bin+string(os.PathListSeparator)+os.Getenv("PATH")) - env.Setenv("REX_BIN_DIR", fake) - env.Setenv("REALREX", realRex) - for _, k := range []string{ - "REX_CONFIG", "REX_SESSION", "REX_BLOCK", - "REX_AGENT_BLOCK", "REXDIFF_LOG", "REXDIFF_RESUME", - } { + for _, k := range userEnv { env.Setenv(k, "") } + env.Setenv("REX_BIN_DIR", fake) + env.Setenv("REALREX", realRex) for _, kv := range testgit.Env() { k, v, _ := strings.Cut(kv, "=") env.Setenv(k, v) diff --git a/test/comment_test.go b/test/comment_test.go index 909303b..59f32d3 100644 --- a/test/comment_test.go +++ b/test/comment_test.go @@ -1,53 +1,62 @@ package test import ( - "os" "path/filepath" "strings" "testing" - "time" "github.com/rednafi/rexdiff/internal/testgit" ) +// review is the text of the comment "hi" on the first change of a.go. +const review = "a.go:4 (removed)\n-\treturn 1\nhi" + // comment adds the comment text on the first changed line of a.go. func comment(tm *term, text string) { tm.t.Helper() tm.keys("]", "c") - tm.keys(strings.Split(text, "")...) + tm.typed(text) tm.keys("enter") tm.waitFor("💬 " + text) } // TestCommentList checks that a comment shows on its line and in the -// list, and that the list edits and deletes it. +// list, that n moves to it, and that the list edits and deletes it. func TestCommentList(t *testing.T) { - t.Parallel() tm := start(t, newRepo(t), opts{}) comment(tm, "hi") tm.waitFor("comment added", "●1") + tm.keys("k", "k", "n") // n stays in the file, as in herdr-reviewr + tm.waitCursor("return 1") tm.keys("l") tm.waitFor("Comments (1)", "a.go:4 (removed) hi") - tm.keys("e", " ", "m", "o", "r", "e", "enter") + tm.keys("e", " ") + tm.typed("more") + tm.keys("enter") tm.waitFor("a.go:4 (removed) hi more") tm.keys("d") // the list closes with its last comment tm.waitGone("Comments (", "💬") } -// TestRangeComment checks that v selects lines and c comments on all of -// them. -func TestRangeComment(t *testing.T) { - t.Parallel() +// TestCommentBox checks that the box takes more than one line, that esc +// drops a new comment, and that v and a drag on the line numbers comment +// on a range of lines. +func TestCommentBox(t *testing.T) { tm := start(t, newRepo(t), opts{}) - tm.keys("]", "v", "j", "j", "c", "r", "enter") - tm.keys("l") + tm.keys("]", "c", "a", "ctrl+j", "b", "enter") + tm.waitFor("💬 a", "b") + tm.keys("j", "c", "x", "esc") + tm.waitGone("💬 x") + tm.keys("v", "j", "c", "r", "enter", "l") tm.waitFor("a.go:4-5 r") + tm.keys("esc") + tm.drag(" 1 1 ", " 3 3 ") + tm.waitFor("✎ a.go:1-3") } // TestSend checks that s pastes the review into the agent and gives it -// the focus. +// the focus, and that S does the same. func TestSend(t *testing.T) { - t.Parallel() repo := newRepo(t) rex := newRex(t, repo) tm := start(t, repo, opts{rex: rex}) @@ -56,11 +65,15 @@ func TestSend(t *testing.T) { tm.keys("s") tm.waitFor("sent 1 comment to agent") tm.waitGone("💬") + comment(tm, "again") + tm.keys("S") + tm.waitFor("sent 1 comment to agent") calls := rex.calls(t) for _, want := range []string{ `block.event {"block_id":"block:pi","event":{"type":"paste",` + `"payload":{"text":"a.go:4 (removed)\n-\treturn 1\nhi"}}}`, `session.focus_block {"block_id":"block:pi"}`, + `"payload":{"text":"a.go:4 (removed)\n-\treturn 1\nagain"}`, } { if !strings.Contains(calls, want) { t.Errorf("rex calls:\n%s\nwant a call with %s", calls, want) @@ -68,26 +81,75 @@ func TestSend(t *testing.T) { } } -// TestCopy checks that y copies the review and clears the comments. -func TestCopy(t *testing.T) { - t.Parallel() - bin := tool(t, t.TempDir(), "pbcopy", `cat > "${0%/*}/clip"`+"\n") - tool(t, bin, "wl-copy", `cat > "${0%/*}/clip"`+"\n") - tm := start(t, newRepo(t), opts{path: bin, env: []string{"WAYLAND_DISPLAY=w"}}) +// TestSendWithoutAgent checks that s outside Rex tells the user to copy. +func TestSendWithoutAgent(t *testing.T) { + tm := start(t, newRepo(t), opts{}) comment(tm, "hi") - tm.keys("y") - tm.waitFor("copied 1 comment") - tm.waitGone("💬") - b, err := os.ReadFile(filepath.Join(bin, "clip")) - if want := "a.go:4 (removed)\n-\treturn 1\nhi"; err != nil || string(b) != want { - t.Errorf("the clipboard has %q (%v), want %q", b, err, want) + tm.keys("s") + tm.waitFor("not in Rex") + tm.waitFor("💬 hi") +} + +// TestAgentPicker checks that a send with two agents asks which one, and +// that a digit picks it. +func TestAgentPicker(t *testing.T) { + repo := newRepo(t) + rex := newRex(t, repo) + rex.addAgent(t, "block:cc", "cc", "claude-code") + tm := start(t, repo, opts{rex: rex}) + tm.waitFor("send → 2 agents") + comment(tm, "hi") + tm.keys("s") + tm.waitFor("send to which agent?", "1 agent", "2 cc") + tm.keys("2") + tm.waitFor("sent 1 comment to cc") + if calls := rex.calls(t); !strings.Contains(calls, `block.event {"block_id":"block:cc"`) { + t.Errorf("rex calls:\n%s\nwant a paste to block:cc", calls) } } +// TestCopy checks that y and Y copy the review and clear the comments. +func TestCopy(t *testing.T) { + for _, key := range []string{"y", "Y"} { + t.Run(key, func(t *testing.T) { + bin := clipboard(t) + tm := start(t, newRepo(t), opts{path: bin, env: clipEnv}) + comment(tm, "hi") + tm.keys(key) + tm.waitFor("copied 1 comment") + tm.waitGone("💬") + waitFile(t, filepath.Join(bin, "clip"), func(s string) bool { return s == review }) + }) + } +} + +// TestMouse checks that a click picks a file, a triple click copies a +// line, a drag on the code copies the lines, and the wheel scrolls. +func TestMouse(t *testing.T) { + bin := clipboard(t) + clip := filepath.Join(bin, "clip") + tm := start(t, newRepo(t), opts{path: bin, env: clipEnv, height: 12}) + tm.click("M long.txt", 1) + tm.waitFor("⋯ 32 unmodified lines") + tm.click("M a.go", 1) + tm.click("func A() int {", 3) + tm.waitFor("copied 14 chars") + waitFile(t, clip, func(s string) bool { return s == "func A() int {" }) + tm.drag("package a", "func A()") + waitFile(t, clip, func(s string) bool { return s == "package a\n\nfunc A() int {" }) + + tm.click("M long.txt", 1) + tm.keys(":", "2", "0", "enter") // opens the fold + x, y := tm.at("line 20") + for range 10 { + tm.mouse(65, x, y, "M") // the wheel down + } + tm.waitGone(" first") +} + // TestQuit checks that q quits at once with no comment, and that with a // comment it asks first. func TestQuit(t *testing.T) { - t.Parallel() tm := start(t, newRepo(t), opts{}) tm.keys("q") if err := tm.exited(); err != nil { @@ -96,125 +158,87 @@ func TestQuit(t *testing.T) { tm = start(t, newRepo(t), opts{}) comment(tm, "hi") - tm.keys("Q") - time.Sleep(200 * time.Millisecond) - tm.waitFor("💬 hi") // Q does nothing outside the prompt - tm.keys("q") + tm.keys("Q", "q") // Q does nothing outside the prompt tm.waitFor("1 unsent comment will be lost", "Q quit (1 pending) · esc cancel · s send 1 · y copy") tm.keys("esc") tm.waitGone("unsent comment") + tm.waitFor("💬 hi") tm.keys("q", "Q") if err := tm.exited(); err != nil { t.Errorf("q, Q exits with %v, want no error", err) } } +// TestCommentStays checks that a comment stays when the agent edits the +// file. As in herdr-reviewr, it keeps its line number. +func TestCommentStays(t *testing.T) { + repo := newRepo(t) + tm := start(t, repo, opts{}) + tm.keys("]", "j", "c", "h", "i", "enter") // on x := 2 + tm.waitFor("💬 hi") + testgit.WriteFile(t, repo, "a.go", + "package a\n\n// A adds.\n// It is new.\nfunc A() int {\n\tx := 2\n\treturn x\n}\n") + tm.waitFor("It is new.") + tm.keys("l") + tm.waitFor("a.go:4 hi") +} + // TestEditorInPane checks that e opens a terminal editor at the line, in // a new Rex pane. func TestEditorInPane(t *testing.T) { - t.Parallel() repo := newRepo(t) rex := newRex(t, repo) - bin := tool(t, t.TempDir(), "nvim", "") + bin := tools(t, map[string]string{"nvim": ""}) tm := start(t, repo, opts{rex: rex, path: bin, env: []string{"EDITOR=nvim"}}) tm.keys("]", "j", "e") - want := "split -s S -b block:self --cwd " + repo + " -- " - deadline := time.Now().Add(10 * time.Second) - for !strings.Contains(rex.calls(t), want) { - if time.Now().After(deadline) { - t.Fatalf("rex calls:\n%s\nwant a call with %s", rex.calls(t), want) - } - time.Sleep(20 * time.Millisecond) - } - var split string - for _, l := range lines(rex.calls(t), want) { - split = l - } - if !strings.Contains(split, "nvim +4 ") || !strings.Contains(split, "a.go") { - t.Errorf("the split runs %q, want nvim +4 on a.go", split) - } + want := "split -s S -b block:self --cwd " + repo + " -- sh -c nvim +4 '" + + filepath.Join(repo, "a.go") + "'" + eventually(t, func() bool { return strings.Contains(rex.calls(t), want) }, func() string { + return "rex calls:\n" + rex.calls(t) + "\nwant " + want + }) } -// TestWindowEditor checks that e starts a window editor at the line. +// TestWindowEditor checks that e starts a window editor at the line, and +// that the editor setting picks the editor. func TestWindowEditor(t *testing.T) { - t.Parallel() - bin := t.TempDir() - tool(t, bin, "code", `printf '%s\n' "$@" > "${0%/*}/args"`+"\n") + bin := tools(t, map[string]string{ + "code": `printf '%s\n' "$@" > "${0%/*}/code"` + "\n", + "mine": `printf '%s\n' "$@" > "${0%/*}/mine"` + "\n", + }) tm := start(t, newRepo(t), opts{path: bin, env: []string{"VISUAL=code --wait"}}) tm.keys("]", "j", "e") - path := filepath.Join(bin, "args") - deadline := time.Now().Add(10 * time.Second) - for { - b, _ := os.ReadFile(path) - if strings.Contains(string(b), "a.go:4") { - return - } - if time.Now().After(deadline) { - t.Fatalf("code got %q, want a.go:4. The screen shows:\n%s", b, tm.screen()) - } - time.Sleep(20 * time.Millisecond) - } + waitFile(t, filepath.Join(bin, "code"), func(s string) bool { + return strings.HasPrefix(s, "--wait\n-g\n") && strings.HasSuffix(s, "a.go:4\n") + }) + + tm = start(t, newRepo(t), opts{path: bin, args: []string{ + "-config", + `{"editor": "mine --line {line} {file}"}`, + }}) + tm.keys("]", "j", "e") + waitFile(t, filepath.Join(bin, "mine"), func(s string) bool { + return strings.HasPrefix(s, "--line\n4\n") && strings.HasSuffix(s, "a.go\n") + }) } // TestNoEditor checks that e tells how to set an editor when none is set. func TestNoEditor(t *testing.T) { - t.Parallel() tm := start(t, newRepo(t), opts{}) tm.keys("]", "j", "e") tm.waitFor("no editor: set `editor` in rexdiff.lua, $EDITOR, or git's core.editor") } -// TestMouse checks that a click picks a file, a click on a line number -// opens the comment box, and a triple click copies a line. -func TestMouse(t *testing.T) { - t.Parallel() - bin := tool(t, t.TempDir(), "pbcopy", `cat > "${0%/*}/clip"`+"\n") - tool(t, bin, "wl-copy", `cat > "${0%/*}/clip"`+"\n") - tm := start(t, newRepo(t), opts{path: bin, env: []string{"WAYLAND_DISPLAY=w"}}) - tm.click("M long.txt", 1) - tm.waitFor("⋯ 32 unmodified lines") - tm.click("M a.go", 1) - tm.click("func A() int {", 3) - tm.waitFor("copied 14 chars") - b, err := os.ReadFile(filepath.Join(bin, "clip")) - if err != nil || string(b) != "func A() int {" { - t.Errorf("the clipboard has %q (%v), want the line", b, err) - } - tm.click(" 5 ▌", 1) // the number of the new line 5 - tm.waitFor("✎ a.go:5") -} - -// TestAgentPicker checks that a send with two agents asks which one, and -// that a digit picks it. -func TestAgentPicker(t *testing.T) { - t.Parallel() - repo := newRepo(t) - rex := newRex(t, repo) - rex.addAgent(t, "block:cc", "cc", "claude-code") - tm := start(t, repo, opts{rex: rex}) - tm.waitFor("send → 2 agents") +// TestCopyHangs checks that a clipboard tool that does not answer fails +// the copy, and rexdiff still takes keys. +func TestCopyHangs(t *testing.T) { + hang := "exec sleep 60\n" + bin := tools(t, map[string]string{"pbcopy": hang, "wl-copy": hang}) + tm := start(t, newRepo(t), opts{path: bin, env: clipEnv}) comment(tm, "hi") - tm.keys("s") - tm.waitFor("send to which agent?", "1 agent", "2 cc") - tm.keys("2") - tm.waitFor("sent 1 comment to cc") - if calls := rex.calls(t); !strings.Contains(calls, `block.event {"block_id":"block:cc"`) { - t.Errorf("rex calls:\n%s\nwant a paste to block:cc", calls) - } -} - -// TestCommentStays checks that a comment stays when the agent edits the -// file. As in herdr-reviewr, it keeps its line number. -func TestCommentStays(t *testing.T) { - t.Parallel() - repo := newRepo(t) - tm := start(t, repo, opts{}) - tm.keys("]", "j", "c", "h", "i", "enter") // on x := 2 + tm.keys("y") + tm.waitFor("copy failed") tm.waitFor("💬 hi") - testgit.WriteFile(t, repo, "a.go", - "package a\n\n// A adds.\n// It is new.\nfunc A() int {\n\tx := 2\n\treturn x\n}\n") - tm.waitFor("It is new.") - tm.keys("l") - tm.waitFor("a.go:4 hi") + tm.keys("f") + tm.waitFor("⋯ 32 unmodified lines") } diff --git a/test/fake_test.go b/test/fake_test.go index e2210c5..e9ba18c 100644 --- a/test/fake_test.go +++ b/test/fake_test.go @@ -86,8 +86,8 @@ esac return r } -// recorded returns the file name of testdata/rex, with each pair of -// old and new values replaced. +// recorded returns the content of the file name in testdata/rex, with +// each pair of old and new values replaced. func recorded(t *testing.T, name string, oldNew ...string) string { t.Helper() b, err := os.ReadFile(filepath.Join("testdata", "rex", name)) @@ -148,13 +148,28 @@ func (r *fakeRex) setState(t *testing.T, state string) { } } -// tool writes a fake program name with body to dir, and returns dir. -func tool(t *testing.T, dir, name, body string) string { +// tools writes a fake program for each name in bodies, with its body, to +// a new directory. It returns the directory, for opts.path. +func tools(t *testing.T, bodies map[string]string) string { t.Helper() - testgit.Script(t, dir, name, body) + dir := t.TempDir() + for name, body := range bodies { + testgit.Script(t, dir, name, body) + } return dir } +// clipboard returns a directory with a fake pbcopy and wl-copy, for +// opts.path. Each writes what it gets to the file clip in the directory. +func clipboard(t *testing.T) string { + t.Helper() + const body = `cat > "${0%/*}/clip"` + "\n" + return tools(t, map[string]string{"pbcopy": body, "wl-copy": body}) +} + +// clipEnv makes rexdiff take the fake clipboard on Linux too. +var clipEnv = []string{"WAYLAND_DISPLAY=w"} + // lines returns the lines of s that contain text. func lines(s, text string) []string { var out []string diff --git a/test/files_test.go b/test/files_test.go index c806495..fbaac5b 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -5,55 +5,59 @@ import ( "path/filepath" "strings" "testing" - "time" "github.com/rednafi/rexdiff/internal/testgit" ) -// TestFilesTab checks that the Files tab lists all the files, opens a -// file, expands an ignored directory, and renders markdown. +// TestFilesTab checks that the Files tab lists all the files, expands and +// collapses an ignored directory, opens a file, and renders markdown. func TestFilesTab(t *testing.T) { - t.Parallel() tm := start(t, newRepo(t), opts{}) tm.keys("2") tm.waitFor("Files (6)", "docs/guide.txt", "▸ out/", "long.txt") tm.keys("tab", "j", "right") tm.waitFor("▾ out/", "build.log") - tm.keys("j", "j", "j") + tm.keys("left") + tm.waitFor("▸ out/") + tm.waitGone("build.log") + tm.keys("j", "j") tm.waitFor("# Title") tm.keys("m") tm.waitGone("# Title") tm.waitFor("Title", "Some text.") } +// TestMarkdownSetting checks that markdown_view shows rendered markdown +// at the start. +func TestMarkdownSetting(t *testing.T) { + tm := start(t, newRepo(t), opts{args: []string{"-config", `{"markdown_view": "rendered"}`}}) + tm.keys("2", "tab", "j", "j", "j") + tm.waitFor("Some text.") + tm.waitGone("# Title") +} + // TestSearch checks that / finds files by name and lines by code, shows a -// preview, and opens the pick. A changed file opens in the Changes tab. +// preview, and opens the pick. A changed file opens in the Changes tab, at +// the line, even in a fold. func TestSearch(t *testing.T) { - t.Parallel() tm := start(t, newRepo(t), opts{}) - tm.keys("/", "l", "o", "n", "g") + tm.keys("/") + tm.typed("long") tm.waitFor("files 1", "▶ long.txt", "preview · long.txt", "first") tm.keys("enter") tm.waitGone("preview ·") tm.waitFor("first", "⋯ 32 unmodified lines") - tm.keys("/", "tab", "l", "i", "n", "e", " ", "7") + tm.keys("/", "tab") + tm.typed("line 7") tm.waitFor("code 1", "7: line 7", "▶ 7 line 7") tm.keys("enter") - tm.waitUntil(func(s string) bool { - for _, l := range lines(s, "▶") { - if strings.Contains(l, "line 7") { - return true - } - } - return false - }, "put the cursor on line 7") + tm.waitCursor("line 7") } // TestLiveReload checks that the Changes tab shows an edit and a new file -// without a key. +// without a key, and that r reloads. func TestLiveReload(t *testing.T) { - t.Parallel() repo := newRepo(t) tm := start(t, repo, opts{}) tm.waitFor("Changes (2)") @@ -64,21 +68,23 @@ func TestLiveReload(t *testing.T) { if err := os.Remove(filepath.Join(repo, "new", "c.go")); err != nil { t.Fatal(err) } + tm.keys("r") tm.waitFor("Changes (2)") } // TestLastTurn checks that the last-turn scope shows what the agent // changes in its last turn. func TestLastTurn(t *testing.T) { - t.Parallel() repo := newRepo(t) rex := newRex(t, repo) - tm := start(t, repo, opts{rex: rex}) + log := filepath.Join(t.TempDir(), "log") + tm := start(t, repo, opts{rex: rex, args: []string{"-log", log}}) tm.keys("t") // rexdiff takes the states of an agent after its first list of them. tm.waitFor("waiting for the first turn", "send → 1 agent") rex.setState(t, "working") - time.Sleep(500 * time.Millisecond) // the turn starts with a snapshot + // The turn starts with a snapshot of the files. + waitFile(t, log, func(s string) bool { return strings.Contains(s, "msg=\"turn start\"") }) testgit.WriteFile(t, repo, "turn.go", "package a\n") rex.setState(t, "idle") tm.waitFor("Changes (1)", "turn.go", "pi") @@ -87,11 +93,10 @@ func TestLastTurn(t *testing.T) { // TestPR checks that the PR tab shows the pull request of the branch from // gh, with its checks and comments, and that o opens it. func TestPR(t *testing.T) { - t.Parallel() repo := newRepo(t) testgit.Git(t, repo, "remote", "add", "origin", "https://github.com/o/r.git") - bin := t.TempDir() - tool(t, bin, "gh", `cat <<'EOF' + bin := tools(t, map[string]string{ + "gh": `cat <<'EOF' {"number": 7, "title": "Add b", "state": "OPEN", "isDraft": false, "url": "https://github.com/o/r/pull/7", "body": "The body of the PR.", "author": {"login": "ann"}, "headRefName": "feat", "baseRefName": "main", @@ -100,8 +105,9 @@ func TestPR(t *testing.T) { "statusCheckRollup": [{"name": "test", "conclusion": "SUCCESS"}, {"name": "lint", "conclusion": "FAILURE"}]} EOF -`) - tool(t, bin, "opener", `printf '%s\n' "$@" > "${0%/*}/opened"`+"\n") +`, + "opener": `printf '%s\n' "$@" > "${0%/*}/opened"` + "\n", + }) tm := start(t, repo, opts{path: bin, args: []string{ "-config", `{"url_opener": "opener {url}"}`, @@ -111,16 +117,16 @@ EOF "checks: ✓ 1 ✗ 1", "✗ lint", "The body of the PR.", "bob", "Looks good.") tm.keys("o") - path := filepath.Join(bin, "opened") - deadline := time.Now().Add(10 * time.Second) - for { - b, _ := os.ReadFile(path) - if string(b) == "https://github.com/o/r/pull/7\n" { - return - } - if time.Now().After(deadline) { - t.Fatalf("the opener got %q, want the URL of the PR", b) - } - time.Sleep(20 * time.Millisecond) - } + waitFile(t, filepath.Join(bin, "opened"), func(s string) bool { + return s == "https://github.com/o/r/pull/7\n" + }) +} + +// TestNoPR checks that the PR tab tells why it has no pull request. +func TestNoPR(t *testing.T) { + tm := start(t, newRepo(t), opts{}) + tm.keys("3") + tm.waitUntil(func(s string) bool { + return strings.Contains(s, "no git remote") + }, "tell why there is no pull request") } diff --git a/test/norace_test.go b/test/norace_test.go new file mode 100644 index 0000000..6283e17 --- /dev/null +++ b/test/norace_test.go @@ -0,0 +1,6 @@ +//go:build !race + +package test + +// raceOn is true in a run with the race detector. +const raceOn = false diff --git a/test/race_test.go b/test/race_test.go new file mode 100644 index 0000000..63cb408 --- /dev/null +++ b/test/race_test.go @@ -0,0 +1,6 @@ +//go:build race + +package test + +// raceOn is true in a run with the race detector. +const raceOn = true diff --git a/test/rex_test.go b/test/rex_test.go index 3845098..ae529c9 100644 --- a/test/rex_test.go +++ b/test/rex_test.go @@ -7,7 +7,6 @@ import ( "strconv" "strings" "testing" - "time" ) // realRex runs rex in the session of a test with a real Rex. @@ -21,7 +20,9 @@ type realRex struct { // fails. func (r *realRex) run(args ...string) string { r.t.Helper() - out, err := exec.CommandContext(r.t.Context(), r.bin, args...).Output() + cmd := exec.CommandContext(r.t.Context(), r.bin, append([]string{"--autostart=false"}, args...)...) + cmd.Env = append(os.Environ(), "HOME="+home) // the socket of Rex is in HOME + out, err := cmd.Output() if err != nil { r.t.Fatalf("rex %s: %v", strings.Join(args, " "), err) } @@ -61,21 +62,16 @@ func (r *realRex) write(block, data string) { // waitFor waits until the screen of block shows each of texts. func (r *realRex) waitFor(block string, texts ...string) { r.t.Helper() - deadline := time.Now().Add(15 * time.Second) - for { - s := r.run("capture", "-s", r.session, "-b", block) - ok := true + var s string + eventually(r.t, func() bool { + s = r.run("capture", "-s", r.session, "-b", block) for _, text := range texts { - ok = ok && strings.Contains(s, text) - } - if ok { - return - } - if time.Now().After(deadline) { - r.t.Fatalf("block %s does not show %q. It shows:\n%s", block, texts, s) + if !strings.Contains(s, text) { + return false + } } - time.Sleep(100 * time.Millisecond) - } + return true + }, func() string { return "block " + block + " does not show " + strings.Join(texts, ", ") + ":\n" + s }) } // TestRealRex runs rexdiff in a pane of a real Rex, beside a shell that @@ -92,7 +88,9 @@ func TestRealRex(t *testing.T) { r := &realRex{t: t, bin: bin, session: "rexdiff-test-" + strconv.Itoa(os.Getpid())} r.run("new", r.session, "--cwd", repo, "--", "sh") t.Cleanup(func() { - _ = exec.Command(bin, "kill", r.session).Run() //nolint:noctx // t.Context is done + kill := exec.Command(bin, "--autostart=false", "kill", r.session) //nolint:noctx // t.Context is done + kill.Env = append(os.Environ(), "HOME="+home) + _ = kill.Run() }) shell := r.blocks()["shell"] r.run("block", "rename", shell, "agent", "-s", r.session) @@ -101,16 +99,14 @@ func TestRealRex(t *testing.T) { r.run("split", "-s", r.session, "-b", shell, "--cwd", repo, "--shell=none", "--", binary(t), "-config", `{"focus_agent_after_send": false}`, repo) var pane string - for deadline := time.Now().Add(15 * time.Second); pane == ""; { + eventually(t, func() bool { for label, id := range r.blocks() { if label != "agent" { pane = id } } - if time.Now().After(deadline) { - t.Fatal("rexdiff does not start in a pane") - } - } + return pane != "" + }, func() string { return "rexdiff does not start in a pane" }) r.waitFor(pane, "Changes (2)") r.write(pane, "]") r.write(pane, "c") diff --git a/test/rexdiff_test.go b/test/rexdiff_test.go index c5f98ab..e0ea5b4 100644 --- a/test/rexdiff_test.go +++ b/test/rexdiff_test.go @@ -1,10 +1,13 @@ // Package test runs the rexdiff program as a user does. Each test starts -// the binary in a terminal, types keys, and reads the screen. A fake rex -// stands in for Rex, and the other tools are fakes on PATH. git is real. +// the binary in a terminal, types keys, clicks, and reads the screen. A +// fake rex stands in for Rex, and the other tools are fakes on PATH. git +// is real. package test import ( + "cmp" "context" + "fmt" "io" "os" "os/exec" @@ -12,6 +15,7 @@ import ( "strconv" "strings" "sync" + "syscall" "testing" "time" "unicode/utf8" @@ -22,7 +26,20 @@ import ( "github.com/rednafi/rexdiff/internal/testgit" ) -func TestMain(m *testing.M) { testgit.Main(m) } +var ( + home string // the HOME of the user, for the real Rex + buildDir string // the directory of the binaries that the tests build +) + +func TestMain(m *testing.M) { + home = os.Getenv("HOME") + var err error + if buildDir, err = os.MkdirTemp("", "rexdiff-test"); err != nil { + panic(err) + } + defer func() { _ = os.RemoveAll(buildDir) }() + testgit.Main(m) +} var ( buildOnce sync.Once @@ -30,21 +47,11 @@ var ( buildErr error ) -// binary returns the path of a rexdiff binary that the package builds -// once. +// binary returns the path of a rexdiff that the package builds once. func binary(t *testing.T) string { t.Helper() buildOnce.Do(func() { - dir, err := os.MkdirTemp("", "rexdiff-test") - if err != nil { - buildErr = err - return - } - binPath = filepath.Join(dir, "rexdiff") - out, err := exec.CommandContext(context.Background(), "go", "build", "-o", binPath, "../cmd/rexdiff").CombinedOutput() - if err != nil { - buildErr = &buildError{err, string(out)} - } + binPath, buildErr = build(filepath.Join(buildDir, "dev"), "") }) if buildErr != nil { t.Fatal(buildErr) @@ -52,19 +59,33 @@ func binary(t *testing.T) string { return binPath } -// buildError is an error of go build with its output. -type buildError struct { - err error - out string +// build builds rexdiff with the version into dir, and returns its path. +// A run with the race detector builds a rexdiff with it. +func build(dir, version string) (string, error) { + bin := filepath.Join(dir, "rexdiff") + args := []string{"build", "-o", bin, "-ldflags", "-X main.version=" + version} + if raceOn { + args = append(args, "-race") + } + cmd := exec.CommandContext(context.Background(), "go", append(args, "../cmd/rexdiff")...) + if out, err := cmd.CombinedOutput(); err != nil { + return "", fmt.Errorf("go build: %w\n%s", err, out) + } + return bin, nil } -func (e *buildError) Error() string { return "go build: " + e.err.Error() + "\n" + e.out } +// userEnv are the variables of the user that change what rexdiff does. +// Each run starts with them empty. +var userEnv = []string{ + "REX_SESSION", "REX_BLOCK", "REX_BIN_DIR", "REX_CONFIG", + "REX_AGENT_BLOCK", "REXDIFF_LOG", "REXDIFF_RESUME", "EDITOR", "VISUAL", +} // opts are the options of a rexdiff run. type opts struct { args []string // the flags; start adds the repo - width int // 0 means 160 - height int // 0 means 40 + width uint16 // 0 means 160 + height uint16 // 0 means 40 rex *fakeRex // nil runs rexdiff outside Rex path string // a directory of fake tools, or "" env []string // more variables @@ -77,7 +98,7 @@ type term struct { emu *vt.Emulator mu sync.Mutex // guards emu cmd *exec.Cmd - done chan struct{} + done chan struct{} // closed when the screen gets no more output } // start runs rexdiff on repo in a new terminal. The test stops it at the @@ -90,15 +111,12 @@ func start(t *testing.T, repo string, o opts) *term { // startBin is start with the rexdiff at bin. func startBin(t *testing.T, bin, repo string, o opts) *term { t.Helper() - w, h := o.width, o.height - if w == 0 { - w = 160 - } - if h == 0 { - h = 40 - } + w, h := cmp.Or(o.width, 160), cmp.Or(o.height, 40) cmd := exec.CommandContext(t.Context(), bin, append(o.args, repo)...) cmd.Dir = repo + // A stop lets rexdiff remove its files before it exits. + cmd.Cancel = func() error { return cmd.Process.Signal(syscall.SIGTERM) } + cmd.WaitDelay = 2 * time.Second path := "/usr/bin:/bin:/usr/sbin:/sbin" if git, err := exec.LookPath("git"); err == nil { path = filepath.Dir(git) + ":" + path @@ -106,20 +124,21 @@ func startBin(t *testing.T, bin, repo string, o opts) *term { if o.path != "" { path = o.path + ":" + path } - cmd.Env = append(os.Environ(), - "PATH="+path, "TERM=xterm-256color", "REX_SESSION=", "REX_BLOCK=", - "REX_BIN_DIR=", "REX_AGENT_BLOCK=", "EDITOR=", "VISUAL=", "REXDIFF_LOG=") + cmd.Env = append(os.Environ(), "PATH="+path, "TERM=xterm-256color") + for _, k := range userEnv { + cmd.Env = append(cmd.Env, k+"=") + } if o.rex != nil { cmd.Env = append(cmd.Env, "REX_SESSION=S", "REX_BLOCK=block:self", "REX_BIN_DIR="+o.rex.dir) } cmd.Env = append(cmd.Env, o.env...) - f, err := pty.StartWithSize(cmd, &pty.Winsize{Cols: uint16(w), Rows: uint16(h)}) + f, err := pty.StartWithSize(cmd, &pty.Winsize{Cols: w, Rows: h}) if err != nil { t.Fatal(err) } - tm := &term{t: t, pty: f, emu: vt.NewEmulator(w, h), cmd: cmd, done: make(chan struct{})} - go func() { // the screen + tm := &term{t: t, pty: f, emu: vt.NewEmulator(int(w), int(h)), cmd: cmd, done: make(chan struct{})} + go func() { defer close(tm.done) buf := make([]byte, 32<<10) for { @@ -134,13 +153,14 @@ func startBin(t *testing.T, bin, repo string, o opts) *term { } } }() - go func() { _, _ = io.Copy(f, tm.emu) }() // the keys and the replies + // The emulator answers the queries of rexdiff, for example for the + // colours. This copy ends with the test process, because the Close of + // the emulator races with its Read. + go func() { _, _ = io.Copy(f, tm.emu) }() t.Cleanup(func() { - _ = cmd.Process.Kill() - _ = cmd.Wait() + _ = cmd.Wait() // t.Context is done, so Cancel stops rexdiff _ = f.Close() <-tm.done - // The emulator stays open. Its Close races with its Read. }) tm.waitFor("1 Changes") return tm @@ -153,7 +173,7 @@ func (tm *term) screen() string { return tm.emu.String() } -// keys types each key. A key is a text, or a name such as "enter". +// keys types each key. A key is a text, or a name in keyCodes. func (tm *term) keys(keys ...string) { tm.t.Helper() for _, k := range keys { @@ -174,45 +194,72 @@ func (tm *term) keys(keys ...string) { } } +// typed types each character of text. +func (tm *term) typed(text string) { + tm.t.Helper() + tm.keys(strings.Split(text, "")...) +} + // keyCodes are the bytes of the named keys. var keyCodes = map[string]string{ "enter": "\r", "esc": "\x1b", "tab": "\t", - "space": " ", - "up": "\x1b[A", - "down": "\x1b[B", "right": "\x1b[C", "left": "\x1b[D", + "pgdown": "\x1b[6~", + "pgup": "\x1b[5~", "ctrl+d": "\x04", "ctrl+u": "\x15", "ctrl+f": "\x06", - "bs": "\x7f", + "ctrl+j": "\n", } -// click clicks text on the screen the given number of times in a row. -func (tm *term) click(text string, times int) { +// at returns the column and the line of text on the screen, from 0. +func (tm *term) at(text string) (x, y int) { tm.t.Helper() - x, y := -1, -1 for i, l := range strings.Split(tm.waitFor(text), "\n") { if before, _, ok := strings.Cut(l, text); ok { - x, y = utf8.RuneCountInString(before), i - break + return utf8.RuneCountInString(before), i } } - at := strconv.Itoa(x+1) + ";" + strconv.Itoa(y+1) + return -1, -1 +} + +// mouse sends a mouse event with the SGR code b at column x of line y. +// end is "M" for a press or a motion, and "m" for a release. +func (tm *term) mouse(b, x, y int, end string) { + tm.t.Helper() + seq := "\x1b[<" + strconv.Itoa(b) + ";" + strconv.Itoa(x+1) + ";" + strconv.Itoa(y+1) + end + if _, err := tm.pty.WriteString(seq); err != nil { + tm.t.Fatal(err) + } +} + +// click clicks text on the screen the given number of times in a row. +func (tm *term) click(text string, times int) { + tm.t.Helper() + x, y := tm.at(text) for range times { - for _, end := range []string{"M", "m"} { // press, release - if _, err := tm.pty.WriteString("\x1b[<0;" + at + end); err != nil { - tm.t.Fatal(err) - } - } + tm.mouse(0, x, y, "M") + tm.mouse(0, x, y, "m") time.Sleep(50 * time.Millisecond) // as a hand clicks } } -// waitFor waits until the screen shows each of texts. It fails the test -// after a while. +// drag drags the mouse from the start of text from to the start of text +// to. +func (tm *term) drag(from, to string) { + tm.t.Helper() + x0, y0 := tm.at(from) + x1, y1 := tm.at(to) + tm.mouse(0, x0, y0, "M") + tm.mouse(32, x1, y1, "M") // a motion with the button down + tm.mouse(0, x1, y1, "m") +} + +// waitFor waits until the screen shows each of texts, and returns the +// screen. func (tm *term) waitFor(texts ...string) string { tm.t.Helper() return tm.waitUntil(func(s string) bool { @@ -238,22 +285,54 @@ func (tm *term) waitGone(texts ...string) string { }, "not show "+strings.Join(texts, ", ")) } -// waitUntil waits until ok is true for the screen. -func (tm *term) waitUntil(ok func(string) bool, what string) string { +// waitCursor waits until the line of the cursor shows text. +func (tm *term) waitCursor(text string) { tm.t.Helper() - deadline := time.Now().Add(10 * time.Second) - for { - s := tm.screen() - if ok(s) { - return s + tm.waitUntil(func(s string) bool { + for _, l := range lines(s, "▶") { + if strings.Contains(l, text) { + return true + } } + return false + }, "put the cursor on "+text) +} + +// waitUntil waits until ok is true for the screen, and returns the screen. +func (tm *term) waitUntil(ok func(string) bool, what string) string { + tm.t.Helper() + var s string + eventually(tm.t, func() bool { s = tm.screen(); return ok(s) }, func() string { + return "the screen does not " + what + ". It shows:\n" + s + }) + return s +} + +// eventually waits until ok is true. It fails the test with the text of +// why after a while. +func eventually(t *testing.T, ok func() bool, why func() string) { + t.Helper() + deadline := time.Now().Add(15 * time.Second) + for !ok() { if time.Now().After(deadline) { - tm.t.Fatalf("the screen does not %s. It shows:\n%s", what, s) + t.Fatal(why()) } time.Sleep(20 * time.Millisecond) } } +// waitFile waits until the file at path has content, and returns it. +func waitFile(t *testing.T, path string, content func(string) bool) string { + t.Helper() + var s string + eventually(t, func() bool { + b, _ := os.ReadFile(path) + s = string(b) + return content(s) + }, func() string { return path + " has " + strconv.Quote(s) }) + return s +} + // exited waits until rexdiff exits and returns its error. func (tm *term) exited() error { tm.t.Helper() @@ -262,7 +341,7 @@ func (tm *term) exited() error { select { case err := <-errc: return err - case <-time.After(10 * time.Second): + case <-time.After(15 * time.Second): tm.t.Fatalf("rexdiff does not exit. The screen shows:\n%s", tm.screen()) return nil } diff --git a/test/testdata/script/cli.txt b/test/testdata/script/cli.txt index bd654e1..db02fdc 100644 --- a/test/testdata/script/cli.txt +++ b/test/testdata/script/cli.txt @@ -1,24 +1,12 @@ -# -h shows the usage, and -version the version. A build for development -# has no version. -exec rexdiff -h -stderr '^usage: rexdiff \[flags\] \[repo\]' -exec rexdiff -version -stdout '^\(devel\)$' - -# rexdiff does not start when its input is wrong. Each error says what is -# wrong, and which values are allowed. -! exec rexdiff -layout sideways -stderr 'invalid value "sideways" for flag -layout: expected one of unified, split' +# rexdiff does not start when its input is wrong, and says what is wrong. ! exec rexdiff $WORK stderr '^rexdiff: open .+: git rev-parse: fatal: not a git repository' exec git init -q repo ! exec rexdiff repo -wrap=false stderr '^rexdiff: unknown argument -wrap=false \(flags go before the repo\)$' -! exec rexdiff -config '{"layuot": "split"}' repo -stderr '^rexdiff: config: unknown key "layuot"$' # -check checks the settings without a repository, for the Rex action. +! exec rexdiff -check -config '{"layuot": "split"}' +stderr '^rexdiff: config: unknown key "layuot"$' ! exec rexdiff -check -config '{"layout": "sideways"}' stderr '^rexdiff: config: invalid value for layout: expected one of unified, split, not "sideways"$' -exec rexdiff -check -config '{"layout": "split"}' -! stderr . diff --git a/test/testdata/script/install.txt b/test/testdata/script/install.txt index e943478..42dd05d 100644 --- a/test/testdata/script/install.txt +++ b/test/testdata/script/install.txt @@ -1,46 +1,20 @@ -# install writes rexdiff.lua, with the default settings at its top, and -# adds one line to init.lua. It keeps the rest of init.lua. +# install writes rexdiff.lua, with the settings at its top, adds one line +# to init.lua, keeps the rest of init.lua, and reloads Rex. mkdir .config/rex cp mine.lua .config/rex/init.lua exec rexdiff install stdout 'wrote '$WORK'/.config/rex/rexdiff.lua; the settings are at its top' stdout 'added require\("rexdiff"\) to '$WORK'/.config/rex/init.lua' -stdout 'config reloaded' stdout 'press the key of the settings' cmp .config/rex/init.lua installed.lua -grep '^local settings = \{$' .config/rex/rexdiff.lua -grep '^-- rexdiff code below. Install and upgrades replace it. Do not edit this line.$' .config/rex/rexdiff.lua +grep 'config reload' rex.log -# Rex accepts the action and its key. +# Rex accepts the action and its keys. [realrex] exec $REALREX config check .config/rex/init.lua [realrex] stdout 'bindings: 2' [realrex] stdout 'actions: 1' [realrex] ! stderr . -# A second install keeps the settings and the one line of init.lua, and -# replaces the code. -exec sh -c 'sed "s/^local settings = {$/local settings = { key = \"ctrl+cmd+d\", layout = \"split\",/" .config/rex/rexdiff.lua > edited.lua' -exec sh -c 'sed "s/^local function must/local function old_must/" edited.lua > .config/rex/rexdiff.lua' -exec rexdiff install -cmp .config/rex/init.lua installed.lua -grep 'local settings = \{ key = "ctrl\+cmd\+d", layout = "split",' .config/rex/rexdiff.lua -! grep 'old_must' .config/rex/rexdiff.lua -cmp rex.log reloads.log - -# Rex binds the key of the settings. -[realrex] exec $REALREX config check .config/rex/init.lua -[realrex] stdout 'bindings: 2' -[realrex] ! stderr . - -# Without the line above the code, install cannot tell the settings from -# the code. It says so, and changes no file. -exec sh -c 'grep -v "^-- rexdiff code below" .config/rex/rexdiff.lua > nomark.lua' -cp nomark.lua .config/rex/rexdiff.lua -! exec rexdiff install -stderr 'rexdiff.lua has no line "-- rexdiff code below. Install and upgrades replace it. Do not edit this line.", so rexdiff cannot tell your settings from its code. Put that line back under your settings, or move the file away and run "rexdiff install" again' -cmp .config/rex/rexdiff.lua nomark.lua -cmp .config/rex/init.lua installed.lua - # If uninstall cannot change init.lua, it keeps rexdiff.lua, so that # init.lua does not require a missing file. chmod 0444 .config/rex/init.lua @@ -48,8 +22,7 @@ chmod 0444 .config/rex/init.lua exists .config/rex/rexdiff.lua chmod 0644 .config/rex/init.lua -# uninstall removes the line and rexdiff.lua with the settings, and keeps -# the rest. +# uninstall removes the line and rexdiff.lua, and keeps the rest. exec rexdiff uninstall stdout 'removed the rexdiff action, its key, and its settings from Rex' cmp .config/rex/init.lua mine.lua @@ -59,25 +32,15 @@ cmp .config/rex/init.lua mine.lua env REX_FAIL=1 exec rexdiff install stdout 'reload Rex''s config yourself: rex config reload' -exists .config/rex/rexdiff.lua - -# REX_CONFIG sets the path of the configuration file of Rex. -env REX_CONFIG=$WORK/other/init.lua -exec rexdiff install -exists other/rexdiff.lua -grep 'require\("rexdiff"\)' other/init.lua # On macOS, the action runs a symlinked rexdiff through the link, so that # it still works after brew upgrade. [darwin] exec sh -c 'mkdir brew && ln -s "$(command -v rexdiff)" brew/rexdiff' [darwin] exec $WORK/brew/rexdiff install -[darwin] grep 'local BIN = "'$WORK'/brew/rexdiff"' other/rexdiff.lua +[darwin] grep 'local BIN = "'$WORK'/brew/rexdiff"' .config/rex/rexdiff.lua -- mine.lua -- rex.bind("cmd+e", "pane.zoom") -- installed.lua -- rex.bind("cmd+e", "pane.zoom") require("rexdiff") --- reloads.log -- -config reload -config reload diff --git a/test/update_test.go b/test/update_test.go index 5b44535..b050635 100644 --- a/test/update_test.go +++ b/test/update_test.go @@ -9,25 +9,11 @@ import ( "net/http" "net/http/httptest" "os/exec" - "path/filepath" "runtime" "strings" "testing" - "time" ) -// build builds rexdiff with version into dir, and returns its path. -func build(t *testing.T, dir, version string) string { - t.Helper() - bin := filepath.Join(dir, "rexdiff") - cmd := exec.CommandContext(t.Context(), "go", "build", "-o", bin, - "-ldflags", "-X main.version="+version, "../cmd/rexdiff") - if out, err := cmd.CombinedOutput(); err != nil { - t.Fatalf("go build: %v\n%s", err, out) - } - return bin -} - // release serves the latest release tag with the binary at bin, as GitHub // does. It returns the address of the latest release. func release(t *testing.T, tag, bin string) string { @@ -73,25 +59,25 @@ func release(t *testing.T, tag, bin string) string { // TestUpdate checks that U installs the latest release and starts it in // the same terminal, with the comments and the place of the user. func TestUpdate(t *testing.T) { - t.Parallel() - dir := t.TempDir() - bin := build(t, dir, "0.1.0") - latest := release(t, "v0.2.0", build(t, t.TempDir(), "0.2.0")) + bin, err := build(t.TempDir(), "0.1.0") + if err != nil { + t.Fatal(err) + } + next, err := build(t.TempDir(), "0.2.0") + if err != nil { + t.Fatal(err) + } + latest := release(t, "v0.2.0", next) tm := startBin(t, bin, newRepo(t), opts{env: []string{"REXDIFF_LATEST_URL=" + latest}}) tm.waitFor("rexdiff v0.2.0 is out: press U or click here to update") comment(tm, "hi") tm.keys("U") - deadline := time.Now().Add(10 * time.Second) - for { + var version string + eventually(t, func() bool { out, _ := exec.CommandContext(t.Context(), bin, "-version").Output() - if strings.TrimSpace(string(out)) == "v0.2.0" { - break - } - if time.Now().After(deadline) { - t.Fatalf("rexdiff -version = %q, want v0.2.0. The screen shows:\n%s", out, tm.screen()) - } - time.Sleep(50 * time.Millisecond) - } + version = strings.TrimSpace(string(out)) + return version == "v0.2.0" + }, func() string { return "rexdiff -version is " + version + ", want v0.2.0" }) // The new rexdiff is the latest, so it shows no update. It has the // comment, but not the message of the old one. tm.waitUntil(func(s string) bool { diff --git a/test/upgrade_test.go b/test/upgrade_test.go index 5f03eb3..8e557ef 100644 --- a/test/upgrade_test.go +++ b/test/upgrade_test.go @@ -12,7 +12,6 @@ import ( // rexdiff.lua, keeps the settings, and reloads Rex. Without the line above // the code, it changes nothing and tells why. func TestUpgradeAtStart(t *testing.T) { - t.Parallel() repo := newRepo(t) rex := newRex(t, repo) config := filepath.Join(t.TempDir(), "init.lua") From 177fa79de8ce80bb8ab60b43b3a909eaa5d3842c Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 22:23:57 +0100 Subject: [PATCH 060/119] fix: give git the right PWD, show the stderr of git cat-file, and leave the alternate screen on the given stdout --- cmd/rexdiff/main.go | 2 +- update/update.go | 24 +++++++++++------------- vcs/repo.go | 13 +++++++++---- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/cmd/rexdiff/main.go b/cmd/rexdiff/main.go index a0a77c2..998ed99 100644 --- a/cmd/rexdiff/main.go +++ b/cmd/rexdiff/main.go @@ -123,7 +123,7 @@ func run(ctx context.Context, args []string, stdout, stderr io.Writer) error { } // Run keeps the alternate screen for the restart. Leave that screen and // show the cursor. - fmt.Print("\x1b[?1049l\x1b[?25h") + fmt.Fprint(stdout, "\x1b[?1049l\x1b[?25h") return fmt.Errorf("start the new rexdiff: %w; your comments are saved in %s", err, resume) } diff --git a/update/update.go b/update/update.go index fafe65d..e629ea0 100644 --- a/update/update.go +++ b/update/update.go @@ -247,14 +247,14 @@ func tool(name string, dirs ...string) string { // runCommand is the run of an Updater outside tests. func runCommand(ctx context.Context, env []string, name string, args ...string) ([]byte, error) { cmd := exec.CommandContext(ctx, name, args...) - cmd.Env = append(os.Environ(), env...) + cmd.Env = append(cmd.Environ(), env...) return cmd.CombinedOutput() } // lastLine returns the last line of out that is not blank. func lastLine(out []byte) string { - lines := strings.Split(strings.TrimSpace(string(out)), "\n") - return strings.TrimSpace(lines[len(lines)-1]) + s := strings.TrimSpace(string(out)) + return strings.TrimSpace(s[strings.LastIndexByte(s, '\n')+1:]) } // download downloads the archive of r for this system, checks it with the @@ -295,10 +295,8 @@ func (u *Updater) download(ctx context.Context, r Release) error { // assetURL returns the address of the asset of r with the name, or "". func assetURL(r Release, name string) string { - for _, a := range r.assets { - if a.Name == name { - return a.URL - } + if i := slices.IndexFunc(r.assets, func(a asset) bool { return a.Name == name }); i >= 0 { + return r.assets[i].URL } return "" } @@ -348,14 +346,14 @@ func replaceFile(path string, content []byte, check func(tmp string) error) erro return err } defer func() { _ = os.Remove(tmp.Name()) }() // fails after the rename - if _, err := tmp.Write(content); err != nil { - _ = tmp.Close() - return err + _, err = tmp.Write(content) + if err == nil { + err = tmp.Chmod(0o755) } - if err := tmp.Close(); err != nil { - return err + if cerr := tmp.Close(); err == nil { + err = cerr } - if err := os.Chmod(tmp.Name(), 0o755); err != nil { + if err != nil { return err } if err := check(tmp.Name()); err != nil { diff --git a/vcs/repo.go b/vcs/repo.go index 9005a37..e2254df 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -109,7 +109,7 @@ func command( cmd := exec.CommandContext(ctx, name, args...) cmd.Dir, cmd.Stdin = dir, stdin if env != nil { - cmd.Env = append(os.Environ(), env...) + cmd.Env = append(cmd.Environ(), env...) // Environ sets PWD to cmd.Dir } var stderr bytes.Buffer cmd.Stderr = &stderr @@ -393,6 +393,8 @@ func (r *Repo) readBlobs(ctx context.Context, ids []string, blobs []blob) error cmd := exec.CommandContext(ctx, "git", "cat-file", "--batch") cmd.Dir = r.root cmd.Stdin = strings.NewReader(in.String()) + var stderr bytes.Buffer + cmd.Stderr = &stderr out, err := cmd.StdoutPipe() if err != nil { return err @@ -404,8 +406,9 @@ func (r *Repo) readBlobs(ctx context.Context, ids []string, blobs []blob) error if err != nil { _ = cmd.Process.Kill() } - if werr := cmd.Wait(); err == nil { - err = werr + if werr := cmd.Wait(); err == nil && werr != nil { + msg, _, _ := strings.Cut(strings.TrimSpace(stderr.String()), "\n") + err = &runError{cmp.Or(msg, werr.Error()), werr} } if err != nil { return fmt.Errorf("git cat-file: %w", err) @@ -413,12 +416,14 @@ func (r *Repo) readBlobs(ctx context.Context, ids []string, blobs []blob) error return nil } +// errShort is the error of output that ends too soon. +var errShort = errors.New("short output") + // readBatch reads the output of "git cat-file --batch" into blobs[i] for // each i in batch. For each object, the output has // " \n\n", or one line that ends with "missing" // or "ambiguous". func readBatch(r *bufio.Reader, batch []int, blobs []blob) error { - errShort := errors.New("short output") for _, i := range batch { hdr, err := r.ReadString('\n') if err != nil { From 246bad6572ca61d7e197302d2dd090182c8f1000 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 22:23:57 +0100 Subject: [PATCH 061/119] refactor: use the stdlib where it has the code --- diff/cell.go | 17 +++++++++++++---- diff/comment.go | 4 +--- diff/diff_test.go | 2 +- internal/diffview/escape.go | 16 ++++++---------- internal/turn/turn.go | 16 ++++++++-------- rex/rex.go | 4 ++-- tui/config.go | 2 +- tui/editor.go | 4 ++-- tui/tree.go | 8 ++------ vcs/pr.go | 4 +++- vcs/pr_test.go | 2 +- vcs/watch.go | 13 +++++++------ 12 files changed, 47 insertions(+), 45 deletions(-) diff --git a/diff/cell.go b/diff/cell.go index 3960985..b5bfaa3 100644 --- a/diff/cell.go +++ b/diff/cell.go @@ -31,16 +31,15 @@ func (d *Diff) Cell(row, x int) (s Side, line, index int, ok bool) { if onNumber || line == 0 || x < d.codeAt[s] { return 0, 0, 0, false } - lines := Lines(d.src[s]) - if line > len(lines) { + text, ok := lineAt(d.src[s], line) + if !ok { return 0, 0, 0, false } - text := lines[line-1] col := x - d.codeAt[s] + d.offset if d.wrap { start, width := d.segmentStart(row, s, text) if col >= width { // the blank cells after a wrapped part - return s, line, len([]rune(text)), true + return s, line, utf8.RuneCountInString(text), true } col += start } @@ -109,3 +108,13 @@ func runeAt(line string, col int) int { } return i } + +// lineAt returns line n of src, from 1, as [Lines] splits it. +func lineAt(src string, n int) (string, bool) { + for l := range strings.Lines(src) { + if n--; n == 0 { + return strings.TrimSuffix(strings.TrimSuffix(l, "\n"), "\r"), true + } + } + return "", false +} diff --git a/diff/comment.go b/diff/comment.go index c0d5787..512355d 100644 --- a/diff/comment.go +++ b/diff/comment.go @@ -109,11 +109,9 @@ func (cs *Comments) Remove(id int) { // All returns the comments, sorted by path and then by start line. func (cs *Comments) All() []*Comment { - all := slices.Clone(cs.items) - slices.SortStableFunc(all, func(a, b *Comment) int { + return slices.SortedStableFunc(slices.Values(cs.items), func(a, b *Comment) int { return cmp.Or(strings.Compare(a.Path, b.Path), cmp.Compare(a.Start, b.Start)) }) - return all } // SetOldRev sets the Rev of each comment that [Comments.UnmarshalJSON] diff --git a/diff/diff_test.go b/diff/diff_test.go index 10a9222..99f3c86 100644 --- a/diff/diff_test.go +++ b/diff/diff_test.go @@ -239,7 +239,7 @@ func markColours(lines []string) []string { if i < 0 { break } - sgr := l[strings.LastIndex(l[:i], "\x1b[")+2 : i] + _, sgr, _ := strings.CutLast(l[:i], "\x1b[") fg, _, _ := strings.Cut(strings.TrimSuffix(sgr, "m"), ";") out = append(out, fg) l = l[i+1:] diff --git a/internal/diffview/escape.go b/internal/diffview/escape.go index 49bbe3f..34937a4 100644 --- a/internal/diffview/escape.go +++ b/internal/diffview/escape.go @@ -19,19 +19,15 @@ const ( // so the terminal shows it and does not run it. A C1 control becomes // U+FFFD, because it has no picture. func Escape(content string) string { - var sb strings.Builder - sb.Grow(len(content)) - for _, r := range content { + return strings.Map(func(r rune) rune { switch { case r >= 0 && r <= 0x1f: // C0 controls - sb.WriteRune(controlPictures + r) + return controlPictures + r case r == ansi.DEL: - sb.WriteRune(delPicture) + return delPicture case r >= 0x80 && r <= 0x9f: // C1 controls - sb.WriteRune(utf8.RuneError) - default: - sb.WriteRune(r) + return utf8.RuneError } - } - return sb.String() + return r + }, content) } diff --git a/internal/turn/turn.go b/internal/turn/turn.go index 124952a..798c563 100644 --- a/internal/turn/turn.go +++ b/internal/turn/turn.go @@ -4,7 +4,11 @@ // come from herdr-reviewr. package turn -import "github.com/rednafi/rexdiff/rex" +import ( + "slices" + + "github.com/rednafi/rexdiff/rex" +) // state is the work state of a repository. fold makes it from the states // of all the agents in the repository. @@ -27,14 +31,10 @@ func rests(s rex.State) bool { return s == rex.StateIdle || s == rex.StateDone } // fold returns the state of a repository whose agents are in the states // states. One working agent makes the repository work. func fold(states ...rex.State) state { - isHeld := false - for _, s := range states { - if s == rex.StateWorking { - return working - } - isHeld = isHeld || !rests(s) + if slices.Contains(states, rex.StateWorking) { + return working } - if isHeld { + if slices.ContainsFunc(states, func(s rex.State) bool { return !rests(s) }) { return held } return resting diff --git a/rex/rex.go b/rex/rex.go index f31cf32..9fb2593 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -89,7 +89,7 @@ func (c *Client) runRex(ctx context.Context, args ...string) ([]byte, error) { } // runError is a failed run of rex. Its text is the first line that rex -// writes to stderr. It wraps the error of the process, for errors.As. +// writes to stderr. It wraps the error of the process. type runError struct { msg string err error @@ -423,7 +423,7 @@ func (c *Client) watchOnce(ctx context.Context, again bool, fn func(Event)) { fn(Event{Reconnect: true}) } lines := bufio.NewScanner(out) - lines.Buffer(make([]byte, maxEventLine), maxEventLine) + lines.Buffer(nil, maxEventLine) for lines.Scan() { if ev, ok := parseEvent(lines.Bytes()); ok { fn(ev) diff --git a/tui/config.go b/tui/config.go index 6968f70..522dbb1 100644 --- a/tui/config.go +++ b/tui/config.go @@ -210,7 +210,7 @@ func configError(err error) error { if !ok { return fmt.Errorf("config: %w", err) } - key := strings.ReplaceAll(strings.TrimPrefix(string(se.JSONPointer), "/"), "/", ".") + key := strings.Join(slices.Collect(se.JSONPointer.Tokens()), ".") if errors.Is(err, json.ErrUnknownName) { return fmt.Errorf("config: unknown key %q", key) } diff --git a/tui/editor.go b/tui/editor.go index 571a77d..ea5cca3 100644 --- a/tui/editor.go +++ b/tui/editor.go @@ -78,8 +78,8 @@ func (m *model) runWindowEditor(path, script string) tea.Cmd { if err == nil { return nil } - lines := strings.Split(strings.TrimSpace(stderr.String()), "\n") - if last := lines[len(lines)-1]; last != "" { + s := strings.TrimSpace(stderr.String()) + if last := s[strings.LastIndexByte(s, '\n')+1:]; last != "" { err = fmt.Errorf("%w: %s", err, last) } return editorDoneMsg{window: true, err: err} diff --git a/tui/tree.go b/tui/tree.go index 0da5af3..ff78e31 100644 --- a/tui/tree.go +++ b/tui/tree.go @@ -109,14 +109,10 @@ func (t *fileListTree) setExpanded(dir string, want bool) bool { // changes. func (t *fileListTree) reveal(path string) bool { changed := false - for dir := path; ; { - i := strings.LastIndexByte(dir, '/') - if i < 0 { - return changed - } - dir = dir[:i] + for dir, _, ok := strings.CutLast(path, "/"); ok; dir, _, ok = strings.CutLast(dir, "/") { changed = t.setExpanded(dir, true) || changed } + return changed } // list returns the file list of the current tab, or nil on the PR tab. diff --git a/vcs/pr.go b/vcs/pr.go index af88990..3bcd62d 100644 --- a/vcs/pr.go +++ b/vcs/pr.go @@ -136,7 +136,9 @@ func remoteHost(u string) string { } else if a, _, ok := strings.Cut(u, ":"); ok { auth = a } - auth = auth[strings.LastIndex(auth, "@")+1:] + if _, h, ok := strings.CutLast(auth, "@"); ok { + auth = h + } host, _, _ := strings.Cut(auth, ":") return strings.ToLower(host) } diff --git a/vcs/pr_test.go b/vcs/pr_test.go index e492047..b51dd90 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -249,5 +249,5 @@ func fakePath(t *testing.T, dir string) { if err := os.Symlink(p, filepath.Join(dir, "git")); err != nil { t.Fatal(err) } - t.Setenv("PATH", dir+":/bin:/usr/bin") + t.Setenv("PATH", strings.Join([]string{dir, "/bin", "/usr/bin"}, string(os.PathListSeparator))) } diff --git a/vcs/watch.go b/vcs/watch.go index 6250cb0..e1f2e3d 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -219,10 +219,11 @@ func (r *Repo) notIgnored(ctx context.Context, paths []string) ([]string, error) if err != nil { return nil, err } - ignored := strings.Split(out, "\x00") - return slices.DeleteFunc(paths, func(p string) bool { - return slices.Contains(ignored, "./"+p) - }), nil + ignored := map[string]bool{} + for p := range strings.SplitSeq(out, "\x00") { + ignored[p] = true + } + return slices.DeleteFunc(paths, func(p string) bool { return ignored["./"+p] }), nil } // sumRefs returns the sum of the files that change with HEAD, a ref, or @@ -240,8 +241,8 @@ func (w *Watcher) sumRefs() uint64 { // directory, which the worktrees of the repository share. if b, err := os.ReadFile(paths[0]); err == nil { ref, ok := strings.CutPrefix(strings.TrimSpace(string(b)), "ref: ") - if ok && !strings.Contains(ref, "..") { - paths = append(paths, filepath.Join(w.common, filepath.FromSlash(ref))) + if p, err := filepath.Localize(ref); ok && err == nil { // no ".." or "/" at the start + paths = append(paths, filepath.Join(w.common, p)) } } return sumPaths(paths) From ae89ea4dcfd8867e05e0f0e3280492a3c07a97f5 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 22:23:58 +0100 Subject: [PATCH 062/119] test: wait for rexdiff once, fail on an unknown script condition, and check the Stat errors --- test/cli_test.go | 8 ++++++-- test/fake_test.go | 4 +++- test/rex_test.go | 9 +++++++-- test/rexdiff_test.go | 33 +++++++++++++++------------------ test/upgrade_test.go | 3 ++- update/update_test.go | 6 +++--- 6 files changed, 36 insertions(+), 27 deletions(-) diff --git a/test/cli_test.go b/test/cli_test.go index c101022..6bd3718 100644 --- a/test/cli_test.go +++ b/test/cli_test.go @@ -1,6 +1,7 @@ package test import ( + "fmt" "os" "path/filepath" "strings" @@ -55,8 +56,11 @@ func TestScripts(t *testing.T) { } return nil }, - Condition: func(string) (bool, error) { - return hasRex, nil // [realrex] is the only condition + Condition: func(cond string) (bool, error) { + if cond != "realrex" { + return false, fmt.Errorf("unknown condition %q", cond) + } + return hasRex, nil }, }) } diff --git a/test/fake_test.go b/test/fake_test.go index e9ba18c..28acd7e 100644 --- a/test/fake_test.go +++ b/test/fake_test.go @@ -1,6 +1,8 @@ package test import ( + "errors" + "io/fs" "os" "path/filepath" "strconv" @@ -124,7 +126,7 @@ func (r *fakeRex) write(t *testing.T, name, content string) { func (r *fakeRex) calls(t *testing.T) string { t.Helper() b, err := os.ReadFile(filepath.Join(r.dir, "calls")) - if err != nil && !os.IsNotExist(err) { + if err != nil && !errors.Is(err, fs.ErrNotExist) { t.Fatal(err) } return string(b) diff --git a/test/rex_test.go b/test/rex_test.go index ae529c9..8a85365 100644 --- a/test/rex_test.go +++ b/test/rex_test.go @@ -1,12 +1,14 @@ package test import ( - "encoding/json" + "context" + "encoding/json/v2" "os" "os/exec" "strconv" "strings" "testing" + "time" ) // realRex runs rex in the session of a test with a real Rex. @@ -88,7 +90,10 @@ func TestRealRex(t *testing.T) { r := &realRex{t: t, bin: bin, session: "rexdiff-test-" + strconv.Itoa(os.Getpid())} r.run("new", r.session, "--cwd", repo, "--", "sh") t.Cleanup(func() { - kill := exec.Command(bin, "--autostart=false", "kill", r.session) //nolint:noctx // t.Context is done + // t.Context is done in a cleanup. + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + kill := exec.CommandContext(ctx, bin, "--autostart=false", "kill", r.session) kill.Env = append(os.Environ(), "HOME="+home) _ = kill.Run() }) diff --git a/test/rexdiff_test.go b/test/rexdiff_test.go index e0ea5b4..50e27db 100644 --- a/test/rexdiff_test.go +++ b/test/rexdiff_test.go @@ -41,22 +41,19 @@ func TestMain(m *testing.M) { testgit.Main(m) } -var ( - buildOnce sync.Once - binPath string - buildErr error -) +// buildDev builds rexdiff once. +var buildDev = sync.OnceValues(func() (string, error) { + return build(filepath.Join(buildDir, "dev"), "") +}) // binary returns the path of a rexdiff that the package builds once. func binary(t *testing.T) string { t.Helper() - buildOnce.Do(func() { - binPath, buildErr = build(filepath.Join(buildDir, "dev"), "") - }) - if buildErr != nil { - t.Fatal(buildErr) + bin, err := buildDev() + if err != nil { + t.Fatal(err) } - return binPath + return bin } // build builds rexdiff with the version into dir, and returns its path. @@ -96,8 +93,8 @@ type term struct { t *testing.T pty *os.File emu *vt.Emulator - mu sync.Mutex // guards emu - cmd *exec.Cmd + mu sync.Mutex // guards emu + wait func() error // waits for rexdiff once, and keeps its error done chan struct{} // closed when the screen gets no more output } @@ -119,10 +116,10 @@ func startBin(t *testing.T, bin, repo string, o opts) *term { cmd.WaitDelay = 2 * time.Second path := "/usr/bin:/bin:/usr/sbin:/sbin" if git, err := exec.LookPath("git"); err == nil { - path = filepath.Dir(git) + ":" + path + path = filepath.Dir(git) + string(os.PathListSeparator) + path } if o.path != "" { - path = o.path + ":" + path + path = o.path + string(os.PathListSeparator) + path } cmd.Env = append(os.Environ(), "PATH="+path, "TERM=xterm-256color") for _, k := range userEnv { @@ -137,7 +134,7 @@ func startBin(t *testing.T, bin, repo string, o opts) *term { if err != nil { t.Fatal(err) } - tm := &term{t: t, pty: f, emu: vt.NewEmulator(int(w), int(h)), cmd: cmd, done: make(chan struct{})} + tm := &term{t: t, pty: f, emu: vt.NewEmulator(int(w), int(h)), wait: sync.OnceValue(cmd.Wait), done: make(chan struct{})} go func() { defer close(tm.done) buf := make([]byte, 32<<10) @@ -158,7 +155,7 @@ func startBin(t *testing.T, bin, repo string, o opts) *term { // the emulator races with its Read. go func() { _, _ = io.Copy(f, tm.emu) }() t.Cleanup(func() { - _ = cmd.Wait() // t.Context is done, so Cancel stops rexdiff + _ = tm.wait() // t.Context is done, so Cancel stops rexdiff _ = f.Close() <-tm.done }) @@ -337,7 +334,7 @@ func waitFile(t *testing.T, path string, content func(string) bool) string { func (tm *term) exited() error { tm.t.Helper() errc := make(chan error, 1) - go func() { errc <- tm.cmd.Wait() }() + go func() { errc <- tm.wait() }() select { case err := <-errc: return err diff --git a/test/upgrade_test.go b/test/upgrade_test.go index 8e557ef..340fefb 100644 --- a/test/upgrade_test.go +++ b/test/upgrade_test.go @@ -4,6 +4,7 @@ import ( "os" "os/exec" "path/filepath" + "slices" "strings" "testing" ) @@ -17,7 +18,7 @@ func TestUpgradeAtStart(t *testing.T) { config := filepath.Join(t.TempDir(), "init.lua") env := []string{"REX_CONFIG=" + config} install := exec.CommandContext(t.Context(), binary(t), "install") - install.Env = append(os.Environ(), append(env, "REX_BIN_DIR="+rex.dir)...) + install.Env = slices.Concat(os.Environ(), env, []string{"REX_BIN_DIR=" + rex.dir}) if out, err := install.CombinedOutput(); err != nil { t.Fatalf("rexdiff install: %v\n%s", err, out) } diff --git a/update/update_test.go b/update/update_test.go index c77c5fa..7cfd4f7 100644 --- a/update/update_test.go +++ b/update/update_test.go @@ -323,11 +323,11 @@ func TestDownload(t *testing.T) { if b, _ := os.ReadFile(target); string(b) != want { t.Errorf("target file = %q, want %q", b, want) } - if info, _ := os.Lstat(link); info.Mode()&os.ModeSymlink == 0 { + if info, err := os.Lstat(link); err != nil || info.Mode()&os.ModeSymlink == 0 { t.Errorf("after Install: %s is not a symlink, want a symlink", link) } - if info, _ := os.Stat(target); info.Mode().Perm() != 0o755 { - t.Errorf("mode = %v, want 0755", info.Mode().Perm()) + if info, err := os.Stat(target); err != nil || info.Mode().Perm() != 0o755 { + t.Errorf("Stat = %v, %v; want mode 0755", info, err) } if entries, _ := os.ReadDir(filepath.Dir(target)); len(entries) != 1 { t.Errorf("the directory has %d files, want only rexdiff", len(entries)) From 71d8433928304a3c2812cdbc64c5d0066b1ab839 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 22:36:47 +0100 Subject: [PATCH 063/119] docs: move the guides to .doc, describe the new tests, and add screenshots --- .asset/arch.excalidraw | 1585 +++++++++++++++++++++++++++++++++++ .asset/arch.json | 63 ++ .asset/arch.png | Bin 0 -> 243812 bytes .asset/arch.svg | 2 + .asset/changes.png | Bin 0 -> 166441 bytes .asset/comment.png | Bin 0 -> 176250 bytes .asset/files.png | Bin 0 -> 117049 bytes .asset/help.png | Bin 0 -> 266777 bytes .asset/list.png | Bin 0 -> 41944 bytes {assets => .asset}/logo.png | Bin .asset/review.png | Bin 0 -> 193181 bytes .asset/search.png | Bin 0 -> 104559 bytes .asset/sent.png | Bin 0 -> 76901 bytes .asset/split.png | Bin 0 -> 159322 bytes .asset/test.excalidraw | 1024 ++++++++++++++++++++++ .asset/test.json | 36 + .asset/test.png | Bin 0 -> 154474 bytes .asset/test.svg | 2 + .doc/arch.md | 89 ++ .doc/dev.md | 77 ++ .doc/test.md | 39 + .doc/user.md | 234 ++++++ README.md | 212 +---- 23 files changed, 3160 insertions(+), 203 deletions(-) create mode 100644 .asset/arch.excalidraw create mode 100644 .asset/arch.json create mode 100644 .asset/arch.png create mode 100644 .asset/arch.svg create mode 100644 .asset/changes.png create mode 100644 .asset/comment.png create mode 100644 .asset/files.png create mode 100644 .asset/help.png create mode 100644 .asset/list.png rename {assets => .asset}/logo.png (100%) create mode 100644 .asset/review.png create mode 100644 .asset/search.png create mode 100644 .asset/sent.png create mode 100644 .asset/split.png create mode 100644 .asset/test.excalidraw create mode 100644 .asset/test.json create mode 100644 .asset/test.png create mode 100644 .asset/test.svg create mode 100644 .doc/arch.md create mode 100644 .doc/dev.md create mode 100644 .doc/test.md create mode 100644 .doc/user.md diff --git a/.asset/arch.excalidraw b/.asset/arch.excalidraw new file mode 100644 index 0000000..ba32588 --- /dev/null +++ b/.asset/arch.excalidraw @@ -0,0 +1,1585 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "http://127.0.0.1:57953", + "elements": [ + { + "id": "title", + "type": "text", + "x": 360, + "y": -100, + "width": 332.9478759765625, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a0", + "roundness": null, + "seed": 10834183, + "version": 2, + "versionNonce": 578711913, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018506, + "link": null, + "locked": false, + "text": "The packages of rexdiff", + "fontSize": 28, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "The packages of rexdiff", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "action", + "type": "rectangle", + "x": 380, + "y": 0, + "width": 280, + "height": 80, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a1", + "roundness": null, + "seed": 1138321129, + "version": 3, + "versionNonce": 375558473, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "_pnHSHzS5QJsZPZe-wzBF" + }, + { + "id": "a-action", + "type": "arrow" + } + ], + "updated": 1792952018507, + "link": null, + "locked": false + }, + { + "id": "cmd", + "type": "rectangle", + "x": 380, + "y": 160, + "width": 280, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a2", + "roundness": null, + "seed": 235116583, + "version": 4, + "versionNonce": 742626057, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "yXyTstSk4oPXD4ultzBHQ" + }, + { + "id": "a-action", + "type": "arrow" + }, + { + "id": "a-cmd", + "type": "arrow" + } + ], + "updated": 1792952018507, + "link": null, + "locked": false + }, + { + "id": "tui", + "type": "rectangle", + "x": 380, + "y": 320, + "width": 280, + "height": 80, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a3", + "roundness": null, + "seed": 2008981961, + "version": 8, + "versionNonce": 1594297289, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "-0nbC-L_RuoARkEhwc8yu" + }, + { + "id": "a-cmd", + "type": "arrow" + }, + { + "id": "a-helpers", + "type": "arrow" + }, + { + "id": "a-diff", + "type": "arrow" + }, + { + "id": "a-vcs", + "type": "arrow" + }, + { + "id": "a-rex", + "type": "arrow" + }, + { + "id": "a-update", + "type": "arrow" + } + ], + "updated": 1792952018507, + "link": null, + "locked": false + }, + { + "id": "helpers", + "type": "rectangle", + "x": 760, + "y": 320, + "width": 280, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a4", + "roundness": null, + "seed": 1649146695, + "version": 3, + "versionNonce": 332506025, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "7pHsGUCfjmZUkaN_nhh45" + }, + { + "id": "a-helpers", + "type": "arrow" + } + ], + "updated": 1792952018507, + "link": null, + "locked": false + }, + { + "id": "diff", + "type": "rectangle", + "x": 0, + "y": 520, + "width": 200, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a5", + "roundness": null, + "seed": 888766633, + "version": 4, + "versionNonce": 350973321, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "vL9ymJgaUTD-i7pyNtkZ-" + }, + { + "id": "a-diff", + "type": "arrow" + }, + { + "id": "b-diff", + "type": "arrow" + } + ], + "updated": 1792952018507, + "link": null, + "locked": false + }, + { + "id": "vcs", + "type": "rectangle", + "x": 280, + "y": 520, + "width": 200, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a6", + "roundness": null, + "seed": 1373305447, + "version": 4, + "versionNonce": 653418313, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "RaMj_L41u-zbSYihabeof" + }, + { + "id": "a-vcs", + "type": "arrow" + }, + { + "id": "b-vcs", + "type": "arrow" + } + ], + "updated": 1792952018507, + "link": null, + "locked": false + }, + { + "id": "rex", + "type": "rectangle", + "x": 560, + "y": 520, + "width": 200, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a7", + "roundness": null, + "seed": 154502025, + "version": 4, + "versionNonce": 968352009, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "0wfdpH4IBZCjEM1zBLfzF" + }, + { + "id": "a-rex", + "type": "arrow" + }, + { + "id": "b-rex", + "type": "arrow" + } + ], + "updated": 1792952018507, + "link": null, + "locked": false + }, + { + "id": "update", + "type": "rectangle", + "x": 840, + "y": 520, + "width": 200, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a8", + "roundness": null, + "seed": 1904022919, + "version": 4, + "versionNonce": 2060972745, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "fJ4fsTwF1FB1D1XCLrXKP" + }, + { + "id": "a-update", + "type": "arrow" + }, + { + "id": "b-update", + "type": "arrow" + } + ], + "updated": 1792952018507, + "link": null, + "locked": false + }, + { + "id": "diffview", + "type": "rectangle", + "x": 0, + "y": 680, + "width": 200, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a9", + "roundness": null, + "seed": 1085155945, + "version": 3, + "versionNonce": 1914098793, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "Wla9gjl6aGmlu0hBiafLN" + }, + { + "id": "b-diff", + "type": "arrow" + } + ], + "updated": 1792952018507, + "link": null, + "locked": false + }, + { + "id": "git", + "type": "rectangle", + "x": 280, + "y": 680, + "width": 200, + "height": 80, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aA", + "roundness": null, + "seed": 141479079, + "version": 3, + "versionNonce": 299470377, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "qGxR8S6ftdekpJAzIOVs9" + }, + { + "id": "b-vcs", + "type": "arrow" + } + ], + "updated": 1792952018507, + "link": null, + "locked": false + }, + { + "id": "rexcli", + "type": "rectangle", + "x": 560, + "y": 680, + "width": 200, + "height": 80, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aB", + "roundness": null, + "seed": 338621769, + "version": 3, + "versionNonce": 1007212521, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "d1pthS-Y3x9_1msBa5Ylp" + }, + { + "id": "b-rex", + "type": "arrow" + } + ], + "updated": 1792952018507, + "link": null, + "locked": false + }, + { + "id": "gh", + "type": "rectangle", + "x": 840, + "y": 680, + "width": 200, + "height": 80, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aC", + "roundness": null, + "seed": 1113366471, + "version": 3, + "versionNonce": 180400553, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "EjPQN8_Z2Wb3s9Gctbhmr" + }, + { + "id": "b-update", + "type": "arrow" + } + ], + "updated": 1792952018507, + "link": null, + "locked": false + }, + { + "id": "a-action", + "type": "arrow", + "x": 520, + "y": 80, + "width": 0, + "height": 80, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aD", + "roundness": null, + "seed": 387146793, + "version": 4, + "versionNonce": 1673577415, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.5 + ], + [ + 0, + 79.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "action", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "cmd", + "focus": 0, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "a-cmd", + "type": "arrow", + "x": 520, + "y": 240, + "width": 0, + "height": 80, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aE", + "roundness": null, + "seed": 560140007, + "version": 4, + "versionNonce": 1505345031, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.5 + ], + [ + 0, + 79.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "cmd", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "tui", + "focus": 0, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "a-helpers", + "type": "arrow", + "x": 660, + "y": 360, + "width": 100, + "height": 0, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aF", + "roundness": null, + "seed": 1699149577, + "version": 4, + "versionNonce": 686368839, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "points": [ + [ + 0.5, + 0 + ], + [ + 99.5, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "tui", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "helpers", + "focus": 0, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "a-diff", + "type": "arrow", + "x": 420, + "y": 400, + "width": 320, + "height": 120, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aG", + "roundness": null, + "seed": 806263303, + "version": 4, + "versionNonce": 1785922183, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "points": [ + [ + -0.5, + 0.5 + ], + [ + -319.5, + 119.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "tui", + "focus": -0.02702702702702681, + "gap": 1 + }, + "endBinding": { + "elementId": "diff", + "focus": -0.5161290322580637, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "a-vcs", + "type": "arrow", + "x": 480, + "y": 400, + "width": 100, + "height": 120, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aH", + "roundness": null, + "seed": 289746409, + "version": 4, + "versionNonce": 1048267975, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "points": [ + [ + -0.5, + 0.5 + ], + [ + -99.5, + 119.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "tui", + "focus": 0.03846153846153916, + "gap": 1 + }, + "endBinding": { + "elementId": "vcs", + "focus": -0.24999999999999953, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "a-rex", + "type": "arrow", + "x": 560, + "y": 400, + "width": 100, + "height": 120, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aI", + "roundness": null, + "seed": 1935393063, + "version": 4, + "versionNonce": 203818759, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "points": [ + [ + 0.5, + 0.5 + ], + [ + 99.5, + 119.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "tui", + "focus": -0.038461538461538415, + "gap": 1 + }, + "endBinding": { + "elementId": "rex", + "focus": 0.25000000000000006, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "a-update", + "type": "arrow", + "x": 620, + "y": 400, + "width": 320, + "height": 120, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aJ", + "roundness": null, + "seed": 1377405129, + "version": 4, + "versionNonce": 1100427591, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "points": [ + [ + 0.5, + 0.5 + ], + [ + 319.5, + 119.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "tui", + "focus": 0.02702702702702745, + "gap": 1 + }, + "endBinding": { + "elementId": "update", + "focus": 0.5161290322580646, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "b-diff", + "type": "arrow", + "x": 100, + "y": 600, + "width": 0, + "height": 80, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aK", + "roundness": null, + "seed": 481756231, + "version": 4, + "versionNonce": 334678919, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.5 + ], + [ + 0, + 79.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "diff", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "diffview", + "focus": 0, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "b-vcs", + "type": "arrow", + "x": 380, + "y": 600, + "width": 0, + "height": 80, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aL", + "roundness": null, + "seed": 1902086057, + "version": 4, + "versionNonce": 1063048647, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.5 + ], + [ + 0, + 79.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "vcs", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "git", + "focus": 0, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "b-rex", + "type": "arrow", + "x": 660, + "y": 600, + "width": 0, + "height": 80, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aM", + "roundness": null, + "seed": 2080170855, + "version": 4, + "versionNonce": 1190744071, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.5 + ], + [ + 0, + 79.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "rex", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "rexcli", + "focus": 0, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "b-update", + "type": "arrow", + "x": 940, + "y": 600, + "width": 0, + "height": 80, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aN", + "roundness": null, + "seed": 2034412169, + "version": 4, + "versionNonce": 887896647, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.5 + ], + [ + 0, + 79.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "update", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "gh", + "focus": 0, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "note", + "type": "text", + "x": 0, + "y": 800, + "width": 677.5194091796875, + "height": 20, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aO", + "roundness": null, + "seed": 830070407, + "version": 2, + "versionNonce": 179813353, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018506, + "link": null, + "locked": false, + "text": "Dashed boxes are programs outside rexdiff. Arrows point from the caller to the callee.", + "fontSize": 16, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Dashed boxes are programs outside rexdiff. Arrows point from the caller to the callee.", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "_pnHSHzS5QJsZPZe-wzBF", + "type": "text", + "x": 457.8400421142578, + "y": 15, + "width": 124.31991577148438, + "height": 50, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aP", + "roundness": null, + "seed": 1788941095, + "version": 3, + "versionNonce": 68901223, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "text": "Rex action\nShift+Cmd+R", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "action", + "originalText": "Rex action\nShift+Cmd+R", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "yXyTstSk4oPXD4ultzBHQ", + "type": "text", + "x": 460.550048828125, + "y": 175, + "width": 118.89990234375, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aQ", + "roundness": null, + "seed": 1669469767, + "version": 3, + "versionNonce": 1626248329, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "text": "cmd/rexdiff\nflags, install", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "cmd", + "originalText": "cmd/rexdiff\nflags, install", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "-0nbC-L_RuoARkEhwc8yu", + "type": "text", + "x": 434.99005126953125, + "y": 335, + "width": 170.0198974609375, + "height": 50, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aR", + "roundness": null, + "seed": 462796135, + "version": 3, + "versionNonce": 1515820167, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "text": "tui\nBubble Tea model", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "tui", + "originalText": "tui\nBubble Tea model", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "7pHsGUCfjmZUkaN_nhh45", + "type": "text", + "x": 814.8900604248047, + "y": 335, + "width": 170.21987915039062, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aS", + "roundness": null, + "seed": 1244164231, + "version": 3, + "versionNonce": 1092426601, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "text": "internal helpers\ntree, search, turn", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "helpers", + "originalText": "internal helpers\ntree, search, turn", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "vL9ymJgaUTD-i7pyNtkZ-", + "type": "text", + "x": 18.05005645751953, + "y": 535, + "width": 163.89988708496094, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aT", + "roundness": null, + "seed": 150390695, + "version": 3, + "versionNonce": 1063480231, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "text": "diff\nrender, comments", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "diff", + "originalText": "diff\nrender, comments", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "RaMj_L41u-zbSYihabeof", + "type": "text", + "x": 306.44005584716797, + "y": 535, + "width": 147.11988830566406, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aU", + "roundness": null, + "seed": 103627463, + "version": 3, + "versionNonce": 1805108809, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "text": "vcs\ntrees, files, PR", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "vcs", + "originalText": "vcs\ntrees, files, PR", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "0wfdpH4IBZCjEM1zBLfzF", + "type": "text", + "x": 593.0700531005859, + "y": 535, + "width": 133.85989379882812, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aV", + "roundness": null, + "seed": 1986546151, + "version": 3, + "versionNonce": 258301639, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "text": "rex\nagents, paste", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "rex", + "originalText": "rex\nagents, paste", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "fJ4fsTwF1FB1D1XCLrXKP", + "type": "text", + "x": 901.1000366210938, + "y": 535, + "width": 77.7999267578125, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aW", + "roundness": null, + "seed": 1186231559, + "version": 3, + "versionNonce": 188355881, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "text": "update\nreleases", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "update", + "originalText": "update\nreleases", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "Wla9gjl6aGmlu0hBiafLN", + "type": "text", + "x": 21.39007568359375, + "y": 695, + "width": 157.2198486328125, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aX", + "roundness": null, + "seed": 244202535, + "version": 3, + "versionNonce": 1828449767, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "text": "internal/diffview\nchroma, lipgloss", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "diffview", + "originalText": "internal/diffview\nchroma, lipgloss", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "qGxR8S6ftdekpJAzIOVs9", + "type": "text", + "x": 325.05003356933594, + "y": 695, + "width": 109.89993286132812, + "height": 50, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aY", + "roundness": null, + "seed": 1105338183, + "version": 3, + "versionNonce": 1668253705, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "text": "git\ngh, glab, az", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "git", + "originalText": "git\ngh, glab, az", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "d1pthS-Y3x9_1msBa5Ylp", + "type": "text", + "x": 599.4300384521484, + "y": 695, + "width": 121.13992309570312, + "height": 50, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aZ", + "roundness": null, + "seed": 588029543, + "version": 3, + "versionNonce": 1932761351, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "text": "rex command\nRex server", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "rexcli", + "originalText": "rex command\nRex server", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "EjPQN8_Z2Wb3s9Gctbhmr", + "type": "text", + "x": 864.5700607299805, + "y": 695, + "width": 150.85987854003906, + "height": 50, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aa", + "roundness": null, + "seed": 1960458631, + "version": 3, + "versionNonce": 1043570409, + "isDeleted": false, + "boundElements": null, + "updated": 1792952018507, + "link": null, + "locked": false, + "text": "GitHub releases\nbrew, go", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "gh", + "originalText": "GitHub releases\nbrew, go", + "autoResize": true, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/.asset/arch.json b/.asset/arch.json new file mode 100644 index 0000000..ef237ae --- /dev/null +++ b/.asset/arch.json @@ -0,0 +1,63 @@ +[ + { "type": "text", "id": "title", "x": 360, "y": -100, "text": "The packages of rexdiff", "fontSize": 28 }, + + { "type": "rectangle", "id": "action", "x": 380, "y": 0, "width": 280, "height": 80, + "strokeStyle": "dashed", "strokeColor": "muted", + "label": { "text": "Rex action\nShift+Cmd+R" } }, + { "type": "rectangle", "id": "cmd", "x": 380, "y": 160, "width": 280, "height": 80, + "label": { "text": "cmd/rexdiff\nflags, install" } }, + { "type": "rectangle", "id": "tui", "x": 380, "y": 320, "width": 280, "height": 80, + "strokeColor": "accent", "backgroundColor": "accent-fill", + "label": { "text": "tui\nBubble Tea model" } }, + { "type": "rectangle", "id": "helpers", "x": 760, "y": 320, "width": 280, "height": 80, + "label": { "text": "internal helpers\ntree, search, turn" } }, + + { "type": "rectangle", "id": "diff", "x": 0, "y": 520, "width": 200, "height": 80, + "label": { "text": "diff\nrender, comments" } }, + { "type": "rectangle", "id": "vcs", "x": 280, "y": 520, "width": 200, "height": 80, + "label": { "text": "vcs\ntrees, files, PR" } }, + { "type": "rectangle", "id": "rex", "x": 560, "y": 520, "width": 200, "height": 80, + "label": { "text": "rex\nagents, paste" } }, + { "type": "rectangle", "id": "update", "x": 840, "y": 520, "width": 200, "height": 80, + "label": { "text": "update\nreleases" } }, + + { "type": "rectangle", "id": "diffview", "x": 0, "y": 680, "width": 200, "height": 80, + "label": { "text": "internal/diffview\nchroma, lipgloss" } }, + { "type": "rectangle", "id": "git", "x": 280, "y": 680, "width": 200, "height": 80, + "strokeStyle": "dashed", "strokeColor": "muted", + "label": { "text": "git\ngh, glab, az" } }, + { "type": "rectangle", "id": "rexcli", "x": 560, "y": 680, "width": 200, "height": 80, + "strokeStyle": "dashed", "strokeColor": "muted", + "label": { "text": "rex command\nRex server" } }, + { "type": "rectangle", "id": "gh", "x": 840, "y": 680, "width": 200, "height": 80, + "strokeStyle": "dashed", "strokeColor": "muted", + "label": { "text": "GitHub releases\nbrew, go" } }, + + { "type": "arrow", "id": "a-action", "x": 520, "y": 80, "points": [[0, 0], [0, 80]], + "start": { "id": "action" }, "end": { "id": "cmd" }, "strokeColor": "muted" }, + { "type": "arrow", "id": "a-cmd", "x": 520, "y": 240, "points": [[0, 0], [0, 80]], + "start": { "id": "cmd" }, "end": { "id": "tui" }, "strokeColor": "muted" }, + { "type": "arrow", "id": "a-helpers", "x": 660, "y": 360, "points": [[0, 0], [100, 0]], + "start": { "id": "tui" }, "end": { "id": "helpers" }, "strokeColor": "muted" }, + + { "type": "arrow", "id": "a-diff", "x": 420, "y": 400, "points": [[0, 0], [-320, 120]], + "start": { "id": "tui" }, "end": { "id": "diff" }, "strokeColor": "accent" }, + { "type": "arrow", "id": "a-vcs", "x": 480, "y": 400, "points": [[0, 0], [-100, 120]], + "start": { "id": "tui" }, "end": { "id": "vcs" }, "strokeColor": "accent" }, + { "type": "arrow", "id": "a-rex", "x": 560, "y": 400, "points": [[0, 0], [100, 120]], + "start": { "id": "tui" }, "end": { "id": "rex" }, "strokeColor": "accent" }, + { "type": "arrow", "id": "a-update", "x": 620, "y": 400, "points": [[0, 0], [320, 120]], + "start": { "id": "tui" }, "end": { "id": "update" }, "strokeColor": "accent" }, + + { "type": "arrow", "id": "b-diff", "x": 100, "y": 600, "points": [[0, 0], [0, 80]], + "start": { "id": "diff" }, "end": { "id": "diffview" }, "strokeColor": "muted" }, + { "type": "arrow", "id": "b-vcs", "x": 380, "y": 600, "points": [[0, 0], [0, 80]], + "start": { "id": "vcs" }, "end": { "id": "git" }, "strokeColor": "muted" }, + { "type": "arrow", "id": "b-rex", "x": 660, "y": 600, "points": [[0, 0], [0, 80]], + "start": { "id": "rex" }, "end": { "id": "rexcli" }, "strokeColor": "muted" }, + { "type": "arrow", "id": "b-update", "x": 940, "y": 600, "points": [[0, 0], [0, 80]], + "start": { "id": "update" }, "end": { "id": "gh" }, "strokeColor": "muted" }, + + { "type": "text", "id": "note", "x": 0, "y": 800, "fontSize": 16, "strokeColor": "muted", + "text": "Dashed boxes are programs outside rexdiff. Arrows point from the caller to the callee." } +] diff --git a/.asset/arch.png b/.asset/arch.png new file mode 100644 index 0000000000000000000000000000000000000000..cd641e2e7da6a65e998da961db6503efee39fb45 GIT binary patch literal 243812 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ލnH*QeU2bk+a%-IJu{qpdjJ)9JBxT=`fG zJM%ar%Vk79S^oQwOT3QShvTrJq>-oI*{x=>%92!U8P}E^XSA^J> zU+Q)NS#Nm_|c=4SUXgXLI95*N_LkxvjC z!;|nBP}a86Y@*BdsSD z(p|UXq|yw#+8t@A>Lynl|BD!MwR+jD*`U~+e*5E73#wuLl{Gv#&d zLKN#=?C%?@a;29e+mDr~&MgAwu*++=IdPrVhcU2`O!cfM1q_8c&QE@Ch`-hwukU+o zA?rH<@Mm6H0q%Gg3cXa^P8nqsyiJTElLlu4c6QzcuJX!$i&8T&lROctlJu2ZOEA&l0ftp}=G4e*nkuPn-mgZ0 zBuq$#u!SjoU#{| zlql<3k%NP{N*w!_S3xVWkBc9* zX8l80WA@zQKqPWNIO6L}q;5ut=M{`M4~-kYO(Spn2TtPLs?pQ^#+J#i zUUFAPT`>&=CKv|_FaH5OZqCaI2I=7~^c?SMS`g1OdHzK|jIn{kC>V7|qp9FhVK1+- zA@6r}T=6E(XiQ>s-n-^7ab}>?Rj|+CgwR%W0Xp`sy4}WwZAuu!IBUtol1+scPioK( zA~MKgLdk1Y)$DGetC3>keuhikzvYy}C2_3k#pxOrA8->s} zujI|pfi%DDDJ`Z_^Gp=D-uRTGB#2@Lz!8w~=(^Y|#2_-^V%J{sj`K2d;#(ocy_9vc zt{NLgTFKGkoy$m3PQH32RjHkc)9;p1(76As=@o+^2yt!qlSk<7G01m*(E~qJygN{R zro)e?0U8A^OVrdA%|7^w&B0nq%%kptt=|m7L=F2;%Avmg zEBHQxWmg(sQuxYpB8UE19@c_QM5ba7;RylYor8}C2=FfuK0PWMO!xrVp}_~|zbFb% zR}3_?(G4@d_V!a1{MFW{uKX&256tdf9ZwMXWZ*-=Q%?4Nwfnggcr*(i3?_7^P7;LG;J*1w;Z9c` z8zpyVB;#)EFPJ4X%x7ZE?~RW{ZVkf+RkdLo0oPL_e>W>2bX!h712Dx8Ms=4)&3lZp zm+gj`0hPNY%7kW|w8l#W9~Vd(XBiW|)0o!Om?CXWiE(J-ke zL`xgdG{TLc*VuU$(Tyqq!UAEfB^}QjK1kPe)mo>ipv*mkD7Hc8u@mh_V?08)zkSmX z*C64bAqbB!@97GD4ixp2^Xb8`xOpJtHWYc$r>&_iW+-PAKm;65;~|TZw+Y;5(eRQV zA_TEYx`xqTA9upYB3XlPmFps!?%=iPSB9vj^pdL2zyk>d)YSD@`jZ!gSUt)%lJR_B z_FE4G$0-m#dxXsQKuLi0H_+I&7t6q!V?hRw8a({GTWS9UY23pEZh4LjIJ8v^H_Ge| z-dn;Z^t)z*`>uF^gM*?{kuFR!d}`{R%FU%>LoK1iYJ5NeuR-J3v9T}>|EqBv{ANCf zCWzEqKg0eJx={L$uAJkFgfDJm6C>N0ke&chR?Go36ut3}RqUgDKV66HT$%Jq0GZ{o zpl3+UaMG+CsLE%7s;Ww671<2V|ayi z5dW^^>pVNWKAyS+2j74GM2}(`(EBnw?q|HcMB0YY8TUq$v}E39rTY!ZYS*elk>6aJ z(+W@u#yI?}ͼ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
    @Ccv-;q~AK*LCZv|WV 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

    bDP+faDpU-T? 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 literal 0 HcmV?d00001 diff --git a/.asset/arch.svg b/.asset/arch.svg new file mode 100644 index 0000000..178b8ab --- /dev/null +++ b/.asset/arch.svg @@ -0,0 +1,2 @@ +The packages of rexdiffRex actionShift+Cmd+Rcmd/rexdiffflags, installtuiBubble Tea modelinternal helperstree, search, turndiffrender, commentsvcstrees, files, PRrexagents, pasteupdatereleasesinternal/diffviewchroma, lipglossgitgh, glab, azrex commandRex serverGitHub releasesbrew, goDashed boxes are programs outside rexdiff. Arrows point from the caller to the callee. \ No newline at end of file diff --git a/.asset/changes.png b/.asset/changes.png new file mode 100644 index 0000000000000000000000000000000000000000..16f246f40040f10ab10484df313e5b86151df130 GIT binary patch literal 166441 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 GGywpRez(d1 literal 0 HcmV?d00001 diff --git a/.asset/comment.png b/.asset/comment.png new file mode 100644 index 0000000000000000000000000000000000000000..cbf8fde2c031d75f63e02494182867ffd41fac9d GIT binary patch literal 176250 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
    XHSRxTD%3QFJN`qI6ZvU;J$xnl-g=a=i2 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
    g1+q7pyvQVrhh0khl^aiXD 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 literal 0 HcmV?d00001 diff --git a/.asset/files.png b/.asset/files.png new file mode 100644 index 0000000000000000000000000000000000000000..678aa8c6706c838d323517dcc6fbb37946e5bb36 GIT binary patch literal 117049 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

    c>AglpK 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

    ~o*(?U{P3=9m%R*sA;is#bdLOy{=svP{ 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 literal 0 HcmV?d00001 diff --git a/.asset/help.png b/.asset/help.png new file mode 100644 index 0000000000000000000000000000000000000000..8cf6b3d7be4c8f443066b54800914d394ca6e534 GIT binary patch literal 266777 zcmeFZ^;etU(l*|fLR)B|rMR}ZTW~E7#ogV#K+qt?ixhV)ZpGaT6eunscyNcH!3n%M z=XpM7oxbZ`>-!IU@1K%cx%b}L_v~wCu9>;Rl@+DmpcA1#dGh3qtc--}lP9k-pFDZ~ zKd9-+OG_qFPBlC1$SU1s?dS%^?rPs zFSNj+tDoqm133-JKa>5l+*I4u@vbTAzlT3R2&R;~M7raN6qgV`v-YtWa z2!6aVMb7kJ7Y(Bm+JAk0^28WhyyVqik^~|#g}(%;({FA6wc!6;zY0Q?-~Z>^zdq1# z1*iWdU@QGN{rtZrUuECq()_pJiM;JguBZPkF;@Nmm-7GGmG>O)hZgldBz+DRi);Ei zAtL7FwE6SDH}1*%LC2;=d(Di|8}jnPIvn^dzeir6LRVd({PDZ7!(45m~if2+*VdPqu)Ju35h2JnbypWi+p`(@Ni4x z-xDGt={R!FRryPge&Ku)EgH21r16)oGQa&yh25g>Sd%(XJh<%{oX*j*G%%3zY~+X+ zJa#FB@z>O9-}04aj;z(_a8xm6JO)e>M{C}2?TwZ|h>~;_P+hHx=S`(D|2i6Mg*B5j z76H$OxGc_CLfJFq&C*e#9ZKj^80jYK7hzIC-L}N%!FYeo(jPW@WL-dy6JDTN>KnCa z=M6BEqQWlaO0TSB37Y)m6#mx{_^S3Y1GQ)#hQwuzo4fu@9)>{UO20|F!Cby%6~#b^Q{xb6`Y)&BJ7UER_gv*5*U*h#~T#m;$M?bVvC+RY&G!pZ#V?U zbPSKlKPZET7b72FE-Z{soB6VS?M}dC$%yiWLo8RB3H!8I+d;E#zURp=&zAj>>klHc%WVZ^z7e76 zsx?hw+Y4#+jTse|<(W$g{PeXeP}QPk#Ig>l2TcuodW#FG zldA_CfRmHPeoQlejloF#v8&V5+&A0B%z8p&vB~iyL_|F~Q_GHXHFi9%4Do~Jex1Vb zkFvi_GoX%a1iNNa4UHU>Maq8)vFZIIMjZh}0?5$^`eKL8@98zmA=aF_Kbzk^Evoh) zH_9S`^(Kof>%(_=qB+dQrSo-a=T3W5QjC;Ub^9}?W-1M3ySSM7q07E6Qp54ENfOy9 zp$_Z)qaqtjs6}~z*&M0InVA_$wp{xSY zL(_@Jgzfqwwi2x)`a06vaB=ZdlB0A{54dI@Zbty)Uox6)ArXy@jl}*S3{aDRq8rrA zSpSdtRN`jAk6*t!vAB46$j8TW%_9lZP|tTTNo?^_61VX)Pp)HA&ch86PM8KGzniWJ zUx?*?87;#->=SjQn;jV$nmSladncp#`SrA|kg&Renp}>em6g&y2{}G78Qy}2B09>@ z&=5vsWW|hH*C^rZac2BNrm-(D2jT0QlK~+Ol<~*)W4xQ2=5(;o$vBF}g_Pxp=czlV zq2UIcn3MU^2-@#ZfhjdxpnowK{_0t7EarCxhVs-&sXK@7Qf3XhcX!<(rDMZ)R7UJZ zMmZC22i%N9LL_OF@R|Qdp?;}v9vpxWZ@SU|R(N`^oNBcFd?5|5d4*0^5vt(@&CS=a zre%wwLN&H&!Mn^iox;K+sd0nmF(MB#=IR9l(k%~`CVAG=wlU!}r|0K-jpnC~FoDs8 z=55AvPj2Yk*#d;I&y?Mj;q3Bqoi-hZ+=Z`3w?enpdW}`U{nT|p1&0V*zNzC5vwjyi zB8xXAKtsdN!4ZhpZ_dH~#P_G(+jN4x+dlfzsT|H}ePID@CKrbr6WzYl&~&y6_1Wo( z@66*PsiGi0OYCnE5e1|+uCC|W!Rd*XH+OfF<1fTUZ6YzRDJgqOm34GN{@3kV#d(X3 z?SgnSTUc1ASSB|}n-oR3SMO5)^yy13lWNBfMDhc+LaHFYLQzjoUVo8g{$w2C^Xt3u zbiSZxV(3$rmIdUi7ubUK>T#{bIV>*}5XH^|b+vsIr$7P+M`L%87N{+^v9hwWQ*@=W zxDCGd9M#q=FCPaTRU;6*!^I%PPbTEvu5i5Tu1yiA471X=e@$F8mL`<2?$CrqAwb(y z+A<$`8vmIZCji_t5kGN%zCE(s0>bk9TpaUwx467|#Lk7a#l!aG30w3fDX&adUlz@4 z^#8HWY#oB9zs)`;#WU+wXy(3siq|Y)(e!Fzou1{@t5;;r856mxrRwL~V{1x$)sL%{ z25s~(?dmVxd6F0esn)lbm%Y+4keQj9cQ|*f)EakKWV(&!>>ICn(^RIo;iCM~bLIQ= zL7lmdC?V;i+Yv)$t+$~N#uV_ZX1*pMKQ}+W*Z9lxMYxlztDJ`0=+Ktj-UYol1nqiu z26Aq7ba-fP<;X)o_pbQ2Tez#XeuJ*03L|lBFECbPT8syY&NR;uhJgRE3~UA}kkd;e z_xAHKkW&Z32<=A`QvZB*Dm;*QhK> zA}A>Cd3f|^S6nwXHpWCAmo_)e1C%F}S5Eqgowl~N+D6~wlD7CE_BdlyON~>Oj5+sp zfp=Hr*Zad&P|Js2Uyn$M=uTOffx$T9;^v%{*QxuyMYOvc=}Dxe4H(^w+Zp(V&gr&$ zPKLg*3JDPi#bTmoLF^w?K^QKEG#KZkvB-tbdap#zc2YhUY8g6v>5KUo|Innu-qY2y zE3@r|%9^`5dXq_1d>z61`WGIziuxQGV-{$VfHZ_j$OAD8pr19mnO^R@lPLp4lWFM;Fq-*^7v&<4y zu2!nX5&7sHcCZjR<323pzcP@lHIC6@>Pw=xoC7^s z(5f_0(@))hu(PV&s@=cT>Ky5S#n)342Kd?97}TBiD)b#Aly^_DWc!w{^poP^R`H2G zq{xMk(&)LC?+tV$JtFw4!1f*)X%9op_{B7mwt@E+c#$3LivGM+dm&hLKO3`!<}P+< zSkl+7v3)xW&3kMAcn#`yOx}-Oh2-3;-^aA!gURzc4BVZEVdF>KdL&hkn-%BvovIA& zHwxXbl!89#62|?79533sLI`|EZ>KM~>^12O`K9{(MOL=xWXj0P_M@fWoyS{AtY?_p z+-Jp9k~T*zwrF~oSn4j|lyOWiShvLzw97wnlqP?tDq^9UGcbz|`%>RZoONp9XrFb` z(aO=wvKV^QY3bO?M$P{D{W@#YV%xqhKRV;W!=IjRXQrZ}`tVCBe-a1; za&mLy;^AI3ZNl$x@rd@tjrtDmof|aauS&JiM6Ux4x&< zKe^PI8@IBbB`kak*?2(TxPK?FxbEN5dUh5zZ}KxIhn2^$cF1ds1`)o@I+mE6bPi&* zBHnFkB5pqN(t(S=Cn1qQz2$R1F!nhiHn*1frdyG>2M@oyy+uQ{MIaEn<48Ck<&I*^ zk?M=(HePTfHKO~j%Y;37%*u>2$jto@7vQC#(NL2=s~FmN`1R`(eqb&$6$_0nO#+06 z6EBnZW75$2hUxBiuq~f+-Zww?`5Q`#o;}{!qbU=r3V!|%`LME*W-2;5HU^47O;(}A zgpA`$(p;rvO&Wjnich!Vju`S`1MHJ3_Gy@Yb7DXs&ZBsNL+$a$QFGzzf1A^Q4MfC;n zAS{uYD_1=K`K^?(EPwzV?>F1B$jC_H$3w<4RNZQ0VIlZ}-6Q1S!tq?~HSnlqM?y;K z`u1ij%}GH4b_o;kTez=Vw2#DN)^BrsgS+f^PMRj>KBHqrO--xHtl%m)T$$A-g4hH+ zjA$91AH1{*;RZv$$rWk}T~DAay#{9AZ6=JffqUr*Y*m~8M5VzA_w>`aSy?8{HPqFG zA9ml9<;Y}gn8k?naHT{?MfkvL!gBl{LV{jkI-h4c_wUUbdVF7eUwYI(KFh<+y?t0W ze!GE!H9LDX{c=1F47P-iJ+_%Ww71x&ar9}FYtm3rEg|keH>_@hh4@CmNz^6ibbVst zw0T)8Iu_Q(1D?qA$RC-myX=*7HIp(#!Q#((02Z0x{T2S>TBFs?fl-djL262Nxn}v^ z1wNDhmveQ?NvSVta}G583>*TqDGcV&?c%ae zO}9p6Sp{WEw{eRetE<6H-+!#Qq^b8Ok8ZQy>~R2h=7R{IreI>uDXT4XsH^G5=Gd!v zztt;>jmqe>w`Aji8ZmE)jRwnb@dz=`ctF}?e;g_5PzGsS83+ORC2o-JZ!02+%T+wP z(=0%K>imuZ8+{u6bQHfxzwV<+cSA?z`1L4XxQ9XZ5e(LfE=prEmGrRZ{IF9I)%q|l za5k*3v1!Hp-8if=GlS$)l@w~Bz68dXEyB~a0Ce~4K0x5IkLOlWjD6wRt>oI_MAFhd z9PW=WDebc@rsaQ(J(;zlsc*=5JeMT9gL{?g9*v%n{&56ia3$n(k?l<1%Ix(+q1alz zq3L!zVcwY{)C(#8T2v?8r>djG<4T=~DZ`By6Y&EfrAm5lFUOT!4G|16k4wl2UP+eO z>wJ8l)xv2yIPxpGG5j^edM79K?YLX=r&ljXi?q}=EiHB~vyenb4Lzy_K@GbKC+*c+ zp*TMezgw^JK3j`SQt7tu>GEOQi5aSzD*CGX+>I3YeiPBuLd+Va>R*&{%@Yl+Qi@T~ z7O2Ovgc9(=ANhd=a;La`V)aI_yF@~p(xo`+J9jbhK#!wkz@W&?O^hW-jo?^`^sU!nR-}YMDMn1C`dh(&>jr_YpUrX-%qJu68db7b1%^ zs7(QwA!bE+ubi;_j@dm@aR<+KN(lf`oSU28ba&*te#5~z{mv3Fc8RFtuspHK=W^XW ziR(;T(k8w~lP{-c<_e+EdvM)@O*9QU5T9IKdFTxSr*l;qcJ0O-B~^C<29OT)JeRCA zP9ovC^l;HuF6G+9#M>jR$=8b>m;2QpnV6eJfB}r*O&^W!J~*D%;obT<*7N+1APF=~|HtN<%<^ZrQYu=dKJR zt1+<@0xc^QtRpD!5`RMw1^pG~jI~s;Sv&j1pWYaNS?E-(G`Vl8h$IspebP{B>Tcn1 zvhdZ?xuZhMF2HwvJVx3hCwS_GXt=zTl$3&-n?wQSi<{d6rzNpbyGq0bq1DeF2KX*L zP%1Muwc37fy-V<>zR!MZyCBvg6kxC0V7aAZl{J_p`r-wu%D4A9Zy%?PvbQY_Tg~G_ zn@X#Pxr0(P6c~5oJ*^AcJEj^dx?bOU$phu<7jYJ9t2!=i{g7l`IGQKwtvl3f2ZkjC z|Aq`pBof5$hL9c>$sw7bi-vr}|$76@T-@2^hkVDgo z;4kHTLwS6_WXbY(#5JAr;UURv#P;RoW$O{=!lZTS-Hy5XNCseWWhKTr`cy|x%ZZby z^oT>byb!S(1?TiG{;nW&;jR93RAYZ~q@u#%SwMXLtUoIS z4t$}XuBmOKmNUlHHZfi)Tfc34<~Us!6!OMiY;X-*LDM_4YVqJ?C*>O|a6`m<>`aDb zI#b=xU-H&%hsw+6+cRTbn^4T*JL1SW`X>Fv9_n-w-2k8&4Q2*A!Rye_ewu}=T7`9r zo?Zo-^YEU$hipkN0!hj!SABDSy2NkPz=AQXsprelO0n)9%*^}|aZGp^)Fi-q>2qal z@jI`WTuPzeEb?luk?IU48Mig;F?th{Ryd5w%qEW%2yLVXGHIkjw^^?aBp5o%TAH{) zfimIQ`39MZDAB%x19jt(=sU78KVsfTW(YQIs;{3&ukmo3#F9XA6Rt8FuiFsXq{kEt z>AX%y_U;Y4x_UMZbN24K%nyE@_0nz!M7c#p(QWR*-%(nUdiROC-vubn>T1ARwZq0P z=9GdndR*)*c(G}rANUfjr!40u=4AAEvjS@eh;3|2-Sqqk$4^tk>Yo|#&DR#%x8!!#)YiuDN9E;F zkXFR2svdRhIL3UZ9~TCpAQqRV^^J`1iSUZtF^9O3bga3#xtAB8z<6AKnhJDHPF|jK zL-3%gq-4|Z_p*gm(VO6O@ekM-H={%@LR>tAPaLec8XDG2O!O}_KYe-vL34*!`sO>y z*x2aU$l7>Gq6!4l;^Xzx{zgSZJ0rF`gUmow5N{tB?g3-^<00u#X2*O zZQ9f4#wumtD+D02wgPV7f^QX_CigCn1Saf0M@E+$>D79!S%1eH4SUx2FzHh*uS`jq7Jn*Ogh$c*2Af`BsD7K_M^}MeCuvaGG`dV#lm^whud7A2{Av_bO)Q`9> zeW>M{O!?;lf4-fx-#?3)6-S1+%FBb5KDV~x*=gOpdKoPt>8138_8+F_rh%Kg?BxwR zg{EevyTRQXrr)B;$K)$g@MnTwWK2h!If~HhK7dR!<@#Q-}h4XDB?8p zJ20}a%-8P~D+xc;cXVWB1RQmqZrkaLq=kpSA`>4S8Y%-FJ)qz|z<=k5hgX(Q`uZAZ zd`|>Q1z*9VJa#A6tR8O#aar09*D+Yye;k)H8@9_V3R&WM!Q(`>cG_C=efA2w>`+kV z&bVd`5hvm?wHBrI#m^8qtdAK8ms*3TY6eqFUS@3rg7gi#qlSZGkZ8V^n-OiIak&Su zszKVsLr~at$Bs(%!rYuhcyYcouZR&#Y(BXP5>6UEfNEX=-uZA6m5FUB?NtR0teu`+ znyQc;Z{*7=D4OaGO(lP7sBr{e)95)*WDJSyh+jDo-TnJ1%HR@-*IqMaDPz7hnf6qTrS* zd(+_@k-B6U{_G8UQcS0J^YOitkJ=}mMxWiR^A-=pfIsO{4s^ofLE163PqGZJ+~L&e z!OA5x1v~EQp=r#@Rl$3B)=|diqP(3?_QBRd31fk^F}Zs9YwpL7_vOn=B!a+T%k85nE!GsC2Ts&H-yE^9Vc^8bk?gds z#!3Ln-d%P|&Um3mLxWqgdbtc$;-I$!^XHI2hd?R5ncQCKYXeR|G;hI5TyBh&g{!Qs zw6v9i12gfO%x_b$xlp2&()T5zcT+K_)Z#cMXRNUl@keYwoto;4?>&Q2oMJP3@=P6n zI`ZQeoTa1ws!&UQCTe*jobWrKakK!*1x3#V=&1rl0S>;s(81#d( z@FKCmAopXah>h#$+1c5h5NZHx=Shsm3Mdj?rM;4_s`-q=9k#W(S&N+J{$)1k(rFw4 ztMWD4Y+Q6Q*?Bx_J4Slo%G7gXq-~m2I+9zF$lKGbvfV(YW@eNr*71*>58DY!k7>>Y z3}jMu&(LzWW2+U`dHJDlZA(WiF&0Z|TFXLvXe(V|zkYpUnI6f7%Daz6!Qs?$_;)X^ z?{2LnD5Tx6y1cBlwZ9F_id3(-aUtS*2bz`Da=&nSMtnbjXr7%bbs1wA`J7(d;AgHh znboHOK>ZA8abJkLzH>RI+^aQqUluG(PJT=nn#-kY!BU$o%U4ctE(+Cepyc_bC#KJY zFkk5Ruvdw(CY&>JtP~e1Q^bvw7>KsIm`%2m!Q*@3a1@D&al4(E*nEP9?`jP`z`%%< zE_XXtzZz7E&LZ$-l1#dddOrKWHqm5NKY3FsM4w&*9#Y~Ql+K7iM&YC1j_32q{@575 zS2+9aACvhn2jT&*@P%JvVPZxdc>cmiTuuq)stheiexWV_u6AK7H@o1t_TVNAtr_KU zZz=|ELn-%PyD}B@!+)m1!tCaekLhDmJvH;pg|+U_e65k`xok3z3eCHXsy0;!$Y`Mn zk>r{h4qjS1yu>XpD>D(G)F@3v2t{HdZk|p(p(9C>EsRdK8tWjt5~s)W`X)<6L!Lwf&1qB0{ea=Tc?srsWN@owCEH7yF8(h@P zzzYrK^R+4Gb*uZyloY*pEU*2)iiLWpoYA>oc}9qq@IB}15GVzsp(%^;H5YROef!@#Dx3Dtt8>!Oq%(sZfrIgqz?#$Ei>6#`%Ang;E_H*&>FK4Z zJUd%QvZUwE1Z8%%d;Pp3^!_3%(~0KZ0^QxBVsR(Gx_d_mtnI*7JDZrbd#^QoF(>k& z^`?z;pUVus|5gR+FDxeuWdX!F$mm|md*iH2cmAyO%7L0v;EroNk<@J!27J&x5cp_ z$Ik~_u-pot6;Zsso$xgSxo%arW9CJ;`1Q;c>6a9NFIRY;fCOBaOFjkV{IH17*y@%f z#xeg*ZqBRA)$E>e4aQ{R*P+NP;cfLkF_F|Mf3B?cNlKL)oU9;C?oJT%7oSvU{Zm(i zuR!>X`xnuob`OeSivXdJBcW&rUtil*?AqlKOM{ovVFM!>^ke@EwpUnw|Az5Z9C2EF zU|x4)cwVb@8KE^W+XER$Usfb4GZ^4ncZ&u9501H#e8on)r=7kOgB-O=y)!w~O-yoC zWxL!I)K8I#1^z+T(cRRNgQ`abF|qam=^MMLfmz&i9Nbn9g2jb}8J_7)q+x8iv@IgH zZ3x>PaImK8Z{eGae<}I$Sg_Zd@L3Z}nOLA08o6yN?CWh_)^u--AYEK$!L!z`%GP~b z1Dmda*0dj=9Q@@})%0e0rp-Z5MCkn#c9A~Zo$L4`q+*A?RlrP&AIk0YaMM-Q)g2|k z%36hbzFp0%S^AlgmZ!?8Zn`v*m?YBO6-Av{}Wi1F$Rp}%tiYIk0}=2D<>^;es-+#(}v z6*xImvi>q$i?4U83&c@7C3H!1BC45naG z-S3B3&;1pqKui876YYF;^FePz-rtF;Yt16P6+VrG+yuwi%!kW}jg~jBZBQ(+J_!p430PrEnlm0k-YO} zuBCwiLfI&|a}UR1%3*Llgs34s8i1rXnr2OJ}N5_VrOrIGF zyeX}xh1ebcvMxel2f|6lS_^aUrRq1ToQRnmhn@_$qmXCa-QCoP62a(dYh7(^51Ogy znV2|x`GVJEzNCD8`MmggQUw`;Wmq>h5!br7q-W?guMDIS0>p&gc&sceG+HcPKJoY8 zsR|SEz7^~X*qvGf0v@7L7zcQR!N9Uj(D-lVp|` zC96Z~F~}slj^;iAEdG*1ziHCPt>NP1$I5Pjy4uWqt6$?=e{lQebIdtn?-TBoa%$sF{x~DCO|{V0iJo@n_1Y=( z3n72T#qZJ9)wP|))M+!tvz5P;piZn+8$X-|P?m5uzPuotu{G#;Nh0VIOw5p4Nbnts zI?JS#8>=)Hbey}-+63nJCqY(qE&JXvYcl$CJC^iy?uIqw*2FnR)q%oOOa7dEk+!<{ z*xjATuC(wZO33E0jX`mNr#}%;@TR#gUyUJ7xlB4N(6P%=HQa92gcCD&@NAQ3@Sih3 zJ+b|pw~a08C00yKWFdf+ALY&K=^02%tL~=8eze~f?W|;l#Co=H^u2`V_%Z@TFg-Jo z;615i$cD~*J}=smb*_Cp43I4R19aRHv$7TcXVAf~GG@NIx;ih3AvSbCwQnSDBEI9Xb|yr@=b!;vw6wUvKL=uSD^ zU$h+*7F}IMnL%==pELx4?p7znOo~YpAj7yQ*Kx|RcW=xAbarF^v zx}W=d%pds{kWit;b6Ou~*vb;xCijX?OW5CHeE&O!8tTmj$&>~D8_wF>-~-N!Lp{@8 zMPZ+&?>w1zBhN)*&ZoIAp1&HlLQPR`y6PB}MQ2MR^>6*zTD-ITgxp5`s=8>{>V@p@ z4Nk)>>8B4z$73twkgcyZ`3Z!0Eh7yk6DEa=;<_*ye>%ctSxL{Ui6b?f*_z=_Y7LYG3NyC5_U z$Qv6JZUO_4@#Pt-@X`KLN0KGkNP*S^C+oQf`JR8UqffcRQN>x-S(YA@;{T?m6Y3_l zEmFHoD73zSb9+T->=-LP_C^U=n3Q6zIL0WQpcX$bW+9oh_<^H*_UFEUzppQ;9`D8o z_y(Nxxv;7js}edd#|&vMDxd+Fg&TOrdCD{B6$PtR6w)|wDhXd$v8=8&g?1iP3N)(( z3SY1Gt~C(dZ*C}!^B>4NZvMGB-+nk)VYRT@dD-6a9{YX0F02~F0B&mFfF>yi=vIh* zw30?r(90`1^*u)gy1KfywzkdvDH!-HK1VlQ=_5tFhUdzi4thkBgDxh@F+H zO=NmW$ISB|E&z;ABgn*LrrAGFJa%?|wb<@_9v&!mNzeLtK#o_33{Sg|fJ}VFPo$va zW*cU5U)GQPetn(=T|l7-$q_0+(cIN{{>-r6-ClEZ@myu)wiYGtvq(~y$OD1Svf+#Q zaIc%2+s0ks5>B{;n25dOD>{v9?AzKXD-lrrLGj3xxy$ixYI3aK(|MNzDrU2X`m-3-^2t^0X@FC!V~;zUQT_oi1b`Zq`<^BS^OvxIiJ_TKIR;dOM? zHoT=e86Wj)B|C>H;id4+U_)-_g>QEtaJB*SL0DBcHOz>Q;9ZH&=~ZMiKBv2`hvf{1 znG!QTbszk&iYhOgmyJT3U1StDHEs0LjMm%teL2x7?RQn1g&&aZONh|npPSGXO z4MuvjQpz2arnlI|M;q=kfS7+{AfEyqA{p{9=()VO0qbsg*7?(oE@Lx@A3 zRn=>+TtxP=>XK5XphuR&rP0$H$twz-_?yN=uEG0@InWCAmqyoJeIvmxQBlOJD|2(d z6~ZGT%rP!5E=H>74l7xWzbG4PxQ(aIh>8Z-Lg=2WD~vMR)1Ctpk9T$sW(d?jyqz#w zJ654(7Qe#%2z(~Krm#YY%tpcN=@$z8Z|+QPFW{bkK4OPkAJ1N$eTa~puX%NMG@=8K z+#vA>JKIDMa8Cf z!N!%*!pw{m*n&gH_(!s$6_EeRaA>jD&$nxBetQM%ZS*a-(&v zsq1vE(|VD0alX;qW65vPp$WQ|oDmY>_JF2c~b}b}by|2!BqsVn^{+GhPsy91*2mz)8buRI0s&gE^jD{dY(*8bC zSprdo)UH#<#TW|K(g4(=E$RS^`bXD&tr-Ma=L$s@$NnojO!&61wKHHL!|4{Lz_a{m zh59qHwj;`a&BxgpS<5CS7HIQgDEZ)kn1ZtBZcI&0Prxy&OhutmdkI``vP{11K+|T*mr&`wdCEhHjfvtt+^Hl$NFm zW9V*=DZYpB-QL|ySq*5Gf;Fd?{86`>ZFmTXGSW)|Q_F&EeDS`|S_-<;sjD&SYk_`; zmacgD-~zlE_Fu0YF^O2Ul+PC`@A?i{*Z?;yt55h#mYfS%x_)xe58+aeDM22tuK-ZP zlbb8RKylJV6%W;tk4eNp*q9Na0#BoS7$u>WPq#nkxdb>(PG340Zqa4#zyzIZQ|k1B z_bNy_R%vQN#~Q>nh9r3mV#RnakJ`(-ICV&lFFVN5tM~!g2Y)=~e;Vro?l@((pLb|@Rm9&Qa&6?m9;Ubuu2=PwB+=uxoKW%vC-DnTh5)W zup0Ks&xLt;c~k7c75V3LH13Rf)e(xB1UoTeCMvHAMRBgFe-G5qYZ<}ih{*Bvwhmj> zR+beRBU~hg;>9z2UDRl%jY{T=X2GJ|Fp-_{EH!=A8Jm4`=^(O8?$yh6dy}zD9j_Zy zsh~InHJ3ZV%~J+RUwhVkWD#uco7((3@T@ezZd-o)-;Pmh5jQ=1z?i@F)<~KVqe$1+ znW%h0#-Oa+<^prUs*QKALIQ;=m~F5hjl;PCO|CtcN97qdcLjxo=kDdM#wz^iThdAY zb%fR5cbcDypPd!~alX`CdS@=I2`o2?3662)vkgBS=Gq zZY?G*zU%6R^r5&Nm-ICZI_&r2;c(8Fs>i{BoJzeWDI{ZebJuaX;7=FL=M5*w8dSyM z@>tH~D%Yad81ld0*n+lQvQdgdcwMB&qnF1;9%r38Z<4vm+8~YxwaBVdHZV&6G)e8% z%H3C6!!cf0AwXH@_5JY0fs&dB)(3fF>J))XtrQ`ufoMy=+r6C>eV4dJc<8Ov!=IGQ zSwmkTK5BYix^ILOy6P?O{V9AwEB=otmii~sn&+uV-uajPl9)mnrJ|CYTZW9lI;1^U zRc?5QKKt-)DSe?eHI=(epa>R#-C%7cKpWIu?YraXj#gGD;KJm3Ir2I^;IbNMrWjgw zQnH=y=m;+5W~1eaAvAh;@OyY5^Ik0=C$Q@JlE3uR%5#_ZtHXqNfSs((JPvFqRXkw6 z0>8~EmXzkenrp`Au%WjO8$lVE7?gJN_|SLhg}o9!fZxI`(lKZ;PplmjekWKFt=}+mrS;6n|H{2ow*K{FqUlO*e;U=DIVo ztpq%@5`-O~g=2Gl-rIev&k#2gMDAv^!uf-LMskd>*JkLj`9RT28_C^G|# zN!9VIY1{cw4|A}R-drjJk4VlNF2wyk-u1;{u+5`XTA>sym(t=kDg4{Zm=k!pcl~4e z?=uYa`Bm_Ec*a=Qg5{hw=m(a}x_!vt3fUz&?{BAi>8|R-vL8MkH?`DDz^qD0an6xf zab>sDuX?$`p|M;iI^WuVkw+UMpTlHv!~h%Lq7&!*-d*o@oM0tmlJJi>-H-ByMdSjL zJ6aj3`NA^{^;Of2z66Tw6!8DUqH28l>c7G+Ot2#xvB;)3I?BA1c2_bhGEu7L>x+_g zU58KT3Z8EzLiS&2R_v8&FhYwaWLM$~D*@iR3B4FxuOz?jWO=aQs)AK_`xTB44-4EN z9@?Wj*`Nnjf3HB>yxoF$yB#SLh4&ibUPSCCH#>$tC%JbvmP4#gT^pK~_U*Src1nV$ zyts5i9oq}#Eqf_O?$iJwc`!Sd^c)zc?@&nuVc*sXb>MfHxVb@HGRUZ)jbHOGgtarS zv~UPr1-u|**gLYwa7EIUKY!ZCR1FSvbPnKK`993!D+yi5TW+6fW+_(9f`^44?<2Vy zgoLj5F1(k?YY{71UH->VtT_`>=mff;bKVy#k9sLga{i^2m*2K5wy;FtsV42MIk3gr z#a_XYYr@~_YzBzq)2l9tKr7gk^io7W9^yB-4EffmCKK?5QfhAWwPBSX479ZV`@GAoqwP% z)mp4?`!pOL7njw%Mq}b{Ktn9cQns*S`4PN3oyVrrBv#i7&8vz9^G4sAhD4FV+U4f` zZ72G6US6L!;)LzP8#H^ey=pYpBa?#OE_-PwHDmwsbuw{g+w;6 zbIl{8b6#b}lI?sk_wp(o@`e;2u~sbZ^#*OgIuzk|iZP^@vT{9&)y61zG_l(v5Iv2f z)pj{|V^PuN?TJARz866(XnEl_pe-k!qHna}H&>U;Rdl^uh=DCNgb`m>%_g+sJFUh9 zEcY!VUO*SVfU9sV02UToWQMtqRsLF!{`;Pq+!nOHS78ngw-FI#%d9JXo(lo4{*89m z84wxVOu7P|siN6)5pPFV4kCfeBaw;uJE18kvbAKlRj=YSrK6>=Z-Z>nm~Eof6!h-o zn=qVIz+)CN8#8%4e3{iYJT$yl1?L~y-@gb?9o_bQfq6zuTFXq-LKb!BCm*!*p@r|( zudCT&cc19^z!8e{}qd zQazvpYpxZ|)p~o6*p2C&mvq0riTE1h@G@LJ`=5YJLxn-An7~&Fs}wJ5OlOIu&3rQL z4rx~I+{r()im^&wFbE}t8g@CKoWxBXm0{y$-5oBsIjve{oeAHsZj2K1v_TqGG+nNs z{?*!ZZwqF{AsSpBOAr2%eSL@daEY>yUK?FbE?P_bx}Xb0LQanVhLcn7T%l74S;eE7 zG~nC?w7=hSD{GhY{)@Z#J}U>Wit=@_2%@mHwcqRufYcM!I&2BY=}Gs;XuDoLy<#~L z#b`&7g!f=oHJiF3Dw+dN?kYlD{Dyg&`-J$spVqb07c!ZhQ^r*L*q=CRzmImTyP66HMe#^%` zjoTbdb%l7mJ~-*s`Ng}JA#icF2x(o8H1$&DDKvSN#XtV;cj8r5s%4ulI#$J{P-9-| z1gu+TWd>aCj1I|SfxQdEVAg+kSE8LB)tQ{cUK6l93pt)71BBYMXQvK38b@810k zSvJaqjjmyvB*A3EQ?JH92XV7~Kv(*Y@`Uh>37AI@DVCw-s$rEK3hv1!fBNtxvubDy zFR}sYFBce;O4Yttcy}LWcv6K$exZ+oxQa_PzW=H?8j&)-hbB=lc70;w+ zW}n5Y+Ah)1&^YmOw@U#<+ws(qN9_mE-Qz~u+63exbDd?QmUY@pmPJgBA{M#IZ}G{m z{JYu`PC1c%bXGgrP*CZ~*1CelatZ2spmE}5EAV{Oq+2G{<>1#GUf z3O`Z+0FhY~*cjyAn=y&js$R$0zOUtj)o7=KKRU~C4iY=HTjWq7aR0kSR6Z6N>L8U@ zMELsayuA&iVG74cggkd5u5=P-NR1%%WwByO3+QSYIu;r_k<-ZC5ff8%49CklT6w%x z+OF9+G-%YJ{m;UlJo&|GUZXu9sLeEmhV}(ayifdizeCH6hk^3`DKl4b9FkPkph*}_ zjjMb!eS3RL@SSwa!lJLQaCCI^ueM*dk!VtZ^Yil*76T&E_ob89+7&ZrXAzm1naEOm zb~fj?wu-Ezq@>6WC*yx6FCq;16q_D@xYd_Q$F#q@`|lR!TP>rNldTjZcD6K6WFHor zj+=Y>x5>Hg|GDYcpO>hCC)E?x6UwFPL;sTfQV00z*)rguqdhTpDKD$cB@Qz9-}dcZ zg4byO?zb&stpERhlL5HtPUlH#W_!r9I0<>w1QYm+_yVn>+2TNmeS;3uh(rRNIlQW+ zciN%}&|3&U$BpQ_rzdsrPMG}jze_WxcpHIA@lLN1NYvKaNxR`2?$nX{?mJo(OM5V&t-pe%Doo#9omvu`r^ilP*_>a`y!_uawUQvbEn z=(mFS>coQ8W`f8;^|-7>WmVz*HoKM>DbiJ?kV`xRkQxAd94|v@RbZP>ss8j~RD-Jl zHKd`hkn%D0Uz=SP%D;U4+QlQlBH=nelq`@J(@Xr9MsE@KOu-OS6^MO&67)|LXDA=|haKWJ4PW2__8Pvu1u-ygR}`*W-So9Ce|A51*K07M>(L5;W~#cH!sDvEj9r znGPy|$VV&)-vDT6t@?k+ddsl3y5)Vi@=$>SEmovJp+JG+?zB*(xLdFy!QC~b6etj& z6c5(m8r;2Tf#B{Q++D(d({rBld#~$VANUYRvRQlfnwfiM?pw&KN}y@KGfw}2&+K>` zN~meTvfcPYl$trfSH_xW8u#{G(MOr#Z}U!6aMkT&e9oDyemy7smPNhkChu04 zR5#cLw_oT5`tfPwze&9~(~BJWx#wbFE93$N1+#OYiWw3}Lq(rEf=Ss@2m@K2N3+n4o|O zBVi1o2rQJcVK2W)Xnrou*pP|2cE!7LKvzAv$qV9SiX9VXQ`nokG+Re$gheo~e>m~* z8T1+LrxzQ!e(aGl5YbD0xAhaie(L6KN0v3!chljl?)JI`c3R)nsIvFmy_{s{`Whxd zm7L2Gc}n|xj)Js!KcBnp`ndTXc15}7hlwhV^d468%g z%SOaj;K6oOCPHV8N3^}1%oj4sF^||4WN8*$o|NV~3NMsAPXMoNuRm)7V&Y zk>PY1_^mi#&)^!@N5A*Awa=D#fTZchwuypECyz~Tm+Qwj(I#xeDOF1DQ^@fE+P8;q zyVdfFO-9=zM2nAZ6fw`pmqZC-Vdc9WRu|a#xdl&0SnBtaz6CfnT}_KJ({Xa13QS`k zAH-1nVG?jIFGRH1mR$q|wX?$F>b=?96&x!(TQE@DH^=YLsv7!RmQ7l~*@eIrsnTXH z>*KQ-BeAmRzCPk5*q#&JX4h_lEY6Ds=j=HrNFsS)TyCyI=qQqx;(DASEgy8#YEV(E z3`s;iG*-6Nfp|)=RO*fh^!Y!Wy1*H3c8hl1Wm%nn$ZMhJJ8Ej}*9aGFy5wQ5H(n}Y zmDS>laP^Tbs&=QrYK8fXZIty3goy??BENj!=iIC3hm4CGG0ZSt^6OrE^fj*r5ghCnYb?LaZ+fWJ}U5S)UI-c1ilvoSL#E76H8OnN`B7iaL zdu;H#<4ArjiT?1TL{nPcpFj5i&^<*=%=b?(J#(9Q%!xHWX&!YEdkUv=LEq3xJ(^IsD^qu z_A<`$YdJ}F;lWd!V=OE^#|w$3`Wq_F(-2$=I2lAn)l_}hOdZ>F)jFIwcIe&rkQ8qJ zhOziLI^NUGMLUR`E=Q`P2xB%v-*u%+_%fbWINk^XTv{V6m&{ z&P@U~_n&%h)L*Klc>BAjG^;6`1ncybmUr-*k!K4o%n4KwpJ2H$71g+k)t9zQKYLgSKAFlB#%PP) z{wy{6v;tMT?Rt_pIisaqfm&w0I2nX3G;5pj>Fg8i&WdjJ4*Rrz1?5?uLN07TKFg)~ zEKfs1GdH*E$-OQS*flyaCBDps|5WfagG<&eE#EmEJ|-4rbs6Q*!EO9ZHP+V$!*73h z=0(B_u~pI~fXMiKO6Xksa9lcNKA!Zz%=b;~9}RskT3&HIWp-xKTZXBeu5ax}=c)qJ zVbRBIH=)vs!HI&?tkiOg`S4$9HT8@~C>vzVD1{l0th|hVCH-rT-=GCO0~P&ZFG|i2 z=IXtIdvaC5L5&xFhl!1xxW0*tWJ9n>dcvbVeoi(XnJkUrZgw*0U0@#mY1iGGZ7W+(`47tI-G?uQ+<9qvdmug=9dQQ6NvU*+<}fJvyvVJim7cJm zleh)H%?~TPdLG6%%(m#H^m#kmP0&=eNme#SDz11E!;J8CzmfNpppbz&YCoUlxKFZeWP=Ht||!zxL3 z(UQ>uJZ--sGwXD}ifr;pY~!1Uy>f6q5Iz5jNV($LT47I7z4JG$vh$^*iH~I^X@@~C zZ;{*#w)70bC1$r05pz;xt)=f+7sZfNKL4@R#CEfrkawzS7o$xSsuSY?6r8BDQ2cLV-<*5vH?+; zxdC{Ut!^)uuW5(a@m0HGl?7G>Ncel(4U0$yr)W!2nZr`oTeaw#>^+VQ7G31$vi8RFW=-shu4xfEj+1!D1lVT{{|tC;dIUB z2S&Hzezd%w5Dw&8Rb%6I$in>GbhZdgzd>bS!csg6pCROz*a7^FEgan4o%z7;S3_ewzPWx{m9R1$>fn^K028{RFS^!mP49~O#?bxIton#KdL>#w?5^@rtZYh(zC2V z1#P)1H@I~=X>(KpywMkA0w+6fPfyD0FcszXy_UJJMF@dNr#PCXo74Ba^Bor_8kY_-~l=DnV$fkYG;>hV1?qb)?zo7 zY^?vhvYeS?_%qwsX`I7m>5JhL9Xrb1Ocq9$FhW0e1k!H9G#vI7rvZH=Dm=~WakILETXdbD&fu!0<7kzt zNyfW*4+0DqM3zEKhyjb<4k`GkvhlNrWd;1}ycK1#{^T9^0NMa9{3-zNV?bYbs&3l!9;UMMn#iBRB{A%zb9ked+0dXS+kFVwLKvc#_Cn8f$H)$h;ekj*Pw%ZD!1{t?%Wv zG!c|1wEdu(m82las_*||0r}@<_8gf4d>m9B=se;1##FcBaS{W2xuJyd8F@3w8G=iE z$IQT3MiJw|h`suOc^JvhZ`!goj*ElB{*W{!>eYE0tGqKl(5JB$?RUJ@=&|1Rpi1vM zrmyC<4>?cS1b#>1Pl&nb_s9I4t2aJF(|dP%Env(4inYCqLUO)2aGgQ3@$tH^iS)en z=UsV@m3%B}Anx?Y*FUAXbb{MWhIn~Ou!DcbvaX5AW2PxIop@HteO5#UQ|F425KxN0 zWox8rxr>8Q5u&Y-RUo>7`X4KN`9Y&jcn~I(n95S${#WnFUzNBJtvTb)0EZdr1w7nFK%vB zuf>wB=Qh_Ty!~1n7)a0I2T}&X(>qWH$Qn*@m*$Z(HIXD-EQ2dbYrI}3HCMjp@rl&W zpE;Wllg9n5H*}dp7y3}9Z5QvcrE+Sf_*i#F=z=;tw)#+b@;J0va-u_V2m|MiObW_0 z&UI6io(+#1ky)((EuO5YneI*9{l0>R`uc>y=R}FUG5H}1jvH*uG3l1#2&i02i~xj| zx1l1p&uI7fJUVab70U=zy8HbdKP6iU5Wqqo(P@9^gY>!LtAa#r+9^kG^Hnsjse-9Z9QquWN^=P~>i2 zUp3vLI0Fxc>4~$9M`cJLj{T>jy;z&H;XFG+r2W<@`bGG( zRv7`}o%buVtH+J#xr*jLPq%E**yC$_OtgOnX7O}((-WL3jim{VL1bhDo>&+_bW4tG z?R!5T8oeqjkmLdX-5*CHbr8DtxLr~<=5XPhk0swWH+S}EGHyo5D8Z^0xn%i$!y3BY zHC|R}jT;g=C?GhXad`>V$YD_Kns^jmezw57O`+(o&3U+sFt4HOIY!3hzPdsc-uj@9 zr+sBd*_Vkd9kG9n`rWt1b@0-QbmqenH<*a83Fp}=KY>kQLyyYl_OGU^Q{4TR(uT(o z>!s5qc6RDtZk3wIcjW&fhRx1PtyWo|r0RES;p7r-k>cB z>1cCFHzq=~X^|mSnmVy+_d(zpxaTMW^IKYRH5W^bu4`YBY#GkfPB>@d{<$+;sSTM_ zb8}T2A{H!1_?#$#&nx$1mZ9WB@;JvZnL>@w##NeDNRm(ML*Ea(dMR4HS*df7nx^cL zm=j&h4KjkhyQl4&SkBXIg86|T>)Hs!15U^k9YLt7W;Mc_Nyt8abDdMc;LUS^@Jb-B zx5NrfPXgs!Uf_gCmt)ua0YaA#ZPY(rUG+p9zyk1<8h z;cnw<+N+clbg?q6!#^kIOdl?%O-g^^U_*b0*NI#T*)Hle>r+U8 zpeL=>pu01-G(c{)l&ot~dE$Xw3zYnMaG&@ESSbhc; zw^+TOK5TZkJhp6I_lH^@CN}X^-Utf3t2u0ZS$!I3DLQW2#=db>Qyg`D+|sjp5q^KR zzk2O#@qogU5C)mT(3So~wIv9tNhW_W40>I^wg@Q+`filVg{%Q1`Wx>v$N@I5M4q#Hq!u!qC3`Kk=|i5g+Slvrsp(^hwIzWPqjUPclxC~rv6Eo{ySa+ZU zORc=#+4F7VBdydSMiu|U3ov>mhJ<|;tLz7rsMVf!SOJe~xG`=oTTfA~9DdF!n5<(U zTlek#ZPUj^UsGcq4F`KG zciEK7jnR918oNKt0NxwEH@Ct*@(e1yz&y&rGLbGO@1XDgb&KKt=Rqjv2v>Q9{n2A7 zx}>A&$Bw5q%zp%$E0>vogp&jtQ@(#Seof&Gr*q5TC)DimLRFFI>>z|r=Af+F>z+cu z6e?rq13+D6xcz$MAL17>tSXuUMzV>>(`8Y8)2(Fw%Z|0*H$h7;`8sm6+!y%?asiNd zqT4{g%n-DpjO6BQl=DFwNx4FsxhBfLCeV>Xl<-<>j5|lF$=CsWXtfh% z6^ND{Li%UL@p91*gH2Uz(@N_=3VLB);iGdi90}s`O-h=t-bMC|p-*9G@Da9)9wL9N zRsh2?*9DSY=;G2#!2TZ_R9jma<`=TjjGoaw-ftlH^zr$m4ZsNpaN`;Kh~@Xo+lx_K zJe*yVnwCBm{Nv>866anb7nWgV66tw$21dz84@Wybma0Dm&AUg0#yM8*+?~?XznpSR z7$ugLF#HpSd6_1dM`o_~cqhKjNJW);J6zVP1C0|!+8<8Hb-T>0oeH&dP~{G#ntBA} zLOKSzk{HToaplI*V-O`>rn=7bm)7ePe_Y(_F~0t)Hjluq2`hdVD?1C!X%&zlMD;_M zqheW11Xbn^<~lXZqBP)Iy&_ZWEFd~{p&j(PlWSCHw{+cFd$!!pqhOU5TkGwrKqB9q zV7kxqaWz*%QQy_1Iya8J%CDkQQrsaPTMh40FYrMWLsfU_wIS)y(PbjxClhfGMpg9{ zfviogW3udaQzjkHK6Rsw_eFA_&E}P&9QhEeGYaB@yvbx4s;l!(6}p^7gEX|!6t^MW zRVa?tXpH>zH3uHb!mYOAwAW6932_d?{?yAGm4|6tAhNAP9P1w8VjHz7!EX2EK$w7n ze%()qxtF09^dlTITw&$VI1DmyQ6+S^Sax$tYRc`x#)y6P^2Hqqy4Dk&V#m7c6_nsSp%sob`s^o0X#Vd=* zSSl*qszQxYf1kXu9H}_<(JmVtEr=rfME2XS$c%W;qUw{qSYyP>}Rz8wf88 zh8jjS2b=L8U2)rjg`T{E|0FoD7EEjw#V3y)4M?^5x6yG`-z=QNH*_Y_$X+>W;JHks1-n=ibR}6Sed&Bs|$j> z6rONwbz0qo(hddxpfX3eR`;{7^;f1KGOLKane|h8^5M%zflPDz`8~Vn{GrZN5_Va$ z$97K@8_{KF*X1W=i_6OMWfD6J zAP{4g94@3`Gqd3uQY`~%#zB78g?5ILbWGe9CoY;Lt2TCxdt>}>gG!qlQhj6UjNRO2 zRNkv)#PO=DQxN3<+d3;52dM%s18#F&33&f9vXrwcu{4Ex0C zp2r==nyp!T-0Vd4^*^eGmVL^f7C+r|00^@Gqa#4AxMjIXx(WNNj!JdEZR|`l>;Dc+ zo05^!?(Cj$aWSBeL3Zc60T6cMqMlv8R+J>Y39mG(-F*lJtKE3IZs(wNXU`2b-XCmU zLA5~eEXZxH6B-D^mq2n?_)@i~IXox8*N#C+r_f`X3g)G;zP=*A2H={SUkYjVVV%b2 zBmp;g?L+X{hIp{u>>uc}!cE*=uV_)zJK%^M3c21lD9ECs@unDuDx>n0ji&uoVAUs0 zd&R2jWnfV^ski0JIrj7L?xgGQ#{@Rc8DfQqUL-63&&gc7R5!FXblK6Xl}$ftmZN58 zcx~oO1IDhDzy7RV0`|uA9d#ia_J%v0j$HrIw|1_>2fttFc#jcYvlC3g$a;>#iH`;H zYn&EI;=Fn}9vAtK3yp}DXYb(yeBQkGP)~NI&p)|*nwzP3`Oi1WTHy>Oi!puQt?^rr zuOuYtjc~eN2fyP`oC|*-a$D_A61&p1mfktUvNsl#MXK5rSCR_*m`DN#VyaISZ@tUc1K> z+Jb9AFC5kphSdq(`{gcY8F~8$8&~wx?}sf*oLvkkEe9$}lbsm3EUT1-YGUo9R8=Ji zK?|hWI0c0*ql*#sie?#@29#jyC*Sak?I<^4ixY)oOAn>iB~5MARtn0-Br-DD!mSx3 zspAr%#&e=hAo28}{vdMg9}blh>5k@(4Naffluet_DUw7yNz%;|w zKrp}&^#xwj-ak1@&&*6V%id?wS0|`c)W^CK$d~ylbec{olf>chkk*<|&e#J(!lBn> z$PKw(=cQ#zetqeM$e&yIrd8P-PAimR-jF=u^u>0Dpqp>9VrtII?{V;u?xkjy>!?b_ z$Vebvdww}O`n{74B&JbBH*xk~Jemq9lW|^7zT>qj*Itobf|wKbJ6+Y#gPl zpd7Uec$k1{%5=fa>3dG%z_FC?%8ZnbL_Pf(kIngIdirCK=DBy+1AO3STkA#eN5{9h zoP94a0}g?ax5>wDRdzwC_zH9}r9E`66jmYaOZs~fukD#@t<75{k~pq^i}%-W5moA3 zG;7Y+U|aDL6Hv6V#<%hba;{_-i?@gEW^GfTA_$+8bU;~IVA$ai4qjcNLQv#{z=`lq z$W)@<=)nsTi|d4jfCm8Bme4kp2%5mL9Qkm6&c6!>M5b#+N6kFB123LyY3?Ec=}n8j z|H#L=3%CX$OZs>7fcLL<|HCTujl`=~r_+OJ+{f0ma(QKjmnNRv?xzC|w07aQ(?ls; zqO(!n)qdb|$gvWCM7^m-CC||%uYP^$sG2StzvnIAcjoegsVt|({B-uE#65@M)}Q#3 zvpQDd#&Ov!_Wh9kT`PU>kOn0G)w4Ad6-^dXENze*Ta?^9w>VjGZk--?q2D(1bWMWs zTAvYC41W!UflZDTm@cZA>JoU6bi-f2_(J@>SL>T9CH zx(fkY^#3eCz!AZ?%P#|!Ngx+Az7GiuFw=FtEZQ>)l%Uzz*vp2UX?{(^lkz2ZlJ#-v zr%W4Q?{mr2nff^_)Hgpig8x;Lrq6tw`=sF_NYX*?oUOh^rU0y}JvUgG+HkrXRRt;( zo=rV}6jr{QHk?xxuh&p1ZQ>Z2E#kQGo|nTStFybxT|chuCM^2XAV*atc42Ex>2u(r zmwcgP86NZPeBvIYQ$n98)U?0xAyvx<_E~H<*WI~%6-F~~MwuJHu~H>h3O`xvP5DDn z0uZ^btfopU$n87uaBOiU0A0@nz^wZud4lykf0E27Ll~odf8&*_>&>g_^P_{*N_O#& zox@vpSImh=F=lJWE>o3EY9Z!K4#Bu8 zHUuNOdq&9CXtA-i#OW3P2LN!trd8B#G)bC{#}Rk&{p>D7o%sNZWuo|Oxag|yc`QsV zCaOOcfUHUzd;)1`_ovA%%kTSshWF-_YBLcO4`yZVpDb3@k@AY`aDGH+@IRh%Hc&`M zsIT^JoX9T^mME%bE}Q7*X((seR!!mf9vKe-q~gKfO8-EIH50>%2`8WbRRoj?ZK&W!g8nER6`KG?FHJ+sTrG#y3oKOi9_BjWh7Z3}|9X zjRn~>(U@(;VO@VRq~%fNk20IMPEi_F#%jrCHSnVqN{WukD}c>*WkDHC4PazR6JB3V zrPYe}U3;R{J6Yp7vZ;gx$?(Q$Br{+Qs=5hLn4f z=3z#lLPLm7R#{=FujvKmHLr@1)761qO<>_5pnR#Es9?R*kR1Tp^qj8%@ z#)%?8kJs+*cA0{rb_tDJr){19uUotro)M4*tZWYB`reRpJ~)OUnwh9<`zFmy>?T>% z-=R``=w?kjW`P2|uJ;CpnwHyeg`ntp!FCsWuoycq8~r<(nZSY{s4EHca%QGjS`XmU*lD@~PLP znYMtSEG~IyvS{L3)Bd8DujguER(IZy^9k;zhCq^sK*QWb{idd(Xl#RvR2k*Jw zE*4nhcu?a_q!@BJv1(ArB0o-WF1JidH4!N(D`IOC9;ff{2PoARGSCH#9P>y>!N0tNrbpPH9^eKlv{!jzD~N!uj1xrFWC!jy|m( zqVDilsLNyuGoXt_Thz`>9Qmc|`)E_mX4hFFp~xm}Q*Hb#YHM>-s`^8>4;SYc!lY+r zZIKMGZRae{5sT4Dw}QrZ5ssR1k{a}D1saofm<4Q1+=1q>0UFJt-E>iO+q2L=065Qd z91heWcE=T)q*ZxtQDG-lbI*y%-+pA=)Wy4fjXplRx*bd4V5Z2 zO$xd}86|mK)C~U2R@V=TeAiQv+@@&wAho_-PAj-dyX@2&R`J`#;!Sd=1Z_X5AsRrr zIOB>?)ctLfvg;jV((Xy~fQk{0pz2FRW@5WF$EFK)uo_~Uf6q0EcLNsx;vG`(cK~cK z*Xb${#spXTXjj~HX6{f{xl3?9wr%J|iS#Rp;Z@ z9g->1;&<$(sq4ZZ&YJ>&tmD%0n2By3K^jJAi0ikUR2Gd+hR?od*R0J!opH$;HmF#+zx;+*d!7q?LJXHVHe+Dh8D~ zDrzfpx&{i!hN}GUGLiULUvHG16~qN(V)TeJ&(-^6%=ApC=LAd>EA5}Ir@e8{VrhYV z<~pF8m(8}r8~w2?cNom>#QgDs2XbC?WaleQy|s~O@}uWHLqUgVPQSrz5()Oj<0@96 zWe!(niEQL7dX=nqz{dMbBEsKv2<~fMu;m;xCI<;-0KOecc1+BpQM=thnpIt)x;UR4 z|A^_~5>dpBo#q)w>6<_DYKe)tzin>rAa3#9g9=`5$jt~AVW(64i*({5L{7$dDDPII z_a=s`bUlk=&swE}Kz4OUf7$f*uIlzoGz)5$rHbTy?<`bQG_lGlVmef{yKckac8Bm- z0H~KiuC9BI=^@k@LG81`>aHh!k7{d$o*kk(<{(LI``|5ye_HOZG0b=^ly#=qB64>G z$$Y9ic}_jcfI3%pgivOFK1vZto+mEQW!hST4BF8EshSc_ADJBq1n#j^rFKCXMsNfTBZ|9q_D;& zZPx{p8|w*te2xe3HKM$3^MSS^1JN5JslC(c=xH1D_!gmdN>EsI*D9WeqUy#B`NI=o z3c>Nwpc=TuxQbpY6kDg^s_7hj8#jM)hE3W5W0+{TjjIxMoMs)=xNJ{FPtBzroofab zgB4EYtBy_`$#-^=AEi$}BWN4aTwc(8W4WYA##pDLp?mbMMyFjNBP>bZ6?K(LL@8v% zo{)c}IPggB3LpG^9_OxG9afl+_b(P;sFPNPmfu7B^t(~Q1ZHp-nZT+ReV=!2i^`a< zKH;Q7cM9k0FEggKB6t#Qwz7-d%FlEaJIEyuBi>#-{-dYI6Jc6<5_M~RwS98BX%# z>I@7rBcmhA_P#^)x=c|4nRG)u+R0J8_NlE;Ls6_vL!;NV994$Hq6WrU-xmu>GK&P#=Gg^uBeE(QODc=2?Jxy}UT~@?)@=xMXkVQkS?%pheK<9j z{!jIZ-IR?u{>6{)?N%CslK)K9-M*LYiC5Eq`Yo-wi|=;fd$_BQm9dSn3j?Q-^(;q#r!epVe9auF?%um+yR_D??K+w{^NZW|)Cb+PT_{*xXOysg zJdMDGh9B~kwVQaJ?FPlGwiEUXv8Z?DD#a$;9Oc`w57=xXNSgKsPO4^KtL6%c=p;jy zfd2bcMUwvl<+EWx8O@2*B>vIApBBkhcT={4Z zkT%`?7BjUZY{KcOQ*^&;Edjpbo*chzFd)%5eXt7ZCHP#X!`paumXnbHHD($b49=Hz z!qp@MtHN`Wts0BipTa%}2>Vk4ay6{I@)- z>=z45m)@atMk8@UGfNwB)d^nBAFL+cU`GMB>>i;1=IhG!fAXdAV$UtZ1#-p6i7DQw z=FxJPN_kny`cxoFIxIT|Htyb_a`%R?eZIS9`M)dcx!?N%K%bCrSpHFx0JhEQMd#h` zzU1CB{-2U+GuOiE`&&XxWvV-qVLMqMzN;PoT?#&c?J*NWCI2&kMEd`iY?YP&@@EzI zY?e9hoeszam|qsPn^VzNziZn1-;%Qf8iMKKpwMTw))AcjLdy$&{{6yd5AH(Re-~RA z)yON360Pm6t@I!7GE{=A;^JD&xrm|IVPSfDdJlyF5vGf)i%*$DfJWUKQF4VBL6Ae1 zay~a{m>gZE+h?A{Y3x8?%rU*hc)=`p)DlqOv9sG-izU+Wt!oJNV|M~rNt<66Hl;R2 zLPUf*p`qDLq^BV-u z0Y;J0k+BmWX=)-?{qpy8Q3r2hHPyhV6^>MIp~^cYxFOq4Dw_E83rV#%FI2)t@LEfPsa2^Y2907Y5W)C~HzAyFc^od25HT z*D22GBs4B=ycJiJo+vc8eic;+>>|*-&2RT8P>eCs-n4GEFJ@!ia;z8H{JwDd8ZX#n zO4PfIC%?;32JU-; zg=K08-I=RNWd7&TWA?v$0sK%!e#JP7`iVC=4TU;`zxN5BSp%&6I=OE1KB;#eaRZx~ zJ4mv~uE@?jr?7CiqEe@j2lKjo>dW_Hw#zt*WMNL@qkhnZ$7f5&pKS^LL)SsLl-vnO zfTaa%4Vn2iFdz`1#o*!LVPF1j&0e+cT)yIRf=x~yjs_EAde|!|=~_eIzXpao0fr2T zcG{V1g6h5$?kMKC*qE2VaPpaiwzZ`Uhx{LD#r*vIbnfQncnfoLL#*SCyAgxGYq*ym zmE1~%LoU>-VFp}rvvXi9Ox$T)`es()%Ymcv zcxqrFjD#|1XIm=So_EzL7XDu!)M)rCM@H%j{7+dns%?hfNx=Z3V{V?)Atjz*Sl6PY zt$cBjZLso^VBah>BwV)%eGJICc4iDv6=Bb`K}jrT=wrU& zuyg`ZafFEq1BfkA{(1wAMq9(-@JQw-|9k~RL2Mrh%w-lk2?b#!yVhzJ$}t+>ZR*`p zkfb4+b2^*lG&9|Qdl}sB+t>*3eTZDFlmVluKa<@%NU{yQX1Q$@v(2N{pkZPBSKDRi z^X687C+S)W)td}xvRLWL<*IoCvQYjHyf}Kga=PZP*K{zs)6>&xCeOWnyw^Ksh3yvx z?!oCAFm&)Lq2N1F)n>7?vh>$9eBXD#W42XQ>pC?XL%a3G706LnPC)jmnS{tOxw>?` zMV{bti?i;rMbR>C(YGD1F>4-B9obL1x3ri6;la9(E4P()*d$3w^&A|vwCMjm6ID|` zGEppaKqrP3g;!(E4;fY*5ljTZ@n}FaMsTm*=L^Zw^747`T29>>EPqlA(0njeC%k*} zmsnWqo99oAjMH)#meUW8PE0}iQ`VIL;|d~CJ238|1ivOWTwWeo;o@SE%K%;0a;+Cf z0tbj>AyM#0zo~oLZVy#;GVW-#DRh7;j7ylT;%C7OBrD(I)>f-XB!{wZj~cO_C!m1m zI90peDx;v#-P2=scOQUd*q!Edt^O|V$ZOxR4B%vp94TiqXk=olNBv$$AP}`vwH;Ym z3k$Cy5Qwcal?W_IrFH1%&|wH>j10HkZcZHfI zz0IoNu25GWwVq@@R&n!`ajGmoKBfk#kM8A2mXxr=;Z)WaNZvW{-Blz#x5Nqh$P^wC zx~d4jw%9}akIkhUJ8DiS&;4<(a?Xg~oH$?-71ex9s`AI3*Yz1LHa6y_3+-%4Z^0&v z6itA*p^qEvOXBxOa}z&nr_JOfKq#17EKU;>i`TjCWZ~m63LWoLp6$+R>Zkw$#X{ca z=CZO_|GRUT>X^z6A)sWu?Ak2XZ{y(xPRODf4)u-e3q?goe{)MNSl!-5awEW~53jB^ z8O}--xi}woo%>jO)sa}_aA0C&BnE-gZESCQuSZ1KBk2J>j&X!uD<8{u*6ORXvr_!q z%kk{$=x9qGeV=)RZaccc79>)xl;f0;gc~N>_A>IBRqn6`VyAc~@ zq9C(M;ZyE{Ld9|yx(&S1gaA)D;JKwJe4(OF3a&V_;EZfm?b->^=J|1{H+cMrdK6;- zapxC4s)yG#^Rq5)p@{5NQ&$a~+4vV&&z?a;BaD0Yny&8O?eYLN@DDn>y4ucMb1p-f zV`NMnjlMQDrHa9|8lC@)8B~_-aF9ryqq=Z{0SC%tCfmu=(3nvU-Ng(*@D22CAzbgc z?BQg~+vL1lG<@t-`mdkU(9%up=w+IkZVM5GCNO_*r_NP_EeJ(t(2j4BkMBB2Re_J( zS+AYN-x8W7dpsIG6Tp>lOO6| z_GxdfhrRf}u-EtCYgu65H2x68?T+1qSiV9PGR z>jM5mFidw#GOI2TaUZO~7=tT%_?q`x3DUOYD<#iCJe9!yOC^^BC?&1-H=V-(YrD5_ z05;@WadBJ!Fi6K6*>g?5kpT$}k*(%&H99c)g8^tDbHBV9`xgsOq%ol)oru#MV9^PFCZBR}U8Aeikn#}5v`B4RP@5xp*syxYTdAe@p4$`eFwE$C@! zYHIe!L{K1C!cXh#>%F)8Uge`pyEku{u+-NX9G&g z(|Ay}m8l^U1A${DpwIi~@4f+NLGIUiEhjaY1xKH3TA{`}x3jTnJBLIn9v(U>_7vux z72%hws*bGlJJL3O`FJjW!*W@94iF-!HmYZJbA41~i^=uLnP zqM(#fl>dx%ol}Hp^utk^EFB$l(jvhpZ(sZBJkfo!Au#r!;y%R{1$@K$x6IVk@yzid zrsfYxyOuffP8F8K0bwz53ldLp^0$@ugIfN3rC%6=#N=JqQ|Z zzNpn{!AQAU?SYq|agxowu>w70Eabv8h&+Z0__l$^wW;I}Y~H_@as1h0m{X89wly6_ zF6s9^M>!vGsu{Dw6&m}bqssqisq5jByii!Za6*}wq5uk!M;I7%v~jx1fMhPCopxl;w8d)JaeG4`*#RIsoYRoQ^OHG_0(h z38s~qk=mLD{moiMv#5`jMlJah4qK|yno&Q!iX3= zt5d%su&|-w2B4m;+2tKiDF=o)Qz13JHx`x^u!b#S|FSx}2?T;Agg-&~uoah#wRT<1 zR8%dyIJ{n#r3 ztzv62_E7K;UUOG2)e0m7g3nMb)^JwIq%MTO>)r2;R@|5eLAa7 zxnlqUA0RxdCOsoyBcrNrT<4*)w|lp{b0x-7buG=5hr<^}JcxQrBx7YHJ@Z7OUH#uI z*nR0=@Gzaw&}u6;$$fAzMhyN#x(zS5tta7{1nR5>COg*#X0%De0Cm-hO&zHcgGe~u z(*S2Ez3cM?IXa#57A7Dc+CMotI6ci`8a65cGK)Lio%`tfGBF_{Z(O?@&So@~mH+qH zKap-*0_f^gJ_907+1IO6)RFY;3{(sZxjnW;IR(A_qHw#TfzR<8WIvLUUXc>%sHr(` zo3DLTzq;NMWxcw%RG|_SL2`+ScWFXU}mnd3UozBM*> z7&f+G!c%UmQzo848ep24`LFY%{0kGU0!zR3A)vW4PpNGBkUPVv5+dj%GtnW zHM55101*+Xpu*)xz-)+ubKWbKOjjKv!9dIsjdhx=aR0M{t-icXa;KRxbv!ZUOH$I`bAb2dcNGdH zF_`-D#ly+W%R8qwi-(srb?$4Y)XlYb6doSH9J@W+yQ~f9{61?|+iycU^&5~NXB+HY zpre*es|k8uWt;ysi!Z9}dD-hp2TZd&Zw_j;`y1jeF2+>AGYsl!SS&JH z;F?T@`IIkfj`SIx2_FtEgZom3^~H(qjldV82?0HG~Y=e=)XR4nHz;XQM>Yho$o zg8YAsy>(Pn?fW&Zq9`CDEg+!M-Cas|cS|?Y&8U<}Ne&F%4I(i#2m;dGF?7R74h%5! zJ3i0n^Zvf;`~LHuKM!ZIW}Ue2>)Lx?d&7Fg(#XAldm#HSmIGwb?sw?1l8i#q-q%uB zR=ci_R%5$9ukHf-}p3 zZ97=!9N_1t@s9C4cN(R6G5{s@b#?Z zZ<~ldIa2h=ikZ{Q$xZ!N4W?@OFWCZE38fkl0BClOyhMhFFDwX~IF?U4O9 zlMmV(pXcG>N4HLo94x!fC-fN4JJe%`5jJ!UlXyg_$|;%Z!N$hdc0WnyegpDLdwP1G zJba+YZfTkKx1hYfySv>U*|VRwubsE!$29*cA9uDzFboPxIRo7A$P2HgCD@gs&vUaA zi(Rri&cj{*gMxn4iU-<&E~1O9!-iL8@!E&Oz}--0qOYy&wz|+zxFXDM^+NTw>1=pY z4pLJY?;fyN50XTw(2_G!k3-WB92W5?OGFww8meZ@YrSM-%ShO8jhg5sU;UY}qXiph zosS3j4K?QQUbwbem32ELW2t2_KF{4AdnxFd3Id-hVPi2d8P_;5ZGBF1E7KkT65*k? z^?Mf#sze4ADKa?QJcI=`HIXj2Oqe0@nnMlzVvB5STR(2qC(CcvF|ggvaImF5hX6_2 zWFMKL&?r$bwn}ADdiFxo7R*-5pz`^s5|&`<;(uJ6?qz({wYpL-X>zHe z20A8A8U2cem;jdS0Jz}v)`W>!{nd2~$*`Iip8yfoqgui{yd43q{MUTLYHx_Ar|M>P zDKJxG)`znBQ-aYdCrZ^B{GCpZFJ~rVBnn%N%}lfO43`GHmC_UTN26P~+fa9eGP31c zql94P7~xPzekY)HNRVhq*R5CV34;LjE`T;95dl`;lP185W^-!qTZ^cWVN%;B23pqCr+fl;~!>t_#jo+0v9ue(r4c}>P`?41DEKp8sOpyvvq?+&1 zv#`B%$Tc2Y%k7&;;}v5a533Ee!=%aJfEXw=#~k))YD-BnaUHjLh95 zntsGaq`kT69DJ0?ZmPAh)^vEPWNB$JcM4>X@jC-36vx+1(t@Vo{j4Cw3xT^Pw9&6* z*Cx&_WXGZT-_Hj)RArdrWBtpTA{}h%G{oi#!KO(G5OSiI1>abdi$;oii>QO=t_C?4 zuWS7R0ys>6*li6E1Hc4!nB=SHb^8ltWo4I#^9TG43`|UW>q_heT>|JEdI14+f)a;m zgJ+~>A+Tk#u{BqBAgOPD>6GiSn>2?8eU;6BPrCOrf@-y6>IM!{H`MHnzBlb;>_1O8 z&Na@RR#(*!yDtDlgeSJ3;HsaXJ}#y!crf%Xe}^u`hbO-wkG7;-FAty?2PZ{k<~{9MpOdkt+o-LiHz0x{qCX{8PG-}dIpJ=2=ldjdGG z_Eih`Di-~KKqT1M`#tHk>=U`u$oYZyLyFzQIi6l?6!9&#+&z}69iaP3FmF<$i7&Ev0ynoWjB)FhAw_dTWA<$-LTH*9oXP5G~{BZD3TnaI&z z<-4J|mAR3)d~J_DZ_>qH@dW>T=`E;JDp_;fT&_vN0f;%wvlHs za+i>pEzHqO^SqTBE?~r6ylbwRG}PE>9<#Y<{U)Sve@V2Tt9YvF<-gDUql{NI5J9ZS zuHFA=?LL7EHV-*K7Qk=1+lYAGwSN80nr+^iNe9}DyIq<%kIC!+R5g+9X?8j8)11G_ z>0oxF)1k>xP3^tQ_5S`y9-9KK-0$Ca_4IC;fk3GMdHTfh?B7G8D-#pkt}CM6{Nhk1 zB86DmDdSe(aY~<+-kI!g05aCxBP}=CHMu?O-83Fsl~V{K#oLPd?HcBOEt_;S z?5Yg;ULz!8IcbWf2j(ShBa+DkOil6BkX8Ta?f1hUICIj8&yHDsco;eC6FJnI>D#@vdci}!`=zx$SAiB^LtW8_2?+FU zXegoOeI3gZkaqcBEZ|snG~;J<8`<98tg+99`S#M)MlVo=+k`U;|MGIzF@TMbgg&Td zaCPIYDNfa5_c}xrSVZIh2jMQxX(rLK`?x`H33GX3Sv%yPDfG*%D_Y-9|93X(JQeKm z`%U?@p^=ds(2BnM`I^Xiz*-YE^k8SYcf@4~LQYPxxVTWi@Udi<(cfRTH(HK5;LAii z3iaHl9{37p_6)7LnXE%im!;^eZLP0wTB-_TzdW(c|CNxSiDJ>#*5&S&8T8vRf!2aX z?088?!FGYXKoYN0-aM(8=M80*TWYGQ7KDo}u4nVfj6R*{7d zbCuh*Wqp>Nxd~lE^FvtgE-6!~c38G?ZJKs`#dy3P+5wMOD1vQgD_Rvp>urh9%Lkuc z@zX=F#Q|x8nb~DC+t(cK+8=0#`Gz{b3y?Owqjk%e2t;kd9HPFGW_7&(=|=(Zl&*Fk zl)Tt@Qo3lmySpDJkJHoBJq0{`aMiy*Y8$@@x}8+}Xp;P;T2VCtx(a5;$iEK&lR)Qn z)u@jmYBTNdLBA7Tv7m4JGd7l!^A?o^L>W)>@jX?3rf7>d>-o^woiVfEDdus{8?w}-i! zMT+1~T$vzVb319PI=$WuSz?n&=HXQQ3+lI(M~TU_)A zJQIbQ3T|*0Ve>pdP0cu4fM*9JXB{Fp2iaRP$#gQ0s&Hu8C^MtaeucC-?zex?EK}#E zIlHzs3zZA4-O9*lZRZ(FySJRmwXrOw`K4xZT=Q%zfOJwQvd5w2%%G2YOLF*L%)?yz zf47AUi$jykUj8Uu8XNe8!3UWj1|AEtTJE_nfJVEH+*S}mTEu*Pii?Yn{gPpWAhLXz zaq(w`T&3``bm7O>xj&5^r;2(_O&+R(a7>0EcOQwZ36%4)wBQQQB*+8Ijj5SCOBam zG)hhSr?}(JUstLvo~-Iw{xndt$G!I7BW4P||6^2qz&2cF{V2%IDH=N4-`C6TC`-}QZiCk;qYR0#uN^d9~a=Gpgy5&?O0pDN5bvtCOZ&^ zrmFmf^vOeoNUU=e7B&jhlYLG@)k6`%n`kfX)V5$}z{(MjWawNo3~<*D)Sjh|o9}sU z9h2DJbA`K@I&rnEi`7W>MgwSst2KR6|DodNprmz*QMG4om$Em9Eq#j_ZR1}F#9;Da|F+*76|JCWLb{fb$C zi+^k2!cD;RTi5b(whnr=;~6*2x71BiSj&AnC3?apmDwwKSptXl+x7Pis~ao^HOv-w z23!w5A(|)ij~c2t#M#WlRhbA(mRewAsF!7~sn2qY1TbjKp}=;t08~3uyRDu|v;@7< zcx4I~R_6TafOS9O$ma+rfnWn5u-@k#BG1d$k7I3_TxVouhJ=HL{SZrjgXN&OOpz!u zu9h|tPx!t&YI3W2ma;edHX%--x_P{lkY(|rlQ(pavUj|c7ihpy26etxknZgk(uXF;a8M|Rr$XE^1ihA#L#p1`l}Zgq9rN4+cSt}7_V-XGxH(%0MyTm| zd}}7Dwa~9GaS;|V37RXL-cKB9^*-89+O+CTvktzy5HJfqNp5NhDJc&Q>Y2B7eQ~vS zbd*o{>sd%uVHg`D5jHe}H*3YW<)_Xg0M5A)XMWy1(>gAAD=PsgEym58l`iahDpna> z)BBc(*o(~Ae%YQhOzbi)z_eQ4?UbE@wAir}G>j2YA_U=E@ zBaqm_wOa(X9l4#7B|^f&!p4ui@4QO6(#GA0!ywTIe{gcQ3&u1}T7XT4Y+ET_8`ADR z|M_f`Km;$AGz+@c0ybT<*#OL$p2*x5<48+>GAA0*@0ADaqJ8K#Itd6Y1e~qH%UX+O z`$yAZMA`z4{ty!$foL|*)G_7%Zu%-FCdz(okuBxlxM}osbciV^x&>w9qZc~Rot-=! z#=GR%htspD7Uw~Jl+^p&_d^eJIr+E;_#V<10+uXyxKTap{CKl{6>)I^9AUZdbA!xk z^IAW%T_OE;r`2iQwP*D!bz3OGx)`136Aqj#TY2wBhUz8K(uw{|v?;YVV~j6Nq?n2E z{-nu_G4{}U3?%W4VKSxWMnL{XDekJ58fS{**%zEENEUjtiTVsvDpRG5jL=YkCZ=aH z??BKolkC-3sQlg;{)Qav-Dx>La|9PM)EDJC8Xn%vJqUQZX9pvzU3hj4JwtAbczK`N z{@KZ67PC&_j4COBUtCRxX9?Xb|_N_s%#`~Vrt?b~_`A(jj zo5$b7LT;8L-YUsQ+sejG&reh7fN&l@SnO|J7CAWNxeE-)>%)_{Dydhat|ca}Le-Sm zNU@T5;41f*O|u}|Z48=N9&TaIZWa{K<7Ao~s`e~M-usBpTsje9PaKlbR5d@IAtq#a zwjeb)=W;1;8hQNVG1L<;i$5$ZwDA-iE{uUe^OwUR!ft{>p{DTM$I<87vpMyN4L37y zo!@GCD8af#AjkRR-?so50)tS6kZ8_uM?9mtD&V7;6dbprK0q+y%FlxvgbGVsK9BM#@41Z-IE0(15ctz#!6V@I;0*h6lu25nn3*TCZaHvfE7fJWd$ z@O;CaUPp7Zrm(YlXBl7l(t;Ut@&Hh6cpohduhi=s8?4UnI9=^_$2H9Z%A><^N)yf5 zrI#-^1t+t`Y-fIAM5N*aCg#M+$@pt)+K+v^U8~Wv66j&oSqBVmZf@j=nU;wocN#50 zq%wW}m``79=8}}2iQglm-=lw(3PovPiGBlq7T<3?9SAA>yPFZqa_O$DmB($ZZQ_3J zm5Uj!pn&y7lMwO+zYI1*0{?UQAlrxl_{S)4IHsKm-=<91F1-g4Abb3uBvO&x;;C%Z^qWLQDM`t$mX?u{s#325?2r^Kiq+8+j9Zg1pnP=s_OWcAocH*pm!88v4vCXJ1+-o2jLd*$%aPFBCTVX|3gc2mRmRB=Axk!MP(`kre-a{Mmwj@nTi zg5YEB$wdi?;rCL*zs;v9@G7qsBl@~Awh(4wQFkU4uE&gJlA(WHy@7*M|LEulnB7dr zVQ>97AOJgGj3(QI1)rHHDA-F&|H|vZVXCYst=g6x?#f%=O|@gr@R}jxPd|!)gOd6I z&@gZf2rEg`&@t9b$ym3u|FDw@1xXER89VLsijd~m%^lIeuHfl$;z&+n-3on@k_%Xk zrQSzfCD%}A@4ce(@`H4AP{0WtsmArpqRY&cUBhkb^yn-Ca!?fuNC9kpx2Dkm58G0j^9_gWm}R^o@H;Dh61D=qWsYPM z;PZ3>!rnML+S!lxVFf!|{MOX26{Qmg7bMO(f%5}@rg-&c9|6d%3OxmYf&Nmjr^zdxXS|>s9ms9{K0D;@XYo0pnq0B)bGp8+=?b@L zdMphR8@CXcCfOB)`=$hR*8?HHfyPeRk)J#*2hXRaON2;>$cGc6M)T7bJ%hB)a^d_Z z#i`Mhg>rFyBWVg-*E<;s0^ZFv^(tkW6AUBDddU~Ppuh~T9qT>qtn8w@KckL~5z01; zxS;ueSX$uOb*cy6p4gI+kvZu?t@bQsW9mvHs4go>4d_ccYM-Urd2czz^N+j7DPyW}tv6pX6PLA=mZphGcT7V!;(Eud z%Aj^(6gE0IcmT-1awyQ_)S#sjS4T_W)5<+Zqv=m^Y%(P+*yw{ou|(O>)aXh$OKTe%>V|CyturxfG{-g1#D{m}bDf z)?&Q5U5#g$7ix+tDZiQA-$&^$i<`A%roS)9WG(OPU+Ou&v zYF8JB?NO=eM-r&-ZX3NSOD0g#n)$;!u_@}Pp3@fCa%N(t5~v1HIKq`KCR%#CS3o^8 z<<;$|%SCuYeSJ+epnbr>#?JCTwZGJW^5^i50;zRPAlRq&!OK%6wEs<|581ts_N9|f zW0TEUU}2x*U}-+OT4YVxh9HZ+DxQ7JPLic~ z4tb&0@_WKEjh;q)($qpSxtQ%q^{m%zYloq0-G4L|oFuy( zC5>{?0L^(EVT`%8ZIscCI#-a!?9c`>%v4gqPkC54S6F^*D9S5L1G_=LKLRInR&X7?iF#Vz9V zLkyy(bv0~#_ck(sm=dmHl0royg0l0Ar`Q z{C_Zn_V;t?c@%TEc|8}8pnxDQ8k@Qmy@m#OPoPtmqQwUy2~2xOO2;Li%DS*hs(4EL z9~I}lRd+;NN5^Ry%ci@Kfc464lMi++9yTFAX2P>gV;#OHanwy)gxPctRzkFy$-l6vmuzBzH0#|lgef}?I1S}hmTwPs(A5bIz z3;5H$PVJ4q6wSYfG6o>UK{-4BU0#6Vq3nPD^1o*i$(yqu0l!VbYVQY~y?tqLdoXsP z1)^&CzuKC=7XhCEUM_tn(dyO~9pT{Ik8vxjzi>W~1zQM4vx5hln8Lj={s#?f4lL~< z`mC217aG5bHA{aj4i1|0l0WSY@9hPY3vp*a2L}ku%kq-@t>_c`%{h6Yb)KG{+=TD) zbsc%h)07qAT~7Q^il=OBY_gVeptEvqMe3MvlB{h3@|dF|V91BQe7d)@@z3R{IA}{o zi94mAmfL0BYz3+1B}IoJRkOXoGO5d6*mZ*^K5lH%eNVZhB>LO~ zNZSB#UYnr_%*QNucZHSC+hvMDGbiEAkVvNjB4%*m&GofXp-g3^5L>f%d2-r1a4Uur zfbE|2P$cs~SH@B+WI-4u4U*{i^~)Fg(angNsYaTaI%n2i4*x6jm8E$q>awcR;o-qz zXlM2dGJGluLX~$Fi$nbBm8;V4?G1!5EaAO4E@}7zlg@ciQVglBt)nB|-O)V(6P6_T zgD9ovd_U*#pBOLZLf>-!$?y=U0304`ydeDTNO~UJUwu74!Xl^w>q<(#{L|Qed~eXs zeVC_|IDd+2n|5vW&k&L^2^y~6ShrB2pG*Y#LCBn0blJ^Xym5(51GX-JZNdgf&jWM~ zsp3h@`}?hnxI-aQG|BRfKbBn($Is+{S)2eh9skWZ5{c;&4rGZ3=k;f2 zzmcj}Yzlw}b5y%2mPo(BN3(<8OGZAhchKm zCm1j)dw05WxGaYgo5~uy+Ej#(i`%E(_1Ukk^ak_Mo2k(LSN11?=!C(Yqaik7N;W@}ASt8Iblr9>}~8Ww(T|j$3kKhnqvMVxiozanETd*;)O+>%_fo z1_Hk@nUcm9_b^65Z4D!5bKs=;80yceq?s9$QG>n{zdMM$j_MDzpO3h;I-xPPgrK-*dtczpCIUJz4_4?3$lkOA|u| zp8&sA#YdlIe!kP@Ty#=?KsYomAJctndPB=Z$JfbUO>wkzbdKCm1N#mDJ}Rio82wE)xBbIKp_7m? z#ZQuyQR8HS%--R%y-{kY&pCP2+~VL(bdPOM1Vi}4P~QNYeTbt{c~l4N&bhd0a>Go> zcHZy4_yS4Lpk7BH6~S|F)Bw(#&v~?O6k2M;pu9IAk#=tHEbLiV#myf*q}gzOx6vK5 z^ry!(Jfq9s#b1d=v(+xMmfr@=!pygkPuy{edXT=CW!Z(A0jRtXJQU3dN=zWaaCm&>vYk`XuQyu+Ns6%OfjSa1zu6}b@o`d6W8>wksE#`b&CFUhl=u+D=G9s_f8OK(hd1JJ| zdQCw)kC=uwiwm`x*~tT_FOXhC?wnItn_rX1?K+F<3TdnAiOd#Ya5=7sy}Vq=O8~kW zrrDCRGaQirhFG@w(T_p)b3D9B0sbT8Rn+OBD3lajmZZck%poW)yOy6j?cyM?pAJ!b zDQf)PR>HdOU)7{Cc~nXhGAjsOc^HAJOL{OefA(39YpUSvml8)CBOM%z}@>Or8YF`aUor| zz5H`Bvg?ELYR}}%<>YuJjwatb5-L^&o%mq=SNz8Xgu_iahPG$}k`|cWpoM zc62Q7lc)m#MV=Aikg{1?0$_fPi#!Hc4JDjWdvoJM@f<_nes7%~1be7hXy#SNsYR*k zeal8)8o`|fZz{fzjRDXox*Zk1czdp48ZcZR>k8EIYp#i0Rc~-=oezZxtN$3u)#S~0%OCB#Sn;{Uh z+&Eo4p2r@SZFhI+msMHMpo#ffbGVIpRkur9 zq+@>1M8vom6I{4*Yg~g6W>7jI$NqVWl&rz!Vfj=UsFdI19eRej9S<8HE(3VPP^I&FgvqQ@A9>ofeIf2GU_uQd0cRwrffx zRRE>ozutkhCrv7mF_C1ZC1jL@(}*6L{5RJ=&bsMFu`j4dF2`u_kXPrt_nth%Dq37> z@<5>w;Ad2Vzp~Rlcaow|fgjYL3xv(Qri;3N|Nhy|aNF$<7P&@FDFPy*^QlQtQO9vJ z#S3}pIT;VF1(!;lVWkT&)HT^h1q$uB9~u!c?!49&HY#=#Xk$ZyaqmOf6+%KbH=oaC zQ?Yz{BpRHCs$$;7xB#ZsL~IJM{PaLj8CwhVSDp$*DoHiHP0lDz;_PH z*j??(?C)-#D9|RPkyTmd3$I*?-2;JUy95LTcsLgf7mYlWJm%cLnSIM%h_9RGpQ)=u z)EUiE_+KCc(9?0h3uBd+E$WGqc8n^v3rdK{9z7$NU+!pzw}Vja-J4DL$(=?YW~~wG zp>G!}tJ(_lYrEAp)J82-iRps^oPCTp313Q+sewF5s6;DbJWUD-(o!VRhHNSOpS!Yz zntMwHhW;<*mDb+Y7e_9t9=dzw<`s!G=?XSm%g(vI*=g56*m zxLKVwrTw%p;>qo29a5eV6=+ctJvZamJfCI}2`|8$tKEL;LfS3qqkAO%u(5_270C;H z^5+BekRUplqNU(S7U$_budw7tlApdUuVMs+pgv4v;GuTJZ5}c{x}DwtS$Xg+VD2jo zdhykZzx#Aw10RrZY|`9$Yg_FMXva>oXq7Lyd$tcOJ48S5Z}!U;XXlni-lv)iTlnS-GqEx$fnLu~@c^FBd{uW;2$9+4I!e*d(C zAx6Iv$uSxk;H^4vHQIb9>s?>R&#SY!xxlK6RDIMVJvlqz_?)H?Z{n}qUQ$ku;h%cx zUU$N`&B13#oo@#vP$B=uEJ+n+R^yk*v!eKCpNPmwPKzbPwzn#B3LDEC8e$(hV0;Gf zlbQ_Wfoy|Uo~*LKu!okGmXxJsfKiJs#dBgx8MV>hsVBRZcw(o2Htz0TA4AM*=PM@b z2dp#;HTR}XxH2-6w_rgNMELmZM8ahPN{Wit)#@4s{ZEy2toaa{3vVkm*95Jrs$Dr> z_zTw$h^~~=P$wJSottG_k#<|uB&DQyy@&y%V-EF(v;@mR2>5aHna@S51JuZ+Elq`Y zueGA2q_LqvH-G%$}W)$hS>I$r$MVg+BmKG#A=F{2n&&^<+^D=>@eC85jGwnwQg=hKgPI zUFI#7T05#?78#lb0h))$I)r__(po?JeI;V;Foi%956nUadQWM#A_NZ2Tu&&5^_g(551dCQFjxh|)L5TWu=RGz zp$=!`d|uA?Cc#?|SFlQt4;V<)jDGAxM+2SNg$}rj{+x|WJ9<~x44mhf2z&UARkoc3 z!k<@k9Gl*3@Wabx@qEc`du4iAtY1eJvCpTXDfX%hp|D?pS(C2l)BZwb$>SA=W{M-lIl zG!D(|(aB*ErZ-RqJ6Z+8fm^-Y}D7*xIuOE(o=sPny%&D|;Y(<~^?P>0v4=!D=IC>+F zyy8NjAhpRR(#C4*3~?5l)!c1r^wnc}11Cpk&}n4x6gj*Hd48~F;sYb|Uk4YJ4U~09 z#8x0Jl7ZCsf|8OFbnCh3-F9+XnnGf0R=7Isk%#M zSH3H+ZhJ{ZrJ6q}N9~vKH2mvVY#3nIKbm>A-L#{By_+A`a?x-O4AlGZ0RQAww(mMq z{`gHGybYcO;A`Vzmwgf|=r6GCab+-5>sg1-oruB2j_)-w81I86(yCu5DlKQqiC^M; zHNUd*c+hsw@f^N`ekV21c?mZ5=SsALC>H@hNkL_0W=fdk+8M`fVmtP^b=$>Ex>?`} z9kAD%jEG6ZFm1ve>APj-FUYD8zjP#@?X0{+oO_3r#hS3OL1TRo`&e6XGwOsJtrrm= zN7dAn3YC2IUwB{|7f(7bwbnOXPrbHwcTX@rZkJZg-*a*zZ{L_>5a&;E@zb>U%rPz+ zSnvUkx?PD56Jhdsa~24U#*Zc1(EhQO;C;J)xc}4MXKn>~>{TRcyWX0()TT0d3F9z3 z$1A@iIYK$Z>?sI|cV~r^;B`nZ4Xqm_{666KwKG}v*sxbCxDKDf7p+ygtB`b9;{ z+rmB&pY^vM98f#lh9k%8eO?;EGy6PGzaI0X&62h-Or2cF+hCtde{Anw<}hZAzcOTQ zW+$l!%oUUW8R@X2~@b*uXp59kKxtS8H*`!V&i5#NS?-d4-8U!rj8 zKM{CM7-hY(AwBC^F>kmuM%JF$Wh6%m2@P2{^11}>=E?;|(w`XbqG3QD3$nBW2?gy* zpbJY2)_yUW8yXruqdE_c{GFZ@kU)*-rEtA|9Ly^buw4y8Y=zOt0gy@Tj&jYkL(uIB z!!7hr%q*-fpy+{us>1e3oDXZffAjA#xHvFta|U8WzBB_J;c`c_1H4hu-%w-VeLZQF zbqqEnth@V4JebF%oHK2`bCwOeH1#`QU?R-L^88?vly* zl!yS~`-;Ei=)*h~Mj+JDaFOq5ZQ#SRh)FFu;r()0`zy}q_G{$gRn>edV1)39f3C@r z)Z{nkf=*+8@%^tY_@`m*|J&x}U%RwL z-=QTpTH@ONA9Pg_S@mg=^UAro^}(9GL`8=bLBAbp|M)#9tV3rqZTx86I~->dc{%eg z)!t@Ky2uw%U|Ok=E}X{16Ck^ILC3>PSF_lbYQP_)H3VtF=C8ehzA*E>HDvRcoqIR$ zVN2q)l;=V|#D(e7u`yF3?>eOd5+kN$3x>Dh8LIYi0vj!G*na%YSR=hoWgC_yT5r(i z;gg(P;^9s+=QOj~AAf_mK*t>|RXufwuiVjVRkzD?7iijBXj(WqJq2G2&-1NN@^m_> zXOa)c9*OkZeFN_tc`Hb@H+i(dtPD(wm$fM=hxD?RGL~*J9;Yfo9&qOa{tP3FFyFh% z6;GZQZ?MB|>IlTtu9Wmf^?LCnZaw=8!4Dh2zEz+?1!t&%sH3Cfo>GxI^WJrDqG#u$ zdx9|}8JV1xmsmVvJo)u;>CZ2V`)saeL078pjSgNJOC=^!wBIgiucK1E+DDOmL){nlUt(B7 z68!YSJT#fIL5sKyhe%04loRDKLdZDx48KO(> zK!CW)<4TSpen*{KaQWiX`?~kt^xR!ZGbtIZ_wQ1?W;Sc}hJ?(R6EK}SqiZHr(wpmz zaPM|=B3R;lZn1Mp#_Wp5rdFmZ-O7dKIWAK<;n|cp#q4=FSmD9+5x*s;n^B&YxN3i% z-7aeDs>%|_EB6wmEC*|;IR_?satC%4JDGGurm{}94V-~-`{1Jx$Y+a|;ohy2hi}Hc zM#ZhC9MT8N_v4aNj{61d>#fX%`7(1~zZM;h%SWsJCIiBrSnR44{&|UV;M+rp;A$cF zKUd%%7&qzmB?>sT+r7B7Q_70U=Gc9)7yDKZ?mjo1o(=-E{Wb-21qJ=a(=r&3#j}ph zB&(w5q@)1{&d~EIRxz4sQU@wg-w&wU>pD)?6~K+e23il*OG<_>f;$2bRA9$3`YS;? zWKi~~4~R6sm@#dHLi~J)L4~~~2v%H8Gb#7Ru3$OWI|5SoEdk=byZTY~{QkWc*l7m2 zdwcJirM^hFx?Ervny=>CX#Thz321BM7QfE3^GmfNBtjt=lAtZe`h~WevtqSO0xGKB4L7ZX z#Lt%&MA%`qw!`MZ2vQQ_8#TP(W*`xMA7WT<$YXn{?4M|p0vKs5qrSW!D^39)WZ}hC zEw|Zbk58d}UOmnGQ0OC1*4F>LQFoD#+*w-QYD_(`h}^r+?r!t*&xr~LVZRU~_SPWH zZ6cV8|D0gP@mN%k#hGZw1EIrLFv%Da458%bO^DG)F{aDT$+|GVgiGDUZ^rm}(O)gF z_fvGa{h!bhn2iP)jm{3Fdi^xRFYcb#`O}-BTHMlULEUjR=)iq{-nC{1LC{RVzl zj8Ey1YeL!q@vbfk{Vx^}5>#9}?*v4CTvaK3!u^SPf5zKiO=|oDX)gV}=(k7CvLS1s ziEBf1nCHgD^MPH((0)4x3_^T5)MP&IQ}=Aso0FCwnTr(t_XLeqTP7(rvwjqo9?X85 zaftu3l)W}(`#G;6*R&mQGsS+W<*yNNE93MQccV``)>WQN} zqiK90*IFNe`Cy87;B+sCdS)Ftz_I0yMUfqB&%0dvuu$?HjZsksXf>z7@uj5Tk+Kb( zIzCYKTh;pKDt5Obs@|;n*W)k!+|TG&JSSt??3=ugn!P%nbsZMVp7pbfK$5t^6nOVY zYvB!nZFhf2jArjWQYzwTvszQ+zUQAWV3YX8YFRfjG@}ViMMvN@wBI4kRf$T}v8g}~{5%au z4QyT#)l|FE!Q|yfr{YmDq4MV3`)e|FNa`76S%p#adB}0%T0WI^RXWH)G7CAYL|#ayH~+&C=OeGw`G6l zRc|V;UZ{@|F+CoR6RgMu_hL#eOjb`oC;sQm_*iNZPb`U~rR9ES9iQ{a?Nx9D1aL{sH>6?VH9A+zaehrnSKVNDsm<1WQAAv7!>0thR9gV`jTB?owp){C!dND%O?Nlh!}$ z9YGrtFU37KftFAYib-DIJJqt5xwxQhwHp>8%^f!JaZj(0E`|YPa_X4U_x*k&S;rx2 z9yI;yytVT(<|xKM;dqRT!E0ST6mnz|w9Amehxi@N*48@Pv{U^AS4jL2wUZqL=<5|Q z@p!uF?q1r|%vYIrhiD<6sn|L3IupjHj_Df7g_|l_U+jZTJJ!rb8Q&~%c}QCr!!1`6 z85vm%T;C$M()xZ7?(F<;~4Ds9V3f z@8+o6>h@dYW=wZit6udntfgbIEPBY3+xO5!YQbGFBQYAaAkn^3=$=+l%uj5B(E!Xl z#Rqe}h|Uf|`UM5uW%{hVbCs2qJ`b=AoS2vZ*yNoSGGbz~7Y+n!5|5jVRnG=XwTiBa zZVN^X8$a%el7GkLhqO+dW$^M|WE(~u2O4%K9XQAh2bSEs7ozlPQ}kq3XsD!tuBQxY zN-^{-C+G*X(CeMvXxa`QWsQ%@+>mt*H}SEf`l0F$R}3UtwU{b`G!Rf2DbwRNGuz$@ z7OhGIvfN!rcp!PV)nWkRqx(_V=6PiFlbwg@A2VlIh*um->lQYo2C>7sglcWLe3-;_ zC&oB)+_K+)(Vp^a8Oj!bzd!h-GT0f&<^kdz8dX6Gg5WU~b*Jfm`JJt?m0UZR>_STFHb0$jBr$HbemwAIlA6sHZ;yE? zs5cAym#rRSc=?QlX*l`sI8uW!UH_YmlAhO*bjK z;hb}&Hgl$kYb?A7ez18>n!!177)F|PTqT!pq+h z<|m$CB4Z-~a!l78qefrUd4UKGDcJngX>(y>V6H|eabaVLbhx?9R9@>%cQN-Fo{`1T zGo}h`CWCpF&BA=!KzDRt<6q~81v@g2#eh-t7sS4zGaG8dy5Udkn~D_ACeCj9_i9_} zhZipFoxERWzd6s_q_uGwaaI}D-LVtHi5Phv^cv ze}9N;PIxnN15C4}{GwXB`Ao8SQsJzNck~72vbK(%NW|7|S`t{vBdKWHCb_KJoO9uj zKVJO>At534&hS0*bVz3K@<*Fd$j`GOGC(hES4Y-(qFY`Mc-nN@UrdK{&=;r_gf%st zRq`Jo#T+ZWDR48`MQ+?(Lx2X-GWiYjgdT}}o7O$%H(iG&`5_C#Hd4h6i*3AYl@?7I zRA+i(7rX7#j`hyWh?}l0r^+fiOEqh$N0UOQOHHJL8L?t=K3KlDVOn6;%%+T|FJcyF z;XoSh5{}*V3Ja={2^3^tV&LwyKSB1By0tLhTJLANTGFy+vQaENnipU-ZZusr~&7;{yn8*&yqc8U&9b3RvOMrinh9<#-VW@3A zVP;@|;WG-4>@_aVmS@Zg4eo{aF;Ra(J4W)h-@?rCU71n2!(_2)QP|mWn(rc2T?-_?H&P9bqyQCiXEQV-0<(MAtu)tx&bH-ddn zrh{E?lRUuN><0Qq`kq(NVYcLH-Fzl~7O{Zi!?~x3t?6^zLdx^tZYPp|)jaLLGl}{y zZ(lDjSbR4KFd9Sza@rJw}awR=dy7a$SC}Evhh5BS0{!gt?Zz%$ z+b%9Uve67|%GvxED>uhQJ_1G+JJ}uUc~R_EapHF7j6iz!~?SZj>;xU_QG#BI2-Q|{)nJRzqe|8Zvb*22P_|gy^R}UC*dmL-vO;f`nRm6AF?vbM*c5Tx(G*2G(c^P=v3Tq?cZkA$hB{rWI|DZr4-rL z8tpjzp|rbhG(EFGg-@o6i8VZ(!fG(IbCycISq{3XL_3SRv5y7=0Ch>_|Hsu=$2HZr z|C?BVN(u-F2uOFA(hUOAA>AOIV<6qqFiL7PNH>#iM)#OVj_!v2jwK>F^^QUXd09Xb`3$ZvO$famY3sPf?YCL1_vk(b9@OrLx2qfJYTO=tcFU?~? zT2DTZ+upEDk{0>te;JqCONximtynrXsJwCC?rg&prl(`V+Sud>`+PnttX#~svqNwG zLu-hWcxYJ9Ym-Fr@rCZngdS^fX}CS$uh(XQS(2}mUtQw8bxNvejx2lm^M#+-5aC|B z;QG~J9gDE;QO1znQF(6p8icgi;PUsyujp-*m#}D%2j<5y_~bH`&h2@J75l5SmRCES z_$6`9QlRA`*mX`r_MGQ$yej{yPd=flotVcffDg=sD-oBXV!B!q~)NM&S$B`eAG{QUNm`676; zX~@7$;FnObP1mGE(^J=2zl#Hr@|(l8CcpAl#Yu-RH_$h3ya(?bvA1pU-R(W!f{*vd zSFfHYV_~56cK8n-+n1Mu&swEq&(o(qsgPun`v{IhlBZHQppb7#Fe<$P%S6 zwol(+2Uq2P63VJrAiv#zKRRl3iF*Tcyd<;o-8e$jJH(Az93yjomXDz?*PpS#j>GtV zHN8dTCQeP+t@HN}FaS=dzu^4py4U++(GT?|^CKzrR3k6bR`5Cj6cWWC5ofmcGOCO5 zUo3!a$JNW&czj&xCSf+k&$zGkI1}x2JW4zGzEimR0BEI!jz@AH-1&U0d8N8KT`U_# zP#t%BD3UOp8n@$r(ge)Av3rcYPS-Md8Podgz)c%7Zj)RloW_At;xTQwq|2?$B~_|o z!@9>C@zQVa-OZ$7V}uiF`j39Di;g<@?V($y$+*^Zz)0{6;htle%#7umMUWLD9jUbL zSf7A}uTb=n5U7FvcQc|-}Gg7Nmej})^w*a-I7V{lgs?cOk zUH2M&c*LwNJTJ7=E7BoW<1Bz4|rh_eTOR>9|QjKG#X15Q_7z{pVkhV>4G?CN>i0q`WX zEiKKGE1s$JE@g(=ebW&nss#m=kKOG+% z9~~b(f4^DH)YL>mVgkxDS;1+hcf~P%%4_JrJQF-5kY2xm+ki< z-xcqSF(}Sr%O>X;ku6jqbCUsfaGCl*GB+`bpz&LliQ8)!0T+)kyQ+m%@m?V)|ASZV z^$Q|)0{^Vq?-p<3EHaokp}-5<)_%-EWCtL!ecwEYqjfBZxd(e9m@-ocT=Uh!3Kw6jQkaX&}`ji$^x;oZY*0eHeFq zV>*@`6D;^qqQiIqpz`^>s8M#=<$!UEJyK2m;s$1LiU6iBCQqrU^Ukf^F&p>#AJvl2 zIezCvx_w-aMada=AkuHQw5=i&KYCm|K29C7f}LetjgO5vI(7#K1~cGQg1nCYUf+9| zuE!)kq3##`y?J!44=_XW7VnN7DAyz+A-P&DDu+Ot?-NQ%NFe^qCD}2C?*bQx0RU&1 zkAvaMhwd%*Eb6`9t05s@kkv=!upm2#@kcWw0zErtUbQ*bxGub`h!@YO2aBFhH%on% zFWP_ePwBXGpDIDNVL>?UI$oOEBtk|`A)S-Y{&YJ7<&rSsxxpgMXtSpJ+JCfD zW%vFHjdF-4nwc%60N$BT`Rhq{{z`6l9$l_1bMSPoRe^PxkhV*wS>0dds&8AZ#nL^$ z_saSowbY|VKipXu8y`1=XW-+LmMZtU@Y{a+G~{>f|4R4~pyyQl&vLBVd+G^@9DZ6F zS7>1;u8jx&y+%wS?BHd`27upv_fGWTVVI-IHE>n3|3?MF<~L*p$QFg8rT)C*b2U*@ zmYKfhJHPP{rnP?({Qexi!bLou3*12eKwx%6@z=&Fhm^%+#!S zN6X16|E^?Xn^DF3*j0dN^@Y{xknM7%F?H-uPyeCX+Oo1A%K;*|9C%^Y9Ao~%idjYe zwLB5G_aEO0B2FE0L`Qe=dsJ)ZA+CWS0jz>hihhcf%I#aN1<+gbx$i29q%-@+F=dss(HMKok^|iKdc=!-T z7dHS31@=lmrMcaF(!kj$XEO3>r?HjZ;LPu^b6t~HflnT=45zHhaqj3XO;iS)U(qVQ zDKkVQw*_WEK;uT73EEszlMsxS#ck(9%@XH8BUy3xp!S=djnzUrIGNze2LBs*Zm)EG zuv#heC+i7yhEgoT$K8Pej3J?G4!ldEOV=9(ObSB}?tC}D5udu9^gh=PE+fH3 z1qGNTX@aJe=pp=dW|6*`BBak1$X3DDQPxq#=y&JBYd}4JwrHk(Y%an5oy!%8WzsFb zjLtMOVq$&|lnq{*eWD{`t}`*Gdw5U#-QKqM?$0djVi(bnLzJazgUzW{MFnRf|4bQW z4zB1>>qULZAR0QfN0Ho4hEyEgJIw!^F^MB)Tv??s=fHk0132D!+@DJxjP@DlG*<8>(4t=O*F;ATBj7K!cU_ zj43!MNcbj+HYFq7ZNcH{KG=H%mWQy*k68~}9q`UtTWA1ICM4uzDWkQ=1MHi=gX1Z_ z#;fIp*JH2Nef#Vmwue9*Z^0*5^Ll6>R?X^K`;`1Tm>GaOJ;%=Ep>v!ORiFsw7~rU? znOt(GL4TiGBfB^)&_0sWySd2lD1pmK19np@u|~PibyEc>J{5l3-@(o=8gF*hxS2hn_3wWj;0Ht}d>PQf53j|A$ zZU*^FZJv@=r^w$j(dxTWD81XZu_&2oM!q!97LGrOhV?v*@4wx-lBc`zIZ|% zuw`WBAwom2?ra_c^s!u>+3%1a2kT7c{aJLO@`eiy>&g7l(JSM?9A|t?ee!8>hddG|Fp;=rwzf}eR?4-7C=R#mZAv1>9W4y-E!U^hUUFtB%_(sXMa$W|C#=LbyngNu8#I#7EJ9I%Pp=}Qclm}EO6ky z)dNi!*_p&d6swLWz*93&@v)+*B4`M-wAGV4n&$>;ZRF$>RTmMKE5PJxr9XNml4QFe`nQY+X*6}0 zOhLp}+I5%*8~3^paU2~Re9YSDuEu_fr(ATU`tShA#|$5m`)t-z^3Wekb&(Vl{TD~; zqldq{!hJ3+73_D*)QgLYid0o%Ej>_UdAC_>z`)L;pl{U?2tjEvz8Vf^Y4%muF0D1h z<}x2l7Iw(K(plM_T{M@i+uVZ-Q)%?3VCTGySvp&EbJMd0z_o?czkTr`^heo%(=xWddcig%rQjmk0$Nkfl^ z4|qbfeFscMyq9xPxRiTdhJ<_y8*F^SZ%uTiA2SK00fLyNl^s*T#eRTXa_6BLAdLR2 z5zx&Zec{XTP~&H&$9$yxhJ~_AH5r4;+|F2U@3-6st(u)iRlUBWkM;`6K6UmuZty(u zdrwU9Lx(ZQHGz^ju}mRF#OsylkP~y`=do(b7R!r+RC_L-<0^sA<{&B%R9-9PMbFxo zuiPBfO=ldci9M3fRvqD>R7TJAa)qr5M|Mu}jD`TA)R)(128Y+PoF8%@rq0^fXdHD? z0_7spqe%mW)oM;38Sy>%DPLhgifXhBhTuK5Tp{QjeZ=rGz5tJqe=P5#fLjG=Ne(qn|8Z57dtC}k~uZQ#KB}<@pCUlBO zTugcc+!b{`M*8sSitM{Lzk(+*#`R5%ja7Oa5ztJe@z^V}h$(FTY7?WQ>#Kh8(m^x? zkSC|6LUN3=|D<<_4H0o5k^~3|@#DrjR~@-HIlFs$MjZ>*w|}S?=b2M=8nK0UY1eM2 zxgoE7EgOC>thS0*mDaRWGyvgQ6yk-0gRff|fgVi~nx?zQ(sbEKaV>#VC{XUj^B$)f z4htK6_ADn5qlH3|p2FwmSTY?Tc#OTcI)X9rubQC3pn}(7Z2#giOQ& zoLd>5!{ATbxuO2-e5RA9dcm#d>IC==D^JckNfd*Z^Mf-TXGzV4+*uTg@Eq7oHuB8O z#7}k~1qKA32u#>8zdMW^ZQN#w4r^jALrG3AR4z}V*;Yf7^uM)Q++})wu@-z@3@Pnby@aJ-0(TV1$*m2>DM_bE=4@fEHgC&%`(1~RPWVhHq>%Npq=c! zvl=NC)%Y6wANI{1)`-QMihv-95rx}a{k|68?h_iGU6S@E?CNFBYV;17t+@u@lN*?t zQuv(K2#bZWN~TfHb&HO{;6DLgniA=~BB-68xOhW48eud)Iw6VcKGRwL?iQ+JQe~DS`(A>)^4(8;}A;1w-IzA`#;H{@Qq38Q6Rtr zL*UGN@4M&46{PRW$HSHs$f6UmdhgOgDu*Az(@&&L+S+!cB2kHA7l0x5PpoybZV746 z@x!U`O60|D@+`kRsXMjc;@4zcl}Lgdlz%La>T}v2+Q2~5;CDCHt))f$*_&_fn7^=e zf2C?czaczhxtw(m2rH3YNXK?zDpkyn^NC?C;wwRIsrZx$AT;8YS!KONM+phy~l(Xk^3hkA>Y7OJVdacsTuDHhvP054g)_Ccl`QREU!dD)s3Y zNyiDF1oh@s0f`|`1zfjHo&vF102*>ka#^CqaX&u=v#2I7fi8p^*e8|hU2WlO=qpkI zSkMJ-i)Dr8)2Gjr$gEE55AKt(SRq?M$H=c#59JHAKB9&lP^ic0`sCSaVG@geUul#w z-X_Reez0df$5GhqA~d)>k9(f{()#Y5&o+(jrji!PS7#E|;fBkX+U&Y`dRfrfI88)+ z0^M)N9mRFIhk?stEnxhBr{^Zl#G^2+a=nbXfkYebt*P)T1ER8Fh+@*flJld2v@!?0 zoX%{WZd0(PN)Z;f0<_OCe}~Vw$UJiJhG(<3+W*V=f>$BJruR zrF6YxtX{ME!L>5av+M9 z#b9R&W4Hv15TT|FZ1|!v48t*6bUVocTUXPHUG?4hT2EY^$&tsPccyxd%xePrgSWe_ zEGrO*Cm>tN+CNtNPgVfy_0*1Ky_uG_cdo#ss^y>yQ_umOEW5OdN-XNPK@MQ*a*0|8 z!igv>ylNy>wQ*LObc~Iiep2PXP>P0=3b?XzU7haaXVEaFwOAMe1=)7mrNYlIbJoVr z#v&{{Ix@^z$y7!8%jTXn{wn@X(dp02n=9;Zeia@;_r_4oIS)6R6g>e8v`ZG)mbZhM z8NVv;H}D90*O>*MklYx${@{-9Xkdof?J^Z@1TEo93bUtYXiNS$EH?T9PNWaMH^yq( z!v5-dBQA6P_(^~GMK0`t&1wGx9{1J+;a0qxm0L|CyzfZxV?3fN9bnUr1-NUU7gWoe zR%kW`5homC>{t~Ua%YPT6(~FGk-(GRqZf#v%2nf5pf%qs7JTe*d}tnr`G9dpxUa*xiv-N zWknMm`FHwpr(?H;Tn^a!#Pe*Ew^x`Gsi*D$UNJ(Yd7*1y{c9G!goWl%LHLuA(^FTS z=>>8U9-GGN!vPBlhT^&-sUQh=*eo0BGY<)mZR72wb;_YqF_)F z)8mmLduoe0$u{?y)B2Yde~GTnZuY>-#zwp6V-quf>~cSI{{EtgLQ#Cs$jha_whxn7 z`2HUvYd-6$lJGkl>#cb@YcMBBH)X1L7kp7_D_>ygz}sL`>t$F$)|)DAZROlJ$(e0b zA+BqmNL1~$SitHircm*%V|PIMn*_1$84#{lnZ?C^_#C6fkSY!1GHNuvX>n^pJew^5)$ zGJQ&ru0OqyZEYoF>Qh3#9nO8ue)diHm=zd=w#;PKTfcee`Hk1>7R#0^?W5R(e-w2; zEk?%-tx&A&8b`3JWj6K#ARnzN(?^>sCIl{gwY|!a7!({F926jUGJ#u%a1CaO*bdHH zXEc0DlY_cGf*(!J+i(-RK7H`Dy1F_nEKF5cQ7!&#Q$zMcHn5Mv%sQM)w%0{NB)TF`|~~SF8c#7AV@U0@Ik2+P<_CNeE{SEjO^3 zvk}|eIwfr(F!Y~lX zOtO0Brl22m~UpASc^?YSnW<2WQxrX zT9G%f2Xyc9^BKO_XImTGBD`}g-~z@D^`HM~Jzg#Cdik6MaOMqLSlf`Slq+KTw@K#= z0Whh@@{q==V}tbD#)~y%%SHEmF05PW6&w#I4yU~77V;BgKqKvFuDInf7Zp|VSM5@4 zT{+|Fb@Yjmw5GI}*nJ|b2)*g6u&!*oV)5+pkw4LH7{i8cLSNud)tUF)B5zCPx zm%j+YXB}d%=;OckWI~4CexI+MxM^;T#f<2-YVy7b5=KbaR&=`4l(mjIBpWzgxov}#WY=vF+r!X67u z6pO{Fg6rW3wINve7?}cT3Faewh_dnt--dUfP9MjPykP%IZJsM7E^z|QW9KyK41#1W zEy=O8j<{7-?{D}aym~{-Rjl3FMuEX*fpW5dfYO+X>iW&;7D>h5NycY!KJ7f{Ga@5k zRxqid@3nm(W$DrO^#U-6Y$!9p?dvRd}E6%0jV-^OWGR$7SV#+$qa z8n>ReDQ>-gwDRCp#RON)pQ3;=AWH~n5Mf9-V6)BZ5qVF_O_JJiaI$tB({)PEE~q!L zLtiz!keb-N)S}-udZG|P_{G8Edq8}=rIXo(-B`JP4&}rIS6#pH!ZKbS3q<1_0g0>T zbSXd)su6=_bJ}Nhcj<&%kkVf9`*)Io zXU+T^@cX3B!gNT^{y zoSffi4`LKKU}Q?a;PiDaeb^X60jsnMiP%s+>M7;oNt>Rx>_(n@_KNL&f&8e_9J)K+ zTk*Kz=XhjN(OEcKC0-bP`tTgrP9_*sl7GZ9X+s>#CV3|)Q<=F+htUt$9Kw|j6n5qG z{STI-MDC&#dby)9mu7n_;guWjBy<^x+FHHQVvXNoq>!8G#Z-bqHK;EXe7K)%W?%B~ zB@v7f46`7s)5)}Ntx4EvyRX3dS>Y+>cbj5 z(+%)0V_gO238kf_Cdc!wpmi)BeYjDDimHleyex7U(2j+Lh$|@o3-D`?vC!>=jcJJ2 zuLB7EkQ{uEHXpt_#a-Odc7_>a;re=S+u@@l4#&=NE!3=dTte~>^}qGhWz;lW1%Q9( zbnF(8Gf<+##Y)uEi^G5i3A5fm^d_y?U6YxPe}u$@5O#O37R}}Uiv{$%FGdd9+aA>z zq(IuuDxzEq7@Qlit7cceygR=R&7z2FZvl_v74h5LjiLSdF2P}V7J!FrnV7Ts;u@h- zcAUX^`83061c`~F3-@E@Ba3j$rqn*E$xtnb`47X+PW9|T-|a1PUQSGqlu;U!rNVJN zm{SfGj|Ug!VQ*xvG0G}7v1)NyLY1c{*dAWe^On?}Ryr2Cv4a&gSDt8Enz+)Wc4(a@Nkw~~fW~8T2wFank;L&@YhSi|1d5a# z1VXMvE{(d7XkdCiJ`AA^j}pG@fDCujUp;B%T9 zw98tHbs~VLaZ%CG&@ghU(Z{hTxHjDkO)tLnUur%YPG@tH9Qm}@a^|O4Of4p#KaP)w zx3;F3YcOwc4u=_dqF`NJUBEJGIw}+R=e~l$%w4*4m;w$)XS$5~{mpfBABl`dwVlc6tj?X8nCrYvcrR@MRE zFKuCV37p+JmlGYWsV5h~r!DA0@O?ceIWH{cIibcglfoU|+vA$<%Vh}_wDWhXStx%2I z`rE7!_igRL;Q#_ToJ~n};oUlEUzYa-x7*EHS5@^Y+8j+ZgQx;oq}rb_=;oR`~8`CncLz&tgW5bQOIbq00qg~Z2F-1w>*+mgAAt zG)P)MH}HLLo41Pb>01iNAU~q@xo|Pk?T1$j)ah)VoR<{a0E>wb-P~GMoHxD%DsM>h zdziFmfc9j6wO4rfI~I;UTO{0TUWeIs^i76iFMOD{0iS@WVRk<(TyAy9s`EM=+Ut~Q zQ3te*mlblL@&P~rzu86Rn$C-JFOnV%I-IS<(n-4uFV1PKZTLO|gSwuzx+tM@stWn` z4I_)90QCRg4t|NGaA2{+!rnEwZgFX2olqxf?`7JDR;!)48l5ef^BJ4dnrVG8&oe|E z-xF@zZqBu}7^;UKQbz+~iN+GUjD`SHIRx2)RZUG@9U&m%1ju_r*CRQ%q0lPp;B&=$ z&d8uL`>0#<6@Z<_2`4*GIO_D`^9Na)wgz0bIyUOI;=Wvza`LDhM?bUI(YXShU1!ak zWRqH*01F6+cLzq6?>?!P-gtiM<0+Q)x_mg18drebvyU}z>B>tsUo{Q>{ITDp4yNb4 z-Ly%}4ypK;HlY+WJSsB@vy@a`fpyedajT)tc(eA1y_?W9~ODt_YFNpw#TUQcwh z~NHRh7maP0lMrJ91X&U=VX<1(^wWunq&y4f$|KyeJCKd)eYd8V(i^mUu z$ad3J{0EO1`i#Pv#tRyXv^bpo%Bq1&?E+r8Z7}#gRem8TEveT+&^W-uL+Xc|; z%2^k8EWP>jA^$x_9%ikvzI^&X6)K-0U_RU#$_J>Pa6$v%>rT9{lLjPIww-L0y`-CxN2G=9fHQJl@jKn39LoeEL@C^M;|= zcUY%rl=ROU0o`;@hQCaSKPU9%cqTeT!DG8QAz%lKT!R=I8X8q34`5ZowaD)I0m`<~ zURC-88d}<(uI>^baf2A3WrjY%Wl13t;Nc1DG2COY(}Cq@Wq*+RY{8gDe1v?oHqstF zZ$$LxS3jy%d>-*8uxJRO)6u_*;2;PVlK8Jv(E4*N^L1AlRB#3^ zIbBv@s0LUpXy)M&PG*ZWKa+Q5?R6$O>3?91KVOlx6EIIH9gK(&0E4|`WuGc=Qsca50_!7)n^v-OkkuW#*_T5Z_5rdCN?C)%P}1%JEyAGn%>!e zaqT~sju}?rgX1k7DxO_j-bhJ9BMB^p2lu$ICcIKnm3`|+miGW8)NzMPgBDH~vp%No8k#l4Jt`~8x)5B=EgX99Ype-HnALR`Tkxy=iJ4YN$13dDjP#OcMC z$QUWopj)Q=4)ghQ5w9g6I_;Vc)ifyHm5p+czo;@`xILPES&Z-)8mkVrPZPIh$H7lZ zPrp9twz_9t4MvKn{&XYvqK~{-gV~l^jObOrIY<$Jj#}92I`)2A&jq!Xef{}eHargD z>cFkK_@i#AukNrWBZWOjRAQQ0smV->pGd9T+r!z(hl&YLBN|m<9z2_PUjck!Ak4JQ z_b(%zb5 z3kQAawQ=E3Ux_oIxA@sNf&5}e}L_}c5NOuDNTtOKzY~oMsAA?zHj}a!j?bQdR*%j}id%^+C zCOllowItwpw7K~mbbmOy=X%Qk-M9fU-F?SEtw;cUQNYhs?S0Umd$dO5UZ=a1K5+z& zh9AL}pJfufF5b-zY>pUdD*r+Y)xqWjSJn#dOCh}t*GfWTZrxBkjlsLE-q+O!FQ0r= zX-GD&oJpNm$h_7*?MT!{o3XR)RZ8>?m~}}6%H&cq5A9p{s;TGSINM&dseG#I(dFmZ zJ*3|K=z%_HGb~JYyJ;Ybt7^x?@hP6GHj_eF8{o%$V7JvhXCgFJkj7ean5|*DM4ocC z-rQ7V5E}q1pxGm|(1ATqZKSYHoznt&xu)qOBS7RUz)aeM7gjupRSJyKUb1AeQGBJN zl^mcH3n;bX0ED{iqnR#K@f-1)4MV#HHWNapbFG(UnKMJ3$KO&}di$m0r2;}2)uj~T zZhLIG3~tr&s}EcTfPR5k42cW&w2W5%>9LKbQRv6aDJO0*c8R+sCnu$UCz9nwIpjcI z@A>o=JBXtW{3k;sEr<*mbevgzo zMywP+k2%V0^pLIVhBv!?10J$R-5pLS+L5fWs6B3to2AW#KCP_dSJpNhy9}-dyPw@K z+sm?~Mu7q$$gGw1?J2KK;;4=Fcrti?{=Dn*De>(Eq)Re{>vKN7ik9y z%(__se_Gj<{tW)Hl&-V-?}jSeIHSC!r&*J`8ynRn^W*zdbzKBH`|r-adV~^YB=8FJ z1#}pWcKkZA598UkeS81(xKuS>r4>AsL_+UIX1Oy}qLf*1>v^Q#r@02qaQzlu(&MUe-5roEw|XwE?9nsj%vlT-(`XihhAC+3y|t^GTEsss?|M0 zsdG@|W$-;jLfP1gY0QHj1woGK78@J|kH&TQPh;Uf{%Ao()~gtF!xtX{KlDFTvBo>n?&IJ)Q}E<0rhwz8eOrD0MzyBJDsX(t=U z2a!hHF1WIP){+T3%h3F}38`_^b$qNxARl!LgV~`7s6qqNc*s(Cs2LVCaEa)%2TIa< zpZm~*4yr`Q3^=;IItH+=qI&qs1v!IPd6L$Cqa5y&`<=$Y(iCtD%XAj{Qoc^IFgES> z4M`O@J`cIv$MOIQ-jS`Z^v^sN3w^Vh1}B^iyXTk%iNjI(!9+}Ny8%k$(Y=b1s~Cys z2bZ`=5AU|YRG)n=ePMy!Jy_;02G@tL|6&2DeX;eA4AsX>XSdHuGUg^!d-*ps^`!7X z4b!_Nv^OV%q^c~!3@P;@xM}v@pmw&jSJZlfRAo9>&!^)bVsWi2ghA2J9tJyJo{qZv zs=rN~wRpMAR;geY>rppfZWlVu_aJLv%B3vmos zO>?AI5rJV&bAd;3*WlMeuPEb1FK;Ua^pN&t|Lpz#E=ekqpiEMF!>lY_=A`Ae&Fo1l zk&BhMND`hg_8~?fQ|}N6A^`kG=b(9ctNzc0d*SdirS~a)TnVz&sGQDs_JZHJ9)vPL z)E1p-g=GivP6=x9G>TKY%-mQLT8Yi*%BR^+B5k2_W@inK#7rZv3g`U|oYisS=o6;h zu-`JugeLf0Ck4u9%ZR0iVeG8kk2I}GCn)wh$`#E38`C7`>L~Kqtj8oWJ%ViNAdE%F zK+?EVIxNFaFRAPVS;7}9@;Z_Y7NAp}UJS#1k^S;&-|pt{J-tDB=GZD3G9cWcv1_<2 z3p`ai1AAx?HegBM-c+qFmT9IC7d3mH%G}%7K3-T2#$&fnsw{n!n$kW*Xg2oKpTJpi zPY#!ag62Lh5oPuTCE{YxVT{Y2{i<-D#?AU7x+&kFjxwFEnPd)g9-Djgl+!JrCqF72 z2t0IBJXF=cUACe5meW*SCQ-geJU$tWF@tV(BXHWbJefiSGF|k{CFcav@EBZ!UJ@}! z+AbbQ!&6>n5=>`SZ3gLoMHCfsNz7alH8c9nAuX1?W)jp zy6Hl0dXi4R-7U5m(LWsV%+L3lyl}$JZ1Un~0`~rLPH*%yXxtEooQ-v%>j{mwg+qBY ziy1oW!wTo?2o8&-tgWL~q{=v~je=Saaj4BN-^szbg-BBR9td^qs1;+_bUpzHqxXQs&*F0|oxaJ6+8jbB;d+r7(&$~rmUy3(*e!+s-g3}eaE zk?-i`^Z3YTNfC&@`CWvPT}|AnL!b^xx9gH(k>30 z_Zv~H&x6y&oOB^kNVmy=Bp9!3(4sj^Jxv5o`UbG5xmr&e3%RUoiG*#JZQUpjmWyzj z-rrJ-wjsQ+6mnuU=^TK$yS_y19K^)- zr5O6OMi=W(s(phzef; z`~OF$1sMNbxUc+1RGkW5MM?s>?u{FoU2eJ0tXG)V)d-LaqE;UyXP@EznPaOS4) z*prPXn`Hv-ML->^vB$@?9TSgR)XU#;Dq12ri3ufZVsmyu#)o<28d!MO-zXmeed4jl z=+ExyySue=RmrMHsfVe(cLs-!6ot>`TP0fxHFB)kjoLejo*dRoKdHKJqgSO7)c5eV z@161TEiU&MVRB&qBZ_rv6f1Xa%C)t6X|ea*xDzKsUuwz7gddU0q)A17XTOS&Si3g~X2?0MF2rq*1?`z8A1Q#>kNN*52b$8lGLZty(C(@i*+iS*LP z=t+(dWNGe;5538xC|2W^4(raacX-DRJBL&$<9nL$#`RjfU9W$m*rHon%kyu)X5LN; z2ox?_GyxT_71Qz8#(IAdQZZTZWXL|eTyJ+*gOr?(`X+D61F3GV6iJkseXNxJh?(j` zTXRS$DYP^g;sx$e0`o1UT=MgFOJNS5JoPUF?_rxID%31q;W)dxw3$mT;2%aSG0#J} zIqdsHbU7$sxwgJl1^)vY(g*-rnXHZ%iA0WUp<4g)fyG3Rc&hwb&x(92o0%mw69HkEA0>^u{I?WrOrgqWah&#`dM7d~vX$#;a>adk~D zHq+8i%zsD>Eq@o|JFt@eA+PJ~)k%69Vrj(zp<4a)VjG5BBBNI=t`putH57bvuaYnI z`F;@8w;;r;vDF++m-Jdm-c;|&We1PqCMrvGwLL?9he>d@$yWwU2O%D#wjgOF2iW^u z3ZCqY+&lJj)nF`8X}L~}u(jx0h1_KSxK>JZvzM9A0pw?VI?Y0>m}pKNwo$f>;EixP zZIofjs8-5-edb;8kDGzA%iwZ&j*`O9^%754wjm?AE&emY8c<8t9FLnlOrigH7YjKU z)1s#CB|6=~9qFbNCjOe8@?;s&CLb&#c)_E}3Tb(mO1r({7zK_301u;6@v{WV(9z0L zd%f>t$>Bv40?)Kz2sKmAGmp3bEzx&;$M1E(vGHrPLED-#US3U-Ifg;mHKQCuWSq6f zd8xN)dKPkX8Qm%T>18!FHDzTP#~+PT>ztx_XJot^I#ZpkFkV=E;@p7DAw;Nk=>}yT z&A-j|g|RBZs)M-2^uqlx-`fPZoi9{ERD+3tLU)vD%GrNN4RLK6w{jZk;wiNpNmI$G z`bM!#5;d9MYMnXqIFatHD;7egE^hYM_i%M2e0$dD1gcps$Qz7`@j%NpCF|ip_c7j< zLi}jV&2*x(LiXN7D?jyKjT2NgpvT=r)bVYapl@U_#`^QaW09+x-+tCkmP=&=v?Sqz?n{S2b zW5-vckp{J~ZDy?V$uEPiDh4!L!xgU9l5b zUL>vr#|=5I%7S*^1fz-a8|O``K{WuaY|3AOfiSNmIW9Tljk*5g->v;0E=CQ88&}$p zo=0y!h~R)gaw$CLDOSJsq887mrKE(f3%BQ1EuTR<-%7}&$i3fSfri6nr-*Ewnf`}D zznTRgfvlpUO&}->cw`W1s52)4v7c+uJ$WyMg=7UaWH@U_n=G*a0^^+%~8YUqjX*7PgPBcy51a}-k z)dRHRz*8l^s)n!mDzRtB=hXw!dv!k+1PIMUC%!d*kPON4aXYVePS(FJ`Nn*F24C%H zJ<$CZ3kX-)tGCgu&$qwHdlu&(1nIcm{a=yc<--&a2(TEe^%$uA+TK1lHwR>u)z)&C zs#~+ZlJ|)qtNy$zYH!5}SzBA%+}tdOU6fT+gdV3Cjc0Q-UKNjyICq7rVs=Y~rKqm& z4hf9BayMw|=vs&w;OkP3tX^HDJWEUBB=$f(uS)hcF>oL`dVK%m0@u{W!y{a!*<@6g zDeG(#HRNL!W#DnO%f4(>j7zZ=|G0 zi4s7kwGLhr;bf(-!&`Htv*R_g^1ZNfzwi!ufr{-^Kx) zij@|!$GcPd0QTzybRfx*+E!OrBl=(EB8Q#hLb-j0VXsSa3!zY`MPGaHgOZb-LdoC< zaTg~Z&mXJQIxV_iqJ=IIJP^u=v3Ibj;>SQ_y{r^TpSv^59?2CbjchVRJk_V5y9q$K zq-F#u3%k)QfTxr1;jIofsZTo`~FY{YqT|pa*uU`8I(5xcVoMlTc zsbx}gv5@`q*h9B2o&jz*g$Ldb>yIx6D@#OmRRG>8eWRv1cZdBwTNQ|iq@U-Ivn``{ zOHL5e*}^7TTt88uF2?YKN)#{o$X&4nu0Z(#Ih>OxFF0Spo^Nr~{%q{8p-3abC(L%5 zL)Iu7-mB7MvQY+E)}u>wlE>|Ul)x4{+4DQ?H^;$yEgoHRTkUot6AC9!c_j!yYp>Rt znz#$eBE^tFpOv|3#OM65zIiRW^9pry4(HeKy2I`+IZj^IddbvO?csjbjg^yWobmpI zgKl_V8!V)LOVq|I7Xpbw@;&{BHty<{w8{p}nFptOS@lOo0$3%fIb!0~5*1D$gApM{k9r-N^Tt;%p?OD@ZfitVG&5xk@|{oSD^ zq{6$KZ6DoO3dR&36N%ryY&Ksy6-yx0D2O1u+oYvAj7$9Xaq+7f>;8V?ARzo@S|R0h zd}5LOb7nPmn(a+6n_rXd>N5$J(M=pwNRF z-3IFO#=4n{lC2A6iJ-nheL}r5emW_(@OzK!y-v^kyd6xY=gi_d(&I?W9jy9u%o(0$ zzYBgnS>bB#=NU<;W?4;cA!sd!rPwkC2%cxZjTaWRa#*4y(D(I7f~7<4_?m^Ss_XjeWe&p zZ+NPfc)AW}m27frZSbXKc#I{m>3vF1G;NnSh}}(K?(A{%j&u z-t+LY2N|zrzb(K&WHj3{>m_?a36Zw~mu~%V{`dw5d*Z?wB~^dKoCY38UJ8AmEqY<< z{j=ho*lX^XCFo>NuiItgTdabH%OQ_P*e1lN%lXY3 z$`qxV0D90MN+b=d;Q4FR>G|&Rkn!8DMF2CtRUeJ~(EL%Qf@TG;)=I?}$=(2NS{Bn* zskSlmwv%D>$#bLBcNlvt#;I4xkR9ZGQ6ufYkx}OZEh*yBT%IYP@?#Y_08j(&_&mRJ zA+f}xPP$FXdJkus%LGnthtc~Pu2J%{`g$k9*59@;Nb`L!&tA<|lfVx?(hN})zw)bu z?FH>}g)Td-7e7}b4j(sji#FUtwImK@73wS^AehcSQK`NQZm0uucCo9qKwQ|Ti)b)J zhnz!{8+H7k5kzhXh~58hYrST8G)eUwAHH5xG&H1KHX%Z8>fzC`oKbSJx@JFfxt&!r zj9?Ur@UgoeP-H`Cdp1_n)&0HhWH2Se=TiCm0Wxm~so(3v_aHv+ z;;ggT4!#0Eef>>sa#X(G&s%ynuKad*b05|bn*7<rNYR-PIPk+GD zo@+Ot7T;&|vUxc8WSJ+!?MAeB58K}Tm{}Xq8Em>7pIXAdBb4L6RTH z8v*^qyic_D^u0(Re)U&0>56mdhz41KD}^1W*1PaEYmUi_^PU*5jM>TJbb;*~Zhaer zw#F3C*%nVb_4hYs;xOGQux*3vdDV|EF-{~iJPup0GL+XRUJk9Nh$1s)EKa-b2CqC< zt~ohWPx5W4n`#MaR--)INTT|EB66A4w!!2uz-}t3ng2WMXwV8Xi;ntl3S4ta{@9mF;ovT2^2COLSmlSTkw#xZD4rbOYbvO zBqNGRp|Ao?k8Ro7prKuxd$D02eam0vr5mwN$*iG!4E8MF%NWc9l?Lu*<*Ru#RhKqq zDH>C~4-h??L>eLH9|6hZN9tH#9=6?VGm3fB(`&gv^8@d-%lqb9?F}(mbZdw72XloG zh49#+o3J9VS9aq<7mDJMkt(c1uMFm+Gp-YRy|DDo={?(W z3vC;jPwzTE-<4N0iI$btJ=v5Gj|u9%wRiV%;ij;*OSv%%mlVI-D`)3C3)JSxOv|1T zmASU7l${x4#A;X}2uLvucE{VU%sl2aoNw%p{>pfGUF&5DE8|vPS8K)9m3DxIMT8FY zxkM3G9E<}@Ex;BOBaxYX$;-zR+xA}B$s!OS893Q~&jl$eEp_M{vz6}XB9AnD%wCp~ zbivWbclMooi{fafhMCJ??X?yK{$~2?&9=+UP54LXHICFXNyUHA6^_Jz>WldGf~ZHn zra~pBd`!}91{8M_<|5IBFG8a5F>cYvk^ECWmdEWX34gQDj**IERR#I? z?Dt+e#bqjOOixYo+0DpZz4|@8^{*PAt5;}<|I#PEdVzSDBbOelu)pYG1BygbU!&00 zmgheuX>YFq9Lf)QQ@(!f#lth@x~)$=M}qCD){qZ_RWt>IV%WbAbpqvEkW}`Ej#Z@A zUJYfR6l^&rUih&Ju_wUIZjWuvBKMF{j{u&ZBKPmOmYT^Zv(wG|uI|#Xf&TgJqYECh zCiQ8A759S+H4GJYEr_5GJ?q&CVs~nc@P?jDcY2Jpl#IDa5JRq(Vo>5v`Phe7g}6jn zSLgm~YvmBn6Hqsax(~1%7@P~^%_`^WHNbj5)*O##R8V`I1#Gt-n6t_WYfn@k*J$U) zU2Ekq@c4YwpiGm&o-jp(Z8Fa5@d^5FmbN0$J4t3|R3YHM56;aJ^t+77(3oZ+x{-CE(gL+WENm4dzZ^3FRznb+qh}_%xu(6ImC*i*NLl&wcN85P&K0dE~-fq>n zB`ZAQ#JJ<}qeZKx0e}!QHg>Vn$E;e2y{G%$3zq0n^)-xZSY@a}QKB9b*Dy$``Wk@Z zy9`jLUntOSuH#MiP&vk=;qw7yZk^1wYRpcYO4y*d3@ycqbw$7S16uZB) zGW3PxWfj@j=n=}OPB*(=PM*l~eGiWcLgJy-7ZN66VQLzh6hIB;aNVI!_lNUZUNJq* zTUePtQy$r>^@GO>5K*Tox~FLPQ0*;$Rjc8(p0{YV4QHyXA(!!UHclqfzNLL3R~tIX z?|Yk&J%QciFU=(_*`f5T6UAfinXIrn|HT5tyovB0_c_n@CkvIhFWCPDdocn^mTSFo zqkRKTL?({D_EQ@1`4DApu2)jmZfw)VhRSOM(9vU>{vtCWjj(djo5Ll2KiN-znHV?F z5Y0ef1tslswL2_%pafQg2u2Wo;I-$-Q>}aw7EbPWAW*5C*5Y>dDQ73y!qy2nm*Iz~ zsZnZJcbu9rKum3f@7Yo63n; zutKAfq@~^j-XP7lB3%pPvs<^Zyk|oW%r+{waxPwQwsLZ18Z;=#c$&|Rmp8U8E-{e= z4-Xn2&lQqswsqLQm!MHDusOR#4GGT=B@q*Ul5kAwT+RD~q{-V~84r&%21-au)UuVreomGP zPnXwOotmx>guWz!^r!%AAdq{v`dPg0*^xL`rijLBA9w4JA4&~ek5L62KQ2# zn=NvZ8Cbst5T-BDkeNp}sH0_)akW{;R}{D}Dk|UU`?8^$1H%oPX1RM* zU@nE3oY^DxR%%)Fb+egfCgXG2ma7yu`3Sw*Ez2Z^TO#Hhj{7se5QSAYU4mrCnM$ixDlbt;X(LBW zILRqV>vI}Yv9Moi#OEBE4Eld_;*_afHmcO_@5JE|!3uD!^IO_@ZOUeBRK69W5IlTNiBs9}2e;P$J>%p!kEgUCaP*Av%NgWl58K(4cI@)dX zSSF&rc^d=WK*GJG>-}?4-}ksD6W@#Nq+#V#LWMc|(dq0(5i;W>izjbp3j&KZ;_dPY zz@X(a4L_xsDnhzegHB1EdHDc((Wc%sR#ud{0HE;Q@dY0vnG#O!;xm;zC3&pE-W=bY zMuX(CxUo^1=1{C~a2BYL>3zud$15?WkbrZVdxJG?ic}frI~lrfNo-yJXa#ry%4C)2 z-;Uo<<7#{+==>^It7}jC(y=Iu0I2(BWDy7q!vBiGm#;XO9Xu}ikiroYEuNfOZZ!BA zSjC=(h3H-c-wibv?%&Gr=v{PRso#AKRb~2Q+&v^O-xsopdToelN zXN5sOfK)CiBokARG3=I1mX{q2`H!VfDM3jW`?x|+&&t;d*&})QNHJPNvoj3=&9B;1 zgIw(A_qz=&iXGepN2;n2sqbM=f+BIC76?*B$)<+W$H9_8=`zLT+N@2MmRxD+$Na$< z({Y+e6dQKbM<&&iR1bwFag-s#^}xC0afbKMEA9D)7w_v)8GaIgUh<@Tt+!hM%+jv^ za?|=!jj+jgSIGWkTtV>C2v)j}s=@O0d4WE#ASH`0d*kiTK`+!$w!({(D zg^3vvrsO>zYVNlAt#`*+iZGP!aQ0ByQBDw9^r?KkujJ&?AQfGK3uNy zi`>D~&xfrv))#8Cw#rN@Te7*W1iH&6%miT~zd#e99!?5VaL?wBn#2YK$q9!F6 z&wv?^_{Zwj-?f8L)96HYyg1+Cs_IoWX22gHKkTL!qN~wmx zawQ<!YE{`cH`QE4ReC;MLP5RB@irjno;f^Beh?#bW3Yws zJcV6;)!OCOM|mg9(004!T80J!w#)YSW=&u<9i+O}ORuBSOMJ@+)8R6-R0a3si_&Jwr>P2QqBncoD)PE$cs?wwVNpqvdpQcupngQ+Wq1lJ~* zcZ|hA72m;#0`6nQ6YI+hl(UxOK;6^CjKMi~KL{ySkdmlJZf)(LI6B01)T@N{yDN}| z<@au`f#ln73Hg}{)hIT%qKbLF+P<7^HNUxJ@qYr?D36J;OiFo@-xovXHV~sFy*8f) z2!yJ&Yjz4)Je_tbS40|8Y}Cz%I@yR`=J#9s<|PY>*-a_9X_p?QWcUix?-YPRO?8hVsr;4}JxUOI_j8r#;~sB`PA!TQGlh2`3aul;ozgN^7uT_ z&x=2sUbL8A8?14hO>f*~GpG;<^@sy}NS96)-f59_kNpdgKMrT>&CDguape+~Dzf%3 z9X7mA>D48;2jXgG%Zd$q_bjF~NvLVBF<7y(pU&AUbuBAo&q-NG;Bj9tJW5Cuy@cri z)i<8@6alD11IH)pyr=CCW*77;92a?Zmsqm{bJKk%2p)PCYrdKL!GwIl?!7&u6QOtx zF?BEztj-_IdaHeB$cvpZxE=Kv6unxuV>3Iu&09lOcE$gu7c+A&d&4@js6L1Jz&kY3-0$!_NyyEHie~hY zhHlq_M_1H_av>ljA!$HnoC{?Npr>`!p^NTLwwnYYM{8>0uJc!$-UMp7shnoCrmA@@ zW%In^NLTMz|FHT!1Nd(OXbB!6z0p0=h~xN(Npe6nGk!Qk3Lgy1YIZ#h-YRzAeo6mH zx%2ChQj~ekeyENn_uGQ+4_M?}ZS{&TV1450i@E6*oqgJrPY>;p&d{OXjRhNmkH=ZKMmUmjI zuw}A*KLDr5>tOw(*G@s9-N$@}sIIIzP7;~O&$#IxP5gHlp^YcKgkf|Rd6SyDUkOYM zQHLgHUqcnzhB6%m(r!)?yGS;bRj3px2himzXqJcPvrGy)?i&35#l*hA;_v|gJeZk5 z>S0-4=K&mbUxb*nRo?Tx$HkcF$^U>bwz|Z;P0}~0XngO^dsYY5a8n6Lzg^iaaH{2) zE3kBn7ax?=tYUlnN3)f8%jy-n?MQo=#B&KIh8qAvwp4oE-B}tQ4ZYH|xxC~e+{+ED z(^WL03_xrA@&G%ktVzdQ(ep`}R_Z_^{gRorw1=|{eNtDS-kX`sQStfuy#As@1RlbT zvhi}Md~w+iSXFp+qAiU!Tu&J?8f)y%2Z>VsdX&U`)J}IBCgzq3&#+dF=eZ`u6_0D)mo* z5I>Pc>9vHcUh!vGfl3Y+G#n=|R*aL6np3L{WRZuQvYGkJ`{Ci-&MqR6#VJ0afNX7_ zIbjm*EF%??3ywNa%<*vWVb5n7RZn@RE5)k z`nb7mKdY|NfrVYay)<3pcjo`OI6_7l$=>oI+{1=KiACec&eJT0mW5ZI)U|Osqr;#S zqLf@#p4A-5G^EjHSW%^(r~}`m$dRcsqm7zF|F4fdGZUwwW+5MC#ktlvJ^Na1^3`k7 zg!CRWrvaapVadW4dqzPyw?JyaAPP%})6(N((+KvFZ>Nhy%VHzloJdwPw7)DB#M;rluk6a zr|Vn4MKgx}iv@V?yBGrzSie^NyXM#Za6#HXsGkEhuts5|z~$r;k#r7^M2^qe-4;>I zb-Dw!Kj)k=ZItkb&U{#JeU}17hxCyCYA(O92b#;BoKfsR?enkZ@>rp*{n0hmjq*~% z#{i>Fd+=_cL}s7#ED@ojpvgdr*w55QC}zv>ntA_VAHKCn@~QKV+zaf=VpiLPN4WWx zdurXUYeU!+eD?j%Pn%y$%g}n5jFg{V5@?DYo?PxGzy&u}m(zcuzE!M-(YXPl51@KU zn65L4o~Ne+>Eh<)!J1{#=WHQbW>%5a&!^oh!%-sb{3p{T9#02y0|P?iR=%i`@<4em zPlV7VCtqk1P7h$<4DmjY0MHOJ^W*jleBcEYkFPfCK#^_Qnyst;|q@kV^ zt24RV)RZp6duJv$qxq`28-0XahagF^;faSA8jY4WQF9kMoA<^LXyG|z>kH4b&@MN} zt;c?P;5Yh73nN|=9`kpG@^+T}M0Co1I?c*kY zwFeCet=QQ%d`e&4e!3ch73;fBB7?4G-P?d^w^D3V62Q7Zxj(}(i2SV zxiC5zm*DE+{U39;g1hd^%c@FsRgS9`lC5GsD+!g9kXXQ%=7M}~D$dHBvEtYpiS3wU zG&Yi4m`}qAZk8OK95LY`!Q4v&u?RDZh}e$lN~?mJEUS{oTh89S8tG=;S1d)sz}aahla1;>G*tB7rG0^6;R z7fvb~x!YtSI)|7sITJD>&Goy2)|; zNj{cAX>sRvzhW-(&C&AcAGhtvwO{!A3U@;XSF2PUUSC496wU(kZ zib17#-aj-Tz(2;a^44TmSoYiDAjPY9|7JQx>58olT%U zNg-2Z+OkFn1Iyp%bcZI3`in$+yxi?30o#+xqW=C^#D8)*9O_gf>nQ>i<_KMm()2q4 zK=KL-)dBk+KFo0(>qjfp)x)ZfG%-ooaOdU#LK2+%g0g&w9j4Dc2ETy4%8~Fr5Uf$` z@(KJ6CYFDa{t3H^`}a06a0YJzp;>=wB*Kyo_;ztJ2iM*2h{-9JaWYkQ} z8syxkqdl!af9PI;7s@Zl%*@IY*ghwl6FUoTYyuSp`>A{Edn{rv2=kjhx0`#?jUp{p3@@0(4L{&}U%DlcY z2eIXc{L$59LrY7xX_Y(@N}@v5+GRHzjr=d|Uof!3(h+}J9)V#{b_b}~y+If@IyIUP zW{bPc3!wRNj;Nc1R-m*9MMV?ZOaVHTXt`{0vhCwD%!RID2`!Jn9*e)G1aQjj_W@DX zhhb6*ZAN9cJ}W9HME9W#m*?Ky;QA60AOSO|(tgJa;7=)V*x(xNd*qjB2aij3ybr*n z`MtFg2Pr!}{0fj7Jb#Wm=$>h%XkJt0Eo$%WO2`W6nvy=(RC@0JEIKKrJs!B8H^>5l zgQdOh^a1jrBa4o>#4@%U8wylxY>B@Q2s{ZlOjfB7<0l7O$#DVE%ZH)phrH8i*h1tu z(6dRKYP$#qaPl*;-IccPX>CGOn|0}_h>MQEy+9|h~#acGz8 z){KgtnlTs219JXs^}^rA0r*+1$^LWZr|oD*0TFK=E{M%Q5ed-F)j|^7-jl{3LkLPs zgTq-(OiBUu<@wRZZ{)Cre6c{?^!Q}i`-_hrnN>hq(c4pn_Kg=ODcJiFx@>MUjdfQN zz{NEvF1HzSz$pLTI1)eRn)wYyZ;kJhg_yrp2PA~jAh?8t%rUY{zx3GEgWKCceFMFF z2hJ?~ax&rXvZS4nAphHviZ7%Rm>pYCt|ygRSX7?~9%N)9lR-A^Nh zR}7w4!0P`yPDC(x?skq&msV*&)HiVR3o?vFVjX0BL5XF)w+9bx4s&-L)u zfP8ECX;#4pwY9PNB(81Hx01)0uPSjL7$~0a+r}w^-bqoL0qnH@6de5T_8VXUYBP61 zCPo#Lf@z`-Y6C}a6#Pk=6Fx!owLGM+jv)(VVqEgx^Ac0X;Lhza+=+COUrV@mTV>43 zMIp1eDUHql0rmG?h;l`9Ca1+s;(Is>*7tsoEnuM|1EAdyj0b=OxhV&+MfUS7#lIv% zm7f?)jYN!qUE+2ewOG_uoGRo-4LOKyT~lNk!$U(uqryx{LA*RdxakqJzupK3sygp$Sl3oCC=zDlR%U*(*Rlmgpbq=%Fyu@&MYX-20{m%{DhknQiEbq$Cqejn-T3CFwt zA9GGPCffs`yZ&lNgUYr)q&p5vPW)+m`T$&!Ap6VGh4ZfD|2BE%q75j!Ds4+(arx!J z5ZnH#*tj~>wbqcJ|E&A~uQ{my>hmIa+qW`zI4((Z`-Tz262Er-=T8tWF!UC7kEy8S zLN%!g?oF^HwpoCP!+~XlE$M0L8w(4Ju+n#;k?rUq3&Ec4SKW*E0wrki5axze+WU9j zYZvp9D*Ch5=|)O?UO~UCe{oB-4*y=N01n9!U36e^$)2sH87g_3%TTJi7@tG%TyHv}lt zl%t(r$;+!8ApnT-669W~#6D#%ys;(wG(|_d;jvZf*MG49v8hm$;B|xePx-Ef($`rl z^HY8gn5!!3K;UE!7Adz|UhK+~;vupf+8XOXMA;;{3iKQ6Bd!fe9af`ORX-}N>@@&k z`c4B5MC+@9q4^>qARqB_i;zn-&h_OzvI}>#(x5&H`MoKGX76 zWhYu|4Uaf*zLcDS$#;iZK9-gk3eB#9FxN+${fdJ+yu07FqcM2HvPP|43D+mQ4c;$& zh2Sv27Qub#6qJy>_+SfX=t&}U|8#7$X6(2|OVCMLSBhN4><%T4TEL9+1#9yiaPC5T z#_S=SO(dSR}~$)v+AekOZLF1ROl-ls8gqXI9fGwQEiWU*K^+qxf5#?Tg+>%=(JHV zE4nda-TfBR6d{nLN063I{gPSJrdry5Bww)ifRYiQB{BjX*QEOG%Qef6yw>n@KgZ-o zb()xkXYhp)9-Qxmjd9mHpHwngsxUzIPL@6tpoxkeJ~fG;TWo1M4CN9unn_3s>gYmG zsR^n3=y>fBlMrf!E-d{R$O)vZ_F?#rxxC0qoFNRRe_3fc;83dIS7^~JBFXYG$&+b>+2J)u%TPutJ^9%e8k z^V$XZMfl~BP(Mf!8BR;o+DP2YG@CigUNONJbkmYHj>Jg$qAojM|zJ=G60xZQ9S9hq|< zo-U@jYgg02XqvgpkTzQExR%M<$@@RX^k0{hLjtI*xy3pBa(MXVS8mc`Z6wLW6A;Mc zpdSr5nnq<-F7=U-k+3B~t{X#&y?t=QUe@$hdSyo=Bga?NQGGnb5rV~^>#Ef7*9E>P zhun+kmFtJyPC>yCl@*gLq@bNz;Y;2Jv)k@A?kqpaeIH>j+OCe(h8$%ln~)9Zur_$`sdqGetT`2H8K@b~6o`=h8W}_vxq!Q>5>NZ*Bu4 zb0Qq1jS~?8yF?JgJ^dcK=y>8(vE2Xdw0+QoSg+iH?!2b1DL+4piIbU00awNzOewaT z`?zpgiQHh!0-?s|*#(6OWzaAF<=YvU06r5XISvC4AYmOZCv72%fuG7x9!V4U+?H3z zz$^3FGa~JWp;CKnp_o5=UO*+E-&3IHCUK34!M#_P+O;4p6A)G}m|URx7+}K_pYB`a zf;}S(4i3!8rX3$0B}$4%EXx~&1ooopM(Rac&Pw-nU_tG3uQ|4;XK6!_op2L8#jMHg z!KjQ~Q;h``$4zYyc2?bnvmlzq;N&u^mf4+%tr&fe?~0z^5FeeNw9WNM2TQw=3hH0X zA1C722Pnl=AIA~is?P3NbD|V(5BHIC`o>`I8{}@JK^V5UYCk|42kG2P0Zf6Y=L+Vf z8ZgHjx}SWlDb)9D0wg+DJ^Gf48bfAmN(wK}dd$(hvp>h=_ntE-5cBnC(*JZ$-FKO5 z+Aa5D$gXGC0yOD+0AsUjKV~^}af)0{-f`)(H#u4O%b^H2!QeTSY+cUH%{dugajr*s z9Zqi?eB4lspX@g)0~!mG)@GLFavTr(Nm8n9oUpBCYiB~DA|gI~*een6&Mqy>&(A%$ z^S;fddizK?U+T-(8cfWex)g^)b2n~C+Mmu90~LL>6;2I)ydI0Og~?y~3SVz;MQEt1 zX^y{2d6>Y67eb#6&aR^;aRuk@LfkSyT9Hb6TGOv~En6L`M($eA9Kr#jfT5j}^1UN0 zZJd}uL}T1u7&X^BCRGYygsqzNg*X@SYM4B_B_e0BUlI0fcK8IRii;UwagClEotRmX z2j$!I78^;xL!xE>`rRD8z#{!1w@>;enfA8gI73{|Qa`lJT)+7;6$+YRWPNIHVZ)UY zb=Vyq76vB~i=27+YR6(7UvbMy3Pg#$&d;v_CucaVgCHtPH9C51l9Lh0bpVx*@Cpl zkw3MlA1fEBrl+!CZ3cpbyX;@MWnU*lX=f_SZb{qI(|@HIA-58Y8?f1U6Fy%X!Vh~w z_`$B>=um_wY{QDTU(QkrJKc8Oz5jDh%P_I7!H+Ao zH)hU{H#RmeOoS=;=mgO5hXwW)CU**QHY|TU1LGHtYU`;qm~Z(mnW>xA`yIm5;}bME zZbKC03_>g`SL2GXcl&E!2zO1>2IKA-%{ny@q`!M?(BQUYX`J4|vIPIDZtdQHF+@pyBvFQ&Pp{o@ug( z8BShlYFvM+r4&mp#s*}{r^ifUdo7eRwCy2qL6-|#5Lu65w0PZhgZrz*XqKXCa)Q@niyonQaorR z`!;Z6RR-et4qRAWoL!XPBXd4iB{E4d()2tuppVRPPu--+@BQk?Mapk;fIywDNc6qT z@8M<><`ZBKPBi95+{O#-aA>s7>RbGDSjXYACI^>f9FKX1h#efVKh0?X(MLSB~2SSt=brB4aXN zHYYbGC1XVmicQ*t0WHv99#acZO)QiOaFvCJ^Rgz4UYX7c#g1>`vciT1FB?YXE+5Ht zpf(?oQcB(#q`Yw7V#x6AW*KbRX6Kr+z@9XDwReAr`FaU^HY4P4D;lEf4r|cp) z3$|Bde&io_1Hr+>XMRIvYz_M+gr`)An&!*O11jZGY+hD`6xt+s%*HqcW5GcJHVaG-Q<-(O_-|SiCK;T)+h@3zR*GeWDxKTP`bHD23Lm1?qMI8g^WgpRm*hkXz4}sV|?}TWsy} zi>gT#%e2swPUc-^wKugJ;4oVusu3HOVr3bbp)Yg~P>0AqdrPPe9z(d$ay3~Gq}#6% zKm<~XgPwi?>Q7Xvr~1?M(zwnySf{*ZzTLMpTnf+{&K%aku`8dp-K!PQgev`YwS(}0 zm^bckSY)ULu&6yRLV^6K?knxjqu6U0pFt-d!Xk3yzcZ8S+@UW5<->aw9@r>U4BiaJ z5dgHUa#IHK&ezAIK5Mz&^m$VeTTaCpX z{6n(YQ&GN<%W4S5vQN1+jusTDKy(IlTpYV8-5s0t?a^y?%+1^_8>hswL4LMGsnt5U z4v=euKfGwBTB3(t_$O`g=qQP}^Zfbk&su=KHBse4o{bG=eK#3D(g?HV&m#NS*cS=K z#kS&cVofup#^dR|1%?}FO+6KB4$_-zXe1Ns)7g5T;LF`lDH~#upIZ{g#^5^DF3x$F zSR_PmToQD1Z4@M7xicP(WldBL2?Z+qYnxT#Tcaa0fCqN*8l~y7!(ye;cHrXW`?Dl- zL;v)oWiQ67J`A}ivh;XB;OUaCv1#kl=CTMVIe>2VI)2I4>e^^x|afG^gRv zrI0U=$NJ(Fc1f0)c<9{%GZ}BTBWt%w?>qEG_tNX>u_yM;?Wo@M*qEP>(tlNIyT;2! z>^+x9^F1q6YfmB|+9go+3&q;{#ZUZ}a0ctag^ujpfQ~Mn1hq=_@mTRkcz9P@ znOqwnLcoXkM^n(WaP-8FZzkOBAH&$np;PH_T|{05nAqyC#jl2eK{q3T+=;!D3Jr-c zv2XP+j4UfD0vogo+AH|UQ98MirfthkhWu)pe78H$|D%?fqSGV2ZUbbB^Yh*ZF)zCf zt9TL;c@hrlo8apDx^hHZw+6IpTQx2&PAOw7{#xeuD1a>D+c^%?UK5xB7o_?0!0WGf zuQgpERR;XDbaY&SB`p_(ams(ayNCJfv)e%JCnJGlLwlLWg4thhU-JQKv49V+PdEH+ zM4z?%#T3m=`A^=FpXw@=&2jSGp8wxjz`y%OfSi5+uu{K#FB!5wAs}>SqPl^@DH@(FC|D+vVV!ht*lLtyr0Lo?^MqwRBAW|UNW5Wx`PT#B3%~TGNk~m>0 zQZJk_P%a#m$wL1)oZt133zW!L-SH5v=m01Zr`4Eq0a=Oyy@o?*KVjf2+(#sU5O7f7 zYq#?%N}nUnzx*8FTre`tX8R!`aZB&~_d!osm_^4%zTxe??s@TIp`5!x4NPm&HGtAi zi^K{G+1>_Xox6IY6C=9bMFFCLt!ltJ@oMvHUS78y(7dz@BuKht_c!=vhXV<(G&jak zExCcA0tm7D;9PrKYim2Z zVQ1H=4IJo(v{V4Y*N$O7^i+>W-5Q_G&fxup1tWlP9OC%$XW3GsdRT|Vf@IDsNNg&9 zYWtwJt$LM=WKCmE72L!zitlMmNLJP-Knn*5VO5!5D8BfdSG3d8cl1W9GM#YU^>mKr zHb4{Z(_6{uQy%*Br%C)rvO%Dyz}FJ=_nC#W0b!h({>Amn6i`bx6_w&WqW%>5T`}mJ zUK7LsxVS{zQ=3_3qQc(qc`%fzL6@!SE{P0asey(hVk{Y`5g;RfrT?sU5)1{>YxIIp zcbPF%vlAcO2;v#sE}miU^x)>k-xK8;mLR|pf}zQxZmmP6lGta`e6qdG5hE*gUl9&( zmU7Cr{0FdG)z65H?I)0v19%we|32f^ZAm2{uW}HO6z_LIL^79VR8deL6s}608O@|w z%s`vefA$faTTzxD8t$vhhU4FU;u3EuE`jI z+1?JU++Mjr`yHZSb>&HJ%CjfkzYvsS+l#`0^cRe17~Yo;p`o9y+lIU{nnee#jiiW366utD%_XLp$5?gz+I!}*BtmG2`F-K zp(P~T2SuY+a9O2Y#m_z8o-%P}HaBOM=1nX*#>`1qs0HeRB}JiSAL@-X5(=^!KOx40 zL}^aQ0mQu;kdx(+$~RfH^n&&wmVGOaG;M7klVDr0^$El2NwE-CXtHQ$A<@+v6FH-+XDOy;*-reM&e7G`d_2&B z#4+C7_BIn6$GTK{=;PJ7bZhRXG&G!4uk)3MbmQ`Ycz#>cGT*OJF2ewTnOKJyy7%}1 zI)SVdxeV-#L59s3mv&1WE8eJgMA}(n{ZNrOLImPfMVBei%h=f|h15_4yxjj?G-B>r zaeugiQK7KU$4Y3Mv zU&6T%NN;SM$4rc(>WHzKnW2en^m=$$L}mh&oT;r|6B13^&M3^Hz?^Wx8~#aWlZ5}! zy_*3q%yRq1{Ynxa86nq={QP2DTkDeI!UabGg)YS$uZ8F0=J1n~pqqDbIy<|90)u3v zr4^God{;-9_LdUiI{%uGa1tN~1Dt6PTsZ&=EMj6Sl+7)lXP*hTS0dhW2yxS}u&7eU z^k)c}BNL08b&+!pTr|k)swzGnp3}{lna@_XwqfDnAFbQlB~qX|-5kvP+EPT?-*>Na zwdtGLzk}!Y%Cb}JPdeJ_pU2mH_~hmK@aGo*I(1d%xu5PA?HiE_proelPxs3!%9F{H zWQJWEnvnLZD*wB*zaEI^0N$h!BznZE%Ik1hDMOG>SU9|E0Y=MkOrKk+%~}~mNJ>i9 zfGX?2x567d`uqb_rd>SB1FS7(k><{0|I6Y|=S>>@n=A^!4xl7zPH&2bAiZc;Jn9?R+Q_!I{`7Ud|(`7ykcz@U6 zynT81DtCMAC_4Nzbr3N+8`HHhLzCFP#BsX;1qSnF4R;eHUymf=)rlhOM0*O-7%nKi zKs+M5tn|eGzt^6n@6kPtKIDq9g*2||X*Gqm@tcU}%n2N~B{e>}llIi}4gw;r%+qQc zGgVxchX;B*R|gA)jKzyqMFOzR-xoX!;Mx$4mi_9FNl9aV#t-{0)@7pNbe}uYTHA^_ ztYgPMBQ?I8pfXLHiv@@S1<1ieo;eb8DB|J)4SgMrK>{vr#QAiX)Tf6zu}oyoCG&b( z^D6#xe4?ahCDH-GQGEkk#8~^-5rSzm7F>?}x`Dch>FM+Y7(hI~zu$a-6P#6-!^2At z?OGUsi0sOWXTG+N4(R}RtG185=OKfykdrThIO|akz?l9Qk?wa7PLvRT0PJ)v+C%N~W zbARitx8D50>NWIq@7}$uYFE|wRmCU2f~tuay&6Wpvkr@nA49}0i8IFzrvm5w@Z?{j zqeaIUb(vQq?cNS{!+J^VV15c=DDSllgD-;2`oLe`*au0PsesIm=FfYWs5HRW?{<0hTjVrFSbz~ zdsx-Z9q_x6Ug=$Z$R$$3nVbCSppf7~NydNQ4ukI;u^*sN>WZ|OiG$Ri zrJg)$d-uk$aVwsKC<3KSq<7ZYPfY^y&a^^V0><7q>?D`yyx#-b@c;VgN z+!@`*FcN!?WCbUdobd*i8wIY^QYBh35XB1~7ti!b-ia;v?cy-Ed~`SK?|;m#EH-PE&xVQ0DYB><@kHb67@}gDN^|yUF;! zKgJn(hitRiKQMr>#S--CJ(Vfjb<{{5w)SSRiy))Mw=(7vmMp^si^UG0?E-~avV;1Loq zE;?g_jl&=-71xjJ9U5rCF{5^npOP~2)1TvWr%_%mo#K^0o*6N+109LFPy}bBm>?U{&y^@`Q5hQ1J#3`VG@XEyB$EH4f&G+n&zaA0jYiYyBytMxT0N!{!=x2Em-d%FHQ*u?OJ zFzaJB`~7M=q#?6j^($LcDo|3;Bu^;iIO|vuCG`5!Li0aA+QbD7cb64U+7UsOMd;&k z@%DQ3;8gol0zbV<0&B@$c%>fd^Jp7DU0g+C`GNT2 z(*cG^@1Qcw)MauR-|t179xV>%=|cbe^R1T}|E`QH(aP#|;}M>1Rv4Xnf8hPXJ`&Y$UEsS zlo=)tj{NAZSR{^wOZNb3E+z?+u;3%uFn{3ojL`(mu+{j`|^HNnnrS?LrU{u29tAsMW zdNtX+nDvbite^Y7O+mx#XtFihf_UCS(WBfyZi$F%)d3n~n{)e}$d+DtvUy+zT>6t3 zCD!d9O#!es0av-X1(d?&NoWMx3jAqYt{Vef8|n$u$}3=D)YPo{i|=2#X)&0)I6=us^aiPn>F*BV<1Hfc1lmYa#K$Wxs^l zN7o!DEJQ$?MU%VKp9zHo4)H|uCXmrK{QhaW2)qh?vhiLBmfQr6$Y;3w> zP^<-}@(ZKHsncK=w8n{}i*zBkq(3j7(fBzhL3rK^UR+uLOM6PZtIJG=-_MxI6~%_Z zq|&CfGGga4SEzDn=)L2N&*+ie&Y`xuyl~J{v!@=^s+M~Vtm`C6-e$?F>g}fSVw69g zdBaCX3a+xUp`i+JMSX<>s>RlWfCPP%NwLyj9*yFv6&OF77cdhjI*ha%m{I{IQ9=w( z8Q^nH>E1`_Tt5{A$p}&vX(d*lPOF9(ChUG`$%`bfqFc5J^OBgEvYTc+Z1t#RE6lNF zrl%!XWvk3+i&|>K)X(>KmL7JJu0giWh_$CFp?jidIyNB*%a;QffU7^;V?4QqkF>>B z_=6}6;Br)kfAgXp}VQa z#Ht#6Z+t{Oz8oaiwc*6Ul_{s+HX~$hKI+|Um;1r*6oty1ZCuW5R4NZF!=V*iX7fi{ z(20?n8dOT;Tp|jq7&EEL9dh{fEa7fB)i#f-h*>&Sl0(j?lc`4+}HX}Nx0z}R}K zcU1W62a5vrR@NC&EnrJBHIFv;brq&uqY!mgOJP$pJbf6Ww!R9LD>UVb17a&VEsip2 z#Jawof?jAiY?(<|OYf9humf3f%^v0?*vUy(29zVK^D~N`x^GQajHXx?bW%2+;tso3 zt3KOgvh^O7Bf7|Mum~jV;Z41oZJA3_m3kYKC;P2nir5I%$F$GP>E7`ju2YZ$f!_R; zQ#8$qK(@s0YBrkw;i2u(-chav{z$VURyN>1+wP(Tvxjzoi9W(xs7Y|d16x5=4RQ9t z#r+GP&B+xq4sm%$bQxAPR$g!xs2VreRB5MCybKP?FQUc@E}~h2COmD{e$( zUteBqdGcz;t5U9Trra}#30PTQyAwyg3E<{xP{mK#S*ns#EmJr$$}lp>gnbe7D#jc> z$n{eiGR%9`vM{&w7AlWpjAt>SSu2wl<_GeiDx7J_P*cqVpUJ!MZFLt)h6F#uQb=sA zy?ZoR@Ym|45o_;nuyN@zug_?A_>dTmKJX&AkAQXHlZ1_^H*9%}J6<2-qs zm$Nm_@#hb>P|=NX%>0w^U{(6kGMn!{H`}ec4esh`22ph~G2E z8MAMkf(-m<1`8Ozhw&-q3VHtAhsl0APDK^+U?L)`lbc1guk`sg6m#XeC>7+YP{-RX zm^0P2C3&3nA9sh*6**_k=c!DK1Hdi1_Npf!i{7MPJ%>k;cl9+gt)J)>joMy< z>l7N`vmF)0*X0V2X)W&8b~n{k1Az>i>l=twX`H6wfC?tb(t-e z-zB>3kGUc+750<{`NeaQ+7!WV>=psNsFP00ebe5RHR{@!e)m|fpQ+R-8C1@#Jm{66 zpoj(k6knz98N)`BHL<=a7W4g~>}bQCD%z>+273|8%E+NQ$zVoN zpZ?Ku(qWRGedamY7Dc9mf~ET?B}=(&(9yVQ-}ufsw53HTy3=a!U@t9~g;X4X(i-}+ z6a>pUfZ_HY64qg2Da_(nQsU02{D^8_p0Sc0Wmy8oWnn~Pge~n@-mo8JzgEc@PZB*i z#a+k1aE+cRS!?^GO39gu4%L1xS#lcHHW+>OV$=MLpX-C4Q^DaQo>NOqTHWYsnsOXEI^((sbY>(D2<;oq@Ej(-vjy8mj| z^fL5_o{=^u07Sx~OMhh{zyE%`FJb$~?CRGknxeGAoYK6~fiPVsd6}Szy|X6WsJ8bb z>#WiZjMdx8gXkze3JJ`0w&zjXK9xJE)eI1N@)Mv4&BuPz{Kt|StU3p!Q6+%3DCA}S%#LKy#r9cV*^#dxn6|8>!~shMqXYSVo#PqbTJO?tCA9%2WuI14 zBY0chO@mKVew@1mZhBX^6`6M^jp9(JSowXElT{W;R;3TmfZfr@rxew&c`A&5t-{pF z&Ll7?1JQjWYDzke{h;uWTCmIVn?>?Ae~K&=8k6U~__35x$Lq-GCcH-2y zu=nE}>*w*ae4oXv#h6STF-2K>EkNS4ZSS8q5;pkPVp1&HNOKRzBDf9~xUvv)G!kE@ zVH6sD2d%pqUruRwecL*g7pm^isMqRqfD_4?K5!Aq@e{)b)o9!%qb++3Rf_vMMc!}X z?Bcvmk;AH^rY-06h#tz4o}@~Sajw)F%3P$1M8>@;5~${@r2TEa-|Zqj4p)Fm$?(V# z3CzM3(3;Z6-3KMj7h0r{(rvZ;jLM2L*&#@WEgbdC+ZwoaI=W2e&)`@`DUs z%e|ycef}L+DIcs3X1bL=kR+}hNsC=xnx({CFOUyx=L}=Lib>mV>C^Ovyud<@lfmOu zP8V=ix?M+nugx`YWEFoMK7t{sDE@-B^gup`g+BI-hJf1^z2ISSLq(c+Fq8!U2;8Wv zrP8SCJ}m~*m>6i}4U!+Gnan7TsZ&qNQg{+1r886U zvfU3!YEMm$T;M@^dORv$+?=XT9qOQ1JLd2yuz5{Cbs3IcOcUyjSJ+cP0P=>I2l0Xjwt>z z6f?|D%vd>|rqf^2dMh@%wFtiH>FI%rWR(Po_k19`y9+tiq5`B5za}qo18gUup;Cu? z`xYWcq}aJBYk}j7Cx+f_-9r$Sv55{)9}7-1h~SNo3)Pi|pWTN)=ih*P89)HS>1 zJ14;3bFp*b9X^4ndS-G?iW^j-<u3mq^Qh)OuN21JpvJeQZ+Z2a?f`9x> zP8Y=-1D(#RJA*=KY~*&QUqpc?W-dgd!}S?XYNk>Z(tSdh{de@Z3l8JsRYSRhci;L1 zuoG9Q$wVIKWLnYnvEIFZJe1E+ixFU`h}5&*GRLyc6Z!d=OSZmM8iRfXmh%!LZuj|vCl z$+>tkMK(~h8aL)#E6Lwd_8kpLTT})T#@8>C%KFUB_sE@0x!ZljVr@Q1ndl|srMXQ! z{kdlxxu2*VJo`vlla&~(kZd_XRc$3f9N;a)QoAYFcpuj#e2&io@AkYNv!y!nvM1pDQ=@mG6t*JzhM22}#IC zQHMlT&YSdxYuiGKh}~z`9HVD~X%$xwsLqd$rPf1^E4|htIS~n;kMj$5#4MM0_M2!K z;dLE(F2zBcAc#N=D=IY~0v8mSYL+);rRWZbmkR8cx3WKOQ>tOO&3?#B8pYg&~>pU-x#(!gD_sizp+O}I-Hbq;?v#G&B{25N_!vqu}!65{@h z7&qKx`ONxi|F}Z@)Nq6WI3z%@9La7eUHBaM+DP5NepJ-58ma(pe&gY3F1A>sFi-JG-bv4lb% zBb8c2Adk09i$-8WC>If@<{4=DT?s5rUkYmK?5@paw;KNq*)RBUi{8{q&A3Z2gg=^l zThHyHXkt%L;28sarTcJ7eb8{*xzg+%P2rX{@q~mG% zIcNac$@xn=-dJUpeam^qHbT9R>Q3vbHBLGlXW7bUIq5LtRa?kpFZH6OhRTcFAvK)4 zO7V4^u{euYdinV`r19eIPRGR$eLA;70k+s?1>+gRP09P-zXjMo0_m1*GwK*IGmn6+ z*YnIgjh<@_W?3HO~$V>RuM;oO@XF7%rR)mxCui3co5_HZ>u>(Q>FN zlW3`lulLhEz{fu&%C)?yCARIj$p#QEsk2+|;BaLS3l-5PoSNT7m4ye4e{I&}kj>9k zA-yv4B8!jJkx~)yQrz}e(`pOkW}nbWGG%0h{K%P!aV_W3%lbBROPwLWM=@-|xn`qr>YggwMI0eH1>DDbu>fp}#m%ZsJ%#nPbu8qLGUeCbA z8{O(M)iWvaI__q6Ee`DL(jP+KcwX+sN7~RF3x{bYEOs~B6oV1rh+zUA%UV15u6eb z(At`e%+J)77ffD%RD4XTPBAWb+31W5v(OtDuau#4Bb-HGWHK>1cwj2mL2A3zHCdk}!W{xTbdMt7d!CDB;9{LZ(uvwg zM{eI3t8bRY(AN7l=!!au=%V}CZ_(_-r3(-@zZzKBC_aTGn4*Vn?s?7m{o1Q0Q|z$x zilHHIKStol!<01Xt~-NemfvDosXGri#DX*jIl4L;cQha4#wJji~;A}$|GRY$>P z0wNKieVsk_!7eUbHDS73x9xKX1Q9bsvAZKx`X2G2XAmLv)=rKfUk|tG=6I)ElS3<_ zT_)Gy6{r65#^+nn&zw5?n$ELV)r(d>i!5owRSUYY)}1*Er$S)>dte>`cJ$+fOpPI& z=V3uTo360K%Xe-4=|YoVnhm4)19J#DuQh|Oajs>RNr;Y~Qzu4WNr#LXioIxqTGEoP zgaQN~*OpMfO{o#RG%XNt#nvt^{Ge>2vX9ECWm3m`4|g9u4mqYPoQY7Dr9RSMOUt@I zrRk!{y_(R1MJXQxpy)4q>G8~D-J8j39YQmcAyfyi?*l;$KQVTom9VA!G)?AsKGxFC zx2pbu6bw17&X>$#dV-JMTh&`X3!ng?aTbmzYZnyyB>bX%FCIX&6hY|oqigB?xZ@UO zX>6gKX42{`MT-IC5LZLk2!G|+)CX6EljOJfWQc4ZNRF!LYPMw?iHa@~J1dBs_J)jU zNDK5?xUZ7Z43+OI@I`?H(~xaxkfMWba?7{)Gqm10&6hVPbvJFF56D#Wcn4}YE>~Z8 z6?d5}IAzQON+|ONHS{%stN#^cw=~TF8}8 zEzNcePL={!Y0C;X;@o|VZk>kN*r~i325JGg4cD4!p=`9Z5^ZC%&C}9+pX_&UIb7!rj0wda z!x+l%7whZ<4;orI#$Phey@lNDk<24iYDHRo1qQ}Xz!o0@UwSr}Ug#!k>@9^{buZ1G zlbE&y<%_+J@;(nLfFLm1rVvICD~%N==Dq{ji$CNvQUXeXByk|uD=*T0?({%Fa?bq( zv8}A^sTi8YS4*0vw^i$U|icGd!#b4shBgx2-y`ED z$aOrA7gLw)LroFVh8$m zkvdn%3J^5e+7jJn49;6^XUh6^?5L79`@A5K7e-RWe2k=GsHaIHw{S$Q*=W*Z>J+0qM4JU{H{ za#NCjJ0G63?CbA~M(4f8B1g)1INIPP$;H*kY5ACU#gn;Cq*V!2;a_QgzTN!rm*@8% zkz`REZTL=fheQ;P`@3Y-Y#oXa@1~nshA~Z-vS2*xyjj}DR=3u)YrD^v!MA@H1l^!X!pjcfUZfaF&@6a-%vAkdf`48vA^L zc2EgnYvn1iJc8Jl3d)prUS#r*ZegD^VG0#2p3`DYIj;P3$o$LFrv z-l(j|;%JlvB)+~uP0U%k$4q#%GEGlZ!V08F?0v+WISSk;4+sBhW79kLiR@K|auQa` z|CBA?`9`#YK}smsf=j#lFlm}3mGcc!2in-AD^~8AB0c)>+RO{~k}_Qx{$Asq92Qw% zvRfK@FeS2a6a@VAyI!Z3cY#`fP^zCFK9&(vSV-^dH!C{X$NCdD+Js(ph@W!%Z%=t} zPLIZy_1(>z*g6Ex?*i6Te`k3g_5b2_Cx z1ekTuS|10^ax||3Z->*yv>kVcVDDJp4Qon>x{COQN|fd_hoKJ!z3NFSP<(*HiKJE% zcU_$)BUpQ%`AtS}fqS)=-K%TIvgvDlBId2)>#aO{xn83SpG_CkwkU@Zr@9A7X($#q z6v|qzXM5q~7vrXSNJdKY5r&SB=N5@vWk`HUwJi~HiqG!k~C<0UMV0+hYxPN3z(0Yeb+IIPNQjEjE zsiN=-SI@jv2n&m|u(1VRE(j|%ur$M$)P1Df?3!YGfmEDliwe`nfl=cf&sT8Nxb#VK z1bf&g7j?JM%-tg1hRAjBB(EwcKcb+|NRNUNwPh<@Pzk-b?GO*)jE_=>%3BxcP~qII zf2?A=uVjY)I(5f(Yi7kU4QsyxqqeI%n%xuTQOMHhD!_%N!7U&2j5r8t6u!Z@BKfEe z3zI8SWT?~RJDx4qwBxgn7qZ1U*?&irlib}cLX$U$$ZX#ki4ZNODdc@ zhg~&NcRX*sjTIDT!OoG`sv#p~^7muNdd+5p|2PtGLYcfY4LULT%i32k^tT62M*6z) zbSWnF^c<&1z`f^8ZvWtnhKK@F!byYT5=0VtH5lS$!opnQ94A0}2_Hrqc78kw6pO9K z@I*lt7Jtg8-QIw3D5Q?n8)h%&Ap^VSPsppl)`b`He`VC075qw5rHt>Dos~)aTczdZn;49a8n$EzL`Q8(%!bd^ffMzjASRU?i-^X9_UFO5AyH~{F)Dd z3>s$R#^PM(oxrm#;crrKCxCCEz>Nb-1X)Vjqp;x?GbL_fANfnw8WWFfX|J~0Ryw|i zU>lmP4g5q2nkOz{#92X9-Pxkgf4+b+6&v(s2T=aRf<6;n!%~%XlV>;8bz(yLt_A8= zR`XTzjou+DrNu=B_HFJx8KIxs0!64qV_icwPEhj(QLnx>EItf6F^u(6LhXP#fMN|i z19dG1GExc=@2yAyc_6%Ka$_3VTY|@xJqvWP8T}{pT_LBNi@jbq{DonszCdpTKOZMx z7lnRZQH6^$zsh2!i^>&EL{CEd*uunQvkHW^UF#&*cx}1I%E^4Dq{4B1@qCo7uuh5f zOLH*6W}*wU_G6|Pzaw6lD`~j*cQE^BSGUd`{iU^oAEBax7CXl2F1l-KE-P84tXbG| zd%bu4;pWg>rD^wzk?pQD-5#X+yhFNh(e5f9DAye2#ajIgWKVfX&MyqkPV z14|@pm5k*3X2RHAEthy&uC^(0I@%8Syee)3NM*ZHJe(*1dMgY#<~UM(!Vj*LU$dsb z85PNx(@3<^~nw}-c_ zi33K|Xm>U&`~A(Jmu@RMUvqPU_^}h@E`Fy+c^vwSPfSGk<$1^_=LruigN9~4wg1_D zRzHIQSW|~3VE{ZifD3;(N6PwoR|;?1h~vGNd)H=;60j-d8jPNr8Te`9z!gnJK>;N7 zuGy3Qo4g88#2FddwB0n_QVB=poPAFEBhbK4C-@q^|Ck~i$`g^+4kCGG|KnrL7YQ8P zrHXE`($_Z1rWF>k!dZC2CBB$8nTC&v>dz2of|gf>HtV6Nj*cV zCjIY?Whz2~=vTKtlhOQy>`mYcrQ%wIJ26pHBMUYJ8~~`DI?bR&W|?r>32e{v;D@;} z0~tm+RIVu4$mZs)vX=DhZEViE6y0fd&#*Wp`3Is2rq0jnPLzPty6?mTM+a1Ho_48{`jP0^$ddlEbJS-V-Sx+3aS~ zM73z6s|^3~DidWqBaIKiK{PB-OI&kK{p47cVofAmaEBT}hl$Ocbl4rsexJ6lyP^o6 z%$V)co*}b9<24H-sI1|l%4>i&xtK#8^z2u!Kq0AqWgabd6c1#P>n(ixVEv6BB{C$p zEq=8J7H489U9r$oP`GcHOoM|iar4802b5vw+rlqs5vqN7jpJ;3eP6y<7Vut|zPUm~ zjqbnvII5iTbGiffVrUz3h$?|j@avqWH1buX0vn5`>K_D@oWg+NI55@Zg;8f`WiV?Z z@SAteI9<&2^qz?`OC*WM2u??di=JSqN|~IkATC>#<&%;Is!aZ(3QB#7#{eGN9sA~q5OvXBNsmib_JOi^5V{4VF4@*WfC zgGx(Li&Onoc^b5C9y~xm;A|tHzjYnyw75z$8KZ^*o=T-$ZhN<}QL*)Cmk0Ln50H9L zu+&QlxmH!ayX93o@x`#pD!DV>^UznPkF)6sG%ul(kU_|wc=^o%L77-9-1qbw2t21v zcMRc;FYrRdL$2Y@+^HUTUzn?OXjDk@arncfk3>@CRHVZE+X#lCXqU;{J2^NBXX&P7 zbHv!B0>Y5#37$&bKGH>zklcsLFFZ8s8BVFL{Joe07aVIWyjvu5E>*MV7<5U{*MNM^ z9X76QxiH5d#rLmtt}})H@~-(=SD-mFngoiDJqN46xpY2f(&<2Rx1AZGoVWH+)6EmA zUkG?=df6<}v)Dr#)Q*}Q9QjXl33=gaJ6~aJbg$AI#h+F#yUV+(=Pw+93xIT(5L@=m zI9xR}ZX+yL&}T!WH$teZQ7D7#Jcr~lf5y#}N4g`pF3f4J zq*7~5Yy!qR+hKPVa%=%CvalIIgP7&y(RAIo&W1VEeh;DyUca zORQdV0j9KmF-=_CQZ@HRf7ueexzX#Hb`Bk#{B@ou5te2dBA}6*x{2^HkiZ$kMJbX` zcU}F7tYFw9=>puY4$5q5UW?V(NDlAu0YRo>WK5p1!PpY#a^1PUzfQ+xt$ZcMVRw*p zMODm@a0)28e_yt~ym*!rG8YpTPVYXbVKL2)wS%*_EFJ5-o1Ti{E zhjy<>h}OCL%sp;#rcsMXmMiBk9cNIGV6{t ziBjmy?x@c4`X)HLL%!5h<=0!iy_X6s zoFuvoN?9s&zbm=a`owx%yPZ0}-Gj88us7X;om(pk_n29eQNRX}Ckd4t#e3A>bgT!4 zB43WH!@FN_Yb<@ylx%K2nE2Se>eT!JSFubtUPGVAT4H~<;_4368JP_JQv&epZF?p`!LSOX4P%U?%bJF=Y zX#8oeLVY?3BVRO*Jr@xv@8tDrq>-5dz9wd{3EEM=*xq_FdZE_tZ4ge&i}ZRXw6kqX z2|rclbA()k(f&^(Ap>nSaUZ0^NLJ1;0nt^m`-oY*edclftSNRmXzb%?FJ+GTh2wm4 zY3JjX%C@SOx@sK-Kk$6AE&$F5oR6~@>Cd^C_ddZ$C8Btpt(Taovk&FJJT`dWrwjcW z_#)r@jdri`LC!al913_zZVLBAWv(k2#wjVlre<&O?7$h~oqKR}u!lPr8c0;(H2f67 zikM%PE?4N!lPP5*a(x~bP; z4ijY0RTuW{`q)oCOmE>Ogowi4fk*pPcORr~8m+cg>6%c<;bXPuY#HWmupQv5oz#@n zG+)9_Zdz}xa@e*kE$BRX9ns20!|qA~6kpad&3H?#J_@u|&9)6bhg`U~SEJG)jmQ8w$5VtW$O%Hm!cpUQk|fZ=Ei zawjJtv+lEXb~W>6Md<`P-|2Bb6PCA>n45O3Mn-AL?Cdqf3b8BO4KywSUvN^1Iwqa2 zZfN>R@-=%z3mUu4bvfIF*QXHx+CS!rP~}2ZHa`3nbzMjq+5Ywu{X9OPEj2zKaU6si zkeGW?>#*>~)`?D^TPBHcnm_&vjNQ=}Ci8eP=IGS(k)q%%qyFi6>@fKa(i(vzqUS2B)9hBgL}AA`eh||$ zFh_2L>m;)F`AFf-7t}=#eif;ADl{0yJmXlIg)Y(D-YO*7V_eX}(#kSd>hODaZ>zJR3bNn!}0;x>@t z5ZsylBBk|CPkemj1+D;x0pDQajrUT<($DPewNxr84?& z-^SBEzsK2;c4vL(q3K~2S#j$<>3H&L-QJ+D11F(6SA8Fet;_i;rzqQ8kY7Y`7 z$chvgHDBMxtYQQ4*_iPSJ2-$Vb^lT=U8wHTzn?E%e|uE2_xiH%F{9qOLs<5eB#O^# z^vu53dK5Hsz#P4N^D#eb%4(>%{2i5$;5lb-=9|wLjMpIJRo`Rii*E1qQtV*7gPus!9ZoW z_`zQDJuf&_kiiHM?i26G{(LnH_mIJv@+ar{@q^r9)498!SrcrC4bUb1&SOubQIQ5~ zy9Q-$|HCb|(Byl<(uEms2q2z<(2wzedBs76dP|sM_kaZWrS`b=3+IV$<7#vMO|8bHCvut}lMOL3db?Rf+TKF;w+3*`C` z>U$}G{fn(uM0k$v16NMr6{0~!ah8+{(L(Y|wxd@auP&MUNCE%~|M@oSXQ4ay=W%>A z8NN{ip3h^9py({Qpaez4*}DZhPS%-N)|}{>pafv++OW4osu-4BQUil66Tv7Z#!s*g zyg@?+6f^$K@x7D$3AT3o#su$*#ryUFSWD|2xWWef*^N#I=?As%@xwmL; zIKf+a_{WZJ#H3?A=rk5drq8!|xN6ggE46TLA|q{mHm3lM3TQ_o@v4F&oMf^y$**gz zFV0OcyJ-Lf zy-%T;i&6b4*HLQ>y|T1F8se}X>G{hT?C%}DZOW?` zc+~=Zoet}-el>Xy8_Pzbo>P;p^p>nP623XF2G#ts0tP}Ive7mj=C(mH<&?fQ9hOU0 zgf-``P-<7zyy%SZ(k(zED2nW<+ol)6@B|*`1`@f&&F@}!qIvqHwZ@)q7@J%@dfKJ% zpyiV1^x-GujAz_#ybpI(B0IZ@Rvputom$-e(bTK|tVdW;En6(stYCR2E|W9%c9p(+ zG-ZeQPELB|MZUg8AZ--088joTes=2&3auOCt_-x0LVAk7yw7jopSj`gi&=wf4dqe~ zZ+Dy}%_m6HLa)t!p4XzIdxY3{wxf#rg}33oC9_@{4qMBy4v|+S6PSY9pPXTxhVgGYoz#*s3+a{`mc%aFVyF7ebpazh*wib`M$X(3vb{ zD%u@iP-Ht>a{1$SK=31`izhw|R+%cBlEunBI~hSXgzT0Bd?sTSXZL$?lxGwVYf>1s zGh?a)4I(3M)~hdS9keY23PJREGEKRY+|>4fV9`w3v)vn%w%af9rS%s1V9@untBkCi_+*BEql}js>V57K) zq$RA;DRNMeT5qak_h&mA=IU9w&Jmg@3h@`jN2W-sWI9;?yv$a9mMUM^{v@vmbF1V@ zu`?ARM$NwJ-8E@V~ zs`+X|7WPTbV)7G4&kwn$-NDfne9LXWzBJ^Q0Q;-;@_j+WyVD(3THBe^XONqdjX&6e zGF2q^IE>wx#EHlDtKpmYc5i-6%VW=;j|KPoj-xGh8PM&Aj7~Xmp4D+ z1@-Hnnfxvz^99snf%W6YCz*7B@XvXMZU61!QSnAPj~z(^5c`{5s$2M9?i{1i%1BxG zxgX|#nQ{(!IxVox#%g>NXS>lsTkUj8kE_pao?c$8sJ{zVd^v}@QH(r!kc5&fhmRS8 zWXk;|F8)C%f}BPQg8yR4HN4IR7m6Y4_2T}f65^+HlR&r_fxw2>CF)pzMC`$Xr2J&8 z)AfrRHTtQK!##fu+z|Ge{m%pZ=dZs9#_y)*|9tuXN|5^)E0v4g(*Z>fAsoU(HL6+D zvb1ya+IOL5#7$|Qj+dbnhM*3&qXFV&3U?=eJ^$|jkXQW(Dro$u1XfZlVPTlwi+}Pzdj2mHwR?3CtGA`H&`ZP7L%7Zi zV@`!w@s!Hft+Pw-CAw*3K83yU1J|@Uc~q`~v!zETUy$z3#f?HH|Bzu>T;ez6E>~q` zJz4at;q?#iCP-1jPIZJTkL#%|7Y#DR7Qf-5+JN}RBVcTF*1wCVqq&}2U8l>}`_B|S z$VTF+@nuPzXqDvjeK{Epb}Iyb?Nh@$GaV9VOWO7__*zBi7_}PdV=h`6>({ndgz6sP z;m6^v$1A}~*E&Ag8=l6Sfwk^p)UZPlI#iB9S z2Yhu$x()hvukes;0HOt1fip~rA-!xO4?TJOaMJ^oX9p_mM9$}00D7oPy}|^#3V{#2 zYt6CpD)0ymzwmaXe>yFX?_c9S!`VbKNf9Y*4_#?F_{vPAlUMGs7-I)|O3KFvmVUuD zK-oL4PanO1!(!lUJIl#0GYg`M?LW(T^*ks}^xJ#7Y4{UWY|_kXBzMc~`BSdOO;D2+ zqDfkPGB<6HQ5!`Rb2%1Sjou7%!}PqommkiXshj^vd^u>+%mSET&AjSme(GpeJEuu{ z_M5^*EWeL%P>fd@0h9hSM*k~RB=7;fe%_wc$-uITE1kRw(*s12kXde}nb8cfZBwNm z{|`9|5>j#hgIn#y(fELCIVU=8?T#n0l-0mbg__BrzVbLdpp|Si?WcJvg|gHv*Tz7c z|KphU_Gt$;_o- z^M(+k3WG?HuZ(v%Ca6>JEF;CqLnd7)9u2R2NnyH0c6cW#pU3*h2Jy$4`8~X(`oB>B zNHTG=T{v!+vjs7R%#!>h*D7gc)Xu5PaVawyq)a!x-XApF;Z2cilkQ|D6O6=-YUMVk z_VNk1JmTYxWz*OOo3n2ogEAVWS`-uwBxyN_hqh}z>q9?#kUsX!p$M_NW_*0N<1pvx zIUfK!p?aM@V#vO}4fTu%AN=sJ+*oQGQKB{Rh?d9!nkH{w)uu4cad@Jp`ndPak)uTt zZK}eQh=0s#X#wKFc}nzF)mGe?(HL66fV7a>f-Gd^oJK)rPp)_w+cAqtV8N7j=CUGmh;grY4pgMN8GtHiJolsn%}O3c1&pT8j~E7?+^4L;Qy>D zRz2jR;*X_E_;BfyGakpw!i5Q6OqlULI(Z@rV-?TPPXEC4(kYqpFTMt*)-&4t6mK62 z$^j{Ed6|9Ma~aLPddaaxem+|o+YE4_`FJuZ!{8pRHqK$T=C~<)Ca>Gu*O=kt3RrYZ zWh0TU;v2M=Fn0hqyy9w=XgcEAR)mlrUbjF8_CPExG`FUxN&&6Fs{SKrxEPJ!~K7I?)Hue2ISqyfoR(SxvgbobEI`>>|5oHAODJue0leU^Wu=6ZZCjX>Ffh>2Z=E zQj3Bgvdu2aQ&C*)=z z%L7YZ>2R5auh3&sK3|%3+j+C|ktwq#WNk5~=MWXdho^lS!T+LA|X5 zex`IPXYivqfNJ>5r}j3$g_%C`U10Q@NLx#XUDW@A3-$o3VaHY*D>)9a{^7@-dMK|# zUY=nbful1~-gx)p*B-(Sj?u8%kPa@u>BIT0gSJ0$7DV`v%b^LLsh=~*zb@_hb!p#2 zT{macnz<*FJKT*h{z)9nw#ElbzTmxQ#MNz9J!qea|Dni8rcSn0T&>?vE3IB)q7Ns& z%-#+TP819FreELJ#hobhBWgxhrEgNxGjeTbwq4CVKtWIiTkR96@m+V>bi<6y>IfZv z{?DNzlI`Ei!4Z#nRG0`EK2cHEe!U+EyPU`_PT8S$P-K#FX9y9m1ftmF z-)w5D&9S+@zM(w&0-SA;&}Vb_5S!T|G}8~mRX2U5EL_FiJ$wSC=pLZbLUqrQl zB9&KqBqx5y0!$50l%_ z1njbKc;=7X#PN7REKf_A3v(4wnc}Xhz1)pn>a{hW-noLdT01`8lb)6(-8LB^!Y*Z^ z=YXZ(4|6?*sQmaYrd?Ha>zOW~;KtC0&QfgCvJq;s)Qp6T{iC?O%oamv8Z<{pYsej6 zFMlX+tn;_dhZAs`(u#KWTT(J#XTH+q(D>_9){U*)AXfTZXmkP6pxd_qn9N#kqwFO2 zEQ^b8qu(;Vvkx7xwARcxdHgFi3KSJJ8V>9QhO*guo`@;zSVB+ksR~I?+8)nu;r2{BJW`rKd$()KRa3Xh1-pzO zl2mz&Bl9esrZ~dze}X~YH)P|GB(Jl&Ld*J#^kUgxrIa1o+~1ZB`-o(XBW6~zhEgiE zWa89;Nsn{#Un-5u%ubEf-m+!y?Ia6lXQPAhDk=6A1b%YMGp6)%B}@hv-%4Cd7iZOv zZZ!hzt>3juKLzvQvrkMuc|_^Qm0VgD6lXqhZ)vv6HjaM`nF!J<^U}e1MW#pH)tbKW zPjkl$A{d%YbgJue48?}Zn7&+6;yfNs7iV~tGD;tKF_d^rZT4#y%rZ*k6g<3XrGN%}NS0po>VO>WIetiSf0|=hKN1QPCfPZ@O*&=TMc6o3W9(8a^;DVC6PL1wxe7 zm%8og$0`g~*l#afPVTx@u-VRFofb}dcgVAx`<01f1;q~MY#uj+$mZfQOJiC;wi;J# zlQqq;2pan?r%l+APYR|Yu&x+&9X^{6pZLX^;f5q(MWE1dUIJ&rPdby5H7`)%AKk$r|APi z(ZZK1#$6$yFC7+J6Ng^VmJvURizv*jY8%3z6foA={#Pgp4&h4YQt{XxYmaXHR%yo@ zL#GgeBl-_{^LMe}zy?6EEs^t0?51xyI>o>N$y6golSQwth3h%ap>LLg?*1gyfTqw` z$&(zXFxuZNa*p`BOhCQJSUW5Jlao&i8|J45YJT=A8Rk>3h)zcT;$24GYfcviCFIPg@L- zUmB~ZUxErWyF2wEZ31Rhl@rFFNEr^J1&t(Blwke?R!@@cIs&r>IeIzyz?<03)Ll#s zB*M<>=M;SD^zztB8~?uFq!%W;R~rhL0c?>mg#e(J4pMYd>U(Rwg3_Y@WA zCziM96C=3COU=#UN}aA!d9GpoiSkrQ2Q%%S;XSJx$9ed-Sj{>pf;w>6Dd~R;s}&{? z4S_JdJX}I9EZVkS`k$X|&OQyoz&pG0uUPa_2LFm~6~8R?g<4m~49I0gY9-Wa8!!oj>>@TJXa%uO}v$0!FyPy%5klV_7> zikIPxb6(M!UkmT1D6#vtf=##7Y+w*7%P1gAbeV}3Yn*cPK`d(l&x&=M6_rH+IaL=j zp)Wn9iH5qX4wFhfh)pjQPJTASr}eZ0PGl<6ATHaPYlZKl#>%WB=6&% z*wx&!6GWvy^Y~6jjdboP&RhvOJ$|2cX{$--i8{aG`M`{S&7>mKYz;_68o(H3e?*Nw zaUF1m%I5$JCsOC%5E`JNc6>2mxYr=O|No=$!t#82));U+PB>YUo0(ahYN+HComDVu zTjK>ZVY(sgSYk6G+RyQrK|o_r@cl1dxOAiKOzfXs$>TXB)7GmtN-h_DbTp7Q#%xE4 z>T&TA(Z044n^r1Xk`$LulCg1VJ%mdA+y-;7ObxZ}>$Y`3qeY^_t(GSc$Z$tckUf-Y ztzyMCp~<32c>YW=9aF1hN?T{@)CJHUTIQ>el_hX*=eXOw9HtZQw{>U3KJy_Qx7@d0 z>c?p!rGE4H&pTDG%D_*k@N2)tFVFOP(oVI=@H~2F#YYK)C6{fUDv6+iD~Nn-bJa0& z-94TVw-HB|x;ONurb!IzFCr5y8zBFa{00=J|J4~$j$5dxNxP17EqtMuPZ+R|T6->L z@@>#u;@!3fi1|It#h>=U{!X8tfKsB%y#%eS;yb&SR9%^L?O`;fQ5e9!hQ;+q|Qy*%nr<(Y zXajom$KKyLIMPin9_TdTw5;JQ^=^s5HI6F4j!f8m;D*U(aWbJqvdzm%<5@HMKxfqx zQw`qvdJMVLWtIFP>T6FcmCkR~5IBUNd1PIbFO9>Xqm~}t>Qc|m2-3NV!xjDX-xT(b zGapq6$?%x_j*cc)<4cX;oC)&zBlGdL$Oc5_kMd8X4L>lU(vs?o0e4L00r zoV>%?&D7q#q_`mj3?@WAykR^EZ$vv zjw!VmCizXQr)+=El?WE-nyzYKZuoQjh9IhDq+KmXvudWNXZu`nl3lP1u#y0SdLoBY zDU9N9Ek&*)!KoGYpl>4Q%v4gequ^0&+`p&k{!=nO&b+WJ7vyE*Vbxmw!uk|3_&6&J z>f1mNoA9BdKWF_~$so)dweMfG=*sFK|0pOvM$EPJoxorWGm=K>jRsjh|Gtvh=+CdO z`(70tXUH=q`>LlxpB$@{)-$0Bm~KXGD+z+h(nyw3gQGtMmir=upD(M(2YCm2k`Sqm z0siuM=)%Fz_i`^o2Q`v>p8Q0DW5j-vlO1Y)BaXf%7~?bz(+IJ~M)8kyE996f=NE?g z(6$n_>X`~yNz3vQPiS@pJ4d-aO!M-aASzf1c`?8MT9FVwP!4nQuG~G2unMb=^PWyk zu*AP;BBO_NWWZ?)g(^aI@(OX7r+#nJdZQnVyuR{pyRB~D{2;W&+O$H`Ca3QFPXha2 zTLtyH^B-K-pGLS>&&_c}>auavv0C#o>y-AhmhqktHwfDY+$VkeMF`hJj_->=rnq_6 z_{p`1wYn`?&9c~PYi3iUlDoO8@_zgVUoR)j`_x(D9KxE)hzLi{R0XqDrDDrZDpO*f zg$oF0(Mrp#1VpkV2#ZyixcuTB+Jbh7#Mf{9=~KISH}s~BG2xw-ZDilKI6IE)_^s)_ zTQ;MPQ<&?C4T#Q_@G-hNruwyXkY#-4Xq>{Un20ID;Xj$<2Zz~fb#Iv1GbgHwv-NvX zv7OYBGN4f-!e_#6J5>>963TU-qp=j6M7mniS63FE$K5;$3(lcZs%kQ>W0}?XwrHec z(ztY(HOV4xcLfNyKDqJg5#j2+4PXueCPG9KRCau-blxmiGKt$GO8_`yH)e_lcC>7KSoVfmZp zv6{6YHt)AxTpop=^Xk%YLOP@;;%tj>5EoEj`1;JD#sQ#ejD1hXA92kd}8!n8k1(@K<)F ztXB7R|9g_?CHj|-{Id@M@a)Itx2;z*n5~=@?2Fvr1dXj<;Abb?pM`Y4d4I=0PfDtN zBEeE+Qy6ax;9BJS5ztvGA}I{`?3sKvf?Nh@=O4YrUMmeEQoom z2moI|jaC%n7Z>i;?!1iRt#kW(+YW@B8P6Iqff&qxJOYE?4KcKOVKV6tZ&APLwE0nA;aC>f+&DOS71j)^Gi;3g#^oO@9M! z9Nfk!Pez@QPATN9o>7VTm4h$G+3mZT&<4NhG7nf*1i1ekK#;1GVp2vX{8;E_#?~`6 z3ny4g3^^`Q{sFDSFy2^OhIA9UIO+7I&C?MD#cB%rHvqW3Tt4WR-iwOxc+{*BBq2Q+ z?9m&)JFX}5fQ;Td@cl=YJi$l{M+4DN@2s|bFkMC)$GkAWu$Sal*9~} z<#-cKg!91(c}PP&&JWRtpU%I zK-Tj(-5(%v7|QRAF14NJ6@y4yFC7dZG>y;GuMy@nS8YAKwu5P&i>DJB(N#El{s;$! zTImLpL)1((n}fq%<(TE>-t|0`fP~s_FXm!3`7pl8W?V}mQ%J;~in_wXqx#>-(U0Db z0n3$^o@LW+I(^f;Tfi1-VO5G7Kwm%y#xH+E!?oIE8W@$_6~7F_NF+?yOtl) zpvi7w1rcCJrkWHx@w>Y2Pd|;{?jE#k{&XGYZEcPoEK#~#;M6Gy7M>kGT;N&nj~2aX zOkmYf$Qi@)`;}#KyCYtuXg%%Y8GssFThCCJ_}Z#K(h+1y;DaW)-A zAa^a3@e`k5+@ByneGvS)(O;-#=WRNi4owdbHmCg^BK`Nz8!I3*H9MQz<8)suu1urq zr`wHDO$R(fH7O5!CelQZ`kt@)U_0?R>nv zz8M=L6_+*8!-gAC?qu`^?6CJeco5aeCxXs{Tyt|GjhfBROX{lh;vD)nf*#&1{m(K0 z28>JFZk`jfOs>g_`<*&eOjK>7M~XOW9)HRhG*IAoV9uo1Ib;%bwH;a2`(u1)9Tw)j zEWml&y9*~B&mN2g9sUR*HC{L+FnIEcAoQEHk5TDuG}@#5TwRbzeaB6UlE3W7F+(kW z)Add`k*)f26ln2QTpY!LNX_+3KXeeKH&rj8Wo$L`mRpdq`C`9o1ouAoyzeIwFiLF6 zu8xon>959l%AF*+d2z5DTCl*~#sL?&Z1(6$yBuMz@II|&<(^1Yu#F5R4KBWF|69ZG z`vMM_0B5?aCcpg?tr)qRhQ_@v`fF!oK?x!TLC2$tYtRhDgf5#O?=K;1{47hANw?qC zSsC30)-}#FMbgc=T=Dwt`A zWK5wBx$Qa(nA?nsEZlJwrZia^clqVu@5lkW97+SNpL!?AYwgGS^y^4uL`0HpR~pzq zOw%MIw?4EHTAXq7+D(IJi}PLE`zu%YTR%wkui8w69e$IN#S-<}a(L{DFeT5XY@Giy z@Qtsmouzb*c2QB0owaR4hi~psDXkejC+Ky-4)o*6mLx#d*0NR;R`+|KTesrwrT8kU?0Kkr;f+q~E# z-`+J%{+8wdL{UBo>5MC`LSO5e3=j^Bvc5|B^bu*kzeB_s!C&qkxM&W_}P`TBI^e8qB33 z)L70UG{Kf{Xl&TH_{|`9h}%1@lkOoEd(Y+cTQ`)Y+p8~Y-6W0p3ySJv*Iof zbsS<1A9(C@*Ea6h$hS=XN_}Q04NsN8rs}Nvxze7ZVU0^jef46J!Al*R)Xv*Z|B}c< zkSqn-bDr^RCK-Gw7FhIDK4qPY;}g?9Yu{Y0zvg_b^*%50 z%&&Y2?dNZJ!7tOnQ)AqEl53DZ0_er?^aS4nqx!%?MT#i?g?mC|< z%jyWKTdel*WUt@ZDSQf;vm^!a-Ej1VnlEgJQB@uNZe6Sp zE$7NC)l?wviAl9aO9NA*W-;+4ySmF7L&3X&aX0>oSJzGG98f8uBwyXOhE8-L4Xh&2 z+UzvA?cdKfs&$MyJEuyca{Zl-?EV|MuW0t* zONxBZ86%|5VLZ&wG&HQwjiSq>wP-oZa{{ut9M=lT2zuMk@4!Aq8L#Pek(}7kQ5>p` z;2b%T&@g99Rb|ORE~wHLf1hNw;FjYevpOA4nPq=8)3rkHlI$nFF1$Rv$5w@JOHm_K zWcQLbhx3=h6FwySjJiEX-Y3C{VvfR9l}XTqoK3za%PJy#AjggMwGMiHe~HmaT@tm^ zSnBhJR_BSr1Xhh6ysp@6|KMRXmEGd7mDT=iWYfr)i)nvCK}Eo-?_y70=~_HX&0?xS zt;^st5X*8l^p^j|rJprn^a0-Iz&AaiSp_0%LlBf_vflu`Le6+HD~nyNp*uRcwfgyU zFim2q;b0z_NZsY6-TjV})~s%ccD|;5*6Y0DmF+U=Zs(H4Y9UsTEc#8ox>k!%q*vdo zjE$fTAkjeYjA_6)U#@BB8MW;Wj`?+Y|5{j$KtO)EZ9=(J23v1G2UDSu=Rw;zG%7k* zj~G#!DOi% z{RX9qygE--cO}^`5+bFFor1Bsw<859@*%R&tnSYl%^{!~**)`H_oa-P#eYW zltBZ+^o;ekyEWCg3mnL-D%X$W#hZy^dp?&Kpp`5&xtOnOrKXQKH%W7s|A9S6 z;9cF`3c+1V#3N~7S7213ZoaK;EKoHv>ftUt*xAoP=wLzAUn)ZfSBFJiO_wM!?Km3m za@UbdOlb1f#8O95pS2@6jnb8Ah+@W%opwA@4)O*42Aq_zFqSC?U^&LIW8jq|q%u_h z?UO!wJGF$Q%sgH{xL>p!iCmgzfGXVIN!syq4Bzj0TBTsJ6X^MLZIr}Rmu)v$mM@6{ zB7>gv^PA6(I`%6AFvpTyD&2T>3Zdxz`sPQBgN8=&D+? zh1o}_$8B_@cUuFp>hf*`T2b{qyX2lhE16>h_)%@=`zAGoYpSon#dBgaOb$VTS3^=?-qQqc?7Z5ZB}+s@MqbaWJ1YV12b zQ{Fok9?oo!Hb-%r!*cdx%RAN#ysjrgDV>@Uuo4m`?fGq1^>WQE6!S_QE(7|$5pLU1 zU~gOo#aBcSpQaL_7>AL-1R3K}X;sqtzER6sP_9xcSvS z$49lqthJb-x&HZ17T?)f8^1}&URPBIXp9_!&Slt)?8F<(OcDE zA{9EiOggru{`aj%%H7p+i3e7#J;@q|S(C7JtjR=>7;47}a0;g!X|As)i0oA9=WW?~ z56X&l6Dq-x&uwJ|Nmra>`_i*m-{ zWAc*5YhcN0sG+2`Pe4uk3tSC7H&tr|SrDfNe{z3Nri;<5ij9nfl(pV8U_uZ z>~l0VtLR34+AI=BzrJ&+K55G#iKIRG{CO>#Uk_s9#6|Y~+ML_6Dq0oLRfsqv{L6&)V`0I}%m?fvl?=d*&>j2%;#kdFX>p;42S z7FArI8N0H%CA~+TH#s{u(Yx`SKIQS}7->#7X5+|zC14!k-c+{gRr@q8wXT^`8s)B% z$9V?^7g;?++)4fWo|E!9v2R|S^(#2U73ZpVrBpq<)4j2hD`?4`k_s{pxd~Hne>BR= zi{Mg`928J)VT!+B_Fu}pFbnCqJ1P>lOlCN+@V$^`iBmJ20amvZZcifsr=0G!76+~mjji*LUe#dE_W$#ZmM;$%% z^bD3R-;cn7L`45V_n8?Xx0_kW-DTDA?Rt%<`D4-q)-^n_qftJ)mzW_lsW(^f`z^QW zs(}i>AqPsiW39&=M)n|&?ES50#~mw{h&s_LQ<7~?_tjTG=qf+a>E3PE@ZQ5)KRKZ2 zp6BWgS7~sHuoim{BU|K%yDe*4j*IRs3%2*e*CDfBDkC$h6)Ql(ZCj@EJILJDdTF-f zLls_sYGjKzWR8yjd*Za8l7HzAlcl)f;I^4mC8#sYJYbBc34MRZOm<{)UOK!^B>ibR zyvIcJ=0YQQer*5pmg+Xyq+a3)AJnnsGwBf3G&>HZfo7G}ZD~lpYVBU3D@Ho*)l0eB zrBw>@E#8d;hM$>iV{esg2Ey0A$LHW))?guYjBbq6t@V95sHbnmiT*rZ2Uz?(+jU%F zd^^XhU+sC2_;S{h6D+TG$GVD8xomX})7OyJVaN@oM4qICo>zc7J1kx^}xXGW1%=vQVnyh@oEB4Si#92%KgvtNK-JU8G$4#qEYp(>DVx|AihpjONv~(A8nF zL3K$m27N9DjsK6`0h^XDpSt<#mgto~hhl?Ef=lg%V~nxyE}FMM;TwV1_;C|-=odFwKL{&Z2?`B}{m1nJbbMSYiVJ35>_pM8tp}D{?zLQW{6v;{P*B`R>%q{(tt!QtFOu2^P zbZ42yU7JXTzUc!yvuX!Uzsos^%)XbRQlMxN6k{UhS&J7fkld2UHdF3~*jK2Vuh_W8 zChQ;FI)lN{g!nFDgn`BUyhIoWeC3*T2r{5 zqZ5kcdXT42xZ7!@+bo|E_NvCQQA^~Rl?viGaHv;zF#gqK@gg&u6Nn0?QENMid(4{1 zzR>@$ur#-`L&9C#!`Z>&6}WZS^;a?tb|`~T;~{6e^)y^ZpD{FAo~3u__35W^Aw35j zN}Q%&&G!Y-P45Vv!jzw zrVb(O0m@-qc+|%m|!(JP76!lAY`uFBFR zG&&j3V2}TVYO3%614=cL3Z4@4KY=j}BuV7F496#xXcl9y?V~vRsou=bD#}7G?;WM- zIa8<8Y&lCc|3U}KQlkbnRBlo27}WZ+RAF4Z&VmCvI48oXi?CsA@-Z?r0weclTSh=vVPU@0-Tee2^!jfXW= z=C~1ZI)j2an@;_1>PMN3STtBBV@5^~-EE#)iHViqAK>CuQ=S6yLXN`iMqXhK=Mfr2 z;Fem`uT$Ywr&sR|B{QPjh4@kwyfgLtkFSjm(PXJ; z{Uu(<$%&^w{a;Cvh)s3=|Wx`>lnIW^>m%@XVppF;k7Hj1=`8CCpU)A=N#e9u%7=20#O^VRij$~uQJzwt|Ph`b&0rp`qPR7O; zj|J_nygomm8D!S+5H=tDDW5Q(RHEO^G4?v=7_F)TrEB0yw8R>B;82$2SLh(1e$pqc zbnyzb=v?Jmo-mm5=EVzOq@Y@y6inE)m}mUGFC~IEZ~V9le*Z#1;E)c_KQsG>rf$I1 zQJ^f%ZS#_NE)ptEEnDDzO$0Y7RWJKtqjTQPF7YDe4GWyhlJqh><*7&#=8y}x<$W7? zn|j=T@Ec{gA`#1eFif0(^x^qNX2mcesQuxw8_!lavDbPG>m*vm$fH;zMUpp>jWL3w zh;Qu)wq*Ms4zxjOSUIzrx_tAL$xzLLv6DW~f=7|71+NEpk~yVH#X9g8`x)L3uq!>` zb2wH5GtwLiY+Xj5ou81uE<=q-K7b=^lC+@AeWHnc4U-y`>?^5O=H+89P?F>#^vytzHG@hoJvGu5n48diH9U=mRDh zbrW$;gTeQIcF{NNq`Vv73F^+cGe*Ymg6u2Mas}TOopqj4J%Mvx^@l^RBr-ndE{J8d zW0DF-i|23z>uXuOQt1craC>e@H67QF;5=S^RaD?s5sCT8%F;aF*>87hKj@M9%j)1@ z07x%Y)*XLMW;caQQDl3hUXM=X^z-hUDhiT{dr1>ku*IO5&6uD>W*dcbR-u;_Dr>hG zG4#&UZ}`yjei&?gwZy5>&QH|$u2K;-w|MJ){Gm9dSoixoP#{5nsAIrzQkB?qT+E!S zPIG5_K_b1EZqSJ>^WnofMT*04y&7)*BdeK{BJYe<^n>G+>r{#5 zNyZtkFc(7OSz#gt#FqjK#*+=FfbH_10e)|eU*sep%37U~n=Nj0OSe^GHD}h_HK0La zV*8;-P3iuvw^}c#`HQN~=n>k*^|z&Ory_$`M*LM@yZjWT|QvSWD1Lmi7dAWwd&28?&54JJ^ zau!BgW+it4coW6EgBo&#YTRQkX5hD5NyDVT)Sj1^8i@t!h;12!iO+#q8x2C7H$}Im zVy+Yz84&F#EE%Z!h9gUqzma(2pqw&m;iJ5KKf`tfKv-sG{3^B|xUlnB^tfr%ECl3M zO`A**=``ibcD#Vp1D~tQ)&?>-C|wJ4g_B{FMnW5 zJ!o{>=?!nSNG3VzGSm0=8`BO{q{fc>)czV7*fOQ@pw*;Ql}NMnmqI_KnfY*SIyH}Z z5$7V~-rAzLN4m=MHdlgX(Tc@5nNFgF9#IiA+Os9b#7LvU(cD-o!I3wL+vvUy?tLwO z?~v(sKfkEM?5$tR!;QJZM{{>|;N-{m>%4NpVy)rrHH=f_yavK*R8i@7KAT#Jr6mI5 z%r9u(pri5K2j6#c|J-e{PdgRC#o)~64NY^@nvD;({WXq>@wuHDV=0}aUbvzIvC6Z7 zMM{{_STB*_=J8VpH|+7Rw6&9lofm+M>K|Qz0!?+(Hy=JkJT@uCJ$h5T>Hd}`*G1`^ z;J=J!^x#r@3O^L0?+`CpTknWv_?0P7@dy0^aS=gao3&2tkcWYSYcWlz)XToHo)o)% z4{?JliDP3smx7ne93{Y}sm5sPD)Uliw!)_*W-ujjgTYw0#c%ReQGJLxW!7s87jqWY zqSould!I|u!z`(|lOyDk*ExV92!%&kUMG~Hja=R4288P2sDUN_ zF9|Us?q#3_im!%kmgczY5F(puO<)w2Y^2Sq{qw@x70qPv{E@w^37U^nr)-892M@%J zAAVWgZOD(EN>{O`w^hkJLSfdp;Gpu{vbvR>n+I-~(a&C@vm4Q{RXf8jDt4LVtl^M2 z-3?C86lm+m{xp`N1NlXVx%(t-Kl|k8Zm>GEi~9>V@?y2;cSoWE**7t{h0|R8%zHHW8?4QJ zEppRDAMv_Ku0OBqVV!bzQ&TL&N{?Fr#sEc|W1EK3-RVbVT+Nuui-0O!%oKj62{w=Z z1?AWM%JrxNmgX{IR3LKNDh=|xdb5|U%JlDU+a|&fkyPSdNs^ImtAcV1oy`;HR*eVj zSU^rn>KOSy7A_owvk8qJp7va`ySsO~IuUQ|+R0p8HqvS}Q~?v&kpV@w56=vCSkk zh?bt7?dL#C0=T9NMW-*;0xXI;O$JD=qd0J)+^O$<>8n`lhDh_vm=pUs{v_?S2@Aq+ zb{WVkSnMcF!1N^6?#eXO8C$C)4SHs+<4|Vk{FJjUeFj>d;!qw=%5-Bf&Wm5tr|B&( zFRuY13c6qH7!id;++tJ_hW-uw}& znL7n$n;@dxvCnfGH;o(=wP9hAH)h-l_qS%@rKrUhd~BY;nAgNcTUw;s7|;-0AIJL^I3xrlI{EL&dfP*prxz8cj_4t6-0F{)6`Uq@-Jtivd4 z6>_-w%|j@b)`FB2Jjr-Nn;|ZdC{(T)zd03^LyL8~nyM;On%C9__RZ2t(5wUUmFLvN z<|ZX}*z}oE({z*5(xM6aFuLVtp)4A7#V(C|f5K_vcbo&hKg$bwc>F+IMTC@6(j9d! zuo0igDDtYVQhz=sDtaY&F3`P}L!(F_THHR_Rywi%K`?hLC>Zu;8Ktic2-`^`~q`wU^_&-!dEf z6F^?|jVRrYtYBYGRCCNilEIW}126XlTMh%&CIR76MmkAL3UjO9yrD*}>IM(sALT?l}x|=-C>fZ2(rtr_T;CGbuKCB~8xI^3=tEnVlL9F~9Y& zX<>|uLv!*313l@v7w7`MWEc5R z&@`o|pi?U z^V1Ivn;$OQxPsw>*`>-MbA*_1BCHu-8bfXU(&53$dDH>@#{9c+2PPttKSx>HzVZ;@ zF|8G1l-^UCYbz(pKnD9^j=G+Vh%Xl{iQ%F##!?fu_uHPgi0g);EmRJHjj8gs66NA~ zDCn-D){7bOC5|zAq?J3_4>4uOpbtJ8>uTA;FQ|T9cefxuWxpu#^pc=pLesGF`l8YC zZXSxgo3{Xt@UkaJ4b%)Dp=la@T+81s*I+0M*W;n9Yra=%a`* ztVp%lmo5%q;&&!6r~AJYpa`pNClIB-^mYxNU(idLP${ck)`jC1h-M)j^v}FO?h&ye zJoyF=DGAxaNL!<9nv$AJGp3~JQ?ch*R7rI%t-CdL0_B)V2v*1Y5J>&8hTC(bonp)qp(;!L-Ze~n-iy#ABS<;zm+$+Yo;&@Qluy~b_Y+vPH1TR?X53i#_L@v52kR;nbsKIQ8e2{#i^R`V z0j5yBC}S^mtoZ3=i$LAWlR50Lsnkr4j{td0__g~!7>#DX6jz-uPaRV#Y}4CFj#5?} zelbsUJj1~pNk|e#*JdMhF`&_;3S_k#&|JOmJ4vX~F>2m*HAz(B8!D738sz+{nG_SV z95rNv{)>g!?T6F#9@K@kXxlzh6tW6#?SfDN-y&}CA}A`W2xje zQt!rrviktvx1Ar5I^-Nu=Wi;g9 z@p#_Tv~Uq&H8gXiF+3c%y|Y~Eq-os8eq6##K=0^-w=m7-wUNvyU_UJ%WLLZIbyI?5 z)ZhP=1!-E=fM+B+&nCHhE=US^pqkD;1M{TI?x)E1jT+o;YTRJfgLEn)0jqi9!?2;tjqcx~$;%^DVQPLj^TE%~vL zTU6@w>Cunq2Dg=(e&Vdvn%Z=VRyw1loH(jYym)C}SM9Rdw*rY2txL%Hd0idk_wnt1 zc~*wLY9@{}{4U{lig(_?ix~&`sDqF+F{!jmFFgHINSFZ@Cd;A)1(4 zxLAj*VB5ffDT(@VgJe`Anb*N<&Z>ROjMT6#HL$U_^ErE+Muz=5MZZt6rEB1#P|?*)@c)Z33hKX9|7utF~j4>-vk4ha0T-`h_^Q^h^`#giJsyKDo% zh*ukzqHkoU47Fp*6`DDaeVcGgLO@?3n|^&dbt&5WvOd>&f4{AB?&fLhPS+RDM1#KywY&U2e4O)ob*n%Fwb@0^O;11@PG zo>S}3$MvRmpNgDIjprmjtNpGhcDs3;_}MAVTdV2k?xk4M=4R(m#&J4J;>JmonOVkG z(W}p5@nIFVx$e^z~H{ld1<$g zQj%F>80E@F$WdeLcNYXs57;^G(>e8>=k&h^k>XK3xgzk@2eBninP)|wcZx1J-CpR3 z9VRI}xJ7lB1vu_UDGie0(jTBcphX#$_?{U!9kPnwiS1*BVdohN2?&(&3Nu-PWpBP& zezcSloWf%xdJcwRfGCYFdbbMV<&edVft-6HkfWNA`%Xu4#<1@Ru;?&zGGpo0M*2Jb zOnJ(%7Poh3oHFzV>r~6s7qG`Hn=j4Xtm@?z-GQ*|l%h7V@LbO3r= zF}y0Tt9=x z+kC+r2d=B#$>gR3{mgv@y<--7dk;kum7&OXZbrr)G~{mh9+2n8I|dv!E+x76J9u~~ z+tkaH)#2gdxVvAcDtn;vD=SY}iufLX_W$r9yG}N#N;M)n9%f`HL2GSt`lyU9&X@Bk z{B8hhR|r)NJB8n)I6r?T$KnIOd6_`&qM+!#zN|W8O6i6J6i<#sTJ>b^#&QWK4iDT* z17FTZe$e;`4KH^77D^Im%E2wSrMf9~eas6@dpsHkP!qTrvlvLBV8wv1DyvfbTsq zck=O%t-qkmM1j^Hl8n@SIvK?kf&kgelhZ@2(mC&OBhN*JAjbQX>0MtF(<;dlB|afBT3*8H^_J_w9WNUa^=D@pOp=dnHH-`REDah#!NMROUE1*~v#ylNU4lr2fh7)ou{yXdD{oQZ9IHc~N$)iy|$JVjlD+9${CjmV3hv7^_cW?IlX3+&U z*NyX|DzoTAn;c5wGyR}B$|rw~3b-D4HD_Q)RuP{J(!_J}d!(CH+5dbkCBP2~4rc3# zYOZoz$Q7<$7X1$v&>yyg{?u{Tve<|8)GH}fJYzvT!AccYQF+Y@79^_l@ED04d?>Ub z0!-4j;2&Q-r5&}1xg~tQ?UY9edzA5gc+5S}(ca@PG_?YlZb2Q=dl+yNUKX$qQZG1b zzJwgzEZuDU*i~J#-`~lmgi(p*Ro(27^MfP;?%(frwQJYD8^NUh>KVjl(ws;tbKO%P zwcw^6lUk*fC+N`VXO;6JzmW$%u5>y`rIr2iax`?#u)-|TiYxbxw#GZ^~5h!nZgFezJ(qpLJZ|?|)yN-#@zFNsRL`|A>2X^>A=-d~5fy4fbE< zMVzg@`Bj8CBG}l{%dyuxkuaTuhDr0fdI$c<_V1CnitR7Q9a_jvqE8iar>4SjxE(Ak zytI8={^k1y@c%ZT{jir9C8y6(XSPh1NF~R5q#{z+2w2Vj4oLd@-CqFOec*v1KPUQ9 zz_q9l+cwc!i6KXOm#h-U)BT*6-zUxEUzq0){5n8Z|NkP?XA=`$U{q;#kNvye42b>z zO>1J>c=3NC)Q<>BmIV1%1UVAzzyFc<8G20_R-N2DpAqf0=l`)wezZwJy-*2gHOWzr zoVNcb)`^1oUpDFQPmt8Zg=PaD4bbf(oeE2gY`If-h4(AyLX08i|HeN3@lhHt1F#G< zT<^Vk5#Q95wJ^1GXvOs)R4P+D-+N}iGwRQetZ_0$x5zR-qmrp73iHaO|Ks3$56ETf zD_uUzvuAzkTB+4%fbEQ>Dnt&1^`<=Jh-U2lJDsUOGqwr+Pw*NSnF33UaqC4CpF-`E zPzKb@!TtZk+FQo8l}2Bqb%6pcMM|+6uEnLm475<3VnG8GcXvr!N@;P56>o445G+`b z0)^lfJh%l2t_j@JnRhyK@BhB<{c`z`A0Ki~lIJ{UpS{;!YwdN$EsH&{iGQmgqt9oe zT(HkMeg>5yUj#unjL-^e%(dbCCr2?Im$(bP-95TF$m%a1r&)b!oqPXYGPl)xz5DjR zSK*zS>+`}Qz8UvEaE|E=~s-R&<@2u=8;m-08Uym1>pxPHE zb6(JGzh`mnIU8|ZW*aW|g=C*3zI`(Hn`nMduz5qCu#tx;8!`Yh?4OcK9^TTw#?H>} zHCKlr0A5`G5qx|GCI-HiH{V#EEMzvyH9>e!9;&CRG|#&5S}DI6xD)iDgNH#36VS!D zJ&;alU9}Pk?b0rWHpx5o%H-YN`xD@QwSQ<)W36~Ctz4<6cyUSyc$W0nh5YprbqTus zq;l_+D9)xl(?~zTe~2qH-;$Lgo;#M|11KaTg%2!(ao!!j8d(-(F+12+&3Mj52{7fy zmpmMBXuHRvfd{Xz(}>c{%La_?g7(!`f)(4=931WrSPQ_ zLGPR^`7bSK)^HUSjo$OG9Gk?q3JvN`N9`KMm+1ly#`wK+GO*|w?O2VRsKQli9*=a$ z=CP|odT6%oNw{!fh2GBB(ac~TMNfesJ-7>+>o&0}5?|l9q@tsPG|kN~{hV-O7OWTJ zyypvWnQsMu2tMDJ6Edxy_VBc}w(Dx*w^ZHo-4pakEXvbEW|`3t2d7Kyvmi8`H`kL3 zLlbPY09(Oa$C|y7%(|PhJ|{`!Up^LK3JMNR#+fvwvem~wo921uVGYi{5F1*Or&ax* zS`ub$6Cj2M9kmBIuvOa&R5va)Jgt`Qunr}>=biv1;4`pOgKcQ#lZbih?MBs|!1 zxNe1B2*)$gv#!v?tdyB3BegnreGhAEZ54+mEdAD+13<0W+n3)F1IQO~oJMQzVyo`7 z0EHngPH+rhf2Ci<#w7z+V3H*06*soObH(FG(CD?7OSVcizyt1HqO@uF^GVF9A$P*a zg!8G{*^X)Kz;AxvrFXhjm!y@mrB7p!lU3HQ8cSccnTdtZ!!RS;1LEt*z3om6vcKh# zd2$sMmPCR5#hH?#iOJ~8LU;EuM#yllu>(z|C-!Qq5cTj>?7esiTOfjUufP5W)hF=`U2I`(z5&|_1_ z9lmYpKdw-lYA;?@^p=ZY?MlKjY~u6f%;UvNn)=eLjPLOdz*z}fON^6-Pwg!31O=h} zRx|Y$R&Qskf)aWf-qUc-`_907%HCd$Q461_7pWT>tv7(ARiyHrY9d|E7Gss z3}n2Q_M$vVp%~Q*T@}vF+E10TwD7Yl;GIwSH(uOL#z8Hr{zRN1J!#y!oN;leY{&&v zkTzijawvXAll4duHdbHxjYxTgE0C}S%xoll_V4{2j6wHqN*Yq8!Pmw5jzsLtFk@@tsqNg~oWzCxqGX^sHNtDToHJ zK7J0S+N2U8JxZ7$W-aY3@Bs3*{2bk$XllHdK~`T6pm@v>6jx2{=H^~r`Y<7ODm;6n zKf!&Q<72Cd5X<`d!x_TXQFi%qvSZ`vsJ>$pD6?!8^ zQ~riMfl41aiT&Bzm3=qbrZ=SEKp|*-paH2AFhM&y-I<}~*)%HW%=`+sztXjS08962 zwqXpPXT3~GuB?Z!%!5D5eTLEedB4XjF36qC;Nmv8N>py*rk~`9YU*M0Ij3t$e$B@W8v`OTRgrXiKAeV=+$Cb zkMg`bIeE`W^~@X30}n96)@GH5r!C111v;SmGi-EOsKdmhbPYYHw{h$%E;5VePK!<_ zc@x5>!8)w#GjSDQwx;_Zm^bDa*376G_MIz3L)P{>ZWI{mRz6nDwB+9&#ho+qPzZBk4&Rf(Q5~k$ zxRXvYZ|?<(BdrpQ$Ussq*h`xgvsdY;?zK>^hdCa(C>I6kXc|0VyyfYlr6ovnThKN9 zI%)N0HP6MjD~gR-thsiCuZ15e#cps5dZdXuZ3#lZ-VJQu2Y_E-e6DJ-eXsA(&5dK5kBUR;PNqLsJb3F2cu(HEj#Y=eS;2XLM26GBT|20{w%(p}&0 zzU9^uNxGwQ(QfBfatrB@h9*#lBm8oVf{DJe_#tf8upuAUZ+6E zDljo3eb>kabY0&nWV@{>FKL#Bd#N%o8aut}m*Y?SgV(8XA=V2qB5CEWQx5M|&$r8n zaN|q@J^v=d(^yki$|}@rj~W|ziO7`0Kxva@fP8iTbUME%|7)Skos*m*I>|@H3iq%w zFb$foAju)0m-yVfNe=}wQ|SR&R=v}@`nYbLJ;1dz;7-2h!fD6xgNEB2Pb?ObAQ)$`=9 z!^^(Aes`a;wA!p|GA7-`TrekFPWU9V7`-nq3wK8wz}K0JZSVnme2JXib5UH*$Ng%o zuSeok$vT%F?s{vDsNw#>0-%r@9uxCW|CBLKv`!Ooa=b$>Ep4PGyP%b_5SlkxQp0Z+ z(>$tO^_|tdY&=>Rb9DY?bRem`4Kg@48}zP^mgm^(@q;`4NVmL?alXk91K+;`e31%< zg(2rChT!SJ86l^#Y{HM*u%TXyc8hA7@bTT%?W%o8LqkF(dgl0eA@ZLx@vji;n3u1G z%2JnK$F7(c(kOkec?mMSZ#~f1FEWh5zIA%_bF`!Vqnme1=Mhon!1C%I;6=|ia_btk zx~IT5lB-YsV_;5wf{YHVMof755#|RWAHn2bl(<9vK5Uywyzju7X*^$j+aR>L_2bUq zTzNRWQK+g>inn*Rf*MpI#?B1ueZfi38Gp2| z8Q;kW$Y^qCC^4GN^!HVtRp0}f^$0f~S2GosONMSlp>GLZz>sLjDKRz%l&7Dhp-(L@ z0XfVxl~k%m{NdG5=KPeB@6~Ptk+%MEIeW#g(GGnlAt=o7V4j~mMi19M*YZT_^ zJ>P94l{P63r;YDG z_YKddr7n`uIFrQXqaSG+*`uXFt+?>(iQwG5H9&hKB>q2%Dt_%fACe|)C3nlv0f$m{ z7Shmu02R|!uXAe)dF?-0YcBqu^7}O}@N1J%jHJO#Up3)fk0*=vrx7hmgC}tq%FUfX zHCL0;wzFz$LEX-yhZSX=*SR#@+X7FXBEPdr!5+m4a&WL8^_=TeDWbHuTNWJgIc2Wh z^~H!BX(9fW2k@Mtl#g{vwHu2E!FE^MS9c9${!GXYH%}^tRXfSkQ{K5AM4;B7&+%>B z)ha~W-97hPH~@)@@gwbHfI=zOmR*xQ$if3YruL{m0RLcG$Be3P*Bp&e)5QF-G!??0 zEz64u3jh!x0rZ3{$9{SHW%=FUu1qjCw+!kbQlesou_AXAFNB2lJbL z(8o(kKXI{|i8M{nFcVNgsCQa4OPwzuS5`X8oAy?E@f#~ruXUP*-tKv+uLoMuJbVl1 z(N9Ma7dI&1_SB*th9}ZI*jfr&io+hI2E6hE8NN`W#4@fGvxj_)P*iwm@pPDOYjZiM zAUrwg2pKn@DP%WQYtdtMbksPr)%_`nf~kD9Px+a;wVms2RKmq`4sr6=$sr-?k?&ashTS4AzR5Euqm5L4XUntY-_V<%RFMOR&6Dfu z2LE9%%p5K*acD37@}oqRtz>)LAXb)xDB5@Ov2W=3qu@6g?#ILQ%j5bytt$1U=T2r0 zv@=JDXg;YVv~hE!qq2Jk3rT$PrSI)pdiA~mX14E3f+B_6*LD_g0B}ir{)Zh|QU0{c zHXhruD=3&uQk!^~ZM!9gCG(u&G=qb3`^vJaToBfxqL-S4epOFXHVvr0;GkC z=UZ9MaU^;%3Q&dzYv$H#lCEN2o_{bWBol>(CUD^-eP#V%(%D`4c^kGiX09kvyB=<~ zY-tDck)~_SCa7kDEv_b%C>iH_5sEp3EmFF4b^`wFj{PDQ2hxVF42pf9JwZ_-@L2I9djy0mOmN{NOHg?S$>X5JN z_}TrfxVNA2SjcpMXv22z{q&GeNm!d|_4ED1L=gUcQ_@6_a4}L*=Y7xP@XlvHV)SCZ zP;2TL#*2>5@pQMSpy&?hD8aF;^BR}dU0goweCM9s^VvB3C@0DpNMWOpT}~@?f^hXU za=xS63Vp=HHCm!lb?ioJFrWIg8rGONxD&$_OhL4ilPzAwg-q*tATc*-d9GeWjVZd_5Z z{d7k1bo96A{+-#L*sz=T2QvSI@ZgIDF@%9wrwzS-L?7WO;6|c0D80eOJ)otfC1dP! zrP=qsaJ9YNaxqSvKqI2;{2{v|xHk33^nS&Gps;73HQ92q)P<+Zt9jU6n`(zl00Kxy z?ne5(RDQ1{=JO#~I&lqT^OI-n0Kvn=^DE&eHjkV>>_#J#N?W3H)5Z=Gd1TWcL-zb} z)bST<>5bh~>He1B=^D2>z5F*E!@`b!!qXq?PK&02YTeG_Fx3Z9TUx@2RA7&D(5;Gb z@bg9+>&rX5+CA-~_sRHSkZ8-U_LH*uSA$ze*3iq>2!O0xPO~*j>eg*)%ev)p8&*Dh z2cK*`fnb@f&~O-07qsLkg-?*T|BUpZ8_bXfy?X#jq?q%g)r*lm3_aZz?cSK$ zcI84J!wY1>1zUi|-1f&fAqqpTxz*s7W+UW&VBiYav)%HedyPE+jri?LZ+Nmhq}y&B z9tV`4(ZcBb#h@*6I3j}$>lZUFpL@EKftfSsKo9j~70@Q})DtXrPv^?Sc}3s@X)!zn zb86csju1G2O2JS}GlkIEZ`2RB)@BHhi_C@LokaT4obi5Vov;Ad-8H~6Dc&4I!rUVbU{YQkWew$qj&(iKhbIn#;) zNMe|iUI^beNcSf^0OiK1yXV(g|9t+_;yvJ(`Yb#*4qe=MupTF@{>woluK|MRkcpQy zdRro3z7!@>Om)`O1EHi}`r#sjQUH=dOH2_t8rM~fr1>fXavl*V6J5~hfN&J<=`4eC6 zxs+*4iA0?QQtqDJ)aN0sD%U;ekb{7<8h)hQPqfse*3!~K{d;w&)biL$>+p9jl~BBD z11gcVw~7{!^2@|6Hy!Yc(e2fJ?sU|$;OW|pT0f1)ls>^?(~`o0ZO>-O{0^kf^Xu!& z9Xi!Ds&rv}V&1zV|JGJIpMe&T!E+avZgwp@=^o$*PzJW;mIII)wEwF1N)&pfx3_B~ zuL55J+(f*AuYMUEIsDr}`s3QK!-W8iKcJaNeaTK=MM^?S%Bxe9rJksp&VpatK`{Cf zK*Uxy|M5NhW`9fY@@)C-AnCIsWT)}Hvt`DM#+(``Crkk*_%kcyeRLYoA#^<&|AV*b z-vzidPvw~By;T&{oHDuRlB}Kk8XT~gIy1w-a`oM-j`5itAydb{?Rnmfv&3|^%$3S! zn*2JvwEz46Z-!Co|JL}wPR$!>a;ys!ASh$Psd8ndqOxp^Y_5dIVn5b#U*`_-3SkT2r~IHZ;pCiHu-JJ`T$2(y0@3s)bljS69p)4-SCqXO1G+* zfDpRSBR1isKQ`SS5C49ST>5tHA8#g9o^e@CalCU*Ehl>?J6lgz?;Bge-MM?|=1n70 z0vkKmbZP;~3|E}O*96A@b$^1QCab2ZOFTFz15Uez0k}Tb0AfD!iFOnN)v}P!E;A`J zk~(RjWic{K{2vxdN<{1HJ?50{AFkvpEz?y^oSp(e>8@yp((M>S^#Vb24JZ=Pi929^ z5onOjooCpB@~3{tR>%RaGI$bwI$d%e`o&Vs!#Z))DnnXz=p+i$N0lyq(T4huEQW<>$j$Z9F=$EjA;oL^qDn*ac(|08S9n^*X z^c?TiZy%M&QOrzV^H;VE_3I7}xsI5);!E$``!L8RY%%12gwiU2MjY<>@{im18oVi6 zY9O;w&iS~6#Wi+V)B9{88@a*K2xiKerVEhb3o-)Lq zEa2OD*6|+C#W~My)yAE)v#{$ynqCJiQdyoqjA!!l@@9i@0Y}))&EkJ=m`gby)Lf&# zc8&E^gOtmqr88)Vg1pHTPdyjn--c`NtSj2zc_ahSDR1%!c%(>9`wY)jz43NhLf}1OS=5>&_7s!QgPUwwzcgs246yg z9aYL?UG5oPlzoirs$K7<*DA~_!+On1>Uiv_N@&olIzuYXd?W9@VjtJ7*gl|r1G|`1 z-4pb8I8wx1l=KCOT2b>Ra`J6eJEryQ|NC`$(*e_|u-)BC6lm!Uvk5K^TeyY+pHZ+Ru=#J5VaFKDZLdQ)kVSchNi zs^Dr+eJKp}LJw`IDApb{>97YapH@~g0VKm?xC2IHnh21P!`LVO)W{s(Wnx+m@iZh{ zHVJx44M^{7O@P24$l*EtwRC$Q)yHz=TmJ_s`&8F}(H$PIgKxY9`Q*<^H ztUQU@r#GEAQkb&1ve0$ca_qdnqlYq1^VTte=VIHpWX`0jCNU%=0aL1&o(}8kBDyIf zS&bUSpgs0qA0gmwS?b=OlDI%i+ArHN06GpZoqX)(mbpZ;m)^g-7}HP<0p);nE3w+_ zZYh!@lU@=3S(&BM|Ie;gRKP~rE&B<*B4O72?G1jepdekliD&o=eB-674^ZFvi(!-T zrQ1$JlMA1cY;CKFhLqYF9SorQEO_fOlI~~!FO4bNjUVvfl5Lx!rd~1N*fLm(FUAmR&!!UD(tlM6 zT+%AGh1K?5-<=5<{Mhdr0Ty3nsCn9T%6vJ|?N>b3&K@eRej*F8k&s+N*7y z;|y=4x=i^lxvXIzRz2-YC+URVfE#Q-2RVcs!|%KucbnlG!>K$SF3RKGmiA2!zZ|x7 zC{}x8(reuA=L)~MN>``aE^w>l7b*O?~eSbig6BMI*ao#Z6Ca!do{zId@p8 z=6PzaiUl?G9-r#ns{zQr94=}kI5id@RBV4J`(FCpLmu!S8fL5mVv#}u%xvK0US;}u z-)keXWEppN5+E3z0cdoOu#rEuSXlD34B3O?`sQK|L+?%F0#bqPQ!D#gfQ#Nf zdR7itwW5zb&SW4YzG;6be00363fGK>?>w{X<{`xW|VP{6h! zpiD6&r4@FVyIwfb@;kU*dL#&xd-&O6cP4K(<*DPHy7=>Xo)rnnZkTA|C-dbGEkDow zTpfd@iv8WubqTLC{h=!KjHRUBG?$c^=!mu;$JJ=R<4pDZu=8%dc%PyE0Y~U z{*&nBC!&FEFAU19VP>-b-@xxf)uxuZ;6I<;cNZhT8pP14?U$%Z&X48mpp0(m z(s%G(NVvcr)c|nv2%}G4UgLWrz*R0A`10sEV^{3?nUs~#%8tvUyERVGojyo_nGL7$3siL zch8!hELMg8awkZ~S3@NCj~T^P)Awr)S`0ZHYqLuo)@mXrE`H*;8(rTeRL@+zGsu1$ zI@#8G)BAC5*2WeL-@#>c-T~0(tNnV!5~ZJaW@_qjsS14Qut+|888fya)Wzqm%bkE8 z88PzR4F6AFpe_XQwXqrDlN_`T*)1Qr!>neIQCQNM1K|EpK)B<^*q9}0+0px&M^!-} z-K%Ke?GEpyZ;b%(=&^rmIxhua9F7DsjsnHXa7i83@R!TdeQn8u!95CyN2-KIxgTYl zi%Yf*>WpFRDB0)>IfEaHo}q9tmyw%DfO>e+k%n z0lL$j?m`|o;(&njk9l>2G71d$Uzzr7kYkQ9@;|7QkVtiGIJohj7(mgDQPbc~1@ow{ zy|tZAk7&u@1n22~C9Lrjse+*n)++Xf&kpe8kr5~DD%HAgtZNP;#zdL`&%w3z`a7v9 zmr7oYmh=+HE)GwT1c5j~*&z`QHxFJ(rj@72hC@?`%o4y3AEYc~U85MieO)~%ov&?# zoYSy&WBO<+y(`JFzRVJn3?qyf`HKlVt~2aOMjlOKP97?P7O=j0k#q$*@J6%o5WqSw z@x?BitjXNqCi)bhVR}x<>55ILB9EscRvipH2+9)S;WDZD5m2sZGrQM;YOMRGGobik zZo{&-lmvu3%Hy92hQIE4wj?Apr)P;QxRqSKKzAvs2MBjDZUIZ4ug;{xKPA0l()Dcg zz0HF>RksDa{;$5P!IsqJ*VM!&$jtSpGo1Mwi|ssKvXO+z<*N^Q=XP}^S?LVF59OlI zjYudqkXZ`Hc^d&NSQBn}lSfvaUdSuaou+~1r~YdO412^OyL&|Hy72N07ffot{c7wg> zNQtu^*mXb29UEx>afeEBY7gIfxG;DLn)7%<^*_Te)Sv&Q6WmVR&+mQgc}Tunb=%!z zLN#?m6`Yok%fUJLruiSp8d9MvC2Zu1^Tm3PA#eu(+2STmQydRDqBE{bQ@i1Cf;KEe zCB7~_pk=GH%=&g4xn%l~Xs2E<1Ei?5&F9_KrOc<)AaE~zJSp1g6< z+5kMOLbL3DEbn9qj8>RieLkmuSiZQpsDdcRq?a*%SCdqr&N)})^29HISRZIxwMS~o zG(X}=@pJHWZgpu81?3O)I{@Y>7aZUo>hx7jQ{Gzpr!6k7)@-P}oE%p?i#XqS{rRnb z1K>B%vU}+IkYk1ac2z9}=)7~m5@<0Y(UrNLDP>fkqOJv~g=&InpQ5QYuSMa^*?IPh zffsJy&wh$G+%dlQ-Apkx8$`RW9`t1K2u?F(Vd>b2J2&lnAviT1=L9-guk5lSU2z^` z!69GkyUa$C8SO!X^HKmwaHEC)+0IiuH~J@Uwj0HoR?*~`$3FessSa@|DxF zs2cTSoqpMa@I^X=Nf$0%H&jvKW$?f52ac3*Hl>UIv+D}me(g?7x_I>wWk-}C9g+GC z^UZZL>o*002udyCfOS_HLwdk)gv8xLMx zv!CL|PJP&Ja+f&fO$HPj(5wwf4GJGnc1pbPJN_bN54f3Wf?YeN2|d&s@j8tAY3+L> zwAE@RZQ;TIPUoB4OG^|YgggoeVjsDDHHWy2`F9rZ$2vg$SlhkEc)CtYcG2PPf^hpf zB6dobeug95;Zw*C86k<&YqYQr*d>xQx(j9gyhKBMu^fR^1)tB@O0mb%J4||B;9+)$ zG`qwe{#%NjsA~V&R_SrmYKgrA7;}-+Vm^z9|8nSnD6H2L~rmW$fhCYCa`PF0iOXK%-(M3 z29fj$(^9jWq7DPmbu!7**X(`31LpO3*9Zj};6c2}c$N%EnlC=dM1T2M*Ovx3$FQeH zc<}Un5j~rICn+3huKDP$nryeW0nzVOa9WD~zah4Jwf_sT6Cgh-}}IpsQZrwU_2W9Q=vv-R?-C%Kh| zsapX=-M-x|$F93s%AB(Ybl&r-^>*BatcGPF2}WmYk-eM#g0U3=KqmLg8VWR+KjFPz z<5}M+7hG4zI`1xPVEQCtm0Z`eBgVuN{$ zdXwe$EQI^zbpp1i9NNE)pf6o|{r;IS?47xa$(!c{@n3Ekn=`3#jCH=&e^z}un%F=6 zz>>s?IVE(qSKW(`|7A<=x;12^)3>sw=Kw?t8-)D?b;Bg3XPys?qj}dx4JO775tGyRM0QAHl9zX!V-tN-s2Pi4+sLUFQr zZ#_eR_QsAxv0LT`aG{g$)%TBTZ(nJWo_9rX+1tCB!k^L+MYwqmg$FT}CI5p37_QZ; z_!{lm^>jZZ4F(o@wcTQfk&$4ibwKW_Vm1LX)YQ`A`cJy>h3lJ|hOwt%qJJb1aiRet zyb&Q1@Fa&7>6Z`3+K*!4DrqlzfA6MC#&3yve!*ciS1PKj2mdvHyYvT9)_>9|-~eL= zfOGusfxv%z6Z7-|hf})5fuhwbOG3pe(e-#BNCOM;Pq62;HRID2p&PXl`0HF$54-bk zyRPrZ(f*?uXj*y{r@%!1MICDV>(r(FoHJ^0lf=a4CF4q;fAsWC0zH0FEJzGYJzv&N z=&y4VlPv!S!~>3e=S|Yu2LxMA8!^MtoF34dxqc`?B{;QtqcFd?u(+6-XZ&c{RwXyE z2TDKbSx^aBn$FEZ18>f}b;_>UY1hvxAHbdXH%xa#GMa#hD)rzC6SO}R0arK&8?g?m z&*ms?Dhevy8#jT~Yyb64fxk!Qw}7e1BO{hKuRs@<=r^m*1B9<$de;qD0;?l9Dehda zpOM!->kqytaOfO#67k#r`S^zG{HIi5VNU(W;K7+upRFl2q2R50EI5&M-^F+8mLTj| z_4Fb4PP&XtJO|q_Cp$Y}uq6INF^O%+Km@uxS`302AmU4EG5B`m!QpRK+-s8m2Zs40 zpF56SR~ONk_c~XYRm%opKPD`)YJ)I#7rV-7Sm#g}ufWuaBKzBA{;JNkQ6zQ-kVWKg z&mT3~V{xXJ;1=i=WRYOfm4J(wi&NG6#Twe$e|}-6>`f6B1a3+0!j{udwvzjIDgU-r z^BsFKyXPGU{pskR(yMeB-LMpTv3)UKN7hso(i*wIqT5-rMGMZVDh%? zR?8yMK&dY^ZTN?mS6|%>Fb}}r-@LgGts3?q%`VaPOIVMdQm@fAdm+1zgQ%CjY&JQ6 z`%5eTVbZy=fSMKuY65y{_?fAfu3F)+PXqXlFs$(uv$McbII^zq(16|PfN=eFUEf*W z5|k^69iHVVVJMD`q|ZNh>XAQ^0-(mGrmg1$ zBjrRs32yGk{I2tNj|Ts`fsBuz4AVh}CEt#l=Sv9iK5*Oe-1G<@Y*jx`5n<~B!3eYd zV%k>%Ih+S65_hhBk|Vcy8};Ky`>R*7C~2_6;dYX84E$;!JD4*T8)CPm)M}#yXbxwQjx*C=(wIw^7=C>$6_5NV)_3Bp-ABXPxiz|V zWSqt3VVFgnLR<=Ytf=G@Q@d||Zu{T*v#!2BLA0*jcWP3kJNJ{>xwlep)Xq8|CLjddXad)H38NzPyN73u<}+)1lLgN`)NKYgnL(aS#(Jq zX|SpB*}Jr>Hdvd2!a|@syf9Dx;ll?k7W;QUK;*u3Pc$oE7X<%og+;mTReQ~G6ZfQF ztz_S3TG!lNgy_L8GmaHuVdKLJW$wR8q7}Exe2ItGLMg{d1#2bgWDMKB5+A>uA+xXZ z@Y2W$;)mV$I2!fZOy6KplRoqXa_ z>W}aTI%o#m#0lWqT`ismm+1c5k2qnVle9SY?xtgkfF#$mvG4GS4J~&rMh6bR^UbFg z#2Vs<@uqEEZ+4|B1-XLBv^=S8JXp@W!pUu9U!B~ZP02hspsm}+_kaA@^wTOFHZ$C> zrf=Zo)%vNnoP2<6*P4a9AxmbdIZ{eMSkN<%4sPZATB%4~dzpHl>~QYUYe+2r0u@ z-C;v44L|=f*FG^(2?y8s`NTz%_yP6pFX6P1xxuD9R{uZVwOR-Z3y&luENzY(`iUr( zL~d*E(laTiG6*vd@rb-$aV)KC|a&)kns#~6ZzG8G&*u%hB z)6Lc1UJJYhRYg}nP(33Je*D6(B?x8q*m5O-3NC88_2KidKxJfYRh9?@19CyRRV$=z zFkA0WotS*-6bki5>pT7k>r_hP<9fn0BA1!Z!_hOb?R?V7EqkGDTX~;Hk19Ip;oW=V znt*5Wyw_-M`ez1nGqclU5eNw@8yh*pgDkkrL&yMM0}|=0yp?8{DsFptvT-XUgh9|U z&0z0c>8--fXPz1}pgLl*El{W*wn^GY=1}Wx!<+6 zA6b2A_aEM8Av1-l3!>55W|oXIHGeYLWiY;&;w#ykK)hD}s{R0ZoUxp^f|#ISm;wPI zY$YLT#ZL3o%A3~;??=ndQLwj1=70Jom;+yA3j^i*FETxGZ}0vbTR~+?C@W5O@!U)) z$L}8BzCR)pycxnbH_mWinI6wn5Rp0Dja zciro$?kw#1a=#dL4@q4ZOB0 z2F6jYjopKN(=$jQh-J=Bt<{pvUiF}cFw&*)I)5dFIs%*qeC7bFW4mgUVAao(1G3h2wQ@B4d6z?>KmHOk?+ZN) zIcVbl0;8~A zeu9Wed6@jmqa2mge2Q{-WGFvPJ+Q0c#?fJR)3$mK!%}5>Bva@I$M&dE{R5SeZUF%< zu5IQK9538vQ6M9au?ZJBgss?%xT4!(pZPupv0<63*YS>1h^>5#@Mwy{*H5z>-$Y$i zUcb&$KO8wbylW$CY35ebJ61GmLSds~P-T#_yd~&j+VxZyoHHtUKAAJ2Hvj@2b+bS7 zNITwHNvuubChSK^p*aw%)r?6T=`AwPk&kUGUCDQdtLyi1A&0O>KkfLu3tX?fLR0EA z)+K@r6Zp()u}oicm11sAR$UO#2bzuV-=i43UW4ll1iRch1tcGPcMX%J9jC6QH;Y@G z?^?vKHhdea=^o8jq73kXWM+d?>ekn7xTr$43rR>wH1ah`gJu5C5g5FE^JpGs>F@0i zJ_;;B$q7C@kf~Nl6qQ_W%&ofZ_2`kBxUWhIC!M&umhQ~dq#8f>46r@*c@h`oY_B$Sp?qSin{L#Y1zI;EO(8AEq5(T|L%$C0|9&y`(enQ+_}I5gZwHTa9MM7F)#F zF%Ml?DXd^laygJ*SXdH|Yu0gcD=NgL;wz@(#x*GywWz6%tt$8ii50*0;WE{aoFfFn zW%p*u0t&)Z$Kdt#8z8W^{C=8&M7FVwT@eotzqYo`LGAXUX5!7Cn#P^gIK#6anaYBK zsR>^l#}Q0>F8UAGGY9$2wjag7+c32&sYVyw4x3|^tYZEZR?4$oa5#wxbnZ(pgF9bh zR5D@qbm+tTnJwlZB?0rZqzvg3a+fx<2v!ajSWSjZ-kO5IQW_UZ^08}l-u@fD+WQg; z%J!k^q~@DA#M1XPdiC)g)6+{UNV#3h;ITnN#@>j|gp!}%kZNq`cq%jn_1Vqqom^}n zaTELxU^h&PUW=ox7n72D!t_d{&Pxob#-yQ?D39Xe^o*aP&`l30s-Vk)XZG2Ih8m)2 zmfWaXJG_ObVnv+G)gAKkOV~K0&iJ1Rfx*1y;e**VeL!3#85uEWiC{DL_By+9Lo|Vl z?YUsudLHnM_;~h2&j@LbxriqBMZsZDRMkOv;r>S&hf!l9f&5oBLIY?=JGv3j+5&bl zW?AMW>$ObyB$?D-yRn}hMk=VqzSHGM<(Xhr%b9l1v(J4Y&AWle=r*G@cir1qz2b7c z&Ge$aJ*Q}I;&}pI;Lpd6yZi!)PdMV_A~hMG4*w8+Sv;UrhgZn*3%{@t`P~wFjpSve`TBK9f2XzUOJQwxUQfR;zJ|{j;-FB&cCqEA6k2v z{w;|XRUXNBYSs|OGL5w~aJOF%(=F$nYsoew)nc#iYlldJfB~QJT9T5~)2_&=7QTuH z{E&gUKB>*A#(A^Dl?!~GdIYU-z>G5HZZCH!@seWQr|6AV2OA@r$xoK)(a;>HLxo|( z-9SdvqnEPD1DUdQ?SCqNtCN}p3uQlOj1 zzHVnUr?*B|!uhs|%+XG1_3baAAaZ3yt_Kn>=80B8%RqN-yE@j6IN;C*R~Z~=yr0#O zvViCsJvZwpS?cKTnVrUg*uLb{_u8EvNflYZ)uqhaC^J{O6M|QZunuGUEqhy`4+`1Q z5(mDzHM@&~`3_j-nr?i&z>AJANI=!iB4STLkMZ#Dog} zq@!k_Uzkcumf|V>CPDCX>e^r3iFtBA=1SblAqUU;Lu4yXPZv zWa0FgZ{ov;W@hehC#mM*atua=gw}GX(_CMftB;pub~)wqT?(c5oiH=xGl~0>W3`!@ zKOD>884$IeG(LcKDj@SzbE{AX5DeSz(>4;dYpy42^{e-jryT&eXqg{lV|#W?xQ!4r zi|>Ct5bJ^5i&wv;D!=K{+;a6S?xlvyn4M8$xdL0H18y7LOwE(N{#q}^J&#WqL?xhS zzgw|Zaw@sO-1dd13b?U7cx=Rkg_C5+ogV&# zmo<;cz~_8DlnJvJg#7>mXHDXh>nUE!M&ZRQzlQ`|pGoU{A`Kg3GQXl46mu%$?FhKhyhhMN?W z`8ST;1svmk{k@nSkq~q=h+j5QtkiQyca=e)aEl{1v4i>07&B;NZw16LXoXm>$OGX$ zve~-Y*;0v)B+L>vHWvKTr-`g(48+cd0CHxvH$^s8^;I zkGu+c?7UNcH}NZTs}NdU8!peLGhw+eASlRoy>2>3`^<`<(k7%VSlJ?)QSi;Hb61%M z-#R$RdE-Od+kjQ5Z(CFp?Mn-?_jC774@yRQ+T)%3apmPpw1tz>fXwwHsUjQPPA_Sa)E#|Z znV7;7Aqy$MZa+$;r}x_*NcuKb<mhSwLvHnC_);$P^j^m{05nN837@|5LZJ*tjVL3lM~{D>`Ox(n zA#WTT11fkitnXYuJbq!orn&4Z#s?R^^~E}QL3?FI_^4gK&X#IQtRgkEp)xtg%vx2r zIH&4E>(*Tx=z)Zw#agG~B#_!t_HM8^FZDsD)ieyFUCZ%5b~0pc+HLkNRGLMJo|L0Z zJInxgo332!If4Gh)3_w;dTgUcz@N>046cwoXu*Q#%XQQQ71=FY@x0TjWD0tpGlVp0 z`1!D;dd?JFpxW&-3m0s<X3L7vzgD8d<+`Xs`O>=eGd-5Dsf&T&``mg3cNS=XY{fBu z$YN~MNW98C=8P_QhMAXdeg2F=Q(J#7BtQ1rE2i3WmUhaW+KP(EUiO6sQmBP%ZY0!@ z#Oz7|#joX8fHn6ToV{l3kDpAeTW4m)D3U>QI)~@6SbQ!&D{D;6Xn$w}Q| zqb=IgVk?K^8~?1Mxg+MfJ%3i(eam3b?T|2aqMlZ+;oA<3*K1ect^PWC18Y9mQ?d80 zqaNlSNCEqRouED3vGyNWYU0Hp4n8i!nRXsTUVfFw5c0yLh?QCgW6SClB*IPgnbW8NbaS z{%jvBeM8e5Ii2pi%;6e2WbZI-AYgA1)}1W#I@+1EY&@3KzI8)v-s-}sUWCJT@&Zf| zxUkwz0+hkeR1+Db9HgzJKahXzq_Es*+3V@)*?lwM`!IYNuxCa1N)D&u>thPF3Htjp zEt6a7897~3Q?MCGT~*fDL4O<)A1<4Vb7=0JrV^Z}x+lk#6HgjmnVQyd&^>zCcY4!Z zIB`-=ev_|W)7Iw{G&5#=hm=7oAb9mkX zRGW7=O5lzF_OZM<&UWKZSNqLiRSBxN__P=H7G^dDQ2#0Gi>N3j%t_jd(%|L78?gG_ zuk{G@i-Tc|pPvAWYT7UNz3Zos1u8c6d9ocY{?<{x+X8l~F2*dHk)u#EEg(eC(2-mu zhCvL;PF87g=`bz*$J?qk|5Uk%=I_>abSm_o@3wxDMYs>}6@xq(j4EzY8#p-|7)*Zj z^9Uw{qd~gCRUG=t&S!T*H?MvqCD)K?E#snHQU=E?bf~7(?5i(Pc61w!b*K%=-KV5n zFi{-vmDDT7_Zv|?v@MYGJ%??P&hK~bKls2f z_r7EAz4ltyb*;5&)fVHKDF;qZJ~gmTo3y=qi9rpWpvPdG`bOFl`v@aQ)wzA45Goo< zI9lrl#Z@mX62B`V^07hDlUZZZuz`V$%-}LjZV48hAVEAPrjSLAdDMtm%V+HB_5`|F zolv?l<(*rYd%ErG;(!0mn?%8~noyi)sF0o7Kdur@jjJ@Q8rk99w``rUo{n6sWf8s9 zogbIh{BOiqGqWh3N+rGw##-p8F~Zwh+&b$W z5PaDqaP=lLJwYGlW`jq7?0o#z#7i(ldT62v2;{_ZA3uJQI%pd3tuwS~<`r*cJujtO zOOt?$XWryc%(^9si}E%aKiNoLo>6(hYzA226~z1xYMb4ytgl@Zezl5-Z-`I zOCv7{kB^@e`t`m)4z|md$;sKj^lNSzDi`haHTl*Zicai#tWs!$M9Ag7T(xvX+nqdS z4RveuYZtFdOPeij^L&o%QHWvxQ_t;LyXqmPsESRWR)Cy6KWp{|Nm2M`W?52y0o2x&8Z2{rkn~U{q4D{*u z<$roBfyX5kY{?wQ`;g5b&A`Jw5pz;SN#zeUHhl|-#HPlgTsn7AF$e^p+!Egi7BZy> z#P@iHWWGMj^@}GLMk5$ZG5uY;8XnHQ;s1VfVo0hQqBxol6xc z3w9y{3Z$^ga{@S(G1^kHb-1G@u{&}CJue`yyh!0~Rt6T)sw?u&=W#*@2Z$tJ(=4V@ zp&EeG1|l;%VtkUx>Efa~1!CLf3$!GtC`ajiU8%CAQQBbjf^MhMP9OUXzCc(~#XBlO z?n;^8Yb_GSd!Ux@5JF9bL7MH@tY_H1sc`nQdO!*hV?%0PXH2$ECEWR3Rmx6JNJ%N^ z{5ubGzt?FO?vP@<&IUEskE%DG%bL!!s{1*pCr?&01zg{6oozicB4TD^M{aATkV%MO za=E;8vN*#WyX%*NpD4SwRrCy1Pp|xNxXGNo3^#-*=1WRm=deg&zwlJ;6_AX^syM`H zV&cd-?nbit{sPfSe3>hmA<`2^@(jyCcVcw3|0xMc%JlGX^TS95lkWcIeVg+s3}GEu z{fYBc_;gLt;r#lfnvU}7;}_PF#;uKe(N8qjI%@X0dq=tYDL9gpi&FLu62bs*y~v2U zfqUyTVV+_Gq$XrKe9y(pWNCFsBlw_QAzP+4pYHAi^zedytmovEjz^_l*>TxhbGwGX zTK?1tfsIquGs~3&U72oMGyFoG!t2yZ3s~zu7=cIW=tCTxr%C*$!JV5^^=_@fT+CVA zHr+l9<<{#ZFx?a)&*#sx?MuSTJ>{4??ULBgXO{m-EnI0jLwX5slGllhIx<5PClc~!(E@odI#b;)Q zJ>2{@dev7Qg$G%v!hB5ZIU*!5a5)(OAfk)GEaO)Nj zpR7Q-gNS$vi?h@VYnCIoGv@cU&SPr65>AvJ?Xi_PH3XV9tG*=#WyI%M=o}ywxU^uz3D7xM}9tbOQgD+IzE< zYb@aRPz3_7RAYspjYCoP+VeFO*7#)PUYb`Hz&_=$@3a%*Jhw?Ap{CB6s)a}* zEro9s)w<5`O+`Kr3>M4MvMa0kbnAscfVS%u2KUe}n4++xt7r0R;w2IOy5~_r=9Js_ z1H3e2og*ieTDMbj0qv=S!Bsq9Hx!nF<$bxnDWc=eFy>UT6h6^OZg?l$_RQi6bJF~( z8Y4@y`VIC|3Q2ixd};vUDo)W(;mv_Ra{e5B-W#qH0gC^g=gN;=mQF>Mqz8wO(yCu z*}8f+V7A#K=djqGum;qP_Nr|9UYiV{)Hq;m&3%~7+J2q=0*?C}I#X}W(t7yLMspDT ziY(Pp>{*27cdxD3qB`1B!L{;iLT4y0DRcPb;cn2Lb*&KbLuRnH?b?R^^uARmJT_J- zu`5(kB6cbN%q$veGV}|RipMe`>X@iiSV^I~;|apNBej?gDT3BHcw9~vosI}q3$%3& z77$!qpao*MOav+w+Y8#OW~-4IhlV&tr-0Vp3GMxGG$jt5)yKT8UT+wg;84;6fAPCd zz3;;tp+*aE?MvSStg?yA+*9f3E_a|S`9h!Kht884-7;v)TvmSs2Ha)QbPvQ9fT-MU43BwM1lk|EcmL2?+W|N>lPB0V9IU9(q?3ry zp=)JhmlhD{6qb;ab7j2?beUb$Qlpl5qp2_#Z`!ZgkaTSxUR){>Wjmg^dKqDfPRsRu? zf%E$+Pi+ovzN+lD;Is;y;sI%;wz!H7#89~h)?z`04%VMgk0tNpPg5paef_z&Yk?X1 z-?Si{3*FHM=|UG#+6fd8tEu9=HkA#5c$J~-CCs?F#(UjluT*iK=3zYOT{(!4UtP@0 z!;W+L>{)sAVa2>G&*7qQgWO`W6WiNm8v_kZ;@vI^Dyy=xA`VtOw1ciDyrYehjGdmA zzrh;9rl^95j{2IA(EPfW;I@#y!MRYAJL_mb-skH6{_cSq5M_uq1IIgCNlOnSVd3uf zO$wbT`iq&SfL_Kp?V6JTl1`|-gh)mPB05@eaglqS$Y5o-cy4jZK7saU*Br1gl)8F2 zwyKg86rRuTERM3Aqj0{5iaiREc_1U6OGTg4(FwrQ-@k9CT&x4-1jq+q0+%zzEafCw zCV|gz@vvgP<{-}46qN>5qSz3qUG9D!JUpA1i$~0DQnp1vdEpdp&zh})slx_9MuDhZ zGIEe`=wX>az8`qLsuD(H1Q|J>Bk?M_qB1ktl|}vh`Jt4gEZ75x&W-X+AgE#8?z`NN z=Wfw^vN7aic7tQw)W|A zx&Y47=jP^lKpXbS4fcoQ6l0QnD=cy~C6n01LMULjU(~}(j)YVzr`|s`C4iGsFIzN} z@{=EQemCU}(C4TxPRzd8US2BGB8RGA2&`Ej1ZaXH{a<@oLE6pBfU>f$;6rf>Qb;d@ zC3%pkw{gXH4L0K&ec}&ur;)>R`&6A9Uj;k|w*zqo^xUvWpdg2is_@`AMI)$P@x5+J zV90$N4ly=i|0JGIhk&Aa6>=YLE=WkYwpVTo0y^%+YMghv#XmgX z8MU|y`50_p)D9zB4ZZDkIxxpw(QcHG(9^r32hil=shODza|agpY7)ll`T4W6-~}A$ zVVeiU0Ez`#+(!>>TH8HnU1PX^7nu!rEd=cV5P<>5d&~D;FhFItABoWCv(tZfpI_KY zE2QQVgjztLf&(V(uIVEWEUIVd6f8%sTwIjRRh`xq7;9i6hQb((lXndy>_SZB^@0snYECPzT1+a=cvj#YUcb@%sw5xIqABDOLrRcor%|J7k%>ep3uD|dEw z>^KQMJw1OtN)s9%8&igIeQT-J?+Z__%YqR=wbyLKFHI;a$4d@)7ah&A?WD= z0zq#6i^TmLPT2P}(r3SpzeH9Ep{d{$kV}s+k6@=(q{3Mw&`{4$JBp!~Q2;9?t+`k+ zsO@Q&|L4h7^76h#m9C}o{LUGtO>C5I*7de_{qt0E;-HDqNKp(G6r@@vmvjGzPuj7; zD;oviW-hvydgD?1TqWCmn-y#LmCDx*o(6HTiM}ceQ*~C$TiR%P>8|yO!n-c+E4PQ_ zte;)GLQ54rIk!-q0tki4??$M28j>9U5KHxda%c{^x0a ze%A6nJ7#NkX$S`a{$pydJj5!^($xB-@j#uEQtP9kiJInyy9up zeq71-lW9t}R`H`i{Wo)q!8$Kc#xQK6P`dGgJZo zbLI}5Hd_%scZjeP!?`^i&pBso^Cxx!L<;!4c1ubti!V=+BC9g<%eM#kET~t-jUY(% zKUx%GIvX3t`6wkqs|1?hat=>lMp~htjWXzL)#w8PoqsyYJC*=BHA@=oc__MPEXB!| zny!6}dtU0I69;Ph%p_A=2&ppto|*w=mPAd4LCq1v4bqw%-t$8^V`}&ASO9uj?G&7=i+2S?HX*=J!WRY%`{H z+hkd2gqcISMPFPzOS}<|kzwdVf6g(Xpw`;#6_nfJO zbnKa8Vm`aFuzz!lC|O4)eY__~%iv(<+(W!`d>6B!fQU7-`6p|E2n`C*+tmUZh?R#% zUXmnyDgn+Vz4~Uk7CDEAlY6K4p#5qt%zaTbI`Ue*y_S-pc$qZ~K_;4rC0R(T>V~V1 z-1FjFo`Q{dN!T3aiTI1$+54&(J+`n$n^&KV4IssJx%58;hNp2}oi^-E{9}BPw(S8% zBTsQQdWv?FzRyvO_vL2tS}Wh4Ys`;0P3M+ZW$H#{qXKFvF0HNVNvDmORB2Asu=GHS zyNt{~$K_~BxiZ^yrjC6^^yR53v$`LcVhmGcNUNlk7%L2*tX)p8vc?g|o*cAHMfrCw zYI>DUf1A*YT=3T<10iFubgnOLB~+V{k8+4%{@mAhK;9Y zPFSA}RSUGsD#SS9Pw=UnD^h%99+eD&E%##d3t>5B79Kh6>_Xczw1h6X9P%nl89R7Gcu9MsT&j-)tcS*@3|r;tPm`U__$qGytzk)O*nR zG9k+Tt!*%;gyHyE#St;k<`>N-wlN({kJ$z2wQcRC(VkG)Yc(<>E>{FAxfBqd;c#0x z%VaAs)D3ejX?i4?T}^&wDG!rDCFE=6GG1)Bz$#;-xD`yc=3IxE5W*)(Vt#8LRK-O` z%1cK2h7%eMjuH(5qv$t2HGED*y%qc+)P2LW$6??$5#u{uH3R4 zc%T#OKi&!8m&66+Vi-$r11!<6#~(;&H2h#Y>s+_aO@@dBg?MEv&kz zO#xvs5;$kiaiQmD=Z!)5R#C$Nhv&F)h%Ty~lTMzsG$X(A-|tI3;%BUN@C`23OJ`2Z zU2^DgH)0<%&>tPuDWw&j)P!j=?X|>abZB@at^B5y#`TNU+}^`CP2KiQXBrR*mvjN) z>Q0NDnh=m~fDIpwdY4BqE+Q}VN;|RTW-{WU0wl{IhZ-Szp!kBBvYJ*;O_<4`(2~l+ z^D-8R@|5CQ`J$t})tR6V4YK|GM~14pez>&gGrXPd+;C)qH!Tm0T}rj$S9%_p0SoO?ki9*Eo0>W;~}DBt;QP=TfnL9muGW zIFV3-t_UA=?wg{a+^wt@Apt z^+ssu8{`sx(;ULG+xNlY*O78Wj_Ph9wTnjEi>-x0oIWOF3=y z#I0%z@Hpr#X&0oC+|0{qe^(Bhg~w-WtNE?QL6meH>(qrgMnGv6p_wE)hOv!q&lpH6 zea%YaR&xM(hpbd~ANkuXO!jD?_D(}j!; zCK4kVzEmrlPMz}zNJjyT$Yo03s(}ww?sVq&EXq{M79q~eJz`-s9ZFZNtzK0wCgaD5 zK!twe_BY--y+pC@Q%X8U`42FHpEU^zYnf?}e41aDv&V!b*rwJ{9h{Z8)KzSFr4_Mn zT$#2ct{FWCe1Ie6OUc~QF)LUWg|ALqWoge}@3f{mJIgeQYHyb$zbMCQrLf_2<6dX| zRYcSCUdqscONZ9M4T4c?oF7%9tp<%C?!*(nVHf*0maU8OwDOESp|TK!28L(=9{!^wk6lowM_MMn;-6<#t!1_Z<#Pr#9XrbHCLHnUhozG8&;z zZs}v7w@@w7eyO9lFV$1LNGfuqd`lHE2RfMkq_UA9SsL9H| zy{O2je*G<}o}ZM7nXQ*$`R&fk=4=-_vd!-)jw_x?9+KvT{lA6JY17k>XU;DQR8a|w zh&=}wYy46ARnnwx!#zi?H!( zZiW&reiH@Uk%?XH+H(NHqbE&cOMhh=F*ZIizc%4WNZaOrr!CivZYL->d?W16dx~oh znCv|cQ=Xx%Ni}u#{#SpD0CJ!VO<+@MU+_3aGw?|OgJ)n=P~TncMJ>VJy^f7m+D zHup8pKlAl^ZD^Pg7A68lOuCLu)O)SR{%6bod#(*;q%XZz#Nb2;V3j$vxu}si?qh7k za;P!hy?ePBL8(Noq-a=rZCH_(Im&)~%s70~NiTu*gVfZLad2p;-6t$8ESUY*i~N1O zzUozQ@KdiLQ!6?$-7+D{=S@^Xr1qP#qI`3sgV8lKbo+Iu*KF%^x+vn)?c`tJdb##(EeuKaA=n}P>Na1iZM9-z^Wd1|BLj2lorem|M zI_AAlEQ4fM&{dw($Zg^THcEQNca$g=Q$3-d9zOm-YI^`jMSWoSt6J8dqgQ5<*gODv zWstX)_2;*>UAYjEi{1hS){)G7T6At~=kh75a~99;NRvbQ z$DLR$Ch-DgwSq&L!6i`TJKb=4QrV>?@TZUaBs}!z9Tu&co`_dTlcGoyGz>Hfk1#2u z|7vp%SP=g&PU`xKW(G_uCa)t4Ieo<1hCr5;jqYt+H0E-5Je$pkrLx+`&%vI@GdfzH zCu|N&bn%QIysyI^q>(oVa3qML*zk~LoYhl)NW7ouE2vBq`&x|at~bAVwqU# zXpNLwS@hNM8Br)`oaZ8PV>P3ADOfaPFrVHLHS$a5RDS7Q$jZ)sevX5o<#2#D*D4hp z8XC=^Hqzg}3m}UBu!cZ4?0-=?vJOVyJF3~q-;ujLp;67Nlx`P_2asl#GNXVxXMI?C zR-BbQXr#{CN?Oo!%r9Oc8`97hxn~R`67c+@U8J%(YRNwI_Qvia)y~%Pv0Zq0z|EtV zHeL#O+^c@_%SptD_Ma04cS zR=OS_Nc*1vj}zZ%%QfPV0*S~@U;j?joByJ2f$vqB)G;4%P8cgGLF9YSTn~m@IHB0| zm9MFyqOj}tHVOWnxFj_kv3WKnoP_An9Rv9#)stkl6nu`JO2qO!kon{{QU&F7mgQq^ z<^fOWX=&e3tq))N-`vVFNztaI%8)MlL%7>8Cr!5UHv)hE);njNJVT-)`1<;2CAzHf z4hzVR4g`{Cme1kk~+7_3HR zEj?c)gxuv4o-FPO7$b;?Fy#6n(@$uL?Iw{9~-^^Ij*zlLOA2mjhGt^)rKGK-Q z!8}dF)ALe1wK#&f_PT{{^?#E=bQ5f<^|iVuM*{YocTbz`M!iPWy2?l63oAfoVsk-P zyx|^c(nu2@KZT;9qCV{=u2sHvjgfk7053^FPIj>Jc+8^ce^|R;YOO(i&uA739BM}_ zy>|S4?G;4Zj?YdkP?3`+W?nH^Ty3F5|Jsc^ddL3pNHvj?Ob?l_AMl5+ z>>v5!?>D!t|DWsfPasYCzeitxeVvih-Q69CM`)LwxPkV(X9Bo>Bd*ShzZ*kB<%^Cy zFA{0GuMhm))bsO#h~7c7^2dm*!oZ6^-*C-M@#P)KSI+DmhLinjahx&x8omPlENV3+ z@OG(MD|9Py_z#g8#xpJg05Et)7P!Pt~0q@C~{=S0&1cI)Dt4ecQ2 z%a?$;w!8xDz~$P^&H=c&($cBcn8aXBEFEbxkQC}K`qt0S@7_J+b|@yLw3L)oPrKgS zucm(;-Vs5v4)fw-Xmzuzec~s>5vv$OiR2f-tjpfSY*GCO2GcxN|_tuA^u z4Sn5>$ub2hKT(mJDhJ+Ag0ErQ3%tWi^4LrQRCTrQ>Kg=uOACql7G}k(j;qCUjg(T) zjR_pt5YgfdQ&XhBZ~WH}5yqQDP7`W1O~ZA@(tHWoaC&zn#vw zA0U{MJCK)h(O08}nWo9+I%BXsFzI2mNJP`hd$4<{v{rJDm;HCfnl$!cT?!E{cA}v z5Rkyqqw^*4>$BzG9zYKvi6^i!(X_upRx&W~o!BJQQcLg4$P9UUbA^}DfWfWMjDJF6 zwwiVC^UCwV9@ch>8g)S^3taOfqT;2Hun z(AvV)1vI}D-X_Xo(7H}jSh;AS0|kxltKF=Ox@0@6vMk(PQ+utDR?&x!HY>Y|A+20e zi=#)7p5e->TG6ah3sEsMyY#h9N|FUYhoqg1>^rEteaNL22o3M;-NT{(6#7YSb9BQQ zj2MN({|O#`jq9gdXqo389#LjQe9!P!X?jB{-wUa`=Fk%URslP<9v+B5z%^H3`=h{h zc7SgD8jky_b0)$wBt+zc;9dcAE9}#!=zHnKn_FI23UYF(Hywcs`U43K1(p8Mz7l+U z)-M`3dG=$!8;!X&Af&@KE4hbnFM7n%CB+U>+&7wPC*(Gdhrb$|B9X)OG3u>?>*a~b zJJuV6{BfZ+)z~AlWyUr~G1)j8aX|5bWhHeFyc<3mN6v#O1x93{s?gA^9}cLm?puKz zB!ZN5d*8l&3lwvVS@iMYy>1AJQ66-V`0@XQ>m;Tp{NpWT(q+>!ScC?-9BxISeGZaN zXl5$)$e7CeZ2UoRZfS@;+fq#|;@^jEsNsgY+bB%Zb+YhUp0BUcez1;;Ww&|-+tL)! zlh1f+9`lUNQq@b{cY;S^c2=~ru@U8|j+Rri5()7P0sdlk6d3%FEzk!x^Z2ICm#SNf z1%8M-1E+{su7&}zXdLlxi&mrl+pQ?)F4OoaJ;H$J$Ru~q~uPJ(q_M!*t{9Eh&y zj2nY}r?ah1^rodBokFlI?6Hk7%M$gT$4OXGY~xq^>>qArxo&M>Izu60y7uC|bQLn^ zn;ruU8eHmNCkiWyNGHGx`OxqT8@uoselXgxiJyOqU8U^ zm%tBU`N$S$br!0`S7(0JSHu0Gj=Qp6e$v%cR&C_`eCp85Y4zC8JN)s~=g*5J{m5W{ zRM6uIuc@#%Z<^2okP4K+@b%HMf9-IvE)W?h=1+#x*pxh8F0x`*D_{qT@EI_TImis6 z$T2V;KaG^vf|zj=h8AdW#Kb(iaR9uZSPuKe)3-{er`}%rvN2Y1dUApo98^?N0rVKP zRk?t%{O1U^YyzsEbXyhG*NI<$hV&yu{pNQhZ=AmtGNfsQ$mTXA5R!K{U_2mf?;LHk z`vB?^6BEPwXX)}5oU`Se@0p(d79X$v%a_pe|1Z7-SHc9nSDs=Xl8`rWksr1!_Cl~O zyP4Z2LQ+yee=fV6>50B;Sf&m$hG-XY#7X|@#3r==jP?J+zrlAf*MDae{IE=YBWVp~ zcdfHC;U42pNBpF)QBiDKb}+*DiO0egfo^XK`@Nv{e)%aynm<wThGn#9F^mTE1< znh8){UIl0A%V6;0)E9h~(b}xk%u5Wg*Yp3l%pWSanl75_4;8G1;qSK`tCQ^6YI1zE zceb_$yWP~=QN^)RdYYD3Q*dA4$x?N%_cjlM$7|GAflc%`jmZL}^gpF5(n!{wMGXw5 zM7Nqp*!Yd|)C_H+805PAFaO9E6#%x!#x; zWVF=92W9WYO0=goCW~^-Kzj%2TKrKFPuT6mGic|R21hJw3EZ$bY0}=zMl}Ylr7)>| zt-fB9y=MYt9mqZh?~(|#<4I!U;LXk6;ov^!JYxHQGDU(N{8vf=uhRgO(HcJc9X zoO#mi{u8dhL4WY}Di^`8(p4pxqevMPw#ifV@}*wm`9qulWRV=D)qt$iqLPX&&XV@c z?^O(6A{edRcT2za`n?wVSe#p4TD={V-_v3Kd3>yk$V<=B)bdOsXQ5}>JNy@=Yz}OW zHF+}YRR{$@*Pv|LSbyItH|ZEc2d})`^hGieiZQ~&GM&0fy#>k)X%ZpL zi=LDkS~~0edj21V)>L4+bH|?e&(-po3z?9@zP0oDJnPO=OOaOI6ZW~rNLqFWF{PP6 z9uTY7(L*ifz z=DVHmw%R#7)8Ic16^+5gdJo(CR?_F%XretE1%3*U@ma46@V`$hDb(CYM9D1)2ewuX znYy!X+9+E;I+EQh&pZP7T4==)T1aFMBbUcwLn2VRc1Hl3t}~T_ixqoPwzs8NGGD$l zbQ*x$_$6Jm#h(%Yy%Fde1Ntn58jjF2#iWwV8Y$_NgQ>8q(Vph(+J@eGZDT^PUeby9 z>{w(xM=k!mz8sQjpbpE9+!0@y)Q>y2K8%hyB#QO?@lR_}*@z6<%7pdZoS6^TWglRC z7XL&{hoYQNHmI5@5B5RRV@`CiacCpQc3Sdei1n885G@B0;(c4~2e{ls!;^VTgGxaH;P7I0VHp==gUq^z4 z)cjer1^v`qKb}hM`O1{A4iVMx)Nub`oGM5fIuWDc+=w8}-uH8JBPk0rod}3NSWr4x zfMo^rdOyH>(E(7q`2(xJp!Yr%?vTw<;R>2h#!^B`((O!O*b841Jk-u8^#@LYhg3{> z9P}sU@`X0}okc$n?)$vS30$cB$ z1a=WaP0u1iuALh1Cqn;smV11ynAN1qJR#JshrZejJ&CWa-j+PRaU{Bz0wSgo)?~y| zDE|ncM8GtCQ6)hbvC24~2brXkSTvK-fHX{-Extu@*32)fJ^*#SHoluwzyRHSGs0hA zQ?QpKxz#MIR3h~aSslZsQ*Ko|5*Kt6qyRmC1h27Eiw~qjm?N}k+AjUO<0l4w!IjR^ zKB|A>l!_n%RDANsWn)C5C4d*=*L6=|yV4J#jgtAN12_KBzFXH}MwWJg+5sOM7@h>$Gf z&|WXjxMF}$eS?9%d2H@%@jL#(>(BQPfMNv6q>Kzo?ahC}cPrunrG>>yqEUczp`z(R zqt2g;y0?HCtC9b6O`uCcMzw)h9j`Z`bSq)Wwv1~Y+AA6@vw$I2vvRr(3MdY^eM6h%J)wK z;T*rUbH8s{1bGYXzX4cXy1U<>n>vBa6iAZw#+z+3zgyfl=s{1aZmlLJMq@8UGdHgo zvpTdk;o3;VM-TbT9fpn-R4@kA1Ld=OpjkUj5GNL?>9T-bHd0WqHk~dRn5%rm2WM4N z*FIS%8A<_C``EJBj_-wvCBCweFwu@ya6LchxiTw{*9y_{-Bhpcfm}N%xMtU6eU|I; zY}gDX1^a6%Abzg}Vv4`!-B|@I023WV%HNX4YZDaI=_r8c>!h?5L(<=@>^@ zW2`)hWzz>GTZ{gbu3~>U(&pUJvVZ;|l>+7q`Di;|;Wb?d2W{P1%Ym0&8LNg=N4nSh zy;x?nYu5U`I{o=h2w*jl1=ITyX*j+KeWe>jw{rLJn8oys+MVRfyse#Hm^x}*(MiZn%P2pW zZs$b5A1rjK14bP5rln?TQ{BaTGrnfziZhKv+WkCrBiGh?r5GI}Q#g!kZk8fQ4BU6N zh6V^#5XRWVuL?W779d{ZklpOmTiqX$(uL;iJ4drf>56EiLSW(keLHdg`t`3|IhxlV zyV)o(@b`K-JH@=_=#WTY&+plC=W+a2uw*1A=L=b!bB7kpl_+GDIStU#SeaUvJbWKH zUNX0vt(*>M3x#9R`sbLT`6?8nsQV~ixDuBGigT?*dNOhpk4{J8P|jEyGH^;%$BfC6 zm{)m^PN`NPzNif*nl**RB2>Yj3C4_kk?LP3Wd&`lk2aQ}AqqPt+RCZ@x#nVzSI)T^ zu;xjg;;oxq$z9L=ZZtqZbLr%yYyfGAj3IEwQh_s{uYdc>N-j^eKB7i3Z8SNuTLR!f zWX^-b{v2AzNyFdY;&F7G(>`Zjm|daqa=$Rp(K(0FGJj~i07&BYygYRGBypQMhqt^(oQiapiHWeN$emSUVq$v(UVWOH~}5XkRT z6tST*xn1Md(1EA2;-BXK(Cy9z5<4lE^C1?sPkDw zPfum#{*Vg^pRIj1bB>LM8zT1*5b9ar=W#QT`}R~+oFD0SZ%VHjcsj!jQr1C5d%U?N zi-zrewIe)#t+>=LnAK4ezp9$VX8pg(8uoqFH!v~rNpNCJA!B(2)SVWe6JS#Mq{nM_ zp1xGLbKxWXjAZk9H}8GF`@$^&u7O?I(()4Nw=? zCj)YF0#65X^r$8^rQ1T*Kn0~sWUHl906vqD!2d(q{g~c1Td?J1jgL6{02FxrvE8y| ziz^T0F#Q8C1thk%iGE@MvUz|;{|9{J1O9w&e$5-;3%Zqh(*N>zz`e|v*rCU>nyr2z z?~K=oUt2TZ-P;c!yylE1l{@)!%fY_r9{;e&$jiM zrqE-xeJbiNiUtW)$S?k-y1sn)O}o!?(ru0~-dy?Iv=`|=BPH=>A*)DK}{s}>xF z)lXrI6cPsME!HmGk^ol(-5q5Dkhg8u5VY1)SCe{qk`qrw>TAyfK(9VtvoIbqZeHCr zoC01ZcY<0DPiaJ{H7IMM1Q&2}E zr!k18{d{!=RPixNt^7Hxm2m9$I`ccoAoYvsBa=4K&iJEIpRQ$GUtDy;#v9-Wi7^pm zlY{p($8D=UXh}NwDXwlP7L9286@0LikY8~^EB%LVt^6xmPP$`S2CD>dg)IpVotx2! zdhd^OCqH*5<*fc5$+;a>-y%}{zha8bR5jne{AZ{E1B>18HIFEtc1z5r58!NL-Phl4 zTKU1qiW-n26^tI`N?KYECi9Y8m1{w(& z0y-2xSK+x;i}>p*FvbMz2vdjvbDO_t8?K?=FD3fI}mE~Va zJY4zQYb#j~vNMzqvKY+Y1ByEU6&W!E&cQ+eF0HHtA3_lGUgt*tnsS`D#;I98rVxzZ z6@HRlwha!&9c~qD8%6*!M*2!dHHvtmRh+~W+{YPXyP#BDbbJB=&&!~|!m85%yEzIG z(YB6+d`mO4lbx`7%A2>$NQl}gs~}i9LL(8IZO+;qVK7vevLSZXwKF3@FC76C`YHC% z*ePy8C@1jI@fkLpJlq9k^?a1eZC>mN5G@2v=2rpL8v0ipJG2sDi}9xa+N4Pv+`#xp zX;L!3Yo-Vp%^dfw?)Fp2V5>O_rpX^q*8&E0HEI_Sg9!V#Ce$$r#$-!|OzsF5w>!4# zS@x9d%i+<`*Q--`U5>O_4AxndssA<0!t_YYsb2`Ww`Kc31vNJJlUnL1YNgAa-M;y8|zN=b_~zlpxth zJmvqQutg)jQ)xcrvv|0-O7+12$%YPKsijhc$Nl@htVACO9M zcxl^`fjf*H$g+{ODp`f`at2jx3c+kBMcMM#;&C9Y$pU~-$+`*kw`x6RyKQ6!%{>hL zs!Z*GG9?1$6+Dx!b2+%^=jWrR(d_K(H(Wbl$N|tV%5E_aL+1R%X|}6j8c3_P?lL~B zzbd}+A*V`j^K*Wm^Zm#1PIcmGwO+3j3k5ejWADfm+`Q}$%>S!%P-OrivwA_OapZy5 zTFEDt`#lX8(Yu2a=`g8sjLDwCLWMx#V-b;4uu>kNEB?Go5$Ez~i`}3V6suVRu)1gu z9w?eW3flc^C{Y5&s?$Q<*kexX0|cgD92?Ero`B2$Kj|fq0 z{@#`t|M&WhoYF8&LV`nyBA#Og8Iz)jgy@$2>M~T0>)3|#NUdNHEyd;+4UC)ofGscz z*t;P(IQUcOBMb}-R8;tyBl`0$V+SE2V3#c^5D26Os)Dsv-1~R*DF7#ZEYcRR8ij)# zmZTFopR=M|}na+8pd1U5ZakPK?+A0O9LQv+@Hrf!V60K^isI!omG6#%u{;e`0< zqG8pWqZWo~cu$@@!Npx(TceqiJVFjt784UQ0IC#t^`+(K=MSmWSAq7hZ}q$lJP{5! ztscTnpaqem-S(yG)kz>EnASF^;3)yb<~3rr-qLgF%yCv|up8aYkL|ZPT+7CiDVGJ% zdMXFl_O`8;msdzukX501=FnQ1dO+dx7s3##|DBwt*#cPwkwCOpF$jz)Ig%ca*;pN%HZ9 z#91@f{FkbS$W!rtZa`@A2MZ{lD@YwFS$d}gk_y7*bkXEr45evx%t`bZdtbKPNw449ufDpk(z@I?b#ge7o14qr$BK(e#BJ(K zkuHU2PVJvyT~k~)dE5}V_I9iN)!NWhB0UO_uiW}8Gel>KkB+^O6s09vN@tw`rzu5f zpZrwm*i=zma4r4mQcPPNk3^Q*CL3TjT5G`qu!}kHec}3%b!VnyPsh%ThbyUc6k{AD zL_g~~3nAZl4$u}sE}*C&H!eh#v*w+D?oi~#8<^ny(vnNl!B9(UD>5?j>Va#Sx<{+9 zV!?^8bav!JQ&ZFB5S{v&9}T|u?)l&5tKOVJE8N|TRbDOSzpWL4XJYGp3A`6gZibn$ zFe?~6^JmXvKs30U6{RBJJo9y4m+1k0A|B;HTb+~IFUS1%v4jjdKQ=lHxb(Jvg{cl;5HLgO1oY@=Pnp8GhA9>Z1 z+4y&XL3A)+vCo}CGReAAaRubnKH2c)6Q%A6sbaaFXqb?g<0(<6cUJ353~3oX$qZS0ju&KJHoCmLe0*H_QZ)4Q^CwuVXOUys##wjo-(U8C z=Vf6_2wQbh@_g30;M554N*a?P#Bv2v_tGPMUI<-C8f$2aHMu41XxufX z?Hd9R47wfDVZU zo?NV>FU6djYRsHz>}nl&onL~Gy+Snks&ea{lor#>m~!m|vB4XL#XDD*)sXKsxlo*H zeYyTjhc92|ZolyHfGKM@B>~$3q%BQyTjGC2FSGZ3U&pLME2+*eKt;#TNcLK1NVl6l z&ubI*5*nuLJaU|6v=Wrn))8{$dYV-fU!N)agm_WzdbDBhLOlwz_9*J zo8x96lf8j8JjKJqBP1lll){tjcrV}1pd|n>^QIdxDs>?#kP5p3wj!~7#TT@Bmgcvj z7*aW)k(vzAdLAJ)G5_GrH@@yHU*5E4`%msQ;}DGsICjnx#AZTAJCXhuZ|@n^_1-g|E%3QCpULFv6pheQPFi1bbbq&MlE2uSZW^dg;*0HK6X!g<~M?{DvW z#~o+f5BHvY$Vdhu<$0g7)|zw8$;tRuMvUQdyfNJC+DS>qJO#MU&c>Cz`nh6`NfZ5Z zNq|;ag>lO1Xjyzsnr5|!{H{L`RGFp`pCrQwrLKn`qPtt?_+4W``%;ZsZ4$cCoOpM( zNpf!i@QATD8t6wbxj0)Va>`&dedQDwY1IX7-qE5;rlUU_fpACNJ@lAj?7H1QkD2%l zI@m%$5bO`H)>e~%PC#tSy)oJ(#9IOB+8=-+u7m2OGgN9KKwjIYrgwf^>|Xul?`pc7 zUjhb=tW47VqXv>(lgbf7oM~hw35#+=T>@+Ce#((VX~N8A`^t}fKLT6eY} z^!+=cD`ioG5I=8_m11FuJo4Lf@FGyvUutle+?!u|d{wurOYU984>W;|V7=Rn+;vs7 zQXnmvB2RZ^?7v7|L4z_OnBQXeGzBsc@n*M7&URjaO{3vly}FlMYGh3n*Z+Ox*lT~T z+$F-Fuo09l(?aaR;kso8weLG|^^;OJx&Z+v-<>=lK$y)hE!~s3#*82rn-@vnTDlE= z{YuPt2Cy_^{Oy}irIv9D2+LCZ9yk&@w$ss z^dfSPSVT$yH9|D}_-b@MaVJQQ#ojG48pRB`j*52Hmp(7>Qr0E`=qvE-_$kBFB(ek{ z)_oDt=kTS5dc#dq8N=_4Y0TA#$SX_xx^;w@f&PSecCKH(#77#!SmVj*8-h|#d$oDo zYo}t23mMa_A|0;}cX>_|+3cUicgRTbvPk!v9tUk1TJ^N^W4^jo>&=VDHQ6Q1hfiGm zFp-qNhVN$A1P@UXLR#agNKp$%^_DKUxuLmse0NgZkz8cVSv?!XKOPUSD0R8` zF}`c+?`{{GSKzf|lv#m|Dm_ z+b{=TUHSLjy2s|_&Ahdty0LiS0L&(+zkcr-*wco$5C%j?|GNDY1IUa)KsUaGDm_XA z^aTLv;@9&9Cxk6lu8N^!5~R5gl7~IM5V9|?sbT8|rWClOqz_J( zxnkSL7y8CX$K{BuU}4fbQ~k$7D$p|{wo*wMOl-6D@#wg2LEFClS|SSIC@o)i3j6t) zR&Db_p;ChNv;KD0C!PZ~{#u8zxOrE3=n9SsvBV$4y-|9iLh=NJx(Pt&vt8_uTAJ;* zlF`=!PmIWj)Ujx&`8%IhiQPltVArnP%dennuOP>E1EmJZT+WI?Ct!Ut>i1ujjL`=n z$Sfl(3uuFVng(dAdI2H@HDtTEIBz*Qd*y}?oErPhpi78})TGa>3<#{6JR)`&BJv8_ zcguT&NJd8}1oi%f(|DcR7lCIl^V{rkuq;~4OsCo}o%!q2L&BgQG~a=2U4UF3=_x8u@+*bn9` zV!biRE(EammOi|hKPNi%_#0uk5at$azO%Kn<4+#~xb@xficM_b{O{i{j|*g45q0wx zIc)n&ZUbC07qcVsF?3u5@hobf^;m`Srd@XZx_TCZswd?2299P2Og*<*Kl2djeDJn8 z30V-48Snr!X}ql11IkR!S5htt(`R3G*CM>2?jHFRafy@;L}2rX@#~7hoI^lfzR_CU za%xCd=6FY-!n)DUx7l(IPw4SuAueQiehu8kGFdKw@Gi{0>s5_M8^AD05qhdvvuP)C z`5|bmEM`$HYtgn=eED={k~qM$nU`>v&mCwG4k8$Sd!Pp@`vXo|44=Zmd+Pl#PSwY9 zNNeyiA}vyD)1T%3JpT*WLv91oS!!-o-F~9WRV6gQ`*TH9;b{&D;Crw)|-n0U?}3iD>MHMqs!`1GejIiMyoyn5csGLIWcw+H_lMy=4us|~el zXlpOd%*-q-aOSE2`m9k*)HF2yh+0_0bd3h+Tn3Ew&#N4i&dtqrZdk>I$tl*bk*YK{ zjM+R2s_33c@-*U=@-(sw^Wz-TxAQkdw~hC2+LINqT6(|>f7~hS3l(JNdri>SPf&Mn z$1&)WG-mmhwZp7$&EOPxVAH#J{e?J}Sybn|MydpJ|3$g#WscLZ~uM5c|Y zdr?i3Shf&2Q-JUMNGc#z-~DY&s{R^7Vn<(22%#FcLFjm5$E{{Itzo}>Aw!gA7pcS%dWtJ%TZ!rve;tlTtq>WRjT|EB2OtfF7o{{fJT*P=3`YTH@>rJM-Kn(%|5DVgNh>`#2C{9l_c{! z9?ezkI^eWE0O@e`@S=TkuZ zanhVQyR{SkXNQ=!r1nW->cL%46#P(l4fE^4Wm9x;+L`HT%9m0ig(Qr}u z;9I9-HNIUZbU0xT!VEdZ+(7&2NzAzZD2SYTXZoMm1)zMlYiMe^ulJ6nq)-I4Kao=z zqq1mnQ$gEIbWJHtm{s<^)a*``&#i1}Y5Df;?QvWydO~%YYKTaxdd+J&vxuOUYNaAm znEAz0n~&vY?84kU{p>nbj3EEZic+Wz;udU?RJc~}rKwLFzueCi_(Fi&R!z#ts9%M% z;buB?9tDB$MBH_?5<^{CF@ElyhjA-b2&Eyhi%GJ(c~qoJNt0xC=&wrQ_V8CM%SBVu z2nk0%v?cF)yR_Adpkr%)R5onDmQ8AQO5%W(VZtwBt7Z0;pE%D3(TN_fAT!2vswFggL^~GAnOASL%rBD$ zb#^9F-V|<@n-D)-r95#Q0IrzP0iu?CI0|a@roUnG>*#5g-P6GHWRMT`vUy3uJY^1V z6;TnVxggvCaD-JafpGiMddQXU8}3C)?9)`YU``AYuRPWx^rMax&IF0!e1WZY{vD}E zqaY+w%m5Q@>PXV6>*%n9%+79f`Wu@LYX_$Vv9hpuU3{VCAJghid~pB%IQ*pFShsLz zx9R)wSVDOIl%1okZEU!erKRQj_p4jfB4WPFh$<UOQtOc z(m6*mDLep|1ePyuUtWu`KNaPFX{rvVDV}twOdk|(9qxH7NJyfllP_VX_Tu%37Oei4 zJjHqzkcabd?%N*BV;xe}JjwdfIT?F!{n2Tz1DlM!x(RA0CwaNp6Ko}6^azB^Z_MYg zycx(sa&&3MZ(RzOKYSUpKGk&psNh%c3txXIvrqzjVbb>d1TY5_Inph0Iq~@)W6iFA z62TnoWpdZwZ-B&^yKuum5;M}nE@m}Q(UMcT5{>(O?{7hwuf%Xcpe?P&ZyMZ14!)Zw zoPV=6iubtR(jPW4boP#jI7z!4yaR-UWMu~&$*up^0%TvkdKC~5U~X<+ou02#H9D@k zR905T#l;2a5*uG_&UbYMq(a|T)qSBWI@~cMzo_fEm6s^>>Vqi_>-G7FbV;!z+*gQ= zVd3PhW01hxgrfPV!Ml8nzIv&I2`0t3GG$T7U(a3cq%OBvEl^UU!GC7VmZsL&}p>uq}nesEn00!PBTipwBfSlH;;q^y$5yv;_( zANJt9$+A>9wCY=T!TdMzg70O}ozIIczA}v=5?^8@xe%Hfr=as7p?N6B9HMM%Jz>X9p7s^#g1uXfY>7MU`9%yd5=WQOGC^1hsm*ag-(9Z zZd08wFl)jBf9wX;RqFAiCnr!iZXax)O^y~h-LrSDkBa&tE>qybT=YOOyCJ7wrI85a zJD*U&qoUgn_TBhe0$M}HS;bdxIcX@bREZhC404O%%%YoLoY<@*GH>>lH%fkR?mw8I zE5h;lj;8rb5o~pSnE*U7QlrT~4zLpo&wcUAG*P=YZ^yKmby1s5ZaS|TZ-t`7o|jx( z)OuplW-?|`prkX`%`gDbA;_mixFzm~v=fpBQU$9mg^hloNTPoHf8BxsjnogrMSLYC z3=9mG8EobQKXtHJta#>dPtUBm2Bn8is)FV{Av9thx>eHpI59DYJ_~$tpyrg$jt^)n zv2k&`3{Bsp)aOcl2%e81$ZJmHVdX%mS# z4K4z#nm57#ew@c*9N?F-yv=((G-7%>13qawrZ3%89`OmGf!zA*K$FSte&;850gup?ffka^C_rGspDx% z6KDxtIiad-&NIetqV>!IOj>0+Wj?+;)y`I}P$p<;v5%tsnFo2kF~7)RUTu$2CIX1d zHkBi=M?voR1Ju{(v2YdB#LYy(-aSOb=RO#>?Leh4a>rcP*bCZXZ=hA^Z1&;#hXx3w z4N=NdJQ^!pLF)M`UM;@@w1MWnYNwC zTI04~aLA@V!pwR_#Mx~yt$-)VYltkplN+wazE*pRN$Kk^%gmzOF)H!1zBVi$?@P;{ zZhS{%rQ6)CHr!v7NUcc6$WMNGmZ}6?lCTAZR~st1q@S$RqMBBJ3#LwjnsT?XGX8Am z>qixeWFsF!YDKuHnQrwG)jd+Cp*@{<9&(8epHm~kzP~7m;ZC}PAzQkAcHe90-RCL5mP5DmN@Y=)T{%#CSTc|kug;1gV4*ZEW*fMMspx(?@<^*UOE6W zQc$^}D>X3Y@|x>w_Lsq@ATKrY%%<}qU5+*6tO(Hnu@Wu|iqc9YEDq@W9ksxG=+am@v^9oYZU~pD{RPp&wFXc=1FwsAH%u=tS-NyYS5hge=s(U=2ok2wzyIfM?jcq{WFC7(Ji|l71aN8Ab)g!+&Mxho@(=jR)Cq4 zb8vZCjCwhobQVyFpQA2WzC=gzNTDxfAXgVhBhu&?@YO}vb?f<@0$gSZyt49>NOtzdK+Gf%k!z~eRav$8_6~e*|4`7@b47Jme z$H}ycjh)RPXSvbIB)$_K&IG*DD1J$e0? zu=zlvRW99x4>x0#?f473>9o#YRR( zLKoTsj*`kAJcu^CyHm3pZu>r7pu^(*b@=X8kJ^K|S^bX?D|ssm4TtA?-`c*FuD*6! z%+5&5f|%x!q_RB~=zfJuS=0FH0sqd~~qYSw6t>wS>;B^IKbf;@+hAI}prE?aCtPa$S?Khfc*BE;8gSBAkKo8`;l*!a2 z|GTR@c>5{pzZ5VdRP>3D99h|&B~9M)5c%~yzy01#M1`7^&)vvE)^@E&;y#`&9_9kj z-li5~V<;_e_ZKbjM8_)j=qnx`8=Oq?J=E+89yrsaL*S`t=}xBo!lB$V|JU^W-Y}EW z7th?^5lSEM2P@+Z2AT!eN5yu1f1?LpKcj>F>qzpSX6Vj2Iv z7s+$};lF&Ww&Z=GvN=g()GjMKUl-u>d%bUOFFrb2Zcg?;;IpU*u^nM~#)8p*_*6JJ z=Zai^<5~bgi~Qe6iU6%W{|5C}Xe=uA05omU=?}%80{cG>N;ocr#f7B{2N-7Ht9^98 z`7aOT|9S8Kn>qL2rCD|KjSi>CS$ahtyvaSDy(#QA28T2;`Jg8~qyY z?>``4(ATHrHj^qPfIZL&fy*bK;Uh~+3CJtybV4F$KK^-h!{^TjU_VJ1a!izHYKwcb zmgLvz5ODk>+q*u})O2I!{+sZ7Ydw~}OC~1i>tnnW(Rj^L90E_G^;6y5ENAv^ji)5O zx4g|E@I1P8w@;r^C*;r5{RH41w~&uRfHNxtc&JCIBY&U@{MG6sRW<+CdjIihU!Ig7 zIx#UZQkE3peu06$H-P&Eh(x5PrI(bHNICCc626Lj%Ybbj?2;Mk*joh$4dtoFg+rU&Q}i4 z|2zUl{|A4NZ?WRgP*!;(`T(%`uBuX8`VT4VW30;m>qYT@bV~mJux@OBg^|;IYc^9y zrL3={yp@qLRdKb{^n8Dn#)Y|K`A>rbus6)+M}$R@-2!+es@T$!lEude zGf&L+m!J(ItdC#W80ShQ&}##s%g9Zjrs7)mxx^1_@3F%ByWW==L`7d>Il0)#Zdt!X zPfprRE&>{VfZR;QmFHpA#k3gBO}Yqz!}PR=*$D_w;RWLN)qg9VAKj_l?dkwIT8{_J z)m@t=l;pN&hh>`ob=|5%#e`k~vKA0ii3TUbSU0cs$!%*8uUeT7o7W%4*55CIgEO4< zp45)H2UpU2?faqa({@~d6p1zSQ>29Gj4m(C~b=t$fVr?cBjm`R{9xOO9N%N!ehGQ>vgi-)pkV69e5mf)Ies zhAD6M>3RUgpiRbP+Qd(YoB;OW2R)-;D6}Gf)}o|bpzNaR;ImguO^O8FJteCy<7QDI z0I=iit#9j#)6@gh-N)=986SY=rVYxi+RbTar(S(&8Qboe*XHqAzH z5gphT9GckpPQKLLlH?PBB&MrO)9A_f|E&f5?$5vKDaq3F_||!&#SApQ5gC_&VwsPu zcC$ye`0pJLx9-N?HuIa@MYerE47;w{s69P){k2o3#?rwas`pe(x_*x< zaV+ya!T9+DW;d~xi`?I@%umIk;Tj5R<9*sc+UN=@IxJTZ zA=edbw)3s!PtP)>qnbqQeUCVoKWdSFTY0Jvj(_0FymT-%hd~a z0BQs}fLxr0Xk#3Nh4mAf%O9|I8kBYSOqKp<84Hj@$e0AIjmX4*UgRm8v<(oiNjB^> ztHnEmD3V>DcV|PP9xvJK{k6dU?}mZ&HB&dgau&4$sdHY`-7NMw$Ig-uslM%3aI>?t zDIUw9VwhWXSwJ5P>xwUh4$)EOfUkG*aAh2mqeb>OoA!5j{$T<v z^-s^8^$7PqAfjrqbOb0sVUJg6_`Yqbi6zQB))tPa&Xx;f-SLo?Y4fP^8_Hcy9W%~h zD-!1{*M?pncNsIMX#mv(YH0J@JdyyD)OKNe|8)q6w|)R9+T(^Iy-Y8=Fn?ZTrMTU! zX1vh2BsG>G?obHuGo=3fUf`Jy=WDk_Q_RqBZc>#uA(11}f;@ap@JxPTp6R z*CdMcK_4c0blRPQ(8$RAtcZR9bp#gs3eolD1`r+(^cU@1I{d+v2A7PyO6&}!mrV5R z1smlR$HqP8P9TC9&2YL-QY;cv_Xrv@7_#;W_z_i_Ca%mu^NYgd%ui7bY5%8td_Q~$OD`> zb64)8sbSUp{1DxCMRcU(<8Mv?N2C|u4}`r$!lZ|}#gta1{_de4S^l^{8FCMW#Rz(j zqslqDu}7KQR@!@IXROzdWxgp7^vm~)p{9=_s%7&{BcZK2ZMn|nG=BTAZjMB30b27I zE#-k;g(4(V5QF?MM-GxQ=k-rJu1;J5-09%r{S|w7web<4L|wMSL7vCD0q0Q#pM&u( ze()1vT|+f`U*88Ep~=}TDKCrxdkV8BMqcmjUiKEb>WF}~QHv~XE=&P1(+p2IiU5`i zR5j8{II9OO(PaX{`jd8tNK*2GUw7C~mRqeBl;<10jWV6ZTDQ_|$O_Kl?y~VV zm5x@v^m2fIiKvn)8H|Gx(VUJlN(Af(Ynwe*{0_+@v(A?GqE6W)Enn2_c9NDW6hsl~ z*2Zw|x`<+r=bpmkuKm%4C3^+1!l?kGR9PYSg`&gIbc0d=y*u7Lk568xANGJvDQTR~ z?{Zq6D>pBuUNr4m(v`xp>abi^)+_@N07D{zOj|HXEAu{8=gku&0#3zQ4k?S2X!h2b zu3`1kF0Mn+KJ;h5A8=a6sp|s=G`&o+H5C-XR4sz!$}*ks`>E1ZbaVs!6BOQnt!p0? zh;IS}D2P<^WvGY>!2>(^y{nCOl$sa8`pop-sfTl`t3<-;Rp`IualKRhEW_JSQ$@=@ zzn{Sd!#tbUrcE6=%WcT4`@YC+C}y|h&wKQ87mq00Qj=<1Y5l2=rz>}~iR)nYb~}ND zzR^JSHIaLw<=kl(ezF%j!#rLNAkhKyEQp;+_^0*~sIWt7Z0~u2_JGQ2(?xd(jV|V$ zXEZ^vag6F~{P}?6$Eq__-*V-mBPoPh`h>Jh ziKNLaYoZ42^^s5i5gqslgsfSA1bdNzqm&*Lv^Bbd(!~HFU`FU?(O^B&|3f@~8hlp6 zV3v&jlz2tzAe3j(?}81mqFoB!CI|aqM;36Uqa%+6={zB7HM$%Eg+{IS@-D~E=?s_^ zAQ3VfpbtcBui%$y@AbL-~zvhri?DkPsJ6wyC!#{%C;SP&AyB@y}?*>2&{`i7ut zPFzj%4Q%CS5MogU1G`!-2vyaYm!KtabHCa&oVazFqVrG2>rK1=fOj{Y6Ufw#eiV#Q zPANep!5=QP68Lv8!)u06(YM^VpZpxwOPr~X1cbPsm(l&WJuqW|S&BEkyMf z44i%C7}T&^V+UT=#Jg-;(>D7`E2)nFp^NE3dsO9hLH%>GYI??B)~AiH<3}ufrNA14 zmPhfMD&d6uH6FoJcK$ltiYB$(hX0JHH|aj2h%MvLkSAn$Pm=UIOICo*QbLqV9%ttd zzpMqI5S2>t1WC)fHjnqw*w^F}#Sz;W?VsNb+7a*XTeOgB^VM56P{Smww@2Qd$V!AzP7pXy{S;h`*IrcT>2qAX`m zT{WZBa;G`N^IU7s!RDi@PgS_OKz;As-%={hie-y$VINv}W3fuIv$K1oe3+#57*Qgy zr55hGnAkUpE>C~rjC9Fsg#=Fh;Lww9E~?OzooqxZ#p z*|$z%kS0Q{DI#OY-?|zO4w29QgE`z1(Mswga~CM}qi^x`gpQ>;&D$jamoj`K>5#onP#IJGo8Q2b8-x$<_nXd77ookF<*k-uOv1)ts+CXKPg*w zbcN_onAKjP=$jp#j&$Z0NeqF+NMA~?F}hhPTE$pRf_6yVL3Fz}PSo6x07(ktz^^UEH3(mxPEy~dfpgrWGU&n?y8cUp-5x@sXZpO9cByC)@w2L~&PAIQzsWOCW4~?8 z0b$uF%iV_VWN0)V!5HYzSNV3nsn1iDvT*l1nfO9!NX`chO}_$YcNaH&cEu21xcroy zv0YpLH2eI#D17!Tx9ewkcyzoBeAlk)d9#&ke1RmU)l#I>Jo8Fg&;&S3n7jv}s?%AC+5nDDpG-wX{r)b|bfT^Zgp(inr}}I5&oP2? zMfOj5OTgiUO7j2MAw6*8QTjU_0ZSzjitK!O0+H^CP_2J5A{-Z|qf@beJIw#@~-`6-kyu- zIlUbqLe=+8i;X&3zIhP{D?~|wUIomARrNiBn~92maLoheF-Uajn9T=+GQa34E1`6* zo1)~H3yepht&?pmlsD4-i%EedcL%psXy|k24ZBcN}IPb1pKUCzYgm%yRwjjId)rriH?l)sIaxMS!nSnBudHhXtZ1( z;~sf}wi0eGD=M0G5cUG$0?;9$ZIXXhem=93$UNm1qt6pA15v2lM){&?AN+^t)*wWr z=cMfAD<>1|DuaTQ{%I6IwPNVsj#7UU9$xh|IT`%>WgU)z3Phag*)tC0_%zO!)+ z&A9mZh4|j+^!ongjV1?4U#+>q;}6#9Du!uk=@KGg(cxKwt}jCSW2CVkC<4Nl0S_>C z{ukJURX3%`qPn`eru=Rv`lRKFh`U4(A@?Ru8p#Chw|a~prPYhHQ0ByFs!*2{<^0Xf zq~U@(ostLl2|iTB2AWno*zvQO!YEvlIa^-?wLPv2yJZkx&G>|dfP75cXD(9*0V?X- zfDP5{&uK6t_l-ndV>Sbso%tG{>cxe_92r)a2hIU=e1Woo&&K1vH*ZjCFVW|<_R?qj zVAIn}A8}LlTJa$PFh244n(bY~2n2#ztOVYl%y0-@uf81@&mlvGcE?B~kGrWsU+Ld&T(gFYWuG-W((9m-8R7b8ryR4r=tb zKb2jqCE}%MyUJ{~hufhMw7brCI^<*n0~MWg_4TJFCl@T!Q?^-|#vB~%;?#{C9Wx~j z&N0!bD?Gx!bPW@?_8dav=9WMf!~CFz89-0S?P54>ZY~SZyxyIhO!)r&7ceo?l$itF z)A}4dPncuXfB(9-_L)2^GWr1#Q9KLkXGj{gwDSd7q)CP8g0ur5V?Di*Y?^=R^n^#V z_1u@9_w5JqvN)SLhq{b~h5mj!%iFJrz+8J8u5ZFy*f##aXv@@H2M_7V;fjJltH5RR zb8O%@g5~?)l-hi+zK4_kUi~z@a%Fr7~GTwv3X}VQFFV261u^c!!0Uq5P#ih;;Hj@{-wN4Y1^78Ua=h24PqkVEe z5b7Z8fX|#i0mV_#GHon?A)&=pZQO73bA}?gZ&V2SYBgzy&RvO=27Q`ygLj6;_=>*U z3=9hWV6gZjOL8sB&}zT!)=9VT7}Zj6NbvW9Ja)|x<#ch(k&2;s3tCP;w4}I1`^5&l zga{vBN##vaW4?oo`P?M1vNR80xvpe1IN?yRa+K?30~&906AKGyf_vN5068J=?OVMM zm%rYqk@fMgmKGN$eRfBE(+&wr@&wn`x3qA52#<&oB`>&(civ$m$S&8?FLP|M&ZCxk zaKP)Mi&a)t930?raW*p2@O?Hfb~o@6A;Qc1#QfOCGAo%ao(0rqTRpoFIWpx}7qG>R zQLu>&Z}huC5c{6Yu3xRv3pvB)yI)*Vp>_WPO>1NGF3b^!A+058`j3b3szd;tG|`F6 zD=sb$KSUy|-tj`CQNnUJf&OY+wzkPJ?E9NVg23O%(|Kt2AN5FNyyY~E8bFo2_OW(r zThvD=RGAJuDpkO#Vb#8zlJx58%5rj7nwg~~SaLKcCxfAA8YuI^U|z664?!K+O5#XE6SXgUi)TfZwsP`i!gWmstO( zua2;=P$P*-QOj?dj3+eP)agUzmt8Cd;Ic$8QB%kdRh2hLVmpJu%{nO4D@_$gN7pxf zcOuE`1gQY;2}?C7!LVE&LA*e0=RI`#du7iQzB&jY<{6;>N4?;>E_s)ceB2 zu~-l)yR=hb$jUwR4g=&w@qG)UGf#MEg@lZWPKu^% z%*@S!_gn9hcM9(BFD9Ke_U|*0f2$t*5S7DHZDHDKVlosZpQ~)Q@wvo3G`nF&FZD&= z`5H?V(9)Tk`>eCGb6rTqq{q$es7V=W(VrNX@raI$jF{rd(Mo?Yd*iU1Z0bqBeFdkN z$xCb})niIZ5*kK8LY1Coa(enP+2cm+^WEnreG?j*H*ehxxbmml`_SWE91a^1q%qU{`$YLZ#pYC1 zCIgD8;e(ml!Q1_x%DT94F&ZyF^4g~36e z*}XTSA5k!whRzSNT#^CEgz{tcDB7QAMpi!g^aJViJ23W_b#rXsUX9tI88VE5<{r80x6zl|H>U4d!rq+dX=pqsgoa;QysE%jg zig?*~7B5qv?N4G(i>GBE&3!^6jMncp+d7~oAK}A&+ z=wCiKI!UCToSd4@9PC3JjMZG)KYMCoBKV2mMo7{ona@W+@4XQ$&v>n$0KxP^8~jAS zzJzB;JRP=8r&0Klm6o1cuRCdCEVAy-F151Ja~D;S9(*S1a}pog>Tl(v>vWBj-nrSb zaBx>>!+KjhvraCrb8VHS4Yc+^arNww6uEr5JB)5aFE$=+HX-}-UJLp$%NQpnYhY$` zN@S9ba=C-rr-Br*1MJieZtxFGhF|EDG1q&oc>avm0oT`s75$0^Crbm57cW>*}tsN5U^9=7TepcQjzxLK4WM+Cq$Fp z%!{Z1_GZ8$;$57VGKfZcVX+ygA{0E`OG`|Rjn6dpI7t(4Q6#1g4#9Oc2RShoKg;QB zobpw=Eu@R^-S;_OG>Up2eSx^X`cfvZ>=1Pc8&-8@FeHB2?1lVzn^YkuC+8c-3;a+g z16{D3E6CgXEb!{$_ir;y1umPcjjzERWsiY2A&p?q7n&scO5|?)=IuH%V!u%cro^Sh6;Vp%g@XEoy4tcOslK^5?ewkqQ^;Q5*8k=e`4{{%=_)c zy8{b-&*ywXLaiQfvTWPEW$1oJX|B}erU*a`LAhyZ{dCM?ADyx~_S9}&-?VU^ZF!@` zw(x}5>maYh57x%uf`N^ik_MI{pnpEP=%L6b}7s3bWk&Rl6IGbp<%cpad5?qdSj+q#+@2vO>*DQDW{dVCc07lsF4>Lzx#=Q zG&YK9>z0c>5M2ei-1w*i}VOj!NYF=;w0bkG?a_egzA{FK_kszUE==g?_JENm-{1 zO1H$W&_H<^$wS9&-& zl(y8o490nA-9bc?B5F!2H;zp^HaKj%nXUK}&8jctGj&{ZRWZi5lomQWs~@2s6xJz5 zWLN%XXx++sYe4dz4GG4_=YZD>Et+bGLk&@TgxuTv^qe$0P{M9S^0cBG5qqaX2r`X4w1J+{=a1X>kD~Jo%*w}e8(+7 zS4A23<}vZhC)HT5`K1<1(h&qM=xngMB}N zqE2>zZ0y(95L3Q}7m%O}ZB`CL;Y4?9ZboSuLs6%$=9jL2YXOS0 zq2lEoU^eDRZtG}AhlPp$4!gXxkJTz2Bf7{AA*wmouQ-8rmNbro1YH-Cj#oy8oos<>% zWsSQNW9X!}Cqr+3JDd+*A06G>qp_oVL4fxVwgWy1_HSwmvv~#zA4QQE_P-u^{ejb8 ztJ)f-+IEP`y#$lNxfkWvJ+wAkukG;pF(YIHFTkLo+y!;kAjZkb$Suq*By^`rD!8ob zw6&pk(d^}MLJn&krC-W!mkA@mni1gt1bD0nC zpm$NS+$ze-^71bknVEmT^FBlEbyiloj#W%(Of(!kQV`X&Z+?)1=O&lyZEeq?e(%%4 z;~1$^R-ShjJG)4$VBzEYe8%P~HicJfE_akw4e|>LvOii{eP1)RSyLdS{o0)JI5;E( zvDk|Li9Ck_l36|6)z#%Xq)$lGZib?1yK{>yz6Foj_Jv{CU;*c7VKm&#$w`MG^6k`_ zMnPt1DTH5{+HK;=x@tKYrYeWE1NPZbnISk@-t6 zXx5lt)ajZ?JXIT5C9SEyVIz%)-rvx66sW?*B^LSZ#B@m`{$ro0BI_&OPvYu_4^?VT z?;QpAS^Pc(6?o<7lH!}R9n?cOI5^zT3pzSJIbU^(NME+gSZ3v*g7Nv5LFgCBDj#>#qU-*4Z%Wpr^dR}YcBsX}x;7DTkf18VhI>n3kIu#~sC#V}FA zqPn`=Pdo1|-k$y-y37$_7ETh(Ph{8On90HBDT=xLtYn5zdgJ;K0&4Kl#5CfQV`QU< ziQz!FAMt}V{<{oh?^ck4GW3&bb!*P2WakA3Vh&MPfo3o5j(E$OvM>D~#I-}8+(mE4 z6|S6RdWEIpt$?r5*9#e!Jlo9kxhY%It7e`&aT4nL#CGS?BG@dS(3E{# z#KCSY9A%{a>htHfWSOAi*4*lHEUvDI0RK3UuMU5IspnQ9;zR^pvUAkj+rSOiea7^J zi*wMcIN$|NmXz0f4TDs?KwM`+#;2ydj8>rUj4ZB06mbW8m`Hyy2XoDVRXM!La+=N8 zH60@|UaN7uel9A%5Gg8U72YSc@xT2ab|;Oq?F35l$^>bAB9?2-cI zgsv!%7A-sRXZTdDQ@NP9I5Ww28u131_E>^hKj2XG#(yb#WZ)5fkiCLPPEP#h=rC)< z4HW^FF$eL*h{rKowNJ-YU!mHP@Bt^>90Rkj$b2L_+1G75 z0pI3g?q8pXv|wEWy7IK19&&OMv7LAfj&Jzyi;Fj{XDig`EoHpJHEq%o+R@{4@GGBu z6e}O|=1{e=#%!7HR@TjB4P(t7C;F_u2VB1cxR}^wiQ8_aJ zrFY)I*)fPJ0=@l6v^O8w`?V&CyKl-ND=f_A^7#08dU6W?G2#2hyZYTc4W!^YF_F=qNjrBsM7ib~Og1-5&GdpzdbV5`QnswhNlL>xbSsYdwRA8);7q=F{88CP z??ayXA}?QI^5QIa+@+Y=`Qx^5I`Lmc{m7qAJ`XAv{+gKjp2$O4W%UhaQobS4n;?bd zcG6ZJ4+qEU=iRv`ryi8fdnDVzb5eW_Vdq)K7@M5H+WLBHOUv+4DuX#Vz3*G4B<6zc z0F|2=G37%ru!yiwu6^#@81=e|LX2s=%z6lQ@biyJNKhb8mTGAq-LbE$g@SdmUgFtL zIC2X05DZf`z8WG_IOmSl{Z?9Y){)1qOD~(@>^AO(>3>`q@_77-z(m_C!d=bV5AET* zU2arS3jT+D>=5gl3N7)_yT5ph?g+iATY4W_17lKeO`!JH5cDQsdZsJsk5Bv-zb#AR z1+l%H%k6dOWnP8!Nx0hT7KiD1aXHbZh4q#g^Lr`u0(&zDVnHAC#p|;2thTQ1%d@nm zpFe&fLJwX2zQ&DwZa?@5eoUyqCqVd6!ADr8kjf}DWQ>GkfSoO*&tX=+KsoLHF9u?i zWm;H)TY;gPGenYw3yJ6+lJ9xI8sAEMyOO<$kv+bJ4sdc=`wbf|FR!*9ZWO01|9XLJ z4oy~rh;x||)w5^P(gGkuj1b%inU9mk5mP8TQqtt6U3o$Htl>n&saWRD#)*|&P|9-{ z3^rn|t)M`?ULafblp;UOhJThsDxTp++RfLm9*TV=4$2KpHn(UrBX(Q6gPHDP6>Lb! zWyz;BX)$7g^xg{}ivQM8_*&7Rjs9u$MtFPb_vKC_FQ^{zc$U%*^ZwE>6)`1cdk=HU zCsY`7{F1bYS2e%DMm!TN-|EGS!_23mv+sDnh0{s-e;w(p9Xg}bVJ@rP(C;7N_%Z98 zcOZ92L11HJH$7EwGfCGp;1$KL%V$Q$nPi6L0GRRbjN#$(uIEC7A8ILEjkU>tAbjvk z%b-v9-s8wr^+r5}#C?)jXer7_=Fv3G{3e?kxM}Vq zZ`JOu)7@88jyQnv$BRJGS(~WH4T={a2JbMJEp>M`t(0g6}m@0bue zt?gm(fdq@u_DR%n!ny^Wkiw`s(ua+dA zS8(AZutbunlS|6`E5f;hM%{kS4c}hP^2h?6Ua8FuB?3XfE?fwy#+~G-{?^#|XsSYT z=&sb=&(9w>>>4a}mNn&~6Jc@phy0m^)NAX;YY~>7touf7 zd*c>WG4x^dVc}dI_zx6h%u1g5P{|U{jWMZ@eTHD?bYE433Z9)$EW5a4;ilJ5)TAPY zvAOhD2|G_kc=mTHz$ew=h^#*z3s_=*tE_!wUoGk<9m8Y21YQ) zOpT3=#l(WjW4;zdMTcQ>K=_9_sutcbe0WhWYZ9RyRgrh_hhl+OYTc=Sd*jm#-U-Od zBYCZ#ot>S5I=XMFi;XqeHL<5)w$w4Mtx-67_%$F7y60Ih-Jn5P@vb5j+<80jd#Bu} zb^Kv%y|z~)n*77eI&(3Sg>jPK$bhJolf%hyQ@?nq{Kv_h!{})R{j&Z%r+xFpM6*~| zo#7BK*XHbc#u@h8MaSPqzqf;Kr6v7Vy-cT_pwI}c#SdpTgMn3L@GAN1`Pms+D%3JN zlxS$lDwulE4hR0pA~u9PYee zG0vU8Au_+af$CiNZDgJsd{qwKiy*#&dw&AI{nhAt7Wc)k79?fG_Y|Cssaho8g5BPe z?C;XJs_W$W7wSoPijo&@vd{)k448NC5iJ4(1S^DDNmqwMws z?7|pmki>Tk^)E>VTh8aZvlI>thp>C&Z+JvvhLlhjutdv%0f@iLqj;I0BnOQ)B-2sy z9+|_QT2ew{e4;Y+I~`;#Cy-!Wa(mzC7+?tyNUvhOAIO}~W^^2Hb6xi)(JdCO9c=RX zJXL5M2Dv^qR{Pw&DR{?vgwL=n_V61mywkXtAv0>u@uB@zrK6!8cd7j) z4T{J@DAJI3#}cM@@Bv8@B4jJcF-SJ*RNjPFel;;Zje)H<0*dSL&p=}^X8sn6*yLo- zO#wGy3_?N)T@wV?f)^eip5C_x( zvO0dUUfwOBGl`ww(5kz~MVA1K)k@QZ>#5vN!mDc;KSTfUd(K^9jrrhI#7^@Ec?K-3 zFOJsZ4>a|k(Ed+=?u1dDd58@T4KnKM+Le#LMKO{Txm6g&b2U{o1euGf?fU+$c4#g` zHJ0J0q`j80G*z?VFS#-#?)!U?z`C8u<9kZILoM1zrics$1s&|R!6q$p8WGE=UnVkJ zR$3{^|I?1!?PQ$iTm=ppeh5`uo*?ST3IgWA(PiBdSBjq_20u5>=^;@Qx@dtY^C0;l z*A0>k^~=tp(5sQh>PvDm<}Kyb;!gff2A4~9#^OslR?SOCo7YisDm;guto^erW zW_7>IapW`|-(#549bY5@!N<6mSJ-YA-EDtp{fE~ZCgvD>w&h+#Tsb$G1`|o7F%B1! z+!jlMot?m{rhb$i)g^y*^LqA!3a9Ygq9q*ki-C!Wv3hb6a&;A*W|uKDU$AiwJ z^N$C87Pb=IX!PG?^knYji#9(xPu}S4A=4aqX9P_@i8VRkZ z#<#s~B!b^s%J`%jMm+@8Ios3SoFLHvdT2~6ffRm(ESPEW$qqoF6B!Sz zr4$gb(bz}2D%WjT!7$UntuM@LMOJ}*2-pzYEVlwu0B8uDvge)sGJ$s2>y$5aJ#NP; zr2G~`W8S=ScuR(dwXw4=UtvxWU* zwse6#gmdiNlQ~M+)wW>5+h}46(PRP5bcgm{V{tuLlct)I=|G^r-(tfnmHB+MoBxq- z;cjw=$G_!qdT@YuEGvg;ef$xNHg+7xEbaKWP=RA!U3%y?zV{bzrU}5(5 z^<^Px8*SguXNHfs0W)B|N0eOEDUq!XxRp<@_zym14q|z9xn8qV+>yfMoVV@&CCeZsrj9EDvrbwXcXsU90dg9t9Q=-z==Josx z%?cISJ5)7Ru8hWuCDjvu+h~boB34jZwZr( ztBP_fu@cSX($a+DNsA}Yw|-mzJcEJ$LHQqC=E7^UU=1c1?PdT=-!#aV9gd~b1hHXZ z^la6=wYIdivq0s@?2=~FV@TM{no0-7FfwtOTexEmQ5!QVazT9HrnwLF#9Wn z)1Qp3AGI`f>1pYIw=dOwpWQDjxAq~iQ@SV1M{FS^J6M*2w{`-7if z`97IOweHJpu^<^#P2_mwqR=fd+3WAf#8W(`ZW`3) z6QK2w%U|+x55)Vu1MvCYhk8R?Nhx6leiz3LA&p`(8CNakv@nQHRVO#CgT~rdWseFX z&*7_e#%2@bK#4>dhR9^)W(%r07S5)Hl%Kfy7v)`s=WbH&dtxQU!L` zhIn;Rv#mX^q9=cB&onkZZdqmb)yl|h@nq&-#~@8sHr8Iix5FdeFGH9mGJFEyVfqr| z?KQbSa}Jg_;DF%Jgu&Ra_!xmv)mxY0Xl*gH7(c2+Wc18YOZ?s4LbHpNiHc7r5$JM? zP&Z^}Wo`UC1MG-OlM81KeY#zx+s|HdauW<|UO$i0hASIw6}#0h5+*>%;RodHEuB9i z8h7iRoI2#vzo5-3+n~L@KtsK}Kr4PzkU{gZDVzOml~{r&W{VOev0$!Si)G7J{Lf1T9n;H3ee(kN z?YkwjQJD8cOH`wxw#{eGG0evUwDtxh#vd*psXJh;aE?CeYD>|>)mX$53Z#f7uIsL|&mRby{ zJ&~*SaJT&BxBwahbFcoc_rmwZOKAg0q%&u_h)#wthx_{>;c0anahTf6hWSh#w=1`V zr9m)J!qT+_suG^s7A4Uy+X~y=QA1*c^{e@Jl~MnxYdikNNj`crfug~W^M0(oSS_f= zZG*ThWFE4O%R1W9a5taVxNJb-ti0@@Q9nV?+-k7itg*t|6{Y1^Y2y8YS#2nBfqO~y zs#KJecHc(Wo~#Vf+q^u@1SZDH$`LQ^{LhFtG5+`_NZr%4k|tD^znC-93wEY!UXmhH zcD}_mM_l89j}Y@mdR%e^RH8rWRZIQkL}_%ibrA9Hc;35vNH0{~j_T-W?Z~WTnsZtc z$E%U`z@9_@D04S3fa)>lEv6l8$(r_Ob~crvgy$y_rHxn?`4i4oooi0PYLwVIw__l2 zLycfyx}DFe&Z9f0kPtY+;9Ysqy!$2V0=5yEbE+7;lMs2yL0a%lNw|yu>!;2D1v7sT z5s`*`S0L}$9f=sbN4ldI;Z1R z*8!hI)ZvxE&ZqvB43~mdP_5O;0}KC1=fZu6DB{O;&Xn(YHG0k{)9~0xt-{jlcD<0R z%hluKqtH_V^4rmn(Cbdh`+>lP$71KhMyK7TKL6N57dY#-f!$$c0&4xm9wtOm;wjPo zs7Oj`v<5RMjAlkO<|)&JEhh5Tc_7Ez_?xq{^RSaJpvkI1bpIWwM6AiVmHE7Y)&dl&X0 z#V6P~R-5Y?Xz4Y%A~=BhqyKdQQp>5+{pt(6^?zZMXy!`2N`s4|1_ku;rMl%~)ufgd zZjV4MO-*cELbG^VU1i;ht~B(a0I&J1C4!IP=eu01+82 zQnSY=xUsm&gj6-QI5)rE_npIf!=*`+jZ8p}a8+V0{URdh@Xr09{2N9_Mgqgd3JP&e zwTD(VyO;Z%s~|b;9;|8a<>m10?fCd9y#g<_p8bHUOdI*hU>qJ~Uho~xocEUh;#F^} z(_w|va|eWa`5l$eQ|lwf`w*a`WbQ5gYIpF7mxaY)aZ)-6n}rb2d6I>ms`->R&L7L0 zct;?WP&zm?wbH&pKo}=beS|{jvgDL+zlkSZV#lGLsucnE-N00l+$i=2ngahMd|+T;xou~dyq>!H z{c|Xx_s(04-%e=^5wG{Ru2jN5FMDAs<0`~XCnslkBd43~#VsYwyel8%Q1i*y$RK*j z{eGntW-Yh!FizW-GGvS?v5l*5JA@(=Y~_#35MzrYrTKWd7L$!8sb7=!olD(~~o^TdsY{e$H->CR*y&@b%rlhr_3*VeC!I;}k*ZT3Z_bHR z`jrHNaW)Q+Ga$mn#k@i=@VDa{-qM-dde^{r&Kr7=X2h#8f0&%e7*$b@zd~bzZ%|!a zNoXWo>sDa@(7=mLuES~9_HfR3Rs9<9QH`xCwL!B54`yC@i!8^G*nWQ$Aw&?K09-jh443#x!>J`cpcxQ)>jvYRGNhq@ddn5qB7kwQ&W#JPw9_LxGf@eYC(Am zB>7iod`)({`3P8ma*x;X$Z$WJK>nit^pf~=MGaPnLnOl;<@m}cnIV};63UIB8v+8+ zPx`^EG3*UQ zHegt>Zlv3T{t^tMI0UI9r0~vZzl$jOfB!{MlL{bim)s>$Fj3>*!?GGa8`LcC-!%cB^+qgz780IJWj9hlEygw+ya|=04;NIXL*s z`wVXz0qrDApd>j^EIOpNc2ID=)6J}{$KQRt+yne;udbAyUPHF`Q}>UKu)+F9mCQrR z^8SorZ4P@-!WKpZ=W$42zLervf+>L)w4xj=1NSRLJ9lO^ZB`h;+ihfE)2`s+mTvh7 zfv0QI?snE+5*wGD9G6WArfV42sXUVx0@W5a6l%Vg&(5anXv>Dd#$KbMZYLqBg%AVH zwe|DcNH{ot0i8Ef{N9~>%1`EBXN7!M$Ho%`Iy*;3r1;K ziG&{>xb5Z*dB%aZPyd}Gpq<}2;XbXl|C_DF?SYZ9()}w!JW)^uw!JJxmusgdxT{kc zinAc&vBc2Rv#6-aS0}gb)a(UAf%M>`Ly47W{LRTaIf#PQ`iGA$yd4E-iipeU~t zc3XM)qlHffK~>uQeY9sN{-uO%MR@mrNUj}3J8uvcqd}Q+F)4XNfegr!=m#Z3a(1@< zHzk@eizl;X)#1E6qa5qy4^_J58_niigApw)OAs&jHN+&Gln2o!l5;~37ka)yBT{2D z%j(jfxch^BBZwW+`zG#o#;PwZQwR}Ex!Jh5sND8Fr6(Kza*V4C4i4hsW{mw>W2+fP z_X_wLxW9d-m&7NZ$$xewh_tf$p{%O5G))K6YBsmH+0NNn+2c8vjr2r=-6_LK9%o=i7X0j`7}8$efh_nXs+V{X8Yi#2E)9%G?&Oil0&csEFO=3en{o z{JrLAbaNI7xiM9Rg}plA_t5_7TA8{ySx8{N2Y3Igj1FbXy7H?*;KS}^9tM1Z;YBl_ zvW^E7uBNsX+@PTD>-4B4T$6vb@4#;^79N@)wHy<9De&)~srvl+R=VU|B~~^L?KPY~+!Tg3qEL_(V>o+jqD@&oZ=hq4=pk zj-oVwf3#=%62{p!8$}l>)8LYcPp@dC@bsS4!e}h$z}Q(=SGUc+w5+X3K5HOCp(9=) zfdqsYoQz`yUzZx{8g|k%*E~ezN5qtCkR#wUIgtkQ&cW3<-ddx#s=fMt%>+KV-lrS? zVP*9<*Q5LpD`NsJD_WO`Q&;G$jy!Q@eOAY9w}>>Aom0>kAY8gg*5XfSWs^f>YL2iQ zl9Sb6EuF1T=hB=+`}%shK6V16cSOV=pUEj5j78zo!$!2?kkBkK^uYviI$FUSAQ1+;WnI;$&teC^bXFcJG}!4cPJ z-0oQJ`YgpsyNl_l9x#|30ylp~!PSPc&(f6Q4vqxN*@0PA=jS6yv|?)WYM7V6rXp*u zp=NM1-U{#j;+Q49AyQOSw2daltiWJZc>LWaK|ZnJ9IbdVvK+T&Pu?*N9?4VBOA@+@ z2An@Yk@I=+@SvhPiyv`bUQlAVJwUKEPo;y+Pg*sA*n8lrJsJR;IdcP|uK)&k3`Svw z?q7n%;c^GJ$R;>HKku`@;__au0y|M%F@xfdbbk_-VBClMB+jf_S;OIMwM$4wI2tut zERN^QRwL3K9A%Q78Y>j7yScy-+e600>6HMni8Nl)Lo!vMA}hV@^4?3)NE@w0$W*12 zjs+9kwHw!Xc;8U;~X+p_I&)57c3 zr0_F~sp0opUA4Ew=NC+nkz1KQU4v6s%IX?5DNMm2k+@a7r zHyRGISvxXKVq@V!IE12(hGIQ@%~uX24~PhYTzy~j=@b}ugH(B5&d=}tha>DPmeNq^ zpGp#XP%*J{aHxo}QP)gP(J6<&JU#>NmghZZGMKYRwS2+*jUjh2G~Cod5HQIA&Lr@O z2>TLHvt6&Fc0jw^rM58W_euE|~p(?)h%rF|Z+{B&TAnMVxhC5FxnMWMXb zkmg}_)n#b2qtw}g9xN=`;2PZ2kYjcKu(f%|#hTf3>`LnTqjn|#1Ea%7vy%ApVgHHz zA}?`~g8=2Fgi-fP3=OQr@U&no$tX-t*K&KO(ArPtC)}g)mDS&;r>DPjed7O?Ss^1x z>CtcrO!o(%W51^`scnZoLF-kA70m3I;2i^Z3tMcioYp5m?)+&eXV+is7nBr=Kj9p| z@8XqP_X{d|uZSoHUSMNmQ|VN<^HW_9%0S^nGPW=Z*?77e zXt;5a{rgwo4{0jwZLXP>w6v~u#jMcV7POEm(d&$pkQpR^+b~_0i}_pyW8rL*?L-ac z_XYsjR74bwP8X%l4#BF(Quc;mZTje@tin`7qZ_lx=XnI+Duve=t*m}r_5IHY0yMFJ z2d>q#mU-8{`PS_3FDwBZgMvp``%$(chW?66`XY-HrB_Nw&Q@;{#r9P{rS z*==}SqS*D1<^`U>S2do1k&==#?;;~(i&%EmE@CM7|D5&TUyaG)V`GP{S63gHH&I9b ze+~#B{)7!@_2s{3_<#LIomNy#_@6KE|NM`jpCJM1|F0web9IoyknGz4lQd(2fT$MY z514)C=Fo4bfOTwp8?}R9P;m0ompR#Q-(cY2;o--T0i#|>aPUaXxYpsp;hj%POF)io zJa9G`xX0AShK7cgmf`=NbRh_^*Z|hj0bvU=G&HpFoZl$X5fQulKt`OC(f9GYh3L?( zZ-$HA9XwTJ3U8%CCIe(`9*p-zes@*_aFxwia8_2IcY6TLgy7CWjGf4DGhsZ(`>-8M zN}tpH^ooUti>v-N+~wmHC6O`Xc;T*ht*f&$D{!wxr~tJgprvfkJ~Z&%SHo-o#D-HA>`*T% z|DGNss;>9TDj3B)QiaIx!bAZW_{41BwE6ek=O%+FI>vy7=VbuP;Jt@U$h7Ngb>17G zMH=Y#@p;pz)?n*aQrA{i)%@A}gGxb8;iX93VI+RX7#&C`1vmsIZ0Q_oYjv8frN4bc zF-m&(_XiYL?Yw?!XX|+8@WR&A#5%wnQv@ZYo#8MQ^ViPl0k+q(LJF9Gmd=XR+=Fwy z_Kn9Pu1iNz(cLNEXQw8{*n{N?5ntgAs_bWOCck4D1FekQgD>wlfA3QGJA5TPpC?Dp z%EnlLZ`=zZLS8&y7O13ZYAO{raW^}=%E!w)sNQEPJw7@vme<<)-PJZ46|(kfnvM&2 zoUfzWZRjEmOHaJ5f2($5gx>WJnlG-GrjcOp-ukLqx^}Ng#?1}TzkDg{c(x&>r9C-{ z6KxZ$E4x3htq&&VM90wKIy~4bL4vk;&?4=o5=Qx(?t(YB*6>}$!vlwjikz|{Bew_> zs2F`ZnAzD?HFTyHK38|R#$)C7Z@Rpu-Xq)6GVKRPPgVgpsZ}eZ+WXm6p^6+PKywot zA*4e$V}y&1t$?N^Ep>S6;^d?#mr~eT_I4Bz_@>=oP8oxnJKt=^b7J#+bf_5^cY^b_ zx2w(x#|l4xXG$`U$pYfe0Tdazg*p)&9K6ufl$VE^z2IUM9z-aN(r@$g&y>}72ZyUE zq4yDH%jne&AFqw~Xd$zYQjXGf%$>gPHwJZx3eL{#^)~p%rRCi{|Dyk*q_i?35>%MQ z^WS&j_WD@Ck5Zyep@$3n{&zeFdpG%JO~1P8X`acCgKXbeoH_F86EeaX;2Q|7iA~em zq*}S-f>}dCj;Z+oTA?H-zwAvaU*w?OE9^uIdH~sk@wK;Qq}%;_lsio#!g2(+_xIN# zGv82WrGQI)Ltf&HO>JiMerVq`@f9^qP0LK>cY3B@UBX6y(#Iy$kHGH$0{d@vSeVrR zEK^73kj%(ok&)iu1cjiWC04lip=#gR&CQGV*UQWAc2f`FvzNd?(Q!9-GmDtW$hs|4 ziGa@^paN~!gdzs=1-?nG@CmysG?)m&d0@c;OOwALoE4B5b>GA_0}q~(A|p3fK|ui- zIfftndZCcbO)>d2ZvIZnKHikd%El&&FUy+t{#>7f+O6MWf3=_TPV74|I_bUnvN1LW zAXeb}^@~lXi*;zEQzmM95DYRA5m%0&&%vhO6Wsv;pW8XN=Pfl;JFFG3G6?{}E>4?` z#Q1oAR$kAiKl?fFVv@-jOG~L)d~_a9T;RLSYoX5LZK0Jm7kH-b%iaiJXS})|5_~sz zaH#EgJ+lMf1TBwu44Sh3D*i=DMYZjq=nsf%&E~%YMz*WSV@pfmtyNNri;$54^+sn* z0JZjpU7en?Zoga$u-v^cP^5A4VAinec(>WD%~Hupv;O*3ls~=ZNXNoL!bV2MGs14( z7#$t$;^M}~fh`*rW(nklS63kx5GSUNj(@DPv9a-;le7_&RAO^dG856wBSjk#5Ru)S zUGt<(jExTt4iwchyBiu3vyze$6H`%gP;f9T3AtjTVwxM>rcGr<{80)YVN-U z5>HHwNCZ>$<7s_^fx>l%xk{CP0Kp+5(hN_9;zuihhGw@vm;RzgjkHjLhro31Jf*+2 zC4+jNjzt-pLx1f!QUNIRlZ2aVM>&hrt1FT`60`$YXN3l%0hFAK3^Y8nK%t(oNV)>5 zuVoEuR&ojoV^b4RVPS(gCwA=PQpd-@dc<>7HXV>_-#<9G(=;?V=#V{-KetxL%C@^3 z)iP3akgPT@q6aV>FuiyvSl$m_8*19x@#*oOX06R!F^gsaJQ@7b{cb)P_j?v1<(82RjJ#^&S8bzNQiMQ6FU3Qy3@+?=zV++B?CEgO@K%~JMIG{N@%$=^o#!1Pcg zqK=!%-IHCS=S%3k{p-3lyj(0~1e-`)Y}7qTW;g`yh?)~zzP%i2IXM;z%HQOn>5KdA zSDy?R*wsFs_m?J3{4g_i{KEA!IS>kp>0`*a`Wn;bN$T z2@G;QTW1^oEPS*R=hj(YQ}Z*$@9pnqWK^`!<1=)Vnzfv?JfK>$`C$iMR`B&LZ%p!l zb6)RQ(?tiEdBdxHQ*&XW=&&g9!2ar^CO9(f0v?(Q-`K6AKpviDK)AS*nVhV%kObFJ z`9ejN7n6Gt8XR(Pcql9(j)$OFGc+`4*VrUise4&D*7VsPI+N? zeBK~zijBkUb7h+*toc~(T2|ceuoP0d!i2;UQ>sHFI=x%NO$sg z@yB&GI>E1?wNE1>lc;`KX=$*?F(^f!5;|xBCvL|3jgW6A)F{sFWVPShMST2OfeEnV ziXwM*6>1KZO+WBI+vm-39Mf0 zl6!@tW29p%I2lz7UUz)RavLs=zGmC@?7IQ{)wJx6onOylxiCI-llb;mGt&zoS&8^> zH6gMi1Q9+7yHjo3_E&3E>0c0G$L4hZI7I5V-IoNCh-n8DN`KDT>7~LJ!SuiHonB&v z%dU>nthf+m@X(bD9>IKqw5(qY;!;yvyx$sB8+6vj0ZMiTa=`RX&Kc>R%$ApgdbIYoY)m>O%C zm9ZQ&?-BK)ngNy5hsa>I!Mhxlk5j~kf72GgZyEvrfe%N(TDp7{W7zxVp&UO^8JH=_9DFcH!RgJd_vECC}{Iuzwnr0JLH{Dj)2rhVsRA4 z0GM&JkJxz52Zx#(W0TG60L-@kq{ zF^;-zIxU*SbV|N216TzoCwphZHQBr2VpUf7%O2=y!ul82S0+O2mFZfH8IGl~$-s2a zK_trM-PL9_nEAMjJ?!ET0RzPLPaWLBpAbAfUoz!;4>;I(InAWM4JX})9vE^D5@ZW{ z*?O+r1ZU@)K~AskYqOWBZi~!Rb$WehC5Gw5=W+Z7`RT>e^P=U(-L%lh7!nQxLud1S zcolq3r@*ElEV(Q2skSY@*SmGV=7zoKS0`Xo6F*XF=b_07q*Hu+;N|7R5SF|B+$H60 zZob&n**@?^K^O7Qmv@2I?dq|nV1ilzR1W&K?*=nKI5Qf*vvX+R9>ybDkdO?Ng)K1A zxd&dG4@++kn};XWAtm1q$Pl0c`SV)`y${%OFj3`tiY7ABIJYMG9QT-+z<}GVW)%`j z=5Y=xGz9SDF(>1Z7obY0g3GD)ZX(@rNO&P(=`qK4{(PZFi9D}?1k7#*x~d^iE;GyX z6qK>oYDs^L1NPIj{#7hL+{K(M+}(Tm<1BjpII{>x1?VxK5K3#NnJGWV0u#**v$ZPK zAFogg`xAO2LSIx*g-J=%OEQ7!ClpPIaoIgtkya>VJg&FQewrnGz zchBV|%+m-!0+QzQu(Ezy{Aw*rPfiOS3=aN$XRHW92gwCd5TgJ#8nkgVG*BY5rC@2V zg}-8e5bO-9na)pJJkLvpZ6hP*aQo8R+XkexMTlB7k^~3gZ-fT{RaNJ)iW%-hh)e6r z3CRHdbgGQ0l%17!c3ulD0t};e-_JGM8_Y0Pwh<9|?SXi4$5G(o=kL8phW2?lTXuOq z4Y$AU>bwV0RxK|I{Y+454&VPIHeG9Gl_#`R=aG<#%E2ip$Z7VMz+y=^0w&HQoP-_e zd~@uLm@~=H@PkiIv+MslycA_yMS<>+-h?y#&>qd=2B2C7?DY7YYCYT23P*>o$@^MGq4l{OZ+#Gg(C2pDI%~&2Pk^7F ze(giJ;ZHjDHgwLUlq(P=Q7Ur~kmMP!%{?-d2TbuuAVR^FA>*@)fP zgX=w2S!JNbf^{FpAXIHsy&TS&L3HeTi-XfVQ&vWObaa#i9)d)HgH0hnVX-D>0#bIx zdzWuN_dc5I+RZ;7*CPE@2cW|?s0ZGf#ri`=V$aa)s0>8F1NggULW61K2505q%YE-H zcA|!zay%@F0J^kHIG}@B*tFORPCc@){Q)#cShKb;?gE$}d3rf&8pa(b5`e<0)@^5; z6m}XgadmMU!x~%%S@Zjz!kqedtYrdrwO*RE_{{$GXFy7CK4q|1B=cWO7eXBm&|nT& z8~)7nR;w+7s;Oz|>6z&K1slFQJ>8vXOP~a80-0Y0P-ltb7zgpWEtx$W9`4fyq#vDj zxb=0lIhTgROUY|ng=->=l0O;ftB;N~y4)H2eA(;U5NJcdnO&5-3HvADIS^#Ux63i13{Rx2Nz4Cxy{KczdJ$B1lz=Gi~pmM^D`T zYP#p`Qi~Z2@crL>n%o}5ILX^jzEKrn?hEpR#>DkIDJsI$xM{!QUZp#YKxXa&K&eaC zLTW;^cU%O(F`Tw8(3wBzp4A89cRT--BeJ?Q7wIqcvLp?O+cwwx6+%fIh<*1cC7r6Q z!GS^b^Ce0JQAEkgb>sjj?|0G%eKYRB`6)E(ImC3u&Sf7S8S(_fY`?FTHejOah`vDHjACH6e{*3z{i0MDCl+f!o@^JAy|HElaw%^l3(7e}QNIG`MxLxhTo)Q3$Q?EYE4(-EZJJ2LD9 zzv~d(skFx|JTR#7x)%~sM6jCV5kyKx)?$aw@}-sMqirJql`kjzn|(JEfmOMfmqZCt z_!(?ppC=5e>+16To9r?C5fXNrt>z#aALQ{|hd+?n1`j1(0*px$nQ(SVx1@=$bAjYly4RnTi*sAmgm z+{I$j7;#eBeHIn%1G%rTYEY%k(TM};8?Z+D?q_>lB%61&dhY)d_sJQNu0OPS8Gxq) zcd9qq(SMg$cK}F&Z%m32p5T-J16@)3Qy3ryKo#nE1!QEZ_~7y>Z(GlOMqB^L@M8EH;sztEBu=!aPa1R|1qCBws77p@BkkU*L97<68h-TgXl zUg6{lan`dal>42cLE>LGha?7~P|T=rgiL=qs5*lbT4SfgLren?r*|{LqM~-GsN=17 zakdSeUGNH{&>(9WVFPl_qOC;(ii*s(+l=G6F^dAKAGeWn&`{+lDKHULXbVKF!4Vj@lCW z&^#kw=z^{rV3B`6*6T(O*GnbgWsQc}_;N8}ye6e<8VrR&={`LL+Q7y<%4 zy>KBHXV*Tt--UXj=zi%=d!5@ouzxcJAX%9{-^}TJbCm205FHPXg%uKFPH9h*brlZf zm31BO!4g3xqx{54+QXC}r3$IHw|IQ^w>a1AvTo2S&ra%F4dPmh0z-zjgVImNQhOcZ zA{YWP77`L!k#p)aH^>Wde>a;FYHma-x@0)ZL_EOZr5h0_%D?iVk|BNMF6xS<%5E!p zPFSwfiUi;yfPCh=hvW!Ad3cB=EPwK6>O3;0W1Rx@#Bni_Cwl<68o?Ew1_7e>C$Tg_wQ|Ccp3h|%n;i|p;3E3%GNipmvb#;&&t4%DY zJW78XfQP0#E}qFSb&kKnT4$u_-%eS z3#J2lcC5GfPQ+5Bn6pZ@=8J4;iN3}t>^pg8q3BHJ{6w;n*GlB$my=sI@0O^}yh==q zQ_|MP|4TYN@epUMe6!oLjl5B{(M%S7YNuOi(K7r#@ImmklF92JYywKq7g#=-EeTQJ=Q@ z#A=l7jqAEE8i%j?IRr&tvz^(0Z(Zz;^<*>5twb<>d_*iaH%mfe5Ep5(=yN<6VaVXxKim&Dz#>nbYigCz<1e*1Q8#~{ z&2*7RokLerc91J>c|rsBQPO15R!Mq^#rVguEfnJVGK8Svf{CwTfkH=ee z)Ifc$t2*re9rky7OYdf$lI>EwEO*s~#F18|{ClDJe{M0?RUIsgkB_ec1RpuuAuRI0 zHvoU7ab?AY*SQMOR`%kKd8LH#XJbx{s^F6A8GCKWe%ZdhEryU5WtI$uOu0vD}UcP{;A-^YB=f zR#p??;9yL(01YYVhq{(O%DcBX3RY;YlI!}8NJ;VMhZU*mXl$-7GTnxqo>rXE-4KN< z@VGQemLP@S02wO+0s?EmWugmb>*~;>$RZYvRbQV*jssI$lV@w8=68;65`oV(3y+tN zfEd3#dT}R++5BdwbOM^@M+N3HW}K>l%-3}v2z?W!nmqsm(OU=n+5klbGBgo3>xLJq z18cfef8>ytd*6J0?j9W->#ufjZ~$;BE+&Ic$4WWQ`r`KT3>)T(o0}?DszMTDmOc;@%THmQmC& zkz#wC$ErDoxVS_sFROr!K~P+J`Zzq0!>L)b@3Z4EOtH}E$9`Z?IfKZ`Y|t62axV<|B+7a~PNO){`iq-A96wsJK@t{7M8BwA^4CXD=Q zywV-MMO^U=B?jdd`sE67OxXUwLdRqkD)^4Xu2bsN%T>8>UZvj|LUcvP4?$YuaevyX zQY>GOh;aL{>jM`pt8%TzFOt#UFc+#HKCU*|p-J!QY~HIs5P9F$N_yng_l1@^jPsaA7_0lUFh+YsrADX6Wn<#DjRqlX z|B;qbhfgyd;_(-RRvG7JqQ?8>q1=%fe5o!d^27bpxzu0DX1!8a6BqmT)2uJBV z{i$~MW1F68Z}Y0+y{G2bDC!IXNGn@-;jKBZ<6kL2m#&cu-wT5nd>#aY*8_%(jh78c z@EsrcVw8*5fl2M5h8zJZURs|ZFaH-A(-nS!07zqJk7%*vbb>DA12n;fHS*q~d zfFcf=!dVG#WDK5HGfz)LH!hzGB$3;nRDFf@qfN99k#pW^GuWV^Q@DW6Jak^GMBR-o zEsuGjgr?09Rdi$xr7(nvNy!x_7ML$QJq{jToqvE(xlXLHFdK;%{tk$Gc-6l%(66jJ zflP;mGP1LaV00V-nSw{2^}hNxU`9Vlm@s2&ZkYX}oTY7BlCvc}A^C_W?s+oh_g)_h z^^eEB+u1?{fe@)F@zF8&*sA@DeJ$KmrLvy^ntH$>B{^By^gPvQsO)?#)7s;i{?Q^F z4&Ggh@ef3TrKArfrA535Y2x2O!l73||$?@K^nVr#wMcfAYh4=31IBZzT) z=>eHr8U36-zAV$QUap8n0-Qhl;Za8ipP%S(?Ik35W1ga-o*X1eKMQm=ZJ?u~>T4?I zzS9L^+h%)2>Hot@^WqNu9=tr{iQ0K&Gt&3F&o?^Zg*tRqR9=#pzyvp+ zs3(AK8?7E5uNtZN51W2OzK_)k{O^SW`Ft!}Koe~uzn#urPZ}DAcYv()nO6YV$=wcS zZf;Ejjf;cv3@$t*g1YLlp!}!gX8uSb*9>eTE>T#CJV!5afFQdZ{^s0}*HFmKM<+8j z^z!`dLH$s*>&Cv>Hh`5Qr)7vyb^M1yb+;$*1=th?Sy*t0h`P;Fd|YjuWFolDot^3F zW}Bd@Dk_{EEG-QUQF2BnCs*iK@x|pe+@^}I9k~%zfEn6n%j+A!N zK&O^BuZLWFdvMoak(q^fNie`_n&|49nL&|~n%(pReS~m?xxe=7k$X%|jy$h2y&;m3 z6N97+mmz?@VpEfo(UFmWkXF@teWx5`XQTIaWg@9W%}5(mV%Itkw;VhSIsPuU|DF39 z=-_+Jc6EmGnP*uG1q%S2Iy@^q*Q^I8tjm{1hd_X;dxitS4Cq27Hd<#B8oWZ!*l)7O znKW;uW(^r&;2~%Oss;=IfO!mPU4t!nh=rM1#el}9c7=JV#ZR^wXlmxFej3RtAQ0#& z`Z<5&ykl2W&*u#gvUcHKQ2)nW(lh*LZtc&SV?@s8%7T)rCdjIv!$Dia&CS9BJAY1> z9!)s>KViGFke!nf5e?V?KpT2GekR`DnNoDUEDNIWo_GB;Gs3tTIxS5q%DNpbEps!= zpEUsDXXV}o<25KFYQnm*#i9PAt?_LUkj$Fs(tDE5F%EwO6*bJMawh_bZI0hI#R0+p ztZ2_KFA4y!eS4(zPKO@W+`Vh_h)Tu19x_qQ_}Tv8Hf@oQ5@$F0{(L!#=>2bu-|Ot= z`{sq_B^oLrVUf0XjHn~Wm$K?Xo1c4;(b4Htl(`=%DalpOmwfBgs;?v7Kerm(>RYKFQ1c#Y}{TjMm*FBj@IYCQfd;X^NQ(z~we7 zed<&sxiBsM6$R2^6*hWLe)D-j$a@<;$Bmb20At#ryjsIM$5KFH(1`M=HjTs{JirFC!0a|}C7uWA8tEiyR?(XM+UsJ{zm^vT-v~S!Y1-lUr z;xTsJXQ*sgSZoQ)aaZ1t^tzN}0-7o{^Lq|0W_kd*_;UuLHKOp@z+nGx z8X6&(Zg0u|i?_21%c^a=wR9-mUDDm%B@H6dph$N}cXtTV4bmmjk`mJ0A>G{_>&Ex} zR{ZPVS{uv54Lnqs^O^Im>l))6CI#16UqW-*A(O;|3JZaIcHIOS38lnA&JPIeuMTGe z3;dm8_cfYe>K?~dbKHJ2y~8VqWi?Bu_reve-?&+Nc(k%{4__tKL8#WiXhxXg2-WOr}+bIB`c zEz|`y!hndM&yxJ-qE{zaCCfX}^y0jyZ)GU{VtfL}Ok5b~+YxUud3U)l1qI|(g5PbT zQ`yOq$q=u5%86G;^|SVV)Ic`x>|X4q^ViOE9rgB|>yO$0?JA4$1098lY=0kcJ=b`5 zE-?k_->)tmwQMmRbjBhto6vsIMk8nh+8{-W&`n$hdtc?H=s5dA*tw7v6L}Mndd4e0O}d*qvePr~pln zar20>e&rLgIj-dG>E-1Lnf}HEBqBabi-70qa)5UeTj#Pw|0c!5L}B~(>C$E?ad=2u zXGBo+?Ip|@);lt7m1emgZW$>lLf$811N&hM@YffBrS>WJ(~mt~IOg-3xB@U2Z$z)1 zdz_S~w_q|icx)7FXm#$8;PN;errkFxlWj5Uy|j}Lr8|7ZcnL)6@UExo z{?h^d8LhTogn@e3o{mN!V~a^A?S0wXF7*x`om5(53DlFlr~ARYezjAIKe~d{ifQPr zx7iiYNI1-Dnhf-Oj?PL-3RXnS{eid+f*K4B33|GJ{!lBX<8jkF&%}%2D1=eO*gw## zrn8$x=C2~kMd45#n##m>h@mp_HX5;x^dQnJ#-V)Gg8fZta^?th7t47d9y%`A^3TNZ z#V-E!ds21vSMu}~5nKO?`kQkgr9n@gg`)?hUEkrrt>&JbM!)&}fv6Y^x$Ut$<15qw z<1@gb3-eHgtRA?GLT)gCTIMMIX|FIkXJ@SYpl}Yjb3%ev4c?*UgAyeAhEYsM$qTr+ zxE=?cMJp>r{y20rJf7~BVj_gnF=*ZOTwnS+PFVV73 zaF}bria%U_PA76@;cU6{W4lY$;-+*i{@eS|#IF=pHn!fJ(KXKbgR^2x@M7FQxYj?1 zey>Y(uHI6cZ_#tGzo92g)KlZRJ~GatrjLL@ZVJa?(tZC2?g{bF9FHg}p!dbb7Jn*V zEjBcq8w-w#zOx&27ybB{z^DzxF+Up{ZEC77i<`uLDVmy^N_HhEq;l&wyVdkM8dL&V z(vjy=qX*0ukZZ&(JzTox`-X&slwoQ2_sQB!`~f;Lqq@}knHk`12@I6P4O4V@geJ|S z>=KaPC>l4RW=!bm>3JQ8fK6*j$K9v-xta{%D?vr?v!#wZVhxyU?FRo5kSDv?8A-@` zvC*+}QNen(?Ih#P{Kg+NGk}WC$Y^ociaI_H!Jt-Dl$U1_gLV5dYMPdwELm{b02Kl? z8foJzF9KI5uZjBGp~gUngX1;Rv#y$5P!M{s{*JQtUN3)^lcp+UQ+nsMa1TJcJl5m%*^m4 zw^<-GfYX^&BQKsZ_a_$IrGq9p@e0 z-#*jWQa5Nm$XpXjD#w)p-_3~tjFG#v$wMUPpn%L@-RHmR*uP(Azx0OY^#7!!Af^B= zVOYZLV%Jfslmh5U403XT7;kfPKiL>8=k#>@+6K!!|4}uA7R$fCXFez^vun6MiS#orQCigo-r>$cYEqIR*o6L<-vqCK&R60CnNxO1JZd-arr_%w zRm%R?e+69`l?`-{+qtdYAFQpB1HlvCgiA@$1|vK+HWuiwRK9$1c)!=VzJ5J(J#o(Q z-&|tMvu^nOV@6UN${BTtzM`Wu`~SLu|J(`K@T2{g3;g>>Xco)~P*VHPKl`6wkY_z# z*8g?2qNor^Fr47j^?&^rc++;x7*qlR3}Rw3VK!l#8jbv7AHur1v$1bKuH9L9UMcW87lL3cJS1< zf`fylrAp5wnFodkHIt){Wsbl_&-g$qD4+2!JtV?+iLePj9XbpC=J3y6y*~NWbiZ3d zjhQl{|F}_5XZfe}x@XCIkAzvTsWT)}_T9U8zy*uAX3RcEK(PRPyhgIJY>30H$LJK0 zvHVdacO$_hq^%Sgp04|vV&r&3nYPcuByCsO&g2N`QHS_A(4^2Uvcr#5v{QK7%8R@cZ;Fzv}wd!=@>*-z$&)TNe3Ax z4tI$cDOKY5xS_6RwC4x9vt`@X%G(jB$%Oh@&z#qZc%aaik+#T-h z>^!6nKOF$}f;Rm*)tWX1H_inzcuCX2)2_jSp z=wMAJ0g>8s?Xd~akJ>}Bj2P$tS{JUvxSLk8fBbk`;N92PcR!Zca(ogk+%*-Jv8Z={ zd>VBy4^)E-nfkh_!6bSucSHQ33HWSDKzs50R=)H;lhnKZh0=KiaO6LbqL7onFv9YmpS<$t+R{1{91_8!gvbVF`ts5Wp3R^%iU7(T< z7(#%sl_nxGI@Roq?C&`D3&TT@vUHJ^4Ri5LFoUJ~_j`&+yLVR&KU_;aAa!yAJ;2in zNh>Ya{hUgJ|6jjC027yl@>!ej!^z1>)BOOu@P`1Bp1y&IXl_7|=isaZ{`vFjiS_kw zV7UX&ZGKL-3kHpUps!E9jXKiq{oZ}OYg0vq_nVY5hPI{amW2?e%gamJ@|f7zwAi$W z_L1Y`kr5U|a0msZ)cXn@nf8j*zJ5azt)H_aoeOVuES+C)77>cb$mCbQ({8G2*m!SX zAZ9EjWglxcWKKjxw6}Yhkz`BEHay%P85Nb0oD4LL(%C@3S_29hLW1nJqZa3AkvMi^=~)(SEGx706sdGBNv<@8wysm z$s`~{5fES-o1Yfu^i_}-ijKdCJ^;m#<4C|-*D}p`rFf{xI9(uF2ATAo-<92TJ z;X*@)DMt>GUaQkXx9}tF{Bc`f-(atdf{Y>urJ{@i7-0@h){34~_)^K$oIO3;+ih*6 z0pg-w#L&pM@LI;sN;c}w(L6w&#Ky=;$w^7cM>U6v75EbDE3$q$J2~d!(3b;<1ST=D z5G(KO`dMdr2+^ETo|EtZF!RoOmFU}91YVEk!rHfNPXg?OXrbeXzz zYpbV6%-0P>%X6+kNd`<0>>+H}$EJ9zFam-MoiEpa&s_5mqyFfcjAso4R26z;19(t` zJpJ)js9I7|@`M66YNKkC5j$Mzt&UiZv5AqWe*2k}Gy#x_Q8C8hYNY4?3@oiOgF!g? zf`*2h%Zljid?jC|(*kRj6dManKiSw~seb$TxP;~)h6^`GF6?Etmxzq1xw)wBiOo_I z0{(|LPi-$Sx!_ldigqrC6t~fp>445Un?}rS$?|g!wz-Ewy|xZs;M7#@$aj`2^hs*I zVy0uSn}cL(Dvx+QjeZM*sNk+tb5JJPK(s*`Y-2OSBOM?LC5zq|HZg6G&#KmbR_Gq&vCYKKW1kGzhUhy2X0nLM06y;_oX79 zs(pKIMp9DE4fsAiEIr+=)ipD6GZ(a0JT;I!%m`RN9%p*c@bg=^xoz&xItaTRc1Mf^ z30rD!7Rf>jAshL~Ov%s91=l|RrIWmH(asFLn4P%wnWo6Tj>I``pR!G+= z%!D&nitYGiQuPsSK*Pe^7^TWho~@VP`P;IyvwDYjjrSBlMNg$leps75`iGQWN9p^c z?UM!jlqGaAlRmHWrpIJF{puTUZ*LnVeJ90)hpRlvO&DU14w!flW=UOa!AwLJ8pN0D;BOwESh-!h+Ag;!d`+VvZLtR9~ zXXE*MM_V1EHLUfG4Y@jQf&KVX-wJvLni%<9qhkgZ1JohcjY*8%4=4sKT61mX>HHsb zd!j`kx{R{Lej&b{Ata?lj~%L)RH}gIC1I0ISn5eu38*0+ z&Q}poMLv8~&HYeFjT^~L;JNdb8b0&vxWndlt*%w=kR)If8KKtuX;J^-&iiqb`>6{O zH&R>x4r;umxj!9K5PyiXenv-^P(0~P2J<%9V5g+KC0zd@ccN>55$f)j@p`gYk zw-Mu!{>#Hf+9T(Bhoo09FgJ!UO` z)8vYQgXwzX>V1NfnUPs{>S=ZS4MoUBm~LzO>4recw2h>eas245Ps~zFnb;d#>sayS zM!S|h{J`X)#cVliVDmd%s)L*3d5R}!$0g}%b`64q%GBcz+^N9h{GNeKG&3v=^HSHk zU^~9>7>>_Km6O%;KL$ z7fkF!F^~7}zQA#g&stq^8Ox0$Y|LOwy3Zhde!IzW2`%x6x%)`Xy>s0#sk?Gk`T|Q5WWxtBf~c#%>~PT&7Pj72lYH!_;C^C zxxpw>y$d9eN!!Q9hzP&k;jE<&5R8Z&Cl9c+Pn7FFayYZH=6wGyQo2AM@&Yu|o6io8 zTvEfaP_nPbfmXX466-)*Aa2w2(}&eq6ZiHkw-`Q%>M0LbVG{uB*~QW0HwTwiX_fJiu$ZB)?|bz-J9+%3G66<5gs8|X`WVb z^yOQrLG;YGG3p#;7jRMdI5viz7Oftw63Q)CsEw;O8O{u>()S!OJ3sMSL57YMY~SUt z2Y1)jj^yi-dWQgcWZuJZU`Dsv(0lhe0f?Ex>562&Q?wJypW>f|PhBaU<3C5N^mIQ!Q-J0_N!l)}$Iz%DAK0OsgA*Fw z$Ml7>hf0)WNb^S2cNR}@epeyUl?Qa<{f%5L_|C{!L9MC*_M<{KW*t!|7Gd7%-{~ZmV->^;yLiqtkUpR@{wLHR51|JJXt>1UL7$|w)eeKny}r%q zaK^5vFQFE)gK_%$BUBHLbh`)Y#z4fYh${??&D|8fd?eEnk3O=}a5eU@iHRu$buo}v z;axbkx(enHenFC}Xp-$&0Jk8Ak)7E1u2I80@RAfnWiOX<-)lx?%x>-;q7P*Se#Q>wqwF z)T|bjMh~bVuFs4Oza1@9rpx@qH^^B{Q!vVF@?n?6&-C-VAEe((w>!q12gMz3+bRfI z7Unfr;3|=qQRJGVx;1igS5NlsotT*DT>rLkx>Qrb1|W?T%u^En0?sSw!?uB!FFxV2 z+P^_Rhe<+G6o!NgI9Lz*UCY&YFM1bnz!;D;X)bx!G&z@_gdg!ZlsJlsy~(ee4uvv$ z6Q1ZIZE9})j5dy2Kt)X6)KrI2uTVRy`S!w2^RR4au=lbzh1l!erd`sWrmB z4PuTPtL2ArgJ*8@{*~AzBGrIymqBLyrDMx}vi6;Us|Yh40|#!xgOBafG38ES@)-^j zf^+srDVGf$NZ-g=y~SbD3wry7{cG3O*JW)c-P)btt3^-hcUgvUMdF+JcmxF9SfmI? z4SPISJeh*t5Rkk!uTAz626=?}=GqFncRUsB-^Ul~?H0QEZiTn{fyUzz#*X`C%Jt3G zkpB9ir0IKHwH4D%2=z+*83KiYEvV$h)DsK!$$4Ycy6@6B`T5ERI_RrISNmW+cEQG8 zZ!AiFtqp0?zd^6wX{ln02IP8{%|25uJ7amCcbB2Wb_cr`3aR}_uuy%pMYR8pTde_^ zkS_wk%B$q*GG#<79U#c(;*T4};;ebIc*VjSfOJd_w$!~?fGOc1K>vZSguj#fBI43_ z_!GaR++bm7Xq3?B;}@Cp0n+cciQOp8izvt-hFbM>JNkpDI#&GePA1@~a|a`$Al$1& zXMW^XjZZe?<$YdKtg49{U8hG!M{l_(s|a^ti8y3_JV;E&ahdgjLcD4gPek><57@=B z;mCQJRcm6zt~hdq@eOH?RB_`bv(uhba+TwA2dKJ)(9b;aEhuv$$nwSkimyL3Zub% zo#=kdi2ZUkeZYD7$Nl00^SI&IfauM-X_`&VTNuoX=rv@I1WDA9+IS)p|{?!`ABS z08Y-efmArNjQNrVOmUk%!eOmrPxTqJO}#wccN zq(;>c$ZcJo;-bSHxj@MSWGA&Sd#vUuWg zUVMAV_WyuF&BNgu1NCWcDEj+LHI&cq6tiUB3E>2v1bVh;yx5(!Fo;DS27+z# znVKk{p8~O4l~kM2=F^VszEf)9hzB*GbuB({(3akDYn!ILytyX8^V-=?EL>xf3XxpP zrslC@$-8m*#9UcYN%-MHUC%Z0Y1a#neg$)Bt`?GU^YyCC{VK~$J05R*6SaGg4aJ`3!7=X7N znAMNg0{;n`h&UDwJAZG`N?6$s8Ath$l$tK*G?2SaS27Yb$y-{kHccq(1U=MOrp@KR z+-mj1Y7$GGK1SdL9pu&b<=YbD7Z|hp$q$d>Zf@=_dS7RfaBpHIc)1Bu|LCaN43gfq zQx}Rce;KA3_$m+zj~d1sn(^zZJf@c6VB(RM(Mkka0De^25=rG=C9p#aSIZt2E*Kjp z@x7im8!M{{@taLmhU9m`VbK(?N-sB$1=!`aFiH!ZsMIL5(r3CH1VQcKf%rAGFc z#(iG9^HQ$CmDds~*Y>ep-tQzDmH*YN41Ku=w1zq(HPq;csL%vBV`ZllEVvBQ75L4N z#Qi69qK1 z058Zb+LxB-go+&r+E!sI+6rkDlX}5)HyS4D>N1s9ihMeeVT`y9w{^>fgez!kv#nU; z{hOs{r>$axYvp6E-KA(`af0J2n#(d1z_m-9ZPu`nD)|~@YEji_+*GKJk7I{Za&b8Y znk^UoueY>88vQ`0vVim}-VBxL&yVPes@W`N?Y=_gPjmeiWR79Mmn~jop%4K5<0`H&Al4M!@hc+ z7V^Lz>T)9L0L#NtY+v(aHOVWKE}s+S6*BE11SdG~TOE{|Qpbc9I&qLOL7hm^;L2(|H-#VHtC zo14$o^tbH5D@oRWRN+SN{~B09AVo83h9S13ueQ@|A{T~uV`;#tc-54ap;G7MPRh<< zdE=q)s74j4nOeo}@lcRY?T49BSX89^pIQKYXq62(pWmMrC@RUJ^caTz47%R%mB%7~ zOM)O05e3Jpl%y`GDNyR>AbRqhm3~VS;Y*{A?Hl34awOe`RdYMLUnkS91tciW`zJfe zQGJj~Ij3JOa54FsW(s7Z;3`7dHze>#=}t)!F4mnMgnp-vgoLz0<-;QL zela@mj&HPQl3t4^_fyMfCOA?=gtl+AIPYhLw(X?W0$d%7B;o(QX$_eB%}Rfkv(ZbK z_f7_F7p{<-#Ui#A-`R+U{qF5x8L$BF*Z>8;WR|Y=SDv?BY})6}VxE3_q4*e#b3UgP zxR3Rj65n`<@bETLUjl_&P>}Rn)!3Vp*Kwi4+6u8#XEFqxbb&AM6k2kA*ay>i-(|K4 z@^St4@a0D05zzqPq6e`E8?LmtbS%n^!_At=WkF{mKo_FXfde!d4+s%0tzFNn1(?K5 z7V`VtPaPB#Khs`;72l%6jo3faWwqIZ4gc$09JL~=fr2e(gW78p1QZmEsh%{;yf1!u zCcWt0gPVYQl(9?1gw@qaeniVy$?v0OWcFHjDf@I&(ob4l^)l=3=P0Z|37!N~csOFV zN&(PZCuey0!%-=undp%k3+*a!RGJekTY_xS7PA{a=(v4B>z+Wq`6n|kuZw14B;;`; z#fPXgwNed_<@~v6lCWSRJk45~RSfi5*x$wGpQ@sQ3|S;VTBc&fYQ2OFpVRvH1vHA? zOad&$D?SGdn)oZK=*HrNMF~`hz~4Z=K(u!O1=lQoe=3sC$4e7L#|^>4>EW$VfUXpx z?;7jM+m9G5ex;%HgH{U>OUzXNo*_Bs$Lpt7Za#AnnTh>|Y#lY~7z)u;GH_ubR&@7YaN^S(E;t>KTRY@b+A&M(3?FgpGC3 zT8lGS?#PYJ9J%zdH;beFQc_@rHjC29kL9gN>CV8WGt9X_JqJJM4}zcvbS0qxj(!U7 zsz#g@TQcf|yqp4-2~{$>U4ThGCx1Bg7qHvwoa!=-QBzX~EwUdFaHNXv!6ss*&CULe zaDXr2s?5$jeduSQZpHM{*+RkU&lF?o4GtyM>*EGxR4Sy%!Bd5nzmOHc&;ec1#hUq+ z-EHs3J#SnzmJkW@e_{rM+*h#F#IL?$)G3ZpR4 z^r0`CZsyw896ZjViZe)tHwR7CW4a$242lJ27San!^(4lmRMeEfDhu$Aivdy^flhHaoHlDh+fEf#m1URL}> z>nZP(wI(>fxZvjC?7iFkY~X19 z{^A5{)sjk8qkg1x%HZ>*lr$0{OF%r|=AA`yUI7|OOTJN{>#r}Od@&rXy4)Dbx@rq$ z;}yu-@CDZ$wUfvULh5&TKnj0k^V{=igpzx~d9o(D)ZMJWG?4&4Qm5&i z+B=OG-Y`rrMa_0!R(Woy*=#24vj|I_1<4IbJXTdTK6$k5k4 zOtjiCzwZJAyFx;af!a}8s(V1F5AEIiw*xQh-tpV>w`TUxs7nhdhV6+C0=?>quK3va z*s__Q)R1BPAxu1g)rWId(iz5 zXrN(82CcqYR?uokHCswjXw)5=;$i!dZN>X8oV?V+mg5_3v@v-u#tAH!HJ5&alkN)I z<>JVxg*s)34|zyvckOr83{|sx@~aFO5V4nD6x_wN+qu&dWV_a?RNrk92nfo7YaLoRUR8m*B zp46q27nDE#-kzDcNJ#-F{$I&)U%q4rew}1|83)Ril#-L)aGcHpMN=1_9oQt8iiU1EK*{vZ<-5 zAsl@`f(+n^b!pTjgxm>Ori|9le@z{qfJrTT_983{k+x6oG0Blg;-I?KTJhY$0vQrksP;Jxqbh+LQf{?OkX;f0OIV$CX zq3^0h^1ml6bFWR+PFUQvHCcTV^Wr)J zzOXV5cJ{CH#YTqTiiV}%CE>)%6VM;*k~Hr`Hld>7>AlmTi9$g}u0)bAF1DbS?F~sP zC<>NvCMF?kN~PT4=~EXjFfwDr)i=!Vf{vazr{IPyKBFLu>Xp za$%X_sBB|AZ?Qd({_SexFE%5Rz)5lyd0#Eg{lEhGjkC3dQ(UgMCQVmsnV{4+L9Y@x zE$La}!c;!fBgiiB0U`6Ps2(vQsOW=!XmuYKUw&w$@l*e9*BM%fW;%C_0 z^8sAaa&leXl!t$bOZ}C+oRjd&1AdBgZ{p7pJ5Bau>lH zTC`LS#8#Y@*|@*tUSIZk>|*xr4SA89JKhq4x>h|N;{Z-TS~Z81s>6T26KHVf}sGt+Jxz`LJoWyZlo= zz9mh-K}0;Q--V60p2Bfh>ajjeA| zwF&KzXYDoB>mF~c5JX_BcT8!dVq+txnp5-2CEZ*Je%ij)?LIp_ZF#&X*r+&NNOrJ< zip$KTe&VDMOi%5Eib7~|LvwFjeH$ih#l&pV(&nujPYM|Zgkxc+fWq-~$}Bv{UM~JQ zF(DpAYPe^39wwuB9QUT}6aGDW;NT=??XsBt@RQjjlY~pOkv0Ko9T zhHr|Ik)i6+KS>g}A&?&UMoZU|IQ=TE*`uGHM|DCq>ps9FB?-!>BHN7{AVg_`yiq((^BL>>{AVD=Q7yl0Fl72&OzY}AJKKKWz|0ITMMzD11$s?| zw+{~D>Df9?@R!5$6t8ByX0g(W)@Yp5_lRLYK3rQ{>YJWp{Q2`afIG*vv%5PTVg3%+ z3*}?y@Bfql&-U>;?y0D7MChaQ2isXc0;ks@eP6`*7wY#&a8achR8C`Qu#t|23R}mUd@*#oyNQB%7Ox zijSIquO}PonNP201FbLPi)oyco?cc|wgs1(qFvwj(i?AqQn59}<}51w=ua~}CuLVi zIB2lR(6eoHe)^o~)E49}X~?9DMS};2a=5jZV;cx`K__d2jEn=Spf3pr(Zp&d^)XgF z{%HSHK`&&g*2$V$r!}AM^i39Z(Q`;Isw(J z+QYVz`w_Uz`&;fuCU%FL9gy0Kk54cQ3wyY%%kL~9O|Z-%uOv5L+3ZKMg+VLu0q_b_ zkxW&zxe~i&ba8V4D;o+`W&r29q6A$+jm3| zNicrlMZ}~;RZo9V+0FjEO>JuOKFV0l5rbD-AnW{KECm}h=b_n|S5T+)=DRLG{mNxm zhgej$;x$5@miF{O?{+fPCIr6YyXLR)GtT3dr=JJx1G_5_C`JLJ(Nv{&!US)JA0!NP z6Qm|$ZGu<&d~smz^WRrmixHstTRR+Wy`0`}4iU}YoB*3a1nCrFtL(e_N7n)$GW~{6 z?q9!>5Qq-|7lMU1yW578g*Kf2{kyk1(Da-F0nPEzzi*RD;Qb zQuQxXrjN%eK~BsB-(BuN3m&9L%ks-m6}+Zy=)0Vrx5$k0v89+RJ6Qj^e(j<^^wO~0 zJ-GXMtLxBJk)E#DT4(Rx1_Al=*GJ@Z)eWX!d*@ydmUzhH1P#SIF$Ho#F3yjG zej8`_aL9-edOrpxt{24fCzx?@?0i4l+S<~S38=o;wL93lwEjFx{RdsQa~xM$|3Gh2&=bq!We4U%LKX*K(cL`XzYb^MRj(`zU883K9~^ zt5@yf-Jft*d6q)tJcT}^(@5^Fh0unvRex1A8KP6HA07Gr>@mP@#N4k=os(M)?7ZXj39&4OT-x6?RRav3-td|GsW^K3}puG#=7gHDcdHJUU7|UIW`gVLuC3O|8-$&9=Nun>QCXB`%`%H&xUAuHoWUnaSxJzJ?`^UM?=3@fQKRAbSv-01sZ7U|Ru5Ovz(3g6TPz?h}Gt zS8i*}Gw06&y~Rd%ZdG475Kf3~$I$XCLe;<^=YUol4RaEsx*m83W(55GnfV+J7l5Hb zQ}>>=#`3VZ*?1kCmcmb$mt#&N{Kw7Ro!(pc16kDxb zVFsdht(KghI!6(W>p6NAdKE$1-K&L6O{Jh*-nj`8wvXpxfy1PxHa%5TWqzDKw!ul* z#L$QT8|-UaAN!p*hQm*no*snL&xXQ@nizQTkDtThe^QF7I>>?JXK|(@6u#b{$keb! zh-3#q;g?8EmgPC_&6X=(eBJWqA=2&VZtR+p+`!J&nAC*Ci}BIXll42{&zJkW1xQ#> z8I53!HrouC*sd9B>k`C*c|!-I;*f1b7j`TPQc7 zcwh8}(w8{0NXYXO;Z^h4QjiCHQZeJf^s}nxTn;&>L6M@e=HE1@*}po4b#&3OD)C&fQc~g@etft~YqgcxA0b0+tO}2mJYJO|tP+%xey?~(n%g^F zc)@)H#1SvE;zaZV3sk&dxa*t`@4J9C>qf6kPcUp~aV5DfMrKZk`SWL|pJArth8A`S z^~frd0OWM7tPfbh#|UJ!MLPq|z?qQ$DLVSjOY^ppKk8H-5~NtoQ&1e-8MWN$M$;RARV|igJm_{*rE=M9ZY(`Lc0tfqJ{H9lP`{TNh0la?g!m|#%Xs6? zlLNLpszS4`-tzO;svW;$Nn}ztOHNVOdaLu+Qtkkz4w572AAiCe`UKU|rc~nrXD*r(px53N!#waR_jTiMjZ=4(A6mp|i8I<4AyE8!8S6%ig?|(EvCBeO7zh_BDFhR z(dQW9aT}aoe7+SF*v!4lh))kC)%5ljZb~9P@@)M5+`ZugNb&8Y?a@(IVWh8*u(?gF zLm|??+YtZsMryw%7g)fxi3p2Gsg_q%)UvK2K$}N)3_uP_={VLY`@lm4Rg734f zx0r{(=QSLCuRxhNc#xi{9IQ1)4E>cV|G^lttVBvulCqNk5NigEtBjg0sw9@z)I-Cj ztYziXs^%^YM{}-jwVNyw3F2-tZ7c&|nPic5FK=~Q{d$KCLVJg>Tl#nE~ofXe_G0?e~vl{w;7bei)3JjHzg$J?Rh;6KO!WbP_~k>6s{ zE5*`wb#Z5ev~*C0S0FFLlKBI6n5NEBQVK164^A}1O@d3t;m@7VU(9+)yu2JsreD5k z!UwP4B+uu97%v3ufWM#c@88`wLaU;E_xJ7FGq_7leS*i5Q4!FxZUZkSIv136Gd-upV$@nCdz@IXQh85%TpRPwBMku0Y2s(@m5)v^go)wO&?= z!+xo+||BMyQ1pAKbYnL0e z@Tvzk@AHM|Wa*~sF_PQcc-np~t$U&IynR|1Ah@M9~Hw;lJVq|g-p>Zn7Ih86`I(J|25I}WV9=dFpL{J&A6LsweEr(|tD zqrf+nhBA1ANu*FaZ^;3{hm}?Io=;HF^Fr(5YsGlj|G|v!w4w%VdkGGZ_XqTR63;(j z3S*D)fkE^-72IEo%H_Gd?S5tTN7t1+;n&INYinz{IXM8F!HC`8*|`oBz++>4OB@-0 zeH^QoV+#xDL_~s0vyY*{!YX+gj9!4v?<+F!n?q)aJ+OQLv9$(eo=6*0hY&o87n zkMVz8&-2}aF1FNbGBPw^YqzRuOlPM z;_trR_n>R1WMq7Vwo45O1xA$QjATtMEd#Jg75II94H&`LY35|GoiQ<}Z&JIufL!%; zC%FChl#Gm=fEgP2Wo5Md&{_&w0Jo>T!zzQ`#!{*I4TZxtzPDM{uQIQr3yi-X7yJ^s zq39skD?cBb2UEEuB?5xql+&|-oI_wRsogcnjv*5Eib&M=ynt5km+hB5wRiaA{r%$o zeA(1{DNBJIU}G@&q=L(xIyx{DR8aVxR9IMvI8?xHcVJ@T>v)`;T$pTFxYbtLGk?BJ z2;ita?`jdde&OidLM6+0T0uNKfZ!xdIA*}DBE)~bJ1!6azI1Ob_2N5G5y$4O#59PzJ@ zB#H5}bBbTee<<{gI#0h$YENUwF-&)QtU7T?o_duYd6|_o^II-!Y*@%iwZA2b4G2=H z8oW2ALIgnSeGcbFW}Y8589*j~R*x$jy z(6H0rMWksI0NKDYp{hD=`3VCL?-xZ12wf-xibHV<0hDNNV2_v&C(&E1^wfTD3=14R zU@Q4d&>tVuKyEsFb`ddmz|T@Cth64uP;|bB86;(%o~mg4`I8pd6n_oP!L!B^h(bUP z_x9GpNUh8M;{nt7^acZbbbAo}14&A6^^0xU%(4pi8yAL?ViZh#^9`9bkLd9J| zxg5@tJWrQnu?Bjkrsl>386Y51PsA`!X4ko7Y;+bJF8$ii&!tchF#Z|HV7|3w()mf) zE@o_O0$vTE@sgC1uwEY&MF40T)MtS^CIwmS(_k=aZ6>4yuaNK(vF3Keyu|I4o@#5t@>|f+aMM) z;S2y+5BGyKJ1F&nnwpxYQ=F$E_~`!^!->`+b=#6HGU9(@IEi6gOo&UTOu#ygtU2DJ zlFnBM%}Yfp`Q}5zRLlJG_ZrP3s6oie)pYTvYFkrMQ5hN=zNSvzES(x1tppQ^I;=QA zCa?MdoHfW2qQS($&PpIBZ!a)02GRptTQ4tBoB!5ql4TO6{*QHpnYweHU3hEVkeZS* z)Im$jTGOa8ay1eMxF*W|VV671vbD^EY`b!!o2k`h33}Aa9Yz!acwjsQn}_e0HKj^n zcacu11sNHcxVY%(>;YiH-e8O>|Ms>ZKVQd_j+>eQ5){*6|9CrDTRRy$*_swsczeUQT!yBh=B;0O)ipIvm?)=^5pQxjbmX%eA%*);$y;x4# zB=Igft3=HDHB~3Tvuow&gA!S`jRu420FEi1nqUk;T3%k>erf5q*9-1qhVQ<)E(mZ5 zElw@2h?l*%f=V9`X^aj}ts4SSAEMSG$jn7fxLpXmv&kpFT{u#cckmWu^u2|@a^LWd zjt1Q~31A)#NTs0G&bhX`xiRaHiP$+Hnev#NWFd#1@(;iIv zX4F0_q)!POkxs;u#SB`L*NNqwkOFY2w!42YGr;8fjfXTEl-JcYJIj042_1xTA@YJW zWpzz`pB#GY#kahY@J}J&r0C;<@)C)N7*B0G)0{*0UGy)X*wnbVl-LMS2w5S9J>7;%#CB#TBGTBANp)JJJB2LQgryM3y6)Ilw&YKed2IaWQdLL~*?B;9^0Z zZ^RlWd3ZZ!rxdtlS=Eg{c?LR~76@Na1{Ko0(ypiCaN11a#9a-&=*(zt1c2-d-eXAy zMouoS$19shZaThQkmeZjbOGQ1PxsOK?94txP`oj~0JS0B-X<6Vo0gbJfQJT=nL4tN zBwbr3MJAO3VvIVqz{X?nkGoUJg$mD?I;)c94K?ln_jTQW_Q!=D5yw!Pns`ODv^4Ts z4Ds`Ip=&@;Vf$8Hx1pH$G}{3*!9yGOlLx zyx_q>=y!e5H@Wwneqy>)+7|h9?yu}$Kztik5R{AR96n=c^#`e$^OLOnvKEfkMLnIR zPE2AV^Pk1<1rWjw7^*QDwe1`r!Tu{8r^+O`RRzc@99D>s#=*A$1NsX^aOW!&Ua>U4 z_8c*gu(NW=e*}-B&l)7QkXKL;kBOr;J<*<5&O_3&0~Fvn+MyJ+KSo1v^_-lhW*u-k z?T!MI2$rE$t}MEuYPV(WGchyZ)2%;S%7486HQU*Iz=DqzL^2dyBKPwws)4~S5gyb)MD9>C#SWg@f zUBkndRzq2bjU#rN9wG`24P6Z(W5j|mTet`H!8N^tUq1CSKaDU1ihoo@goTF(@)wm> zuLB?K2KCm)=IZ(ezwc#yk`F)7JyR|1!B+$c)9$9JhjTbHg5-&mqbg(s*c(fLr8l<% zMvxriV^M%}3DOc0!Toj>nEK_VjLyfaa@q3PxmNYD1cx70z)h1H$J-Z36|`G6^Akpi z`jAA?yU-BS#M`{I>e|k;W3-St9+*P&@4peP;Ku|`{)-h1N zuqye^EY&&J>3nP(Y=iL)wgUH5nDPfkQukxh@bGXWqInL!on3bDTHtCB8l^GQ@fE64 zDLb)S#~z5qmF}!)bUG+5Ep75Bl64__`!=>2!JH1$a$8PQGxZnAB9gt`_IU#e}#0Xq#*IDm)Ujzv7 zAbC53+zw`OGvHyS_@4MB16ct-yS^(=a^;7=~r&#g(j+jsLP@|muZr*_4Q|GaD1QPCLfnB_y~=nQbl6jjQx4Iv794Es>RM-- zQdtB4v+2ych!9i6!=^o+m#~)yHT*gwYqz&>q)fnTh^5-P@yto*olPKuFozn-Oi5|) zg`ZpTpQo#Br(RXafjr1922KN=S@- z8_I^dlZ-*(h8jf!lP4TKa!_!EDOsT*+Gs$GZyzQBMt>R9J4g=7u2^ZRz&Nswm9%yW z3E5>@0G}7&f1{{a+a4E)1HFYk-RC0q(nHQg16PlmDLx}(YUP+he47N=R}$@hfrv3L z$ml9y^x6Xg;oYr`aS0ZVSJ4swgR8fWso0 zQqm0~-5t{1@h+a{ob&yScMSeu2#&os`@Z*DYtCz4pEdRqrx#{#gM$&0faRgVRrZ)( zLUe{kA8%D=jAI*0*cG;`A=u2&pkoFF6B88+H|Y8$S(`|~=368r1kSI9zCU~?;?YsY zHq`3i?O~{OcJEF2Vhex%g3gZkLX3n@5EZgQ9taaI%-D9Cs*x}QI`~I;uc1W3Pient zT`Paa!@+xhY4t#5^Pxci)GmSo1Hs?_^XJb%tzFTO0fZn9O4y{>&7!}Q-c8UbMjR^| zNIoaM@SjaUTio+^q3wk)EZ_k>tY1&F?UUXX!Z);>mtUsQ>QhNONDUIckWNsVp&RCf zfbHrJa$)2ND{JfZNP`9^(E-sk@ttD|xb1S~r7Ms$nBCO0t!7!0#)<@ztzC|6y4x$q zPJk%nbNKJKYC-aeUvu8LEtPQ`iJ5A%m#1akp35Wc`lFEt5enoMzvEg$=6tv=0 zevgfj_jqs>@7gXbRJox|_-61r>lFX=^{dElFs;a~mL}jcv$VxB-eLZoNI@|)$?hbB z`+KZ$(x0QwVyiQCj;B&CC$Aw`P{rK-B*AhzBQxr*R~|44vbrrApWcqD{4v=PA}5xNB9_UN0BvZ{l!+uBcnVaN;kIHU1&tmL1g1#|DYTz z82_SGmtZVCGgAPF)PoN{7~(}Q2+h~2K8w`1P=1O(uQ!e_%7T7PyOsVF-{BJr2-q|x zchv`dNd59MRA!W(g z1}A&H&?#taMiTN4kZoczXz5sh1*OnhDxa+TL8rkLN6ThJVT!}t3kGtM#4sN}>2cJG zb`fpGa`KI$tfHl(mFnfksy-!GVEa<VqqSO00aWG_3l9*)sto$yLb5m zU*(AFXzo$sQ)n5R07qh6+Fl9N*p4BPuSVa4&crn;TrTtB%A==^;myzAR9*iZUp1tC zi3)Gjvu@}ZA-m)92TLtsNw~Oat@q!{%Wh|Ze34JW_xE<@UCdn^bAIvmV{cD4lL*rB zOZaKjKsycIg*K4*LGPPt{JmSJy1cZF_}&b(ZxA_tfkv-P>IRj3&MS39Iy7uWCgPQT zU+)OUcu`5*6S*y3J54X!!z6PSDbrX}ug)9jo10)wpaae(ZcI(*0swT2NkFI|Q$sqc zrtR>|C4AqokD`x4C?p0-3l!}yT+`ARgpR)rBU?P45bn<-ZEtRRKHz%y4(=4ld#)*m z|Aw!h#OMJ^MXKieKZlOAiF#r@6bwRd2S`(gD7x|?wVZkezQV$yY$+Q)u@ctMot>m4 zInrvO zm54C0^qO_Z^~?EqK*|i;Tc^H6D8~Mc*+U&Kd{yF;hSIN9y9#jzUM0I)v$hC(ISS{TMK<9W#$S_r5wH z&eZOVtDTRz-PQ@R5dO_XBe|;b(CfQiQj^47+1NH1Q@ht}NcG`ElO z?V0mZEu8`5o-(z5SV>36$&-`QVLmWPoAP;F%g-0*;|z&3)#B{rMNz@ytAKTvrITzV z&#yPHGKYPoc<7_dSj=@rEw#0!?3tenEK}5bd=L9~Sr9_TU)!plErBSH1-9Qa>C-Px zW%BYx(HMt@M?#7Mbi6S&jWDzaUQ!MBM&W}fzJ;I0tXT?3__s=v7=*=x$J!^e4-JpS z+Nw^@|kICr4k;Fk-d}LVMqbSKT8y$o^#R;(pOJrT;jCrEDb*k~vx$I(r=zkdL zk1G%-lhD()^pJHr05(m!iq%$iD(ujMpR3?p*YL`OZnDtI6J{v( z6t-hG%!%{8LK+U+KvWX79LDAQ8Ll?B&pLR%0WyMsVUlkl#KCt;IMye+Kf>1?pr2jQ z4_u#grW7}ZS>cv&_9U378JRUL9+n<6bArm)%RxX?WHhNeIqS}oitE?IZLk)rWtFn_ zOQdz!9l*iE)6&t&KGdR%1DpNbzsaER<0Tf30!VzOQH;TbmUe7YtZrQzT3m?<-bpt) z#fu!csgaS9)M2!f6Y(z1n>v=j>j2>o`mF3n68L;Srtg4+AFADMy06!iBS>Va5#0(-xycc)m`jpYlm z>9rG!K?1UFyrS)J^00}9L~uS)sHU>zsAWuQY)4j3iAM(AxKU;uj_)yHo%QzV={3Zt zfYRSzXlGXUbu=aTyx@!5@bUCmF~xZw_~o+|FqC<2%LJ-S>>MbC~oI%ELZNOSc?l zHW{2DO7k2X_w^NTReN;(`BK~UC3SM@b4YO#^<=$vJ{=?ox{Iz`U!u2%sS7v9s!4g; zf9@)^f4Fj6-Xf`#{Nlv~lRAdo0{}&}=rEH}v7umLV7Jw`zK$Un$~Au*!CPlb3U3Q? zHOz=ft8OM{n6rqp3iVc2u9ocH25ADs3s>x=vNq4%i@m^$eOky`$kpjS4#@lJM=Ma{ zfBN&i*!F4ssTZiAYi*Q_Sf1g025i?$U0u_jS(zUDYBvLe=%bC7rQZRbb`$>xb>11j zLI@1+sPns-sJWdPUVbn6E_UqP$b9)fK)?T4ir!7gXG$6u>rvt4!wK&5`>=V)OrG#~QcYh(Bq|ls+j`7iXocD*CJWphs#H2=0kfU(Nq&Y$P z5en^k0lUl_W-b+$3)B?N-s+Ocy6@yobz2G+2T%GAVBYY`M=RD-&kLU!uZx@HhfVP! zH5oBHDEt~kO;1c&FIJ^Qk%qv-Lo@}&O8~J`p#9cNGx*ObkfB`O8UjEvRou3#`OJJve~o+!CPkmiNxos@m|b-So+Q6i!;He z3&C(WY*96|!HJ1}Wz%y=Jh4qL7`$`u2GvLFrD3;t01}Tx_&=lcT3ircfYMX6(k{n& zWW}4ZclxEugc_3+0&iwVNuOb5a6)c-u%^ zAPc7{zssr;1OhP;cL%2nU(#7QNb?EU;*@7{VL0NB`g1w$mUm4ac0jG->`>&acK37# zZ@_kRV^+Ymh_v97!l`rXB;qxS0~MWTlMC0`Qz1=F2AG3>z0_!*L4sNd&Tg3y)diWt z;@E&JORrK$Ih@GZBDNl{TPj{FX!B4r2?9bLh(VQ7XB z5&wX|qEUU;kT=~QvcHEZdU$P4ki4CRv&e}~OY?JQN|9M;`8~OK(2^-AVB@t}8%N#W zuhdN$Htbnd#R3X_Wo|#GW1B2o@++@Bf+?qPFb7XLUS`wsI)pP`LSr>Dr*D=0HY{^@ zW&zzl`+3cJ;bD-M$RJP*R`jxBE|4)T@8)!V7TSxB8ZXW zkQE23zQR95yiKhIw;&BbT~VU2bio(}pcCLqh+1Pa6Jhv4!7!m7GNVEVXaD`9`;-YN zyohwBn_fyMIEVSr@p!N1IC<$U*>u;~7bKG>TUVNh+Q`X)X>=aCIcF^`i?;Hl%)2*- z0g6|$l^UT$Q*ZtI#bD-gI&v}(_4F91s0@7G-J;0jQI3A2RX7Ug;x@l}Sp*^+I}(u3 zz;f8+)&`YEA6ZjLa`g?j%RD{i}sM{Y$e&yML8xKv6inpkmn+kzO_b4tl}B@CQku z*x5OjeI(mK_51MQ`je8^bjN)&9(9W~&{bLMwirstLZ%gu3 zYEh*!Nzv3CvJ_ob;ha{0zmVvw1MG+f;g8V>jgF3vNCN(jL15{1_)YJvd1Ysd&i0mm ziK-o>BHrA$r_TKxR8{X1z6h0i>3yL^aoUN!-o$WmemP<>Xb?vt#*U7)8elHZ*?;!K z#PuFEOGH%JO6&Ld_@FOr%tB9m^2#|BK-ujAj4j+GG$t%8EZ&eB1?Pp8y(h!M+W8ym zuM(_bwh#b%;&Toq7l6opnpCAyX+l1G5mQLBaL}4?kMpj01=fWOrAv#29zkHy`)N<~ zCX)Bi;N@s|ygU*?Tw#K}Y%a6h!51Hz4i7U!ksMgoUUdvZf~aDxjh?PN&tQ=3l}w17 z_Kd>?1ePgrlNhAL{!p8b#ozv+Xc8tRF%0_NDT1rzA6}>lG)k%(oi$pY&L(f5Qp2S0w_+%(`;bg(9555A z&Bz+5dl07^73=VCvB1X%W8C>^N7i-&T9gya8YeTZl#$J>giiM4i*Cn$vbNIx^W0y& zAHI#Ru=SkRzD{>BOKH2_WW+%+aOBFjRJEGjXWPKT!YcSJ2?p{x-&=qDmnxF$TzM2$R% z01fT7uz?HCPZwufB&}jxRB;)zazo>(#5&A;Y;@&4qxX~gOIJVd>Z}%hvzqyqHL!#u z?Cc5}%%b^9XhhONaWVjHSf;ehrJG5n@BC{_Ow7PQ>$G6f3P2)Z8obk<@N3vVejU9oeG9zQw-tpBrr6w(QgqCd*Gk?=kbgw=m~ zW}0k0_x4)fT-#?L8W90S3Rr&(ePu}r-@l*A^nLqr2AJjTWxf7?D0txb zOmZnrEZ!M8Zxf%)-TFHPjdv`fEd1aj%~QcgvKby}9faxqL8R}u`}ihpwmOw~fkvYtZ86RZl1%$Q^=I;z!uvF9BvB>6S=muHZ6`uIm zrL}g(`zN9$vu0p8Bnl=PUitJXb~QdJt;zU|!V9284dX}_=!U>k(U63WCEU}&+|F30 z@s(WUm51{|hrT`Q4$$Hd7(i8S-Cs9m^?A2E`Ak1_3VMBcdVHY6HnZMaIn-KOU#W}; z5BI0#pk*EZd&6nNaeOv7_|e&_MCiyb2<0d2hLFADDj<{v0p4D6q@^0{##d|+k2_fl zkbJu*fdzUpG8o5nKStk$rmI8Vfb+BPIi4nt;IN~aR(iRgsyc+PZu+wQ0D4@|B~&nqf^PuXa11&0yvR1o^&_kPMF6xe~pKdc{Jl z$l6y6UnI62sx-sbA)&EJz*T9m^JAt82cx6c67CX2_yT(iMRzPnbX_QJ4!p_FYpBP7 z#gAE`=nZF1##O+ud*9RR>ESHa1P6cj&syL1aB!9rK6SB^d-S+B>PaER@iZjeRpk#x z@r4mrXn)sb8;~9zozR{nNFi~Zzbt(0DmM!ghz%l`F+c-OrgD%LS4H)V{9f9 zEM2ISsm?A+F^B2-U?uYw&*;?8?$XK8ogGKnW4Q0{&Ti~zynl6UDR<$!X2gpVP;3ll z+1;KIuTft!*mQ|B z&V<3Eg6vAE`!}#?M`>_{1pE$?c!apPE^S?LM39kRzl1I>b`N;#Xd~sd=vv=g-XRsf z+tF+;U)6Uj=#(tbGxj|L(C<>?XI^)zg(`Rc>car+Ge?z4Do)Ue?5;p8w@mpkc8YOq z3^v@hB{Lm)?EKd;Pm>n9%(<17Mcnl4(11TQ3QH*RX6z)yS$pXA)(tMbZCO7e#q79Ce`C- zygWQ8=bM|4J}(>ZI&hixx3;!6crO3O1L=6gnxwNDriGq8a%y1nT=wd6!|boTkVOcs zfKBnUgSaR+;}GXzHj;t>)yaC8?<$ zO-!7J#1&-A7Ye@Ggt-jwTlrbyzFc*qff2l$0cX@;#QL3|d-N7F&CX*^jDDk) z`E`ipu47{IS3gYP)Ik-H5NKk&_y7JCJJL}6UISkVH5ALb&G4%(=88g*(<}n0=TkMQ zHIDag5R!WElqWVXxPXoWp*W2p9rzLZNMF9Gfn&C9(9`w9{Yn)ln7<~ly|o1p9Xi36 zn_!G(F*3qqku7CXJ8u1L?Z(DpmUA}+I^?26zsYXZ_rC9XW`;BKG5=b1aqJcB+fQ)h z14qc4CDX<9nA_v;SB(Bqx__c4bo>`7G3Wos@gcVH2}az zg1LoFk^K)fmDhv;vsPDHed^ZkuXjbQvZ#9vD~VEBxbkFj%EUYqo2FN0R|busT@y@4 z=O^heq|cvQsg%EI1a4!ZTwKcg$fsszu1^QcnFtlV*G<+3F5s_~9N!hdS6G=K}C3fVur%W4+EY9$*nXVom5=&b83c zNS1Z(0>K=7^t#LSKBkhCI{XYAh!)ruFk@=!s^CF?&>IDf$L;W>O5Cs>0*Sl^@RAbU}1*qp4Cf7mBH5xeL&ng>wH4;*;-I?tv%ch5%6C3k7T zyZob>ju26)RA=$;i;}b<2*kZspytJygW@k(bCX2wt{!Bwl$K zq6*%tgIV=xJE4B&l1Uzxs%D}Pl2mZQM}T9S!$gdXVtrx~Z2Q)?*+BD{SU8TVH8M0h zxQW9!&)YngARb|jo|ddYR(|^T0_#Mp_q$^Ieds%?Bpj^?s)?pPl2M z7YfC@M_=gn_tY5tMFW-}me0b8)JWOr;!SPG3vd4cm;a%8p@gXMMXOHmOKk&hqWyfHbuURimD8vl869kyg-WNXWOMu+WHx-cA@?NK-Zf*lC7q#V{ zemCzOx}Xr&!~*=wVg=olHO)0#8)mI8jrYe-E+z~>X~jrHL_J3F{|EMRpn_vpC&+L9 zM6s#M<+eMqwy?Gb&SRc`{9hpQbf=7)x^Z)J-@GP-#3q%LShn6K6wJE6Jm~{YXmsF< zl91?4mP0<|huC?WnNi(X!>ex?nUa%{eai)TKF_WygZ3tjlm%sB#Ml4+^}UhVgk}E= z?z(>zAqB2xyBcr^`SIW@2Y&wr>}yLs8^kxdx{DxEf#W?A-}MW|bY7Pw9?o)s)d*XN zADl(mX8`0Ty#_~R0x0$q&DN+7U!)O8;Y`7a9ze70klg3Y1z{-1^=*CEkR(7O)u~z; z|NEB{HK-UHA4P5NyKcBy`%Z&SK|%Sfj<1YGNMZ=8h)$Ws0U_(Ghiy*+P-n^UCYOz- z-uvh2&CLr94GmI%*mTfPQI(W*{J|Y6B4LX4&!r=hlV8WcLV~(Z`kyNaB1=UYZ1B3S z{kRX#Ys<_W1#GuM0g)>y8D<=c0<{|cUse1%ja5kSqW01)6RA#IMgk6jO&a0s+?1TT z%JZcv0up=Rtsz#B^#8o;trWl2Ed;=5xx@E74TuOoB^%rMGr)UdsV{%TD(I?q{~iU$ z>pqefk&rt*HWm+DHUtFBoSc>%@^8H5(*R(#qyg(S}9|3sTx^X7zyEYq#4TeOGpR+6X^SQaXtJ$6P zy*TS4A4I_5RPehR7snAmWAO;mvXZj1LkGa0iE^f@+Y+An78VwE_(DwP=ZbCZKN0it zA`ElUv4LdS<~9KA*hxObfZ&+$b4O)El0#w=5{SFI$$}LSHtZe#RXw`Z1arPm>s=d0 z>gp~Ohj{ApEUSO*9`d&^)rHrv`ApPIM4C$t0X=1Z<_aKvkcdX=8wWn=kUV$#t4^!@ z{rv%Cyf=XW5icz*GxJMp0iHP~US3Y~l>ME3 zhty=03@Unhi~@0SQGiRXuWub55)jvN?U+zgQ>&F=cvb@=zAlDmV`WjlK`;X~16ztr z^k-RF`h`88XLtH34OA>ED=8^GyRn7E&z5SmSKk^6nOI5j4d1a`Q+WU z;rLVw_vzxow&m}t;9R{6CmZK^?(S~tk=M3|bcwaE)5@<$FsY;GwUt8HzwFG0BU3`7#rKGB)@y@ zMt@s?T&CoaRG(jTaW<$JWsh8OMnF=H`lg{I1; z-A-DgQf?T1SOs4Au#A*UpZlY|BlU0=?5|)FIazk`0HmDAvyn$eMsn2Gj10*nB_tX; z0!w7)%*25!gN6*~H#eY%QA@7lg@-7F{6d&PQs9ZO_Py_G1Eyr|?V-C7Zc3KBbTcu+>y`2~q3({-wEEVk z2f|z3?cOu|x_-U#&l(S3@v$j=(+#hWP~hvzu40S7wewh)%(iyjJSZT7LO~)8d}!w0en0x zIs7yM99<}1jseU27z`m?eBuOfxAVoOT3k{b-1hV&%3_nI1WDtI$yyA++S8NqKuM0< z)Y~edF=selbf}8Fk$^dYUe2Q^Lmn6$n9%7U(NQOw3b^vTN%+!=HbU&{yzyID)E860 zstzTI#GINMNuBvKG6P>%K1qxJAa^6{iC!?$TI#m&=eSFUvb+Y@?MSTyS|Xm124d7- zGf14ai(}tEqeQT{D&^%S*09+(ef|0ZuQfj`iDCVxV!c%GmxCES+Ili(6n(=t4DUe| zppu!kCz5(@h3_F(@bR@~8A<5F`FOdQ!B3elkt?qARZ_C)7qC}H-8jUA?c4#MTZse- z+hcA6VNdPT(Rp30dP9ml8P?W=@h29Wq7>QJk1Wtl10wULeAhYq|A+uXki z>!VwPlF%fZLfOXG!(?_Lqp^z(El5hD#5H^uENiKc)}7A~?psr6tE7y{qIH@8oj(23 z05&rRLHu)x!UU1B!^Q2pG;2{}Ek;;Gyy!u~+dfz%LLRC_;940;cXI%yXu^k!C;V#+ zufqddGz2h5#3l9Whq)Z{^uz=k7@LS8vZek-U1zzCSnZZw8H)OX{ELm;NJ&!pPA18z z5Y@XHM&Gqp)@0}sb5u-9?qIB5m2bAI1B^|ZSw1y4>!7QJQdVxq*T-k){b|9PlbhR$ z>tx2{Dhf$rFM?P6vE^~3E+xgR^%bt#U2A0t6=pA&?L(ve=A6@V*~WE+VaabBa0FXy zGOfQydxHmQ1EVC8M*%ga6)$Iq;lfD8e7-i==0d+~GrB1Ll<>tjhduZ*Irw_;U59#j z7eQ(a)lx0(-g{e$+RZ?E?}@3hmTe?l3Pfy8e4g!j(-WTC15RcQp4-xT+R>AyFeN^dj4ArsEP22 zMl`T0u+`1=FfubsmXg(iy}LX@Yk$f1CsEp>^{}=aWfdB4X~^sr0}G2$?h~7ur>#*8 z-CxYg)bYRZNHF@%LGISHdYIIssn)8l)F(u9o!7!+E)PAWP6Q8=hEmIFszshqxci(% z=9P5&g&=Y?W8Tsao*Eks6}Y!)Z49(DxG8ay90~<&7MiWE8nZ%5UBFRwu8U*!xVkdX zSPBt1?wY`~}7is$6Fe>Al>Zd`zf>u84FNB-4w! zO#61Ul}XVjVjX`oUcQTqD^l^OtY5he=NIn)(GyB|5&h?F)Qc%IoDO2x<+mqDQR8V7w}ri;*iEI5i@Uk3|`1>10gWBm(z zea%|2l;}6)IbOH5@`@_4?K*&wzCLxR_I^UXO*4dTqEr%Yb^maGmjF+zuQ)V~($Nysy7e~> z>~60vFLFgu_i`aKEtaN3L!n}wg`)$WU#h+dgz z_yujQP|&`0ctT@X#~-LBRS~RT)Vxd7rc^ud^sVnH$<`#F^Y6>b;Bua*?~I5ylxr_g zo^Ze}rDN-X#N`Vg;xr=&6uR>9(kfq(NJ)i|3tL@P=^ke-O@|XBsgLTDUZ;|YgCjp$(D?|u!T4se@S()IOMb+vdyT)@a^A64d%I@N z4Sy81JOp9s^=^y6o;d`fQ`h4+Q~=hrUpxi!{KPD&*LmP{QYg@MOVt^L&;J8=EcD+S zVesB77Ht;pG~lR zFtpCGqq7tJl?C+`rw-2`g0!lbIiC|`h{z?bRXv4uvkDzs+l38N0#ogE~_&7K+ z8!lq8sEL!QA{mv5lJaQ2$)oWxxc+FOU+#5-2pUf0T299czdmRr;h(%Nd!iHaUK_;& zAN`>>dALSUxGZgtemj$S9#@>q#B>IW7xBxo-bVu1?(abD-dZtCQkbb+meK@Uh_l4% zE2%v0O6{`62KKcUHft*@ftxP-+9yj*Q&Y~*O1P4$s>Yf5@&q6G^46kPry`G968h!( z;b50rzo_G`mr*ftreOMkT1{~42p4aeP7A|lcd)H+a8i*h& z1bgK0&_hqh_b^wW;ANskH`n@?ivHvc6-4hUm6c=-@^?UWgZ`tH*z<~b+ox*Qq(&M^ z3Onb1I9rflyyBlw;3np#DSN@uJ+5CmdG%-`W%AXrC0K!nSm)5ueoM|hT>*hqI`=^L z;dVQ-B|B5ot7R|a2pPdlO29&!1J`A9V3O4|vrEMK!0;&qP9z?4SVgfrcec^Hobp`= zT}GWOt%SH3!}00lo%#8mQ}T!J~8x%Lvz>}b*I-`QL61RNar0z@>?-nz(CBk=oxE;2a zeIkS48uqEZ6#Gf#gdtyDCw%y_W=b@WfR?nn5FsEpBQTJB05Yc4sjn~KLBQyA{Hqn< z!*8VnosIX8)kk!HwVAbsR=%s8KS?#)%M`frUo%hC*0E@eP@k!`{Ir3~hHrd^y0@NC z8D_5qQmC%ZZyQInPF{$csBaBM;jygVbx=UtM4*+%T-IH_xnL9hf(2W;JjfGPf2HmH zRBVDe+hzAAmrPz(sxlAuqeYIh!i3?#(a<3+=Funp`5bQdzo)7(BUTnR!nbGeZ%?M%;JUT?*Fuq)lW3bCob zBPF~kbeaiOxFGaAL^9Gl8@Bbzlp4msX<79;_!j2tjQs)Pvc4|o??v}FY%%%t%;EFr zb-Zsq&3tH9u4iuse$MDAlVaMz=M9^^B2mU-)IGVQE19HV6hwDgVX=pfjgK!B74iJw zx8G|}9dUkzL}Z0dNSKtCM#_o0%DucwZeRLXQ3OBj70Oc;v5e5>akXdM_f~PF_0bFE zh6RZ2EciwC?WD9CaE#8?+=8XVD`;h zhXu;`P!0VhH`3rZ#DEv5DI}065)iATUnwF2@jY@KvwTS?O1Bg0g3iwW$kU2eio22H zwVq4Z+3|F(nxz`Jlw1C=a|Xui5jCb zF=pn8v9%p$gnODXhdH<#5<-*h^u4Je`oY1~Lm>ON5XDjdI3)(V2bO`WcKr8))YW$< zq6hSr#0NNR8_{>7_(At1TI_Q^OTq5P_cbI(6f7Il&6m`bI(lk>n2VHx7xM`g z&d~Sr*<-fW; zW~S@jArTD7Wz7)iWF5{meozcDn3N+x3GjudHb@GSj_NO>wiZ`bELWhR9r&##{7%WG zTn}WPxl@vmHtY zhIzMH$Ub$E`j?n~_{&AW;OjP4Jvs?ambCl6keHqGEnZYDdE4^7hP>qApF<@%CIT`P zq>+%Z?5>>%4RcDV*o8x!-anNIM!V4EL~*GO!7G1@%x4$X{3|wsE_iz=#7Y;^yKPdr za$qK;&5{P4$`2n=YF!4^61Q5$U$tZEijOCyH)>+JtMQEwI;pF=^H`=1o9HSjL%la? zDX0sErCvH!=CqoqacLGfQIAg~@#R}@!58N2J)Vo%zN;H}BdRpz=1h|FqD)_V2g&np zN;hRfMvtfR=ak3t6+@*#^{iU6{=w}9F6CsVb-6c3hZM-Z{G>~~?idMVt(FKc{fNbl z+W6qP(W=BUjkyi?3O(7R@ntY-D>#Zm#?N|&=P4rzyII!Sa^mfHGJ-E@V&Y;AG5MVW zOVxA{N0V%Zyr;XM>R^`@zw(;@Ch(Y;YF*IpoMFw-< z#*4)B^O@SFi5zF>POcwnh&Q`ZwA%50iH@z?EE<~Y>sG&$`j(n%Vc(F$)K2{azw^e6 z{|=22LH&fJ)kGaj@j*Mn4sFk1NBF;#fg2Tl{H=3JWFkKo6b&Yo4~_^ zJuInVl`K^DIVd!xXyqUxZ90zu1~o{ov*HQyN22nR|6GaIXcX*%=h^za&iBcmZc^Bt z&T^!-M|GnI)ywn}q=sLNF~^FF^C=q=Dfq&TrHmIKSH7>C``tl+_x_J;f)93FG7Nmu z2Mq~1`}j|l!Mr<_--3y45(yEReeL?m$|5&f4un&aCn#;iYN$9+Q(%_u9dyb9KDjyC z3;7=u*Q?SexnFsZ$jI!%hG$$-u)LH0^MqjQ2!M2B9Isqm^xD|ruzE+nLj7iIoJtQ0 zcI9T+>d#i2u@XyotgEc|RWe2t^!%#EY@h7gwO4}qzJL0Qob=^O^-|l&wWqtzJq7(`}dUVkU-0`av+IB1tc3#+kFrelM+xi^cp%rgAHRNT_r89b);Zsq;`+lps9g)5-0yY?@ADzIXK$Zj$EsdtZ}plB$#5UUoz0~ zks!Y2POloOfJr97?*)y9`x?%OpA|*I&zH~Vp;aLZeIsUC8rtgW>Kgd#hr26dGltyV zBTlNCw{8WJ;(^dovbkea4AS<8+H`--a7;|-7Eml}Z{;mu7?uK<%B(3LbQ8i5z9>&z z5g}3J8K@O(`G67md%7zn6IrFW|E%g9+Dd0w%O?nwnOrEY_}n_Na{9|_x(=^XnT76` zkR*A`Ao@-AXTNg>yN;u%Zh)#`E^R@*k^~T>di1CjXx*B*ePn$33dm4 z?Nt!QpjYGMmZX*rN`zZ+_*Av^)_}{vo2gfS49%dc{|G_xLb`l`6?eKH92S;<72)+c z5@8<4j)Fdv!`?njI2~qKL&oKBidtLmE8llU=C=H0Wpj%Gk75Qiam^um*YUS!XPIkb z73Yo##`zl3adF94ZrQZ~c>OJR7ram#8BYJL1-MvY8Nc$C%?abEtEemz<2Az`8x*4pCt%};Yg0C zVpA9STVgV9-;<|Fp77v(hKnt0Xth07LBtNb41dbo68+ZL+A+iGDiQw~0CZr|iR38= zRaK@iL|vmyLNR)yFrj@CpQ2Ifr{InC7JN>m0_5Y9+fnP}6hW9%5ajmHoM_$oM)d2K zscv4S=C6~@=))sts=x5X!D3-x5C~LlaJ07ET@IW)*)zz9*8Ey9vO8S=Git;ZI^qjb zXiw!EXJ;jo`-vfmX+`{YCuRN~*1VhL$er~e>6RkTZ-2h1?4@2_u+f1-iTP946fY2@ zS=*%17u^i8mXANq0Y}Wj1RINmMAs_tB6zNBQ>4Z1FYU-wnFP;a^b(V`+qg7CF8N-G zH#T(j55(iYL3nfe`7N_c^Lq2@tJm3hxmONU+AVm%ARq#R4lf7MTniaoT*0w-h@W=C z9c0GtquwQmahV!*zq9S`?LL^V)}{laiw1-PVI-o%neM0YRc{>Xxpd3Uu=G^TlofcN z=ym3&r>1lo9aQO#W~-%VPmQ4XIGi_g48#u@)~_&AG>-a9aE0AJe9+7DHeiycUr=lg z`-7?&dr&*c%6e!sGW01(POWRA7l#2>$p?@zB@~u589-(s&%U+Vzlfq zQvo)rv}lPU4a_8qEiUq3_Pz5Y4xCn-2n<5SoTb%u{BT7cv~@|_%l?(7AvMzhG&pEZsvNgwiYxu`Bkx$`;sPY4-7UHEubJS;M62wf1 z;+kBQ1&Ehp8=1}5(YP7TP3@h2SqF8E0BGo z`tlXl^9H`>Hoow*y$@04xS{XCuHbNKWkn%+)Nn5&I5?Q2QkGo?`OoLM=7}h;>op1Q z2k$2k)jB@idV9fJZ(DwSJ`nn`QAbOSB8igHt<$8!ZkCCS57M^!a*Y&AuZ2$HTm()k z?K@hWF@T@G=Ox>>fQh=XA~}lsXwFCJs@@8`AP#zZ z)dlz2+roE(bMt(jy$lF`JL1SO)FRX$!=o7Gu4+H`IyXYDkBN;3zqkiI#*v;vGZo3H z_@Vvg3^!z9NM|`!S;SN5AiB4|vsnxi^xC|QNXyMd$n{iHiKi7+Ji_uiImqb|{r;r? zbkRbTbXAt2;RHbYyO?5YX`6LgM zyc}=#1th0oA~Y<}(le?~pjjLI8lM*A<<*XKoZDnoXy!P$ zxpCCX4gIaj1QIIzJ+1dVR)4r!W*yU{zIa<1Mf^3t=vpL9z2e{U{bZn&1&^*=V|b5E zok(uF6xUzV>!E$FMzIb}VnmqyBNigB z3f0@y5&FT3-`OF)LjjGWQ*AyXt-gEQZTYpBU=62S1`lxe?L_}|+}nvv-a zVlwg7BR$RCPWjzA{$c;Fl`reSUdio^`sv zmxYNiUtAJNC|I|qt)iyVe8+z@00vTi2MH48BcL8Gww3?>xVFCjAWmxpBgg9z-8?}} zL!&ZbUUGc&YvmgR3MD7_tv@-#=jb>DJd@a~zejVGi=0A%(#sb}T`O}kZ&yfxZzTlU zezDLD74>FGrsC`1Pe5ZBPx3Tjx`ZtwR{(Z_cMeIc)E2Uy=794lL-3(m@MfdH>(2J+ zuso+Y?R4GOL23atvajlJUwI-gIM^5d!v_T2c;vO|Onk1pE(0Ad{)5Zlh^q#1BUgTY zgRd}z1NBfsfkOKXa%JLUN2P)niLOp+^mt|Z4|CHZ?qzi|I;Jfa+a1@}4GzP{#Hb@5 zt+UDS1RC@w1~1+r#o$_co|~z(h|%%Vmi(xhIBJq{eck%kyy&BltMS-RyCze2_q+I& zct(1%vonWoObgp8cvWl*qqS(Po@1V!X{Ljy-mpVEs zg$Dv*Jq0`ZC1$%xwG`!PAh_VhdW3j34n0IJy{at6945zU>dyiV0*QU8%az<>t>tu0 zl#uQsf55BM#cld^G3x6R;P2TVb!1`cV zC4O?9-5DhCbmMIo9+9nyw^6$A+&WzRk#2_Ibx@+OZbmNIsH&<4SQn5m8yOKr+T|DM zWMd=emARb?bzowxH2!^yPV5D=IwR@sa5C^%Rr$pq%~ZqvzK+mF_J#L0(TU6P+X z+(1G@N9DS?5Foj@g~MlcRyyxe%7KfT-sF6Ud{ssQM^#>AG(g74Ijy$~683rn-Z0c$ z9?oLK&{^qwd%L+&xAumIhbznDN%*7Rq3P==DH#TKE2(LL@Mb`)vd`iq<>)^=1p2fK zyN$!hmFPA()8utjM)*O>d0KYHI)hSEwULjz{|1V{z&;BGf=W9{mw0Znn+loye`LyGYM@8}R9eJR>ci(VvCj2vjAk#pp#x1^3UE_6(ziXkl`4 zvgUsHcbEGtX~Xy#x`5weke4(j;Du@@WiCsyHc}xDwHf8FXF~7Y986jq&xSrtP1E|_ zEb3YCqX`xX7vc0wA$wXy{d;npHeoHdE(4nxppn7Oc5vd$@tq(QpzXAPMp5 zA_XyrS81WvJ^2C`8-H&D13#4vA2{cxWPom3Ab-yGFnuX~X;l2A@SY+a9#_TDr_XVN zjdt5PmL24#WaL`PW>03M@OFRyY__)x^D*Q?X&mnFtC*2<%)`9_<1b2qbK1-mS)Dd7 z%D3h)#c)CyM@wm#nKzBUH+ZQx`<2tgd_9I1`2W~?>#!=juI*PvQR(hRx&)+4TBN%{ z8tLvX>F!h->28o%G$JM49gFVVllyt@_j|v+_w|Q*cpz)JxaKv-9OHMMCmx*HM73-> zCrCNrFa3?o&26TePCtVZ7hS=LVpW3I{OftXWrP8F*PMXk@v zrl*&TqDT*WeQKrmEhRXVXO+h`J~*WFx9|q~0?H3JX`) z#-`WD>X~B*d0zLM4BAuF-JH=Gn2paZpPv+#wpJFYH&c?4%>AT2&T)qySx(>GwiJj_IeLLT#S?_&Fl>Vb|558sm<4r!_n>=n>3C#m$;Lz4nDdv#hfWf=#M2_C8XYxtkhYd-Kgp74B0=^lRtvi5JXv z%}M(w$I2HSK8K+Oy(LE_^|e77ev-uDCT z&6BsAx&8h9OSi2{y2s}NU?df@M*ddd>H+z2h4?|@2g$UU*xkjnJ!nnk4i4oRp64?_ z3fV%brav&fF2+@dY(!%zz=I?~JRE{EXm`7S)J7*WtFM?j#S+tTfY={9XKqzp`ZGF{N58NPz$uaUNmlz~3}-2j&t>_VOB<=2 z&JSc|Z5~u@3ghh1Cg_iC4i@g44rGrjaRIlty>CDB#uqZR-wjalAAf~%a}vgv?k?WD zVW@jGdGho$H6@uR;fh?muu@=g$vuEYqdg|`xCVvnS8EH0d-6Ty*OOFy~Raaa8S^%4}ZhiMWO564J z-(CQIlioq}WV0@@Y5v%kRCzFRC4{%nl8}wky}wuq$m*Ov@ytM+myirKO8CtfYeW`=HHS(lB6DRqaRt|v5@NxUN?>4M z?vTXHSR5ORrpOy-+9NF^Lx#(qCw(>s>%2SBuY3EeJlLpy?jBy?QO0O6EG$f#xnQ|M zTs~;s(i-1c0S~E1h+%8GY9Sj7ff2>`Z3Va{axVTF27>Ez&Hox^~Fk* zhaA245e%_T{R|xWZ`Qh>vz&rw=(QE&8|f+P?a#|r*i2;bBgATgz3v7Yzih5@+uoUK zn9-883%KnVLB^{-gN!}lwGN`4G-IOM%u&HK1}?6*5qcg@76`O~8$qGRH7Ub1o9pjB zBtVWH1`H_h;zB6nW__}3ipXzhMMU-(ugvGbs7ph>x4qSNj~#1lOu?4ax}Hbt;lwo! zR_LYihk-cId{23M-s#ck^6H!2IhJL(^xsc^l? z(OxR2h9cit`z@Wv#NVzcp4#V4l2yZ}cAH;wWE1s{T)TmP*2Sdc<9;*UkGV$?3b;MY z2PWzA&n+xOm@f-|Lu$G73?p|Zk13BXh#T1N+cte~pVnw%{P*T%IP50_m!>s)B<)!_ zuY;{cO03j0O?E3V(y(U0bLJ+V+J58O$feJH3VI@6SW?@x%HDF3yBP8<@~y$w()u0g ze-ab5{+|0w_$5_p5I#Sy|8Z(ju7@8`ssCJ|oRn-K z!KNMCh4(y5*RoIl<|>KFTl9xAeAOH`=v+NrqZ$U_HB8}mh;hz)U$Iu9Z)AaQ05l{$K8bFWKLF|x$*I06janw-`Lny98p{Dj4qWlA@CI<@-z$# zgpU`OqAZ-haw-4M>w-Ut4r#n&L;PRw<>~EUJiYJ#eP!dtr9OS5|G6+GlPBK&_p|ut zx9mc!0u)PEz`egcKAsf^w#fMf3xlQBQlEk&A}0A+pqZH|Da!06$;mkW9rj^e`}?pD z7$RvQ)P|t#3Vdo3KA|(U?Tk3@b7LG1{H31hcIFm1)k>BbTr?t1ds6V(Lh<0>}2UGM`=7!~d!4RL>AUAwmZoN*UL` zPEh?_n*aQB+R$%k?WSv@4s zev7GzlG4vxpDj~eCnyjAYVVtxLMA6Bl$7FkhzM|Tp$EHQ=wVRQfH%T-`{4n4NZjCA zFQX3RWx3;2S-*r#RGmG$U?{Rdm25j;u(Fyr2!_T3o1hKhw0b2^&ud{}W_~EgUOUBq z{%)2F7y*L;h$=fx0P5q;srTV6Ckw!Mr*7jTNCcRiM-H@`UVC4yM)}it0gL)d@^2M3 z?QK7bo5jH$nSHJ=BeU3;0~%h^l#d{}+VEe zMwAn9Au_AB_;6}nT((#@udAu4(S8MCs;{Y`#VEsp8Tn3KmEul+6CAQqS^vBw|GGj= z5uc39HGrA)$Ik)uuzlzrJ}$1ZY3qcFby!50Jtu*bJUXfJCv(oBo zQ?tS{$~IJ|H)QX_C|XID;?5wDor$xWr<*vpGB7rEq;-X>(&qXE^YScQXkFR4oJc_b zx>lC2s9AD!YS3gP?3LDHOV8YWl4(wH$YOkWwcnjABj; zw}zj1<}k{?b8w*d&jN9%`>b$!UhWMmk1yK#8VX9ZYJ_l@<+0q&sscH?5w^q@twM)&qStwZ*nE8$-Z~VYL{&z`5!mRC@VI(ZDsrj-8 z7a?2POd${D)k^b{=gQI}^pS#+GLzGGU)tKuAhW(JnhTO19sPdzR!`WlI)YlHrst+* zfq>2ea{$Z#SK*|wBKVf3o+(mdcY6-p{;~>I2d;ayI8V1r_IW);Y-(>LA&3UT9Mrw) z6rigyUR_%q82C)TlbD;^jpMIpW;U?nfQSIZEr?9c&wbKA>j`?9eTGw@2};H(7z~{M zC~h(}6z&!LrNtO{h+#FkyTzn1($fDzkBf~v9=NInaYGyysWTRgwB2+Cpt(;)MJW!w zc<}X&V5!jnRv)&udUgs`qsczn%%Jne!aXMNe%sv<10P>gN9CtGiaYr)OjSWIFDIu& z3O>tOC=pSeQ~8Gjbp?HWK|wE#pIe%C%_jRu?%t2TDkdp8zNB#zPE|~Xs=^;}Ctz+I zA0Jtr(3jC(ToO6bzE-Sgs<3)dP;MC`Yg$-+d656k4JRjxdDtYTQIOd zXi@Eyk{&^{=5Tj+H<0puUhB#ixUL@Qe{KG=_z-l`ESRYk0fD}P=`_W|xyDAu0KqplGzJ!HvtnXR?l(uM9;)ysN|SJHD4H(tlH3<2ZW?BG zb}XMmM&;d|WszmnD1>6;;(*sgH4Cf3n!dQWxIDragS)bnjKEr!BgYT*H9dF;Km$Vk z9$h-WXy@x~;k~?Ov!p$-+mSo$5?&h*JviOy*WTUTm6U|n)O<+yr{>bsAZDoFn2rUO z^8^ttN!=pjKuO$S-%?%d-k1?}4z@bpEV3>?J^>c9-q$OZaQN6i1#AZ-?{`VTV^>hc zgKcuIo3}(PN1oS@T>Vz;&4QSr+5`Y&3FIfM(Dz$3rZ| z!kLqHaPW`N$D+B3c?%W_73D-tdaV6)V4+oW)7@-cUaAt0v+sM?(vrSUpJbk$Qw(1~ z`n&h8Ma#d#$MdwJXvW##1&7x=3kDrrcuPxY(Dd|+bWdt#H1u8q1HMn4m*?iHSeOxN z?1i3@$L5yOwNBsoEY7N#ejYx0^a9qCjK5Cp2xZK|vFR+Qs$(x$J z+0JS|60Nz!fHP&IFnbSiSN}?5_pR_}>b-OTsqpi{5r=xT?B_xGJhMt)O%r>&mm!wy z__V3YG8~bT#xuX8!cMz~vnsi z%_z|SOluZ8(<&*m8rT}a^yc~aGi=xfk@?D26|d5e5V*2~(6CT$Zf@ca?0V)v*4=&S zSE%a)xPFhLT3WM@y6@PK_m{$~rJIr3C_Qc)X2Eg|UJ9xInEQZv7(k3xr#BS|)yG4F zve^{AURT-Fa;qT`D7E0Dpn!1l+R#M01n`R63@uO4(J(gIL7S}oN-HWpVmE$_r~0UX zZt{G9!g3~Xe9l5f41mtPGpE=I2?X=)$fTt7B&ka+yG62L@bEE}aqZdRz%!tz*|{BL zBQ|Rs75qdoBMpkfKqa$X^V1UO(iaTTUOM{TT%f963u=gcJ$1bA1HbBly_9GBgYV(M zbeBFHal8_>u$;_5sgNB^qtLZ9;MNV3dlU_!^S+1L{I3Erb+#r4RXsRh54~(2bv)Q+ zrvypEKjLRQP7Acj&a~Q#S2o?h$P8Np0=PkR^p+4W;m#j)`bA?kbFEqmtXHAP;zb9I zpLp`!zfCFfT9#H$QnC39_*4!9lv4b+?5)-(`_!{{&;IOYvf|(~C%7t6dI4w_E z`>ew?6o)#M&(ti`vD>O+Fq>Y8RU+|pW266*;|E^TiMGwq2;xS{u|j?Ko}ON3t8!5; zCL#_ae0hZYyj;_@TTYHz9(8$5+oq@-NwXl0Y_u3%_e*HZAc*T?A}OLtEo|=U%qUNetv{AEK#@5D{fx8_rw>9Vr*(u+k zG_>?BpxbF?wM$EVG*6cA`LZ^=u3M~HH)%qINXA(&a&Y<+1zW`1x2CROemE#D#WiDE zo895DwrSbi-i$US^NIA$FE35E*HK&VKYGAQAAs|6A3YmdR$HUO!prqStdyrxHybey zOh~!=bm+MOt{sZ<-s2cv7w#cMuO0B@g9*Z~FT)1YAB@OUL&)^Q>= zg+utVy^3Pue3ug-;vXpDv3EH4gN z9uBa}D7uxOv&7uP_&0#5RDX}6gRLvHXF|yueejdR3=}D@KRGEaESa#3c58DB#jWeB z-ybSJ&nC_cq&D?yZhg|fD0Fp(hK3IFI}XhY4dESOYsKBStJ(5FJjYa8^Q-t6{aTT23{T3tlAR=cge zl~pZUd^jQ(0aE%8T-;3TrE2%2LAD>za+JFw+5nAULO{fOFv>HM;`yDt4AE(M01=Q> zR8*eLVu7FI-DL{wO{YWkMFNJRvwo=(kZ`oPU&_d5uZB!hT}^y?XR7+fapVnIO2Aaj zte9N(Y8-85O)=H*c=OqW@Y(KJKYBJnS4fB*!l9oX0vm~6#qqIMs!id?<29!d1SHqp zKoEDqOQ`AhOA+AMf$Stomf4YANkk2qh()V=2L~a{E<_z+VfOYO^Ix6mRm!iF)ia`z zmI-Uw$krp!%}h;kHhd^xj-elTJ;D4D9eqkZX@it zwzlW#xBBYy%VZ-e9hU>-6KDy+D(_fRWBUznhD`YHB@b^g1N~4GLhw9}7bnNpJOe$n zLw}D8%X^~62h8fZ|MB4S+7DK90;3^mx&d$7VVCtkzF|pa)GK%dc!^x{qu)E5FOlhu znLW2MaRAMVy$L!LE%l8hL^``?MO59bJkvjYeLH~gcEYpJTrP^3$L(sPdh0%tu3Ah8 zPVfu4kr=wP=fqEtp1x_wYR2JFhGSIe$->4pIX<`Nsgl}Y)yYvNEn^)YQ~y+!N?V5K zZi1KxfwL84j|X^N-rEy(3Xwy%EuL;6S=mD{f&nA=yVJ*025ZlU>c_21VDp6uCzN^# z>$+agsN0x-ub7Ybbxcr6((r?=t34nTe2j5E+S{G9wKl^T#-kz$v)=rLHlGmjbvys0 zr8C~z#5hkC56V86;^^~&1^FxAkO`G0I`CnTBTiiUBXytTUyA|3BZaLH<<3cXr$Dtb zv3U)`#Xn3Qg4wsI7uR`os*q?SWc)On)})m~o>-1A`uFA>R{g$=z<*4Z-&PB%Dff3~ zCgKWDfhV|c?Ho0K0tqR{=y*}t>{RC)2{Y?^&WVL_)&eivPXB;>)&kkp6Id`ciPKdS zH!1iexn`@afS&U9kbB{zLk_u*0r;%lgmAR1oWmwu99w&y&JFwxfTa%mS1~|rSaFb^I{2UyZjI*aKFD}&Pao$A#@kkH# zyF70SM7!<2y30pn^KV9A_SjhE(dt!SY1C{@mLy#lYh>POPpM{A6#35rkKu*Y9|yQa zIo0sjGBJiicUF%&vX?O+g$cl$P8h-(8y6YPtgK;7%JMpl`OYVSLWfVf1kac%KKq;a zY%!daiTUq_-mBpVgJ59yq6Aj~;#}S)$S;}OYjd^YAV)@Z1%nguP2c)<9mI~XBu21D zn0~V;FKq-($%FH9on~J-mrKr}qP^I= z5K-a6Zj~DQUZ;|*WK%Q~x1$K+r6`YEnT&8}gJO{oRV^jz!#wlD?P$6%l6CvWZq0YV2eAUwlraJU^MXjyV1I@I}GCtbbfdvtq=_mP}C6O!4- zW9f4M`V5Z+hcFREc3*`%!G~ruP&75!z9V_Dg|SmT=%Wb zFH;Vd2^c&0PNR39xh%y%{K3iNZCLxwZ|4Wanb~L?JC`U0f?t=dKOTQ2?fDi}qcC8& zaab*m8Gpb$m$6wtO>}4U6oQUvX6|w%cYG^xI5j9m z%idP*t@l|V$Jmg4Ha`33D*Vo~#5E_9ccqA0WZ2Z9foEqm>+A0pG@oeys^0KzgVgAX z+}mbT(&d&oC~*ziMtkP@8n#UIGQI$}O0o2ue?gw(kCIQH;U>I|M9rt@-_2IZDL%Ec zA4;RVS997QDsd0zDUR+mGgYbIbR-r2z&a#*9zutqJtr&X+vJXILh(!aM}uxfeYr09 z$ZCIi998r;KfkGz;vkza)t7x5h_j}KYGj2P;2_Qx5{7;9f;3&cEi(mTblX=yK_e42 zkQz|yWH~gmCeC{Yj+X)K%_ILJ*}Dge@F(hO)!K;Y@5^y{T?N%NG)lsTZYW^MMZ$Z6XpJ_ z#ZHCNYn^cX#7#|}DNQtqb01f$W1trtenpNdTMhbsF?OFzgmRz#Eq|E3MJDDdv9N5C zAh7id9(@6WT!MjfQHtXWM-_(f>=jHwS7pvONW@}a*FuY@ct|=?)(-8)@P3o6O5hh6 zWr}#Ap)bLx?vDEUWTWwg42DOnX1df{FvyL#2sO_ggze5Ml0c$l@LW->=Ql(4D%4vSH~PGIy9$5VzDA;Csu=b&lqnZxdY{3@ zaLKu7a4wNG?Y!V;L#x5xG{%IjhH2y`bhBB$oO?PM%Tc_P$DC0Za%GwlxnLegMi6I4&Q(Vnl}hjvu5@#EKVfip&bb4dadT z4c^bU#fT?kDqWHk1*BUC=XlH#oQKPc78lzl@MM42iV^m|;=xi!DMow@FFQFH%*_pS zC?CutW<}HuIHbs$mjuk8?g1O5+J*dXLtfggKUZ z+*aH6GBfkyoq+?4;GjVdGgfD?CfQ@<83a30O?V#`C*5C#{3mT2=-15fryOzd7&0f+ zoYkSZc6F@!)$`G0?*`@RDQeNUJaVsH?$|DJ@%vlfZA)F9v7xR}_wbOT5n)2{gq*3y6`Q!cN}1^iuc1;d3>Pp9Cc|p5JHtFXNzkpJI4ku z^m{Li+Q(rikFzSP2SIkaen1$2_iMsYOh!Ns+z)g;W_ zOjJK9rdPo*uqfZnX-et%JdYmsn4F9u5%VzJLTi_!!cqn%4(w)BSIW_wsHi9&yQ^i8 z65x5O4%^SiTCH_NB+t7*e!^qdq_xG=^0TDdtTq(>_e6ZWgX5pZ#kPkhAwwv(>?M*U zU5}d|Fc?Ms3Yna`zX<~9fh(Vunp%a)luY~K*y2n`ZhrP}AFqat4 zfB)MHpt*vH#TfadWs>E6+9@RzNcvl+Wd|24Eb_g3NC8ppz7;`4NW}O=W#_V(3ItVB`XUH zC5}m=B;e}?lDW^6o_?&R2|on4ISv`aXaEmr{%)dYx{K+zlDlT*qP#sTk8I%I})1q}l^P&N(YvGG zy`tL4qYxF%-2ViG)B0^Ep|5n|{7$a?ViR$ztl12+p2hWVt8s6pj5gTZmL49(a(ne6 zAk=u}y8n`rlB%n92LHt(5`l6z&4le8WfcuPr)^?)N@b|TSE*0Q8g9bH{o4gF0XTP5 zeLAI8@RTg6jk|@M_b@QWwze}f>J1L4+Rq3L3|MgEGFsn%9R_D9OUd3`X`P3{U&`q? zn&r6-g++~dxzlm-zsUWCyS%25Pki1%#!;P^Ypb!SHepwJdP?@?s0#w#ChY4niVwgk zSnGN>r&fz|;^TUz$AX%qMH4$^C_sLkQ1LRD{!6nkuzLv9DKO`I=i(#Vr0-af zUU4ZEUDF%hh1&V1MzcGBvI@7S^@Th|m2@yQpuf3&z@SB1jC>$;dRk5Ui$EK#G#;;XQ$z)*$_fWg+0B|&JpEp^EG#R$0Yi|LdR;Lshrnvh`Yl7G(HceR+7({ z5YgI1Z@({kyuHoBbR9P6jr3UCTiV~#bj4BokShBx%AJZTkM%?Oz7u}w^!99aHnqO} z-clbIcX;G}G>i7XD0;HukiJ7qZmyxF5{LHTsnZ-O`R7A&;HfsFVUGY)Vvr-w;4clcLr_ zMbAnn1VzRQbppxAc6cr`k^FqDE~Pv?2%M@u=^-I&uC1*C0Y#*umW|okgG2~?lA%*G z|6iJ|wX@>l;^vkXge6omH~r|s-(^-5Z+wAd$zwfQYjKr1Ln;gX9Rr)Pym>@L^QQqW zLeTTy#mDnIgd?#YZu6`^7}|;J+a^!v`|x2NUqrcqEWMOZ(*F&}5?Vym;e_qvSI&DD zI30fpn{-y=uy4|y;3xvT(zc2E&t#tM!*R&B-teI(BYXj(TvOyvXf>zQz=Frb*a#S8 z3^NxvA+TPoK}pY+$xrGXPy z>WK2IfvK@kU!HCYw}Zy1EYFQ}HGa>VTn~?-N?bGpd5V@*!s|gGaH0MdGfEFamys_n zcGKGWJVRe;g;<~E8ZV=CCtt<^RX-GJ&ZD-+-OYh9GSAFjlcjq)5qFiC)ExFn$4Ru# z^J(In<}VmxMOJ>jEuWSx^PZoR6KAM;@kY@)Bsa}53*0U2U ze^K?2^w*3O6cqc2f0?h%{|@$xQ&APf+nl?XzZ?84Sh`)Sc$j46LQ#RUDaX1 zZk}a|f81>t)7f2yLr5r^?qJgwr}TSd5S`A{#49yJGdO#*Xn{LV%duO-$dyoATmQ#T zyOo|@MsJDXr$&vbrsE|3(i!^Wns>_%A22_9Qv9fxSt(7uBCJb2sZxMG&&o=oi#%OX z&Xuy^M$qJw?KN^$Hp)9Fci~woNkbAss6U*?90aTX)93JyQ)20!*<~2vZ{O&F%RJQf%lO|Rv@2&MAXMmuWZSf;WLypG{~_0EL5-Hno;1-1e5xk*25}P-jfNuXu zfautMNtSbgUH_$QQKOsV$no}X!9fb{vDlzA!#iu`%iEYIwk&M!83$iT%jU@4zN|NR zjv&}o1#D%ytI%t;dCc$;o?w`ovOL^~d%>)Dwd4qO(9kdn#TJPZ${SjE5G-Nf{SAhO z24JQBY?Ax`!_pPgfPfjm_dpL-p59C%%ud>YuZItYs(;{m>6Y3QO`JJVSZ7Gg5ec&87`b9yGQjGZq0o7Tk^2h%3f!!XywJ6j{kU zlAiSS>+QvX>-2O$@39_;7u|4{yt%m@9F#ofGd46#cUyJw>=NcBEKiJ&Pu8m>VGWhc z08-lsx2@bt4NLtgn#Gs9pffPOBPFA=E%qH+#Kpp*5uFtkxVvjZJr zKT!p02KK^Aeh#EHQp;y}-%?tF+I5#~HqU72l~m%_YAih`f>vK}$+T!&O0yBU?rf;W z`vjHNT|~;HyK$-`5lwp^k8LPBS$6O7+TLvg34pDc0V@bIry}aD>sLiuQ$j34aX+d6 zIep0G>WbP4`Z7J5IalE!A%Z_5OtJatPhyrHSHcE<5`u}Hx?XM~s@hDg!8aUIth~Ps z&e211f!e{Z-sWL_UTAga-8lU(_TSPK33(ob2K>IDU4K`eInLyN6Rs()u5K_S<%(e4 zegZxOR;MmoZavLsdl|`qTadHWB}OOahLN$oovJDa(mM#NONsL0exOfDM+Hh@f&pdD zQOpLyg@4KK&f=>HF+Y>EZEE}R zT-r!$F}tbz71ORr?z1#a4KUcJ+3WlgEb&P#{g6bZv`zkpITK=qt59*#JbcP;B08iTr>k-E4nfcL~Kvfl8L!u>%qS-!G zUJkL_@;*aZts2WCvqC3`#bunL;^2nh)56`G#v$kWK65tty_`9E6a!J5ckdrUoW9ST zB?p(b+a7S3M{BnQJkIw+&z$#U7Gi{7qlydDA0``b4^9dT3sCXEmm1d8$r1?syhq3D zMnv?bB;MU4re<;`Ne+zi|D&8ToAx>dBsPMsL3?E*mo9WC7@5pq23TDpBI766=zSx3 zwRg)|rtHv)hMMH9z-k)%uFUnN7P6L$qu$!y9x(whub1izAa0CIE*!gbJeV)#aa*t8 z{%kV<+BOM37UW@EgU_vr@eDcWCRcJClZf9ml7)vcy;Vd#&mhWvAE!^-j+~(a8x*#v>l>Qy{+@psEU~_hhc{<$T)U8}BG=T^Jmw`M#k2`Afj~KRnFU^V1lwKE4`xeu5`vnAJMiypw zzMxmNF7AvH!ULR7lGhe%R_Il_>>ezQ7-|HBMd2!Y1nzD-FUhF;^sGP5RC_zKkO#-> zdx{BZOX#7X!5YzdK*BJQD4*sNjISQJjQqtTP|3=Z~lf=CvU2hatiB`>F^qGCB6FMQD8@vjQJ zT^8^kq`QPJz4X9s7Wwf+D&q)Yk3!*eKXdH$)AtZezAiRuJ=2$(f*6Q#pv zXZ@YOTc!7zhAG!+%HAvX4Wmox`qTP-kj?hsPPAm1C*ivr=4=^M)@M0Y4RMaigdxFT zQKM8c=%71QwQQkcCUJ-?s2ES{ay2egH|f^G&PJ)_P1&>iGW4G3jhI&%XlSE0w&X`p zO=qwBDepD-tVa{@xE2gXmv(-%RiVty=tf z-c8^uu!uXztNxb#viWM)s68TpWG^-Pa_9u&=wq<+560g{xIbYiHZqo!HD%RuI9E0k zo)e*MGF#TzFe>2F#M#elAqwxezC_JK?0;}y( zm@t?eS5_%LsK6i-qMC(#7NNVDpz;!rv?wa1+5tkjPJxH6ElfBCY6`PLNb{fa#%_E( zJRK`Gj26}MrIKdd!#PLfsAYzmq(&tK+2tFql@XCO z$)`yjAy;CBq;Iq;c(lEGMt&LVHhHjpq;LUB1jd)q#FN@-)ZoUe*?<@tZ2@19q{BwS zIV*1qVNzf{K1(q77Ai_{Wt4qlQ|6m9kYT2x(qrx3)*FD;V@W|nuOydl80t~xaFR6SSTy~h zF*aVXkXh;JH#0XK4lq895nct`H^c^U`FDZSojy?^29%79Se4Tx;!T4?eVlez-?Jl4 z10*w^nFo1(9K&*0y&A2VP)axb2Uu66rT~7nD{{KW?7{DG5Q4z8fgs(5r(iI|{JeL1 z4#7k`2;%n#d5rY=K#H8~gk-};-Z66fO#TV|z#+0!eL{9EO6nyNAR)&V%tiOx{ z0_1}OpOvm}qrebwsjq}I z+3Yhh=ta&r&`lD=Gl zxk+06d%VKJ*wt0um}1a_*|0^g&CRx&G^73OksWa50wrgyW*r~5+OU03`7YR6CDloG zWQg~nRT{kAb!4 zxM-lF#*{yy-&MN*MZblxb^N*LSWf|vr`Djm1jw))UZl<3OCbB{(;xn^#nJ0!J%jfn3;!3#j`8&4ukFpH zv^1`roYP-h1;puE)0I4Ly$x+Kwn4CbFc}pq-D!2!y_A?(kVmeW=0*s5uh)g8!0B#r z`NOd8W2=zfN>S5qeS}Q;GXs^`y`F%8pR}?ydG+PihCscVeXgLS=7Vws(6OiObVZ+3 zOhlfHlJbS+f*k%3b5ygZ`zR>vfNaOlLw2k_ zFVE4;P2=g79s8mX$6oy}mrZ1#fWAU?7rfEx?u5O*MI#b5`Ck?!SP&e*+X%Sq)~zup z*}f_=r$_;x47KF+bVGh0Q$A8MkSztQ(tC3^%_>mH$=t&0lvRQQ^@?ko3#PaZx=(0X zEgdg+0U54)I}z6u8N0U+AQi}qvHEf@dySA60QikkfYw&oLiNkDtzX9K&uQuT}&Mt0vd#Q6@a*^saiVvonypvqHHRw3YZsL0RP_)&4B zs`7UGR zt81Q=Yqm+ueuE2R$-qv@%QZ7oR7CS%M7iQH6-0rnp<}CpVFgwgXaMp6dvkVnEc~Uv zi@qk;o}MK>OcaPmjLghxGse{bh41CP*!gT40io*7;P?Fez|GJ9(9VB?5Bd~pR)yAA z2hO@Kn=?SWSg`ohLLz(Hrg;INA~t@8Mn-uB1zf!uU~xbRGhF5`X*#lgYG6rn%S^_{ zW3()UyZ5lIfF^?YSKM_&_WuyvYCxrohpTS+h59O@15PyXx`?Kze{;P*q+hqtyBNf#yL`5q_gw$p_gNp5;|6q7pN^DE+FZ!pcpu`gt7svBO*akri)CU<@m$p zb#U}GGNMRykOboM@Q(LvY#R6U=)3ng`U9UOM_nYPB_TWPycQ7LpCuZ=gbANMQNF3r+E8s4O;N7wrsv~S8AZ^@ zw(AA}QSJB9J=6%^a~3Dz4`AYJ0fl@@jGhd0R8$1ACZ9WO^9LH5uNn*hp%%5#Ra7<- z)zX@uzH)JPmi6)?;eouKR0Upm!IN_ z-OQz81Rfrag+*>MmjVZ!!09z!f1&JDyKktc&Og9^M8q>qG^w@M?rLrHNY5(eR8&HZ zGqqkLo@~rYg0))XXpx({Ino9-$#mUxJeflFzRGFY4W6~ex7Lu$#SoB=j5c~v2c4Mt;U2opLecQxd&sfyxgpZ!t z+4*8&17&sRAujb*CY=QRm!$*X7{nh*VlC*k2>1-otiTL=-~tWJCDh*l3{6`7p_F}F zs5JCXhw!Xbs_yOXl&F~E%_y?2$3}u`Ji}WGoYjQ}3~^qe-=5}AcIVXprI9VTuN0Mk zoj?92tbHR!&u{o4yHKR0z)f@Ve@J9hOL`Lc;J%nDI8sX~psY|yY}c_*F^};%J=M`hKlD?Jr46^y2W7e9AqONCVV!6{inTT_)g#Z~LpptFBuST%YV_Af= zC;H;_*8Thptw#BLivL~+x6J+JVOc3j^yHrn7!+|Z3Hv_na;<0kWjXp|T{A$&e^4Ja zj@%1|%+^Gsyz0_ZR8n$T-;Mzi_;Ol#gx(g$)-5ikv2nTITCHBfQ-PxEFKl)C#KU(b ze5=dbRs`!WAD)p;Q2H{Hu58B$b6P^mIVXTp0kvzA=y9b({Sbd|g3s@JE_+d9K0_tU z?d9esJxwv>8zgKG4kR|@0(;yayjogd^919%4KyN$W)laA;pn#ffl#{=0TymE2}wE? z6L@s6?;f#fw>Y@!>)Y0Y+7dNJ7w|j4AjN&zv5J)ySLe;*K?aWseRn`K-cTW;JYk=% zyu?b(GmiO^h1${*Wr~RxvrPzDLaKbPmc$TY%q*2mc6N47P!(m^%i!gv<{Mn++SX4$}jK;|0FR?aQ?n|QLN!mlY$-tFF|D!yUwQt`5cV?TPJi&A0d@#>^G{6Pr z`}y^2QEwC>>LBPI7EcC^Bm)~#1q|RN(BQHYDwL*LNx2?szMrJyHseePWL8yyq?6z1 zOwy%;6_+i5H(d_}N7wlKHyu~tiPckB$gJ37R#;GIa& z@Pi-T6{08!rTEjocnBSeV~hi7=hS z_xW!2^`dT-)c6bi_@j|9N1vCC2)iJ5JG&A{ih$JkDJA7or2JX$G{_x?s7Kkq+{^Kd zO-+rB%ZSKvxGc-~1c#(~-+k_9fkwd95ekOiRM5o6yVzprQ|Cv!O_VXQrkZ|4LO>XzJ9TYz zUHy&F-g%Wuzq4}{gE#>=R?mW9Bp5? z)#=eLFdjd2)=FXXgO|9LP*ha-BZE|7cNCEY%*+ltDocB_y;{ z*YXOF;PPN9`)gv*=}$;~xne)UPdKD#6XFQ$e@C$|I=Xt|s3J)fLI%0CUJY=PjNyRH zQ?x;~g4P^GdI1ZICls=*8LVSC_!D=xTa4M+RVLd%g{twCH}QbSqF;$nLpr^@KfsW>#fR9 zn&G_+j>Om&SMR+%{pVr+p?+P1Y`X^9{H1~QJlS|kvMF~Cl5==F*@Rz`ki7p#?;r}{ zdOp?ig^v=-AGCa4`eX-HmMt{|1{UbvVqACtXC`SgvP9A@T;KsJ`dvi52LL3MK8_;% z-|NfE&qu4kN!!&u7?|~O!q#{X4E4!TbMG&;>oQ(mTx1A%>wWkBo?Z1qqB+!OOa23j zGmKB(9{TRTy?`=*61xbXX8oOakI!pxQ&dz14sf9TF!(S)4TsX!-FdLkti$ELc&Y98 z6>S*T^pJyukvi;`GE^hMff;8*gwl_3Hq)*zw~alc=T5 z<490w9GJ+U%80rKXX{|;+l_pw*KM+seyNa_s+q-UJG4#+qe8b|{&r(1!F&pGn>~b) zXQU_S>m(ki5sW%&XSLXbiCsSOURhcB>utWQjJ?h;l$VPC+_qpW+AXwj@5ZJ1oc4v% z>o&Ub^I8VHtc=Bt^nC&XTE-;0kJ|YGV`7NP=XJEBVxruqG7Eg_8OrfVQ%degYfn(? z-v!mb@MwkgR!a$USXV-nS3ObY`a%aQ|4(^u6<1Z;w*A_mgrszL3kWDFNOwthcXz6Q zz@)oDX{5VBrCS;%F(swDnZS3UxA*ft@3*nmZ|$zJfeEw5xW;v!=W+ZG$N`%@%E;`j zg(;2&SZy^R5;Bl?u~_UScv#LBB-=lqZ*LP}8|R2-;6`q>1Y16}M#2`f^N$bRNQ>*~ zk!bPbD+$PlCYI@28f)Ccc~z%}R{uUbTNv+~FhsR|9T=8Y-e#!Xd~3@EY#~)%&#YL9 z0U2pohexuur{Oo}@S8{w1l1d736Q4pHDAI9nFC#wb^N6wdpr-0Bt!=01NeGLbPxpH z%YpxdY3@NAnESs+DCYB6jzkP0jkMn!)HZe&g5vu7w+~D<2%-iSbGA=(h{qw~u7hnH z(eVQ(YHDhQCcTGSa!~=*Gej>D4GoX|G$9qL@m~)HPxtLgtGLWZm4HP6GH zd+bXx1AC03`+N^4eJ7zCc!B2!#&W92!UL$p-1)++FKF67?BKRN9;tMSRE*@yzSXG` zy>~Zqa&nu3C?}hGts;lm%0=lVKS1<@1c1H)*taN{K6zcGP}Gz@(LlAzg%o6Etmzqu z7z=JT-OsB`hFhE}S&eP^=g<1SBLfTFQpIExArj)K8JTM$Mp_h=|b5%U%uTs#em_n4N_E;-SM5xo`b-hrRXk zb}<9o$m`0=QOp5CLc)t{-<#LL1_z&@D(dg+vP(iLdIX_M(a$M_*u zNtuIGt0_!Kxe}ybJgx3v*h1sb?X&-0$*ew^sBJl4?x9&OJw8UcIeVI+N^54R5R{XM z1C5#ElM;GjcCm;KD|l8rSZxgyp1;=e=N8kH9Lr1aszVwcvEt1oU{HOqh2OTu9-327 zaR67j@A>s9j=|eQ$3sMIIxM1PtvuO`q=lU$;B>1IK*p~COOLPN<*gHbr~!az=f5S!SeUp<`hI zjw?5?P9h8B*WeQnw4R6AF6mN1$mVEwjzAgiv+7(bm}FHAwfm`V&1v0*)ZwVXlQt$f%Kf>_Jyu9(cCP8?ccb#D4|};a0^`+ubmnWU<9Z|{d~WDhi&mBA; z>7so&YbX)Y_m#nnxsao0!10sQbs>ioDdoww9OuoG`)==U-ZT$gw+MY!3lU;uwb!S7 zlwhmM-xLnES+7U5){`o0}yMW-5>c}SA%oO)*D zN)Rm$?ecjj&8tSLa#%8b;iR_eL*dAhdEcFmHoA4U>@5lks;w?AjV-Hs$C6;z>4ru) zZK4@lKyBkP?Q9F#UX|$=%s+`BYl;e{BJh<62@c{mjRb^?4vv8+KTL3 zrF5?a;u4SP_k(J3ff`Bos`|7~x2vmD;Cf%qF8N%(ScHsv20-pEIP+kurxW!xajwhV z7k#Dq+jsH2mI6VOlUAJ2C!YNEU?f?8L5J<$G$ZEqLOuI9f^X)Vro9lT!Ay$TSz?oR)}Ua9XgnUbQ3 z7~jzmz#F~c7Z_HzDn@#z4`8#to;UW6X^0b0v>mm~Q5oX6_N~&%ZMk#-Y66f(t*#oG z8XNa6aQ_3%-I-TfvnL=V^txfW*#Oe@(k(!^&CaM!_qnK^EY&RyS+xDqm{)ttwdMP6 z7s^CAj{NaA*Vg70{J80qcY9;U99R>AX{R3r9ZzOZ+caN@N?AfNzz_iqPsVEl0OY){ z?z4F++=?LA)fy|>4^t+Ntw&4NCxwO4K{CQ+u-tV#qjeMBSH1a5oHg17Cj*WnXuGrC=7M~9dZF^D&NUu_em_uK=Q3P{caiNU~YxI0lyua7y>**%{+^|+xN zBeXNXD;lQX$;C{`3(SrCS^4+f;}YVru(9bk_TsvOtinCDIJpTOd=I*OApyO;y)k*R zgxqelAX4V~7|3qIhEvCs$JQtpUCI3u;*!dXzp!bikr!rWYIPnPacuK69d0a;;u!W{ zm;}T*r*^1ljK-_Exa6wU*>Bd^7)Z5d4MSK>j3Zng^9*o}*5~R1%*L~1KHt5-R+^By z`uh4I_~1?XwAB+4goN58Ce6g?U5Z|lrkXgz&zoi&$v;XcRH|8{!c`xP{#^r-t5>dC z52OG}v$ZD!dDm+1XsSn@8SQZV3M_D4unQzIXV$#t_)xxjYH~Cx9IhpVov3IpuJfi!+SS;4|Qa-+y zK!=8}jN()PF8bqqp6j!S8}Ss(i$j5%KCuWW76ku5v_TrinJ2gX$*ROslXcV7K`|N@ zfBr}F){7r=Xji(fqg}F}Ma9ynwhwN4QKezAV`FolF{S%$+7Ad4=lf@c5|TIYulTc zNPwzfaD~F05Q&x%+g>sy1?!%|wJ6 zXcn?aD|6~<`y#pYF8y?5H(jQZq9VC-jFNa5i9`*_2uauWPq5Ztt+;<_|t8423`xxknVQe@bdEC z;#7b}_^F`TwLF%ccx5)rbFt`Q11KBFJF`2}Qi%A;13e&&%Fztw`H{P-mjJ$GkMhfr zi=3FvoX1XD=3EE2$jrc?;#fh`SmYHO-XAHCKA42(K1jd|+5`yR1vap2uFg4*5=xmw zV)5D?uszQ>5OpR*=5evx8_weB6qVe2KpIhAjt=RgU{sjm&22=S1 z9sIq^!>J=#8|{_rz1+UbDl6Cf(u(7!}{`kTN^$+duRen*EXrF&#EkJ_5Hf?Sboq{jS;|27F+mcx}%lW z0p{s}i~Yvh*0_v9M)YP&=L;L!AvR%))_arzm+1Tj$m7R|{Uo?RJ{$2snZ^hiDHc6hZ zwG0X*WUHu%A`sQZ$@%j-Fse1pg4DPR4hg|$2EtXTfXcRAYU|dvxu2!^t5)DzB9`-s zi1Hqa36_)D+9Des)dmlB6$9V= zk%IGE^4jBSwRn#^th%ZO=oZQt&~RpIT_c1vM{K>0xNdeyyf|OOqH=SofwE=%WiQH{ z9#ng7u3_3ki0>`Bd%bI`{%HwO?{~BcDIM50>c%1=-TSSrqUCJL%2#+)Odr-I)o$x< zS-{jqbA1h8{LTOT{L{kBEx#xWFmATo=lsgc%fTrdl(?Jj{$r{RxHlL{yWWxPliqt> zs?(CGje;#`Z;$SSMdF(2ncT^QIPMxPc}co4?R#14tD1=`n`8Yp?rfNE=T!T|O40{4LWGgGEMs^Bu-9p5#=73Tz z7#rM<@I+r1Lr9DVUT|_zC_tFHbmF+~+aeBmz zjFi=wVFOk#_Q`^ERyxuX{~FJ14^eV77ogLjRJre3s-6*sUKX-5SLzxXW=`{K)TK6A z^~0J6)uigpF3%8b7M|+bLFEe?=B*xACZMqdn<3aoQ5Fk|ABk&U&Om7YPpj^9}KUd-z;BMPm*s-lDMKeue>9g<0*b)v8O%9+c959#a z);novEsz5sP;@o|BBJqJD`(wIYa?OVjDi5@-63q(fl))(%~huD*{>RDL}?ip%ciLc zyl}?Mcv)Y92)&)0K2`4-dZ5HL9nvn-ux^q2R*?5J^y3ueYqR6QIqvNXwU+I5Jj?~6 zpj>4!Q<`KWsd>xw&LV9oWLu9FC5JY96rb)i zIUFa`hM1VlHq;`nTVgy+vt`X;IQ4p{1R8h;D*WmuzwmU_)bj(>#8JR(&U<08&@96I zCW!6aX6`D7fm!XB<;>UOA7wN7-$CaU3Y}SrMQC9O+Kd8yNOM&*`GL>a=-*Hafa0PG zUcTA>;0+Q%mUkB^|CgG0;0mLdD{c(r#?q&SMKKz&n9hj zTcg%!pWq>XbdSsYIM)&84CHa-fuy65h!80W8CGiCuCyhyvX6Yp-~Z0 zjJbnDFR=A0ib*M%h4l3I@|OAPYG`Nxj-y}T)45Si*XJ3ST@gU6w3vJ@#?l7$SPM|K%Wq2jPRJ3uBSJ1#yq6PPReM0P6{tICToyu523L#;7h%^>q}o{N^& zR(C$%8JQ*+nj5R1_HXL==|(j*xh&H#}WEtL6^A<@U&~ekL&hu3<)zdLY3tHD*dm&IgzzqZfgJ#r~JZA%rhl` zNxWSof@m9ZaO&yS$TLQ z!+{-o@g$8qVF&;UZ;xS7S=soa=!n|tS}xA&TXEg(adc)UD+2-K$w++(IT;xa{4g~a z?ljQp1KsZPbN2x7$SX#sKuQFZ*e6HA4v`=Z7it%cfeAv7F)(F-)Wy8k)5>d>-{KdO z$Dbc5Or{?4iep+ShTO!)2CQ6d5kkUM!^o&8w@gmR2Y60l-YuK)_Q<3)l)rs>|2Z;o z|DSo9|CdCn`sMF8>Gr44_5!$XSBE>fD#%@WV(kK+ATV!jQ;hDcC*k=VgJ)0`^n29! z`{7?lTE22zty1$@i37?h$0q@c^`;q}t-vW;yF2mlrl_dDpCa(7!Ge$X8z7N8s8eTL z|A^bx4}eSy^0Xte{Pw&6)^#cFDfSCA6u$AgYQ7bDYfSZQFs*ehIq~+DnZ#IE?m*CX=-JFJbbX|HL^G&T4Mb7_wL>8Fkh18%=NPoV*-hx57mNbP4?E|(ZR=; z^A%XO=ypi z;#j(o?)8W&)|0t^Sd9e|#)fP(G^Qpddf!Yc!N8FL%NT5Oid6`nQNKK41m|P!e?BQ| z?Hpq&qV2T1DsG3G={QIr>9xmS#mA>*+#=27SMkp&D~euGmA7xno=wTHbIW|WRb@f9 z{ydFLvszbJI#Juw7E6_{$n%R|zSr9Z?lwNxjv&q*eB1z)AuY|w*bS02 zS@RN6SXpHgknHEf2TPLh1pM&gW3e>BhEhohL?0Q3mjm5PW#P=}=(w_NNN{jD4`Ex| z#A0UVR#9m7^760(Pv*9o?&(erRfih5vAk((YuN?kU_%MHE+Oz~gIf;R@BnOK!C5{X z9gsi7V8%@Ocqu0Itu#8gsHn)wa`IaWdBN*O&1-o8wLx2oM-#ZufOMyR&cTz$SXU6B`SAypDRCyL{V8;PY%ihqz{%O;xHjj&yt(C<^ z=Va@+JnR#QZFvkdDrN8P@xCUhtE-y=r86V4U+vfaoV&RuBW<;5%MBa()M$?>paSX~{@4TB%G z=C*#Tz{na7`qEx`WoSr2k=4)&YNGaz4p0)gx}NG?Dr6a(sL2~dghCYr&vKg;Xfjp4 zTLeo4Q)k&*cz6K1*aGh6#*TW)-6i*deq?29H^D7XazulzuW-!cq3Q@INpJUqxNlqZpk==FPHJ@C7vgNbxKLj zKm^AJ6b2TCalRn>m#=xACu(5p)_SQEh8cV=Dsr;0kSy_=GpnAyJ|^f;~A%Bt9XoAgM+Kk%L@Ty}5W}MRm~pmxa*l z?Y(bTh;@BpKr{e|aOg^nK1=a7KO4cY56;8Qtx;M0goTzE^pCzhjdoPi-N9_%6;4G} zm{e_IS2eG-0|Y?C8iRUwXFdhAA9J;?EQ@&u=Hn4(C65PlLindz7_*sT8 zQ=B0N%`d(gpKF9ow$=fCQ!cYh@F#0P!xK~!j_J@eQe!k7(iNTp0cBg(<>BJwi^k~a zfCbFbJ%lO8!Xn4nj*n0L!a^5we;*7gJCw#u>4Lf`-p&pWpMNTU+$dh6F8?!F%kZxH zl((l#U)R3O0uvaO7Ng7p)iGES&0&a_>ZkTj5;9Gb3w{V_HSrNY^Tk!V1cX;wT%fL~<-hUz8nTEQ;l!Ll z@aD4z&@d^OGVzKq`GCUScD{wZxk?gyX0>3|W#@THOvh3_N2KV$K#%+J0X7wBHdDt3 z7&0xJ`%4T_QL!i-MwMT>Sn|P!p3FK8ysWGR=UNhZa{QmYxj9)ls2+}!(zjUhzio<) ziD5Ev5w6$+%GZh#oFS1;Oy>+2Z!eu9zfvnRx3%Tqr3%Hiiz!>`n0=qC`{&(|?Xdd# zSLOGk7EmL{gdqyjJdox63rddt?GUTNXY?MedHQ?R7K)0Qwk67(#LI=Ox8ltswLcn8 z;o+U(tQxTPDH<$Ja$PN_R7niXc|JQ#1AT4POl(DC@%7*p(96j{L;^~gOjDy!uAlk& zQ58#KPeUSeX88Qjo>xSJhevE({MBAg0dm1oZFe}ey@~woFA*N0w+IvB74SEmz4!Jk zg*8!4*f-80(ok^HD~1{nP_`cnJJpr8`f}7Sq;3^~SdEaC;NZuF)(a(MsH_1OMWSLlX2e&{xjg}qM53X9KzR9~?P zXNvD)80d1y@t)=%58pN=0YOcX6REKltwwF+J{3nZ5fpf++WIw$Ri;fb>fac<(@qk+bayM`Yo!14|K})$ zQj#HKhCc6fKIhj6^Krc57>5ab+I&Q>@3>FVcLKyTRv76aMVbKGSFa)6FXX)IR8NQ+ zIJ*9wJD(&frCr~BBY3GHCDqAgcb+a8;S7s;^1+C0rpsZUUXTd>)0Fp;7GATjw$nS` zTZ|CG1#7s}^>vhuRF~gaLvxUQ#yjoSpyqw%% z#+MfE*15B_ZOmXXEPnb&_ilFI?R-Ub9=>`*7Y`Eg;vzt@V4^hj`6gG(wKWwzX!Qn% zQr`=4-Pl1vW;Chn@96=aPo0s6&joDBjMg2rTO3f5#5+dAO4n~wFyD;=8*yuzNZB8Xr=|{gc-sef-sl;Kjow-V>ilj~L380~m1}n>*(<1m*$Mt1d_d0a3>~+H)+jML zX1aKFX5c@4d%X*T(?Vudb(`V9)ahuoEt-FATOfT4eA}A6hK246+vNuHM_zZg_2;dw?n|efnc0=&tT(i zT8lSrD#PQiWr~>|nTq_9-ET*i5lE3Id%@@s*v$cM{t#%^qRm`$%eBvW&{hK^vWinB z2<^)h8DM62BW%tK712%BPCu)8X0Ou`lM*^v!pM*G{Rf*@=%-5fWTg-M`;UO}8G4ba z3!k?8+r){<={DX~kv+5^yv|F{va7lI`924kGE;m^^gU-hbp?kC^`=iY?|29??s7|^ zM}gh!U?4yIo9}sV!u-v(?uhXV1&nzR1OYm-J-7JwoAZp;<p_gN;7jYn(aV z-PxAI@`$U6M%ZzStm5L#PeWtW*KG97*t;nr>- z(KR^iVlSnXM>IaifSDbO<@kjgP6x5S1;^o!ZlAC(yx3qFb}s=#k-yk93C4uD_zQmY z_0GVsFgDg{m;kAc0PAozmRFBBnp~9gXx! zR$&-cki|}XUKg$-jOu*zL>|ZW4W-kVjhviR$lG<%ppMdpq!P64xoXG2%#pEG+fCED~SqO>BI=jS>{nYQPd~cM=L}t_3@$btL=c^@4S2XJyTf%0}Ls z-o0{I)aeBWrZ0Uu*>1&PwP%1K0eN1)i!2)X>M*I|Hu&sr>RkSnGR)RK4x{* zq}exZ|MIBr?B#AJW79B5HH$Mo3yYRxoI7Oev3Oo&p_TfF#rCOHlt>BqkFZ#c+tbR? z()JB9X#<50U^iEmEX`*lkd-pMay1JJ98sQ|4b|3`#fu63O@ZsBU;9c53fF_K%~?<$ z!Ch)no_4VL0$a%e1{>&WxS8$OQ836Cj2EerX-7&aQA;L7-ho&M)yp(o7DXFewXIU|Zp?^b}CROQ=4=uKBgNAD+>cYM#+ccs*KVoKP=p}_N# zT`JB=v6C7X7fd3ujqG$eIJejE2Ho12cFpJdm#+=1We#>e=*x*P90%vybjB#i;THY5eE@oMH3=0d+TYb^{BZ zPvw8gJc<1Nw7U7dm9c`p0fhVHK7T+{AtMbPz~AXmmNORnRjG8yJ8_!$Igu5}MtXdZK+`WCBWRI|_J@4L{}o7}XG$ zkpRq{>~hb`i(5&VrIwbJ$Ayq0`)k;buJCGl&@iL^`p5lgjeEO{W_Vw*lN)KR4Ybi& zJnc@YRY@n>wogh=PY2$IEorXm83%@thgm&xPeq2S752H*Qn%PYQ+>~JkQ6t!vlH*1 zd#k85Ha4rMs8y6dEXS%2wRqW;MxCWVbjqUN!T$oZtPG4{bV4%o#FU%Qj8c=64?+vf z*yx5Iz=%GqpMBGz?;a|gSD|WIs~8yp;#O?(Cu>MIa4LAJ`$i8}^Lki7KuGl?$t8Bv z^!5l~WLOMPZN1F6;oxt{-o0djFV2X3zrQl&do@{Mm_hT+dG+!Z4hnMRMxBLEkoNS22&PGu<9GdvX-Eh36ZWZ^ELO zJP1htg2$%S)w|Ib(YvP9BHMTn=oas{Rs3F5)>Jt9kU-S|jI%;p6>Ykc8NcOyTxP)vJ>e$d2!DkCMMZDYKqn1}EN5gVNkU0mD# zdzl{T1miOx#8=gtUUz^zL?@r@9n^7a=U7mj2pC|`2Z@x}f{&HF&V`CLKkFkY!`CjmB-!>ofWYe(v zSgzM{Ry;_2;7cTz0DDqsdSSp{yn<65|>l}$xh z894O}%jaN&vlp~AhTj(q7#&+7(4rYKU zhP$yV6ALR|T~}ghPNW46O6jD>~1a zeI%j{y{zB?I4!5?t~Vnff^pr9n3t3n6I@V?qnVjPBHI8+MUNvVRH&Agjb=rmPhGVq z9K{W;r;rd$MiT{O6XOes=!}w&-xvuRqycDi81nHU?2hlLfqQK#5|ctCg5gf@Y>I24lX|c zax*{+aX(Oo$p`k3At52Iv#Vo)ZhYp; z6C_?kCUV9pkOO%D3{y3{2wD{u19Woi`=+E;(AKxXeaxJ@;IKLqa( z-I~B=nLt?Z8)W=~hg+$@+7gTn%$>z^Ugq2&JHe$|?k$kL6wriIj4~RmNJs>W1U#Ig z|Q?gNgDEGNz8We_juPAJKxe$@>5!Rtbi*&o;(1D}qU zu)-XM$VYg=monU7p0FD~5JqppSe1S#JMRVb{-;MzlyJ!}5B9$K!LH_pT27l=;ibCg zuB|L}ugrKBf<28tzMzQDdOnFgnI9^Rzxb_gis~uEi7kDqWNAXw~_@F^8bo}$$yVQF_S`aPk;RAW?YP&``$4v?{cFRKAzYE*Bpc zXJTx;D3(%~o{=$0ELBli&|`GuE&sSyC2sCRA;?sdl!}C6z2)Sw0ZnB-<|02(r39Jz z)q9<9B(dkMlnVH)8yi#9Ip^(kfA#}aGNKkSj|1)3)e{S`G2r>W#7Z7w=AT5%QLiyx(e? zP33hCXMRj}01~Zxxf>j7ch;iXHfX=mb-!S+%mQh>P8K~t-_m;1hU09xC_fF*V7m;Y z_lcrxs)aSD&(6*gTF#8&Kw7)Go|h3HL6JqrW=H#~6`tdZviHQ*2IhVCbHUf=w2^_D zp9`VTnv$k#G|&gMqpkYcM_z6aHMWs`((qDV1*UFPHa4q=&gHPcq;8I_eS3*XY` z8q4H06hDxhzx=|hoV>|fY?8l?Vr@EmclXMu+lHJB63|mXH{8rdj-QeO5DaBTJd+3q!fS@qJKXsA6y;{uE@RM|+ z$kq)YRMKIf9UzKN%o`gcKxa{R4orsL-dDYB0LZn%aC-cd7X8COi`#l{TPO84C?l4B zezIPla%xi{xEBufAr^9#+dU6S@M<*geNb#7ILzF?&Q>?CK=muZrhl z*0?%d*wiQMTa!%MwXQd^(CLxY8#w1%&bi*a<$=DAwWx0#|rrN8gl@%>Y-pNa2{5T8M{hV!PS z)TFU{pTQrAMZ;Yy0E*w8nA2@o{7_$i4u}I2Ai;GYGkE{;MRgn$UZJ_@N>SKcY0g>w zU|dFNOze<<{C$ZB21u&kNKl!0Zc&>xkA*35F{g6AD7dBcbpPU85uu{z{T_k+-u!fV zLkPkpLOkCi6+;iG_X%9YD+2mO{xW!VRrT7-F&Xl5O9T6I0m$T*#j33_V9*S3X-)jA z%ScBr*>XV*0IROBu;mJu&yp|E!Td+qKM0hHVM;2hob1FXYsUsH**u2VX8mR_fYJgN zxx70VY{kxBF4UXyd541P)^@fbETF1Nxv6DtN6j9qy+1S*Y=7x3Y(rNZate*4#lWQUM4jO5ok^wX);{RhH@1Zn79Z3-9G#zf zpjHT$pW?i#7ehbfue_Tjm+j8f!HxiUd|h^+_Ip1B&o^sZj){!#I~06SceJpuurvEC zpc{!Un$5nC*`I9C^ipIy_frwd^1Zx|ej5$%y-XkcTGXK0+6WGofYV0IWJ{7|I`2CQ zoN|_f(dqZlRYO*Gb{<|rjX;6gnc`x8m87sjM%{e8l;%U3k^nH42$T%Q*RSH@B>!F4 z5d6I_-fj9d2kv@{YJh;?Vp9y@ggmvov{(&OQ&S_+i~Z6=srn!*XUs+wXtkO)xokj5 z$OymX(wIqAK&_T!f6c<-U%&pO9^Ag&KU&NGv*CFpFRz>!9i8d9cX+e+FhD3aDXQFc zh#7DYNX*@)^3l+vGU0s*t(iY2s7(`1L~lg`v`>DIV}ykXhGu7HCtEH+WU>t%Rwj@R zTZ45SH1wXfPc1&_*;o1VMgUL_h~v|vV=rWzfK1Ab^J^05^f6Jyo+|19X0$xkepJOXftC`fr~E&j9Jn1Ly>|Ga7nGKs zoUDT25?0hr!=djr8}1v{DJ-(k|KAUvk}+)dy>-dZuoqt~CVTa0?C5AL`x{zJqM71< z|4b#2smX?m46b+J#W6-Hl2F7H6%zw)Z43j7zW@qQqqnj;fo0rSYDx+L z5nfV823HaWO1b_2`oG-e_V(h4DQDCh)`43}&cDY|-9Q&2gp8A!lb@fAnORl= zAw4ZM71uGe_^`WZGi?lOFG(ht+W9r~!GB+unJF`TU~CrC_`-s z2H0fJ_T*B(>HW8$YHdF$1$2zklG2XhLwxLhMyuSe17pET#0*|;38p2t(1rhT+)Ob= z|JOP7|0dq}KO&z$pT5ZdO|1H7UHkXtEBw_f{e5hR#h>Nu&rbkf6_o$KBrX5{@Tov= sp5D20b7R^2ZS~HbJCANF+xvHz5Q^thYPo#D-`tT9krgfx();j#09u+ga{vGU literal 0 HcmV?d00001 diff --git a/.asset/list.png b/.asset/list.png new file mode 100644 index 0000000000000000000000000000000000000000..f00c9a28c4050298f488109a3583c0d1614cd94f GIT binary patch literal 41944 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 D^nRT7 literal 0 HcmV?d00001 diff --git a/assets/logo.png b/.asset/logo.png similarity index 100% rename from assets/logo.png rename to .asset/logo.png diff --git a/.asset/review.png b/.asset/review.png new file mode 100644 index 0000000000000000000000000000000000000000..006a4e741f37c3332d4ccc53f37fb677dedee421 GIT binary patch literal 193181 zcmeFZ^;etU(l*|fLR)B|rMR}ZTW~E7#ogV#K+qt?ixhV)ZpGaT6eunscyNcH!3n%M z=XpM7oxbZ`>-!IU@1K%cx%b}L_v~wCu9>;Rl@+DmpcA1#dGh3qtc--}lP9k-pFDZ~ zKd9-+OG_qFPBlC1$SU1s?dS%^?rPs zFSNj+tDoqm133-JKa>5l+*I4u@vbTAzlT3R2&R;~M7raN6qgV`v-YtWa z2!6aVMb7kJ7Y(Bm+JAk0^28WhyyVqik^~|#g}(%;({FA6wc!6;zY0Q?-~Z>^zdq1# z1*iWdU@QGN{rtZrUuECq()_pJiM;JguBZPkF;@Nmm-7GGmG>O)hZgldBz+DRi);Ei zAtL7FwE6SDH}1*%LC2;=d(Di|8}jnPIvn^dzeir6LRVd({PDZ7!(45m~if2+*VdPqu)Ju35h2JnbypWi+p`(@Ni4x z-xDGt={R!FRryPge&Ku)EgH21r16)oGQa&yh25g>Sd%(XJh<%{oX*j*G%%3zY~+X+ zJa#FB@z>O9-}04aj;z(_a8xm6JO)e>M{C}2?TwZ|h>~;_P+hHx=S`(D|2i6Mg*B5j z76H$OxGc_CLfJFq&C*e#9ZKj^80jYK7hzIC-L}N%!FYeo(jPW@WL-dy6JDTN>KnCa z=M6BEqQWlaO0TSB37Y)m6#mx{_^S3Y1GQ)#hQwuzo4fu@9)>{UO20|F!Cby%6~#b^Q{xb6`Y)&BJ7UER_gv*5*U*h#~T#m;$M?bVvC+RY&G!pZ#V?U zbPSKlKPZET7b72FE-Z{soB6VS?M}dC$%yiWLo8RB3H!8I+d;E#zURp=&zAj>>klHc%WVZ^z7e76 zsx?hw+Y4#+jTse|<(W$g{PeXeP}QPk#Ig>l2TcuodW#FG zldA_CfRmHPeoQlejloF#v8&V5+&A0B%z8p&vB~iyL_|F~Q_GHXHFi9%4Do~Jex1Vb zkFvi_GoX%a1iNNa4UHU>Maq8)vFZIIMjZh}0?5$^`eKL8@98zmA=aF_Kbzk^Evoh) zH_9S`^(Kof>%(_=qB+dQrSo-a=T3W5QjC;Ub^9}?W-1M3ySSM7q07E6Qp54ENfOy9 zp$_Z)qaqtjs6}~z*&M0InVA_$wp{xSY zL(_@Jgzfqwwi2x)`a06vaB=ZdlB0A{54dI@Zbty)Uox6)ArXy@jl}*S3{aDRq8rrA zSpSdtRN`jAk6*t!vAB46$j8TW%_9lZP|tTTNo?^_61VX)Pp)HA&ch86PM8KGzniWJ zUx?*?87;#->=SjQn;jV$nmSladncp#`SrA|kg&Renp}>em6g&y2{}G78Qy}2B09>@ z&=5vsWW|hH*C^rZac2BNrm-(D2jT0QlK~+Ol<~*)W4xQ2=5(;o$vBF}g_Pxp=czlV zq2UIcn3MU^2-@#ZfhjdxpnowK{_0t7EarCxhVs-&sXK@7Qf3XhcX!<(rDMZ)R7UJZ zMmZC22i%N9LL_OF@R|Qdp?;}v9vpxWZ@SU|R(N`^oNBcFd?5|5d4*0^5vt(@&CS=a zre%wwLN&H&!Mn^iox;K+sd0nmF(MB#=IR9l(k%~`CVAG=wlU!}r|0K-jpnC~FoDs8 z=55AvPj2Yk*#d;I&y?Mj;q3Bqoi-hZ+=Z`3w?enpdW}`U{nT|p1&0V*zNzC5vwjyi zB8xXAKtsdN!4ZhpZ_dH~#P_G(+jN4x+dlfzsT|H}ePID@CKrbr6WzYl&~&y6_1Wo( z@66*PsiGi0OYCnE5e1|+uCC|W!Rd*XH+OfF<1fTUZ6YzRDJgqOm34GN{@3kV#d(X3 z?SgnSTUc1ASSB|}n-oR3SMO5)^yy13lWNBfMDhc+LaHFYLQzjoUVo8g{$w2C^Xt3u zbiSZxV(3$rmIdUi7ubUK>T#{bIV>*}5XH^|b+vsIr$7P+M`L%87N{+^v9hwWQ*@=W zxDCGd9M#q=FCPaTRU;6*!^I%PPbTEvu5i5Tu1yiA471X=e@$F8mL`<2?$CrqAwb(y z+A<$`8vmIZCji_t5kGN%zCE(s0>bk9TpaUwx467|#Lk7a#l!aG30w3fDX&adUlz@4 z^#8HWY#oB9zs)`;#WU+wXy(3siq|Y)(e!Fzou1{@t5;;r856mxrRwL~V{1x$)sL%{ z25s~(?dmVxd6F0esn)lbm%Y+4keQj9cQ|*f)EakKWV(&!>>ICn(^RIo;iCM~bLIQ= zL7lmdC?V;i+Yv)$t+$~N#uV_ZX1*pMKQ}+W*Z9lxMYxlztDJ`0=+Ktj-UYol1nqiu z26Aq7ba-fP<;X)o_pbQ2Tez#XeuJ*03L|lBFECbPT8syY&NR;uhJgRE3~UA}kkd;e z_xAHKkW&Z32<=A`QvZB*Dm;*QhK> zA}A>Cd3f|^S6nwXHpWCAmo_)e1C%F}S5Eqgowl~N+D6~wlD7CE_BdlyON~>Oj5+sp zfp=Hr*Zad&P|Js2Uyn$M=uTOffx$T9;^v%{*QxuyMYOvc=}Dxe4H(^w+Zp(V&gr&$ zPKLg*3JDPi#bTmoLF^w?K^QKEG#KZkvB-tbdap#zc2YhUY8g6v>5KUo|Innu-qY2y zE3@r|%9^`5dXq_1d>z61`WGIziuxQGV-{$VfHZ_j$OAD8pr19mnO^R@lPLp4lWFM;Fq-*^7v&<4y zu2!nX5&7sHcCZjR<323pzcP@lHIC6@>Pw=xoC7^s z(5f_0(@))hu(PV&s@=cT>Ky5S#n)342Kd?97}TBiD)b#Aly^_DWc!w{^poP^R`H2G zq{xMk(&)LC?+tV$JtFw4!1f*)X%9op_{B7mwt@E+c#$3LivGM+dm&hLKO3`!<}P+< zSkl+7v3)xW&3kMAcn#`yOx}-Oh2-3;-^aA!gURzc4BVZEVdF>KdL&hkn-%BvovIA& zHwxXbl!89#62|?79533sLI`|EZ>KM~>^12O`K9{(MOL=xWXj0P_M@fWoyS{AtY?_p z+-Jp9k~T*zwrF~oSn4j|lyOWiShvLzw97wnlqP?tDq^9UGcbz|`%>RZoONp9XrFb` z(aO=wvKV^QY3bO?M$P{D{W@#YV%xqhKRV;W!=IjRXQrZ}`tVCBe-a1; za&mLy;^AI3ZNl$x@rd@tjrtDmof|aauS&JiM6Ux4x&< zKe^PI8@IBbB`kak*?2(TxPK?FxbEN5dUh5zZ}KxIhn2^$cF1ds1`)o@I+mE6bPi&* zBHnFkB5pqN(t(S=Cn1qQz2$R1F!nhiHn*1frdyG>2M@oyy+uQ{MIaEn<48Ck<&I*^ zk?M=(HePTfHKO~j%Y;37%*u>2$jto@7vQC#(NL2=s~FmN`1R`(eqb&$6$_0nO#+06 z6EBnZW75$2hUxBiuq~f+-Zww?`5Q`#o;}{!qbU=r3V!|%`LME*W-2;5HU^47O;(}A zgpA`$(p;rvO&Wjnich!Vju`S`1MHJ3_Gy@Yb7DXs&ZBsNL+$a$QFGzzf1A^Q4MfC;n zAS{uYD_1=K`K^?(EPwzV?>F1B$jC_H$3w<4RNZQ0VIlZ}-6Q1S!tq?~HSnlqM?y;K z`u1ij%}GH4b_o;kTez=Vw2#DN)^BrsgS+f^PMRj>KBHqrO--xHtl%m)T$$A-g4hH+ zjA$91AH1{*;RZv$$rWk}T~DAay#{9AZ6=JffqUr*Y*m~8M5VzA_w>`aSy?8{HPqFG zA9ml9<;Y}gn8k?naHT{?MfkvL!gBl{LV{jkI-h4c_wUUbdVF7eUwYI(KFh<+y?t0W ze!GE!H9LDX{c=1F47P-iJ+_%Ww71x&ar9}FYtm3rEg|keH>_@hh4@CmNz^6ibbVst zw0T)8Iu_Q(1D?qA$RC-myX=*7HIp(#!Q#((02Z0x{T2S>TBFs?fl-djL262Nxn}v^ z1wNDhmveQ?NvSVta}G583>*TqDGcV&?c%ae zO}9p6Sp{WEw{eRetE<6H-+!#Qq^b8Ok8ZQy>~R2h=7R{IreI>uDXT4XsH^G5=Gd!v zztt;>jmqe>w`Aji8ZmE)jRwnb@dz=`ctF}?e;g_5PzGsS83+ORC2o-JZ!02+%T+wP z(=0%K>imuZ8+{u6bQHfxzwV<+cSA?z`1L4XxQ9XZ5e(LfE=prEmGrRZ{IF9I)%q|l za5k*3v1!Hp-8if=GlS$)l@w~Bz68dXEyB~a0Ce~4K0x5IkLOlWjD6wRt>oI_MAFhd z9PW=WDebc@rsaQ(J(;zlsc*=5JeMT9gL{?g9*v%n{&56ia3$n(k?l<1%Ix(+q1alz zq3L!zVcwY{)C(#8T2v?8r>djG<4T=~DZ`By6Y&EfrAm5lFUOT!4G|16k4wl2UP+eO z>wJ8l)xv2yIPxpGG5j^edM79K?YLX=r&ljXi?q}=EiHB~vyenb4Lzy_K@GbKC+*c+ zp*TMezgw^JK3j`SQt7tu>GEOQi5aSzD*CGX+>I3YeiPBuLd+Va>R*&{%@Yl+Qi@T~ z7O2Ovgc9(=ANhd=a;La`V)aI_yF@~p(xo`+J9jbhK#!wkz@W&?O^hW-jo?^`^sU!nR-}YMDMn1C`dh(&>jr_YpUrX-%qJu68db7b1%^ zs7(QwA!bE+ubi;_j@dm@aR<+KN(lf`oSU28ba&*te#5~z{mv3Fc8RFtuspHK=W^XW ziR(;T(k8w~lP{-c<_e+EdvM)@O*9QU5T9IKdFTxSr*l;qcJ0O-B~^C<29OT)JeRCA zP9ovC^l;HuF6G+9#M>jR$=8b>m;2QpnV6eJfB}r*O&^W!J~*D%;obT<*7N+1APF=~|HtN<%<^ZrQYu=dKJR zt1+<@0xc^QtRpD!5`RMw1^pG~jI~s;Sv&j1pWYaNS?E-(G`Vl8h$IspebP{B>Tcn1 zvhdZ?xuZhMF2HwvJVx3hCwS_GXt=zTl$3&-n?wQSi<{d6rzNpbyGq0bq1DeF2KX*L zP%1Muwc37fy-V<>zR!MZyCBvg6kxC0V7aAZl{J_p`r-wu%D4A9Zy%?PvbQY_Tg~G_ zn@X#Pxr0(P6c~5oJ*^AcJEj^dx?bOU$phu<7jYJ9t2!=i{g7l`IGQKwtvl3f2ZkjC z|Aq`pBof5$hL9c>$sw7bi-vr}|$76@T-@2^hkVDgo z;4kHTLwS6_WXbY(#5JAr;UURv#P;RoW$O{=!lZTS-Hy5XNCseWWhKTr`cy|x%ZZby z^oT>byb!S(1?TiG{;nW&;jR93RAYZ~q@u#%SwMXLtUoIS z4t$}XuBmOKmNUlHHZfi)Tfc34<~Us!6!OMiY;X-*LDM_4YVqJ?C*>O|a6`m<>`aDb zI#b=xU-H&%hsw+6+cRTbn^4T*JL1SW`X>Fv9_n-w-2k8&4Q2*A!Rye_ewu}=T7`9r zo?Zo-^YEU$hipkN0!hj!SABDSy2NkPz=AQXsprelO0n)9%*^}|aZGp^)Fi-q>2qal z@jI`WTuPzeEb?luk?IU48Mig;F?th{Ryd5w%qEW%2yLVXGHIkjw^^?aBp5o%TAH{) zfimIQ`39MZDAB%x19jt(=sU78KVsfTW(YQIs;{3&ukmo3#F9XA6Rt8FuiFsXq{kEt z>AX%y_U;Y4x_UMZbN24K%nyE@_0nz!M7c#p(QWR*-%(nUdiROC-vubn>T1ARwZq0P z=9GdndR*)*c(G}rANUfjr!40u=4AAEvjS@eh;3|2-Sqqk$4^tk>Yo|#&DR#%x8!!#)YiuDN9E;F zkXFR2svdRhIL3UZ9~TCpAQqRV^^J`1iSUZtF^9O3bga3#xtAB8z<6AKnhJDHPF|jK zL-3%gq-4|Z_p*gm(VO6O@ekM-H={%@LR>tAPaLec8XDG2O!O}_KYe-vL34*!`sO>y z*x2aU$l7>Gq6!4l;^Xzx{zgSZJ0rF`gUmow5N{tB?g3-^<00u#X2*O zZQ9f4#wumtD+D02wgPV7f^QX_CigCn1Saf0M@E+$>D79!S%1eH4SUx2FzHh*uS`jq7Jn*Ogh$c*2Af`BsD7K_M^}MeCuvaGG`dV#lm^whud7A2{Av_bO)Q`9> zeW>M{O!?;lf4-fx-#?3)6-S1+%FBb5KDV~x*=gOpdKoPt>8138_8+F_rh%Kg?BxwR zg{EevyTRQXrr)B;$K)$g@MnTwWK2h!If~HhK7dR!<@#Q-}h4XDB?8p zJ20}a%-8P~D+xc;cXVWB1RQmqZrkaLq=kpSA`>4S8Y%-FJ)qz|z<=k5hgX(Q`uZAZ zd`|>Q1z*9VJa#A6tR8O#aar09*D+Yye;k)H8@9_V3R&WM!Q(`>cG_C=efA2w>`+kV z&bVd`5hvm?wHBrI#m^8qtdAK8ms*3TY6eqFUS@3rg7gi#qlSZGkZ8V^n-OiIak&Su zszKVsLr~at$Bs(%!rYuhcyYcouZR&#Y(BXP5>6UEfNEX=-uZA6m5FUB?NtR0teu`+ znyQc;Z{*7=D4OaGO(lP7sBr{e)95)*WDJSyh+jDo-TnJ1%HR@-*IqMaDPz7hnf6qTrS* zd(+_@k-B6U{_G8UQcS0J^YOitkJ=}mMxWiR^A-=pfIsO{4s^ofLE163PqGZJ+~L&e z!OA5x1v~EQp=r#@Rl$3B)=|diqP(3?_QBRd31fk^F}Zs9YwpL7_vOn=B!a+T%k85nE!GsC2Ts&H-yE^9Vc^8bk?gds z#!3Ln-d%P|&Um3mLxWqgdbtc$;-I$!^XHI2hd?R5ncQCKYXeR|G;hI5TyBh&g{!Qs zw6v9i12gfO%x_b$xlp2&()T5zcT+K_)Z#cMXRNUl@keYwoto;4?>&Q2oMJP3@=P6n zI`ZQeoTa1ws!&UQCTe*jobWrKakK!*1x3#V=&1rl0S>;s(81#d( z@FKCmAopXah>h#$+1c5h5NZHx=Shsm3Mdj?rM;4_s`-q=9k#W(S&N+J{$)1k(rFw4 ztMWD4Y+Q6Q*?Bx_J4Slo%G7gXq-~m2I+9zF$lKGbvfV(YW@eNr*71*>58DY!k7>>Y z3}jMu&(LzWW2+U`dHJDlZA(WiF&0Z|TFXLvXe(V|zkYpUnI6f7%Daz6!Qs?$_;)X^ z?{2LnD5Tx6y1cBlwZ9F_id3(-aUtS*2bz`Da=&nSMtnbjXr7%bbs1wA`J7(d;AgHh znboHOK>ZA8abJkLzH>RI+^aQqUluG(PJT=nn#-kY!BU$o%U4ctE(+Cepyc_bC#KJY zFkk5Ruvdw(CY&>JtP~e1Q^bvw7>KsIm`%2m!Q*@3a1@D&al4(E*nEP9?`jP`z`%%< zE_XXtzZz7E&LZ$-l1#dddOrKWHqm5NKY3FsM4w&*9#Y~Ql+K7iM&YC1j_32q{@575 zS2+9aACvhn2jT&*@P%JvVPZxdc>cmiTuuq)stheiexWV_u6AK7H@o1t_TVNAtr_KU zZz=|ELn-%PyD}B@!+)m1!tCaekLhDmJvH;pg|+U_e65k`xok3z3eCHXsy0;!$Y`Mn zk>r{h4qjS1yu>XpD>D(G)F@3v2t{HdZk|p(p(9C>EsRdK8tWjt5~s)W`X)<6L!Lwf&1qB0{ea=Tc?srsWN@owCEH7yF8(h@P zzzYrK^R+4Gb*uZyloY*pEU*2)iiLWpoYA>oc}9qq@IB}15GVzsp(%^;H5YROef!@#Dx3Dtt8>!Oq%(sZfrIgqz?#$Ei>6#`%Ang;E_H*&>FK4Z zJUd%QvZUwE1Z8%%d;Pp3^!_3%(~0KZ0^QxBVsR(Gx_d_mtnI*7JDZrbd#^QoF(>k& z^`?z;pUVus|5gR+FDxeuWdX!F$mm|md*iH2cmAyO%7L0v;EroNk<@J!27J&x5cp_ z$Ik~_u-pot6;Zsso$xgSxo%arW9CJ;`1Q;c>6a9NFIRY;fCOBaOFjkV{IH17*y@%f z#xeg*ZqBRA)$E>e4aQ{R*P+NP;cfLkF_F|Mf3B?cNlKL)oU9;C?oJT%7oSvU{Zm(i zuR!>X`xnuob`OeSivXdJBcW&rUtil*?AqlKOM{ovVFM!>^ke@EwpUnw|Az5Z9C2EF zU|x4)cwVb@8KE^W+XER$Usfb4GZ^4ncZ&u9501H#e8on)r=7kOgB-O=y)!w~O-yoC zWxL!I)K8I#1^z+T(cRRNgQ`abF|qam=^MMLfmz&i9Nbn9g2jb}8J_7)q+x8iv@IgH zZ3x>PaImK8Z{eGae<}I$Sg_Zd@L3Z}nOLA08o6yN?CWh_)^u--AYEK$!L!z`%GP~b z1Dmda*0dj=9Q@@})%0e0rp-Z5MCkn#c9A~Zo$L4`q+*A?RlrP&AIk0YaMM-Q)g2|k z%36hbzFp0%S^AlgmZ!?8Zn`v*m?YBO6-Av{}Wi1F$Rp}%tiYIk0}=2D<>^;es-+#(}v z6*xImvi>q$i?4U83&c@7C3H!1BC45naG z-S3B3&;1pqKui876YYF;^FePz-rtF;Yt16P6+VrG+yuwi%!kW}jg~jBZBQ(+J_!p430PrEnlm0k-YO} zuBCwiLfI&|a}UR1%3*Llgs34s8i1rXnr2OJ}N5_VrOrIGF zyeX}xh1ebcvMxel2f|6lS_^aUrRq1ToQRnmhn@_$qmXCa-QCoP62a(dYh7(^51Ogy znV2|x`GVJEzNCD8`MmggQUw`;Wmq>h5!br7q-W?guMDIS0>p&gc&sceG+HcPKJoY8 zsR|SEz7^~X*qvGf0v@7L7zcQR!N9Uj(D-lVp|` zC96Z~F~}slj^;iAEdG*1ziHCPt>NP1$I5Pjy4uWqt6$?=e{lQebIdtn?-TBoa%$sF{x~DCO|{V0iJo@n_1Y=( z3n72T#qZJ9)wP|))M+!tvz5P;piZn+8$X-|P?m5uzPuotu{G#;Nh0VIOw5p4Nbnts zI?JS#8>=)Hbey}-+63nJCqY(qE&JXvYcl$CJC^iy?uIqw*2FnR)q%oOOa7dEk+!<{ z*xjATuC(wZO33E0jX`mNr#}%;@TR#gUyUJ7xlB4N(6P%=HQa92gcCD&@NAQ3@Sih3 zJ+b|pw~a08C00yKWFdf+ALY&K=^02%tL~=8eze~f?W|;l#Co=H^u2`V_%Z@TFg-Jo z;615i$cD~*J}=smb*_Cp43I4R19aRHv$7TcXVAf~GG@NIx;ih3AvSbCwQnSDBEI9Xb|yr@=b!;vw6wUvKL=uSD^ zU$h+*7F}IMnL%==pELx4?p7znOo~YpAj7yQ*Kx|RcW=xAbarF^v zx}W=d%pds{kWit;b6Ou~*vb;xCijX?OW5CHeE&O!8tTmj$&>~D8_wF>-~-N!Lp{@8 zMPZ+&?>w1zBhN)*&ZoIAp1&HlLQPR`y6PB}MQ2MR^>6*zTD-ITgxp5`s=8>{>V@p@ z4Nk)>>8B4z$73twkgcyZ`3Z!0Eh7yk6DEa=;<_*ye>%ctSxL{Ui6b?f*_z=_Y7LYG3NyC5_U z$Qv6JZUO_4@#Pt-@X`KLN0KGkNP*S^C+oQf`JR8UqffcRQN>x-S(YA@;{T?m6Y3_l zEmFHoD73zSb9+T->=-LP_C^U=n3Q6zIL0WQpcX$bW+9oh_<^H*_UFEUzppQ;9`D8o z_y(Nxxv;7js}edd#|&vMDxd+Fg&TOrdCD{B6$PtR6w)|wDhXd$v8=8&g?1iP3N)(( z3SY1Gt~C(dZ*C}!^B>4NZvMGB-+nk)VYRT@dD-6a9{YX0F02~F0B&mFfF>yi=vIh* zw30?r(90`1^*u)gy1KfywzkdvDH!-HK1VlQ=_5tFhUdzi4thkBgDxh@F+H zO=NmW$ISB|E&z;ABgn*LrrAGFJa%?|wb<@_9v&!mNzeLtK#o_33{Sg|fJ}VFPo$va zW*cU5U)GQPetn(=T|l7-$q_0+(cIN{{>-r6-ClEZ@myu)wiYGtvq(~y$OD1Svf+#Q zaIc%2+s0ks5>B{;n25dOD>{v9?AzKXD-lrrLGj3xxy$ixYI3aK(|MNzDrU2X`m-3-^2t^0X@FC!V~;zUQT_oi1b`Zq`<^BS^OvxIiJ_TKIR;dOM? zHoT=e86Wj)B|C>H;id4+U_)-_g>QEtaJB*SL0DBcHOz>Q;9ZH&=~ZMiKBv2`hvf{1 znG!QTbszk&iYhOgmyJT3U1StDHEs0LjMm%teL2x7?RQn1g&&aZONh|npPSGXO z4MuvjQpz2arnlI|M;q=kfS7+{AfEyqA{p{9=()VO0qbsg*7?(oE@Lx@A3 zRn=>+TtxP=>XK5XphuR&rP0$H$twz-_?yN=uEG0@InWCAmqyoJeIvmxQBlOJD|2(d z6~ZGT%rP!5E=H>74l7xWzbG4PxQ(aIh>8Z-Lg=2WD~vMR)1Ctpk9T$sW(d?jyqz#w zJ654(7Qe#%2z(~Krm#YY%tpcN=@$z8Z|+QPFW{bkK4OPkAJ1N$eTa~puX%NMG@=8K z+#vA>JKIDMa8Cf z!N!%*!pw{m*n&gH_(!s$6_EeRaA>jD&$nxBetQM%ZS*a-(&v zsq1vE(|VD0alX;qW65vPp$WQ|oDmY>_JF2c~b}b}by|2!BqsVn^{+GhPsy91*2mz)8buRI0s&gE^jD{dY(*8bC zSprdo)UH#<#TW|K(g4(=E$RS^`bXD&tr-Ma=L$s@$NnojO!&61wKHHL!|4{Lz_a{m zh59qHwj;`a&BxgpS<5CS7HIQgDEZ)kn1ZtBZcI&0Prxy&OhutmdkI``vP{11K+|T*mr&`wdCEhHjfvtt+^Hl$NFm zW9V*=DZYpB-QL|ySq*5Gf;Fd?{86`>ZFmTXGSW)|Q_F&EeDS`|S_-<;sjD&SYk_`; zmacgD-~zlE_Fu0YF^O2Ul+PC`@A?i{*Z?;yt55h#mYfS%x_)xe58+aeDM22tuK-ZP zlbb8RKylJV6%W;tk4eNp*q9Na0#BoS7$u>WPq#nkxdb>(PG340Zqa4#zyzIZQ|k1B z_bNy_R%vQN#~Q>nh9r3mV#RnakJ`(-ICV&lFFVN5tM~!g2Y)=~e;Vro?l@((pLb|@Rm9&Qa&6?m9;Ubuu2=PwB+=uxoKW%vC-DnTh5)W zup0Ks&xLt;c~k7c75V3LH13Rf)e(xB1UoTeCMvHAMRBgFe-G5qYZ<}ih{*Bvwhmj> zR+beRBU~hg;>9z2UDRl%jY{T=X2GJ|Fp-_{EH!=A8Jm4`=^(O8?$yh6dy}zD9j_Zy zsh~InHJ3ZV%~J+RUwhVkWD#uco7((3@T@ezZd-o)-;Pmh5jQ=1z?i@F)<~KVqe$1+ znW%h0#-Oa+<^prUs*QKALIQ;=m~F5hjl;PCO|CtcN97qdcLjxo=kDdM#wz^iThdAY zb%fR5cbcDypPd!~alX`CdS@=I2`o2?3662)vkgBS=Gq zZY?G*zU%6R^r5&Nm-ICZI_&r2;c(8Fs>i{BoJzeWDI{ZebJuaX;7=FL=M5*w8dSyM z@>tH~D%Yad81ld0*n+lQvQdgdcwMB&qnF1;9%r38Z<4vm+8~YxwaBVdHZV&6G)e8% z%H3C6!!cf0AwXH@_5JY0fs&dB)(3fF>J))XtrQ`ufoMy=+r6C>eV4dJc<8Ov!=IGQ zSwmkTK5BYix^ILOy6P?O{V9AwEB=otmii~sn&+uV-uajPl9)mnrJ|CYTZW9lI;1^U zRc?5QKKt-)DSe?eHI=(epa>R#-C%7cKpWIu?YraXj#gGD;KJm3Ir2I^;IbNMrWjgw zQnH=y=m;+5W~1eaAvAh;@OyY5^Ik0=C$Q@JlE3uR%5#_ZtHXqNfSs((JPvFqRXkw6 z0>8~EmXzkenrp`Au%WjO8$lVE7?gJN_|SLhg}o9!fZxI`(lKZ;PplmjekWKFt=}+mrS;6n|H{2ow*K{FqUlO*e;U=DIVo ztpq%@5`-O~g=2Gl-rIev&k#2gMDAv^!uf-LMskd>*JkLj`9RT28_C^G|# zN!9VIY1{cw4|A}R-drjJk4VlNF2wyk-u1;{u+5`XTA>sym(t=kDg4{Zm=k!pcl~4e z?=uYa`Bm_Ec*a=Qg5{hw=m(a}x_!vt3fUz&?{BAi>8|R-vL8MkH?`DDz^qD0an6xf zab>sDuX?$`p|M;iI^WuVkw+UMpTlHv!~h%Lq7&!*-d*o@oM0tmlJJi>-H-ByMdSjL zJ6aj3`NA^{^;Of2z66Tw6!8DUqH28l>c7G+Ot2#xvB;)3I?BA1c2_bhGEu7L>x+_g zU58KT3Z8EzLiS&2R_v8&FhYwaWLM$~D*@iR3B4FxuOz?jWO=aQs)AK_`xTB44-4EN z9@?Wj*`Nnjf3HB>yxoF$yB#SLh4&ibUPSCCH#>$tC%JbvmP4#gT^pK~_U*Src1nV$ zyts5i9oq}#Eqf_O?$iJwc`!Sd^c)zc?@&nuVc*sXb>MfHxVb@HGRUZ)jbHOGgtarS zv~UPr1-u|**gLYwa7EIUKY!ZCR1FSvbPnKK`993!D+yi5TW+6fW+_(9f`^44?<2Vy zgoLj5F1(k?YY{71UH->VtT_`>=mff;bKVy#k9sLga{i^2m*2K5wy;FtsV42MIk3gr z#a_XYYr@~_YzBzq)2l9tKr7gk^io7W9^yB-4EffmCKK?5QfhAWwPBSX479ZV`@GAoqwP% z)mp4?`!pOL7njw%Mq}b{Ktn9cQns*S`4PN3oyVrrBv#i7&8vz9^G4sAhD4FV+U4f` zZ72G6US6L!;)LzP8#H^ey=pYpBa?#OE_-PwHDmwsbuw{g+w;6 zbIl{8b6#b}lI?sk_wp(o@`e;2u~sbZ^#*OgIuzk|iZP^@vT{9&)y61zG_l(v5Iv2f z)pj{|V^PuN?TJARz866(XnEl_pe-k!qHna}H&>U;Rdl^uh=DCNgb`m>%_g+sJFUh9 zEcY!VUO*SVfU9sV02UToWQMtqRsLF!{`;Pq+!nOHS78ngw-FI#%d9JXo(lo4{*89m z84wxVOu7P|siN6)5pPFV4kCfeBaw;uJE18kvbAKlRj=YSrK6>=Z-Z>nm~Eof6!h-o zn=qVIz+)CN8#8%4e3{iYJT$yl1?L~y-@gb?9o_bQfq6zuTFXq-LKb!BCm*!*p@r|( zudCT&cc19^z!8e{}qd zQazvpYpxZ|)p~o6*p2C&mvq0riTE1h@G@LJ`=5YJLxn-An7~&Fs}wJ5OlOIu&3rQL z4rx~I+{r()im^&wFbE}t8g@CKoWxBXm0{y$-5oBsIjve{oeAHsZj2K1v_TqGG+nNs z{?*!ZZwqF{AsSpBOAr2%eSL@daEY>yUK?FbE?P_bx}Xb0LQanVhLcn7T%l74S;eE7 zG~nC?w7=hSD{GhY{)@Z#J}U>Wit=@_2%@mHwcqRufYcM!I&2BY=}Gs;XuDoLy<#~L z#b`&7g!f=oHJiF3Dw+dN?kYlD{Dyg&`-J$spVqb07c!ZhQ^r*L*q=CRzmImTyP66HMe#^%` zjoTbdb%l7mJ~-*s`Ng}JA#icF2x(o8H1$&DDKvSN#XtV;cj8r5s%4ulI#$J{P-9-| z1gu+TWd>aCj1I|SfxQdEVAg+kSE8LB)tQ{cUK6l93pt)71BBYMXQvK38b@810k zSvJaqjjmyvB*A3EQ?JH92XV7~Kv(*Y@`Uh>37AI@DVCw-s$rEK3hv1!fBNtxvubDy zFR}sYFBce;O4Yttcy}LWcv6K$exZ+oxQa_PzW=H?8j&)-hbB=lc70;w+ zW}n5Y+Ah)1&^YmOw@U#<+ws(qN9_mE-Qz~u+63exbDd?QmUY@pmPJgBA{M#IZ}G{m z{JYu`PC1c%bXGgrP*CZ~*1CelatZ2spmE}5EAV{Oq+2G{<>1#GUf z3O`Z+0FhY~*cjyAn=y&js$R$0zOUtj)o7=KKRU~C4iY=HTjWq7aR0kSR6Z6N>L8U@ zMELsayuA&iVG74cggkd5u5=P-NR1%%WwByO3+QSYIu;r_k<-ZC5ff8%49CklT6w%x z+OF9+G-%YJ{m;UlJo&|GUZXu9sLeEmhV}(ayifdizeCH6hk^3`DKl4b9FkPkph*}_ zjjMb!eS3RL@SSwa!lJLQaCCI^ueM*dk!VtZ^Yil*76T&E_ob89+7&ZrXAzm1naEOm zb~fj?wu-Ezq@>6WC*yx6FCq;16q_D@xYd_Q$F#q@`|lR!TP>rNldTjZcD6K6WFHor zj+=Y>x5>Hg|GDYcpO>hCC)E?x6UwFPL;sTfQV00z*)rguqdhTpDKD$cB@Qz9-}dcZ zg4byO?zb&stpERhlL5HtPUlH#W_!r9I0<>w1QYm+_yVn>+2TNmeS;3uh(rRNIlQW+ zciN%}&|3&U$BpQ_rzdsrPMG}jze_WxcpHIA@lLN1NYvKaNxR`2?$nX{?mJo(OM5V&t-pe%Doo#9omvu`r^ilP*_>a`y!_uawUQvbEn z=(mFS>coQ8W`f8;^|-7>WmVz*HoKM>DbiJ?kV`xRkQxAd94|v@RbZP>ss8j~RD-Jl zHKd`hkn%D0Uz=SP%D;U4+QlQlBH=nelq`@J(@Xr9MsE@KOu-OS6^MO&67)|LXDA=|haKWJ4PW2__8Pvu1u-ygR}`*W-So9Ce|A51*K07M>(L5;W~#cH!sDvEj9r znGPy|$VV&)-vDT6t@?k+ddsl3y5)Vi@=$>SEmovJp+JG+?zB*(xLdFy!QC~b6etj& z6c5(m8r;2Tf#B{Q++D(d({rBld#~$VANUYRvRQlfnwfiM?pw&KN}y@KGfw}2&+K>` zN~meTvfcPYl$trfSH_xW8u#{G(MOr#Z}U!6aMkT&e9oDyemy7smPNhkChu04 zR5#cLw_oT5`tfPwze&9~(~BJWx#wbFE93$N1+#OYiWw3}Lq(rEf=Ss@2m@K2N3+n4o|O zBVi1o2rQJcVK2W)Xnrou*pP|2cE!7LKvzAv$qV9SiX9VXQ`nokG+Re$gheo~e>m~* z8T1+LrxzQ!e(aGl5YbD0xAhaie(L6KN0v3!chljl?)JI`c3R)nsIvFmy_{s{`Whxd zm7L2Gc}n|xj)Js!KcBnp`ndTXc15}7hlwhV^d468%g z%SOaj;K6oOCPHV8N3^}1%oj4sF^||4WN8*$o|NV~3NMsAPXMoNuRm)7V&Y zk>PY1_^mi#&)^!@N5A*Awa=D#fTZchwuypECyz~Tm+Qwj(I#xeDOF1DQ^@fE+P8;q zyVdfFO-9=zM2nAZ6fw`pmqZC-Vdc9WRu|a#xdl&0SnBtaz6CfnT}_KJ({Xa13QS`k zAH-1nVG?jIFGRH1mR$q|wX?$F>b=?96&x!(TQE@DH^=YLsv7!RmQ7l~*@eIrsnTXH z>*KQ-BeAmRzCPk5*q#&JX4h_lEY6Ds=j=HrNFsS)TyCyI=qQqx;(DASEgy8#YEV(E z3`s;iG*-6Nfp|)=RO*fh^!Y!Wy1*H3c8hl1Wm%nn$ZMhJJ8Ej}*9aGFy5wQ5H(n}Y zmDS>laP^Tbs&=QrYK8fXZIty3goy??BENj!=iIC3hm4CGG0ZSt^6OrE^fj*r5ghCnYb?LaZ+fWJ}U5S)UI-c1ilvoSL#E76H8OnN`B7iaL zdu;H#<4ArjiT?1TL{nPcpFj5i&^<*=%=b?(J#(9Q%!xHWX&!YEdkUv=LEq3xJ(^IsD^qu z_A<`$YdJ}F;lWd!V=OE^#|w$3`Wq_F(-2$=I2lAn)l_}hOdZ>F)jFIwcIe&rkQ8qJ zhOziLI^NUGMLUR`E=Q`P2xB%v-*u%+_%fbWINk^XTv{V6m&{ z&P@U~_n&%h)L*Klc>BAjG^;6`1ncybmUr-*k!K4o%n4KwpJ2H$71g+k)t9zQKYLgSKAFlB#%PP) z{wy{6v;tMT?Rt_pIisaqfm&w0I2nX3G;5pj>Fg8i&WdjJ4*Rrz1?5?uLN07TKFg)~ zEKfs1GdH*E$-OQS*flyaCBDps|5WfagG<&eE#EmEJ|-4rbs6Q*!EO9ZHP+V$!*73h z=0(B_u~pI~fXMiKO6Xksa9lcNKA!Zz%=b;~9}RskT3&HIWp-xKTZXBeu5ax}=c)qJ zVbRBIH=)vs!HI&?tkiOg`S4$9HT8@~C>vzVD1{l0th|hVCH-rT-=GCO0~P&ZFG|i2 z=IXtIdvaC5L5&xFhl!1xxW0*tWJ9n>dcvbVeoi(XnJkUrZgw*0U0@#mY1iGGZ7W+(`47tI-G?uQ+<9qvdmug=9dQQ6NvU*+<}fJvyvVJim7cJm zleh)H%?~TPdLG6%%(m#H^m#kmP0&=eNme#SDz11E!;J8CzmfNpppbz&YCoUlxKFZeWP=Ht||!zxL3 z(UQ>uJZ--sGwXD}ifr;pY~!1Uy>f6q5Iz5jNV($LT47I7z4JG$vh$^*iH~I^X@@~C zZ;{*#w)70bC1$r05pz;xt)=f+7sZfNKL4@R#CEfrkawzS7o$xSsuSY?6r8BDQ2cLV-<*5vH?+; zxdC{Ut!^)uuW5(a@m0HGl?7G>Ncel(4U0$yr)W!2nZr`oTeaw#>^+VQ7G31$vi8RFW=-shu4xfEj+1!D1lVT{{|tC;dIUB z2S&Hzezd%w5Dw&8Rb%6I$in>GbhZdgzd>bS!csg6pCROz*a7^FEgan4o%z7;S3_ewzPWx{m9R1$>fn^K028{RFS^!mP49~O#?bxIton#KdL>#w?5^@rtZYh(zC2V z1#P)1H@I~=X>(KpywMkA0w+6fPfyD0FcszXy_UJJMF@dNr#PCXo74Ba^Bor_8kY_-~l=DnV$fkYG;>hV1?qb)?zo7 zY^?vhvYeS?_%qwsX`I7m>5JhL9Xrb1Ocq9$FhW0e1k!H9G#vI7rvZH=Dm=~WakILETXdbD&fu!0<7kzt zNyfW*4+0DqM3zEKhyjb<4k`GkvhlNrWd;1}ycK1#{^T9^0NMa9{3-zNV?bYbs&3l!9;UMMn#iBRB{A%zb9ked+0dXS+kFVwLKvc#_Cn8f$H)$h;ekj*Pw%ZD!1{t?%Wv zG!c|1wEdu(m82las_*||0r}@<_8gf4d>m9B=se;1##FcBaS{W2xuJyd8F@3w8G=iE z$IQT3MiJw|h`suOc^JvhZ`!goj*ElB{*W{!>eYE0tGqKl(5JB$?RUJ@=&|1Rpi1vM zrmyC<4>?cS1b#>1Pl&nb_s9I4t2aJF(|dP%Env(4inYCqLUO)2aGgQ3@$tH^iS)en z=UsV@m3%B}Anx?Y*FUAXbb{MWhIn~Ou!DcbvaX5AW2PxIop@HteO5#UQ|F425KxN0 zWox8rxr>8Q5u&Y-RUo>7`X4KN`9Y&jcn~I(n95S${#WnFUzNBJtvTb)0EZdr1w7nFK%vB zuf>wB=Qh_Ty!~1n7)a0I2T}&X(>qWH$Qn*@m*$Z(HIXD-EQ2dbYrI}3HCMjp@rl&W zpE;Wllg9n5H*}dp7y3}9Z5QvcrE+Sf_*i#F=z=;tw)#+b@;J0va-u_V2m|MiObW_0 z&UI6io(+#1ky)((EuO5YneI*9{l0>R`uc>y=R}FUG5H}1jvH*uG3l1#2&i02i~xj| zx1l1p&uI7fJUVab70U=zy8HbdKP6iU5Wqqo(P@9^gY>!LtAa#r+9^kG^Hnsjse-9Z9QquWN^=P~>i2 zUp3vLI0Fxc>4~$9M`cJLj{T>jy;z&H;XFG+r2W<@`bGG( zRv7`}o%buVtH+J#xr*jLPq%E**yC$_OtgOnX7O}((-WL3jim{VL1bhDo>&+_bW4tG z?R!5T8oeqjkmLdX-5*CHbr8DtxLr~<=5XPhk0swWH+S}EGHyo5D8Z^0xn%i$!y3BY zHC|R}jT;g=C?GhXad`>V$YD_Kns^jmezw57O`+(o&3U+sFt4HOIY!3hzPdsc-uj@9 zr+sBd*_Vkd9kG9n`rWt1b@0-QbmqenH<*a83Fp}=KY>kQLyyYl_OGU^Q{4TR(uT(o z>!s5qc6RDtZk3wIcjW&fhRx1PtyWo|r0RES;p7r-k>cB z>1cCFHzq=~X^|mSnmVy+_d(zpxaTMW^IKYRH5W^bu4`YBY#GkfPB>@d{<$+;sSTM_ zb8}T2A{H!1_?#$#&nx$1mZ9WB@;JvZnL>@w##NeDNRm(ML*Ea(dMR4HS*df7nx^cL zm=j&h4KjkhyQl4&SkBXIg86|T>)Hs!15U^k9YLt7W;Mc_Nyt8abDdMc;LUS^@Jb-B zx5NrfPXgs!Uf_gCmt)ua0YaA#ZPY(rUG+p9zyk1<8h z;cnw<+N+clbg?q6!#^kIOdl?%O-g^^U_*b0*NI#T*)Hle>r+U8 zpeL=>pu01-G(c{)l&ot~dE$Xw3zYnMaG&@ESSbhc; zw^+TOK5TZkJhp6I_lH^@CN}X^-Utf3t2u0ZS$!I3DLQW2#=db>Qyg`D+|sjp5q^KR zzk2O#@qogU5C)mT(3So~wIv9tNhW_W40>I^wg@Q+`filVg{%Q1`Wx>v$N@I5M4q#Hq!u!qC3`Kk=|i5g+Slvrsp(^hwIzWPqjUPclxC~rv6Eo{ySa+ZU zORc=#+4F7VBdydSMiu|U3ov>mhJ<|;tLz7rsMVf!SOJe~xG`=oTTfA~9DdF!n5<(U zTlek#ZPUj^UsGcq4F`KG zciEK7jnR918oNKt0NxwEH@Ct*@(e1yz&y&rGLbGO@1XDgb&KKt=Rqjv2v>Q9{n2A7 zx}>A&$Bw5q%zp%$E0>vogp&jtQ@(#Seof&Gr*q5TC)DimLRFFI>>z|r=Af+F>z+cu z6e?rq13+D6xcz$MAL17>tSXuUMzV>>(`8Y8)2(Fw%Z|0*H$h7;`8sm6+!y%?asiNd zqT4{g%n-DpjO6BQl=DFwNx4FsxhBfLCeV>Xl<-<>j5|lF$=CsWXtfh% z6^ND{Li%UL@p91*gH2Uz(@N_=3VLB);iGdi90}s`O-h=t-bMC|p-*9G@Da9)9wL9N zRsh2?*9DSY=;G2#!2TZ_R9jma<`=TjjGoaw-ftlH^zr$m4ZsNpaN`;Kh~@Xo+lx_K zJe*yVnwCBm{Nv>866anb7nWgV66tw$21dz84@Wybma0Dm&AUg0#yM8*+?~?XznpSR z7$ugLF#HpSd6_1dM`o_~cqhKjNJW);J6zVP1C0|!+8<8Hb-T>0oeH&dP~{G#ntBA} zLOKSzk{HToaplI*V-O`>rn=7bm)7ePe_Y(_F~0t)Hjluq2`hdVD?1C!X%&zlMD;_M zqheW11Xbn^<~lXZqBP)Iy&_ZWEFd~{p&j(PlWSCHw{+cFd$!!pqhOU5TkGwrKqB9q zV7kxqaWz*%QQy_1Iya8J%CDkQQrsaPTMh40FYrMWLsfU_wIS)y(PbjxClhfGMpg9{ zfviogW3udaQzjkHK6Rsw_eFA_&E}P&9QhEeGYaB@yvbx4s;l!(6}p^7gEX|!6t^MW zRVa?tXpH>zH3uHb!mYOAwAW6932_d?{?yAGm4|6tAhNAP9P1w8VjHz7!EX2EK$w7n ze%()qxtF09^dlTITw&$VI1DmyQ6+S^Sax$tYRc`x#)y6P^2Hqqy4Dk&V#m7c6_nsSp%sob`s^o0X#Vd=* zSSl*qszQxYf1kXu9H}_<(JmVtEr=rfME2XS$c%W;qUw{qSYyP>}Rz8wf88 zh8jjS2b=L8U2)rjg`T{E|0FoD7EEjw#V3y)4M?^5x6yG`-z=QNH*_Y_$X+>W;JHks1-n=ibR}6Sed&Bs|$j> z6rONwbz0qo(hddxpfX3eR`;{7^;f1KGOLKane|h8^5M%zflPDz`8~Vn{GrZN5_Va$ z$97K@8_{KF*X1W=i_6OMWfD6J zAP{4g94@3`Gqd3uQY`~%#zB78g?5ILbWGe9CoY;Lt2TCxdt>}>gG!qlQhj6UjNRO2 zRNkv)#PO=DQxN3<+d3;52dM%s18#F&33&f9vXrwcu{4Ex0C zp2r==nyp!T-0Vd4^*^eGmVL^f7C+r|00^@Gqa#4AxMjIXx(WNNj!JdEZR|`l>;Dc+ zo05^!?(Cj$aWSBeL3Zc60T6cMqMlv8R+J>Y39mG(-F*lJtKE3IZs(wNXU`2b-XCmU zLA5~eEXZxH6B-D^mq2n?_)@i~IXox8*N#C+r_f`X3g)G;zP=*A2H={SUkYjVVV%b2 zBmp;g?L+X{hIp{u>>uc}!cE*=uV_)zJK%^M3c21lD9ECs@unDuDx>n0ji&uoVAUs0 zd&R2jWnfV^ski0JIrj7L?xgGQ#{@Rc8DfQqUL-63&&gc7R5!FXblK6Xl}$ftmZN58 zcx~oO1IDhDzy7RV0`|uA9d#ia_J%v0j$HrIw|1_>2fttFc#jcYvlC3g$a;>#iH`;H zYn&EI;=Fn}9vAtK3yp}DXYb(yeBQkGP)~NI&p)|*nwzP3`Oi1WTHy>Oi!puQt?^rr zuOuYtjc~eN2fyP`oC|*-a$D_A61&p1mfktUvNsl#MXK5rSCR_*m`DN#VyaISZ@tUc1K> z+Jb9AFC5kphSdq(`{gcY8F~8$8&~wx?}sf*oLvkkEe9$}lbsm3EUT1-YGUo9R8=Ji zK?|hWI0c0*ql*#sie?#@29#jyC*Sak?I<^4ixY)oOAn>iB~5MARtn0-Br-DD!mSx3 zspAr%#&e=hAo28}{vdMg9}blh>5k@(4Naffluet_DUw7yNz%;|w zKrp}&^#xwj-ak1@&&*6V%id?wS0|`c)W^CK$d~ylbec{olf>chkk*<|&e#J(!lBn> z$PKw(=cQ#zetqeM$e&yIrd8P-PAimR-jF=u^u>0Dpqp>9VrtII?{V;u?xkjy>!?b_ z$Vebvdww}O`n{74B&JbBH*xk~Jemq9lW|^7zT>qj*Itobf|wKbJ6+Y#gPl zpd7Uec$k1{%5=fa>3dG%z_FC?%8ZnbL_Pf(kIngIdirCK=DBy+1AO3STkA#eN5{9h zoP94a0}g?ax5>wDRdzwC_zH9}r9E`66jmYaOZs~fukD#@t<75{k~pq^i}%-W5moA3 zG;7Y+U|aDL6Hv6V#<%hba;{_-i?@gEW^GfTA_$+8bU;~IVA$ai4qjcNLQv#{z=`lq z$W)@<=)nsTi|d4jfCm8Bme4kp2%5mL9Qkm6&c6!>M5b#+N6kFB123LyY3?Ec=}n8j z|H#L=3%CX$OZs>7fcLL<|HCTujl`=~r_+OJ+{f0ma(QKjmnNRv?xzC|w07aQ(?ls; zqO(!n)qdb|$gvWCM7^m-CC||%uYP^$sG2StzvnIAcjoegsVt|({B-uE#65@M)}Q#3 zvpQDd#&Ov!_Wh9kT`PU>kOn0G)w4Ad6-^dXENze*Ta?^9w>VjGZk--?q2D(1bWMWs zTAvYC41W!UflZDTm@cZA>JoU6bi-f2_(J@>SL>T9CH zx(fkY^#3eCz!AZ?%P#|!Ngx+Az7GiuFw=FtEZQ>)l%Uzz*vp2UX?{(^lkz2ZlJ#-v zr%W4Q?{mr2nff^_)Hgpig8x;Lrq6tw`=sF_NYX*?oUOh^rU0y}JvUgG+HkrXRRt;( zo=rV}6jr{QHk?xxuh&p1ZQ>Z2E#kQGo|nTStFybxT|chuCM^2XAV*atc42Ex>2u(r zmwcgP86NZPeBvIYQ$n98)U?0xAyvx<_E~H<*WI~%6-F~~MwuJHu~H>h3O`xvP5DDn z0uZ^btfopU$n87uaBOiU0A0@nz^wZud4lykf0E27Ll~odf8&*_>&>g_^P_{*N_O#& zox@vpSImh=F=lJWE>o3EY9Z!K4#Bu8 zHUuNOdq&9CXtA-i#OW3P2LN!trd8B#G)bC{#}Rk&{p>D7o%sNZWuo|Oxag|yc`QsV zCaOOcfUHUzd;)1`_ovA%%kTSshWF-_YBLcO4`yZVpDb3@k@AY`aDGH+@IRh%Hc&`M zsIT^JoX9T^mME%bE}Q7*X((seR!!mf9vKe-q~gKfO8-EIH50>%2`8WbRRoj?ZK&W!g8nER6`KG?FHJ+sTrG#y3oKOi9_BjWh7Z3}|9X zjRn~>(U@(;VO@VRq~%fNk20IMPEi_F#%jrCHSnVqN{WukD}c>*WkDHC4PazR6JB3V zrPYe}U3;R{J6Yp7vZ;gx$?(Q$Br{+Qs=5hLn4f z=3z#lLPLm7R#{=FujvKmHLr@1)761qO<>_5pnR#Es9?R*kR1Tp^qj8%@ z#)%?8kJs+*cA0{rb_tDJr){19uUotro)M4*tZWYB`reRpJ~)OUnwh9<`zFmy>?T>% z-=R``=w?kjW`P2|uJ;CpnwHyeg`ntp!FCsWuoycq8~r<(nZSY{s4EHca%QGjS`XmU*lD@~PLP znYMtSEG~IyvS{L3)Bd8DujguER(IZy^9k;zhCq^sK*QWb{idd(Xl#RvR2k*Jw zE*4nhcu?a_q!@BJv1(ArB0o-WF1JidH4!N(D`IOC9;ff{2PoARGSCH#9P>y>!N0tNrbpPH9^eKlv{!jzD~N!uj1xrFWC!jy|m( zqVDilsLNyuGoXt_Thz`>9Qmc|`)E_mX4hFFp~xm}Q*Hb#YHM>-s`^8>4;SYc!lY+r zZIKMGZRae{5sT4Dw}QrZ5ssR1k{a}D1saofm<4Q1+=1q>0UFJt-E>iO+q2L=065Qd z91heWcE=T)q*ZxtQDG-lbI*y%-+pA=)Wy4fjXplRx*bd4V5Z2 zO$xd}86|mK)C~U2R@V=TeAiQv+@@&wAho_-PAj-dyX@2&R`J`#;!Sd=1Z_X5AsRrr zIOB>?)ctLfvg;jV((Xy~fQk{0pz2FRW@5WF$EFK)uo_~Uf6q0EcLNsx;vG`(cK~cK z*Xb${#spXTXjj~HX6{f{xl3?9wr%J|iS#Rp;Z@ z9g->1;&<$(sq4ZZ&YJ>&tmD%0n2By3K^jJAi0ikUR2Gd+hR?od*R0J!opH$;HmF#+zx;+*d!7q?LJXHVHe+Dh8D~ zDrzfpx&{i!hN}GUGLiULUvHG16~qN(V)TeJ&(-^6%=ApC=LAd>EA5}Ir@e8{VrhYV z<~pF8m(8}r8~w2?cNom>#QgDs2XbC?WaleQy|s~O@}uWHLqUgVPQSrz5()Oj<0@96 zWe!(niEQL7dX=nqz{dMbBEsKv2<~fMu;m;xCI<;-0KOecc1+BpQM=thnpIt)x;UR4 z|A^_~5>dpBo#q)w>6<_DYKe)tzin>rAa3#9g9=`5$jt~AVW(64i*({5L{7$dDDPII z_a=s`bUlk=&swE}Kz4OUf7$f*uIlzoGz)5$rHbTy?<`bQG_lGlVmef{yKckac8Bm- z0H~KiuC9BI=^@k@LG81`>aHh!k7{d$o*kk(<{(LI``|5ye_HOZG0b=^ly#=qB64>G z$$Y9ic}_jcfI3%pgivOFK1vZto+mEQW!hST4BF8EshSc_ADJBq1n#j^rFKCXMsNfTBZ|9q_D;& zZPx{p8|w*te2xe3HKM$3^MSS^1JN5JslC(c=xH1D_!gmdN>EsI*D9WeqUy#B`NI=o z3c>Nwpc=TuxQbpY6kDg^s_7hj8#jM)hE3W5W0+{TjjIxMoMs)=xNJ{FPtBzroofab zgB4EYtBy_`$#-^=AEi$}BWN4aTwc(8W4WYA##pDLp?mbMMyFjNBP>bZ6?K(LL@8v% zo{)c}IPggB3LpG^9_OxG9afl+_b(P;sFPNPmfu7B^t(~Q1ZHp-nZT+ReV=!2i^`a< zKH;Q7cM9k0FEggKB6t#Qwz7-d%FlEaJIEyuBi>#-{-dYI6Jc6<5_M~RwS98BX%# z>I@7rBcmhA_P#^)x=c|4nRG)u+R0J8_NlE;Ls6_vL!;NV994$Hq6WrU-xmu>GK&P#=Gg^uBeE(QODc=2?Jxy}UT~@?)@=xMXkVQkS?%pheK<9j z{!jIZ-IR?u{>6{)?N%CslK)K9-M*LYiC5Eq`Yo-wi|=;fd$_BQm9dSn3j?Q-^(;q#r!epVe9auF?%um+yR_D??K+w{^NZW|)Cb+PT_{*xXOysg zJdMDGh9B~kwVQaJ?FPlGwiEUXv8Z?DD#a$;9Oc`w57=xXNSgKsPO4^KtL6%c=p;jy zfd2bcMUwvl<+EWx8O@2*B>vIApBBkhcT={4Z zkT%`?7BjUZY{KcOQ*^&;Edjpbo*chzFd)%5eXt7ZCHP#X!`paumXnbHHD($b49=Hz z!qp@MtHN`Wts0BipTa%}2>Vk4ay6{I@)- z>=z45m)@atMk8@UGfNwB)d^nBAFL+cU`GMB>>i;1=IhG!fAXdAV$UtZ1#-p6i7DQw z=FxJPN_kny`cxoFIxIT|Htyb_a`%R?eZIS9`M)dcx!?N%K%bCrSpHFx0JhEQMd#h` zzU1CB{-2U+GuOiE`&&XxWvV-qVLMqMzN;PoT?#&c?J*NWCI2&kMEd`iY?YP&@@EzI zY?e9hoeszam|qsPn^VzNziZn1-;%Qf8iMKKpwMTw))AcjLdy$&{{6yd5AH(Re-~RA z)yON360Pm6t@I!7GE{=A;^JD&xrm|IVPSfDdJlyF5vGf)i%*$DfJWUKQF4VBL6Ae1 zay~a{m>gZE+h?A{Y3x8?%rU*hc)=`p)DlqOv9sG-izU+Wt!oJNV|M~rNt<66Hl;R2 zLPUf*p`qDLq^BV-u z0Y;J0k+BmWX=)-?{qpy8Q3r2hHPyhV6^>MIp~^cYxFOq4Dw_E83rV#%FI2)t@LEfPsa2^Y2907Y5W)C~HzAyFc^od25HT z*D22GBs4B=ycJiJo+vc8eic;+>>|*-&2RT8P>eCs-n4GEFJ@!ia;z8H{JwDd8ZX#n zO4PfIC%?;32JU-; zg=K08-I=RNWd7&TWA?v$0sK%!e#JP7`iVC=4TU;`zxN5BSp%&6I=OE1KB;#eaRZx~ zJ4mv~uE@?jr?7CiqEe@j2lKjo>dW_Hw#zt*WMNL@qkhnZ$7f5&pKS^LL)SsLl-vnO zfTaa%4Vn2iFdz`1#o*!LVPF1j&0e+cT)yIRf=x~yjs_EAde|!|=~_eIzXpao0fr2T zcG{V1g6h5$?kMKC*qE2VaPpaiwzZ`Uhx{LD#r*vIbnfQncnfoLL#*SCyAgxGYq*ym zmE1~%LoU>-VFp}rvvXi9Ox$T)`es()%Ymcv zcxqrFjD#|1XIm=So_EzL7XDu!)M)rCM@H%j{7+dns%?hfNx=Z3V{V?)Atjz*Sl6PY zt$cBjZLso^VBah>BwV)%eGJICc4iDv6=Bb`K}jrT=wrU& zuyg`ZafFEq1BfkA{(1wAMq9(-@JQw-|9k~RL2Mrh%w-lk2?b#!yVhzJ$}t+>ZR*`p zkfb4+b2^*lG&9|Qdl}sB+t>*3eTZDFlmVluKa<@%NU{yQX1Q$@v(2N{pkZPBSKDRi z^X687C+S)W)td}xvRLWL<*IoCvQYjHyf}Kga=PZP*K{zs)6>&xCeOWnyw^Ksh3yvx z?!oCAFm&)Lq2N1F)n>7?vh>$9eBXD#W42XQ>pC?XL%a3G706LnPC)jmnS{tOxw>?` zMV{bti?i;rMbR>C(YGD1F>4-B9obL1x3ri6;la9(E4P()*d$3w^&A|vwCMjm6ID|` zGEppaKqrP3g;!(E4;fY*5ljTZ@n}FaMsTm*=L^Zw^747`T29>>EPqlA(0njeC%k*} zmsnWqo99oAjMH)#meUW8PE0}iQ`VIL;|d~CJ238|1ivOWTwWeo;o@SE%K%;0a;+Cf z0tbj>AyM#0zo~oLZVy#;GVW-#DRh7;j7ylT;%C7OBrD(I)>f-XB!{wZj~cO_C!m1m zI90peDx;v#-P2=scOQUd*q!Edt^O|V$ZOxR4B%vp94TiqXk=olNBv$$AP}`vwH;Ym z3k$Cy5Qwcal?W_IrFH1%&|wH>j10HkZcZHfI zz0IoNu25GWwVq@@R&n!`ajGmoKBfk#kM8A2mXxr=;Z)WaNZvW{-Blz#x5Nqh$P^wC zx~d4jw%9}akIkhUJ8DiS&;4<(a?Xg~oH$?-71ex9s`AI3*Yz1LHa6y_3+-%4Z^0&v z6itA*p^qEvOXBxOa}z&nr_JOfKq#17EKU;>i`TjCWZ~m63LWoLp6$+R>Zkw$#X{ca z=CZO_|GRUT>X^z6A)sWu?Ak2XZ{y(xPRODf4)u-e3q?goe{)MNSl!-5awEW~53jB^ z8O}--xi}woo%>jO)sa}_aA0C&BnE-gZESCQuSZ1KBk2J>j&X!uD<8{u*6ORXvr_!q z%kk{$=x9qGeV=)RZaccc79>)xl;f0;gc~N>_A>IBRqn6`VyAc~@ zq9C(M;ZyE{Ld9|yx(&S1gaA)D;JKwJe4(OF3a&V_;EZfm?b->^=J|1{H+cMrdK6;- zapxC4s)yG#^Rq5)p@{5NQ&$a~+4vV&&z?a;BaD0Yny&8O?eYLN@DDn>y4ucMb1p-f zV`NMnjlMQDrHa9|8lC@)8B~_-aF9ryqq=Z{0SC%tCfmu=(3nvU-Ng(*@D22CAzbgc z?BQg~+vL1lG<@t-`mdkU(9%up=w+IkZVM5GCNO_*r_NP_EeJ(t(2j4BkMBB2Re_J( zS+AYN-x8W7dpsIG6Tp>lOO6| z_GxdfhrRf}u-EtCYgu65H2x68?T+1qSiV9PGR z>jM5mFidw#GOI2TaUZO~7=tT%_?q`x3DUOYD<#iCJe9!yOC^^BC?&1-H=V-(YrD5_ z05;@WadBJ!Fi6K6*>g?5kpT$}k*(%&H99c)g8^tDbHBV9`xgsOq%ol)oru#MV9^PFCZBR}U8Aeikn#}5v`B4RP@5xp*syxYTdAe@p4$`eFwE$C@! zYHIe!L{K1C!cXh#>%F)8Uge`pyEku{u+-NX9G&g z(|Ay}m8l^U1A${DpwIi~@4f+NLGIUiEhjaY1xKH3TA{`}x3jTnJBLIn9v(U>_7vux z72%hws*bGlJJL3O`FJjW!*W@94iF-!HmYZJbA41~i^=uLnP zqM(#fl>dx%ol}Hp^utk^EFB$l(jvhpZ(sZBJkfo!Au#r!;y%R{1$@K$x6IVk@yzid zrsfYxyOuffP8F8K0bwz53ldLp^0$@ugIfN3rC%6=#N=JqQ|Z zzNpn{!AQAU?SYq|agxowu>w70Eabv8h&+Z0__l$^wW;I}Y~H_@as1h0m{X89wly6_ zF6s9^M>!vGsu{Dw6&m}bqssqisq5jByii!Za6*}wq5uk!M;I7%v~jx1fMhPCopxl;w8d)JaeG4`*#RIsoYRoQ^OHG_0(h z38s~qk=mLD{moiMv#5`jMlJah4qK|yno&Q!iX3= zt5d%su&|-w2B4m;+2tKiDF=o)Qz13JHx`x^u!b#S|FSx}2?T;Agg-&~uoah#wRT<1 zR8%dyIJ{n#r3 ztzv62_E7K;UUOG2)e0m7g3nMb)^JwIq%MTO>)r2;R@|5eLAa7 zxnlqUA0RxdCOsoyBcrNrT<4*)w|lp{b0x-7buG=5hr<^}JcxQrBx7YHJ@Z7OUH#uI z*nR0=@Gzaw&}u6;$$fAzMhyN#x(zS5tta7{1nR5>COg*#X0%De0Cm-hO&zHcgGe~u z(*S2Ez3cM?IXa#57A7Dc+CMotI6ci`8a65cGK)Lio%`tfGBF_{Z(O?@&So@~mH+qH zKap-*0_f^gJ_907+1IO6)RFY;3{(sZxjnW;IR(A_qHw#TfzR<8WIvLUUXc>%sHr(` zo3DLTzq;NMWxcw%RG|_SL2`+ScWFXU}mnd3UozBM*> z7&f+G!c%UmQzo848ep24`LFY%{0kGU0!zR3A)vW4PpNGBkUPVv5+dj%GtnW zHM55101*+Xpu*)xz-)+ubKWbKOjjKv!9dIsjdhx=aR0M{t-icXa;KRxbv!ZUOH$I`bAb2dcNGdH zF_`-D#ly+W%R8qwi-(srb?$4Y)XlYb6doSH9J@W+yQ~f9{61?|+iycU^&5~NXB+HY zpre*es|k8uWt;ysi!Z9}dD-hp2TZd&Zw_j;`y1jeF2+>AGYsl!SS&JH z;F?T@`IIkfj`SIx2_FtEgZom3^~H(qjldV82?0HG~Y=e=)XR4nHz;XQM>Yho$o zg8YAsy>(Pn?fW&Zq9`CDEg+!M-Cas|cS|?Y&8U<}Ne&F%4I(i#2m;dGF?7R74h%5! zJ3i0n^Zvf;`~LHuKM!ZIW}Ue2>)Lx?d&7Fg(#XAldm#HSmIGwb?sw?1l8i#q-q%uB zR=ci_R%5$9ukHf-}p3 zZ97=!9N_1t@s9C4cN(R6G5{s@b#?Z zZ<~ldIa2h=ikZ{Q$xZ!N4W?@OFWCZE38fkl0BClOyhMhFFDwX~IF?U4O9 zlMmV(pXcG>N4HLo94x!fC-fN4JJe%`5jJ!UlXyg_$|;%Z!N$hdc0WnyegpDLdwP1G zJba+YZfTkKx1hYfySv>U*|VRwubsE!$29*cA9uDzFboPxIRo7A$P2HgCD@gs&vUaA zi(Rri&cj{*gMxn4iU-<&E~1O9!-iL8@!E&Oz}--0qOYy&wz|+zxFXDM^+NTw>1=pY z4pLJY?;fyN50XTw(2_G!k3-WB92W5?OGFww8meZ@YrSM-%ShO8jhg5sU;UY}qXiph zosS3j4K?QQUbwbem32ELW2t2_KF{4AdnxFd3Id-hVPi2d8P_;5ZGBF1E7KkT65*k? z^?Mf#sze4ADKa?QJcI=`HIXj2Oqe0@nnMlzVvB5STR(2qC(CcvF|ggvaImF5hX6_2 zWFMKL&?r$bwn}ADdiFxo7R*-5pz`^s5|&`<;(uJ6?qz({wYpL-X>zHe z20A8A8U2cem;jdS0Jz}v)`W>!{nd2~$*`Iip8yfoqgui{yd43q{MUTLYHx_Ar|M>P zDKJxG)`znBQ-aYdCrZ^B{GCpZFJ~rVBnn%N%}lfO43`GHmC_UTN26P~+fa9eGP31c zql94P7~xPzekY)HNRVhq*R5CV34;LjE`T;95dl`;lP185W^-!qTZ^cWVN%;B23pqCr+fl;~!>t_#jo+0v9ue(r4c}>P`?41DEKp8sOpyvvq?+&1 zv#`B%$Tc2Y%k7&;;}v5a533Ee!=%aJfEXw=#~k))YD-BnaUHjLh95 zntsGaq`kT69DJ0?ZmPAh)^vEPWNB$JcM4>X@jC-36vx+1(t@Vo{j4Cw3xT^Pw9&6* z*Cx&_WXGZT-_Hj)RArdrWBtpTA{}h%G{oi#!KO(G5OSiI1>abdi$;oii>QO=t_C?4 zuWS7R0ys>6*li6E1Hc4!nB=SHb^8ltWo4I#^9TG43`|UW>q_heT>|JEdI14+f)a;m zgJ+~>A+Tk#u{BqBAgOPD>6GiSn>2?8eU;6BPrCOrf@-y6>IM!{H`MHnzBlb;>_1O8 z&Na@RR#(*!yDtDlgeSJ3;HsaXJ}#y!crf%Xe}^u`hbO-wkG7;-FAty?2PZ{k<~{9MpOdkt+o-LiHz0x{qCX{8PG-}dIpJ=2=ldjdGG z_Eih`Di-~KKqT1M`#tHk>=U`u$oYZyLyFzQIi6l?6!9&#+&z}69iaP3FmF<$i7&Ev0ynoWjB)FhAw_dTWA<$-LTH*9oXP5G~{BZD3TnaI&z z<-4J|mAR3)d~J_DZ_>qH@dW>T=`E;JDp_;fT&_vN0f;%wvlHs za+i>pEzHqO^SqTBE?~r6ylbwRG}PE>9<#Y<{U)Sve@V2Tt9YvF<-gDUql{NI5J9ZS zuHFA=?LL7EHV-*K7Qk=1+lYAGwSN80nr+^iNe9}DyIq<%kIC!+R5g+9X?8j8)11G_ z>0oxF)1k>xP3^tQ_5S`y9-9KK-0$Ca_4IC;fk3GMdHTfh?B7G8D-#pkt}CM6{Nhk1 zB86DmDdSe(aY~<+-kI!g05aCxBP}=CHMu?O-83Fsl~V{K#oLPd?HcBOEt_;S z?5Yg;ULz!8IcbWf2j(ShBa+DkOil6BkX8Ta?f1hUICIj8&yHDsco;eC6FJnI>D#@vdci}!`=zx$SAiB^LtW8_2?+FU zXegoOeI3gZkaqcBEZ|snG~;J<8`<98tg+99`S#M)MlVo=+k`U;|MGIzF@TMbgg&Td zaCPIYDNfa5_c}xrSVZIh2jMQxX(rLK`?x`H33GX3Sv%yPDfG*%D_Y-9|93X(JQeKm z`%U?@p^=ds(2BnM`I^Xiz*-YE^k8SYcf@4~LQYPxxVTWi@Udi<(cfRTH(HK5;LAii z3iaHl9{37p_6)7LnXE%im!;^eZLP0wTB-_TzdW(c|CNxSiDJ>#*5&S&8T8vRf!2aX z?088?!FGYXKoYN0-aM(8=M80*TWYGQ7KDo}u4nVfj6R*{7d zbCuh*Wqp>Nxd~lE^FvtgE-6!~c38G?ZJKs`#dy3P+5wMOD1vQgD_Rvp>urh9%Lkuc z@zX=F#Q|x8nb~DC+t(cK+8=0#`Gz{b3y?Owqjk%e2t;kd9HPFGW_7&(=|=(Zl&*Fk zl)Tt@Qo3lmySpDJkJHoBJq0{`aMiy*Y8$@@x}8+}Xp;P;T2VCtx(a5;$iEK&lR)Qn z)u@jmYBTNdLBA7Tv7m4JGd7l!^A?o^L>W)>@jX?3rf7>d>-o^woiVfEDdus{8?w}-i! zMT+1~T$vzVb319PI=$WuSz?n&=HXQQ3+lI(M~TU_)A zJQIbQ3T|*0Ve>pdP0cu4fM*9JXB{Fp2iaRP$#gQ0s&Hu8C^MtaeucC-?zex?EK}#E zIlHzs3zZA4-O9*lZRZ(FySJRmwXrOw`K4xZT=Q%zfOJwQvd5w2%%G2YOLF*L%)?yz zf47AUi$jykUj8Uu8XNe8!3UWj1|AEtTJE_nfJVEH+*S}mTEu*Pii?Yn{gPpWAhLXz zaq(w`T&3``bm7O>xj&5^r;2(_O&+R(a7>0EcOQwZ36%4)wBQQQB*+8Ijj5SCOBam zG)hhSr?}(JUstLvo~-Iw{xndt$G!I7BW4P||6^2qz&2cF{V2%IDH=N4-`C6TC`-}QZiCk;qYR0#uN^d9~a=Gpgy5&?O0pDN5bvtCOZ&^ zrmFmf^vOeoNUU=e7B&jhlYLG@)k6`%n`kfX)V5$}z{(MjWawNo3~<*D)Sjh|o9}sU z9h2DJbA`K@I&rnEi`7W>MgwSst2KR6|DodNprmz*QMG4om$Em9Eq#j_ZR1}F#9;Da|F+*76|JCWLb{fb$C zi+^k2!cD;RTi5b(whnr=;~6*2x71BiSj&AnC3?apmDwwKSptXl+x7Pis~ao^HOv-w z23!w5A(|)ij~c2t#M#WlRhbA(mRewAsF!7~sn2qY1TbjKp}=;t08~3uyRDu|v;@7< zcx4I~R_6TafOS9O$ma+rfnWn5u-@k#BG1d$k7I3_TxVouhJ=HL{SZrjgXN&OOpz!u zu9h|tPx!t&YI3W2ma;edHX%--x_P{lkY(|rlQ(pavUj|c7ihpy26etxknZgk(uXF;a8M|Rr$XE^1ihA#L#p1`l}Zgq9rN4+cSt}7_V-XGxH(%0MyTm| zd}}7Dwa~9GaS;|V37RXL-cKB9^*-89+O+CTvktzy5HJfqNp5NhDJc&Q>Y2B7eQ~vS zbd*o{>sd%uVHg`D5jHe}H*3YW<)_Xg0M5A)XMWy1(>gAAD=PsgEym58l`iahDpna> z)BBc(*o(~Ae%YQhOzbi)z_eQ4?UbE@wAir}G>j2YA_U=E@ zBaqm_wOa(X9l4#7B|^f&!p4ui@4QO6(#GA0!ywTIe{gcQ3&u1}T7XT4Y+ET_8`ADR z|M_f`Km;$AGz+@c0ybT<*#OL$p2*x5<48+>GAA0*@0ADaqJ8K#Itd6Y1e~qH%UX+O z`$yAZMA`z4{ty!$foL|*)G_7%Zu%-FCdz(okuBxlxM}osbciV^x&>w9qZc~Rot-=! z#=GR%htspD7Uw~Jl+^p&_d^eJIr+E;_#V<10+uXyxKTap{CKl{6>)I^9AUZdbA!xk z^IAW%T_OE;r`2iQwP*D!bz3OGx)`136Aqj#TY2wBhUz8K(uw{|v?;YVV~j6Nq?n2E z{-nu_G4{}U3?%W4VKSxWMnL{XDekJ58fS{**%zEENEUjtiTVsvDpRG5jL=YkCZ=aH z??BKolkC-3sQlg;{)Qav-Dx>La|9PM)EDJC8Xn%vJqUQZX9pvzU3hj4JwtAbczK`N z{@KZ67PC&_j4COBUtCRxX9?Xb|_N_s%#`~Vrt?b~_`A(jj zo5$b7LT;8L-YUsQ+sejG&reh7fN&l@SnO|J7CAWNxeE-)>%)_{Dydhat|ca}Le-Sm zNU@T5;41f*O|u}|Z48=N9&TaIZWa{K<7Ao~s`e~M-usBpTsje9PaKlbR5d@IAtq#a zwjeb)=W;1;8hQNVG1L<;i$5$ZwDA-iE{uUe^OwUR!ft{>p{DTM$I<87vpMyN4L37y zo!@GCD8af#AjkRR-?so50)tS6kZ8_uM?9mtD&V7;6dbprK0q+y%FlxvgbGVsK9BM#@41Z-IE0(15ctz#!6V@I;0*h6lu25nn3*TCZaHvfE7fJWd$ z@O;CaUPp7Zrm(YlXBl7l(t;Ut@&Hh6cpohduhi=s8?4UnI9=^_$2H9Z%A><^N)yf5 zrI#-^1t+t`Y-fIAM5N*aCg#M+$@pt)+K+v^U8~Wv66j&oSqBVmZf@j=nU;wocN#50 zq%wW}m``79=8}}2iQglm-=lw(3PovPiGBlq7T<3?9SAA>yPFZqa_O$DmB($ZZQ_3J zm5Uj!pn&y7lMwO+zYI1*0{?UQAlrxl_{S)4IHsKm-=<91F1-g4Abb3uBvO&x;;C%Z^qWLQDM`t$mX?u{s#325?2r^Kiq+8+j9Zg1pnP=s_OWcAocH*pm!88v4vCXJ1+-o2jLd*$%aPFBCTVX|3gc2mRmRB=Axk!MP(`kre-a{Mmwj@nTi zg5YEB$wdi?;rCL*zs;v9@G7qsBl@~Awh(4wQFkU4uE&gJlA(WHy@7*M|LEulnB7dr zVQ>97AOJgGj3(QI1)rHHDA-F&|H|vZVXCYst=g6x?#f%=O|@gr@R}jxPd|!)gOd6I z&@gZf2rEg`&@t9b$ym3u|FDw@1xXER89VLsijd~m%^lIeuHfl$;z&+n-3on@k_%Xk zrQSzfCD%}A@4ce(@`H4AP{0WtsmArpqRY&cUBhkb^yn-Ca!?fuNC9kpx2Dkm58G0j^9_gWm}R^o@H;Dh61D=qWsYPM z;PZ3>!rnML+S!lxVFf!|{MOX26{Qmg7bMO(f%5}@rg-&c9|6d%3OxmYf&Nmjr^zdxXS|>s9ms9{K0D;@XYo0pnq0B)bGp8+=?b@L zdMphR8@CXcCfOB)`=$hR*8?HHfyPeRk)J#*2hXRaON2;>$cGc6M)T7bJ%hB)a^d_Z z#i`Mhg>rFyBWVg-*E<;s0^ZFv^(tkW6AUBDddU~Ppuh~T9qT>qtn8w@KckL~5z01; zxS;ueSX$uOb*cy6p4gI+kvZu?t@bQsW9mvHs4go>4d_ccYM-Urd2czz^N+j7DPyW}tv6pX6PLA=mZphGcT7V!;(Eud z%Aj^(6gE0IcmT-1awyQ_)S#sjS4T_W)5<+Zqv=m^Y%(P+*yw{ou|(O>)aXh$OKTe%>V|CyturxfG{-g1#D{m}bDf z)?&Q5U5#g$7ix+tDZiQA-$&^$i<`A%roS)9WG(OPU+Ou&v zYF8JB?NO=eM-r&-ZX3NSOD0g#n)$;!u_@}Pp3@fCa%N(t5~v1HIKq`KCR%#CS3o^8 z<<;$|%SCuYeSJ+epnbr>#?JCTwZGJW^5^i50;zRPAlRq&!OK%6wEs<|581ts_N9|f zW0TEUU}2x*U}-+OT4YVxh9HZ+DxQ7JPLic~ z4tb&0@_WKEjh;q)($qpSxtQ%q^{m%zYloq0-G4L|oFuy( zC5>{?0L^(EVT`%8ZIscCI#-a!?9c`>%v4gqPkC54S6F^*D9S5L1G_=LKLRInR&X7?iF#Vz9V zLkyy(bv0~#_ck(sm=dmHl0royg0l0Ar`Q z{C_Zn_V;t?c@%TEc|8}8pnxDQ8k@Qmy@m#OPoPtmqQwUy2~2xOO2;Li%DS*hs(4EL z9~I}lRd+;NN5^Ry%ci@Kfc464lMi++9yTFAX2P>gV;#OHanwy)gxPctRzkFy$-l6vmuzBzH0#|lgef}?I1S}hmTwPs(A5bIz z3;5H$PVJ4q6wSYfG6o>UK{-4BU0#6Vq3nPD^1o*i$(yqu0l!VbYVQY~y?tqLdoXsP z1)^&CzuKC=7XhCEUM_tn(dyO~9pT{Ik8vxjzi>W~1zQM4vx5hln8Lj={s#?f4lL~< z`mC217aG5bHA{aj4i1|0l0WSY@9hPY3vp*a2L}ku%kq-@t>_c`%{h6Yb)KG{+=TD) zbsc%h)07qAT~7Q^il=OBY_gVeptEvqMe3MvlB{h3@|dF|V91BQe7d)@@z3R{IA}{o zi94mAmfL0BYz3+1B}IoJRkOXoGO5d6*mZ*^K5lH%eNVZhB>LO~ zNZSB#UYnr_%*QNucZHSC+hvMDGbiEAkVvNjB4%*m&GofXp-g3^5L>f%d2-r1a4Uur zfbE|2P$cs~SH@B+WI-4u4U*{i^~)Fg(angNsYaTaI%n2i4*x6jm8E$q>awcR;o-qz zXlM2dGJGluLX~$Fi$nbBm8;V4?G1!5EaAO4E@}7zlg@ciQVglBt)nB|-O)V(6P6_T zgD9ovd_U*#pBOLZLf>-!$?y=U0304`ydeDTNO~UJUwu74!Xl^w>q<(#{L|Qed~eXs zeVC_|IDd+2n|5vW&k&L^2^y~6ShrB2pG*Y#LCBn0blJ^Xym5(51GX-JZNdgf&jWM~ zsp3h@`}?hnxI-aQG|BRfKbBn($Is+{S)2eh9skWZ5{c;&4rGZ3=k;f2 zzmcj}Yzlw}b5y%2mPo(BN3(<8OGZAhchKm zCm1j)dw05WxGaYgo5~uy+Ej#(i`%E(_1Ukk^ak_Mo2k(LSN11?=!C(Yqaik7N;W@}ASt8Iblr9>}~8Ww(T|j$3kKhnqvMVxiozanETd*;)O+>%_fo z1_Hk@nUcm9_b^65Z4D!5bKs=;80yceq?s9$QG>n{zdMM$j_MDzpO3h;I-xPPgrK-*dtczpCIUJz4_4?3$lkOA|u| zp8&sA#YdlIe!kP@Ty#=?KsYomAJctndPB=Z$JfbUO>wkzbdKCm1N#mDJ}Rio82wE)xBbIKp_7m? z#ZQuyQR8HS%--R%y-{kY&pCP2+~VL(bdPOM1Vi}4P~QNYeTbt{c~l4N&bhd0a>Go> zcHZy4_yS4Lpk7BH6~S|F)Bw(#&v~?O6k2M;pu9IAk#=tHEbLiV#myf*q}gzOx6vK5 z^ry!(Jfq9s#b1d=v(+xMmfr@=!pygkPuy{edXT=CW!Z(A0jRtXJQU3dN=zWaaCm&>vYk`XuQyu+Ns6%OfjSa1zu6}b@o`d6W8>wksE#`b&CFUhl=u+D=G9s_f8OK(hd1JJ| zdQCw)kC=uwiwm`x*~tT_FOXhC?wnItn_rX1?K+F<3TdnAiOd#Ya5=7sy}Vq=O8~kW zrrDCRGaQirhFG@w(T_p)b3D9B0sbT8Rn+OBD3lajmZZck%poW)yOy6j?cyM?pAJ!b zDQf)PR>HdOU)7{Cc~nXhGAjsOc^HAJOL{OefA(39YpUSvml8)CBOM%z}@>Or8YF`aUor| zz5H`Bvg?ELYR}}%<>YuJjwatb5-L^&o%mq=SNz8Xgu_iahPG$}k`|cWpoM zc62Q7lc)m#MV=Aikg{1?0$_fPi#!Hc4JDjWdvoJM@f<_nes7%~1be7hXy#SNsYR*k zeal8)8o`|fZz{fzjRDXox*Zk1czdp48ZcZR>k8EIYp#i0Rc~-=oezZxtN$3u)#S~0%OCB#Sn;{Uh z+&Eo4p2r@SZFhI+msMHMpo#ffbGVIpRkur9 zq+@>1M8vom6I{4*Yg~g6W>7jI$NqVWl&rz!Vfj=UsFdI19eRej9S<8HE(3VPP^I&FgvqQ@A9>ofeIf2GU_uQd0cRwrffx zRRE>ozutkhCrv7mF_C1ZC1jL@(}*6L{5RJ=&bsMFu`j4dF2`u_kXPrt_nth%Dq37> z@<5>w;Ad2Vzp~Rlcaow|fgjYL3xv(Qri;3N|Nhy|aNF$<7P&@FDFPy*^QlQtQO9vJ z#S3}pIT;VF1(!;lVWkT&)HT^h1q$uB9~u!c?!49&HY#=#Xk$ZyaqmOf6+%KbH=oaC zQ?Yz{BpRHCs$$;7xB#ZsL~IJM{PaLj8CwhVSDp$*DoHiHP0lDz;_PH z*j??(?C)-#D9|RPkyTmd3$I*?-2;JUy95LTcsLgf7mYlWJm%cLnSIM%h_9RGpQ)=u z)EUiE_+KCc(9?0h3uBd+E$WGqc8n^v3rdK{9z7$NU+!pzw}Vja-J4DL$(=?YW~~wG zp>G!}tJ(_lYrEAp)J82-iRps^oPCTp313Q+sewF5s6;DbJWUD-(o!VRhHNSOpS!Yz zntMwHhW;<*mDb+Y7e_9t9=dzw<`s!G=?XSm%g(vI*=g56*m zxLKVwrTw%p;>qo29a5eV6=+ctJvZamJfCI}2`|8$tKEL;LfS3qqkAO%u(5_270C;H z^5+BekRUplqNU(S7U$_budw7tlApdUuVMs+pgv4v;GuTJZ5}c{x}DwtS$Xg+VD2jo zdhykZzx#Aw10RrZY|`9$Yg_FMXva>oXq7Lyd$tcOJ48S5Z}!U;XXlni-lv)iTlnS-GqEx$fnLu~@c^FBd{uW;2$9+4I!e*d(C zAx6Iv$uSxk;H^4vHQIb9>s?>R&#SY!xxlK6RDIMVJvlqz_?)H?Z{n}qUQ$ku;h%cx zUU$N`&B13#oo@#vP$B=uEJ+n+R^yk*v!eKCpNPmwPKzbPwzn#B3LDEC8e$(hV0;Gf zlbQ_Wfoy|Uo~*LKu!okGmXxJsfKiJs#dBgx8MV>hsVBRZcw(o2Htz0TA4AM*=PM@b z2dp#;HTR}XxH2-6w_rgNMELmZM8ahPN{Wit)#@4s{ZEy2toaa{3vVkm*95Jrs$Dr> z_zTw$h^~~=P$wJSottG_k#<|uB&DQyy@&y%V-EF(v;@mR2>5aHna@S51JuZ+Elq`Y zueGA2q_LqvH-G%$}W)$hS>I$r$MVg+BmKG#A=F{2n&&^<+^D=>@eC85jGwnwQg=hKgPI zUFI#7T05#?78#lb0h))$I)r__(po?JeI;V;Foi%956nUadQWM#A_NZ2Tu&&5^_g(551dCQFjxh|)L5TWu=RGz zp$=!`d|uA?Cc#?|SFlQt4;V<)jDGAxM+2SNg$}rj{+x|WJ9<~x44mhf2z&UARkoc3 z!k<@k9Gl*3@Wabx@qEc`du4iAtY1eJvCpTXDfX%hp|D?pS(C2l)BZwb$>SA=W{M-lIl zG!D(|(aB*ErZ-RqJ6Z+8fm^-Y}D7*xIuOE(o=sPny%&D|;Y(<~^?P>0v4=!D=IC>+F zyy8NjAhpRR(#C4*3~?5l)!c1r^wnc}11Cpk&}n4x6gj*Hd48~F;sYb|Uk4YJ4U~09 z#8x0Jl7ZCsf|8OFbnCh3-F9+XnnGf0R=7Isk%#M zSH3H+ZhJ{ZrJ6q}N9~vKH2mvVY#3nIKbm>A-L#{By_+A`a?x-O4AlGZ0RQAww(mMq z{`gHGybYcO;A`Vzmwgf|=r6GCab+-5>sg1-oruB2j_)-w81I86(yCu5DlKQqiC^M; zHNUd*c+hsw@f^N`ekV21c?mZ5=SsALC>H@hNkL_0W=fdk+8M`fVmtP^b=$>Ex>?`} z9kAD%jEG6ZFm1ve>APj-FUYD8zjP#@?X0{+oO_3r#hS3OL1TRo`&e6XGwOsJtrrm= zN7dAn3YC2IUwB{|7f(7bwbnOXPrbHwcTX@rZkJZg-*a*zZ{L_>5a&;E@zb>U%rPz+ zSnvUkx?PD56Jhdsa~24U#*Zc1(EhQO;C;J)xc}4MXKn>~>{TRcyWX0()TT0d3F9z3 z$1A@iIYK$Z>?sI|cV~r^;B`nZ4Xqm_{666KwKG}v*sxbCxDKDf7p+ygtB`b9;{ z+rmB&pY^vM98f#lh9k%8eO?;EGy6PGzaI0X&62h-Or2cF+hCtde{Anw<}hZAzcOTQ zW+$l!%oUUW8R@X2~@b*uXp59kKxtS8H*`!V&i5#NS?-d4-8U!rj8 zKM{CM7-hY(AwBC^F>kmuM%JF$Wh6%m2@P2{^11}>=E?;|(w`XbqG3QD3$nBW2?gy* zpbJY2)_yUW8yXruqdE_c{GFZ@kU)*-rEtA|9Ly^buw4y8Y=zOt0gy@Tj&jYkL(uIB z!!7hr%q*-fpy+{us>1e3oDXZffAjA#xHvFta|U8WzBB_J;c`c_1H4hu-%w-VeLZQF zbqqEnth@V4JebF%oHK2`bCwOeH1#`QU?R-L^88?vly* zl!yS~`-;Ei=)*h~Mj+JDaFOq5ZQ#SRh)FFu;r()0`zy}q_G{$gRn>edV1)39f3C@r z)Z{nkf=*+8@%^tY_@`m*|J&x}U%RwL z-=QTpTH@ONA9Pg_S@mg=^UAro^}(9GL`8=bLBAbp|M)#9tV3rqZTx86I~->dc{%eg z)!t@Ky2uw%U|Ok=E}X{16Ck^ILC3>PSF_lbYQP_)H3VtF=C8ehzA*E>HDvRcoqIR$ zVN2q)l;=V|#D(e7u`yF3?>eOd5+kN$3x>Dh8LIYi0vj!G*na%YSR=hoWgC_yT5r(i z;gg(P;^9s+=QOj~AAf_mK*t>|RXufwuiVjVRkzD?7iijBXj(WqJq2G2&-1NN@^m_> zXOa)c9*OkZeFN_tc`Hb@H+i(dtPD(wm$fM=hxD?RGL~*J9;Yfo9&qOa{tP3FFyFh% z6;GZQZ?MB|>IlTtu9Wmf^?LCnZaw=8!4Dh2zEz+?1!t&%sH3Cfo>GxI^WJrDqG#u$ zdx9|}8JV1xmsmVvJo)u;>CZ2V`)saeL078pjSgNJOC=^!wBIgiucK1E+DDOmL){nlUt(B7 z68!YSJT#fIL5sKyhe%04loRDKLdZDx48KO(> zK!CW)<4TSpen*{KaQWiX`?~kt^xR!ZGbtIZ_wQ1?W;Sc}hJ?(R6EK}SqiZHr(wpmz zaPM|=B3R;lZn1Mp#_Wp5rdFmZ-O7dKIWAK<;n|cp#q4=FSmD9+5x*s;n^B&YxN3i% z-7aeDs>%|_EB6wmEC*|;IR_?satC%4JDGGurm{}94V-~-`{1Jx$Y+a|;ohy2hi}Hc zM#ZhC9MT8N_v4aNj{61d>#fX%`7(1~zZM;h%SWsJCIiBrSnR44{&|UV;M+rp;A$cF zKUd%%7&qzmB?>sT+r7B7Q_70U=Gc9)7yDKZ?mjo1o(=-E{Wb-21qJ=a(=r&3#j}ph zB&(w5q@)1{&d~EIRxz4sQU@wg-w&wU>pD)?6~K+e23il*OG<_>f;$2bRA9$3`YS;? zWKi~~4~R6sm@#dHLi~J)L4~~~2v%H8Gb#7Ru3$OWI|5SoEdk=byZTY~{QkWc*l7m2 zdwcJirM^hFx?Ervny=>CX#Thz321BM7QfE3^GmfNBtjt=lAtZe`h~WevtqSO0xGKB4L7ZX z#Lt%&MA%`qw!`MZ2vQQ_8#TP(W*`xMA7WT<$YXn{?4M|p0vKs5qrSW!D^39)WZ}hC zEw|Zbk58d}UOmnGQ0OC1*4F>LQFoD#+*w-QYD_(`h}^r+?r!t*&xr~LVZRU~_SPWH zZ6cV8|D0gP@mN%k#hGZw1EIrLFv%Da458%bO^DG)F{aDT$+|GVgiGDUZ^rm}(O)gF z_fvGa{h!bhn2iP)jm{3Fdi^xRFYcb#`O}-BTHMlULEUjR=)iq{-nC{1LC{RVzl zj8Ey1YeL!q@vbfk{Vx^}5>#9}?*v4CTvaK3!u^SPf5zKiO=|oDX)gV}=(k7CvLS1s ziEBf1nCHgD^MPH((0)4x3_^T5)MP&IQ}=Aso0FCwnTr(t_XLeqTP7(rvwjqo9?X85 zaftu3l)W}(`#G;6*R&mQGsS+W<*yNNE93MQccV``)>WQN} zqiK90*IFNe`Cy87;B+sCdS)Ftz_I0yMUfqB&%0dvuu$?HjZsksXf>z7@uj5Tk+Kb( zIzCYKTh;pKDt5Obs@|;n*W)k!+|TG&JSSt??3=ugn!P%nbsZMVp7pbfK$5t^6nOVY zYvB!nZFhf2jArjWQYzwTvszQ+zUQAWV3YX8YFRfjG@}ViMMvN@wBI4kRf$T}v8g}~{5%au z4QyT#)l|FE!Q|yfr{YmDq4MV3`)e|FNa`76S%p#adB}0%T0WI^RXWH)G7CAYL|#ayH~+&C=OeGw`G6l zRc|V;UZ{@|F+CoR6RgMu_hL#eOjb`oC;sQm_*iNZPb`U~rR9ES9iQ{a?Nx9D1aL{sH>6?VH9A+zaehrnSKVNDsm<1WQAAv7!>0thR9gV`jTB?owp){C!dND%O?Nlh!}$ z9YGrtFU37KftFAYib-DIJJqt5xwxQhwHp>8%^f!JaZj(0E`|YPa_X4U_x*k&S;rx2 z9yI;yytVT(<|xKM;dqRT!E0ST6mnz|w9Amehxi@N*48@Pv{U^AS4jL2wUZqL=<5|Q z@p!uF?q1r|%vYIrhiD<6sn|L3IupjHj_Df7g_|l_U+jZTJJ!rb8Q&~%c}QCr!!1`6 z85vm%T;C$M()xZ7?(F<;~4Ds9V3f z@8+o6>h@dYW=wZit6udntfgbIEPBY3+xO5!YQbGFBQYAaAkn^3=$=+l%uj5B(E!Xl z#Rqe}h|Uf|`UM5uW%{hVbCs2qJ`b=AoS2vZ*yNoSGGbz~7Y+n!5|5jVRnG=XwTiBa zZVN^X8$a%el7GkLhqO+dW$^M|WE(~u2O4%K9XQAh2bSEs7ozlPQ}kq3XsD!tuBQxY zN-^{-C+G*X(CeMvXxa`QWsQ%@+>mt*H}SEf`l0F$R}3UtwU{b`G!Rf2DbwRNGuz$@ z7OhGIvfN!rcp!PV)nWkRqx(_V=6PiFlbwg@A2VlIh*um->lQYo2C>7sglcWLe3-;_ zC&oB)+_K+)(Vp^a8Oj!bzd!h-GT0f&<^kdz8dX6Gg5WU~b*Jfm`JJt?m0UZR>_STFHb0$jBr$HbemwAIlA6sHZ;yE? zs5cAym#rRSc=?QlX*l`sI8uW!UH_YmlAhO*bjK z;hb}&Hgl$kYb?A7ez18>n!!177)F|PTqT!pq+h z<|m$CB4Z-~a!l78qefrUd4UKGDcJngX>(y>V6H|eabaVLbhx?9R9@>%cQN-Fo{`1T zGo}h`CWCpF&BA=!KzDRt<6q~81v@g2#eh-t7sS4zGaG8dy5Udkn~D_ACeCj9_i9_} zhZipFoxERWzd6s_q_uGwaaI}D-LVtHi5Phv^cv ze}9N;PIxnN15C4}{GwXB`Ao8SQsJzNck~72vbK(%NW|7|S`t{vBdKWHCb_KJoO9uj zKVJO>At534&hS0*bVz3K@<*Fd$j`GOGC(hES4Y-(qFY`Mc-nN@UrdK{&=;r_gf%st zRq`Jo#T+ZWDR48`MQ+?(Lx2X-GWiYjgdT}}o7O$%H(iG&`5_C#Hd4h6i*3AYl@?7I zRA+i(7rX7#j`hyWh?}l0r^+fiOEqh$N0UOQOHHJL8L?t=K3KlDVOn6;%%+T|FJcyF z;XoSh5{}*V3Ja={2^3^tV&LwyKSB1By0tLhTJLANTGFy+vQaENnipU-ZZusr~&7;{yn8*&yqc8U&9b3RvOMrinh9<#-VW@3A zVP;@|;WG-4>@_aVmS@Zg4eo{aF;Ra(J4W)h-@?rCU71n2!(_2)QP|mWn(rc2T?-_?H&P9bqyQCiXEQV-0<(MAtu)tx&bH-ddn zrh{E?lRUuN><0Qq`kq(NVYcLH-Fzl~7O{Zi!?~x3t?6^zLdx^tZYPp|)jaLLGl}{y zZ(lDjSbR4KFd9Sza@rJw}awR=dy7a$SC}Evhh5BS0{!gt?Zz%$ z+b%9Uve67|%GvxED>uhQJ_1G+JJ}uUc~R_EapHF7j6iz!~?SZj>;xU_QG#BI2-Q|{)nJRzqe|8Zvb*22P_|gy^R}UC*dmL-vO;f`nRm6AF?vbM*c5Tx(G*2G(c^P=v3Tq?cZkA$hB{rWI|DZr4-rL z8tpjzp|rbhG(EFGg-@o6i8VZ(!fG(IbCycISq{3XL_3SRv5y7=0Ch>_|Hsu=$2HZr z|C?BVN(u-F2uOFA(hUOAA>AOIV<6qqFiL7PNH>#iM)#OVj_!v2jwK>F^^QUXd09Xb`3$ZvO$famY3sPf?YCL1_vk(b9@OrLx2qfJYTO=tcFU?~? zT2DTZ+upEDk{0>te;JqCONximtynrXsJwCC?rg&prl(`V+Sud>`+PnttX#~svqNwG zLu-hWcxYJ9Ym-Fr@rCZngdS^fX}CS$uh(XQS(2}mUtQw8bxNvejx2lm^M#+-5aC|B z;QG~J9gDE;QO1znQF(6p8icgi;PUsyujp-*m#}D%2j<5y_~bH`&h2@J75l5SmRCES z_$6`9QlRA`*mX`r_MGQ$yej{yPd=flotVcffDg=sD-oBXV!B!q~)NM&S$B`eAG{QUNm`676; zX~@7$;FnObP1mGE(^J=2zl#Hr@|(l8CcpAl#Yu-RH_$h3ya(?bvA1pU-R(W!f{*vd zSFfHYV_~56cK8n-+n1Mu&swEq&(o(qsgPun`v{IhlBZHQppb7#Fe<$P%S6 zwol(+2Uq2P63VJrAiv#zKRRl3iF*Tcyd<;o-8e$jJH(Az93yjomXDz?*PpS#j>GtV zHN8dTCQeP+t@HN}FaS=dzu^4py4U++(GT?|^CKzrR3k6bR`5Cj6cWWC5ofmcGOCO5 zUo3!a$JNW&czj&xCSf+k&$zGkI1}x2JW4zGzEimR0BEI!jz@AH-1&U0d8N8KT`U_# zP#t%BD3UOp8n@$r(ge)Av3rcYPS-Md8Podgz)c%7Zj)RloW_At;xTQwq|2?$B~_|o z!@9>C@zQVa-OZ$7V}uiF`j39Di;g<@?V($y$+*^Zz)0{6;htle%#7umMUWLD9jUbL zSf7A}uTb=n5U7FvcQc|-}Gg7Nmej})^w*a-I7V{lgs?cOk zUH2M&c*LwNJTJ7=E7BoW<1Bz4|rh_eTOR>9|QjKG#X15Q_7z{pVkhV>4G?CN>i0q`WX zEiKKGE1s$JE@g(=ebW&nss#m=kKOG+% z9~~b(f4^DH)YL>mVgkxDS;1+hcf~P%%4_JrJQF-5kY2xm+ki< z-xcqSF(}Sr%O>X;ku6jqbCUsfaGCl*GB+`bpz&LliQ8)!0T+)kyQ+m%@m?V)|ASZV z^$Q|)0{^Vq?-p<3EHaokp}-5<)_%-EWCtL!ecwEYqjfBZxd(e9m@-ocT=Uh!3Kw6jQkaX&}`ji$^x;oZY*0eHeFq zV>*@`6D;^qqQiIqpz`^>s8M#=<$!UEJyK2m;s$1LiU6iBCQqrU^Ukf^F&p>#AJvl2 zIezCvx_w-aMada=AkuHQw5=i&KYCm|K29C7f}LetjgO5vI(7#K1~cGQg1nCYUf+9| zuE!)kq3##`y?J!44=_XW7VnN7DAyz+A-P&DDu+Ot?-NQ%NFe^qCD}2C?*bQx0RU&1 zkAvaMhwd%*Eb6`9t05s@kkv=!upm2#@kcWw0zErtUbQ*bxGub`h!@YO2aBFhH%on% zFWP_ePwBXGpDIDNVL>?UI$oOEBtk|`A)S-Y{&YJ7<&rSsxxpgMXtSpJ+JCfD zW%vFHjdF-4nwc%60N$BT`Rhq{{z`6l9$l_1bMSPoRe^PxkhV*wS>0dds&8AZ#nL^$ z_saSowbY|VKipXu8y`1=XW-+LmMZtU@Y{a+G~{>f|4R4~pyyQl&vLBVd+G^@9DZ6F zS7>1;u8jx&y+%wS?BHd`27upv_fGWTVVI-IHE>n3|3?MF<~L*p$QFg8rT)C*b2U*@ zmYKfhJHPP{rnP?({Qexi!bLou3*12eKwx%6@z=&Fhm^%+#!S zN6X16|E^?Xn^DF3*j0dN^@Y{xknM7%F?H-uPyeCX+Oo1A%K;*|9C%^Y9Ao~%idjYe zwLB5G_aEO0B2FE0L`Qe=dsJ)ZA+CWS0jz>hihhcf%I#aN1<+gbx$i29q%-@+F=dss(HMKok^|iKdc=!-T z7dHS31@=lmrMcaF(!kj$XEO3>r?HjZ;LPu^b6t~HflnT=45zHhaqj3XO;iS)U(qVQ zDKkVQw*_WEK;uT73EEszlMsxS#ck(9%@XH8BUy3xp!S=djnzUrIGNze2LBs*Zm)EG zuv#heC+i7yhEgoT$K8Pej3J?G4!ldEOV=9(ObSB}?tC}D5udu9^gh=PE+fH3 z1qGNTX@aJe=pp=dW|6*`BBak1$X3DDQPxq#=y&JBYd}4JwrHk(Y%an5oy!%8WzsFb zjLtMOVq$&|lnq{*eWD{`t}`*Gdw5U#-QKqM?$0djVi(bnLzJazgUzW{MFnRf|4bQW z4zB1>>qULZAR0QfN0Ho4hEyEgJIw!^F^MB)Tv??s=fHk0132D!+@DJxjP@DlG*<8>(4t=O*F;ATBj7K!cU_ zj43!MNcbj+HYFq7ZNcH{KG=H%mWQy*k68~}9q`UtTWA1ICM4uzDWkQ=1MHi=gX1Z_ z#;fIp*JH2Nef#Vmwue9*Z^0*5^Ll6>R?X^K`;`1Tm>GaOJ;%=Ep>v!ORiFsw7~rU? znOt(GL4TiGBfB^)&_0sWySd2lD1pmK19np@u|~PibyEc>J{5l3-@(o=8gF*hxS2hn_3wWj;0Ht}d>PQf53j|A$ zZU*^FZJv@=r^w$j(dxTWD81XZu_&2oM!q!97LGrOhV?v*@4wx-lBc`zIZ|% zuw`WBAwom2?ra_c^s!u>+3%1a2kT7c{aJLO@`eiy>&g7l(JSM?9A|t?ee!8>hddG|Fp;=rwzf}eR?4-7C=R#mZAv1>9W4y-E!U^hUUFtB%_(sXMa$W|C#=LbyngNu8#I#7EJ9I%Pp=}Qclm}EO6ky z)dNi!*_p&d6swLWz*93&@v)+*B4`M-wAGV4n&$>;ZRF$>RTmMKE5PJxr9XNml4QFe`nQY+X*6}0 zOhLp}+I5%*8~3^paU2~Re9YSDuEu_fr(ATU`tShA#|$5m`)t-z^3Wekb&(Vl{TD~; zqldq{!hJ3+73_D*)QgLYid0o%Ej>_UdAC_>z`)L;pl{U?2tjEvz8Vf^Y4%muF0D1h z<}x2l7Iw(K(plM_T{M@i+uVZ-Q)%?3VCTGySvp&EbJMd0z_o?czkTr`^heo%(=xWddcig%rQjmk0$Nkfl^ z4|qbfeFscMyq9xPxRiTdhJ<_y8*F^SZ%uTiA2SK00fLyNl^s*T#eRTXa_6BLAdLR2 z5zx&Zec{XTP~&H&$9$yxhJ~_AH5r4;+|F2U@3-6st(u)iRlUBWkM;`6K6UmuZty(u zdrwU9Lx(ZQHGz^ju}mRF#OsylkP~y`=do(b7R!r+RC_L-<0^sA<{&B%R9-9PMbFxo zuiPBfO=ldci9M3fRvqD>R7TJAa)qr5M|Mu}jD`TA)R)(128Y+PoF8%@rq0^fXdHD? z0_7spqe%mW)oM;38Sy>%DPLhgifXhBhTuK5Tp{QjeZ=rGz5tJqe=P5#fLjG=Ne(qn|8Z57dtC}k~uZQ#KB}<@pCUlBO zTugcc+!b{`M*8sSitM{Lzk(+*#`R5%ja7Oa5ztJe@z^V}h$(FTY7?WQ>#Kh8(m^x? zkSC|6LUN3=|D<<_4H0o5k^~3|@#DrjR~@-HIlFs$MjZ>*w|}S?=b2M=8nK0UY1eM2 zxgoE7EgOC>thS0*mDaRWGyvgQ6yk-0gRff|fgVi~nx?zQ(sbEKaV>#VC{XUj^B$)f z4htK6_ADn5qlH3|p2FwmSTY?Tc#OTcI)X9rubQC3pn}(7Z2#giOQ& zoLd>5!{ATbxuO2-e5RA9dcm#d>IC==D^JckNfd*Z^Mf-TXGzV4+*uTg@Eq7oHuB8O z#7}k~1qKA32u#>8zdMW^ZQN#w4r^jALrG3AR4z}V*;Yf7^uM)Q++})wu@-z@3@Pnby@aJ-0(TV1$*m2>DM_bE=4@fEHgC&%`(1~RPWVhHq>%Npq=c! zvl=NC)%Y6wANI{1)`-QMihv-95rx}a{k|68?h_iGU6S@E?CNFBYV;17t+@u@lN*?t zQuv(K2#bZWN~TfHb&HO{;6DLgniA=~BB-68xOhW48eud)Iw6VcKGRwL?iQ+JQe~DS`(A>)^4(8;}A;1w-IzA`#;H{@Qq38Q6Rtr zL*UGN@4M&46{PRW$HSHs$f6UmdhgOgDu*Az(@&&L+S+!cB2kHA7l0x5PpoybZV746 z@x!U`O60|D@+`kRsXMjc;@4zcl}Lgdlz%La>T}v2+Q2~5;CDCHt))f$*_&_fn7^=e zf2C?czaczhxtw(m2rH3YNXK?zDpkyn^NC?C;wwRIsrZx$AT;8YS!KONM+phy~l(Xk^3hkA>Y7OJVdacsTuDHhvP054g)_Ccl`QREU!dD)s3Y zNyiDF1oh@s0f`|`1zfjHo&vF102*>ka#^CqaX&u=v#2I7fi8p^*e8|hU2WlO=qpkI zSkMJ-i)Dr8)2Gjr$gEE55AKt(SRq?M$H=c#59JHAKB9&lP^ic0`sCSaVG@geUul#w z-X_Reez0df$5GhqA~d)>k9(f{()#Y5&o+(jrji!PS7#E|;fBkX+U&Y`dRfrfI88)+ z0^M)N9mRFIhk?stEnxhBr{^Zl#G^2+a=nbXfkYebt*P)T1ER8Fh+@*flJld2v@!?0 zoX%{WZd0(PN)Z;f0<_OCe}~Vw$UJiJhG(<3+W*V=f>$BJruR zrF6YxtX{ME!L>5av+M9 z#b9R&W4Hv15TT|FZ1|!v48t*6bUVocTUXPHUG?4hT2EY^$&tsPccyxd%xePrgSWe_ zEGrO*Cm>tN+CNtNPgVfy_0*1Ky_uG_cdo#ss^y>yQ_umOEW5OdN-XNPK@MQ*a*0|8 z!igv>ylNy>wQ*LObc~Iiep2PXP>P0=3b?XzU7haaXVEaFwOAMe1=)7mrNYlIbJoVr z#v&{{Ix@^z$y7!8%jTXn{wn@X(dp02n=9;Zeia@;_r_4oIS)6R6g>e8v`ZG)mbZhM z8NVv;H}D90*O>*MklYx${@{-9Xkdof?J^Z@1TEo93bUtYXiNS$EH?T9PNWaMH^yq( z!v5-dBQA6P_(^~GMK0`t&1wGx9{1J+;a0qxm0L|CyzfZxV?3fN9bnUr1-NUU7gWoe zR%kW`5homC>{t~Ua%YPT6(~FGk-(GRqZf#v%2nf5pf%qs7JTe*d}tnr`G9dpxUa*xiv-N zWknMm`FHwpr(?H;Tn^a!#Pe*Ew^x`Gsi*D$UNJ(Yd7*1y{c9G!goWl%LHLuA(^FTS z=>>8U9-GGN!vPBlhT^&-sUQh=*eo0BGY<)mZR72wb;_YqF_)F z)8mmLduoe0$u{?y)B2Yde~GTnZuY>-#zwp6V-quf>~cSI{{EtgLQ#Cs$jha_whxn7 z`2HUvYd-6$lJGkl>#cb@YcMBBH)X1L7kp7_D_>ygz}sL`>t$F$)|)DAZROlJ$(e0b zA+BqmNL1~$SitHircm*%V|PIMn*_1$84#{lnZ?C^_#C6fkSY!1GHNuvX>n^pJew^5)$ zGJQ&ru0OqyZEYoF>Qh3#9nO8ue)diHm=zd=w#;PKTfcee`Hk1>7R#0^?W5R(e-w2; zEk?%-tx&A&8b`3JWj6K#ARnzN(?^>sCIl{gwY|!a7!({F926jUGJ#u%a1CaO*bdHH zXEc0DlY_cGf*(!J+i(-RK7H`Dy1F_nEKF5cQ7!&#Q$zMcHn5Mv%sQM)w%0{NB)TF`|~~SF8c#7AV@U0@Ik2+P<_CNeE{SEjO^3 zvk}|eIwfr(F!Y~lX zOtO0Brl22m~UpASc^?YSnW<2WQxrX zT9G%f2Xyc9^BKO_XImTGBD`}g-~z@D^`HM~Jzg#Cdik6MaOMqLSlf`Slq+KTw@K#= z0Whh@@{q==V}tbD#)~y%%SHEmF05PW6&w#I4yU~77V;BgKqKvFuDInf7Zp|VSM5@4 zT{+|Fb@Yjmw5GI}*nJ|b2)*g6u&!*oV)5+pkw4LH7{i8cLSNud)tUF)B5zCPx zm%j+YXB}d%=;OckWI~4CexI+MxM^;T#f<2-YVy7b5=KbaR&=`4l(mjIBpWzgxov}#WY=vF+r!X67u z6pO{Fg6rW3wINve7?}cT3Faewh_dnt--dUfP9MjPykP%IZJsM7E^z|QW9KyK41#1W zEy=O8j<{7-?{D}aym~{-Rjl3FMuEX*fpW5dfYO+X>iW&;7D>h5NycY!KJ7f{Ga@5k zRxqid@3nm(W$DrO^#U-6Y$!9p?dvRd}E6%0jV-^OWGR$7SV#+$qa z8n>ReDQ>-gwDRCp#RON)pQ3;=AWH~n5Mf9-V6)BZ5qVF_O_JJiaI$tB({)PEE~q!L zLtiz!keb-N)S}-udZG|P_{G8Edq8}=rIXo(-B`JP4&}rIS6#pH!ZKbS3q<1_0g0>T zbSXd)su6=_bJ}Nhcj<&%kkVf9`*)Io zXU+T^@cX3B!gNT^{y zoSffi4`LKKU}Q?a;PiDaeb^X60jsnMiP%s+>M7;oNt>Rx>_(n@_KNL&f&8e_9J)K+ zTk*Kz=XhjN(OEcKC0-bP`tTgrP9_*sl7GZ9X+s>#CV3|)Q<=F+htUt$9Kw|j6n5qG z{STI-MDC&#dby)9mu7n_;guWjBy<^x+FHHQVvXNoq>!8G#Z-bqHK;EXe7K)%W?%B~ zB@v7f46`7s)5)}Ntx4EvyRX3dS>Y+>cbj5 z(+%)0V_gO238kf_Cdc!wpmi)BeYjDDimHleyex7U(2j+Lh$|@o3-D`?vC!>=jcJJ2 zuLB7EkQ{uEHXpt_#a-Odc7_>a;re=S+u@@l4#&=NE!3=dTte~>^}qGhWz;lW1%Q9( zbnF(8Gf<+##Y)uEi^G5i3A5fm^d_y?U6YxPe}u$@5O#O37R}}Uiv{$%FGdd9+aA>z zq(IuuDxzEq7@Qlit7cceygR=R&7z2FZvl_v74h5LjiLSdF2P}V7J!FrnV7Ts;u@h- zcAUX^`83061c`~F3-@E@Ba3j$rqn*E$xtnb`47X+PW9|T-|a1PUQSGqlu;U!rNVJN zm{SfGj|Ug!VQ*xvG0G}7v1)NyLY1c{*dAWe^On?}Ryr2Cv4a&gSDt8Enz+)Wc4(a@Nkw~~fW~8T2wFank;L&@YhSi|1d5a# z1VXMvE{(d7XkdCiJ`AA^j}pG@fDCujUp;B%T9 zw98tHbs~VLaZ%CG&@ghU(Z{hTxHjDkO)tLnUur%YPG@tH9Qm}@a^|O4Of4p#KaP)w zx3;F3YcOwc4u=_dqF`NJUBEJGIw}+R=e~l$%w4*4m;w$)XS$5~{mpfBABl`dwVlc6tj?X8nCrYvcrR@MRE zFKuCV37p+JmlGYWsV5h~r!DA0@O?ceIWH{cIibcglfoU|+vA$<%Vh}_wDWhXStx%2I z`rE7!_igRL;Q#_ToJ~n};oUlEUzYa-x7*EHS5@^Y+8j+ZgQx;oq}rb_=;oR`~8`CncLz&tgW5bQOIbq00qg~Z2F-1w>*+mgAAt zG)P)MH}HLLo41Pb>01iNAU~q@xo|Pk?T1$j)ah)VoR<{a0E>wb-P~GMoHxD%DsM>h zdziFmfc9j6wO4rfI~I;UTO{0TUWeIs^i76iFMOD{0iS@WVRk<(TyAy9s`EM=+Ut~Q zQ3te*mlblL@&P~rzu86Rn$C-JFOnV%I-IS<(n-4uFV1PKZTLO|gSwuzx+tM@stWn` z4I_)90QCRg4t|NGaA2{+!rnEwZgFX2olqxf?`7JDR;!)48l5ef^BJ4dnrVG8&oe|E z-xF@zZqBu}7^;UKQbz+~iN+GUjD`SHIRx2)RZUG@9U&m%1ju_r*CRQ%q0lPp;B&=$ z&d8uL`>0#<6@Z<_2`4*GIO_D`^9Na)wgz0bIyUOI;=Wvza`LDhM?bUI(YXShU1!ak zWRqH*01F6+cLzq6?>?!P-gtiM<0+Q)x_mg18drebvyU}z>B>tsUo{Q>{ITDp4yNb4 z-Ly%}4ypK;HlY+WJSsB@vy@a`fpyedajT)tc(eA1y_?W9~ODt_YFNpw#TUQcwh z~NHRh7maP0lMrJ91X&U=VX<1(^wWunq&y4f$|KyeJCKd)eYd8V(i^mUu z$ad3J{0EO1`i#Pv#tRyXv^bpo%Bq1&?E+r8Z7}#gRem8TEveT+&^W-uL+Xc|; z%2^k8EWP>jA^$x_9%ikvzI^&X6)K-0U_RU#$_J>Pa6$v%>rT9{lLjPIww-L0y`-CxN2G=9fHQJl@jKn39LoeEL@C^M;|= zcUY%rl=ROU0o`;@hQCaSKPU9%cqTeT!DG8QAz%lKT!R=I8X8q34`5ZowaD)I0m`<~ zURC-88d}<(uI>^baf2A3WrjY%Wl13t;Nc1DG2COY(}Cq@Wq*+RY{8gDe1v?oHqstF zZ$$LxS3jy%d>-*8uxJRO)6u_*;2;PVlK8Jv(E4*N^L1AlRB#3^ zIbBv@s0LUpXy)M&PG*ZWKa+Q5?R6$O>3?91KVOlx6EIIH9gK(&0E4|`WuGc=Qsca50_!7)n^v-OkkuW#*_T5Z_5rdCN?C)%P}1%JEyAGn%>!e zaqT~sju}?rgX1k7DxO_j-bhJ9BMB^p2lu$ICcIKnm3`|+miGW8)NzMPgBDH~vp%No8k#l4Jt`~8x)5B=EgX99Ype-HnALR`Tkxy=iJ4YN$13dDjP#OcMC z$QUWopj)Q=4)ghQ5w9g6I_;Vc)ifyHm5p+czo;@`xILPES&Z-)8mkVrPZPIh$H7lZ zPrp9twz_9t4MvKn{&XYvqK~{-gV~l^jObOrIY<$Jj#}92I`)2A&jq!Xef{}eHargD z>cFkK_@i#AukNrWBZWOjRAQQ0smV->pGd9T+r!z(hl&YLBN|m<9z2_PUjck!Ak4JQ z_b(%zb5 z3kQAawQ=E3Ux_oIxA@sNf&5}e}L_}c5NOuDNTtOKzY~oMsAA?zHj}a!j?bQdR*%j}id%^+C zCOllowItwpw7K~mbbmOy=X%Qk-M9fU-F?SEtw;cUQNYhs?S0Umd$dO5UZ=a1K5+z& zh9AL}pJfufF5b-zY>pUdD*r+Y)xqWjSJn#dOCh}t*GfWTZrxBkjlsLE-q+O!FQ0r= zX-GD&oJpNm$h_7*?MT!{o3XR)RZ8>?m~}}6%H&cq5A9p{s;TGSINM&dseG#I(dFmZ zJ*3|K=z%_HGb~JYyJ;Ybt7^x?@hP6GHj_eF8{o%$V7JvhXCgFJkj7ean5|*DM4ocC z-rQ7V5E}q1pxGm|(1ATqZKSYHoznt&xu)qOBS7RUz)aeM7gjupRSJyKUb1AeQGBJN zl^mcH3n;bX0ED{iqnR#K@f-1)4MV#HHWNapbFG(UnKMJ3$KO&}di$m0r2;}2)uj~T zZhLIG3~tr&s}EcTfPR5k42cW&w2W5%>9LKbQRv6aDJO0*c8R+sCnu$UCz9nwIpjcI z@A>o=JBXtW{3k;sEr<*mbevgzo zMywP+k2%V0^pLIVhBv!?10J$R-5pLS+L5fWs6B3to2AW#KCP_dSJpNhy9}-dyPw@K z+sm?~Mu7q$$gGw1?J2KK;;4=Fcrti?{=Dn*De>(Eq)Re{>vKN7ik9y z%(__se_Gj<{tW)Hl&-V-?}jSeIHSC!r&*J`8ynRn^W*zdbzKBH`|r-adV~^YB=8FJ z1#}pWcKkZA598UkeS81(xKuS>r4>AsL_+UIX1Oy}qLf*1>v^Q#r@02qaQzlu(&MUe-5roEw|XwE?9nsj%vlT-(`XihhAC+3y|t^GTEsss?|M0 zsdG@|W$-;jLfP1gY0QHj1woGK78@J|kH&TQPh;Uf{%Ao()~gtF!xtX{KlDFTvBo>n?&IJ)Q}E<0rhwz8eOrD0MzyBJDsX(t=U z2a!hHF1WIP){+T3%h3F}38`_^b$qNxARl!LgV~`7s6qqNc*s(Cs2LVCaEa)%2TIa< zpZm~*4yr`Q3^=;IItH+=qI&qs1v!IPd6L$Cqa5y&`<=$Y(iCtD%XAj{Qoc^IFgES> z4M`O@J`cIv$MOIQ-jS`Z^v^sN3w^Vh1}B^iyXTk%iNjI(!9+}Ny8%k$(Y=b1s~Cys z2bZ`=5AU|YRG)n=ePMy!Jy_;02G@tL|6&2DeX;eA4AsX>XSdHuGUg^!d-*ps^`!7X z4b!_Nv^OV%q^c~!3@P;@xM}v@pmw&jSJZlfRAo9>&!^)bVsWi2ghA2J9tJyJo{qZv zs=rN~wRpMAR;geY>rppfZWlVu_aJLv%B3vmos zO>?AI5rJV&bAd;3*WlMeuPEb1FK;Ua^pN&t|Lpz#E=ekqpiEMF!>lY_=A`Ae&Fo1l zk&BhMND`hg_8~?fQ|}N6A^`kG=b(9ctNzc0d*SdirS~a)TnVz&sGQDs_JZHJ9)vPL z)E1p-g=GivP6=x9G>TKY%-mQLT8Yi*%BR^+B5k2_W@inK#7rZv3g`U|oYisS=o6;h zu-`JugeLf0Ck4u9%ZR0iVeG8kk2I}GCn)wh$`#E38`C7`>L~Kqtj8oWJ%ViNAdE%F zK+?EVIxNFaFRAPVS;7}9@;Z_Y7NAp}UJS#1k^S;&-|pt{J-tDB=GZD3G9cWcv1_<2 z3p`ai1AAx?HegBM-c+qFmT9IC7d3mH%G}%7K3-T2#$&fnsw{n!n$kW*Xg2oKpTJpi zPY#!ag62Lh5oPuTCE{YxVT{Y2{i<-D#?AU7x+&kFjxwFEnPd)g9-Djgl+!JrCqF72 z2t0IBJXF=cUACe5meW*SCQ-geJU$tWF@tV(BXHWbJefiSGF|k{CFcav@EBZ!UJ@}! z+AbbQ!&6>n5=>`SZ3gLoMHCfsNz7alH8c9nAuX1?W)jp zy6Hl0dXi4R-7U5m(LWsV%+L3lyl}$JZ1Un~0`~rLPH*%yXxtEooQ-v%>j{mwg+qBY ziy1oW!wTo?2o8&-tgWL~q{=v~je=Saaj4BN-^szbg-BBR9td^qs1;+_bUpzHqxXQs&*F0|oxaJ6+8jbB;d+r7(&$~rmUy3(*e!+s-g3}eaE zk?-i`^Z3YTNfC&@`CWvPT}|AnL!b^xx9gH(k>30 z_Zv~H&x6y&oOB^kNVmy=Bp9!3(4sj^Jxv5o`UbG5xmr&e3%RUoiG*#JZQUpjmWyzj z-rrJ-wjsQ+6mnuU=^TK$yS_y19K^)- zr5O6OMi=W(s(phzef; z`~OF$1sMNbxUc+1RGkW5MM?s>?u{FoU2eJ0tXG)V)d-LaqE;UyXP@EznPaOS4) z*prPXn`Hv-ML->^vB$@?9TSgR)XU#;Dq12ri3ufZVsmyu#)o<28d!MO-zXmeed4jl z=+ExyySue=RmrMHsfVe(cLs-!6ot>`TP0fxHFB)kjoLejo*dRoKdHKJqgSO7)c5eV z@161TEiU&MVRB&qBZ_rv6f1Xa%C)t6X|ea*xDzKsUuwz7gddU0q)A17XTOS&Si3g~X2?0MF2rq*1?`z8A1Q#>kNN*52b$8lGLZty(C(@i*+iS*LP z=t+(dWNGe;5538xC|2W^4(raacX-DRJBL&$<9nL$#`RjfU9W$m*rHon%kyu)X5LN; z2ox?_GyxT_71Qz8#(IAdQZZTZWXL|eTyJ+*gOr?(`X+D61F3GV6iJkseXNxJh?(j` zTXRS$DYP^g;sx$e0`o1UT=MgFOJNS5JoPUF?_rxID%31q;W)dxw3$mT;2%aSG0#J} zIqdsHbU7$sxwgJl1^)vY(g*-rnXHZ%iA0WUp<4g)fyG3Rc&hwb&x(92o0%mw69HkEA0>^u{I?WrOrgqWah&#`dM7d~vX$#;a>adk~D zHq+8i%zsD>Eq@o|JFt@eA+PJ~)k%69Vrj(zp<4a)VjG5BBBNI=t`putH57bvuaYnI z`F;@8w;;r;vDF++m-Jdm-c;|&We1PqCMrvGwLL?9he>d@$yWwU2O%D#wjgOF2iW^u z3ZCqY+&lJj)nF`8X}L~}u(jx0h1_KSxK>JZvzM9A0pw?VI?Y0>m}pKNwo$f>;EixP zZIofjs8-5-edb;8kDGzA%iwZ&j*`O9^%754wjm?AE&emY8c<8t9FLnlOrigH7YjKU z)1s#CB|6=~9qFbNCjOe8@?;s&CLb&#c)_E}3Tb(mO1r({7zK_301u;6@v{WV(9z0L zd%f>t$>Bv40?)Kz2sKmAGmp3bEzx&;$M1E(vGHrPLED-#US3U-Ifg;mHKQCuWSq6f zd8xN)dKPkX8Qm%T>18!FHDzTP#~+PT>ztx_XJot^I#ZpkFkV=E;@p7DAw;Nk=>}yT z&A-j|g|RBZs)M-2^uqlx-`fPZoi9{ERD+3tLU)vD%GrNN4RLK6w{jZk;wiNpNmI$G z`bM!#5;d9MYMnXqIFatHD;7egE^hYM_i%M2e0$dD1gcps$Qz7`@j%NpCF|ip_c7j< zLi}jV&2*x(LiXN7D?jyKjT2NgpvT=r)bVYapl@U_#`^QaW09+x-+tCkmP=&=v?Sqz?n{S2b zW5-vckp{J~ZDy?V$uEPiDh4!L!xgU9l5b zUL>vr#|=5I%7S*^1fz-a8|O``K{WuaY|3AOfiSNmIW9Tljk*5g->v;0E=CQ88&}$p zo=0y!h~R)gaw$CLDOSJsq887mrKE(f3%BQ1EuTR<-%7}&$i3fSfri6nr-*Ewnf`}D zznTRgfvlpUO&}->cw`W1s52)4v7c+uJ$WyMg=7UaWH@U_n=G*a0^^+%~8YUqjX*7PgPBcy51a}-k z)dRHRz*8l^s)n!mDzRtB=hXw!dv!k+1PIMUC%!d*kPON4aXYVePS(FJ`Nn*F24C%H zJ<$CZ3kX-)tGCgu&$qwHdlu&(1nIcm{a=yc<--&a2(TEe^%$uA+TK1lHwR>u)z)&C zs#~+ZlJ|)qtNy$zYH!5}SzBA%+}tdOU6fT+gdV3Cjc0Q-UKNjyICq7rVs=Y~rKqm& z4hf9BayMw|=vs&w;OkP3tX^HDJWEUBB=$f(uS)hcF>oL`dVK%m0@u{W!y{a!*<@6g zDeG(#HRNL!W#DnO%f4(>j7zZ=|G0 zi4s7kwGLhr;bf(-!&`Htv*R_g^1ZNfzwi!ufr{-^Kx) zij@|!$GcPd0QTzybRfx*+E!OrBl=(EB8Q#hLb-j0VXsSa3!zY`MPGaHgOZb-LdoC< zaTg~Z&mXJQIxV_iqJ=IIJP^u=v3Ibj;>SQ_y{r^TpSv^59?2CbjchVRJk_V5y9q$K zq-F#u3%k)QfTxr1;jIofsZTo`~FY{YqT|pa*uU`8I(5xcVoMlTc zsbx}gv5@`q*h9B2o&jz*g$Ldb>yIx6D@#OmRRG>8eWRv1cZdBwTNQ|iq@U-Ivn``{ zOHL5e*}^7TTt88uF2?YKN)#{o$X&4nu0Z(#Ih>OxFF0Spo^Nr~{%q{8p-3abC(L%5 zL)Iu7-mB7MvQY+E)}u>wlE>|Ul)x4{+4DQ?H^;$yEgoHRTkUot6AC9!c_j!yYp>Rt znz#$eBE^tFpOv|3#OM65zIiRW^9pry4(HeKy2I`+IZj^IddbvO?csjbjg^yWobmpI zgKl_V8!V)LOVq|I7Xpbw@;&{BHty<{w8{p}nFptOS@lOo0$3%fIb!0~5*1D$gApM{k9r-N^Tt;%p?OD@ZfitVG&5xk@|{oSD^ zq{6$KZ6DoO3dR&36N%ryY&Ksy6-yx0D2O1u+oYvAj7$9Xaq+7f>;8V?ARzo@S|R0h zd}5LOb7nPmn(a+6n_rXd>N5$J(M=pwNRF z-3IFO#=4n{lC2A6iJ-nheL}r5emW_(@OzK!y-v^kyd6xY=gi_d(&I?W9jy9u%o(0$ zzYBgnS>bB#=NU<;W?4;cA!sd!rPwkC2%cxZjTaWRa#*4y(D(I7f~7<4_?m^Ss_XjeWe&p zZ+NPfc)AW}m27frZSbXKc#I{m>3vF1G;NnSh}}(K?(A{%j&u z-t+LY2N|zrzb(K&WHj3{>m_?a36Zw~mu~%V{`dw5d*Z?wB~^dKoCY38UJ8AmEqY<< z{j=ho*lX^XCFo>NuiItgTdabH%OQ_P*e1lN%lXY3 z$`qxV0D90MN+b=d;Q4FR>G|&Rkn!8DMF2CtRUeJ~(EL%Qf@TG;)=I?}$=(2NS{Bn* zskSlmwv%D>$#bLBcNlvt#;I4xkR9ZGQ6ufYkx}OZEh*yBT%IYP@?#Y_08j(&_&mRJ zA+f}xPP$FXdJkus%LGnthtc~Pu2J%{`g$k9*59@;Nb`L!&tA<|lfVx?(hN})zw)bu z?FH>}g)Td-7e7}b4j(sji#FUtwImK@73wS^AehcSQK`NQZm0uucCo9qKwQ|Ti)b)J zhnz!{8+H7k5kzhXh~58hYrST8G)eUwAHH5xG&H1KHX%Z8>fzC`oKbSJx@JFfxt&!r zj9?Ur@UgoeP-H`Cdp1_n)&0HhWH2Se=TiCm0Wxm~so(3v_aHv+ z;;ggT4!#0Eef>>sa#X(G&s%ynuKad*b05|bn*7<rNYR-PIPk+GD zo@+Ot7T;&|vUxc8WSJ+!?MAeB58K}Tm{}Xq8Em>7pIXAdBb4L6RTH z8v*^qyic_D^u0(Re)U&0>56mdhz41KD}^1W*1PaEYmUi_^PU*5jM>TJbb;*~Zhaer zw#F3C*%nVb_4hYs;xOGQux*3vdDV|EF-{~iJPup0GL+XRUJk9Nh$1s)EKa-b2CqC< zt~ohWPx5W4n`#MaR--)INTT|EB66A4w!!2uz-}t3ng2WMXwV8Xi;ntl3S4ta{@9mF;ovT2^2COLSmlSTkw#xZD4rbOYbvO zBqNGRp|Ao?k8Ro7prKuxd$D02eam0vr5mwN$*iG!4E8MF%NWc9l?Lu*<*Ru#RhKqq zDH>C~4-h??L>eLH9|6hZN9tH#9=6?VGm3fB(`&gv^8@d-%lqb9?F}(mbZdw72XloG zh49#+o3J9VS9aq<7mDJMkt(c1uMFm+Gp-YRy|DDo={?(W z3vC;jPwzTE-<4N0iI$btJ=v5Gj|u9%wRiV%;ij;*OSv%%mlVI-D`)3C3)JSxOv|1T zmASU7l${x4#A;X}2uLvucE{VU%sl2aoNw%p{>pfGUF&5DE8|vPS8K)9m3DxIMT8FY zxkM3G9E<}@Ex;BOBaxYX$;-zR+xA}B$s!OS893Q~&jl$eEp_M{vz6}XB9AnD%wCp~ zbivWbclMooi{fafhMCJ??X?yK{$~2?&9=+UP54LXHICFXNyUHA6^_Jz>WldGf~ZHn zra~pBd`!}91{8M_<|5IBFG8a5F>cYvk^ECWmdEWX34gQDj**IERR#I? z?Dt+e#bqjOOixYo+0DpZz4|@8^{*PAt5;}<|I#PEdVzSDBbOelu)pYG1BygbU!&00 zmgheuX>YFq9Lf)QQ@(!f#lth@x~)$=M}qCD){qZ_RWt>IV%WbAbpqvEkW}`Ej#Z@A zUJYfR6l^&rUih&Ju_wUIZjWuvBKMF{j{u&ZBKPmOmYT^Zv(wG|uI|#Xf&TgJqYECh zCiQ8A759S+H4GJYEr_5GJ?q&CVs~nc@P?jDcY2Jpl#IDa5JRq(Vo>5v`Phe7g}6jn zSLgm~YvmBn6Hqsax(~1%7@P~^%_`^WHNbj5)*O##R8V`I1#Gt-n6t_WYfn@k*J$U) zU2Ekq@c4YwpiGm&o-jp(Z8Fa5@d^5FmbN0$J4t3|R3YHM56;aJ^t+77(3oZ+x{-CE(gL+WENm4dzZ^3FRznb+qh}_%xu(6ImC*i*NLl&wcN85P&K0dE~-fq>n zB`ZAQ#JJ<}qeZKx0e}!QHg>Vn$E;e2y{G%$3zq0n^)-xZSY@a}QKB9b*Dy$``Wk@Z zy9`jLUntOSuH#MiP&vk=;qw7yZk^1wYRpcYO4y*d3@ycqbw$7S16uZB) zGW3PxWfj@j=n=}OPB*(=PM*l~eGiWcLgJy-7ZN66VQLzh6hIB;aNVI!_lNUZUNJq* zTUePtQy$r>^@GO>5K*Tox~FLPQ0*;$Rjc8(p0{YV4QHyXA(!!UHclqfzNLL3R~tIX z?|Yk&J%QciFU=(_*`f5T6UAfinXIrn|HT5tyovB0_c_n@CkvIhFWCPDdocn^mTSFo zqkRKTL?({D_EQ@1`4DApu2)jmZfw)VhRSOM(9vU>{vtCWjj(djo5Ll2KiN-znHV?F z5Y0ef1tslswL2_%pafQg2u2Wo;I-$-Q>}aw7EbPWAW*5C*5Y>dDQ73y!qy2nm*Iz~ zsZnZJcbu9rKum3f@7Yo63n; zutKAfq@~^j-XP7lB3%pPvs<^Zyk|oW%r+{waxPwQwsLZ18Z;=#c$&|Rmp8U8E-{e= z4-Xn2&lQqswsqLQm!MHDusOR#4GGT=B@q*Ul5kAwT+RD~q{-V~84r&%21-au)UuVreomGP zPnXwOotmx>guWz!^r!%AAdq{v`dPg0*^xL`rijLBA9w4JA4&~ek5L62KQ2# zn=NvZ8Cbst5T-BDkeNp}sH0_)akW{;R}{D}Dk|UU`?8^$1H%oPX1RM* zU@nE3oY^DxR%%)Fb+egfCgXG2ma7yu`3Sw*Ez2Z^TO#Hhj{7se5QSAYU4mrCnM$ixDlbt;X(LBW zILRqV>vI}Yv9Moi#OEBE4Eld_;*_afHmcO_@5JE|!3uD!^IO_@ZOUeBRK69W5IlTNiBs9}2e;P$J>%p!kEgUCaP*Av%NgWl58K(4cI@)dX zSSF&rc^d=WK*GJG>-}?4-}ksD6W@#Nq+#V#LWMc|(dq0(5i;W>izjbp3j&KZ;_dPY zz@X(a4L_xsDnhzegHB1EdHDc((Wc%sR#ud{0HE;Q@dY0vnG#O!;xm;zC3&pE-W=bY zMuX(CxUo^1=1{C~a2BYL>3zud$15?WkbrZVdxJG?ic}frI~lrfNo-yJXa#ry%4C)2 z-;Uo<<7#{+==>^It7}jC(y=Iu0I2(BWDy7q!vBiGm#;XO9Xu}ikiroYEuNfOZZ!BA zSjC=(h3H-c-wibv?%&Gr=v{PRso#AKRb~2Q+&v^O-xsopdToelN zXN5sOfK)CiBokARG3=I1mX{q2`H!VfDM3jW`?x|+&&t;d*&})QNHJPNvoj3=&9B;1 zgIw(A_qz=&iXGepN2;n2sqbM=f+BIC76?*B$)<+W$H9_8=`zLT+N@2MmRxD+$Na$< z({Y+e6dQKbM<&&iR1bwFag-s#^}xC0afbKMEA9D)7w_v)8GaIgUh<@Tt+!hM%+jv^ za?|=!jj+jgSIGWkTtV>C2v)j}s=@O0d4WE#ASH`0d*kiTK`+!$w!({(D zg^3vvrsO>zYVNlAt#`*+iZGP!aQ0ByQBDw9^r?KkujJ&?AQfGK3uNy zi`>D~&xfrv))#8Cw#rN@Te7*W1iH&6%miT~zd#e99!?5VaL?wBn#2YK$q9!F6 z&wv?^_{Zwj-?f8L)96HYyg1+Cs_IoWX22gHKkTL!qN~wmx zawQ<!YE{`cH`QE4ReC;MLP5RB@irjno;f^Beh?#bW3Yws zJcV6;)!OCOM|mg9(004!T80J!w#)YSW=&u<9i+O}ORuBSOMJ@+)8R6-R0a3si_&Jwr>P2QqBncoD)PE$cs?wwVNpqvdpQcupngQ+Wq1lJ~* zcZ|hA72m;#0`6nQ6YI+hl(UxOK;6^CjKMi~KL{ySkdmlJZf)(LI6B01)T@N{yDN}| z<@au`f#ln73Hg}{)hIT%qKbLF+P<7^HNUxJ@qYr?D36J;OiFo@-xovXHV~sFy*8f) z2!yJ&Yjz4)Je_tbS40|8Y}Cz%I@yR`=J#9s<|PY>*-a_9X_p?QWcUix?-YPRO?8hVsr;4}JxUOI_j8r#;~sB`PA!TQGlh2`3aul;ozgN^7uT_ z&x=2sUbL8A8?14hO>f*~GpG;<^@sy}NS96)-f59_kNpdgKMrT>&CDguape+~Dzf%3 z9X7mA>D48;2jXgG%Zd$q_bjF~NvLVBF<7y(pU&AUbuBAo&q-NG;Bj9tJW5Cuy@cri z)i<8@6alD11IH)pyr=CCW*77;92a?Zmsqm{bJKk%2p)PCYrdKL!GwIl?!7&u6QOtx zF?BEztj-_IdaHeB$cvpZxE=Kv6unxuV>3Iu&09lOcE$gu7c+A&d&4@js6L1Jz&kY3-0$!_NyyEHie~hY zhHlq_M_1H_av>ljA!$HnoC{?Npr>`!p^NTLwwnYYM{8>0uJc!$-UMp7shnoCrmA@@ zW%In^NLTMz|FHT!1Nd(OXbB!6z0p0=h~xN(Npe6nGk!Qk3Lgy1YIZ#h-YRzAeo6mH zx%2ChQj~ekeyENn_uGQ+4_M?}ZS{&TV1450i@E6*oqgJrPY>;p&d{OXjRhNmkH=ZKMmUmjI zuw}A*KLDr5>tOw(*G@s9-N$@}sIIIzP7;~O&$#IxP5gHlp^YcKgkf|Rd6SyDUkOYM zQHLgHUqcnzhB6%m(r!)?yGS;bRj3px2himzXqJcPvrGy)?i&35#l*hA;_v|gJeZk5 z>S0-4=K&mbUxb*nRo?Tx$HkcF$^U>bwz|Z;P0}~0XngO^dsYY5a8n6Lzg^iaaH{2) zE3kBn7ax?=tYUlnN3)f8%jy-n?MQo=#B&KIh8qAvwp4oE-B}tQ4ZYH|xxC~e+{+ED z(^WL03_xrA@&G%ktVzdQ(ep`}R_Z_^{gRorw1=|{eNtDS-kX`sQStfuy#As@1RlbT zvhi}Md~w+iSXFp+qAiU!Tu&J?8f)y%2Z>VsdX&U`)J}IBCgzq3&#+dF=eZ`u6_0D)mo* z5I>Pc>9vHcUh!vGfl3Y+G#n=|R*aL6np3L{WRZuQvYGkJ`{Ci-&MqR6#VJ0afNX7_ zIbjm*EF%??3ywNa%<*vWVb5n7RZn@RE5)k z`nb7mKdY|NfrVYay)<3pcjo`OI6_7l$=>oI+{1=KiACec&eJT0mW5ZI)U|Osqr;#S zqLf@#p4A-5G^EjHSW%^(r~}`m$dRcsqm7zF|F4fdGZUwwW+5MC#ktlvJ^Na1^3`k7 zg!CRWrvaapVadW4dqzPyw?JyaAPP%})6(N((+KvFZ>Nhy%VHzloJdwPw7)DB#M;rluk6a zr|Vn4MKgx}iv@V?yBGrzSie^NyXM#Za6#HXsGkEhuts5|z~$r;k#r7^M2^qe-4;>I zb-Dw!Kj)k=ZItkb&U{#JeU}17hxCyCYA(O92b#;BoKfsR?enkZ@>rp*{n0hmjq*~% z#{i>Fd+=_cL}s7#ED@ojpvgdr*w55QC}zv>ntA_VAHKCn@~QKV+zaf=VpiLPN4WWx zdurXUYeU!+eD?j%Pn%y$%g}n5jFg{V5@?DYo?PxGzy&u}m(zcuzE!M-(YXPl51@KU zn65L4o~Ne+>Eh<)!J1{#=WHQbW>%5a&!^oh!%-sb{3p{T9#02y0|P?iR=%i`@<4em zPlV7VCtqk1P7h$<4DmjY0MHOJ^W*jleBcEYkFPfCK#^_Qnyst;|q@kV^ zt24RV)RZp6duJv$qxq`28-0XahagF^;faSA8jY4WQF9kMoA<^LXyG|z>kH4b&@MN} zt;c?P;5Yh73nN|=9`kpG@^+T}M0Co1I?c*kY zwFeCet=QQ%d`e&4e!3ch73;fBB7?4G-P?d^w^D3V62Q7Zxj(}(i2SV zxiC5zm*DE+{U39;g1hd^%c@FsRgS9`lC5GsD+!g9kXXQ%=7M}~D$dHBvEtYpiS3wU zG&Yi4m`}qAZk8OK95LY`!Q4v&u?RDZh}e$lN~?mJEUS{oTh89S8tG=;S1d)sz}aahla1;>G*tB7rG0^6;R z7fvb~x!YtSI)|7sITJD>&Goy2)|; zNj{cAX>sRvzhW-(&C&AcAGhtvwO{!A3U@;XSF2PUUSC496wU(kZ zib17#-aj-Tz(2;a^44TmSoYiDAjPY9|7JQx>58olT%U zNg-2Z+OkFn1Iyp%bcZI3`in$+yxi?30o#+xqW=C^#D8)*9O_gf>nQ>i<_KMm()2q4 zK=KL-)dBk+KFo0(>qjfp)x)ZfG%-ooaOdU#LK2+%g0g&w9j4Dc2ETy4%8~Fr5Uf$` z@(KJ6CYFDa{t3H^`}a06a0YJzp;>=wB*Kyo_;ztJ2iM*2h{-9JaWYkQ} z8syxkqdl!af9PI;7s@Zl%*@IY*ghwl6FUoTYyuSp`>A{Edn{rv2=kjhx0`#?jUp{p3@@0(4L{&}U%DlcY z2eIXc{L$59LrY7xX_Y(@N}@v5+GRHzjr=d|Uof!3(h+}J9)V#{b_b}~y+If@IyIUP zW{bPc3!wRNj;Nc1R-m*9MMV?ZOaVHTXt`{0vhCwD%!RID2`!Jn9*e)G1aQjj_W@DX zhhb6*ZAN9cJ}W9HME9W#m*?Ky;QA60AOSO|(tgJa;7=)V*x(xNd*qjB2aij3ybr*n z`MtFg2Pr!}{0fj7Jb#Wm=$>h%XkJt0Eo$%WO2`W6nvy=(RC@0JEIKKrJs!B8H^>5l zgQdOh^a1jrBa4o>#4@%U8wylxY>B@Q2s{ZlOjfB7<0l7O$#DVE%ZH)phrH8i*h1tu z(6dRKYP$#qaPl*;-IccPX>CGOn|0}_h>MQEy+9|h~#acGz8 z){KgtnlTs219JXs^}^rA0r*+1$^LWZr|oD*0TFK=E{M%Q5ed-F)j|^7-jl{3LkLPs zgTq-(OiBUu<@wRZZ{)Cre6c{?^!Q}i`-_hrnN>hq(c4pn_Kg=ODcJiFx@>MUjdfQN zz{NEvF1HzSz$pLTI1)eRn)wYyZ;kJhg_yrp2PA~jAh?8t%rUY{zx3GEgWKCceFMFF z2hJ?~ax&rXvZS4nAphHviZ7%Rm>pYCt|ygRSX7?~9%N)9lR-A^Nh zR}7w4!0P`yPDC(x?skq&msV*&)HiVR3o?vFVjX0BL5XF)w+9bx4s&-L)u zfP8ECX;#4pwY9PNB(81Hx01)0uPSjL7$~0a+r}w^-bqoL0qnH@6de5T_8VXUYBP61 zCPo#Lf@z`-Y6C}a6#Pk=6Fx!owLGM+jv)(VVqEgx^Ac0X;Lhza+=+COUrV@mTV>43 zMIp1eDUHql0rmG?h;l`9Ca1+s;(Is>*7tsoEnuM|1EAdyj0b=OxhV&+MfUS7#lIv% zm7f?)jYN!qUE+2ewOG_uoGRo-4LOKyT~lNk!$U(uqryx{LA*RdxakqJzupK3sygp$Sl3oCC=zDlR%U*(*Rlmgpbq=%Fyu@&MYX-20{m%{DhknQiEbq$Cqejn-T3CFwt zA9GGPCffs`yZ&lNgUYr)q&p5vPW)+m`T$&!Ap6VGh4ZfD|2BE%q75j!Ds4+(arx!J z5ZnH#*tj~>wbqcJ|E&A~uQ{my>hmIa+qW`zI4((Z`-Tz262Er-=T8tWF!UC7kEy8S zLN%!g?oF^HwpoCP!+~XlE$M0L8w(4Ju+n#;k?rUq3&Ec4SKW*E0wrki5axze+WU9j zYZvp9D*Ch5=|)O?UO~UCe{oB-4*y=N01n9!U36e^$)2sH87g_3%TTJi7@tG%TyHv}lt zl%t(r$;+!8ApnT-669W~#6D#%ys;(wG(|_d;jvZf*MG49v8hm$;B|xePx-Ef($`rl z^HY8gn5!!3K;UE!7Adz|UhK+~;vupf+8XOXMA;;{3iKQ6Bd!fe9af`ORX-}N>@@&k z`c4B5MC+@9q4^>qARqB_i;zn-&h_OzvI}>#(x5&H`MoKGX76 zWhYu|4Uaf*zLcDS$#;iZK9-gk3eB#9FxN+${fdJ+yu07FqcM2HvPP|43D+mQ4c;$& zh2Sv27Qub#6qJy>_+SfX=t&}U|8#7$X6(2|OVCMLSBhN4><%T4TEL9+1#9yiaPC5T z#_S=SO(dSR}~$)v+AekOZLF1ROl-ls8gqXI9fGwQEiWU*K^+qxf5#?Tg+>%=(JHV zE4nda-TfBR6d{nLN063I{gPSJrdry5Bww)ifRYiQB{BjX*QEOG%Qef6yw>n@KgZ-o zb()xkXYhp)9-Qxmjd9mHpHwngsxUzIPL@6tpoxkeJ~fG;TWo1M4CN9unn_3s>gYmG zsR^n3=y>fBlMrf!E-d{R$O)vZ_F?#rxxC0qoFNRRe_3fc;83dIS7^~JBFXYG$&+b>+2J)u%TPutJ^9%e8k z^V$XZMfl~BP(Mf!8BR;o+DP2YG@CigUNONJbkmYHj>Jg$qAojM|zJ=G60xZQ9S9hq|< zo-U@jYgg02XqvgpkTzQExR%M<$@@RX^k0{hLjtI*xy3pBa(MXVS8mc`Z6wLW6A;Mc zpdSr5nnq<-F7=U-k+3B~t{X#&y?t=QUe@$hdSyo=Bga?NQGGnb5rV~^>#Ef7*9E>P zhun+kmFtJyPC>yCl@*gLq@bNz;Y;2Jv)k@A?kqpaeIH>j+OCe(h8$%ln~)9Zur_$`sdqGetT`2H8K@b~6o`=h8W}_vxq!Q>5>NZ*Bu4 zb0Qq1jS~?8yF?JgJ^dcK=y>8(vE2Xdw0+QoSg+iH?!2b1DL+4piIbU00awNzOewaT z`?zpgiQHh!0-?s|*#(6OWzaAF<=YvU06r5XISvC4AYmOZCv72%fuG7x9!V4U+?H3z zz$^3FGa~JWp;CKnp_o5=UO*+E-&3IHCUK34!M#_P+O;4p6A)G}m|URx7+}K_pYB`a zf;}S(4i3!8rX3$0B}$4%EXx~&1ooopM(Rac&Pw-nU_tG3uQ|4;XK6!_op2L8#jMHg z!KjQ~Q;h``$4zYyc2?bnvmlzq;N&u^mf4+%tr&fe?~0z^5FeeNw9WNM2TQw=3hH0X zA1C722Pnl=AIA~is?P3NbD|V(5BHIC`o>`I8{}@JK^V5UYCk|42kG2P0Zf6Y=L+Vf z8ZgHjx}SWlDb)9D0wg+DJ^Gf48bfAmN(wK}dd$(hvp>h=_ntE-5cBnC(*JZ$-FKO5 z+Aa5D$gXGC0yOD+0AsUjKV~^}af)0{-f`)(H#u4O%b^H2!QeTSY+cUH%{dugajr*s z9Zqi?eB4lspX@g)0~!mG)@GLFavTr(Nm8n9oUpBCYiB~DA|gI~*een6&Mqy>&(A%$ z^S;fddizK?U+T-(8cfWex)g^)b2n~C+Mmu90~LL>6;2I)ydI0Og~?y~3SVz;MQEt1 zX^y{2d6>Y67eb#6&aR^;aRuk@LfkSyT9Hb6TGOv~En6L`M($eA9Kr#jfT5j}^1UN0 zZJd}uL}T1u7&X^BCRGYygsqzNg*X@SYM4B_B_e0BUlI0fcK8IRii;UwagClEotRmX z2j$!I78^;xL!xE>`rRD8z#{!1w@>;enfA8gI73{|Qa`lJT)+7;6$+YRWPNIHVZ)UY zb=Vyq76vB~i=27+YR6(7UvbMy3Pg#$&d;v_CucaVgCHtPH9C51l9Lh0bpVx*@Cpl zkw3MlA1fEBrl+!CZ3cpbyX;@MWnU*lX=f_SZb{qI(|@HIA-58Y8?f1U6Fy%X!Vh~w z_`$B>=um_wY{QDTU(QkrJKc8Oz5jDh%P_I7!H+Ao zH)hU{H#RmeOoS=;=mgO5hXwW)CU**QHY|TU1LGHtYU`;qm~Z(mnW>xA`yIm5;}bME zZbKC03_>g`SL2GXcl&E!2zO1>2IKA-%{ny@q`!M?(BQUYX`J4|vIPIDZtdQHF+@pyBvFQ&Pp{o@ug( z8BShlYFvM+r4&mp#s*}{r^ifUdo7eRwCy2qL6-|#5Lu65w0PZhgZrz*XqKXCa)Q@niyonQaorR z`!;Z6RR-et4qRAWoL!XPBXd4iB{E4d()2tuppVRPPu--+@BQk?Mapk;fIywDNc6qT z@8M<><`ZBKPBi95+{O#-aA>s7>RbGDSjXYACI^>f9FKX1h#efVKh0?X(MLSB~2SSt=brB4aXN zHYYbGC1XVmicQ*t0WHv99#acZO)QiOaFvCJ^Rgz4UYX7c#g1>`vciT1FB?YXE+5Ht zpf(?oQcB(#q`Yw7V#x6AW*KbRX6Kr+z@9XDwReAr`FaU^HY4P4D;lEf4r|cp) z3$|Bde&io_1Hr+>XMRIvYz_M+gr`)An&!*O11jZGY+hD`6xt+s%*HqcW5GcJHVaG-Q<-(O_-|SiCK;T)+h@3zR*GeWDxKTP`bHD23Lm1?qMI8g^WgpRm*hkXz4}sV|?}TWsy} zi>gT#%e2swPUc-^wKugJ;4oVusu3HOVr3bbp)Yg~P>0AqdrPPe9z(d$ay3~Gq}#6% zKm<~XgPwi?>Q7Xvr~1?M(zwnySf{*ZzTLMpTnf+{&K%aku`8dp-K!PQgev`YwS(}0 zm^bckSY)ULu&6yRLV^6K?knxjqu6U0pFt-d!Xk3yzcZ8S+@UW5<->aw9@r>U4BiaJ z5dgHUa#IHK&ezAIK5Mz&^m$VeTTaCpX z{6n(YQ&GN<%W4S5vQN1+jusTDKy(IlTpYV8-5s0t?a^y?%+1^_8>hswL4LMGsnt5U z4v=euKfGwBTB3(t_$O`g=qQP}^Zfbk&su=KHBse4o{bG=eK#3D(g?HV&m#NS*cS=K z#kS&cVofup#^dR|1%?}FO+6KB4$_-zXe1Ns)7g5T;LF`lDH~#upIZ{g#^5^DF3x$F zSR_PmToQD1Z4@M7xicP(WldBL2?Z+qYnxT#Tcaa0fCqN*8l~y7!(ye;cHrXW`?Dl- zL;v)oWiQ67J`A}ivh;XB;OUaCv1#kl=CTMVIe>2VI)2I4>e^^x|afG^gRv zrI0U=$NJ(Fc1f0)c<9{%GZ}BTBWt%w?>qEG_tNX>u_yM;?Wo@M*qEP>(tlNIyT;2! z>^+x9^F1q6YfmB|+9go+3&q;{#ZUZ}a0ctag^ujpfQ~Mn1hq=_@mTRkcz9P@ znOqwnLcoXkM^n(WaP-8FZzkOBAH&$np;PH_T|{05nAqyC#jl2eK{q3T+=;!D3Jr-c zv2XP+j4UfD0vogo+AH|UQ98MirfthkhWu)pe78H$|D%?fqSGV2ZUbbB^Yh*ZF)zCf zt9TL;c@hrlo8apDx^hHZw+6IpTQx2&PAOw7{#xeuD1a>D+c^%?UK5xB7o_?0!0WGf zuQgpERR;XDbaY&SB`p_(ams(ayNCJfv)e%JCnJGlLwlLWg4thhU-JQKv49V+PdEH+ zM4z?%#T3m=`A^=FpXw@=&2jSGp8wxjz`y%OfSi5+uu{K#FB!5wAs}>SqPl^@DH@(FC|D+vVV!ht*lLtyr0Lo?^MqwRBAW|UNW5Wx`PT#B3%~TGNk~m>0 zQZJk_P%a#m$wL1)oZt133zW!L-SH5v=m01Zr`4Eq0a=Oyy@o?*KVjf2+(#sU5O7f7 zYq#?%N}nUnzx*8FTre`tX8R!`aZB&~_d!osm_^4%zTxe??s@TIp`5!x4NPm&HGtAi zi^K{G+1>_Xox6IY6C=9bMFFCLt!ltJ@oMvHUS78y(7dz@BuKht_c!=vhXV<(G&jak zExCcA0tm7D;9PrKYim2Z zVQ1H=4IJo(v{V4Y*N$O7^i+>W-5Q_G&fxup1tWlP9OC%$XW3GsdRT|Vf@IDsNNg&9 zYWtwJt$LM=WKCmE72L!zitlMmNLJP-Knn*5VO5!5D8BfdSG3d8cl1W9GM#YU^>mKr zHb4{Z(_6{uQy%*Br%C)rvO%Dyz}FJ=_nC#W0b!h({>Amn6i`bx6_w&WqW%>5T`}mJ zUK7LsxVS{zQ=3_3qQc(qc`%fzL6@!SE{P0asey(hVk{Y`5g;RfrT?sU5)1{>YxIIp zcbPF%vlAcO2;v#sE}miU^x)>k-xK8;mLR|pf}zQxZmmP6lGta`e6qdG5hE*gUl9&( zmU7Cr{0FdG)z65H?I)0v19%we|32f^ZAm2{uW}HO6z_LIL^79VR8deL6s}608O@|w z%s`vefA$faTTzxD8t$vhhU4FU;u3EuE`jI z+1?JU++Mjr`yHZSb>&HJ%CjfkzYvsS+l#`0^cRe17~Yo;p`o9y+lIU{nnee#jiiW366utD%_XLp$5?gz+I!}*BtmG2`F-K zp(P~T2SuY+a9O2Y#m_z8o-%P}HaBOM=1nX*#>`1qs0HeRB}JiSAL@-X5(=^!KOx40 zL}^aQ0mQu;kdx(+$~RfH^n&&wmVGOaG;M7klVDr0^$El2NwE-CXtHQ$A<@+v6FH-+XDOy;*-reM&e7G`d_2&B z#4+C7_BIn6$GTK{=;PJ7bZhRXG&G!4uk)3MbmQ`Ycz#>cGT*OJF2ewTnOKJyy7%}1 zI)SVdxeV-#L59s3mv&1WE8eJgMA}(n{ZNrOLImPfMVBei%h=f|h15_4yxjj?G-B>r zaeugiQK7KU$4Y3Mv zU&6T%NN;SM$4rc(>WHzKnW2en^m=$$L}mh&oT;r|6B13^&M3^Hz?^Wx8~#aWlZ5}! zy_*3q%yRq1{Ynxa86nq={QP2DTkDeI!UabGg)YS$uZ8F0=J1n~pqqDbIy<|90)u3v zr4^God{;-9_LdUiI{%uGa1tN~1Dt6PTsZ&=EMj6Sl+7)lXP*hTS0dhW2yxS}u&7eU z^k)c}BNL08b&+!pTr|k)swzGnp3}{lna@_XwqfDnAFbQlB~qX|-5kvP+EPT?-*>Na zwdtGLzk}!Y%Cb}JPdeJ_pU2mH_~hmK@aGo*I(1d%xu5PA?HiE_proelPxs3!%9F{H zWQJWEnvnLZD*wB*zaEI^0N$h!BznZE%Ik1hDMOG>SU9|E0Y=MkOrKk+%~}~mNJ>i9 zfGX?2x567d`uqb_rd>SB1FS7(k><{0|I6Y|=S>>@n=A^!4xl7zPH&2bAiZc;Jn9?R+Q_!I{`7Ud|(`7ykcz@U6 zynT81DtCMAC_4Nzbr3N+8`HHhLzCFP#BsX;1qSnF4R;eHUymf=)rlhOM0*O-7%nKi zKs+M5tn|eGzt^6n@6kPtKIDq9g*2||X*Gqm@tcU}%n2N~B{e>}llIi}4gw;r%+qQc zGgVxchX;B*R|gA)jKzyqMFOzR-xoX!;Mx$4mi_9FNl9aV#t-{0)@7pNbe}uYTHA^_ ztYgPMBQ?I8pfXLHiv@@S1<1ieo;eb8DB|J)4SgMrK>{vr#QAiX)Tf6zu}oyoCG&b( z^D6#xe4?ahCDH-GQGEkk#8~^-5rSzm7F>?}x`Dch>FM+Y7(hI~zu$a-6P#6-!^2At z?OGUsi0sOWXTG+N4(R}RtG185=OKfykdrThIO|akz?l9Qk?wa7PLvRT0PJ)v+C%N~W zbARitx8D50>NWIq@7}$uYFE|wRmCU2f~tuay&6Wpvkr@nA49}0i8IFzrvm5w@Z?{j zqeaIUb(vQq?cNS{!+J^VV15c=DDSllgD-;2`oLe`*au0PsesIm=FfYWs5HRW?{<0hTjVrFSbz~ zdsx-Z9q_x6Ug=$Z$R$$3nVbCSppf7~NydNQ4ukI;u^*sN>WZ|OiG$Ri zrJg)$d-uk$aVwsKC<3KSq<7ZYPfY^y&a^^V0><7q>?D`yyx#-b@c;VgN z+!@`*FcN!?WCbUdobd*i8wIY^QYBh35XB1~7ti!b-ia;v?cy-Ed~`SK?|;m#EH-PE&xVQ0DYB><@kHb67@}gDN^|yUF;! zKgJn(hitRiKQMr>#S--CJ(Vfjb<{{5w)SSRiy))Mw=(7vmMp^si^UG0?E-~avV;1Loq zE;?g_jl&=-71xjJ9U5rCF{5^npOP~2)1TvWr%_%mo#K^0o*6N+109LFPy}bBm>?U{&y^@`Q5hQ1J#3`VG@XEyB$EH4f&G+n&zaA0jYiYyBytMxT0N!{!=x2Em-d%FHQ*u?OJ zFzaJB`~7M=q#?6j^($LcDo|3;Bu^;iIO|vuCG`5!Li0aA+QbD7cb64U+7UsOMd;&k z@%DQ3;8gol0zbV<0&B@$c%>fd^Jp7DU0g+C`GNT2 z(*cG^@1Qcw)MauR-|t179xV>%=|cbe^R1T}|E`QH(aP#|;}M>1Rv4Xnf8hPXJ`&Y$UEsS zlo=)tj{NAZSR{^wOZNb3E+z?+u;3%uFn{3ojL`(mu+{j`|^HNnnrS?LrU{u29tAsMW zdNtX+nDvbite^Y7O+mx#XtFihf_UCS(WBfyZi$F%)d3n~n{)e}$d+DtvUy+zT>6t3 zCD!d9O#!es0av-X1(d?&NoWMx3jAqYt{Vef8|n$u$}3=D)YPo{i|=2#X)&0)I6=us^aiPn>F*BV<1Hfc1lmYa#K$Wxs^l zN7o!DEJQ$?MU%VKp9zHo4)H|uCXmrK{QhaW2)qh?vhiLBmfQr6$Y;3w> zP^<-}@(ZKHsncK=w8n{}i*zBkq(3j7(fBzhL3rK^UR+uLOM6PZtIJG=-_MxI6~%_Z zq|&CfGGga4SEzDn=)L2N&*+ie&Y`xuyl~J{v!@=^s+M~Vtm`C6-e$?F>g}fSVw69g zdBaCX3a+xUp`i+JMSX<>s>RlWfCPP%NwLyj9*yFv6&OF77cdhjI*ha%m{I{IQ9=w( z8Q^nH>E1`_Tt5{A$p}&vX(d*lPOF9(ChUG`$%`bfqFc5J^OBgEvYTc+Z1t#RE6lNF zrl%!XWvk3+i&|>K)X(>KmL7JJu0giWh_$CFp?jidIyNB*%a;QffU7^;V?4QqkF>>B z_=6}6;Br)kfAgXp}VQa z#Ht#6Z+t{Oz8oaiwc*6Ul_{s+HX~$hKI+|Um;1r*6oty1ZCuW5R4NZF!=V*iX7fi{ z(20?n8dOT;Tp|jq7&EEL9dh{fEa7fB)i#f-h*>&Sl0(j?lc`4+}HX}Nx0z}R}K zcU1W62a5vrR@NC&EnrJBHIFv;brq&uqY!mgOJP$pJbf6Ww!R9LD>UVb17a&VEsip2 z#Jawof?jAiY?(<|OYf9humf3f%^v0?*vUy(29zVK^D~N`x^GQajHXx?bW%2+;tso3 zt3KOgvh^O7Bf7|Mum~jV;Z41oZJA3_m3kYKC;P2nir5I%$F$GP>E7`ju2YZ$f!_R; zQ#8$qK(@s0YBrkw;i2u(-chav{z$VURyN>1+wP(Tvxjzoi9W(xs7Y|d16x5=4RQ9t z#r+GP&B+xq4sm%$bQxAPR$g!xs2VreRB5MCybKP?FQUc@E}~h2COmD{e$( zUteBqdGcz;t5U9Trra}#30PTQyAwyg3E<{xP{mK#S*ns#EmJr$$}lp>gnbe7D#jc> z$n{eiGR%9`vM{&w7AlWpjAt>SSu2wl<_GeiDx7J_P*cqVpUJ!MZFLt)h6F#uQb=sA zy?ZoR@Ym|45o_;nuyN@zug_?A_>dTmKJX&AkAQXHlZ1_^H*9%}J6<2-qs zm$Nm_@#hb>P|=NX%>0w^U{(6kGMn!{H`}ec4esh`22ph~G2E z8MAMkf(-m<1`8Ozhw&-q3VHtAhsl0APDK^+U?L)`lbc1guk`sg6m#XeC>7+YP{-RX zm^0P2C3&3nA9sh*6**_k=c!DK1Hdi1_Npf!i{7MPJ%>k;cl9+gt)J)>joMy< z>l7N`vmF)0*X0V2X)W&8b~n{k1Az>i>l=twX`H6wfC?tb(t-e z-zB>3kGUc+750<{`NeaQ+7!WV>=psNsFP00ebe5RHR{@!e)m|fpQ+R-8C1@#Jm{66 zpoj(k6knz98N)`BHL<=a7W4g~>}bQCD%z>+273|8%E+NQ$zVoN zpZ?Ku(qWRGedamY7Dc9mf~ET?B}=(&(9yVQ-}ufsw53HTy3=a!U@t9~g;X4X(i-}+ z6a>pUfZ_HY64qg2Da_(nQsU02{D^8_p0Sc0Wmy8oWnn~Pge~n@-mo8JzgEc@PZB*i z#a+k1aE+cRS!?^GO39gu4%L1xS#lcHHW+>OV$=MLpX-C4Q^DaQo>NOqTHWYsnsOXEI^((sbY>(D2<;oq@Ej(-vjy8mj| z^fL5_o{=^u07Sx~OMhh{zyE%`FJb$~?CRGknxeGAoYK6~fiPVsd6}Szy|X6WsJ8bb z>#WiZjMdx8gXkze3JJ`0w&zjXK9xJE)eI1N@)Mv4&BuPz{Kt|StU3p!Q6+%3DCA}S%#LKy#r9cV*^#dxn6|8>!~shMqXYSVo#PqbTJO?tCA9%2WuI14 zBY0chO@mKVew@1mZhBX^6`6M^jp9(JSowXElT{W;R;3TmfZfr@rxew&c`A&5t-{pF z&Ll7?1JQjWYDzke{h;uWTCmIVn?>?Ae~K&=8k6U~__35x$Lq-GCcH-2y zu=nE}>*w*ae4oXv#h6STF-2K>EkNS4ZSS8q5;pkPVp1&HNOKRzBDf9~xUvv)G!kE@ zVH6sD2d%pqUruRwecL*g7pm^isMqRqfD_4?K5!Aq@e{)b)o9!%qb++3Rf_vMMc!}X z?Bcvmk;AH^rY-06h#tz4o}@~Sajw)F%3P$1M8>@;5~${@r2TEa-|Zqj4p)Fm$?(V# z3CzM3(3;Z6-3KMj7h0r{(rvZ;jLM2L*&#@WEgbdC+ZwoaI=W2e&)`@`DUs z%e|ycef}L+DIcs3X1bL=kR+}hNsC=xnx({CFOUyx=L}=Lib>mV>C^Ovyud<@lfmOu zP8V=ix?M+nugx`YWEFoMK7t{sDE@-B^gup`g+BI-hJf1^z2ISSLq(c+Fq8!U2;8Wv zrP8SCJ}m~*m>6i}4U!+Gnan7TsZ&qNQg{+1r886U zvfU3!YEMm$T;M@^dORv$+?=XT9qOQ1JLd2yuz5{Cbs3IcOcUyjSJ+cP0P=>I2l0Xjwt>z z6f?|D%vd>|rqf^2dMh@%wFtiH>FI%rWR(Po_k19`y9+tiq5`B5za}qo18gUup;Cu? z`xYWcq}aJBYk}j7Cx+f_-9r$Sv55{)9}7-1h~SNo3)Pi|pWTN)=ih*P89)HS>1 zJ14;3bFp*b9X^4ndS-G?iW^j-<u3mq^Qh)OuN21JpvJeQZ+Z2a?f`9x> zP8Y=-1D(#RJA*=KY~*&QUqpc?W-dgd!}S?XYNk>Z(tSdh{de@Z3l8JsRYSRhci;L1 zuoG9Q$wVIKWLnYnvEIFZJe1E+ixFU`h}5&*GRLyc6Z!d=OSZmM8iRfXmh%!LZuj|vCl z$+>tkMK(~h8aL)#E6Lwd_8kpLTT})T#@8>C%KFUB_sE@0x!ZljVr@Q1ndl|srMXQ! z{kdlxxu2*VJo`vlla&~(kZd_XRc$3f9N;a)QoAYFcpuj#e2&io@AkYNv!y!nvM1pDQ=@mG6t*JzhM22}#IC zQHMlT&YSdxYuiGKh}~z`9HVD~X%$xwsLqd$rPf1^E4|htIS~n;kMj$5#4MM0_M2!K z;dLE(F2zBcAc#N=D=IY~0v8mSYL+);rRWZbmkR8cx3WKOQ>tOO&3?#B8pYg&~>pU-x#(!gD_sizp+O}I-Hbq;?v#G&B{25N_!vqu}!65{@h z7&qKx`ONxi|F}Z@)Nq6WI3z%@9La7eUHBaM+DP5NepJ-58ma(pe&gY3F1A>sFi-JG-bv4lb% zBb8c2Adk09i$-8WC>If@<{4=DT?s5rUkYmK?5@paw;KNq*)RBUi{8{q&A3Z2gg=^l zThHyHXkt%L;28sarTcJ7eb8{*xzg+%P2rX{@q~mG% zIcNac$@xn=-dJUpeam^qHbT9R>Q3vbHBLGlXW7bUIq5LtRa?kpFZH6OhRTcFAvK)4 zO7V4^u{euYdinV`r19eIPRGR$eLA;70k+s?1>+gRP09P-zXjMo0_m1*GwK*IGmn6+ z*YnIgjh<@_W?3HO~$V>RuM;oO@XF7%rR)mxCui3co5_HZ>u>(Q>FN zlW3`lulLhEz{fu&%C)?yCARIj$p#QEsk2+|;BaLS3l-5PoSNT7m4ye4e{I&}kj>9k zA-yv4B8!jJkx~)yQrz}e(`pOkW}nbWGG%0h{K%P!aV_W3%lbBROPwLWM=@-|xn`qr>YggwMI0eH1>DDbu>fp}#m%ZsJ%#nPbu8qLGUeCbA z8{O(M)iWvaI__q6Ee`DL(jP+KcwX+sN7~RF3x{bYEOs~B6oV1rh+zUA%UV15u6eb z(At`e%+J)77ffD%RD4XTPBAWb+31W5v(OtDuau#4Bb-HGWHK>1cwj2mL2A3zHCdk}!W{xTbdMt7d!CDB;9{LZ(uvwg zM{eI3t8bRY(AN7l=!!au=%V}CZ_(_-r3(-@zZzKBC_aTGn4*Vn?s?7m{o1Q0Q|z$x zilHHIKStol!<01Xt~-NemfvDosXGri#DX*jIl4L;cQha4#wJji~;A}$|GRY$>P z0wNKieVsk_!7eUbHDS73x9xKX1Q9bsvAZKx`X2G2XAmLv)=rKfUk|tG=6I)ElS3<_ zT_)Gy6{r65#^+nn&zw5?n$ELV)r(d>i!5owRSUYY)}1*Er$S)>dte>`cJ$+fOpPI& z=V3uTo360K%Xe-4=|YoVnhm4)19J#DuQh|Oajs>RNr;Y~Qzu4WNr#LXioIxqTGEoP zgaQN~*OpMfO{o#RG%XNt#nvt^{Ge>2vX9ECWm3m`4|g9u4mqYPoQY7Dr9RSMOUt@I zrRk!{y_(R1MJXQxpy)4q>G8~D-J8j39YQmcAyfyi?*l;$KQVTom9VA!G)?AsKGxFC zx2pbu6bw17&X>$#dV-JMTh&`X3!ng?aTbmzYZnyyB>bX%FCIX&6hY|oqigB?xZ@UO zX>6gKX42{`MT-IC5LZLk2!G|+)CX6EljOJfWQc4ZNRF!LYPMw?iHa@~J1dBs_J)jU zNDK5?xUZ7Z43+OI@I`?H(~xaxkfMWba?7{)Gqm10&6hVPbvJFF56D#Wcn4}YE>~Z8 z6?d5}IAzQON+|ONHS{%stN#^cw=~TF8}8 zEzNcePL={!Y0C;X;@o|VZk>kN*r~i325JGg4cD4!p=`9Z5^ZC%&C}9+pX_&UIb7!rj0wda z!x+l%7whZ<4;orI#$Phey@lNDk<24iYDHRo1qQ}Xz!o0@UwSr}Ug#!k>@9^{buZ1G zlbE&y<%_+J@;(nLfFLm1rVvICD~%N==Dq{ji$CNvQUXeXByk|uD=*T0?({%Fa?bq( zv8}A^sTi8YS4*0vw^i$U|icGd!#b4shBgx2-y`ED z$aOrA7gLw)LroFVh8$m zkvdn%3J^5e+7jJn49;6^XUh6^?5L79`@A5K7e-RWe2k=GsHaIHw{S$Q*=W*Z>J+0qM4JU{H{ za#NCjJ0G63?CbA~M(4f8B1g)1INIPP$;H*kY5ACU#gn;Cq*V!2;a_QgzTN!rm*@8% zkz`REZTL=fheQ;P`@3Y-Y#oXa@1~nshA~Z-vS2*xyjj}DR=3u)YrD^v!MA@H1l^!X!pjcfUZfaF&@6a-%vAkdf`48vA^L zc2EgnYvn1iJc8Jl3d)prUS#r*ZegD^VG0#2p3`DYIj;P3$o$LFrv z-l(j|;%JlvB)+~uP0U%k$4q#%GEGlZ!V08F?0v+WISSk;4+sBhW79kLiR@K|auQa` z|CBA?`9`#YK}smsf=j#lFlm}3mGcc!2in-AD^~8AB0c)>+RO{~k}_Qx{$Asq92Qw% zvRfK@FeS2a6a@VAyI!Z3cY#`fP^zCFK9&(vSV-^dH!C{X$NCdD+Js(ph@W!%Z%=t} zPLIZy_1(>z*g6Ex?*i6Te`k3g_5b2_Cx z1ekTuS|10^ax||3Z->*yv>kVcVDDJp4Qon>x{COQN|fd_hoKJ!z3NFSP<(*HiKJE% zcU_$)BUpQ%`AtS}fqS)=-K%TIvgvDlBId2)>#aO{xn83SpG_CkwkU@Zr@9A7X($#q z6v|qzXM5q~7vrXSNJdKY5r&SB=N5@vWk`HUwJi~HiqG!k~C<0UMV0+hYxPN3z(0Yeb+IIPNQjEjE zsiN=-SI@jv2n&m|u(1VRE(j|%ur$M$)P1Df?3!YGfmEDliwe`nfl=cf&sT8Nxb#VK z1bf&g7j?JM%-tg1hRAjBB(EwcKcb+|NRNUNwPh<@Pzk-b?GO*)jE_=>%3BxcP~qII zf2?A=uVjY)I(5f(Yi7kU4QsyxqqeI%n%xuTQOMHhD!_%N!7U&2j5r8t6u!Z@BKfEe z3zI8SWT?~RJDx4qwBxgn7qZ1U*?&irlib}cLX$U$$ZX#ki4ZNODdc@ zhg~&NcRX*sjTIDT!OoG`sv#p~^7muNdd+5p|2PtGLYcfY4LULT%i32k^tT62M*6z) zbSWnF^c<&1z`f^8ZvWtnhKK@F!byYT5=0VtH5lS$!opnQ94A0}2_Hrqc78kw6pO9K z@I*lt7Jtg8-QIw3D5Q?n8)h%&Ap^VSPsppl)`b`He`VC075qw5rHt>Dos~)aTczdZn;49a8n$EzL`Q8(%!bd^ffMzjASRU?i-^X9_UFO5AyH~{F)Dd z3>s$R#^PM(oxrm#;crrKCxCCEz>Nb-1X)Vjqp;x?GbL_fANfnw8WWFfX|J~0Ryw|i zU>lmP4g5q2nkOz{#92X9-Pxkgf4+b+6&v(s2T=aRf<6;n!%~%XlV>;8bz(yLt_A8= zR`XTzjou+DrNu=B_HFJx8KIxs0!64qV_icwPEhj(QLnx>EItf6F^u(6LhXP#fMN|i z19dG1GExc=@2yAyc_6%Ka$_3VTY|@xJqvWP8T}{pT_LBNi@jbq{DonszCdpTKOZMx z7lnRZQH6^$zsh2!i^>&EL{CEd*uunQvkHW^UF#&*cx}1I%E^4Dq{4B1@qCo7uuh5f zOLH*6W}*wU_G6|Pzaw6lD`~j*cQE^BSGUd`{iU^oAEBax7CXl2F1l-KE-P84tXbG| zd%bu4;pWg>rD^wzk?pQD-5#X+yhFNh(e5f9DAye2#ajIgWKVfX&MyqkPV z14|@pm5k*3X2RHAEthy&uC^(0I@%8Syee)3NM*ZHJe(*1dMgY#<~UM(!Vj*LU$dsb z85PNx(@3<^~nw}-c_ zi33K|Xm>U&`~A(Jmu@RMUvqPU_^}h@E`Fy+c^vwSPfSGk<$1^_=LruigN9~4wg1_D zRzHIQSW|~3VE{ZifD3;(N6PwoR|;?1h~vGNd)H=;60j-d8jPNr8Te`9z!gnJK>;N7 zuGy3Qo4g88#2FddwB0n_QVB=poPAFEBhbK4C-@q^|Ck~i$`g^+4kCGG|KnrL7YQ8P zrHXE`($_Z1rWF>k!dZC2CBB$8nTC&v>dz2of|gf>HtV6Nj*cV zCjIY?Whz2~=vTKtlhOQy>`mYcrQ%wIJ26pHBMUYJ8~~`DI?bR&W|?r>32e{v;D@;} z0~tm+RIVu4$mZs)vX=DhZEViE6y0fd&#*Wp`3Is2rq0jnPLzPty6?mTM+a1Ho_48{`jP0^$ddlEbJS-V-Sx+3aS~ zM73z6s|^3~DidWqBaIKiK{PB-OI&kK{p47cVofAmaEBT}hl$Ocbl4rsexJ6lyP^o6 z%$V)co*}b9<24H-sI1|l%4>i&xtK#8^z2u!Kq0AqWgabd6c1#P>n(ixVEv6BB{C$p zEq=8J7H489U9r$oP`GcHOoM|iar4802b5vw+rlqs5vqN7jpJ;3eP6y<7Vut|zPUm~ zjqbnvII5iTbGiffVrUz3h$?|j@avqWH1buX0vn5`>K_D@oWg+NI55@Zg;8f`WiV?Z z@SAteI9<&2^qz?`OC*WM2u??di=JSqN|~IkATC>#<&%;Is!aZ(3QB#7#{eGN9sA~q5OvXBNsmib_JOi^5V{4VF4@*WfC zgGx(Li&Onoc^b5C9y~xm;A|tHzjYnyw75z$8KZ^*o=T-$ZhN<}QL*)Cmk0Ln50H9L zu+&QlxmH!ayX93o@x`#pD!DV>^UznPkF)6sG%ul(kU_|wc=^o%L77-9-1qbw2t21v zcMRc;FYrRdL$2Y@+^HUTUzn?OXjDk@arncfk3>@CRHVZE+X#lCXqU;{J2^NBXX&P7 zbHv!B0>Y5#37$&bKGH>zklcsLFFZ8s8BVFL{Joe07aVIWyjvu5E>*MV7<5U{*MNM^ z9X76QxiH5d#rLmtt}})H@~-(=SD-mFngoiDJqN46xpY2f(&<2Rx1AZGoVWH+)6EmA zUkG?=df6<}v)Dr#)Q*}Q9QjXl33=gaJ6~aJbg$AI#h+F#yUV+(=Pw+93xIT(5L@=m zI9xR}ZX+yL&}T!WH$teZQ7D7#Jcr~lf5y#}N4g`pF3f4J zq*7~5Yy!qR+hKPVa%=%CvalIIgP7&y(RAIo&W1VEeh;DyUca zORQdV0j9KmF-=_CQZ@HRf7ueexzX#Hb`Bk#{B@ou5te2dBA}6*x{2^HkiZ$kMJbX` zcU}F7tYFw9=>puY4$5q5UW?V(NDlAu0YRo>WK5p1!PpY#a^1PUzfQ+xt$ZcMVRw*p zMODm@a0)28e_yt~ym*!rG8YpTPVYXbVKL2)wS%*_EFJ5-o1Ti{E zhjy<>h}OCL%sp;#rcsMXmMiBk9cNIGV6{t ziBjmy?x@c4`X)HLL%!5h<=0!iy_X6s zoFuvoN?9s&zbm=a`owx%yPZ0}-Gj88us7X;om(pk_n29eQNRX}Ckd4t#e3A>bgT!4 zB43WH!@FN_Yb<@ylx%K2nE2Se>eT!JSFubtUPGVAT4H~<;_4368JP_JQv&epZF?p`!LSOX4P%U?%bJF=Y zX#8oeLVY?3BVRO*Jr@xv@8tDrq>-5dz9wd{3EEM=*xq_FdZE_tZ4ge&i}ZRXw6kqX z2|rclbA()k(f&^(Ap>nSaUZ0^NLJ1;0nt^m`-oY*edclftSNRmXzb%?FJ+GTh2wm4 zY3JjX%C@SOx@sK-Kk$6AE&$F5oR6~@>Cd^C_ddZ$C8Btpt(Taovk&FJJT`dWrwjcW z_#)r@jdri`LC!al913_zZVLBAWv(k2#wjVlre<&O?7$h~oqKR}u!lPr8c0;(H2f67 zikM%PE?4N!lPP5*a(x~bP; z4ijY0RTuW{`q)oCOmE>Ogowi4fk*pPcORr~8m+cg>6%c<;bXPuY#HWmupQv5oz#@n zG+)9_Zdz}xa@e*kE$BRX9ns20!|qA~6kpad&3H?#J_@u|&9)6bhg`U~SEJG)jmQ8w$5VtW$O%Hm!cpUQk|fZ=Ei zawjJtv+lEXb~W>6Md<`P-|2Bb6PCA>n45O3Mn-AL?Cdqf3b8BO4KywSUvN^1Iwqa2 zZfN>R@-=%z3mUu4bvfIF*QXHx+CS!rP~}2ZHa`3nbzMjq+5Ywu{X9OPEj2zKaU6si zkeGW?>#*>~)`?D^TPBHcnm_&vjNQ=}Ci8eP=IGS(k)q%%qyFi6>@fKa(i(vzqUS2B)9hBgL}AA`eh||$ zFh_2L>m;)F`AFf-7t}=#eif;ADl{0yJmXlIg)Y(D-YO*7V_eX}(#kSd>hODaZ>zJR3bNn!}0;x>@t z5ZsylBBk|CPkemj1+D;x0pDQajrUT<($DPewNxr84?& z-^SBEzsK2;c4vL(q3K~2S#j$<>3H&L-QJ+D11F(6SA8Fet;_i;rzqQ8kY7Y`7 z$chvgHDBMxtYQQ4*_iPSJ2-$Vb^lT=U8wHTzn?E%e|uE2_xiH%F{9qOLs<5eB#O^# z^vu53dK5Hsz#P4N^D#eb%4(>%{2i5$;5lb-=9|wLjMpIJRo`Rii*E1qQtV*7gPus!9ZoW z_`zQDJuf&_kiiHM?i26G{(LnH_mIJv@+ar{@q^r9)498!SrcrC4bUb1&SOubQIQ5~ zy9Q-$|HCb|(Byl<(uEms2q2z<(2wzedBs76dP|sM_kaZWrS`b=3+IV$<7#vMO|8bHCvut}lMOL3db?Rf+TKF;w+3*`C` z>U$}G{fn(uM0k$v16NMr6{0~!ah8+{(L(Y|wxd@auP&MUNCE%~|M@oSXQ4ay=W%>A z8NN{ip3h^9py({Qpaez4*}DZhPS%-N)|}{>pafv++OW4osu-4BQUil66Tv7Z#!s*g zyg@?+6f^$K@x7D$3AT3o#su$*#ryUFSWD|2xWWef*^N#I=?As%@xwmL; zIKf+a_{WZJ#H3?A=rk5drq8!|xN6ggE46TLA|q{mHm3lM3TQ_o@v4F&oMf^y$**gz zFV0OcyJ-Lf zy-%T;i&6b4*HLQ>y|T1F8se}X>G{hT?C%}DZOW?` zc+~=Zoet}-el>Xy8_Pzbo>P;p^p>nP623XF2G#ts0tP}Ive7mj=C(mH<&?fQ9hOU0 zgf-``P-<7zyy%SZ(k(zED2nW<+ol)6@B|*`1`@f&&F@}!qIvqHwZ@)q7@J%@dfKJ% zpyiV1^x-GujAz_#ybpI(B0IZ@Rvputom$-e(bTK|tVdW;En6(stYCR2E|W9%c9p(+ zG-ZeQPELB|MZUg8AZ--088joTes=2&3auOCt_-x0LVAk7yw7jopSj`gi&=wf4dqe~ zZ+Dy}%_m6HLa)t!p4XzIdxY3{wxf#rg}33oC9_@{4qMBy4v|+S6PSY9pPXTxhVgGYoz#*s3+a{`mc%aFVyF7ebpazh*wib`M$X(3vb{ zD%u@iP-Ht>a{1$SK=31`izhw|R+%cBlEunBI~hSXgzT0Bd?sTSXZL$?lxGwVYf>1s zGh?a)4I(3M)~hdS9keY23PJREGEKRY+|>4fV9`w3v)vn%w%af9rS%s1V9@untBkCi_+*BEql}js>V57K) zq$RA;DRNMeT5qak_h&mA=IU9w&Jmg@3h@`jN2W-sWI9;?yv$a9mMUM^{v@vmbF1V@ zu`?ARM$NwJ-8E@V~ zs`+X|7WPTbV)7G4&kwn$-NDfne9LXWzBJ^Q0Q;-;@_j+WyVD(3THBe^XONqdjX&6e zGF2q^IE>wx#EHlDtKpmYc5i-6%VW=;j|KPoj-xGh8PM&Aj7~Xmp4D+ z1@-Hnnfxvz^99snf%W6YCz*7B@XvXMZU61!QSnAPj~z(^5c`{5s$2M9?i{1i%1BxG zxgX|#nQ{(!IxVox#%g>NXS>lsTkUj8kE_pao?c$8sJ{zVd^v}@QH(r!kc5&fhmRS8 zWXk;|F8)C%f}BPQg8yR4HN4IR7m6Y4_2T}f65^+HlR&r_fxw2>CF)pzMC`$Xr2J&8 z)AfrRHTtQK!##fu+z|Ge{m%pZ=dZs9#_y)*|9tuXN|5^)E0v4g(*Z>fAsoU(HL6+D zvb1ya+IOL5#7$|Qj+dbnhM*3&qXFV&3U?=eJ^$|jkXQW(Dro$u1XfZlVPTlwi+}Pzdj2mHwR?3CtGA`H&`ZP7L%7Zi zV@`!w@s!Hft+Pw-CAw*3K83yU1J|@Uc~q`~v!zETUy$z3#f?HH|Bzu>T;ez6E>~q` zJz4at;q?#iCP-1jPIZJTkL#%|7Y#DR7Qf-5+JN}RBVcTF*1wCVqq&}2U8l>}`_B|S z$VTF+@nuPzXqDvjeK{Epb}Iyb?Nh@$GaV9VOWO7__*zBi7_}PdV=h`6>({ndgz6sP z;m6^v$1A}~*E&Ag8=l6Sfwk^p)UZPlI#iB9S z2Yhu$x()hvukes;0HOt1fip~rA-!xO4?TJOaMJ^oX9p_mM9$}00D7oPy}|^#3V{#2 zYt6CpD)0ymzwmaXe>yFX?_c9S!`VbKNf9Y*4_#?F_{vPAlUMGs7-I)|O3KFvmVUuD zK-oL4PanO1!(!lUJIl#0GYg`M?LW(T^*ks}^xJ#7Y4{UWY|_kXBzMc~`BSdOO;D2+ zqDfkPGB<6HQ5!`Rb2%1Sjou7%!}PqommkiXshj^vd^u>+%mSET&AjSme(GpeJEuu{ z_M5^*EWeL%P>fd@0h9hSM*k~RB=7;fe%_wc$-uITE1kRw(*s12kXde}nb8cfZBwNm z{|`9|5>j#hgIn#y(fELCIVU=8?T#n0l-0mbg__BrzVbLdpp|Si?WcJvg|gHv*Tz7c z|KphU_Gt$;_o- z^M(+k3WG?HuZ(v%Ca6>JEF;CqLnd7)9u2R2NnyH0c6cW#pU3*h2Jy$4`8~X(`oB>B zNHTG=T{v!+vjs7R%#!>h*D7gc)Xu5PaVawyq)a!x-XApF;Z2cilkQ|D6O6=-YUMVk z_VNk1JmTYxWz*OOo3n2ogEAVWS`-uwBxyN_hqh}z>q9?#kUsX!p$M_NW_*0N<1pvx zIUfK!p?aM@V#vO}4fTu%AN=sJ+*oQGQKB{Rh?d9!nkH{w)uu4cad@Jp`ndPak)uTt zZK}eQh=0s#X#wKFc}nzF)mGe?(HL66fV7a>f-Gd^oJK)rPp)_w+cAqtV8N7j=CUGmh;grY4pgMN8GtHiJolsn%}O3c1&pT8j~E7?+^4L;Qy>D zRz2jR;*X_E_;BfyGakpw!i5Q6OqlULI(Z@rV-?TPPXEC4(kYqpFTMt*)-&4t6mK62 z$^j{Ed6|9Ma~aLPddaaxem+|o+YE4_`FJuZ!{8pRHqK$T=C~<)Ca>Gu*O=kt3RrYZ zWh0TU;v2M=Fn0hqyy9w=XgcEAR)mlrUbjF8_CPExG`FUxN&&6Fs{SKrxEPJ!~K7I?)Hue2ISqyfoR(SxvgbobEI`>>|5oHAODJue0leU^Wu=6ZZCjX>Ffh>2Z=E zQj3Bgvdu2aQ&C*)=z z%L7YZ>2R5auh3&sK3|%3+j+C|ktwq#WNk5~=MWXdho^lS!T+LA|X5 zex`IPXYivqfNJ>5r}j3$g_%C`U10Q@NLx#XUDW@A3-$o3VaHY*D>)9a{^7@-dMK|# zUY=nbful1~-gx)p*B-(Sj?u8%kPa@u>BIT0gSJ0$7DV`v%b^LLsh=~*zb@_hb!p#2 zT{macnz<*FJKT*h{z)9nw#ElbzTmxQ#MNz9J!qea|Dni8rcSn0T&>?vE3IB)q7Ns& z%-#+TP819FreELJ#hobhBWgxhrEgNxGjeTbwq4CVKtWIiTkR96@m+V>bi<6y>IfZv z{?DNzlI`Ei!4Z#nRG0`EK2cHEe!U+EyPU`_PT8S$P-K#FX9y9m1ftmF z-)w5D&9S+@zM(w&0-SA;&}Vb_5S!T|G}8~mRX2U5EL_FiJ$wSC=pLZbLUqrQl zB9&KqBqx5y0!$50l%_ z1njbKc;=7X#PN7REKf_A3v(4wnc}Xhz1)pn>a{hW-noLdT01`8lb)6(-8LB^!Y*Z^ z=YXZ(4|6?*sQmaYrd?Ha>zOW~;KtC0&QfgCvJq;s)Qp6T{iC?O%oamv8Z<{pYsej6 zFMlX+tn;_dhZAs`(u#KWTT(J#XTH+q(D>_9){U*)AXfTZXmkP6pxd_qn9N#kqwFO2 zEQ^b8qu(;Vvkx7xwARcxdHgFi3KSJJ8V>9QhO*guo`@;zSVB+ksR~I?+8)nu;r2{BJW`rKd$()KRa3Xh1-pzO zl2mz&Bl9esrZ~dze}X~YH)P|GB(Jl&Ld*J#^kUgxrIa1o+~1ZB`-o(XBW6~zhEgiE zWa89;Nsn{#Un-5u%ubEf-m+!y?Ia6lXQPAhDk=6A1b%YMGp6)%B}@hv-%4Cd7iZOv zZZ!hzt>3juKLzvQvrkMuc|_^Qm0VgD6lXqhZ)vv6HjaM`nF!J<^U}e1MW#pH)tbKW zPjkl$A{d%YbgJue48?}Zn7&+6;yfNs7iV~tGD;tKF_d^rZT4#y%rZ*k6g<3XrGN%}NS0po>VO>WIetiSf0|=hKN1QPCfPZ@O*&=TMc6o3W9(8a^;DVC6PL1wxe7 zm%8og$0`g~*l#afPVTx@u-VRFofb}dcgVAx`<01f1;q~MY#uj+$mZfQOJiC;wi;J# zlQqq;2pan?r%l+APYR|Yu&x+&9X^{6pZLX^;f5q(MWE1dUIJ&rPdby5H7`)%AKk$r|APi z(ZZK1#$6$yFC7+J6Ng^VmJvURizv*jY8%3z6foA={#Pgp4&h4YQt{XxYmaXHR%yo@ zL#GgeBl-_{^LMe}zy?6EEs^t0?51xyI>o>N$y6golSQwth3h%ap>LLg?*1gyfTqw` z$&(zXFxuZNa*p`BOhCQJSUW5Jlao&i8|J45YJT=A8Rk>3h)zcT;$24GYfcviCFIPg@L- zUmB~ZUxErWyF2wEZ31Rhl@rFFNEr^J1&t(Blwke?R!@@cIs&r>IeIzyz?<03)Ll#s zB*M<>=M;SD^zztB8~?uFq!%W;R~rhL0c?>mg#e(J4pMYd>U(Rwg3_Y@WA zCziM96C=3COU=#UN}aA!d9GpoiSkrQ2Q%%S;XSJx$9ed-Sj{>pf;w>6Dd~R;s}&{? z4S_JdJX}I9EZVkS`k$X|&OQyoz&pG0uUPa_2LFm~6~8R?g<4m~49I0gY9-Wa8!!oj>>@TJXa%uO}v$0!FyPy%5klV_7> zikIPxb6(M!UkmT1D6#vtf=##7Y+w*7%P1gAbeV}3Yn*cPK`d(l&x&=M6_rH+IaL=j zp)Wn9iH5qX4wFhfh)pjQPJTASr}eZ0PGl<6ATHaPYlZKl#>%WB=6&% z*wx&!6GWvy^Y~6jjdboP&RhvOJ$|2cX{$--i8{aG`M`{S&7>mKYz;_68o(H3e?*Nw zaUF1m%I5$JCsOC%5E`JNc6>2mxYr=O|No=$!t#82));U+PB>YUo0(ahYN+HComDVu zTjK>ZVY(sgSYk6G+RyQrK|o_r@cl1dxOAiKOzfXs$>TXB)7GmtN-h_DbTp7Q#%xE4 z>T&TA(Z044n^r1Xk`$LulCg1VJ%mdA+y-;7ObxZ}>$Y`3qeY^_t(GSc$Z$tckUf-Y ztzyMCp~<32c>YW=9aF1hN?T{@)CJHUTIQ>el_hX*=eXOw9HtZQw{>U3KJy_Qx7@d0 z>c?p!rGE4H&pTDG%D_*k@N2)tFVFOP(oVI=@H~2F#YYK)C6{fUDv6+iD~Nn-bJa0& z-94TVw-HB|x;ONurb!IzFCr5y8zBFa{00=J|J4~$j$5dxNxP17EqtMuPZ+R|T6->L z@@>#u;@!3fi1|It#h>=U{!X8tfKsB%y#%eS;yb&SR9%^L?O`;fQ5e9!hQ;+q|Qy*%nr<(Y zXajom$KKyLIMPin9_TdTw5;JQ^=^s5HI6F4j!f8m;D*U(aWbJqvdzm%<5@HMKxfqx zQw`qvdJMVLWtIFP>T6FcmCkR~5IBUNd1PIbFO9>Xqm~}t>Qc|m2-3NV!xjDX-xT(b zGapq6$?%x_j*cc)<4cX;oC)&zBlGdL$Oc5_kMd8X4L>lU(vs?o0e4L00r zoV>%?&D7q#q_`mj3?@WAykR^EZ$vv zjw!VmCizXQr)+=El?WE-nyzYKZuoQjh9IhDq+KmXvudWNXZu`nl3lP1u#y0SdLoBY zDU9N9Ek&*)!KoGYpl>4Q%v4gequ^0&+`p&k{!=nO&b+WJ7vyE*Vbxmw!uk|3_&6&J z>f1mNoA9BdKWF_~$so)dweMfG=*sFK|0pOvM$EPJoxorWGm=K>jRsjh|Gtvh=+CdO z`(70tXUH=q`>LlxpB$@{)-$0Bm~KXGD+z+h(nyw3gQGtMmir=upD(M(2YCm2k`Sqm z0siuM=)%Fz_i`^o2Q`v>p8Q0DW5j-vlO1Y)BaXf%7~?bz(+IJ~M)8kyE996f=NE?g z(6$n_>X`~yNz3vQPiS@pJ4d-aO!M-aASzf1c`?8MT9FVwP!4nQuG~G2unMb=^PWyk zu*AP;BBO_NWWZ?)g(^aI@(OX7r+#nJdZQnVyuR{pyRB~D{2;W&+O$H`Ca3QFPXha2 zTLtyH^B-K-pGLS>&&_c}>auavv0C#o>y-AhmhqktHwfDY+$VkeMF`hJj_->=rnq_6 z_{p`1wYn`?&9c~PYi3iUlDoO8@_zgVUoR)j`_x(D9KxE)hzLi{R0XqDrDDrZDpO*f zg$oF0(Mrp#1VpkV2#ZyixcuTB+Jbh7#Mf{9=~KISH}s~BG2xw-ZDilKI6IE)_^s)_ zTQ;MPQ<&?C4T#Q_@G-hNruwyXkY#-4Xq>{Un20ID;Xj$<2Zz~fb#Iv1GbgHwv-NvX zv7OYBGN4f-!e_#6J5>>963TU-qp=j6M7mniS63FE$K5;$3(lcZs%kQ>W0}?XwrHec z(ztY(HOV4xcLfNyKDqJg5#j2+4PXueCPG9KRCau-blxmiGKt$GO8_`yH)e_lcC>7KSoVfmZp zv6{6YHt)AxTpop=^Xk%YLOP@;;%tj>5EoEj`1;JD#sQ#ejD1hXA92kd}8!n8k1(@K<)F ztXB7R|9g_?CHj|-{Id@M@a)Itx2;z*n5~=@?2Fvr1dXj<;Abb?pM`Y4d4I=0PfDtN zBEeE+Qy6ax;9BJS5ztvGA}I{`?3sKvf?Nh@=O4YrUMmeEQoom z2moI|jaC%n7Z>i;?!1iRt#kW(+YW@B8P6Iqff&qxJOYE?4KcKOVKV6tZ&APLwE0nA;aC>f+&DOS71j)^Gi;3g#^oO@9M! z9Nfk!Pez@QPATN9o>7VTm4h$G+3mZT&<4NhG7nf*1i1ekK#;1GVp2vX{8;E_#?~`6 z3ny4g3^^`Q{sFDSFy2^OhIA9UIO+7I&C?MD#cB%rHvqW3Tt4WR-iwOxc+{*BBq2Q+ z?9m&)JFX}5fQ;Td@cl=YJi$l{M+4DN@2s|bFkMC)$GkAWu$Sal*9~} z<#-cKg!91(c}PP&&JWRtpU%I zK-Tj(-5(%v7|QRAF14NJ6@y4yFC7dZG>y;GuMy@nS8YAKwu5P&i>DJB(N#El{s;$! zTImLpL)1((n}fq%<(TE>-t|0`fP~s_FXm!3`7pl8W?V}mQ%J;~in_wXqx#>-(U0Db z0n3$^o@LW+I(^f;Tfi1-VO5G7Kwm%y#xH+E!?oIE8W@$_6~7F_NF+?yOtl) zpvi7w1rcCJrkWHx@w>Y2Pd|;{?jE#k{&XGYZEcPoEK#~#;M6Gy7M>kGT;N&nj~2aX zOkmYf$Qi@)`;}#KyCYtuXg%%Y8GssFThCCJ_}Z#K(h+1y;DaW)-A zAa^a3@e`k5+@ByneGvS)(O;-#=WRNi4owdbHmCg^BK`Nz8!I3*H9MQz<8)suu1urq zr`wHDO$R(fH7O5!CelQZ`kt@)U_0?R>nv zz8M=L6_+*8!-gAC?qu`^?6CJeco5aeCxXs{Tyt|GjhfBROX{lh;vD)nf*#&1{m(K0 z28>JFZk`jfOs>g_`<*&eOjK>7M~XOW9)HRhG*IAoV9uo1Ib;%bwH;a2`(u1)9Tw)j zEWml&y9*~B&mN2g9sUR*HC{L+FnIEcAoQEHk5TDuG}@#5TwRbzeaB6UlE3W7F+(kW z)Add`k*)f26ln2QTpY!LNX_+3KXeeKH&rj8Wo$L`mRpdq`C`9o1ouAoyzeIwFiLF6 zu8xon>959l%AF*+d2z5DTCl*~#sL?&Z1(6$yBuMz@II|&<(^1Yu#F5R4KBWF|69ZG z`vMM_0B5?aCcpg?tr)qRhQ_@v`fF!oK?x!TLC2$tYtRhDgf5#O?=K;1{47hANw?qC zSsC30)-}#FMbgc=T=Dwt`A zWK5wBx$Qa(nA?nsEZlJwrZia^clqVu@5lkW97+SNpL!?AYwgGS^y^4uL`0HpR~pzq zOw%MIw?4EHTAXq7+D(IJi}PLE`zu%YTR%wkui8w69e$IN#S-<}a(L{DFeT5XY@Giy z@Qtsmouzb*c2QB0owaR4hi~psDXkejC+Ky-4)o*6mLx#d*0NR;R`+|KTesrwrT8kU?0Kkr;f+q~E# z-`+J%{+8wdL{UBo>5MC`LSO5e3=j^Bvc5|B^bu*kzeB_s!C&qkxM&W_}P`TBI^e8qB33 z)L70UG{Kf{Xl&TH_{|`9h}%1@lkOoEd(Y+cTQ`)Y+p8~Y-6W0p3ySJv*Iof zbsS<1A9(C@*Ea6h$hS=XN_}Q04NsN8rs}Nvxze7ZVU0^jef46J!Al*R)Xv*Z|B}c< zkSqn-bDr^RCK-Gw7FhIDK4qPY;}g?9Yu{Y0zvg_b^*%50 z%&&Y2?dNZJ!7tOnQ)AqEl53DZ0_er?^aS4nqx!%?MT#i?g?mC|< z%jyWKTdel*WUt@ZDSQf;vm^!a-Ej1VnlEgJQB@uNZe6Sp zE$7NC)l?wviAl9aO9NA*W-;+4ySmF7L&3X&aX0>oSJzGG98f8uBwyXOhE8-L4Xh&2 z+UzvA?cdKfs&$MyJEuyca{Zl-?EV|MuW0t* zONxBZ86%|5VLZ&wG&HQwjiSq>wP-oZa{{ut9M=lT2zuMk@4!Aq8L#Pek(}7kQ5>p` z;2b%T&@g99Rb|ORE~wHLf1hNw;FjYevpOA4nPq=8)3rkHlI$nFF1$Rv$5w@JOHm_K zWcQLbhx3=h6FwySjJiEX-Y3C{VvfR9l}XTqoK3za%PJy#AjggMwGMiHe~HmaT@tm^ zSnBhJR_BSr1Xhh6ysp@6|KMRXmEGd7mDT=iWYfr)i)nvCK}Eo-?_y70=~_HX&0?xS zt;^st5X*8l^p^j|rJprn^a0-Iz&AaiSp_0%LlBf_vflu`Le6+HD~nyNp*uRcwfgyU zFim2q;b0z_NZsY6-TjV})~s%ccD|;5*6Y0DmF+U=Zs(H4Y9UsTEc#8ox>k!%q*vdo zjE$fTAkjeYjA_6)U#@BB8MW;Wj`?+Y|5{j$KtO)EZ9=(J23v1G2UDSu=Rw;zG%7k* zj~G#!DOi% z{RX9qygE--cO}^`5+bFFor1Bsw<859@*%R&tnSYl%^{!~**)`H_oa-P#eYW zltBZ+^o;ekyEWCg3mnL-D%X$W#hZy^dp?&Kpp`5&xtOnOrKXQKH%W7s|A9S6 z;9cF`3c+1V#3N~7S7213ZoaK;EKoHv>ftUt*xAoP=wLzAUn)ZfSBFJiO_wM!?Km3m za@UbdOlb1f#8O95pS2@6jnb8Ah+@W%opwA@4)O*42Aq_zFqSC?U^&LIW8jq|q%u_h z?UO!wJGF$Q%sgH{xL>p!iCmgzfGXVIN!syq4Bzj0TBTsJ6X^MLZIr}Rmu)v$mM@6{ zB7>gv^PA6(I`%6AFvpTyD&2T>3Zdxz`sPQBgN8=&D+? zh1o}_$8B_@cUuFp>hf*`T2b{qyX2lhE16>h_)%@=`zAGoYpSon#dBgaOb$VTS3^=?-qQqc?7Z5ZB}+s@MqbaWJ1YV12b zQ{Fok9?oo!Hb-%r!*cdx%RAN#ysjrgDV>@Uuo4m`?fGq1^>WQE6!S_QE(7|$5pLU1 zU~gOo#aBcSpQaL_7>AL-1R3K}X;sqtzER6sP_9xcSvS z$49lqthJb-x&HZ17T?)f8^1}&URPBIXp9_!&Slt)?8F<(OcDE zA{9EiOggru{`aj%%H7p+i3e7#J;@q|S(C7JtjR=>7;47}a0;g!X|As)i0oA9=WW?~ z56X&l6Dq-x&uwJ|Nmra>`_i*m-{ zWAc*5YhcN0sG+2`Pe4uk3tSC7H&tr|SrDfNe{z3Nri;<5ij9nfl(pV8U_uZ z>~l0VtLR34+AI=BzrJ&+K55G#iKIRG{CO>#Uk_s9#6|Y~+ML_6Dq0oLRfsqv{L6&)V`0I}%m?fvl?=d*&>j2%;#kdFX>p;42S z7FArI8N0H%CA~+TH#s{u(Yx`SKIQS}7->#7X5+|zC14!k-c+{gRr@q8wXT^`8s)B% z$9V?^7g;?++)4fWo|E!9v2R|S^(#2U73ZpVrBpq<)4j2hD`?4`k_s{pxd~Hne>BR= zi{Mg`928J)VT!+B_Fu}pFbnCqJ1P>lOlCN+@V$^`iBmJ20amvZZcifsr=0G!76+~mjji*LUe#dE_W$#ZmM;$%% z^bD3R-;cn7L`45V_n8?Xx0_kW-DTDA?Rt%<`D4-q)-^n_qftJ)mzW_lsW(^f`z^QW zs(}i>AqPsiW39&=M)n|&?ES50#~mw{h&s_LQ<7~?_tjTG=qf+a>E3PE@ZQ5)KRKZ2 zp6BWgS7~sHuoim{BU|K%yDe*4j*IRs3%2*e*CDfBDkC$h6)Ql(ZCj@EJILJDdTF-f zLls_sYGjKzWR8yjd*Za8l7HzAlcl)f;I^4mC8#sYJYbBc34MRZOm<{)UOK!^B>ibR zyvIcJ=0YQQer*5pmg+Xyq+a3)AJnnsGwBf3G&>HZfo7G}ZD~lpYVBU3D@Ho*)l0eB zrBw>@E#8d;hM$>iV{esg2Ey0A$LHW))?guYjBbq6t@V95sHbnmiT*rZ2Uz?(+jU%F zd^^XhU+sC2_;S{h6D+TG$GVD8xomX})7OyJVaN@oM4qICo>zc7J1kx^}xXGW1%=vQVnyh@oEB4Si#92%KgvtNK-JU8G$4#qEYp(>DVx|AihpjONv~(A8nF zL3K$m27N9DjsK6`0h^XDpSt<#mgto~hhl?Ef=lg%V~nxyE}FMM;TwV1_;C|-=odFwKL{&Z2?`B}{m1nJbbMSYiVJ35>_pM8tp}D{?zLQW{6v;{P*B`R>%q{(tt!QtFOu2^P zbZ42yU7JXTzUc!yvuX!Uzsos^%)XbRQlMxN6k{UhS&J7fkld2UHdF3~*jK2Vuh_W8 zChQ;FI)lN{g!nFDgn`BUyhIoWeC3*T2r{5 zqZ5kcdXT42xZ7!@+bo|E_NvCQQA^~Rl?viGaHv;zF#gqK@gg&u6Nn0?QENMid(4{1 zzR>@$ur#-`L&9C#!`Z>&6}WZS^;a?tb|`~T;~{6e^)y^ZpD{FAo~3u__35W^Aw35j zN}Q%&&G!Y-P45Vv!jzw zrVb(O0m@-qc+|%m|!(JP76!lAY`uFBFR zG&&j3V2}TVYO3%614=cL3Z4@4KY=j}BuV7F496#xXcl9y?V~vRsou=bD#}7G?;WM- zIa8<8Y&lCc|3U}KQlkbnRBlo27}WZ+RAF4Z&VmCvI48oXi?CsA@-Z?r0weclTSh=vVPU@0-Tee2^!jfXW= z=C~1ZI)j2an@;_1>PMN3STtBBV@5^~-EE#)iHViqAK>CuQ=S6yLXN`iMqXhK=Mfr2 z;Fem`uT$Ywr&sR|B{QPjh4@kwyfgLtkFSjm(PXJ; z{Uu(<$%&^w{a;Cvh)s3=|Wx`>lnIW^>m%@XVppF;k7Hj1=`8CCpU)A=N#e9u%7=20#O^VRij$~uQJzwt|Ph`b&0rp`qPR7O; zj|J_nygomm8D!S+5H=tDDW5Q(RHEO^G4?v=7_F)TrEB0yw8R>B;82$2SLh(1e$pqc zbnyzb=v?Jmo-mm5=EVzOq@Y@y6inE)m}mUGFC~IEZ~V9le*Z#1;E)c_KQsG>rf$I1 zQJ^f%ZS#_NE)ptEEnDDzO$0Y7RWJKtqjTQPF7YDe4GWyhlJqh><*7&#=8y}x<$W7? zn|j=T@Ec{gA`#1eFif0(^x^qNX2mcesQuxw8_!lavDbPG>m*vm$fH;zMUpp>jWL3w zh;Qu)wq*Ms4zxjOSUIzrx_tAL$xzLLv6DW~f=7|71+NEpk~yVH#X9g8`x)L3uq!>` zb2wH5GtwLiY+Xj5ou81uE<=q-K7b=^lC+@AeWHnc4U-y`>?^5O=H+89P?F>#^vytzHG@hoJvGu5n48diH9U=mRDh zbrW$;gTeQIcF{NNq`Vv73F^+cGe*Ymg6u2Mas}TOopqj4J%Mvx^@l^RBr-ndE{J8d zW0DF-i|23z>uXuOQt1craC>e@H67QF;5=S^RaD?s5sCT8%F;aF*>87hKj@M9%j)1@ z07x%Y)*XLMW;caQQDl3hUXM=X^z-hUDhiT{dr1>ku*IO5&6uD>W*dcbR-u;_Dr>hG zG4#&UZ}`yjei&?gwZy5>&QH|$u2K;-w|MJ){Gm9dSoixoP#{5nsAIrzQkB?qT+E!S zPIG5_K_b1EZqSJ>^WnofMT*04y&7)*BdeK{BJYe<^n>G+>r{#5 zNyZtkFc(7OSz#gt#FqjK#*+=FfbH_10e)|eU*sep%37U~n=Nj0OSe^GHD}h_HK0La zV*8;-P3iuvw^}c#`HQN~=n>k*^|z&Ory_$`M*LM@yZjWT|QvSWD1Lmi7dAWwd&28?&54JJ^ zau!BgW+it4coW6EgBo&#YTRQkX5hD5NyDVT)Sj1^8i@t!h;12!iO+#q8x2C7H$}Im zVy+Yz84&F#EE%Z!h9gUqzma(2pqw&m;iJ5KKf`tfKv-sG{3^B|xUlnB^tfr%ECl3M zO`A**=``ibcD#Vp1D~tQ)&?>-C|wJ4g_B{FMnW5 zJ!o{>=?!nSNG3VzGSm0=8`BO{q{fc>)czV7*fOQ@pw*;Ql}NMnmqI_KnfY*SIyH}Z z5$7V~-rAzLN4m=MHdlgX(Tc@5nNFgF9#IiA+Os9b#7LvU(cD-o!I3wL+vvUy?tLwO z?~v(sKfkEM?5$tR!;QJZM{{>|;N-{m>%4NpVy)rrHH=f_yavK*R8i@7KAT#Jr6mI5 z%r9u(pri5K2j6#c|J-e{PdgRC#o)~64NY^@nvD;({WXq>@wuHDV=0}aUbvzIvC6Z7 zMM{{_STB*_=J8VpH|+7Rw6&9lofm+M>K|Qz0!?+(Hy=JkJT@uCJ$h5T>Hd}`*G1`^ z;J=J!^x#r@3O^L0?+`CpTknWv_?0P7@dy0^aS=gao3&2tkcWYSYcWlz)XToHo)o)% z4{?JliDP3smx7ne93{Y}sm5sPD)Uliw!)_*W-ujjgTYw0#c%ReQGJLxW!7s87jqWY zqSould!I|u!z`(|lOyDk*ExV92!%&kUMG~Hja=R4288P2sDUN_ zF9|Us?q#3_im!%kmgczY5F(puO<)w2Y^2Sq{qw@x70qPv{E@w^37U^nr)-892M@%J zAAVWgZOD(EN>{O`w^hkJLSfdp;Gpu{vbvR>n+I-~(a&C@vm4Q{RXf8jDt4LVtl^M2 z-3?C86lm+m{xp`N1NlXVx%(t-Kl|k8Zm>GEi~9>V@?y2;cSoWE**7t{h0|R8%zHHW8?4QJ zEppRDAMv_Ku0OBqVV!bzQ&TL&N{?Fr#sEc|W1EK3-RVbVT+Nuui-0O!%oKj62{w=Z z1?AWM%JrxNmgX{IR3LKNDh=|xdb5|U%JlDU+a|&fkyPSdNs^ImtAcV1oy`;HR*eVj zSU^rn>KOSy7A_owvk8qJp7va`ySsO~IuUQ|+R0p8HqvS}Q~?v&kpV@w56=vCSkk zh?bt7?dL#C0=T9NMW-*;0xXI;O$JD=qd0J)+^O$<>8n`lhDh_vm=pUs{v_?S2@Aq+ zb{WVkSnMcF!1N^6?#eXO8C$C)4SHs+<4|Vk{FJjUeFj>d;!qw=%5-Bf&Wm5tr|B&( zFRuY13c6qH7!id;++tJ_hW-uw}& znL7n$n;@dxvCnfGH;o(=wP9hAH)h-l_qS%@rKrUhd~BY;nAgNcTUw;s7|;-0AIJL^I3xrlI{EL&dfP*prxz8cj_4t6-0F{)6`Uq@-Jtivd4 z6>_-w%|j@b)`FB2Jjr-Nn;|ZdC{(T)zd03^LyL8~nyM;On%C9__RZ2t(5wUUmFLvN z<|ZX}*z}oE({z*5(xM6aFuLVtp)4A7#V(C|f5K_vcbo&hKg$bwc>F+IMTC@6(j9d! zuo0igDDtYVQhz=sDtaY&F3`P}L!(F_THHR_Rywi%K`?hLC>Zu;8Ktic2-`^`~q`wU^_&-!dEf z6F^?|jVRrYtYBYGRCCNilEIW}126XlTMh%&CIR76MmkAL3UjO9yrD*}>IM(sALT?l}x|=-C>fZ2(rtr_T;CGbuKCB~8xI^3=tEnVlL9F~9Y& zX<>|uLv!*313l@v7w7`MWEc5R z&@`o|pi?U z^V1Ivn;$OQxPsw>*`>-MbA*_1BCHu-8bfXU(&53$dDH>@#{9c+2PPttKSx>HzVZ;@ zF|8G1l-^UCYbz(pKnD9^j=G+Vh%Xl{iQ%F##!?fu_uHPgi0g);EmRJHjj8gs66NA~ zDCn-D){7bOC5|zAq?J3_4>4uOpbtJ8>uTA;FQ|T9cefxuWxpu#^pc=pLesGF`l8YC zZXSxgo3{Xt@UkaJ4b%)Dp=la@T+81s*I+0M*W;n9Yra=%a`* ztVp%lmo5%q;&&!6r~AJYpa`pNClIB-^mYxNU(idLP${ck)`jC1h-M)j^v}FO?h&ye zJoyF=DGAxaNL!<9nv$AJGp3~JQ?ch*R7rI%t-CdL0_B)V2v*1Y5J>&8hTC(bonp)qp(;!L-Ze~n-iy#ABS<;zm+$+Yo;&@Qluy~b_Y+vPH1TR?X53i#_L@v52kR;nbsKIQ8e2{#i^R`V z0j5yBC}S^mtoZ3=i$LAWlR50Lsnkr4j{td0__g~!7>#DX6jz-uPaRV#Y}4CFj#5?} zelbsUJj1~pNk|e#*JdMhF`&_;3S_k#&|JOmJ4vX~F>2m*HAz(B8!D738sz+{nG_SV z95rNv{)>g!?T6F#9@K@kXxlzh6tW6#?SfDN-y&}CA}A`W2xje zQt!rrviktvx1Ar5I^-Nu=Wi;g9 z@p#_Tv~Uq&H8gXiF+3c%y|Y~Eq-os8eq6##K=0^-w=m7-wUNvyU_UJ%WLLZIbyI?5 z)ZhP=1!-E=fM+B+&nCHhE=US^pqkD;1M{TI?x)E1jT+o;YTRJfgLEn)0jqi9!?2;tjqcx~$;%^DVQPLj^TE%~vL zTU6@w>Cunq2Dg=(e&Vdvn%Z=VRyw1loH(jYym)C}SM9Rdw*rY2txL%Hd0idk_wnt1 zc~*wLY9@{}{4U{lig(_?ix~&`sDqF+F{!jmFFgHINSFZ@Cd;A)1(4 zxLAj*VB5ffDT(@VgJe`Anb*N<&Z>ROjMT6#HL$U_^ErE+Muz=5MZZt6rEB1#P|?*)@c)Z33hKX9|7utF~j4>-vk4ha0T-`h_^Q^h^`#giJsyKDo% zh*ukzqHkoU47Fp*6`DDaeVcGgLO@?3n|^&dbt&5WvOd>&f4{AB?&fLhPS+RDM1#KywY&U2e4O)ob*n%Fwb@0^O;11@PG zo>S}3$MvRmpNgDIjprmjtNpGhcDs3;_}MAVTdV2k?xk4M=4R(m#&J4J;>JmonOVkG z(W}p5@nIFVx$e^z~H{ld1<$g zQj%F>80E@F$WdeLcNYXs57;^G(>e8>=k&h^k>XK3xgzk@2eBninP)|wcZx1J-CpR3 z9VRI}xJ7lB1vu_UDGie0(jTBcphX#$_?{U!9kPnwiS1*BVdohN2?&(&3Nu-PWpBP& zezcSloWf%xdJcwRfGCYFdbbMV<&edVft-6HkfWNA`%Xu4#<1@Ru;?&zGGpo0M*2Jb zOnJ(%7Poh3oHFzV>r~6s7qG`Hn=j4Xtm@?z-GQ*|l%h7V@LbO3r= zF}y0Tt9=x z+kC+r2d=B#$>gR3{mgv@y<--7dk;kum7&OXZbrr)G~{mh9+2n8I|dv!E+x76J9u~~ z+tkaH)#2gdxVvAcDtn;vD=SY}iufLX_W$r9yG}N#N;M)n9%f`HL2GSt`lyU9&X@Bk z{B8hhR|r)NJB8n)I6r?T$KnIOd6_`&qM+!#zN|W8O6i6J6i<#sTJ>b^#&QWK4iDT* z17FTZe$e;`4KH^77D^Im%E2wSrMf9~eas6@dpsHkP!qTrvlvLBV8wv1DyvfbTsq zck=O%t-qkmM1j^Hl8n@SIvK?kf&kgelhZ@2(mC&OBhN*JAjbQX>0MtF(<;dlB|afBT3*8H^_J_w9WNUa^=D@pOp=dnHH-`REDah#!NMROUE1*~v#ylNU4lr2fh7)ou{yXdD{oQZ9IHc~N$)iy|$JVjlD+9${CjmV3hv7^_cW?IlX3+&U z*NyX|DzoTAn;c5wGyR}B$|rw~3b-D4HD_Q)RuP{J(!_J}d!(CH+5dbkCBP2~4rc3# zYOZoz$Q7<$7X1$v&>yyg{?u{Tve<|8)GH}fJYzvT!AccYQF+Y@79^_l@ED04d?>Ub z0!-4j;2&Q-r5&}1xg~tQ?UY9edzA5gc+5S}(ca@PG_?YlZb2Q=dl+yNUKX$qQZG1b zzJwgzEZuDU*i~J#-`~lmgi(p*Ro(27^MfP;?%(frwQJYD8^NUh>KVjl(ws;tbKO%P zwcw^6lUk*fC+N`VXO;6JzmW$%u5>y`rIr2iax`?#u)-|TiYxbxw#GZ^~5h!nZgFezJ(qpLJZ|?|)yN-#@zFNsRL`|A>2X^>A=-d~5fy4fbE< zMVzg@`Bj8CBG}l{%dyuxkuaTuhDr0fdI$c<_V1CnitR7Q9a_jvqE8iar>4SjxE(Ak zytI8={^k1y@c%ZT{jir9C8y6(XSPh1NF~R5q#{z+2w2Vj4oLd@-CqFOec*v1KPUQ9 zz_q9l+cwc!i6KXOm#h-U)BT*6-zUxEUzq0){5n8Z|NkP?XA=`$U{q;#kNvye42b>z zO>1J>c=3NC)Q<>BmIV1%1UVAzzyFc<8G20_R-N2DpAqf0=l`)wezZwJy-*2gHOWzr zoVNcb)`^1oUpDFQPmt8Zg=PaD4bbf(oeE2gY`If-h4(AyLX08i|HeN3@lhHt1F#G< zT<^Vk5#Q95wJ^1GXvOs)R4P+D-+N}iGwRQetZ_0$x5zR-qmrp73iHaO|Ks3$56ETf zD_uUzvuAzkTB+4%fbEQ>Dnt&1^`<=Jh-U2lJDsUOGqwr+Pw*NSnF33UaqC4CpF-`E zPzKb@!TtZk+Iz+|u|{8`R#Z?>1QBUAdKIKM4=70Qgx-7a9ijrFRFNiKz|bM|(1Rc# z1PHxDLfm^|~$p0(Frd+jx*Et@?P^WY9arhs>( z1ttM!r}Kymg;MZD%NU)o)`y5Y+zqd~xCq*;yL6+Uyj)m8+r3yOy*ZQvg zdlz1*dp;>C<)8OPQkuAkN$;O-MJ<-=YB@Fs$fvT4-zjd{HNaOsB3xho7U(0P4QiAy zU+~M>33{B=mA{eHYqjBVTS)FQ>FKSJ|cf?qcj2pff{$`K+xrX9e|5cSS7)nvDWg(rphUzGLLR66zLCFveK?o1 z{IGTpN1EhNm1k<05hyUL@DF_ZVjHk81tgt4hGjM9%+Y8W^coI5=m`%QK`_ zq5FwwY6`X7&Wfex^f-|<8(6yQ;h)ohr#F0c%IG_hs^t{orbn{cb#6HVxHEsQ^c>e! zGM3R&wqD%NizUgR^k^~b`**9N{jyM~lRZ`>{`3LK$ZbGTY=DECmtba7bKc9Sz{DrV z%xCZp-9J93pM6nJ__~1@UU4-73-i*XDf*ccK01%RPzv`p3Bo9(Ogsol)PC3!fQ~_* z2>Rz=D0*%~ySiOd)9U~8g=?GmR*6v)ZrrJ5YMDOdU{b(8KX-j%UN=!I|3k@&J+DtT zc=OoPB|8e@coHLAQe&|DaXc@ASIPHjxIwkY1ot&EHTY>W60NGI2e&LJs(6=jVijSK z;Jz0KXqm4@yoos5mlv{x&H4D++dK8P3D~M_1?~y@q?Q&Mz`t10l0{@o?z1*%yKk400hg!&{$1`6txx z$17fW8)y)44<$w*MPx98j59&TmTYX=wyOje*c`vxLRqjR23eJ=u)D$LqGwX)aD#Wf zs#?FsAd>U3D84u9@Jq)02UGPXZ$lq@dtFtRwsnTBRTn^7v$wCXD+Y)!lDJG)y~S3% z=>Q2sQj*{#p#I7xCMKl=cVOm5_zRx(!5)myk)Y{IKM#m14A24hp{X5O{(6{zGv-Md zn|8-p;dd<)hyLjM&b`vFJ13(8k-;UvXX@-V9o@fk+LcYJQ&#~ zDd)koFy`sg;;Pf)S|9}vL9_O}zB#21Q^^|+Ak2@H$xHhnX#AqPAL_?D1kVYzjPI|^ zn^t&@nO4iPFnOBqifp7XkB)wd7EFh+a5;%qNCWbeNAKSZcevtbwCM@}}^!^0N@$;eLHcnP2ylnpn5G0f`{g8<*qmT}s1utEP zr!`ZZHxOdT46&W=h>oxKO--ttUbJfsQ3kuT@~}p@rdL%QuTg+E06aco&p@-CqrOxG$|&ulsfq0s=Ap4+%eFvcFt?Kt(#V z9uVYWsY@;y*{_TWXVKC9Vlo83rm#T2Cz_e;XY>Wx4|F`{3W}>`_VMs6qu)%6;e>x2 z8BX(D;|%LC7h+voyEjkRI)YR!r@OY|#tmI7Xq$ZT5rFv8YsR_!R_J))Nc3t8cN9s2 zwgQPW;f^7EX8rp>FXU#t!$4&5fnxaDPzzi+WSVY#t|wQ=w{2YBo#n;$KBjl=0Gb`} z)qyGIC);^yN)>|!+rsMm1&>kM-*5L@C53xa7!j|T)QQSZUoo)K6ou~C1kcL~gSYT% zr{d}770TSqU($3fvIz@$|rZN|mnzH#)N$U8mw0(^uPGMSb1$)u4KC?UD?%d9=&y ztg_)PQ^-L%^=BR|==H}3 zy#nQ?fq2gdMy8|6$d}r=^`n6cl@s9Ay>60XWBu9(N_n;dJLB7DOuSUWT&Tm>6xE1s zOW5{F4~4(~qU4cIIZ9+Gt-!=jmkqU7>#FIuSY?1Z9wSzXg7mbF?lN8V_0Z7~q`fBS z8FQH&wh7}Ue!8I4`h~5)iSV%`j9QF@N6;rr)NM;J=i|-Lu6=;`CDW;B9Hzbp>Dr{T z-5;8}!YDpYk8kK9Ob~RO6)sW>2^-$!# z?E9|CHJ`P!I*)Mtq;VIkl1<31{QThppnUz(Wmej<=5VK<9fg~N2GUtp?>JOf{~{AT zAjKA&xIHM`W__Ek`Uy}*ch#~a#AcS{<~?t0#9 z!wUpk-kDE@KPqN|q+B_KOU8QnUt3fV{c&`FHY?z*m=9Bs_VHf0Z`S8;8b%85`Xz&Y z{xmn?K|mElrq32k9t=I^WjG<@{dAC5y_byE*)>ndbZG*lZj#+TfrLfnD@}Dij>%om z!s}XXfP`&`6pnx96e=vdVYb@K!@W3nC-ik&iS$YQ2fM28Uy5@UkrD@o+u)96h_`P` zx@~2FX@JSgr`N3aXy)g;5#BRU6+dlLB>{r?WI#Mo)Q^2w5bywQl6y#KPs(kOuJ-6_ z9`xSwYESUW6dm(sabKtz9Upg{3+OL{%^x%%iL${2{?;365+`i`0{y#=CP$+|KbF_1 zCK45ync#t|6hr!+7K#urj0#%2BF0aRk;%;M#h|=E)-yi0*2P4>hA}BSZ@sGOKFuPh z+*mKJG|-bzvb?SJO%-fH1I~!aq2~>G@~9lTbXfqe?&Ic)N{c?0cw9fpFQu2dU#56# zT^6cE`w=8H67c-A;AYyrr+JwSKwDO`+nVN2Ln%~A4dW$Gj~Wpml~AWW4e?EDyyA55*;-Q z6)sm-e)jzAJ!@;X+0(n!0moK zsLu9sEJ=-`2YnCguQR5;{SOzA1Fq*aw~h+VnBffb}68vi__*1v{Mn9;7ga% z3i^TiI<8yyna#U$Dqa|MboPFHD6Og!JiPED{1uXp_t@{j-RpyJufnjT!1Q~euU`Sa zNX4VV;4=hc#N6<_kXt2$@a-COWWc7&21Xk*g(98uj~O{^z36- zFVSfFKK*p#;-laMs2fs{$%W07`BY(y76;s_RRM#raH}IoIASH=zo!1V=^~L3lVoY+JB;xrsYyND<(?^u#oi^XDUk=@6 z9{SqDoRs0GryKf_ea$HFR(47{!aTZk(VryxI99onTdX**HqJXgLIN0%Fhzn zDlEW1^mjQ}>>r`H*VBAVL?BcFNwfB^_aA{LQ|0~4pK>IQd&IO)YhYS~7 z>nqT0>h~PotEud{%&q0!8G7;v{+Uf0dOt~!lau49|4gq=38A~wzUX?I zU+LM`T-J~;BP7s%w>rNxBdkfeabxKq!s%ky3f4&WuM|j(by^t|=BB_vef@GcfkulV zKd=+4Q!?Rn^DJob03`)}(PHgR z&Ew%!0|B-cfPCqwc9{ISKsHm$(H%-CszkG}hQl~njyGBu@sJ?}a(Rlm*~wdP^7JqX z8Z>to$w$sGOd=fp6z|zQ8l~Ub zTn;aeNl!b1C;iM5a++9;#NYMtNedz(hZT(yE!d8}#gWH$MDEB@At5UDat4j$UA zEsJW`!s=j@Ylt@@h4_S1obqLQWTa-?Yu2GruUO(I1(x&)Q`J9c`A5~KiOsia@S(%6 zGi#bg|4}c@A1(bFVET>5)I*5lme@LlAGL>0Yf(k+=ejazDle3$SYXxTRP49VxS5&grt=Uz|^?_!0JCHVd_6@C#EXjt6iL3rO zE=BsT@4PL<{e#RVBj-XyTXqI+XGgwGTX%qIp6wr|f=*wzrA_w>m%)|vUiUwU>3RGu z!64y1jkbYtvgr5%Z(qAAg8qP>+9Z+fr`EYO505vypLu@l1#BFK$%}G@QaLC>s_3Lo z8ax9{-LLC+01wgB+er++iv({?75$t55V)hUbLBoM@^8w$(K(fu$3ad8_;hkRe3 z>)t-Us)FGqQacL*ye)jQGq%j;q@?p*DNUip%w24`8{GTQ^89 zs5-vI-*`0sr|JHc)t=a>m;W1z;DeY5;-XlCkywudLvSpTa1=t4std|)@$e35Z*R|? zd{=Ar85yI#hpiIh+J4&FPFVdc3IbE9Q>+#|z^ri#MB@dtg zvf<8ez z;BA^@;%atl-<|AWTa&qZuO@>c4bD+v*C64!uqIsT9FVO$*&JpDG&EL}bHNokl3eub z5?q4(C(H~LTwY*tNQQviZ$_z(9O~bxVZRF8dUD2ofu;au-HwB3mp83BG*>a#y^aX+?M6u;CwkaI#Dt($>E>Iv(JSDjLoQ|>DG4%36Pj=+>^M}rJ6ubUNuwxN9 z{btGKdExad{)c1nm_IK+v)vC>Cz~6Ph2Le=ov?(y7O#rMIwbrqxxh;$zdm9NHK|Ia zVaMclwZgk27UYSEALc#0`M~Y|-IsnF>#U}yn+WNwAE}{S)7;U<L?flGlhLB1w)13YhlNA<@>c-E=4QDF`5xmfHLqNgnSE$qMMqiz&ldx^7#>aL)+_-}w#% zAQD5J41oDRf&1Q`0#t62rgu@3{r4x|ZC(R@sgGj{k|xSp57v@|HGes16t;j*Ic1aO zOfAZvTBD;y%I@IX+T17*Y!JD0V_lo?hyoGM`T~S#;=(Om+c+s+>4H+_oM92J(7M-B zptmf|i5yg-%+`$=P7qy875Nki4hRQaBaA^ikLZM)(AEVbtGo5&jDG8olx)l2E1=OL zsVXG!pQ#^mzlVObaq-`Kl;C!7=vCd9I?;iQlx!_Xa?u`iq;_$=fAcxhU$35&l9SC% z%2a!x?ZBlGOef&$%gj+_*)C2(m*0fs7=h|O(vZAmJ#F)>-;BvDm@EbQNrF{k1X7>x zc~ol6ihMW;rN-i~81jgosWM|1RY496*V_k zx%6mi)#*c#V*Xf>e{(CncR&fq=!u6%ABT>UOh51is6#sossKtYXYisf=EDSLV4!!b zu;#QJc!>ByU;HvSa{0G{^z72F!-aqzf1qa~^En4Y9r+D%az4G%FPf?P*{r9lyA4c% z1Q3~>!+(6wJ~>|%JpZHWTDT1U2;O6M3%|@nY|XFF;eskc1;2lZd>x+!R0utfrk?S& z{ks6?e%^5{^xrBC|C%wg=aH^k@X{n?DRX|Fk@e!M7u{3yyF!+(f7|oCnqp1pX5&(h$!>&EZ@{p&-( z#{jnjzJj&2>Wi<{vDjE2Lohu3JYT+MA%yZ8b#sU-8@NVMuyP+x>JVI?FhJKA7=f+F-qMYua&&AIAeH8o zrqUNSJlww7@m9HfjYZePyYvsTjdbST( zBtnfKJcY*Xh+vv~>?NEgbw&^4adYKoQSWWlee6@m?Q&(*MovDUkax1hiAXpgD}^Es z_9xDg`dR-^b+2=`fzp$ojxOzXBWrT((@ds-kfRs7Er#VBCe=Kq5Y^HL6LUAEfIcXq z;oJh>#ZO_%ln55)k42a*W5cF{L+&GH?&ON=x84l13)_qYA0c##b7Bwo0tKd=2aGf- z(Jd4XD*0jP_3hSfdxn55cq@;IOalw`{P7qPpT_$Rl+2mbBz5#6ORG^%&g66+tUw*< zOcC|4u)M@y;E%AF5 zaT(UWrBny}kV13vb1HVG&f(Kn@lDGSpiR zFDlL#`dCz|m*ji4p$;m@Jg;nqDgvd6AvMjv&r6@AX}-@^SRVO@3s5eLzTUaIGszf8 zNO8K8G1F9lKNaPe|6W;u=T;&TDBnPd zGirN+!7fKiC}KG>T-1(+FO`db3+9^DzyI&$@?`_2Q_)y#Edqqr$Z0~D809kgX8MvJ zn%L1-P07v7&Xxbzf;V(jPv1UResC!&wI8TxwF^pQjudDihjL8+rIj~|WoBNE^fe}& zHxGYA1GL^bngfABkkfbWW5v!s0?B&hUJBG{we`Lsnw22qRWRG6)3XG4HHJY3&t`td38wDsJ@yNJ&MWzd=A ziXFF+nZ>thj*c+W5#=r>7o!|Q)>He+8-0)eUkX!>8{d)v8aL?R-tNa5SrwL;O#X%> z9Vc9!)XrC+jBzJ*LZ}`C4)JTir4KNbxHgn+r8#ygX&aOQjxEC#r)4NYBYrlOJ^NRd zz&*$4|JLmO;Bl8@J9bS4lp6VP%15TKNHC3K!gUE99hRn9#FexB@4K@taXGLs)meS( zY}=S5(_=Oe?Xiji+x2&$PqGOEAtdbIhdG5@W3F3FdCl`rZmT{TEiL5RkqJzXIUkKa z6l)}z@tbn`juEg{{ZhG?sF-6Df0jA@ah9K>zIk9iXUHY0T?^8U@iGvb_Ser&FBny> zf09|CYC}V_$FFwtVhH@V!$rL$m)6qVnw>Y5pDRB5C;1WY{Qe^p8Eg8$_c$ct(?2nH&7YE@W( zs7a&2Mu&qvyHQ#>ko67I`H(Q{cik?iy#yvKKO|Jfw#n*G(LxcTnKFj!f}W*Vzk#&$ zV-DDK;*WjsvS4(Do|szZiWu0Xu*DmDg$KTR$J3sc7k)5fO5t5s-JtWk#F6y7#6ji2 zQ&a{j5!5P|NC>MB(kaC|tq*koO+1AaMjR=;4Qmd7#&L-P<+dGIGVc8O0z*6~WXBlj zOfe>>6Lwj+Tr$@FC%B%wF9@W2r$5TPnf=*SW{-E9lFxqfVkD*dprWa7t(V`le?JTI zbd8WM3-+F9N_m+VoTJLXR6*`fdrp~|o^%U*44Vi#&eJT4KI`L8PcdmqaQXV|Gv;)v z8rsUQK~w@beH}XC1EEY?zy=L=62zXltn0YMO5V}YAu6gBSG;yqAnj3`bASAH&E|^v zE>_*@{!~i>Q2QlNB$h>6<(j0dqnS=&GeYgl>dwx=CMF?(B+ocl*7}82nhvRNwjWmG zKR~A_bpqJ-!k~hB7G~%F4gEd>v$WMW`Rnm*Z!rS2MQkFo>)f64vt=@5@cMc>Ap0}Y zXI9QQj>ndkZ$UfNCwv+HsHX1!a^E)pDK<;It( z^snfn?dMZ(Xd0sMzI-~aH$536@M#jTtX#srl&`eSwl^R7D zrnBRU|AT@r8(YxRZf?`FZa_W{3+fk3m3h*Wr)|Kk_Vj(XO*;O0!sLcfFTcM&Ps+sD zm}%f<%zto!rVu#L!C{PFYS=y!TQzo_McpX3q`W5|;Qe!e#vL!F)-O`F-2*Rq)fAs* z`;`t^?DC!a)Cv%fKKoba3Nrx3;aDisIFPK2mN%^%|8iNntt)jfyhjE0$&}Qp3Zm}x z@PIfV@Qjm3>89@|QoES3k$i5I=%pwmwBDU&dnYX^Qx;b2O(&CcB(xbQDRLRRCcK)f z7LIe-vF*8BCWZPR39G!NY9=`@_Nvatj}K0#;$ly_RAKrW_Vov`lOk<^=iusE^YzS( zbLA4_a(Wr6&bE)62PKd4 z7*|?Q6B@h`KL1QG{PoPUr@?db`_U8;9h3^i`sfe+K)6fr3PJn6z)Q!xO?$zt@7o%9 zjTes7bOgNqFTSc@FK;TUuTM;oT^P(}#0Q&+?LI&|NI~U`G)MdkdVACC^hRGtaWfRe zrj!}UqGPuGO#v0GIgf(*eY+k%_=Wf$%g`!Z@Tw8x9$6%Ik5p5?x+>QLm0sG|s9QF! z+<@)70?lU_tJ(H$9J=xx=)wT-Lz=bF2o_fYi=%VEwaiOOpFE(xchq76J|O2X+KZ2q z#P>rl2TAQZV`<^a>*zW4ub;W7R ze!b6|5#-|Q-r>#v?b#89`T3rwtm6Dr&1YBt z4S=6O%id9IBd#^UJ9UjzptGJuTcE@QpQtVH&8WNsD(zj&u~AF0L@HV8^4XNkvz~JH7e^BH==hk^ z{IrJ~+%3g%vX{)dWa23xX6IGt{|G zYNmthZolk7_~TrnWlGSOja60o7=tednZ!xDThb^0)q8<`zi~GqTO4*o-Tgt3o>Y^> zdUMUnUZYsBfm%m6WX)67m;o>xx#8_2Lc$GjI*Oyc6QzsmUKt`%=)HZRtaW<{(65Ti zjqO$#v?2ZoEd{42JBbw1MXyb|QSsNK>urvnf342i1GwHLj z0(rDOi3?!A!c*>AI1^H4M7ug7JuG}c-6JUxbo^f08E`YxHu3D9BlOd3BfptYR-Q;nwIVh~3^E4PGC| z#BlW4_-(>~%^a3@Xj(Gjax7fUO*~3O{ zkjk7eqrZA7=`oUCrjWwD zc#-c#@jqTk3CCG$-@mCY*QaYl`ezl~(DDB_#&)mqe;8Yl)wUSE_dB16>En+oN6fht zlQi{MC3-G~a#<#E&?|ddI<>SwPml4*u|8l@**cbt%Q?GsD05n;08gl+pI`Hht68Wf z4A9ga*w=pSiT$F&_2Yov|EF5B6Hf`7ab;wRDSkC>U^7@Su_gpSa=)yhK*L4T{%iHV z%{}rFO-*b+z2yoHsmS(ZGit8Phb;L@!O}?$^4tM;&#Q=|(|viWi%}CBjxN8{VE&^1 z6b1c@F+qhrfGsMg?jIxQbLU>Zek=@qWvyzi@q{4$%PnJbJ~N4_DbW6}y0=Hu`?xo( zX5mP-RW>wkk??#HdZAnT+V=H^u>b?fWm~nfCDvIms^Rxp- zsx0xn*TVrCo|!+jZ+cD=Xh(<_{R{ITNfmJ48@0iFUm}gLHv0mba8}w2y`TF0;gdVm z=?G4?hntQK9~8y1-dhw-&w@F0{$~^ladEcJ{KYend|i>*YHV6V6;5Z=S!~;Tj zQ$ifzNe(SFtQt*p9$&9k&5{`SvzyMDS&;GmqQmMh)WBfF|C+y@dq(=@KX3{-z>E>l z9RGVD@Ymk-Plk}gS$(olQ5Xg-RHho=dWV?GdG%`Z)YPwNv)X`v`sv%A_6L1ng`=RFMRHC; zzt2r}WBETM9&qF<{~H}hAlPy_h#8OP_k%PR26G6i5t&~%N{Y%#%F1YXr;e5#RSQD< za~NiPi)#T((}jhc&@1y6Zjk!jF2gTXL)$08Epy#*Oy(fcT7&AvX}WJpfGeDfgIM>S zch(5qJ5+b{Nv;5^*Y)d4fuH- zJg=aOAB-RtyYvjZi3II`e?a2-^KGWEFqh#2li~UCfUQ|}p@^;Kb(2)KeUHG|tAfzS zu(?B?-E3LeWKQ-`E)EXBU`hO&QX2b+kx0(+co_(4)R0`>h&t_p9~}Ns#l5`o|KKpc z74al-=<7GM7QQSHX47$KaGn$vS#fAE^A@|vW!&UalB~$wgP{1^W&WbxrE&QBJkSo}@?5pe1O{Fzn06tAm_Wp--7eG8)&1)|3-v&Ts37o2@|3jW-a1O{-=zNA zRxNPy;g3E4(46nC!5IU}hw&}wDB=!rs)?elusA4g(Kg_t!ghKmH`T82e*7jC)jg9D%U#LHSasF13rtA%cm)q7K75EP_dsMm}#CX|!+{W~W z5;H^v8axr-2Y4|VZSUUAQ?&G0@gJY`w4;!w(X_!+0(tMF`wa|?iESmtgN162UIdu15{DbE zjtk5;^)eWf1jU%v-tYYE3eVlf_aDB&vOKY~MnmF)w%4oP#l9zG%LnmNIXO5;c&&`A zj@Wi~v)Wjz&@O09|K7dFJTm=H6w7XLmaDEqLWc^En%CV#l5Qnqk?dM|gzJs4c`Gw! zzUGhlswuQ;>d&ciSl%i)83lQ1M{|*4J%b$uRm#b)mlW>1U(=te5~;OpQj18Vi5&Xu zZ{|IY_WW6UulAYmydS}u)}hy8tl06|-!t-79s&Q=VYP}XGzXUF>R`vsX)h5{%5vo8 zoY#}9S){2MT3z)>fb}gxzFY08k`%p{5Gtkh{FUZ!l@zch2w;^+H@j!|t5lLC^o(~^6HrhH`TU3BZZmso_) z^%XXCkg1`T76T*WEvD?d^z_4n>b$>Kr0wLUL+lHUq4QH(#;B)BROvr&ziHguJ6paG z7syedwS*D;p5C0dlx9zB9+uX2?x`-QC;eP=Ti7-I_S(`s^v=S?b}~J~w5T|K3;V01 z8T~XXnc3*j$%&eghk~Akg}Qe1IC5}$QV*o* z<%CGaVKtvz#ab6|!K<_u<9$(epVGwzRqOri?VK_+IoHWZ!rt~Zoe23}Dd=d$C($&W zy*qxdub^cc*2Q`p5%yGgbb^|OiMY~%`$&nD(pTaoi;XPe_?{4~X;eKg8Wl$`RpB1I zwjr8ImU4V0Vl*XbD_~W+-?%F(tgF-3v`&IeZ2IQil^Sub{^hrk*f#{cVl4Xm=B;_f z*1RR!>YuDuClQy{FGi0i-_f%6SJ7B_?`&x8H(pd-h2dV#zesl`zVK0LkyVv6GSrmP>xxPPjHlXLsaZlryb%ib z;AR?rnvru3Q}}7l%G*_%`N(Kxl@Ytz8)$1$!}&6ik^T*oL#9hFn)Bhv@P$WteYJw< z0yT6qF>6J~#wJ;A5oi0%-oA1r)Vxvb%LW2;_re7UL+sJ^rkI{*8%W;GtFQiq44r)C zt^BlsA=;ed*voV%UN$S3l2uLRd)DyuC>z*i9Fo$b)xtsSn+KU*i;m9l85{dr>Fxn# z3~&sct;{qDs)xoVaZWsD$!9wl%8+GpCVno+T6o`6RBaPjSCiH+kD7ZNB=6?r)YW`q zUb%~XdWS;?fcMreTa{&oOFb+kIdOqq!NyHlA2Uj+rj&SHvpnOQ)P~|iJLTiN2)D3l zF#~sb)kw**|=t45I^_R&M1Dtfj$0Pxo9l=?PQ~j50awyA8P~SRgsnBa$2iBw@>gs!egWFzS8c9dUiAT zBGlqW3e==_zil^es%tvW``7$LuE*+*!6K!iVj~+48x5zoMKZxe3~{2=i>+DB;?A_7i%}KcUPdx2r){_ly?Aj&{spUQ zrjOrZYm1dz;^%fWA|Qd=9?e8c#XJ5(mqAI_s$j8>?0UYap`beDrQ}+$-{d2 zr;>!B)!AcTB^lkrSTM0|BowvdG(>wHyV)I$pce)Y)qy2O*aZ-u#F2OJ zY`IO!T3F-_3na<~E0;E>O9XdaK}zU=u=-fmYIF4GyBA_K>}j_MwBjLentPZk@n{+` zXEhW>LZXlD)K{RMBk|d{z}+e9z1s9^ui2S;RO>N(>=QE zr~YZt3eS-?eV_8E8X5||om@waJy6jLs*HA$G&H!U0<6q=BZlE`O3A&0L&4GeXJ;P1 zowh0*VgbhqG}*q>GoJGPc494wPS+x%h2BPR&afP<PZ{YzIyU z2l*g}0>=lG4qa9@KDdm^87C$14bL0NJa&{?s z+hxF87^0euKD)&}V%wYGi~*l*hOomwf2O98B(61?$f$T9y&e|>F^ym zMUT-Bfh*m2^_`VcIZkh!XK@U@+p@O4UaDK7T0lld1}f54EztVCC108N2Nu%aDMjtz z(O>0)VQ~(%YZ2RNQmo>*^|)=SmC&~PbIm8aRU-b)jm5bQ@En_+eQ6Q9bg*U-dUcbA zY9qkK-rjM<_F^qUE&DJiasUbL6o!|4o5!w|^od(ONq?j@5^cVK^|b7fG@U$7H}$%Q z;YL0@A*pq?O|%n_l2B`?f1d!D&H*+a%z)Q%T_PjG-q|UUJq819Lvd9WHveO9L}OtfkCPlnVRi~Z}U0m*n;aDpGZO|=3ZcNn@V?cAO z@09hIQ65dfZUR4gcxz!22Q-i@Pl8HO_45Ac-cEkZ77k~6Di=cF4uv@rj~&$r2?a>? zTz*=?7UF1jdT~k8;itZ9N>bo#E*oR8rTc&e(w+}Zv$768(P|nCSiNW(tE`Z~%?bni z?QF(8*xdz59IN;X^Kc><99YzxnP88#Y9!Z9JmBwUEf;CH9N0K-U(6k|TeMij4{Jdu zqR!hpyKo>Sz4u%C`Lp(&vV-Sh?5i=o7FcUUQ)aRDR(2UUu#tlpU8-{rV3R{+x6Ek` zl=ZxJD=ARh({QZvRsDVxfy6_d^Rt+712&fNi!Rg(($CQmIR2ZOQ}Dk zGH2b7U&j#3Bt{ma?^l<%s46@~WBTgAXJa;%Y?~vXGDc}|yu=I4yw`diTzc_@O3QmJ zzZ?80$`OnuLz5DIq!u^~EZg!n1r1kmE|pwa`{WRHHka26Df+Cyd&qqH@;Av4l@z5u^i#IXF zh|ZVPR%*!U7WjrdZXVt*nZdBk9Uc|TX{2h0V8i&0i?6r+WXY=5OHtOd&SjsLv*qBn zE-*6v(g^a|7YGr0D=xw!$4)xHaBrnzO4SLk9wN?5@@>nlrmoI_3j-e;yRmb`x-|bm zU#8%>*7Q-AqvEajwDHZ`QRGaTlqx;;Ffg{=0K$lR@&lR>mrZoKZ?7;gRD2qwZ|B{Z zm|8u%c~L|;a)fDHol<4t-W40shCG7A^~hNFqtu!W4~Phm>TONRo+V~b)V(vI6?=%x zm(${%3p!f+)PNJS&O$y)NBOX(eTHW2>!JxNcvk3NgyI~bzNUDve;7;5OV@lPu3+*Wn~lc>)$vlIU>fv5{s%&A)$1_ zlQSef-B!_{OmVWBKofL+Z2V9DAu2|u?_2&~2ya4@aw{8q1%{}~ZzXqTE|mo5*=3wX+tV1}l5HZK+mk;7v?>4>qr`LGA|}40C?89#TgItUR+uW!u$?E^X=f zD(A6A(YdA`kEa7TgQT^Q`iJvFEzP8#Ki(d+`xbhO$r^sMuy+A41YL)5RAZ6$Cdg66 zUBfQu4Ogz_i1p-hNOJ#hG1Yi1wWMLc4a7}k19)j-i26>J~diIYEF!m1!Aw zzXh9KS#ku^S@GRl9ueO+9!8Vxm%K5EX=HtdMxIdOC6ZuUC6ZXZ7z_YJzx6x#QraAoqEe%9C1t4$UsV*<7r z0$*S8KXCK#SUYMx(n20$vIvd}_VITM-@Iuqn-L@VCjKI!K_S|Q+qvNN(l*om-^ixz z#Lv5s_V#=n(O+6v+~BHAKO?tkYW`SbD|{XR*6^(3zT4%lJ!oIAg@q6rZpFL8Qp(F| zASmO}8iF-)Ang(#$K6K{6LZ&`Ol@rrNpdPT9cR}F1e#eNklLKgbbg(uXU&a~#8QUU z{Ic2>H?a&EZm*E+e*FNO?ee8nfiOaXd~Nfi%!Nw>mBtiEV^2DkA0^h%37@3PFI5Y+WOV~Br?JuJBL7M87jQCvAvHIFd+ zAYy!H>WOCZY_$-~E0VRWtV}V8Gr+8Rs>YzKScP{eKhA{VV=E9ieMc|>YkAMxUADq{ zG6_u)sHx5J*S`142Il;&%40LdVNn_?+{pI2oVKmMmRcXyFQz3`qTkGHZ4?;-2+g+8 z-ql$;&q)`wU{W+;zy8LXd%N@M0&QxGj0}@B8s;Gv zB;Tp=<=fV`!X&+O^K<(oUV%QC`hq|(r&HH0;00feX=rUT@bT}h21`GD1&sggVBNcZ zbcB%ln%OP#*f7rgRcFwE&bFIRpVVBuWkV=E^OQ&2Q%YwtImQ6YW={$)D1Z0*b+Qy# zO=>kmY`R)VO}}T1tm|zm>fp`^IK-*0ok5HJTBM>EG5fCXxApPiC*md1M*uwUH*S6F zP}#NhK>DC<;HjCH zZVTR@i)iIkqLBS+bRJA6-wk*bJ@D2xVlZJA;V@uN3+5iZw)*LE<55Y6r-8u`dT*St zen~YD&svR?IvE;b7o=f&xu4bN{=yJ$ZJ)qw$` z1n1lC_hkSlu&J6V#c4jgRPpUO^Wy~efp5$ydTHtCyj)_9!KN=9{|FgW$ZAVAP-=`< z8v?*UtLgi+V(gxD@ZLe=Fy)c##Mu&!K}${ns}Dn6;aDwF#KGBlbyR->?L7;1T0bra z>ro^?ER#oFI+SYbV8q_^dnykeud8Nr$a0I(TS;^xx>TJ4122olPNB}m*j^#>;TC? zPr5B)F^&k8%ain6-oLGOs%mz#y?q+I4(VHz*8II!KeNu$IS73!!#Y|g6+=q2qE$jzSgq7jfsqAhR#m+kt5-Ssa&!y~ zGu>Ia#HV7Jr^BXqRB8p8B=&%JA4hF|%5yC&8R?c6`Q0~f5_5}+i#;*13!hxhKiK46 zo_2uT9q(8I=B1}xJ=ojE70yz$NC+S8_k0U`tZ!wj*54yK`+t%4)^SmFUDz;ofS}SX zDj+4@r6S$k-5o=xh=P=;bW6w3LpRbf^w1&Q3>`Btyhpvk`+eT$jo$; z$OWryXJ0axOf}Fx!oj8SS8R>datr_HV`jFT8r-g3`fB^7n+>&Wati%aaQ!NrduSG` zINqjOdvuqWiM|D;Jb$RXM8-w*xAhQan*XLQyUD!~b9Ii^; z@0a>?XijLlM;;H?I3yG#?P1KKzPE%4BrzWH>GFWt--xqOLSo-yr+vsNd81xI51LE$ zvpsei?2vp}B}KTJIaY*XS6t|qNnRyl%!X}vxQ}URfazga zJqK0(y=S8p>o-D!tuQq~l8{_1zl&VU+_x7W+uG@bt?gG}(~nE2k5O9Va|gYo+cmVI zBAwYJm>yZ?&og!aF#&@;HZ_f~p_4~8_f$aV#9-b%jBocuU#Z2Msc#>BiokIy1d(k{ zBRgC18N-D&G(-Tm=V1Mzb#TghYTA;_-B8)=jZaYleRA5QiF|tB%-}T_Ruydj^uMrhLL6{|K3Y=DxH4B885{e|q3bGIxV=8# zxid@j?sD=bGYZb-mdM2%d5LUwjj2lGeN$45+fEkl9i0nhD>6;1CG)vQ@cQ_;JZ4%fsuNT$*FLIuH6@nERb4_ZgBC_W5>-C zseBpE!>-6XGn>nF!$8=zL@oQtmqp|)o3ab41ZKg(Yo$^))8BpnYaK-0`WHuFFviAN z>T^iK>iyodMj}79*un|k2h}QVVIA&?;ndA{1_UvhYGY-P5dC>-9!JLA9zF*8`o66O0~?3T);E|*KW_)DA-7>) zYb>)IDp#fts$5VfYNMEQ;+>(eNIVdP;0u7B@-P#eO+i#nP9MOthxS>B{MbnSvTpE< zTqmi8ByV?Xc?Qxi&)9Wm3JQ#v(~OVx1S;Qh)5fnMRSAV{HOM@QjMMQfMdG&5?eEh= zp)7|OvSQz=OitGn6L~uN`PnFnY2hIR56e_6?=m@)l1-02dKbGPGD#c4lQ`p5-u>ou zle86&zE+LqGa2_K+z5C;r;F7I8_}7B=T0kIRmQgB#-u}in6Y1&8gS`YUuxP2I+c{C zXBSsj3ww`~;^Hz{%H(;_KxL1k?&+0&(dCIw79eDOsp$RD9p*yLy|YZ*$}OrHANR&! zLBXWASF32XKQq)X(E9o_f%pVD{DA=l>ok1=)HJ{8)?3OZ0HWfw-l;gSx5yPtz=@TE&)uU^bW6|aod zB&}e#(R-%>hKg?O2_z^~e=b^JX9Q0&zPiE#{@BPT+r%iv82yp%BE-UhePBxpmL>$OOMFfO9XteEd*)4%{7 zISN%js+%7*9s>hFEbK&P@3SAm*Cbn&i zmwKdY&=J$nZ&Rj{z-?`A&yZtTkZ);iagpcDL*k+1Wj?o+9DVrBquy?BA*^?E!aO&R z>E>6sHmRl5eSo_XXTx^|$6)?0rhAz7KnfV-P&uUujeXniJvEB%4 z!Qm1MfSCLJwl-*9KLO;Ys@1!%uY&&qB3U*uL)A}5Z+q4Tce#(jp05(lPNOhWEuf?| zR%9z%g(mV0A|OQEq@Z4Brsd&RT_MJcwu+i^#@dDbZH;A9TNGj?k!KSL zx9n~>$}d;_^vgA#+DclBK6CeiTW*->y7={!8nCprdK#|=2zGs-GMw>r+ZcYS*sRTX zF6s&vil2$|hS91&mr2USU{eC93Lb*5< zDyO&V+v&!R>+5?VfN`Nx{Zh5%mnW%(-6>ORlvC?wBMuizoblXu`o$;i{s{KC&)#aM zLpm5_>#aIzywzvFkKYxK+y)D}rw^6Zc~$YGhm8t&?Bds_bDngD>Ykl?w94%#frZ*C z6kh^-R~nyAlBvU7%8lgOlUjnCiS1t0aMJP%=|GaAl~JfVkCD2?ZIy2zHlJBCW6yGolO<^k_Si7sMxqL~OtCz9Ivx%B zahp1CjuAc7<8#hKGUo-c2P^)l$$QFdY7kN5JzusE3Ke4gK91koPI?Mno;9zIHUso z6T{GNCQg*Cnn~`dIhi7^U`29kUVwO$5rq_&FDD9~$*2Qy&(+K*XOZG7;f}9~CQ4ZUQi`h{=Vq*qBSk&$C zRb?+PZEs&oo1V&(ma&-1r0NH=umREDmlv_{1(>|5M#-G2ARV9Q_l+pcxcL2JICx9V zQgLl(95&}z>En!?bq-k3W>!!QSn+WALaDR;4;oNz zZZ<0^0S@uOpGhn@*d5IUSDuo7=7$`T`|uw%A@_ouxdf0HaH6Gcx5Fjt3)f7T)ixq- zPpZT1Li<>8^1>lmex*L59X37l+MA_Ab+y`h?}mi8!KU}pEoLrY0_b>bWt3T76x+^j z>m+UP&A#X<;Dro@5ihQYMB~FZxYJhQ0b|_Jx%+3xBLwlJ5AJf=s4mVQFWOe=t30#8 zYD-&da5wYsE^I2;N)fhGz>Ka-H& z_ZhwZkr6f^8tkZ5#Q32~9+#m4t}cg9D_84#6`<7$y;4(iH7N0s`;wDel3Cd?sBJU% zQHe;}Ov}^tO=`1^ZC*|RBSRTme5)K2f!~`2gBw47uxn@=IvIPZtB)Gb)P|4fec^rn zoTDHmw}b^QB^%5rq3X5r$WX0Pic#mh>3C7QiW-2sH@YRkd;5u>dy5^XTEv65Yc=s$ z_PO@9sS=wWhI7lO4XGw@!?awIF0NzF>VE?u%4gpcEhX=R(eEQpB6fB@k)w80fx?!V z@jhqGX)9a5;zS%AT+*b7bk-A26;*bnsCdf&6aF8*+N4;XbC&AiR37Dgr;7_&G7mgY zC$G6~7E|+!>Tp!B9oG+9i;1nu`XDqj%GKy+ku#&WlfOAr%C`Po9V<$ITc)9?t3##8 zUjyU3z2DjATa>=|bCn=?d`eB3Qjp)@sCx6Z?$vaG_F-FU!c-nWw-!z-vm)qm_-&vE@Drr7rFbzb0ht1fDH z3d00vUTR%4jcoknx|ZQ1DkAJrzPJ*0@XA;4e67MgtkpO^zK?a4g4ZKRp|rHLw#F^( zolAJTYTBul`1I{?TZ}?@8h~a|_mcix)g;#~tUdG8le0_9X&N4T^7}P5F=P$s%|#7_kGHn)BcggWFDIjw z3SoQN%Wz@M1Q@e^c8O9u`(|L~C1vNby@mdo6|%~QP=0zX8E2+&=2#;-Ll&M-pbnTl58 z$T8~CSMTk&*o}=+;_>Vh=6mT8ga)OOp`8(MrI|OObC>t`?zLh1GC`T6dQek;Seg&C zY~gSB>?oKNK=eUDm>o$(l)>K&6m=1ON%+Jh2494gGt@7yiiY;A+f>9Nv*nieMtRQo zS_*|o9dtXpz}C&fbbz&xyh4ri`uT!ZnMuMKxS)J#Y#{FB!}l2v;u}u;_*5P9KYfFK z>UkL{y+aepk<8S_#lsosS2{*z*@}E@V~8(idC4c9#U7(c+!sM|@v~7A8U=DV?`aVq zr(rd0e(V>LLIu)RmmX;6CXX1!OP(}!aJE2tLiBz0_W;1%Yb%wP4{60)nKPlZR`1c8 z$L{UkP!cykOO98vWc$hLF<5-PDVk7+qCpA z_P&{`(mK5{3R2MGbE?X5tFP%Ret)AK9m~aiez8=20h{Vx7HDBxwbWvoa!4h;T^57s zX1Rt&*GACHY(q*(y_7Th0hR`jR|fs(MYy1%``|vVNl1J$PNabg4~O@j!{~#JZvD$A z=*mrgm;I3EP;pk9%Vp0LormZ{+iIc5&xt$_RcY6=Qz1*vrTYitQ>VMHo7~l{JXtw8 zICg5!3+t(b@>SI7kG9Bh3bYa_-VInfFTe2-dIc_1ZZkR7KK&v^9_j4Y%R~p#mwUA; zNsf{>AFyy7WvDiMGl+8xdO*Sam4Z23!KC(L&0qGj*H4>1sg9%s9>@^Z`tZ{ByLooxR3AoN_eJ%0hhXu7>!O%gP;RJ3}>d7Y~b)Z8? z@0iO8tkXLw1TE4#_n&3N;#jZoQUWUrdX64&j}PejcxJsKzj=FY8S1h`NFAoCs?3(m zIh^nX7mpae4q2M^teK{H$NVZ^Vb<+b)hKV(j!O!9$Pl&srO{3>F&Wrxve5Gd51R^J ziLCxoERmv!gOOS#b+gxtvqwj;P4fBp-lW5X3G_=}Tu+Dj@wR?T4U;)k) zk`VO;{EmJZJcf}dL>rM{ozEAaPrQkT&#|Seb~D&NhC(wV#_YR@YYmQ^ZeX%oO0#bt z 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�-eA3v-d)-Ge1XHYxVw(zZL*#`+LIslkyo`xnWb@ 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 literal 0 HcmV?d00001 diff --git a/.asset/sent.png b/.asset/sent.png new file mode 100644 index 0000000000000000000000000000000000000000..73154f61bd63d3cc2f49e0f99abf095c3944ce1d GIT binary patch literal 76901 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�u1^DmyP8+CqVu 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

    jVS5qU(UAJ0xwdbSac;gHJ4K;7^i2b`$wpvRI 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 Z%nWVpH~wY(24!;w22WQ%mvv4FO#lP?8ruK> literal 0 HcmV?d00001 diff --git a/.asset/split.png b/.asset/split.png new file mode 100644 index 0000000000000000000000000000000000000000..646fbf4ccd3e0a8af237e9046dea18478776cd67 GIT binary patch literal 159322 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

    ;yd^Uyv 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 literal 0 HcmV?d00001 diff --git a/.asset/test.excalidraw b/.asset/test.excalidraw new file mode 100644 index 0000000..c22f27d --- /dev/null +++ b/.asset/test.excalidraw @@ -0,0 +1,1024 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "http://127.0.0.1:61583", + "elements": [ + { + "id": "title", + "type": "text", + "x": 0, + "y": -100, + "width": 292.683837890625, + "height": 35, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a0", + "roundness": null, + "seed": 640218145, + "version": 2, + "versionNonce": 525079361, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585203, + "link": null, + "locked": false, + "text": "How rexdiff is tested", + "fontSize": 28, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "How rexdiff is tested", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "bb", + "type": "rectangle", + "x": 0, + "y": 0, + "width": 280, + "height": 80, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a1", + "roundness": null, + "seed": 1680382575, + "version": 3, + "versionNonce": 781956879, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "w0RuaxrPrgcCWA4s2TiME" + }, + { + "id": "a1", + "type": "arrow" + } + ], + "updated": 1792963585203, + "link": null, + "locked": false + }, + { + "id": "bin", + "type": "rectangle", + "x": 0, + "y": 160, + "width": 280, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a2", + "roundness": null, + "seed": 1142409217, + "version": 5, + "versionNonce": 645688751, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "H6pAheHcjrHJiwbqzQ2IW" + }, + { + "id": "a1", + "type": "arrow" + }, + { + "id": "a2", + "type": "arrow" + }, + { + "id": "a3", + "type": "arrow" + } + ], + "updated": 1792963585204, + "link": null, + "locked": false + }, + { + "id": "tui", + "type": "rectangle", + "x": 0, + "y": 320, + "width": 280, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a3", + "roundness": null, + "seed": 2716815, + "version": 4, + "versionNonce": 1547204623, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "njlFDPjz27Wm1YBvTrXqs" + }, + { + "id": "a2", + "type": "arrow" + }, + { + "id": "a4", + "type": "arrow" + } + ], + "updated": 1792963585204, + "link": null, + "locked": false + }, + { + "id": "fakes", + "type": "rectangle", + "x": -480, + "y": 160, + "width": 280, + "height": 80, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a4", + "roundness": null, + "seed": 146874337, + "version": 3, + "versionNonce": 1193336783, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "2VBLioJqFt_Cf01Qw5VXN" + }, + { + "id": "a3", + "type": "arrow" + } + ], + "updated": 1792963585204, + "link": null, + "locked": false + }, + { + "id": "lt", + "type": "rectangle", + "x": 520, + "y": 0, + "width": 280, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a5", + "roundness": null, + "seed": 927599279, + "version": 3, + "versionNonce": 1928339055, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "ebgDz_PLu46R45427hL4Y" + }, + { + "id": "a5", + "type": "arrow" + } + ], + "updated": 1792963585204, + "link": null, + "locked": false + }, + { + "id": "libs", + "type": "rectangle", + "x": 520, + "y": 320, + "width": 280, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a6", + "roundness": null, + "seed": 1110735809, + "version": 5, + "versionNonce": 352358063, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "eIhuGsq0FNm9Y56oD_HML" + }, + { + "id": "a4", + "type": "arrow" + }, + { + "id": "a5", + "type": "arrow" + }, + { + "id": "a6", + "type": "arrow" + } + ], + "updated": 1792963585204, + "link": null, + "locked": false + }, + { + "id": "git", + "type": "rectangle", + "x": 520, + "y": 480, + "width": 280, + "height": 80, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a7", + "roundness": null, + "seed": 103996623, + "version": 3, + "versionNonce": 1920524495, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "ZcWeP_EU14j3C2iugjy6h" + }, + { + "id": "a6", + "type": "arrow" + } + ], + "updated": 1792963585204, + "link": null, + "locked": false + }, + { + "id": "a1", + "type": "arrow", + "x": 140, + "y": 80, + "width": 0, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a8", + "roundness": null, + "seed": 1351703457, + "version": 4, + "versionNonce": 1667908961, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585203, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.5 + ], + [ + 0, + 79.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "bb", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "bin", + "focus": 0, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "a2", + "type": "arrow", + "x": 140, + "y": 240, + "width": 0, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a9", + "roundness": null, + "seed": 1081895663, + "version": 4, + "versionNonce": 206512417, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585204, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.5 + ], + [ + 0, + 79.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "bin", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "tui", + "focus": 0, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "a3", + "type": "arrow", + "x": 0, + "y": 200, + "width": 200, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aA", + "roundness": null, + "seed": 1678196609, + "version": 4, + "versionNonce": 1611516097, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "5pk65H0rB_Qs3SgGCSYZL" + } + ], + "updated": 1792963585204, + "link": null, + "locked": false, + "points": [ + [ + -0.5, + 0 + ], + [ + -199.5, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "bin", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "fakes", + "focus": 0, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "a4", + "type": "arrow", + "x": 280, + "y": 360, + "width": 240, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aB", + "roundness": null, + "seed": 850343183, + "version": 4, + "versionNonce": 2075530337, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "3xGCOiSnMgqRghwWEUaGN" + } + ], + "updated": 1792963585204, + "link": null, + "locked": false, + "points": [ + [ + 0.5, + 0 + ], + [ + 239.5, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "tui", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "libs", + "focus": 0, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "a5", + "type": "arrow", + "x": 660, + "y": 80, + "width": 0, + "height": 240, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aC", + "roundness": null, + "seed": 2060822369, + "version": 4, + "versionNonce": 175801345, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "wseFpIN0L02dGlR0S37mR" + } + ], + "updated": 1792963585204, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.5 + ], + [ + 0, + 239.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "lt", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "libs", + "focus": 0, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "a6", + "type": "arrow", + "x": 660, + "y": 400, + "width": 0, + "height": 80, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aD", + "roundness": null, + "seed": 71547695, + "version": 4, + "versionNonce": 605566913, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585204, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0.5 + ], + [ + 0, + 79.5 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "libs", + "focus": 0, + "gap": 1 + }, + "endBinding": { + "elementId": "git", + "focus": 0, + "gap": 1 + }, + "startArrowhead": null, + "endArrowhead": "arrow", + "elbowed": false + }, + { + "id": "w0RuaxrPrgcCWA4s2TiME", + "type": "text", + "x": 63.410057067871094, + "y": 15, + "width": 153.1798858642578, + "height": 50, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aE", + "roundness": null, + "seed": 1210021473, + "version": 3, + "versionNonce": 916297633, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585204, + "link": null, + "locked": false, + "text": "black-box tests\ntest/", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "bb", + "originalText": "black-box tests\ntest/", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "H6pAheHcjrHJiwbqzQ2IW", + "type": "text", + "x": 74.85005950927734, + "y": 175, + "width": 130.2998809814453, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aF", + "roundness": null, + "seed": 1619264065, + "version": 3, + "versionNonce": 1029828335, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585204, + "link": null, + "locked": false, + "text": "rexdiff binary\nin a pty", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "bin", + "originalText": "rexdiff binary\nin a pty", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "njlFDPjz27Wm1YBvTrXqs", + "type": "text", + "x": 42.89006042480469, + "y": 335, + "width": 194.21987915039062, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aG", + "roundness": null, + "seed": 942412321, + "version": 3, + "versionNonce": 892074881, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585204, + "link": null, + "locked": false, + "text": "tui\nno tests of its own", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "tui", + "originalText": "tui\nno tests of its own", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "2VBLioJqFt_Cf01Qw5VXN", + "type": "text", + "x": -437.61993408203125, + "y": 175, + "width": 195.2398681640625, + "height": 50, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aH", + "roundness": null, + "seed": 604448257, + "version": 3, + "versionNonce": 4471055, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585204, + "link": null, + "locked": false, + "text": "fake rex, gh, pbcopy\nrecorded output", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "fakes", + "originalText": "fake rex, gh, pbcopy\nrecorded output", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "ebgDz_PLu46R45427hL4Y", + "type": "text", + "x": 583.3500595092773, + "y": 15, + "width": 153.2998809814453, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aI", + "roundness": null, + "seed": 789888481, + "version": 3, + "versionNonce": 1073931105, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585204, + "link": null, + "locked": false, + "text": "library tests\npackage x_test", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "lt", + "originalText": "library tests\npackage x_test", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "eIhuGsq0FNm9Y56oD_HML", + "type": "text", + "x": 558.2900695800781, + "y": 335, + "width": 203.41986083984375, + "height": 50, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aJ", + "roundness": null, + "seed": 1482971585, + "version": 3, + "versionNonce": 1620590383, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585204, + "link": null, + "locked": false, + "text": "libraries\ndiff, vcs, rex, update", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "libs", + "originalText": "libraries\ndiff, vcs, rex, update", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "ZcWeP_EU14j3C2iugjy6h", + "type": "text", + "x": 595.3100433349609, + "y": 495, + "width": 129.37991333007812, + "height": 50, + "angle": 0, + "strokeColor": "#868e96", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aK", + "roundness": null, + "seed": 286620065, + "version": 3, + "versionNonce": 1131532097, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585204, + "link": null, + "locked": false, + "text": "real git\nin temp repos", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "git", + "originalText": "real git\nin temp repos", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "5pk65H0rB_Qs3SgGCSYZL", + "type": "text", + "x": -120.28997802734375, + "y": 187.5, + "width": 40.5799560546875, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aL", + "roundness": null, + "seed": 1055937793, + "version": 3, + "versionNonce": 1086751055, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585204, + "link": null, + "locked": false, + "text": "runs", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "a3", + "originalText": "runs", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "3xGCOiSnMgqRghwWEUaGN", + "type": "text", + "x": 378.29002380371094, + "y": 347.5, + "width": 43.419952392578125, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aM", + "roundness": null, + "seed": 1605961889, + "version": 3, + "versionNonce": 1977106209, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585204, + "link": null, + "locked": false, + "text": "uses", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "a4", + "originalText": "uses", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "wseFpIN0L02dGlR0S37mR", + "type": "text", + "x": 610.6800384521484, + "y": 187.5, + "width": 98.63992309570312, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aN", + "roundness": null, + "seed": 1670832193, + "version": 3, + "versionNonce": 573013871, + "isDeleted": false, + "boundElements": null, + "updated": 1792963585204, + "link": null, + "locked": false, + "text": "public API", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "a5", + "originalText": "public API", + "autoResize": true, + "lineHeight": 1.25 + } + ], + "appState": { + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/.asset/test.json b/.asset/test.json new file mode 100644 index 0000000..045a803 --- /dev/null +++ b/.asset/test.json @@ -0,0 +1,36 @@ +[ + { "type": "text", "id": "title", "x": 0, "y": -100, "text": "How rexdiff is tested", "fontSize": 28 }, + + { "type": "rectangle", "id": "bb", "x": 0, "y": 0, "width": 280, "height": 80, + "strokeColor": "accent", "backgroundColor": "accent-fill", + "label": { "text": "black-box tests\ntest/" } }, + { "type": "rectangle", "id": "bin", "x": 0, "y": 160, "width": 280, "height": 80, + "label": { "text": "rexdiff binary\nin a pty" } }, + { "type": "rectangle", "id": "tui", "x": 0, "y": 320, "width": 280, "height": 80, + "label": { "text": "tui\nno tests of its own" } }, + { "type": "rectangle", "id": "fakes", "x": -480, "y": 160, "width": 280, "height": 80, + "strokeStyle": "dashed", "strokeColor": "muted", + "label": { "text": "fake rex, gh, pbcopy\nrecorded output" } }, + + { "type": "rectangle", "id": "lt", "x": 520, "y": 0, "width": 280, "height": 80, + "label": { "text": "library tests\npackage x_test" } }, + { "type": "rectangle", "id": "libs", "x": 520, "y": 320, "width": 280, "height": 80, + "label": { "text": "libraries\ndiff, vcs, rex, update" } }, + { "type": "rectangle", "id": "git", "x": 520, "y": 480, "width": 280, "height": 80, + "strokeStyle": "dashed", "strokeColor": "muted", + "label": { "text": "real git\nin temp repos" } }, + + { "type": "arrow", "id": "a1", "x": 140, "y": 80, "points": [[0, 0], [0, 80]], + "start": { "id": "bb" }, "end": { "id": "bin" } }, + { "type": "arrow", "id": "a2", "x": 140, "y": 240, "points": [[0, 0], [0, 80]], + "start": { "id": "bin" }, "end": { "id": "tui" } }, + { "type": "arrow", "id": "a3", "x": 0, "y": 200, "points": [[0, 0], [-200, 0]], + "strokeStyle": "dashed", "start": { "id": "bin" }, "end": { "id": "fakes" }, + "label": { "text": "runs" } }, + { "type": "arrow", "id": "a4", "x": 280, "y": 360, "points": [[0, 0], [240, 0]], + "start": { "id": "tui" }, "end": { "id": "libs" }, "label": { "text": "uses" } }, + { "type": "arrow", "id": "a5", "x": 660, "y": 80, "points": [[0, 0], [0, 240]], + "start": { "id": "lt" }, "end": { "id": "libs" }, "label": { "text": "public API" } }, + { "type": "arrow", "id": "a6", "x": 660, "y": 400, "points": [[0, 0], [0, 80]], + "strokeStyle": "dashed", "start": { "id": "libs" }, "end": { "id": "git" } } +] diff --git a/.asset/test.png b/.asset/test.png new file mode 100644 index 0000000000000000000000000000000000000000..1578fa6630154ea7481190095ba9b4eb9c1c8c03 GIT binary patch literal 154474 zcmeFZWmuJK*EPH-*@(avg9d{o4I%>479x#wqoj0q3M$eaN~yGzbcaYI9g7a>?yh$( z-21to_s{p|J&y0!%@1`6tZQB8InO!A9AnJOM@CA7;3D}&1Oh=I`uwRZ0&&p;fxt=o z3lsi_^h=6v}wcF3(;pSzzvUH0|# zeMur*UyFlt?ebO4x(gpXpI`p_a{8COPk;aQx7dxOy}ef?cfvl7w%w6vx^v)~lQ8lz zAHL+cbkD5gr#{BVXTt^m{ql&J`oCX3LlFJ@Jp{r7@2?4r|Gd15fx-WuSBN_|JaGT> zvIZM_{Xee|(H;ou|Ml|9-!)kOdHE6()8Rj_5E2jndr?@9|1R%&O#C;H{v3_}ha>YQ z6`fQN4^MM#m-+)JxQk4Oi}YF}$HvCQSoxfHmp7&wuUxs}ca`Dy)YNSuS69~zg^byS zg=Lyv1_lN?>G(_d_+f@iVsERf-DPBgF>82ob92Yt&s;Zt*RPdK1=iFiEmdW4#j zQ`w(OxvkG7xC@?a_w+A#czEzw&)zree%g$KOGF*ZWja)5yF|OoA;`#fQj5>Vf4u(F z%*<@J|AxC+j!M4%?(!f7w^>1{2lo0NTqXGCla@%948(Uf7M3jMy;YGQ>cVzHD&Fmr zy>WYs9dtf=NPX*1>Y1j%!X+H3aLnf&{_@0|#{KvOyMlzouVM4*N{h)_<|s;jhxH`U zFcZP6niSYjRYiI~JaJ5i3SOY^s%Gczh4VCb z!~MCWWM9gf_EbYaXcW_|&xa2sbMelxqT}y$&tRb%c3ISlwio+aKW=N}UhQ{VOi!)- z`STjWZh5p^36=Ni=Y>D3MEoaf-f(~5dRUPAB1_D5i&oNochKO;y94`M#U<}wNli&%)Q@J@d7o=}dVEkk zY8L}vzp+Ihrb;Jd8)quzjFD)$yvR^w(Qx)Aq#ASG8-=J=F`#jrzKo;d6A<9K{sXtK zz0ylLD9a&<)LdhBzpX2f(h97~`1FO;Xre5sAn za$`VsagV#?!+paE(0ru$H8HU;xrt69`fn1F)T?Gce*9RpQC1$PaNG*V6d8*;KQ0Hj z=P}`7q6W(Xam|)K8O|UFr$j$r>)y-ky1F_6=Uvj_(NW3$pSwXqr=5lO&Bt8UCw_?8 zF{_uzpzaywrU|GBjYz=zw5U}0(%Kwo64!G4smqwCz?7gBu7QEYJ5YK8m^61at%u^U{srp z@@lmHBobP78MnVoLsRW`;-oRvR|i4@rBl|yH&c8Dz-IHavnY-}231+o*cZ}d&ftgP8LT<>U=*@)V=M)jSZ z99{dfF#Z^5XmwTg)vH%!Z)}s1oSdAkbmT|nBy5`M7*>O&)^jFBM@L5)J#a!o1(vSw zPk0e|dU;(t^1m%%ztk_;d`E|Jpw!v`$#%Ry6=Za1hAcPx70qsFXejpP%C&3BH}Wy< z0+O=W5AC%~`d_T-C7-X}*u~tx zc#V-BePa`$q*!QtNnc@BzET7iGE|FQz(@daYn-l_^$Bx2Z)>h&*aY={#)@%wb<}w< zPp_dKipYJ)^4wz%Klf$C#C+}g!fgG z7jSNgVxxhNMo#XuJdg{S&BsK5pWnsB#TTk4WZr_;T@Yg}J~#8lZlX&dmtptx=1eOT zQGPSa*_fUE=QfLN zgJLN#1PK@EesApL_TlzISl?FoTJ@RWg9rO?cx5h9P6?{K4w<=%giOFx&Sb}+N*2HiBA)T6z%>epRgA;85xs8zWfKrjcAve(Xv zRa90M=0nwzGyBBAR7%$OP2mVOJBX5JbESBEb)-}-SN&UPi&Ca?*Fi)qzoXUB?h2h$ zZ14_X2pOumD!Y}TpYI8r_b0ur*?goWC0$`f3_9YoqG{F4`S+5NlUMQ|*ewrqC5r5= zjpw+1EixN*+Me&C;N zZ@T)ld&BMIFx}AzaGD=mRa*3;ewVe%J=IihlL480eMz5@0(@*-+#I#yRmjA7`U#<7 zg|MHNQw@N&Y&tm=Z6|8pKn;8M_U&75?^YA93j~XO8Fa?4N6QLB69(}od2JVyM(&Sl z5JIZ4o>jra!;9fI5A^rX)F`(*Ioxq|aVfw!1_%Y1H)Wa$B0SX5{a_}_>hwYWF)VJJ zI7Y>CbByS?m#3#{p;2F^3P-7ht}5$S%I)5$phh&tWF3GsS>M>$+GWz47NRagtm^FO z$Wt9(Qc|+eliKl-L&VwX!FMReF&M{?3nF4VzdXSmyeS#O6%m1Z;lk`hd;IqHHm7kv ze5Bp!=CI3`FQ1;C5-<-Ho3kb8bhYl${mTW2WrxI>n}p+!H-9}r$BV_%=%}SlyT-&2ax1AU}+Vt+B{v{v54p z(XcxJ0~O3_`!bZ!Ag}aOLBQsQUgf2kOy`pw)LPY%nZe_eoh4Kd6<>d|8gJ%u@(~2J zT;3DbgZBg!Eh5GM@MrQ*?hr+~TyTQ}-k*C(esTE;k-#=|E8$E^Qq4GA=2eapZ*c!W z9EE>EJ2~U+vIN^RA8K2ccI7l0)&p&y(m95QaejnN=Zogzm4M1|J8Y6I72BX zTcf;aicYM~ZMy05AQ2?JFj{HCWG9J-)6SUl8pB{Ox|Z0Zn}UOPB&_Q6G*l`6&)6DmAYZ~s$n_dq1T-Tp zcrXnqY20;B12;qL`E!SzJ|*{)9VKMU@~E6_o~~#;k5z!UvL=+X`b(Q%XxD6@!V*Rv zoF1(K_NlO0=#I60C**!wp?(C%FV00A=qqdlCg5P^ zxro_e?Kd?wLBlxSY}EbZI*rTvkNu4)?@MIAOIl~4SmmsEGC!)S%RM_i%CWMhb(34e zlliEuuZ61Y`?S?8EqaoldBjp$lKTR44M1m|gSD4r2mhA;TV2Ud_bn@;>pJ?kN5#IX z;BCb&Se5BC68bC#JW)>&aPHScB*ez@Ll=FGNpYSRs+17yB^ zrM0*J|-$!fJ<|a`is_Z_x z;tdVCI*sIV?zepsZCIc(!QC$!>wPrVEVU9wZ9)}BLCiviCyXzA`2$ns*X)zs?t6H( zT22c{=QWM?4rvxm*PTA#5$35)d(&P-Fe-#oTBg)_GCXGPRcThyqk%M_<<_#>I-?_2 zy%LjaJtu`LP%3GMnS5EjtaHjVA>?J1ez+1u|yjuw9p$o1ZmK01!!fLf753<}4f zT38h%HYdGlct2LDH8;xVXjZm_Gw8U?1D{|UT&0vI^Jq+bsXq%6w@R+IFkNH&>%MOh zE{uY3hWn-EdE8gama?H?F^7C&_2zXHvtnkn_5~hWh|NcHLNzm2_P08OqDDh!LYteL zwcv!%CAesBy>P6LxW4(3!+KUihiD&;y4rbTO!9|`y(&A`k$@`HRbf4XQUVw6DI&f7 z%C;Grs!{Uz8UMF=p)8Ug?PAGZcmY>KLHk(4A?CxE4lQ?wt)#t0a+Dv0`t` z8TmEr17O$V+IRR=yf&Q*LGVSxV>J!zkbjQVT%5hwefo}2`=r(m+O5c4%J66IvmXs~ z`AqvS1bz4refO1TYW-O#WlsM0cEub`*MaY^tm0#$Zy6^8Vj8a&x_@6@v#A6t z3!;c7W+l`Sa(&G|f*hL%9-*#&tX7 zX>Ehupt%(?5_*|DN1aLR(nDzW4P7EDozxI{Qc}qM5?Zeyaa+vBof-pagai%RDK!$4Dxl5;Yg6mE52C9a>eiYQgm~a>UQu`C zlBA^%AgvQPe69{&mufzvv^W*SQjy-q<7vx`tQiQ?hKYTbh+rl9WK0?CYuJzOY&6oS;XiL$*jUc*Xfg1#b8z5Ep7}5z7@}xpmFHr? z6IP{GuR2d2mq~_BQ3%I(e+ohpt$BYTbY@TT`qtMiL}juyD;F0Q94BkvK`YUdDlPt1 zhvQWt&-cCRv(u#;u4}`^Yk)eHvs5_?g>Tu3Vj!`40{OD@6gj!|*A>3WTUybY<2j@G zQr9CppB9_ACWX+CgTK7!BtM1cSAE+h#c~*}%0n$^8305Y8fpDzjLIesHnvv(7+HDJ zBQ0d8g>3zm2Pq{~d2KLX1XTqMazg+`2AQs^>ZiKM-NonP<+=`BG@;Dnb>B|8nkN-I z26nC!|I7$#VUM8PfZP))aC`3k#?y-zFB%QzB|nX^st}802JE!~{i&0qqocEPd3kw; zACi{VWVB2{%AwRQJZ2pLS#wpy)_7y12zv+6Unx@VK!pvdC_u|%tH+WFAA#h`mD?hn zBU@*)&6Az&EibCz9ou-2gV^BtYQ%T;z$aeGqs?`Fzd*K>&H! zPB(?1Nf_9}G8|g3HJ}8{J{-cH=#$lmKcGA4gl`(f2>_W|i8uvv?C$QJsG8oBLsnRr40awHB zNah8;q@to?Icn5TH&v;oYy=)|NZrxJrJ_PIX3rYH$_^lvy`7zimq)(!aBq4P(>3Ti zTKs((yIyd#qzfVd%OT@g0J&uBgBQ6YA)hm5?wSmIr;B%ZZ21_Vrk2ZwFdh{y0lCfg z{0n4iZEdY?OdG+39{0B%AhIOH#5Q+#`&l@&>pno++LEy}G=m7B5jur!aeyu}V6<~9 zc=y6z86_nTX6{Ht-+hF-Wq{^-DM?AwjH9p$pwloFhqP;wy#-ww_1%{qxf-m`c%%<^ zSB?&sa>SjorUPS`3G$#_J=mICBA?Ml7wrIiik@wN(2RD>DtS*?nm^CX&C$_p0>!pj zKG8y8wIcHDS<4#3)Nsg^;RliDN?!@#IT8K&?jaCR=2n+X>bpgI^}9?=*X$ymGDGuJ z*_K$-&JmY)~s~Oso3=8U^@8i$7W+3tg|r_rA0oj>fnH8I=&g3bbfvl z8X*?Jcmf}UxPYQ32O1z6UYmJXmHR10U!fX?8u5|7bAn3Uz(=Q>@VwJF=k955x*YJ0 zl!Fiwjlf1}6_&XT6VEd2l1b}0XB4JNe7r}j1cZR>@N1T8HlFO|pZNwIEx7~b_G`Y^ zm`tc$9oJF}e2M3bi4xv^YRGPet|Q{RBebJjK`FYqu7}$pH4c!wQ^x&6Ie=^{i!3O( zk4){)QZqQFjpa6vXLpV2-1}${-?f8p4vk}5AM^)e_m+Ws9&*{X_cKUv-OX*J&X2U_ zRx&dB7Am)}umGW6miHC z!0{pHGKoHCn6q0n&@e)#>G@a+#Z`U-=tT7LNA*#2%suuBz!kV3F3>^o$tv^c)WkK8 zn2rPV9+%BdOIufxlyur4u?#O+TJ;}n`4WqfHD*Mv(D2!1PRkliz(GH^mCZVxuUN5LK67N;E)DU3 zeGJV-!|wyNA`{1@tYYAHZkE>$-Ac&5LML^9?3D#1mmz44cN!W%PHUz9zUKoRJ%7v! z6h9eswySy9^@pOgIX&KzuD`S^dqwB?_F#P2Lb(EPOCVZ=fK2w90$9Ba$^1O#i3-5J zI*GI&LLVBd*{zNk{#rnud>p9!mkao1mlEU9-V_NXOd2(iqb1~AX=n@hh(sqbsY{&Y zs`&Ea)RazsOrbV|+vf+8n^QDy`>&dUZ?-e@8}~CeA5pPgAtwHs(WCk0F^;G^6{V!l zz}UgnmxGt0)&QwJ<+E4 zV*9}6)2LQS){p2@G&XkH_ZzY!gj4FusEai|X~ySzbaM&)&J8t_xnnbf|BNUoNa?ZW7va;c^c`CO~0gqX;gj3kt z4)BXke|26homDa+8yOTB$TeoDi&Qy0 zG}52$H;*L}^42b{5{6)RJrdH0;KSW1I12fee-&N@S{yn^P|Aw^=i;3WU$4y=5 zFAmz;zk!A>WKjv+*jPwS;3fU#293%eCYte2V(&EU&-}>Y#|iS1`FIuapj7nT$yT;% z5HyR;Fr1$#HrCfKsOBwandxSdnJp`80bl1VeFm+b=^ca6w}y!&u-&Stn`+NVBfSVa z+c|cvO?4;hhK9NJ!Gv0&0%RBt9V_VYv^^AET5qkR*1Bk4qr$52_8! zTJ)+~Ez{mBI0)WY4F(34es|$p;V|>}wdm^V>TDz^2hDP2OYQmu7IBc6-S$R7Xkjbn zb}Q}6(`yCRbptT)$RX(%X$^&tg*+}H`LpxXV_+RswOB zYN2Yrep@V$b(!7D;>%nB+hYC4uuW-wYjH_@&WVYMRLsZyYUZ54P_hmH*S&Dhp%L{# zCp5}_p}T%85m?#2V%*W|am5ysk2U<>J}Zla-gRCzbJEGh}7F3g7x(8Ag}zj)mf2jAvRWk@Audr4Ta$>7(4R3>qY&1q3& zjK8b9bb?^kbUG}mk-^LjUY-#LU|VS~L=s`}7*P6aSAiJnGYR+MIJI)GG*vlQyDTy~ zn$#H|nz&s!zWs)y^{nNO?b-a8*Skb$(9)CTYiIz`yp`Fwe)G?tPc|3OVl5zthz@03 zl4a;>Sx9<83e8(?%4Sr_OS0?#K^Q_LP&j@DB%+>9K@hc|i!vXRw;LQikpAT<0WhGc zX=;ZF4BS>y=?eI0RsG+UXZcgf2E?JLVg#IvvK1?|OL-omWIl3D@RkT4fTYiRYchf*dL`@j;Kh0UHZ zkpvE1=@x@!$avFvwtxSWj^o_{8im~~NwN$JEFi+p;)`a=U44koQG?s&DuTp9r~5if zS)^HN#r?FOY8U4V>H8tr+H8;g6<3Hu>+ zOMRX%`d{jixnYNCFA^CQGv_B58Uj-r9_3{Dzk7#FT7c5ek*)w*HH1{a2@3gFCMbN_ zU8FVQW{j_@pSJtDRv&M+0xmR?7_SGnhgH7_zuL&?j{W1t#zv<0E`rM}>=8-+Z{EDg zGj~>{kDQFWee0H(GClWA9-f0X?r~@rX!6y&KW(5R_DtLl3^7pA3aF3Y_loSbNU92M*<)sy$=Vf#X-`0=RJYuGlfo2iu{EvX4~lc$hs&Fm+|YK%C_I^_UGC3{adFV+ zsq$KV*h&}@^aymcsZc27{q2i_KW)A4K+p;SkOad`zZ!d{&X^Xk(ZD1D`}lqDz&vdA z0+n-uL*5`7Zd+0wLJtFeAu~9nLk&O%fCED6Pl2Fz`XfAqSlTQyH*#=YSl`VvntIR( zpbH{LJMv@#c{eO=EzW+ds}P-Rp(EvFHD`WQ4Gpk2wbOG{+DfxgU!n++&TDR)d6_x! z^zlnNnM=B_Eb0{#^mVe_@ESZlJAZ8~qmAZ}DiB zy-0h9UCAXPIzL)&58D!85JemA%hJGFM0i1ud+b+;*Xfe&VsBUbVr{!x2Wd^h1Iyak zP>@%E{jsum*HS-L?S2MCz!4hUYRV|0?{LbpT=La2hWXleGid4fm`L71jo~$}2nWW( zS;NnT@d79|4_t+8<~srBQ8C{jS%BYW8)it)uN+(7EDhHi^#rTTlB$WFCz`{~4k}-5 zN4F-1Xn&8tk`0)q0GNNu+SXwASGq-04a{*Di!}gNVE?S(n+>V%+g&0JMr4}{AQ+SV z@eC22`$J?%$(Se%J_Z`+Gch@n`Rjgc2=oDhit3(jQ^;)*n-#QCz(#ETp2PaY>S#GG zF7DFxV09x5iB>Q$?ZMe-EJV5K(bhBky8@@*d3ZbbO~RtLukDQ3+uwAV1LC;2c5iZ(#3+a z9h6pw;8CXS(aa@&fX3F>8wh_`c?ce_KlwP{ml3u4#c^wPu)^!dgV&y{IKAC^bJ}O8 zCt_Ua63WNK_f#o&;yTBL^@a@PrVw&)QGm+`q^gs4zO@IWWty0VDkhLf0pPH&YHolg z!KcD0(CBZENyYEbSrSd#W@Y$VZK%L7F^aBLZa@(al2`>r1 zsXtF*QF>Ex2z<|L>o-6#3~e~fHN+5`P~%KhN`e~K*G_K!(yKgY`?^giS+0{$~z25f;h-fKw z!E6=lo>TR}e<0bTt;9+9V(R*&0>6xbbg1E{+Xwn_z=sbqziu=>C+-J2aeh@thMBJB zcfFqwbkw4QNVNH(^#_<)@3DMVY>no~d;TvW9R{vFc<2nzQb36Ky8JBwjn zr=#}cwrgXfvoB;sFR^uPf(2*h_dP+z!3rzmW(NC%O+8cb*RSUxIBoq1Koj9p1Dbs5 z5jwux$W@MkMlT!_xusH~&I$IW-W@?yNSK^pN|E_ED=KjH3q&>VntM2`63mjQp^g-ys z=9kQ;di{fF5@WkZI`kKh!_An8$rw&!ed|{-gE0|FNt@l!Ey=0TBKuf4Am2|>T?+la zs7e_=6BQ;&G5~$JMDv{~NjyisOBGR3QQ5m*xvOQ`^hIoqzd;`i^I9sYvIpxPwexZ= zk>LJAlv%!oXQ_X&BDfNC+CFhY<~|1Hw>mZ6X)%y*wKIVI=BxbG*=y(m(!dniak2E_ zRXSQE60|yTsdfOxMnDOdIjGss&sgW!uZ@LzLN~ypZ1C}(o^FP&sKyZxzjG5R4OF+3 z>cC{>HsARL`jl2Z)`YiKwo8#{kC_dN28&HVo{pX<{L& zu}VNn`ZsN2aE49Ep~-qXUPjz=Zy3}nurvr9Oouh7A!%a;A-@9qLQBy@;1Ai%>X zTf>u8bjGymE3E0DY* zt6K|Z@xcwCK^TsIh>hH|DzlK{t}3j+Z`7lv-H8Rz$-6X7K%koEXN1bm61Y#;QaVl! z!QC0T!&SF8@%~>fVAn@!xi?u$zYA2q!9I|5gQu&W`Vhy*$6I{^p&=fk81y_VSu*qd zU@xY*Cy`!)BbS;{wuOx|*muVwzw8Vd=a5lAfF5=}AtLj3qq+Y&IQ9~l^H6bHilLd} zkI$gXVAiTq-wSpbN&lHUJdzRW+1k1T(i!AUpl!o{-t;RiFK^Y9l#&tz26^(QH`<+a zDI&nj{xz968-3)>l>l?eJ}|X``bjZ7?l?!KLv@PAr-A|?<|**d_>+XF&kh%xN8!*e zqg+|*>*|_z%;MYtjr9@f8n_&-6ql7_jEs!vnp)Wu1Xx|QDI`D#!Htemo--D-lg7KP7;f|)pEf85JBdI5vy^VL}&H!IXW&(JovwVYsxCI$$RESBzTV)0X0C0XdNg=h0^Rqxo5ST2N z3e=PGD#D(K>n?x@*r{OC84|Vv8iY*j4QJ^{o9{)?Gd2wus8l@N4RwicO7&g-dyvJd z{XzD|jhkgo_VQ3`AZWn{$cif+5)=roTx$R$R_sG+vru1xBhsespsoLbImYOnFWH&@ z;k6hCb=} z{_2U2&`Z(rfT>S0w{G16aiMAe*bQLdbvdS!ndH-MyeZb*0vLF2x4TGGTSw)Ijg1YQ z8(LIx@h>)xTZxCLXwtN4!9Fm|bTq0auKWFuwBD7be%uaA#2&RlFy=VTUH&v=!78zC03gLWL zVnoc1qcgO{Swm#=#TNKcTZVZY);}NbhTv}(+|u% z@ay*c1=#3~8F4zdHz8t??t;&seSKyFu)6qJQxjQpJMvlR_rZhTTf9+hTGSu|6fwUE zqn#;(3OiG3B;5mXxybv2!gzn~!cz2a;xBq118)}#i-@#d1Gr~`6yXKL0mLIzb;VL- zigdy$D8>UWX@Di5xtQ-x_S>S1csqjzeUP>Bkw?=3;%?^Ve|vX!c0wS7Sx&Jz1YrCj zWclsg-FB;HkY~oAujX273i<2=It&s2`on|GnQN(3a7+&75>Nz7tCt*0fjbrnb!)V@ zZx)Pd9sgK-0ezbX`2Se&I|)sgn>(Q?x;9-1j+pjOoZ@_}c>9WZ4PURx|pYf5w;7^|zebCN*T_^Ch5Zg0Y5C9Q7Two}ttgQU{by||^#>NJ?F5s?+ zE?vq52n3FxMO4n(%*@P70#LO2=d*#CV3p;ga-3ft%m)NH0$cEr!+@3xxIjoS($H?S zLP6QRz>`jS3FT^BS6|;Oy0o^I;AKgu{67q+{dbTQy@dY_r2hue zpA|U&^S@)z=gaWlG3fJU`2S1}r%Z15{^bG?|INeyzaAgyb5M1D$w3%+jn)^3A?RZX zNy$PU(>R6H!VXy#lzE(tn*Wt{=0uInJ5kNU1U)M*+}zwNZ-)uW3~l>o?+vAnA4ZUp z*tsFOP>I7V+@=08Spu>7dJ^gpwqKuz+`2eX`=2K-)YuX;s`Y4(N-w>gx_PS)1CCV80f(`jm7=Erji;G{Md(h8!q|q%fmxL zgaw0lM?C`q5%uW&1?a6WHd*Y^3;*!u#8kb|DFz~Y#`|Z>qTEFwguvthyh07__8)g4 zjyX~BTME~S#&NkV-LU&c=ec@ zsn0e=tJ+Xc4+{$_{-$$0HJsmdY~Co8K@n25VRQK{wSF)`lWF~Kye)R75`Z;uMk z_ytBruL`@Vt2K06t;`kb=`z%hwhjF@bB&w}sIMzD+%sMZNr;c68&lpNdV9RRZn4Of zvtJipnn9SB@3ZN5Bkt%Y;>KEiz1}x5&`hCw_Jz^L5i4k*rNqSYq`)Rc!lWqC?EPnQ z_39K)=+=BRdCuXqWsfb(&r${s~mUb*(`(%mPe)Jkgc%d6Sy2_@80 zOlCu=t>IQD3n)dsk9PLu@tSIPvgbxN`CECf6;r(0Exb-tY;0L@Xww?mWHeg9!hJoG zCATWO*r2NUJDV`wYlE2{*-bYbL@E=+ASMktKA@O+p zWBB$IQM7n&GxFpb%JMevrp(1OT5&x@TL31i*16t^=urv_TuDhOOpYx*KR-=t>YTVQ`4{%_8XhDh3ygNp+f8L)w^HN^x>ag4D|=b#5SR^d zs-JyPcYo1JeoqrM^eMY!R5@fvgqCOQDfx_Dc72zGd@hG!HaUsKqZJ z?;FdQnUu!7B3R(oL=jstne__}`WCX;KKsj+rP{8#=+}<_vD32a?aRe=ldIg+Wg((! zk1d5)BI9zc%%6>0u$K+dr5hT48kYhWdm{dXoUAPR~*^L?D9A9US$KF|LH6pAXZ7RaPhPj<^vqK@KxO=!p2o0{*aSGHU^Y zCZ>tR2=3}L+?8C<=;&3%!}vsO0Yr`PYpnfa=O?89BqRq%-D8X===Zylo_B80`|A%x)B*x&!mU0fWCA40@av!LH|4MQ596<|St{`@6>{ZYc3xGMxW#5x<1 z8}G;wH;71`Yaj=aJcKz~5BxtaG(^;FJ?T2aqayNCJcFgQX!7|zqJLW*Tj2b;I@1(m zpI+Eap%1v@O#$nP_-F9z76fSih2+KE1`m5BSOvsYOwIU@ryB{uzwF@-)g)0^@sKJf zZrLE`x6I*J>7RFZZyMJ#|FLk%bnbePpoj21)TB@|0+OP86B!H$3ykw!_~6-f{>$h* zI}yR-AuXBQa}zP4DBdxGB`Cltuw_n%csSOHvwl$AcoT7>TIbUFSn$Dn`&r`c=5&|T z3y6}wZRC6@*(HQJ7WyVwKb-q&Jj8o&))~&P%F1Fr9p4T&K0%JYF;@CBMcsdV-#8k0 zPVgyfvZAtesj&p(;8)c>Sv{oZw#X2{A_Z_iYiqavxsCOH-1R@#vk@4R!-L=Aq@|^O zZLk2Wp#{#LR1cAa-nl00k63%#1>3)hy&>}6XXCn@5`YcxAg&0-cfRe2sAsT$9vPyN zbP!lk=y0-lgkEKcX4Q~i0uyrRcq)!{yR?5_tP{&a9Q|aYk{kcTbsL8@%}?4YIV{9< zp$$4RQ4nNg;O(5axVbitfBrtOoHOwZ9@5gtEy&?UW#a$5aEy8iw{T;xZEReRA)Rd8yMZp5p4G6eU9OnfL&zO@ z+Jp0>-`ppmwAe7fxBeR90K4xVqUIWCtqZF3Q3@VNI=YM=r5sI#JRJ~#VZxzA0viYC z1Z+x3v2YngjS0?_{om&ohr2~#2?oIJwtu2})$j8*sh1;!U5pEvtc$(wBbv?0pL%F- zRm)Pr@v`Slz7b6p79AS{LOnVr`!843GVd5nM3Y(rWVv;m=%R^7Fj5I~(Q0&{Dg{yt zd_z2B{hz=sHb`+l?ny@yA@3L@%~p*KvWlmyU?hb9R>g1`3gF`_p!hgk@XDQV*WisM z>%G;WwwvBk8j71)umgR3wOq@5iJuXzl*O$g7a$I&d7NrU7$MsV3Tie7Mo0UXd&8q- zQflNumxvQ|MZ1o|U6}6Q-_FRX3g!Na;C^!s4H26JME17`mA(*6oVZqmn}~_EHx-SJ zs4sp0784fgv~>Dhsxus8eXDKvl$q3yy8Nzt+s%*4#YfxXd&QZgGV;yltc|o)LT86c zwyUdVRAzmDUnr@!Nl-Dw=7$pCuTyiShUDeY&z05qO4d(9)LWq1$-j&TeM;1Z*l7bgo(!2S)%!Xz4JNsk znO{a7YBoICx;DnrI#DPvA$~~m;$m{iTmM}CVwwP%%`dub0~ccmV-;j%^r}ohxZonx zA(ZhW-oC}QsxM3n{oSOa(~yXB)>+eN+a}p%eOz;vqxIj?|fywUUTH&oYs@;Q%vs>6oA_HV0(thsT=<$ zkl<`KgI@j-bUM%WriO#Y<$>DuNVsn(3w$_uqy~Yf20ETRfs~3WO9~eUhoOm+ot<4w z&|r;=u!ij4i#jYi)m-^87ZP3KkEoJor$HVOhjRQ@IJ=e2IbE8d|NLlRUw0<*gLK*H zDshCDF3ATQ!+_bhY3re3PLEojYAe`uID_L@@y7x|b+oS+lS$e{?N{U_ z?=H+OsbW+V(Ync-d<{M7?&b(p)gmdUx|vfqdq%x}i)-@wXw4h7Uy_i7HzxKjBc?fZ z@SNaSylieJJ8O}}+J|TKz>FV0zB4!>H<(M>U{?+U`4R;tyrH4DJ z90J7-N%-@mYuV~s_GahU8WXCCNyy@E1dPS6j%iY#3Tm<}g|kgY5!v;ghD8}&h^(+c zvi`OjsZZPQ?X_WJvp1Ixx}`}S@C{dnEdw0ZVY4O_=7#8y~D5O6R+Rsj1N%=m%|UoOFv zy#lfpI6A_li5>C3eEDL~9vkv(&~0!NOn0qn^l~Zwm;)i7K7mo}^u+b)AG7sED3$V` zJD6VNa#Pf#8lIkR+vc)Q6dI_=k7UhbBrLptUrS!oN_IJ}w0b}M9p5rb#YW8__xqw3 z>e3Rk?D%dcd(o9hrM17Dk0$Nv)iaN=V(ZX&#`CWU{A;ENtxRS1rKh0VfrKRpg2c*S z8{jSP5!`?ol*RiC>7}%0y}M51`3BNpJ6vWt26s;o%%NJcZ+`i*R5D&@tmKT3cD+Co ztbpJvsP@`4U%UJ-cq7PbeJSsVRJ}qP)${`Iux{Ev=7(RIGLZwz%Im#S5sI2Qzray_ zQ3)xvg46j0zpgx7;!xQ*_uqXZ)$F%;1$m&7J=Gog*qY03DO&I6gvyXDGnAwl?-mQM zI;s?i-+O#HiRB_E7u9vXzry^A5nuCbbSaEwfLc$0?*>OnMHScM0&Q z0(ig!^8Mb{*3w{p>aGur?8~R(O_+~?oDbIDsk?qA*G!6c?{p|kPELa6PK1XSlCXIo z1EvUYtM+CnNf#?We(YKC4&<-aJI&=5PCLGt{TrB&PJjdWZsu_eVjj4y7GWBgPV?rA zyKcDuJmlhCl(*VuKv&-A$O2{pcfp21E+tOG#;40w=6Xa9O9J!lsK0D5}5hjeYORj2(zHczxQcSSS z1ne(7#6X~)5bZxk^75+2^2bz6Lqw;F|n|0V{F3APMCN_?Pe?Y#$ra_bc31)HZgX)Wo3iwQlg?hK|xA>ln!kaR^zeQ>z1DoV{Cg^4ucb%e6^3; zg`prwikEYRI|S5(+TTx?FP9ZPN*jM;LXHU~XujM!|KYe?Yf}ZDESo&8F z9)StH+icJ3wQ?`TY34;si=N%m6W?#4u%9jU5lz3W^cxfFSRk%7YsT+g^!~KAaK2LW zgq6fsj)ig;ZiT9Ftt>I5aX1^bd{s%LX71Cz&HC1e^}@Zbh%bIgZJu+Wu1awURe#m$ji#Y+h3jHh#=cT9;Czvh+|AOn$ZkBv{XeiYt zV|&tCUcxYtIN<33H#H|b_yHbYqarBGItRnlzhZefXlbA3Vvm7gh!V!N!QedeIeZTs z2n|6r)#wKo7z^4hM{{{ZjV?(XnvEhH@xgIrI`I9A7l%lm```uKa^bNT5)u;eBX=>T z5r4W`<=5VC_CDjfP zETz!V%Ym8FjNQ~E{ih3}42A%RXR3DzmUTYp&hzzXFd-A#CMEzeX&wT~XN*3%^) z&c0TnN39Yy4J3^5X!sZnPk!j*`^hSdoF76qXDcP!#5i3emnX2WSa{lqbl()WP}la= z-Az2=-Yc#S)8oz_w{~j%VjY#3qwsXTFJ&mMErVXFHBabaP`|>GB7+7)jgZ>Oldsxg z*U#)F0zVY7a|t>&c5Q8r2lFizrfKx=GY=Z#_tP|QsvY_!@3{8&P*w#r^tIZ&R?aml z{XM3sQteG?jX5=jeawsLQK5fn;)RDsrISKjyW-w!(|d~&#F>c%r|@(yq!2u# zh8m{hjHNO|8yMtL&?ASp3`WU;euBrXkWo{+P1fSj&?G>K5&r}p*7{K7|Doxu1ENgV zHVzhR04s_pAc!)kARs6pjUpgj!q6CW4c%oRA}KW}DcvKT11QoGlF}_XG(*F8zw7z- zud~NpR%hP#dG5Hb-zEEb`vYj=_MzX%Cah5rCAH&W{SB|TVeBE)g22(xCKHdN2)n5|g=8qCH>cR;Q|Q`BlZ4f2cfn*w@> zxYiPM(4fo_7RukgCm+;ZYBL$hslVjR)z6;1?DJ}=`^DczGFO4Fyy8O5%*V^}l+Kvo zn5XSs6x+Im?}y*>aq$!4h11Z>4@}qnKPt$x4i8qndlCP3sTw0t)f9rwnqu<%%{cpX zaOBv){=tv_EW0Ctf9Wuj6~oXdS*1#47bl9HZ;v5cp-G~u()U=|sJk2;+$2H z_SX2lQdzv&w56A7nOTFhxyNfZE`cC|SHd&itK~&|5{UWvq zAzDuf%T=O1R!KjW(0lz!6N~idQHhCf>q~>p+5vGx*y7dRmS7c zVqA=(jGT-ZN`7U*``un{&c^Erq9q3Id$;{f+X;iTCwtEn4vscv!%IGsJIi^-^D3!W zT$qk(-y_QHV{+QBMYKuXA3v7dxgM=Mb#;B?=aVF00y5k27>%3Wx9Au{J+4`?mHI8>3Fr$z~YT z!q!_poSFhnY9@2@f$Lmc*h~_&Z!x`)lUtGuwanns;fsR;&5_}WqaY05MLMilA;$N! zLsmGeRXQCbHYD_O1D6N8Y{kW8%v=rZUq2qR@oSo!`;c8-s(-#ep4iLM zvR^Q>!5A%m@utoPnW)3T+(Ft?#08U=%$pbGPk1u1dX861kvZiiX&Wt!zxR1pHBiK6 ztlX|Ib*!bql}C%(otuTJO#NAtK!j}F%~ZKv)4@%t0xx|jd!4mz2|p3^lFz0%TuYkOC)4s%u>-$}j(qk`?Q6pzfu1-^_UssE)mmo$*X9(Dd@I_hBo9^xJ ztj`w$6UzrN|G;4&9b~9xc!wEVv{N4XC9})V&u_VMJ&5-#R!Y!e{vyx=7#I%0P9?LL zDZ>1%`a~fVgsO|%Q(=lA9A!DZ+FG5+;elrRz3|q@XHHTY({au1jTutng1Yk)zg;ST zcA-{ep4S6l9k@#{9{08RBsCCod-;a$gmwQ-#IvYG;o@ zEG8m;dRORX|5qZWsYtMvmr>}Za-NN}G^2JmN8gu+30xxzWqD`Z_!lzHa>08ptIao( zYFbTj&vXi-eWy@wI`;uA?S#3Z!u-m$+{u}CeLwVIa7>j2pSL2K7+1PIIqF+3EA*L5*ZqDTxK}c373V%Q@^^NVNf=4f4HV#`GPjgI!ZXpJ zEzSyie3RsKboup8t)(zW|BGIPO1W>+mRK143;3K}c)=kuw_h5C|DRcVI7rQoWUXPUee$Ud~;!%Ead-<(D z3&Km^dfP@xJIbwGb`)dTRllQ!-KCopHr+~hENj?PD-Qgjn${sjs%bMy=a-KWe3Z1X z;RJj?y%BoYu*ZXY?jw~hp?{Y83mQrf6B4dTTN?_)sHdwK3wo&7kz&heM@vLc`gm-B zVj&Y+!E-?EY8mgGrbfN88YrBTubO}%N%tJ+lx5%L{N@IC00D8#z?GB@j!B;1)34r+a9`D zgK#TidwPAbcy`7cOA7l*L(Z4L9;;gM@s>p;{@!rXavbKUa8eOgf+TP>^$Mn)@Q8c= zp(VTs_uH}42voN7KQTjI#IBQreaqy1#j@(t+Y22l{&}I<=3P!rIf6VH_ZM?_IX5sO z&z&ni3e#x~8VdU#3L5FuW{!oGZ{TGMnlZxNx!V2-OF6IWMSf?#5UWQ!Fc7n58P8U8 zZ{gm+KVx#fU3rUV`B!;n9`D}wO(`sfyr)Xgg+@6~dY;xm{q;%#_JuL~XcmW~+Jzbn zzjK?>u9ZgtReSrc-DqVGSrI1_DHMa8bNW+td)k%zVl7Ngy&lPKZ%$K|gz2LB>};zi zXLnH13bS#}X#Z=~KPRh>N{K7CTUcWK1NK%LEX(`mp^TY5Y_$ui8cZfkFj7a)?q4_> z@Kn*h^N?!Qc-hh{NA8+$2Fw`e#WONK1*OIZqnm!F&@$H@&0;OToc|>g)HwG=LI3>+ zr$4t-F~@DA$u`kIpYAwbwGwi}yx>Dc4}85j7l3mBOzTuHw0@{Ko^uUnYcf1d4t1`u_%x*Z%LL(?rDnBg-52;PR!6HkMQad*bH(q0gqaS0_gdycf96y`*CQ+L3%scVSmJt%&`&6|Sek(gA~8 zz@cs`R1cbIrlB}2Rqz25g%sp$Ra}KR`0}kian9QcviQ}Muen=xk&cYj+YONc%LM^^ ziQSn`*CNQYPo6TEr(_=7cg9J+Br9ee$J*RGtahvAd~7)22DP>1re$iDgD9aS*30Vj z!Du33z-j~Lz3sz&i*0|@F0Ln=R^3vRcOc5H!${rS$;f^qgYl_rLaK$QjM?sx8d-OL z4fpQLo62}_7Z=GK#i)^S7>)3^J?XM2TEDvdbNJL0FD0et9*K7g(=4md#N@ptoBO@| zeIw3aWEJf~8mqwR8meZl4K~?yZ6lz95_bg}e*6%EK73%z9jwD3>UIZI0!VFjpsk@o z$O36R1eMlI0nF0SPkS&N7akt)s$NC4V3n^8 zDBEA~QsZzr{pw}-hk_#Vu6Aq>^*na#R?C9=Eq13N8(*Q8Z+KcF%p&*KwfBPPLA~2z zj>D&#!{ej^Ol#2iM&{_gdi~IeOyiLKq2k}U%%uTO-|&R?3*}2=>QqT3>AFiJ6g-kd zi;bu8EL(+HxdgIo4Oiu?ZwC3P93^=H-}ZTYnctv|4P!k9(3}$ybIVo2OrNS`1|9Bq zp-mgwB~AJAOWRPE@KTeM6}_QH!QPsP&DEzLd&t=%n= zD-j99Ba)Gvb9?U9e+Jw=hL=>!4V%MPJ{ss&wB~;_cZ%(_GMnZ;#F1O6=C~J2Ioj)e z?!x!>4&CC!IBeS|PxTH4$BEj{=P#x^9b#0YQt2NReBQ+{$x^eet-Z;~jO?n$dN5&G z4hk(t=EXn$>fe5(??y~c;orOT-^0K+e0jzG>j`ADxcyz+t-vR@t>Bi{{mJ-Nu(cB7 z(%074!9UP|cr*Mgyg;xVEV7#pGW>y)&`;vwjih#Q`(C zd!YIayo8vnKz+X(LVwlri(3|0DGs5gM#^PgEw(d-0KbJPd4G;C&Q?UwYpv-f_=ZyH zE<7X_(60iUyRZh`yUqj(!f|pAc+WPvO(?`yHv7M1+C?LIA`KqwKm(= z$Ix4*vX7)hjz!8HG|sj3erpNiG4F`*61{N6ZM)mhfk>>65a7v89`v^RXk*N2IN$Jf za(gG2oqP8=Mlf_$B03(|S0gyjTCDNNgYLG&X)jE43pz_F@r8H%LDk9lP9+nbBWvLwQlL5!nxb5hMPIm{`vZkaKDk9wQ(FSM=h~0i+DafG}kKlIh>Oj!8Vs=P}g#AGFe8xrM{1Y#R~3|v@d7< z$vnhKuHnwt&@c?p<3U+eE>*NyOUWp5=T~;?O)acD_IQ01O|OnxL{|2ocu`f9Arat62(mk2ynOs{&gsFyEVAKJ&9D_YZdH2J~9tzQp>*FVLD7D z!sE9@F1UEt`3#tNRj+(M3nS&q9hD<%kN@om+D+a_NRB(4OjxY__blsy!Lp9@XoUHeok3;oiP{of^ouZ-w$a_Sz9Wvo&|e>KO<9D8#Y!KO z*$!CjZ~WHqj=r?Sw`gG`Gc$PHeZ*sbqCu3bUDIXkk^0GTJf1twe5fR}(d(c=&*iKt z4dJP+C0)p%eTrZw?mz_UIhU-ObEW=wOoNMfEs9xHSzbD4jEz03tAY#PrN*0dU}Ly> zbo3~vWTdnBiFc-g`EgGhC?Ib;0`2T!EbN0O!QpDIWAy#)>GDXhf5i!6=ay7v^nb}{ z9~VPA9D&duy6-|OmxhD60tvbrbJ=F3-WY<%4M=2WXZH|W#0NWO4-9}cUmW!y4+MaF zTim)gA7jN10R0$_Jp^t7%u?yAKM=$3s(;1m4gko_1gT06rqj|l5A!PQ%|nJ=-sv*H73>*4C*Y|8gEJ zy34h_AK_dl6c_htBso49i%0o8m!a>(u1cspQjrvijf~~Hf(^-ku3svkosvz^yQWPM zJLoY~fA>>QGffNr7o$5*nrb2wUayROL*{3ZAUo{9wXPb9x!riw-rEybnP#Ia`{gA2 z=>oy~+1s55?6SN49GHaAgHgO;M@6vxO|?Oy%3 zxvqU(BpUrSkuKQK7fPsP?4zVxAt>SH9i4LeK4x1I!$R`SAP%eAPOF*A3v^o{2f zL{VgZao9AIY)XgWS7sM@Dhf0whh+py_aGTzZv0C%-WE=HpqucBtitT0uT9|SgE}xa z<~Lw!)-x9#9!{g@{1Ce&tFBvSYgoq&y>(w3ZAEZ3khprumCV~(NCzsMa1L53>i~18 z1`koWGRY6%N0d3QzIb_>^oCzOEEB2$!zjG~#NR?n>CcA%kts6mG6ItcMQ?(zPe9QE zAnhy(v7CNYtq;i`L))7w_bDGJD&Xw2CDx%q9*nz3?5p` zRT9E7HGTz<9GYbxvXxC5-+Qz*TbishfRv#J7)GmiAYU?G1o_kMYZ+~I-Ro+)%~|q_ z)4$;Q&nN)jafb-2bS54f1x6%CbvjdXsaU5Wtd?N!9&B$5DVunKiY47?QY1mw1r=)W zfKRNK1RLSsxrIL5Xx>ZT7iD6Aw1aX{VE8+XD%5@^(Vf4>&8;HH_Pn^95wL6~u@Lsr zN#w@zoMRN(hqcNf7@gpn;sbJ6(=a9dgB2K>0v`U6&1W1Am%Is&W5l(g%eA6V;UEJV zeDFV(tzNpPN$WcO^kWsCSU-&dwzMrEl19ML3huvj|8eAY0WQgK?4?^zkcnHBJ+jI_ z<9|_JW1${x=JN1$+Pfa^c>yaydZy<&R-b0Kr_{bZkES%5*Hz}5b*(lSj=hj~`pR%b z<^7`mqhTkl>&AXFsP_?SctOm1ulSWW6=;r0(XX-i5%cboQq$DkLx0eZ?YC<>*l&=B+95$#FkfDZOyfC?N(Mk z?CHdvv*5`$zM*@<^ET`Afn`C<5!UgUg&bYEy^uS&s|HMWYdEpRq-FBx6R#1e!^7ft zW|CE@UdS~@ zItS)3Gc^D^)jb_3+=B(@fN$Zd7wmMiFAPu|Pz8cZS|`t*CKm>2kP~GviE`>o>Ek_s zsV@u&yB##P*4AKOS^Z6+}`$&ymg|0SH_mX$eQ`lm{Q`{4Xd7wc8JysRH7+E#BH)@T-nsxA7a!}ir4 z*=V-6FZuR}TA-`cubBP+EMQq^Q=|PI_ph&JbNMLuqN_>NErG|@;$M`#su^x=y{tVl zoH?({j`O%}H~&boeeZgt88QDm4O!v7ZIhK{gN^2!A1l3c@rNQpHjl|rX|!r*HD=>} z`Rfu#d_}Fo?2E&zgK@#eQ$25W8`>A%@#C~|HP*GRkh-U_L=^40kMAZOEsE&oJX(bv z14>EMi|6qBbm`ai-QAeY*D|AByh-Ir%zfIFvD*2orCP(fd5gJKSIu~En(7l?O~XCJ z+3n>17MutB??m-7Cfx;Ameo#s717*`4vyvTySD0^Z@8;2X6djbz4d&gGGAFuL9sk? zO?wp6xOY&kMm7alY4OiJta~+tB7Xx0FTAHx#_q!$qK}@|*FzJF{mnfI=A)6XoRxN} z9(4+qqI;m9vK{Nj$8^+99B&SVcl4Up3lmq&pmx`dEhuLWlo3_Q>|_R{aj!J$tL z3RP(5IeSpPZxq+_h%@yo-J1aD7r2 zm`Wv#;@zCUFq+*3+6e?bx7z`Cr)liU#zy$v!;UWtCA8J6^>lDVD^0rG1RjO~n1*}j zU`9g@6sx`T%C|pOY-d5#v<<~{hM;CpP$8&_v`cs`=Z={lkYsIdJNtF^^g~Tx8ovn$ zz((1Y$3ADM5o7MK#%Ay3Lx^hHX?|qM2;)QqCJ=F4X{B^#a4qm}(S620xjVq*E_>i| z_nIV3VwWp&Qj4cI>Y|1lICDoYR2fM{!RR=En0x8URSM=W8^7NA50p>vuttWMXxcmp zZNV~{sC{qO?(NEVbSXMe(nuZQ#;f#Jh1xyL#*5&-@<%sl< z_0;brH>NUN-emsz)K%fWl21g%HCRxQDM-rHRJ*$U4oceHz+0Rig@L1~_Pp9{wH)_U z+&IVMI*cIw>Y!Hx7ISvk^TGG1s*)`I=LW&=%%n!5w!_!pCy_tT)Aoe1CDgLs1i*#sXFM)GP_#MBYG&p zInHlxnN##Vw`Yv!*$&u_abg&Tc*y+OgFuOdj-`N%hi?9q+DcFU*iW1CEtg~x9- zey^`96keOI@hEm~ASTUVEd-ddibjsT=)tS05p<9J`LD-g^4_}kk<7cY{_={CFU-Y8 zewqavL=>Y-IHF4^+Hx#4fept)h&1VqssgmFEsTr?F6oA_e8Rtw0`xIN4p`NF0ay(Z zU&FC-ZX%?oFPZ z$l5-579H|RMqFiMBMsl3yOIwK0JjB7a&ld8rNc#QFm1Ma-0~ZVOAZ9x#Rz3E-f9If z;cFL{+~QwGWcCF90$5t`b0M76(|s_*u7udF%`Zr>#oir<==NAazGpSw2*U;){V?yx zO1=wJ0#yUo&)&Q2{_64H9k;hEABxgc}K;=9uu#N_`dRV z9(qi!%9FLvcAC4DmsD1fZ)S#z(7533pI>dAU8Ksc>cH*fvojqnk@JbbM4EG&be5}oY;8`~F&=+0%Rpjco~)ufBaZ)T{Az>Mrml8Vo?Dgv zdb1(-?zyIixbqq>i1B;&Nd@|Wima;NrMSeyXbt<8n||X3gW|A9_AQ0!YPpZ*0)lwf z)apZWH%0b%CjI;1wOXXaJEL1N^NXfsw(C);aRQ7U^Dj31?x71`l0Tu>OS8T0rQbdw zaZima!ftsmVh=AooQ1w~UTFvrsRK?FO&O-+*cS@%!M!8+FOJ52nR;K|o|u|{vGxHp zt=Za=3S&faRx|DYhEh(tB=HI`(sOCoc#Vih5fwv9(AXgiltm#6VL%FXD?(#fAgA?B z&hFMSr)UpF7x9U=Fi2edY#j)YxYg5UCg@Hl4|LJSk2i?(^>BYb%rEyrHnXrd?+(`* zd0lkVsaWqneEICYyZA0b42;O`>TJBMQUL4dJS`pMF?3wWOFt~I^F@$z|? zS%o~%iNzC&2Z7R&Me&|v@J@kk6dY1$NDk!xH~%=YGy}&t(1~PU}p;rH$-q5z>l}|w=(v$`~}ns z*zq+p5jQr#1BM5tD{Kr4Z&%?h#XQsYPX1M-)%2juU2E23wMNQwl%ExyL8+heWq4qk zl$C1`5*w}d@xjn#YJb7cYU;;N zcW8!f49jg)Ys27Vv1EjO%N9W?N!yp)1YPZh5wm!oNuEN?=*aKi2@l^u z6=^P&-FF3KNFW3OZk8x2tq;FSe(8gF`HRh4m%#?Jjydhh=NW+zPJJE|(0uhQdcn%^ zFe|W>Co`Oi$g+`sK9kfgQO|-(qh4R<(9bvN53NESe0WgRr2S~Mm8`A)X6pS6z24sv zdU;RJQdVEQKo`HbJabi}S&@&qSixS$R>n*#wZ>SUFRb7TDwd>r%7zr2?&&avbIUQgU&Q53zd+iSzrCB zz&P0Q%TL)xI`TPfCmt^}H7DW!VBkAkvYn9`UK>mA$TO$q^XX{M3m@>&@!a&Ngt(hr zN9|fMx0#-AUmKUzmz?s)Ud@6itnW`>OIS1Z42)6s>}22LJI_kixuc{oW(5n?^xsO3 zFk!0<|LpXph`*^}u*~eQWUCvp6wCeKr|2?s#G6szz>3x3&CDB>SNjHrjckAQwy_0G%pGqC;l+n3%r6oe9TKL|Qm> z9yU%rAQOjRR{6M1NREPwPtxWQaC>1qi6m8mln=t_c6WCLG`4}j2|NvW#Hv4`@5?AC zSPd5E42&XbG8m!Aa701z*BZ18tqvVvR`8XYjvsZt!q0vhbK}b%tYtE)PP*&@u-Jf; zzwyw)b!+JW@*7Pt!%9t>&(}|#`EDam zmT(Uu5(HA-t(|}Wry_ewSHUzVnZ4 zw`O`femhIOY24j$h04Ad9X&rnY+-mC8yvSeBf=v?$%@X_ee*#+3v1)f=vOxAJ#-;H zeD{wNT~Gf&gv{ZN5Mmq1gWfJ)G=6TBgvwmHG==0V5Qpnv8f6;01Q`*nBS)!VTiJo3 zaT>802jQ&n4gm{O6~;n$;@RkKD*~(}7=IFq9Rzqg;y7ptlOi6Ynb0cWv3P;6Bk1Ke zklDbd(jjp9l`x$A$cJAZ2iiP@GDDSN)E~hQ`8go}i-YfHvW|JoYr^j)h&R6^TninQ zTGN(}jfHKh!(+eyH`3iXroWGl^~^>mxvI(BCi(dBil zSF)D!!PUslnE-AH-3E@wI(~v)C=n*Ex|SAvczkenn&Wh6M9amN{B3=$aw<=*KRO24 z7T)`EPh{BVC)M)PootS-qxL^^XKQ?KI=G?#G^Uyg8x^CK`W832cD$^Fyb%QwKV0jf zV(fnwwAa9x)UAp!os9&D=)mH;vlkUWSz6GWM+3l38+y@EA-`PI2Z-ANoT8*7S?_%b~`)fFS|Q9a32W;0WR|cRq!Ns=yQufx3Xi@sZCN zszmH9We{rG+O7d0h}i}QFx1wdHHyZDj}CM{fUk?k<8$b)8Cb5lpxDox$$kI+AIrQC z;CgWeqK}LSqP#}zY9TRY$ptBuyd-u{+4SWORdwFHU4qFw8~?=2q=R-+47SVOse(7% zJxE^{rGHOm9yj$~bI@C7V(#HMDTy^dRRqK;hn&-pAFV@*l__pf(Q4SB-{SB5{;26T zpw&|^HMf53z(YuvOi(z0l5%`rKa%dl2vuw)lu{fnB2J$(KFQ&7wSsBNXU>vXx9HN5 zGp#$BFt33LD}YqU!H%>C>X&4NEf{WTaG}eVFWn01?Bw=viI{FY$>IM$uK*L59Z5SH zaVn0_#od18)Q6-B9z_?|C!U)!nO@`NfeJE?nj2tdUveO ztO}A$3F|tE`-oohrc=+=xk5*09!v4hKLA^NbL<-5oG0qi?KVlkePIw=? zEh3^v`m6=i2(bFgXd^E4DUw>7Pmgl_XTt;o1QU}Tn9ed~j)9kyEUD_aHya#oT)clq zL#w_0U|g4`zz4E8_-M~~>!?4I>A3KhCHy)U44Nb^-@9(8a$cgm&Op+r3Zn3O$z#rA zpua+5i39|JV{}q%2^^w`bB}~%tdoixn~-)~h~%20iCay}mMQq?LP{)%-elIh8>R#c z7~xzbDGUDJ=XXK(^sYT0l{45(S5^=+lQk1~I4v@P73WwCkLVfip|l0kc&`TU84MC9 zo1oNzO}Ggk(A3FbIgb%=9bOBD!SUA&fGfh(u|xrBhTzDDe-EptbcVO{Z^FYxDkP0| z?3mDfyvF-c(rfKpr-Yuh!?uDRLU*M1fk~H0Qi}SUSS#ik8ik~-ijAzl=yoEpMnM+X z84~SX?OP;PUyiB1j{D0gzX%me*BKdQP6(<_gn<-AJz7>BGg_>`G2$ zdYc0yn}8n3#%Jm1rmM)Tsw9}$I5{0VA^lJ2zkOTn3Q=KsT zzBD*B%XuK^(b88DWo$&__NFAAE`zkKS^Mg7_9PL^XF)~ zk#o<=HF9gK`O7O)f+R|RA1@ytpDSHRRNq(-5c}@;VZ*|bzRmsbFgCl=U)Pp>-lb+b zxymgr z0veT>g$26HmoHzu_!MT6pi6Bj{IdbGbLfl&UH(BrsXh0d9UUFT#Jq*xhJ=Jbi_B}* z{p8IB#AuCtcljTj9xApn#l**uS7}u0?GI-}6WA+Vw=&T64!tpoW|DcncRlJJy2)}3 zxG&O>_whM>g`)!D0V1Fo<3k5vvJ5kV`4-+wBBepwzQ~bAwk|F zMTqN4l=%B4Cw?RJkGq`Do}%#P)6-`$gT?HSCsOM$!;2U|ktdVk+x=5Q#@%Bv`L=6m z?4qy{=0XX>fzrN8t=d^oXf8)2{OIp~YiF9)mJ%!9bnf(ue-4$axIe9@$e*pS$8&=e zH=D#8LmZm9v(03*irl%+_B^K7z9Kus&zgf@ndeD-M6csH z@ZtFUVoi|4{ThjMufVnSv-e5Fe6D*-eVUq?5sdSl{_|&`;x-$bIS5fh0M5L8J z=ko%aG*vlvx-I_u-G+}f#A<2BH#5<>szoYt(+S+MYQNpb0(KueB<^43kdSv>1K)nl z?ejH)!BbPPDenciD64=#IoLVCp*rAjlYbXk^FVz8dMKIebW~KGu#}QEhHzSywJ)Jq z<0Ppp*pI_3-UCb^lBL?<5|CE&@Q4-84K*Hvjpi^w;za-%Dd=(vR9uYzTJwm0Fg7p% zm?Ge38^7IrETXAfYRz>0`lE`>sdSJ_V1M9Y^%*PZWCgo%m|vmf`{4_HE83YVPv>$G0GaHu zVl*!S=XH=ZfFVNW19Mt9^T=x7lVUq)DYmz_Av~x>E3{k2g!Q2({C?>*b=BP=ZVK|k zpA|M9-YJZNZ9iaYZ@ESAd*f`uRAih#?!vNaoKtb9i})zfP$UmEx962+8Cg0!a!iz?UmGQqt{$OO zw7OBYanw5WVm&!*G4u{2?G)qe^5pVDS6ZwK*0m%{*lGCuOZ7{tWChD3`I5D?L2+{h zraM6w<}@W@T~rP!u#+h#gzaIZM%`vK)4nuZQY;(t4-s~$d@^sz3+_N3(FU~GXzqbf zJ{2XUugMpPKxeQ#87xZN;>_U7fN--)c(aMG+rdZ=qc&kMizeX%r=~7? z{G%u*=RO^QhQ%%hA7zjWlh~57lbQ<;O8CEEX92O*f%^ zlzFQ&KM!NJtB`Yt*M@!+AuPA}t9!k!-zDQf3iTvx^( z5;Er@ub$qBjN)RT8;Y{y0Trx(4KsP19`D3S^BXaEY$!)(H8LRkV~`-IXXuozS(XeN zX^lY~31Y$y)a37kSIFom#0fWlJWkU0X)gcn|7wp)x#KnFPity#ySSNBj&$07t53@K z#7}PimM1Bs&gw@I2`)b%v)vM{Z zJ+MQ%`NSak%*cUBkLBXL=MO!}COEq@XnPA43=B-hjywtm8plwG?Br+R@Wjuz8?hZvI}bqC z(VMB(^5+BSj4MI2L#R9I#nOS#dU|{*8LJ!#T1|(@hzZnKO)tQ$ z&c$8~J_uFAvXSG}LT-}&mGnSRzWl&C!LhDelGb?$m1=b4C-{vcE*MuWnFmzO zH-Xa(st;HWwTp|3gG~k~>kHs{5r)Xf-5l6{YF&xg`{WLzE%|7m=uW~_flz5xD#SwE z!kys_+k`np<@h@~c(qx~uUx4Vx(~(fng75xZES*lI!!I6ybo?NVsH;*7ibHZUPlWCkBz8t z(jynrSSe7AO7G~$CnoXmv$u?I7Wza7v7}L_EQh`q!B-6{*59j%L7MvJK#sms9 zb)JyuzhVx4D(eX(J7%jPxU@k>!lDpkGViE&eg5rr@UfOAcu@^cj@{)?nWApQ?U zdX@%_3z6ulUeq5rl90WB_a$jXKC7WyA9rBDxC0S#mD>~k_425Icy?__=qZ60TxtWT z*H8XvJ=*0Ut%kqvjtP;it)?#s&qUl^F1Nq=PFYAIa?d7Y% zvSaM+el`oxTW50YmsB6fd)QX(&Syb@hs^Q?z3WFXsHEl7&A9~7y%=U~W(~tGc^NmSzPTAz#NEuvJK?Z1S>JC?nPt9ZqIvI5qvCO$z+K){GFOsx zYu;*_6~iybq^)x$BLFtA2pn*Oco?z6`w(KVtLU{GW|MVir?2|3r_e|AXs3OCb_}>6 zk&8OVmf_`wf`FBUr9M1PCfRb}J4_AJ+k)u$mf(hR0)JgVWW`cB}jM@YvUz%d)!3O8TC9O>~>K;YKE_Y4m1f!ZIt z?E(QDuKvkiff5COa=eHjR>(K3M793>`PBbAgsJYp z4R2Nl{j#(b`>GdU$4w`R6bwyD`d$Z{h};C#+}!L6fuMn!_~Rt~WL?~F;_w+kq#)!3 zRk6r_zRV7>S4db=`3DPQnA*ds#izw=zWh5c$tWXT-KjIm6KaAU_9qs1oS54S45qTs zxX8ykc!fmpzYVCVBuNIs(3z5s_vh~_x&4D>FEn;;xMGWp(OoI%)oK+-n zE1$9;i@%=-g7}V=dCv%c|O^?6c{nmS<~xy;YU{wbpo`(@THG zTR`4NE;Qt=H7E={(!xpR@k4k^iXh|ZMsfH*nv`QGC3m<}15j=ov(ICzWbMsZuVC+p z3JVKAc%TvA6Xr14t0=O=eD`jLE1$cEhy3x#1&D^^(FWrCD5Os1+=sKxe}HQnE*`nL zimKYwNB|h5lkS7gzb%fP*mML2G372NaTr?*WJ#^PfCn1BUS&)uK6FZ>U>Yd>mF2ND zFflcOw*@NkLWZki1@zRA#t}E-wYQlZ#1j%0HaVt+p8k}rlF|%!JV!%4q=gu`Dpci_ z!i58Ff-mrjnWiXH8Xa@S*8F|^W3Ub>HF6n|~?%4MlC({$#K#*`lJw5$Kr zboyZ;WXszBEodZ(l}zMry5Z^3*#$Ii!)vm9$kT2zYUNs&JXNh1aUsYl)k45};D73#iaQv_l#R!$^~0NDo@ zXX})8Mp2wTZ3+uR5&Vm~Gp$@;$Uw^yagk6K1TqK@l*1K{IRZ0suGelZHRYImAKz?m zuI?cG*I@kD`1Y4Gb-XmcCjzm8CP|YqY}9kl5+*cyo;!w{vqjS6V>viXV|zOi={wDY zgP7L=6Vx%VSM@4HyrYv`WmwA!ZN*RyHjU@SP-m$w4S(vHxay@Lk9l z8Ku%%9KNz>Vad&45j8n2*m&v%GS z@se8n%+#M9Z2>pYu$brfji#q~GOutPb#mLmlN~GFw6eJx6iAUndp^Z*y{sTb$YatNIK6dGw*zS)tH*m01UbJ1(M4QU(G zLNcFHn2p|*JgyVDOXdf2G;~h<>MfZF)H%6UVN$bm)U|m z2lofCPlD#^XB7GA(_F0HVANp!;s8EqLoGss_NCIvAVKi8b%C4BG^nYu@owe{kF4pM zIHj-wTrG6;U}c2{jR>3e?rhC2SBIjXTHl?M6rDfD#Oy=a8*SDb=zFa!!$$cL#8@zk z@mvaPbOezGlHkL)3ALF!GN z1uqf>x!Fw813bENkft?dB8G$oSr1bLKiJJC1X}`RGp2YGg}OrMoA?y2uOxg2dBG5E z<;kr_T2t3P-F^PLm5J*5^$)q}B6fcQ=Ah3kF>5~FJ$54f?+mokHs_eLnbsKV_t*Y1 z)@>;U>3k@Zaa^@Vl=0rKv(Jf3e}?McYT);hMHXG3Bw!9`BP#Ca^nOtexG`5@;l8w6 zdO`Y+)#)sWQ=)g%>&})qnP^q~UWr`e*t72Ky@$n7EBTzD7Jge$M-x)yc>6|I-}^IM zInfcZTZ8W&6dB6lSSr27JI{o72**Qflx|``P?$#YtpY>KD4-(*o`GZwh!#Zm7Vo{} zy_3B{t5jre)pV_Tcb?6!7L|y^h(F#o+vWH+17g&~krt3~ZTP_iID-JUE`H}vG&0VE zlZF6&h>MGlt_qBO(o$1pEI3bRG2OlIgmf-y{Vbh4<#F;qgO|A>wzF6a1$GYp_U z9h!|Oye!rvBz|OhndINxaj#&#O20IX{>o@KHCdzu|KU<$D@L*3o|wq5j{WE8+e7xa ztHV`6Dr+3ZHL17<&+xasrkP@du$ghUqKhYL>H@xJZjF(QMp>^%ke=mZROL)C?Mjdt z&gA{DNJ^uUeJpPODhcc7R+2c5S+)-j@xKM6OHra#a3G=bmLO}FR>(Zk=G&$phi>_k z5Q{?Da5iNVxY`X#dCGh5#J-iSLbB(RBsyJ%zar-r#QMG*cm*mG(Y3}KkeG zsNNZ1y+K|)Ndh!JCr0vL?uME%u3dld-~r5pxnFKp*@tEz*)i~FLAYS1atG&^>^#u< zkr_^Yk2xMu3Hp*LToSm{Y zD)PM(Oy350SWL@>=+;W7eD2at_qao?G1Y?<{^cvMy`JWYFqYJNK@bQ5*2}NjjCER=7s~G(rddG$%TUFsrrC`xpL)7>dC3ESoRjSL5KlOQr4S>U(v$I zUp?*#+MxQAs0rxxKHgN1kDTdsO?G+u&)+e8TZ<&gaw|Vi>AQ}EL|bC%+i*tgqINas z^R>)di6gHO8R&R3IluKquNj!VS;%OLyY z*G;Onl%s_-a@mqPZFE%k`*SkdNT%GYAP()Q)=4O@M~`yYmXqKYs7hyyen%m0fy~Jl^(}fwB_0V z3Yp0k4_ci)dv>qg>u`OkVp$7!%M_nMbs+QP+5wCbo1Q+gLE33(>Oj`SX&76RG6CEf~Zp{e073_|(07wWn>W)0&J-w_ZE zkQ_b)+vA(-HJ_1IN|BLRDt}Vw<$pV)B~F+qm1g&DX5AUpyZ?O}8IZRZ%I&@5>bdTp z$u%|0Fqk&C*X92XKjb+3Gq*I^^XmK)4F*;ITf%J1&J%T$(lnIul?jgAoHovrzu$Kx z$c~2BKKf7}hrOUwoh!`kbntONjaBV5~fKX~Jl|z)k;MD7Oqrm#E063>NLsiOiU?@l$y6qm#CYxzJq(DuY zhCwvMI!{0q&vzq2?-V7wA(`3V zrSDptE6NS)(7HNO^^_`Cb|l`w<`4JjG8otZ2a3z%ip%-w^n#IW=7oCC=Cd2nrfOmI zHrVc;V?Mkw1{N7H4yNb8~2*#XzAnUf@T0iz|~u93>`pV#&440dHr{7~|0i(n%2le+V|ScAqw z!NCxH(Uls{Z9r80J6E?;-+)>`sW?w+n%tuO_~u(xll4gDP=6mo^t3{is{t@wk}P3< zIq&i?J34_QPseAt0C=2P_X8W-9+x))?t;HTE-Ii@?|3 z_$j`hEdKEIX1h8Z_AL;wD^Rh>MF%DFv9Kh96LGBXo+1QM>vU4Up%~0b0Z7tc@`GJC z7x#4%iJhXE8Pl{GT?1)OaNBa-o{rx^GD3iovEk*p9rc*`)Kj$$@Fch{+0akWv2eAE z_x$;rBWn<2fgsnt5w1p$^D2tfi)YrK^q1{IG`7E*;oe<*T3)?oBj_qi7%K_1~{9kZ5ee9Oy4)IBtc;)L0$w!-xLPX^-je5U-*mZb_R-dM9Z zXYg6l#=>wpL2TBTbMUCe^n+7r>dUkQ!ky$R%RK!nVCJW0qA(Fw7wG4%*Z0)`4Ws-% z-n?R4=(oW^?U++f{KLW=pxUFly872I!%fxl+hgO!;8BAnAv4K3!o*V!9a5fkR9AvR zxVzKL3BfjbaJqIx80&plzY`M?5fK{t)9mq^BJu!@d%Q(YM{gHuD?CgOJmCVH3D$R% z#aVkN0E#2#ir^~|Pz_8Z)BTV$dEl?Z@&6_C^?=#g*QWCF@9y8Vc-L>J``B1zx*G6% zW6V=WG=i0ZuHoKRXPL3Df7dodNo}>V(U1A5e@g(Hab1-Bu0Yjs_51hl(tnDceg_VP9uAk#p9|2a@)rOEk()Y9mAmIaMNgZPtr)xFSZ`-MP#UdbX z98kAx#=F-8+-fFHgFu08lCz>fC+3Vdj%j7-?g)e`73F;6u3r(fGU`vUuUgbQ-cI$T zI)Nb$pd8cBJ+ECFw`@T-dSzBFC*Rv8Dg)BOZ-wsHPv83ff;jmqf71QUaQ|7#Xz4xM z`r(aFZO7)SA60!?+HF1~qY z&=xXgMfUStXTPkTMESmR=DAJ20eLpas3ZhOr8?xc*w;UpG0%1dB^i*lL^$hW?0&n@ zzVj5X?yG@icarq6@Rg;dfSYuy#qEL^GK;oe3hu|G$NCXE>)_F2bIRKH>q zk}q^TPi_HgVeA4qLcKv^RW1)WDvP*eQfv(sSKA8t1Z`4oACelH9eNY+YOp({ripIK zLe$~H@C~OCPwyY88sg&fuijnjmW}IL==zlz(0EB|X?LaCE^8z?8z>lwQDUKXXZhKy z2lF2oUUSHFkAJkU#`8G$^NZlEkbsKaTxat;CGVnx1F1CySp{N0&5yQ*PzxvXEmb~f zFu>#bgl=O%MZUhTpLPzN!D`%gi>0fx4b<*^kN_<-Qx{mk%vZ#mR(?VDXe{wlo}i#0 zfIbjILcj65UK9+tlrT+A#LxPOd;oO;A$_=hb0`*qyAaD1-CmHy1t=TJseo~`{^Fxnl&!Nci)x(B%#pLju0$Bu3jCL ztJ<+$K&kSfAp6{GSJy+yEya0&Rv~Og+Mh!1Pz>4$Gjr1eA)?@^PMQW_tU>E{j+4#S zIygFNwo;!^A;a;nP?0KJnoR`hqlP!$@NoWoYaMS0scquq5goK3f@7&E&u5b|&@b7Yo6#0HdrXHDB zSDdvm3EjHBcS8JY+KCegk|J<4;^e}ig_F#@ye(nAetw;ndc2n}!^zf@r6;9udK7|z z%8fxtW?U0s6z9bdSG7d> zxOM;!Tl0_@=1Ke6`zvO~(nup}+S+(P_7kXThPKz|-9g;4A6EWt9dNXv)c_x=;SJ6b zqnFt-)6tM_LdBj-ipo0iUnK$hc;=jEH0cIu+ZP>49i+qth{d$E>BjA!k@9}qZGa@& zyOG=^!H{&{1nH$cU!)dhj(d=8C>EUDYo79#?YW2uPzKkiS7ar~hrR<9hCiqd4*BtJ zlm4Py3?b2xQ%$9=&gAIharg+g4!xXp6nh-#Fl^7&@aE$es}7^s7*E2y2?#hqm!`@Y zaCZ5FRDb{n4Och8ap|5&TkF9Sp!^;7u@8Rs(|&1t2&MSy$;kzHmk~IXO%Y)n9U<@< zznxrITyz}smvq}*RcTFHK-^&nBl%IXl{R^Q#vzMQr?WG(jQ}N&M;fH1`pcIP75U7T zP()=~ITg-m*S*c3kfdY;Y7|7@al>yQ31&Q8?zs<#Dbq^}U`QdnDbRi+N2SwfBVE(c z#o6iT_4p)0l>E`9V521llqC_khad2$Xww;i2`|jShm!qa#&$sHMy(qFF~SA zc!oCB520isDOTNf1L>SX^qUPEnv6ft8BqaO@hrV1T-XuCN57#ycI=7q!AfAmkyr|j zw4Nz0Esc~XKq>w=9&l+1D9=P4cp}ty@KBMz+kpPm+bSQqDM5yceSRVZ-HAe-L_8>T zVC=z!)LnAbd5i+aw8VV^2aA`t@K7wc4lc*cmx&L$&se%AxOi|uH;$9>XUYtF{K(2t zSQ02;K}Ejk^?rstG&DvLZ(XO>J}sMshhlpPGkX)(z5pIf8r@ad|(wXm-=tOwK$ZL=TOZJ2eH(S zy>j|uM zLGpVqHntIB%DA5qqhg{qJq9Si7Dh3HjA>;7h->0~4HwpAscwwF)g53>g zSafHBni&<3+sMBu+g#uHs<|}x@KJ1Ugos=&fuAHmj7%bKu285UUTNm}J%BdQq#u3p zPGbkpqbwxeC+K^6_1n>2f+FeV3U zrH9ZJMdadw;pe#_zq#;|MLEA!d%^$Kf4Z`;A#IBYC!u| z!;|`uYAp@NerLYsj4vkW39)UqRw$#|u$kxjh>`>M)@2*Vy%r{ns{ji>nv!g6{wTZv zZqVfk91ga*KrVK~V}@wM`bL@vlOtyVy$jVC^_Vt=)beUYo0WR$&U(u}+0rWADwS*0 z&PSus4ty!9VC_?}T198eE}=0w(r$a>cT@^NkF4W)xlP_eqH@ zGzW~*SZVWi#P_WdTm-*xswJ@scHHdvc&97t+T*p<`MblnxxAW;*)+n~*n7F|z2|h6 ze`n!HwZtu+R9+RKy+J=gEhZWAvm)!;mhZ#pk5b14owz81JY!-a`xloM3r`F>J3H2R zkN=D}+AQ;nm$<-rJd}%MA&<}L;@gX4CZQp#&D5+rjz)OgP(z#Lx|>k0#Aj?)vP~WwpThJdF;VTt_z2~jnT!J^6}OBdvVA2mNHIMyoO#} zq`=-LARyqE3l0wtx9|@QHQ3b9G(9)CG^r5P!O~`=5U1>*q<1#LhdEz++A~+`^yg(C z<_wqhdxqTXI)mP-EH;}?^4vN%6rSIlwrhQ{`eZG{{sVcBx>nR$hxp^(Cw-q(M;_+( zcgZHFs1Hh!q|jaME;ey?c2Kfw$@#>xPh`j9(umliKJ85RFTC<3I$TPNTC&f5tT}Ec zL})8ktDl&reQY_5Uzw&htSr5m7@3$A`Tb&b_KRevAE`SzhZ;9STc%v<0xHuSH@7a* zams0n4mQ{=anG0df7hZ&Av;|?zL9tBbxrQb>)gFA($nwvE|HO1Ek~~Wpg^avvs5iP zvr8^tb1NOFJc(M8{9t&)Z`LQmr9}6u)Q8gi{0!-B2lZpF;iY`jI^nCWbnz1VM&YX% z5obrTQ2o`2tl&C5wq`J}0>lc0E^2BZ%O;T*5)r}vENM}}LNQUMu1h_Bj69@7`dNUb zdg3T^)!66MR1R{GngRB?pXYkKU&r@foVSa4Kxli~c5=DI@#HkKnJn~Dm{cLEw!5eK z-QQV-4J~eS zaC}xyM@C9r*!GC#MsL@v1dFjHe2LzRJ0JS|o#wSV*F;oyB5Mf4FY+GE{P~kMYAd8< zVVsB3+sL)N<@3DGu#eh(7H80h{5XMM|FFPND^FfNHaSAMs)B>nn6soNCq02n!-Xu= z&FSQc`p?et4k<;Mn*;5{zib`JoX&d)V?SBFDkB2B`t|Eq@PTFS+-Z_OijR-KLc*PL zy#jNOUb}BVM$4{p!A>_@OZmKGsLm*J#`MN{CF%~Z4z6cLNe((a6EC(}CtegWIOnSk zb^>g)w6vt_1-aC?xVTwP{hn9#+gbU}wBMT+PJxPChXxfc|2%XwnnC`jw)LoQRGlK7 zE2qw`@$GlXRk5CvMvpbrQkxA!+ew3Rxwt1>jb2^iK7IEA2Gcg{;C%9Sl2t>+mR1Rw zT++h?e!Ym$`MTb$w*&V+PV4DnLJi24)zUJX>%w?LI=ushwo+A|y`Q8?Q#Y+l8M1n4 zntQRniK*V`6)MJNbe`#tfL#i+piz@G*E2V){*H^tD3Lr zU=IIu?!B((UotVd-u;<{A?MXE71OFF=}Ap=9U}08YRZ*Q)yG!yLvmqTbN&&Pv&7=LqkJ$Q|Nu_ z%L(o3J~B0Op{2@kkH5Wa1R?*4tP)bv0(=J8ObcfeC=3M~HpZzf?F743GX~Ub@b<_C z(_f`(sS{Wd61BIV!{>wR)*l^OcmlL7jSxHsj)T*z(aJhC{zzN7e`yhh-kh(02%9&{ zVXbuKiSatyw>Nq{uO_f|>AL6RElNtbN7{R;l>|?@&^z+5sTmtLq|}N z_@=+#)^Gxw7#|Oo4TX9{h9@#qbAWxLSQ!oi`k4>-|J)!PAJ^v-t_2Sp`3L!2tPPNj zr#OCJ55p%Co{zf`>YmPLbSLX`*B*4%omyVyni2( z0c$ObivWGWnLqV+Ru1m%EPWF3?f?HSZ&-1CmST%1chC(Lb!{@0z(K)>3~qw*)7vV= zwilsU4qga`y0mn{qN&3l$3$t=EfNU@3drA2I*yHxA1n-8N3MUD2Iaw2#X{WuzqRM+ z=oqec@R+~g|NcHPCE}#R+~DT;_uJJ1kcd2x5d4|w&l^jE{|!GgACSfH_re2!!S|n4 zzVthw5K=$^*qws6p!jEJ{26$Fny^Tm1V7gt5B6D8cqv1ZCe=_)2|x1JD0x~akX3*M zkNhFZb|g9~Dh+Sp&hKwR{_@(Us&;hUr3G}=?;0D_y`QsYr7!wH00}pZ>ImS3t~&Q; z6LdT+wq?Ri=4DkCEbu~&P$I|vSt>~Q2IG)TF=TCJ#fM^i{b$!6?1)S+7?VHmeGges z@biCn-|q_(V`H&xHwZZt|5V`))-2SFXI(u4X)v?#=s|1*u#sDUD+cR1Q0ivkIM|9Kupf`QJ^ zd7Lre!kMT*^E$MlbxBB?k^lbpctm+6X*OL(;lBOm z_3O`)zY7Hr{~cY+SNZw*JPhFK;9lk56Ib9C`49~y4r2T&WZqa`-;Q!%YM@5GA9u6$ z^>u*0;AZ7TWKPpmD8}C>6UysgF=f^WnFHvA)j8NL@ENc@I`0oG+gGO}4*%yf^0*Pk zUiil}(tjjcfHn~ar#b>r{TX@+#8$%36*vN6oEhI9n3Vr>WBfl34AiB)IH(lw(q+J^ zcUBNAKn*MMarni-!^r$&Inf}u1B3V`tr{JB$L7XBPDf8Xl$KL?`a zD2g|Uxz37=&g z`Fk!ne1rrKWK|~-hA?ofl$AryrvM-3RI6`{j5EU2^)20=6ULqN5n1W>04)A?I8i7$ zq+SpBuJ^N<77^4OJ~%N!+e$&SP`0-<4f?8MzI*fgd-DJq;|yT|(t`W<5rSrcyjKVh zBBctra&nsz5MmfaBG!QYPuGfI@yP4gBN{D#_Prc*eB`!;s-+lC+e;f+%2-JLIU&^) zrcgGHJ2mHC9Uc5TjL}JupMabekN)V$2oSj4LrMVHD>*;T0ovc5Lcm(4#=Vp{c~D9q9CRgS$$PQ!aE zij$Q!?9$^KBy}m8O`%R#WJX+U*DC2O4qp7?KQHbz1x3nG$=n_Sb-H@Gx?Sp8X=rZ8 zS5>L0sh~KU!s$Uo-h$ku;Nmp*;eU>Bhjb{3|C|j}uLynOM( zW_~~uSxZ9+VDv1}uxXi}&b_*bym4`%n@ zf%y3uXcs`vYY&0t0XvW&E}qPlt6t{v`W z)U#FRWr-*q5Hkfo=tMfu`%2bp{wUG$R`3CyIP^8L&4cxW%Q(RW1^f|sBA6zE=-*z? z&?HFwsV6^R&eem$XYd^pzNe~7TUl8lO&oLeAd7vlKn<2jk*MMFZ__Cf6%#Y~>gf5l z5N~g9V622uvFDO)L3Km*o66MC&`zKt9jw%Uo#xDDvRz0wNj)5x*yLB(Uxsz--tBLjKEgwupww@D`wY@6^LIrSWaEr|W^^XZE&;=?6^vbPFjpR@V zy)qv4Dbxbg9w`~j7ye|Neuq12)RCTne{X|SwW9F|+CunEI!?91fKACHSc+c0tT5{i zhxI;i|8OtlfPCQ3he-Q@wmUTgS!o}m*22pQD2plgJs{JQQ&Qp%EC(d!`eUVIn}Ero z0hAIQJLnJsn_$bPMhDv%aaAq~1NEY~VP*9A$I&~NaBc$@>(p^(MWmFGOEs$^%nZ6? z0Z|0ErWldL&Yv~K`h;}I=kbu#;UQ+%&?5t37)br$u8OYEM^XNrU-?gviic|WEBXj0 zOfJash8eJyDsAHL1;3;`osJyM3rujD{P7IrK^s@cdlEj8070zs&jxTIO69rLa;n2h zfieSaTMwSw4*=(7=-fBmYE^6c{msdax>K4>&=}(qKYzPn88DI$p8n-O z?)V#$BS(VZsX;E_v%c-zkE$xkm<`}9dRIcz^EMC>#2JRiu!#P=?>9Xl_cyfzC-l!Qdvp`%g6-WK(I}%e;vO*&0 z7Xl}7j^8Ps8@Si{`mYy~2a2R{5Z^WXBIYqMJza-Fd>^#eKk*Ezn24NKx8E?R{4LPV zh>3}DXTHd(e^7!hTUb2rojzQRx`kLg+#6>5=l)%gk5r(#5O_LTwFloNN@)7 zXOyM1larIVxw)2>maMGrPFtc+Oi@YQn4;94-dchZGlw;Egq5YOj#^Ap|TY;WPyiC zxB8yYA&jN$l$7?PNypMyhy7)%9YkHoqu1YIptDnDKUqP2EHNfVTTo3}oqd?Awt3_r zN`hpv{3OM-;c`3|C#On(okc4(j&mgeqb3rP5=6vLm4s2)nLf`kAOSiJYnN(m7=*X& zXXI#`bF#kj^-fX{z9KBVz0f>r#Z{^`+f^G}&WEye0#Gb~_FfjN_;_fTkRlf;iI3L>{X<_iOVRr?4UtUXHI9A8D~TL&-p{tku`+7S>gL=v=c=Ra@$KKHU=R!m zi8i-Uwcqp#ZT5=lVH0<8DM?ZBF?v|$ON5$Z9)B`bxJ=!~SJW0;bk8Q}MeE+4n_f|z z<_xY~T4W1s?11F-$&hj#vzQy6>0Hz)%+VHaR(af=kG4BuLrr`m<*=;o+4t$0-Mt zE^;Umpc46j=Zok@N&3=52sFo9cf@91{KXV#DI+ezPW@fse_j636$6)pP#eF47!DbAd()o0<(Wb0fFZ(BV1;g76b>WV$q2V8&CbKVJ zu5)2_3w*g+WM`}rr>0b;Qd3_am2cQR99PxaT4(q8dfNMT;arRJ>kkuh$Be}3?L|06 zG14aO$x7KWb^4D#oP{x1s^;vq4_z%~(lzTza+~dEjuO^R$o+gvG7nE_ zEa49pVBGOZswz)U&15uwo6XvR<2}E*fQw}rZyK-bn#DFn2#W*jG*3)a;PParctU*e z?DrOq`Ek*0ioM}sXL{}Nw#f>@vW&LcIq8<}?{%FyrUOja;pTJer-dGru4ra!ES}G> zQq(Q*sGAqHd{~UX$Rc~yZex~XJ3*5`4KK1;nZhQOyu8XcUq;Tu>n&+D%UtDZ1~$`y%!JQQu05E5R3ue8nBr*fYk0-jck& ztEBUhLBnnS*-bUayAIrsGe1>RaFsdlf3^BFe@Yk-QCrRmFD7)h0K>>`gk?Z@(*EGZ1yU5iNr2|c;Bmd$swE6MBD zoe5AHYPbyN0G_|tR`too%hhRtf`!)#Bx;WFi3WH0 z<{Tbx`Rj~Rs%B?p*V$-GW}Ini=Neys?W-O6)N|eT?D)q~yq!(5nx2!a3Z4q#0s1CO z5w(k+)9uN*HseBR8qe_w=;a1;rLNn0C{1568b7y9b5yH)aXjLxk}24b2Bj&&`T`1xs~<{*;|&-5#8rZxVNt*TFax0E>SJAVeNImQ~DS;hp`@`s+(u6 z@-WucKD{}vobX8-%;|uj)vLbd?`?|2^V9c)B>hEgcFK<`6%zXqqo?ICVH{Vlh618w zxvN?7knhu@1IJ;A3ITI!^$0dbRPGx53}TVs3e0SJm*v}~DW)l$H|ykhcs4S!&qbZb z{p+~$=!Ms3UF*U`l+sVE^&O|2>%z?6u<9<~OR9dArS-5W=RN^ROWs_c_2Lub()I@G z;^?nS=UJ|*XgBi`xj3hBa8UEu^cU&Ksn$g?GtBgT@EP@ZY!b5bfVUsBUDp?0R`J40 zTTkfY*i(Ls9>etk0yUb+b>_#JqbZ6$uNj+)eMjQ96oUF~#Yk$Uu(m zPgSYGiLAMC!}dGMnAAWO;QYek@69ny2=+X*MhR>sMn&!Eg@KHltAUXm;3`mFLc*-bArI_T~#2jYW>RAb7NpHv2rF#QY$j?_!>9$i_t-w|9ojR(@HT|- zB!%o`(Z?5kBU+ucS6KfvZKXZioAVC2MD*JzTl0N_t(CU)&;%bk09gdcPse(IF{fUu*-pG`Nji2c^q6Rk{41X@wW=3b?qunHBl@A2>YdV+j9PmKa_X{J_ebWc!=2 zbvq^Eg>hTAJVpx`ekXnWI#3#b^;xg7!Nck5>(jR4Mr8Kr4}$0#PXdSKOA9ME5ahE9 zNmZdqL;d|9OXHLW^RG8iTpRzagC%p{e=^u=g%k!WqMyX1(ZD-jRyat6AR}>*_A+k_ zCU5{6-ibx{GL#+i*s&ygWek*T%~=o4mYKlnp#Q@L`V9Gs4)Kr%Z#B zSjmB4tcC}2nvhYj?8gBk`MTWb^^f1AvF8gdQG;1V=XHcG2(f*1V59_oV^hKP{-$@2 zT!nZ`tiEm8f;X&;0Juq(INV)?6oEf9Hq=ImR;NT9I%g$)zpJF5P|lF$B!?$%=WAdf1M!&zd=jN3zs4(Q4RM5Jb7sRgGA@~k23I~&K9rnAVcMF zXw^hK3f6JDxB_Z^b~X+1qe0E%Pt44S?)G0K`rpXE{m=i*U1JSYMX*FU5h_K zxqgb4ORBNDE6>_u=d}WLfI>+LhUxU`@@kqEXTr^hkYILCBbA7fLy{xD_LE&#&Xr^l zHChTS{s7~sJ5v2+gLuA3lR%^k&Sgp8N=ZqHHs7=lctFP{b1Db{vWX!u(XaN~w1Ut( z4LyCT<};84geV?#`;fj}kk9~CeyFa1nlK}%QL7*4)+#A**<6CQqo5EVT`EmTL{v+` z2l~_Q`+K10Pm5mSCBzvEh<~Nh8L$>zS+313N?SIK=26A=ld;!ZskqfKZp&Au*C2WV zH>KyZW1u?mN=G^)$&rrdCz$mh@!| zeT~@0YeoSL(c2@%HCs7{7DjJVwxY1AutznjL8fUBWM}Fspi}}tZ?U}%D20Id7t#2D zO6c0H1d!C4Nd{RbPzjWt1q65$lvct+Li91UAdj*FEu(N2QkTE&pxZ`X@3 z*6|oYEErjnuy|vwW>I@LtlsdrUU>cErurBCZ;Qth?`fLWt!aXQV#bc<-A2|%N1lR@ zC4C>W*AkC68qSSiKNNWX;Ba-?|9YNQ{yl_JN!hP=c<_fRz%}5~-QU}tnt=khoUHBM z!M!{HeU4EbCLy`+>=6by8?@%g2-b)G2;lZ_ZGcG4uU06H`eGkIVW|SU;rEuV$t{ju zUt3d_3kCMV_J)J`x}HHmLppeLW+X=rA0{VBr&VAUV7)ZiS9o4>bagFfM1oP}jw?x4 zb~e8Q(W>;YC)vgK#nmN|rEgL0;^eG8$&?0MMubCb@PxAFpfECJ3bHwv#h%&ls}=*0 z#ApuzrE2w;eodG9*J#Do1#dL@pA#OvDe61Wv;t@Y3zu+O+54?3GGGJ{Uxp| zQ*~S*Jf4D%`~EtpNP`mk{qiM1^%M=tK;HpS`eaVP#CHME3S@QrO~B<1=I0&qktnzG*Zw0M}cbba!BVPQ)CTTq6L>Ax%V|sGIQvaA$jHt7+*+moab`YEB zFLf>E*@mLFkjT=X6BDqh@+)Tm-vtdL{fn{GJ;9(w%b%d5qr;E=7RI$dg4k(GItX9LeAFfTs^BJ(+V~;lFC<3E<~4W7j`jUWl^!FPQJ(Q?l69j zR-QHmQTdJxQ8T=QqBO{ZDkz1w7txU4AH+E4CkH9xkVhdVrZLz9?f00}r4+=7K^6ql zlM9u!jygpE?yGeNZ*}2Ol?oj)T1B2`Vamj3=~zr)dSSxTHoRuRwLWtE5x=@BN-nnjyG61i}zzzia6{KL1i!CDCkR+!I)Ks9=oT)V# zREF{mm+!lIKr?xO?Y#e7-pG27k*sq$Zz)}|;i^10P zO@tftd%moHBSWwWR8bIy7;LVR8PZ&(#0Ie@rbAr5wpXgeck)wi90W?tM>4&6MJ#wIK-Gcf; z4-b!AxN+VY5W!(5lVlVg8vFJBBxD6>WqH91$R%(%Z`TGvj`~45+CH1l6ek_oJQSiOL zKMl>%fsd+j58iH%iwYa{m(8El)c0k>$=0~0xW>q@-Gog% z#`+aXgGjTf*axz}B_OKF%L8q`;7ps;2?1i16l<|z^SSdFFrx7l%LGJ6G6%r1p+?lH z5E&An>b{SER|Hx?h`$Q?c&P$y!53?D{p^!QVBaQAz19I~(c1UNBOWY36>N{jj}_NT zAe0VgIf(KGN*eIp8!=InqHt3^!^LF|WC@Tw480|ClYf2f!4yqEZw`1m7WKQvacS*y}bqWvPd^(sBeX8X7i%S3x1emJ@MgtTMNU8c@-5~ zKtsbje>DlTWq)RaL@OZknPY$~LI zU5#HE3(4NNM}>6FhZergN}ZBbw&-#JgrOrv>eg zVLBh1v+^-W6rg)R+4SqxbDZb#Qoi%Lh39WHZ&!ZyskumPP_Jn-(q@!<|G5&$8S!1G zC;M7g?F@TcCZcLpUy>Y8jJzwv(rWKZ{~+HkRex~8thmFx@7y|bYxDi1l>M$=cC$5( zl~K-XG57A2Se}I{Uj%C_vV9`O*o^&U|COZXn`)`k?$m08PspH3s{gkF=bseJCBkh` zAGgoGyULop*?9S9MGS{sPId1+-!V;RO7Ak)u=+Y-8?RAcPOUtl$v(&Fh;nunQ4=7`M!e_PVI(y zc*xIX=slFCQJ8gJUFyyq0k@qE(BmBM4paj5NvQuA|DHwdM(5F2cRpCus4dCAWDEEs zc}8EL;&pFYdw&abp!K$(2O9XC7AvBmEZSP!5!)B&f^H2uY^vp(gQ%-1dHPGrMu_7z zn}5=yf}NGH&Rs?o%hUm8d5w|9@_Q05RNlPyO}~%%Tw%J@=s$v9rhee2ULu{P3oTQp zoE5;@N%g2s;N|W7@7t7&UkV?Zu7aLiz_3gdzg%|l_|Ck0^kRjFJu#uy{lb?$ zy&odoHF9i%ZMV`dYqp$yy+J*=t9auy0hycj*`pSaR_VBUH!m%5{z*$tH)X%*1)@aMMAPo2jIBuB!tv-aCl zzQ6E%Y1r9Z)B0LLzk$a|{!+En84DjlGWRkw%Y6V|9%dwIZ9etv=cE^P8~GV-ZEbCK zn$ybAb-mSlyVB>g+IN@hujvUO>lc6;7zp8JO1#sCf!x-BsKq6p50A2JtL6r&xbyeM zSm;9CA!_$2b9IQnL^p1dD9iFWd+pf!sN(fxx=>NzE?)LIGD1R1`bJcIAoAv+p^CP_ z-bh+YqbURDnoMR7g#KX4bum1CvUMKm2?{hGXLUrSV7e{&GU(h-M*u(J{NudRdQg4l z)F{YAgh$?jenFikg!EO0-Np79t4~@sfS3gmV=adMM@qHJ+&~c18ssb5-V%V4?iJz` z3?+T$Zt@ov&Sl?}PJz2(!6AJQxWe(ILLAi45(qkV6G zd}s&u3J5VrF>P(Vn8ZKqToyHE$kSqfRuE%4IB&e-|8n{@;wOV^gs(z5^w!pX#z+V2 zgN014J#uFnN8t5ZTF#V%T_&{(!%ZWF0DSg ztU|~&$a1TaP6#rf^+hShB(7<#_IKUK@1M#(<~HAj$scR_qG;T|09n4PrrqfSY?E&C z^73kGMKLk+X#`Gmvydh!+cD1qY3T)CeojqMk4&rC$}e#*)dr2s7Z;DZZ8%N@Qugb- zVe_LG6?0v4iHmd7giK+s$=w?Yg$fusx9Nz|t;b8ta$-zhckIPwLVq|^ynDveED_9? zwO=_fF*fmee5pz<@;#qf-c!Px+Z~)lE0f8Z)Js-7d}ekbyI;k|C4vlHHaK@vrG~lL z5}jOKxufa=TiuU2#E80Iryx<~;bSTQK8F9%V5zzPp8Sm7&30E$4Zf2nVn5unUFrLP zZro=XjtGXyA2*dl^Tz-uV*Z}5N*ZG`w^JffcdzS)Rqgl2((o1RMzjCX;f|{`t>AKJ z+3!}QyMAwYx?Sg7x!htu+hTIxG~^s3ssUo6{+I9jqs86#fVQY&5&SR*++UD40d~@{ zVp=1NOQi$2S~8Q)(;aF2QXxh;AXUh61-x6Xb`F{y(BD%p}B{WIzvZbmxXbU=`$vC~K96ut` zD~;ZLkbwd8*}+lcGf+4|WV-en$XmV}DueI>)JmB{6V=7-Jno+Wok(d>bZCL5%%Cme z5l8~@Q{35p5wy%`H!-=u?sEa1H+O?f|r?HyfB7`Tkw((N(japq2iU2!@L43&xP$-NX_&TP3 zQcq4{Wn*Zz-c;y1?cp`bG-;#zm_&h+QIKsP4tYrmhKCsAldB!zR_>HOF{@F3m$Vv4 zA}(SzAN82I!}ybiv?kcY z71*?QFchz@1tuOh9Wb(7B%=n0KHX+O74HL7)Qys6t zFNHn^HU1i)&mSge|A9k)s_iU)uA#&87nco6w~bz|`lkjq6)7!WfE-G$*w2Ffp`+6) z82wdaAT_*#T=RSnW`XNiV4GeDKu7xDsHV3A9u*r)=jirkl}vswdKbCW-5JPOy6zi$ zZP}uXrmUg!p7kVl&wL4^Bl(_maa_|>dax-OQ*S#iYQh#Y-&6CU^l`tOjp7Rtx~&`# z{ZQ0>L4-<&pgNR_L31U48;tGMsqcvXa4(>y+4Z^5!lWK}sI=KmgF^vNj6-@xz&K9M z2Bh69HJQR{gq?f*+LqaUw`_k~+*R2(iRAc&65s?+@mf*0AU$hx7eTuvOLkDnDGGBP z-w5g@&u_W9LaPN}C55T!eEx$4w9p~K*sf^H`p3SM>!tl80M<@+Xa7WaXAmZ(&9r?X z2nYxmfR1MX3{9>W(VZ3m`Bnko><)kPQfFDba=Q2|blu=S9vTCr#DF;j;Jjk5UmJAs z3c<$Cj*H{7RN>{T;UbP!0BJz*W#NS1?x7IPx_Y#xeCis(OCYS#v|i!f`ws+XgPj%C zqa8*_$kY9nfxCj8U3^BoAPq=wzIn6m=G5v|&Zl5PRm-X97srp!wh`Wm_gS84_jc4X2fp=A;&|Lr;#s#gQ^wcjA}c!wK)DzB zlzRD^S*4o{Z3mrLL7AaVW6U@=Zdcd(D(TWG{^ejs)rhBTyp|EW{| zEp!o#&aMiT4y^|pC-lae&-Pl-rOIt@ZP`ut4OBPyFmA}azw%idqvlQfu#(}eHlU(D zS8W0=?QO>-AVySEEbn$MPk#T@ygRv+5ClSI3G+)#;2kh&OV?vG+Dg~24b$)ldgklz z>O0!5s5-XNm;j6BkVz;PZy2vhy3k0$b>2xLzmCF=lPy*b8G|JrfeMq%z0vm1plbb_5*ZkYWY=BmZq@vU9%9Rm|XG5{qy1j~W z$>jLwL@m1<{KCYXXERs17`xUJ>}r+p0}8mosgB{z^5`249hBMo_H8}MWVXloTK_)E zeP39T+~;scP;~ScoprI-n?6kvvYC4VWPB(i&SCMVXp|MI+a9){9$w}Et z?kMsub)>1&*)AA=DZY;11_E(OXMceg*$qf0G^MW=D}i1$#`()nK&a?gBQaH(v?U-Q z#;hrU#UYJM$L{oce>4N{GD>U_Tmjm%HX!vNLJ+~}wlPc`_j41Ntr^f!JV09Ivm!Kx z{?XXj2yo0k(}frdN_v4z(DrtYYg1P*btx3lEhI~uId=SQDaA}~X8zc1vb(9{dM(Zu zFLk-hyaXL1TFphNf&GjhF14#yRE5ZSuTVZJy%&SkE@akYq96w>7e-@^r`|)aSG4Ef|H&OI!PWO(q%{HgE-@fELxedvmUb{ISeP+q4hy>Yr zF{2*tO4D0<#pe_JPK(a8X0Y77VVZ+5Dy;f;y+)+Dn`HWnHM}^iC;A9M-BgdR5XHNKKWfQ(m37 zjT1}J@;u{L=ah4}zNH@B2h{P*c^Ss-`wx7-01xR==KulkQ3i=kNTovmGxM9AyjMy< z`hBg%-f`0Bfo=VRusvY-r_@YCBl5?e=8ui3WSBdj_yk_`GKe4rT%+S`6j}ZOc@mJE z(x)}h%o>I+BVo!=8(Xr!x7{8B71ek9Qf}u#t{VUk`E8~_P|W?5_MV|*v^YQi)!Vn1 z&8Hwq(HL##b<^17?DnITf&ozEgxF3qdhErE7of$Lu9jPC!<|*4%w>$4e+Aw(0(=Jq z_0AAsC%V?|-j#6WKuF>2Dpan4NY?>C=|QpTdYpunjlv6Y$0c2U*U+2eaeiXPEuUUD zpBvPG79Ed&K+lQR6WCr60c4Fso=Lex1$B4b)zvIA?i~i{+ud`HJH)_k*PbAuOiY6u z_(*+>xa@SP{QLt)n~0G2Rb(o+ds6OWreaI4Cg9CL2i(59lGQ z)53M^W6Z`t)5pnRyBe+JfI_m}kb2sxt|>>Yd%h0|cB4&vcEQUOz zZN=P#%q#`T#h(F;1tu#7+WTSts*3k>oVCA5vK-ym=>30addsk=*6)896ycxKJxML()p%;jYM`+DWd*>t@*@W3O`U`l~{G0lsg z2=TC1w#Oulss-6CP?56$6lpZlau?h6eV zqsEZZcMiRJ&@(pZ;Ve-V7HzfzFv8^@BHtHG5O_uoYEBsLIh(q;KYqOHV-fe6myxlL zcjhJ`bCcDmNuFhvF3#^(&qK`a*oua3qf@3O8RdLg%8`PD@V;L)tOqgthVZ_}n?C2_ z0^P7DQ@nAvA<**F2gwwf?sno$o^G8Y4<_q^}QXL51N_)t9u*JIPx3R+~|&{|)n zqIxBkt}F}TbD!1^4D5_+9honcvX{!a0&#)a*qF=pH_?-Sx8UzOzjMqTV@0Uw^DL9v zw#=A3R7ZKuj~86FK&m^UdPp zt2}y1iB5GNEh)=Vo9auGxhorgHB1M#UaoR?t^+$9iZ$oNR$vjg(#Gw|O}VivsM+p5 z{nuC|!Psi1N{47ci8-$bxhT-=T<6*lfP<&O{qO0HFB%ZHVb`=4qx$`3cYt9|N*)w6 zHa4CV4z{#-)#jfclxj`Py#M2WDszhD&Zc|BS_mjmtqsaupW2o}7*{%dr??O~hV9LP z<;N(0IjrEcGQ3o+3Z(34*-t%pWE^q)B_sw*Gu>b+NeB%N_JEC&^AtMMF^yVKpbq2s z$cd^%6vWzM+%YL@MTakeH(%Qqpr>D+zr3g~viA?}njcEM1RhFc-ZKeC7Ug&?r0ixCC;@H$#_1h5;f6!krX%-Y3 zs!STWk=P{gLPEvkzv@jQJs+i3Xt=UiD%T+PzRBFTfAKfsHb}i*ft5=DkUMA`%kk;N z^(+1$J3aHUUD4Qc#~|6?a%0lBJJDvWLH|ZEYGZ#t6x5VSnA&W`;S(4a z#Wq{_PI9)UayOA7X_n27OOc=Lrqh;-D?Q%28P}$R3rbi=`or;QS48~2PM+tin|~AM zS}|E!nKE)Fb;{A7;pNkUV29hU42CsQLR5mnV%Pu&OkIEvV7VovM{qP*6NZ!>WS1%Rl^`6v{K-4$X=%-J6|(06EU*|4IBAP{ zdkF!@m_kG6xp^@7fOk{dI%?!YrxSjJ03Dr3^<&q4xNONXc5E6lSN4vR*iA>hfeFtl zW{1^^X3b{{x%osc-O2*Oxee4zli5yz517_n-s45b@!J3WxEeeGRH#KyG@V5sFvuen znPP{nOQ@9(K>xkOKMoZz`IQL4`99r|k5I2Vx$)85*#jX1`@Yw>O-lJ#EblX805^UZv+uD|6gHD5doq;#t+T&~xul}>fJ@{_> z_$<2a-Lx#q`)6^Wz1x>b8j_Oe!7bq2w6D}!l)9eE#?^*<(F z(`8K@^k*6I=U()p0cu?2$YbUCbx>hUSU5}cN4}43zv|Zq>2R)DV`TGABQkW)-H+@P z1{DE^*R3@8^s!l#`yX#oE1V$^Fgp&Ft)(1zgbyk-?B*drwRX|fQq&%-ZneOx%0NnK z6Qb!%Cm;7aFXuSb?!8NcEDH$jhEkys-EW5V?sMCK z8K`ZksV0c)W(oCTJ@p3sx3XwJ9^=j(VLP#9W;fXW(! zn%Z6Jii*uMpdH@N%(TGJ+}jSYKHXv5=!@qZIkKh6bca8^Ke2_l`q?@hcnw{JS_Y~Q zXHs&5FQ3^XCmq`a+bTJWHN^1a&|Z70Z^ribSU6S20k2r{yc>f~#>7u{VRpT9Lm zv(~e9|PNLVwZGo7fxtbdS&P@!clgIqk8ESgx+kG!hGrUbG%PfBi zIcY5K6QiKFP1V{RAV`e28#MyMR`f$vnJC2Hb?61v@U>IKqfBTI)ie*4)|^<^xh#@r ziHltJ-TC{|`(&aaULn00Q~qjQsN1@N8YHG_E|hZL!36W`DGvdxHCfFPW<(po!O5u- z@hc`KMDP(*#0fySd+SquNOan5qR6I#P2_%;pLF+CGO$vbNEIQ(oMHfHg+dB4Qd3Ni zFs5}I3|ipWHJEihhb|9uflhwykk!&&Y8p@-fLCLZCc_Yni&o_S_1s2rKRmW8!|qTK zxz>{M0!?j$@}Ht|_FL9lW)XDfecg60S;TGnb?frC?9DaA>QrS~&QH+y_o6KjWj;olhiHNAVyw#9p$#H#N_o~paL_DPnt9GQic!h-06Z{ zW#4&ke0V@R_RO~Uo=liIPm)>D;9OI7!TP`Jd^F07M&AL8pF3Sz6BY~ZO|09PaeP@; zaJ^S=RUk`ehmoKyiKBmXw#lS1_-}KDNdc3yC1R8w26=z~;5gQPore8$xpv(;3mxFz zt#UhbbS)=$!67r8?&4mLV0_1%mnRED)($hHCM%=o#b4x>5C3ab4ss}c#YHpmCZ(k7 z`%o=4#0eb3pFXPS7PO5BasF^6gyABEVfIaT<<1c4e9wUNxpBHlu6Ig2d1}Dfm4uOb z*IDO;)R{{_INLF;%g~=Sj`iyGwH7{w!FzEt#!XYXXV9x2LD@V?6NQrsj5@?CWGv-D z#VV#(d(rg&@2*RNpY`{~e0w|Xj)ulRqTo)>5CgEc_9d`zo50ZwWz;X6t6}BvU9ar2 z7-v4Y!e%I1N%W3*l6<7fAONupq23{a8gNugF@k9|bc(Tq6ZNSLc5F0?L?`w+cD3eq zX-G(jCo)cr%Vx%`rp9Vg@#cb*+xpJV4k~YnE`IQ8a-3>uaGCootl@&dn^k5e=z8t^ z1i6-xsj1ZdMMC?T2*mAqlS1jP|9TuNA5>rT6RufaDJkUR@x3?$$P3eUNG<5qfR1tj z|EYzY{r|MvWtd(+f(I|<1qFKR@zD;7c*v*pf0QJD{iiKuV^ik!hpo)+n!G}RpDQ)Y zVV&xu_FZxlB{Q5+9fK?Ky!7;kfS6h{KWSWpBQU;0ZbQhcKcJs`?zcqq=%7ob5`zOX zOUL}>*XGV&sm;Gfv5%5+zV%%(;sX?AIPgtGP&h}l&t&Y6L4hWh(X#BEoM>j%0*zKw zS?ej<96!Pr=&D)Q(BHi)Ao^^);j6}?bSsQvEXLINxCot6Ps;bG!Jr@an3VXzez&(F z0(-pnFMThg+I2+Pt1XJ=jj3v(Y_|{0T@m*GX;_XmsOz0ayQG|GMz&IdK?NOL$ys!K zdQ7H9vOeeeFi&hqLYOn2P&L@9_Yr%aiz#kZhR|Rt*Or|1T79a| zMo8<*wzm%sF1`!9f+^T}^S4QVK$Zf3#Dg&3!x(%-v1*|%XXp6%@_OSQaYjZZuQt-W z-Sd|<%KW)!8ZT{{z~$t)5H2oG_YhqQ+lB;Q?$-O1CRf%I&EL$<&XKvgRbOCpj>4sX zs7FkD8&fxyUU>fk&NfLZy>KZ%>;^`3H4b)5u@Xxcztf65z7#B&YH4xrJR!$Ejv-Fa zCE5Z54YnQUC11CUALyWlkm_ejd1uh;!cI=d;oX@9BR^nAVVWW!FIj_9wOt>D>)nXyQ^+r8!zUNnzIH9c>-;=5>mWiK~}wYC|=b+_Zwry350hOpU> zn1F%%WFKl+hpK1} zs(?}wRH3N-TOxFh=>QYQDMjZ2sOUWw=Ch}KeQ&Cv0$dkHobv*O?9j3+w44!uRE2ZY z3eH7coI(7F?D21dUpAE$y3$;XcyRy@VX1e!;&{Ii+y+SDi(yyQ&+90W?>2Wj`nt9- zSXR5s0TOUx=>D;0c7Y83<9ko${YEVvv9)!SJDMZN5h1vPeAbAedKvC{H{rsB3@O@U zfJ3?s(5O+xy@lEYPZSrjS2SvWTk8b9I@v#G67hiP*B1&MZO0!FF15sypNbH1R|N41cc{52!yN6O)o7jo&#d}ICiK_ z3elkN?aVb|k>k%NI)^gNcahvs7u-C;N9SEBeTo|%9QwQLRk|XJZnma0g5jq}KEzQ- z@w(2%wuy;+bhQ}Qv~FA;h(fJw5zEr1^LTD|50&yAuFv{*^LkTrdn9^%tg#vcnms+4 zlIv70w)v$#8Hi(Ox>7u1W@cf5AG4i%a(v$AFIF;gD5;+rF())OD)n)y-4c`+G70uZ zCdO$3zF$+@>a9si`Hye^i5sP2QLZ%%8F)Khq@hDddy@nccOISHZE7qb2)f>Isv4|< z(fP~$lQmgdy#C%Qz7jWUn-B|lKT;S zk<4FPoKG-Zbc$?n-1Y<_go$>13+Or%sl9(9vx0>>H~68eM$;VbpFt`%R`^l#~DD=MD>#6Oqxnx`pr6?lu6FXb_DLHzG|rxeuHlbVNA+J!Y-3z1p6o*SHt&FNn4 zFVgzQT7lC8w;>eSUO2$PkLiXV-)tsY_|q*rBLtwe|Ju1ovm!)$nhKPdr&| z9uhl*^PI~jdVbaeN4MQZ!9Hjy3M44^tJC;u8XcEzDdo@b(p1N;%imM7jV{?~m3t!I z!D8+TUVG3q4L^=LXr`7sIx42V$D~zjy`0`)xC5dUM6c9__4HtQY|P90SR%5o!hB{tCd1gzM=FYNw zHBKvMkxFg-=FPNeiUf~DDm8~)5l>eI)#Ga-ab6b}7l#qlr7kEN85{5IP1d~5-;oP} zn~lQ#3mZ|}TEiarnKBy~Bb@SF6x01_bLI9j!P)llFwk!}8!_>WOr3U8q`Sdi#pdd0 z#_J|E=s|Q71r1l?ZqfF%+ z-(>j?q&=r)XCKa&|3J13eirquw_~JEMO5xfx1B@xAgab`by&o}IZ0enk{4Pem)eNy zh0vo)n7Wa7XiSR;;6E(OHqc*w026x~=mPU@0!I~S!OLtZ5$rW>U7vI>Caky`g!%}{ z{f?_d7^#EkkQeZ|w40nZDuE^mgS41rqkPM;5_3mO&=_#!-61Bf8Qw=BilzG!BG!+= zjAGuqU>zMOWdHZ=S|tL86cAmVfv&YwBlu^A=O&M*R{VeS4NrtO{>!SDZ1X~dibM>C{Uw`(g75n#&E2Ge!=oN)&eijX*G5!J zyYZt|3c3?l#NB%cshHPUhk3u=yiTwV9t9C8HH`xu2MKhncv8xHH#veld~TltTPTe%C=n&k#JElvwE{r}3P>w;tw zShqY6?|ugxfjS4tIA9fTVM)Awtt?vWvfE~@JRddq3F?nuzsHW4;d41S!$|5BLKcnD zCSeqFqpj8bZn}h5dAL-|W*f}c!c%8v5?5BRy=`JCRrv~Dgh~3XJ>=nW2jQX+=xyOl zmeN&}ZH9ibG>2eJqYfY_D<9_4_>UI+9p>K3$w2^vo`Z44+bLqJJ_C!XlXQ_FSBF&s zS#9mqLIuSM49i8%s8U3$h0(o2p&`z~@`A6D5?&KZ;j=kFz z+R$8Pz|sY(Oj$|E=yJ{7XcZ`#0XK^;EYy9x&&d}YS_-`F=^ zs$$}Ep$OY82qaj~j_dpJtUCN>#%TW4t5;~}5oMKNhjTys@yxqPBPL+?qZW%J!=GQP zKiFj`5JcAro;&+1nf8YWxfg+wCp&OHtG;BuM#jL$@O?gY^I+7*1dYaFN#m#4R4#LM z+aHlx#7O``$)(E@+_;Hft}UTxgvb4~oeIe#WY6#iK43^e&qyEcZh#qbF3zdM;p zkB)vU_XeyxA4*PehI=Hap;uNW;O; zzcd^Bf{bo}+__3nz-H#kLeP4&dfiGw`i60(vzLEz(hP{{}FPrb`z$ULed#>uiZ;bz171R|M2lNOnQ0Xtj29%VOW?A zHu|`sS^v9Nq)Gx`gHrn?!?2f#I!Hk)bDe|d8eR(=n{JI^x7u3GeAxtTf~Hy+#geNl zx`-9C<-o2w+K*=Cm)SB{?C zTub2dCN+%)>-!DImv7pLEebu-H0$^dAWSFtY~&)N^%Se5sO3_~=V1!Y8(iA;)&%Lv z?z`8FY_YFt)v9QTU0PUMBgS}(FO+M7uim=#RzASWs4u$pJJlmvTH4U{$jk8uFWntB z`zf)b`R2-pk5U~6(;6i<-315tydSVzEqLb%m>LWgr_@Kcg$zs9zbpJO>!ptrPSf1J z=nRWxpp$ES@@Qpi{=oQJQm3+t3v|rxWiQ8=(SFr{bY{>GfN;Zfye;YI&=;=;(~$qx0ara@+*lZa+5EAy0!DL;vS5tU++ekt!C8*3JuY@G=YP zUw%ytkw{>s%kR#(>Fe9>@aRz-qX?o{iM{Aej;h1AzQAyDwgpt}DA*Ey(9=GlqX+-r z@yU_+1KmfDwW)M#8RDdUKlTQEEaf{GEmA;qE?gBW5E&KjBay-?pE2yW2xlhQ zip|M6`+6^&C0RF7F?X-of!}a4Jxc-a@lou-kWI{Yu?Pyf9VF6PzPv7gPt*r}4t&*a zraQO>T=?j;>a2JG3zL`^eiOXNeHE)d??N(@Fy1xV&mHtj@Ypatq3~(TrSn7eE*OID zkdUYVs|_um5-T>z3Y7QmLHk)9s00fkIL^Tj_ihM44N|@tbK&9P7=1Tx#5-Q4|0R!$ zIIa%UWp6BWE5v|jF54Ps8~$v>h$|CIX2KT_pss9&mY;YB(aWaFAKq1szl4XN)8^$4 zH#$d`Rj*RHu0YVAT)bfpYj3!#QJPrci;fTZK`Ejw>-6*buAHOFqp!xi^|p&gJMaoy zmq%=V?o%r(N{P!_Pq^ReJZ|HI^9+JZ)sOkA9!mwY$+JFRS6w?UaC|1|xzqb0_qy_x z2J7uOTh*F{Fv zlB3_kMCPwp74x@1)jpNdHSTeLq&|A+9p=Rw#nScY;aD~{HYT&C@f%O*Wdr{3q;Wa@ z6xtW9M#CMh5u3Ebj+&Robx(u4)O{WlIhdGKU>w0Kq7CmP$lae8cXj>v(JfVJ)Ds;c zbfHdJQ%WjZ&Gh(j)@y%Uu+qaO1X4P93UIaudd3~%1$W%Jax~F!!=9A5NUfNdZ1eXw zAHQiH3au}qW^s}VQ|(7m4I*Q8{N0WFG#rNquE(e>k&N zzx=7e0j;U+^`UaI46Q?cH-E6RQ%~ATxm?yxA)ymuAR-6LF`bBDgS0+;BWW}YqX{h9 z_f!w@v8>+t@nF?Qrl#`4Kf}X%r4+32KxEyez}D9G`X=IB-CJ6^R4Uo%h4j+)0zN=mVycSMtP`%WyB z@}ybAOvlxw$IK(N*n&i1xAjD(_muP(6eX`AL2)F%m`r`>n(+i#NWLo=Sy zS@-ttu?k%A0yZ_4GfCGL5cF}bEGjixN?f!PX7u^mV=XE?$ZVBwKWR7OCEipocjy~d zYus7BViMsB9`fu~!$Tjut49Ef|4J9o$~pv8a#E0ufdTa%kLo@kd^Fe6u$qTQMhp!M zWK&<-!`TbVXh1+fZzB?T^d;L6ToyQXJJ3D0MHn;i!~IfkDA%7xj3{(xZ?KqSHbPZ(93s+xX1YoJ(Z%{&O~IyySOg_kH7 zMmtFzpb%@I2ug(z(6&9u7>4Rc&5C!g^^0S56;#tp)ymUx-RR&KV|k*>P?6+Bk@ckG zTHHa;R?g=l_1M8X@pWfST5|Iuva$o??EeJeC}%Uac|Py3yU(-OJ;hmU?&>$S_jhfL zLUD9z7IhO+I=daCTr4!3{*^xdz9*zfr`wb>Th)q3xK>_Nrc->6+@`m;w=F)|#OjH* zbd9%{sA%WkpCNRvKrm--&>$V#y&4jT8Yp?4zKphnh)YNu!)cGaYYfCcU%Y?s<52s(RMVkwK4kqE(pCbI4Nl@Y+EL3dd6wV!tg_-FtRfWU^ zbyHtD=c$JAu{m}8gk(U9jiZl0K%uGiJgLHbt^AmqiYhO@p$k28MIazoGJ#=T{8;?t zJCV?@3?U&VCYkC&uq}aj@(biVx5BB6IY&6StR_H9=6a4J-Bw+tmvv?F1<#?|IeI*e zA->t*XE0bwYJhu(2#}J+WoON~$Z*iM_w=Z!tE=mG85tYPB(Wg@G^()Y1H*VR?p6n6 z=#*^%JjgY*+xQgv^8E4iZ@K{_82zKtBM;=J)~oXkIy^N_jV17xflm}BZw{Rt+-)eO zP2L-2TmQtAuqn>c4+pKuV0tTn{2SB0T0g46`zqkE@3xW|$e`A?h)B*&*}?dwxL_8Z zf{m3(=uCdTX6LmOQ;}`sdMgSZ(=HCOP=lFWPn|yhs@WBj6njz{(o3N+;llM zk(<87vDbTGQ{z@Z;5HMdQyF6?!@58y4%iznmHddB7OXkzo zwhOY)NtO*N9X^YC;h)`h0)C{H+}7v;EZtcA>l_wXR_D&H;OVZ(3J#HLh)vZSY_~4{ zM}D_){DxN~lTNRf%WYE9LmjH-+du#nP446i&k2{BUBO}&7i23{ulzO< zJD_?q{Sz51=5C2_4z+>v7+4tg1LbmEoxjTfRZJu@J!~a|6|Bb zKzpzPzA#4=#evLJ)2UTDDJxdB)r+TnaHP{=l}r2^6D1o+2BVwUpA25Y@CjrN&@Ecc zF}eU6)VhpS`qgeKsx*K9;efC!r&V$sMY|4>8 z4ad)-SqTKN1UN9y(;{d&u@cR(B;K6vRR$UIjg zRJ+h!n?7qJ$6F_9#%(;_^&g#Yf@Y!Y0oUu=g&7?Sz5L~qz-85DtJicBnaEGXjJ8ZzbC%S zYPLzmIweb+6X{%({N**%YrT(Hg3q3%*Hl!BHa5ZYd|?qAf0K48kfKFA}WJw>C1}Ga#ApKDL*r z$-gK=dKipzNhAyutA?1>xIX^umXQ|XgL5=EC@2X-S0C@uY1i0``1)RgGKmOE;9vi+S4aRRX#`s0x)Nh2`6+B^k0oizYZQ?Q5(HUuf1R4K#v768ij#4p3 z;vT=!0Ti=zyU+P`ig?Ru2v*;0T4QcDd^qZc$&AUv9sn&~tTHB2${{gT7sZFbUVx*n zioBywCG-G%8PW;x=_}d-@+>yMRIFCcY|9ihEmPT)It?Amco@(Nk%pOgD4#@Z_t0mo zPuG{vB8L7hE+Q$jc&s3}2bzBWTqWXPI8s^aw>|C3c>#B7pOicfKg=*~+dje; z+s`rZo*O|=I@5?N=nZ_SC@4-ZPPe3l5}Wi+l4+f|x!~Vv$?2!YCk-1G7sSw`6;~Tx zOnG2sBquZI=z<|~nC$VSoe>qqjmY9O;&_d!nJMUehWHVST0Z4XGYHs*UFx@0w3U{J zPzmAd1`${(&LCpR#0vIqj4x*Fy3ZJcmG+0(H$hxDcz75jk~hJMz(bxMd8gxhO5-Vk zTVBW2`W&r%uqs*!TF!kt!f~`fZY_^zTjKSX;^5-ERr%Z!X=ixtOLgTkXZdJ>&#XwF z50_#*q_2|l_(c@mvPYs+T6F|#QUg9X*tT_#m+5M>nfVwPd~3cOs5!64ERE64;JNv& zY~ceC5XNoR35Ct{u&J4Ysz{c}#TghudOA9DSxE_rC_dCk{vgbK4_bm#Uz6~7lSU`< zQgujaYS--R)I%;#GjZR*tw89?JyI2>~D4x9DNTYvK)vUkY4>#tk>SQ?MgkT21 z?3G;l=Rx%8k#d8{d$5$VWUSN6Brh%O0D{Q?hR;ax;T^0w<>6k9Pige(&LNyrogV-iiykH7U2 zp~l7bR6*WfqE{bJyK@sYW-(pVsHzPA5r61kUTzDJ1XBw4kbLBY>+&)(1d*0|*TK*0 zw-=}oY01ukfY((&VWwUSiEmqzUS_J}iHp{But?hiLg%hE3G<_6u5kJ&%{jIuIl%6PRkJ)OmeVQ}^To z1{*0n5zJboiaCh@8V%8WFK1xIxvygS4g%(8P_*W?v1u<#r~WCcC4$@`eY(ZHx)PHq zSi?l>rzV#qqu)+@l2>>e$Q|W;-j4wRd?hjE=APdNp_&9reE}MKJ2&*nhzV1|GYNtd-~F5F(OLaX?LjybFV_k zlIOyEJld67a$YVFwLO0>9j2M~cl6sd#5wMMJ%K@%gJi2pO7=dC+sM%+bDk~DN`s$Z zbc2bSs*Ch{d^yZ5u`%5J5)KUL3Bw37|5!?ldxv7}ec|(~ZakSqFnj5D0a{AF0bfbd zJ<8v^WBi_QPap*1cS=1ZVU#DxW-`s6_dZNZ?e8@&tt4+X->e0QKNW=He*zsgb2jHA z^TB)U5dDO{DVY;Ss;I6K9#P$n#{}!@EpC%^1!1ZJHk*w%Czqhaph^Ql;ze^@My<>I0}?ajZ_Uq7>_IpRIrZKsVGNh`l=@toQ(hr4s_Nzl)LlgfDjQXSI@c*MV=YA0M zF-O60LIe#;f(MCDHs_mQ9cbI_W$c8VQ2+yh87ei&j4q!}S(ZzTF$)L{E9raT#$3E| zX87#HJo{IhQVN2OMkt8?So)D><3PTyNNmcfR)qec;CWlhPVNS)J`8ckFXh6>IcZt8 zK!IuQ?1(QZbi8z@ho-jW?%3CoCU`~w$yv@cRQ?Nv@#X@PZ3FnigV673nz2)F)5~uY zk@`nQMrx&QS_!+kH8ha{=>`e~iY`+OT3WoA2HJxgXfGAU2E~K{RH9AKEP7w3k8#wb z<(owqOIoTh1l&|d=ShuG-MN#kTf-aiV;fEYBba}lZ~Yx8y=S|UD%QM*`)_F4+}xZn z;Cxr77*4W(Ie@R4z|scShJ(es*XrsM7{f%N5`EWJ0nF8K*(JDsP*sNG+3#-`EbCbO z9dP-C*5%Bq^5re%pdtJ23}Q#JZ9$|{-YH^%WjlHNaJk5$vxMC_G4YDqYF1QR6ee%% zW($DplOVAUr1CHWo7V{yem+va#(H|p=|=p>qfrNc;-%sdENG)PtpQ${M#n3e^O5U2 z^U}u$Z}yR*^m* z8vy(91%e=PL_fSU(`DSug+)Vk>)R-F`v1cMv<2Y}1kA!_%ABmek1W>Y4<@-lRz6n& zPG(f>R z&GFEVJ7_I0gr)9tKk}oN2ZJ=9bwXIGfM*?o!G8E04dYsI--N_v5Fk|oZWfa+X_`3p zaCZ-1GqR%Mb?P=FHC0PbUAWwd@Ks)P)b}*`{F-UE+(jTMFL~x3ispGhA*CPVUIA9R zJHMS6MAEUho$jCzqff$6Xw<(SqxI7^5P(uVeojnwdn{jUTvCCA1M6T(w|&Po-vNQj zesU(r_P9l_oLT7dtU8t6YNkO!N2WJ=sT{M?(-Aa7APM-vA-_rfc(wbmoRN)1Gq|NEis0f zvSH%+txTs2HAZ}($sqjA4OeC1Ax{D2lVPDeT_k7=FlRZ_*3e!4lqSKFgO4lZ9A;l^ zblbcpcklOM>84?~LnchEl$f_@o~FO+C_Gh`R=YeU+Dr@?ji@Cp9oTOO8%P(hgd58d zr$y4dKMh7j{tgx`*G_ucyu4iN=}J>%a+oH5RK)E*)$+k#y}@B28N6$!(zy<7e%}&3 z2&57iRN#;VJDv~l+K_h!8jmT+QL|3HYUUo317%T|>j5Ka_~zDkM#8)XQ&Js~d>5${ zN1MIjh3yfPvw6Wm=Ftp?k;86YJ@T%s!0lehua-qQfj=}IRJW_)upR($F=iFbK8O(+ zg68{wkXsF~EdZ)f^1I2y@qNOF^~LD_-pY3j3-ssspdA--Sx;Q8fKaVkt?!9W;PJm{ zxC{8NInfcle^UZuiM2&`B zgxTJVA(~gHI$E!~-3gHWPMOA=qQ`o)5S6WoFCi|?=JO%Pe*Ng#O+SHg#~b_i;~8|` zsjCCrORJQS>I_a*0K6&%Dvv-;zpLK_uSNv_uJ~=-nyjNqO11~Y#98T#7oaBAYH{0v zYYmPfV|T;*rywboasJ9w`zsk4^cyo$@|;wFx?NODU~tIxwd^$}F(V-6_e$&MAbw#M zQ`&YO6chx@u!@K|}t7zVoG$oIowzV1xZ4Jj2|r*oPR}gDso~OmF1dr$EtdnCo7VWi%Xx zfCLeNHDMI{WjwAqOT51Ezg4 zmECgtWnLsyz+uUsCI0WJy@*?5Z%Gj2{YpC*|4K)o1cu_yv-iJ$%S)_(;R4ZAwb(yBP_aY|dBwof->bzFnS-w*x9u1!xJl!U+fnX5e-Nx=XtL7?`X3BVT1G zZH9XclX;XH9gGbH{XMon;@`o<*r5x1Xkx=jTLE8tl*SWZJ_x7RJ93wW&+F^!?dKb| z81CM+mr=V&xv-$%sk;Pd227hIA!R$Xj-Q~X(GpRVOZBd(o@KD|%_l9*5H7GB=~^GV zKt-lGfDR~;l)c1op(rsyoZdS_SP`Q59$#pC^pZnUYF(Xv%2#z3O*C9l;)y9`3S8VA z&=XgOG^4NI=~PV?#*9sut)`k5^GSqEO{zrwq#ATzv@xjkj_IkaTCb0lrYt2xY))iE zBG68i_S*SMJ}Scx!jn>ieYh>1(M>x%9vRPTR*lWx+)aq5weEm5QvzrKM|ldG%rXNsa-uA{{1A$cRw;2Rfby|A$n- z?_-wK76PDsVG5L2u~NQEzH1a}`;>fD-3(YF{&em+x9_oS)2bi^xCt^j$_}xBz(Rqb zszPiVx<3Zd=5i9wLO=ARNBJ?mTW#q)uJd1MgwATdaZGiDoy}ji={DQ6m+&Ta2h#y=`V&TSdD&a z>y2l!JUjwY5a#uQ{19FqxfrD@5XBsH zEY|E^N88}(GxM8fi~C~wiyDIB#jEtQnItNlo)zfV1?|7bWbJWWYK13+@v38^6gZW}+a~-U~sta;qQM`3y`bBSUnaC5!S0hWO%wEG3 zDxqrhz4YnPy96R%;y&EG>b0qNgJYIv;ATNgJ0vf6tI%>@!bFbzVRdnK4BLr0Y#uWo z-tPMN_;j*5oa}&pzmM;=kU1+V6ThbqRyGFHy1K#7&_nys7TOd|X5cVKJ++!NPcCF} z1*rvbe;$nH7~%=eKL)qFSugddtw=ulfP?>J)2}nz>r?`}}#kKKy z9+a$Nxu=EI@z-gs8%oR6R%hA3KD0!^6wwYB2nb?JR7=UdZ*NoO@_(6A`}Xr~PZl|M z$#VIb56;XtSD_21eYf{2AN7v*41ZpVJ>}%w@W1pf-83JrxVU=QX#7?u5$rMLmq^jV zjFn&#Dk?r{M`2r^ZK3QCR3__p29ep}>jDirOM}0YCSFSXwcQzv^!g2-2?Ef1WOegK zn>Y_La>NhVp`yJM1%6P+bHODII6B4{kyo9p<#fD@1V3sVi{1r*dE==Gu&3`>K%18N zB_!#Aa7dsJF?#*Zg9rSO1jvIovS6QM`D&vNbD%gynRTSm&I;`I$y`_++vmAh!c#tk z{HC=H{qF%7AprS8`oa1n`@0S-!#!YbfdIl3KF;*Q+7x!YLaakUa+;%O0QwV6-Ts4> z6*FI7-wl_S03pEjKV5HY8@#LnIpDD2yo9$D3LA}#j4*5RekthJHqs9O74D_C=F!+h z6psV-Y}KTk9`01sy-~nUcb(>Sif+<8{UFo9cApLfJL?naM2NX!QKuAsC*eT~OWWg& zhW&nem<$0DVyCQzL)P0~y0N>)>(y<{Wgf%K#$+4om$SZ`+^6-1w-7E`PM=_hD2N#2nfp;jXORe|NApJ{ZN0J#!DFcAI{H83OSk%E)kzGw5)s<2uU;3@m^R z7xS0r^DvHE&%A-?t(NnP{d^(t@S1PG&0}j1i+d>ct)?tvc=twUOf3CkbjrQ6Gj@T_~%1` zzco)dVXrur7=X!34{B;TI^F=J&<=Dk0CJE)uRQQ|$r1$YZ!dODLVjf@T%n0V zTg846v&Y2YhVih%t?vmd4JO;+X8m_~B{({)lTiAJ7hKRVQ@>FBJjC3Y4a;VB(Vb%% zrZ{65LCMI->g`|oS^snq^YeTJlcl1G>U-LW`j7GZZ4T&UbGf945rhlX{Ez(FO>BcG z-TV&R6%`dR}XeqEH#;FfcC z1fv!v<$}XJIzY>$v59s;RC>8(mguhD|HA_Q_jo7^*%xfLcD)*O{`>i!7|5;I`+aQz z(aEkhWE}}Cda`@kP_1HWxai>MxOj(nk>$yg{4-Uoj={n4!9kWB=_D?uluz-F{=|i1 z;pqiR)uP{i&ZmF-`6CBvLNbPP&(Dy)KHvd?M3VQoa<|FJd08Xgt^=Ak3!6b=e7x$! zS5|irr##t!BjN&lh@U^di@S%_t{?v>SP2vYq%686o9>{l2LZttEVwu8MK69+!&4FL zO$YfMG;vf`R#ve;6(69z0`c{y`>W7nTZmoOd$%JcUJRaq&1;>P+D#2fI7C>`v-6%f z#(0Q`ida#U5r1;>AK4$!7jh0d)Gj>qU#(syby-S34@|%K{aV_ zYD8>)WLnHfm4@NX^jw*Ah^ozik@N(>U%H5T@0Pb{hwGTo4|A-J=fZc(0c4WoIs+=Q zfRBiZUmQyhC%TrNp1#-iT@Qi*oMMGLW&i0gK@E*e#WAD z$_hqjEWsM9&#J^#RsF40Na0x@TrU%ovBMh)pcRrH>~<>Bq8FeMb|ix;pvek%EsG-l zAnE+FM5kvO{((>+NS?k7((>W&Z9v?^dVJ5t4%$p`vE0?KQvH;edxv4K&uWwT-FIQj zHI{R7a>|!Y<9PW*K;RtKy{UFzUn{G1NLHn6{|hTSN5>}xjCPGkKJ(4BY;UMffI$9= zw^&5WsXVSe8=Xw%tE-0xE1Inq#^|irKD8x1adEo_!M*>uLQSFKe#&8Dy3V2elps>(3vR1TWDRGI?ly!9HK;{MUPt0{+k@M?-q&2($9vDB=X`(v*Xvx@(cPKZnP;B5@B0(c z-AVGXfLAO--;>-w*9@08?>L)nw!MyJa&b&Ax9KRBEm=PGy`fmK`oX%*xi59{C%M~A zUX~c{ypQeL35pEOv>+!V=Sfyif@0dC^W{P-jNPD!fAe9`_7!H1jQb@9So3J0?N4j- zpW|L^C|V2)QqI(praW}$02>qCVK5M}$Xmouzpqd^IFY?(QQd5;Qr3@*SX?sao=_tb1m-hBNQITSv z>s{V=`Z7JCmsRW27Pj!d0?xgsjVHf-lm=YWOk0^x z@lJb$4P|KNRrYVup)qGz<3BD?`!Uj~wy2$r3Jeq&_5KEPXnQoMg4nGvy>_zvT3Oek z=%uCpyE`GRGg{cKbKyfJ22)KnQShYyL)NPe^~_;0+>xYaDWn3JaItFXTwpq{*Rc9%s(5;H_bN;>TW#uaPM4Uq3EOZ(MlSK&>;Cmwts&_~Fm&vn$$3 zYJ>vzC~0f6q2r-DrN5M{tsgl$cF9erhtj?oa|SeQ>oxaQX!W? zrxp;HL>v1CyizE`%H~FEmK1Kg2j_jMrLv#2E$q{kw4|l_l%g5~wR#m&jORYwFHhz- zp+|oPp8_<}42a|gHE8sp>ztsSiBa;cV+HT*VBv$c`)hTz!J|jtwVr!>ONgV97(wn) zGb|}6UKcZ{`8NtvGN<8IgiTp)|w~TZoh~+PNtw$1sA1&w{pE9?SJihGG89X$W()*V!J;tObpMevNq*_7 z2k25PVB7jLK!elJ=}u9b@nBQi>^d$`zj@OtsN*5EVbh415BF%(^c06rL?>3{7NtSuF5Y>StmcDh2dLw`awUBhY)_Zc#F{L8l` zBx=6l1HMK>HhCl*a>vP0UVgKEkXTutV@_(Wt6Q+yxs!r}PDldg^N;I-jUfziRqNt6 zYzUu+EU^iKkcGVdb&A&yQWZXmlv?VUW|C_^tihzUMe$g%t&!vS>vx2J!wo%wOu6--%Qo{qukJFri#Cd{n-_3&O>BSpqEg$GBopHRL#%@uFKQO1Hy-yk1&GCFhO#89_P5xLJpmTLJD9K6e8PISGsl1b zK62h;zHzxUu79}lSG@Q}Ly<KK zyGH4k1u~TD`?fvU4h4okB1}|&IQYB!Rh#pzv&&pnjBl=#H)=Ij zA7Wbl63djP#9GmCD~=*WpA0!ly2mki-zz)L2cL8aXZ8IFkRgoY|41nhTI{eh&y5T| z@e>MQuZaEC=AA02Lvld<$FnAJA?1VtX-WsseOKfDOW zlXlKhP8YM&5fzyFsIYoFH6-4fs&sH-)9#h}XoF7rjB$IM`HpD6o0}VpX6PwRY-t7_ z5B)j+iq_WmmLrs5nOCRNl~{|#^Xp(WkYihX!TD83B|yMxqM>l{xbg9iB?758A4yt9 zJpcL;_EGIV%TNK~pgM663@Q3aX@XH;@bsFw|1jWq z+um00tD>7`ksV`NjIJ7MKZ4oRnK$?wEA9c$VN#&0H=kpUTvD#qgCzHWs9ai2^2ect z?SX#3#;asH+C>gE&nTRt?rBw2-Y!3}0Hn#u_!(iFnbP8jm>4~$Z&OpJ^561HJB^#D zq z*D$&?Oia7NJ`J|8o#qj)zny^@3)Q!spQ2_E*tb4ig$+VqsMRI3Bsa}y13V{GC^ROK zYf-x?#2u<$^c2BtVPf`cu$nL2KJ`FiygPeyF${_Xnj$06i57x8M4*_>#EbKX$}HD5 zbAR<`4q*FSqdIkMu54wXt#^Th_x$-pNcPboxbu4)uSqC1Km|Zn2=+dL&SRJ_nO7}- zUA4<~SZR7PQ#@bu$xKobm346J&iU$WqS;e=hb&Y3{6$OLR+;I*y9Bq3BdeQH6ybv3 zml=dV+%sy)Q;eO_a&@z47y|WQ;I3~hN4xkfdelCyh*+!|I#NS-tmW3N42o9j09ph6 zmUS{|br6|#a(qg%Eg;avqMct>P-wE&On>z%w_l?mZ(6{~K6wji?1LKn43O%aNFAk- zi_-RB$C8%|pL9CukbG|2^+D<5bw<@QN{mItnnl7303WR@?C#Dr=}*Mr;?7f91pf}B zNG?~Xb`Lp~yQAQnZCvtJh5Z)?Rz|}~;>3|Hy?JZ9T-aQK9K&U;R2A4$9y8@jwmXfk z_wf_kYV46GU4oPsD4Zn4j5FvuE?amEh3@H~+@y@PIC}J?QQnca9L6AI=u10y(H)BF zE%Z!oOM#COh`f)DC$;rLx&;lcIxbD7!uCBOA%TpH%(!p_WxYUVuU!Nf2d8+96hN>u ze$f{)0JYc8) zCDbn9<;yFF%E4);@1;S&?I`a<_^y*_%1Qn(h~`(lPG~Eve1A3ts#D~BT)@gQ=9ed> zJw=XSqEc1UIzf)ax49U#G~He5gQ*Vjoll=+zI;k_Zu^V>V3A>kV12302A}vk2Zv74 zC6e6idqqJ-CyZ-mwoLZ2tq{7uW(P6RyTEpd;jo(Myi!iytVyRvS!O_hlhSvbyBl36 z=a0$Z+1ajmX>S+7e)bmZ*SU4Mq8cx0b&+ci-;~p8X1+6c?-I7m*SZ2LFq49kUJD>L zH#Yj>$7hbYM`l5ex z0h&(lV6{#z$1Jo`O>~vmH*T`9vs7-6lrS~1d9BFD3MBQ@wWYd$0LO)u^ds8_bDWOUZ}j95)a{yX>tZU@t`QO}OXDw$D=p-=Zz}F# z=qV^pTI_c&F(9N?(2JQshTkNR{M9fh59%}HPyAk_?CMIn*MD{T&FoO9jzgM@Od9vm zYpc%NRRw~>dl0B4zotalH(-?ZW}Vq7jRT|@tk`IM#aATg(S7k% zxd?y~M3#4@smtfgfe`yimtn(4vjdxV0+}f*2#7l%gC|6qB6+1_>$MYQB7hpXGTAi? z(#BU`|C$901*o~Rnz=dTrzV}N7dCdPqVu%}X&Zc!E&J?asC2$99tC+KdrM~#1s?Fi z6-Q$4+~b5mu@gNnRuSr;>pPG;vw7rr5pg^wk3t@#8;ij4<%qw~1?I1%zjZ5ITuvUT zW6$XSbf_j{agpVd?mIt>Y9&ZFw`4@5T8^9?8|XED<|G^JO+B}#tFBUnz^h!($aj%_v>L(!(*%g+WR#Z_1}bq zl!1As+hwoyDR7YJ__-+fDwE%0Fk!~36gyX3b!VSkG<(*vD^N#dD1ch6qkT)CY6CPO zu$m<)J7pr~!jddkVJn-1pSI{(Pc!Dhbd)P1wr-8ss=y&2NAPoGm3? z6mU&q`JQNMXoNdAK&Bb~GcW@z>Q0EdcJ}<|hQlQeqXD_-v{K}G%Z25I2dqK>y|YMf z=lHb(1s+Anl?cF`8ntdu)%(e*gZx#JlI-MNI9G|9MD30p(;` z9vJ*pvOw`+fcl`ZA(#k+a%iQJ?6McRM=9K1;lUK|kPA+f$|2l1?$#qmjVkASN+FG# zDS4i3+S2NQ!!rxb3%Yl?*zTw*tUM^UR^6tJ0`C)U2HlH~2uqvhthJBX&sn}L7b&45 zDGlXk>fbkopD>9fkggE&+>|c_6TS!)m_ByuIzhw1DCX3Yx7ht^PuXjL#c)#+UDDO~xZ+em{W-65Ov7%!c^~kZhw|^E`2UmBFJHa{b%NI5 zav$(YPL86fo&^_CK8LF9Ov5zalt*tBXo4@uzxtnDBRtBP7j25)WivQJHg{`3!p8W8IMswnlR}sr=S}9&&_FTU z>x~)sM482QS*S!`5j@PiJoAvh4cjv8`?amB& zyzUNuJ={{oX59{RFYPITHPq4geeMcHW^mert!g%G(_8^yBl-B679_N{67MUG)_}!j zIESoU(dNJ~=g#85g~S{CPlP0Na_Ruo{DalAO?M@`pJar(P#Om5hHT z_*+c!s}tC|>XaRaw&bxFw=zE2_{R$CZ*~LZhe`NUJP9W4s$buSuRO1BJbJVpDGS*c z6;7ZE<>2RAT3UdQU%t~Aq>e(AIiw^df4r6wHBWgf2d>*g2aYuiIpcpd#)$OhDYKu} z*_)kBc7RpuljY|LJ&5IfVQuEi2%YRYaDFVY{XxBp8~MSL3NUB@+uYtwo9wG6;xO}$ zb$k3UA3{^$5rDaPGq=be803 zuU-5k^Asu9D-+~91N`q#^VAhb(I)2rRlQbr z8nxcetsL3@bZr)~$Lf>WUCG)V%hL~(TifbdjAJW&kHb-^%0V!i5fi?eS(;CVYYVnJJK2@-xOizHB#kmSq+T_sZm{n5-d@&E z32lb@9ZGAemn0^s?24YIkqOa4BW<!zKI*08Vlex(>Yfz; zkH;*sVJaI*$4t`)95d)tJG}KuF%!N{b_S)PE7Jw*_t^x#NqOXD`YKI*UZ}0BY8$-S zT3>43#z*B4v#y+oKUVkysZ@nUbv1=#6DnvOKJ8>UDyTKyOIG5N%;X3x9T2s|VboNt ztgOTz_Ln-@@OE|G<=KWp+kI^-s4R_>?Q{x#yLcJvf{JJx%(cpcT=Mo=2~YznbT&1S zj5XoXR&KR*E7&6L!af>9!rSWl!-u~!wbp$2YYT_+yR^CczXLibfy5!kIZ+;6MsYs@ zp#uD6jvE%2&dTyX+$Ln(>NTXyo^;Y4Y0NXXW2cDIx7*W~pdxGY)$2Dgk_=C=FJYuCj(vSV|Z#}+tw zdD)k5!seG*hiNcX^#l7kr;who_b+~GYMZQnTN0QcnW%bm;t}j_?0uGntSf#)^e4{c zAzdREvn`iGaXMDgcf&6=d{Cc_+PHc9R`s1APx>@^$rV4rCpU98vlj5_1M0fEx+Xn- z9PPnuBl~}6*X;}N^_8iJD!WM=L3TcJcEI5Z?5S|uE0M=VC1oxtWZf8WU*}|YI!DX> z(P3KTM@E|;FE5^|$P9$3YmWb;dyw{(e3p{Gs=6BOmmu?bHDRku9@Ed#x(-B(QzLV7 ziT7T(T8ncjT!_R1*Gja7wqHJ!1&`)Vj=C+@{A^Y99EAA z3Kj&mZL}8!kRNnZ5o{vy)VzhW}$y(q!8AFgA6$hv3v|^9ULXr(S$c#gMk@o4)MZ$cGrFX=-Nk`Cl=qBmHtwF#07ME=q)I{?XpA|>X zn6vAp`Ymbg-MbnkRU+o!&oXp?dYkLUMjdWf7hu&ys zq~w-Ym<1NqZKEmol_Abfwzffh!0+x~WS5G=E`{u*bM~f9O()5Oh1I;ZU1X_iYFg8q zKj1Vs@tLLugo6jVgB@4Drf@r#$SAmHKi%?vxa9xp>SIr4R`5c892MGVmNcvR+1*do zl%GzEKB?(llrTPO$&+`PVtG<4K`AdAbS4=z6+4pE?riDKSIM&tGqO{^HC!K8=SGta zow`gv3X`%MZoJt$;-uwW{5Y-4VxW9-wYF`rVNDO_hU#s1x8gMK>7M&zQx^%-!5@7s z{yA~vt?z9e#?s<;Py9PyNVs{d{!}5b1f>DK;f6@{$yB8ZIrnLjwe6;L_xHl{85J|z z!}YY)N2vGj=ks*hT4tYY9lUn+niwYR)HmDk^&FMgIg87%9MUU)zrl&Teky2u|BKn( za=%7E(4|YcLq?po&mOyLedvhUjywMKCo2BZIi#Gn zFBv-l0vqD~r%+JdzRh6ikI(s zTS3ox!wx@o@s*;VQ)TO_W8G5nfj}CWP&RcwE>?kgAj-cAyWI7To^MXH?K?sc&?z^& zfWfL)$IFE&=v2zYRJ4b$(eDH&DmCdMy zt*Ew?+^dRk4X&#7Bd&g(|(v$mq79frUet&qX#90B$YvK%TaY_=*?*zgI z8zTcF1cpk;suTSR^KQhngTc~ptT5Ks_n`j6vdqLBxf??-2<@qa3-Ylc9*GjXdhP$@ z2Nm@>LK57>+G1{nb543=3AGze9h+t-S*cBQuAoDZ0|u}TMTBaqhcWYq*n0ppO=ePl z9B6e9^9s#=wgR@l(TT=*W$LF*M=CvF^+vLthrvVi2Snw7`JjFE>3Jtm_J9kRI3f(t z=E5uTkRbqtgaQzt(tlB$2{KY@*o1OtA^YKgy|U8M8*Q=MkIYcO>O?+FFI(UT($(D; zQL|7DiW0qrh1-YeK24)oNu-n_X#mq@y+}Kk{^(w-oMzNdv$5XXsA7~}o47WZ3i-MM z&?i&Gr_Y{<@hdy*&-X-SXMjLEkD~_l^(@qY zyOSQQsnYiz|2BYkv^!cKNr=k-Fwv49Z+zXCd7UDl^NrWzzqx=@A?ohnab?&PT_`i? zVn1m_`)*~TQ{XmhvAMN+ZgttrTE>wAxyFfVx&5o$l*j$}_lDK(lrw8dg*xw_`XiLqELe&foHlGxzgA@N`~dKySb zZBg0deki8Zq}d(*It3d8ScW%8sbbxEZGKJ=s<$ENh58mxpVRS*XW?=OD(xa}9ugIZ zKl$8yl#}(?;luCCC)*`UKxhF_-?`3|Flq4hKvKW!^#q6~WV`r&oJBK2JdBPw61yE> z3Nt|6%>Z=MQdR3$EtLIEyU{P0bm2rD11cdY(HTGQbyRaZ6w(B>z-K$2DP^3!JP$0u48FjX+)+T0$|` zfZ;Sx?8uj8^N9k|eQ&1SQ@c~(uCeo$6XIePD{BbYhd<{?(EM0A?;)_}V}S}XLf!9e zQgf=0XQ4^Uqp7*4CVp1E%=PK&C5Z!};o7RO*6UbdfVV@2`g+9!-mF=lvdH zZQBuA^Z8cqF;H$g3x%byolBmwzoudc z)qX~P>#S!?oXqU*Q@^+%%bivFeQy{aU$y}1kK#t=50Ae>oR^$o97#& zcog{Y(FM+1oC~j0p5AVpQ0@3VJ#i;NI%J~1Y_UwF*vN~GNppt!EhCR#rP0rHtJoQ} zOjRf|Br&>OEZy{@d+)&e!2RJ^W{D!?p`_ ziC(@>yXd~a2kg&{CHs&|s_j0-_S5T~_brT_Y_PDm{rScGhSDf(F*GgitI0aNdp;P1 z?Y)NE6-#BeNUwwi%HlyDXcv8uZB_LcOI62;0um93irv??q0p48>8;aM=JJ%<5t!$J z6hyEGVG&rYj|A@N#Q03{Poq%64xK$-vLzHVd+qX21|G--J2E?P-e{(q`zHHAVSnlh zL#ZNN*^_#Mf`Hk9qOz~==J&515o&GazD)TF3{F0Q1>oiq)A?;aC%5LOsQOo0Y1+pf z$*WU>`Kc>YnsFTHE`qK-E#G--wx$F`xH^Ebqhq zQOQkFFO=JV;;l?bwVfWmzJIW!MEG3WcHpxOH_;~r1AK|NdOeu$2McThthz0HI%m7j z?eIh`o%qq!W!R8KVbG+do3C;mipZdKJ%Gi@guNh`NM8aY5mw{LkU1Zjhf{_-*Y39J zt;NuW%&9JDgQ=MuWWr_R1!Vxyuye&Yy{`$tyREHlx9VR=_Hhhy>Id4fV_)oG%0-S} zE>cv>E6tfokosch^!7oy(%9KO021&PRWKTjkC}%7prW*l7sFNrKfv9sZIW{+45ct2 z6lctuXcj58r{>e+4R4e)*iE)ibr(GL@;tW9(l6#T@<2)Zm8Ui66D(hGwx7P{@R=sV z^4SLAmG3@c7eN?Veg{f0-pd&-4B&_simLhMe@Y++aL^FE0-To5{Ki9rA}>ItihyHK z5Br;5JSn3|1BOM#eLjz}K~$t*^yMVf>HQc5b!+SLMH8e~Dhj&#EOwNj0GPc-@1 zTyo7yZm)W{Z~n@sFZf#h4G4l;%jxwY8UN4@ynn*BKO;liZMAaa$lD;u@U?s}zBSz` zDW+d2=TI;9>fO+9&cvi7oo4z23g<6gyn42w`PZee1@@WN_ZgeHRx)p25KL9E%k>4( zARlMOyuQ#GN!YqszqJrL^P?aEuNAD6%5ajD)1)hXySqxit(99YM(_v}C1_|)9abBd zp-)j#@q$uYjul3@QG$uiZFS7bY1GzSXY6fAp@O5v+DA|6{bL{EFD=cs_0Pz&AeBN9 zdmJT1_mC83faf_>MG9L$6(K+g#(~LPkEnQgKz~Wz&b@mBLLojL&lq=~O1K!d{e1?okjx%RTiJAbCj-%0F1t6@D@vT89N@AG^BREiN_TTz!GMHxHTM9grkB z*|7?ep=|R`fRTQ;^=cb9hJFRiD|8CJXiXopf@`Or(~LP*$xS-o)sd<=y+ZBh?<3#s zab@HoV1jE|fqb*Fvch(PMyW_i1&~vIA>Z{_OI^p3&yZ$nOZVrmTz9?s5YRFP2BFvh z`JXvwAQb^^qn1G9QP0p`E?dv%z#HIKavG}vN{1$_F47Zen#Fl(AJZP+^4z&Heq%ol zKbj1@nqPoRM35=2kTv{UQp=>2_Z!o6*MDGjDgg9&3cSVLpMy$xO6Y=p9}u7b6S@SY z30pwA@y4A@nY|D2JV>DY-FuJ~AHGLAK)5@=y2EqyE>xGnbj|3~W18Xr8%MPlotpyqgFCWO$#*uuJjwZ24Z34A?oF4I> zTrPATC&pwrzQx57E(KOzURlxuSE=i8=XjA5C}$`9&h6VLr{NODnR+0-BwhmIA^_QI z!Te6J??(|gNOLvuE<`Y#mZ>9EvsaPA`v4jrcvJp9eaZ~BUIEuR5zC}I;^K7EsB;^~ zbbRpnKlOGi#z9o^}76As>-Y`XeSQ?E$>`wJ{s&1ac ztdJ!2VU@?vo>7{;*lUX5QUQY7A^YMNsYB#uFpzk}Ep$L*45U>wUkO6vfGU%3BN!7H zUB9b9>PSqH{Ana1jD<>tKQIUKtt~$bGa}|%{XM+C1-8_v7c{APs#b1fMb3-IZQ=x8 za0}~7VIVtNa)?3juAB2ll^i9UDaRb#*#spQv~x5_#QbS$_lD6&f!-xcEE;ey{r8wRe7y#<%JcsMu?2IjysbYPyvz+VwzCUiZ_ydF&= zPwcqlXvZzuqTT_BdV3xZ6+E9c*L*9aIGS}NArbC{KK%m{^e!O7xZk$TT;_xViw3f1}H#NV*(hOs@{+6(epE$LRIP^bzr?h_$CU)Jsf12CfN_-bw( z^(lXFVaT?beY$8h4}Ia=7)X48u^u-cHG@DRT1X+AGub9Vu4fY^1aW~d6~l>Qo7rSX zR-S)_H;#E|i=W6(PdC%&-hTLj9LcQX!S^>e%abB;-9&V@BlRA5c|~^n*ALpY4aSPz zhKnt*hZ_K~(Fi6FV2-0L!Qx5m=*-a36^d+-*oXvk@>L2W1UY(+Y0#6zRjz;>5xqzm z{x=r@KQj{pDtQ>1&&1w!4t@($XJb%FvG<4fKIEcWxhUDT?^RMp;(Cl!9{clRVMbLb zvO{81%;7skp~0212?G*f#c<=VQPDkhUAli@MB`}TjS?SpJc5jL74bmZ6+fhm<21JC zQynAubW!=Y9P!QW4h5K)5f$@Om4-BEH=#q1poAl!hhBfB%XkvzbVk<&sDGAh&y9|Z zMBY3kw*C(Z@~tUJ_n0%>lI6YaZL$|>#9KNGO^l{>h*Ju|TMX=a`VSs_MB<2C-#^FR z{WKi9Y^5sM-lMCP4S)c@{^|ovExa6+n-W#I9PXl^hHkT ze5V9P?E52gS4;`vXT>NRe-S=*jI%oTPN>_pRe$#C_Z+{(HzO(1y{wm*)-960uX(9J z*zri3knBc+Lu<-VbQvXK`3|hUFM@O@UU1yeQiBIMEQNNIFK%5J&Nr6B+RY-Ct46H} zkG4K)%B5Mjx9~60B`mB=oVfGc8xjef?_jyG=b8_)%5{zp&UZPQh<^%$mJZZhWx-SH4%3{7Hp{5gW>l1YWE>Izb#s_n!TiR!XTTc);DEonWxpD zKEJZUKMhE*?9vbAZ42V*1D{Trnb8#*69y=IEowh2UWFNDCgCVdXcznVF`NpX+ugNo zAXu%vC7Az0^hZ}pTEn{gui7?4-V1l0hgo!dFb0t<0lN&qZ8M6vPbgWx4pmQR{QQ&* z-4>Q#QhRARQO@yIN7(Y(c|HzpfxAsi+6vunUVFogTa(@6-YQc-xQyqOk-21Bd3)O( z_@!K#JmaB+@$#rNhe ze!*1Fk-{g#_;MZ+Mn{$p$|Yaz1gIOopV%`bNvogmwE#oDq0 zgmZ=5Lja;45u+XK?+Yp%>nqc=w2ULGsv`|L51xOf{rvgy41_0cy`gem^Dt-j=C8!% za_Sf5oN?ea?He~A75v;B9U$a5-0kH!I+NyVBv6Efh4Ni-XleYRZ=3cyiHe84RNa28 zeDB2?$FE1eRcc%MOdIyDSWQ7!7xwVC>O<@%G(n$sVJP;U_0JU3yK(n(ojYDyUU2_p zTO%JM>ahLA;>enHh>_+Rwqx#-fnO>_F7^}t0PQLU`wOU|2-#)iocX*!$Cs+pm10`U z-IIs!ioYOdEO+4GzLO$m*KO}yc(@uM8tV=kdW}vCGk&Qj?{T%ZaNUJ^%*K{xb9(d&{=<1*D-|n1SE*C(dZ&c!Li0O2 zVT_oIs9Xt|_d|auCDeU>1}GzT&GpRQve`F7B%9;8*>|J|zpYX3hlWF8+s|sG3pDdu z_bqsu^(~l6T3W*X>{LbP1fk-n-a^{fgh{?9A%(W_k6aAR&|WE-kFN`%vYJ~3_I`6xQ_w+en*jiBocCqa{P`;u3wphr ziOqLeC*+r^^j`?@dT%Tm4{EYk>4rV8Ijo0IQ_q-MRV`mNkZW=Oy3F)C*f({_hzHQ)9J!%$B`~oV0eIfhbdz2H;^k% z`vlhs(J`!u$lN~Iim1%cRd!`)o%OCa4G&KCLq`7Cs*{11h^R27%L$|QW4VH z##JLPz*q^ao68_qcg=A%8JgN_)d!k7e=zj*_a2WiN$&#xLwg12>D5s^L&L!v@Eq|q zaszd}L*KKH_*2Y5y^jsvlaT%IU^p433?JdjJN0Svj6a)N5N(?I4+*oyM-5G=gE{P^ zEBMd8qg7Q%3Ozy)mZ^KO7a(%CND+0yRBm%QnA{}E;ng{~AZy9dXR67pp(WXEt*GZF z!la|4vm*?o>2>vZy&em@Xk9{@b71jiR-aF37xulwli=dJ9)bx+`8e`>I?e6FG|CPG z=~b|DBG603ES>>3{6S7r+iL2I8Wt4yZ*!Ujy3~`(c>gTV^b=yA5;uFGUea&v&L+4- zZ#*X5G3Mf1&=DQ_B>v2TT5nNIM1%nFb+@#KOZdR^EsDj@+D|CI^aeq$W2nP4g3s@M zmYcD&bBmZTDN80WsTaKOqHpa%!o^53M>Yp4T!O=FiUgCO<;C-CLK4(NJ_-W@XVYCF z`xr{iKH9D&cGdi&_Q0CKiubsIjm6BTc^09K!Y}hqD;*6f#x?Kpb;}inHQ18n<9dPy zTgCZw?HSYUs>Ke*74}1+AHK!P$sWO8qBVYWd-L1v3`shE%ZC`0b_OYkw%0xEs<|(Y zke+AuFAKSGQ1y~PQVgHjVv?Cmwj5W=D{y?Vuw~guhWp;q32et@ZS`*&1-lST3A>4 z^7Gb1{}{`ot=FN?AWjVjGJ(%BJVgcmxiq9Ju3omkTH0{Fy z1Rj-zGvSbDN>=Q~>~HMRc-{BK`(Ah1(z3SVv-*pwmbSsh$)U=7NJ$|oM`jfwY3DG7 z)?J8p*C##q<3KXAOA0;1nFCVW#r9@N$9!M~_%2o!9m0?Q68Mx%50B>()LiPdgi6oC zEO5|hCIv-bp1F7>4mc%G<(9W(>G*#`+1%;b$*F_k3gq0wb#D1aJ>P%ME_}4Aa+t|3 zXS7#S3l+w^EB$#6(pUVw0t*NBhV2hhkG~gB9$EEqMNgqZ^uBw)-S2kVM%t%ONqEy# zpY;8Bg>Qv6F0nN#w5nfjXt>;XcVQ1-`s`QSK``9lVCaEZQsVFoTjk(j%3~bM6jnQb z0VcP|#bGN!I~{8Y2tr{lb$10*6)VsXe?4*bAroqN1m5 zMP7goZfEMR2fzGC++0BO*>{RrHDYND~OTbKEGjYjUr&{4y(pU)h zyW+ZxK6SGPrOLmo90!c(8l55{?pe(@sW!cd6Z|Ce2DXWqFHeB94zk$JCBQcV;3VX; z5#)NCKZ8&w5L?=sPyu1k1ZqJXnO0%|M_}CW^KoMvjn|vZ+DiN(dTA(S81I zz=-HFp_UK`lJ;LzhGYexY&rx<2RYyS{rfBFiOCxT(M4e-e)h0wgvUV;Co~G!4G|HH z+xYmncrP)uK_3;at__<#^e|*YNm<#C4~=8sj>P}>j-;ifxqFB)0-~!6(kMi3EgUsP zG%P`MkD+nj-y4mks{~3ZWN8rOjW_ITUjM!PZY-(sm>07$KM$?P^7nzIWo3E6K>wIOFYG{XAk40jbpGHN61YTS%u7PqF`)n7F&^|9?+<-x=Grd&d`v?H7hN z3xe1`GB8Mu+PxRz`}|N({2UR2qu_6GSJ1`LmX`RTu7tgPLGk$LXcBtzbw)HU{M$_4 zth>zsU!10fM*kCPBU$Iz*rfYEqGEyw@~k60TCW7t_3w{BplNdt{pMtP6Q;2E2!mJ@IdqsA;Ycf!;F>n@oX+#MA0sq5LL9D0yw|V^g`X1Q5ExL>zfOe&We=iR} zC-|t69I8J59(+g{X?}1VJ@nH5`549{e3tdu`VB{w{ok|;G{m2wK?>dV%AYZaJGFbT z!o8StkgmYx|39z93>`;Ul`|E8a{=UkM?>5!B#hwhA-hpY%m>0h7?z^Z9+U--_}^p7 zaN{EWL2v&0V<&$&^1pUIZH4v;T~d8}l9T`b?f?&bhVX?q9S+|<!XdQUd=r6=cPBFG1rVM~hg%6oLK|V>2d8d_AakC+XkwS65dd?|~o+ z`{0NEeYWq7jjH^)xw+`tiF~R(TFL$V#GJvuucFZj{hSX?@BDiqh3ho%+5df+hm=<$ zQqB@b2&bXoV|axBZamBL9C{IY7>@rn-|jD%L6QMl^}lD=-9A7(7LpbJ9cvp)Z0gTE z_-Hy!4FB#F2ji=_89lZeHKzFYd9K*S;zve^%aP@g|9Shm6n~~sU8z3E;{W%He_H#0 zdy4L#>UFoS;N!TxBDluCZ>);P0}qKTNN7R+A5Ag-`?LSOv!wrXLRVqsIQMQX9KFxV zsDCFL&~*JXjIV!#LI3}IrI6PAuVeikKZ&ffXu9OzJ`pbU;|OsCC`8aWKtAl>%m00X z|I;>q9~FAUzb|ulaQxqH{P)-XPk&FOo!fn9DloSG8<)GCmJiZkn5VHGXu}{=i@+`G zfs^6ymE?pa5=2~uAFzQR8X^nt4X z?KFQcul(D*Zs>n*i6|h8vT*h|D&KKNw7vc=ob8AxB$v=JhKc&$ZtX@)$RY|SVY;IG z-}~8pNG~o~r~e((%b-7Y^2zQpp%8K0?f-n2!e9c*DZ72`Q6$O#yAJ1k1OH}JnR z?FQT#H@EWc7c#F(&@qXHy$sqE7&jAdO=oAwNx~m~DCWWs5BUClBw~6H7R&#gqDAv5 zpy-1h{{L&>-MRFluW`%&>36WzAZD@=44U@*w^K`?IdxdcxL9Tqg&8sG|MrJJOQbJ| zAF6(&z^VQnX#vFBx~_*dZY9l8^kk$v$vzpv(4>za8=`=p2A|+w3|G0LCJhpidmN!} zl+udr5D&%LfW$C}^SA&60SYYEbC)KLh5}YkA`@hPLZGN93?>MGl=kuQX+ux=^a>dC zV@xAZW}f;!51k1jR@hJ)50tKft9CNU+|fTXB6bmK*B(H@1#SzFvQW8@Q$??_7Tagd z4>e&>n;=4;8*ElVl(J*@!XVDIGWV;h^_t@x4tRP~j24s(?kw-Yt+k^RxFla0~>N-;>Op{xd*06FT35&dxA!j?GR@ zNg|L^n*dxQeH5rppks#EgGKK8i|SS)cFiE6c|fSOIuR8hwf?PZ=1<34XJ6)wm_wL? zJ}52$3{lijecCqrW6r!7&?Lxl_BFmMnOK3ohnc3Mm0(3P3~O?zH%twnBPay(vW4^# zNL^f`!WjOUXB@HMH%L4EWh7^;oslPv#MRk(9gGS)M2I(yDKUi+3s2(P2(1bl87&J} zU?qUX$F3t4T%aXD{RPKuhv%1o>6ePKnq< zMwrj5^Mh8OiIXp@6{i{bCR9B2_4WM#Y6HR^IIBMs-9Q?QD}dAR@}csFU;Oh*$Twj$ zb~FOK7l^~K&4^{iK>D)?&y{G`M@fk@Y>a%I2XcA+05PY+)ck!wUS3um@OFdQy`u^q zu^zBe9-^mD>*6Y(?!H6dsLRMKBU4d5qo^7lDwu2#)w+m% z->UN;7!{Ek)Rp>wM|tFuD`BjqsykSYE6qDaSp#(NmA9OB-(SqvqoJUC@WU2!4n~-4 zltEsNAH5+jECeKf+sAzPd!V=rXyAaYQlYT;G($aXSUInD#BwSp`bLhSZEfk`&~K*> z^EwfR4-yH<6x~!f{B7{l9I74(=hEjv82^O4xM^li^)A~y!Tkg6&k{LEE3AgZ^S50A zIKQ>INt_WGzp9LwjJGCCB#yg&wzl5@*1VrRh@^l(>j#oKg+IOA;zIOe;AdUsGX%ND z$f3-8OK~ZxV_g~dleBL`g$yR?#qiW0QK3)yqd9{wsY>;O6!GtW5eta$iQUeGMAB8( zR9Az>VUI1wSloxM5+E-FMiRGg14;l*5hA#Ipd784Yapv{1Ky!fs;N$7wc^Lm163t~ ztD67f#qYs*(m6E3MgJIqjn8ynQEs*XcsjL_cr{|cPJ0v9DBmq=;W*uI3gL+eyC?v9lKT~NFg7h+?Z z1W$s_1%tx0nlX}1*yBV+L>Nz<;(GX;yprX{UcNB)`-#VtJl#PBs5&MqD+{=y#z-mhr-PEoyt~$7#Hn3+?aY}Q zxqPJVFpXCmz*wW_GfPIJvN>DuaRvXrD}11y=f1UW*S2;uMJWM_Y0m3Q#`?{mqb-v= zOyc-Ae{tZXplxzCk3OvVfD7Rh2^3t>ATTi8-cvv>0I2%>{r@01euV zS|Yk2=x@!aXGRpt!twqYE?3e(EDl=Pw-Gd@BlfISwz_S4fotRJ1J`YyEu)_@9=vedu8@se9q?F{(opwU( zL$v;B7iyAO)C8?SQ2dAfBxT~{lr~C9QwixS8P+s1F8C1En``cyp9E9xh`mxv%9`rQ zX9Jihae%qyOSIrR!grd6^X*vvj#(n;_`FPa{f3!F^-mPKK+~e zqUU<}6&^ymf9eJds4uYH+}!O-)Mu?M>|@f?FYm|TO_ycY8SUC^1IvNrk;l!=EnBEh z& zNIsE?kIAhc>MMqxhSkWvX(LY@Qy6tXY`!4JbwY$NX1ZFNk~e@@vPn84m3Ec@ zy!3t8#MjweAY8eeQ0Qn^FDsEbv(8k3KlKYnG}JX({a?OJ)+#Arti+FG_xvzFG+o9n zLFaw1EP0Z6dEjK0g=xWbInXl9D?jq&{VbtdMQp0o)uNvQXe(`)+#!L&ptjhr* z2*&z6o1hvU7ahVmCgr@ zNP&4Y;eeSlK5vq5oMP^u&@B2U3dtLAQ;>kJp{rl~`_F8N2eL8{lP*Vv#xTe+8q|VT;!)a?tFw|bX znmy9Nxl$7tJxKo&z%`NW{?%GAuD8t9epZIg=5u`R_0j%5r?f5734EzJp9j?PtHV}j zMb&Q-12g1y6|0`>(3iA+VD`l2%d!9GUUZI(*gVfv>Kur@dgZ5DXEjDo^_Q^SB-r}K zu7bN5pWLi*juq?SvEe-|zn=D9~a3 zdj-VYZcAfX7B%hiu6$FCh1&gA>2E@y8ncp#MXPo3Mx`Ftq*VkC$ zRa{qHdBgaYcp%r=2$D97cIE%^Zd_3`uak*i4PwE2xK3I5n|Y&#QAQ@nG=t zUVn5G#!n=EIxio*@x!+ZR#2tmn)l2;_#5!TRxZKdnJ=t_1j);{!U}ha6U2Jw2I2=L zsV^GhY~IjVAomuKqUt#Ofd8q=xEQ2%isEKO*zlc2M&aKR2BCEO=w99BJ9{lrT8_Z&_89XtP?i+n2I3Or)RqD*cZe zb=>^Fdn$96&^K{8{(H+frUVEHttBeLkB#536X3mFuUdXSKre$E-C4T3{|gbTM@MbZ z{=Co?sE&H$4Gr%t;>9&aFR5K#EA9E{=qe+I-$NST=Fli_Ns@kibX^tY;E}l%Z0m;W zLSnQbN&`$;9~c5)uYaRSUUkO1zQG8$+Ji=em)-KoFu>dBWIERSMD1p0PXf<1(6Q%# z=Ll!OhKjXT=|sIr!)ru5-Nw%*d@R28_2;7uL6tm8jx)@*ExEEnA+7uGsIf&Hy0<+m z{|URyo2^ml>FHnqOG`^FR~FV~$*O#fa>NU%zLF5!Wrvh`-}&_E(-*W)tEh-HqgOAK zCv|=wDME#zvn}%;=gQ%<$6*OS%C@AYpK?(iMI+H$fU+1>poLo|p#o;fqSM@wYybY8 zL#W65eee$6qt3uy=6vVLxk2M)%Slg5(un`z&fQL1Na`^WLS0bNhCTjO2%|@#t*9j$ zIw{7)#>!$Vd1()5M@nZA4a2C)z+08~b_}G>qfcpkFJ4ChX#Z_pr?KPDHJnc)v052x zjs=nv_D{1*u4?yZr5QaxAbGE!)t&99G!eT-Hw^Hf1aW`U@=M!pdo&1qBL?4!qSjoM z=Q}t37_ZZS`Ecjiji-NqK!^HdDW)biETT{27rvlsV?O5D)jsj|u9tqoDMZ^DFU{%J zI|644sncHM@L@4h=r(3%J50iEZEZ!%02Tsh7>CR7^70A`3rkDqVYfwQf>g3Idp4`7 zZ#s4h#)Bxfa0@xR>R&t@G;w3`e3p}Lhcy7TRK}lRF|~csjI@BQ4)yXFy!_ke7PdKv z`Tj2RA~_!T!YlXBa*wc&^P$(?blcW8H75>F*nKyD{|u_!_bqZK7O^(<4;FeH!xpF% zJG7eY?4%GEeG(hGN)Qlz=Ei?vBv9yh0krnysesSax5=bHThfl#Y&$Y_voS7taj7 zX~^&;(BFT{=FKl?j0k6Y=iK%^?iWoS^zGy4uexc`D{VV)AadJjn=-KOJBBc|y4net z78@96F=GDV#vOzX@GZ&{%YVNN0h;IfaGdA*fw}n38X9$h>as)!*W@egDgn7gg#s~_ z{ljsKm6EC|$`E^LF>HOSKyikhw-?{fHDaNo5oJ=7fmdPRf7vFBLFMbm+n+vvmI^2! z|7ypdB|;CDB%??6rHOXX|G0nwmR;t%5y?1~XB4kodF>+b_N3p$?te;}0opIlZUmoa zncn>|t-%y9l;7bEjZ2B=RA&&xk2%m0^uiMDN?VIP3saI;Kz~*Tvp}H6h>1?=`R%*MZyX$^ilLT~Qn| z10(@!U)j0WJ|Rl4C{Dt}RzjaJYydVEd*S$B&?G|$+S$4LPec;2^MTk5ZY`$R6Z96t zrNJvDX~d|242_D4N@O3eBMbFw?&H>7zyxVg(i)=cg1|YRcR6YDG%ZQSh;P+SSmy0~ zG8N0M)yY}{kuBIkbnV-PvG}EGiH-&MHBZlXv;0O3z%}sk@(N@W2V)ixPOdThvHsp; zAD;#`=OUp)3)mZjJ*pcfpW@|V5jZhXj-aKV@6{%zp`uIp<*;`-=jzI2(K!S zF2@~PEPuRAe-3@747^4Idkp`>1s0Z_a78#W_OD};b{s|Dk&jHB(0&=S(%9c^`nVPl z-JZ9%`e3n;D&c(x*5*ul^p9!QY{BYW$#ZkoN@Vi4=X?9- z%ltVf`zN(jQ4k_t#O6#RXJLobQ%(+BKw zWb~LOHcw&+9~P{|ga1L$CK4gO$Rs)DT>0NHLaeLBVNGZ-MNIO^m@p@XMV?O;k&==U z7tg><&^o%f|L$98eaDw4$?Oa)&s_K=nzfEmD?eXuvUygWaJUn*P?%~BK~v+2;nFcZ zd*tq}?7C~~R_@u9%c>xLyr&R*i4{?kbvU&u>xjJwl7BEcRCuaVpt1)_PWlO@*aD0Y zK;qHMS5&T;oPzdgu6Jz_&%>Wl9s!t|%P#AZ)l=m4A~57))zd?<6Nc79s9Xo0{wCHC z;X*xft_tEicN*J4yRj@L74u8R>MV|XXe_h;_f*K|)J=%^;zFSiYaZFcEFHpRX-bME zv+yRwniZy>d7Q1*FxMNFJGvU{F*qp~>e8kbr#qNsK1dNDau98_p3p?}pUggmeha>c z>ozqR6`+Ptz}vPf95^#rXicouHnA6(#z92?;;~svXL7=hag5WyoZgadF^(~M=P~bT zEVe6f!PHkKHfgg>1Ey_rO6EWK6}vdbqW1jA%S>aZ?yaWF_Zek*eGA`RC>A$bEihtm zGAXI1B!p)kf5$;-X#>GfXwewz{$@m5k!cWzO8~GmbqFz5Qud$mSb%Hcwr8Cu}QO{Pkt=bsQX7$OsOQeM@H zC$->(;@aw|c6_U=Q}Et?L8XJ|^iyFB0mu3x9Ks>+w53bfxK%s$_jOaojee{hSXvyp z)52R}_FH~4@I_muO=QX}6mjh5)U9(67@5QFd81#hMBX1@l*^+Ur_ zt0MkG8o*RSArTSQ>ARP2oQd-wb_|cXp`{fngmxSA)~zwtZ|+Y+)J(>aCJL{>qrbn3 zB(1WRYB}7=fG8t2boO(}(G#>|$FQ&t!c{4Ig64Pb{O|P5`u|`~=oMW3DGWq;j{&OS z3V&j~T;z1VU2jc*i+*gaE+)nl97Q$)L`ab8c+!1=$V6nb;s~$%qd2w$ z2}lDNofVJalUUmh=@g1XCD3hXre5kTvxGPov?Qmt;KEN1Ray;vPi(;!MS$}IdtwgJ z{bOGX;Z0nf1#&;k!ueOhrqZuZkcGdiJ{2xbJzF?hVk?x-$gug$M1s*mrW^xFV@FON z=WKtJhVGb^S(s>BSp+ta^RHRU${Lhu@vR4#2f{^GK?>E!N+Of6BU~og@Kup(+HxIi zx*wn4hV6pPcJDz4P4(yIv6JOZuv!!Yl$ApS!DQko;09kDtKa`dA#ZCVE%T3Lg44v6jBa zP0`H@V;)0>c&%1i{I$3O1da#xwL zv;W$9lI*<=v;mP3QRG)v*$vNQ4Lt|3`SsS+9s#}d8JtD_{@jovXo$lcTP&D9PWON71xDGRbZbf9c*XESyJ_g^y6euI^_XWOkcriwbq3$*O6z&# z>f`PbyA`13R5dVht30j5Gk!1a7$NOcWkx3N+q`ExV3LcU*=d_SJ03h(u<`7|d)BvZ zh_cRi5gcetwh>eh7463=;0k|0b;>=v_0hr1s2^=_eap7%t?Gt)sc#)FX%`!zgEbzZ zmDsy<6tzOO<+I_orF|xkp6^~wah-;u$x0d1I~NbDvFznC7svN7QP{CzHg;|u*rIQm~ow`Gvf@VN%u*VziCR{ zpWAP!3Ek2{keu)xY;=ZAhv0GswrI94VWk@c@y`bE#w2yePa5&pG;g?D@54SyGC6`h za%kixfHjOa&Ong|h+yNx(^fU`coEHM%y{TZ{YL;nzns^T{lMJ3EKqc-0$j`qj0A~wp`WNV!Zl~ zU)uc_j4z2zpKR_48+V9cq`zAGWxR4c_Q=lrWV0?Do6M>u!3`|DqqT}0$`6DJ)#h$V zmTCNzbeVZa8?Z&@A3HL`@bHDA+c&oPi5(0vVna>lkz(3mq86_@5?~$aNfph>AFq+Z zdcmMO)jqg%ewPb?te)w|s)bwb_+-S`IVmV|ywikb8%a11Fdqqvx?Mdri5SnXvXj_a z4a{_2<;6X>t~ld?9P=;im5I*1BM5Z*m`9MCk$qrGYETOXE-wRG;647r_esWd_ERNu z*Utq!IW}2;Zti}c{9lO8ygY;zVMNlT$PMR@Fc*BVDE~bv^9a{8T4_tZLqYW9<&@7N z^tomy4w@6krAlCZ4@M1EpL!5vn+3&j0&5td{9reLDOI2Q17TWY<=5Gx$!-^Q{vHt% z*Klz<|D(!AEhgOPP6Gyrhro9tcD=I*|67GVNVKbe=q8pfKXy&VlJ~*CdGe@aV``;w zwXhzyK2u-e4enE1_S@+zG_;Q*{(fD>etb{bO=(OT{fy`zbLuP{4SduejJGJ-H|$vg zj9;E`uQKC%pl=xuGgVLOB7e`AS#9s5qpk}xfP-ALA@>%cMWW`98{zMt$8KGIz5;7} zq8e+@$B!Mc=tA>EDdwD<&F5Eodd)iMO6#u82an7=5w?cKtb(Ct(+R9cBBq=rJ;88A zOufn`s3ki8A)>noX`=g4Hv+k6X0qP<3LPC#C?G{J3zU@-vF9Y_fIed6NMd9c#xAD$ zHqwa7?vr015hMeNrnHWmb)6`NQOu%5s%qFGPNksk{YkrKgN`_{41H{bSV?N*?d?rW z@yEOpp9ZYnz?{%KgaH7%k6NHhW2%I&Y4Y?#I^szQ|2pJ${QLW>+I&1eLaMma*)9iS z2LKL_I4&=?dkqLi(Mbn%06N(SBD6W-ZaYu^#ids{)Uy4g(U+GDSO~fRoYGB(61=}# z0~IXFDZ}}D6jWGMl?Dcv#$O>q;6Gws)7!?Hxn7AEMl<;|!kvZKQ93}ly3W4mZ`_%cSh_9uTEO90EDENnR}du?p@l zNvO3ch7kmnvE#_~7kQ47T8QSw#l=kN9M~%UqzO=4mAxx;rb+O z9Nd%;Iv&dBw#&~_i`CbhZ6F9<+PkYgdy1SjFrdMcQ5nvz|!2yU<;l^2N&^G2Ht+N8xi$A*?I=9&w z=iBhe1xOoJ2+wW&YLo)&l+z_U%>(orW@m~FiFvsw{H)vaB=I-_vETdF`R*4 z0p5x2sIni53_C@C zh%Y+g;J!E;!YC@h~z5wC2pKjl*~8*p)7h z9H+Q$Cb^zs`in)?QK+=Rv-M&vC090BfQzS2odWBOxD4+Ek?OLSC|T3(w-tSM+V_3k z>mk`aJT`*iUVy582vBduQA6^deRXPJ`_^5q#Ttr_eSNiE{|%WTtvdzw*zYU2+Fu)v zix3PPE$Il4ZX*JEJF=38`0c4bH!^ymyIyWqQu~fSfZzZeti!#*u4t930NzHDd8+yu zqcDv9;Vt?+(=V30@h!nLuHLu4b1R8d{sj1=^9eEzfSfrVBeJhGtfqraZ%s{2!7H@j zXJ%Zfy@(+H}Y|(IBzZz@O;B#I2WMRetIO4X=nuYMRe;Cd`js zKy7f*)HHmEUw*OU8gY$r2k>vks7JO>{{BWNNt`QggBb=QTf5w4FT$@D^rM_5un)L* zd<}jHeC|J3(P7b?9zXU8md_I>PPD356NS;G@&H5@a7xun-!X-L<96ZWd(UhY(3`Ml zlT_xq2#@$2KJ4=$7wiioT;TOSJ^znUgxY;%KB#LgXZo?mosZxUm%P z8dZ{GvYH<0Fb*h#rgEh9C*BKDC4pk$YD-t|U_f-y8U~H`1?Uwkb>fNSb!85i1h?<2 ze6pF@{5_>ouwDHifa)&H31Saw0x1SM%_OW^aOd7A^V^G`ym8a5=K4FRc)(f9P2ItW zQh2e29?k1G7md$vB#mxyo#XK!J|yY*@fS!6MXX;}$!>k@<&}GlnSY4(ui9txE(CFjs0Q&Z*$-$D0m!*3@(}05K+L9$e0G9mPH3>pX@_ zd+i!A#t!DlWuOn@y=KL^TPbdkUYF+j=x&OmNe92 zP{~xXxlkl;FK-SX`ijyMwF>+)1|3=Ow3naRUAhe17Vs2aW=*5x2pyQ9#xGT-Po>+q zX%ltK2m_71-Axp$hEl@{e4P{<=a0DXN`&lgXJKLr=s8xJnq6Wbb_Er(IjXP5ZB6fH8)|$9+VY+-Y#JN+_=pi<;D>7_Zf9sEp4+!oGXVLz zw~};HegQOSC1?qh=LNTb7ir11GbhiX<>8u#bhS2bsV~Pemf#M~1EPO`NHE-v0rB7u zlqZJABpdKapEEp-)GL2O695fve{V0&N(q=M1W(Cqb~~V5M1`FJ;(mMu?IoP zmSrQ($tBJ}|w2mp)%5mLung-iA$6>K1pIEpq;{QKmD z;b4#a_Hh1~-2%M4N+M+d1iUjm>$lt&Eq(E;G)ST+HRXlXxu0BFwLbzn6&CkjI893C z8D!GyKs`AnGy{+8H|ukhqu;ckZuPs5rGcmNo=s(~lMk-(gX zsNAC0;2+*m)WZ1e3}W130U_c5URc+^_CGOj(Lf+t5fCtrEwTNWBhWHZ-Edt@B{o0= zOF38v`w>LIu6gv$Jnhf@OKaphYi9TU^fM7^?lGWkT;1@)=1;QaX={OA3G))R8GpbU zsD$SU;Mo9eT(Xml3k8?kZ=SFgxqSMa)uGI=>6jN!^_~^xXI`uFx;(M_PoXS{#KrSp zQO8EzNk8<42-cz>*|TpAh2A5B5d$uNA)AgFj%Gs+^C0v1@7q8E=ug1Nwx__ZKs!l_ zofqG#qQ@fA@z?ssRsRadxdGI$*pI-q6PTwRffEu8 zC+cTHpWM_DsskvG_{!3`Hci81^-$>nR(Tqdi{ik#&g|!eL4Dn+jc`aH8}Gs(hd$O@ zNHMvj|3Bo1=Lbs#=&tgAcwhcnwyt#$4>@_F)v^JkdmVsa zH-EtRx5++E>~%x%MoiD(2x2F>UAoLyIor>%|DQc$&t_;Qd}^s5QPyLu=nWuOrrq*C zx~iU~A!54IvuYhbU{*zA^}9C6=Ah2I7YhdqBYUVok9|KUfb)rI(sw=s`S9{|rK1crM^5V2o&ysC z$NYQO!6RX?mroA0G*-!>!mt<~1^ow5VM$Q$z146p}ZQ(o^8{Ez0dg7yE9%gpu4 z-`nrkffPmmT`}kjssMoUYrXexxLe$ZZzrP%|@vV$~ z03NN!l)<|}Xo7fyEN%G8VLnWDrt>}m-=-ZR53bO}2gt6bSPq!;-FSSWqV`+@a5zwX zjgBlp1s<18`+0Dkz;!z+36gm6DbwHY?`CmF1_e-)g7flNk(gVuN=npvzU-}}k6><^81Jig2s+3Hh6DH`M41@0; zHTB-*{aJSScDE<`&cFxHVrHfLK9nVVAUxUQ{Jy zUZ`eK%a?XQ-;{uj;E}0S-dM#!v@KWyeX_VoISopAvG^Z#E;{@#EN|XC@lrQ9F)D)A z??m*CJXA-UzBzmZK=EG7xo2|k@8Y)W!0Ta^DC~C#o4AQ)kx#W{-7vKqb@Hgg{%iAL zkP4#Yex)(1^&=<^hByp9jKKYa;#jjoP@O9!^MKC2ft+`Wc{djZWAh0ZHE=U@1^)=tw?VeB`4O^AG8wnl0Muc%>(kLw`^ zx^0&B1QfIV{usi0_QSvHLmY)I*FJN&j26F;yU&jQLf8UYt+GuxHAAq_Xaa(seZ@LR zXBdWzv+I;>=gOaHp^C&L`7);~cj`j#-M`a5Q$<`d-dqjuuT|t_Mnp1 zo{dA@L(n9MXh=3%G{4bvhg}Bg1u-vFk=F>obFJea+9AgheZaX#^?wp&=a&e99qNcS zJ7n0(!3H>-bab4-#cPAr;8CW^CBb5+%V99t9}XrocuD;Q9GR*i1OtMTLdy~MZCrMG zja&dl`#1i2390X2z<#2K13)ggtNpovD?%sumgKxKPg%))<$HCgtDvS&g9@=tMwiHr z7VceQ+qB;5>}BKDCuZFMFi*^H6Etu{zY&^$qw_YJdR?*sj~s6%5q%LZfKXIGkj(e@ zs^60$e{aXvMK*!_*)|z5;pTv2bZySk%Ia;}Y;(B3dbNoEDTsbPwkC5E{U=YJjQOJt zmWz*#Et8Prk(B3_Gz@|QmSv_}15q|E&QIgKO_$zss9C+|E7zjbp#S+ZGShtVpdSC( z%{D(?*SXjXDM8rkhp_HburSEZCr>OSU*-|m(^C`|utVvb`-Y87Q&t@XZ3e-syJJF( z>JFC?+5@`z>N48lX32%_49K>#?H#K9X*{)qdvtZyF0Rds!I3()FnWLSeBT(k1>(DM zpHBm-l05M5r63-|s@qa8mA~pByKe7x(5Z7)ZXNF`H(l66{;TZzky}dQn}gZBSFDwG zU>@iSkR!sGxVFx?!=*)?b-V8TKeT1Qa9D0R$IaPliTwc~JR(B0e!Oa9^WZ?f!xwP; zF71Dur9bm~>RbCFCpKw19Y;^$fZOuVVIghhP6+TA?zuH6#?8du=*;UIKu^(2}izlo8z^BQuK zt&KVZ^q|~vwmT&N>XJG$Q4yH(D@j9ddWdrVz?~>#+I>STcbSXS(U@g`2DTTXPxbVe z5wdM=-79Rt!!zRto2K@Q_i#AvF#FP6XHvl18~D~tAIS=W78enu5s&%eGYZtvM2bs@ zgT$}XFv%7uwf&Ncy<{BPo~B;~XZTthU^IH97vl)A-{+{ag`^ zHUZn)9peR2A5$k}wxSE78Bp-QeCaUt1!X-{#%_bLbk_YcorZpX`h|ZKnvys)BZ!iY z0Pzig5ZP)S-K}*F0n&jemH4 zY%%}gGQr^%?YS1;^SGEOm>u}WWnE@Qfk!;I3GCdtbD+l%O-x!Zj?=7ZHKVdqfhUs# zBSjiR4!J*g;DT%yU!M9a{c=vh~WaEuC?vwYN7;e+Q zXD7iSXPed6cf~Xt7aA~YCuqfX`S$lHj$tIw+$$FFi2|Mz5uUoSJ$w;;`26N3Slr&a zJeX|i$i(_R+1RG(;`(tWerJ#eRR+}LYXERTWI%<6I||RMlWB@xt}aY-P(ScGVxD%z z7rW#s`#8Q7-P%EsX%lJ?OC!|x6=yV_@)MuKafTG2K~!Hd5J>RUbL~E#zrL?nXmim= z#q;SYRzb|EAQ>=qKcMWK#`VTk6ms2n5Wl!ZI)X88^xh8uZWU(UxMl3oVfl}YR4tzu zXbS=uICi;eyYi-on|9}z6w`Jaz%17l1IJ<-s(>>}^5CPozf40ns-9hEP>H5=M53d& z{yhCe-`__wa&IyD?vC_a-3dMT1hQN41mC?A?hcUcltT>)_A7>zRbApRWgVr}z4gDM zcB@S1IUjmfLEdEt@Zy)QGAqlKJ{VlP-jIKs;kJ91i~{q!zc&E~2JoD_Yj#^4I5GAP zY$Bsd;C`P^qln$qp80%npd4&AzKF~X4t@WHxCKZS(>dE^_5T0VCPEF512!Q)_VD04 z|N1NNhxS{YLyd-iyZ-)1Y&uzH=Pn%7wSwEQt0}EHh+kJjL{jjAve`C%9f-yc084YT z3!lG6ghk9v8e8jJlxuS5&?)TrOX<8^dleK#k1Y%V=TA)ZCvd!t2isU|;NJ}h)Q=2VB#v(s|p^*#m^=T!>r=N8w22U~3fY+z&IS!b{6YpMjIE6w6K-NNzf4}S@C9Ou_y@~IZ|dG4fkcTl~08Bc$2&ptO% z_jyNvXj}M)?4Y4)Gbhpi=fVG<%J<;o^_`38)6Sfz96*QZc^DharH;Y;MC9f%8EOR0 z7wK_tuW-~0+js9yT!@sdas_;;Hv}Ymgv7|mCVsjj>spKWJZT9HJZK;l)&BhB$n76+ z+<#lcY$OL@vX+k?enO$*HpG%zbWx+blI5V*={8lWWT$}rBa*{Vvls|N89Mma>$wK2D|U zXACU55FtbUZYk>zJ!GmNxkT{C^z`T4N|{Cpv9}1UXKq^9t5>h!9Ol~cq-!{!@XaN; zU&Hsft11I|e6#=L^qGAnyP+P_vKBr(AC$jt5~&?eT{wBIlCH)BLeew~CX|2&9uaURfGq#h`_9h@l@z0Wqo(9XpC&CWU_nv%6Fi(O$wV_v>867RQ2K3n5JFo~E%z(oV*4jIJsd}x!Z1hp|AWNTr zXHtx31FKBM&qSOL1E3YSXu8h5E3^l!1^he{@0IrrN3f?NH~}eOLxd^5jj&RI;NO=I zBud{rc$^xO>Jt_oonL8tm*pn4avPysHx*x~t&9#KwdHMW<_|?^Xsk_3-i(N8jS>Jt?0}$t z*7cu6>Bi9w^2ChqBYE3FF+RRsmqD)=fA-JhjI>CtR%Cz2v{19(-A3!nxg8H*tN;^) z`hu*itf7`na^MvN-PR`K<}>gvIw1$bDkiU}*bB=mxMT!NZKG6#0*5!#8Zi>h*Kp0j z`1487B?JZOHP^%XVfvP^(c#UH;F)1hL|X21$bn$D4(H4qNpl*%OeT#u-wDif!#VnA z?Qs9pTVvTgMw5>^5tASt{+=PCKO0S6`kJ!O*G~W8q0^PMo_%YWcizm)iu)Dyu*xQ{ z?6d4Yt*0AP(i^Kl>4x7{{^bgMOCI-gSq+~1z0E0crNIF-s-wtW#me~p){vgPLz!}x z!-&yr9jY?dYN*WjJgtnk+D|-o`GG)m{A>QTdc^A2 zjNYWQW@@_eY`^;owS9cgKDUs|Eb*g2$z+>#E{q&1t z;v$&T^-qkfj}>PRT5HzD?y1&zkY4`iftFToQUU~>A6emqMiEU<01}V2bL7Wt(HvYJF^`B;{t5% zOf{JsdWT=lVoPg)DDH&e4P)Hz3*(^)Ayx)WiJ4dHj}=p(GU9&bx?Bb1(!-pa?)9@} zRZuB<97Ofj$GjXby1NSZp*~Vu?ffi_KgT2dyJc@g-&ITpwYPh+Q%Nt%sRAvq&%bn8 zMU$6WayMZ2&Zc*=mnY$(uQpTO5YstS6GcHM7`PTpED1Upy>1H=(>|wwAOXx>G1>2Q z`D+0jbBlsZ+S<67&&XTmW;AS%i(9w$U4O_I$knYdmt-Zs-{TnER^-ck=DF_7X`xh97+M@FQJt{c1fu4oe53_@^y|}WbIH_c>Fm|H> z(|XGIaW*>>*^hwsJ0*0wP2u~f8sAH4SO(o>&xJ*HT2+MH^S zZGXRrhMr9$V|RT%wU4b=VG`1PpVyfy!JCiCO&{UYt3IsQ{BT12E97q#`WI5Z#Dpv4 zQYq>2m~QfuygZ5|Lv$jsR=(mk9FAj%07Pw6b8F_CLOU@_g-y)zQsMn3wF5SJh}>fg z_Jy~<0@b6z(23%8!|851L%H1!<1Z*p#jso^YZ8mC=et9UtHO!iLsU;sDRHzrAX~ZF zY#1fEq8bc%)?XVEWCf7LQ8|Mcl6LtwMj?5!ppjtc-bHsc)IE+gn7#;2VX7kT0RH+pmjY_zQ zZ0A!K>!L6){7vyefXGX(_b~XDYt(}BkL32#Qd5c$a4#ixtN%>wF(9Up1!^SJ9}Jgy zTwgnpHi0YW!086Q&R3Ey(B62wh<8>6}7Gd_>&Es{g!}ItPSlWa$oXs^-wFIAV0V|z#~EkmaHi7z4?sQwd_5rQ_!%|9>SD#->3jO~5j5Mz zyqUfr0e0Yv6o4=DImA=FvAw!eSC)T%!tjI1`g7cch2&M=l<7NB75{lBU)m0Hf7dsE z1qHk3CmRE|yiGr(-Oc6itFzOX(C&H z`6a7iky%-mwo*b~wi?j0qRDo8Z9|B70h~B3zA`52?Jyu76CARx+icapLCELo+#5y1 z6g&ihW9xd}JpWRc6>D|>XIP>Q>O@i68A9%di-1_IO}sf-u7`yLei~J!kvic~AHa1x zEmBi)X?XdPsdCA4AG2%569JFaXqCDdG$umLO|AWHi8&qI(Rt)RRviWVqc{8fyuu+K z2);jHHwju&4I@@k_;0)oVuB?&${@fy4JKwN2Etn1Sxs>xV@Cp_ou`@fCHmvz@}eBt zofOqOy0zjP4d9sp=s|{+@O-?MZ?j&V!*AOLpo?ev(Q_u*u8mw53bUoHe!L?*Y+JND zFsc>=wOyLjh)tpLMtYF(4DI8p6QukAj`)?)n* z-TTiipw&6t(#*FaIJ%hFc;k#gsfO|M{PyQ}yzV7H@m=1cRgM%}2MbQW=J4}llQ*lm zeD>D`#o8code#3N`Zf*vKK)wD6dbj$QNwmu+_Z4;`<{ZIoA4>1Zw~sY6Yekf=q7sl zZ*-3E+j)+C0w)&jM7Fu;h&v=<^?VQkCfl57^ORVwz6+3r%!^-0;DZB)AvlW{s3G_2d|w* znhWuL0m$B?O7&ne)Il$lS>;IKay!CQZb*UpQ(?IRIXuSaci~gK4Kc8L^}E&ynA|E_ z@^1DA6x2?ZY!-Ze)ZP*iv*(S=ugi>F`G?A882q)QCCfH(@DyJ-zv?b`=S!#$GmqVd zXoO<+&vU8sbnl{wfkoTI@u{GXdyTw=qN9jz(z9D~v^L6@Vzl;|y+oyW&?fN68IBQW zl;nc9GBzGw!YOB?x78pH(K}QDejD`z$dp{8$*;d%?mq~JsC&XQdZa>&^>7GMm<-kl z*lE`3I=v5|^97Z4aT0DA5mC|lEaeTZ&XM-;f>c^AA&s-sT9Lrkml zrTHs0Qc|Nw;4JiyE5rQ19C|Ju@sM!Ud#+<$%9IAzP8rFN=RW4Kfq|czqD_rvYj$2n zi=FS?-mf4?%p$>K4X{yOI!ENJ^bC%&O(ja+mEMpa@e$JGFx(hHSv5Z+G?+6)ALA%} zD)3yww&1sV?^QyNMYGFV*1rZ#rX1zgeuZ0r1vesOySmf;c4HS9?kbq67sg{2e_==Q zp|vS!^$I*x`J$M~6D@uz&~@jwS$O+Nytg0J3g&f|pmlH-Kd5iaQMt{DX!(5=^YXJ- z*Jv}N5TB}W-Pb8N-pf7i^ytNU#`~(ei zpyVlXdp`Fmz2{}Y+7P~YIJ#dkI}X|dRe)#*z&OdAt9U_-mD?58<^Tnd0Abw!CLDQkM0ae?T~3@!;5Z?{Yr=Xba8d?`3bCru33}w)o0Sp`&K6 zn>In>8k@!QXGN}_7xOqkw`tdvCf+qQ2+6s|R_D|J{*`86@Ph0+*Ar$laPk6z(jfG< zfG!)AW`_SJFcL;yY_f<95aesE~`p(=MH1lC_vq-V_@)HWj!3LJzF!K zpPiwd#NRNusy@(oGY*cUen>o&oBd!B z#A02t8a2*uU&^ivkC44$=n0fLno>d~=87vy{IA%KF^JRvU@?i8BZR;1nt#GOCbq@0v6(vUI4Zrqn65Ns3?jg=Mp*G9z!+JnS znPdIAonjMPW`PQ#rt7j0Px&1Q}3)=&7Sl;7RoBNlfj< z?9vI~494xkonZJgM?MNjK`uYX?K7yXFv(mlQg@#oHC|pi`+&ap*$(vHTje@7F7vczLqXOKFK( zZ8G!D&kt)Ty>P#r7-5`%ls7%t_{AVN#9?W{Y3q-t|Ga`+)dOw0nFTS(Nrage5>gNy z*STZYJKeZ`QR_yaz#2-&Qfd=UxNm^7UkUHHN&sdGYNzhl38zbZ`&4eSZrS4hUBUAX zD5{XImgfulO(*2a`D57k-i6!Ja47D5KYJAVrHidn zV=>4@uVWU$z4h#SkpYN>&5R^(@@1FY0u!T}iFbJ6%bnSH8c3>>$P=cgQW zlIRIBtGJi!GBIxQ4AF2pq#f?FUC7;tJbW}V98}OwvDHaWzaq&yZD_T_{G-6>zI}Ky*wYUVN96}mXx8&sjZ@%Iw<67ZYE*( z)zK`$NqG#01S`or=w$~DvfjBIT%PUau%nCbL7Drqm$g_O?EVo+}X&=IhQnXQI9&wyLmr&wASV)oBAPn4dbEPRB|U54l?Y2yxUgP9L<2?7A`qa4(y9I(FCxLCL%jmqU}=>QIJ-QM$YPbW1nApUAFF?(yG$c5#1plnZB95y8gvNRW3XPbNsv zZeA%E`~*jGaL@+jjrn3gKsTm-fjix7$7>5P(M&t^Zjs;h#jpPnx1<|&UonA2pJfKcPJB_4^+M9sxM=a)`D@o7maFkBW%Sg>PODyE_Ws!% zzh5^Xv-<4F>hc>1VL=DY8IGdXSHS8Tqu=QaMb9q&j|-6hamm!_dU-(L&ntbA?jLO@ zA)}i%y)up#oJjfBwH@ZliqyjALmEF^iSf*urg{#1XW0_k=V~fK&U2)x7R{eW=?YSkJ?jE9Oma{8RR#c^k^z|2(emY|e4IW%_mfQ0g$#EgW3{Z!%}??4x(< zdv4kht|2q$}n4`MWXC(gW~DnwJPH$({04GGNg6X3@Kji zPx#GqUE@C^Ra!d{c1B)BBlM?7C7#*YG?^i9K2Ns^yg!Q1B9bc@n4VOYheLtVe7h;Y zfm9!Gv1#6SqFQ;K`@4-C?rG$Iy;4|MFGu){%Q$_d=lY@o{Br~Qc%HD&REJA7+76<= znxtornbCu0YNr|Lq^ROO=lJKSqzLQ=n<`f^{eYRQtRN&is2a6Cr;Q6FXLikf0Utzs zXOLieUcHq?T~xV^&tF9#KG4VPcrt|jPm?^n@>kPqL)#v5Q3>HBgDn!t->)TlhW_&lA9(w z_=uG>n0-hJ);QNUdk^-)c^~wrz;U1Qk28dn5EQH~7+XDw(G1C5$T+r+GA=`N&?p@T-p_(^hmQT1Lh=-KBL- z|JJyO`=|0yv4reD7j+yLCyz)UjuAsasj>CI`LFX%Vdz`nR87EClC;RUa~B>bH3`4w4jCS6d9M-K6S9qO5G=N$#iDjYzSRvF|;7hmg8JpIu z6xpa~*}{GZ1?NpL?4PAGkXG2O@pn2=f{q9iCb3cRwdLdd`jBY*-IHKKd;I{@RS_{X zH`G=N!+O#%xLYII2`=+0&3Ku9)7pbASGsyqSC7}My=1Gp!DfsP1aXsV#BGnCM7JNP zSEZ++8}HZY3l;;{#(0GboO_zRM_$#T)F;ID{i0d&FYEwL_kQAM#b3Bxqg~wmbfa#7 z4MqpBzL)1ChgHrwd_}b;ijP5oDwkG$w>xG-qI%1p{!_m-&Nhx{q+U`EzC@M#Gjyy1b==NpuViO_ zBH&kb!%*v#8be#fHjhhy;ELj|flnSG@CRa6vu zIin4l6TPCHJ(!%A3eMajC)HrXp3eq5qrr$;bvP7rqL=#bl{=DU&i9{~ zy^>vgU2!n)_P4u(iABx_ecfI6HAVhl%Bh?_kx{8#RCn$(%g&w6;2G94?^m+ZL1Y!k zR5=$S$~x8mjmM*{KxVG4+@=jAeU+xKv19}->&jqzx`b32`M`~b5XP2RIWWsAMwE2#P? zX-ztUzY8PvS5jAd8O?2;7&dT^ryB)uKNI2CrC(8s+uDWn7Wv6nO!3Js=dBhH#7aMa z3&-FfzD1@|5E9=tPSz$%`Z3vR7B^X0!}r9xC8K)jiIFsm zbG7_fGrF41Z&xs1YtL)ap=#%1Mga6t7Ji+tsro2aV^RY7gf zbm0455jS3S_zU{qet5lSth6AS{YF|czqm?Nx{o-M3NMv2%^C!8>^lwDQY14@xCO z3e4Gatu@_nV1Acj`-?Qoc%k$EmzuM#Q&l4>qss~3WTZCgky$3V`lpq3))xf_`~B;m z8FG1PSUeXo^OU`to}QLgX&fxZ^?36rp^$7;hHtd7BRV<2x^cbm@Hik_SVTdr~Q$d=(<5gNv2i)UPQdpcSP7+t6wn!jt4sAY%85SWIvKhI#)PD}YwGP#-N zo@6IYk;EE3Qu4A)-M1U}FS(*B{+`(Q-I ztXCY%gEArc+_91qIZh&^`vMWi;}!G%ma;kfD{QL4{kxiNy0kD`ZPuilYB&FKUM2uw z6s}idgby(vfcqi5VYlHt>$0nraGpN%z}@{>WfEOefZfStE0q#e%TRD+LAGPyHn}D_ z`Qp(BXOClwczR~N|C>R2p*-OgdQz7#s2gqlS%oM>*!@Axiwr<})@16-&I+Pdcf%Fb zm!0ZboM5J~mdq{`SxIPw#`@{!PkVnTWGzf{zSgXv?BC`*J)CI#F)`B0S>R+ZK|`HP z{(ESpAL+8*P z;|~z}+q_fip#meAxg_6{+P?78p&A``#@=fz%HII6qRW&^vC-kW!Y}pm=AqA{c$@RY zP?8(JPLVeXRUfK*@N?9XQD*V|&6j?QlQe4uC{oec&>fK4*wGUiAMfwcGSBQs&itS ziKz*zTb#9*(8tp+QO-9_m_ZAd(C%CI(g;Bozdt!-s}oHTF4kTDJRVh6Hb0}Rz*Em>go2q0Nh+v}O_hxFw&N=2C+OI$KA8zRAnoz#WooSL*Bd65-+l@XhR~b{WN; zl$t+6`+z%;=wO;zS2<$$=F9KNLq6OE!L$#vF^Yqqk8N-V;o%`X`S}kl%6}3Wj9I(C z@yJn5`I|CRcFS+7;g{$ysf}iA<9`{uq%t=(bdcMQ@@526)+KlCYSG~HS+%-(q9D&5q3#Woo zlYW8JSaQ&K^$@{*Vg6W^W@TRgR9nSo?;WO9oF+>>W#yxUaesdMxsuy|r4oFF_e$pP zl8L8N*6hZm4Ae`MHChC;0-%(z)0Cw*Pvqs(lu=J4>Rq6pj(0Yv$PeSkTmmKcrpq<2 zv+b?9Rv2a^@jcF*sO+L|^bCMHiMHlvI9|8*FQx>LBY1|^fVv{^;pA*@w7-1w{yZJ` z@5ytGQhgW({U7+98}!s_5Bf=RYmmP?+uWmA>^y zhZ1n2ymPlWTmNqjl~vDNPyBzxy=PPuTNEzXf{22G8I`DjAW>0rR78?wkPIpyA_5Yd z+!zs&AW^akhy+1`WN1`^WF+S%=bUM1dUgw5x%aL0X6C(lYwCw<*;IE`ojPZq9lr0| z1Uli!F9PblH!>aK2XH*(FB<~vqt<~;O-ANr=^Xh<4#0R*F1_Ha{C+Idp_+Iiut7e8 zfH@!PKtrHt#uAXS`Z=ff0c?#B^Aobun0bN|L4Q=D$H~B=GfTFI)|sEfe)N5-Huk|- zECZq30rUty&1GAIpZ&B~?l*uKQG22q%SP%V#LEQU|F9Z?+?=PPQ@XU?EDDt8V{RH5 zcpwK(287>)S1;=_3H1(^(YW4En!w8gB#cg{`I0s5vekWX{lVI@R8K|k>tLnN z$@J}9h`$&*9Aqo79^at04r$mV#K|uxXGBQ_N#EfmXQV-8dt5gUCa| z_IL_yf0>$Y*5?v9Zk;Dm+(o2?$J^?m@4!*jR6RjkCn#%IiH3yxial~3kcmuLWy_V5slAMRL|K6UM51`%UiF}i z#rFk)dk4ACCKu})Bx&<4&b)8%4zh919joPTAuTGwLn2ckGPs-9i7XK<(<8?gF>)jE zr0gpWUbX6GGhi9{%f-+rRi8ps%`gCzRgxJj`k^IFRuilB*0CnRO5_lv9h=j-gQ-$N zLueH_m`NNHjpXz-*t7$Nt1I78jV~vg6)i`#Y8oZc z*&L`pC zNtwh=d9pQv!iD*pc+F=+6-QeqeD2F8n63vb%jpJR>Mkn%aWDC?NLsJl0=)Uju&mPd zqXt6e4})(}$_6oyH=ELkK&C{nZ4e|s&VWtkKM=+=7<7+8v^wiq)4rmOuZ1H36{v^s z4B`O@spG|7yrCMs0t;AKhG^bqKZZ zRXvb*PiJ6}*b!yeP}c}o1LkZmu-I(9UC()u8xGr7y>HF=sd>|26tMMd)7k;P^5(Je zf=Zp$1gC@kQ}sOZZHByUgzIoTbKBN=v(ErtEU>xO`!R15K&^r_9}Rjs^aN~2Zk{M1 z=(qGSF4<&c=!fy&E!|&jd?{d#K$9!y^>*erJkYXa@cF>WBBr1gQnQ@b)ziwb1ZquI zxtUt3S5!k~0Ul(+PS&Y($I|~=fj9eWsAJ`#sD}RJ0`x(y&XZrZvbOkgRwI@yqDe(| zTGF@hc+1pfs|!e3`#u8nCFf_|$bAhkvmy1(%NO_Ez?%CbI{}>Q=D_I{qH`3XtaWj@}Gvy;J} z&)%eK=(c#{gA=0^UGgt3JNlgK%bT7!1vSfnK^l5`Zqn;E&X<|^1Rf6BO553GT^aa! zz{tS0@5$78=@u!2LGZJlxj|erZbn%Ul*Lp5!r5B*KEVw%)hND0yiHle`H(An49)&jvQ z?9k;T?0dxa7MXk`MnERx8O1z+A>U2*JJEr@W+KPiZ=bKfP#sx^jpMb(1&i>^phFE<#lxC?H~3M=P^twny^4l35x}?bXy|$P$7x zR5MT`DnpQv?v8l$rG)`6Z3Ajdx&VhcKrg>?|Wfi1-bZ)3osnP^vUph@c)Y57v zs9l)M0*n4e+MvuG12P?FokaS*f^lB#o|CVCMgLBU#umncWermcmaox+6=Tbn47i@t z#81bcO9&?BBWJk`PvVjc$=BVX8Pj!CEg@G%9>U#b1d1P1SwYwW^~m8Xmv0eF&E@LQ zdQ0GTgj{G;C)21Weug*rBL7>Sd+**C@7jVdsNGwc>VUnj!6mJ;031q4GMux&ZKj-Q zN9E7=9N6(`X$Sy&#L(N<8U_)R1?TDP$3a62rZoe?C%w7 zv4f49Ow&g~w2=E zL!uPeXHF25cz%(kQ080CLQVIPfY{@!V)H=c7y{ZshJG0<3PUkKOtNX!ohCQK2IV}=J^)yh*1{=?PWEAQW_;Bk6vvCfCtdi( z9vb&pY33Xz1>n1~MxQc!hAzeHH=g>Y>KjdVJ4F13!FU)cLPn^XMD_9E65xobX7oe3 zzZ1h0UmI%RTv^kmaP+n8-3LKWn2cMjk>oe!D3 z@|koY=w|^QBLu0RbzkLzzwV7x9)o~Lp8zgU2iBiCH|$Uu&FS`hxxcE={^|?kIVcMd z1cQKpc$$`$vqg3N3y<;7ce9KdBC?4-cltRP%}&1_$agIpDwB`23aL4iq5s5b{grlr zCX^U_VppLwGih5%t;FdUt90(&LzWf*n+z*c)BF4wFelj9OGRI+?1$?@Nl5yJxWLj% zARaWvd6~QuF_Q#w;*U?{Rp$d84p*ypoCHh?`j=DjyEL+Py?oi25sMU%xw0M<-!lhg%o`Ruo!{eB zDwj{+wE|UB8!Ds@XW#(fv;dnIe7n8uBIO4dL5j>pC@G5rfdKSgtR2%}IYFkW)V+bo zbm(&ME%j=>1+Vi8fv`yi&wg|zTSx~kmgu)TO!lxK{ncdZ=+`^tV!wFzbr%ffTst$h znRB3$J#Jo~{>oQ~rLfKKfuY?95kADz5y=oo-o!5TyY~YQgMeDR?p5XRJ}$_WNf#`4 zvG?~)nAdT0+}h#Hv^T$u*+VH@c7sWw&GfEKKWro@+;V6klh^H@4skxdTl5cQ*~r0p zz17R;$6eM3$%I>@G-;0W*O;F^esyXniE2oYe$5sC+8+ zl57eWGb}xJmRxkRHq#5GIXROi*w#0oU@emln_R{{Ug?Qo2wn?JL=dZ$1$^cfM<;de zsTL&1z2i#HcRdWT5D!^bMp@ye{=`)%LGvL)R@r?{K%RM_1s=|GGARo}a6;_7plqWk z7sUllzEa6203R7@m6I7LE(OJb76|O;;EkWDwvpR}IJJs$yO_V{J*1f$>Ef*BoxKkR zgk8Dg3YmW>t$a;qo8|#3-^1R*Je-H)3f$+pX<_hqA7wuk(E-DU0Ii1;zFO|y0>(Nu)h*u7;dxyHwa}ES^4-YQLK9l0V7_e z*{e4V)ys`Tz6g&3>8gj=!xcb*N;nTm{3g=QH%G%K`-?Z9#C<->FW1ttY^mztHkDq% zrvB-63byXOzg%E*+Y)!E6wpvWbdtR#6~M%&LdoTsuHxRQmOxuY5C%gZ%pPIwVVecUT0xqAq>)H@|K5m&1ooJrP?5 zEo7(h_|Rxb2%3cuC@NP>bH#;qpr9ZB0tFCN2jT7;&SEzf?w2AdIR)V|9)JPfm*jZH3( zg@;E~r-LAI192tfi+<|*qvBg6?-~t~$S_KQcS`);>6}-blN)4$Ad5!O!@4Ktch_b; zXt)?Mbv*mRf>3_+;?ZX%_pR^G==?d#{`u9GuoZowFHo;a__c-n7IM1iK~m7rP=U5h zOm2k_goGe|r8aRt8ypH0pV$&^5Z6-%HL_}t8^yM)XF5Pl+7j~i3rQ4EC3skwUzi3- zMfFe0-`oYBK{~5aIN;i{B&8^m23@e0>h(6wV?92-x=Zw@(_Y^kF<1TK9E~0OtnpWi z@rj9!v=kynM<(_r;MmkZ4CSbJFfS*SP4{J8$X5I8B<1*xCMU0SdSW_7Xvk(yYK zXV41G!|-;u9x4lP+_u_{w^q3yF1rP&YNlJ;q6~$PpLp2at<5HFa6wbvH#zO&+N1r> zXQEyu7|VSFgy@GH!}Zw?n>JHs(1bwrkrRmjGS;xiEq&RGpue+zb!4@J9tWu55gRBT zsv`!KUjoo&G8rnVw=UF9HCSOp5e@O6OY|GXAR+MuR6N^=5Hj}&xDd?sfoL-5VO6b1 zF^7njJPQ`mlneH=7M|McuP&Ohf@)9>QDhUb;|^=(GW>{#F`-*cu@^$@1c76pr{k z60InYrJKME45Dmc5fFD?`a~4D!>Mp5w2JRDClnXvLICkyuLYts*TF~9AUq|o`oe$n zl*HZvQ+#9rvaKij_HIi6%~2C>^f>5(BKjgYMEk}M&w_^ktQCg{fUnuUShHS-+8``6 z7IJV{WPn;0M9B(HW1a})Bt?x$>>%k5?|iO}oIo=m40{`4*u|cdik|oc&7gqtIuu(2 zC{Dr*{_loOtY@zWWE z%s$ZQx)=%#<>C<1OB75yG|i?dmy%;H2t+{G4oqx+H6@Reh)2PDpv!}e?o)W{mnfH|JN|YCH(VG4>FvF`3s!QR8SEBcFHDL?c;qi6F{>_OQVLH@sOS( zUTbJjCV}V3*emk7j0hq2ec|a%N=F1z7G&25`sj#JRcT7cZOsM-LKi^SL$q9bN~9l2 z9S0Seu{|O?*S|s_al{D_{>7Bi0O5-s6n6=O{rk214{&%<{QlnDQ-Xxj&NK28Vq*UR z!rLhJA`Fn&AFddo?HofHL08*~Ae>Sn4eI$3)&C3)@!HFm`w6#w_cuawlL79l6wFqw z$u`N+{XEz%!ccJN_u{q{eXD0L{}#G=)k`b}0@>><6M}Geu!3gyfFyu3;l~J9T08IV z5BG5`hPW5SqQvAum@-69m_2~pcY8!1AyM`Fr2U|o1dk^nx7{YSkDp_YNDnlCtMr2j z(igFIbsr>E|L`qg+WT+92{2M6(vVpPUcajcl-Oru{@eqInzd;*#mgsv%$LFTN`^)G z-(doV`?3b1@a*@6iH3mumAT+ddUR(kAK_6^{*wzZ3qgp10f*-={BzkgD=JASPJxty zf^FDuT{;h?%)N8KLncFb44KGwj}unJ_kc%0vO@T)F0HWdkaC(h_PD}=AgG~LH$J%m z4?TB;aP7GxkdWAZLST_d${SaQC=f2V`(18d2SZ3PGn8o`MgG3`+pu6f{0RU4o*Xb< z9>-yZ!6G7vv&)c4L{fE5EG_4Zva`M5Ux`(>zU>FRFxD1G5)Rcohum1dT^m zHK;qlJ&H-p?g$u^Bxt{QN07?{eHw200Yb|yvF}F-LT3MZJbr>03PD^ggl>*-{p|_( z&)k)aAr=E42*$|R)a)wI)B&vtGtZ4zKtOAc7zY=Z;)7gJ^Ukq&O=2=BkZi>-*mc(~ z%YI&YWtDg4?%rn7U;lE*$!wz5h8rAJXRxo-*4i^7O)Q}PclksTE6JM#1Oif}Bw z7k0Mucr_ZE^sQfE1%$^~kt;|CZd=o|sWePbU-hlJg3K}9NDE}HpEoT>j`Mt?kA_fj z90!4(iU|rQS_2|5HIzJjiXUk6*_eCk)|gyAz?aVuaVI-WV)Dq>NfXh)V%W!Pg|$^z z0C)Ca9*;_Y4UdrUWN+x1Jv<3MVDo_>$uLcfKD-Bl!=n%N+|P+^*!Aol8I9cmw+ zkf&yr=~F4_3!cKC@I3YR`?ue&nNU6&zB*!`rh_vj>%U1ARJn z)MqR0TlZbAQ+`$#LwxE)EiL)^gt}9K4`zpZV-(LMXiR$UD zEz_qFdr9}WAd@BjDk4$il_4twisAdirDq2CwwDvj${3qucch!CCnYmE_N#P8(x#en z6<;Y~vB=OZIfK4nI6 z0(0c_=|lvRPcKHJO3)5PLUelPy@KZy2T~WOrCuFZK_FsOav$9xVKB=rK0NmUGDU3Y z?Ph3upFxOy0d!9Y!duF)T~Zl1UIkU9a_~{=Q#2%0wHlG%9T_gf6*r(!sNtMbdkF#> z+lNdcp(%|wckx9{X5lG_u89u&UpxNiuLzIQj3s0|smS4)7jNFzx}oC4SKqO9K z&wllrFvx!nCIiTc*$n+WOAcKW!4F}BDihJ+Pfy+k5&by@A@c!1P{SaJNHF~SZ|}Ms z^o!fG?MLmL+(+`Czy6*Oe}2herd!!ydPvQMuxoOWFesDs6uasE9W|NbvKT^J5hFp!;lKh^hv~C>9J~NNEMmJ3aJH@- zE6xA@k&2o+ISusr2=8Loa7hf5Ra8tS6ZBpGI~!r+YSeuCG>rJne!YKvLz{@;a6f+i zdpq2I3KR8``~}1wjxh*NcE46Yg@PXK2K01+p{4%!oZM0T+qsP6pH{!y|NnnBV@ZCW z>=CznZ6Zp@cikcw!yS!`o$C}5Ixzk{xVQJ?oe%!seRV&W*gwZnf=(|1VgU7JKum8z zvX}jT9FGs+w3|SfUcLbGs930gup%D6+K#?{|B%P^e9#&XEA|H5H4NwLfBgvvO3?Bb_&BkFff*_UnZwn!D4$f)V>6Ec^mj)8>w*MRqZ@{gSAV}H%Ihc;Z3!>fi zlKf?0&f9JC(RNPq0AbX><2OgZOz!dBHKH<1)er*_(fsRI;1?t+2=T)|hvS~@5aag; z9@hy@-~V{w-3#vb)BNkHgU&0Qp-M&&9s1X$U~ro>;RU23_I|m&Jv|85U{HZ+4cO{? z9FU;y)!TRY?Guhg5C#2n%>4xZ0tl9PAHVPcv6s+a^Y2mUvFkPbpPWzs8&mOr`qd|g zcMZe=U=CzK?gz40Fcb#=nKT0+sbNb=jd3F0cK4P+@i% zt~z1M3%Cei?0Fq4o|DcXHQs zEy25tz4u(wIM4@h(*Co-o_@BPM0|0C3wAhrHW9c+WitJAU6rA zm!RTdC`&%dO^DdD3Aucj0P$AifB+}*pV<8vw}ATItO*IsiAVe(3Q+^K(&ZLF9D!i9 z`W_iV1I+Egfq&VnS(gZ+gP>3%jLe$d%Z-GVEk4EZP-cMFw0ry1GJyt|0Q(e!oa)R#f7fPAAO1m95d)2*X6#AlsuZMYbgr#AYdJ)T8)FK zLIiOe@tm-0&fohX1vo_{sJhrL1L6f@s~pT{*jq-L$C~E<D&Y9)oEFo79z=#%)J;Wf8y#f6vbS%Gi6WBe3WPt?R ziJ?dD4*oMD2)OEOcV1>5bU7#nNznr%J%t+tNO?0RltPCeFaRTWF$tou14nQJo2|;+}Z2X1`h<$>0 z{T>nbVE3S~hbYd4827vf*AafJqUDndkLG{viykJ3bwDWKz(1&S z@b&Q_%zgcCT8RhSA=&mQG6Da3pEK18EIa}~prbCN0|QhAJU(6+R;1)dNXlTv&3AKX2XzpY-{7St$LHnh%rq(MCf zbO?|C`&V-b8kN`yFeMHjpt=GGx*AcZBzUU!yM-*m2N{;2S|{}#qVJRU#b6Wmo^ zWr6!x^Xqi%hjYQBicw;=!xOxIGXczMcE-kcQ{@HRM!JXDHAV8}R~~9NzVKvc=-B1n zm855ma_JS?RmK*S8rPpZc``}F4u|zYIZVOQ%Gf|2AS0`KBWnJ*(CM0_D0!hTjd1#% z#a7!p_(_JO-Hk5W>K76Goh7DzA*xcBB9($sa(@KxoEWUW^DNu zo9X)nz4bbA7$tu5HOB6(5sy*N_QqAv`n-fj){5N^BCyf^QbBXVZMAN_0^tqNn@ zC^DI?JRbEe)}``vF21inxh<6h&n~lN%CWbj^$8v&%BrQS06JQ!Z>P?ljjN;^gp~F6 zak!z*Fc-e^hMbDq8J_PR8C4BP?#|b*=(~uLX-kdV{6(@jDob_by$Dmi{X(-DVVG?{ z60O^~VD%CdWAt;(sw>q@Me;RA#$HR2Q*o&N%>0qNf{|E_Q8TS`wo7}ceL0j%TaV}3 z>a5N9LNLa(PS|nn(}Lb}o7F2Ry45%w^AY-u$yo@7Rimp<1jb4yw9Wu)Yk6?(LY1uz zE7PTEys?!$dIBtSUD#!5%0A{yf}W;Dy}fJicatjHg>^22;)&jj_;ZaP?H9Q`eQ6@l z_w(d}j93)u#GFNxQcv-(8luh22O5zk!msI|kFn^+vCv}gL%P`-teQg7D=C&U=+%<< zoLvrV^|S(Z*C~G5Dv3^Q=?^W2i=xsOB56wC&91t9(A4@=5SmvSEhM^-;04z`-jdXf zM8&)Gpyl8uDxiq@MaRaSo|<>6c=H~hV!dNvgvDbum0Wbcg)`5Cc+1h0T9)_U3Ni+3^7Js5z) zQe%ASShRf?BA?wjYMFr+$aa9~6PL~>j|kyeaYrrY$D7A<>0hy6fAB!9r2w6o z(6&!IQp~m$huHf0YmhB{Ak{GRrl{3SBn+_2?4DpPn@!|whhfrn75-IBo=c2e&?LVl zhfelF@j`qL=C$-bN1+CoxbX2KY{SUYECV+3upH30a>2takT}N|s9$xT^W>>Q-_bkXZ%o&eqqEmeCFK#un5HIg+7y3{;b7`#k z-r&e*)4HhDF<(KW42*6$u=p`)LcGbA?S;!zf|Tb>O@zIm?@3& zv^i*NY@4HtX4NPhGeo8N6}am=DY|2Z7$2eVk%Adk-5L5$KfD4HMDn>xk$WrCJpS1_ z_Lyyb7*1}pQuR6-b?L{kBGFS%wm@qZ<3kskJ05x2^p$&|Da-0A+I_Gb8C$L|r_SPd zAd+sf|C_BB=3Y%#wr$RWUWbd^6$|Bx*aDgF`3{34Y6+s`VvEC-%#Twy2E(YgXqixp z+1{Zd8$X#Y2db2(T@1{KiX3Bgck}gQ>v$_ezqYQ_WZjq@7KFL%Gvp8*(PMH zxz;y0!1*K>s8U&u&bYBCMlXzU<=Kw-M`}1(Zlo5mC`GM|ae29?R%@m@cTx*jUp<3Z zd!9SlX4Mmf@5#Tgg0yLiX$N&m8QNlsrIzKwQ}6 z&8&$+!U*Adb#vMg>TRrA>nwkrIHEQm;ZYCDLxf~r9D;D(&Vfea$`#y#e^(WEh0UAM zJv0Q!gvaqm!drC+F?d;jzOnYZ`PCZHt{=glHQQL>_K_{Z%%)U znQJD$7$TmJP?R~aE40~~E>|F&x3>51t@dGH5EIjQz?))--{qF$9VS~j-FP_(!>#&~ z*;*;^JUk-Gt>@2;F?eN|)JF1Ia(+$o&ju3H8UYvKnOhThnUYmy!AWAQ;{fEB?6g>6;)Tw|(plf_NoL7$s&NQUhhh z6~J$Q2hCQ>#1i1Z%Q(v1Z1E8Jm+4}BdJg6`LaGXuLTmRnyCi7C;6;;te15n ziTsThD()|16~N?aZoS_1olkD06h1LLJz88Eg)-jfmro#8_mbe!A|}H!M{P!H-Xoa4 zbso|k;nHIxU!>wpQ~7$gc7y!_{`%jPMY0L_L-{AEAbdM99P^L$aDASv z|0frK*sttNWpIS%<^x2oJRS=GX#Mr4FcUtnx%AXHkwf(K9zlPM9wi-$#Nz^gqd0cv z3#)wRk>khX5V_LdAKD6nvP~8JL7b&s~WSS19QfB)x(;U*LB6&f zMZobJALSENf2OQ^LrbSpeYDt08>XjlFgO{yq;rN`)qe71llSLeQ@|jh-9!Q3?6w65 z>}ip7TsO^JI*Za|GPu%Fyr^_xWTETuDkWh$Sg)-NN?Jia z*BWjLdfO)PF00;rd#f;2G8wKAGuln;?2*5*-=3jD_-B|?x?a)E z$vA;quUqKa(qi6rruB0$w-Oib<02JT6-q_rO<3&Z{6%G0feO@g(Fa2V^omZJa(Q}s zCI*4;(T1dl0>n{B#>PZS|^`(i)u;=^|0g#YUS0+MCt*zB2hga+AF z5f|;Tz$7-gGgA26&Ds7E-&US+*$V~TG)(TD6uC2@5NP_E=iGo4d7I0-@E=h{0~24(M{FFmau*JTuv79q?47790@}zMPWi3EJn|t>AJ$a7 zj3y0enpVHUOtyOfg-D^79V7Fp@d5#tnJ1er5S`MOD_#jv00&LXeq`!{2|IOjVxpD! zqp_d#nRpNo%P5|o_$p8t%^W=2k*MH1r5#LN7b#5dvamFM*%Ueog>mT<{OHq-387k@ z+NM}@9YhS@=TKrtr%ZScA`a(Py7R~(yc(?!ERfg|d4HD9(>X-;D<|yOBFaT_{ZH0o z&oy0Oh%dur>m44cK>6)nej%=aFO)d~nc9&=R&t|qrR=!b^Po`GqVKY*gmnwa^n|24 z-fW;bfo`0xpNAoIKdN<8iX!IHl`C<&8@DJJHE3IOb6VAF1{fzvE@Dy5jmEc zb+!7r54+>UBZqM|tJ)|ohjzcsy0c?Nmm6?ja|N6(!FsyXgv5P(Bd+96k~h9VUx5;S z@Ng=zDZ~w8XvdK$K{xN~Q&C-FL9oxfAHn-w!$aO+WJM(JZfExWfiHOMe0$)rgt~^DAP$2# z?WaOE6o!R%W&>82jg+=fVnwEyZ&fF%I>evExgA4Aq$BZXha1xe(-~3GYce?$A=3db zBdQJ72lVosmp3jA)|yRC_vA0nB6=22a$V+9J|$|o5J-vSmG+AP6Le|NCD!@t45y2q zQ`)AJZ8d7-L3WBZWI^t57^1Bu_lPm-U+;v?AA~v|q>TKGmRjfh>k1uymvoCGMo=i0 zBhK$t^TtWyN?BF@4Ih$);qlh@!I{4X6K+PtrnRQ2#hL_SZyb&mV@rAxA`x+{MtAc{ zKfgSd4m@_^mgKAlt#fZIrwyG)=6~W1S|GuYJ=<-R=c3n*7fNIi^$3-=eOv7L`~}EW zT8I>1BHdik$K&My?!DZGnXD0|q!GHy!J$2$ufw$0UwEe^h@tE?8s#c zCN+?X2D|CcPf zXDsQYn=@{t9B%U#+=-IT(_e;Ots`ev+(>8IIn6_Ej@aBE!=qmS1_G1obh)`wo~(7G z#TQMR2Ce|SJ-1<8?rgz!L(^@mdf~hzR`~lYB*lVRbs+By!Fi_LLNT;o9hzB)!PUjf zpR5jJj4&DOCXufle)sMj*lbX(v>#PpdI4z(cv9@p?Ivf=aE^s)vrHJD7> zt|bR5=9kBizQ^7v&CtdBoO`s?egJnqDy)gU%UTUFv)d_*d;3Y)Qx%Q2A)yks>M7RE zV^K~F! zi)=w=(!blP>99rDMkY+r2-)1E>}3AH7YZnoj{yu~TPVqIq@<)3?e-n~9EM+4*1Q5o zCPbNEP2^0(?$^4J)D|yKb%$#*c8r?KARk(0X80JPjmsX8FsS@ZHGnH`6gDF|gI)Ib z-)|}mHl;(a*lF=r@T=irbmnN??@a3YlFFO)#gV$VXNximK<&6iulOVtOMUz*qqyVR z7)aKIeNu| zlAN+&3)4PcjW^KEdbG!c+E0H=&GKisU|=z}=~*JJ4sYQ8&9V7*u=})P&U)yt3X3?|!aZEu%erIigm>X(Ps+_Z%CKek(^<8f5Kfx}Q%v7?nwz z*4z$b>b0r;_BA&*tG|Dx{=|uO^lzFLWTruTp;j09wpuXCu9VcD;jcS|h&v@pd<*Z; zClcX%d0Aj@kS{bXN#5d;!YDani%}pqxwc>?-T5* zbJ4_7Z5G&y_H)11(vPwD7z>@V(6Oz*Y+9el^hr0fQ@qO|JgVpJK^m@QTawax-JPF$iLn!n=v!bb zsygaMx%KplESqYayxqe@YNvX7KN)ZaAC|>L@F%g5Yq0kuTN!>aexB|RDGJ-c=iZ^9 zA)a`YT_LgS`vozzqS?uRDZCSXOZ#G0;Ys`ljM|XT^6$Ph9|z}K9|Sa zxTUSFIojrF|Hzjj8^If`!~{r8ZVc5&6qr2~3R!Qa7T4NX>ac}rkc1+hx&j#BrnmzE zZg(?Gh3Q-x+ebf5x5n+KpqOd?xDF{J=Ifye!Y(VWomu@ylTB*_1YKHdP+Z#SkViFA zs;<7=lB!}-l_i+r&w_mI&61><+!-f+FR%T*M$^89I5LU5f1quB`1XQXe14U%;gY<5 zh>3Pf5t5p^NuG5d(Z0L;c@OWu=)?Y*4=&$A1ST;ykw#}`xb+jLwixB3@dV+i;~kEXcz_~9tZ zQ9vtMSH&I3Oe-!F_AJDGOTcg#oUvDu$*{sz+N%lOj51IwU@;yQ6zq7K%vPWnrK{WZ zU}fq8JMG(;P%2$DL(E*2?(B4GD(4Ia|H9nVK1EI`Rvf<^4>|hMPBj*#{i}`Rmi+kuPx3`$~Z@)_+%$#<581&rzr#}9;w@<9YPZr6(wpn z_fGa$xnhh^VlGN0D1B?t3w^82Rdb&H`f2TkDq!*JC2mOZBUk;Bqt~Ps1#xM z%jvR`x-MnhpPIeI$IiS0=Z;srye<LTi=GFD}>=(G``0VCN=Z*GhYTPLLj$i$G zjFf`z^;gtt19z32{D;7kL~C=Ua&r5ELMdK*Ed8@M!yf#6mo#^5`GM!eq>)cbN=jDT z?635^q2R(Fm}?Guf3KJ&4Nr=edc!Q^#n$N~k8UJ&6`((V=4?%6W%qd(3N6-j^6udV z;@Nd{bUxhtNVL7mu%G;G3+HE~(^twyV{B`KLvNIrWmw@K(+VS%!Y}d(7wGSq&ZZR} zobLazPr5-KH)6JI9>r++a@UvHppX>KiRTz!|9XVOu{8)|5C zH7M*)IPRuyZ(&hb1ozb1+PYt0c!X1nMjrEY&U|gmFgiKS>ZMgru9I$|sAbL1{m!wS z`T3<~JuSQ{<$#eTjEV$(FdVs#Ab|m2PBLF%;^O1u#r3BrP|#NQ8M@-4zMRrE)KYFp z`*QI~FY7q{yEs%dkM|Df>YZQJs{o?4{Q}E3d`{)xUG6O9J>*G^UtaY)xjdFcp7dyCXPH}!XNZN`x+ zdn(?@ASe?mp00M!$9mUIp0hi6)=dTN4!`;_*6`h^~$%ldE72y)`ns zPea45J18a;NqAiiE{Qv7L>>cAgcy-x?1vBT==|AKc9fk;Bi3c6P>`FS|4A=bfw5Iq$yZ^T%OAmH-EQUd578)W) zfy>8Nx$_r8s2RsDckYDW66Nw$7)FG^A@!Yf>FKl|G;`-15sJh+!K(i}oEmu~fOw77 zb|*hexHREIciIt;dS9N9okfWK^qT9^-gj*RA9iNuPdmth^xbTTfYbU0+!;;OM1KGBlFDezWyX^>$4@L5jJ%R(T#GQXH1p!k zo^C&3MO^xtR`f$*%9U2G8N(|k18b~CCSeWRs5WdycxQgqtBjWh?>~RG*r@9{i#sjo zdf)E+I(iF(@ih1TN?*8I_x@?}IggcAi}vRB_A3@urL2Jj+6m#nUKw{uOSeTX$0~`@ zCl}F(+5IFIM{^1>(u%nX5RKj5Z2zS)0=bgkCren(P03r8N{jVo8;x$zqv)dEOaPHh zB5k`v1OhR3h=MLjNpBMtAA4JhU!4e83q}uvDgZ_PK8mhtm`K?xSPXLRGwl6zM%Hp(j3p*8RFM=3;@?9TW~ST&$OVZ_B; z@d3lhVw+3ehs!;ApOcUvs$>)7?*^BG!&X_7#S}F$R6O&R- zC#9a|y{qMJU|@IjB&T+7RL`{mvD~D)OF#RKzWbQ6&fyXc2V<*(kGjC4*NfK6^M5~Ou@}}JMrrYvkUP> zH9A)vPx9y7TpsjCcY{brwE*5JSro_iHXWx^shRzH%g>&7Ru`}8^ zu)|phUo(PTr1DsWiHV6+;{AsY$UNJodyr$wk|5DgB}aNI2ux*&-Dvxxd8^{pUyUb{ z3))SQ_7;0hPwlK{3HqZvgWtbDdCW|FR1>0xflMcIcr}MRab)Cl?tPD9JW z%yGlT71Eg3)R!k-$#c{287l`-kW$jV%E_5&KTW$aLx&nEa}1|z>g>$7S z#~Rm0j>gS3asOy74Ti1MbvCwsq}FgVf)v$j&+iRycGS>K*m!iF_w0DgC5wgO&`5gK z%`wks#29CMpie}OL$|t?@%*F7P1iR%dMz5l?{H~$KVPVcX~D2QL+ z#vk2=L^P0Y4tIn~Zl3wj@wp56;v#SMLKAnfJ3g?Uni?IEQWPI=Uz_hk6)DU(k?5bo zt($kg_^mphsD0xzf7Q{^1Z89TCoAHj>)ntoRLqi`jxIX8OfPEV*gSm<&>9!H`MHG) zdcIn8rB9|OL>qp+=cb~9ewER9jJEiG<-#13u%aft>S&p~CWm(MgN0IS7IBfS_t+PY zvb72r#8Fjo^Qg^5!@$PX+&Qlk!zS}({u%W+n=LQrYp|Rw+H;4yGZUm(=CH!_#p}Hl zo|OFOQxBSUOrU%kkibNkqE!PhG-r>?YIpHnLoVoN+W@YsP+%Tzu z*X^g0ymB_cAVq0Wx-PrwcC!8%edOdJ5HC)i`LB(WZhuZ4MD&r3%n``MT zz1xK5DlTQS^oTo>NfF!I*@><3PGgRr?cY?Wtv!1_hR3=)_gCz|r1;vBcN&#@M6PKr zZcc0p-dOQ@k;jjsWQos~K1IGww9Ptz*L@H5V&Qp_C$>mXz|6bWU6#)iEH! z(2+AFv|?y@xYvF%^6-S`3fNu)myM_G*hhx6$A+b2oKy4fDQ!DswA6DV#!d5?ynMVx z3#~5VXxzw{*4Wl4x;V&jsv@R#@`?v)ey3x{>&zXr4=SFfo#cq-N2v^io15yN{4hDD<%VynN1s7$CAV3={H%05x^g4N zl@8}0E^3c*oErC>MGIRqJv|hW{fs+#uufZByI&Cejil6`V-X_^Tq2(;V%+OxH=h1F+y=xi@F+$@-eq!Ej-}sR) zS5~Km&#Y!=XTP|D%NER(>@Kh?n<%Ay@W79P5d|J)tWk7M3>Qw>?MLgh@Uf@;x50bm z{aTTRW)R0m3!`*y>8KiFz8J43aTgn$qF)vjX=jOX8z$_#374FZLqo=%WBG#@7v?33 zVzDn?P>SKs6`!KO7r4xv63S)E7H}Qwd-KCH6?Tg3b~B}y{1}|TeDEorPi%!!>+9Ng7dtx^?dh6mJ%VhI>*mHT0m*>AX?aJYxBAMfRb=` zUko1Gh`}#V&DS04Ki6j29^@DxO^3pUvvU`X6^0#&oOfO$->!C)gmEM`3!E4G!?T#n{> zamI(u>!XRuT~xHR5x8o_1S!;Fk)Kf17uS}~Wm)r+?gbq4&hD!XMQ3}tI9OS^*`w?` z%J7@3l+PYR1Og_T*vAFOHjX{Zv}n&_E`A#r7%2kU#Vbmw1#Hp9 z^hL3oh32WbODH@yC5vy`;na2LOCj#wtk4!pOP$JK?YSzxwTTj0SPQqOW)#T$3s;J>j%2GcaX{4q!)St@WigHL8!NPBmXFqMrzc*VBPrgj{Qmvv~JznL^G zqs#B7Q)nl3x45^vdtofFz7~w~f`<7hx6VQu8g<1wX`x?|6lt9VG0x$1Zmq1i!H*C- zaT|252aO6NHCR3;DmtDwjp1b$L%H6R8JI^;1U#SpJGdHAHN>jl+%59343@h7lIUA&DldRVKDq<)eOWSb>Y+B*x zs$bTG#)P)D+hx_@8dk0Eb-ytZqT~5uEFpuDJV)JWst~m_Z@PGQl9EQ?RJ^P~@BB?R zv$$0**fh)(dU|m&?(_B)qLPZPT?%b5U`A?%=x%FVfB6sYqAkUN@b{AYrrYy`TNP<6 z#DtuOExc%n>V!8^d|9Rpn`c`E+eGnIy7RmR4sCWi=DoCM`;=-JxkXl|2DYSFIt91N z%AmOY<$mRpI)~zQthtb{587nI*HM^-#kA(r5n4(b{(I{C>q0pUPw3v98vWI1vl(%S zMSLUWf=a06+I;Z*;$El|`H`;lTNDnCP`6riZw{DS@$=^}(Vd|CX=v!oSeVsTm!D!J zqcq|SZmLn{se?%=Yb`jW)UHSb!=-y#9usSHH7Y&I#j`Yg95%S~mSkt`DsYm@*phlH zzxdg2+G^*^`2mf{Di>J#zBxiTc|U5h$Pe#_-+;!9_)%0DanHw*5nRvYp2Ll+!d7|K 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 rexdiff is testedblack-box teststest/rexdiff binaryin a ptytuino tests of its ownfake rex, gh, pbcopyrecorded outputlibrary testspackage x_testlibrariesdiff, vcs, rex, updatereal gitin temp reposrunsusespublic API \ No newline at end of file diff --git a/.doc/arch.md b/.doc/arch.md new file mode 100644 index 0000000..2058878 --- /dev/null +++ b/.doc/arch.md @@ -0,0 +1,89 @@ +# Architecture + +rexdiff is a Go program built on Bubble Tea. It runs in a Rex pane beside a coding +agent, shows the changes in the git repository, and pastes review comments into the +agent. It talks to Rex and git by running the `rex` and `git` commands and reading their +output. + +![The packages of rexdiff](../.asset/arch.svg) + +The diagram is made from `.asset/arch.json` with Excalidraw. To edit it by hand, open +`.asset/arch.excalidraw` on excalidraw.com. + +## Packages + +`tui` holds the screen and all the state. It uses the libraries below, which do not +import each other. + +- `diff` renders two versions of a file as coloured terminal lines and stores the + review comments. +- `vcs` runs git, and gh, glab, or az for the pull request. +- `rex` runs the rex command. +- `update` installs a newer release and restarts rexdiff. + +`internal/` holds helpers: the file tree, search ranking, turn detection, the clipboard, +the editor command, text cleaning, and the diff renderer copied from crush. +`internal/testgit` sets up git for the tests. + +`cmd/rexdiff` parses the flags, handles `rexdiff install`, upgrades `rexdiff.lua` at +the start, and calls `tui`. + +## Rex + +Rex sets `REX_SESSION` and `REX_BLOCK` in every pane. When they are missing, rexdiff +runs without Rex. You can copy a review then, but you cannot send it. + +Each request to Rex runs one rex command. This one lists the panes in the session: + +```sh +rex api call -s $REX_SESSION session.list_blocks {} +``` + +A send asks Rex to paste the review into the agent's pane. rexdiff does not press Enter, +so you can read the text before the agent gets it. + +Agents such as pi and Claude Code report their name and state to Rex with the OSC 7501 +escape code. rexdiff reads that status from each pane and treats a pane that reports a +name as an agent. A `rex events` command stays running to stream state changes. If it +exits, rexdiff starts it again after 2 seconds. + +`rexdiff install` writes `rexdiff.lua` into the Rex config folder. The file adds the +"Toggle rexdiff" action, which opens rexdiff in a pane beside the focused agent. + +## Git + +Each scope compares two git trees: + +| Scope | Old side | New side | +| --- | --- | --- | +| uncommitted | the last commit | your files now | +| branch | the point where the branch left the base branch | your files now | +| last turn | your files when the agent's last turn started | your files now | +| commits | the parent of the first picked commit | the last picked commit | + +To get a tree of your files now, rexdiff writes the working tree with a temporary index. +The real index stays untouched. + +Every second, rexdiff checks the size and modification time of each file. It runs git +only after one of them changes. + +## Runtime + +Bubble Tea handles keys and timers on one goroutine, so the model has no locks. + +A reload runs git and redraws the screen on that goroutine, so a large repository +stalls the screen while it runs. Fetching the pull request, listing agents, searching +code, and sending run on other goroutines and report back with a message. + +A turn starts when an agent in the repository starts working, and ends when every agent +is idle. At the start of a turn, rexdiff saves a snapshot of the working tree. The +last-turn scope compares against it. + +## State + +Comments live in memory and are lost on quit. An update is the exception. rexdiff writes +them to a temporary file and starts the new binary in the same process, and the new +binary reads the file. + +Two git refs under `refs/worktree/rexdiff/` keep the picked base branch and the +last-turn snapshot across restarts. Settings live at the top of `rexdiff.lua`. diff --git a/.doc/dev.md b/.doc/dev.md new file mode 100644 index 0000000..4e43894 --- /dev/null +++ b/.doc/dev.md @@ -0,0 +1,77 @@ +# Development + +You need Go at the version in `go.mod`, git, and golangci-lint v2.15.0. Older +golangci-lint releases can fail on newer Go. + +```sh +go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.15.0 +``` + +## Run a change in Rex + +```sh +./dev.sh +``` + +`dev.sh` builds rexdiff and opens the Rex session `rexreview-test`, with a pane labelled +"agent" and rexdiff beside it. Run it again after each change, and it replaces the old +pane. The log goes to `/tmp/rexdiff.log`. + +It shows `/tmp/rexreview-demo` by default. Set `REXDIFF_DEMO` for another repository. +It needs fish and python3. + +Outside Rex, `go run ./cmd/rexdiff` works in any git repository but cannot send +comments. + +## Checks + +CI runs these checks: + +```sh +golangci-lint fmt +golangci-lint run +go test -race -count=1 ./... +go fix -diff ./... +go mod tidy -diff +``` + +On a clean tree, `go fix` and `go mod tidy` print nothing. + +## Tests + +[test.md](test.md) describes the tests. They need git, and nothing else: + +```sh +go test ./... # all tests +go test -run TestSearch ./test/ # one black-box test +``` + +Two settings also use a real Rex. Neither changes your Rex config. + +```sh +REX_BIN_DIR=$(dirname $(which rex)) go test ./test/ # check the installed Lua with rex +REXDIFF_REX=$(which rex) go test -run TestRealRex ./test/ +``` + +`TestRealRex` opens a Rex session of its own and closes it at the end. If Rex +changes its output, record `test/testdata/rex` again as its README says. + +A fuzz test saves a failing input in `testdata/fuzz`. Commit that file with the fix. + +## Release + +```sh +gh release create v0.3.0 +``` + +GitHub Actions runs the tests, builds the binaries, and updates the Homebrew cask. + +## Rules + +- Write short, plain comments that match the existing code. +- Text from git, Rex, or a pull request can contain escape codes. Clean it with + `internal/termtext` before you show it. +- `internal/diffview` is copied from crush. Record each change to it in + `internal/VENDORED.md`. +- When the right behaviour is unclear, follow herdr-reviewr. +- Write commit messages in this form: `fix(tui): keep the view on failed reloads`. diff --git a/.doc/test.md b/.doc/test.md new file mode 100644 index 0000000..c77e619 --- /dev/null +++ b/.doc/test.md @@ -0,0 +1,39 @@ +# Tests + +rexdiff has two kinds of tests. The library tests check `diff`, `vcs`, `rex`, +`update`, and the `internal` packages through their public API only. The black-box +tests in `test/` build the rexdiff binary and use it the way you do: they type keys +and click in a terminal, and read the screen. + +`tui` has no tests of its own. It only puts the libraries together, and the black-box +tests cover what it does. + +![How rexdiff is tested](../.asset/test.svg) + +## Library tests + +Each test file is in `package x_test`, so a test can use only what the package +exports. A test that needs git runs real git in a temporary repository. +`internal/testgit` makes these repositories and hides your git config, so hooks or +signing do not change the result. + +## Black-box tests + +Each test starts rexdiff in a pseudo-terminal, sends keys or mouse events, and waits +for text on the screen: + +```go +tm := start(t, newRepo(t), opts{}) +tm.keys("]", "c", "h", "i", "enter") +tm.waitFor("💬 hi") +``` + +Short shell scripts on `PATH` stand in for rex, gh, pbcopy, and the editors. The fake +rex prints output recorded from a real Rex, in `test/testdata/rex`. The scripts in +`test/testdata/script` run the command line: errors, `install`, and `uninstall`. + +`TestRealRex` runs rexdiff in a real Rex session, to catch a fake that no longer +matches Rex. It runs only when you ask for it. + +The black-box tests run one at a time, because each one is a real program in a +terminal. diff --git a/.doc/user.md b/.doc/user.md new file mode 100644 index 0000000..d6746a8 --- /dev/null +++ b/.doc/user.md @@ -0,0 +1,234 @@ +# User guide + +rexdiff shows what a coding agent changed in your repository, in a Rex pane beside the +agent. You comment on lines and send the comments to the agent as one review. + +## Install + +```sh +brew tap rednafi/rexdiff https://github.com/rednafi/rexdiff +brew trust rednafi/rexdiff +brew install --cask rexdiff +rexdiff install +``` + +With Go, replace the brew lines with +`go install github.com/rednafi/rexdiff/cmd/rexdiff@latest`. + +`rexdiff install` adds the "Toggle rexdiff" action to Rex and binds it to Shift+Cmd+R. +To open rexdiff, focus the agent's pane and press Shift+Cmd+R. Press it again to close +rexdiff. + +## Read the changes + +![The Changes tab](../.asset/changes.png) + +The diff is on the left and the changed files are on the right. A red bar marks a +removed line, and a green bar marks an added line. A long run of unchanged lines folds +into one row. Press the right arrow key on that row to show the lines. + +`j` and `k` move one line. `]` and `[` jump between changes, and `f` and `F` jump between +files. rexdiff reloads when a file changes. + +The scope sets what the diff compares against: + +- `u`: uncommitted changes +- `b`: all changes on the branch +- `t`: the agent's last turn +- `g`: commits you pick + +Press `|` to see the old and new code side by side. This needs a wide pane, and `z` hides +the file list to make room. + +![Side by side](../.asset/split.png) + +## Comment + +Put the cursor on a line, press `c`, type the comment, and press Enter. For several +lines, press `v` and move down first, or drag over the line numbers. + +![Writing a comment](../.asset/comment.png) + +The comment shows under its code, and the file list counts the comments in each file. + +![Comments in the diff](../.asset/review.png) + +`e` edits the comment under the cursor, `d` deletes it, and `l` lists all comments. + +![The comment list](../.asset/list.png) + +## Send + +Press `s`. rexdiff pastes the review into the agent's input box and does not press +Enter. + +![The review in the agent](../.asset/sent.png) + +Each comment carries the file, the line numbers, and the code. When more than one agent +works in the repository, rexdiff asks which one gets the review. + +Press `y` to copy the review instead, for example outside Rex. Sending and copying both +clear the comments. + +## Other views + +`2` shows all files in the repository. You can comment there too. + +![All files](../.asset/files.png) + +`/` searches file names, and Tab switches to searching code. + +![Search](../.asset/search.png) + +`3` shows the pull request for the branch, with its checks and recent comments. It +needs gh, glab, or az, and you must be logged in. + +`e` on a line without a comment opens the file in your editor at that line. + +`?` shows every key. + +![All keys](../.asset/help.png) + +## Settings + +The settings are at the top of `~/.config/rex/rexdiff.lua`: + +```lua +local settings = { + key = "shift+cmd+r", -- toggle key, or false for none + placement = "split", -- split, zoomed, tab, or overlay + layout = "split", -- unified or split + editor = "code -g {file}:{line}", + keybindings = { send = { "S" } }, +} +``` + +Also available: `default_scope`, `markdown_view`, `file_list`, `file_list_width`, +`diff_signs`, `review_prefix`, `url_opener`, `focus_agent_after_send`, `github_host`, +`gitlab_host`, and `azure_devops_host`. They take the same values as in +[herdr-reviewr](https://github.com/persiyanov/herdr-reviewr). + +After a change, run `rex config reload`. Do not edit the line `-- rexdiff code below` or +anything under it. + +Without `editor`, rexdiff uses `$VISUAL`, `$EDITOR`, or git's `core.editor`, read from +your login shell. With zsh, set them in `~/.zprofile`, not `~/.zshrc`. + +## Keys + +| Key | Action | +| --- | --- | +| `j` `k`, `↓` `↑` | move down or up | +| `ctrl+d` `ctrl+u`, `pgdn` `pgup` | half a page, or a page | +| `]` `[` | next or previous change | +| `f` `F` | next or previous file | +| `n` `N` | next or previous comment | +| `:` | go to a line (`0` first, `$` last) | +| `tab` | switch focus between the diff and the file list | +| `→` `←` | expand a fold or directory, collapse a directory, or scroll sideways | +| `u` `b` `t` | uncommitted, branch, or last-turn changes | +| `g` `G` | commits scope, or pick commits | +| `B` | pick the base branch | +| `1` `2` `3` | changes, all files, or pull request | +| `v` | select lines | +| `c` | comment | +| `e` | edit the comment, or open the file in your editor | +| `d` | delete the comment | +| `l` | list comments | +| `s` `S` | send comments to the agent | +| `y` `Y` | copy comments instead of sending | +| `/` | search files (`tab` for code) | +| `ctrl+f` | find in the file | +| `\|` | side by side | +| `w` | wrap long lines | +| `m` | rendered markdown | +| `z` | hide or show the file list | +| `p` | move the file list | +| `<` `>` | resize the file list | +| `o` | open the pull request in the browser | +| `r` | reload | +| `U` | update rexdiff | +| `?` | all keys | +| `q` `Q` | quit, or quit and drop unsent comments | + +## Updates + +When the bottom line shows a new version, press `U`. rexdiff restarts in the same pane +and keeps your comments. + +## Details + +### Reloads + +rexdiff checks the files about once a second without running git, and runs git only +after a change. In a large repository it checks less often, to stay under about 5% of a +core. `r` reloads at once. If a reload fails, rexdiff keeps the files on screen, shows +"refresh failed", and retries with a growing delay, up to a minute. While the comment +box is open, the view does not change. + +The pull request tab reloads each minute while it shows, and after a commit, a push, or a +fetch. Switching branches clears it until the new pull request loads. + +### Last turn + +A turn starts when an agent in this repository starts to work and ends when all of them +rest. `t` shows the changes since the start of the last turn that changed a file. Before +the first turn it shows "waiting for the first turn", or "no agent works here". + +### Comments + +A comment stays on its line numbers and keeps the code it was made on. It shows only in +the view where you made it (changes or all files) and on the same commits. If its file +leaves the changes, or is deleted, the comment list marks it (stale). An edit with blank +text keeps the comment as it was. + +When `q` asks before quitting, `Q` quits and drops the comments, `s` sends, `y` copies, +and any other key closes the question. + +### File list and search + +The file list is a tree. Directories start expanded in the changes and collapsed in all +files, where a collapsed directory with a change has a dot. Ignored directories are dim +and load their files when you expand them. + +At a side, the list takes 32% of the width (15–60% with `<` `>`). Above or below, it takes +a quarter of the rows (15–50%). + +The search shows up to 50 files and 200 lines of code. A code search stops 80 ms after its +first match and marks a partial count with `+`. With no query, it lists the files you opened from the +search first. + +### Side by side + +Side by side needs a diff pane at least 137 columns wide. A narrower pane shows one +column. + +### Base and commits + +rexdiff keeps the base pick and the last turn in `refs/worktree/rexdiff/`, so they +survive a restart. With `--base`, the base picker does not open. The commit picker lists +the branch's own commits (first parent only), or the last 50 on the base branch. + +### Copy and editor + +Copying uses the first of `pbcopy`, `wl-copy`, `xclip`, or `xsel` on your PATH. Drag over +code to copy lines, double-click for a word, triple-click for a line, and double-click a +file in the list to copy its path. + +A terminal editor, such as `nvim`, opens in a new pane beside rexdiff. A window editor, +such as `code`, opens in its own window. An editor rexdiff doesn't know opens in a pane. +To open it in a window, start it with `open`, for example `editor = "open -a Zed {file}"`. + +A key in `keybindings` is one character, or `left`, `right`, `up`, `down`, `pageup`, or +`pagedown`, alone or after `ctrl+` or `alt+`. Binding one key to two actions is an error. + +## Problems + +- "not inside Rex": rexdiff started outside Rex and cannot send. Press `y` to copy, or + open rexdiff with Shift+Cmd+R. +- "no agent in this session": start the agent in the same Rex session. +- "no editor": set `editor` in the settings, or set `$EDITOR` in `~/.zprofile`. rexdiff + reads the login shell, so `~/.zshrc` has no effect. +- Side by side shows one column: the diff pane is narrower than 137 columns. Press `z` + or widen the pane. +- The PR tab shows an error: install gh, glab, or az, and log in. diff --git a/README.md b/README.md index 9a89c5c..d1d275e 100644 --- a/README.md +++ b/README.md @@ -1,223 +1,29 @@ -rexdiff +rexdiff A diff viewer for coding agents in [Rex]. Think [herdr-reviewr], but for Rex. - -It opens next to the agent and shows the changes. You comment on lines and send -the comments to the agent. +It opens next to the agent and shows its changes. You comment on lines and send +the comments back to the agent. https://github.com/user-attachments/assets/e44159eb-3b02-4ea8-88ca-f6314261c1aa ## Install -With Homebrew: - ```sh brew tap rednafi/rexdiff https://github.com/rednafi/rexdiff brew trust rednafi/rexdiff brew install --cask rexdiff -``` - -With Go: - -```sh -go install github.com/rednafi/rexdiff/cmd/rexdiff@latest -``` - -Add rexdiff to Rex: - -```sh rexdiff install ``` -This adds the "Toggle rexdiff" action and binds it to Shift+Cmd+R. To remove -them, run `rexdiff uninstall`. - -## Use - -- Open: press Shift+Cmd+R next to an agent, or run "Toggle rexdiff" from the - command palette. Press it again to close rexdiff. -- Comment: move to a line and press `c`. For a range, press `v` or drag over - the line numbers. -- Copy: drag over the code to copy its lines. Double-click copies a word, - triple-click a line. Double-click a file in the file list to copy its path. - rexdiff shows "copied 12 chars". -- Send: press `s`. rexdiff pastes the comments into the agent's input. It does - not press Enter. -- Update: when rexdiff shows a new version at the bottom, press `U`. Your - comments stay. - -rexdiff checks the files about once a second without running git, and runs git -only after a change. In a large repository it checks less often, so its checks -use at most about 5% of a core. `r` reloads at once. If the checks fail, -rexdiff reloads every 5 s and tries the checks again after 1 s, then waits twice -as long each time, up to a minute. A failed reload keeps the files that show and -shows "refresh failed" at the bottom. While the comment box is open, the view -does not change. - -The pull request tab reads the pull request again each minute while it shows, -and after a commit, a push, or a fetch. A switch to another branch clears it -until the new pull request loads. A failed read keeps the last pull request. - -Last turn shows the changes since the start of the last agent turn that -changed a file. A turn starts when an agent in this repository starts to work, -and ends when all of them rest. Until then it shows "waiting for the first -turn", or "no agent works here". If Rex cannot list the agents, rexdiff asks -again after 1 s, then waits twice as long each time, up to a minute. - -A long run of unchanged lines folds into one row. Three lines show beside each -change. - -A comment stays on its line numbers and keeps the code it was made on. It -shows only where you made it: in the changes or in all files, and on the same -commits. If its file leaves the changes (or, for all files, is gone), the -comment list marks it (stale). The list edits only a comment on the commits -that show. - -| Key | Action | -| --- | --- | -| `j` `k` or `↓` `↑` | move down or up. With the focus on the file list, move in the list | -| `ctrl+d` `ctrl+u` | half a page down or up | -| `pgdn` `pgup` | a page down or up | -| `tab` | move the focus between the diff and the file list. A hidden list shows | -| `u` `b` `t` | uncommitted, branch, or last-turn changes | -| `g` | commits scope. With no commits picked, it opens the commit picker | -| `B` | pick the base branch of the branch scope | -| `G` | pick commits: `v` marks the start of a range, enter opens, esc clears or closes | -| `]` `[` | next or previous change. Past the last one, press it again to go to the next file | -| `→` or click | show the unchanged lines of a fold (`⋯ 12 unmodified lines`) | -| `f` `F` | next or previous file | -| `→` `←` or click | expand or collapse a directory in the file list | -| `→` `←` | scroll sideways, without wrap | -| `w` | wrap long lines | -| `v` | select lines | -| `c` | new comment, also on a line that has one. The focus must be on the diff | -| `e` | edit the comment at the cursor, else open the file in the editor | -| `d` | delete the comment at the cursor. The focus must be on the diff | -| `n` `N` | next or previous comment in the file | -| `l` | list the comments: `e` edit, `d` delete, `s` send, `y` copy, enter jump | -| `s` or `S` | send the comments to the agent | -| `y` or `Y` | copy the comments and clear them, as a send does | -| `\|` | side by side | -| `:` | go to a line (`0` first, `$` last) | -| `/` | search files. `tab` switches to code, `↑` `↓` or `ctrl+n` `ctrl+p` move, `pgup` `pgdn` scroll the preview, enter opens | -| `ctrl+f` | find in the file (smart case): enter or `↓` next, `↑` previous, esc closes | -| `m` | rendered markdown | -| `p` | move the file list: right, bottom, left, top | -| `z` | hide or show the file list | -| `<` `>` | make the file list larger or smaller | -| `1` `2` `3` | changes, all files, or pull request | -| `o` | open the pull request in the browser | -| `r` | reload at once | -| `U` | install the new version that the bottom line shows | -| `esc` | clear the selection, then the armed `]` or `[`, then the key list | -| `?` | all keys | -| `q` | quit, or ask first if comments are unsent | -| `Q` | when `q` asks first, quit and drop the comments. Else it does nothing | - -The search shows up to 50 files and 200 lines of code, then "… more". A code -search stops after 80 ms and shows the lines that it found, with a `+` after the -count. With no -query, it lists the files you opened from the search in this session first. -The preview below the results shows the file, with the match in the middle. - -The file list is a tree. Directories start expanded in the changes and -collapsed in all files. There, a collapsed directory with a change has a dot. -Ignored directories are dim and read their files when you expand them. An -expanded one shows new and removed files. - -At a side, the file list takes 32% of the width, and `<` `>` change that from 15% -to 60%. Above or below, it takes -a quarter of the rows, and `<` `>` change that from 15% to 50%. - -Side by side needs 135 columns for the code, so the diff pane must be 137 columns -wide with its cursor column. A narrower pane shows one column. - -An edit with blank text keeps the comment as it was. - -rexdiff keeps the base pick and the last turn in `refs/worktree/rexdiff/`, so -they stay after a restart. With `--base`, the base picker does not open. - -The commit picker lists the branch's own commits (first parent only), or the last 50 on -the base branch. - -When `q` asks first, `Q` quits, `s` sends, `y` copies, and any other key closes the -question. - -A copy uses the first of `pbcopy`, `wl-copy`, `xclip`, or `xsel` on your PATH. - -## Configure - -Edit the settings at the top of `~/.config/rex/rexdiff.lua`: - -```lua -local settings = { - key = "shift+cmd+r", -- toggle key, or false for none - placement = "split", -- split, zoomed, tab, or overlay - layout = "split", -- unified or split - editor = "code -g {file}:{line}", - keybindings = { send = { "S" } }, -} -``` - -Other settings: - -- `default_scope` -- `markdown_view` -- `file_list`: `right`, `bottom`, `left`, or `top` -- `file_list_width`: the width of the file list at a side, in columns. Without - it, the list takes 32% of the width -- `diff_signs`: `true` marks changed lines with `+` and `-`, in place of a coloured bar -- `review_prefix` -- `url_opener` -- `focus_agent_after_send` -- `github_host` -- `gitlab_host` -- `azure_devops_host` - -See [herdr-reviewr] for the values and the action names. - -A key in `keybindings` is one character, or `left`, `right`, `up`, `down`, `pageup`, or -`pagedown`, alone or after `ctrl+` or `alt+`. A key bound to two actions is an error that -names both. - -`e` opens the file at the cursor line in `editor`, else in `$VISUAL`, `$EDITOR`, or git's -`core.editor`. If none is set, rexdiff shows "no editor" and opens nothing. A terminal editor, such as `nvim`, `micro`, or `fresh`, opens in a new pane -beside rexdiff. A window editor, such as `code`, opens in its window. -rexdiff opens an editor that it does not know in a pane. To open such an editor in a window, -start it with `open`, for example `editor = "open -a Zed {file}"`. - -rexdiff gets `$VISUAL` and `$EDITOR` from your login shell. With zsh, set them in -`~/.zprofile` or `~/.zshenv`, not in `~/.zshrc`. - -After a change: - -- Run `rex config reload`. -- Do not edit the line `-- rexdiff code below` or the code under it. - -## Requirements - -- Rex -- git 2.31 or later -- `gh`, `glab`, or `az` for the pull request tab. You must be logged in. - -## Develop - -Before a commit, run the checks that CI runs. CI uses golangci-lint v2.15.0. - -```sh -go test -race ./... # test -golangci-lint run # lint, and check the format -golangci-lint fmt # format -go fix -diff ./... # check for code that go fix changes -go mod tidy -diff # check go.mod and go.sum -``` +Then press Shift+Cmd+R next to an agent. -Some tests run the real rex if `REX_BIN_DIR` is the directory of rex. +## Docs -`./dev.sh` builds rexdiff and opens it in the Rex session `rexreview-test`, -beside a pane with the label "agent". It needs a running Rex, fish, and python3. -If rex is not on your `PATH`, set `REX_BIN_DIR` to its directory. +- [User guide](.doc/user.md): keys, settings, and how it works +- [Architecture](.doc/arch.md) +- [Development](.doc/dev.md) +- [Tests](.doc/test.md) From 8a3a168ddcaeb98e53f5752321ce2f061f172fe3 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 22:36:47 +0100 Subject: [PATCH 064/119] refactor: read the lines of init.lua with strings.Lines, and link the settings to the user guide --- cmd/rexdiff/install.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmd/rexdiff/install.go b/cmd/rexdiff/install.go index 55f536e..98d6355 100644 --- a/cmd/rexdiff/install.go +++ b/cmd/rexdiff/install.go @@ -37,7 +37,8 @@ const ( // defaultSettings is the top of a new rexdiff.lua. const defaultSettings = `-- "rexdiff install" wrote this file. To remove it, run "rexdiff uninstall". -- --- These are the settings of rexdiff. The README of rexdiff lists them. +-- These are the settings of rexdiff. The user guide lists them: +-- https://github.com/rednafi/rexdiff/blob/master/.doc/user.md#settings -- To change a setting, edit it, then run "rex config reload". -- Install and upgrades keep this part. local settings = { @@ -328,7 +329,7 @@ func addRequire(path string) error { if err != nil { return err } - if slices.ContainsFunc(strings.Split(s, "\n"), isRequire) { + if slices.ContainsFunc(slices.Collect(strings.Lines(s)), isRequire) { return nil } if s != "" && !strings.HasSuffix(s, "\n") { From 0e73e7c486a17aefb494dbf43485bb0cd5fffde7 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 22:45:12 +0100 Subject: [PATCH 065/119] fix(install): say that install adds the require line only when it does, and print a plain reload line --- cmd/rexdiff/install.go | 35 ++++++++++++++++---------------- rex/rex.go | 10 ++++----- rex/rex_test.go | 11 ++++++---- test/testdata/script/install.txt | 5 +++++ 4 files changed, 35 insertions(+), 26 deletions(-) diff --git a/cmd/rexdiff/install.go b/cmd/rexdiff/install.go index 98d6355..00db2b8 100644 --- a/cmd/rexdiff/install.go +++ b/cmd/rexdiff/install.go @@ -285,12 +285,15 @@ func install(ctx context.Context, bin string, args []string, stdout, stderr io.W return err } initPath := rex.ConfigPath() - if err := addRequire(initPath); err != nil { + added, err := addRequire(initPath) + if err != nil { return err } fmt.Fprintf(stdout, "wrote %s; the settings are at its top\n", lua) - fmt.Fprintf(stdout, "added %s to %s\n", requireLine, initPath) - fmt.Fprint(stdout, reload(ctx, stdout)) + if added { + fmt.Fprintf(stdout, "added %s to %s\n", requireLine, initPath) + } + reload(ctx, stdout) fmt.Fprintln(stdout, "press the key of the settings (shift+cmd+r by default), or run \"Toggle rexdiff\" from the command palette, beside an agent") return nil } @@ -315,7 +318,7 @@ func upgrade(ctx context.Context, bin string) string { if err := os.WriteFile(lua, []byte(code), 0o644); err != nil { return "cannot upgrade rexdiff.lua: " + err.Error() } - if _, err := rex.ReloadConfig(ctx); err != nil { + if err := rex.ReloadConfig(ctx); err != nil { return "upgraded rexdiff.lua; reload Rex's config yourself: rex config reload" } return "" @@ -323,19 +326,19 @@ func upgrade(ctx context.Context, bin string) string { // addRequire adds the require line to the end of the init.lua at path. It // creates the file if it is not there. If the file has the line, addRequire -// does not change it. -func addRequire(path string) error { +// does not change it. It reports whether it adds the line. +func addRequire(path string) (bool, error) { s, err := readFile(path) if err != nil { - return err + return false, err } if slices.ContainsFunc(slices.Collect(strings.Lines(s)), isRequire) { - return nil + return false, nil } if s != "" && !strings.HasSuffix(s, "\n") { s += "\n" } - return os.WriteFile(path, []byte(s+requireLine+"\n"), 0o644) + return true, os.WriteFile(path, []byte(s+requireLine+"\n"), 0o644) } // isRequire reports whether line is the require line of rexdiff, maybe @@ -372,14 +375,12 @@ func removeRequire(path string) error { return os.WriteFile(path, []byte(strings.Join(lines, "\n")), 0o644) } -// reload tells Rex to read its configuration file again, and returns the -// report of Rex. If Rex fails, reload tells the user how to reload, and -// returns "". -func reload(ctx context.Context, stdout io.Writer) string { - out, err := rex.ReloadConfig(ctx) - if err != nil { +// reload tells Rex to read its configuration file again. If Rex fails, +// reload tells the user how to reload. +func reload(ctx context.Context, stdout io.Writer) { + if err := rex.ReloadConfig(ctx); err != nil { fmt.Fprintf(stdout, "reload Rex's config yourself: rex config reload (%v)\n", err) - return "" + return } - return out + fmt.Fprintln(stdout, "reloaded Rex's config") } diff --git a/rex/rex.go b/rex/rex.go index 9fb2593..d7e8e0d 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -369,12 +369,12 @@ func ConfigPath() string { return filepath.Join(dir, "rex", "init.lua") } -// ReloadConfig tells Rex to read its configuration file again. It returns -// the report of Rex. It also works outside a Rex session. -func ReloadConfig(ctx context.Context) (string, error) { +// ReloadConfig tells Rex to read its configuration file again. It also +// works outside a Rex session. +func ReloadConfig(ctx context.Context) error { c := &Client{bin: binFromEnv()} - out, err := c.runRex(ctx, "config", "reload") - return string(out), err + _, err := c.runRex(ctx, "config", "reload") + return err } // Event is a change to a block in the session, or a reconnect. diff --git a/rex/rex_test.go b/rex/rex_test.go index 63b4e6b..1c1a2c3 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -234,10 +234,13 @@ func TestReloadConfigOutsideRex(t *testing.T) { if err := os.MkdirAll(dir, 0o755); err != nil { t.Fatal(err) } - testgit.Script(t, dir, "rex", "echo \"reloaded: $*\"\n") - out, err := rex.ReloadConfig(t.Context()) - if err != nil || out != "reloaded: config reload\n" { - t.Errorf("ReloadConfig = %q, %v, want the report of the app rex", out, err) + log := filepath.Join(home, "log") + testgit.Script(t, dir, "rex", "echo \"$*\" > '"+log+"'\n") + if err := rex.ReloadConfig(t.Context()); err != nil { + t.Fatal(err) + } + if b, _ := os.ReadFile(log); string(b) != "config reload\n" { + t.Errorf("the app rex ran with %q, want config reload", b) } } diff --git a/test/testdata/script/install.txt b/test/testdata/script/install.txt index 42dd05d..3cf84b6 100644 --- a/test/testdata/script/install.txt +++ b/test/testdata/script/install.txt @@ -9,6 +9,11 @@ stdout 'press the key of the settings' cmp .config/rex/init.lua installed.lua grep 'config reload' rex.log +# A second install keeps the one line of init.lua, and does not say it adds it. +exec rexdiff install +! stdout 'added' +cmp .config/rex/init.lua installed.lua + # Rex accepts the action and its keys. [realrex] exec $REALREX config check .config/rex/init.lua [realrex] stdout 'bindings: 2' From 9da5035a7fe133f7795ec50bb60d1ebff5c6f81a Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 23:06:10 +0100 Subject: [PATCH 066/119] docs: shorten the test commands in dev.md --- .doc/dev.md | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/.doc/dev.md b/.doc/dev.md index 4e43894..7b93257 100644 --- a/.doc/dev.md +++ b/.doc/dev.md @@ -35,29 +35,13 @@ go fix -diff ./... go mod tidy -diff ``` -On a clean tree, `go fix` and `go mod tidy` print nothing. - -## Tests - -[test.md](test.md) describes the tests. They need git, and nothing else: - -```sh -go test ./... # all tests -go test -run TestSearch ./test/ # one black-box test -``` - -Two settings also use a real Rex. Neither changes your Rex config. +On a clean tree, `go fix` and `go mod tidy` print nothing. [test.md](test.md) describes +the tests. To also run them against a real Rex: ```sh -REX_BIN_DIR=$(dirname $(which rex)) go test ./test/ # check the installed Lua with rex -REXDIFF_REX=$(which rex) go test -run TestRealRex ./test/ +REX_BIN_DIR=$(dirname $(which rex)) REXDIFF_REX=$(which rex) go test ./test/ ``` -`TestRealRex` opens a Rex session of its own and closes it at the end. If Rex -changes its output, record `test/testdata/rex` again as its README says. - -A fuzz test saves a failing input in `testdata/fuzz`. Commit that file with the fix. - ## Release ```sh From 5c3238e507744d80ebada49189bc0ab33e3a236b Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 23:11:54 +0100 Subject: [PATCH 067/119] test: run the black-box tests one at a time --- test/comment_test.go | 9 ++++++--- test/update_test.go | 15 ++++++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/test/comment_test.go b/test/comment_test.go index 59f32d3..cc7d58e 100644 --- a/test/comment_test.go +++ b/test/comment_test.go @@ -43,15 +43,18 @@ func TestCommentList(t *testing.T) { // on a range of lines. func TestCommentBox(t *testing.T) { tm := start(t, newRepo(t), opts{}) + // The drag comes first: the flash of an added comment would hide the + // badge of the draft for flashTime. + tm.drag(" 1 1 ", " 3 3 ") + tm.waitFor("✎ a.go:1-3") + tm.keys("esc") + tm.waitGone("✎ a.go:1-3") tm.keys("]", "c", "a", "ctrl+j", "b", "enter") tm.waitFor("💬 a", "b") tm.keys("j", "c", "x", "esc") tm.waitGone("💬 x") tm.keys("v", "j", "c", "r", "enter", "l") tm.waitFor("a.go:4-5 r") - tm.keys("esc") - tm.drag(" 1 1 ", " 3 3 ") - tm.waitFor("✎ a.go:1-3") } // TestSend checks that s pastes the review into the agent and gives it diff --git a/test/update_test.go b/test/update_test.go index b050635..02239da 100644 --- a/test/update_test.go +++ b/test/update_test.go @@ -3,6 +3,7 @@ package test import ( "archive/tar" "bytes" + "cmp" "compress/gzip" "crypto/sha256" "encoding/hex" @@ -11,6 +12,7 @@ import ( "os/exec" "runtime" "strings" + "sync" "testing" ) @@ -59,12 +61,15 @@ func release(t *testing.T, tag, bin string) string { // TestUpdate checks that U installs the latest release and starts it in // the same terminal, with the comments and the place of the user. func TestUpdate(t *testing.T) { + // The two builds run at once. + var next string + var nextErr error + var wg sync.WaitGroup + nextDir := t.TempDir() + wg.Go(func() { next, nextErr = build(nextDir, "0.2.0") }) bin, err := build(t.TempDir(), "0.1.0") - if err != nil { - t.Fatal(err) - } - next, err := build(t.TempDir(), "0.2.0") - if err != nil { + wg.Wait() + if err = cmp.Or(err, nextErr); err != nil { t.Fatal(err) } latest := release(t, "v0.2.0", next) From 9643fd6686988d866f3abedb8c5a7c36bcbecdaa Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Sun, 25 Oct 2026 23:31:52 +0100 Subject: [PATCH 068/119] test: send keys and mouse through the terminal emulator, with no sleeps Esc must end a keys call, and each test waits for the screen after it, as a user does. at fails when the text is missing. The cleanup ends the input copy. --- test/changes_test.go | 23 ++++++--- test/comment_test.go | 14 +++--- test/rexdiff_test.go | 111 ++++++++++++++++++++++++------------------- 3 files changed, 87 insertions(+), 61 deletions(-) diff --git a/test/changes_test.go b/test/changes_test.go index 640fb7d..a05dbd9 100644 --- a/test/changes_test.go +++ b/test/changes_test.go @@ -3,6 +3,7 @@ package test import ( "os" "path/filepath" + "slices" "strings" "testing" "unicode/utf8" @@ -62,7 +63,9 @@ func TestScopes(t *testing.T) { tm.waitFor("Changes (1)", "A b.go", "var B = 2") tm.keys("G") tm.waitFor("commits · 1 over main") - tm.keys("esc", "u", "B") + tm.keys("esc") + tm.waitGone("commits · 1 over main") + tm.keys("u", "B") tm.waitFor("base branch for the branch scope") tm.typed("feat") tm.keys("enter") @@ -119,10 +122,10 @@ func TestWrap(t *testing.T) { tm.waitFor("end\"") tm.keys("w") tm.waitGone("end\"") - eventually(t, func() bool { - tm.keys("right") - return strings.Contains(tm.screen(), "end\"") - }, func() string { return "→ does not scroll to the end:\n" + tm.screen() }) + // Each → scrolls 8 columns. 12 of them show the end of the line, and + // keep its start in the view. + tm.keys(slices.Repeat([]string{"right"}, 12)...) + tm.waitFor("end\"") } // column returns the column of text in the first line of s that has it, @@ -223,7 +226,15 @@ func TestReviewPrefix(t *testing.T) { // terminal. func TestTinyScreen(t *testing.T) { tm := start(t, newRepo(t), opts{width: 40, height: 8}) - tm.keys("f", "j", "2", "/", "esc", "?", "esc", "1") + tm.keys("f", "j", "2", "/") + tm.waitFor("›") + tm.keys("esc") + tm.waitGone("›") + tm.keys("?") + tm.waitFor("ctrl+d/u") + tm.keys("esc") + tm.waitGone("ctrl+d/u") + tm.keys("1") tm.waitFor("1 Changes") } diff --git a/test/comment_test.go b/test/comment_test.go index cc7d58e..1588a83 100644 --- a/test/comment_test.go +++ b/test/comment_test.go @@ -51,8 +51,10 @@ func TestCommentBox(t *testing.T) { tm.waitGone("✎ a.go:1-3") tm.keys("]", "c", "a", "ctrl+j", "b", "enter") tm.waitFor("💬 a", "b") - tm.keys("j", "c", "x", "esc") - tm.waitGone("💬 x") + tm.keys("j", "c", "x") + tm.waitFor("✎ a.go:4 ") + tm.keys("esc") + tm.waitGone("✎") tm.keys("v", "j", "c", "r", "enter", "l") tm.waitFor("a.go:4-5 r") } @@ -143,10 +145,10 @@ func TestMouse(t *testing.T) { tm.click("M long.txt", 1) tm.keys(":", "2", "0", "enter") // opens the fold - x, y := tm.at("line 20") - for range 10 { - tm.mouse(65, x, y, "M") // the wheel down - } + tm.waitCursor("line 20") + tm.keys(":", "1", "enter") + tm.waitFor(" first") + tm.wheel("line 2", 10) tm.waitGone(" first") } diff --git a/test/rexdiff_test.go b/test/rexdiff_test.go index 50e27db..75f087c 100644 --- a/test/rexdiff_test.go +++ b/test/rexdiff_test.go @@ -12,6 +12,7 @@ import ( "os" "os/exec" "path/filepath" + "slices" "strconv" "strings" "sync" @@ -91,7 +92,6 @@ type opts struct { // term is a rexdiff that runs in a terminal. type term struct { t *testing.T - pty *os.File emu *vt.Emulator mu sync.Mutex // guards emu wait func() error // waits for rexdiff once, and keeps its error @@ -134,7 +134,7 @@ func startBin(t *testing.T, bin, repo string, o opts) *term { if err != nil { t.Fatal(err) } - tm := &term{t: t, pty: f, emu: vt.NewEmulator(int(w), int(h)), wait: sync.OnceValue(cmd.Wait), done: make(chan struct{})} + tm := &term{t: t, emu: vt.NewEmulator(int(w), int(h)), wait: sync.OnceValue(cmd.Wait), done: make(chan struct{})} go func() { defer close(tm.done) buf := make([]byte, 32<<10) @@ -150,14 +150,22 @@ func startBin(t *testing.T, bin, repo string, o opts) *term { } } }() - // The emulator answers the queries of rexdiff, for example for the - // colours. This copy ends with the test process, because the Close of - // the emulator races with its Read. - go func() { _, _ = io.Copy(f, tm.emu) }() + // The input of rexdiff comes from the emulator, as from a terminal: + // the keys and the mouse of the test, and the answers to the queries + // of rexdiff, for example for the colours. + input := make(chan struct{}) + go func() { + defer close(input) + _, _ = io.Copy(f, tm.emu) + }() t.Cleanup(func() { _ = tm.wait() // t.Context is done, so Cancel stops rexdiff _ = f.Close() <-tm.done + // Close of the pipe, not of the emulator, ends the copy. The Close + // of the emulator races with its Read. + _ = tm.emu.InputPipe().(io.Closer).Close() + <-input }) tm.waitFor("1 Changes") return tm @@ -170,24 +178,22 @@ func (tm *term) screen() string { return tm.emu.String() } -// keys types each key. A key is a text, or a name in keyCodes. +// keys types each key. A key is a name in keyCodes, or else a text. As +// in a terminal, an esc and the key after it can join into one key, so esc +// must be the last key. Wait for the screen after it, as a user does. func (tm *term) keys(keys ...string) { tm.t.Helper() + if i := slices.Index(keys, "esc"); i >= 0 && i != len(keys)-1 { + tm.t.Fatalf("keys %q: esc must be the last key", keys) + } + tm.mu.Lock() + defer tm.mu.Unlock() for _, k := range keys { - s, ok := keyCodes[k] - if !ok { - s = k - } - if _, err := tm.pty.WriteString(s); err != nil { - tm.t.Fatal(err) + if code, ok := keyCodes[k]; ok { + tm.emu.SendKey(code) + } else { + tm.emu.SendText(k) } - // A pause lets rexdiff take the key. A lone esc needs a longer - // one, else it joins the next key. - pause := 20 * time.Millisecond - if k == "esc" { - pause = 150 * time.Millisecond - } - time.Sleep(pause) } } @@ -197,40 +203,39 @@ func (tm *term) typed(text string) { tm.keys(strings.Split(text, "")...) } -// keyCodes are the bytes of the named keys. -var keyCodes = map[string]string{ - "enter": "\r", - "esc": "\x1b", - "tab": "\t", - "right": "\x1b[C", - "left": "\x1b[D", - "pgdown": "\x1b[6~", - "pgup": "\x1b[5~", - "ctrl+d": "\x04", - "ctrl+u": "\x15", - "ctrl+f": "\x06", - "ctrl+j": "\n", +// keyCodes are the named keys. +var keyCodes = map[string]vt.KeyPressEvent{ + "enter": {Code: vt.KeyEnter}, + "esc": {Code: vt.KeyEscape}, + "tab": {Code: vt.KeyTab}, + "right": {Code: vt.KeyRight}, + "left": {Code: vt.KeyLeft}, + "pgdown": {Code: vt.KeyPgDown}, + "pgup": {Code: vt.KeyPgUp}, + "ctrl+d": {Code: 'd', Mod: vt.ModCtrl}, + "ctrl+u": {Code: 'u', Mod: vt.ModCtrl}, + "ctrl+f": {Code: 'f', Mod: vt.ModCtrl}, + "ctrl+j": {Code: 'j', Mod: vt.ModCtrl}, } // at returns the column and the line of text on the screen, from 0. func (tm *term) at(text string) (x, y int) { tm.t.Helper() - for i, l := range strings.Split(tm.waitFor(text), "\n") { + s := tm.waitFor(text) + for i, l := range strings.Split(s, "\n") { if before, _, ok := strings.Cut(l, text); ok { return utf8.RuneCountInString(before), i } } - return -1, -1 + tm.t.Fatalf("the screen does not show %s. It shows:\n%s", text, s) + return 0, 0 } -// mouse sends a mouse event with the SGR code b at column x of line y. -// end is "M" for a press or a motion, and "m" for a release. -func (tm *term) mouse(b, x, y int, end string) { - tm.t.Helper() - seq := "\x1b[<" + strconv.Itoa(b) + ";" + strconv.Itoa(x+1) + ";" + strconv.Itoa(y+1) + end - if _, err := tm.pty.WriteString(seq); err != nil { - tm.t.Fatal(err) - } +// mouse sends the mouse event m, as the terminal encodes it. +func (tm *term) mouse(m vt.Mouse) { + tm.mu.Lock() + defer tm.mu.Unlock() + tm.emu.SendMouse(m) } // click clicks text on the screen the given number of times in a row. @@ -238,9 +243,8 @@ func (tm *term) click(text string, times int) { tm.t.Helper() x, y := tm.at(text) for range times { - tm.mouse(0, x, y, "M") - tm.mouse(0, x, y, "m") - time.Sleep(50 * time.Millisecond) // as a hand clicks + tm.mouse(vt.MouseClick{X: x, Y: y, Button: vt.MouseLeft}) + tm.mouse(vt.MouseRelease{X: x, Y: y, Button: vt.MouseLeft}) } } @@ -250,9 +254,18 @@ func (tm *term) drag(from, to string) { tm.t.Helper() x0, y0 := tm.at(from) x1, y1 := tm.at(to) - tm.mouse(0, x0, y0, "M") - tm.mouse(32, x1, y1, "M") // a motion with the button down - tm.mouse(0, x1, y1, "m") + tm.mouse(vt.MouseClick{X: x0, Y: y0, Button: vt.MouseLeft}) + tm.mouse(vt.MouseMotion{X: x1, Y: y1, Button: vt.MouseLeft}) + tm.mouse(vt.MouseRelease{X: x1, Y: y1, Button: vt.MouseLeft}) +} + +// wheel turns the mouse wheel down n times over text. +func (tm *term) wheel(text string, n int) { + tm.t.Helper() + x, y := tm.at(text) + for range n { + tm.mouse(vt.MouseWheel{X: x, Y: y, Button: vt.MouseWheelDown}) + } } // waitFor waits until the screen shows each of texts, and returns the From 86febb3e2bfab6348877391d9b0915c2b2f7ce57 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 00:17:39 +0100 Subject: [PATCH 069/119] fix: drop a turn that starts right after a write, as herdr-reviewr does The start snapshot can have such a write, so the turn does not show it. rexdiff takes the start time from Rex, and the time of the write from the watcher. The last-turn scope then says that it cannot tell the turn. The watcher lists the files at its start. --- .doc/user.md | 3 ++- rex/rex.go | 4 +++ rex/rex_test.go | 8 +++--- test/fake_test.go | 9 +++++-- test/files_test.go | 14 +++++++++++ test/testdata/rex/README.md | 2 +- test/testdata/rex/event.json | 2 +- test/testdata/rex/status.json | 2 +- tui/model.go | 6 ++++- tui/send.go | 46 ++++++++++++++++++++++++++++------- vcs/watch.go | 36 +++++++++++++++++++++++---- vcs/watch_test.go | 18 ++++++++++++++ 12 files changed, 126 insertions(+), 24 deletions(-) diff --git a/.doc/user.md b/.doc/user.md index d6746a8..f9ab2a0 100644 --- a/.doc/user.md +++ b/.doc/user.md @@ -173,7 +173,8 @@ fetch. Switching branches clears it until the new pull request loads. A turn starts when an agent in this repository starts to work and ends when all of them rest. `t` shows the changes since the start of the last turn that changed a file. Before -the first turn it shows "waiting for the first turn", or "no agent works here". +the first turn it shows "waiting for the first turn", or "no agent works here". If a file +changes just as a turn starts, rexdiff cannot tell what the turn changed, and says so. ### Comments diff --git a/rex/rex.go b/rex/rex.go index d7e8e0d..f6616be 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -126,6 +126,7 @@ func (c *Client) request(ctx context.Context, method string, args, reply any) er type Status struct { App string // the name of the program, for example "pi" or "claude-code" State State + At time.Time // when Rex got the status, or zero if Rex does not tell } // State tells what a program does. The zero State means that the program @@ -150,13 +151,16 @@ type statusEntry struct { App string `json:"app"` // EffectiveApp is the name that Rex shows. It can differ from App. EffectiveApp string `json:"effective_app"` + UpdatedAt string `json:"updated_at"` // RFC 3339 } // status returns the entry as a Status, with the name that Rex shows. func (e statusEntry) status() Status { + at, _ := time.Parse(time.RFC3339Nano, e.UpdatedAt) // zero if bad return Status{ App: cmp.Or(e.EffectiveApp, e.App), State: e.State, + At: at, } } diff --git a/rex/rex_test.go b/rex/rex_test.go index 1c1a2c3..668f305 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -162,13 +162,14 @@ func blockEvent(block, name, payload string) string { } // TestWatch checks that Watch reports only the changes of the status of -// the program, and closed blocks. The fake rex stops after the events, so +// the program, with the time of Rex, and closed blocks. The fake rex stops after the events, so // Watch reports a reconnect and then the events again. func TestWatch(t *testing.T) { c, dir := fakeRex(t) events := strings.Join([]string{ blockEvent("block:pi", "program_status_changed", `{"id":"",`+ - `"record":{"state":"working","kind":"","app":"x","effective_app":"pi"},`+ + `"record":{"state":"working","kind":"","app":"x","effective_app":"pi",`+ + `"updated_at":"2026-10-25T21:11:03.5Z"},`+ `"reason":"report"}`), blockEvent("block:pi", "program_status_changed", `{"id":"sub","record":{"state":"idle"}}`), @@ -186,8 +187,9 @@ func TestWatch(t *testing.T) { t.Fatal(err) } + at := time.Date(2026, 10, 25, 21, 11, 3, 5e8, time.UTC) once := []rex.Event{ - {Block: "block:pi", Status: rex.Status{App: "pi", State: rex.StateWorking}}, + {Block: "block:pi", Status: rex.Status{App: "pi", State: rex.StateWorking, At: at}}, {Block: "block:pi"}, {Block: "block:pi", Closed: true}, } diff --git a/test/fake_test.go b/test/fake_test.go index 28acd7e..bf61a06 100644 --- a/test/fake_test.go +++ b/test/fake_test.go @@ -8,6 +8,7 @@ import ( "strconv" "strings" "testing" + "time" "github.com/rednafi/rexdiff/internal/testgit" ) @@ -111,7 +112,8 @@ func (r *fakeRex) addBlock(t *testing.T, block, label string) { func (r *fakeRex) addAgent(t *testing.T, block, label, app string) { t.Helper() r.addBlock(t, block, label) - r.write(t, "status."+block, recorded(t, "status.json", "{{STATE}}", "idle", "{{APP}}", app)) + r.write(t, "status."+block, recorded(t, "status.json", "{{STATE}}", "idle", "{{APP}}", app, + "{{AT}}", time.Now().Format(time.RFC3339Nano))) } // write writes content to the file name of the fake. @@ -136,7 +138,10 @@ func (r *fakeRex) calls(t *testing.T) string { // change. func (r *fakeRex) setState(t *testing.T, state string) { t.Helper() - values := []string{"{{ID}}", "block:pi", "{{STATE}}", state, "{{APP}}", "pi"} + values := []string{ + "{{ID}}", "block:pi", "{{STATE}}", state, "{{APP}}", "pi", + "{{AT}}", time.Now().Format(time.RFC3339Nano), + } r.write(t, "status.block:pi", recorded(t, "status.json", values...)) f, err := os.OpenFile(filepath.Join(r.dir, "events"), os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0o600) if err != nil { diff --git a/test/files_test.go b/test/files_test.go index fbaac5b..43cb23e 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -90,6 +90,20 @@ func TestLastTurn(t *testing.T) { tm.waitFor("Changes (1)", "turn.go", "pi") } +// TestTurnRaced checks that a turn whose start comes right after a write +// is not known, because its start snapshot can have the write. The scope +// tells so, as herdr-reviewr does. +func TestTurnRaced(t *testing.T) { + repo := newRepo(t) + rex := newRex(t, repo) + tm := start(t, repo, opts{rex: rex}) + tm.keys("t") + tm.waitFor("waiting for the first turn", "send → 1 agent") + testgit.WriteFile(t, repo, "turn.go", "package a\n") + rex.setState(t, "working") + tm.waitFor("the last turn started before rexdiff could snapshot it") +} + // TestPR checks that the PR tab shows the pull request of the branch from // gh, with its checks and comments, and that o opens it. func TestPR(t *testing.T) { diff --git a/test/testdata/rex/README.md b/test/testdata/rex/README.md index 43b8175..2cdd2f4 100644 --- a/test/testdata/rex/README.md +++ b/test/testdata/rex/README.md @@ -1,6 +1,6 @@ These files are the output of a real rex (0.0.1792787366-g623b2d). The fake rex of the tests prints them. Each {{NAME}} is a value that a test -fills in: a block ID, a label, a path, an app, or a state. +fills in: a block ID, a label, a path, an app, a state, or a time. - block.json: one block of `rex api call -s S session.list_blocks {}` - session.json: `rex session inspect S --json`, without the layout diff --git a/test/testdata/rex/event.json b/test/testdata/rex/event.json index 99764ae..85738e1 100644 --- a/test/testdata/rex/event.json +++ b/test/testdata/rex/event.json @@ -1 +1 @@ -{"type": "session_event", "payload": {"session_id": "session:S", "event": {"type": "block_event", "payload": {"block_id": "{{ID}}", "creator_name": "com.superlogical.terminal", "name": "program_status_changed", "payload": {"id": "", "record": {"state": "{{STATE}}", "app": "{{APP}}", "effective_app": "{{APP}}", "updated_at": "2026-10-25T21:11:03.076057+01:00", "owner": {"pid": 61344, "name": "bash"}}, "reason": "report"}}}}} +{"type": "session_event", "payload": {"session_id": "session:S", "event": {"type": "block_event", "payload": {"block_id": "{{ID}}", "creator_name": "com.superlogical.terminal", "name": "program_status_changed", "payload": {"id": "", "record": {"state": "{{STATE}}", "app": "{{APP}}", "effective_app": "{{APP}}", "updated_at": "{{AT}}", "owner": {"pid": 61344, "name": "bash"}}, "reason": "report"}}}}} diff --git a/test/testdata/rex/status.json b/test/testdata/rex/status.json index 03da5ab..a5d9516 100644 --- a/test/testdata/rex/status.json +++ b/test/testdata/rex/status.json @@ -1 +1 @@ -{"records": [{"state": "{{STATE}}", "app": "{{APP}}", "effective_app": "{{APP}}", "updated_at": "2026-10-25T21:11:03.076057+01:00", "owner": {"pid": 61344, "name": "bash"}}]} +{"records": [{"state": "{{STATE}}", "app": "{{APP}}", "effective_app": "{{APP}}", "updated_at": "{{AT}}", "owner": {"pid": 61344, "name": "bash"}}]} diff --git a/tui/model.go b/tui/model.go index 8631a1a..1237095 100644 --- a/tui/model.go +++ b/tui/model.go @@ -165,6 +165,7 @@ type prState struct { type agentState struct { app string // the name of the agent, for example "pi" state rex.State // "" if the program sends no status + since time.Time // when Rex got the state cwd string // the working directory, or "" if Rex does not know it hasCwd bool // the program has the answer of Rex for cwd } @@ -226,7 +227,10 @@ type model struct { // scope compares with it. pending is a turn that starts but changes // no file yet, or nil. turn, pending *turnState - tracker turn.Tracker + // raced is true if the last turn starts too close to a write. Then + // its start snapshot can have the write, and the scope shows no turn. + raced bool + tracker turn.Tracker // sampled is true after the first list of the agents. An edge before // it can be wrong, so the tracker gets no states before it. sampled bool diff --git a/tui/send.go b/tui/send.go index 1e550dc..f232539 100644 --- a/tui/send.go +++ b/tui/send.go @@ -1,6 +1,7 @@ package tui import ( + "cmp" "context" "errors" "fmt" @@ -64,7 +65,7 @@ func (m *model) onEvent(e rex.Event) tea.Cmd { app, state := e.Status.App, e.Status.State m.log.Debug("status", "block", e.Block, "app", app, "state", state) a := m.agent(e.Block) - a.app, a.state = app, state + a.app, a.state, a.since = app, state, cmp.Or(e.Status.At, time.Now()) } m.observeTurn() return nil @@ -74,6 +75,7 @@ func (m *model) onEvent(e rex.Event) tea.Cmd { type member struct { block, app string state rex.State + since time.Time // when Rex got the state } // members returns the agents that work in the repository, in the order @@ -104,7 +106,7 @@ func (m *model) members() ([]member, bool) { return nil, false } if in { - out = append(out, member{block, a.app, a.state}) + out = append(out, member{block, a.app, a.state, a.since}) } } return out, true @@ -128,11 +130,6 @@ func (m *model) owns(dir string) (bool, error) { // observeTurn gives the state of the repository to the tracker, and // follows the start and the end of a turn. -// -// herdr-reviewr also drops a turn whose first write can be in its start -// snapshot. That needs the time of each write, and the watcher has no -// such times. Thus a write just before the snapshot does not show in the -// turn. func (m *model) observeTurn() { if !m.sampled { return @@ -164,14 +161,23 @@ func (m *model) observeTurn() { // turnWaitMessage tells why the last-turn scope has no turn. The messages // come from herdr-reviewr. func (m *model) turnWaitMessage() string { + if m.raced { + return "the last turn started before rexdiff could snapshot it" + } if m.agentsHere != nil && !*m.agentsHere { return "no agent works here" } return "waiting for the first turn" } +// raceBefore is how long before Rex gets the working state the agent can +// already write, as in herdr-reviewr. +const raceBefore = time.Second + // startTurn takes a snapshot of the working tree at the start of a turn -// of the members ms. The turn stays pending until it changes a file. +// of the members ms. The turn stays pending until it changes a file. As in +// herdr-reviewr, a write from raceBefore the start to the snapshot can be +// in the snapshot. Then the turn is not known, and the scope says so. func (m *model) startTurn(ms []member) { m.pending = nil tree, err := m.repo.Snapshot(m.ctx) @@ -179,7 +185,16 @@ func (m *model) startTurn(ms []member) { m.log.Warn("turn snapshot failed", "err", err) return } + snapped := time.Now() i := slices.IndexFunc(ms, func(a member) bool { return a.state == rex.StateWorking }) + if m.watch != nil { + w := m.watch.LastWrite() + if !w.Before(ms[i].since.Add(-raceBefore)) && !w.After(snapped) { + m.log.Debug("turn raced", "block", ms[i].block, "write", w) + m.dropTurn() + return + } + } m.log.Debug("turn start", "block", ms[i].block, "tree", tree) m.pending = &turnState{ block: ms[i].block, @@ -203,9 +218,21 @@ func (m *model) checkTurn() { } } +// dropTurn forgets the last turn, because a new turn starts that is not +// known. +func (m *model) dropTurn() { + m.turn, m.raced = nil, true + if err := m.repo.SaveTurn(m.ctx, ""); err != nil { + m.log.Warn("turn baseline ref delete failed", "err", err) + } + if m.scope == ScopeLastTurn { + m.reload() + } +} + // promote makes the pending turn the last turn, and saves its tree. func (m *model) promote() { - m.turn, m.pending = m.pending, nil + m.turn, m.pending, m.raced = m.pending, nil, false if err := m.repo.SaveTurn(m.ctx, m.turn.tree); err != nil { m.log.Warn("turn baseline ref write failed", "err", err) } @@ -236,6 +263,7 @@ func (m *model) onAgents(msg agentsMsg) tea.Cmd { *m.agent(a.Block) = agentState{ app: a.Status.App, state: a.Status.State, + since: cmp.Or(a.Status.At, time.Now()), cwd: a.Cwd, hasCwd: true, } diff --git a/vcs/watch.go b/vcs/watch.go index e1f2e3d..72b2f57 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -30,10 +30,11 @@ type Watcher struct { next time.Time // no check before this time started bool - listed bool // files and dirs are from the last list - files []string // the absolute paths that git lists - dirs []string // the root and each directory above a listed path - shown []string // the absolute paths of the ignored dirs that show + since time.Time // the start of the watch + listed bool // files and dirs are from the last list + files []string // the absolute paths that git lists + dirs []string // the root and each directory above a listed path + shown []string // the absolute paths of the ignored dirs that show // The sums of the last check. list, refs, index, dirSum, fileSum, shownSum uint64 @@ -57,7 +58,14 @@ func (r *Repo) Watch(ctx context.Context) (*Watcher, error) { if err != nil { return nil, err } - return &Watcher{r: r, gitDir: gitDir, common: common, now: time.Now}, nil + w := &Watcher{r: r, gitDir: gitDir, common: common, now: time.Now, since: time.Now()} + // The list is ready at once, for LastWrite. + w.index = w.sumIndex() + if w.list, err = w.relist(ctx); err != nil { + return nil, err + } + w.dirSum = sumPaths(w.dirs) + return w, nil } // Show sets the paths that show and that git does not list: the ignored @@ -129,6 +137,24 @@ func (w *Watcher) Changed(ctx context.Context) (Change, error) { return ch, nil } +// LastWrite returns the newest modification time of the listed files and +// of their directories, as they are now. A new or a removed file changes +// the time of its directory. LastWrite returns the zero time if no such +// time is after the start of the watch. It does not change +// what the next call to Changed reports. +func (w *Watcher) LastWrite() time.Time { + var last time.Time + for _, p := range slices.Concat(w.files, w.dirs) { + if fi, err := os.Lstat(p); err == nil && fi.ModTime().After(last) { + last = fi.ModTime() + } + } + if !last.After(w.since) { + return time.Time{} + } + return last +} + // relist reads the list of the files and their directories again. It // returns the sum of the list. func (w *Watcher) relist(ctx context.Context) (uint64, error) { diff --git a/vcs/watch_test.go b/vcs/watch_test.go index 40bf108..d41a108 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -101,6 +101,24 @@ func TestWatcher(t *testing.T) { } } +// TestWatcherLastWrite checks that LastWrite sees a new file after the +// start of the watch, and that the change still shows in Changed. +func TestWatcherLastWrite(t *testing.T) { + t.Parallel() + r, dir := newRepo(t) + w := newWatcher(t, r) + if got := w.LastWrite(); !got.IsZero() { + t.Errorf("LastWrite before a write = %v, want zero", got) + } + testgit.WriteFile(t, dir, "c.txt", "c\n") + if w.LastWrite().IsZero() { + t.Error("LastWrite after a write is zero") + } + if got := changed(t, w); !got.Files { + t.Errorf("Changed after LastWrite: %+v, want Files", got) + } +} + // TestWatcherNewDirectory checks that an edit in a new untracked directory // is a change. func TestWatcherNewDirectory(t *testing.T) { From 6007c4fe3c91ce10618f579516fdf53948bc0cdb Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 00:25:13 +0100 Subject: [PATCH 070/119] fix: the bugs of the consistency report uninstall -h no longer uninstalls, and a bad flag shows its error once. Rex calls have a timeout, and the cwd of an agent and the editor pane no longer block the screen. A stale code search does not show. The URL opener runs detached as the window editor does. Resolve tells a missing revision from other errors. The processes have a WaitDelay, and the Rex watch ends with the program. --- cmd/rexdiff/install.go | 31 ++++++---- cmd/rexdiff/main.go | 31 +++++++--- diff/main_test.go | 9 +++ rex/rex.go | 4 +- test/testdata/script/cli.txt | 4 +- test/testdata/script/install.txt | 4 ++ tui/editor.go | 90 ++++++++++++++++----------- tui/model.go | 41 ++++++++++--- tui/nav.go | 12 ++-- tui/overlay.go | 9 ++- tui/pr.go | 15 ++--- tui/send.go | 102 ++++++++++++++++++++++--------- tui/tui.go | 8 ++- update/update.go | 1 + vcs/refs.go | 2 +- vcs/repo.go | 11 +++- vcs/repo_test.go | 7 ++- 17 files changed, 261 insertions(+), 120 deletions(-) create mode 100644 diff/main_test.go diff --git a/cmd/rexdiff/install.go b/cmd/rexdiff/install.go index 00db2b8..a2279fa 100644 --- a/cmd/rexdiff/install.go +++ b/cmd/rexdiff/install.go @@ -254,18 +254,9 @@ func executable() (string, error) { // install writes rexdiff.lua with the action that runs bin, the path of // rexdiff. It adds the require line to init.lua. func install(ctx context.Context, bin string, args []string, stdout, stderr io.Writer) error { - fs := flag.NewFlagSet("rexdiff install", flag.ContinueOnError) - fs.SetOutput(stderr) - if err := fs.Parse(args); err != nil { - if errors.Is(err, flag.ErrHelp) { - return nil - } + if err := parseSub("install", args, stderr); err != nil { return err } - if fs.NArg() > 0 { - return fmt.Errorf("unknown argument %s (set the key and the placement in the settings in %s)", - fs.Arg(0), luaPath()) - } // Make the new content first. Then a bad rexdiff.lua stops the install // before it changes a file. @@ -348,10 +339,28 @@ func isRequire(line string) bool { return t == requireLine || strings.HasPrefix(t, requireLine+" --") } +// parseSub parses the arguments of the subcommand name, which has no +// flags. It returns the errors of parseFlags. +func parseSub(name string, args []string, stderr io.Writer) error { + fs := flag.NewFlagSet("rexdiff "+name, flag.ContinueOnError) + fs.SetOutput(stderr) + if err := fs.Parse(args); err != nil { + return usageError(err) + } + if fs.NArg() > 0 { + return fmt.Errorf("unknown argument %q (set the key and the placement in the settings in %s)", + fs.Arg(0), luaPath()) + } + return nil +} + // uninstall removes the require line from init.lua, then rexdiff.lua with // the settings. In this order, a failure does not leave init.lua with a // require of a file that is not there. -func uninstall(ctx context.Context, stdout io.Writer) error { +func uninstall(ctx context.Context, args []string, stdout, stderr io.Writer) error { + if err := parseSub("uninstall", args, stderr); err != nil { + return err + } initPath := rex.ConfigPath() if err := removeRequire(initPath); err != nil { return err diff --git a/cmd/rexdiff/main.go b/cmd/rexdiff/main.go index 998ed99..d9d18f9 100644 --- a/cmd/rexdiff/main.go +++ b/cmd/rexdiff/main.go @@ -33,12 +33,29 @@ func main() { ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt) err := run(ctx, os.Args[1:], os.Stdout, os.Stderr) stop() - if err != nil { + switch { + case errors.Is(err, flag.ErrHelp): + case errors.Is(err, errUsage): + os.Exit(2) // the flag package prints the error + case err != nil: fmt.Fprintln(os.Stderr, "rexdiff:", err) os.Exit(1) } } +// errUsage is the error of bad flags. The flag package prints it and the +// usage. +var errUsage = errors.New("bad usage") + +// usageError returns err of flag parsing for -h, and errUsage for the +// other errors. +func usageError(err error) error { + if errors.Is(err, flag.ErrHelp) { + return err + } + return errUsage +} + const usage = `usage: rexdiff [flags] [repo] rexdiff install rexdiff uninstall @@ -57,13 +74,10 @@ func run(ctx context.Context, args []string, stdout, stderr io.Writer) error { } return install(ctx, bin, args[1:], stdout, stderr) case "uninstall": - return uninstall(ctx, stdout) + return uninstall(ctx, args[1:], stdout, stderr) } } f, err := parseFlags(args, stderr) - if errors.Is(err, flag.ErrHelp) { - return nil - } if err != nil { return err } @@ -161,7 +175,8 @@ type flags struct { } // parseFlags parses the arguments of the diff viewer. It writes the usage -// and errors to stderr. For -h, it returns flag.ErrHelp. +// and the errors of the flags to stderr. For -h, it returns +// [flag.ErrHelp], and for a bad flag errUsage. func parseFlags(args []string, stderr io.Writer) (flags, error) { var f flags fs := flag.NewFlagSet("rexdiff", flag.ContinueOnError) @@ -182,10 +197,10 @@ func parseFlags(args []string, stderr io.Writer) (flags, error) { fs.PrintDefaults() } if err := fs.Parse(args); err != nil { - return f, err + return f, usageError(err) } if fs.NArg() > 1 { - return f, fmt.Errorf("unknown argument %s (flags go before the repo)", fs.Arg(1)) + return f, fmt.Errorf("unknown argument %q (flags go before the repo)", fs.Arg(1)) } f.repo = fs.Arg(0) return f, nil diff --git a/diff/main_test.go b/diff/main_test.go new file mode 100644 index 0000000..b37f0ec --- /dev/null +++ b/diff/main_test.go @@ -0,0 +1,9 @@ +package diff_test + +import ( + "testing" + + "github.com/rednafi/rexdiff/internal/testgit" +) + +func TestMain(m *testing.M) { testgit.Main(m) } diff --git a/rex/rex.go b/rex/rex.go index f6616be..62feb6b 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -69,7 +69,9 @@ func binFromEnv() string { // command returns the command "rex args...". func (c *Client) command(ctx context.Context, args ...string) *exec.Cmd { - return exec.CommandContext(ctx, cmp.Or(c.bin, "rex"), args...) + cmd := exec.CommandContext(ctx, cmp.Or(c.bin, "rex"), args...) + cmd.WaitDelay = time.Second // a child of rex can keep the output open + return cmd } // runRex runs "rex args..." and returns the output. If rex fails, the diff --git a/test/testdata/script/cli.txt b/test/testdata/script/cli.txt index db02fdc..22d7287 100644 --- a/test/testdata/script/cli.txt +++ b/test/testdata/script/cli.txt @@ -3,7 +3,9 @@ stderr '^rexdiff: open .+: git rev-parse: fatal: not a git repository' exec git init -q repo ! exec rexdiff repo -wrap=false -stderr '^rexdiff: unknown argument -wrap=false \(flags go before the repo\)$' +stderr '^rexdiff: unknown argument "-wrap=false" \(flags go before the repo\)$' +! exec rexdiff -nope +stderr -count=1 'flag provided but not defined: -nope' # -check checks the settings without a repository, for the Rex action. ! exec rexdiff -check -config '{"layuot": "split"}' diff --git a/test/testdata/script/install.txt b/test/testdata/script/install.txt index 3cf84b6..23afd56 100644 --- a/test/testdata/script/install.txt +++ b/test/testdata/script/install.txt @@ -20,6 +20,10 @@ cmp .config/rex/init.lua installed.lua [realrex] stdout 'actions: 1' [realrex] ! stderr . +# uninstall -h only shows the usage. +exec rexdiff uninstall -h +exists .config/rex/rexdiff.lua + # If uninstall cannot change init.lua, it keeps rexdiff.lua, so that # init.lua does not require a missing file. chmod 0444 .config/rex/init.lua diff --git a/tui/editor.go b/tui/editor.go index ea5cca3..d8eb8eb 100644 --- a/tui/editor.go +++ b/tui/editor.go @@ -2,6 +2,7 @@ package tui import ( "bytes" + "context" "errors" "fmt" "os" @@ -10,6 +11,7 @@ import ( "runtime" "strings" "syscall" + "time" tea "charm.land/bubbletea/v2" @@ -46,15 +48,31 @@ func (m *model) openEditor(path string, line int) tea.Cmd { if ed.Window { return m.runWindowEditor(path, ed.Script) } - if m.rex != nil { - err := m.rex.Split(m.ctx, m.repo.Root(), "sh", "-c", ed.Script) - if err == nil { - m.flash("opened " + path) - return nil - } - m.log.Debug("editor split", "err", err) + if m.rex == nil { + return m.runHere(path, ed.Script) + } + c, ctx, root := m.rex, m.ctx, m.repo.Root() + return func() tea.Msg { + ctx, cancel := context.WithTimeout(ctx, rexTimeout) + defer cancel() + return splitMsg{path, ed.Script, c.Split(ctx, root, "sh", "-c", ed.Script)} + } +} + +// onSplit tells that the editor opens in a new pane. If Rex cannot open +// the pane, the editor runs in this pane. +func (m *model) onSplit(msg splitMsg) tea.Cmd { + if msg.err == nil { + m.flash("opened " + msg.path) + return nil } - return tea.ExecProcess(command("sh", "-c", ed.Script), func(err error) tea.Msg { + m.log.Debug("editor split", "err", msg.err) + return m.runHere(msg.path, msg.script) +} + +// runHere runs the editor script in this pane, in place of rexdiff. +func (m *model) runHere(path, script string) tea.Cmd { + return tea.ExecProcess(command("sh", "-c", script), func(err error) tea.Msg { return editorDoneMsg{path: path, err: err} }) } @@ -64,37 +82,51 @@ func (m *model) openEditor(path string, line int) tea.Cmd { // If the editor fails, the returned command gives the error and the last // line of the stderr of the editor. func (m *model) runWindowEditor(path, script string) tea.Cmd { - cmd := command("sh", "-c", script) + wait, err := detach("editor", "sh", "-c", script) + if err != nil { + m.flash("editor failed: " + err.Error()) + return nil + } + m.flash("opened " + path) + return wait +} + +// detach starts a program in its own session and with no terminal, so +// that it cannot read the keys of rexdiff. The returned command waits for +// the program. If the program fails, the command gives a detachedMsg with +// the last line of the stderr of the program. +func detach(what, name string, args ...string) (tea.Cmd, error) { + cmd := command(name, args...) var stderr bytes.Buffer cmd.Stderr = &stderr cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true} + // A child of the program can keep stderr open after the program ends. + cmd.WaitDelay = time.Second if err := cmd.Start(); err != nil { - m.flash("editor failed: " + err.Error()) - return nil + return nil, err } - m.flash("opened " + path) return func() tea.Msg { err := cmd.Wait() - if err == nil { + if err == nil || errors.Is(err, exec.ErrWaitDelay) { return nil } s := strings.TrimSpace(stderr.String()) if last := s[strings.LastIndexByte(s, '\n')+1:]; last != "" { err = fmt.Errorf("%w: %s", err, last) } - return editorDoneMsg{window: true, err: err} - } + return detachedMsg{what, err} + }, nil } -// onEditorDone shows how the editor stops. A terminal editor that stops -// with an error code can still save the file. +// onEditorDone shows how the editor in this pane stops. An editor that +// stops with an error code can still save the file. func (m *model) onEditorDone(msg editorDoneMsg) { exit, isExit := errors.AsType[*exec.ExitError](msg.err) switch { case msg.err == nil: m.flash("edited " + msg.path) - case !msg.window && isExit: - m.flash("editor exited with " + exit.Error()) + case isExit: + m.flash("editor stopped: " + exit.Error()) default: m.flash("editor failed: " + msg.err.Error()) } @@ -102,29 +134,17 @@ func (m *model) onEditorDone(msg editorDoneMsg) { } // openURL opens url with the URL opener of the settings, else with -// the opener of the system. -func openURL(cfg config, url string) error { +// the opener of the system. The command waits for the opener. +func openURL(cfg config, url string) (tea.Cmd, error) { if cfg.URLOpener != "" { script := strings.ReplaceAll(cfg.URLOpener, "{url}", editor.ShellQuote(url)) - return start("sh", "-c", script) + return detach("open", "sh", "-c", script) } opener := "xdg-open" if runtime.GOOS == "darwin" { opener = "open" } - return start(opener, url) -} - -// start starts a program and does not wait for it to stop. A goroutine -// waits for the program, so that the program does not stay a zombie -// process. -func start(name string, args ...string) error { - cmd := command(name, args...) - if err := cmd.Start(); err != nil { - return err - } - go func() { _ = cmd.Wait() }() - return nil + return detach("open", opener, url) } // command returns the command for an editor or a URL opener. The command diff --git a/tui/model.go b/tui/model.go index 1237095..09bf010 100644 --- a/tui/model.go +++ b/tui/model.go @@ -168,6 +168,7 @@ type agentState struct { since time.Time // when Rex got the state cwd string // the working directory, or "" if Rex does not know it hasCwd bool // the program has the answer of Rex for cwd + asking bool // a question to Rex for cwd runs } // model is the state of the program. It implements tea.Model. @@ -284,6 +285,7 @@ type model struct { // session, the last pick first. recent []string grepCancel context.CancelFunc // stops the code search that runs + grepGen int // the last code search find findState findLines splitLines // the lines that find searches md mdRenderer // the last markdown renderer @@ -374,10 +376,10 @@ type ( err error } grepMsg struct { - query string - hits []vcs.Match - more bool // git finds more matches than hits has - err error + gen int // the search whose result shows; others are stale + hits []vcs.Match + more bool // git finds more matches than hits has + err error } prMsg struct { gen int // the read, see prFetch @@ -385,12 +387,25 @@ type ( err error } eventMsg rex.Event - // editorDoneMsg tells that the editor of path stops. A window editor - // sends it only if it fails. + // splitMsg tells if Rex opens the pane of the editor of path. + splitMsg struct { + path, script string + err error + } + // cwdMsg is the answer of Rex for the working directory of an agent. + cwdMsg struct { + block, cwd string + err error + } + // editorDoneMsg tells that the editor of path in this pane stops. editorDoneMsg struct { - path string - err error - window bool + path string + err error + } + // detachedMsg tells that a detached program, for what, fails. + detachedMsg struct { + what string + err error } ) @@ -640,6 +655,12 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { m.onInstalled(msg) case editorDoneMsg: m.onEditorDone(msg) + case detachedMsg: + m.flash(msg.what + " failed: " + msg.err.Error()) + case cwdMsg: + cmd = m.onCwd(msg) + case splitMsg: + cmd = m.onSplit(msg) case tea.MouseClickMsg: m.followCursor() return m.onClick(msg.Mouse()) @@ -691,7 +712,7 @@ func (m *model) onKey(msg tea.KeyPressMsg) tea.Cmd { // still shows their query. The list shows them in the code mode. func (m *model) onGrep(msg grepMsg) { ov := m.overlay - if ov == nil || ov.kind != overlaySearch || ov.input.Value() != msg.query { + if ov == nil || ov.kind != overlaySearch || msg.gen != m.grepGen { return } s := &ov.search diff --git a/tui/nav.go b/tui/nav.go index 45361be..4616a70 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -255,7 +255,7 @@ func (m *model) viewKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { case key.Matches(msg, k.FileListShrink): m.resizeList(-listStep) case key.Matches(msg, k.OpenPR): - m.openPR() + return m.openPR(), true case key.Matches(msg, k.Refresh): return m.refresh(), true case m.release != nil && key.Matches(msg, k.Upgrade): @@ -308,13 +308,15 @@ func (m *model) resizeList(d int) { } // openPR opens the pull request in the browser. -func (m *model) openPR() { +func (m *model) openPR() tea.Cmd { if m.pr.pr == nil || m.pr.pr.URL == "" { - return + return nil } - if err := openURL(m.cfg, m.pr.pr.URL); err != nil { - m.flash("open: " + err.Error()) + wait, err := openURL(m.cfg, m.pr.pr.URL) + if err != nil { + m.flash("open failed: " + err.Error()) } + return wait } // refresh reads the current tab again. diff --git a/tui/overlay.go b/tui/overlay.go index 14bf231..e59470a 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -238,8 +238,10 @@ func (m *model) closeOverlay() { m.stopGrep() } -// stopGrep stops the code search that runs, if any. +// stopGrep stops the code search that runs, if any. Its result then does +// not show. func (m *model) stopGrep() { + m.grepGen++ if m.grepCancel != nil { m.grepCancel() m.grepCancel = nil @@ -291,10 +293,11 @@ func (m *model) runSearch() tea.Cmd { ov.showSearch() ctx, cancel := context.WithTimeout(m.ctx, search.CodeTimeout) m.grepCancel = cancel - repo := m.repo + repo, gen := m.repo, m.grepGen return func() tea.Msg { + defer cancel() hits, more, err := repo.Grep(ctx, q, search.CodeLimit, search.CodeBudget) - return grepMsg{q, hits, more, err} + return grepMsg{gen, hits, more, err} } } diff --git a/tui/pr.go b/tui/pr.go index 382e5ff..d40563d 100644 --- a/tui/pr.go +++ b/tui/pr.go @@ -21,16 +21,14 @@ const ( // prPoll is the time between two reads while the PR tab shows. A // change on the forge has no local sign. prPoll = time.Minute - // prHang is the time after which a new request drops a read that - // does not end. - prHang = time.Minute + // prTimeout is the longest time of a read. + prTimeout = time.Minute ) // prFetch follows the reads of the pull request. type prFetch struct { gen int // the read whose result shows; others are stale inFlight bool // the read gen runs - started time.Time // the start of the read gen polled time.Time // the last request, for prPoll cancel context.CancelFunc // trailing is true if an ambient request comes while a read runs. @@ -42,12 +40,11 @@ type prFetch struct { // requestPR asks for a read of the pull request. A forced request starts // a read at once. An ambient request during a read starts one more read -// after it, unless the read hangs. +// after it. A read that hangs ends after prTimeout. func (m *model) requestPR(forced bool) tea.Cmd { f := &m.prf f.polled = time.Now() - hung := f.inFlight && f.polled.Sub(f.started) >= prHang - if !forced && f.inFlight && !hung { + if !forced && f.inFlight { f.trailing = true return nil } @@ -61,9 +58,9 @@ func (m *model) loadPR() tea.Cmd { if f.cancel != nil { f.cancel() } - ctx, cancel := context.WithCancel(m.ctx) + ctx, cancel := context.WithTimeout(m.ctx, prTimeout) f.gen++ - f.inFlight, f.trailing, f.started, f.cancel = true, false, time.Now(), cancel + f.inFlight, f.trailing, f.cancel = true, false, cancel repo, gen := m.repo, f.gen hosts := vcs.Hosts{ GitHub: m.cfg.GitHubHost, diff --git a/tui/send.go b/tui/send.go index f232539..ce726b9 100644 --- a/tui/send.go +++ b/tui/send.go @@ -25,6 +25,8 @@ const maxSend = 256 << 10 func (m *model) listAgents(msg agentsMsg) tea.Cmd { c, ctx := m.rex, m.ctx return func() tea.Msg { + ctx, cancel := context.WithTimeout(ctx, rexTimeout) + defer cancel() agents, err := c.Agents(ctx) isRexdiff := func(a rex.Agent) bool { return a.Status.App == appName } agents = slices.DeleteFunc(agents, isRexdiff) @@ -33,6 +35,10 @@ func (m *model) listAgents(msg agentsMsg) tea.Cmd { } } +// rexTimeout is the longest time of the calls to Rex for one action. A +// Rex that does not answer then fails the action. +const rexTimeout = 10 * time.Second + // inRepo tells if dir is in the repository. An empty dir is unknown, and // counts as in the repository. func (m *model) inRepo(dir string) bool { return dir == "" || m.repo.Contains(dir) } @@ -67,8 +73,7 @@ func (m *model) onEvent(e rex.Event) tea.Cmd { a := m.agent(e.Block) a.app, a.state, a.since = app, state, cmp.Or(e.Status.At, time.Now()) } - m.observeTurn() - return nil + return m.observeTurn() } // member is an agent that works in the repository. @@ -81,9 +86,9 @@ type member struct { // members returns the agents that work in the repository, in the order // of their blocks. As in herdr-reviewr, an agent is a member if its // working directory is absolute and in this working tree. If the place of -// an agent is not known, members returns false. -func (m *model) members() ([]member, bool) { - var out []member +// an agent is not known, members returns false, and the block of the +// agent if Rex can tell its place. +func (m *model) members() (ms []member, ask string, ok bool) { for _, block := range slices.Sorted(maps.Keys(m.agents)) { a := m.agents[block] if a.state == "" || a.app == appName || (m.rex != nil && block == m.rex.Block) { @@ -91,25 +96,53 @@ func (m *model) members() ([]member, bool) { } if !a.hasCwd { if m.rex == nil { - return nil, false - } - cwd, err := m.rex.Cwd(m.ctx, block) - if err != nil { - m.log.Debug("agent cwd failed", "block", block, "err", err) - return nil, false // ask again with the next state + return nil, "", false } - a.cwd, a.hasCwd = cwd, true + return nil, block, false } in, err := m.owns(a.cwd) if err != nil { m.log.Warn("agent membership failed", "err", err) - return nil, false + return nil, "", false } if in { - out = append(out, member{block, a.app, a.state, a.since}) + ms = append(ms, member{block, a.app, a.state, a.since}) } } - return out, true + return ms, "", true +} + +// askCwd returns a command that asks Rex for the working directory of the +// agent in block. The answer comes as a cwdMsg. +func (m *model) askCwd(block string) tea.Cmd { + a := m.agents[block] + if a.asking { + return nil + } + a.asking = true + c, ctx := m.rex, m.ctx + return func() tea.Msg { + ctx, cancel := context.WithTimeout(ctx, rexTimeout) + defer cancel() + cwd, err := c.Cwd(ctx, block) + return cwdMsg{block, cwd, err} + } +} + +// onCwd keeps the working directory of an agent, and follows the turns +// with it. After an error, the next state asks again. +func (m *model) onCwd(msg cwdMsg) tea.Cmd { + a := m.agents[msg.block] + if a == nil { + return nil // the block closed + } + a.asking = false + if msg.err != nil { + m.log.Debug("agent cwd failed", "block", msg.block, "err", msg.err) + return nil + } + a.cwd, a.hasCwd = msg.cwd, true + return m.observeTurn() } // owns tells if dir is in this working tree. It keeps the directories @@ -130,13 +163,16 @@ func (m *model) owns(dir string) (bool, error) { // observeTurn gives the state of the repository to the tracker, and // follows the start and the end of a turn. -func (m *model) observeTurn() { +func (m *model) observeTurn() tea.Cmd { if !m.sampled { - return + return nil + } + ms, ask, ok := m.members() + if ask != "" { + return m.askCwd(ask) } - ms, ok := m.members() if !ok { - return // keep the last state, as herdr-reviewr does + return nil // keep the last state, as herdr-reviewr does } here := len(ms) > 0 if m.agentsHere == nil || *m.agentsHere != here { @@ -156,6 +192,7 @@ func (m *model) observeTurn() { if ended { m.endTurn() } + return nil } // turnWaitMessage tells why the last-turn scope has no turn. The messages @@ -276,9 +313,10 @@ func (m *model) onAgents(msg agentsMsg) tea.Cmd { m.log.Warn("agent list failed", "err", msg.err) m.sampleRetry.fail(time.Now()) } - m.observeTurn() + // A send drops the question for a cwd. The next state asks again. + turn := m.observeTurn() if !msg.send { - return nil + return turn } m.sends-- if msg.err != nil { @@ -314,6 +352,15 @@ func (m *model) onAgents(msg agentsMsg) tea.Cmd { return nil } +// commentIDs returns the IDs of the comments. +func (m *model) commentIDs() []int { + var ids []int + for _, c := range m.comments.All() { + ids = append(ids, c.ID) + } + return ids +} + // reviewText returns the text of the review that a send pastes. func (m *model) reviewText() string { return m.comments.Review(m.cfg.ReviewPrefix) @@ -325,13 +372,11 @@ func (m *model) reviewText() string { func (m *model) deliver(a rex.Agent) tea.Cmd { m.sends++ c, ctx := m.rex, m.ctx - text := m.reviewText() - var ids []int - for _, cm := range m.comments.All() { - ids = append(ids, cm.ID) - } + text, ids := m.reviewText(), m.commentIDs() focus := m.cfg.focusAgent() return func() tea.Msg { + ctx, cancel := context.WithTimeout(ctx, rexTimeout) + defer cancel() status, err := c.Status(ctx, a.Block) if err != nil { return sentMsg{agent: a, err: fmt.Errorf("check %s: %w", a.Name, err)} @@ -394,10 +439,7 @@ func (m *model) copyComments() { m.flash("no comments yet") return } - var ids []int - for _, c := range m.comments.All() { - ids = append(ids, c.ID) - } + ids := m.commentIDs() m.copyText(m.reviewText(), "copied "+plural(len(ids), "comment"), ids) } diff --git a/tui/tui.go b/tui/tui.go index f7d98c6..48767a9 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -8,6 +8,7 @@ import ( "errors" "fmt" "log/slog" + "sync" tea "charm.land/bubbletea/v2" @@ -95,13 +96,16 @@ func Run(ctx context.Context, o Options) (resume string, err error) { m := startModel(ctx, o, cfg) program := tea.NewProgram(&m, tea.WithContext(ctx)) + var wg sync.WaitGroup if o.Rex != nil { // Watch returns only the error of ctx, when ctx is done. - go func() { + wg.Go(func() { _ = o.Rex.Watch(ctx, func(e rex.Event) { program.Send(eventMsg(e)) }) - }() + }) } final, err := program.Run() + cancel() + wg.Wait() if fm, ok := final.(*model); ok && err == nil { if fm.restartState != "" { // Keep the last screen until the new rexdiff draws, so that diff --git a/update/update.go b/update/update.go index e629ea0..f334622 100644 --- a/update/update.go +++ b/update/update.go @@ -248,6 +248,7 @@ func tool(name string, dirs ...string) string { func runCommand(ctx context.Context, env []string, name string, args ...string) ([]byte, error) { cmd := exec.CommandContext(ctx, name, args...) cmd.Env = append(cmd.Environ(), env...) + cmd.WaitDelay = time.Second // a child of brew can keep the output open return cmd.CombinedOutput() } diff --git a/vcs/refs.go b/vcs/refs.go index 43a323d..82e24a7 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -214,7 +214,7 @@ func (r *Repo) Grep(ctx context.Context, q string, limit int, budget time.Durati cmd := exec.CommandContext(ctx, "git", "grep", "-n", "--no-column", "-z", "-I", "-i", "-F", "--untracked", "--no-color", "-e", q) - cmd.Dir = r.root + cmd.Dir, cmd.WaitDelay = r.root, waitDelay var stderr bytes.Buffer cmd.Stderr = &stderr out, err := cmd.StdoutPipe() diff --git a/vcs/repo.go b/vcs/repo.go index e2254df..83ce7c9 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -108,6 +108,7 @@ func command( ) (string, error) { cmd := exec.CommandContext(ctx, name, args...) cmd.Dir, cmd.Stdin = dir, stdin + cmd.WaitDelay = waitDelay if env != nil { cmd.Env = append(cmd.Environ(), env...) // Environ sets PWD to cmd.Dir } @@ -124,6 +125,10 @@ func command( return string(out), nil } +// waitDelay is how long a stopped process can keep its output open. A +// child of gh or az can keep it open after the process ends. +const waitDelay = time.Second + // runError shows the message of the program, but keeps the error of the // process. type runError struct { @@ -143,8 +148,11 @@ func exitedOne(err error) bool { // Resolve returns the object ID of rev, for example "HEAD" or "main^{tree}". func (r *Repo) Resolve(ctx context.Context, rev string) (string, error) { out, err := r.run(ctx, nil, "rev-parse", "--verify", "--quiet", rev) + if exitedOne(err) { + return "", fmt.Errorf("git: unknown revision %q", rev) + } if err != nil { - return "", fmt.Errorf("git: unknown revision %s", rev) + return "", fmt.Errorf("git rev-parse: %w", err) } return strings.TrimSpace(out), nil } @@ -391,6 +399,7 @@ func (r *Repo) readBlobs(ctx context.Context, ids []string, blobs []blob) error return nil } cmd := exec.CommandContext(ctx, "git", "cat-file", "--batch") + cmd.WaitDelay = waitDelay cmd.Dir = r.root cmd.Stdin = strings.NewReader(in.String()) var stderr bytes.Buffer diff --git a/vcs/repo_test.go b/vcs/repo_test.go index adf32da..301f593 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -606,7 +606,7 @@ func TestCommitsLikeHerdr(t *testing.T) { } got := subjects(cs) if len(got) != 62 || got[0] != "c59" || got[60] != "merge side" || got[61] != "b" { - t.Errorf("Commits(fork point) = %d commits %q…, want c59 to b, no side", len(got), got[:3]) + t.Errorf("Commits(fork point) = %d commits %q…, want c59 to b, no side", len(got), got[:min(3, len(got))]) } cs, err = r.Commits(ctx, "") @@ -649,8 +649,9 @@ func TestGrepLimit(t *testing.T) { tt.limit, len(ms), more, err, tt.wantN, tt.wantMore) } } - if ms, _, _ := r.Grep(ctx, "hit", 2, time.Minute); ms[1] != (vcs.Match{Path: "many.txt", Line: 2, Text: "hit"}) { - t.Errorf("Grep(hit, 2)[1] = %+v, want many.txt:2", ms[1]) + want := vcs.Match{Path: "many.txt", Line: 2, Text: "hit"} + if ms, _, _ := r.Grep(ctx, "hit", 2, time.Minute); len(ms) != 2 || ms[1] != want { + t.Errorf("Grep(hit, 2) = %+v, want many.txt:2 second", ms) } } From 18ee0ce33ca361a5d254b77599086860979a1a74 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 00:38:35 +0100 Subject: [PATCH 071/119] test: one style for tables, failure messages, fixtures, and helpers --- diff/cell_test.go | 94 ++++++++------ diff/comment_test.go | 22 ++-- diff/diff_test.go | 180 +++++++++++++++------------ diff/fold_test.go | 36 +++--- diff/fuzz_test.go | 5 +- internal/clipboard/clipboard_test.go | 3 +- internal/editor/editor_test.go | 4 +- internal/search/search_test.go | 2 +- internal/termtext/fuzz_test.go | 40 ++++++ internal/termtext/termtext_test.go | 33 ----- internal/turn/turn_test.go | 2 +- rex/rex_test.go | 13 +- test/fake_test.go | 4 +- test/main_test.go | 23 ++++ test/rexdiff_test.go | 20 +-- test/upgrade_test.go | 2 +- update/update_test.go | 65 +++++----- vcs/hostile_test.go | 42 +++---- vcs/pr_test.go | 42 +++---- vcs/repo_test.go | 69 +++++----- vcs/watch_test.go | 4 +- 21 files changed, 382 insertions(+), 323 deletions(-) create mode 100644 internal/termtext/fuzz_test.go create mode 100644 test/main_test.go diff --git a/diff/cell_test.go b/diff/cell_test.go index 1df7b5c..39177ce 100644 --- a/diff/cell_test.go +++ b/diff/cell_test.go @@ -65,12 +65,16 @@ func TestCell(t *testing.T) { {"file", f, 1, "new_name", false, diff.SideNew, 2, 1}, } for _, tt := range tests { - x := column(t, tt.d, tt.row, tt.needle, tt.last) - side, line, char, ok := tt.d.Cell(tt.row, x) - if !ok || side != tt.side || line != tt.line || char != tt.char { - t.Errorf("%s: Cell(%d, %d) = %v, %d, %d, %v; want %v, %d, %d, true", - tt.name, tt.row, x, side, line, char, ok, tt.side, tt.line, tt.char) - } + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + x := column(t, tt.d, tt.row, tt.needle, tt.last) + side, line, char, ok := tt.d.Cell(tt.row, x) + if !ok || side != tt.side || line != tt.line || char != tt.char { + t.Errorf("Cell(%d, %d) = %v, %d, %d, %v, want %v, %d, %d, true", + tt.row, x, side, line, char, ok, + tt.side, tt.line, tt.char) + } + }) } // A cell of the tab gives the tab. A cell after the code gives the end. x := column(t, u, 3, "new", false) @@ -78,7 +82,7 @@ func TestCell(t *testing.T) { t.Errorf("the tab: char %d, want 0", char) } if _, _, char, ok := u.Cell(3, 79); !ok || char != 14 { - t.Errorf("after the code: char %d, %v; want 14, true", char, ok) + t.Errorf("after the code: char %d, %v, want 14, true", char, ok) } // The numbers, the mark, and the hunk header are not code. for _, c := range []struct{ row, x int }{{3, 0}, {3, 4}, {3, x - 5}, {0, 20}, {9, 20}} { @@ -109,43 +113,51 @@ func TestCellMatchesScreen(t *testing.T) { "wrap": {Width: 60, Wrap: true}, } src := map[diff.Side][]string{diff.SideOld: diff.Lines(old), diff.SideNew: diff.Lines(new)} - for _, l := range renderers(old, new) { - rn := l.name - for on, o := range opts { - d := l.render(o) - checked := 0 - for i, l := range d.Lines { - plain := ansi.Strip(l) - for x := range ansi.StringWidth(plain) { - side, line, char, ok := d.Cell(i, x) - if !ok { - continue - } - got, _ := screenRune(plain, x) - text := []rune(src[side][line-1]) - if char >= len(text) { - if got != ' ' { - t.Errorf("%s %s: line %d col %d shows %q, want past the end", - rn, on, i, x, got) - } - continue - } - want := text[char] - if want == '\t' { - want = ' ' - } - if got != want && got != '…' { - t.Errorf("%s %s: line %d col %d shows %q, Cell gives %q", - rn, on, i, x, got, want) - } - checked++ + for _, tt := range renderers(old, new) { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + for on, o := range opts { + checkCells(t, on, tt.render(o), src) + } + }) + } +} + +// checkCells checks that each code cell of d shows the character that +// Cell gives. The lines of src are the source of each side. +func checkCells(t *testing.T, on string, d *diff.Diff, src map[diff.Side][]string) { + t.Helper() + checked := 0 + for i, l := range d.Lines { + plain := ansi.Strip(l) + for x := range ansi.StringWidth(plain) { + side, line, char, ok := d.Cell(i, x) + if !ok { + continue + } + got, _ := screenRune(plain, x) + text := []rune(src[side][line-1]) + if char >= len(text) { + if got != ' ' { + t.Errorf("%s: line %d col %d shows %q, want past the end", + on, i, x, got) } + continue } - if checked < 20 { - t.Errorf("%s %s: %d code cells, want 20 or more", rn, on, checked) + want := text[char] + if want == '\t' { + want = ' ' } + if got != want && got != '…' { + t.Errorf("%s: line %d col %d shows %q, want %q from Cell", + on, i, x, got, want) + } + checked++ } } + if checked < 20 { + t.Errorf("%s: %d code cells, want 20 or more", on, checked) + } } // TestCellGraphemes checks Cell after grapheme clusters of more than one @@ -167,7 +179,7 @@ func TestCellGraphemes(t *testing.T) { x := ansi.StringWidth(plain[:k]) _, _, char, ok := d.Cell(i, x) if !ok || char >= len(src) || src[char] != 'x' { - t.Errorf("%q wrap %v: Cell(%d, %d) = %d, %v; want the index of an x", + t.Errorf("%q wrap %v: Cell(%d, %d) = %d, %v, want the index of an x", g, o.Wrap, i, x, char, ok) } found++ @@ -199,7 +211,7 @@ func TestCellOffsetInWideChar(t *testing.T) { } x := column(t, d, row, string(needle), false) if _, _, got, ok := d.Cell(row, x); !ok || got != char { - t.Errorf("%s offset %d: Cell on %q = %d, %v; want %d, true", + t.Errorf("%s offset %d: Cell on %q = %d, %v, want %d, true", name, off, needle, got, ok, char) } } diff --git a/diff/comment_test.go b/diff/comment_test.go index 5512568..f14bc37 100644 --- a/diff/comment_test.go +++ b/diff/comment_test.go @@ -36,9 +36,9 @@ func review(c diff.Comment) string { return cs.Review("") } -// TestReviewMatchesHerdr checks that Review writes the text format of -// herdr-reviewr. -func TestReviewMatchesHerdr(t *testing.T) { +// TestReviewMatchesHerdrReviewr checks that Review writes the text format +// of herdr-reviewr. +func TestReviewMatchesHerdrReviewr(t *testing.T) { t.Parallel() var cs diff.Comments cs.Add(comment("c.go", diff.SideNew, @@ -60,7 +60,7 @@ func TestReviewMatchesHerdr(t *testing.T) { "c.go:1-2\n" + " ctx\n-\told[31m\n+\tnew\nfix]7501;state=idle this" if got != want { - t.Errorf("Review got:\n%s\nwant:\n%s", got, want) + t.Errorf("Review = \n%s\nwant:\n%s", got, want) } if got := new(diff.Comments).Review(""); got != "" { t.Errorf("Review with no comments = %q, want \"\"", got) @@ -83,7 +83,7 @@ func TestReviewContinuedRows(t *testing.T) { // The comment has no diff lines, so Review writes the lines of its range. want := "a.go:1\n+" + strings.TrimSuffix(new, "\n") + "\nlong" if got := review(c); len(cont) == 0 || got != want { - t.Errorf("%d continued rows, Review got:\n%s\nwant:\n%s", + t.Errorf("%d continued rows, Review = \n%s\nwant:\n%s", len(cont), got, want) } } @@ -127,7 +127,7 @@ func TestComments(t *testing.T) { } cs.Remove(b.ID) if cs.Find(b.ID) != nil || cs.Len() != 2 { - t.Errorf("after Remove(%d): Find = %v, Len = %d; want nil, 2", + t.Errorf("after Remove(%d): Find = %v, Len = %d, want nil, 2", b.ID, cs.Find(b.ID), cs.Len()) } if c := cs.Add(diff.Comment{}); c.ID == a.ID || c.ID == b.ID { @@ -157,7 +157,7 @@ func TestNewComment(t *testing.T) { } want += "\n a\n-b\n-c\n+B\n+C\n d\n" if got := review(c); got != want { - t.Errorf("split %v, side %d: Review got:\n%s\nwant:\n%s", + t.Errorf("split %v, side %d: Review = \n%s\nwant:\n%s", split, s, got, want) } } @@ -193,15 +193,13 @@ func TestSnippetIsTheRealDiff(t *testing.T) { d := diff.Render("x.go", old, new, diff.Options{Split: split}) got := strings.Join(snippet(d.Rows, old, new), "\n") if got != want { - t.Errorf("split %v: snippet got:\n%s\nwant:\n%s", split, got, want) + t.Errorf("split %v: snippet = \n%s\nwant:\n%s", split, got, want) } } dir := t.TempDir() for name, src := range map[string]string{"old": old, "new": new} { - if err := os.WriteFile(filepath.Join(dir, name), []byte(src), 0o644); err != nil { - t.Fatal(err) - } + testgit.WriteFile(t, dir, name, src) } // git diff exits with 1 when the files differ. git := exec.CommandContext(t.Context(), @@ -214,7 +212,7 @@ func TestSnippetIsTheRealDiff(t *testing.T) { out, _ := git.Output() _, body, _ := strings.Cut(string(out), "@@\n") if strings.TrimSuffix(body, "\n") != want { - t.Errorf("git diff got:\n%s\nwant:\n%s", body, want) + t.Errorf("git diff = \n%s\nwant:\n%s", body, want) } } diff --git a/diff/diff_test.go b/diff/diff_test.go index 99f3c86..7dedde3 100644 --- a/diff/diff_test.go +++ b/diff/diff_test.go @@ -103,26 +103,29 @@ func TestRenderRowsFollowLines(t *testing.T) { for ti, th := range themes { for _, tt := range tests { name := fmt.Sprintf("split %v, theme %d", tt.split, ti) - o := diff.Options{Split: tt.split, Width: width, Theme: th} - d := diff.Render("x.go", oldSrc, newSrc, o) - if got := kinds(d.Rows); got != tt.kinds { - t.Errorf("%s: kinds = %q, want %q", name, got, tt.kinds) - } - for i, r := range tt.rows { - if i < len(d.Rows) && d.Rows[i] != r { - t.Errorf("%s: row %d = %+v, want %+v", name, i, d.Rows[i], r) + t.Run(name, func(t *testing.T) { + t.Parallel() + o := diff.Options{Split: tt.split, Width: width, Theme: th} + d := diff.Render("x.go", oldSrc, newSrc, o) + if got := kinds(d.Rows); got != tt.kinds { + t.Errorf("kinds = %q, want %q", got, tt.kinds) } - } - if len(d.Lines) != len(d.Rows) { - t.Fatalf("%s: %d lines for %d rows, want one line for each row", - name, len(d.Lines), len(d.Rows)) - } - for i, l := range d.Lines { - if w := ansi.StringWidth(l); w > width { - t.Errorf("%s: line %d is %d cells wide, want %d or fewer", - name, i, w, width) + for i, r := range tt.rows { + if i < len(d.Rows) && d.Rows[i] != r { + t.Errorf("row %d = %+v, want %+v", i, d.Rows[i], r) + } } - } + if len(d.Lines) != len(d.Rows) { + t.Errorf("%d lines for %d rows, want one line for each row", + len(d.Lines), len(d.Rows)) + } + for i, l := range d.Lines { + if w := ansi.StringWidth(l); w > width { + t.Errorf("line %d is %d cells wide, want %d or fewer", + i, w, width) + } + } + }) } } } @@ -139,7 +142,7 @@ func TestRenderKinds(t *testing.T) { for _, tt := range tests { d := diff.Render("x.go", tt.old, tt.new, diff.Options{Width: 80}) if got := kinds(d.Rows); got != tt.want || len(d.Lines) != len(d.Rows) { - t.Errorf("Render(%q, %q): kinds %q, %d lines; want %q, one line each", + t.Errorf("Render(%q, %q): kinds %q, %d lines, want %q, one line each", tt.old, tt.new, got, len(d.Lines), tt.want) } } @@ -196,22 +199,26 @@ func TestMarks(t *testing.T) { }}, } for _, tt := range tests { - tt.o.Theme = theme - d := diff.Render("x.txt", before, after, tt.o) - if len(d.Lines) != 1+len(tt.lines) { - t.Fatalf("%s: %d lines, want %d", tt.name, len(d.Lines), 1+len(tt.lines)) - } - for i, want := range tt.lines { - got := strings.TrimRight(ansi.Strip(d.Lines[i+1]), " ") - if got != want { - t.Errorf("%s: line %d = %q, want %q", tt.name, i+1, got, want) + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + tt.o.Theme = theme + d := diff.Render("x.txt", before, after, tt.o) + if len(d.Lines) != 1+len(tt.lines) { + t.Fatalf("%d lines, want %d", len(d.Lines), 1+len(tt.lines)) } - } - // The marks have the colour of their lines: ANSI red for the - // delete, then ANSI green for the insert. - if got := markColours(d.Lines[1:]); !slices.Equal(got, []string{"31", "32"}) { - t.Errorf("%s: the marks have colours %q, want 31 and 32", tt.name, got) - } + for i, want := range tt.lines { + got := strings.TrimRight(ansi.Strip(d.Lines[i+1]), " ") + if got != want { + t.Errorf("line %d = %q, want %q", i+1, got, want) + } + } + // The marks have the colour of their lines: ANSI red for the + // delete, then ANSI green for the insert. + got := markColours(d.Lines[1:]) + if !slices.Equal(got, []string{"31", "32"}) { + t.Errorf("the marks have colours %q, want 31 and 32", got) + } + }) } // With a scroll to the right, an ellipsis shows after the bar. d := diff.Render("x.txt", "", "abcdefgh\n", diff.Options{Width: 40, Offset: 2}) @@ -278,11 +285,14 @@ func TestSideAt(t *testing.T) { {"file code", f, 5, diff.SideNew, false}, } for _, tt := range tests { - side, on := tt.d.SideAt(tt.x) - if side != tt.side || on != tt.onNumber { - t.Errorf("%s: SideAt(%d) = %v, %v; want %v, %v", - tt.name, tt.x, side, on, tt.side, tt.onNumber) - } + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + side, on := tt.d.SideAt(tt.x) + if side != tt.side || on != tt.onNumber { + t.Errorf("SideAt(%d) = %v, %v, want %v, %v", + tt.x, side, on, tt.side, tt.onNumber) + } + }) } } @@ -301,7 +311,7 @@ func TestCount(t *testing.T) { for _, tt := range tests { a, d := diff.Count(tt.old, tt.new) if a != tt.added || d != tt.deleted { - t.Errorf("Count(%q, %q) = %d, %d; want %d, %d", + t.Errorf("Count(%q, %q) = %d, %d, want %d, %d", tt.old, tt.new, a, d, tt.added, tt.deleted) } } @@ -313,7 +323,8 @@ func TestRenderFile(t *testing.T) { src := "package x\n\nfunc f() {\n\treturn\n}\n" d := diff.RenderFile("x.go", src, diff.Options{Width: 14}) if len(d.Lines) != 5 || len(d.Rows) != 5 { - t.Fatalf("got %d lines and %d rows, want 5", len(d.Lines), len(d.Rows)) + t.Fatalf("RenderFile: %d lines and %d rows, want 5", + len(d.Lines), len(d.Rows)) } if d.Rows[3] != (diff.Row{Kind: diff.KindEqual, Old: 4, New: 4}) { t.Errorf("row 3 = %+v, want %+v", @@ -334,42 +345,48 @@ func TestWrap(t *testing.T) { long := "x := []string{" + strings.Repeat(`"word", `, 12) + "}" old, new := "a\nb\n", "a\n"+long+"\nb\n" const width = 40 - for _, l := range renderers(old, new) { - name, render := l.name, l.render - cut := render(diff.Options{Width: width}) - d := render(diff.Options{Width: width, Wrap: true}) - if len(d.Lines) != len(d.Rows) || len(d.Lines) <= len(cut.Lines) { - t.Fatalf("%s: %d lines and %d rows, want more than the %d lines without wrap", - name, len(d.Lines), len(d.Rows), len(cut.Lines)) - } - var text strings.Builder - for i, l := range d.Lines { - if w := ansi.StringWidth(l); w > width { - t.Errorf("%s: line %d is %d cells wide, want %d or fewer", - name, i, w, width) + for _, tt := range renderers(old, new) { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + cut := tt.render(diff.Options{Width: width}) + d := tt.render(diff.Options{Width: width, Wrap: true}) + if len(d.Lines) != len(d.Rows) || len(d.Lines) <= len(cut.Lines) { + t.Fatalf("%d lines and %d rows, "+ + "want more than the %d lines without wrap", + len(d.Lines), len(d.Rows), len(cut.Lines)) + } + var text strings.Builder + for i, l := range d.Lines { + if w := ansi.StringWidth(l); w > width { + t.Errorf("line %d is %d cells wide, want %d or fewer", + i, w, width) + } + r := d.Rows[i] + if r.New == 2 { + text.WriteString(ansi.Strip(l)) + } + // A continued row points at the same source lines as the + // row above. + prev := d.Rows[max(i-1, 0)] + sameLines := prev.Old == r.Old && prev.New == r.New + if r.Continued && !sameLines { + t.Errorf("continued row %d = %+v, want the lines of %+v", + i, r, prev) + } } - r := d.Rows[i] - if r.New == 2 { - text.WriteString(ansi.Strip(l)) + noSpace := func(s string) string { + return strings.Join(strings.Fields(s), "") } - // A continued row points at the same source lines as the row above. - prev := d.Rows[max(i-1, 0)] - sameLines := prev.Old == r.Old && prev.New == r.New - if r.Continued && !sameLines { - t.Errorf("%s: continued row %d = %+v, want the lines of %+v", - name, i, r, prev) + if !strings.Contains(noSpace(text.String()), noSpace(long)) { + t.Errorf("wrapped lines = \n%s\nwant all of:\n%s", + text.String(), long) } - } - noSpace := func(s string) string { return strings.Join(strings.Fields(s), "") } - if !strings.Contains(noSpace(text.String()), noSpace(long)) { - t.Errorf("%s: the wrapped lines got:\n%s\nwant all of:\n%s", - name, text.String(), long) - } - // Wrap does not change the snippet of a comment. - got, want := snippet(d.Rows, old, new), snippet(cut.Rows, old, new) - if !slices.Equal(got, want) { - t.Errorf("%s: snippet with wrap = %q, want %q", name, got, want) - } + // Wrap does not change the snippet of a comment. + got, want := snippet(d.Rows, old, new), snippet(cut.Rows, old, new) + if !slices.Equal(got, want) { + t.Errorf("snippet with wrap = %q, want %q", got, want) + } + }) } } @@ -378,7 +395,7 @@ func TestWrap(t *testing.T) { func TestCache(t *testing.T) { t.Parallel() const src = "def f(): # a comment\n\treturn 1\n" - renders := []struct { + tests := []struct { path, old, new string file bool // RenderFile, of new offset int @@ -391,16 +408,17 @@ func TestCache(t *testing.T) { {path: "a.go", new: src + "y\n", file: true}, } var c diff.Cache - for _, r := range renders { + for _, tt := range tests { render := func(c *diff.Cache) []string { - o := diff.Options{Width: 40, Offset: r.offset, Cache: c} - if r.file { - return diff.RenderFile(r.path, r.new, o).Lines + o := diff.Options{Width: 40, Offset: tt.offset, Cache: c} + if tt.file { + return diff.RenderFile(tt.path, tt.new, o).Lines } - return diff.Render(r.path, r.old, r.new, o).Lines + return diff.Render(tt.path, tt.old, tt.new, o).Lines } if got, want := render(&c), render(nil); !slices.Equal(got, want) { - t.Errorf("%+v: with the cache got:\n%q\nwant:\n%q", r, got, want) + t.Errorf("%+v: lines with the cache = \n%q\nwant:\n%q", + tt, got, want) } } } diff --git a/diff/fold_test.go b/diff/fold_test.go index cb9f33b..f1ce2bc 100644 --- a/diff/fold_test.go +++ b/diff/fold_test.go @@ -93,10 +93,14 @@ func TestFolds(t *testing.T) { )}, } for _, tt := range tests { - d := diff.Render("f.txt", old, new, diff.Options{Width: 60, Expanded: tt.expanded}) - if got := layout(d); !slices.Equal(got, tt.want) { - t.Errorf("%s:\n got %v\nwant %v", tt.name, got, tt.want) - } + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + o := diff.Options{Width: 60, Expanded: tt.expanded} + d := diff.Render("f.txt", old, new, o) + if got := layout(d); !slices.Equal(got, tt.want) { + t.Errorf("layout = %v\nwant %v", got, tt.want) + } + }) } // The header gives the number of hidden lines. A fold at the end has no @@ -115,7 +119,7 @@ func TestFolds(t *testing.T) { } { d := diff.Render("f.txt", old, new, tt.o) if got := headers(d); got != tt.want { - t.Errorf("split %v: headers got:\n%s\nwant:\n%s", + t.Errorf("split %v: headers = \n%s\nwant:\n%s", tt.o.Split, got, tt.want) } for i, l := range d.Lines { @@ -150,15 +154,19 @@ func TestFoldEdges(t *testing.T) { {"all new", "", "a\nb\n", "@0/0+0 0:1 0:2"}, } for _, tt := range tests { - d := diff.Render("f.txt", tt.old, tt.new, diff.Options{Width: 80}) - if got := strings.Join(layout(d), " "); got != tt.want { - t.Errorf("%s:\n got %s\nwant %s", tt.name, got, tt.want) - } - // The split layout has the same folds. - split := diff.Render("f.txt", tt.old, tt.new, diff.Options{Width: 80, Split: true}) - if got, want := folds(split), folds(d); !slices.Equal(got, want) { - t.Errorf("%s: the split layout has folds %v, want %v", tt.name, got, want) - } + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + d := diff.Render("f.txt", tt.old, tt.new, diff.Options{Width: 80}) + if got := strings.Join(layout(d), " "); got != tt.want { + t.Errorf("layout = %s\nwant %s", got, tt.want) + } + // The split layout has the same folds. + o := diff.Options{Width: 80, Split: true} + split := diff.Render("f.txt", tt.old, tt.new, o) + if got, want := folds(split), folds(d); !slices.Equal(got, want) { + t.Errorf("split folds = %v, want %v", got, want) + } + }) } } diff --git a/diff/fuzz_test.go b/diff/fuzz_test.go index 0ab006c..607b9b0 100644 --- a/diff/fuzz_test.go +++ b/diff/fuzz_test.go @@ -66,7 +66,7 @@ func fuzzOptions(layout, width, offset uint8, colored bool) diff.Options { func checkLines(t *testing.T, d *diff.Diff, o diff.Options) { t.Helper() if len(d.Lines) != len(d.Rows) { - t.Fatalf("got %d lines for %d rows, want one line for each row", + t.Fatalf("%d lines for %d rows, want one line for each row", len(d.Lines), len(d.Rows)) } for i, l := range d.Lines { @@ -259,7 +259,8 @@ func FuzzComments(f *testing.F) { c := cs.Add(commentOn(path, diff.SideNew, before, s+1, e+1)) c.Text = text if c.Start != s+1 || c.End != e+1 { - t.Errorf("commentOn lines %d-%d: %+v", s+1, e+1, c) + t.Errorf("commentOn lines %d-%d = %+v, want lines %d-%d", + s+1, e+1, c, s+1, e+1) } cs.Add(comment(path, diff.SideOld, before, after, text)) r := cs.Review(text) diff --git a/internal/clipboard/clipboard_test.go b/internal/clipboard/clipboard_test.go index dc47956..9ffa030 100644 --- a/internal/clipboard/clipboard_test.go +++ b/internal/clipboard/clipboard_test.go @@ -41,7 +41,8 @@ func TestWrite(t *testing.T) { t.Fatal(err) } if string(got) != tt.want { - t.Errorf("%s got %q, want %q", tt.name, got, tt.want) + t.Errorf("Write(hi) with %s: output = %q, want %q", + tt.name, got, tt.want) } }) } diff --git a/internal/editor/editor_test.go b/internal/editor/editor_test.go index 8689736..b2dcdf4 100644 --- a/internal/editor/editor_test.go +++ b/internal/editor/editor_test.go @@ -42,7 +42,7 @@ func TestCommands(t *testing.T) { for _, tt := range tests { got, err := editor.Resolve(tt.template, "", tt.editor, "", abs, 12) if err != nil || got.Script != tt.script || got.Window != tt.window { - t.Errorf("editor %q%q = %+v, %v; want script %q, window %v", + t.Errorf("editor %q%q = %+v, %v, want script %q, window %v", tt.template, tt.editor, got, err, tt.script, tt.window) } } @@ -90,7 +90,7 @@ func TestResolveOrder(t *testing.T) { for _, tt := range tests { got, err := editor.Resolve(tt.template, tt.visual, tt.env, tt.git, "/a", 1) if err != nil || got.Program != tt.want { - t.Errorf("Resolve(%q, %q, %q, %q) = %q, %v; want %q", + t.Errorf("Resolve(%q, %q, %q, %q) = %q, %v, want %q", tt.template, tt.visual, tt.env, tt.git, got.Program, err, tt.want) } } diff --git a/internal/search/search_test.go b/internal/search/search_test.go index d7b2ad1..21f53b9 100644 --- a/internal/search/search_test.go +++ b/internal/search/search_test.go @@ -39,7 +39,7 @@ func TestFiles(t *testing.T) { t.Parallel() got, total := search.Files(tt.paths, tt.recent, tt.q, tt.limit) if !slices.Equal(got, tt.want) || total != tt.wantTotal { - t.Errorf("Files(%q, %q) = %q, %d; want %q, %d", + t.Errorf("Files(%q, %q) = %q, %d, want %q, %d", tt.q, tt.recent, got, total, tt.want, tt.wantTotal) } }) diff --git a/internal/termtext/fuzz_test.go b/internal/termtext/fuzz_test.go new file mode 100644 index 0000000..1be1f2d --- /dev/null +++ b/internal/termtext/fuzz_test.go @@ -0,0 +1,40 @@ +package termtext_test + +import ( + "strings" + "testing" + "unicode" + "unicode/utf8" + + "github.com/rednafi/rexdiff/internal/termtext" +) + +// FuzzPlain checks that Plain and Quote remove all unsafe control characters. +func FuzzPlain(f *testing.F) { + for _, s := range []string{ + "a\x00b\n", + "\tx\r\n", + "\x1b[31mred\x1b[0m\n", + "\x1b]52;c;aGVsbG8=\x07\n", + "\u009b31m\u009d0;title\u009c\n", + "\x9b31m\xff\xfe\n", + "日本語😀👨‍👩‍👧\u202e\n", + } { + f.Add(s) + } + f.Fuzz(func(t *testing.T, s string) { + p := termtext.Plain(s) + unsafe := func(r rune) bool { return r != '\t' && r != '\n' && unicode.IsControl(r) } + if strings.ContainsFunc(p, unsafe) { + t.Errorf("Plain(%q) = %q, want no control characters", s, p) + } + if pp := termtext.Plain(p); pp != p { + t.Errorf("Plain(Plain(%q)) = %q, want %q", s, pp, p) + } + q := termtext.Quote(s) + if strings.ContainsFunc(q, unicode.IsControl) || !utf8.ValidString(q) { + t.Errorf("Quote(%q) = %q, want valid UTF-8 with no control characters", + s, q) + } + }) +} diff --git a/internal/termtext/termtext_test.go b/internal/termtext/termtext_test.go index f37a192..58b2e4e 100644 --- a/internal/termtext/termtext_test.go +++ b/internal/termtext/termtext_test.go @@ -1,10 +1,7 @@ package termtext_test import ( - "strings" "testing" - "unicode" - "unicode/utf8" "github.com/rednafi/rexdiff/internal/termtext" ) @@ -25,33 +22,3 @@ func TestQuote(t *testing.T) { } } } - -// FuzzPlain checks that Plain and Quote remove all unsafe control characters. -func FuzzPlain(f *testing.F) { - for _, s := range []string{ - "a\x00b\n", - "\tx\r\n", - "\x1b[31mred\x1b[0m\n", - "\x1b]52;c;aGVsbG8=\x07\n", - "\u009b31m\u009d0;title\u009c\n", - "\x9b31m\xff\xfe\n", - "日本語😀👨‍👩‍👧\u202e\n", - } { - f.Add(s) - } - f.Fuzz(func(t *testing.T, s string) { - p := termtext.Plain(s) - unsafe := func(r rune) bool { return r != '\t' && r != '\n' && unicode.IsControl(r) } - if strings.ContainsFunc(p, unsafe) { - t.Errorf("Plain(%q) = %q, want no control characters", s, p) - } - if pp := termtext.Plain(p); pp != p { - t.Errorf("Plain(Plain(%q)) = %q, want %q", s, pp, p) - } - q := termtext.Quote(s) - if strings.ContainsFunc(q, unicode.IsControl) || !utf8.ValidString(q) { - t.Errorf("Quote(%q) = %q, want valid UTF-8 with no control characters", - s, q) - } - }) -} diff --git a/internal/turn/turn_test.go b/internal/turn/turn_test.go index 91867ca..ec090b8 100644 --- a/internal/turn/turn_test.go +++ b/internal/turn/turn_test.go @@ -122,7 +122,7 @@ func TestTracker(t *testing.T) { } started, ended := tr.Observe(st.states...) if started != st.started || ended != st.ended { - t.Errorf("step %d (%q): started %v, ended %v; want %v, %v", + t.Errorf("step %d (%q): started %v, ended %v, want %v, %v", i, st.states, started, ended, st.started, st.ended) } } diff --git a/rex/rex_test.go b/rex/rex_test.go index 668f305..b7fa43c 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -105,7 +105,7 @@ func TestAgents(t *testing.T) { }, } if !slices.Equal(agents, want) { - t.Fatalf("Agents got:\n%+v\nwant:\n%+v", agents, want) + t.Errorf("Agents = \n%+v\nwant:\n%+v", agents, want) } } @@ -148,7 +148,7 @@ func TestCommands(t *testing.T) { `api call -s S session.set_block_label {"block_id":"block:self","label":"rex\"diff"}`, } { if !strings.Contains(calls, want) { - t.Errorf("calls got:\n%s\nwant a call %s", calls, want) + t.Errorf("calls = \n%s\nwant a call %s", calls, want) } } } @@ -182,10 +182,7 @@ func TestWatch(t *testing.T) { `{"type":"session_event","payload":{"event":{"type":"block_closed",` + `"payload":{"block_id":"block:pi"}}}}`, }, "\n") - path := filepath.Join(dir, "events") - if err := os.WriteFile(path, []byte(events+"\n"), 0o644); err != nil { - t.Fatal(err) - } + testgit.WriteFile(t, dir, "events", events+"\n") at := time.Date(2026, 10, 25, 21, 11, 3, 5e8, time.UTC) once := []rex.Event{ @@ -207,7 +204,7 @@ func TestWatch(t *testing.T) { t.Errorf("Watch = %v, want context.Canceled", err) } if !slices.Equal(got, want) { - t.Errorf("events got:\n%+v\nwant:\n%+v", got, want) + t.Errorf("events = \n%+v\nwant:\n%+v", got, want) } } @@ -253,7 +250,7 @@ func TestErrorKeepsCause(t *testing.T) { err := c.Focus(t.Context(), "block:pi") ee, ok := errors.AsType[*exec.ExitError](err) if err == nil || err.Error() != "no Rex server" || !ok || ee.ExitCode() != 3 { - t.Errorf("Focus error = %v, exit error %v; want %q wrapping exit 3", + t.Errorf("Focus error = %v, exit error %v, want %q wrapping exit 3", err, ok, "no Rex server") } } diff --git a/test/fake_test.go b/test/fake_test.go index bf61a06..a372464 100644 --- a/test/fake_test.go +++ b/test/fake_test.go @@ -119,7 +119,7 @@ func (r *fakeRex) addAgent(t *testing.T, block, label, app string) { // write writes content to the file name of the fake. func (r *fakeRex) write(t *testing.T, name, content string) { t.Helper() - if err := os.WriteFile(filepath.Join(r.dir, name), []byte(content+"\n"), 0o600); err != nil { + if err := os.WriteFile(filepath.Join(r.dir, name), []byte(content+"\n"), 0o644); err != nil { t.Fatal(err) } } @@ -143,7 +143,7 @@ func (r *fakeRex) setState(t *testing.T, state string) { "{{AT}}", time.Now().Format(time.RFC3339Nano), } r.write(t, "status.block:pi", recorded(t, "status.json", values...)) - f, err := os.OpenFile(filepath.Join(r.dir, "events"), os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0o600) + f, err := os.OpenFile(filepath.Join(r.dir, "events"), os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0o644) if err != nil { t.Fatal(err) } diff --git a/test/main_test.go b/test/main_test.go new file mode 100644 index 0000000..53c768b --- /dev/null +++ b/test/main_test.go @@ -0,0 +1,23 @@ +package test + +import ( + "os" + "testing" + + "github.com/rednafi/rexdiff/internal/testgit" +) + +var ( + home string // the HOME of the user, for the real Rex + buildDir string // the directory of the binaries that the tests build +) + +func TestMain(m *testing.M) { + home = os.Getenv("HOME") + var err error + if buildDir, err = os.MkdirTemp("", "rexdiff-test"); err != nil { + panic(err) + } + defer func() { _ = os.RemoveAll(buildDir) }() + testgit.Main(m) +} diff --git a/test/rexdiff_test.go b/test/rexdiff_test.go index 75f087c..455d9dc 100644 --- a/test/rexdiff_test.go +++ b/test/rexdiff_test.go @@ -1,7 +1,8 @@ // Package test runs the rexdiff program as a user does. Each test starts // the binary in a terminal, types keys, clicks, and reads the screen. A // fake rex stands in for Rex, and the other tools are fakes on PATH. git -// is real. +// is real. The tests run one at a time, because each runs a program in a +// terminal. package test import ( @@ -23,25 +24,8 @@ import ( "github.com/charmbracelet/x/vt" "github.com/creack/pty" - - "github.com/rednafi/rexdiff/internal/testgit" -) - -var ( - home string // the HOME of the user, for the real Rex - buildDir string // the directory of the binaries that the tests build ) -func TestMain(m *testing.M) { - home = os.Getenv("HOME") - var err error - if buildDir, err = os.MkdirTemp("", "rexdiff-test"); err != nil { - panic(err) - } - defer func() { _ = os.RemoveAll(buildDir) }() - testgit.Main(m) -} - // buildDev builds rexdiff once. var buildDev = sync.OnceValues(func() (string, error) { return build(filepath.Join(buildDir, "dev"), "") diff --git a/test/upgrade_test.go b/test/upgrade_test.go index 340fefb..78b83ea 100644 --- a/test/upgrade_test.go +++ b/test/upgrade_test.go @@ -62,7 +62,7 @@ func read(t *testing.T, path string) string { // write writes content to the file at path. func write(t *testing.T, path, content string) { t.Helper() - if err := os.WriteFile(path, []byte(content), 0o600); err != nil { + if err := os.WriteFile(path, []byte(content), 0o644); err != nil { t.Fatal(err) } } diff --git a/update/update_test.go b/update/update_test.go index 7cfd4f7..1099d76 100644 --- a/update/update_test.go +++ b/update/update_test.go @@ -17,20 +17,17 @@ import ( "strings" "testing" + "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/update" ) -// file writes content to a new file at path with mode 0755, and returns -// path. -func file(t *testing.T, path, content string) string { +// mkdir makes the directory dir and its parents, and returns dir. +func mkdir(t *testing.T, dir string) string { t.Helper() - if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { + if err := os.MkdirAll(dir, 0o755); err != nil { t.Fatal(err) } - if err := os.WriteFile(path, []byte(content), 0o755); err != nil { - t.Fatal(err) - } - return path + return dir } // detect returns the Updater of the rexdiff at bin, with the latest @@ -97,7 +94,7 @@ func TestLatest(t *testing.T) { name, have, body string // a body of "" is a 404 tag string // the tag of the release, or "" newer bool - err string // a part of the error, or "" + errText string // a part of the error, or "" }{ {"minor", "0.1.0", release("v0.2.0"), "v0.2.0", true, ""}, {"patch", "v0.1.0", release("v0.1.1"), "v0.1.1", true, ""}, @@ -126,14 +123,14 @@ func TestLatest(t *testing.T) { t.Run(tt.name, func(t *testing.T) { u := detect(t, fmt.Sprint(base, "/", i), "/bin/rexdiff", tt.have) r, newer, err := u.Latest(t.Context()) - if tt.err != "" { - if err == nil || !strings.Contains(err.Error(), tt.err) { - t.Errorf("Latest: %v, want an error with %q", err, tt.err) + if tt.errText != "" { + if err == nil || !strings.Contains(err.Error(), tt.errText) { + t.Errorf("Latest: %v, want an error with %q", err, tt.errText) } return } if err != nil || r.Tag != tt.tag || newer != tt.newer { - t.Errorf("Latest = %q, %v, %v; want %q, %v, nil", + t.Errorf("Latest = %q, %v, %v, want %q, %v, nil", r.Tag, newer, err, tt.tag, tt.newer) } }) @@ -162,7 +159,7 @@ func TestInstallBrew(t *testing.T) { version string // the version of the new rexdiff cancel bool // cancel the context before Install calls string // the log of brew, or "" for no check - err string // the error, or "" for none + errText string // a part of the error, or "" for none }{ {"beside the Caskroom", true, logBrew, "v0.2.0", false, calls, ""}, {"in PATH", false, logBrew, "v0.2.0", false, calls, ""}, @@ -189,17 +186,14 @@ func TestInstallBrew(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { prefix := t.TempDir() - cask := filepath.Join(prefix, "Caskroom", "rexdiff", "0.2.0", "rexdiff") - file(t, cask, "#!/bin/sh\necho "+tt.version+"\n") + caskDir := mkdir(t, filepath.Join(prefix, "Caskroom", "rexdiff", "0.2.0")) + cask := testgit.Script(t, caskDir, "rexdiff", "echo "+tt.version+"\n") path := filepath.Join(prefix, "path") if tt.beside { path = filepath.Join(prefix, "bin") } - file(t, filepath.Join(path, "brew"), "#!/bin/sh\n"+tt.brew) - link := filepath.Join(prefix, "bin", "rexdiff") - if err := os.MkdirAll(filepath.Dir(link), 0o755); err != nil { - t.Fatal(err) - } + testgit.Script(t, mkdir(t, path), "brew", tt.brew) + link := filepath.Join(mkdir(t, filepath.Join(prefix, "bin")), "rexdiff") if err := os.Symlink(cask, link); err != nil { t.Fatal(err) } @@ -212,15 +206,19 @@ func TestInstallBrew(t *testing.T) { } u := detect(t, "http://127.0.0.1:1/latest", link, "0.1.0") err := u.Install(ctx, update.Release{Tag: "v0.2.0"}) - if tt.err == "" && err != nil || tt.err != "" && (err == nil || err.Error() != tt.err) { - t.Errorf("Install = %v, want %q", err, tt.err) + failed := err != nil + if tt.errText != "" { + failed = err == nil || !strings.Contains(err.Error(), tt.errText) + } + if failed { + t.Errorf("Install = %v, want an error with %q", err, tt.errText) } if tt.calls == "" { return } got, _ := os.ReadFile(filepath.Join(prefix, "calls")) if string(got) != tt.calls { - t.Errorf("brew calls got:\n%s\nwant:\n%s", got, tt.calls) + t.Errorf("brew calls = \n%s\nwant:\n%s", got, tt.calls) } }) } @@ -234,6 +232,7 @@ func archive(t *testing.T, content string) []byte { gz := gzip.NewWriter(&b) tw := tar.NewWriter(gz) add := func(name, content string, mode int64) { + t.Helper() hdr := &tar.Header{Name: name, Mode: mode, Size: int64(len(content)), Typeflag: tar.TypeReg} if err := tw.WriteHeader(hdr); err != nil { t.Fatal(err) @@ -286,7 +285,7 @@ func TestDownload(t *testing.T) { tests := []struct { name, dir string - err string // a part of the error, or "" for none + errText string // a part of the error, or "" for none }{ {"good", "good", ""}, {"tampered", "bad", "does not match its checksum"}, @@ -300,7 +299,9 @@ func TestDownload(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { dir := t.TempDir() - target := file(t, filepath.Join(dir, "real", "rexdiff"), "old binary") + const oldBin = "echo v0.1.0\n" + realDir := mkdir(t, filepath.Join(dir, "real")) + target := testgit.Script(t, realDir, "rexdiff", oldBin) link := filepath.Join(dir, "rexdiff") if err := os.Symlink(target, link); err != nil { t.Fatal(err) @@ -308,14 +309,14 @@ func TestDownload(t *testing.T) { u := detect(t, base+"/"+tt.dir+"/latest", link, "0.1.0") r, newer, err := u.Latest(t.Context()) if err != nil || !newer { - t.Fatalf("Latest = %+v, %v, %v; want a newer release", r, newer, err) + t.Fatalf("Latest = %+v, %v, %v, want a newer release", r, newer, err) } err = u.Install(t.Context(), r) want := newBin - if tt.err != "" { - want = "old binary" - if err == nil || !strings.Contains(err.Error(), tt.err) { - t.Errorf("Install: %v, want an error with %q", err, tt.err) + if tt.errText != "" { + want = "#!/bin/sh\n" + oldBin + if err == nil || !strings.Contains(err.Error(), tt.errText) { + t.Errorf("Install: %v, want an error with %q", err, tt.errText) } } else if err != nil { t.Fatal(err) @@ -327,7 +328,7 @@ func TestDownload(t *testing.T) { t.Errorf("after Install: %s is not a symlink, want a symlink", link) } if info, err := os.Stat(target); err != nil || info.Mode().Perm() != 0o755 { - t.Errorf("Stat = %v, %v; want mode 0755", info, err) + t.Errorf("Stat = %v, %v, want mode 0755", info, err) } if entries, _ := os.ReadDir(filepath.Dir(target)); len(entries) != 1 { t.Errorf("the directory has %d files, want only rexdiff", len(entries)) diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index 8244f98..2dcfa52 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -40,10 +40,10 @@ func TestRevIsNotAnOption(t *testing.T) { t.Errorf("Tree(%q) = %s, want an error", rev, id) } if id, err := r.MergeBaseTree(ctx, rev); err == nil { - t.Errorf("MergeBase(%q) = %s, want an error", rev, id) + t.Errorf("MergeBaseTree(%q) = %s, want an error", rev, id) } if id, err := r.ParentTree(ctx, rev); err == nil { - t.Errorf("Parent(%q) = %s, want an error", rev, id) + t.Errorf("ParentTree(%q) = %s, want an error", rev, id) } if _, err := r.Diff(ctx, rev, head(t, r)); err == nil { t.Errorf("Diff(%q, HEAD): no error, want an error", rev) @@ -84,7 +84,7 @@ func TestHostilePaths(t *testing.T) { got[f.Path] = f.New } if !reflect.DeepEqual(got, want) { - t.Errorf("Diff got:\n%q\nwant:\n%q", got, want) + t.Errorf("Diff = \n%q\nwant:\n%q", got, want) } es, err := r.Files(ctx) @@ -97,11 +97,11 @@ func TestHostilePaths(t *testing.T) { t.Errorf("Files has no %q, want it", p) } if got, err := r.ReadFile(p); got != s || err != nil { - t.Errorf("ReadFile(%q) = %q, %v; want %q", p, got, err, s) + t.Errorf("ReadFile(%q) = %q, %v, want %q", p, got, err, s) } q := strings.TrimSpace(s) if ms, _, err := r.Grep(ctx, q, 10, time.Minute); err != nil || len(ms) != 1 || ms[0].Path != p { - t.Errorf("Grep(%q) = %+v, %v; want one match in %q", q, ms, err, p) + t.Errorf("Grep(%q) = %+v, %v, want one match in %q", q, ms, err, p) } } } @@ -154,7 +154,7 @@ func TestDiffFileKinds(t *testing.T) { {Path: "type", Status: vcs.StatusModified, Old: "a file\n", New: "a.txt"}, } if got := changes(t, r, head(t, r), snapshot(t, r)); !reflect.DeepEqual(got, want) { - t.Errorf("Diff got:\n%+v\nwant:\n%+v", got, want) + t.Errorf("Diff = \n%+v\nwant:\n%+v", got, want) } } @@ -164,10 +164,10 @@ func TestSnapshotNestedRepo(t *testing.T) { t.Parallel() r, dir := newRepo(t) commitAll(t, dir) - testgit.Git(t, dir, "init", "-q", "empty") + testgit.NewRepo(t, filepath.Join(dir, "empty")) testgit.WriteFile(t, dir, "empty/x", "x\n") testgit.WriteFile(t, dir, "full/y", "y\n") - testgit.Git(t, filepath.Join(dir, "full"), "init", "-q") + testgit.NewRepo(t, filepath.Join(dir, "full")) commitAll(t, filepath.Join(dir, "full")) testgit.WriteFile(t, dir, "z.txt", "z\n") @@ -210,7 +210,7 @@ func TestReadFileStaysInRoot(t *testing.T) { t.Fatal(err) } if s, err := r.ReadFile("to-a"); s != "one\ntwo\n" || err != nil { - t.Errorf("ReadFile(to-a) = %q, %v; want the content of a.txt", s, err) + t.Errorf("ReadFile(to-a) = %q, %v, want the content of a.txt", s, err) } } @@ -232,11 +232,11 @@ func TestGitWorktree(t *testing.T) { t.Fatal(err) } if got := uncommitted(t, r); got != "Ma.txt Astaged.txt" { - t.Errorf("Diff(Head, Snapshot) = %s, want Ma.txt Astaged.txt", got) + t.Errorf("Diff(HEAD, Snapshot) = %s, want Ma.txt Astaged.txt", got) } st := testgit.Git(t, wt, "status", "--porcelain") if st != " M a.txt\nA staged.txt\n" { - t.Errorf("git status in the worktree got:\n%s\nwant:\n%s", + t.Errorf("git status in the worktree = \n%s\nwant:\n%s", st, " M a.txt\nA staged.txt\n") } } @@ -248,11 +248,11 @@ func TestDetachedHead(t *testing.T) { ctx := t.Context() testgit.Git(t, dir, "checkout", "-q", "--detach", "main") if got := uncommitted(t, r); got != "A.gitignore Ma.txt Anew.txt" { - t.Errorf("Diff(Head, Snapshot) = %s, want A.gitignore Ma.txt Anew.txt", + t.Errorf("Diff(HEAD, Snapshot) = %s, want A.gitignore Ma.txt Anew.txt", got) } if cs, err := r.Commits(ctx, ""); err != nil || len(cs) != 1 || cs[0].Subject != "init" { - t.Errorf("Commits = %+v, %v; want init", cs, err) + t.Errorf("Commits = %+v, %v, want init", cs, err) } } @@ -327,10 +327,10 @@ func TestCommitsHostileSubject(t *testing.T) { func TestPullRequestBadJSON(t *testing.T) { tests := []struct { name, out string - want error // nil for an error of any type + wantErr error // nil for an error of any type ok bool // true if PullRequest must not fail }{ - {name: "empty object", out: `{}`, want: vcs.ErrNoPullRequest}, + {name: "empty object", out: `{}`, wantErr: vcs.ErrNoPullRequest}, {name: "not JSON", out: `warning: no pull request`}, {name: "huge number", out: `{"title": "T", "number": 1e30}`}, { @@ -349,11 +349,11 @@ func TestPullRequestBadJSON(t *testing.T) { pr, err := r.PullRequest(t.Context(), vcs.Hosts{}) switch { case tt.ok && (err != nil || pr.Title != "T"): - t.Errorf("PullRequest = %+v, %v; want the title T", pr, err) + t.Errorf("PullRequest = %+v, %v, want the title T", pr, err) case !tt.ok && err == nil: t.Errorf("PullRequest = %+v, want an error", pr) - case tt.want != nil && !errors.Is(err, tt.want): - t.Errorf("PullRequest: err = %v, want %v", err, tt.want) + case tt.wantErr != nil && !errors.Is(err, tt.wantErr): + t.Errorf("PullRequest: err = %v, want %v", err, tt.wantErr) } }) } @@ -379,13 +379,13 @@ exec /bin/sleep 10 } if ms, more, err := grep(5*time.Second, 50*time.Millisecond); err != nil || !more || len(ms) != 1 || ms[0].Text != "hit" { - t.Errorf("Grep past the budget = %+v, %v, %v; want the hit, more, no error", ms, more, err) + t.Errorf("Grep past the budget = %+v, %v, %v, want the hit, more, no error", ms, more, err) } t.Setenv("SLOW", "1") if ms, more, err := grep(5*time.Second, time.Millisecond); err != nil || !more || len(ms) != 1 { - t.Errorf("Grep with no line at the budget = %+v, %v, %v; want the first hit, more", ms, more, err) + t.Errorf("Grep with no line at the budget = %+v, %v, %v, want the first hit, more", ms, more, err) } if ms, more, err := grep(100*time.Millisecond, time.Millisecond); err != nil || !more || len(ms) != 0 { - t.Errorf("Grep past the deadline = %+v, %v, %v; want none, more, no error", ms, more, err) + t.Errorf("Grep past the deadline = %+v, %v, %v, want none, more, no error", ms, more, err) } } diff --git a/vcs/pr_test.go b/vcs/pr_test.go index b51dd90..f47f25c 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -150,7 +150,7 @@ func TestPullRequest(t *testing.T) { t.Fatalf("PullRequest = %v, want no error", err) } if !reflect.DeepEqual(pr, tt.want) { - t.Errorf("PullRequest got:\n%+v\nwant:\n%+v", pr, tt.want) + t.Errorf("PullRequest = \n%+v\nwant:\n%+v", pr, tt.want) } }) } @@ -168,28 +168,28 @@ func TestPullRequestErrors(t *testing.T) { tests := []struct { remote, branch string hosts vcs.Hosts - want error // if not nil, err must wrap it - msg string // if not empty, the text of err + wantErr error // if not nil, err must wrap it + errText string // if not empty, a part of the text of err }{ // The host selects the forge, not a name in the path. - {remote: "https://example.com/github.com/r.git", branch: "feat", msg: unsupported}, - {remote: "git@example.com:gitlab/r.git", branch: "feat", msg: unsupported}, - {remote: "https://git.corp.example/r", branch: "feat", hosts: corp, msg: unsupported}, - {remote: "git@git.corp:o/r.git", branch: "feat", hosts: corp, msg: "glab isn't installed"}, - {remote: "ssh://git@GitHub.com:22/o/r", branch: "feat", msg: "gh isn't installed"}, + {remote: "https://example.com/github.com/r.git", branch: "feat", errText: unsupported}, + {remote: "git@example.com:gitlab/r.git", branch: "feat", errText: unsupported}, + {remote: "https://git.corp.example/r", branch: "feat", hosts: corp, errText: unsupported}, + {remote: "git@git.corp:o/r.git", branch: "feat", hosts: corp, errText: "glab isn't installed"}, + {remote: "ssh://git@GitHub.com:22/o/r", branch: "feat", errText: "gh isn't installed"}, { - remote: "https://u@org.visualstudio.com/p/_git/r", - branch: "other", - msg: "unexpected call: " + azArgs("other"), + remote: "https://u@org.visualstudio.com/p/_git/r", + branch: "other", + errText: "unexpected call: " + azArgs("other"), }, - {remote: "", branch: "feat", msg: "no git remote"}, - {remote: azure, branch: "none", want: vcs.ErrNoPullRequest}, + {remote: "", branch: "feat", errText: "no git remote"}, + {remote: azure, branch: "none", wantErr: vcs.ErrNoPullRequest}, { - remote: azure, - branch: "other", - msg: "unexpected call: " + azArgs("other"), + remote: azure, + branch: "other", + errText: "unexpected call: " + azArgs("other"), }, - {remote: "https://github.com/o/r", branch: "feat", msg: "gh isn't installed"}, + {remote: "https://github.com/o/r", branch: "feat", errText: "gh isn't installed"}, } for _, tt := range tests { // Two cases have the same remote, so the name has the branch. @@ -206,10 +206,10 @@ func TestPullRequestErrors(t *testing.T) { switch { case err == nil: t.Error("PullRequest: no error, want an error") - case tt.want != nil && !errors.Is(err, tt.want): - t.Errorf("PullRequest: err = %v, want %v", err, tt.want) - case tt.msg != "" && err.Error() != tt.msg: - t.Errorf("PullRequest: err = %q, want %q", err, tt.msg) + case tt.wantErr != nil && !errors.Is(err, tt.wantErr): + t.Errorf("PullRequest: err = %v, want %v", err, tt.wantErr) + case tt.errText != "" && !strings.Contains(err.Error(), tt.errText): + t.Errorf("PullRequest: err = %q, want %q in it", err, tt.errText) } }) } diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 301f593..494c5d5 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -23,7 +23,10 @@ import ( var testRepo = testgit.NewFixture(func(tb testing.TB, dir string) { tb.Helper() testgit.NewRepo(tb, dir) - run := func(args ...string) { testgit.Git(tb, dir, args...) } + run := func(args ...string) { + tb.Helper() + testgit.Git(tb, dir, args...) + } testgit.WriteFile(tb, dir, "a.txt", "one\n") run("add", ".") run("commit", "-qm", "init") @@ -135,7 +138,7 @@ func TestScopes(t *testing.T) { t.Errorf("uncommitted: %s, want A.gitignore Ma.txt Anew.txt", got) } if unc[1].Old != "one\n" || unc[1].New != "one\ntwo\n" { - t.Errorf("a.txt: Old %q, New %q; want %q, %q", + t.Errorf("a.txt: Old %q, New %q, want %q, %q", unc[1].Old, unc[1].New, "one\n", "one\ntwo\n") } @@ -148,7 +151,7 @@ func TestScopes(t *testing.T) { } _, err = r.MergeBaseTree(ctx, "nosuchbranch") if _, ok := errors.AsType[*exec.ExitError](err); !ok { - t.Errorf("MergeBase(nosuchbranch) = %v, want the error of git", err) + t.Errorf("MergeBaseTree(nosuchbranch) = %v, want the error of git", err) } // In a turn, rexdiff takes a snapshot and then the agent edits a file. @@ -182,8 +185,8 @@ func TestScopes(t *testing.T) { } } -// TestMissingCommit checks that Head and Parent fail when a commit object -// is missing. +// TestMissingCommit checks that HeadTree and ParentTree fail when a commit +// object is missing. func TestMissingCommit(t *testing.T) { t.Parallel() // The empty tree is not a correct result. It shows every file as added. @@ -202,14 +205,14 @@ func TestMissingCommit(t *testing.T) { } remove(cs[1].SHA) if id, err := r.ParentTree(ctx, "HEAD"); err == nil { - t.Errorf("Parent(HEAD) = %s with no parent commit, want an error", id) + t.Errorf("ParentTree(HEAD) = %s with no parent commit, want an error", id) } if id, err := r.ParentTree(ctx, "nope"); err == nil { - t.Errorf("Parent(nope) = %s, want an error", id) + t.Errorf("ParentTree(nope) = %s, want an error", id) } remove(cs[0].SHA) if id, err := r.HeadTree(ctx); err == nil { - t.Errorf("Head = %s with no HEAD commit, want an error", id) + t.Errorf("HeadTree = %s with no HEAD commit, want an error", id) } } @@ -249,12 +252,12 @@ func TestDiffSkipsBinaryAndBigFiles(t *testing.T) { } for _, p := range []string{"bytes", "lines", "big", "huge"} { if f := got[p]; !f.TooBig || f.Old != "" || f.New != "" { - t.Errorf("%s: TooBig = %v, Old has %d bytes, New has %d bytes; want true, 0, 0", + t.Errorf("%s: TooBig = %v, Old has %d bytes, New has %d bytes, want true, 0, 0", p, f.TooBig, len(f.Old), len(f.New)) } } if f := got["limit"]; f.TooBig || f.New != "z"+limit { - t.Errorf("limit: TooBig = %v, New has %d bytes; want false, %d", + t.Errorf("limit: TooBig = %v, New has %d bytes, want false, %d", f.TooBig, len(f.New), len(limit)+1) } if f := got["small"]; f.New != "after\n" { @@ -279,7 +282,10 @@ func TestFilesInConflict(t *testing.T) { t.Parallel() dir := t.TempDir() testgit.NewRepo(t, dir) - run := func(args ...string) { testgit.Git(t, dir, args...) } + run := func(args ...string) { + t.Helper() + testgit.Git(t, dir, args...) + } testgit.WriteFile(t, dir, "f.txt", "base\n") run("add", ".") run("commit", "-qm", "base") @@ -352,7 +358,7 @@ func TestWorktree(t *testing.T) { t.Errorf("ReadFile(a.txt) = %q, %v, want %q, nil", s, err, "one\ntwo\n") } - contains := []struct { + tests := []struct { path string want bool }{ @@ -360,7 +366,7 @@ func TestWorktree(t *testing.T) { {filepath.Dir(dir), false}, {dir + "x", false}, // a sibling with the same prefix } - for _, tt := range contains { + for _, tt := range tests { if got := r.Contains(tt.path); got != tt.want { t.Errorf("Contains(%q) = %v, want %v", tt.path, got, tt.want) } @@ -451,7 +457,7 @@ func TestEditor(t *testing.T) { func TestDiffRenameAndSubmodule(t *testing.T) { t.Parallel() dir := t.TempDir() - testgit.Git(t, dir, "init", "-q") + testgit.NewRepo(t, dir) testgit.WriteFile(t, dir, "old.txt", "one\ntwo\nthree\n") const ( a = "1111111111111111111111111111111111111111" @@ -490,7 +496,7 @@ func TestDiffRenameAndSubmodule(t *testing.T) { }, } if !reflect.DeepEqual(got, want) { - t.Errorf("Diff got:\n%+v\nwant:\n%+v", got, want) + t.Errorf("Diff = \n%+v\nwant:\n%+v", got, want) } } @@ -502,15 +508,15 @@ func TestOpenOutsideARepo(t *testing.T) { } } -// TestNewRepo checks Open, Root, Head, and Snapshot in a repository with -// no commit and no index. The path of a root can have a newline. +// TestNewRepo checks Open, Root, HeadTree, and Snapshot in a repository +// with no commit and no index. The path of a root can have a newline. func TestNewRepo(t *testing.T) { t.Parallel() for _, name := range []string{"repo", "a\nb"} { t.Run(name, func(t *testing.T) { t.Parallel() dir := filepath.Join(t.TempDir(), name) - testgit.Git(t, filepath.Dir(dir), "init", "-q", dir) + testgit.NewRepo(t, dir) testgit.WriteFile(t, dir, "a.txt", "one\n") r, err := vcs.Open(t.Context(), dir) if err != nil { @@ -520,7 +526,7 @@ func TestNewRepo(t *testing.T) { t.Errorf("Root = %q, want %q", r.Root(), want) } if got := uncommitted(t, r); got != "Aa.txt" { - t.Errorf("Diff(Head, Snapshot) = %s, want Aa.txt", got) + t.Errorf("Diff(HEAD, Snapshot) = %s, want Aa.txt", got) } }) } @@ -574,13 +580,16 @@ func TestSnapshotRacyEdit(t *testing.T) { } } -// TestCommitsLikeHerdr checks the commits of the commit picker. They are -// the first-parent commits after since, else the last 50. -func TestCommitsLikeHerdr(t *testing.T) { +// TestCommitsLikeHerdrReviewr checks the commits of the commit picker. +// They are the first-parent commits after since, else the last 50. +func TestCommitsLikeHerdrReviewr(t *testing.T) { t.Parallel() r, dir := newRepo(t) ctx := t.Context() - run := func(args ...string) { testgit.Git(t, dir, args...) } + run := func(args ...string) { + t.Helper() + testgit.Git(t, dir, args...) + } run("checkout", "-qb", "side", "main") run("commit", "-q", "--allow-empty", "-m", "side") run("checkout", "-q", "feat") @@ -611,17 +620,17 @@ func TestCommitsLikeHerdr(t *testing.T) { cs, err = r.Commits(ctx, "") if err != nil || len(cs) != vcs.LastCommits || cs[0].Subject != "c59" { - t.Errorf("Commits(\"\") = %d commits, %v; want the last %d", len(cs), err, vcs.LastCommits) + t.Errorf("Commits(\"\") = %d commits, %v, want the last %d", len(cs), err, vcs.LastCommits) } empty := t.TempDir() - testgit.Git(t, empty, "init", "-q") + testgit.NewRepo(t, empty) er, err := vcs.Open(ctx, empty) if err != nil { t.Fatal(err) } if cs, err := er.Commits(ctx, ""); err != nil || len(cs) != 0 { - t.Errorf("Commits with no commit = %v, %v; want none, no error", cs, err) + t.Errorf("Commits with no commit = %v, %v, want none, no error", cs, err) } } @@ -645,7 +654,7 @@ func TestGrepLimit(t *testing.T) { for _, tt := range tests { ms, more, err := r.Grep(ctx, "hit", tt.limit, time.Minute) if err != nil || len(ms) != tt.wantN || more != tt.wantMore { - t.Errorf("Grep(hit, %d) = %d matches, more %t, %v; want %d, %t, nil", + t.Errorf("Grep(hit, %d) = %d matches, more %t, %v, want %d, %t, nil", tt.limit, len(ms), more, err, tt.wantN, tt.wantMore) } } @@ -655,14 +664,14 @@ func TestGrepLimit(t *testing.T) { } } -// TestGrepCanceled checks that Grep returns the error of a canceled +// TestGrepCancelled checks that Grep returns the error of a cancelled // context. -func TestGrepCanceled(t *testing.T) { +func TestGrepCancelled(t *testing.T) { t.Parallel() r, _ := newRepo(t) ctx, cancel := context.WithCancel(t.Context()) cancel() if _, _, err := r.Grep(ctx, "one", 10, time.Minute); !errors.Is(err, context.Canceled) { - t.Errorf("Grep with a canceled context = %v, want %v", err, context.Canceled) + t.Errorf("Grep with a cancelled context = %v, want %v", err, context.Canceled) } } diff --git a/vcs/watch_test.go b/vcs/watch_test.go index d41a108..7709096 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -209,7 +209,7 @@ func TestWatcherNested(t *testing.T) { t.Parallel() r, dir := newRepo(t) other := t.TempDir() - testgit.Git(t, other, "init", "-q") + testgit.NewRepo(t, other) testgit.WriteFile(t, other, "f", "1\n") testgit.Git(t, other, "add", ".") testgit.Git(t, other, "commit", "-qm", "1") @@ -239,7 +239,7 @@ func TestWatcherRunsNoGit(t *testing.T) { for range 3 { ch, err := w.Changed(t.Context()) if err != nil || ch != (vcs.Change{}) { - t.Fatalf("idle call: %+v, %v; want none, nil", ch, err) + t.Fatalf("idle call: %+v, %v, want none, nil", ch, err) } } } From 601c3afabfbb159806ffb4b9050a47ae0e8c7b2f Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 01:16:12 +0100 Subject: [PATCH 072/119] refactor: one style for errors, names, messages, and files Errors say 'X is not installed' and name their tool. Flashes say 'X failed:'. Names follow the actions of the keybindings, and the tabs use change* and all*. Key hints come from the live bindings. The pickers move out of overlay.go, and tui finds fuzzy matches through internal/search. REX_AGENT_BLOCK is now REXDIFF_AGENT. fix: a slow copy on a double click no longer breaks a triple click. The window of the next click starts when the work of a click ends. --- cmd/rexdiff/install.go | 33 ++- cmd/rexdiff/main.go | 28 +- diff/comment.go | 8 +- diff/diff.go | 6 +- diff/theme.go | 2 +- internal/clipboard/clipboard.go | 2 +- internal/editor/editor.go | 11 +- internal/editor/editor_test.go | 2 +- internal/search/match.go | 2 + internal/search/search.go | 29 ++- internal/search/search_test.go | 15 +- internal/testgit/testgit.go | 4 +- internal/tree/tree.go | 4 + internal/tree/tree_test.go | 1 + internal/turn/turn.go | 36 +-- rex/rex.go | 77 ++++-- rex/rex_test.go | 2 +- test/changes_test.go | 4 +- test/comment_test.go | 7 +- test/fake_test.go | 2 +- test/rexdiff_test.go | 2 +- test/testdata/script/cli.txt | 3 +- test/upgrade_test.go | 2 +- tui/agentpick.go | 60 +++++ tui/basepick.go | 46 ++++ tui/comment.go | 12 +- tui/commentlist.go | 107 ++++++++ tui/commitpick.go | 123 +++++++++ tui/config.go | 38 +-- tui/editor.go | 9 +- tui/find.go | 8 +- tui/keys.go | 189 +++++++++----- tui/model.go | 218 +++++++--------- tui/mouse.go | 18 +- tui/nav.go | 98 +++---- tui/overlay.go | 446 +------------------------------- tui/palette.go | 17 ++ tui/pr.go | 45 +++- tui/release.go | 56 ++-- tui/render.go | 14 +- tui/resume.go | 71 ++--- tui/search.go | 174 +++++++++++++ tui/send.go | 75 ++++-- tui/tree.go | 18 +- tui/tui.go | 14 +- tui/view.go | 30 ++- update/update.go | 28 +- vcs/hostile_test.go | 4 +- vcs/pr.go | 52 ++-- vcs/pr_test.go | 12 +- vcs/refs.go | 12 +- vcs/repo.go | 27 +- vcs/repo_test.go | 12 +- vcs/watch.go | 16 +- vcs/watch_test.go | 2 +- 55 files changed, 1305 insertions(+), 1028 deletions(-) create mode 100644 tui/agentpick.go create mode 100644 tui/basepick.go create mode 100644 tui/commentlist.go create mode 100644 tui/commitpick.go create mode 100644 tui/search.go diff --git a/cmd/rexdiff/install.go b/cmd/rexdiff/install.go index a2279fa..5c5d95c 100644 --- a/cmd/rexdiff/install.go +++ b/cmd/rexdiff/install.go @@ -143,7 +143,7 @@ end -- The key and the placement are for Rex. rexdiff gets the other settings -- as JSON. if type(settings) ~= "table" then - error("rexdiff.lua: settings must be a table, as in: local settings = { }", 0) + error("config: settings must be a table, as in: local settings = { }", 0) end local opts = {} for k, v in pairs(settings) do opts[k] = v end @@ -168,7 +168,7 @@ rex.action{ end local open = reviewers() if #open == 0 then - if config == nil then error("rexdiff settings: " .. encode_err, 0) end + if config == nil then error("config: " .. encode_err, 0) end check(config) return open_rexdiff(ctx, placement, config) end @@ -209,21 +209,25 @@ func splitLua(path, content string) (settings, code string, err error) { } i += len(line) } - return "", "", fmt.Errorf("%s has no line %q, so rexdiff cannot tell your settings from its code. Put that line back under your settings, or move the file away and run \"rexdiff install\" again", + return "", "", fmt.Errorf("%s has no line %q, so rexdiff cannot tell your settings from its code: put that line back under your settings, or move the file away and run \"rexdiff install\" again", path, codeMark) } -// newLua returns the content of rexdiff.lua with the code for bin. It +// luaContent returns the content of rexdiff.lua with the code for bin. It // keeps the settings of old, the current content of the file. If old is // empty, it uses the default settings. -func newLua(path, old, bin string) (string, error) { +func luaContent(path, old, bin string) (string, error) { if old == "" { return defaultSettings + luaCode(bin), nil } settings, _, err := splitLua(path, old) - return settings + luaCode(bin), err + if err != nil { + return "", err + } + return settings + luaCode(bin), nil } +// luaPath returns the path of rexdiff.lua, beside the init.lua of Rex. func luaPath() string { return filepath.Join(filepath.Dir(rex.ConfigPath()), luaFile) } // readFile returns the content of the file at path, or "" if there is no @@ -265,7 +269,7 @@ func install(ctx context.Context, bin string, args []string, stdout, stderr io.W if err != nil { return err } - code, err := newLua(lua, old, bin) + code, err := luaContent(lua, old, bin) if err != nil { return err } @@ -290,7 +294,9 @@ func install(ctx context.Context, bin string, args []string, stdout, stderr io.W } // upgrade replaces the code part of rexdiff.lua with the code for bin, if -// they differ, and keeps the settings. It does nothing if there is no +// they differ, and keeps the settings. It is not the update of rexdiff +// itself (see the update package). It upgrades only the Lua code of the +// action. It does nothing if there is no // rexdiff.lua, or if the file runs another rexdiff, for example a build // for development. It returns what the user must know, or "". func upgrade(ctx context.Context, bin string) string { @@ -299,15 +305,15 @@ func upgrade(ctx context.Context, bin string) string { if err != nil || !strings.Contains(old, binLine(bin)+"\n") { return "" } - code, err := newLua(lua, old, bin) + code, err := luaContent(lua, old, bin) if err != nil { - return "cannot upgrade rexdiff.lua: " + err.Error() + return "rexdiff.lua upgrade failed: " + err.Error() } if code == old { return "" } if err := os.WriteFile(lua, []byte(code), 0o644); err != nil { - return "cannot upgrade rexdiff.lua: " + err.Error() + return "rexdiff.lua upgrade failed: " + err.Error() } if err := rex.ReloadConfig(ctx); err != nil { return "upgraded rexdiff.lua; reload Rex's config yourself: rex config reload" @@ -348,8 +354,11 @@ func parseSub(name string, args []string, stderr io.Writer) error { return usageError(err) } if fs.NArg() > 0 { - return fmt.Errorf("unknown argument %q (set the key and the placement in the settings in %s)", + // Show the usage, as the flag package does for a bad flag. + fmt.Fprintf(stderr, "unknown argument %q (set the key and the placement in the settings in %s)\n", fs.Arg(0), luaPath()) + fs.Usage() + return errUsage } return nil } diff --git a/cmd/rexdiff/main.go b/cmd/rexdiff/main.go index d9d18f9..607e5fa 100644 --- a/cmd/rexdiff/main.go +++ b/cmd/rexdiff/main.go @@ -36,15 +36,15 @@ func main() { switch { case errors.Is(err, flag.ErrHelp): case errors.Is(err, errUsage): - os.Exit(2) // the flag package prints the error + os.Exit(2) // stderr already has the error case err != nil: fmt.Fprintln(os.Stderr, "rexdiff:", err) os.Exit(1) } } -// errUsage is the error of bad flags. The flag package prints it and the -// usage. +// errUsage is the error of a bad flag or argument. stderr already has the +// error and the usage. var errUsage = errors.New("bad usage") // usageError returns err of flag parsing for -h, and errUsage for the @@ -56,6 +56,7 @@ func usageError(err error) error { return errUsage } +// usage is the text above the flags in the help of the diff viewer. const usage = `usage: rexdiff [flags] [repo] rexdiff install rexdiff uninstall @@ -176,7 +177,7 @@ type flags struct { // parseFlags parses the arguments of the diff viewer. It writes the usage // and the errors of the flags to stderr. For -h, it returns -// [flag.ErrHelp], and for a bad flag errUsage. +// [flag.ErrHelp], and for a bad flag or argument errUsage. func parseFlags(args []string, stderr io.Writer) (flags, error) { var f flags fs := flag.NewFlagSet("rexdiff", flag.ContinueOnError) @@ -185,22 +186,25 @@ func parseFlags(args []string, stderr io.Writer) (flags, error) { oneOf(&f.layout, tui.LayoutUnified, tui.LayoutSplit)) fs.Func("scope", "start scope: uncommitted, branch, or last-turn", oneOf(&f.scope, tui.ScopeUncommitted, tui.ScopeBranch, tui.ScopeLastTurn)) - fs.BoolVar(&f.wrap, "wrap", true, "wrap long lines; w toggles it") + fs.BoolVar(&f.wrap, "wrap", true, "wrap of long lines (the key w toggles it)") fs.StringVar(&f.base, "base", "", "base for the branch scope (default: the picked base, else the repo's default branch)") - fs.StringVar(&f.agent, "agent", os.Getenv("REX_AGENT_BLOCK"), "the agent's Rex block (id or label) this pane was opened beside") - fs.StringVar(&f.logPath, "log", os.Getenv("REXDIFF_LOG"), "append a debug log to this file") - fs.StringVar(&f.config, "config", "", "the settings as JSON; the Rex action passes them from rexdiff.lua") - fs.BoolVar(&f.check, "check", false, "check the settings of -config and exit") - fs.BoolVar(&f.version, "version", false, "print the version and exit") + fs.StringVar(&f.agent, "agent", os.Getenv("REXDIFF_AGENT"), "Rex block (ID or label) of the agent beside this pane") + fs.StringVar(&f.logPath, "log", os.Getenv("REXDIFF_LOG"), "file for a debug log") + fs.StringVar(&f.config, "config", "", "settings as JSON (the Rex action gives them from rexdiff.lua)") + fs.BoolVar(&f.check, "check", false, "settings check only: check -config, then exit") + fs.BoolVar(&f.version, "version", false, "version only: print it, then exit") fs.Usage = func() { fmt.Fprint(stderr, usage) fs.PrintDefaults() } if err := fs.Parse(args); err != nil { - return f, usageError(err) + return flags{}, usageError(err) } if fs.NArg() > 1 { - return f, fmt.Errorf("unknown argument %q (flags go before the repo)", fs.Arg(1)) + // Show the usage, as the flag package does for a bad flag. + fmt.Fprintf(stderr, "unknown argument %q (flags go before the repo)\n", fs.Arg(1)) + fs.Usage() + return flags{}, errUsage } f.repo = fs.Arg(0) return f, nil diff --git a/diff/comment.go b/diff/comment.go index 512355d..89c721a 100644 --- a/diff/comment.go +++ b/diff/comment.go @@ -137,9 +137,9 @@ func (cs *Comments) Find(id int) *Comment { // At returns the first comment with anchor a whose range includes line, or // nil. -func (cs *Comments) At(a Anchor, path string, side Side, line int) *Comment { +func (cs *Comments) At(a Anchor, path string, s Side, line int) *Comment { for _, c := range cs.items { - if c.Anchor == a && c.Path == path && c.Side == side && + if c.Anchor == a && c.Path == path && c.Side == s && line >= c.Start && line <= c.End { return c } @@ -148,10 +148,10 @@ func (cs *Comments) At(a Anchor, path string, side Side, line int) *Comment { } // EndingAt returns the comments with anchor a whose range ends on line. -func (cs *Comments) EndingAt(a Anchor, path string, side Side, line int) []*Comment { +func (cs *Comments) EndingAt(a Anchor, path string, s Side, line int) []*Comment { var ending []*Comment for _, c := range cs.items { - if c.Anchor == a && c.Path == path && c.Side == side && c.End == line { + if c.Anchor == a && c.Path == path && c.Side == s && c.End == line { ending = append(ending, c) } } diff --git a/diff/diff.go b/diff/diff.go index 33544d2..58b947f 100644 --- a/diff/diff.go +++ b/diff/diff.go @@ -77,8 +77,8 @@ type Options struct { // Wrap continues a line that is wider than Width on the next lines, // instead of cutting it. Then Offset does not apply. Wrap bool - // Expanded tells if the lines of a fold show. If Expanded is nil, no - // fold shows. RenderFile does not use it. + // Expanded reports whether the lines of a fold show. If Expanded is + // nil, no fold shows. RenderFile does not use it. Expanded func(Fold) bool // Signs marks a changed line with + or -. Without Signs, a bar in the // colour of the line marks it. @@ -165,10 +165,12 @@ func Render(path, old, new string, o Options) *Diff { return d } +// foldOf returns the Fold of the diffview fold f. func foldOf(f diffview.Fold) Fold { return Fold{Old: f.Before, New: f.After, Lines: f.Lines} } +// kindOf returns the Kind of the diffview row kind k. func kindOf(k diffview.RowKind) Kind { switch k { case diffview.RowHunk: diff --git a/diff/theme.go b/diff/theme.go index 32752d4..b3025e5 100644 --- a/diff/theme.go +++ b/diff/theme.go @@ -11,7 +11,7 @@ type Theme struct { // if the terminal does not report them. Then the diff tints no background. Background, Foreground color.Color // Green and Red are the ANSI colours 2 and 1 of the terminal. Inserted and - // deleted lines get a tint toward them. If they are nil, the diff uses + // deleted lines get a tint towards them. If they are nil, the diff uses // fixed colours. Green, Red color.Color } diff --git a/internal/clipboard/clipboard.go b/internal/clipboard/clipboard.go index 4096dd5..4cd8d2a 100644 --- a/internal/clipboard/clipboard.go +++ b/internal/clipboard/clipboard.go @@ -11,7 +11,7 @@ import ( ) // ErrNoTool tells that PATH has no clipboard tool. The user can fix it. -var ErrNoTool = errors.New("no clipboard tool found (wl-clipboard, xclip, or xsel)") +var ErrNoTool = errors.New("no clipboard tool is installed (pbcopy, wl-clipboard, xclip, or xsel)") // tools are the clipboard tools that read stdin. The first on PATH wins. var tools = [][]string{ diff --git a/internal/editor/editor.go b/internal/editor/editor.go index 2c1bb3c..16d4313 100644 --- a/internal/editor/editor.go +++ b/internal/editor/editor.go @@ -1,6 +1,6 @@ // Package editor picks the text editor of the user, and makes the sh -// command that opens a file at a line in it. It also tells if the editor -// opens a window or draws in the terminal. +// command that opens a file at a line in it. It also reports whether the +// editor opens a window or draws in the terminal. package editor import ( @@ -31,7 +31,7 @@ func Resolve(template, visual, env, git, file string, line int) (Command, error) } else { e := cmp.Or(strings.TrimSpace(visual), strings.TrimSpace(env), strings.TrimSpace(git)) if e == "" { - return Command{}, errors.New("no editor: set `editor` in rexdiff.lua, $EDITOR, or git's core.editor") + return Command{}, errors.New(`no editor: set "editor" in rexdiff.lua, $EDITOR, or git's core.editor`) } c = fromEditor(e, file, line) } @@ -99,9 +99,10 @@ type dialect struct { // dialects has the known editors, by program name. The table is the same // as in herdr-reviewr. The table also lists fresh, open, and xdg-open. -var dialects = makeDialects() +var dialects = knownDialects() -func makeDialects() map[string]dialect { +// knownDialects returns the table of dialects. +func knownDialects() map[string]dialect { d := map[string]dialect{} add := func(dl dialect, names ...string) { for _, n := range names { diff --git a/internal/editor/editor_test.go b/internal/editor/editor_test.go index b2dcdf4..80b857c 100644 --- a/internal/editor/editor_test.go +++ b/internal/editor/editor_test.go @@ -94,7 +94,7 @@ func TestResolveOrder(t *testing.T) { tt.template, tt.visual, tt.env, tt.git, got.Program, err, tt.want) } } - const noEditor = "no editor: set `editor` in rexdiff.lua, $EDITOR, or git's core.editor" + const noEditor = `no editor: set "editor" in rexdiff.lua, $EDITOR, or git's core.editor` if _, err := editor.Resolve("", " ", "", "\n", "/a", 1); err == nil || err.Error() != noEditor { t.Errorf("Resolve with no editor: error = %v, want %q", err, noEditor) } diff --git a/internal/search/match.go b/internal/search/match.go index ff709cc..acf5e21 100644 --- a/internal/search/match.go +++ b/internal/search/match.go @@ -36,6 +36,8 @@ func foldEqual(a, b string) bool { return true } +// lowerASCII returns the lower case of the ASCII letter c. It returns +// other bytes as they are. func lowerASCII(c byte) byte { if 'A' <= c && c <= 'Z' { return c + 'a' - 'A' diff --git a/internal/search/search.go b/internal/search/search.go index 59dd401..1eb10b3 100644 --- a/internal/search/search.go +++ b/internal/search/search.go @@ -4,27 +4,17 @@ package search import ( "slices" - "time" "github.com/sahilm/fuzzy" ) // The limits of the results. A "… more" row tells that there are others. const ( - // FileLimit is the largest number of files that the search shows. - FileLimit = 50 - // CodeLimit is the largest number of matching lines that the search + // MaxFiles is the largest number of files that the search shows. + MaxFiles = 50 + // MaxCodeLines is the largest number of matching lines that the search // shows. - CodeLimit = 200 -) - -// CodeBudget is the time of a code search, as in herdr-reviewr. After it, -// the search shows the lines that it finds, and a "+" tells that there can -// be others. A search with no line yet goes on until its first line, or -// until CodeTimeout. -const ( - CodeBudget = 80 * time.Millisecond - CodeTimeout = 2 * time.Second + MaxCodeLines = 200 ) // Files returns at most limit of paths that match q, the best match @@ -56,3 +46,14 @@ func Files(paths, recent []string, q string, limit int) (hits []string, total in } return hits, len(ms) } + +// Indices returns the indices of the labels that match q, the best match +// first. The match is the same fuzzy match as in Files. +func Indices(q string, labels []string) []int { + ms := fuzzy.Find(q, labels) + is := make([]int, len(ms)) + for i, m := range ms { + is[i] = m.Index + } + return is +} diff --git a/internal/search/search_test.go b/internal/search/search_test.go index 21f53b9..2a6ca13 100644 --- a/internal/search/search_test.go +++ b/internal/search/search_test.go @@ -32,7 +32,7 @@ func TestFiles(t *testing.T) { {"recent does not rank a query", "go", paths, []string{"main.go"}, 2, []string{"a.go", "b.go"}, 4}, {"no match", "zzz", paths, nil, 50, nil, 0}, // A query shows at most the limit, and counts all the matches. - {"query limit", "f", many, nil, search.FileLimit, many[:search.FileLimit], 60}, + {"query limit", "f", many, nil, search.MaxFiles, many[:search.MaxFiles], 60}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -73,3 +73,16 @@ func TestMatch(t *testing.T) { } } } + +// TestIndices checks that Indices returns the indices of the labels that +// match, the best match first. +func TestIndices(t *testing.T) { + t.Parallel() + labels := []string{"main feat", "dev", "feature x"} + if got, want := search.Indices("feat", labels), []int{2, 0}; !slices.Equal(got, want) { + t.Errorf("Indices(%q, %q) = %v, want %v", "feat", labels, got, want) + } + if got := search.Indices("zzz", labels); len(got) != 0 { + t.Errorf("Indices(%q, %q) = %v, want none", "zzz", labels, got) + } +} diff --git a/internal/testgit/testgit.go b/internal/testgit/testgit.go index d69d088..2c798f2 100644 --- a/internal/testgit/testgit.go +++ b/internal/testgit/testgit.go @@ -104,9 +104,9 @@ func Git(tb testing.TB, dir string, args ...string) string { return string(out) } -// NewRepo makes a repository in dir with the branch main. It makes dir +// InitRepo makes a repository in dir with the branch main. It makes dir // if it does not exist. -func NewRepo(tb testing.TB, dir string) { +func InitRepo(tb testing.TB, dir string) { tb.Helper() if err := os.MkdirAll(dir, 0o755); err != nil { tb.Fatal(err) diff --git a/internal/tree/tree.go b/internal/tree/tree.go index 3bc1b61..d2ad88d 100644 --- a/internal/tree/tree.go +++ b/internal/tree/tree.go @@ -45,6 +45,7 @@ type node struct { listed bool } +// newNode returns a directory with no entries. func newNode() *node { return &node{dirs: map[string]*node{}, files: map[string]int{}} } // Build returns the rows of entries. Each directory starts expanded if @@ -147,10 +148,13 @@ func loneFile(n *node) (name string, i int, ok bool) { return "", 0, false } +// fileRow returns the row of entry i at depth, with the name name. func fileRow(depth int, name string, i int, entries []Entry) Row { return Row{Depth: depth, Name: name, File: i, Ignored: entries[i].Ignored} } +// join returns the path of name in the directory prefix. An empty prefix +// is the root. func join(prefix, name string) string { if prefix == "" { return name diff --git a/internal/tree/tree_test.go b/internal/tree/tree_test.go index 5f3487d..ec1c4e2 100644 --- a/internal/tree/tree_test.go +++ b/internal/tree/tree_test.go @@ -67,6 +67,7 @@ func set(paths ...string) map[string]bool { return m } +// TestBuild checks the rows that Build makes. func TestBuild(t *testing.T) { t.Parallel() tests := []struct { diff --git a/internal/turn/turn.go b/internal/turn/turn.go index 798c563..69769e0 100644 --- a/internal/turn/turn.go +++ b/internal/turn/turn.go @@ -15,16 +15,16 @@ import ( type state int const ( - // resting tells that each agent rests, or that there is no agent. - resting state = iota - // working tells that at least one agent works. - working - // held tells that no agent works, but one does not rest. For example, - // it waits at a prompt. A turn that is open stays open. - held + // stateResting tells that each agent rests, or that there is no agent. + stateResting state = iota + // stateWorking tells that at least one agent works. + stateWorking + // stateHeld tells that no agent works, but one does not rest. For + // example, it waits at a prompt. A turn that is open stays open. + stateHeld ) -// rests tells if s is a state between turns. A blocked agent and an +// rests reports whether s is a state between turns. A blocked agent and an // unknown state are in the middle of a turn. func rests(s rex.State) bool { return s == rex.StateIdle || s == rex.StateDone } @@ -32,21 +32,21 @@ func rests(s rex.State) bool { return s == rex.StateIdle || s == rex.StateDone } // states. One working agent makes the repository work. func fold(states ...rex.State) state { if slices.Contains(states, rex.StateWorking) { - return working + return stateWorking } if slices.ContainsFunc(states, func(s rex.State) bool { return !rests(s) }) { - return held + return stateHeld } - return resting + return stateResting } // Tracker finds the start and the end of each turn in a series of states. // The zero Tracker is ready to use. type Tracker struct { - // prevResting tells if the last state is resting. It is false at + // prevResting is true if the last state is resting. It is false at // first, so the first state starts no turn. prevResting bool - // worked tells if the repository works after its last rest. An end + // worked is true if the repository works after its last rest. An end // can come through held, but a start cannot. Thus the two edges keep // different memories. worked bool @@ -61,13 +61,13 @@ func (t *Tracker) Observe(states ...rex.State) (started, ended bool) { // observe takes the next state of the repository. func (t *Tracker) observe(s state) (started, ended bool) { - started = s == working && t.prevResting - ended = t.worked && s == resting - t.prevResting = s == resting + started = s == stateWorking && t.prevResting + ended = t.worked && s == stateResting + t.prevResting = s == stateResting switch s { - case working: + case stateWorking: t.worked = true - case resting: + case stateResting: t.worked = false } return started, ended diff --git a/rex/rex.go b/rex/rex.go index 62feb6b..0f649ac 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -14,6 +14,8 @@ import ( "cmp" "context" "encoding/json/v2" + "errors" + "fmt" "os" "os/exec" "path/filepath" @@ -25,7 +27,7 @@ import ( // Client runs rex commands in one Rex session. type Client struct { - Block string // the block of this process, or "" + block string // the block of this process, or "" session string // the ID of the session bin string // the path of the rex command, or "" for "rex" in PATH } @@ -39,12 +41,15 @@ func FromEnv() *Client { return nil } return &Client{ - Block: os.Getenv("REX_BLOCK"), + block: os.Getenv("REX_BLOCK"), session: session, bin: binFromEnv(), } } +// Block returns the block of this process, or "" if Rex does not tell it. +func (c *Client) Block() string { return c.block } + // binFromEnv returns the path of the rex command, or "" for the rex in PATH. // Rex sets REX_BIN_DIR in its terminals. Other programs, for example brew, // do not have it. If REX_BIN_DIR is empty and PATH has no rex, binFromEnv @@ -84,10 +89,18 @@ func (c *Client) runRex(ctx context.Context, args ...string) ([]byte, error) { if err == nil { return out, nil } + if errors.Is(err, exec.ErrNotFound) { + return nil, errors.New("rex is not installed") + } + return nil, stderrError(err, &stderr) +} + +// stderrError returns err of a run of rex with the first line of stderr. +func stderrError(err error, stderr *bytes.Buffer) error { msg := strings.TrimSpace(stderr.String()) msg = strings.TrimPrefix(msg, "Error: ") msg, _, _ = strings.Cut(msg, "\n") - return nil, &runError{msg: cmp.Or(msg, err.Error()), err: err} + return &runError{msg: cmp.Or(msg, err.Error()), err: err} } // runError is a failed run of rex. Its text is the first line that rex @@ -100,13 +113,17 @@ type runError struct { func (e *runError) Error() string { return e.msg } func (e *runError) Unwrap() error { return e.err } -// runRexJSON runs "rex args..." and decodes the JSON output into v. +// runRexJSON runs "rex args..." and decodes the JSON output into v. An +// error of the decoder names the rex command. func (c *Client) runRexJSON(ctx context.Context, v any, args ...string) error { out, err := c.runRex(ctx, args...) if err != nil { return err } - return json.Unmarshal(out, v) + if err := json.Unmarshal(out, v); err != nil { + return fmt.Errorf("rex %s: %w", strings.Join(args[:min(len(args), 2)], " "), err) + } + return nil } // request sends a request to the API of the session. It runs @@ -121,7 +138,10 @@ func (c *Client) request(ctx context.Context, method string, args, reply any) er if err != nil || reply == nil { return err } - return json.Unmarshal(out, reply) + if err := json.Unmarshal(out, reply); err != nil { + return fmt.Errorf("rex api call %s: %w", method, err) + } + return nil } // Status is the status that a program sends to Rex with OSC 7501. @@ -242,7 +262,7 @@ func (c *Client) Agents(ctx context.Context) ([]Agent, error) { // an agent if its program sends an app name. agents := make([]Agent, len(reply.Blocks)) for i, b := range reply.Blocks { - if b.ID == c.Block || b.Creator != terminalCreator { + if b.ID == c.block || b.Creator != terminalCreator { continue } wg.Go(func() { @@ -355,7 +375,7 @@ func (c *Client) SetLabel(ctx context.Context, block, label string) error { // Split opens a new terminal block next to the block of the client. The // new block runs the command argv in the directory cwd. func (c *Client) Split(ctx context.Context, cwd string, argv ...string) error { - args := []string{"split", "-s", c.session, "-b", c.Block, "--cwd", cwd, "--"} + args := []string{"split", "-s", c.session, "-b", c.block, "--cwd", cwd, "--"} _, err := c.runRex(ctx, append(args, argv...)...) return err } @@ -393,6 +413,10 @@ type Event struct { // Reconnect is true if Watch starts rex again. The events between the // two runs of rex are lost. A Reconnect event has no block. Reconnect bool + // Err is the error of a run of rex that fails, with the first line + // of its stderr. An event with Err has no block. Watch starts rex + // again after the event. + Err error } const ( @@ -403,12 +427,15 @@ const ( ) // Watch calls fn for each event in the session, from one goroutine. It -// runs "rex events" to get the events. If rex stops, Watch starts it again -// after 2 seconds. Then it calls fn with a Reconnect event before the -// next events. Watch returns the error of ctx when ctx is done. +// runs "rex events" to get the events. If rex fails, Watch calls fn with +// an event that has the error. If rex stops, Watch starts it again after +// 2 seconds. Then it calls fn with a Reconnect event before the next +// events. Watch returns the error of ctx when ctx is done. func (c *Client) Watch(ctx context.Context, fn func(Event)) error { for again := false; ; again = true { - c.watchOnce(ctx, again, fn) + if err := c.watchOnce(ctx, again, fn); err != nil && ctx.Err() == nil { + fn(Event{Err: err}) + } select { case <-ctx.Done(): return ctx.Err() @@ -418,12 +445,21 @@ func (c *Client) Watch(ctx context.Context, fn func(Event)) error { } // watchOnce runs "rex events" and calls fn for each event until rex stops. -// If again is true, the first event is a Reconnect event. -func (c *Client) watchOnce(ctx context.Context, again bool, fn func(Event)) { +// If again is true, the first event is a Reconnect event. It returns the +// error of rex, with the first line of its stderr. +func (c *Client) watchOnce(ctx context.Context, again bool, fn func(Event)) error { cmd := c.command(ctx, "events", "-s", c.session, "--json") + var stderr bytes.Buffer + cmd.Stderr = &stderr out, err := cmd.StdoutPipe() - if err != nil || cmd.Start() != nil { - return + if err != nil { + return fmt.Errorf("rex events: %w", err) + } + if err := cmd.Start(); err != nil { + if errors.Is(err, exec.ErrNotFound) { + return errors.New("rex is not installed") + } + return fmt.Errorf("rex events: %w", err) } if again { fn(Event{Reconnect: true}) @@ -435,12 +471,17 @@ func (c *Client) watchOnce(ctx context.Context, again bool, fn func(Event)) { fn(ev) } } - if lines.Err() != nil { + if err := lines.Err(); err != nil { // A line is too long. Stop rex, because rex can wait until Watch // reads the rest of its output. _ = cmd.Process.Kill() + _ = cmd.Wait() + return fmt.Errorf("rex events: %w", err) + } + if err := cmd.Wait(); err != nil { + return fmt.Errorf("rex events: %w", stderrError(err, &stderr)) } - _ = cmd.Wait() // Watch starts rex again, whatever the error + return nil } // blockEvent is an event of one block in "rex events --json". diff --git a/rex/rex_test.go b/rex/rex_test.go index b7fa43c..eab9419 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -28,7 +28,7 @@ func client(t *testing.T, body string) (*rex.Client, string) { t.Setenv("REX_BLOCK", "block:self") t.Setenv("REX_BIN_DIR", dir) c := rex.FromEnv() - if c == nil || c.Block != "block:self" { + if c == nil || c.Block() != "block:self" { t.Fatalf("FromEnv = %+v, want the block block:self", c) } return c, dir diff --git a/test/changes_test.go b/test/changes_test.go index a05dbd9..0bd46ec 100644 --- a/test/changes_test.go +++ b/test/changes_test.go @@ -166,7 +166,7 @@ func TestFileList(t *testing.T) { func TestKeys(t *testing.T) { tm := start(t, newRepo(t), opts{}) tm.keys("?") - tm.waitFor("search files & code", "pick commits", "move file list") + tm.waitFor("search files and code", "pick commits", "move list") tm.keys("esc") tm.waitGone("pick commits") } @@ -192,7 +192,7 @@ func TestSettings(t *testing.T) { ` "file_list_width": 50, "default_scope": "branch",` + ` "keybindings": {"next-file": ["x"]}}`, }}) - s := tm.waitFor("vs main", "4 - return 1", "4 + x := 2", "x next/prev file") + s := tm.waitFor("vs main", "4 - return 1", "4 + x := 2", "x/F next/prev file") for _, l := range lines(s, "return 1") { if !strings.Contains(l, "x := 2") { t.Errorf("line %q, want the old and the new line side by side", l) diff --git a/test/comment_test.go b/test/comment_test.go index 1588a83..472c39b 100644 --- a/test/comment_test.go +++ b/test/comment_test.go @@ -131,7 +131,10 @@ func TestCopy(t *testing.T) { // TestMouse checks that a click picks a file, a triple click copies a // line, a drag on the code copies the lines, and the wheel scrolls. func TestMouse(t *testing.T) { - bin := clipboard(t) + // The copy takes longer than the time between the clicks of a triple + // click. The triple click still copies the line. + slow := `sleep 0.5; cat > "${0%/*}/clip"` + "\n" + bin := tools(t, map[string]string{"pbcopy": slow, "wl-copy": slow}) clip := filepath.Join(bin, "clip") tm := start(t, newRepo(t), opts{path: bin, env: clipEnv, height: 12}) tm.click("M long.txt", 1) @@ -231,7 +234,7 @@ func TestWindowEditor(t *testing.T) { func TestNoEditor(t *testing.T) { tm := start(t, newRepo(t), opts{}) tm.keys("]", "j", "e") - tm.waitFor("no editor: set `editor` in rexdiff.lua, $EDITOR, or git's core.editor") + tm.waitFor(`editor failed: no editor: set "editor" in rexdiff.lua, $EDITOR, or git's core.editor`) } // TestCopyHangs checks that a clipboard tool that does not answer fails diff --git a/test/fake_test.go b/test/fake_test.go index a372464..80e51d4 100644 --- a/test/fake_test.go +++ b/test/fake_test.go @@ -18,7 +18,7 @@ import ( // line of long.txt. var repoFixture = testgit.NewFixture(func(tb testing.TB, dir string) { tb.Helper() - testgit.NewRepo(tb, dir) + testgit.InitRepo(tb, dir) testgit.WriteFile(tb, dir, "a.go", "package a\n\nfunc A() int {\n\treturn 1\n}\n") testgit.WriteFile(tb, dir, "README.md", "# Title\n\nSome text.\n") testgit.WriteFile(tb, dir, "docs/guide.txt", "guide\n") diff --git a/test/rexdiff_test.go b/test/rexdiff_test.go index 455d9dc..27d5eed 100644 --- a/test/rexdiff_test.go +++ b/test/rexdiff_test.go @@ -60,7 +60,7 @@ func build(dir, version string) (string, error) { // Each run starts with them empty. var userEnv = []string{ "REX_SESSION", "REX_BLOCK", "REX_BIN_DIR", "REX_CONFIG", - "REX_AGENT_BLOCK", "REXDIFF_LOG", "REXDIFF_RESUME", "EDITOR", "VISUAL", + "REXDIFF_AGENT", "REXDIFF_LOG", "REXDIFF_RESUME", "EDITOR", "VISUAL", } // opts are the options of a rexdiff run. diff --git a/test/testdata/script/cli.txt b/test/testdata/script/cli.txt index 22d7287..73dc38b 100644 --- a/test/testdata/script/cli.txt +++ b/test/testdata/script/cli.txt @@ -3,7 +3,8 @@ stderr '^rexdiff: open .+: git rev-parse: fatal: not a git repository' exec git init -q repo ! exec rexdiff repo -wrap=false -stderr '^rexdiff: unknown argument "-wrap=false" \(flags go before the repo\)$' +stderr '^unknown argument "-wrap=false" \(flags go before the repo\)$' +stderr '^usage: rexdiff' ! exec rexdiff -nope stderr -count=1 'flag provided but not defined: -nope' diff --git a/test/upgrade_test.go b/test/upgrade_test.go index 78b83ea..1670fcb 100644 --- a/test/upgrade_test.go +++ b/test/upgrade_test.go @@ -43,7 +43,7 @@ func TestUpgradeAtStart(t *testing.T) { noMark := strings.Replace(edited, mark, "", 1) write(t, lua, noMark) tm = start(t, repo, opts{rex: rex, env: env}) - tm.waitFor("cannot upgrade rexdiff.lua") + tm.waitFor("rexdiff.lua upgrade failed") if got := read(t, lua); got != noMark { t.Errorf("rexdiff.lua without the line changes to:\n%s", got) } diff --git a/tui/agentpick.go b/tui/agentpick.go new file mode 100644 index 0000000..06c3a02 --- /dev/null +++ b/tui/agentpick.go @@ -0,0 +1,60 @@ +package tui + +// The agent picker picks the agent that gets the review. + +import ( + "fmt" + "slices" + + "github.com/rednafi/rexdiff/rex" +) + +// openAgentPicker lets the user pick the agent to send to. The cursor +// starts on the agent of the last send, else the agent beside the pane. +func (m *model) openAgentPicker(agents []rex.Agent) { + ov := newOverlay(overlayAgents, "send to which agent?") + ov.agents = agents + var items []pickItem + armed := 0 + for i, a := range agents { + detail := a.Status.App + " · " + string(a.Status.State) + if a.Status.State == rex.StateBlocked { + detail = a.Status.App + " · at a prompt" + } + if a.Window != "" { + detail += " · " + a.Window + } + tag := "" + switch a.Block { + case m.lastSent: + tag, armed = "last used", i + case m.beside: + tag = "opened beside" + if m.lastSent == "" { + armed = i + } + } + items = append(items, pickItem{ + label: fmt.Sprintf("%d %s", i+1, a.Name), + detail: detail, + tag: tag, + id: a.Block, + }) + } + ov.setItems(items) + ov.cur = armed + m.open(ov) +} + +// agent returns the agent of item it of the agent picker. If it is nil, +// ok is false. +func (o *overlay) agent(it *pickItem) (a rex.Agent, ok bool) { + if it == nil { + return rex.Agent{}, false + } + i := slices.IndexFunc(o.agents, func(a rex.Agent) bool { return a.Block == it.id }) + if i < 0 { + return rex.Agent{}, false + } + return o.agents[i], true +} diff --git a/tui/basepick.go b/tui/basepick.go new file mode 100644 index 0000000..c04ca77 --- /dev/null +++ b/tui/basepick.go @@ -0,0 +1,46 @@ +package tui + +// The base picker picks the base of the branch scope. + +import ( + "strings" +) + +// openBasePicker lets the user pick the base of the branch scope. The +// current base has a tag. As in herdr-reviewr, it does nothing if the base +// comes from the flag. +func (m *model) openBasePicker() { + if m.baseFlag { + return + } + ov := newOverlay(overlayBase, "base branch for the branch scope (or type any ref)") + branches, err := m.repo.Branches(m.ctx) + if err != nil { + m.flash("branch list failed: " + err.Error()) + return + } + var items []pickItem + for _, b := range branches { + tag := "" + if b == m.base { + tag = "current" + } + items = append(items, pickItem{label: b, id: b, tag: tag}) + } + ov.setItems(items) + m.open(ov) +} + +// baseRef returns the ref that the base picker picks, with the selected +// item it. A typed ref, for example a tag, wins over the first match. A +// match that the user moves to wins over the typed text. If the ref is +// not valid, ok is false. +func (m *model) baseRef(it *pickItem) (ref string, ok bool) { + ref = strings.TrimSpace(m.overlay.input.Value()) + _, err := m.repo.Resolve(m.ctx, ref) + if it != nil && (ref == "" || err != nil || m.overlay.cur > 0) { + ref = it.id + _, err = m.repo.Resolve(m.ctx, ref) + } + return ref, ref != "" && err == nil +} diff --git a/tui/comment.go b/tui/comment.go index 00f32d7..4a54388 100644 --- a/tui/comment.go +++ b/tui/comment.go @@ -41,10 +41,10 @@ func (m *model) target(i int, pref diff.Side) *targetLine { // selectedChange returns the selected file of the Changes tab, or nil. func (m *model) selectedChange() *changedFile { - if m.changeSel >= len(m.files) { + if m.changeSel >= len(m.changeFiles) { return nil } - return &m.files[m.changeSel] + return &m.changeFiles[m.changeSel] } // contentFor returns the text of side s of the file at path. @@ -92,7 +92,7 @@ func (m *model) revCurrent(c *diff.Comment) bool { // stale if its file is gone. func (m *model) stale(c *diff.Comment) bool { if c.Anchor.InDiff { - return !slices.ContainsFunc(m.files, func(f changedFile) bool { return f.Path == c.Path }) + return !slices.ContainsFunc(m.changeFiles, func(f changedFile) bool { return f.Path == c.Path }) } _, err := os.Lstat(filepath.Join(m.repo.Root(), c.Path)) return err != nil @@ -217,10 +217,10 @@ func (m *model) closeComment() { } } -// newLineNear returns the new line of row i. A row with no new line, such +// nearNewLine returns the new line of row i. A row with no new line, such // as a deleted line, gives the next new line below it. If there is none, it // gives the last new line above it. If there is none, it gives 1. -func newLineNear(rows []diff.Row, i int) int { +func nearNewLine(rows []diff.Row, i int) int { for _, r := range rows[i:] { if r.New > 0 { return r.New @@ -244,5 +244,5 @@ func (m *model) editOrOpen() tea.Cmd { if p.path == "" { return nil } - return m.openEditor(p.path, newLineNear(p.rows, p.cur)) + return m.openEditor(p.path, nearNewLine(p.rows, p.cur)) } diff --git a/tui/commentlist.go b/tui/commentlist.go new file mode 100644 index 0000000..ca019f2 --- /dev/null +++ b/tui/commentlist.go @@ -0,0 +1,107 @@ +package tui + +// The comment list shows all the comments. The user can jump to a +// comment, edit it, delete it, or send or copy all the comments. + +import ( + "fmt" + "strings" + + "charm.land/bubbles/v2/key" + tea "charm.land/bubbletea/v2" +) + +// openCommentList lists the comments, to jump to one, edit one, delete +// one, or send or copy them all. +func (m *model) openCommentList() { + if m.comments.Len() == 0 { + m.flash("no comments yet") + return + } + ov := newOverlay(overlayComments, "") + m.fillCommentList(ov) + m.open(ov) +} + +// fillCommentList sets the comments as the items of ov, and the count in +// the title, as in herdr-reviewr. +func (m *model) fillCommentList(ov *overlay) { + ov.title = fmt.Sprintf("Comments (%d)", m.comments.Len()) + var items []pickItem + for _, c := range m.comments.All() { + tag := "" + if m.stale(c) { + tag = "stale" + } + text, _, _ := strings.Cut(c.Text, "\n") + items = append(items, pickItem{ + label: c.Location(), + detail: text, + tag: tag, + comment: c.ID, + }) + } + ov.setItems(items) +} + +// updateCommentList handles a key in the comment list. The keys are those +// of herdr-reviewr. Enter also jumps to the comment. +func (m *model) updateCommentList(msg tea.KeyPressMsg) tea.Cmd { + ov, k := m.overlay, m.keys + it := ov.selected() + switch { + case key.Matches(msg, k.Comments, k.Cancel): + m.closeOverlay() + case key.Matches(msg, overlayKeys.Choose): + return m.chooseOverlay() + case key.Matches(msg, k.Down): + ov.down() + case key.Matches(msg, k.Up): + ov.up() + case key.Matches(msg, k.Send): + return m.startSend() + case key.Matches(msg, k.Copy): + m.copyComments() + case key.Matches(msg, k.Edit) && it != nil: + // As in herdr-reviewr, a comment on another diff takes no edit. + c := m.comments.Find(it.comment) + if c == nil || !m.revCurrent(c) { + return nil + } + row := ov.cur + m.closeOverlay() + m.jumpToComment(c) + m.focusList = false + if !m.showsLine(c) { + m.flash("the line of the comment does not show") + return nil + } + m.ensureVisible() + return m.editComment(c, row) + case key.Matches(msg, k.Delete) && it != nil: + m.comments.Remove(it.comment) + m.flash("comment deleted") + if m.comments.Len() == 0 { + m.closeOverlay() + return nil + } + m.fillCommentList(ov) + } + return nil +} + +// listHint returns the keys of the comment list, as the footer of +// herdr-reviewr shows them. The edit key shows only if the selected +// comment takes an edit. +func (m *model) listHint() string { + k := m.keys + edit := "" + if it := m.overlay.selected(); it != nil { + if c := m.comments.Find(it.comment); c != nil && m.revCurrent(c) { + edit = fmt.Sprintf(" · %s edit", firstKey(k.Edit)) + } + } + return fmt.Sprintf("%s send %d · esc close · %s copy%s · %s delete · enter jump", + firstKey(k.Send), m.comments.Len(), firstKey(k.Copy), edit, + firstKey(k.Delete)) +} diff --git a/tui/commitpick.go b/tui/commitpick.go new file mode 100644 index 0000000..697c4e4 --- /dev/null +++ b/tui/commitpick.go @@ -0,0 +1,123 @@ +package tui + +// The commit picker picks a commit or a range of commits for the commits +// scope. + +import ( + "fmt" + "slices" + + "charm.land/bubbles/v2/key" + tea "charm.land/bubbletea/v2" + + "github.com/rednafi/rexdiff/vcs" +) + +// openCommitPicker lets the user pick a commit or a range of commits for +// the commits scope, as in herdr-reviewr. It lists the first-parent +// commits after the fork point of the base, the newest first. On the base +// itself, or with no fork point, it lists the last commits. The current +// pick has the cursor and the anchor. +func (m *model) openCommitPicker() { + if m.tab == tabPR { + return + } + since, err := m.repo.MergeBaseCommit(m.ctx, m.base) + if head, herr := m.repo.Resolve(m.ctx, "HEAD"); err != nil || herr != nil || since == head { + since = "" + } + commits, err := m.repo.Commits(m.ctx, since) + if err != nil { + m.flash("commit list failed: " + err.Error()) + return + } + title := fmt.Sprintf("commits · last %d", vcs.LastCommits) + if since != "" { + title = fmt.Sprintf("commits · %d over %s", len(commits), m.base) + } + ov := newOverlay(overlayCommits, title) + var items []pickItem + for _, c := range commits { + items = append(items, pickItem{ + label: c.Short + " " + c.Subject, + detail: c.Author + ", " + c.When, + id: c.SHA, + }) + } + ov.setItems(items) + isSHA := func(sha string) func(pickItem) bool { + return func(it pickItem) bool { return it.id == sha } + } + newest := slices.IndexFunc(items, isSHA(m.to)) + oldest := slices.IndexFunc(items, isSHA(m.from)) + if m.to != "" && newest >= 0 && oldest >= 0 { + ov.cur = newest + if oldest > newest { + ov.mark = oldest + } + } + m.open(ov) +} + +// updateCommitPicker handles a key in the commit picker, as herdr-reviewr +// does. The key of Select sets or clears the anchor of a range. Esc clears +// the anchor, else it closes the picker. +func (m *model) updateCommitPicker(msg tea.KeyPressMsg) tea.Cmd { + ov, k := m.overlay, m.keys + switch { + case key.Matches(msg, overlayKeys.Close) && ov.mark >= 0: + ov.mark = -1 + case key.Matches(msg, overlayKeys.Close): + m.closeOverlay() + case key.Matches(msg, overlayKeys.Choose): + return m.chooseOverlay() + case key.Matches(msg, k.Down): + ov.move(1) + case key.Matches(msg, k.Up): + ov.move(-1) + case key.Matches(msg, k.PageDown): + ov.move(pickerPage) + case key.Matches(msg, k.PageUp): + ov.move(-pickerPage) + case key.Matches(msg, k.HalfDown): + ov.move(pickerHalf) + case key.Matches(msg, k.HalfUp): + ov.move(-pickerHalf) + case key.Matches(msg, k.Select) && ov.cur < len(ov.shown): + if ov.mark == ov.shown[ov.cur] { + ov.mark = -1 + } else { + ov.mark = ov.shown[ov.cur] + } + } + return nil +} + +// commitHint returns the keys of the commit picker, as the footer of +// herdr-reviewr shows them. +func (m *model) commitHint() string { + ov, k := m.overlay, m.keys + if len(ov.shown) == 0 { + return "esc cancel" + } + open, esc := "open", "cancel" + if ov.mark >= 0 { + esc = "clear" + if n := max(ov.mark, ov.cur) - min(ov.mark, ov.cur) + 1; n > 1 { + open = fmt.Sprintf("open %d", n) + } + } + return fmt.Sprintf("enter %s · esc %s · %s %s move · %s select", + open, esc, firstKey(k.Down), firstKey(k.Up), firstKey(k.Select)) +} + +// commitRange returns the oldest and the newest commit that the commit +// picker picks with item it. That is one commit, or the range from the +// mark to it. The list shows the newest commit first. +func (o *overlay) commitRange(it *pickItem) (oldest, newest string) { + if o.mark < 0 { + return it.id, it.id + } + a, b := o.mark, o.shown[o.cur] + return o.items[max(a, b)].id, o.items[min(a, b)].id +} diff --git a/tui/config.go b/tui/config.go index 522dbb1..c879f4f 100644 --- a/tui/config.go +++ b/tui/config.go @@ -3,7 +3,7 @@ package tui import ( "cmp" "encoding/json/jsontext" - json "encoding/json/v2" + "encoding/json/v2" "errors" "fmt" "reflect" @@ -97,8 +97,8 @@ type config struct { FileListWidth int `json:"file_list_width"` // DiffSigns marks a changed line with + or -, in place of a bar. DiffSigns bool `json:"diff_signs"` - // FocusAgent tells if the focus moves to the agent after a send. Nil - // means true. + // FocusAgent is true if the focus moves to the agent after a send. + // Nil means true. FocusAgent *bool `json:"focus_agent_after_send"` // GitHubHost, GitLabHost, and AzureHost are bare hostnames of // self-hosted forges. @@ -299,7 +299,7 @@ func (c config) checkTexts(set map[string]jsontext.Value) error { } for _, k := range commands { blank := set[k.key] != nil && strings.TrimSpace(k.value) == "" - if blank || !placeholders(k.value, k.known...) { + if blank || !onlyPlaceholders(k.value, k.known...) { return invalid(k.key, k.want, k.value) } } @@ -317,7 +317,7 @@ func (c config) checkHosts(set map[string]jsontext.Value) error { {"azure_devops_host", c.AzureHost}, } for _, k := range hosts { - if set[k.key] != nil && !hostname(k.value) { + if set[k.key] != nil && !isHostname(k.value) { return invalid(k.key, "a bare hostname", k.value) } } @@ -352,11 +352,11 @@ func (c config) checkKeybindings() error { for _, key := range b.key.Keys() { switch a, ok := first[key]; { case ok && a == b.name: - return fmt.Errorf("invalid value for keybindings: `%s` is bound twice to `%s`", - herdrKeyName(key), b.name) + return fmt.Errorf("invalid value for keybindings: %q is bound twice to %q", + herdrReviewrKeyName(key), b.name) case ok: - return fmt.Errorf("invalid value for keybindings: `%s` is bound to both `%s` and `%s`", - herdrKeyName(key), a, b.name) + return fmt.Errorf("invalid value for keybindings: %q is bound to both %q and %q", + herdrReviewrKeyName(key), a, b.name) } first[key] = b.name } @@ -370,9 +370,9 @@ func invalid(key, want, value string) error { return fmt.Errorf("invalid value for %s: expected %s, not %q", key, want, value) } -// placeholders reports whether each { in command opens one of the known -// placeholders, for example {file}. -func placeholders(command string, known ...string) bool { +// onlyPlaceholders reports whether each { in command opens one of the +// known placeholders, for example {file}. +func onlyPlaceholders(command string, known ...string) bool { for _, s := range strings.Split(command, "{")[1:] { name, _, ok := strings.Cut(s, "}") if !ok || !slices.Contains(known, name) { @@ -388,22 +388,22 @@ const ( maxHostLabel = 63 ) -// hostname reports whether s is a bare DNS name, for example +// isHostname reports whether s is a bare DNS name, for example // "git.example.com", with no scheme, port, or path. -func hostname(s string) bool { +func isHostname(s string) bool { if len(s) > maxHostname { return false } for label := range strings.SplitSeq(s, ".") { - if !hostLabel(label) { + if !isHostLabel(label) { return false } } return true } -// hostLabel reports whether s is one valid label of a DNS name. -func hostLabel(s string) bool { +// isHostLabel reports whether s is one valid label of a DNS name. +func isHostLabel(s string) bool { if s == "" || len(s) > maxHostLabel || s[0] == '-' || s[len(s)-1] == '-' { return false } @@ -413,8 +413,8 @@ func hostLabel(s string) bool { }) } -// focusAgent tells if the focus moves to the agent after a send. -func (c config) focusAgent() bool { return c.FocusAgent == nil || *c.FocusAgent } +// focusesAgent reports whether the focus moves to the agent after a send. +func (c config) focusesAgent() bool { return c.FocusAgent == nil || *c.FocusAgent } // choice returns an error if value is not one of allowed. key is the name // of the value in the error. diff --git a/tui/editor.go b/tui/editor.go index d8eb8eb..25b0f28 100644 --- a/tui/editor.go +++ b/tui/editor.go @@ -31,7 +31,7 @@ func (m *model) openEditor(path string, line int) tea.Cmd { } ed, err := editor.Resolve(m.cfg.Editor, os.Getenv("VISUAL"), os.Getenv("EDITOR"), git, abs, line) if err != nil { - m.flash(err.Error()) + m.flash("editor failed: " + err.Error()) return nil } // The editor makes the file again when it saves, so do not open a @@ -41,7 +41,7 @@ func (m *model) openEditor(path string, line int) tea.Cmd { return nil } if _, err := exec.LookPath(ed.Program); err != nil { - m.flash("editor not found: " + ed.Program) + m.flash(ed.Program + " is not installed") return nil } m.log.Debug("editor", "command", ed.Script, "window", ed.Window) @@ -55,7 +55,8 @@ func (m *model) openEditor(path string, line int) tea.Cmd { return func() tea.Msg { ctx, cancel := context.WithTimeout(ctx, rexTimeout) defer cancel() - return splitMsg{path, ed.Script, c.Split(ctx, root, "sh", "-c", ed.Script)} + err := c.Split(ctx, root, "sh", "-c", ed.Script) + return splitMsg{path: path, script: ed.Script, err: err} } } @@ -114,7 +115,7 @@ func detach(what, name string, args ...string) (tea.Cmd, error) { if last := s[strings.LastIndexByte(s, '\n')+1:]; last != "" { err = fmt.Errorf("%w: %s", err, last) } - return detachedMsg{what, err} + return detachedMsg{what: what, err: err} }, nil } diff --git a/tui/find.go b/tui/find.go index d254afc..50574e8 100644 --- a/tui/find.go +++ b/tui/find.go @@ -37,17 +37,17 @@ func (m *model) findable() bool { } p := m.cur() for i := range p.rows { - if p.content(i) { + if p.hasContent(i) { return true } } return false } -// content reports whether row i of p shows text that a find can match. +// hasContent reports whether row i of p shows text that a find can match. // A note has no such text. A row of rendered markdown has no line, so // its text is the rendered line. -func (p *pane) content(i int) bool { +func (p *pane) hasContent(i int) bool { r := p.rows[i] return r.Old > 0 || r.New > 0 || r.Fold.Lines > 0 || (p.path == "" && i < len(p.lines)) } @@ -152,7 +152,7 @@ func (m *model) findHits(q string) []findHit { (r.Old > 0 && search.Match(line(old, r.Old), q)) { hits = append(hits, findHit{i, 0}) } - case p.content(i): + case p.hasContent(i): if search.Match(ansi.Strip(p.lines[i]), q) { hits = append(hits, findHit{i, 0}) } diff --git a/tui/keys.go b/tui/keys.go index 502afea..f1c9354 100644 --- a/tui/keys.go +++ b/tui/keys.go @@ -1,39 +1,40 @@ package tui import ( + "slices" "strings" "unicode" "unicode/utf8" "charm.land/bubbles/v2/help" "charm.land/bubbles/v2/key" - "charm.land/lipgloss/v2" "github.com/charmbracelet/x/ansi" ) -// keyMap uses the action names and the default keys of herdr-reviewr. The -// keybindings setting uses the same names. The settings do not change the -// keys of the comment box and of the find. +// keyMap uses the action names and the default keys of herdr-reviewr. +// The fields have the names of the actions in the keybindings setting. +// Focus and Update are actions of rexdiff only. The settings do not change +// the keys of the comment box and of the find. type keyMap struct { // Move. - Down, Up, PageDown, PageUp, HalfDown, HalfUp, Left, Right key.Binding - NextHunk, PrevHunk, NextFile, PrevFile, Focus key.Binding + Down, Up, PageDown, PageUp, HalfDown, HalfUp, Collapse, Expand key.Binding + NextHunk, PrevHunk, NextFile, PrevFile, Focus key.Binding // Scopes and tabs. ScopeUncommitted, ScopeBranch, ScopeLastTurn, ScopeCommits key.Binding - BasePick, CommitPick, TabChanges, TabFiles, TabPR key.Binding + BasePick, CommitPick, TabChanges, TabAllFiles, TabPR key.Binding // Comments. Select, Comment, Edit, Delete, NextComment, PrevComment key.Binding Comments, Send, Copy key.Binding // View and other actions. - Search, Find, GotoLine, Rendered, Split, Wrap key.Binding - FileListPosition, FileListHide, FileListGrow, FileListShrink key.Binding - OpenPR, Refresh, Keys, Quit, QuitDiscard key.Binding - // Upgrade installs a newer release. It works only while the footer + Search, Find, GotoLine, Rendered, Split, Wrap key.Binding + NavigatorPosition, NavigatorHide, NavigatorGrow, NavigatorShrink key.Binding + OpenPR, Refresh, Keys, Quit, QuitDiscard key.Binding + // Update installs a newer release. It works only while the footer // tells about a newer release. - Upgrade key.Binding + Update key.Binding // The comment box. Cancel also clears the selection. Save, Newline, Cancel key.Binding @@ -51,6 +52,9 @@ func hint(b key.Binding, helpKey, desc string) key.Binding { return b } +// defaultKeys returns the keys of herdr-reviewr, with the help text of +// each action. Some actions share one help label, for example "j/k move". +// Then the label is on the first action of the pair. func defaultKeys() keyMap { return keyMap{ Down: bind([]string{"j", "down"}, "j/k", "move"), @@ -64,8 +68,8 @@ func defaultKeys() keyMap { NextFile: bind([]string{"f"}, "f/F", "next/prev file"), PrevFile: bind([]string{"F"}, "F", "prev file"), Focus: bind([]string{"tab"}, "tab", "switch pane"), - Left: bind([]string{"left"}, "←/→", "scroll sideways"), - Right: bind([]string{"right"}, "→", "scroll right"), + Collapse: bind([]string{"left"}, "←/→", "scroll sideways"), + Expand: bind([]string{"right"}, "→", "scroll right"), ScopeUncommitted: bind([]string{"u"}, "u", "uncommitted"), ScopeBranch: bind([]string{"b"}, "b", "branch"), @@ -74,12 +78,12 @@ func defaultKeys() keyMap { BasePick: bind([]string{"B"}, "B", "pick base branch"), CommitPick: bind([]string{"G"}, "G", "pick commits"), TabChanges: bind([]string{"1"}, "1/2/3", "changes/files/PR"), - TabFiles: bind([]string{"2"}, "2", "all files"), + TabAllFiles: bind([]string{"2"}, "2", "all files"), TabPR: bind([]string{"3"}, "3", "PR"), Select: bind([]string{"v"}, "v", "select lines"), Comment: bind([]string{"c"}, "c", "comment"), - Edit: bind([]string{"e"}, "e", "edit comment / open editor"), + Edit: bind([]string{"e"}, "e", "edit comment/open editor"), Delete: bind([]string{"d"}, "d", "delete comment"), NextComment: bind([]string{"n"}, "n/N", "next/prev comment"), PrevComment: bind([]string{"N"}, "N", "prev comment"), @@ -87,22 +91,22 @@ func defaultKeys() keyMap { Send: bind([]string{"s", "S"}, "s", "send to agent"), Copy: bind([]string{"y", "Y"}, "y", "copy comments"), - Search: bind([]string{"/"}, "/", "search files & code"), - Find: bind([]string{"ctrl+f"}, "ctrl+f", "find in file"), - GotoLine: bind([]string{":"}, ":", "go to line"), - Rendered: bind([]string{"m"}, "m", "rendered markdown"), - Split: bind([]string{"|"}, "|", "side by side"), - Wrap: bind([]string{"w"}, "w", "wrap lines"), - FileListPosition: bind([]string{"p"}, "p", "move file list"), - FileListHide: bind([]string{"z"}, "z", "hide file list"), - FileListGrow: bind([]string{"<"}, "", "widen/narrow list"), - FileListShrink: bind([]string{">"}, ">", "narrow list"), - OpenPR: bind([]string{"o"}, "o", "open PR in browser"), - Refresh: bind([]string{"r"}, "r", "refresh"), - Upgrade: bind([]string{"U"}, "U", "update rexdiff"), - Keys: bind([]string{"?"}, "?", "all keys"), - Quit: bind([]string{"q"}, "q", "quit"), - QuitDiscard: bind([]string{"Q"}, "Q", "quit, drop comments"), + Search: bind([]string{"/"}, "/", "search files and code"), + Find: bind([]string{"ctrl+f"}, "ctrl+f", "find in file"), + GotoLine: bind([]string{":"}, ":", "go to line"), + Rendered: bind([]string{"m"}, "m", "rendered markdown"), + Split: bind([]string{"|"}, "|", "side by side"), + Wrap: bind([]string{"w"}, "w", "wrap lines"), + NavigatorPosition: bind([]string{"p"}, "p", "move list"), + NavigatorHide: bind([]string{"z"}, "z", "hide list"), + NavigatorGrow: bind([]string{"<"}, "", "resize list"), + NavigatorShrink: bind([]string{">"}, ">", "narrow list"), + OpenPR: bind([]string{"o"}, "o", "open PR in browser"), + Refresh: bind([]string{"r"}, "r", "refresh"), + Update: bind([]string{"U"}, "U", "update rexdiff"), + Keys: bind([]string{"?"}, "?", "all keys"), + Quit: bind([]string{"q"}, "q", "quit"), + QuitDiscard: bind([]string{"Q"}, "Q", "quit, drop comments"), Save: bind([]string{"enter"}, "enter", "save"), Newline: bind( @@ -114,6 +118,8 @@ func defaultKeys() keyMap { } } +// overlayKeyMap has the keys of the overlays. The settings do not change +// them. type overlayKeyMap struct { Choose, Close, Up, Down key.Binding @@ -150,8 +156,8 @@ type binding struct { // bindings returns each action of c with its key binding in k, in the // order of the table of herdr-reviewr. The check of the keybindings // setting uses this order to name the actions of a key that two actions -// use. herdr-reviewr has no focus action. The upgrade is last. Its key -// is fixed, and the check keeps it free. +// use. herdr-reviewr has no focus action. The update is last. Its key is +// fixed, and the check keeps it free. func (k *keyMap) bindings(c keybindings) []binding { return []binding{ {"down", c.Down, &k.Down}, @@ -160,8 +166,8 @@ func (k *keyMap) bindings(c keybindings) []binding { {"prev-hunk", c.PrevHunk, &k.PrevHunk}, {"next-file", c.NextFile, &k.NextFile}, {"prev-file", c.PrevFile, &k.PrevFile}, - {"collapse", c.Collapse, &k.Left}, - {"expand", c.Expand, &k.Right}, + {"collapse", c.Collapse, &k.Collapse}, + {"expand", c.Expand, &k.Expand}, {"page-up", c.PageUp, &k.PageUp}, {"page-down", c.PageDown, &k.PageDown}, {"half-up", c.HalfUp, &k.HalfUp}, @@ -174,15 +180,15 @@ func (k *keyMap) bindings(c keybindings) []binding { {"base-pick", c.BasePick, &k.BasePick}, {"commit-pick", c.CommitPick, &k.CommitPick}, {"tab-changes", c.TabChanges, &k.TabChanges}, - {"tab-all-files", c.TabAllFiles, &k.TabFiles}, + {"tab-all-files", c.TabAllFiles, &k.TabAllFiles}, {"tab-pr", c.TabPR, &k.TabPR}, {"wrap", c.Wrap, &k.Wrap}, {"rendered", c.Rendered, &k.Rendered}, {"split", c.Split, &k.Split}, - {"navigator-position", c.NavigatorPosition, &k.FileListPosition}, - {"navigator-hide", c.NavigatorHide, &k.FileListHide}, - {"navigator-grow", c.NavigatorGrow, &k.FileListGrow}, - {"navigator-shrink", c.NavigatorShrink, &k.FileListShrink}, + {"navigator-position", c.NavigatorPosition, &k.NavigatorPosition}, + {"navigator-hide", c.NavigatorHide, &k.NavigatorHide}, + {"navigator-grow", c.NavigatorGrow, &k.NavigatorGrow}, + {"navigator-shrink", c.NavigatorShrink, &k.NavigatorShrink}, {"select", c.Select, &k.Select}, {"comment", c.Comment, &k.Comment}, {"edit", c.Edit, &k.Edit}, @@ -200,15 +206,18 @@ func (k *keyMap) bindings(c keybindings) []binding { {"refresh", c.Refresh, &k.Refresh}, {"quit", c.Quit, &k.Quit}, {"quit-discard", c.QuitDiscard, &k.QuitDiscard}, - {"upgrade", nil, &k.Upgrade}, + {"update", nil, &k.Update}, } } // applyConfig sets the keys of each action that c sets. The check of the -// setting accepts each key, so keyName does not fail. +// setting accepts each key, so keyName does not fail. The help shows the +// first key of a changed action, as herdr-reviewr spells it. A label of a +// pair, for example "j/k move", shows the first key of each action. func (k *keyMap) applyConfig(c keybindings) { + changed := map[*key.Binding]bool{} for _, b := range k.bindings(c) { - if b.keys == nil { + if len(b.keys) == 0 { continue } keys := make([]string, len(b.keys)) @@ -216,21 +225,46 @@ func (k *keyMap) applyConfig(c keybindings) { keys[i], _ = keyName(s) } b.key.SetKeys(keys...) - if len(b.keys) > 0 { - b.key.SetHelp(b.keys[0], b.key.Help().Desc) + b.key.SetHelp(firstKey(*b.key), b.key.Help().Desc) + changed[b.key] = true + } + for _, group := range k.pairs() { + if !slices.ContainsFunc(group, func(b *key.Binding) bool { return changed[b] }) { + continue } + names := make([]string, len(group)) + for i, b := range group { + names[i] = firstKey(*b) + } + group[0].SetHelp(strings.Join(names, "/"), group[0].Help().Desc) + } +} + +// pairs returns the groups of actions that share one help label, for +// example "j/k move". The label is on the first action of each group. +func (k *keyMap) pairs() [][]*key.Binding { + return [][]*key.Binding{ + {&k.Down, &k.Up}, + {&k.HalfDown, &k.HalfUp}, + {&k.NextHunk, &k.PrevHunk}, + {&k.NextFile, &k.PrevFile}, + {&k.Collapse, &k.Expand}, + {&k.TabChanges, &k.TabAllFiles, &k.TabPR}, + {&k.NextComment, &k.PrevComment}, + {&k.NavigatorGrow, &k.NavigatorShrink}, } } // namedKeys are the names of the keys that are not one character, as -// herdr-reviewr spells them, with the names that bubbletea uses. -var namedKeys = []struct{ name, tea string }{ - {"left", "left"}, - {"right", "right"}, - {"up", "up"}, - {"down", "down"}, - {"pageup", "pgup"}, - {"pagedown", "pgdown"}, +// herdr-reviewr spells them, with the names that bubbletea uses and the +// labels on the screen. +var namedKeys = []struct{ name, tea, label string }{ + {"left", "left", "←"}, + {"right", "right", "→"}, + {"up", "up", "↑"}, + {"down", "down", "↓"}, + {"pageup", "pgup", "PageUp"}, + {"pagedown", "pgdown", "PageDown"}, } // keyName returns the bubbletea name of the key s of the keybindings @@ -252,9 +286,9 @@ func keyName(s string) (name string, ok bool) { return s, true } -// herdrKeyName returns the bubbletea key name as herdr-reviewr spells it, -// for example "pageup" for "pgup". -func herdrKeyName(name string) string { +// herdrReviewrKeyName returns the bubbletea key name as herdr-reviewr +// spells it, for example "pageup" for "pgup". +func herdrReviewrKeyName(name string) string { mod, rest := cutModifier(name) for _, k := range namedKeys { if rest == k.tea { @@ -291,7 +325,7 @@ type helpKeys struct { tab tab split bool visual bool - onFold bool // the cursor is on a fold + atFold bool // the cursor is on a fold armed int // the direction of an armed crossing, or 0 } @@ -317,14 +351,15 @@ func (h helpKeys) ShortHelp() []key.Binding { case h.visual: return []key.Binding{ k.Comment, - hint(k.Down, "j/k", "extend"), - hint(k.Cancel, "esc", "clear"), + hint(k.Down, k.Down.Help().Key, "extend"), + hint(k.Cancel, firstKey(k.Cancel), "clear"), } case h.tab == tabPR: return []key.Binding{k.Down, k.OpenPR, k.Refresh, k.TabChanges, k.Keys, k.Quit} - case h.onFold: + case h.atFold: return []key.Binding{ - hint(k.Right, k.Right.Help().Key, "show the lines"), k.Comment, k.Send, k.NextHunk, k.Keys, k.Quit, + hint(k.Expand, firstKey(k.Expand), "show lines"), + k.Comment, k.Send, k.NextHunk, k.Keys, k.Quit, } } return []key.Binding{k.Comment, k.Send, k.NextHunk, k.NextFile, k.Split, k.Keys, k.Quit} @@ -334,7 +369,7 @@ func (h helpKeys) ShortHelp() []key.Binding { func (h helpKeys) FullHelp() [][]key.Binding { k := h.k move := []key.Binding{ - k.Down, k.HalfDown, k.NextHunk, k.NextFile, k.Focus, k.Left, k.GotoLine, + k.Down, k.HalfDown, k.NextHunk, k.NextFile, k.Focus, k.Collapse, k.GotoLine, } scopes := []key.Binding{ k.TabChanges, k.ScopeUncommitted, k.ScopeBranch, k.ScopeLastTurn, k.ScopeCommits, @@ -344,7 +379,7 @@ func (h helpKeys) FullHelp() [][]key.Binding { k.Select, k.Comment, k.Edit, k.Delete, k.NextComment, k.Comments, k.Send, k.Copy, } view := []key.Binding{ - k.Search, k.Find, k.Rendered, k.Split, k.Wrap, k.FileListPosition, k.FileListHide, k.FileListGrow, + k.Search, k.Find, k.Rendered, k.Split, k.Wrap, k.NavigatorPosition, k.NavigatorHide, k.NavigatorGrow, } other := []key.Binding{k.OpenPR, k.Refresh, k.Keys, k.Quit} return [][]key.Binding{move, scopes, comments, view, other} @@ -353,12 +388,26 @@ func (h helpKeys) FullHelp() [][]key.Binding { // newHelp styles the footer with the terminal palette. func newHelp() help.Model { h := help.New() - keyS := lipgloss.NewStyle().Bold(true) - descS := lipgloss.NewStyle().Foreground(lipgloss.Color("8")) - h.Styles.ShortKey, h.Styles.FullKey = keyS, keyS - h.Styles.ShortDesc, h.Styles.FullDesc = descS, descS - h.Styles.ShortSeparator, h.Styles.FullSeparator = descS, descS - h.Styles.Ellipsis = descS + h.Styles.ShortKey, h.Styles.FullKey = boldStyle, boldStyle + h.Styles.ShortDesc, h.Styles.FullDesc = dimStyle, dimStyle + h.Styles.ShortSeparator, h.Styles.FullSeparator = dimStyle, dimStyle + h.Styles.Ellipsis = dimStyle h.ShortSeparator, h.FullSeparator = " ", " " return h } + +// firstKey returns the label of the first key of b, as herdr-reviewr +// shows it, or "". +func firstKey(b key.Binding) string { + ks := b.Keys() + if len(ks) == 0 { + return "" + } + mod, rest := cutModifier(ks[0]) + for _, k := range namedKeys { + if rest == k.tea { + return mod + k.label + } + } + return ks[0] +} diff --git a/tui/model.go b/tui/model.go index 09bf010..e5f8fd6 100644 --- a/tui/model.go +++ b/tui/model.go @@ -3,10 +3,10 @@ package tui import ( "cmp" "context" - "errors" "image/color" "log/slog" "slices" + "strconv" "strings" "time" @@ -24,6 +24,7 @@ import ( "github.com/rednafi/rexdiff/vcs" ) +// tab is a tab of the program: Changes, Files, or PR. type tab int const ( @@ -52,6 +53,21 @@ const ( modeFind // the find band ) +// String returns the name of the mode, for the log. +func (md mode) String() string { + switch md { + case modeNormal: + return "normal" + case modeComment: + return "comment" + case modeOverlay: + return "overlay" + case modeFind: + return "find" + } + return "mode(" + strconv.Itoa(int(md)) + ")" +} + // pane is one view that scrolls and takes comments. It has the rendered // lines and the source lines that they show. type pane struct { @@ -80,7 +96,7 @@ func (p *pane) set(lines []string, rows []diff.Row) { } } -// cont tells if line i continues the source line of the line above. +// cont reports whether line i continues the source line of the line above. func (p *pane) cont(i int) bool { return i > 0 && i < len(p.rows) && p.rows[i].Continued } // head returns the first line of the source line that line i shows. @@ -184,10 +200,10 @@ type model struct { keys keyMap notice string // a problem that the footer shows, or "" - updater Updater // nil if rexdiff cannot update itself - release *update.Release // a newer release, or nil - phase updatePhase - restartState string // the file of the state for the restart, or "" + updater Updater // nil if rexdiff cannot update itself + release *update.Release // a newer release, or nil + phase updatePhase + resumePath string // the file of the resume state for the restart, or "" // The size of the terminal. Until the terminal tells it, w and h are // a guess, and sized is false. @@ -200,7 +216,7 @@ type model struct { ticks int // watch tells when the files or the refs change, or is nil. If it is - // nil, a tick reloads the current tab every pollEvery, after polled. + // nil, a tick reloads the current tab every reloadPoll, after polled. // After a failure of the watcher, a tick starts it again. watch *vcs.Watcher polled time.Time @@ -238,27 +254,30 @@ type model struct { // After a failed list, a tick lists the agents again, as in // herdr-reviewr. sampleRetry retryTimer - // agentsHere tells if an agent works in the repository, or is nil if - // the program does not know. + // agentsGen counts the reconnects to Rex. A list of the agents with + // an older gen is from before a gap. + agentsGen int + // agentsHere points to true if an agent works in the repository. It + // is nil if the program does not know. agentsHere *bool memberDirs map[string]bool // the working directories of the members - files []changedFile // the Changes tab - changeSel int // the file that shows in the Changes tab - shownTrees string // the two trees of files, to notice a change - changeTree fileListTree - allFiles []vcs.Entry // the Files tab - allSel int - fileTree fileListTree + changeFiles []changedFile // the Changes tab + changeSel int // the file that shows in the Changes tab + shownTrees string // the two trees of files, to notice a change + changeTree fileListTree + allFiles []vcs.Entry // the Files tab + allSel int + allTree fileListTree // viewed and viewedPath are the content and the path in the Files // tab, to notice edits. The path of the pane is "" for Markdown. viewed string viewedPath string - changes, filesPane, prPane pane - pr prState - prf prFetch - prPlace *savedPane // the place of prPane after a restart + changePane, allPane, prPane pane + pr prState + prf prFetch + prPlace *resumePane // the place of prPane after a restart split bool // show the diff side by side wrap bool @@ -350,7 +369,7 @@ func newModel(ctx context.Context, o Options, cfg config) model { // first. The picker still lists all the agents. m.beside, _ = o.Rex.Resolve(ctx, o.Agent) } - m.changes.anchor, m.filesPane.anchor, m.prPane.anchor = -1, -1, -1 + m.changePane.anchor, m.allPane.anchor, m.prPane.anchor = -1, -1, -1 m.cfg = cfg m.keys = defaultKeys() m.keys.applyConfig(cfg.Keybindings) @@ -369,6 +388,7 @@ type ( agents []rex.Agent err error send bool // true if the list is for a send, not to learn the states + gen int // the agentsGen at the start of the list } sentMsg struct { agent rex.Agent @@ -387,7 +407,7 @@ type ( err error } eventMsg rex.Event - // splitMsg tells if Rex opens the pane of the editor of path. + // splitMsg is the answer of Rex to the split for the editor of path. splitMsg struct { path, script string err error @@ -407,6 +427,14 @@ type ( what string err error } + // releaseMsg has a release that is newer than this rexdiff. + releaseMsg struct { + release update.Release + } + // updatedMsg reports the end of the update to the release. + updatedMsg struct { + err error + } ) // requestColors are the commands that ask the terminal for its colours. @@ -417,6 +445,9 @@ var requestColors = []tea.Cmd{ requestPalette, } +// tickInterval is the time between two ticks. +const tickInterval = time.Second + // tick returns a command that sends a tickMsg after d. func tick(d time.Duration) tea.Cmd { return tea.Tick(d, func(time.Time) tea.Msg { return tickMsg{} }) @@ -425,7 +456,7 @@ func tick(d time.Duration) tea.Cmd { // Init starts the ticks, asks for the colours of the terminal, and loads // the pull request and the agents. func (m *model) Init() tea.Cmd { - cmds := []tea.Cmd{tick(time.Second), m.requestPR(true)} + cmds := []tea.Cmd{tick(tickInterval), m.requestPR(true)} cmds = append(cmds, requestColors...) if m.rex != nil { cmds = append(cmds, m.listAgents(agentsMsg{})) @@ -453,7 +484,9 @@ func (m *model) treeIDs() (from, to, note string, err error) { switch m.scope { case scopeCommits: if m.to == "" { - return "", "", "no commits picked: press G to pick one or a range", nil + note := "no commits picked: press " + firstKey(m.keys.CommitPick) + + " to pick one or a range" + return "", "", note, nil } if from, err = m.repo.ParentTree(ctx, m.from); err != nil { return "", "", "", err @@ -509,7 +542,7 @@ func (m *model) loadChanges(force bool) { if err == nil && note == "" && same { return } - if err != nil && len(m.files) > 0 { + if err != nil && len(m.changeFiles) > 0 { m.flash("refresh failed: " + err.Error()) return } @@ -517,7 +550,7 @@ func (m *model) loadChanges(force bool) { note = err.Error() } if note != "" { - m.changes.note, m.files, m.shownTrees = note, nil, "" + m.changePane.note, m.changeFiles, m.shownTrees = note, nil, "" m.buildTrees() m.renderChanges() return @@ -526,14 +559,14 @@ func (m *model) loadChanges(force bool) { if f := m.selectedChange(); f != nil { selPath = f.Path } - prev := make(map[string]changedFile, len(m.files)) - for _, c := range m.files { + prev := make(map[string]changedFile, len(m.changeFiles)) + for _, c := range m.changeFiles { prev[c.Path] = c } - m.files = make([]changedFile, len(files)) - m.shownTrees, m.changeSel, m.changes.note = trees, -1, "" + m.changeFiles = make([]changedFile, len(files)) + m.shownTrees, m.changeSel, m.changePane.note = trees, -1, "" for i, f := range files { - c := &m.files[i] + c := &m.changeFiles[i] if p, ok := prev[f.Path]; ok && p.Old == f.Old && p.New == f.New { *c = p // the same change, so the counts stay } else if !f.Binary && !f.TooBig { @@ -548,10 +581,10 @@ func (m *model) loadChanges(force bool) { m.buildTrees() if f := m.selectedChange(); f == nil || f.Path != selPath { // Another file shows, so the cursor and the selection do not apply. - m.changes.cur, m.changes.top, m.changes.anchor = 0, 0, -1 + m.changePane.cur, m.changePane.top, m.changePane.anchor = 0, 0, -1 } - if len(m.files) == 0 { - m.changes.note = "no changes" + if len(m.changeFiles) == 0 { + m.changePane.note = "no changes" } m.renderChanges() } @@ -596,11 +629,11 @@ func (m *model) buildTrees() { } } -// Update handles a message. After an install, Update restarts the program +// Update handles a message. After an update, Update restarts the program // when no work can get lost. func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { cmd := m.handle(msg) - if m.phase != phaseInstalled { + if m.phase != phaseUpdated { return m, cmd } // The work of a tick runs again in the new process, so it is not @@ -626,7 +659,7 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { case tea.FocusMsg: m.reloadIfChanged() case tickMsg: - cmd = tea.Batch(tick(time.Second), m.onTick()) + cmd = tea.Batch(tick(tickInterval), m.onTick()) case tea.BackgroundColorMsg: if !sameColor(m.bg, msg.Color) { m.bg, m.dark = msg.Color, msg.IsDark() @@ -649,10 +682,10 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { cmd = m.onPR(msg) case grepMsg: m.onGrep(msg) - case *update.Release: - m.release = msg - case installedMsg: - m.onInstalled(msg) + case releaseMsg: + m.release = &msg.release + case updatedMsg: + m.onUpdated(msg) case editorDoneMsg: m.onEditorDone(msg) case detachedMsg: @@ -667,7 +700,7 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { case tea.MouseMotionMsg: m.onDrag(msg.Mouse()) case tea.MouseReleaseMsg: - cmd = m.onRelease() // the comment box can open below the screen + cmd = m.onMouseUp() // the comment box can open below the screen case tea.MouseWheelMsg: m.onWheel(msg.Mouse()) case tea.PasteMsg: @@ -684,7 +717,7 @@ func (m *model) handle(msg tea.Msg) tea.Cmd { // followCursor makes the panes keep the cursor on the screen again. A key // or a click can move the cursor. func (m *model) followCursor() { - m.changes.free, m.filesPane.free, m.prPane.free = false, false, false + m.changePane.free, m.allPane.free, m.prPane.free = false, false, false } // onKey gives a key to the part of the screen that takes the keys. @@ -708,60 +741,6 @@ func (m *model) onKey(msg tea.KeyPressMsg) tea.Cmd { return m.updateNormal(msg) } -// onGrep keeps the code matches of the search, but only if the search -// still shows their query. The list shows them in the code mode. -func (m *model) onGrep(msg grepMsg) { - ov := m.overlay - if ov == nil || ov.kind != overlaySearch || msg.gen != m.grepGen { - return - } - s := &ov.search - s.hits, s.hitsMore, s.err = msg.hits, msg.more, "" - if msg.err != nil { - // Show only the error, and no old results under it. - s.hits, s.hitsMore, s.err = nil, false, msg.err.Error() - } - // The list of the file matches stays, with its cursor. The chips - // show the count of the code matches. - if s.code { - ov.showSearch() - } -} - -// onPR shows the pull request that loadPR reads, unless a later read -// replaces it. After a read with a trailing request, onPR starts the next -// read. -func (m *model) onPR(msg prMsg) tea.Cmd { - f := &m.prf - if msg.gen != f.gen { - return nil - } - f.inFlight, f.cancel = false, nil - var next tea.Cmd - if f.trailing { - next = m.loadPR() - } - // As in herdr-reviewr, a failed read keeps the last good pull request. - // The end of the pull request is not a failure. - if msg.err != nil && m.pr.pr != nil && !errors.Is(msg.err, vcs.ErrNoPullRequest) { - m.pr.loading = false - m.flash("refresh failed: " + msg.err.Error()) - m.renderPR() - return next - } - m.pr = prState{pr: msg.pr} - if msg.err != nil { - m.pr.err = msg.err.Error() - } - m.renderPR() - // prPlace is from before a restart. - if p := m.prPlace; p != nil && msg.err == nil && msg.pr != nil { - m.prPlace = nil - m.prPane.restore(*p) - } - return next -} - // onPaste adds text to the comment box or to the input of the overlay. func (m *model) onPaste(text string) tea.Cmd { switch { @@ -786,16 +765,18 @@ const colorTicks = 3 // The waits of a reload, as in herdr-reviewr. const ( - // budgetFactor sets the pause after a reload on a tick. The next one - // waits this many times as long as the last one took. - budgetFactor = 20 - retryFirst = time.Second // the first wait after a failure - retryMax = time.Minute // the longest wait after a failure + // reloadPauseFactor sets the pause after a reload on a tick. The + // next reload waits this many times as long as the last one took. + // The pause of the watcher in vcs has the same value, but it is a + // different pause. Thus each package has its own constant. + reloadPauseFactor = 20 + retryFirst = time.Second // the first wait after a failure + retryMax = time.Minute // the longest wait after a failure ) -// pollEvery is the time between two reloads without a watcher, as in +// reloadPoll is the time between two reloads without a watcher, as in // herdr-reviewr. -const pollEvery = 5 * time.Second +const reloadPoll = 5 * time.Second // retryTimer tells when to try again after a failure. Each failure // doubles the wait, from retryFirst to retryMax. @@ -846,7 +827,7 @@ func (m *model) startWatch() error { } // watchChanges tells what the watcher sees. Without a watcher, it tells -// that both change every pollEvery. After an error, it drops the watcher +// that both change every reloadPoll. After an error, it drops the watcher // and tells that both change. func (m *model) watchChanges() vcs.Change { all := vcs.Change{Files: true, Refs: true} @@ -857,7 +838,7 @@ func (m *model) watchChanges() vcs.Change { } } if m.watch == nil { - if now.Sub(m.polled) < pollEvery { + if now.Sub(m.polled) < reloadPoll { return vcs.Change{} } m.polled = now @@ -887,7 +868,7 @@ func (m *model) onTick() tea.Cmd { m.filesOwed = m.filesOwed || ch.Files now := time.Now() m.reloadDue() - if m.status != "" && time.Now().After(m.statusTill) { + if m.status != "" && now.After(m.statusTill) { m.status = "" } var cmds []tea.Cmd @@ -922,7 +903,7 @@ func (m *model) reloadDue() { case m.tab == tabChanges && m.reloadOwed && !now.Before(m.reloadAt) && !now.Before(m.reloadRetry.at): m.reloadIfChanged() end := time.Now() - m.reloadAt = end.Add(budgetFactor * end.Sub(now)) + m.reloadAt = end.Add(reloadPauseFactor * end.Sub(now)) case m.tab == tabFiles && m.filesOwed: m.reloadFiles() // reloadFiles renders the file too case m.tab == tabFiles && m.watch == nil: @@ -934,28 +915,11 @@ func (m *model) reloadDue() { func (m *model) cur() *pane { switch m.tab { case tabFiles: - return &m.filesPane + return &m.allPane case tabPR: return &m.prPane } - return &m.changes -} - -// onPalette takes the red or the green from an OSC 4 reply. -func (m *model) onPalette(reply string) { - i, c, ok := paletteReply(reply) - if !ok { - return - } - switch { - case i == 1 && !sameColor(m.red, c): - m.red = c - case i == 2 && !sameColor(m.green, c): - m.green = c - default: - return - } - m.rerender() + return &m.changePane } // sameColor reports whether a and b are the same colour. Nil is the same diff --git a/tui/mouse.go b/tui/mouse.go index b83213c..c2ea0b2 100644 --- a/tui/mouse.go +++ b/tui/mouse.go @@ -41,8 +41,11 @@ func (m *model) onClick(mouse tea.Mouse) tea.Cmd { return nil } if y := mouse.Y - bodyY; y > m.bodyHeight() { // the footer, under the rule - return m.install() + return m.startUpdate() } + // The window of the next click starts after the work of this one, for + // example a copy. A slow copy then does not break a triple click. + defer func() { m.click.at = time.Now() }() if m.inList(mouse.X, mouse.Y) { if y := mouse.Y - m.listY(); y >= 1 { r := m.listStart(m.listRows()) + y - 1 @@ -82,7 +85,7 @@ func (m *model) clickMain(mouse tea.Mouse) tea.Cmd { } m.focusList = false p.cur, p.anchor = p.head(rowAt[y]), -1 - if m.onFold() { + if m.atFold() { m.expandFold(p.rows[p.cur].Fold) return nil } @@ -96,8 +99,8 @@ func (m *model) clickMain(mouse tea.Mouse) tea.Cmd { return nil } -// inList tells if the screen cell at column x and line y is on the file -// list. +// inList reports whether the screen cell at column x and line y is on +// the file list. func (m *model) inList(x, y int) bool { lw, ly := m.listWidth(), m.listY() return lw > 0 && x >= m.listX() && x < m.listX()+lw && y >= ly && y < ly+m.listRows() @@ -147,7 +150,8 @@ type clickChain struct { } // countClick adds a press to the chain and returns the count. A press on -// another cell, or after [clickWindow], starts a new chain. +// another cell, or after [clickWindow], starts a new chain. The time of +// the chain is the end of the last press. func (m *model) countClick(mouse tea.Mouse) int { c, now := m.click, time.Now() n := 1 @@ -231,9 +235,9 @@ func (m *model) copyChars(text string) { } } -// onRelease ends a drag. A drag on the line numbers opens the comment +// onMouseUp ends a drag. A drag on the line numbers opens the comment // box. A drag on the code copies the lines. -func (m *model) onRelease() tea.Cmd { +func (m *model) onMouseUp() tea.Cmd { d := m.drag m.drag.active = false p := m.cur() diff --git a/tui/nav.go b/tui/nav.go index 4616a70..10eb6e8 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -11,7 +11,6 @@ import ( tea "charm.land/bubbletea/v2" "github.com/rednafi/rexdiff/diff" - "github.com/rednafi/rexdiff/internal/termtext" "github.com/rednafi/rexdiff/vcs" ) @@ -87,7 +86,7 @@ func (m *model) scopeKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { switch { case key.Matches(msg, k.TabChanges): m.setTab(tabChanges) - case key.Matches(msg, k.TabFiles): + case key.Matches(msg, k.TabAllFiles): m.setTab(tabFiles) case key.Matches(msg, k.TabPR): m.setTab(tabPR) @@ -149,23 +148,23 @@ func (m *model) moveKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { m.stepFile(1) case key.Matches(msg, k.PrevFile): m.stepFile(-1) - case key.Matches(msg, k.Right) && m.onDir(): + case key.Matches(msg, k.Expand) && m.atDir(): m.setDir(true) - case key.Matches(msg, k.Left) && m.onDir(): + case key.Matches(msg, k.Collapse) && m.atDir(): m.setDir(false) - case key.Matches(msg, k.Right) && m.onFold(): + case key.Matches(msg, k.Expand) && m.atFold(): m.expandFold(p.rows[p.cur].Fold) - case key.Matches(msg, k.Right) && !m.wrap: + case key.Matches(msg, k.Expand) && !m.wrap: p.xoff += scrollStep m.rerender() - case key.Matches(msg, k.Left) && !m.wrap: + case key.Matches(msg, k.Collapse) && !m.wrap: p.xoff = max(p.xoff-scrollStep, 0) m.rerender() case key.Matches(msg, k.Wrap) && p.diff != nil: // The wrap key works only on a diff, because rendered markdown // has its own wrap. The sideways scroll works only without wrap. m.wrap = !m.wrap - m.changes.xoff, m.filesPane.xoff = 0, 0 + m.changePane.xoff, m.allPane.xoff = 0, 0 m.rerender() default: return nil, false @@ -246,20 +245,20 @@ func (m *model) viewKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { case m.splitAllowed(): m.flash("too narrow for split") } - case key.Matches(msg, k.FileListPosition): + case key.Matches(msg, k.NavigatorPosition): m.moveList() - case key.Matches(msg, k.FileListHide): + case key.Matches(msg, k.NavigatorHide): m.hideList() - case key.Matches(msg, k.FileListGrow): + case key.Matches(msg, k.NavigatorGrow): m.resizeList(listStep) - case key.Matches(msg, k.FileListShrink): + case key.Matches(msg, k.NavigatorShrink): m.resizeList(-listStep) case key.Matches(msg, k.OpenPR): return m.openPR(), true case key.Matches(msg, k.Refresh): return m.refresh(), true - case m.release != nil && key.Matches(msg, k.Upgrade): - return m.install(), true + case m.release != nil && key.Matches(msg, k.Update): + return m.startUpdate(), true default: return nil, false } @@ -359,12 +358,12 @@ func (m *model) setScope(s Scope) { // The files of the last scope do not show while the new one fails. m.tab, m.scope, m.folds, m.shownTrees = tabChanges, s, nil, "" m.reload() - m.changes.toStart() + m.changePane.toStart() m.armed = 0 } -// onFold tells if the cursor is on a fold of the Changes tab. -func (m *model) onFold() bool { +// atFold reports whether the cursor is on a fold of the Changes tab. +func (m *model) atFold() bool { p := m.cur() return m.tab == tabChanges && p.cur < len(p.rows) && p.rows[p.cur].Fold.Lines > 0 } @@ -386,8 +385,9 @@ func hash(s string) uint64 { return h.Sum64() } -// expanded tells if the lines of fold f of the file at path show. They show -// if the user expands the fold, or if a comment is on one of them. +// expanded reports whether the lines of fold f of the file at path show. +// They show if the user expands the fold, or if a comment is on one of +// them. func (m *model) expanded(path string, comments []*diff.Comment, f diff.Fold) bool { // A fold that overlaps a range shows. An undo of a change next to a // range makes a larger fold, which shows as a whole. @@ -411,7 +411,7 @@ func (m *model) expanded(path string, comments []*diff.Comment, f diff.Fold) boo // expandFold shows the lines of fold f in the Changes tab, and moves the // cursor to the first of them. The selection stays on its lines. func (m *model) expandFold(f diff.Fold) { - p := &m.changes + p := &m.changePane file := m.selectedChange() if file == nil { return @@ -449,18 +449,18 @@ func (m *model) pickFile(i int) { m.armed = 0 switch m.tab { case tabChanges: - if i < 0 || i >= len(m.files) { + if i < 0 || i >= len(m.changeFiles) { return } m.changeSel = i - m.changes.toStart() + m.changePane.toStart() m.renderChanges() case tabFiles: if i < 0 || i >= len(m.allFiles) { return } m.allSel = i - m.filesPane.toStart() + m.allPane.toStart() m.renderViewer() } m.drag = dragState{} @@ -474,7 +474,7 @@ func (m *model) pickFile(i int) { func (m *model) stepChange(d int) { armed := m.armed == d m.armed = 0 - p := &m.changes + p := &m.changePane if m.tab != tabChanges || p.anchor >= 0 { return } @@ -485,13 +485,13 @@ func (m *model) stepChange(d int) { target := m.crossTarget(d) if !armed { if target >= 0 { - m.armed, m.armedPath = d, m.files[target].Path + m.armed, m.armedPath = d, m.changeFiles[target].Path } return } // A reload can drop the armed file. isArmed := func(f changedFile) bool { return f.Path == m.armedPath } - if i := slices.IndexFunc(m.files, isArmed); i >= 0 { + if i := slices.IndexFunc(m.changeFiles, isArmed); i >= 0 { target = i } if target < 0 { @@ -530,7 +530,7 @@ func (m *model) crossTarget(d int) int { from = t.cur } for r := t.nextFile(from, d); r >= 0; r = t.nextFile(r, d) { - if i := t.rows[r].File; m.files[i].adds+m.files[i].dels > 0 { + if i := t.rows[r].File; m.changeFiles[i].adds+m.changeFiles[i].dels > 0 { return i } } @@ -581,12 +581,12 @@ func (m *model) jumpToComment(c *diff.Comment) { // the file has changes, else the Files tab. func (m *model) jumpTo(path string, s diff.Side, line int) { inChanges := func(f changedFile) bool { return f.Path == path } - if i := slices.IndexFunc(m.files, inChanges); i >= 0 { + if i := slices.IndexFunc(m.changeFiles, inChanges); i >= 0 { m.tab = tabChanges m.revealFile(path) m.pickFile(i) m.openFoldAt(s, line) - cursorToLine(&m.changes, s, line) + cursorToLine(&m.changePane, s, line) return } m.jumpToFile(path, s, line) @@ -594,7 +594,7 @@ func (m *model) jumpTo(path string, s diff.Side, line int) { // openFoldAt opens the fold of the Changes tab that has line on side s. func (m *model) openFoldAt(s diff.Side, line int) { - for _, r := range m.changes.rows { + for _, r := range m.changePane.rows { if f := r.Fold; f.Lines > 0 && line >= foldStart(f, s) && line <= foldEnd(f, s) { m.expandFold(f) return @@ -607,7 +607,7 @@ func (m *model) jumpToFile(path string, s diff.Side, line int) { m.loadFiles() i := slices.IndexFunc(m.allFiles, func(e vcs.Entry) bool { return e.Path == path }) if i < 0 { - m.flash("no such file: " + termtext.Quote(path)) + m.flash("no such file: " + path) return } m.tab = tabFiles @@ -617,7 +617,7 @@ func (m *model) jumpToFile(path string, s diff.Side, line int) { m.flash("the removed line is not in the file now") return } - cursorToLine(&m.filesPane, diff.SideNew, line) + cursorToLine(&m.allPane, diff.SideNew, line) } // cursorToLine puts the cursor of p on the row that shows line on side s. @@ -632,15 +632,15 @@ func (p *pane) rowOf(s diff.Side, line int) int { return slices.IndexFunc(p.rows, func(r diff.Row) bool { return r.Line(s) == line }) } -// gotoLine moves the cursor to the line in s, as herdr-reviewr does. s is -// digits or "$" for the last line. The line is clamped to the file, so -// "0" is the first line. The line numbers are of the new side, or of the -// old side if no row has a new line. gotoLine opens the fold that has the -// line. Without line numbers, for example in rendered markdown, s is the -// row on the screen. -func (m *model) gotoLine(s string) { +// gotoLine moves the cursor to the line in text, as herdr-reviewr does. +// text is digits or "$" for the last line. The line is clamped to the +// file, so "0" is the first line. The line numbers are of the new side, +// or of the old side if no row has a new line. gotoLine opens the fold +// that has the line. Without line numbers, for example in rendered +// markdown, text is the row on the screen. +func (m *model) gotoLine(text string) { p := m.cur() - n, ok := lineNumber(s) + n, ok := lineNumber(text) if !ok || len(p.rows) == 0 { return } @@ -660,17 +660,17 @@ func (m *model) gotoLine(s string) { if m.tab == tabChanges { m.openFoldAt(side, n) } - p.cur = lineRow(p.rows, n, side) + p.cur = lineRow(p.rows, side, n) } -// lineRow returns the row of line n on side. If no row has the line, it +// lineRow returns the row of line on side. If no row has the line, it // returns the first row with a larger line, else the last row with a // line. -func lineRow(rows []diff.Row, n int, side diff.Side) int { - if i := slices.IndexFunc(rows, func(r diff.Row) bool { return r.Line(side) == n }); i >= 0 { +func lineRow(rows []diff.Row, side diff.Side, line int) int { + if i := slices.IndexFunc(rows, func(r diff.Row) bool { return r.Line(side) == line }); i >= 0 { return i } - if i := slices.IndexFunc(rows, func(r diff.Row) bool { return r.Line(side) > n }); i >= 0 { + if i := slices.IndexFunc(rows, func(r diff.Row) bool { return r.Line(side) > line }); i >= 0 { return i } for i, r := range slices.Backward(rows) { @@ -681,8 +681,7 @@ func lineRow(rows []diff.Row, n int, side diff.Side) int { return len(rows) - 1 } -// foldStart and foldEnd return the first and the last line of fold f on -// side. foldEnd returns 0 for no fold. +// foldStart returns the first line of fold f on side. func foldStart(f diff.Fold, side diff.Side) int { if side == diff.SideOld { return f.Old @@ -690,6 +689,7 @@ func foldStart(f diff.Fold, side diff.Side) int { return f.New } +// foldEnd returns the last line of fold f on side, or 0 for no fold. func foldEnd(f diff.Fold, side diff.Side) int { if f.Lines == 0 { return 0 @@ -713,9 +713,9 @@ func lineNumber(s string) (n int, ok bool) { return n, true } -// lineKey reports whether the go-to-line prompt takes the key msg. It +// isLineKey reports whether the go-to-line prompt takes the key msg. It // takes a digit, "$", and the keys that move in the text or delete. -func lineKey(msg tea.KeyPressMsg) bool { +func isLineKey(msg tea.KeyPressMsg) bool { if msg.Mod&^tea.ModShift != 0 { return false } diff --git a/tui/overlay.go b/tui/overlay.go index e59470a..9544920 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -1,22 +1,18 @@ package tui import ( - "context" "fmt" - "slices" "strings" "charm.land/bubbles/v2/key" "charm.land/bubbles/v2/textinput" tea "charm.land/bubbletea/v2" "charm.land/lipgloss/v2" - "github.com/sahilm/fuzzy" "github.com/rednafi/rexdiff/diff" "github.com/rednafi/rexdiff/internal/search" "github.com/rednafi/rexdiff/internal/termtext" "github.com/rednafi/rexdiff/rex" - "github.com/rednafi/rexdiff/vcs" ) // overlayKind tells what an overlay is for. @@ -69,20 +65,6 @@ type overlay struct { rowsFrom, rowsTo int } -// searchState has the results of the search. As in herdr-reviewr, the -// search has two modes. It shows the files that match by name, or the -// lines of the code that contain the query. -type searchState struct { - code bool // the mode that shows the code matches - paths []string // the files that the search can find - files []string // the files that match - fileTotal int // the number of the files that match - hits []vcs.Match - hitsMore bool // git finds more matches than hits has - err string // the error of the code search - preview *preview -} - // newOverlay returns an overlay. If its kind has an input, the input has // the focus. func newOverlay(kind overlayKind, title string) *overlay { @@ -125,9 +107,7 @@ func (o *overlay) filter() { for i, it := range o.items { labels[i] = it.label + " " + it.detail } - for _, mt := range fuzzy.Find(q, labels) { - o.shown = append(o.shown, mt.Index) - } + o.shown = append(o.shown, search.Indices(q, labels)...) } o.cur = min(o.cur, max(len(o.shown)-1, 0)) } @@ -169,64 +149,6 @@ func (o *overlay) pickable(i int) bool { return o.kind != overlaySearch || o.items[o.shown[i]].id != "" } -// showSearch shows the results of the search in its mode, with the -// cursor on the first result. As in herdr-reviewr, the code matches show -// under a header for each file, and a "… more" row tells that the list -// does not show all the results. An error shows in place of the results. -func (o *overlay) showSearch() { - s := &o.search - var items []pickItem - switch { - case s.err != "": - case !s.code: - for _, p := range s.files { - items = append(items, pickItem{label: p, id: p}) - } - if s.fileTotal > len(s.files) { - items = append(items, pickItem{label: "… more"}) - } - default: - for i, h := range s.hits { - if i == 0 || h.Path != s.hits[i-1].Path { - items = append(items, pickItem{label: h.Path, head: true}) - } - items = append(items, pickItem{ - label: fmt.Sprintf("%5d: %s", h.Line, h.Text), - id: h.Path, - line: h.Line, - }) - } - if s.hitsMore { - items = append(items, pickItem{label: "… more"}) - } - } - o.setItems(items) - o.cur = 0 - if len(o.shown) > 0 && !o.pickable(0) { - o.move(1) - } -} - -// chips returns the chips of the modes of the search, as in -// herdr-reviewr: "files N │ code M". A "+" after M tells that git finds -// more matches. The chip of the mode in use is bright. -func (o *overlay) chips() string { - s := &o.search - files, code := "files", "code" - if s.err == "" { - files = fmt.Sprintf("files %d", s.fileTotal) - code = fmt.Sprintf("code %d", len(s.hits)) - if s.hitsMore { - code += "+" - } - } - on := cursorStyle.Underline(true) - if s.code { - return dimStyle.Render(files+" │ ") + on.Render(code) - } - return on.Render(files) + dimStyle.Render(" │ "+code) -} - // open shows ov and gives the keys to it. func (m *model) open(ov *overlay) { m.overlay, m.mode = ov, modeOverlay @@ -238,16 +160,6 @@ func (m *model) closeOverlay() { m.stopGrep() } -// stopGrep stops the code search that runs, if any. Its result then does -// not show. -func (m *model) stopGrep() { - m.grepGen++ - if m.grepCancel != nil { - m.grepCancel() - m.grepCancel = nil - } -} - // openInput opens a prompt of kind with the text value. func (m *model) openInput(kind overlayKind, title, value string) { ov := newOverlay(kind, title) @@ -261,254 +173,6 @@ func (m *model) openConfirmQuit() { m.open(newOverlay(overlayQuit, title)) } -// openSearch opens the search of the files and the code. With no query, -// it lists the files. -func (m *model) openSearch() { - ov := newOverlay(overlaySearch, "") - ov.input.Placeholder = "Search files and code…" - for _, e := range m.allFiles { - if !e.Ignored { - ov.search.paths = append(ov.search.paths, e.Path) - } - } - m.open(ov) - m.runSearch() -} - -// runSearch finds the files that match the query of the search, and -// starts a code search for the query. It stops the code search of the -// last query. Until the new code search ends, the old code matches show. -// An empty query finds no code. -func (m *model) runSearch() tea.Cmd { - ov := m.overlay - s, q := &ov.search, ov.input.Value() - s.files, s.fileTotal = search.Files(s.paths, m.recent, q, search.FileLimit) - s.err = "" - m.stopGrep() - if q == "" { - s.hits, s.hitsMore = nil, false - ov.showSearch() - return nil - } - ov.showSearch() - ctx, cancel := context.WithTimeout(m.ctx, search.CodeTimeout) - m.grepCancel = cancel - repo, gen := m.repo, m.grepGen - return func() tea.Msg { - defer cancel() - hits, more, err := repo.Grep(ctx, q, search.CodeLimit, search.CodeBudget) - return grepMsg{gen, hits, more, err} - } -} - -// addRecent puts path first in the list of the files that the search -// shows for an empty query. -func (m *model) addRecent(path string) { - rest := slices.DeleteFunc(m.recent, func(p string) bool { return p == path }) - m.recent = append([]string{path}, rest[:min(len(rest), search.FileLimit-1)]...) -} - -// openAgentPicker lets the user pick the agent to send to. The cursor -// starts on the agent of the last send, else the agent beside the pane. -func (m *model) openAgentPicker(agents []rex.Agent) { - ov := newOverlay(overlayAgents, "send to which agent?") - ov.agents = agents - var items []pickItem - armed := 0 - for i, a := range agents { - detail := a.Status.App + " · " + string(a.Status.State) - if a.Status.State == rex.StateBlocked { - detail = a.Status.App + " · at a prompt" - } - if a.Window != "" { - detail += " · " + a.Window - } - tag := "" - switch a.Block { - case m.lastSent: - tag, armed = "last used", i - case m.beside: - tag = "opened beside" - if m.lastSent == "" { - armed = i - } - } - items = append(items, pickItem{ - label: fmt.Sprintf("%d %s", i+1, a.Name), - detail: detail, - tag: tag, - id: a.Block, - }) - } - ov.setItems(items) - ov.cur = armed - m.open(ov) -} - -// openBasePicker lets the user pick the base of the branch scope. The -// current base has a tag. As in herdr-reviewr, it does nothing if the base -// comes from the flag. -func (m *model) openBasePicker() { - if m.baseFlag { - return - } - ov := newOverlay(overlayBase, "base branch for the branch scope (or type any ref)") - branches, err := m.repo.Branches(m.ctx) - if err != nil { - m.flash(err.Error()) - return - } - var items []pickItem - for _, b := range branches { - tag := "" - if b == m.base { - tag = "current" - } - items = append(items, pickItem{label: b, id: b, tag: tag}) - } - ov.setItems(items) - m.open(ov) -} - -// openCommitPicker lets the user pick a commit or a range of commits for -// the commits scope, as in herdr-reviewr. It lists the first-parent -// commits after the fork point of the base, the newest first. On the base -// itself, or with no fork point, it lists the last commits. The current -// pick has the cursor and the anchor. -func (m *model) openCommitPicker() { - if m.tab == tabPR { - return - } - since, err := m.repo.MergeBaseCommit(m.ctx, m.base) - if head, herr := m.repo.Resolve(m.ctx, "HEAD"); err != nil || herr != nil || since == head { - since = "" - } - commits, err := m.repo.Commits(m.ctx, since) - if err != nil { - m.flash(err.Error()) - return - } - title := fmt.Sprintf("commits · last %d", vcs.LastCommits) - if since != "" { - title = fmt.Sprintf("commits · %d over %s", len(commits), m.base) - } - ov := newOverlay(overlayCommits, title) - var items []pickItem - for _, c := range commits { - items = append(items, pickItem{ - label: c.Short + " " + c.Subject, - detail: c.Author + ", " + c.When, - id: c.SHA, - }) - } - ov.setItems(items) - isSHA := func(sha string) func(pickItem) bool { - return func(it pickItem) bool { return it.id == sha } - } - newest := slices.IndexFunc(items, isSHA(m.to)) - oldest := slices.IndexFunc(items, isSHA(m.from)) - if m.to != "" && newest >= 0 && oldest >= 0 { - ov.cur = newest - if oldest > newest { - ov.mark = oldest - } - } - m.open(ov) -} - -// updateCommitPicker handles a key in the commit picker, as herdr-reviewr -// does. The key of Select sets or clears the anchor of a range. Esc clears -// the anchor, else it closes the picker. -func (m *model) updateCommitPicker(msg tea.KeyPressMsg) tea.Cmd { - ov, k := m.overlay, m.keys - switch { - case key.Matches(msg, overlayKeys.Close) && ov.mark >= 0: - ov.mark = -1 - case key.Matches(msg, overlayKeys.Close): - m.closeOverlay() - case key.Matches(msg, overlayKeys.Choose): - return m.chooseOverlay() - case key.Matches(msg, k.Down): - ov.move(1) - case key.Matches(msg, k.Up): - ov.move(-1) - case key.Matches(msg, k.PageDown): - ov.move(pickerPage) - case key.Matches(msg, k.PageUp): - ov.move(-pickerPage) - case key.Matches(msg, k.HalfDown): - ov.move(pickerHalf) - case key.Matches(msg, k.HalfUp): - ov.move(-pickerHalf) - case key.Matches(msg, k.Select) && ov.cur < len(ov.shown): - if ov.mark == ov.shown[ov.cur] { - ov.mark = -1 - } else { - ov.mark = ov.shown[ov.cur] - } - } - return nil -} - -// commitHint returns the keys of the commit picker, as the footer of -// herdr-reviewr shows them. -func (m *model) commitHint() string { - ov, k := m.overlay, m.keys - if len(ov.shown) == 0 { - return "esc cancel" - } - open, esc := "open", "cancel" - if ov.mark >= 0 { - esc = "clear" - if n := max(ov.mark, ov.cur) - min(ov.mark, ov.cur) + 1; n > 1 { - open = fmt.Sprintf("open %d", n) - } - } - return fmt.Sprintf("enter %s · esc %s · %s %s move · %s select", - open, esc, firstKey(k.Down), firstKey(k.Up), firstKey(k.Select)) -} - -// firstKey returns the first key of b, as herdr-reviewr names it, or "". -func firstKey(b key.Binding) string { - if ks := b.Keys(); len(ks) > 0 { - return herdrKeyName(ks[0]) - } - return "" -} - -// openCommentList lists the comments, to jump to one, edit one, delete -// one, or send or copy them all. -func (m *model) openCommentList() { - if m.comments.Len() == 0 { - m.flash("no comments yet") - return - } - ov := newOverlay(overlayComments, "") - m.fillCommentList(ov) - m.open(ov) -} - -// fillCommentList sets the comments as the items of ov, and the count in -// the title, as in herdr-reviewr. -func (m *model) fillCommentList(ov *overlay) { - ov.title = fmt.Sprintf("Comments (%d)", m.comments.Len()) - var items []pickItem - for _, c := range m.comments.All() { - tag := "" - if m.stale(c) { - tag = "(stale)" - } - text, _, _ := strings.Cut(c.Text, "\n") - items = append(items, pickItem{ - label: c.Location(), - detail: text, - tag: tag, - comment: c.ID, - }) - } - ov.setItems(items) -} - // updateOverlay handles a key while an overlay is open. func (m *model) updateOverlay(msg tea.KeyPressMsg) tea.Cmd { ov, k := m.overlay, overlayKeys @@ -551,7 +215,7 @@ func (m *model) updateOverlay(msg tea.KeyPressMsg) tea.Cmd { return m.updateList(msg) } if ov.kind == overlayGoto { - if !lineKey(msg) { + if !isLineKey(msg) { return nil } // "$" stands alone, and a digit after "$" starts a number. @@ -590,52 +254,6 @@ func (m *model) updateQuit(msg tea.KeyPressMsg) tea.Cmd { return nil } -// updateCommentList handles a key in the comment list. The keys are those -// of herdr-reviewr. Enter also jumps to the comment. -func (m *model) updateCommentList(msg tea.KeyPressMsg) tea.Cmd { - ov, k := m.overlay, m.keys - it := ov.selected() - switch { - case key.Matches(msg, k.Comments, k.Cancel): - m.closeOverlay() - case key.Matches(msg, overlayKeys.Choose): - return m.chooseOverlay() - case key.Matches(msg, k.Down): - ov.down() - case key.Matches(msg, k.Up): - ov.up() - case key.Matches(msg, k.Send): - return m.startSend() - case key.Matches(msg, k.Copy): - m.copyComments() - case key.Matches(msg, k.Edit) && it != nil: - // As in herdr-reviewr, a comment on another diff takes no edit. - c := m.comments.Find(it.comment) - if c == nil || !m.revCurrent(c) { - return nil - } - row := ov.cur - m.closeOverlay() - m.jumpToComment(c) - m.focusList = false - if !m.showsLine(c) { - m.flash("the line of the comment does not show") - return nil - } - m.ensureVisible() - return m.editComment(c, row) - case key.Matches(msg, k.Delete) && it != nil: - m.comments.Remove(it.comment) - m.flash("comment deleted") - if m.comments.Len() == 0 { - m.closeOverlay() - return nil - } - m.fillCommentList(ov) - } - return nil -} - // updateList handles a key in an overlay that has no input. In the agent // picker, the digits 1 to 9 pick an agent. func (m *model) updateList(msg tea.KeyPressMsg) tea.Cmd { @@ -689,7 +307,7 @@ func (m *model) chooseOverlay() tea.Cmd { return nil } if err := m.repo.SaveBase(m.ctx, ref); err != nil { - m.flash(err.Error()) + m.flash("base save failed: " + err.Error()) return nil } m.base = ref @@ -719,44 +337,6 @@ func (m *model) chooseOverlay() tea.Cmd { return nil } -// commitRange returns the oldest and the newest commit that the commit -// picker picks with item it. That is one commit, or the range from the -// mark to it. The list shows the newest commit first. -func (o *overlay) commitRange(it *pickItem) (oldest, newest string) { - if o.mark < 0 { - return it.id, it.id - } - a, b := o.mark, o.shown[o.cur] - return o.items[max(a, b)].id, o.items[min(a, b)].id -} - -// agent returns the agent of item it of the agent picker. If it is nil, -// ok is false. -func (o *overlay) agent(it *pickItem) (a rex.Agent, ok bool) { - if it == nil { - return rex.Agent{}, false - } - i := slices.IndexFunc(o.agents, func(a rex.Agent) bool { return a.Block == it.id }) - if i < 0 { - return rex.Agent{}, false - } - return o.agents[i], true -} - -// baseRef returns the ref that the base picker picks, with the selected -// item it. A typed ref, for example a tag, wins over the first match. A -// match that the user moves to wins over the typed text. If the ref is -// not valid, ok is false. -func (m *model) baseRef(it *pickItem) (ref string, ok bool) { - ref = strings.TrimSpace(m.overlay.input.Value()) - _, err := m.repo.Resolve(m.ctx, ref) - if it != nil && (ref == "" || err != nil || m.overlay.cur > 0) { - ref = it.id - _, err = m.repo.Resolve(m.ctx, ref) - } - return ref, ref != "" && err == nil -} - // overlayBox renders the box of the overlay, and returns its position. // Row i of the list shows at line listY+i of the box, for mouse hits. func (m *model) overlayBox() (box string, x, y, listY int) { @@ -790,7 +370,7 @@ func (m *model) overlayBox() (box string, x, y, listY int) { } box = lipgloss.NewStyle(). Border(lipgloss.RoundedBorder()). - BorderForeground(lipgloss.Color("8")). + BorderForeground(dimColor). Padding(0, 1). Width(w). Render(strings.Join(lines, "\n")) @@ -804,23 +384,7 @@ func (m *model) overlayBox() (box string, x, y, listY int) { func (m *model) quitHint() string { k, n := m.keys, m.comments.Len() return fmt.Sprintf("%s quit (%d pending) · esc cancel · %s send %d · %s copy", - k.QuitDiscard.Help().Key, n, k.Send.Help().Key, n, k.Copy.Help().Key) -} - -// listHint returns the keys of the comment list, as the footer of -// herdr-reviewr shows them. The edit key shows only if the selected -// comment takes an edit. -func (m *model) listHint() string { - k := m.keys - edit := "" - if it := m.overlay.selected(); it != nil { - if c := m.comments.Find(it.comment); c != nil && m.revCurrent(c) { - edit = fmt.Sprintf(" · %s edit", k.Edit.Help().Key) - } - } - return fmt.Sprintf("%s send %d · esc close · %s copy%s · %s delete · enter jump", - k.Send.Help().Key, m.comments.Len(), k.Copy.Help().Key, edit, - k.Delete.Help().Key) + firstKey(k.QuitDiscard), n, firstKey(k.Send), n, firstKey(k.Copy)) } // overlayRows renders at most limit rows of the list of the overlay, diff --git a/tui/palette.go b/tui/palette.go index 0813033..c81503f 100644 --- a/tui/palette.go +++ b/tui/palette.go @@ -38,3 +38,20 @@ func paletteReply(s string) (i int, c color.Color, ok bool) { } return i, c, true } + +// onPalette takes the red or the green from an OSC 4 reply. +func (m *model) onPalette(reply string) { + i, c, ok := paletteReply(reply) + if !ok { + return + } + switch { + case i == 1 && !sameColor(m.red, c): + m.red = c + case i == 2 && !sameColor(m.green, c): + m.green = c + default: + return + } + m.rerender() +} diff --git a/tui/pr.go b/tui/pr.go index d40563d..b0c1eaa 100644 --- a/tui/pr.go +++ b/tui/pr.go @@ -5,6 +5,7 @@ package tui import ( "context" + "errors" "fmt" "strings" "time" @@ -70,7 +71,7 @@ func (m *model) loadPR() tea.Cmd { return func() tea.Msg { defer cancel() pr, err := repo.PullRequest(ctx, hosts) - return prMsg{gen, pr, err} + return prMsg{gen: gen, pr: pr, err: err} } } @@ -100,11 +101,11 @@ func (m *model) refsChanged() tea.Cmd { // prStateStyle returns the style that shows the state of a pull request. func prStateStyle(s vcs.PRState) lipgloss.Style { switch s { - case vcs.StateOpen: + case vcs.PROpen: return addStyle - case vcs.StateMerged: + case vcs.PRMerged: return headerStyle - case vcs.StateClosed: + case vcs.PRClosed: return delStyle } return dimStyle @@ -162,7 +163,7 @@ func (m *model) renderPR() { // prHeader returns the title line and the state line of pr. func prHeader(pr *vcs.PullRequest) []string { - title := lipgloss.NewStyle().Bold(true).Render(pr.Title) + title := boldStyle.Render(pr.Title) number := dimStyle.Render(fmt.Sprintf("#%d", pr.Number)) state := prStateStyle(pr.State).Render("● " + string(pr.State)) return []string{ @@ -196,3 +197,37 @@ func checkLines(checks []vcs.Check) []string { } return lines } + +// onPR shows the pull request that loadPR reads, unless a later read +// replaces it. After a read with a trailing request, onPR starts the next +// read. +func (m *model) onPR(msg prMsg) tea.Cmd { + f := &m.prf + if msg.gen != f.gen { + return nil + } + f.inFlight, f.cancel = false, nil + var next tea.Cmd + if f.trailing { + next = m.loadPR() + } + // As in herdr-reviewr, a failed read keeps the last good pull request. + // The end of the pull request is not a failure. + if msg.err != nil && m.pr.pr != nil && !errors.Is(msg.err, vcs.ErrNoPullRequest) { + m.pr.loading = false + m.flash("refresh failed: " + msg.err.Error()) + m.renderPR() + return next + } + m.pr = prState{pr: msg.pr} + if msg.err != nil { + m.pr.err = msg.err.Error() + } + m.renderPR() + // prPlace is from before a restart. + if p := m.prPlace; p != nil && msg.err == nil && msg.pr != nil { + m.prPlace = nil + m.prPane.restore(*p) + } + return next +} diff --git a/tui/release.go b/tui/release.go index 9fc6b3f..3bc2b42 100644 --- a/tui/release.go +++ b/tui/release.go @@ -1,9 +1,9 @@ package tui // The footer tells the user about a newer release. A key or a click -// installs it in the background. Then rexdiff starts again in the same -// pane, with the comments and the place of the user. The update package -// installs the release. This file shows the state of the update. +// starts the update to it in the background. Then rexdiff starts again in +// the same pane, with the comments and the place of the user. The update +// package installs the release. This file shows the state of the update. import ( "context" @@ -26,16 +26,13 @@ type Updater interface { type updatePhase int const ( - phaseIdle updatePhase = iota - phaseInstalling // the release installs in the background - phaseInstalled // rexdiff restarts when the user is ready + phaseIdle updatePhase = iota + phaseUpdating // the release installs in the background + phaseUpdated // rexdiff restarts when the user is ready ) -// installedMsg reports the end of the install of the release. -type installedMsg struct{ err error } - // checkRelease returns a command that asks for the latest release. Its -// message is the *update.Release if it is newer. A failure shows nothing, +// message is a releaseMsg if the release is newer. A failure shows nothing, // because rexdiff works the same without the check. func (m *model) checkRelease() tea.Cmd { u, ctx := m.updater, m.ctx @@ -44,58 +41,59 @@ func (m *model) checkRelease() tea.Cmd { if err != nil || !newer { return nil } - return &r + return releaseMsg{release: r} } } // releaseBadge returns the text of the footer about m.release. func (m *model) releaseBadge() string { switch m.phase { - case phaseInstalling: + case phaseUpdating: return fmt.Sprintf("updating rexdiff to %s…", m.release.Tag) - case phaseInstalled: + case phaseUpdated: return fmt.Sprintf("rexdiff %s is installed; it starts when you are done", m.release.Tag) } - return fmt.Sprintf("rexdiff %s is out: press U or click here to update", m.release.Tag) + return fmt.Sprintf("rexdiff %s is out: press %s or click here to update", + m.release.Tag, firstKey(m.keys.Update)) } -// install starts the install of the release in the background. -func (m *model) install() tea.Cmd { +// startUpdate starts the update to the release in the background. +func (m *model) startUpdate() tea.Cmd { if m.release == nil || m.phase != phaseIdle { return nil } - m.phase = phaseInstalling + m.phase = phaseUpdating u, ctx, r := m.updater, m.ctx, *m.release - return func() tea.Msg { return installedMsg{u.Install(ctx, r)} } + return func() tea.Msg { return updatedMsg{err: u.Install(ctx, r)} } } -// onInstalled prepares the restart, or tells why the install fails. After +// onUpdated prepares the restart, or tells why the update fails. After // a failure, the user can try again. -func (m *model) onInstalled(msg installedMsg) { +func (m *model) onUpdated(msg updatedMsg) { if msg.err != nil { m.phase = phaseIdle m.flash("update failed: " + msg.err.Error()) return } - m.phase = phaseInstalled + m.phase = phaseUpdated } -// restartIfReady saves the state for the restart into m.restartState. It -// reports whether rexdiff can quit for the restart. It waits while the -// user writes a comment or uses an overlay. It also waits while a send -// runs, and while pending (the command of the last message) runs. Thus no -// work is lost. +// restartIfReady saves the resume state for the restart, and keeps its +// file in m.resumePath. It reports whether rexdiff can quit for the +// restart. It waits while the user writes a comment or uses an overlay. +// It also waits while a send runs, and while pending (the command of the +// last message) runs. Thus no work is lost. func (m *model) restartIfReady(pending tea.Cmd) bool { if m.mode != modeNormal || pending != nil || m.sends > 0 { return false } - path, err := m.saveState() + path, err := m.saveResume() if err != nil { m.phase, m.release = phaseIdle, nil - m.flash("updated, but cannot save your comments for the restart: " + err.Error() + + m.flash("updated, but the save of your comments failed: " + err.Error() + "; open rexdiff again for the new version") return false } - m.restartState = path + m.resumePath = path return true } diff --git a/tui/render.go b/tui/render.go index eb89ee8..adad9b0 100644 --- a/tui/render.go +++ b/tui/render.go @@ -144,7 +144,7 @@ func (m *model) splitAllowed() bool { return false } f := m.selectedChange() - return f != nil && !f.Binary && !f.TooBig && !m.showsMarkdown(f) && + return f != nil && !f.Binary && !f.TooBig && !m.isRendered(f) && f.Old != "" && f.New != "" && f.Old != f.New } @@ -155,9 +155,9 @@ func (m *model) splitShown() bool { return m.split && m.codeWidth() >= splitMinWidth && m.splitAllowed() } -// showsMarkdown reports whether the Changes tab shows f as rendered +// isRendered reports whether the Changes tab shows f as rendered // markdown. -func (m *model) showsMarkdown(f *changedFile) bool { +func (m *model) isRendered(f *changedFile) bool { return m.rendered && isMarkdown(f.Path) && f.Status != vcs.StatusDeleted } @@ -207,7 +207,7 @@ func fileNote(err error) (string, bool) { // renderChanges shows the selected file in the Changes tab. func (m *model) renderChanges() { - p := &m.changes + p := &m.changePane f := m.selectedChange() if f == nil { p.path = "" @@ -227,7 +227,7 @@ func (m *model) renderChanges() { note = "renamed from " + termtext.Quote(f.From) + ", no change to the content" } p.setNote(note) - case m.showsMarkdown(f): + case m.isRendered(f): m.setMarkdown(p, f.New) default: if o := m.folds[f.Path]; o != nil && o.Old != f.oldHash { @@ -259,7 +259,7 @@ func (m *model) renderViewer() { // refreshViewer shows the selected file in the Files tab if the file // changes. func (m *model) refreshViewer() { - p := &m.filesPane + p := &m.allPane if m.allSel >= len(m.allFiles) { p.path, m.viewedPath = "", "" p.set(nil, nil) @@ -280,7 +280,7 @@ func (m *model) refreshViewer() { case err != nil: m.log.Debug("read file", "path", path, "err", err) p.path = "" - p.set([]string{dimStyle.Render(" couldn't read this file")}, nil) + p.set([]string{dimStyle.Render(" could not read this file")}, nil) case m.rendered && isMarkdown(path): m.setMarkdown(p, content) default: diff --git a/tui/resume.go b/tui/resume.go index 34c9158..1d4b0c6 100644 --- a/tui/resume.go +++ b/tui/resume.go @@ -14,23 +14,23 @@ import ( "github.com/rednafi/rexdiff/vcs" ) -// savedState holds the comments, the scope, the view, the expanded folds, +// resumeState holds the comments, the scope, the view, the expanded folds, // and the places in the panes for a restart. -type savedState struct { - Tab tab `json:"tab"` - Scope Scope `json:"scope"` - Base string `json:"base"` - From string `json:"from"` - To string `json:"to"` - Turn *savedTurn `json:"turn"` +type resumeState struct { + Tab tab `json:"tab"` + Scope Scope `json:"scope"` + Base string `json:"base"` + From string `json:"from"` + To string `json:"to"` + Turn *resumeTurn `json:"turn"` // The state keeps the files by path, because the lists can change in a // restart. - ChangePath string `json:"change_path"` - FilePath string `json:"file_path"` - Changes savedPane `json:"changes"` - Viewer savedPane `json:"viewer"` - PR savedPane `json:"pr"` + ChangePath string `json:"change_path"` + FilePath string `json:"file_path"` + Changes resumePane `json:"changes"` + Viewer resumePane `json:"viewer"` + PR resumePane `json:"pr"` Split bool `json:"split"` Wrap bool `json:"wrap"` @@ -51,8 +51,8 @@ type savedState struct { Beside string `json:"beside"` } -// savedTurn is a [turnState], with exported fields for JSON. -type savedTurn struct { +// resumeTurn is a [turnState], with exported fields for JSON. +type resumeTurn struct { Block string `json:"block"` App string `json:"app"` Tree string `json:"tree"` @@ -60,34 +60,35 @@ type savedTurn struct { At time.Time `json:"at"` } -// savedPane is the place in a pane. -type savedPane struct { +// resumePane is the place in a pane. +type resumePane struct { Cur int `json:"cur"` Top int `json:"top"` Xoff int `json:"xoff"` } -func (p *pane) place() savedPane { return savedPane{p.cur, p.top, p.xoff} } +// place returns the place of p, for the resume state. +func (p *pane) place() resumePane { return resumePane{p.cur, p.top, p.xoff} } // restore moves p to the place s, within its lines. -func (p *pane) restore(s savedPane) { +func (p *pane) restore(s resumePane) { last := max(len(p.lines)-1, 0) p.cur, p.top, p.xoff = min(s.Cur, last), min(s.Top, last), s.Xoff } -// saveState writes the state to a new file, and returns its path. -func (m *model) saveState() (string, error) { - s := savedState{ +// saveResume writes the state to a new file, and returns its path. +func (m *model) saveResume() (string, error) { + s := resumeState{ Tab: m.tab, Scope: m.scope, Base: m.base, From: m.from, To: m.to, - Changes: m.changes.place(), - Viewer: m.filesPane.place(), + Changes: m.changePane.place(), + Viewer: m.allPane.place(), PR: m.prPane.place(), Split: m.split, Wrap: m.wrap, Rendered: m.rendered, ListPos: m.listPos, ListHidden: m.listHidden, FocusList: m.focusList, ListW: m.listW, ListPct: m.listPct, Folds: m.folds, Comments: &m.comments, LastSent: m.lastSent, Beside: m.beside, } if t := m.turn; t != nil { - s.Turn = &savedTurn{t.block, t.app, t.tree, t.running, t.at} + s.Turn = &resumeTurn{t.block, t.app, t.tree, t.running, t.at} } if m.prPlace != nil { // the PR has not loaded since the last restart s.PR = *m.prPlace @@ -114,15 +115,15 @@ func (m *model) saveState() (string, error) { return f.Name(), f.Close() } -// loadState reads the file that saveState wrote, and removes it. -func loadState(path string) (*savedState, error) { +// loadResume reads the file that saveResume wrote, and removes it. +func loadResume(path string) (*resumeState, error) { b, err := os.ReadFile(path) if err != nil { return nil, err } // A file that stays in the temporary directory does no harm. _ = os.Remove(path) - s := &savedState{Comments: new(diff.Comments)} + s := &resumeState{Comments: new(diff.Comments)} if err := json.Unmarshal(b, s); err != nil { return nil, err } @@ -131,7 +132,7 @@ func loadState(path string) (*savedState, error) { // restoreSettings sets the scope, the view, and the comments of s. Call // it before the first reload, which reads the files of the scope. -func (m *model) restoreSettings(s *savedState) { +func (m *model) restoreSettings(s *resumeState) { m.tab, m.scope, m.base, m.from, m.to = s.Tab, s.Scope, s.Base, s.From, s.To if t := s.Turn; t != nil { m.turn = &turnState{block: t.Block, app: t.App, tree: t.Tree, running: t.Running, at: t.At} @@ -158,8 +159,8 @@ func (m *model) restoreSettings(s *savedState) { // restorePlaces selects the files of s and moves the cursors to the places // in s. Call it after the first reload. -func (m *model) restorePlaces(s *savedState) { - if i := slices.IndexFunc(m.files, func(f changedFile) bool { return f.Path == s.ChangePath }); i >= 0 { +func (m *model) restorePlaces(s *resumeState) { + if i := slices.IndexFunc(m.changeFiles, func(f changedFile) bool { return f.Path == s.ChangePath }); i >= 0 { m.changeSel = i } m.allFiles, _ = m.repo.Files(m.ctx) // an error shows an empty list @@ -169,13 +170,13 @@ func (m *model) restorePlaces(s *savedState) { // The cursors go to the selected files, and the directories above // them expand. m.changeTree.reveal(s.ChangePath) - m.fileTree.reveal(s.FilePath) - m.changeTree.cur, m.fileTree.cur = -1, -1 + m.allTree.reveal(s.FilePath) + m.changeTree.cur, m.allTree.cur = -1, -1 m.buildTrees() m.renderChanges() m.refreshViewer() - m.changes.restore(s.Changes) - m.filesPane.restore(s.Viewer) + m.changePane.restore(s.Changes) + m.allPane.restore(s.Viewer) m.prPlace = &s.PR // the PR loads later, and onPR restores the place m.rerender() } diff --git a/tui/search.go b/tui/search.go new file mode 100644 index 0000000..bb53a45 --- /dev/null +++ b/tui/search.go @@ -0,0 +1,174 @@ +package tui + +// The search finds files by name and lines of code, as in herdr-reviewr. +// It shows in an overlay. + +import ( + "context" + "fmt" + "slices" + "time" + + tea "charm.land/bubbletea/v2" + + "github.com/rednafi/rexdiff/internal/search" + "github.com/rednafi/rexdiff/vcs" +) + +// The times of a code search, as in herdr-reviewr. After codeBudget, the +// search shows the lines that it finds, and a "+" tells that there can be +// others. A search with no line yet goes on until its first line, or +// until codeTimeout. +const ( + codeBudget = 80 * time.Millisecond + codeTimeout = 2 * time.Second +) + +// searchState has the results of the search. As in herdr-reviewr, the +// search has two modes. It shows the files that match by name, or the +// lines of the code that contain the query. +type searchState struct { + code bool // the mode that shows the code matches + paths []string // the files that the search can find + files []string // the files that match + fileTotal int // the number of the files that match + hits []vcs.Match + hitsMore bool // git finds more matches than hits has + err string // the error of the code search + preview *preview +} + +// showSearch shows the results of the search in its mode, with the +// cursor on the first result. As in herdr-reviewr, the code matches show +// under a header for each file, and a "… more" row tells that the list +// does not show all the results. An error shows in place of the results. +func (o *overlay) showSearch() { + s := &o.search + var items []pickItem + switch { + case s.err != "": + case !s.code: + for _, p := range s.files { + items = append(items, pickItem{label: p, id: p}) + } + if s.fileTotal > len(s.files) { + items = append(items, pickItem{label: "… more"}) + } + default: + for i, h := range s.hits { + if i == 0 || h.Path != s.hits[i-1].Path { + items = append(items, pickItem{label: h.Path, head: true}) + } + items = append(items, pickItem{ + label: fmt.Sprintf("%5d: %s", h.Line, h.Text), + id: h.Path, + line: h.Line, + }) + } + if s.hitsMore { + items = append(items, pickItem{label: "… more"}) + } + } + o.setItems(items) + o.cur = 0 + if len(o.shown) > 0 && !o.pickable(0) { + o.move(1) + } +} + +// chips returns the chips of the modes of the search, as in +// herdr-reviewr: "files N │ code M". A "+" after M tells that git finds +// more matches. The chip of the mode in use is bright. +func (o *overlay) chips() string { + s := &o.search + files, code := "files", "code" + if s.err == "" { + files = fmt.Sprintf("files %d", s.fileTotal) + code = fmt.Sprintf("code %d", len(s.hits)) + if s.hitsMore { + code += "+" + } + } + on := cursorStyle.Underline(true) + if s.code { + return dimStyle.Render(files+" │ ") + on.Render(code) + } + return on.Render(files) + dimStyle.Render(" │ "+code) +} + +// openSearch opens the search of the files and the code. With no query, +// it lists the files. +func (m *model) openSearch() { + ov := newOverlay(overlaySearch, "") + ov.input.Placeholder = "Search files and code…" + for _, e := range m.allFiles { + if !e.Ignored { + ov.search.paths = append(ov.search.paths, e.Path) + } + } + m.open(ov) + m.runSearch() +} + +// runSearch finds the files that match the query of the search, and +// starts a code search for the query. It stops the code search of the +// last query. Until the new code search ends, the old code matches show. +// An empty query finds no code. +func (m *model) runSearch() tea.Cmd { + ov := m.overlay + s, q := &ov.search, ov.input.Value() + s.files, s.fileTotal = search.Files(s.paths, m.recent, q, search.MaxFiles) + s.err = "" + m.stopGrep() + if q == "" { + s.hits, s.hitsMore = nil, false + ov.showSearch() + return nil + } + ov.showSearch() + ctx, cancel := context.WithTimeout(m.ctx, codeTimeout) + m.grepCancel = cancel + repo, gen := m.repo, m.grepGen + return func() tea.Msg { + defer cancel() + hits, more, err := repo.Grep(ctx, q, search.MaxCodeLines, codeBudget) + return grepMsg{gen: gen, hits: hits, more: more, err: err} + } +} + +// addRecent puts path first in the list of the files that the search +// shows for an empty query. +func (m *model) addRecent(path string) { + rest := slices.DeleteFunc(m.recent, func(p string) bool { return p == path }) + m.recent = append([]string{path}, rest[:min(len(rest), search.MaxFiles-1)]...) +} + +// stopGrep stops the code search that runs, if any. Its result then does +// not show. +func (m *model) stopGrep() { + m.grepGen++ + if m.grepCancel != nil { + m.grepCancel() + m.grepCancel = nil + } +} + +// onGrep keeps the code matches of the search, but only if the search +// still shows their query. The list shows them in the code mode. +func (m *model) onGrep(msg grepMsg) { + ov := m.overlay + if ov == nil || ov.kind != overlaySearch || msg.gen != m.grepGen { + return + } + s := &ov.search + s.hits, s.hitsMore, s.err = msg.hits, msg.more, "" + if msg.err != nil { + // Show only the error, and no old results under it. + s.hits, s.hitsMore, s.err = nil, false, msg.err.Error() + } + // The list of the file matches stays, with its cursor. The chips + // show the count of the code matches. + if s.code { + ov.showSearch() + } +} diff --git a/tui/send.go b/tui/send.go index ce726b9..d31c8f7 100644 --- a/tui/send.go +++ b/tui/send.go @@ -24,6 +24,7 @@ const maxSend = 256 << 10 // msg.send to send the review to them. func (m *model) listAgents(msg agentsMsg) tea.Cmd { c, ctx := m.rex, m.ctx + msg.gen = m.agentsGen return func() tea.Msg { ctx, cancel := context.WithTimeout(ctx, rexTimeout) defer cancel() @@ -39,8 +40,8 @@ func (m *model) listAgents(msg agentsMsg) tea.Cmd { // Rex that does not answer then fails the action. const rexTimeout = 10 * time.Second -// inRepo tells if dir is in the repository. An empty dir is unknown, and -// counts as in the repository. +// inRepo reports whether dir is in the repository. An empty dir is +// unknown, and counts as in the repository. func (m *model) inRepo(dir string) bool { return dir == "" || m.repo.Contains(dir) } // agent returns the state of the agent in block. If the block is new, agent @@ -57,12 +58,18 @@ func (m *model) agent(block string) *agentState { // onEvent keeps the state of the agent in the block of e, and follows the // turns. After a reconnect, it forgets the agents and lists them again, // as herdr-reviewr does after a lost connection. Nobody sees the agents -// in the gap, so the next state starts no turn. +// in the gap, so the next state starts no turn. A list from before the +// gap is stale. An event with an error only goes to the log. func (m *model) onEvent(e rex.Event) tea.Cmd { + if e.Err != nil { + m.log.Warn("rex events failed", "err", e.Err) + return nil + } if e.Reconnect { m.tracker.Gap() clear(m.agents) m.sampled = false + m.agentsGen++ return m.listAgents(agentsMsg{}) } if e.Closed { @@ -91,7 +98,7 @@ type member struct { func (m *model) members() (ms []member, ask string, ok bool) { for _, block := range slices.Sorted(maps.Keys(m.agents)) { a := m.agents[block] - if a.state == "" || a.app == appName || (m.rex != nil && block == m.rex.Block) { + if a.state == "" || a.app == appName || (m.rex != nil && block == m.rex.Block()) { continue } if !a.hasCwd { @@ -125,7 +132,7 @@ func (m *model) askCwd(block string) tea.Cmd { ctx, cancel := context.WithTimeout(ctx, rexTimeout) defer cancel() cwd, err := c.Cwd(ctx, block) - return cwdMsg{block, cwd, err} + return cwdMsg{block: block, cwd: cwd, err: err} } } @@ -145,8 +152,8 @@ func (m *model) onCwd(msg cwdMsg) tea.Cmd { return m.observeTurn() } -// owns tells if dir is in this working tree. It keeps the directories -// that are, because their top directory does not move. +// owns reports whether dir is in this working tree. It keeps the +// directories that are, because their top directory does not move. func (m *model) owns(dir string) (bool, error) { if m.memberDirs[dir] { return true, nil @@ -294,18 +301,18 @@ func (m *model) endTurn() { } // onAgents keeps the states of the agents. For a send, onAgents sends the -// review to the agent, or lets the user pick one. +// review to the agent, or lets the user pick one. A list from before a +// reconnect does not change the states, because they can be old. func (m *model) onAgents(msg agentsMsg) tea.Cmd { - for _, a := range msg.agents { - *m.agent(a.Block) = agentState{ - app: a.Status.App, - state: a.Status.State, - since: cmp.Or(a.Status.At, time.Now()), - cwd: a.Cwd, - hasCwd: true, - } + stale := msg.gen != m.agentsGen + if stale && !msg.send { + return nil // the list after the reconnect follows + } + if !stale { + m.keepAgents(msg.agents) } switch { + case stale: case msg.err == nil: m.sampled = true case !m.sampled && !msg.send: @@ -345,13 +352,27 @@ func (m *model) onAgents(msg agentsMsg) tea.Cmd { // load. A picker on top can hide the box and lose the comment. The // picker can take the place of the comment list, as in // herdr-reviewr. - m.flash("several agents: close the box, then press s to pick one") + m.flash("several agents: close the box, then press " + + firstKey(m.keys.Send) + " to pick one") return nil } m.openAgentPicker(here) return nil } +// keepAgents keeps the states of the agents of a list. +func (m *model) keepAgents(agents []rex.Agent) { + for _, a := range agents { + *m.agent(a.Block) = agentState{ + app: a.Status.App, + state: a.Status.State, + since: cmp.Or(a.Status.At, time.Now()), + cwd: a.Cwd, + hasCwd: true, + } + } +} + // commentIDs returns the IDs of the comments. func (m *model) commentIDs() []int { var ids []int @@ -373,7 +394,7 @@ func (m *model) deliver(a rex.Agent) tea.Cmd { m.sends++ c, ctx := m.rex, m.ctx text, ids := m.reviewText(), m.commentIDs() - focus := m.cfg.focusAgent() + focus := m.cfg.focusesAgent() return func() tea.Msg { ctx, cancel := context.WithTimeout(ctx, rexTimeout) defer cancel() @@ -389,7 +410,7 @@ func (m *model) deliver(a rex.Agent) tea.Cmd { return sentMsg{agent: a, err: err} } if err := c.Paste(ctx, a.Block, text); err != nil { - return sentMsg{agent: a, err: err} + return sentMsg{agent: a, err: fmt.Errorf("paste into %s: %w", a.Name, err)} } if focus { // Ignore the error, because the paste works. @@ -424,7 +445,7 @@ func (m *model) startSend() tea.Cmd { m.flashCopy("review too large to send") return nil case m.rex == nil: - m.flashCopy("not inside Rex") + m.flashCopy("not in Rex") return nil } m.flash("sending…") @@ -455,18 +476,18 @@ func (m *model) copyText(text, done string, ids []int) { defer cancel() err := clipboard.Write(ctx, text) switch { - case errors.Is(err, clipboard.ErrNoTool): - m.flash("copy failed: install wl-clipboard, xclip, or xsel") case err != nil: - m.log.Warn("copy failed", "err", err) - m.flash("copy failed") + if !errors.Is(err, clipboard.ErrNoTool) { + m.log.Warn("copy failed", "err", err) + } + m.flash("copy failed: " + err.Error()) default: m.clearComments(ids) m.flash(done) } } -// inCommentList tells if the comment list is open. +// inCommentList reports whether the comment list is open. func (m *model) inCommentList() bool { return m.mode == modeOverlay && m.overlay != nil && m.overlay.kind == overlayComments } @@ -488,7 +509,9 @@ func (m *model) clearComments(ids []int) { // flashCopy shows why the review cannot go to an agent, and tells the // user to copy it. -func (m *model) flashCopy(why string) { m.flash(why + ", press y to copy") } +func (m *model) flashCopy(why string) { + m.flash(why + ", press " + firstKey(m.keys.Copy) + " to copy") +} // plural returns n and word, with an s if n is not 1. func plural(n int, word string) string { diff --git a/tui/tree.go b/tui/tree.go index ff78e31..e521377 100644 --- a/tui/tree.go +++ b/tui/tree.go @@ -121,7 +121,7 @@ func (m *model) list() *fileListTree { case tabChanges: return &m.changeTree case tabFiles: - return &m.fileTree + return &m.allTree } return nil } @@ -129,8 +129,8 @@ func (m *model) list() *fileListTree { // buildChangeTree makes the rows of the Changes tab. The selected file is // the file at the cursor, if the cursor is on a file. func (m *model) buildChangeTree() { - es := make([]tree.Entry, len(m.files)) - for i, f := range m.files { + es := make([]tree.Entry, len(m.changeFiles)) + for i, f := range m.changeFiles { es[i] = tree.Entry{Path: f.Path, Changed: true} } t := &m.changeTree @@ -145,8 +145,8 @@ func (m *model) buildChangeTree() { // change if a file under it is in the Changes tab. The selected file is // the file at the cursor, if the cursor is on a file. func (m *model) buildFileTree() { - changed := make(map[string]bool, len(m.files)) - for _, f := range m.files { + changed := make(map[string]bool, len(m.changeFiles)) + for _, f := range m.changeFiles { changed[f.Path] = true } es := make([]tree.Entry, len(m.allFiles)) @@ -154,7 +154,7 @@ func (m *model) buildFileTree() { p, isDir := strings.CutSuffix(e.Path, "/") es[i] = tree.Entry{Path: p, Changed: changed[p], Ignored: e.Ignored, Dir: isDir} } - t := &m.fileTree + t := &m.allTree t.rebuild(es, false, m.allSel) if i := t.file(); i >= 0 { m.allSel = i @@ -211,12 +211,12 @@ func (m *model) shownPaths() []string { // whether e is an ignored directory that the user expands in the Files tab. func (m *model) openIgnored(e vcs.Entry) (string, bool) { dir, isDir := strings.CutSuffix(e.Path, "/") - return dir, isDir && e.Ignored && m.fileTree.toggled[dir] + return dir, isDir && e.Ignored && m.allTree.toggled[dir] } -// onDir reports whether the file list has the focus and its cursor is on +// atDir reports whether the file list has the focus and its cursor is on // a directory. -func (m *model) onDir() bool { +func (m *model) atDir() bool { if t := m.list(); t != nil && m.focusList { _, ok := t.dir() return ok diff --git a/tui/tui.go b/tui/tui.go index 48767a9..cf93d95 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -107,12 +107,12 @@ func Run(ctx context.Context, o Options) (resume string, err error) { cancel() wg.Wait() if fm, ok := final.(*model); ok && err == nil { - if fm.restartState != "" { + if fm.resumePath != "" { // Keep the last screen until the new rexdiff draws, so that // the restart does not show the shell of the pane. fmt.Print("\x1b[?1049h\x1b[?25l\x1b[H" + fm.View().Content) } - return fm.restartState, nil + return fm.resumePath, nil } return "", err } @@ -125,11 +125,11 @@ func startModel(ctx context.Context, o Options, cfg config) model { if err := m.startWatch(); err != nil { m.dropWatch(err) } - var saved *savedState + var saved *resumeState if o.Resume != "" { var err error - if saved, err = loadState(o.Resume); err != nil { - m.flash("cannot read the comments from before the update: " + err.Error()) + if saved, err = loadResume(o.Resume); err != nil { + m.flash("restore of the comments failed: " + err.Error()) } else { m.restoreSettings(saved) } @@ -138,8 +138,8 @@ func startModel(ctx context.Context, o Options, cfg config) model { if saved != nil { m.restorePlaces(saved) } - if o.Rex != nil && o.Rex.Block != "" { - if err := o.Rex.SetLabel(ctx, o.Rex.Block, appName); err != nil { + if o.Rex != nil && o.Rex.Block() != "" { + if err := o.Rex.SetLabel(ctx, o.Rex.Block(), appName); err != nil { m.log.Debug("set label", "err", err) } } diff --git a/tui/view.go b/tui/view.go index 033a988..5155d83 100644 --- a/tui/view.go +++ b/tui/view.go @@ -20,7 +20,10 @@ import ( // The colours are ANSI palette indices, so they follow the terminal theme. var ( - dimStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("8")) + // dimColor is the colour of the dim text and of the borders. + dimColor = lipgloss.Color("8") + dimStyle = lipgloss.NewStyle().Foreground(dimColor) + boldStyle = lipgloss.NewStyle().Bold(true) addStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("2")) delStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("1")) cursorStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("3")).Bold(true) @@ -177,7 +180,7 @@ func (m *model) agentLabel() string { } n := 0 for block, a := range m.agents { - if a.state != "" && block != m.rex.Block { + if a.state != "" && block != m.rex.Block() { n++ } } @@ -210,7 +213,7 @@ func (m *model) listLines(h int) []string { return nil } w := m.listWidth() - title := fmt.Sprintf("Changes (%d)", len(m.files)) + title := fmt.Sprintf("Changes (%d)", len(m.changeFiles)) if m.tab == tabFiles { n := 0 for _, e := range m.allFiles { @@ -238,7 +241,7 @@ func (m *model) treeRow(r tree.Row, w int) string { case r.File < 0: return m.dirRow(r, indent, w) case m.tab == tabChanges: - return m.changedRow(m.files[r.File], indent, r.Name, w) + return m.changedRow(m.changeFiles[r.File], indent, r.Name, w) } return m.entryRow(m.allFiles[r.File], indent, r.Name, w) } @@ -255,7 +258,7 @@ func (m *model) dirRow(r tree.Row, indent string, w int) string { mark = noteStyle.Render("•") } room := w - ansi.StringWidth(indent) - lipgloss.Width(mark) - 4 - name := lipgloss.NewStyle().Bold(true).Render(fitName(r.Name+"/", room)) + name := boldStyle.Render(fitName(r.Name+"/", room)) if r.Ignored { name = dimStyle.Render(fitName(r.Name+"/", room)) } @@ -276,14 +279,14 @@ func (m *model) changedRow(f changedFile, indent, name string, w int) string { return fileRow(indent, statusMark(f.Status), name, stat, w) } -// entryRow renders file f of the Files tab in the file list, w columns +// entryRow renders entry e of the Files tab in the file list, w columns // wide. The row shows the name in the tree, after indent. -func (m *model) entryRow(f vcs.Entry, indent, name string, w int) string { - if f.Ignored { +func (m *model) entryRow(e vcs.Entry, indent, name string, w int) string { + if e.Ignored { return dimStyle.Render(fileRow(indent, " ", name, "", w)) } stat := "" - if c := m.comments.Count(m.anchorOf(tabFiles), f.Path); c > 0 { + if c := m.comments.Count(m.anchorOf(tabFiles), e.Path); c > 0 { stat = cursorStyle.Render(fmt.Sprintf("●%d", c)) } return fileRow(indent, " ", name, stat, w) @@ -379,7 +382,7 @@ func (m *model) emptyNote() string { case len(p.lines) > 0: return "" case p.note != "": - return p.note + return termtext.Quote(p.note) // the note can come from git or a forge case m.tab == tabPR && m.pr.loading: return "loading the pull request…" case m.tab == tabFiles && len(m.allFiles) == 0: @@ -500,7 +503,8 @@ func (m *model) ensureVisible() { // the find band. func (m *model) footer(hits []findHit) string { if m.notice != "" { - return delStyle.Render(wrapWords(m.notice, m.w)) + "\n" + m.footerLine(hits) + notice := termtext.Quote(m.notice) // the notice can have a path + return delStyle.Render(wrapWords(notice, m.w)) + "\n" + m.footerLine(hits) } return m.footerLine(hits) } @@ -560,7 +564,7 @@ func (m *model) footerLine(hits []findHit) string { tab: m.tab, split: m.splitShown(), visual: m.cur().anchor >= 0, - onFold: m.onFold(), + atFold: m.atFold(), armed: m.armed, } if m.help.ShowAll { @@ -650,7 +654,7 @@ func box(lines []string, w, h int) string { // programStatus returns the status that rexdiff reports to Rex with OSC 7501. // Rex shows it in its tabs and its sidebar. func (m *model) programStatus() *tea.ProgramStatus { - msg := "reviewing " + plural(len(m.files), "file") + msg := "reviewing " + plural(len(m.changeFiles), "file") if n := m.comments.Len(); n > 0 { msg = plural(n, "unsent comment") } diff --git a/update/update.go b/update/update.go index f334622..85c424c 100644 --- a/update/update.go +++ b/update/update.go @@ -178,9 +178,9 @@ func (u *Updater) Install(ctx context.Context, r Release) error { // brew updates its taps at most once a day. Thus brew upgrade can // miss a new release. Update the taps first. Then // HOMEBREW_NO_AUTO_UPDATE stops a second update. - if _, err = u.command(ctx, env, brew, "update", "--quiet"); err == nil { + if _, err = u.runProgram(ctx, env, brew, "update", "--quiet"); err == nil { env = append(env, "HOMEBREW_NO_AUTO_UPDATE=1") - _, err = u.command(ctx, env, brew, "upgrade", "--cask", "rexdiff") + _, err = u.runProgram(ctx, env, brew, "upgrade", "--cask", "rexdiff") } case methodGo: // GOBIN puts the new binary where the old one is. @@ -190,7 +190,7 @@ func (u *Updater) Install(ctx context.Context, r Release) error { if _, err := exec.LookPath(goTool); err != nil { goTool = tool("go", "/opt/homebrew/bin", "/usr/local/go/bin", "/usr/local/bin") } - _, err = u.command(ctx, env, goTool, "install", modulePath+"@"+r.Tag) + _, err = u.runProgram(ctx, env, goTool, "install", modulePath+"@"+r.Tag) default: return u.download(ctx, r) // it checks the version before the replace } @@ -203,7 +203,7 @@ func (u *Updater) Install(ctx context.Context, r Release) error { // checkVersion checks that the binary at bin is the version tag, so that a // restart does not run a broken or an old binary. func (u *Updater) checkVersion(ctx context.Context, bin, tag string) error { - out, err := u.command(ctx, nil, bin, "-version") + out, err := u.runProgram(ctx, nil, bin, "-version") if err != nil { return fmt.Errorf("check the new rexdiff: %w", err) } @@ -213,9 +213,9 @@ func (u *Updater) checkVersion(ctx context.Context, bin, tag string) error { return nil } -// command runs name with args, with env added to the environment. Its +// runProgram runs name with args, with env added to the environment. Its // error has the end of the output, which tells what went wrong. -func (u *Updater) command(ctx context.Context, env []string, name string, args ...string) ([]byte, error) { +func (u *Updater) runProgram(ctx context.Context, env []string, name string, args ...string) ([]byte, error) { run := u.run if run == nil { run = runCommand @@ -224,6 +224,9 @@ func (u *Updater) command(ctx context.Context, env []string, name string, args . if err == nil { return out, nil } + if errors.Is(err, exec.ErrNotFound) { + return out, fmt.Errorf("%s is not installed", filepath.Base(name)) + } if last := lastLine(out); last != "" { return out, fmt.Errorf("%s: %w: %s", filepath.Base(name), err, last) } @@ -247,7 +250,9 @@ func tool(name string, dirs ...string) string { // runCommand is the run of an Updater outside tests. func runCommand(ctx context.Context, env []string, name string, args ...string) ([]byte, error) { cmd := exec.CommandContext(ctx, name, args...) - cmd.Env = append(cmd.Environ(), env...) + if env != nil { + cmd.Env = append(cmd.Environ(), env...) + } cmd.WaitDelay = time.Second // a child of brew can keep the output open return cmd.CombinedOutput() } @@ -330,10 +335,13 @@ func binaryOf(archive []byte) ([]byte, error) { } if h.Typeflag == tar.TypeReg && filepath.Base(h.Name) == "rexdiff" { b, err := io.ReadAll(io.LimitReader(tr, maxBinary+1)) - if err == nil && len(b) > maxBinary { - err = fmt.Errorf("rexdiff is larger than %d bytes", maxBinary) + if err != nil { + return nil, err + } + if len(b) > maxBinary { + return nil, fmt.Errorf("rexdiff is larger than %d bytes", maxBinary) } - return b, err + return b, nil } } } diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index 2dcfa52..2d546f9 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -164,10 +164,10 @@ func TestSnapshotNestedRepo(t *testing.T) { t.Parallel() r, dir := newRepo(t) commitAll(t, dir) - testgit.NewRepo(t, filepath.Join(dir, "empty")) + testgit.InitRepo(t, filepath.Join(dir, "empty")) testgit.WriteFile(t, dir, "empty/x", "x\n") testgit.WriteFile(t, dir, "full/y", "y\n") - testgit.NewRepo(t, filepath.Join(dir, "full")) + testgit.InitRepo(t, filepath.Join(dir, "full")) commitAll(t, filepath.Join(dir, "full")) testgit.WriteFile(t, dir, "z.txt", "z\n") diff --git a/vcs/pr.go b/vcs/pr.go index 3bcd62d..75c6390 100644 --- a/vcs/pr.go +++ b/vcs/pr.go @@ -67,10 +67,10 @@ type PRState string // The values of State. const ( - StateOpen PRState = "open" - StateDraft PRState = "draft" // open, but not ready for review - StateMerged PRState = "merged" - StateClosed PRState = "closed" // closed without a merge + PROpen PRState = "open" + PRDraft PRState = "draft" // open, but not ready for review + PRMerged PRState = "merged" + PRClosed PRState = "closed" // closed without a merge ) // Result is the result of a CI check. It is the same for each forge. @@ -159,20 +159,24 @@ func cleanPR(pr *PullRequest) { } } -// decode runs a forge tool in the root directory and decodes its JSON -// output into v. env adds to the environment. -func (r *Repo) decode( +// runJSON runs a forge tool in the root directory and decodes its JSON +// output into v. env adds to the environment. The error names the tool +// and its subcommand, for example "gh pr". +func (r *Repo) runJSON( ctx context.Context, env []string, v any, name string, args ...string, ) error { - out, err := command(ctx, r.root, env, nil, name, args...) + out, err := runProgram(ctx, r.root, env, nil, name, args...) + if err == nil { + err = json.Unmarshal([]byte(out), v) + } if err != nil { - return err + return fmt.Errorf("%s %s: %w", name, args[0], err) } - return json.Unmarshal([]byte(out), v) + return nil } // lastN returns the last n elements of xs, or all of them if there are @@ -220,7 +224,7 @@ func (r *Repo) gitHub(ctx context.Context, host string) (*PullRequest, error) { const fields = "number,title,state,isDraft,url,body,author," + "headRefName,baseRefName,comments,statusCheckRollup" var v gitHubPR - err := r.decode(ctx, env, &v, "gh", "pr", "view", "--json", fields) + err := r.runJSON(ctx, env, &v, "gh", "pr", "view", "--json", fields) if err != nil { return nil, err } @@ -257,13 +261,13 @@ func (r *Repo) gitHub(ctx context.Context, host string) (*PullRequest, error) { func gitHubState(s string, draft bool) PRState { switch { case s == "MERGED": - return StateMerged + return PRMerged case s == "CLOSED": - return StateClosed + return PRClosed case draft: - return StateDraft + return PRDraft } - return StateOpen + return PROpen } // gitLabState returns the state of a GitLab merge request. A locked merge @@ -271,11 +275,11 @@ func gitHubState(s string, draft bool) PRState { func gitLabState(s string) PRState { switch s { case "opened": - return StateOpen + return PROpen case "merged": - return StateMerged + return PRMerged } - return StateClosed + return PRClosed } // azureState returns the state of an Azure DevOps pull request from its @@ -283,11 +287,11 @@ func gitLabState(s string) PRState { func azureState(s string) PRState { switch s { case "active": - return StateOpen + return PROpen case "completed": - return StateMerged + return PRMerged } - return StateClosed + return PRClosed } // gitHubResult returns the result of a GitHub check from its conclusion or @@ -336,7 +340,7 @@ type gitLabDiscussion struct { // gitLab gets the merge request with glab. func (r *Repo) gitLab(ctx context.Context) (*PullRequest, error) { var v gitLabMR - err := r.decode(ctx, nil, &v, "glab", "mr", "view", "--output", "json") + err := r.runJSON(ctx, nil, &v, "glab", "mr", "view", "--output", "json") if err != nil { return nil, err } @@ -355,7 +359,7 @@ func (r *Repo) gitLab(ctx context.Context) (*PullRequest, error) { // request without them. var ds []gitLabDiscussion args := []string{"mr", "note", "list", "--output", "json"} - if err := r.decode(ctx, nil, &ds, "glab", args...); err == nil { + if err := r.runJSON(ctx, nil, &ds, "glab", args...); err == nil { pr.Comments = gitLabComments(ds) } return pr, nil @@ -404,7 +408,7 @@ func (r *Repo) azure(ctx context.Context) (*PullRequest, error) { return nil, err } var v []azurePR - err = r.decode(ctx, nil, &v, "az", "repos", "pr", "list", "--source-branch", branch, + err = r.runJSON(ctx, nil, &v, "az", "repos", "pr", "list", "--source-branch", branch, "--status", "all", "--top", "1", "--output", "json") if err != nil { return nil, err diff --git a/vcs/pr_test.go b/vcs/pr_test.go index f47f25c..0db13eb 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -97,7 +97,7 @@ func TestPullRequest(t *testing.T) { Forge: vcs.ForgeGitHub, Number: 7, Title: "Add x", - State: vcs.StateDraft, + State: vcs.PRDraft, URL: "https://github.com/o/r/pull/7", Author: "ann", Head: "feat", @@ -119,7 +119,7 @@ func TestPullRequest(t *testing.T) { Forge: vcs.ForgeGitLab, Number: 3, Title: "Fix y", - State: vcs.StateOpen, + State: vcs.PROpen, URL: "https://gitlab.com/o/r/-/merge_requests/3", Author: "cy", Head: "fix", @@ -134,7 +134,7 @@ func TestPullRequest(t *testing.T) { Forge: vcs.ForgeAzure, Number: 9, Title: "Z", - State: vcs.StateOpen, + State: vcs.PROpen, URL: "https://dev.azure.com/o/p/_git/r/pullrequest/9", Author: "Dee", Head: "feat", @@ -175,8 +175,8 @@ func TestPullRequestErrors(t *testing.T) { {remote: "https://example.com/github.com/r.git", branch: "feat", errText: unsupported}, {remote: "git@example.com:gitlab/r.git", branch: "feat", errText: unsupported}, {remote: "https://git.corp.example/r", branch: "feat", hosts: corp, errText: unsupported}, - {remote: "git@git.corp:o/r.git", branch: "feat", hosts: corp, errText: "glab isn't installed"}, - {remote: "ssh://git@GitHub.com:22/o/r", branch: "feat", errText: "gh isn't installed"}, + {remote: "git@git.corp:o/r.git", branch: "feat", hosts: corp, errText: "glab is not installed"}, + {remote: "ssh://git@GitHub.com:22/o/r", branch: "feat", errText: "gh is not installed"}, { remote: "https://u@org.visualstudio.com/p/_git/r", branch: "other", @@ -189,7 +189,7 @@ func TestPullRequestErrors(t *testing.T) { branch: "other", errText: "unexpected call: " + azArgs("other"), }, - {remote: "https://github.com/o/r", branch: "feat", errText: "gh isn't installed"}, + {remote: "https://github.com/o/r", branch: "feat", errText: "gh is not installed"}, } for _, tt := range tests { // Two cases have the same remote, so the name has the branch. diff --git a/vcs/refs.go b/vcs/refs.go index 82e24a7..6027a2d 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -110,7 +110,10 @@ func (r *Repo) DefaultBase(ctx context.Context) string { // detached HEAD, it returns "HEAD". func (r *Repo) Branch(ctx context.Context) (string, error) { out, err := r.run(ctx, nil, "rev-parse", "--abbrev-ref", "HEAD") - return strings.TrimSpace(out), err + if err != nil { + return "", err + } + return strings.TrimSpace(out), nil } // remoteURL returns the URL of the remote "upstream", so that forks work, or @@ -199,7 +202,8 @@ type Match struct { // Grep returns at most limit lines of the tracked and the untracked files // that contain the text q. The search ignores case and binary files. When -// it finds limit lines, it stops git, and more tells if there are others. +// it finds limit lines, it stops git, and more is true if there are +// others. // After the time budget, Grep stops git when it has a line, and returns // the lines with more set to true. At the deadline of ctx, Grep stops git // and returns the lines that it finds before it, with more set to true. @@ -226,7 +230,7 @@ func (r *Repo) Grep(ctx context.Context, q string, limit int, budget time.Durati return nil, true, nil } if errors.Is(err, exec.ErrNotFound) { - err = errors.New("git isn't installed") + err = errors.New("git is not installed") } return nil, false, fmt.Errorf("git grep: %w", err) } @@ -270,7 +274,7 @@ func pastDeadline(ctx context.Context) bool { // readMatches reads at most limit matches of "git grep -n -z". Each match // is "path NUL line NUL text LF". Only the text ends with a newline, // because the path can have a newline. After each match, a true stop ends -// the read. more tells if there is more output. +// the read. more is true if there is more output. func readMatches(r *bufio.Reader, limit int, stop func() bool) (ms []Match, more bool) { for len(ms) < limit { path, err := r.ReadString(0) diff --git a/vcs/repo.go b/vcs/repo.go index 83ce7c9..c555fc0 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -40,7 +40,7 @@ var ( ErrBinary = errors.New("binary file") // ErrTooBig means that a file is larger than 2,000,000 bytes or has // more than 50,000 lines. - ErrTooBig = errors.New("file too big") + ErrTooBig = errors.New("file too large") ) // Repo is a git repository. @@ -86,19 +86,19 @@ func (r *Repo) runInput( in io.Reader, args ...string, ) (string, error) { - out, err := command(ctx, r.root, env, in, "git", args...) + out, err := runProgram(ctx, r.root, env, in, "git", args...) if err != nil { return out, fmt.Errorf("git %s: %w", args[0], err) } return out, nil } -// command runs the program name in dir and returns its standard output. +// runProgram runs the program name in dir and returns its standard output. // env adds to the environment of the process, and stdin is its standard // input, or nil for none. The error has the first line // of the standard error. It wraps the error of the process, so callers can // check its exit code. -func command( +func runProgram( ctx context.Context, dir string, env []string, @@ -116,7 +116,7 @@ func command( cmd.Stderr = &stderr out, err := cmd.Output() if errors.Is(err, exec.ErrNotFound) { - return "", fmt.Errorf("%s isn't installed", name) + return "", fmt.Errorf("%s is not installed", name) } if err != nil { msg, _, _ := strings.Cut(strings.TrimSpace(stderr.String()), "\n") @@ -347,7 +347,7 @@ func (r *Repo) Diff(ctx context.Context, from, to string) ([]File, error) { for i := range files { f := &files[i] f.Old, f.New = f.use(blobs[2*i]), f.use(blobs[2*i+1]) - f.TooBig = f.TooBig || tooBig(f.Old, f.New) + f.TooBig = f.TooBig || isTooBig(f.Old, f.New) if f.Binary || f.TooBig { f.Old, f.New = "", "" } @@ -409,6 +409,9 @@ func (r *Repo) readBlobs(ctx context.Context, ids []string, blobs []blob) error return err } if err := cmd.Start(); err != nil { + if errors.Is(err, exec.ErrNotFound) { + err = errors.New("git is not installed") + } return fmt.Errorf("git cat-file: %w", err) } err = readBatch(bufio.NewReader(out), batch, blobs) @@ -471,10 +474,10 @@ func readBatch(r *bufio.Reader, batch []int, blobs []blob) error { // isBinary reports whether s has a NUL byte. func isBinary(s string) bool { return strings.Contains(s, "\x00") } -// tooBig reports whether the versions together are larger than +// isTooBig reports whether the versions together are larger than // maxFileSize bytes or have more than maxLines lines. A last line without // a newline counts as a line, as in diff.Lines. -func tooBig(versions ...string) bool { +func isTooBig(versions ...string) bool { size, lines := 0, 0 for _, s := range versions { size += len(s) @@ -503,7 +506,7 @@ func (r *Repo) ReadFile(path string) (string, error) { } // Do not read a device or a named pipe. The read can block or not end. if !st.Mode().IsRegular() { - return "", fmt.Errorf("%s is not a regular file", path) + return "", fmt.Errorf("%q is not a regular file", path) } if st.Size() > maxFileSize { return "", ErrTooBig @@ -515,7 +518,7 @@ func (r *Repo) ReadFile(path string) (string, error) { switch s := string(b); { case isBinary(s): return "", ErrBinary - case tooBig(s): + case isTooBig(s): return "", ErrTooBig default: return s, nil @@ -538,12 +541,12 @@ func (r *Repo) Owns(ctx context.Context, dir string) (bool, error) { if !filepath.IsAbs(dir) || !r.Contains(dir) { return false, nil } - out, err := command(ctx, r.root, nil, nil, "git", "-C", dir, "rev-parse", "--show-toplevel") + out, err := runProgram(ctx, r.root, nil, nil, "git", "-C", dir, "rev-parse", "--show-toplevel") if _, ok := errors.AsType[*exec.ExitError](err); ok { return false, nil // dir is in no working tree } if err != nil { - return false, err + return false, fmt.Errorf("git rev-parse: %w", err) } top := strings.TrimSuffix(out, "\n") return top != "" && evalSymlinks(top) == r.root, nil diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 494c5d5..2e2491b 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -22,7 +22,7 @@ import ( // changes, an untracked file, and an ignored file. var testRepo = testgit.NewFixture(func(tb testing.TB, dir string) { tb.Helper() - testgit.NewRepo(tb, dir) + testgit.InitRepo(tb, dir) run := func(args ...string) { tb.Helper() testgit.Git(tb, dir, args...) @@ -281,7 +281,7 @@ func TestDiffSkipsBinaryAndBigFiles(t *testing.T) { func TestFilesInConflict(t *testing.T) { t.Parallel() dir := t.TempDir() - testgit.NewRepo(t, dir) + testgit.InitRepo(t, dir) run := func(args ...string) { t.Helper() testgit.Git(t, dir, args...) @@ -380,7 +380,7 @@ func TestOwns(t *testing.T) { t.Parallel() r, dir := newRepo(t) nested := filepath.Join(dir, "build", "nested") - testgit.NewRepo(t, nested) + testgit.InitRepo(t, nested) tests := []struct { dir string want bool @@ -457,7 +457,7 @@ func TestEditor(t *testing.T) { func TestDiffRenameAndSubmodule(t *testing.T) { t.Parallel() dir := t.TempDir() - testgit.NewRepo(t, dir) + testgit.InitRepo(t, dir) testgit.WriteFile(t, dir, "old.txt", "one\ntwo\nthree\n") const ( a = "1111111111111111111111111111111111111111" @@ -516,7 +516,7 @@ func TestNewRepo(t *testing.T) { t.Run(name, func(t *testing.T) { t.Parallel() dir := filepath.Join(t.TempDir(), name) - testgit.NewRepo(t, dir) + testgit.InitRepo(t, dir) testgit.WriteFile(t, dir, "a.txt", "one\n") r, err := vcs.Open(t.Context(), dir) if err != nil { @@ -624,7 +624,7 @@ func TestCommitsLikeHerdrReviewr(t *testing.T) { } empty := t.TempDir() - testgit.NewRepo(t, empty) + testgit.InitRepo(t, empty) er, err := vcs.Open(ctx, empty) if err != nil { t.Fatal(err) diff --git a/vcs/watch.go b/vcs/watch.go index 72b2f57..e982b20 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -11,12 +11,12 @@ import ( "time" ) -// budgetFactor sets the pause after a check of a [Watcher]. The next check +// pauseFactor sets the pause after a check of a [Watcher]. The next check // waits this many times as long as the last check took. Thus the checks // use less than 1/21 of a core. herdr-reviewr uses the same factor. -const budgetFactor = 20 +const pauseFactor = 20 -// Watcher tells if the working tree or the refs can have changed. It +// Watcher reports whether the working tree or the refs can have changed. It // compares the file status of the files that git lists, of their // directories, and of the git files. While nothing changes, it runs no // git process. After a change, it runs git to list the files again. @@ -86,7 +86,10 @@ func (w *Watcher) Show(paths []string) { // gitPath returns the absolute path that rev-parse gives for flag. func (r *Repo) gitPath(ctx context.Context, flag string) (string, error) { out, err := r.run(ctx, nil, "rev-parse", "--path-format=absolute", flag) - return strings.TrimSuffix(out, "\n"), err + if err != nil { + return "", err + } + return strings.TrimSuffix(out, "\n"), nil } // Changed tells what can have changed since the last call. The first call @@ -100,7 +103,7 @@ func (w *Watcher) Changed(ctx context.Context) (Change, error) { } defer func() { end := w.now() - w.next = end.Add(budgetFactor * end.Sub(start)) + w.next = end.Add(pauseFactor * end.Sub(start)) }() refs, index := w.sumRefs(), w.sumIndex() @@ -307,8 +310,10 @@ func sumFiles(paths []string) uint64 { // string. type sum uint64 +// newSum returns the sum of no bytes, the FNV-64a offset basis. func newSum() sum { return 14695981039346656037 } +// byte adds the byte b. func (s *sum) byte(b byte) { *s = (*s ^ sum(b)) * 1099511628211 } // str adds v and a NUL, so that two strings do not join. @@ -319,6 +324,7 @@ func (s *sum) str(v string) { s.byte(0) } +// num adds the 8 bytes of v, the low byte first. func (s *sum) num(v uint64) { for range 8 { s.byte(byte(v)) diff --git a/vcs/watch_test.go b/vcs/watch_test.go index 7709096..a5e7760 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -209,7 +209,7 @@ func TestWatcherNested(t *testing.T) { t.Parallel() r, dir := newRepo(t) other := t.TempDir() - testgit.NewRepo(t, other) + testgit.InitRepo(t, other) testgit.WriteFile(t, other, "f", "1\n") testgit.Git(t, other, "add", ".") testgit.Git(t, other, "commit", "-qm", "1") From f7abd85d846e30ced25624cc9db062fad4385af1 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 01:23:32 +0100 Subject: [PATCH 073/119] docs: update the guides and the screenshots to the current rexdiff The tests use REXDIFF_REX for the real Rex. The settings sample shows the default layout. --- .asset/changes.png | Bin 166441 -> 165437 bytes .asset/comment.png | Bin 176250 -> 176293 bytes .asset/files.png | Bin 117049 -> 117001 bytes .asset/help.png | Bin 266777 -> 265150 bytes .asset/list.png | Bin 41944 -> 41622 bytes .asset/review.png | Bin 193181 -> 193217 bytes .asset/search.png | Bin 104559 -> 104232 bytes .asset/sent.png | Bin 76901 -> 76639 bytes .asset/split.png | Bin 159322 -> 158214 bytes .doc/arch.md | 8 +++++--- .doc/dev.md | 7 ++++--- .doc/test.md | 3 +++ .doc/user.md | 21 ++++++++++++--------- cmd/rexdiff/install.go | 2 +- test/cli_test.go | 10 +++++----- 15 files changed, 30 insertions(+), 21 deletions(-) diff --git a/.asset/changes.png b/.asset/changes.png index 16f246f40040f10ab10484df313e5b86151df130..1ee879ccfe35a879565c26bd82249810998fda53 100644 GIT binary patch literal 165437 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

    Whq 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¿@Y&mZ*V=@&ald0{FW8XDZ>N2N=SV)XU( zBg4c|u*IOYB2EqUg*2GxxL5;+-xLn3vOv7P(cni&&aHFbg~HG8+A0Rq>ozq!O)J->`>+9bbDy~Mfc?Xw<4zf!$av1gRaf$^@7k&2(AO1s<3h{IhR@5{ZZe2 zG(Di9ZB114t8GP*CbwSEqx;GN0!a^RtCz27n>8#ePtw@T`7rIB8|mlgS0&okqe@gHQEkd)m6Q`!Sx;QcHKWArW)emBa zIVs&ko12Y5E_ro6bDk9HV2w~OcVMap8y5k))F}N&;`o+GW@e&vH=mlL;4;#hJQ_)_ z{XP6{A<#3->MWq3U^5fxv1DWCso+GP*lMP<>*vgbJC^KwpxGURt;s0uHgQn{Owt_% z&$+!q?OL|HZ$@|?+jr~dDAZ6cSQD%fz}+sAt$zIBJ}qtCg8*(e$81lC&+};&{Jx6a zbO|f=ZbPu=62hzzm=+H?H`mZ`*28e)jv!sTy-d`?95>H4*Vc-biK%dX#;uLhH8~}` z9DDXpzGRcvdH6}Kz7}>`+5VnnDNNGS*-5y*{ryc-Bj(xp=McaHDgp{EiI*?Rftqn) zLd>FUa63)qRJ=(4r@7Ry-Q8Z6QtPq)R$4f$UuI~Cv&vAiW<5@}Wz z{n7WFz0#VfPu5i4eC1ZC9_E3?Sy&S0H3<3OGSdE2v~p$-t%0ppeO+E2e;K2G2{m-y z{{W-K=dKO|Ip5Q48__V^euvsG>oki%mJY#Vm-ooyHE1i zE*}Z%XOMI1>?hP8KpLLgnaaDJ(EDcR=hyCaPvAkx$K|~rA9gh~ToV{Ea8#0w=2d%9 zKpM6OF4Q?WC!C;CPHa<5ULv6W=*3dz>F+GO=kKq@UuM&s-@kK3$}d2shQP1!OduC5 zle+4r2b!eP@sTPuULujP8ji|v#QPy^bNsGd8-ciXtyoYR2ayl?M}zW0d&JMY zbTwH>kjy@64OHGk(Yg)Y_IW-=M&|bjZL-59aZTTuiS5=a5^O)+2ndk|m)?E#QLxQ? zcrJG_^sKUETjX_vSitZAr#_Vkvq(hGIVN_Nzhg+wZ} zlG?+Cx?;9!Gzk+q9X3M9Vv`1!drO=?`t&lCBb#&v<99|N2@>aqC{|8L1$Jy1veILD zHL-8vz7AEZjd`EBnB8G=3MJT$@@yyhxY%urV*Go(&rH2cY_GdllZs=~EfMWcU2~Qa zQxf^w;CaGZGk~K;WdJ)i5pin@U!8wjsGk z0{`|CIg_N(D72YEL=3iIKDzwzbZ0+8-^$&+O|b50n*q@=aQ=v0{Nm~T@s84o8RK$7 ziahO7(T81-RPCF1y<=foiKG<)Bb?L&(z-t+w`ZkD9S8dR`?0k$Z)}W4Yr!$G;bJo^ z*wMyAqy!`OYQunklA^3*Yr61qsb{^pSaGM0v9YlWj1nkK8OZ|e z6fV3wM;qJT^MKtd-HKllC9PO=+qg3Wcfn2yY@SFp(I)Hn_4P&6jt7v5VcB`l-kUqw z5T7Bo&y9eoa?##>iFX_7@jJ|LE$>q?gJUG6t<^}u7|LCZX_T-Nk812JO06?p*TCdX zt-=fVv38AhqF(CF$=YLPSs%UlB;_72G|nGd8(pInp~OTft9fLP2Y=pmS``Y=9s-sNz*uI_aHfIg9s^^G~{ts9?3`l6QK2DH@l#*^zv zpPrsJJ_q-$@aefP#*h+AMtKWv#wdZCe)h;NMrKym)Z|*_G&%rb{m$lu4paFZsL6rSWr;#of_9?o>uHuw6kEvIq10h z!My%h0R-ZzLdTHm_e)s1ZEd3FE8Ox4t-1lz4}>)W0s<+p(Y;C7o)WRw7N*x8wE4z? z@C`7aVw`ID{r3cQ^9zU$*cF8QPjJ2-W!HFLYAZ~Y zftwk0K#0*|u1u+lN#zQb-@zm2r>gXS{pyFU)$vdxgS7k4WCcSD8r@U;PSKo@|qyA7pNZjH`6IzVtF=Hb!O z&^A`cXH;{O?p4a&huJ+O+Rg3I9@^A6@Xvh|A-#j-q?S$kRO%lz?`XH zbEN3CySg>a{ZrYR=qC4`8vdf*tR?0qEjuvSKI7^;Ew2Qsm_1YwR9*Jw1;>jy&)H37!{rfRu zyC34$imo6O^xwnh>v0~=!($f3`Pybb(ES>^g01aPEv!-a!|6}se&x-n-w0DmOZiIW zTU&Y6h7wnQg%*aQT=UzzmGGm=7;fFe-1^->xquZ!oiOxPt9ZEh?&!1OOWK$RusMvT zw7IP(c86I^=1RB(_r|Yx^YJkI`1X!sBB{a`b}xwG?uItFT96G*6}6uUVdDdrj~!0BhgUPh|4Oh2H_i}}vwSe2cLbm!ue z9+<8zob;K_-ymJ~rhrlUj}B-`Qy#@2l4w zHHkkTF3@&tZaKh&j+UGRQBnpWBt>XwRfeY`#E zM^V`tO))rVU9;+MKJ0=Wr=fUJV>2mFhFcB%LrU6wfI67Jx`qxumn|G|N4GT;P+Y|I zRY16$?Ju1e*85!(0<@IbF>y&XGp(;Rx){e^Uv#ztx7uVF6@!i%f_IuebI+hQS_VJn zJ+?;b7FM%y1#q$qoIf^`FJ*fr22Nx@`W{nnWJj7Ad1 z@41n5Axi2Z=3s=cs`w6soKO#piR7_ho^I@zB~wmz0TJh5kNA-ulMN?3XTF%kw;v&r zZ4KXuB3fhzMaSGhJGRVTLUBr&8{16|Fv=xn?E6L{dPi{F#kPy4o#x4v0L_sm00jq8Xz)KoJNB3rZt&@w0plC0O}pAeDd$eGWCG$n zL4A9-8yY}Jfil?f(%r3|i3za=@CPiVuKnp+n&UGq6cD;~or~}`0Pi}OJXBBZQT5#h zNj}L?;|1T!1*7xPteB zOqc<6;J^pfozS|78ICZ(XoiSz>C;We*BOYcFq&*NUl$U_qteT?MA5 zVq?BiE0qjx3%7P|B<)YT93rWK`;VtvA~Rb!bC;H4+&a5xb6rf@6E{7pC9K}nY{w{7 zo4iP*b3G-#Q#eK=(}3P`UtRo;@)*hqBu?y}XyW&4K8~qGiEx2-FJzcpWa>;ZN@XO% zotYLiLPMET`)niVhl5%#f~CcV{Pg&$?b+Db=Z2SoSg&XLIiHs`bgRT*tP*7Ko`T!J zDJJD!gOwLHkeLst`8q9*qYQ>+(3v07EW$4$1*N%@ZH zmc#PE>+gMU@MSuD)P84Gc}`>!_;gOOP9I<>@B8(jdpER@7{9weSaG)i-l5N0Hvvgm^>Gh%s51 z!v_C@@<1x-`zz~hC%X{E3qVGc1KRY<(OB~8nUkp*kJD8%DIa&YeGeGD_;E`;oG;#w z(k6#2Q^nBE#-`J$16}sXKal>%O~2ielEbht>%Yo>{2rh*167l-Ucj@-ecRpS}Dq33#i|=YHF8*E*TZ&Ib4ELi@lWrm( z&q`v@lz;3M8z1ZxwU6;8%VSc_CNn5PrSGLc1s&g4TMxJ=#AUeF?a}ObKAi5w@4+Q0 zYJD;e?!gV#(SSvpbY9-T6rdkm!Za)2CNpIn*w{^sjS_>IqDdta!ba%A`AWBK05Eu! z5<@tlT``C7`Rw;mpze#4EPrWXOXax}q*~jBJcRp_xQARH!vK8n`#T=K<>ptB$+342 ztuY1PJ`ab~4We5;mKM^i2gdC5N|HvQHXGvtcGYJE=w$dQGrZ!W8R%{3*xeJ~MBwPt z*(IbAvXs{vMn~*`ZE{RAt?vGq|Fyil-0~$2d1Gtl~T=CucItOTE zC}$sJeXH)QAo)ByIdN@T-4gqVcOe#j2*NKc`y5hyLlEAW0Cw2UfwJwGi?J}Z#L(bm zf4|2sq&WG@jN?*~0>bw0Sfd71x_K3`t&TXX`!cZM4U`e2h~$-(@uLcQ?Muzy*ob@Y z%#919@+c)fckjz8k+pq8u>Jd3}ztWu|FCw zkUI}EC-P~evb|M_!@aNdJo4Eggb;vIwd49S;;RTozBC6n*yJp8BmjMNy>fW)efMi- z0+-9tu(X}MyN7E#@u1bLSpf5M(7UI(yC*3GUHIS*%n;J8@t8dMgHlAq2oqwhiTG?W z2V2=hn6#UCfFZ>W-u!+=3xou_^RD#kW8D{mPnEVj@t$)Hjy<)XCA?PBg_0!JPV)JT zD)H#jo?nJBbs+gZx9tqjlx@E;q6wJeWoblc$6eaaec=NX_L3ak^$6J z&{_*D+I%+xNI-C5g_15>7$*YthixUjYg=X`WN5vY5X;{PjZTvV0?W%b%S&S$r1@8` zF#!&uh}&^nd1|InzFx7o zW7*ic@y82(8xwZlxv1^JsO|k-673bK=!X5Tj4vCw8RhtwW>;S}p}Rs6N<_fFDst@Y zZOi~Sz1~0|lg}O#9^#{>{bsCxT&KpK0~O-A5JF4en(B=V`m&Lzz*JTPeVEeCd)aae z;TxSaGvPF*UFYSVkx1!&a5*U9yg^hXsg8qB=e;rFdM~<^*eoMN`QeCcl;qxYUe&{H zoVU+9deuzwC_}XHd@LDP2*O2z9#&f2fg5-qXkc9M7c&>=8Js>p;lPYKALqDKYKBKc zpsP}*Md6B*>*qjrwDolZNsynPaYB2VF;88E02x^l#EnvONoW%0=(2Q={0+*%ucFUw zLN3Vw!#9C7Q84}Df2K%`MQ~MC4PHJwt-d&%m`ej;yKtL)aJt%pU#4}-IU~Qews^k06?yKIo%F6o!Kw-9U1>;klg*es94 zAU$?hS6;;RnRP*p_A=Px;}e*Dc9E^31HJZdS2{R%4)o@?OA2h|P>M{4)mrDw(KLsN%=27pLIJ67M6f+AP*T3Nk+t%j2XhATN}Q}yEB z{+;7Um4M??Aa@6l-Pu%@zmkzHR!*Zfeg@RRr&T0{`R@}gF?Y$r_F7Jpp)H!07PM55 z;_B)g_*W1J#7*t$?Cd(C4(86vCgQxlQ>)Y!d+{k75ld|_)i?upiVv@Lvs3$K;>y5+ zx(W6d>l779?H~ou2CtnDQ!)*WjvnvPU5vK+>`(ypS(cNGvc7c3?>&(|r>kSPxr8p1 z1O{X;8V+f87B{)Rq9eoCv0|c&sz>LYWqC@cDrQUe+g`09Q{RoeCtm`Y*>cCDO~9W* zn|gK)=azaRUTTM)kp|c$l`(hy_+dEN1tcy(yk~E0M2JDV450fIhnwD2C$R72cw52R65>3ut|3gyQ_zmFE5slD@m!vL&jDP;y>-XJc=;R@1%io0pv} zLW{Q_>#r6@0SOdqt-<+&(uaJ4d>}RFl!VZ00s;;sq?+%NYFtKy65FsRv7EZq2RZDi z+C`*i_)^#9pEi0&f3(s)zx(KiF6!mfkzBi|_1G8aSWspXx~$!Vx3=E`D~PB-R>7M*RAUEbHk&JiK!#ct)mi*y>KX$^;O4hktC};?2Fb{w~#i|Wp85W#;c?V zq~(iv!g(1O&!trgkvaypi_+54j6vCWR%4KFaq&*2&w-1Yv9Xmxsk(QI+uW<*@eXTf zCSagE3!en|=<~@KCiMHh-YQ2Qu~xu-6n; z?cBai?#RjOnNIWf&)zH=+gB^U}r}~ZR4ol*nMLmZFw`ZRV&KN)mXXiCKA{eFY23q?q1&WUhITu6h~0z9!XX#|4bqltmLP}pZ100 zTrhmbP{%9}@d0C+$75^Eq}G_7HO-FQpUr$b_@k>U)B|(euEv@&m-7Kn9jztkWsrRDbHZ*yB=Sk7 zW0$qH$RQoCgo?Bsq<)jExJY2QS-t}ubJ(?&gm4&(gdkSe)`p*+K^0=5!6 zZ)p~62iQ(W1q7M3L8`pQzAy%BcsZ4SJm-{jHWzGZWe(9jNLR4SjIpq?;)7OpL?hKh zD&k6_s$hJY*Q9ylqUyOo8Lm!14)~JcwHTy_rM>+&-se0rBs?dFZQcc_ONMw~90*0p zU4B0sotp#}D_o^3t*261K2TDL8yp;r+f|V+Ro>kfulCM-{w;ckRrUJy8;kUW{gd4E ziey`>)|#~RQ+E3CpRJD``>cklFfty+x1{k_@j3`;cif1zT`q~t>e<3gZ>6COx29zX zEzF{p9@G}Oy_wL5BwGE!mDA9v7~@nnYTLtRbl?>=`OI;#BN}Xgn>Lf&8?mcBPykkd zLNIR+4bjl89;ZL7LPqSCcuD951v6r%Gs*<~zDt1CX=J!pZ=0$vW)PEEDk>60AMHD9 z?Bt7zh#>l>WF%EjUlvJErdL(5reAQ)qf?Phw*7lt6ycIJPZ>;uGLb&=+)l2|StpO` zdG~s|H>zDc@Yt$(X61+M12WGZmT>dII5 zst-;+Q?0G5lZPmSwCf~2rCD|cJer0RnqWMbD)5*cN^4Y@M7{ zgi_1w#^W4JjGUdFVV}~oYT8u`^s3f&JVNO}xSeqC!%}z^K+I^#Xkk7C{i?@XEtK4& z;LPu0gGfjWXfFYHT2h^yenH1Vn|Z;t?^!TTKKB8roKB3*k+~kM*n5Kt=tM||KWqv> z${J{cU27cd`xD^LL^GwFy}a}a?JO(`dIm*VH}srOy3MEqUpg~t<44EG zRjFqBu9cWFnzF*rT;Y4;N07d7fGEMvx8PAAXWE1)!Gac)sHZ|R4u#~IAj^ZRNBg@m zhf3|xM_as(7aknyth&aFL5n+}d%WGa_Ov|H$+s=dsuqf4EUxPpJ{%enXi|Pj$DM&|Kd?uqeo^JhjNpW@sp)9 z=Pkk4!m6SKqnM9CxZZ9W7!`xiH@0Ej$#NitqC_RMLJ@NRbB4yl*?oO;Z|{q+jfsV% zbepV{6eGJiy@kixExyjDsG0BpWjMGEmci%Rd z6e5yv4MGq_gVN0^=h83w`n-Wy)ll{H03z=d2N>;6q3C(# zj<~Wy8@OSv!HmOdNk?p7fZ@cji$s`O#lkRWf*Ik!LtWFxQ|AQ1yjV!Y*S6Fex^7{4 zLs&nY(csAfU|cJmcG-Oa6Ts^t-R`f~wC3l$KHO0dQOF84Yz|r!GbMht+!P-jm#z*T86~Ce z7C$l$((4gu_adncp{M|;N-{^{kIxilJkWxoU2Qz|mWx42VinCxeo-SrTs*G4ehHQS z&IH=5hhnbQLNAWpV<`hYn3mgC*EYLHb>EKlGs64^>MV@C^^*#&E_{uAU_a3?+H0Ae zEzjU~a#%PcN1IvaG*)7U-`S%(8e6uV$VyRQ9=t7m5i-qzVpCt zE9rWic-uzTnB(%Isg`XZMMXuL6DW3~DmQ5)azxQh+yh6iy{R%;ra&6qSLo%|gqnro ze{@98!*V&`%F_`1t-_JB!HPtb%l6`A}yCebskkX zc@yP21U|oH0GTxJ*FCRdRV(jrE_Lbp`bv>x52ctJ z*YXp_Cv>hiGzaTW2<47ubwH(^B_t&sW_yk11xk##z3sK(Klkm%Cq_W3&knfgp4DXp zQH<-$`DrS%z;xv3qLvO$yCEyR?=g#=v79PirXo{irt%Lt`r`dhMco}m7$&RwSw4O= zGbxoFD59R9sIYxHOef*e(3E#&Pu9^f@~Y4NF0s${jHN+)9lDKn=J3bHI#1&ajfLHm)o@Ii z|7MU3K}0CgGw%Z`ewD7qOl6BBc32^nOAdLf-@ba*y)}P60Cb+5nT#{(kk8h42Hnyq za$M$K={r%yv^8pR`#mw%Dn64A4=Y#LFmeiy44T?-NrxkwgUQS7rlU$!r(N*#;glfx z?Fkk>e`~Jaj>Ei9vR=p5k-`<%)0bahx{Q^NDI%F3C6e16$iuy#h}JSaOxjTqvb$67 zIQvzIvoVf;T{ezq@lf~eEosQX`R<`@Ptwz4oG?5P`h_rIf z?eswcjqbHp+yBGIg`ECNFt_E3XE%w6q>{f1z-7p5eJ(dyRDO1*4?Nep@lA zSvOMQWSi}26sL&PGuoQ=N97#{1zfDR+h4Je2$*FoyDzIHpOV({Jbmi0{e#}wZc!`M z6k_UPJ&}_Tx0q)Vk~X;Tt<}5Ehh*y?OGc;ZOk0J?#fgi@N_GQY1!{e01=dW z*F3RdQzvu5<*~x&9OuWy4hv{@XJFADA0KnWFDfFQ3_PM!5yXacb~mLY)m__1NSvH= z)%zT;>_o8>oGh62B-JBF3HuOsDW*?#Yu_}<=RJ8s!NU-2_kLG+LN*D&t8-FSp#pp>i##9XG5JNW;rS*eLXekm8;BbNNiJFvOsgu zvU%KR~F+4b#gDx%N93FDA=D=6gY({H| zQh?J3FgLG$==WJTI6*5ZsvA{~3=Rv^D2ICsJbB8^*yO}my=Q~kqylr#AepG4lUCv<7* zs?Eb{(#m@Y_U1*Cx~s<@CgkgdS&i{(cmIeD)#^sC<=6}J@`^qrfa-$V4*L>xd@hP> zJ=LwxcW#ipY(Jg@2+r~GmSAZ53}`VSs>FC{xt^}9yxeA{SczQFZrUWx3U@*U!XLUC zDElC&Z*hCCzmmASFa(C2t*RJ+$0DT8bZ3y=5?t4?GN4n4_Jb8FKr5wH%WT>pv{6|$ z>oG3cD_GQU#4B)Sxs@hBFO(;rc0c;sbdQFp^@IQQz>jiiKPPt#$i*Y7rfkR5pgXJA zYYiMN4P$dls&mExv!|uBlLKKZ7KxduGR1Xdqw^q@n#6xZwXG-JkejfE!kpAKMHesT zx3CGEqariyOXEcj-kzSGttVkeJ;-Q*8P5%9QXp9Tj2J%{A?WrLT;ls=n*$tPJ+gI0 zw{pd#h%#Vpt&`_OuhKtY*%}9Mk}rK-7#bStbc82cw0|2!DN|W-S$yjlotWYvA?I~y z=}>(vR0bOQ?PrWnWHILp+xz`M_n#!w@c|F&^I1 z(lWp&MXnrQ{AByHLsX;0Q-H!F%r60Jo|N7@x0GdgnX>msj@!!H3JQh$%vEe(`#@ki z4;WrXa#z>Ydu#xHUKXY&k77P+g9ZWgrA*{00~y_-;~c`19EGZcwzO4v9Oy{8cVBt` z4FBv+%Yydy%cWqojQE5tSw_Lu&C1*zY-h;egebd(INW+BX-1GFFib@;Eku}GuFrhG z;e^ON>l-3&yN#iff*IofE9NWW{SbTU(j){3sumOWj}8u~LUGRJO7>DHHP)7g$Lt6qgwmOkn}zM9#~EQzeYsZ*OCw1nlZ| zGCDdJ78VM9PS`aBjivWCH*K9ELDH!sHJbxl2D@2JhBPDskUHz^MocfrzY)U@7W=d7 z@mHR!z-*rH^)DY6%OR}=b(IngSU2(kZM3zq4rYl5NZ##IWTDt53IjK}KhneGZx6qr zOqll+g;5gt5z$C?=wW|7@oVAVf*_(1(FE&G^uFd+DmaAI*!6GiDBcbakQsIYWW_ILu3LHGO0z2@MNx$D@<0Yxd8NTS3`{xdWXN615%H61BCoD%J#O zd*QraUxC(zDs|;|h!akbx9^RPW?laE$3KtP)j+5I#j5%q^k$$SG)MLc3EmFzFCUk@ z{p06L`(A$28{G3%+8v5MKy3Z@LH_N^hkK>WwmjYoQ0(5=r#~yret(#*aO0}8eJ{FF zBZHt-#(%s+mg?84|9wPp(A>SPD{f=W^B}0!qDueQYWRJyyb*nrs2odtXKfc8BoP;3iouM#w%Te6C)Soz2=jtMHH0f!n>FjhcaIn(n@nj`WRX6BOou)I*f1mi@2d zQT^7f#q#>3tD7=6=pJfcMd|wGpD^93MvVGDZgffh)73w0Dt3Pisy{-09@1O7!R^<| z$JC>oslaMl_q!3yuao5i2DDjwkb$=}uD-fua6RMld)E3c%_W!y+dpr`_;V39VJ%oc zLwEDK`n~&%ZmiNWGL4wejTk3kYJz{9_d|U76JbE3v2kjSa1a?P|1!#Ui8ye-YD$CTU{6u;*vmjevH6Zc zPrWxTwrk+RkZsobnj zemsrz+NuBi&0791_a?b28&{*Cg(G5uq9nIu1`}DVENwL$+f3OD3-TQ_s-1R6U$fl5 zeZ3*Yo?mc{|1q99@tO&D4|DXVaNxs`@o3 zRi3Q>ZY}xe7w6GGxUG1S`Q+Ee9!#te`l;aCrD>qOS~kIMz4!u&6--e2mqlI&>@uQ& z2Fxh@L(1o?oXc)mP=cE3%!SUgw~j{td?DXwo}&NiGzEOgJI1?z_tgRZXL#$E=K1^3 zy8QE>>-tj6v%l-;{(aeB68aA!IR^oM$Kwm!S$`>|>%X+al}ktA2P{-gX+6I#k$a{5 Kvfzc`hyMq$^}CY* literal 166441 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 GGywpRez(d1 diff --git a/.asset/comment.png b/.asset/comment.png index cbf8fde2c031d75f63e02494182867ffd41fac9d..3b1f70e1e7814d7deef469e7430a84d974cb8cf6 100644 GIT binary patch literal 176293 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�Ph?3>_uH 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
    XHSRxTD%3QFJN`qI6ZvU;J$xnl-g=a=i2 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
    g1+q7pyvQVrhh0khl^aiXD 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 diff --git a/.asset/files.png b/.asset/files.png index 678aa8c6706c838d323517dcc6fbb37946e5bb36..08248ea2b734e852650422716ee014882f9b1f56 100644 GIT binary patch literal 117001 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

    ye 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 literal 117049 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

    c>AglpK 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

    ~o*(?U{P3=9m%R*sA;is#bdLOy{=svP{ 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 diff --git a/.asset/help.png b/.asset/help.png index 8cf6b3d7be4c8f443066b54800914d394ca6e534..fb41fbb196d229c16d7bc2631328ef079fc36256 100644 GIT binary patch literal 265150 zcmeFZ^;cWp);`*nDn;5tp?Gn3*R;61yL*DWmjcC$I}~>)F2S`}a3}OV^fxCamNLJR^du8sq=X&NdpP6uFMJY^lLi9(E9%0Hzi>p3*^eXYuqo+S! zK0%EfH2tc2^ytka8S&5Ro|#9>&y0!Y;V;hWEZEb`EsOZJ*u*k8rWdQ)I3AiB8K)N; z4i~GI7eAX=>{O)|C`_>ho5iFp)IMvRK<2n!+%b*B@W;U6@^U$fw0EuoStl#ED?TDY z>Bi4dSNh*$P5jdGe?R@}9nIsfDSwTy(SK}v`p=O-naAtY{~UNEkN%SN@jpk5RX=&Y z`scu-geN_6e+{JKzA^mQul_$rS3%&}yZ`g)UvFrh{r^k(zgdNB=j+7{o-~yy8Ch;q z-~>QqW#yOJU-qZ@vJ7fksNl)C1Zc`>rG(3lhP#;d$dQqeg^M#Je+vfD zOVhb7Ym^d1_St)mvAx~TSF0c4XkY^3eFnY(h3^0D zImQ&8UOv;&2-dS)s_{W7x&kIOsuV{0u9-tu9_Uw|zAN;Zr<^!nR_atso?6#rAftkYba~MVPphAXYetV z6NFkZ{bdDt(U=Z(9}0PtnTGH8PM$`6;qO?dZYM~RtyC{9F+Mrq&>Q{6{MTv~(e1y= zq~!!&$dy)Pn2gd)H}Cju5*ZGgJIk^hyMrfI4Z5U@t@7h4+a- zj#=B&oG5Y8HEi8HJes<#e>C;|bM~VynQuKJ`Q2-KZW_mOk~qP=1vFzRvm+DJtm56K8DsW5oPW(^3rUry$yjE=n?&}FY7^a`sWQ1S6%Nfv zv@rhdn`$pZ0wJW@1mW5}Q4LNnS+nG98gvN$I#;UmZ#reBI9Cr3PBYu6Ub#5st>a^0 z-D2ypS=*1lX0j0|<4Onp`1J8j#MjYO!o#zvg*ucIn*24%IKmX|bGY_!6g`=x{M}2E z^)eE_fxlvvyn+44U!lQf)~Jg)I6OvqqhwCaU*}N6BYNrW6YB)1HX}Af&m6HD4E#H+ zs-?6;A@Yc`sS#)-;@F*q@zJ9wRc&i);~xQGibjTp-Tye9JfS@)-_H8BcIT2dE7_wi zSIHp@Pi<{$X|{iuimfF|uBql1;a|@1e+k4rA7Z^wvDvW}yi?J)WzDUJSSyatjOY1> zYtTIH8F8Y*MYrG}(Bp9@WU^#La}*L05uwQa4(PY7OCLk|5zTN?G40cP@Xd+^H!Ojx zE%961w(2~jz`&t#u{G^{etB6zke%VTJ&$D>&daA!o6OMTn{e%>;LDqv0_3$k>m-ocWM=y<&)O++D_e%Gy7J2 zOf_VqSoIL*WPsL&8qT+Lr z42AYx69sfHyv&SJH1a@)>lv*&?n(3fk9EwpW*W-V5_at)89de0)Jlxm2rn#g!;sHpEX&UDUFdOSi+)SF`T zB_&KO%niE5{zM!f()3v54HEYkp}v3A&XvHn&vTH4tE^YIZrrgxYdQC}gwdnT=Nre? zZEZAryw?J5plIv*D⁡$CzppS3NY6_~(g$vkRni@kh* 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⪻c_|&K&y$r>YKR-xyGH+{Z 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

    vOUZzJu#a&~1p#>jt_sI5A@;9zJ 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௛!rhT$ARzM~w%yU6e&r zm3b4vXUO9pyb&!O=Mx*-c+^Nr;GzB9cuQ1yv}|!kw78KOyfAaf6dhHtwWQ^^`Iab$J%-b81V{$+cuxILdK#&5I-=>c%~i3pw2TG$YR zJGo=HtK(WKb=-RSSSWDiNSSE}?90r4Gb8kaep-}JOr0#?~pX_`*ejE5S{fx|}O*S0XcJec4HG3+hCU zxi&F!r|yWG`E39GdZ0{!l&y-w`^(XX2orN>q1B|N?{>&Ts$SNBL3a9v`(3B-J{@z z6CnYhku)HVKbJLUd%OEnSC#v452yadyp(M%V){4_ja^W74Fz>?VPFQ8lFm9@$RP#q zTZQizLyzyNsXg`O7X<2EH#1!djhwX(_xj4#v*Xf=3Jb1nomiaB9|G(v7f<2jBmuP5 zyQVVjr;4f$bM+1>rL zx1~LlB!9f!cGu^B6t=7?AIy`M4=>;P_KYmUF{EYmZTJ<_*-Q}>$P}&kiA?CsV}X1| za$YOi)j?n$-eyxgRmEXtHPzGzz!lc%(!3sMN^}3GGNmGgvKbubPP8yYHHvV&hYc- zxk1mTMplDtiQHb4rUBoL^gw!Oo6q~8)wmfz*vDcFD;&HClUgKuz=p~HIU*wO5VcGM ze&A`M&nLD5H!Z9pGr6zHv1m;ly9QiXb% zkKYlB4bF38$Sr6E!9uTg7-=nI-xuRkqec3L6>r3V%)evYi3ejqgNBRMpEVBUq2DzQ z)^M2GD)Wd_PYiD#$JJ609iDm$a`aOwPL78U)`e9oMRkqN$q`$`r+1rDeVM;LQC>`D z4<2)5wPI*#i%kQ6cdGse^?2^wC$6Fv49(1-w!z22A5rXRZ=B$n*XTmaDQw8m#7=$3|i@8C9x)!B?upyc8Wbsvhwi}5p-V~&?cVkDW{9kwg&q7 zvB+|nvqe#!YX~}ScWc@_i%O1P8^U`vo`#Y9rrO3Y6e8UDxVXA|dYm0x3QMEZ!&L8V z+|-io`ZvlgzW@@$U-~=ui<2WWwb1vyFkM|9_>_BL?i<(cpwpFWX^qY`0FptmLMwlW zG+9J3bCvSvpy+tu2GTtw1Sr|06gj``q_*_}6QcBer2ga^Y^I(ucEJ#QZZ2INZ=(yO zf{$41;Z0}aP1^{UOk{CRF^`TBq11Hl2unH!Si0;1BVjZ^i_DAf3uWlNFw%h}i;ES| zX#TEy>4G`+r3=fwq9j6J93@S@H}}7lm^xI?wA#{Lp01(1rX4yA1*5v_pAvcQ!dPWr zRr!QzWvNF`{qwARZLZTr>mF~$qwAK}y{6iJBMP+6rsUWIPUB`c+Cbuh{N_h}S(+4nnVGhrsxF>%_dU*3R3!?=^6I48VU zfk!FWrfg1h>YbotcY|F}?$`qkn3nXYOL@SpbKT}#*H#_}zjxE?<>y83yruyfy;W?+ zW(XUVl_<`^KbpvdCOLETdv~}5Vx-QJ$ zvZu2r$F!%OD!c#0 z=FWP@jOtS@=0+eZPexMrfi93mC=9b0ul0!hGR&=EblGpHF;TW_a0I;5x?CE$(FS0g zhR3F*2Qya3$8M;!MR5HQE|1uR*s2f*>39tWvP{L?75+2s@b@zLcpDJp(=b2-Fh_!( zaOd?j*mw0jTzA)I)PX${ji6eW*G53!4RZ*9j|6D{Wam7`%=~p79VG-4M=_mi*P`j z{<{@i!_00a#7G1`2r2YNWi-74xvKuDSzk$nG0?6=srl%YO@*viU2N%IW_NGu6C4IM zOC>g^4R9miUbZ6hAVfcN_JRu~>mwQu$a208E%xSTl}Wj{7|563?_2iKtQ>va&d%%R zpz~GFEBsg26}Dg^gB;xkIoSmvB#0-GLr%3csxf-c4qO#GA)T4j_P!=2rXPLp9u$Q- zWi&iE5k643+4U6HEE15teh_*}e)$`D&*Fe1*R93yg}!w@SCdllWnNLH$yoQ()zH== z!mpe0PLxWuuIff^0)qC8BZFQMBoXBYnAJGTf4=mq=(|Oxnpu#X1%+C%+`1htHaWmR z7)C5LBPPbg*S*v~Pa}8|$kJe*TK49V;eHbhAGQR=}%(o2y*iBz)S1hhYHYD`fWI{-2@X_iO_Ag#mu4dTOeE_ww z-2k%ANosrHV_5BG-9GRC_T3`Xu%9_w{@W%^z)&Ye99zgcw*myI#GQC0&0ex{!m<25 z-(CYK`;|qZ-T+!ywgrzqo#3}PzEYrPpf{%taL@p`x!J7r1+So9vH8%>5+21Duj*Vn z-Yn#5u<(zM6qx$R10?gaqwOJocf^1rt#Bz4Z@Jme6%pH$d&1_BfVmff1n^=y9O$Lv zuD5jQ)N|j7&qb`>pwhQL_&dQrFsMs_Uq5jP*0kuydrVEd>39_99wT3by=-P~{*cY{ zG7#=Ep4Kc-tFBY7>H6)&EUC&9y7u>g&ZRSIvyQWKd{HP0h^gX`RquN;W`JxJaQqpTY7=SyxjN-AUz#vTVY(6YirjG88zDP4 z?Y(N#zbWYC0P@}CKYhI{kYh}TIR2?%l32dbF;DSsww!8Dch+=re7J1g1SvGA9O`1Z z#G4T0v-k66XgxqQ(*^ge`%~3qR+_#H={ia68+Dsj52q8KU1MThcb9PH;+fcMI-xDp zyK?Rm|BruNKj%6Dj)f2S4Nb^?>^steBoZXq<79U6Lm%8t$ZqzaBO(f z;PKw@O)1&k))iq|w|}~SCZ-pY_51n3$d;E9$7@4;mru@)I@U>hbV&I-i5Oh$+Hq%` zgB5Tnf)*hj!IU$RxJf+j0pxwVmE8VL^qP=7FygGqN6mw6%2(-_XW{IkCI}N{@945L8D91{AmMl+3ZaZ``tW1kQeTWj|$! z;rqdCJ(sQ=9{x7`=Yde+`>D-;K4pQP8aokS$FfBz6`z zHs%mR7*i^RDGGc7bydp6#I+t6KIT)fCKBCDQ`s+d0-WLU++mQh;)|6hQ%F6XEfMLh zZ^~jW?|s>PB{SIKoJmc!=79u>zYa%3tDD{x$O*{0ShDKKWboTJ#J{xwzcUc8$(`TZ zpU^i4k@Akis{gC@>2q@Nm0DyUw#LV&Kei{%gX{6=l$y97a#wQwV#%(kx6@-5w)ORF z<}|H;RZU0Z|4r3ACy>3RW9e^}84`K!oMk*vY_TB5g#r{jH=~N-BjD@5rv`cM_TB$OmHV$LEWf{tO?a!6%Ua41JsE}D7>3m(<1Uy0z^YG9(*M?G zEN44xDm)$+4>YSR#h3>>rX= zSD67nOsm=fijX>lv!qx_b)6b9$=F(6S?M?naeq_?nhscK$gSAkBmgy6b|HHaYnD;-{i*oH zbFaGNd6RXJe6*C8QL~N)L0c`MBV{&@k6C1cSI&i9_G~#wOM{kN6U41K$aybaGJWDd z4USW%bwkPk1u9sgse4H6QD6LZ43^d$nv?_pmZn3RKFt_@(^3W7EEF{W@%NWoEHFw`Uy#OI4l8&`>OLSknQ0(NO)69^3Bqr7+ zQ247YuZTVPJvpa&;Mv-SnalMp0_wZ=qPUEv{eu%!6F!>s(OOI^bYw-8*vxLR7ekDO8Carss2xhk18#EC{njJ*N>&%b*~rGnwJZn73vg> z!}-*1ei!aMxgGtnF$33l_%VNpv}n&8Ww^*VaRw;_ z!s5PMBOQV0;|~PXw~0Rll@Ym%---~-MM+w0h+_{kC_V=Uf{IwZG+MUjH%|4~drnx+ zTBPcz=Cq_uVBk%Dqw4#?_}%h!K&27_(bdPy!A;#8J>`a0u6n?NAa2@vHc7-$SHleZ z_?5c{wqeVeJv|uuiy9-xGIxNjLLm*XA-#Za4eN#uI90#&@v!fC{%Bz+(FASlWjWIj zJ2LWeoQId6*pn#dn-5QO&NHlH8Zm>#HF`n5n2-5Ao72_ShK) zs&{22=06L-SF@wElvOM}TD4LhRI-rzJ(|@h6TYr|dcXDD7;vGom;>Wzd@QxY^J5}4 zvbZSnYus5!=dpyB{XsMSzQ-Ju)*|LkuS-$82Y4Y=QaCRH74etW{)!rSw*_#_js4@y znx^tnc<$G;qw>P;p^<&1L{+$|I{EXgTTn6CXR?xhAdhA%5-NS(2hO~8tzC9b&u99P zAZ!~Hc62^$y^t57OP=L6$tC>+>^I7QXu3|31=sDC&bYCU%VykrqT%YRuW$SOxr4eo=*bgHGqaMvwvlz<*>bl2n2Xe9F-(dg zk9|~rW>!P+u`b2PB+m$VRp1vjW?$@J7KbgH)jrd#^71ZfoMW?`uJf7y)qh;`NoH@I(E=2T81*a$MJF@ z%Wo`6^Wwr-%M-8V1B_sUD!l+Yc!VTv`P1#s$C7R@yDE4yhscJs?fQ}Q`AJys%WC~m zvCz7lpRKiVY2E6LLzpBE9tqQ4>{KDidp}Wn>=k9$Now7guMG>~} z>$K&b=kas$#TK=`?53FmqIC%ZtNQ)ZeN$Eg8{l zvQaehs<1E$u=dr*;dB|ZAa?_kpwJC0_UM*22*fr0@VW9kk?jP!Knshp)bx-bN&lv` z-GS@Zu1na>UO+BF?pQ&g^vD#i!%hCjULDmM)4AN`H#uuXhB0$#kbzb&LqtdC0()^HZ%s=y&A~vq7q+mj?ioB-WTC&NB+GY9=)S-m$0fe8RA^gU z4!irc7Ud^;daKjm?=K#CiPQ7w>zZkR?Uu@W(iVFk9DnZ-U63wi)lzw`O@0$*J}7c> z!9MNHy(_>S2Y1T5_=q`P(qMyD)C^Yb-xnj7)EA zU@9zpM%n{sA=hi9uoDY=xWqo0LmwDb6c4jM3;)T`WDZ?5f3xfL`S>wVknR*~0}&od z9C=yuKHhm5HkGs`#P5pwYh?;VJPjxqD$F8%e1@@nx`n-rIDKB0?zQ8Vop_1jT!;H_}i&hu3oAXFiD)Jp&*_%Dfw%Sh2 zUk3-d9&BWMK?J|KfTbf)C#P6!tgx8pb*JDNSbmx04B&3&X?mC7uJr{tR(k_Phw-b4 z>7tWc?_X`bujAIGaXGf;R#C)#raUy=-@1}G;%lq(RBZ4y@6if=+ zl-pJt8_Nou=&Dj=s2}Y}S1E;#??q0Lb~nFRD~Bs500V3e{)yV+)b zQgFF~7*x`}^v>fSc9mpGO5yprJjwMPTwrml$-O@F;HJD4^=3|COWT|kBISH%LGM1J zs9!p&)1n-|KPJf+cao-}nkvD`H5otH`N{P-xhQ?#>pL_zw<|!wE~s=pB7^)J9A;* zeI*4CpYBWw>Lh6W|m?ThI#56J~N5k}lYo?}c%A#5g}mM%W@5Z{){ zG+^jfn(}SyJ@v^e2bmSn=43IHdLHiXv6axUu}eYaJNouV8zznNa&6-dV&?$C)Illa zS#SMDVVTjWsbOMl_LGQf-mc+&&9poIHLN6J+%6nNBpOPeewFr@a8BAa@^AtDs=~2L z?=ug`h1K?*5_%{Hf?f&;-eN5L6qXpkhjFNTVV6zxtK z8^vRXBc0C2+>R8s>qRz|v?!}tTl-o;DhIg2ioUHlR8Ojrv3+4zr=m(;SBVKV3ZOw4 zcpPbasK@9)89$vmK1$>DuFRm4w3tpRNCs&dmrb}NOHAzRCkw?<#zw=&+JP2%MQaV; zcWibQvoD?Edu(`q9`ToS!a=B?<31!E1A{O?@d z*>BWamF>048*pGF%*G{qUJin$r4c5b5$|Ucqw{G^n3z_(RAcGr06?V3BV+SJm>~%k zvio{pOJ=~xY=&UG!!I>z?ZX&^x@nye_gE6G zJ_8+r>{5p)H-nVhuSFmn`X$zqcu_opf_&U6kLz6|n;vrvsiw$aMES&_AUa@QFRo(A z&B^I=ii%2KX2g2Xx3pgtpJS2(7wVKEN(%)#U{k_ek_MR%ZDR)&>-wfa!u$IA@O&*E zTVzns$(6^Mrl9FTkGut69B!yoYasBX_-KPBDZrF11Uq4z*Va~+Yop-tUfP|n36IBz zo)l3NYp~|`=RW88#@#3hipL8u$UxpWFDUxY=G=$nL6?46GxG263u(|qeR%Y^LZEu3 z)~c~DhEhK{IsU~9A*8wrYuZH9$zPYCIBG$Cp6y8l)DH%d)j~D&Qswtuz1KmKpZtCb1^+59Bxc< zs;8Acdnu%Iyho4|)idDPk9S<44_#+7{sf+(3TIR{dxuD3=$bp(7c92hRXhyg<$Gj2 znm&CD7zf9$wEX}DlKinVD|*B-ACFMhqDM<{d!}He!ya8!ho?@XE`gUNh=7kDo)D`)r^2O z4`8(YCk`Q87ik!+ls+)xS)8XRA zIZls#mzB(2ClO#e?^Uwue%2s-FFZC+{aXtdE3Q?3r}gCLCjx~cUTo$pD-@RgIB)ob z?22IM)^()Ujr>08CW3H^YgY9`#A)T?Vx*@URMU}l)mSN$orF6SGO1f)(CV1EEhO5* zXihyiFks)>F1)D04R|KnDQDWhWj^3~V4xy^g-)LIP6AmwgXVI3TMv4lI<3UQ`%)d! zZZY%cbVhpl;p_cPsJ*XLb9=XQseXbQICEkLfi_it0EbK_8^&eSYHxh;c0++NYJ&B$ ztwzS>^C@#(&7yLoWUsf7gI~M)V2PVBGa;)9_|C}by}L2Cw#@^^x+TG_&zgudSr8qG zDmt%N#oULBM^B_)Z`<a*uXH3b?U8hs-NQ2r!S`Ff!`S;Rp6XjTrKHcpLqjMjT0R^@9RH+ zeW|X6>*#uQd43<3*!@yFub#E`s^dBQW00SrTw1HwOU&{P4{GIRQP1e$;7g&569e6$ z_Dz+J>N~<=)Sd9E!;IP_c?TUYm=@pT;O8m=91SDKSm&bTo$&+eVAkO6)szp}ij2y< zUS2j&b4DKYe!>-Rw%7rHm6r_(AaZ52z)q&O#v)sy_x3(~@aNt1e+s3?8YZF|f zviE$B%~foeImkgQIPL?Zp+!+lAJ}H$UGJh!Li}=p;3QOHea%x9KB%rdCb=xD9lyRZ z!9C||U1B}1lYyB|5A*Sfk*_R8nscYSWn3KGzk?(pNb3l*cdPp>vQM9GC$gTeDS(4_ zq-e)H8ixVDAyd@AtRah=W7 z)*9BIoE)X$_;72|ADKHe?*ZH2so;!Q=EudnTY5YJFet z5uqa4)cm*siBzGyR5`J?0u*cR+%bILed|=AWp6#Zn34`9!c;QbfH}x-8ea{pEiJA> z&T=hWYE*N=>gj@9oSb}0fa5q^=+xT7CH+Rro~tl-#o?Od$yjwy15UE0&>jEwz1I|$ zUD9JTAsA_flNx75jH+YPD~qXyaumoTqjkxFs}XR*=e4!%5!b5@x4KjA$(jl8e&guo zG&PbjH8%O{v4_a9u-WS?xRsTkIdP+kinYGFYz3^9r!B13Et4)a_p)4QTa*J{PBGk$ zv4y{IbhVK6V4JJ}R+PfR%?#r@kBJ<jbKIJ}37B zm=)C;gR`f)^_g-p?c>M27WT8|>a%1R$y^U~`uJZKksK)vBN&_8}#seWm6=E=_X z_FqQA&l$?^VDWbvkAxw;KmNG$hhRf>ux*9XLY-#g8L``3X1jHn#jpiiUH9?YCIx-l z2S#STT?}t2+wKyclYA%U!maC++1aYucl&0pC(At5)|+Cfl4Q>!)J_kWRel@2gG+ZQ znGxXd4vKPgbmSd(^~pwOgM^dFWd2VI#d=1UbeWuNLmC6;}-9lgF{u)Sy4K zC%ncE^Oi=j!Dg{JJc!a0y#K9ddQOEU`p5EwOP9KCb?;{%cYT<^=CLJBtF?+3yuROetYc0GTn91bi9{gMnsEo^R6x1GGXbZdFbUJwb ze9RxJS<)${j}iB1D0-(`9~jp+uDCl%XOOwb7G0|xXa@y-pn}SWwgO4xU(8gqTIwxZhoO%0>E@{fV}7Z;lECCLwYP`F>1Qg+`U ztaz|$8u&=gNutFpYilx6%(OI2Eg-n&2K4;c@#PEPU*uXU$+eLf0mtHk-^q*_gZc3h z!0b3koc#FePV9Xv4NvLoO;c8|=zMMKkQG!{4@EBi`H~;Ec(p5wDj5>v)GDKeYVsSDuvQBvymtdNC>_ZvJ?sa1|HHDTS^cnIN zOPHrmj2QnqF|sfl@?2)^Z1+s9Ddn5I)Kr=*u+Uu&QO~xutwkG!lYoJyr%y3W z`>aT7njS-P^PqJ)uy+Y~DFqz}cC4t-lslXrxfX%GACY8$tYoiP1=8btz5S?9|`Ec>1g>R5z&P1%7Hmlww)6FCLZAVTZ{ zy}*Wb01h7c{=HWvd__jE#K3$S79O!$*k^tkjaT5QHl*o28_baM)CD(G#>W%B#?{D!I*2;>Bj)jFs-pseLVc9610A8bw z9pA26$~(u9;2)MuTRGNM@lwe>c8OA-{GYr!=_9AQYU(+m-`mh0$3D~GpMT4w7xC=q z-Mh%|deCHU_llo4X_IO^IzLe?VMaI(*WWr0B}e+se*i`dHp)cK1T2(H9=O-*=^H|h zzBe>eJ$?G&iAiSr?(VyZy6HbJo0L3pnY$G=v$Ttw8)I9-70#FHUuauO2Y-z&Z*6X& zdNJ@}zA#2f_XFs)pOsM7!mo-+HLgzh@c47D$m`8UfS|z(t+AZ{PBX*0w%tr2Xdqe2 zJ=%B(Er(dXlkwRj4Xyah$V?lVm4NmRDJXQEMHKokx4YFcut?}ZGr(ADIbV>>rZb;S zxp8W0nx31_Qc-c?wMGWon>nW6s8j4?ooDX)_dIlva72r#SLk!_av5xxaREC-es$=`CI1{iDUAk zlrI9V2e)9=x~cOwh(UbDvqSb!QgfhiL_3>)sM}sDftw5$*X_~Ty#6%>quz%h{xU&^tXOL zChPhB`6X8k8!PR&Wupc7sL>s}^!#t{72km1s5gp@QQO5ozIzO|a$xPb*egiRbu0`U zV<)YA|A{O&pTfdghJ{{l8pKh#s9%LAPGH08q82<*R9~d37@huS24Ft>gyRS!bTBhvh_LOToM$fFhceE&Q~x_wazX zvRnGcu@=!TWbf_+F`r83EkA7D1gte9dcNo|cGm(%=^raU1+8l5^HZF5kjW{rDJkac zadv!K2Ig&&2@r(kVbkGC`&6aq_>?W643Y43%C+_Wa`Xw+X``qgu@WJ|$H&))s7*?L z>*R`U$ueNePH3njS$yD_gZ&}lG5Qwyfb#q6vOLqWxIf*8nRB1m7 ztetR2PLfVwVjpvMiFZ6RlRD1Q7l4CKi}&_&?qeDJAj2hA4NIazi9z~T+_93X`9~{m zYXx&rf}_PCD)6aELlNG?5S?9oMtQ)kCBgmu1nYeO=f_hm;r;Z0fp_RZA`{OB9etth z*w{53g7sQG!?l(!NS3S${^KE474ELUiTU|D4r2-4tg0z!mKYkPPt6Za7nH$bET?nM z9+F(ZVeZWF9!E$yC+AJ^S2VELC~nXBR4l{^PVbRVGNIC21R@U?lY(O8z^O^k%#@pm zUqA{Z7_$?k`Aw?stgon7IHxezp*z{6qWXY(Y9Dn`;I!Vx?o7mQrTao`2nfK86&iFR3W z{#sU&u3W$e0SRyARV0lSt0i|CDA+g1RCFp&?Al^AP~cA=LZ;2Nt++?1WK($00?NPd z)}s!qEq;A}3sjxCy`p>EjA2=)yqcw~2*{SZmcLqNQj%MJ@y~JFSyZ!CUqi@QOs{7Q z%U10bw+|J;-8NH2U5$I*M{26704jajs!l#Ef~vyETGI{X zBehgl0fe+fCq$qFaF5dCQg<~9`o7y1GLhp0iqqT z)Z*xVwunDj?6Aoi9kY6N`cY3$5w7__(Bq}3eUzqCKTYagfBczUEN6D!BCxr$tdXLO z%nLDtsl}XCd?sb0$RxggI*IU0EPx87`~5I3fkpOBh#CJZs?0MMy0x~m4_R;+TQAQ7 z@#~cZuWdE-#LgcT2TogFm^A(65o$WwIgO85)FO763eS;GgEOy{b2 z64%dW1!htkW*leL&yyt7wJG#AgSG8Psxvi_?5O055m?oMOPm$}x z0v;aIy8$gHI`rL@FDh<_x8r4PZA0QJUd$vq&YrI7llo5D!&ko4y*opO7kVmY9Y$k7 zSIiv)y_R_;{DMqrv~ASJ29?tgD#|sa{Hc z!m;|waf%9Ec6LM>Af=pDjGQEM1&p+?^8jM!7aC=u68WCfc*`;aT84>SlELJR^M=*# zWWx5HZyy|%wAp$d#BEISoS=w8ND)|masA>4~Dl^o6FFt7aX7l6h#pVU5nO0=H<;Azz9~_=bj>3AU19inI`za2se2OBV zq;ZRl)0+_;sPVQ+^U*}y`u3*_8Q30&&Hms7e(YqmxD-{l(|7Q!v0kD5F|kqOwELn@ z96Cmnw<4;-!{yGA633H0f)2c$(-kL8#>wl&396#@!#lk^mCS()7aP#7enlC&=d+)u zcV@sN92kn$M=zvA@fAacaUWZ{oLBnh($D9}f+ubE27^h6=DPcJD|kH}Cp{tDqt$xZA@@fQEpeuoeZYaElp4^5*4Hsf28YRB zr!()=RFbSqHc~a@3>;Q@*_0SUTB~AiOO}mTtPezQX`Q@HXAr7jDC+d*Mk;x03 z-v%&ek^6o7HJf!>n!XsKc%1rxi3!XKI;2Ktz0YX6bQQWib`X=CPUu8H-kUwy=HiizZcaE5ZJ`*!H7gvDSSDvHWuOyDq{hUlo_oJ4|sHl>% zba$nRYC#2G>a$m>0+2vtzDX?+$$W9H?>qM(PNC*_fxNTYM#h&aV<;L=b#ZYFOu7JH z*}=h^@yKFqw^(RzBQAAuH<)l@ffO(zloWe-&u@{`^gIJlNgwKG%J@sF%ga^Akzc;_ zrJOF_1*9p8-NL8m9k%71USSx6h$+Zi`{$l_QBl?#N1bGG3FInA76LSv%WQW6mJW zIdY2QI$9qwRm<7gY2{vHi%adfozY0npr#M-$O+Jpxnb6BvJ8)Iw59t6+m|^ghSYR? zgcg?PwCEKLjM~r+4aWl-gY+P2E_C`a0!gHegT07{{fQFzMs`NSJC_MsUkWKHDK!-% zHI>3b$st_);U8zcfD|NSZd-(h7<ROeteMpRxg)20%U6<6+DhP5oFlDnDw`@I{{_4M{%`JK z?Cv8`da&mA7CnS!N{Xtg%E+^;FS7gmDjckNQm%pT5#?YlbQ6}qx0Uj0}H7pQ4c8yx-XfqBT zF%-OZfV!K+R&Z3_?Bj`uFb)Y!;iPz9MX(zFba0VBs^W?0=gUsigZFAkGNPHKh7hhr z`-N3T`InynhKM70sq<+xOwI0Fkv&nfO}~D9zxb{E4DHqTJ~XgdxPYj|PXukcBK_$^ zywHkaNbtI=2RYQcFuG z0?QNJ>JB^iNTkwZx3C>GQ~UXGFtv=d88Hp_7|XkJrM%%$#+sh8o@j4k`rsv4bqq{% z39`$aLqBD&muFt`>GP0jPKlu|B1|qf_;CUDt6Oc|2|uLq9LOdaQ=S7-pw%4PGfXc4 zIWM1bIa*Nkk%)@6ZDk6;l4IBCMgXo+Z0y|#MI-7@S!SH^$oQX3enOpef=np-G2!*b zoEW;LvF~CT-wir#^allu6Z9)@hrr1nzu*qc-nmoGLbC<_q0iIq$CC=?%N$?*KZTO$)Ux zhyKh}DpNOPSF7-dh9cLLt_5k94B#EDxNCGXv6EH9i~S5cvxg96s5n!MQ+MwXw{z?a z@r8_9hk5YAPa6J|JnSG$jG)9X&(8+W5Oo3vaV0`b4nMzrBP8{Z_ah=)t@Mp4X=4h9 z@-f%si#o+U60|g1(^Pw&?DOqcI%Di>&CAsJ{bFz)Wd;YP zJj0j_akFX5z;2iMI@C2xrgJ9L;6qMeR8ETuaQjI2ltxVGWglaZ=C$-0jgL{}eA^!T=%bK#80`O+t`uyjwv}#|# z$gYyyps0s{BusY)sTR{+lUts;_HITb!%%j7wSMG&jDnj}fJ%ClPySDwfv?K;=d2-QL<{3TtLnO+j&piW+0N9QSf^Ns&rcos)C8Nzxj!xd@PF z+-KJwx(9aX$Qk8<8n9Q;Mgfb>aoKIth;U>2uy=}53sS@$TkALDh$7C1GqhuT7?!8) zo?d+Jv5Z=x9CuxkF}0q39NJ0K`D9~Q?t&WKPnwxYrE78$^xnZbGO*Tdqzo@FM-&K) zP`y~5k@Fdh2+pdL!t)~OdxoFl9wm*WYNsc3noA{aAqL{|mNQwxd_oUuk`M=POKs*6 z32UI^BbF$8LrEFC*EK=-C0RW;nhY8#Dt^&6`Jx?b zZHJ>u7mBC6B;nKC@$#iur~k($y>{hM)lO?zQuJ+h$Eq172(!{X5#I;zlS$eq#`P>8 z-Dqgy`Qvq?p?&2iBL#{39#zdc{Y`nf@^l{dP6sQ1erh`#<}$|ijPxWRZ?SeRMkcRq zrnY}I$(V!eR_b+g_3BiMl%D+lZU}6Y1cK1&$0*KcYSn{+j?Nam){`z%Z=cB7t z&8`ig8MLif%G8%UPPXTEd~bj+v4CBNhUwjw-^|W5?H^`G!1%;DP|wYc^aM~O?lMN( zVzXidJ>yOo*5h(KG|_Qw6HBl#MwF{5c2#1RHoR3+T{DuZJklCDT(04-?=+v*I z_xvW?fqiWy1its63y^#EABn#W8p@y7m9OTz3*c_3$(jyZ;4Ir;HAg*%s7}0WS5bWA%{;KvkAkm z?ux*Pj8tfNB;n)fz9l!Tz2M=BxQN%zc4{$fe}3LK+r*oZAUKnx^7=-jfrFiD=W|Vv z;^3+V%@BDO+zCO)qNhzgA1y83W5l_^jeL)H*mF8WRKnw&ASYUAOsEFPfF*UQLu4NNI z$^G2!>#3M3)`$KlS$j&7d(R=_)fT8I@(t%|TkoORz3w#qB!oFpZkp(V0fo?0s){{3 z$HLj6sX54gbjA1j&jAzVg`}Tui@!o|`>dOmTc=6)Ozaz3uP`I}$D*S0Gp-0N1U!>v zb4p5iPycH9fThp$Fz_~?7jvhlcC5>G$+!k|niFv2)xUKzp3LJ;NS|Fy+zGU*J<{l> z*kKnKG_`v_{|0bB_L~xtPuB(t9gmySI^8m?7knIh$tq|m*tw`VMP`8MI%-t86el@f z9tdS3A2zQY#L1j-A8*n-qRlmN%|e2ilgint_+*^3d}SA^4 zgvl>n0T$@gs;tGmx%3F^jQ!si;NRdg()#@@QfLuwANwcT!%B!m=s>!UZMkjV$E6~Fh)Ia2GkmlSdB5{} z&$11!TCY&rTD%$Hz=RjG!fs8vt)x?qpG<5y2wdMtgS2`Sl%yi3m_ZFQ2Z;OwFWwqe zPhlKp;s2x`i`^hej1PHxJc|gy)Nao~}sSa7w zgc=*~R2{P4Vx7t!2FW)Ru~F=(B$VaWrR7&;cMQ>@e{7W^#*Zd=h?}IHtf(2q(g#!B z!Y5B&-@>u3T6yPKWO&=VBJS7nfteBh6TM$pibWHMY~+lMlK6U*fe7itwFd+Q&qz`R z1Dfl1R&@2XAk&eQ0NJ*c2R18um%mqb)B1eeVkE6oz!~R8j~*91GC7*ZtAwk3D24X< zR9+V5%#|%+=Ii2s_y~!6E`3ixoAh~M)fR~JE?)#xzmN9#>tCmvjZ&ANprMiJ9`!i$ zz6~){x`$aQLk>p~l_nt$H<{_^EFb*&mUmNL)U@TOiTKv7Ujb%sn=uz=PMNvvuRssD z6N;=Iq=KGQ_4KdhaxO>Q$|+8WLTSz|yTB6f_czdLIp2D7M@2{dib0*|m;dOeet$Ig z@Ye*bk7YOfbzCvP(5;!}?ILX|tY$4LCjSJ6!1q2(-eF<;Hqd%YgHcPGG3-yc$C{Y& zEcA`Ev`VM#GUE@_8ga5SN|h?3xtJG+QpZ82%brK#lcjc$#r)oj*Ed(E%!t>WzXzd_fAZf{$&0Q%Cr+6CB&$H`*v z-~9mu!2cn~X2<_pjCS0>v~A$MV5=I3muSo(B!bVZigmVkFNPQ7@|1Fc1e8nv4sDLR ztUmkO@4yhR{)tI8&&cp_=f{|sm>|}FTxi9aSCUC9I(xLbY@Z`UiKHug{jDiy{LQ}F z<;>;!7ZMGlqkVmEuMSE_n|k5IOXMSQB%An%SzW?2*nfYk^1ZU5tw^#wTCHx(#Z`5d zl?=dY{y*YF7~wzcNmQTUQw$#jbxh6}%R$$umW~fXC*N=%{Wj~q^urh=Sn490`C)Ro zJ8%cPucHxl$dR6QdXx1|q96-^BoT7|Wfs7}FCBwTU2|yDRmL&53GB3la{IH%YxO7A z{U2frm5A13d7MvF?&=xLFYa^(6jM7kcI6CGX7+sE9>^sQ$_zke>JvV8<_&rpXlr6& z@%EnWGPBcGZQ0)jfMqt{p!Dy;(wkG(EyMalW>GDACkFZj335OmkB<>QGy63_F%u$%9kuks>4MF)AxlmL<0}Ie761T^14rFC?tZ!(K}ngu zB%{L3!*j9iH~a9<%mn^UZ?DV*gi+LO@+5Pxz5EIQBh==cAw{53Xv(VWNoVJ>7Jooe zM}`6SICp+8tk*nY+Xf}A^4!IyA@LZ8Mz$ZZ->H>1yq0+9(j!ItDwRCBJ1{ya1yQM- z6%rWJ_)5%HI9ao^lo*+$kfRaO*A+m`I? znsWe>2$g{!InMw(>l@v?q?4NFJE-YG9J*QAXQ}PpE;a{~!oeJts%P?aF}TARbDH@o zdB58E{jv`I-)P^3g}mBj)O#kTXnhF=sQ_XCYpboT)myl3)EzKnLekW#&iE@XxY>vG z*tYM|!avOHu5ACqGm+F8Nje=s`6W+Nu=ee_^pp~YB_Y7vC%*P-)Ht@FGz}r4I?2>j zFS4r34%KV@lL}hiB(j)_gCeWR$2YFK>j@)-H@d0KW$Z^0HQ#>BFL{!{1hg1FSc<(8 zKRLO5M*>?b@Uk5=>ja6z8l}Y;ZpO1^6e5Oty2Q-Q;Ctu*MoEi-pi?o@F%LVbo$3{$ zn$nMc5n@~0Vc>e4L208bA%2WHGQ&hq>ak>D0B18=mA_lD_Als(w{I|v(aIThJvlyR z;JW1##B`bHi{_#WENB5`2{wx|c&F}VGE8`ZQFYPYvdfV^w}OuEI<~a5`uY0uZ*g-D zU7XCaT-hgD1y;iLK*yK~9-4q$YY}Awg>G>0{;+ZsZ{;{}(Ad?KK&xdt1vcH}H8;mpYE{)=eBGXc z@NIChIwSDxisUa__|x{UzoGTCgddD64`)u?-Q0p(C*mjKNhd2JBk_Li;lE!W`n|UQ z2L}73`Dh0Rp!Fk>;VoVF$!9JGqK+GJAJPFHpQKtnQNVvS!sK_qn*+3 zcg}_C;!%9I@86&0L@48xXzk4)qv*`aa&6C&lUfinUAPZ^0;!;>y1F7F6xYtLAvYI0 z1|uRAOG?yuFMFi3_#dF#q)8LbHFHY>VjRSlIy>&dY z_-4>RcP*0e?;7JeoNqCLB+Xcgeg-TiPaYkcLmjpZMi&Q+%n{&m!>u=%`L(VN3_g9^ z)|U%68tc8jU7JYtDn|K2;kFUzdVrF*2m=OQAb7BKYCV5q*(gvpi%gipu9Nd;sfenU zaw@KyJJ!|n*TH>KLlWFb=|&^_{#)oPpVs@LjeGzG3&64l4Ho5fC}jTxQG|jO`#2y- zj^XhVF)Eq7TAJ!j*ex2nnoXb*mT~NCRJ46xOWuK_%6iB*X`Oa97N|L{$ytpTYI2F6 zXJu9$kM-wnHg+8cE<`pKummP`P+g868mrU)HB-&t-VZRWhTsA%i80?(n1jBvu-fSE z-D_#~x?6XgF0p{{t{W$kw_t(gcg1}`TTEB&i(iw&X7RpZhe*~U)9JH6&K6Ji*b6Z& zp%E82>b`%C2N-8KEHKO`qK$!}Gv4J6%l-@qX$+Prk<8AN#g-x^euOtasKXf*!?iJ~ zr6Aw`jI}*Cmm%tuHVquS%>*H~z34(2rAKcubA5eX5_;I^i^bF5 zydk8#x`H?#kgsC(-(~-q$;Pj+vI8Yrkjdx21AI4*1nN_Ul@Js_cRGA#raU0YzW!5<>(RQ5$D8VzyVncp>wEEP5bWtA*+n z7OXnOEmFVexeJ&GQ{B5^5H3x+`SGJSi)IZYJH2G3dC52<9*`F1eKlMJ{sKI1$o&I_ zOf5S_r|%Unc=YtJ=yDp0t=Ghq)!r=dPL2}Fz>ukDh6UK;`Dx#NP%zJEM~gPO6A=Yn z_g*GG6vTb}meA#0CXL#kjp;r31WksISrct=EJ=1mgfT*#`5=9v$hr_cNyg+3_BNde~ z3*)k()kzzG%L}akdKUvj^`1n7pLM{YJY5kPi?C~rlvB1i-TAxqyrG0WUdZ9>ytaRQA;w{y<6L|z_8JQ zpD!=F2rM&zc;DuPutLZRR#+1m(W8No{}RnF8jH4B6fYSJ-<79fJ^G0go>ZbWv2g%MZDMfo|DNyiI%A(=WLss^W3N+o zz>+3`o!87P7f@&(ZcdL6jnQ5Wi@4uBKIl5-B%-kJDwIM?5C1Q8src6SqBeH=TfS2O zJ>rfv0q~xVF_E}De}?CShjuY4Z~W7YmMP8AcUNoh3*iTs46no&MYVAyEoUQoNfs7m8?!#% zlw{}JR?CXOnRj*UuOKS+1+yh3PSdV&*9k}f;4g1^_R*sUnU*rl8I1u`o|Z@6D|zPl zGsz@eBW0O&m79m=o|mvM+V9JN-gJ1WYL7HR73<7rJ9kv`}lnSXKEE+ zL_KS%**Sy{Qum$R@gz*H`8EDJzDw^CcHlL`ioZ8$0+Xwn6>59lJw{e0D<|0r&!N=R zGOBsQsps?QKoMu56QYc_>RP22dojo?M&bmsSHd-@)!D=)@|nGFD(U!_Ch&FksuG1| zg@?WUZbD(o3Np2{^h?KJqag)L)`;20bZk+*^TUU@>A0YoBhA3L9OcVJWLp#HioDaO zt!BCqwBqbO0vyC_rB@F%kOHG6bl8}&BdNQUtZ)tUcAbm%aY<^&Ynw|W{oqH;J#VO2 zI!jq09T)ou*Q8G^zr1r|8QT%J=IG#kL|h!)rORU}mklY*HQdt{qGC@7a-ezg0-tEP z-Ag^5X*wfeMYwDNvF6N!5k;T3(%g`*W%@n>fHj|w2}?s1MtMdydZ#K8M|cU-YpBT5 zA9rzZjKyxX9TR^H3g)6xzNKy8rlPL3GGTPy97yS%KI!SBevY|^QDrm_hM_wo>?g6D zBWe);#?wm4{FA4>k0DIwygW8`x6x7?iogn1cby-4Ovkq1zVE@5xjYd6QSK1JP{<^& z4ibX9)WRf~*Fu7NjWU?NSaDEuHdt^yR>gDs;R-1#(r&7P5mwN03%sFo%_&1>ooW?W zaYH%Hdvi8m)$~#HR6x0j#khwJMabYTnYS9+$_mO(j9YU#jp=$%+M}%d_qrAu!_VBW zE1B7s<}}%Uvs*!JuXi#E`p(@i}s%%RGQ1P%g+<*W>c}rH`}TVX;@= z-xYqxYOL_7M4Y7tQ)uF(;0^So^L=lPi^;yP^tFnfUj+reMgTOKvG}Xw{k6)HWpO&6 zbP0x==)s`$h=*UTo3+quVXnvd=84$O2sh?9XXU_3=ZjTR$>3Hg*Nw)>))qOT-M#wu z@Ad6>{Rf4op_^U$DZB{dpxP&6EJOSFrd+5uZ#Xo~HJiF#%znwqu{CTkV6(r&vLw~< zRUVJ;f3Uzur3Wr{j8Q7&I(H)brw6T0U+09~&F+4iF8cEkkigd}t3>bq$?AjETeI#X zsOPrQD{$OOo~b_bXUvfIkbWmq&Dng-#|86CNnPYYSWkc-Iy2nx<5IqRPN zKwjrN!iTsx#CR;W?1Z)>+)AWf{Mn@f(XOoY&s6BL#6ly4d+J2IX-fh%jT zv_!lc))0+x(1c=$bb{tp25@>nf@EbuDtDp4pcLdyh-`$jakl4?76Tb-K?8aP ztpteyxLEGLyWIkZF241Zn(xan^_B1fHzI;7(_&h`-7+r=`H)qdR+Ku!$a-`gs{si= zNC&FnKxK2}^J1kE@v|;^x|pBiwtVMXCBLA$4MH%IA6G*Dauf{ z_2sa)pN=Sp`j0p%XDICR%1zs>P#Pcm@tn!ljiZe8v4JTpa3a>w&l2ix#9r~7;fC8s zvLDNBHc446GRXd8TB)(yI}dXt7a3<)ZMRN4_fvOv6b;O#QqQ-_sZ9F@2s z1zsv~B7Ck73S#Xc3h&N3v=cirBGv5jzvaFt4Ut)k^+LJ%hpu(sGCZj%E{A<(&%hBiY}%|SCz+Uw*OauE;ksRNK)ZDG*`Qyw!Gl6_UhI7S zJ~nBuu-)l;=c@kl@$t>}mzJxhK!YT;Ry~M13k_G>!I&$@O8n`6p~Js@{}ZXq2un8q`M^TUpr!zx#$g$%`3Lohejtz#ebW1qVco`z9K6M1D1rPqm!0OyxT z`<&5t$}2yKY1!6MnNy?N+0a-2${g<@ z2@}k3s)QzLT~<*_-!I;G89n3c;7ZHeu+_Qs(pQ0*nrnGmRTUM0$Gno){Zk(=@6|%a z&WMXABDakwKIqnCUS6uKkYy4R69Dle!6V4QT@KP_w9=~kst&oojg@Pje+AnHF(wm( zP%f@H!}N!fez#pQ>?o;6zJ#yE3hoT~=N5;z3e_}z>PVH;?PYEaBIPT?DiahSGBF_z z8Zs(T15d+VPVkbF5G|EiZqOTjBhN?X7KE8Siffos+<&V~gfIL$^lZ2t?nj$%3RM8&MKm4^WWyyE z@XKS-`G%a@R!HBRCW&544dnGr$u<$r_`=71Q{7tF%&y=L7N{ayyNWbaGNBk!Dy=7vA>Pe1HG6e2Jm=%% z0|ut@WM^jy!ZA5nzdHKsrNg;1wO#xhB%a=KQC5~<$*@ISV#JP^EXF;i#BIp!)O*)L z+o zA>+LRo?WQcxpv<0eqUN$r7Yb|f{&UALrFM%fkynx+`%4C)}n!*pTg6&q}^4fWju)Z zRvwQ@jU8Uzn;)s!>|15M=N=ci6oNX5w7&L*fZD zSUr5rGm`^>7>B)uJr7pIfjB=i*g45c0=r`W8xWv64!I>7mpHg>mJ))enWd!G5{Mwz zlb>bnMFQNpNsJ7%xC=dpZB=W80Y?{gajC;Z8rC71~+0(BeTFNAawF@8U#)mK^yIH$F56B7^8YA>y;w%pGb1Lfb zLc~40imh&R!1VfKdmq zrxEF`Gq%S~mO?w;TISIAE!dy*W!u`#@ut@DJ>B*lwGzO*dtr~}GQ>hpV7V!@QQQe- zIT`(P95$J?Qx1EB;|ut%0RL7t!(gP%U-eN%cv6>+zHcY2-BpN zjfujNX*Hfb%_#|XGqG3~b4Hx*9YRmF{o=75Y9ABFKjR5jNw0N-VIi+VI090EDtLxT zQU@}33(Qz(x>?ZBnsm$nJqep;?xQ& zS|G)#9E6C4=%EZe(0p&q~;4OZp8i;7B zYlx$9#dx**tw~<(RD73rad>&hDdgvMY0LR_E$r!M>-DIlHeq4-UKhH zyrFD7VH}f~TTr-u%1CHkSGyrBQGDp2PByrUNIo@~bxne^MRBRM(A+oJd~|8CL1LE) z7o=K|K%J-N7u6o71A=+266hziwXFYwY4p>q;=BZc{~Or7K$Q!C-d|?~9fC4n2>&nQ zhQb*@);c~*GiTRdM5fpE@CoOWr+m*qg@eZUNs)-Rn6$w$%+#Dh?JUg_R@sok{A>nD zHWNR*1dtEui$*M#m=WhP1TSf24*lvZt0Vw4d_Grmnb)fYdGc`}hD-}y{+eg%7( zA0?_hLl2R_CPtWTWRf^X-15{0D+adcWe`8H#!Ki?SBj&t();>H_rNIb)mg>vjN{#; z$F&q?*r`#NtUPN#Ld8ISIVfyFjZ!rF>3?w?zuqNyFW?T7y8IjsE&b-d&@3NMY-XB@s^u@BUdP(0tax&RsAr}239!-49UtZUQj|IL z-2D@ou`Y6gK#~@wf1-YY;T0^F!C#3k*u%qri8H>&pquppHS}$M{XniI@o(e|P2hS{ ztKQA{|E`2U6Cj?a@>QDnp%a)9=ud^*UF+12@uRLW#gqh_^?Dac9-3f>Ks+Qz`zS9Z3YJ37UUuUgSPAjiQ^~3G|z`T$W-9$$e*6?w0b{|R)$38hu zpD_W7ks8VCdT%R9gph^vsIeX$U##t9Dbp*9Ieq)PHDkpq@`a4Z$vLOa#W9Crq3bFO-!<{pcb@kC7`K4)Xd!& zpR||yj$plo)2POgo?DWDPfSYKgP1YLV5CgP)O-FNP7}#j0xK(jP_BdGe=fMidF+qVa+WHHY2h&w9Hr z(V6Z18lT#`3lAggp0!}=3?0@)u8IuMRtB!Rv#0cP7t0b7^QZylD_MJfG4cQDnMd(r5&5SQeYLvd-t*zw+ zX@I2SD#QcEw8?0(_s5+kj8G#w<_xK@$4#i)H2Da8CUav*y=EA zLiv|FCBnbUC=nXyBH+hH5gVF4%2tJfQIU_VmvW2Px1?q7+6aAjR-Ey2Z!%gc)HobT z}$Yw0egYeoce*N39Xb6qwGd|ua!T!yokW$u-{MJ)!!W5}x z?pCk-6pPbz$kw*gtUi`8DT+ViRe8tGUPLP931;^NB6V<00d{|tjW!5tow7SWc=sG=ch)|ZB{u!!hRe4L@+4@toa zJw<-x-KCLDOdDK{tX9bz=6!gzd7%lkvEFBSEEc=@*`Mp%H}tN?92{jss^Col!;V)w zlJnk&vc|~;%AJ1qBk}PFtj;E$sU>p@+Kl4AVq$`mcpL~wkw!QyDUZ@E^$MRjO`|FR zTKn%_!wC=OGoA{xyXr}@&Ko+WrJY5-TpOFaO_n@fDKc^Nh0Qd?Zr2BXkRZ+Nouaa} zF~$P`ct8;+d9{8`(8L2W)3l$7GNW~ z@UTN+U-0Yg?vZ^UOWnO0O-iPaH~ez!hc?D^z6iSnd2A93kOA z2zDWYl!HwH{G9IUzULZz4V~UtjB5Y`nIMVe8NwsTL4b@9&;2 z5Jsuw39|9d{akv}iB}b`8f+ZZ378w3TAD23+MzU^VRS*9mbEWX!Wn-Ys*y1>-3hS5cp$wbDEK92g9o+UGa}24>MARQn$*iA9qUOsd|U zur1`K-zP5a5mi;?JZ%yAI7>Fetmh}>m?aBE0O1*Yp1{Z3b- zztl?xx#0yG4#G8lnK-Z$FMUzSQJSBhmk)cG3Y4loKX*xjF@NeX$So`^%*|zHU|?Wk zC{aH?xN=X>#3>uQD1Jgldt=$$8%~cSXygJyLbwSq`I2D2)91QM2Q0XO1Yu<*B@$j2 zJ2*_s^B$ZA+=q=8tqzSXJqW2ot>SW)M$+^z*>hqdi1C@nAmYX zoQjZ;u&~hG7BK?8zUhy-a~J!-0m8-|ZySiXg&qMd1Y2hb0R~fixdNFzWc23h<6v#R{F> zA(&jRwsMs8hJD_E=;ie}J&UWqH>KmN9ee`H;66ZmBPOCG9q>7DJIV)(|DL#b^3K#D zJXG$U&96=^&z{xs_tx6zHsZ`CGhzHP?@87B0S_08kKdzjm7hWCI%>9@4AtyQ2%bA? zb8T+swb^GUy2AN`dzy4s^x^V-NyWL#Ot&SQw=0%>7>3N0)$9k0t=yknTF$n`rx#o zrY`Ln9!kFMCm63D2mjjcno_j(sD3ItnJP(&ATl0Nc16r4Qz|ly5+(F7>ra=ZET7JM zN{B(#z}##{9@Zz3Z*m%Xm_`bP*}k}kB}s@luC2*nY}zwi99ZXum1_fb`1>W!-q;kObiWWjn^q02b`zQ6NtsGkGXYYm;iJDQD;ByVf4=wk(tDsOz%QN|AFKunHaI`bSE7wD6qZr$bk5MRCoZ!iZ;|vGU$*|~s z!R!K#U%F`VQo%O*#SPLhhAvxbU*W^EVUX6q#O^p!%o`RL7jJECB@y;` ziRu4YXN!EAOHh!GwNGvhVK3aLU$kqTP@L5{CeBtz6F0dnB zL-S&0WNK8n1Mfy^1;!wQFw{}}OA4%Pd0(!?CHWfX^B0HPG7)W5w_AM)4Unp%CNSn~ z*UjLdGa3edp3UL-e$(OET4&_X)v$(ZF2EctF9fr0@Ts4#`DMvH9`e6NrF}4dL3ZAs zG-!B?%AkXKZoJkn87}jhV%UP}Hct6J^zZjzUtolo2_$RmHbd{LjFf-&nuEow+3Wu7 zytO0A%lRFQHwL{hNi|OZgt=}4SwLOx+s6p9N@wJ!p|7#5-fomWOIXz*DyN&m0JO8R z&Qm}tOvlx1P%d=pmsGGHMj<3zIax$4JR!e*UM^sKMqcOY)u2j=FITW;rI}D?Ag*L1 z{b5|Mho1d>R@(tTlFQ*RumBWpeO&XYnE?9zg;hk0y7FZ4d*gWwD^hd9&-aUMe11S# zRas=;RkBi0jR?2PX=_+@GUmI^_bj-|DcOx5jXchgG7|5KI;|C6-y3l~n;p%Rk;2&D z9q!ynP}ICwWVn4lMJUe-@im#}a)LJz%`fTP#m2_Q#00AGVm>j%%vp?trQij=Dm{SV zLgq7S7!v5@l*kk+!m$<^0JY(L87JqKkDqAj1f|qo`vk3gyiqgw=p%LJ&Do0~e9{SF zmy;ntdc!x_^_8JrTbPS!4|%+EcxI#_ybwLZEN!J#`&>Sq*BoykAby#wv8zxs5xGLD zSQ^h!V(N>iY4onqj>Fx7b4h5s!GD-9fFNXO&KXLmL=pLkea#qjwYFa~oQ`b}chsS#*f6~aA#yk)K|p?=ydF~b~-yR&8g zf0%pEs3y9$e^hT2RGNa)i-3UiCcUW$D82V0y%Pu}lt55Klq%A@fHY~+g;1nR2kABR z&`YQx2|45Qocn&B_xjkIA9%3XT>h$17;UGe^@#?0)iT@DDx`~^NE97R_oa55*8UV{ zzA*kft@@ija2NgYyQTv4c{KvOpy|fe3nPu%!Hvx&F%em;X6yhpZe%WOD>Tn|LQ+x5 zKfVGs)Lmb}fLVnX^7Pu-RIfW4OwQBgSKQ(yQmUe}$GR66RV(q#0^ET@3MXVv(bfK9y#Y9iG{_PCEr%*O9x0pzK zj1O+Ef#?6;9+z^X79R!OYm*ahjPI}D^}u+HY-a}r1%xMo6HDGA%e*#|s*d}4L{U$=*NdKUaV!Q`!q`;Sz>#t6qG zq7T@aoVNeEJ8aivfzjHcqCQ(zFTcqmJ2MkEuB$niB4l&4(j}Y%J)JPDcVCclpa0R| zg=CWPJ2Y&)oEQ{G$arn2rCOSlIVhn{&L$(<>Ky|Tep6OG-n`XeM-9dYExOvDL%I&ZYRBR$~r=uV`I1&U`}V-cqWd-z8yN>87x=1|1_{R9ihC z+|J3b*T5|qa&WH$B(D|>hOzFf#R?dyU_su&@mmAk+k0uFe#O=uq$-$x=2}0+0m32ujACz4070y@b?50U3DlNyI-_w{^6z$ zmI5?wkVwqAA&}s3YVBM4S`8S3^cpJOUh1}IFRX?O_VN)vnSMCditDZ0Fb%?-=R12XLOr>L7pt<{@6`+z_T4oy&XV%kUX7Ix-m9JJt16Ry_30+s zJF<(L(9${~Tjv7x(my_aN*E*`sx4F&|Nn4OeVY+^0MWC+HiG2y-PumppLf1!Y)vY42;qDmVAK>@wh5a z`Cd1a0K_&g4#f|X*xe0gkZ|KkDrWQ;&PUZV$CS$^Vx#Kescgcr0w2S=0J%j zM{;}IPh%MRJV*rymc7=$aBHBzOs}v$nFH@j zs5p`R=4%Mm#+wQ?ojV99I9;S6L2f$BQfu;|iSk?X2EiP-C5xsdpuHal)L_fJN`sMG zbq)no3^@mYAAfkFGyT zL|7QLkq+{e`}!h9xFJDPoG#k>P@jHICpywzN%JKcIGR~XHO6hH+)!uK8~6KBeyKa- zplGY;@~7@jq7Q%CQ;e(DO>npn?{$$89SFDYD@jjy{^G-MA~B^IW#%(|nJX%b+n*Jq8Q4w6t$w7!R@^>h#F}q;G^+?o!;j`$IUG z>}1RbJ>T5Z7s(^75$?qFA(eWN$|c+<(a=nugI|m4vo*FlayzlF^5{)pZj!#Jo1_*i zVYoE$Dl$)-FbH6-J?gnAtZ^4cIwu$xRFMy)-aYdbw|scv3i9;HEQZ_B>>mHA5B}L+ z-v9v5yz39vKSw>nVX-wPWxzcAmhP6{*OM;q7*ZY{JL9dGEjm+xuhM@}T~n$?(gLg- zn3~G)>A>mbQ#SgkR$FDYf|q0SvZAi(GREz9*q>z7pa-xc3qJPvas z8fKh5^&Na7W*XT?Z*8I+6SOi{4ZAv}mF()qadIOTJ_lZ$JS5Aar5hKc^3*ps)sT@Z zc5~KG6~yf>rY^{OqEePx!jeN9hdXN_ug!%7G!`3O*8mh$FcZNQ`9G+@dqn)dJBo{C^+`70Yw2CO|tdD%-OmKqk*WH3hAI9;dVE4{Dted)cg!_k50G z=It31=#`LL^U9iZtr0w^aIm0-#9C$=qvjEEl_4N^k_NY=LC)Tdi3^M{QHdrwZw5V2=31(b6Z6cjub|NQ^}u+wY6qD+zFDg1n&Q9d{$Ha7P6@$X5M zh4N!v+t;t%*46&3pwIW`4E6Qd19}JF6*sJx+S5a*+-EGIxZi928=O%e$+ZYS-7gD5 zS)jW(iH5n z^ta&Nc)gfs`Jzw$v!*TS%tjBLc4Lc+PndWf`a>>FCHAa9W_MmV>X;IPR$B!?d$5ep_ zaP7K6mfU_<#gZePJE!VNWaPaWt^l;lKYkq@&$i#{xw0k{6Zfd6^X7Y^t$r5#5UjSWAoxICN{6ZLtgBTcK5iP;( zK-fcx_a$F$qlEBKylr?l_0WfwwYNsd1w(n6g%Yx~U^zPEuk0Q#myEEmv0Pgg(K^d` zvOYWa-6zktULT0CKTsFmNxYeQ73}G_6mDEs$E*#m2g@>0=HgzoGCDCcOUV5;%rGQ6 zHRCz|I~Sl~z#Uff>5b**t6c*5W`{;-t`2{>BXs|iGBf|7|CkEv4g=Jx%eWk#O`LZjGTp zLJV7~r}=6O;{*$|mEdP_{Ng*?(#!jV+cNRPt)sI^Qfw<(&?1q$QPRr%90=}O`cKaR z0Gy$!@8g)E7jaQ6cEPEMiR^3xRaL^N>U7acsn*<;`6BJ56&1x_2H>|>&CpC5tB4o;-pa`ZHEMvc)! z8)o^3Yq)Co?urCV<%Q!Hixd3{s)EpOvvp!T8(kmYe7_8>6Vj_N`gE7sY4dQib8Tsh z|CKXnDk|!ORBM69qk>bFoT8?}kOuN#D6*!4UsJyi2Hh*F4nAI7DWFo;oPYNi|KPas z!?krPV=0kFc=DhVbFlALX$n6*;Jw6E;;eHgvOxKxJ2ueV6glpa^vDOz3Ou#(JvSm- zxXWBs2V23fzE$hIFYZT@{gg8>1#$C227HT0i?W+w8sW<8jhB60T-HSl{hlYC6V6Rc z`0iamDLJeG`mAZQq)iU=cZ(`rdmqi{9aGFx@~yq2!_Jj!^%dR#$anoKF*iz}L(6B7 ziqyF+K+Ysn1H!*SMcf%B7ibCERfcFJhXJ&k&lIbz?tv{)1xbSu&BuLD^4l8A{LA;4 zFZP1kC*4IPjn}-i{yfg(qw>mT64BK;N44{9VolnZP(j&eG#Bxnp!rk z^um~D1HQj#x%!&0MC_ns8K|xECHsm9wuoM)zL~2TP%Fp?Jyg7^H-W#rI?19<9*o4> zLgLJ)|Kutb^w(V3@^~H2$EFYKb_FH0#QBA^xaRg&Y%R)k7HjH(HIPq$&UceClk;5^ z5;5QhGqrHC8>^`qp%>6-a1F-t>}X0!4+9Z%Ae{nTsJsEJ=&|Q{W2R@xKv(FG+S~5> zD9-EBUm|v}V>4xH_$T4<;yVQT)zY>oHnwH2NTA%&==fDqb##|Aez2bihCWTL!UC%r zBPkwBj<>>n5x34#Q<=^ZRdsBYOtt5#oDMGeVO=}f_ONvwcoyQv;1QH?Y_9Y7( zJJkuE2AHN{+qLllHF5~=1c4WxotmqpvC^k}k}Xw#$TJoYlwOPYEd6l+FBiODMU9Z- zuh+IRUY-6C(h$$)-tt6|qbhr!8@hRJ86k&;!j68=#AuyOKCrPJxoE4y_Sz@}PD)SxcBW4899!G#yA9+}o|Nln_Pbq;t|jpOl+AYssDrBs1gu!&LG= z&%ktQ5V|Ggj55Z>V*%>))Zq2EopxT73bgm}hf6otZ3534|0$g@>b`&Q)u+h&~f#lgr`O={5Ni z5A-&Y5iM4^O{d?l1sREW-h0nHFQ&gJHGUvrwjHI2S#8YkWpthd4P#nc_xH8XXAYA6 z_FccQYDspFc|h%M!aEC%t$w3`WX!t7InK23@hN=^Z;{*H4c^PfVeE1(n>fE}-0-%+==5R^QZLU#qq` zX!j$6rPIv$*be6mrCN+WCEYz~w}}KA$h6eD=)R$t90t)r4)dv!fp&A=Y(81-vVKZ> z=KpuHRd8O&b@xkr@A`%3>T{q76~tJ*o++0J*hRT48eukCErQp>sPRWwgaz~}tQCK3 zDS$tRxya349OZN<6FzFtE4{qx0l|{W)U1)tb8kMcle>PO8TvLK{G(Gc?<)^2MizZQ zP$F*YTZDk*f{%g@4y1G@(WmJqymRD9yV8s2<7Gguu#Np3cG1=LyW2jpx|@GDH`xr4 zq~=Y9sNctxHDn@OHR6ss7#)1>?@Xli@{|iacG;Z&ZC%-XY&;~MHP6v#Eh{}xH9H>w z0f((6(yULm;vBN^hYbsizSp{Nnn6c6`Jk=F?fc-{>)@;7W=h$ntNP&cuGU3)Z9@<^ zNLnn}Zf8!;MtH6q>bJTd1#ZwQ*R09F5pJjRQo}GE$y3={_JKa^F2YqM`12#VayFwd&09!f{fggw;N;NK|r45 z4B3#&8~_&tW>MQ|2Qag7sn2di;G;#)+fkXWlXZrIrbCs&m^yOrdgZ?ZzY>$ak>6Ju z2|yY??tzPo%Z=H=G|}Vba3)tr$H&~j*<9V!l=ughuVddh3*V`!6UT)q6qb-> zN{LL{I|R$68E-8Ec_)^uOMtq(Dp{*s4XA_%C8~Voyg8V57vLUl+@I`!Q5Y^{9+*!K zOo?@Da1NRzHS7kZJIOt z@b<~rU?z>699Pk|a`uuh`#+2Ox;L)x;KltgQLJL^kfF{G?_Mfc8Fv(8r5fhuh*%Fl zr#p53_&!6~eymC-x2P}plK$7!oXh0JA(s6R zV^UIu+2#L$C}=EzRK20EMoiP+d3E6Lkh%XUM*Z&^-2W670SG?-zNLbHr4A+mHj?Rs ze@fee&_5ECf40{*xGRdLPta7rZXs4-RyKb>0f0=%|N5za8?gTCs1W7dv%63plf zFrv}0CiwG?aP7|@ToCU=`P3@N^tXPEMs26jEyw9uEyr0ey-@7=m0ep)aOh6CvdW?H z64Kf%L)2R)M-xp1mn9Z?2%PD?2Eo#^>rMmh-v!@>(SGS>I$hxnCFN z7!e;G-S6$&jesdHFD{;liQPGOtTjm=bgykp52q)2|NgzwIki$@yuV+h2RZQ=V*`20 zAQkXU#ksqalW%pUGGCP0o^x%ZA@S-JV822vG9Ath>^4NdK-+>O)v*3o`(##xEkBwB zzT_oAM(-a|&-)t#%_9qZBBgqNtdtD2P7^N)XC>3Wn)uJVeUHW0R)nWoiD_x`=BS)M zBvD1h{QvG0d7=LY^4jb#jOv zeY8{uNWd^Nrxqsc&<`Lk7pVUVjh!I-`%K?kyng)&Ypi4Th;XQA-@kaG2+%{!2aHrF zu>o5VMB>wXf4ScwN2O*_6(qQc8O-0cs{K38hr|Ix(A@Oi+3Y1%{LHoqEv5U#GUM2P zonl*0Mlx$_&6TE0jO(;^(Y*N+SyaOTAAoG>TL9MB|GlU9|B+%}t$v~(6u*uN7X$Pv zei*nfST>&fb?x3>?pxRt1mv~=XEAXH>$x3ZDm^fKcAsaxkU4{XvrxZJ{^GcNyRptm zl)1qUb@BCSKDJO)nUW1x(JH|O)LvXGvj)ln*EB7qOdCz4L@sxxVq$L{kseOW?w)N> zsV0urU>s-WvXS<-5FzxYxnTic236wyRe`xFu@sc*w)}$bNjA9##Bs7D4BfV;+ucp{ z>urU_PHDpRLjZ(wMHe*reaXz!{6|p zbalq_cficn-6$=CVuzVx$^2i1%()-c9)q05e-t&j_ufuIF9+3Uc&IrB=$PGIpERS| zwt%|m&Vs(aDY9o0dPqnC1g>+h=}&O3d>q&dp>2s?W%^=2#21 z*n(~w)U=y^wBjsIwe#b}fSUl9>+sBPyGeeJUT zw{fp+#P!o=Q_h7-aE4BKi8$Yn^Po{q5bkWH^0pf~o1}vY=G3Yqcd=bNl$9wibJly5 zVUpjpg-%@F^YU<))?#H-nlf||G8SmThtjPYqu0}0&6ASuj<16%ikw$f`aKkVtP*uDS6N%s)N4Fe5;lWs?^_CScOcgv7fqp>AL|h<{v@;)Pd*Um511#| zGDsj@4x|pgO{|JZHR1H0Q(O(1vU)jLDVp-Y{#7;CK7vULwZJ|4~N3Zta83i z`Qr{_ipxbcp)LlH-u$oIhu&qEI0u0}Ae~N;i$z=vc5x?e9=DU!Nm6#;FPhQjfM25M zL+@q`YM6f)*a^TaAc8i21E%qS&yba(x(ez3pX&uad9UZ*0JKs8=?Gvq+YcAmJmM8L zIAE|BA8Hn_y1em8xWoN zaJ_1~y>oo}8gc>F4AaTr>{ilsuN7YN^vdBcd-NqB2_R`{ zP_q%&ig&Nyg3nmXW|^;En&x(p1k1VIb_W^40Z0)CR!ytX-|}cxU=Onu88`*aFotG5 z5BR5*44Gt+>wC$CUGM4Vo%|0bR`Ev~)YVL92CnZ8G!L@&n*tlZoOKA?=|n%&Ezd`o z2_QzN45ML7Jd}wlh-wVuWk7ZVX4(?M-0N+dMDKe)Vp1GDIzW@0WMRlFGe+$(*sX?? z`49`U+4#o(N(Eh@s{5xDEyp{+2Aj^m|C{131a_}W#kf1rFbI@Kb4%PJgMrH19y(rz ziEPD1IkHFc8U?{ zd=t(S%_ZHDSHOCu3^&*{wEWbr@pup6MvZ)Bpq=@-s|C(JWjtebS36xbyeS!0w^n>G zpze}wt;=Brz_9k9-m}wM`j`)2fF2#|5+lWY*#qayuw!mkD%)ReC;2u*ITS@dKke!X z@agex1C6_Fq(kr_i`d_mQ}&O?OlMtVpi{;IUY5;grRyLufGU(^n4NlB{k-Ty-Z`C zzU_w!Of*t00d4SplLwS}nOVs1Ib`NoJ#%o;wULYB@XXqkGAX#<_YH3TexSYaywMgmkUN6zqOoC!ZBoksfAQnB93KyR9 z#VOjCtg=LwmAwI$+`Zs}piiw>eP`MdX_w&hpJx7)=Bc0PYTN@Y!u!mUNA1?_eTL4r zq_Ch0TPnKs9f@qFwTjjtyR@bW(G)p^A$C5EWa|4r3$@pq{_ewngnOr!kQq`@+cP|L z0u$1j=GzP@dK*UPGL?$7VW&{8V#mnafw#7qu5iia&FA-p(;8pvto6&c9&+*%Bz3=o z(-Xjl&Sy%1>l|8qqhs;PoScu6ZMZW7EZz7%F4yNu)j?90{pHDfuSZ7Wy=!39^j&d! zh@=cyJ@XYwO^@ZQ!$Hjh0+PlODt7mav50=^&i@LxfUH=^}ESqn&8v}0&aJ+ z3cuI1p89p-hVhw2yVV*;{gmdUfe-4ES;X^^I+c+qtw2dDV;r`GkLtOjhcb9GTQU^8Ca5|ND{mkn;oX`SORE z03lamNORqtap^JVy8+PW@vz~Sr- zS~pLs;%p_NyCI&{_7)$2jG5TqHRjPB2f&=chx6q(&zrI>O%7av4BvnBPlhOCnOOga zfZhv%pyS39pf;5OvHR;Jlb*9T-6b6W(JZtsa$kNe%Jo#il!lLuwYLOyyc@(s9C%co**D4+NHkpia0>h`zaX!~j za?svUK9Gjp4HZB^n`@5?U(Caun_?GtPBmwB<}@KxWsQ$taS3ETI6gGwY;L+5&-Yqg z+wg5!S{_q)lC$-OGSQ2pmUNLP`4OuTzP>)Dzvwr@kmo#_J~`h^LS)vy8V|Bb+9WzR z#Jri9>N~$0C<#Byl!$l0Y!7D;aqqk@C;zAAo)Z0=<=E|`8c!-W>s2>jQ&`k=P5|O~ zL2GtEc(Jusra&Lr#c}D3IEr|1JbP&jD4YWcT7HoAlH)k5O#2~#jKy{}i_oRlJV_s^>fCQ~cOx9<7A?X~@x+Uj1eUToAgtil2qey!C4?caxp>UzhOr3KB(^ zx8jikU7!3eVx{F_!TDydM;pn130f>lmHGm%;LYX_+{=B@fp(6Us9}MGR=tfGl*6ai zMIWmc37OZjvHx_5fPTQJ#_eC~M1W~TIDqUTmxU|%W#NM|X2z|zw73v41Ld6|pO@pa zE5ul*dqf)&S}$h|$)yk6XHBuoXV@Xl`viOB6^!>nmyj?7QmWC3T+Mz?(_(teob|Ec z6%h08CyIY$(KZEL0;LZr-YCve-_);!ms_C(P3F`awibi?c@O^K_$XwL$>}C z=VD1yPaspTSBJ2P2wV}!>5E&4NN3ENPSC3OoS8$*6Vp<8JjSA=zv;7BvhC!4)l({Q zD)-|>3LBfLvA2EqwC5)&XiD$>0gPP;BcvaDU7V+8n7WU-SkluXteU zKSXDW>8`A6aSn$#d(Bkxmhojg=%dU`*C~dWJ58QdnXx3x9WEbblp}4+ikvLqT>b0D z4op>z*t6<0S{G{1mh=)F0KMBG^WPA4J98saamUOc|I-Xu?XWQAh&PlE7};Qxlan9b z_yXv#K!fO5k~3|krG)DPZSje%ra_x8+?flt8HAwJe9 zNTrFRSvNGA^kA*13%|`9)ZDzG5s{KX2X6f0j%oWn8xSu68+R6x6ME^++mNqPl7>>* zjtYb0{`CX0V%iMZ1yfi>m`yu5|IeQ zxpC`CBcg_>M}O~fEo7fm$*=fcNA%Hdj@Ca<>9r`5EIH&qq=#!E+He2g$lLtSr0ElD zqtPwz^I#l5i(VB_SGep!SpE|QuU%7mXGLW}c=IN|NzF^3czAXdo-8LPCwy1GPbqKI zz8Xje4|VnTt6l-Hoxeh#=IazsxP>a5IIz1sq02PbF|nyMQRAq-ro?K=oJ}UGJ~)UX zsHX8ek;(*9_yRR*Dq>FCYcz@puv@#n{tp~BAD>qU{+$cB%8zH(TJIU3M7SIbud~VJ zof%*@>d4_GzTnjL4Jz#VEfPBZp=)e^s5cmetbYC`k4l}Z-Ri+U&aA?$V1N&yRt#N@ z7Dt$2l7OcBIXn!yJaLjTpF<3UlQZ-2@Oa_3%(Ju;lg+`)E1jL4pFX_?HADOr6`wt8 zt1FuW45<`B1F0f&2!tjT8H0?Tv39W@9Z8E9a_AL(G8F}b>*2Xe5$G`=zhp3K?aa;c zLk>G)BlqSpAW~dBmTElnm;1=hX)s|Z@A%||F>ez8+%Ngvv7Xq-s1GB~b8^|gl9*wa z#*hk0(Eje1FAu9{P`w4^b82eL%#@USCc2i0?>-o<13}px@ZhgzbEaqIgQa3FHa79S zw%gb{z%5|Z;XzA9M@MhCPl_l#YGC6tZu+jUp4E(5_cw}?Af_Jh3dU%~#iv7dFK$D! z0*3&+mFC!b&-2$aimGebk0wM#E%)d72ve~|VxH|6KYu<&8ak--_nqy@Pn%=nj%X+H z%mR*d(A8hRdgI#^tc`9HlV*wp7Vt7iro~xmJr0orngb>L!6n*!+SCMK@TEy}UYeAN z{X`&Yl?VgXtDICLQKymDAu}k|PJgNAy1Jjox?|$P+$?tm>2_|0#M#{sOP;cX4T?@# zu$feBy3I6B*l+uRnG=r1ulap09xEtq+}Q4Xcf-=sa_aJQNA6-6X5oYPk;>Mtl^XPd zUD>?W`s7kAWTP9F64*gH#V83riG^KMk2-oIyC~x+n1a_>^061Itp?>f3lKyzHDB|0 zn=!6<0psA_Oi0k4ygyA%R>`^^+=YSsU2#*3`9v`RMc=0&0Xl)&yd5@ zQ*E8YA=^j(sI}s^?W{;+AzohZ*@RwmF@8QC>EIPT0Io@MgIg3X9dcbPqP@SLzg3NE zcls!Q=7r^rYk8wp`KrLfMU9(8M}0f`?fa77Ts`f{(MN>LRVGo(&d>uSe7{kbOAlZZ z$$rjBAPD`d(dEEF5PEESJ~2MYAR{=?5-uHZ;{wBjHd9ozv$4@lcFSdDOIWJ{L}8WO zMMZ0I%rx60%Xz4Rgkmi4f%3{lW1H7@I0GZ@mDIjZviD?JnVH9qmR2L{iMC%z%I4vl3&Dqs&nDjuL-jHpeygv zr~n0kgy)KO`B6l4+w?DX(7iJlerG+)QsxP-_xz71`Bq2V!|K#!i`rb)3HTOWtcVM;4$=SIT;2fsrxp+| zxWj@l3tkuAxt%sHz|OGFIx_4gLwuw!Jpm)9{bRe$MBwR;PiXK2P68Wd#rbz3Tl zL+0K5C@U)i+n34lNkHG;XKJ89+(6%u_?+Zil5gHv1hA7QC5_PzS{wfMZM!{pg*}q$ zmyJr{SXg*iQbLxfe%U-evHO&i^g*J2zMb8%Knf2-+xOPC*EC;8--IlOHF$(reTBz{ z{nP?ln7D_tlJLCaM)<2$~=K}~sFARx%m zcGD{pCutF|mAx;cc$Ip8PdMljX5lX?AfWk${^-b)(9+U>PoIORQfQQ$B|=q2q`C_5 z{H0i34GIccQ=sk9NRf&zrC_4ssF(x%9XD%C{PXoKn)rBmon56|=4ED{rY1^BOBWtb z^KvIT&rbs?dMMCGviR(NSk&sOH9`J0*v!+GA8K+a6!B)j+fi5CC3(H;LL=xPIDPP} z#1dEKqtUmxwI9XJmPFKg?BV28?6OLLA!m^HwQle9UUxS#avT;+zY!t)i!=q`dz~lkqxG<>BKixO^Yrzg<+m zAMin=Oo1LI59(7^V*nv(jxWh>NIP7xbWvqjcmlv19W?fS=(W1mkc zn~tesy_dR$BB7z7Y;5fSes4`uJ*%h63k+9luuV%$NV!W#v4T9{6gbq^Gw8ER(o9G# zmpShPBMX1QjM&;cLjNMLEu9#dHqzBK)iT<|Dijg;b7;QOK%F0-pB>fBxq@rQX`|WM z^MM|>Vx}|KGy54-*r5RCQ&v{2<U@?% zP2j}9&`ElJsFTIabh#g@GGkwlKND~DV$?UvlH#|V5zFwgdbZq($3-0KH7_^>_!ON5 zSV5uI*179jLkPsMYaK92=wpxTg^+8;^|KB0fzRWK^157|T%CFO`QwK|#&Zg^;dKnc8ng^TK1pBskHj zf^u?`OD-cjK2(wU4GsB?1t!6+oBVoS_(xO>_t!2c1O5Ke zA|(4(2WO>~^I66WwE*CTOU*X*)odBHdO0Kj3C123T8I2-NbSy#P7Exbw^>I@(Ov*U z&jlR`D#~!?66pmI*x#@RU%ByASbS@4vR)%&X5xT|HOPc@>3pPN=+Vs3Yw!087GJQg z+*sR)dF5kv^UmQhC5{b0;gQAp0Hva6>`$%m_;mSF3GwSVQbs!L-TUcM19Ys$Gb>Nv zw^4u+IQWVJ30KzC8bkCJ8Mvw7EBmr-=N)v(0XVUp0c88($G zVs3g@Pjp?WtEA`iMj0n57h8ICY`DwKYmp zWrl5LJL|QxsUigp8jLKf`sh&>elg#JD*_x=m5`=IBV!X(H`PH~s{k(k)i(rwpNy0_ zafjm!)}OG-mzPdAI#Y424wHy;!~2OwU4%YRML_4Hq2`gOm^Z0*ffS11rorqJ{- zpXJu#=bt3+f9vyiJ!ru(UOoDRY;34@XyAX3eatUkiaFMnE**#z-_x7#h9TS}D}c5n3q}>=wEl!baoK9=G}zq+U`5UXoZ- zQqw0H`-ILZVG-dym|(IXl9%;EL*}UPO#Qq+{zipM*{z4D?pny0TKn2m~l90b; z^}B5u^0JnD=yrn5Ew-UWS@>^Tc>Q*j@N!NEpLt2MTz(bwt)U3hcO%}WFH<{Hvb65c zn3~47pvLx$1_MJTfGrQllW2u-GK&PC8s){a$-cfj7VqS|5& zxaJw}LJotxeS8q^?%FQ1-{b2+CGU|5z3#W36J`-h6j;i7#W1TT>rnB?l}P-hE0fTs zx(6l@9RNLuwX6=BYh1|;GsvarENC~a{j~HH$~aw5tzqPOKki#7z{| zTJaBWuPg65I|NAGH~A4@?hcCDS*=j}4Yjth_U(OQ`cgi=_lCpemw^u>5|h7XDuYaO zo>W8xLTr z4g;&BWV>^0^`urY>ua`v(6Xhzv4g{!kHNluk z=g}yi)Z3qWiwQe2L-wx=gxtT0-I-KZVh=FOU9>zFl$X~OvLSdo>T~#875^S|e*;O~ zFLT?GqDxWnP!OJhyN2%Nym5YV@_ge%_fJMqkHTN!^kMU3ubz{y7|I>mv2mxS-Rb#( zT(VR2msEQ4>(#xc7nVOsKM;0T#J-etCX_p*n%EFtY=mo*HyN|W!1HU256 zezs>fG+uV(6|?K#xd8CT9O72%yJ3rj;w4%tb^3;$g?x{s8H^;{pU|?r^^9A9`o4Fu&qk-KDjo zJTsSfVjuk|yj?!<{{VeyM-8&v_gE!r`&xN)JCpy7fY?f#2Kvcd(c^HA2*C$>O7ooa z%pCFeoQ2AvE7SMFGI>MnLDZk~@{W(i#%12okg*1fob)-NOQr5LyvU$nS$k0TIX*Lf z!|Yd)J$_LZYC~cM^>C!2pgE69@2Ng0njv#hmW#e0P<OxIKnC>PeCQZk(%vg1sB1?JOpOtLx?#{B7MG*98 zGQ<-JsM=n2TDG3tAy#d26S45o2fexY27Vu?+|%tLa@SgNX66TF3a+20AGP&U?HfKX zoc!Z!rnTQECu&eL28Ln@8hW@?zXuqsa^m7=&~SKPSt6ogpskyzAxFEZdPGI7C`i=h_4~}i!uK|}v$C@t z-VnwN2*#jS*yjIWw2?m|zDQOAILw&`^ZiE@P%Tx}{=;Ya=}|v;d@?Uq_xX8wm;6bQ8_2@KLdumr%FwlE zx^Hi3va9NdqdWuU$rt;eksV`l@C%d)g@~ zW~1uOCwR2X%~qfLm^T=RFV|$Jr<=wyOH+U}1GIlHEbx#E<#wSqZg`z(JJ3jZCR_ZGy1V1OgPeq-8~ZJrxL6(mL4{nMLTZ;e%c*TtcwU(6*9>A zT`Tu;x}Dd%zQ)a0QCwQ{j{1^_5Hw$kRPbo*^*;P5M|EpSXC+Q`oW&XZvJU?o2;vOJ zD1C4L2FaLD-MhP8s)l}kG<+F7n9(Iw)rfWU8V^sue@;tI<#2ucj|99isw3mhsn+9U~jWVWuW?uO0JdS?;Y{D8nqqPU%mr z8#`js_RO&DF~{GD-VEQGxz)Sn-^QP%QCiJ>6j*5k(X24CyExpjEL>+Z!O~xiOnVp3 zrN*f8KCLKy42RZEE-2p}PEV~gD=DFL(P1G4doh~MeUVcBHG#j5h#_sNadwaau17*T9!F%iKN9lFOPb$l={p)*h~`ubt$+vXZW3ydJp7Vm zOCa^^9ZTH3*LWzGZf$};VGm*yg~mv84YHPRvsot$G%*ENEGGk1M|5?C@nM z5Y1N#=9k{I@C>s@1_J!kE`NePSNj{!N+S&^5?|RL6UkqEy{Ij$KW|4z?rXevx?Bpa zSYP*Y816-qRj6u0&Xr-vRW}QMOWkXviONG?h9@S?la={X7f=U|jX}yduE)iYwDhib zKib+@T66@3v^nKTKa-N(JmpZZ?q$sWl1Hec?dSHebBSxou9>%oc%G{1A;N?v%wF8f zr>mxoXUch&M~%)yX92+GWzBOt$hQs3-;;EOr`$v-1qrYD3pOY{WYq$ z`MFvEX1;W=e=t!qm_&W>h2pAoo=25Np#r6>=kBd+LznCskpeX_m*H4FGd=72G43U= zwMwdy`PmKq>^r6w{_A#DpE}m#(zcB(uxUh0cabM2C;Z_h*EjUjkLpSSZo2v{{zaeW zPOMB4!lq-}@JUm)jnTcVd}ZCG)&~p{j!!E5xjraHMb{Phn4SBXD-%|m_~X|{fiJHq zZI~E&%vx|L zM@}MD5XRma4x;nlduOCP&IIlyGdtHnoV?cjl*TwZx<2gwa~z^+Vo4_FMTV>3qr#U?s>@f~@$9DV zl|0M*D4_sg;>^!{IYOl9Z*RX*FNYc(#sY-k%`L=sa+l%aQB1vv<=9&L*6ckW%zRtBZt`gC6G%kwg^Dt(1W+i3cI zp$3DO+7uHbr5CBfM=JdLVWVA)db#~}_s`D2nqFI-$A8vS)cod2$ck>pJ8X>io-r{h zduZ?bGcnR5$7r>)=XGU;wr;hgWuTjn-YzM0#C`%lmx;J8)h4NE!BUQvjPRU?LCygi z43tZ5|HE5!b#)@oJjDEFrvdKObqgA1=89JT{^MS|D%|bu9Z=8_v8DYx@egk-@Bi2i z5lSqyq?WY$oau5nQT+4X;!>b;2N&088X$%ol8WX~{lYcfyctuRhw^7v%CpIMn(`SC*n!u)0Up7Cwja~Us)T!EYxoVAtox}Nl{e9}dkv+$stfmJ~&j=2j#+CZ|7K(7qf*J$u z<1@lR_n6l^AqR-x>t@II#U}4!?!9YEQas9#cPF;}p%sTX{p_JTHW>|cNz{&smcL7X z7h~}4DPCQKBi`@>JZRht66tVh^b91wS&?pD^XN#nbN-5M=3`91egYJvaD2jb*JMF5 z_LY0?h6|CVoMr0vXpS%xL~s-(wwcc4PCH7x_$ODD${#uKAHD+9MaO$vs;z5Vi-LkY z;$bCO;<1s~6i#<&L1(h;;*8$$m-t_zIK-ddZ2O z>}fd-Zj;F%rrO&|$19)yY?%7_-5W&6cO%koC^r8?Z{L8(g!$UmoHgb-jQu60QO6(b zrL}Y*^2Hl{Tr;GyR?vUC{fZIX&V*177*#c{k}5ie-u6|31r7z8L<0ZCd5LkuInLF- ztCCVei*DSRn~Mi}f)Ud<_sVG>FnA_4)f!Fv@gX19OW`w4B1r-M_8*z-8SRI=`rXrfkjf@sybnD8K>r=<>$E5)!@ zK?#qc%LL=3PPYE)4;HO}A*l`|bFAz=^K z0((aBP9l8Yq|(mlaxNUNBM6i^CgJRXC_=9%rLr&UcXLx2k&U`@3|KtyOjt^-Jq~Jn z7(hFmu0FW89}%~L*4KSu02VEX`wshStj9s0evN~;cg96-saJ3s zxYZ9r!ia~5>Ey)v4l#=Yig8mQ2{W0D6K8o&L`2T-?W=S$I9^LtQ&F!T786bhP6Q6N z?^N?&bdsy8BvBvSFe$`DxV2a=9hc2HV~;gdNwk$V42oeA*I?9NA{EB`!RQs4Z1m_h zY1oq6{;Kh8qtFN^&aPn7M@g}8kFN+wIPMDJuDVt)U8dQ3 z_8e6R)bb+Fk4O5Ib~2E)HPjWg=Q9iQ8bT`5SxG7`(Ipg$3LP(obz@?9hedEwF)U`D3_^-bOU% z`pngtPc3M-wzlwzE--3GcXn{%yZHF{fJ#+P=~}V<0hx*|XB^f2&WBcEJp`yySrAZT zqrw`Cj?JE(-0eyDVipZ-w%2!*720yF_rA-GX9^z8nUi|$-*kAL2IuCIOIS$k`x*Uw zjNqmq#_Y$0@QxQAunL`hH^hm2^!6fF*1Ej9JY`==?TJixzf69TtuLFweW+nTqyTwH z*N6qn#|)bObS9^y>e&-|E4+16Xkv*a73v>zf+1qMmY(wwd2>DcYTE8T9wyj#iSc%y>6k*45gmORDJQa9);*sR5jKPI z^w7IT@fTg#3zs8S4jm)iv>7C>soK0wH09eudqbZ z`yCuaV1f7D`eA2=l&YO~2-%w!sp9?@H` zZ#l|ehg9pfbg5`)`uXgKauy1vWY!7e;*7xCtE>ECrE|P{OeB!GIWUzfLs|D~=JDnx zg-b2;(``3@D=pujiX+H5yek_zvwRpHN46wU*0?PpR{1v%Xl}I>@`JnZbQ?=Pu66Z%|Wb zVq$8P1tG~K3#q#+*o%c3DJF6q+J8WcwRl!Rurjl-(Ac7odH+Z(l6KGIwf)^n8VRKL zMVXJ1Jg5vd($vkwgPm<8+aKvQrn%9lw>MaBrg=AB zjBo2K+6y8sZaIFx6$pOn)mm()ficCA;jaCmLExK`lG>1zvaV~hqUKY6%e$g6sGYPG zW&wTLGZaZe8yJBmG0@o2SmQ6ptz1SJZ3!ab$wRRa!VjA{X_1Wd0WFvq<@{vrcs@*z zx^|H=D2_yF_VjF0oKoa6A>@2GI7PLR%_0jJkocCrk#HyQN+QURb2XEz{oq3s0+h27u6-+6UH>oV@l2%xpRZyCm5>UI`|z_NS~@o9DXkX3&R9QrtivR|np z=(h}(fJhT)r}`7*t%DlOt|G?`*o@8OkCg`pTd&;_d(bThi2S&^eLczW>@st~+ z`mYuO5J>+y-i4_p*BdS3?a}fOi7JzV0uR?S0sCMLvm()%b~X1lKZEb>KWL;#e@u}- z5B&V)G~uekSWr~tQ2O`94&HaW0$+#&mj>B|n(EU@KFnQdQ7yDgN~PhnQlgQeasa)l zRGAiT3b@R|rN%n%X?f6bl0lpj- z6PF0L%l)rUv0kfcGi=?=WNNPPNE?3sBVRZ4)JMLOu1~WvF>#un{7BBWQ(9PTov~1m zk-J)25aQ+Z1(rugjEpuDCAgO>be|MI4K0Hx8?*(_y^yE-5K@$7EZICY2%=uKf-CoO zn9P1hDo|2ekYQE-9r*}Q~?^V%EBf=A_Qg#~){$6Hdrtg7pl2tbqmC_VEvWcsr#)|G^Vxq{O zOhNNI1m96W>ZTk+X$FXp9VaNdH#T>5H9>1uM)8sS7T4ngYjnf*57Au6RnQCmx2kRO0%@~tqW8;F?Jg}<*KSS#<{rIc^@>)d{FcvI!!{no2X)AVr5D{ zM@tyj*NR_Eo`3O8tA(zTO4xAF^j>quqj@gxr-}ELI+h*y_zp0%9NduaJka)5>NWN z|K#`3B;*HqTDxjqXxm-yg7!!`1KnvaX=-lP@{Q@8C6eP4=Bzu1<_7+hm0oxk6wWdx z2|KmBYC}oOr+rcU10Mwp7HIw6wm|GfebA&YQG~UWavnJ{ zvb9-fm*jVe!>W|^iY_i^m?v95J6;88&C+Nn{vr;Od2Y8A4ksfmg;i1ASQYp2$ z=ctR=ST4mEFwyeK_!8*U()p)dom^>P9RvjeiTsB1gzGpB9z;V&r}x>|(=+(#2t$K) zSmz4CamZck20q>f>oJzsAa!qWE^)RxxTW! zz7QT%94(>E1$94-Cko+(WqS@r_QKxB3W`2!L*e#TYtbK_?Ylb|OGJ-Vh))mrs^kh} zSb!UIxf)9A6@U0ImoAQnbH^SgIed(p)U!INQ#&K)YL>uMG@)lNy+)6V&44k!F&jg} z4Zy_m_dSkpKcyrp8^y0qiOm3RMn>DSY;at8+>=E9#l51WD&%C}A-yBxZ0sElmF78H_yno)H!XMzl(j29x_za2I*mPUD~G)Q8ScJin}QjS%zoL9gm z4okpPXKRgP6|zLn4@_+D8LA#S6NK*ipwtpSQvUM z0yl_C?8CD~YgeSoG<0B~^7NVrIyP+#u`uNxv1FwJ!{9`qU`SxdHb*2TK_&$Oq}_TC zm1)?a%O&yPeu}ci{lv+W)~vYL;A{=-;L_a^0Uu8yWFTX8e`$2y=~Mh=@|-q#<>YlR z+7+?>zr0V~ihLtRnKmYi+YP%rQ$}R5dvY3$+r5%B=h~+%-C?){pf7~Ee3RE93UCKH zO$=Y}Ip>3*G0O9;BxPA9hQ>pT!WZ9Fpw4Uo&ENOwB2;GJ+`c@_@BZQ8;qZ57A5>y` zW5$^_!bKukrTMxq_s_+2?|opjOU!EEg^h0EtD=XGOS= zsh3EUsiUPtghv<|tD=^)x3@IId|@)Onfc-2=l2cUlNit1OE6a}tSW7){j-71=+8j% zwfXmLXaX?`MZ(2`hu2?v#LHMH^9g!UJrg_o$l32@;|r)>as!{5bbe<3{24c4jISLn zXEeDDp)bSP)%i*H=`+I*6iFAN&430b5G(-|=)0^{+~qoTQ%m^R(BqSeB++?|a}(mn zi(@q3(bm1-J$;X>3`iUu<9is=hjKK4P67}BlFr}3eMzGRV$S~>xT8v=t3jNe4f!KG z@GNF3NvT7AuAW-j-YqPQIEUgoI>&a!!y@QGX!p#D0&(f-?;-HaZ`Z|Z}bRG+ zovpDyoSNy_t!+f0$2qV&pm%gTzEjA2tbq;`Ei5#{hxTyr(DtC3FsjPr+53ivCJNR6 zHN6%st{)CvkYnq8qyK%BJwJgCXZFmj7*fYGWRJvS-S+{*#V_YdE*SH_y7_Z)?g6K} zYR`|*w^Y)gGJH4r5ABXMuajNSO1tcVq1+|!<}b@biikOGQNt`O)|RR9KuEy^C06^= ze@iaJTih$gqne!R)L70I&4HRMOYnNJTpmwWUEMuV8TFo$Yo2=XzXQWx6`6}?Xh@3B zs=hQfV{Ar1z}ijsLOM*iz@CoL-|jd1!Dx1}3jV?rm`|wm8`Hvw%@rCh#J01?)k6luRfC>C*@E{SI;(Ndr`Es zRy=G=OMwL0!N^DsebY{o)(WnTl8z3Mg|U8Z%=;hl1sNF`@;EQ#bDiID!rJLIeBGCVNm2WQA+7KIo5izdd-a$M!_(iZq`f7(=OIXT6>wizg@Y@=7+M7N4~ z8KjmI}{uYd#~ts6P?k3E%`715uvczDU@$`1(i0mylv^j;_t8?KF?6C(({P++jb|~El3q!CB>Bfw)kV!7^Et|; zlL3aXqeRVW?XUj*EAH6B`9r`YW;~{g4=ZXa>W0;=vH_-hzv`;1cNMS_6U`^|gI2bgQzqZSPUB4}gNR9yGqCVbV_ zznCqfttP-kH00@UZgNy@6@HINuX%cEi4Ni^?kKE5gU75NpVQgZ(s>oZ^C$DyeAFQQ z-?D>r_4(J15UB(D^lf2!m!hpm7od}CHvb2`u5Lkd5jY+U_1si%I41O4qZ*hOes43H zxXpV#j`DCT&E-k_l$ht)5|KIr3iaotKksGi^3`_X_FZ+s;Krio$P{%bT(O2FTs;A2 z)IV9Es5p1nv+a=7%`8~u|1$IzAVV*ztb`Pfug=Z+JREY|IG%{07(GuXTW?txXB#8| z_5R_Zlg;--;Y}-c+}c7{&k zw;Z~qEo)14W*yqA=fN_m#I$UF`k$}Q)#Y4&;Hx?{lC5S4hZqE=4F~9+;y7^U8TNVoOKwyZp>M4 zM#U1C>`XVsKHQ)N^jlANzi z`IC3cO2{2lxp{W_Ot=OPztScXz@AxR>FnCsobF)=nr@DLj{&1?{H@OXW0cK}1r81l zbv1Ta?60;9^MOKa5jady8+$tVH7D*O35jG!AJSFua!wLicVbD@s0}W+lhX;ZT2WCz z^5uSS_*Tc&6lBxX<$eHi_r4ENGKT2&o>s7bg!E~D;3d67G$^ETQA0F>oLtbbA8M{| zb3)_v@zK!{PShz+o{Ni1$hvNPd_08P@x8DZlW=m0l++`Ty{~|zm(l$0xAb3gia@bT zOG|xy;^~^{K(4uEY@C&)d!Ae}=J6ID9nC^Ti0%-u|3erPJ(QJ%^CK1YMo96fvQ;7t z8QE9r+ADbdr+2==T!+JTTB)?6Bs2#%=n0MKO-(!_Wu}f(H>()l?WYA)*-x-{XpV=| z%=OliA98BYR_t9EzKr}iMJ(ZZDxE&U!^JIkcE;yhWz<-;;Sjx#?dPPF^j5!lU!oW1 z3ip&PQ01&-ouhx|OExwskdT-_ZtK7{3HjD!Bpe6u89dMB7^(Q*AtoXaa(89xV+RoD zGPqv_!Y&8nS45G&TV@4S7;%mL5H*gLfvU)VgmbU?<)2<$yr9dr4(;(o2Pc{*h!OL$ zUdPflyPki%5;LyFP(w1ENJT|eP=ueCZ;bv_TehbxvhXdjenPBQWCS%|(834XPM4Y!^ak!0*~i1WtD)8u35q6v4o z!V6Z0#l%RCS}_Qc$$qP)0(uZ|+Z- zFx_vrr1W^|-l6==%XieR{jz9$wi`S@&l#a30Rxmy5lN8u?XTSd&yQ5Yh$4KzV^(N= zLp;q3IIIMVb5L~!pk;CZ+Y(lye`X}K_aZ}AK=@=XP}1I4Ad=9Wbi?)N*NqO!W+%3s|Kd;z2!>h(VU$t_kDHZ#?Dngz{Rq3<@(1mk;1~}hZuPrqly>RoFnXX! z{jVv~4xrEQyHu@@VQ%ERCnXz%?DLIOe|i5*d|G9A4{uM(CG>II-$_kmB>n2@s)sUW zsO*SS96v#?aQIpn0AH(2!Aq@+PK#t(SAgI>Lo4YqpdMy8H4{I_{b0mR><2 zqiq#7d==bFL%tfAdMDrj@rFF%Be6_PMMSso^6}2?>9@Jb70Vb*n|+HSLkKtz{3ShG zU+X8t!QN+_|2uD^w~ z1=V@0M&`KjBiP>EL{CT|ul~X;#sZ5P<<1d|RtTtbD8j(iJ$}rJ{LiHW$gstfmNopx z>d#N?-)7Fw5h#H#4U>yq{6#G#LUgu&Y-49>4E&z|_bXns5uUkHukB~SLZm(|4ULwT z_KMaDu!!*gdtX#tecj#7O@?eyub8d~sMXfc(96us%E@Zp%JhFxM$o!~EYr>;L(u7`VNxB5ZJh#XgGVDjJCSY$4O#S-z zw8#)dpbmwlr6V5i%jTet5@8eX@9%qi#q>}^=1A4*&v&PKp;S-2%vaDg_IAJfN0Ehj z3*UR=1)da81CROxcIzzC_N#mQ6XT7e7*o!3=L|y{=xF5)9d8do@Abj_6_{D*363S= z_vkeECb7{!_EyfBtD7$1stadU;V*Z8Xb07}e1!$@s{ zioMx{_K<_qQ$yfp1f>%3xR3#*wV~lfVXD3%#>i9;{0BJE0wLJ{Zjk?uKm4ipqbR8g zslA28Ge8R(gp$(%9d7~Ad678a%1eC5>ddb7qP3``rKF=%AoC4fQa(rE%X_p(Qm$gWI|akKPv=Y| zA~{#r+#Rp|ZYKH{EFdyzr>-(SeCpl-U^aX1q|lcyEG$FwJr=SfBV*#Z<>fwWWGBT1% zD43vU(_2&r?Y(e*3;|TDt8khANo{umS@%18>cckE;OA`M$_Sh`=ha@?u7K4&b8%6j zUD|pfZZ_x=x)oqeEH6&>a>6ioc!l5rLF(1#gZlCEMQ4qZGw_Rzd{-vl-1TxzU+unq(K?Y%#`~b4CaqeK2 z3_48JMtU|)CDMP9OqduP9K0qtP!w3R#+-aLd^j;Nfw%MU@Sy*^DWv&zgPeUgnlWk+ zvUtxODcdb3dD8`pF*PTTo&iG&bP<3*D-@62Iyye?duM#c!0?H^kkHuJxLoaMaq-@H z;^h#)fi^Q0d=B5l2Nv-pcXxNg0%`Iu0G%P-#nH})x}Mj?!sbHj^C}u>{iT&37#gAg zc|En(zx&w}ik6&|(%aWBFPA=%#rMW6^rpT`3Q+8L9XDZ^y}uY685w1J9YW7(mja#E z0a}_0-L~6AQt$Y4PCBU$^H|EOQRdgHj%`1$Bg&2{pC?W|-`5Ac3Msay&Hjsi`TC{^PQ;?Sg`!p!=O<95LCFtsE8dE&0$33@zV5p@$}{?5!#&0~A@T_SKBKOabJlS>MmpTNZe(CQ<2fY!O7i>JXM0o_ zOG9D7&-@&Hoq2g*CZl3ww^;IZY@M-*iB*+!PG*opothqS-OIRkIruRu9I73I2x%GzjqU1Ov+9!rheAjEn@M zPPzK}y2?^qFKRA?fW`AN`n5=zh_$D+yK|=$S)rvG_t@3Lw%CUCA3s?}Y#~CWMo@Q$jtu zQ5Xyr67Pu?z#zioLFjc0FA+=G-eao=097)kXKb&ovUGLdp0{$=PWBDjp>!Kc{sOv{ zc3+pgfM@>wp2q^J{k(ge;o|PF`9(fZVu@Q1kxH;hx& zA4XXsI%BW?^+guiPV4+`4}|vM-GASSHx$#vLaOp5e8osw83vir{jxGLBBP`EJTDvX z>04>-y;ro~ULdcOFpgvvYx*yTsj>$#ieG5?p5*Mkj6KuwO8Fso_uig3T~|+jZ%;B0 zIWfcnIvU%Hs3r~$-(Z;0h}R5UyW z4(~1c>FH^;%ADkIx5$hpHE*8?c1#ht$3}Gbk!oTex07Y+m>%jjp1{v>X(%S6TawRKoC=X-Fj2C7V_&>SDJ5U& ztu!!Nd*^OXz#kNwv=FDiD#zvMd%uKqTf-rG?yvjKV!kCu>IbP}8^d5Y0;-uFboPVk zgoN_Bb!@Uuel-Q%))YX;l(7j1{xf0m;L&wUd8Qj7-ot~Q7Lwy+4S6!jCpS((j zU}T&x-kOS?`l-wt)#Xe6C{43hof=6i3Tf%v{YC!AgrFp74%yf5jiiu()XQ{3s9=s| z@Jzl#o$))R#ohW~*i=P!I}0GF36zzQk=19`j3)g(gxojs=6D-+eFMtEEf*AhX4dMq z0+B_$>z;n7Be4m?5Dp4poD&|Ca=X6yTwKHq3LtTCtUw+X`8uwHnc4LH5jKg5Seh6M z`UF?rzPL`c&M0*E+N z6sZA+y zh^A)@hf#K$B~Ew%?(c?5zbt^Gld1I|a(RRi)tlI@9r~nl97Il$T9OIO>HSYi){_-( zg^tYQxry(mQNkfA+7l@g`5j3yebN_|l=u9y)ciaeC?nQ8eNNGhjJL3Ob)oRM>F69F z+qZmd(ar{zL;|31+|p!Jz0Fd&9hDlwC;`Ad1O#^jf9@%L7uT{b8b!|YGY4E(R1e^+B)(*7Q zPa-s10df4JAAn6*amwu?hR`91$&5jHmu{($A&*~(i@DxKT25*wIq+vZp=E?rH8AH# z5|wn@lphSxdpfj9Rs|aU&YF;|i4@?`xSvfMch@Js$V-5W3h?nUhJs`nQQ%hU)gsds z5|xz`6K~i2L&oaDKBYsjM798_)+)qM9Wf+y>dw=8U;-#&{9cAFgA<7vb=EFCw=qe# z!MHxcl?x+R+8)$gw`br)rr*EgNcQC#QJXP?NSLbg&G;zZ=NmIUA8XBuRBi*gHDQ{Z z(G5IKhOKH7D-~hmIJD_BZv%mHZ(82{Z09xV+2 z{!f*bl=IO>PPQfH^JGPvcQA1309M6(YoCErM_TV`-8!)0x#92MP80ULFI+;g@~PYfJP#j^kYsM{yu4^<2PIJ><=YTQ;N5Sh{it_pC<}oLMIT90=)4%UZ@(he(e1x_1-QxZ zEs_T4Z4MW#c`lzI?K7a~eM6K9kYGMP8o5oB|NBK|%F9EJ^e6;y?svuZzMOT_nG-X; zNm?4G5kn7;dwFMiWOkrV=u-*=nwFq>b8$^gaCF8d5xY9SnZ14vD0k)LKIKWCB-Bw= zMZ=-ENt~OMZCY;C$G%SMpMFZ<{(tmS^E}SKhcIe5rn>ECA(;AAg|)SRs)@WN>dRHR zjtBujLO8#)1)zm-;+clQo-Uaxy!)=BQsUtEtLAF$1K;7{oE8%mk7oKuBS+fAZ9i30 zSY|GE&hQ(FI5ha%Gvn#eQy?D}pUkT(C&n1-6$AUwo(v72FQn=V1j?MOv=AD7&rXeU zei-H$+zy!H7b8w%N838A}g<$s?cN+(j^9eCGRQi3L#jkY6 zkHllv+f_CK^h001SdwaoJM_@keOdi_9Vf}eqGvptVqH8WB?UB5uxB=PcD0+V|*5~l&Uf!fo6IdKB&3JOAVk;&p~taKNFxEvzOue2*~bEoC5bcj1qjE z06AI}E8#MDLliy@%%}WMkTx4zCeC;*Z3h%kic?H$@bGZrde)vPmV;amnZ@nxH_nM6 zYlpy)Xm^igjX_ZsahyED`6_O65GddQCi~kb^P9EYez^(#=hXETT zkN>mGqEoYh>S4I`gt%Qw2o^|KrH4zJOP?zcTra_DZQ5bc|~6^3=6u< zKO~BdP(qx41rH_`beYl9F~vkij*X889Fpnz%bXGBB{WZxaFa{glW3L#$JkijB> zt=gfI+j?t&%?HR{BJXxna1FtJH>LWYotVr!Tn;XUe4bjC+fTAJU)D)qUr9YTW`8Gk z+^mr9?f_ka6Q)Rqbv4oav~Qt~CI$|1v3!UZ7Zh)v9#%#Kb$5e(+QI2$A`1HUZ=`;Q z%E+9d8i0hA6t_wBWl!tm25~9R++r$h@xm$08=lE~W7_l~)7YZ#oahn6CM7lW4Aa;C z*+YUG9}I@G+=3AnV+X>GANzskzW=Alx38B)T0((WB7_rh#Ch1xOmFcEuQ>dMX4mHpT%>nP8Vm6?h8 z)Dq_K1+_bU@OX(aVa)$qq6~V_&-nPMogI!uXoi1!A@;sY=4()PzZJ+xBwKBnT1qOW zD!)a&$>>*0FEc7Cj&(G&N?Plz} zFvN#nz)hAB=wA3N7->miP_O?B3&05XOqb20Xr$;E?_5WRWu{C;FAesm=9m+7*b>yW z8z}q{3FRUc>G+RnrhD zdPhe`L6?cvyH?MaZ`sE0p`@$%oqm(`wr$x-hKBki`80k!%H&`g?`-%bf|6hvSnC)- zM)4B?L2p>Mmbv{N6PdE0|vYwYS_n7+6Uh8gmIi&{eX z$u;)lY5mMuLmTr%)`dkgV=GZzJhMJ|KSKVZ>Wyn9@qHN^*YYHHJV7a1&CHC5sHWmF zV}$I5OO3_CJMNiS6L9}sG^FV7EB{R&kIw@z$O>Y=C&~hNI08Y9TIpt(+~q4hRd$!9 z>-ozGKc!oDTHUAMCUicpw&`hfHX#Et;R+_+u>$HnN6)w(@h(q-H-p*`;y{sDgd;W8 zlomdC4#4qe0206#9#Je|(+}Pk4dTgFL54=A2m@{8Ymgqi??rxyg3r|&tkPfrIWvSo zJ%GY?3RQX58MtH4ACMx(I@yOmw5^dRt#5IA7?3&#%IL>R{Of-hC2G77LUT{zNQzDW zvRL}_az5M3ZgmzP*#Hy@L1~W}Hw+dYoDHI@d^Au#Y%ed+bgFO%lsG%4+JMmx0E+eZ zUrZE)j_wsiW5Hld1+_qZF#MeJ9&mo@3qYLR_f9qdOb2jxs;1_i{YNmf;gh!pVlTLH z?OwenKsjLLRn=dhPvQ^z8=_9Mcx8B}!hs)pNI7|rxni;bHCarUm{oZ5TqYZked6Ka zMChkdrOnnib-=R*_cc5|2Of3~I97Pt0 z!LqQheEfL8|ALrw4#+q@C)6Q)Bcw&3$U}6WAa13Ks}U)%TKxewXAkl0?R7(Yz7l%V zp?d!gD1^!ZBG*GgKt=26v~>mu(Kh!sh^k9AuoS65jDD=fG6y=6?rd17_O zM>Pn3{_G#1?PWV%ZlauM@^ekYA}rNOr<(ta82Jfo0!Xsi0l`ZVfIsGPZSU=!=wvWT zf`$vp@rrprjdv*eS$lW{VFXq7hU~DmIFO_BwtbVwA#Cv#`8-uOH$vL?=XakR58ZpU zkEA3(X>SL<(8~O^c9y7^5vw6mh6{%qkD?#hGVctHTJ=f8QTlK8T6@uoJCHky{X$eI z%_%R_dO4MKvM+xfgSIrfL#o6!3qTM^G1!f`;^!mpZ8LTxKj)fRba}Fql$3Yl>`tM{ zkFR_Qi;NWTFn}D??CBKQkRt?ySx^`(`OjJ5tbDVnT+-8rbOwad906Py>wqO z5Bm9BPc|%hU$)B1T7D^cvONb*nIv zMi{F3xyn3*p=xF8DxJ;xs}{S#g7h%C2A-Cx=!4$hr7RIwt`W{!SKa$fWMZC$N8jNL z8S;~vS!|Y$?Q-}@e{-;j_qLx2gwUHY0E5ME`FQ}QoXERo=(Bips;zKd9Gf)TXioBf z8$jfk*;W&KZPc=nymo+9I!EGA;iShWlSeq)Xi;>rzX+10`t{$}z^G(vS}z&!)4c(5 zE>YGBG5=72pzP$G8}&e#@V|$|f)JGFXyPp0dwb^eqkvOujXh|58 z#%z3jIlA*n(Mt8>dE+nmfX*uKH3{S?2*LgI@`@B!)#=;$CUJmjBw z%wEBh`fWPu?H|-{ow7d+kB>4)CS9Lz^c?GTy1Vr7X=(7$Bh`;JXBbC5AJZ&hFL;ZD z9JZNr=MUyR9AFWvoz5m{Iy#w|g*^VOQS<%^buogyRK!ds04_jfQ<&iHCO@eDpp4iJ z?UaQtLNiB4cy;NtR5Y-g#2B#z9kOk*%Vp$c2`Fb=u6ePT#SB;}bs0^jv-X0XGNoC( zRgC4o#Gg+0Jg~{<7Aw9^j4fT+ZU)no-TeHBGF00mxxJa8g-_#f^EEY&48qV!%x}oB zx?_cA-#nCSZ!z@sNa#vwF?osOu=bZc@s--Yj6MEbu61H0Y87e;W&Ot&*6QYT88tUt z%GMzEDg&}xbdI7XH)qe%FIc_1a+`7L4?t#YVP4-~57eIac8Vh-RBk?@ap3ONtIKVN@lD`Y}yB-2~y7nvWAB0{9 z2tq?ccRF6@^nG?-NIe4dTbr9B9(t2y)Wtr=J~U0dhzt9^W~@E;W6{QV-m5rD#ebOw zrsa@&ax2?;sj8~AZ*l!|_4S^~SnE86<$o8BUPSTjyQX4$#Yf6p?EqMBd)w^RRU*&N z>g+WxbRJEA|8j5XnAX)EJM`?7ak$si)L?H&$-BFwF{@O7t6TDHA|FivVmJ5~u(T{I zWbtMdObTZy1EML)ugwLoEWZWP=72i9s?KP{df#DVAxq0dq(eF>0YO4PRV>I;GkvoX z=tUSELf1@~I+jf{F$|^_7fXy9$XFsWkBEDDP~g%R6j~*SP?%(-03Pp(Z=LU$RaDh_ z8;3b@NlA-ScXUaK2)2VMmil|Xs!(Et-xuMAAPTg_EZK9c)c?u<(O=8nWJKBQDRuD^ zE;BK4%-B0IQFxW*oABF@Hm<(DzLb=tk~bvskPLI*t@3{`9py%b2kA#mFkgOa>vN!j zP@VULon0C&&0~v3s{*H~X63>g81iyL2)Tyybxhlc(m(@Nn}1q&N%rpGg_)y(W{DJiL? z4tFjgz*L86JUuOKbfm7*vb3yBLr?P~2}xJ+<<(Wanrd?^05$lzs^Vk@rhohhuzimX z4>UFP=$M$;(`A_^D(x-!T?~YfBvFZNENugC1GRunosEiiZ+DmM(vVX@zZDdW5ric+ zFYdJa9MIZvzna4)0u@lA^OO2-d9xKT#To>nppyc;&a{6~v;ZCNyDWZx5x{0F>=Edi z#Oa28Ehs8bQCHm@lwt1Zp6G25#m3&=6V@RT^4flkex$4U$W;RXP^6TA_Z5u@el0-T ziAXgaiV3gRRtswxv@HgZ!9EG%`{cc@ko#pVT@H4Bn;J%gdmSAurzSPoQT{&dPV zP;49^oUd{YpW_Yn5{1oMI~8)RuKI21Vnd`K?Ve=x1sey~z{Jwl+TOZjWCEaktSMTU)2WGcB#HnTc6-&XOO5Hsoapk#PVL``*s(FD_Np6vBkWNvvEq zVbrherlw{o*m!*d144Jtk)uNYb>D5MKv-wxjOCKCylN&Q5^cA2XzQVGk8NiHrGp2D zjHyg|uY;0;R4EtJICAd%4uowKi?cM6dZpPXkPw{bCXs#$oQ`;JaLZDOI- z)9hx%5YXJ~oYc5AgyJ*@bs2EGT{}oh(oT@F@$mGyn%U!+0nSuG0NS=;CZEL(_a6AW zh~}^`??Z~OU6f6mjP0&H5OiUHl|fF)n!xJwa^!clG~wI7LxklHR8X^!GDwp(Ei&o^ z|5c#S+i{NNL>BBGw!&)jv0&R%$MZ;sz(wy9Hav?$9)zuC-J-p z#)DjCyVJFvPue+NOxlxpwlt-~GjC+_enK9}bpra}^STU+tIH9CM5jcjj2N)Thlh5} zGovC1R?JeBLcT6?uN3!?7H_ZK%CN6C0OQv(SLPcaWej~D1vDqAiPY9d6{L$Dcna{0 zRNy9jhqU?^Fim1=Q+N$3%5RD{QlZ|%r?Y!4;L$ZH2BO! z-FMwV{+fy=SuJyuwfSa*iSxEwlCKNF!5lob02o!x%7%{ewGs&2xMzj)4t9=U7kXqE z74%+JqM)eew^_ssYjgEG+hmxK5{PC^*3v>W&PFIHpz;R@p#`tF8v1~<8$WNgYD&+# zous+5OzC}Hc^fz_C87%Y((leol)r#oaHKNCZzolpqd5~IEe0c461*V_j(!Bp-g4j5 z($W$OHbQ#R<3`b8K_=>G7yHbUu9_uZ?VEjTd?zZhZpU0NodQ#BR_U97To|qg{^Au- zUw6Em*voLjkPUSZSRlVW3B5fHuC%6Imi8T@amkYi#VATSerGv-J`7G}x5NHSyZAG0 zg4c?BU7?PP9lSe_L_yS&DG%3(5t7A2*s7F~KJ8rLXUg)34IadOn14pcxt6QtB)GZbU z&sHs8w`t%0wv=iMV1YcB`o#4>7Ynf+XVCYaZ&(UVEi?g06QDcqOYg7Smm~VGhnt&+ zD#Gz0*!&OM@E(RU+UL`oOb%0(8m9ZvbT=vs(ZA4mF|%4 z?(XhxkVYh>yE~*C1*AhlMH=ar?vn0q=}zy$=RW72-#PdF;~j(Ha4`7R{_ef@T64|$ zna!IuV&wM_dkFLtN*c#eCD|4hr730lS#JbBqO}<``noxryml9wSq*LV-d@OdD2V56eF+nLAyIEw>w)X06kaf z$@(PSaZVwn{KP_6Ute_*Mlb^yhbxP;vet`16va}UDtA@n=@AEnJO|=0F0XQg{j?tN zLt0<4={M-vRF>>b`aM1Zeb`HvxhwU)-K4waV*l_TgK!E$$oGG>0Nn=2GR!)YN~pJz%;qh#{AzhmRc6CXn;T?vv9?s@3k9bF;3nk5c|0R3zRU8s^z> zjQ6IbRSn)#^Mr-V{Pkel#>#iTSAE?W)}n^E<;n286)t;2y)1GXsgf<^jv zLmsbh70+l~x3_iJ*kuB{RY}A^-;nux3YwYhD;I0}2%9Md`RF>kh2+f4#hDq8x)xK> zt;a~$y!?C{>sn2RCGW?(ORa18_Jo9smD{7b+o&Our<2~chqj$mnDzDb+8NvOl9Ku* z&wDKi$fg-UNvEQr0UUV>lW)YOorzIr?AdS5em5YpCIHNXk~Bq$E)z<7UAo zz}!Xl(;a>v1+JGaE)w5E$Qvx>P6itam9s>(G&ygf2fyit25<*}OFvNvN&Wr%H#mgd zJv~{%e&*iZ>FDfZ(MT|z4~v5Qmjm*unJ8#WH`skpu8xBx&};l246FJ1`3Z^0{c_&L zZX<$1MA=s5M_5;wb77m3S@!n!{?pc3pAvK$1u>4t1HCzM!MX>m&UVj{(b_5Uro>x_ ze^KKNkFyIP@|1-JMeMZU7F{FT+Y2Js0-Tv2#94jfrhThHPE zb+PnWA;~77YiGoQHO{<)^tXxj_Ckd*vFdfsRG3XF@P~@BN;NcP1b;oaXF(}YJ9Pm& zb;{X-BL%~0HA4rK5TWFr{o>*vLa#zJH?=h3Do}t&@obLz&ma9)F{@_petXFkTG`m_ z;7OJnw)ICKOWNDV3A0sxtD7-**`$t&k1zl3WV`)-;~%5qe}4v(VDa`r*)5R$G3t`0 z>^6Ef_35hFS8_!6nMDbyX9|fp{`t9jae?%|9htMARZoBi4zY4eGa-a`d3?YIdLrW^RMq4XB!@9*xEsMSsKn8}2fYb#iVI5@cYxNK_J z|9>8j{P*!g6B9Sa?NCkwbFISC|H}nh*&hK|V*l&cVra(Cul~QD6j&}1|8LEtK|0uE zlvI1BrW>0w*f=l+&w7#LWv!{+B8ibeq^4hh^$dIRFdn=)FnQ2=RigDkwyMRM?l(l9@_|*4UifUr@K4Vt z25r1bT{&4<;6WBQ9{!zdaM3T89N1YYjbmGboBBX)u7R};d^CdXfnWjWC>Vf z!mhn^#A#S*t>I^3(e{65-s61r0F4b7g@9P=P$iIeV82L+kNOo;)9#s~W83qEN3chH4xiPtxM~@x81hA~KdMW4P676o5?RLDS6I#hl9~u3ie3 z^k7ma@h!W6o>QHb6E~!uyBrz;ZfjCzieP3k8i}ESeZ12ZDiWAVvXg6kh{H#*B!tPQ zOmtjIjP0pz)^7@^`Y(&Bq^zGi>=e=(3KV0G_kMp=lyk$auDbd;*y}w!Cb>BW^<5Vi zoQPP<)H8@5GopR1z`M7PNL@AaxnHW*Xo}3vN<7SHyIkWD90Ht51HB3__OssJUb}Pm zU>DC+^Hxc2U;v8{-3Yx~#g%8nt=G16b+vU*PG`+uv;&}V5xp{Ha@2D#0ri(_m5JdQYqOu$VnU961_x$#< z4*#@su)N`qhOe*S^Y9@q+XclUa=#PMkGOLG#LD=Zy-P_ZnR`Ggd78!Q0kZfB^!qit^@K8qT`F;CC zqyVf-p09cZU|;O-7YTTzKl@e13TGLuOjoY1WIS`9woB8}@TAd*$7!g|&CK#x`MAuu zC$b&?4jYoMTwcY@I)ZP;`|G!UPcXG3g=^bA+J9=V5@}p=B{&@fH=efJ9>d7kM)$*I zslP{}gDQjE)9dCWHz^6zz<)dKn2j86b88#87m|~c!59bP`T(Ee-AG4G4ded_>^6I} zV%->mNV58=oWxm2$9j^NwWFh@h8`{H&y|~}*^@C~dZjP>@bP2z$LzR{-PzgQU0ej{ zTd)59{)cjXypD2!!1#e$x@cu@Moh=B(1BQ5#8v<7%$zvlu(oLfP>=MC#6)}cd2DPT zl7kt}q8Cq8Gy)i+z`9nTsZo`dfk})Bhzxo=+tSj~PL57a{R`=Ibj;IxuRODg+tfgY zm!475*z?`H=dE4XBR&z98GoLz&D}!U!QYH!;6}7zpFtIC_cJva29}UmJ*BWSje`T+ zGCA#avKjy$rp#7>4gpwIc$q*xh@vwoJ>9xS?{xW;S${=Z55H&}_#Xthg@svpIRymX z=zNGbRLkMOj$Zd&gnWt`{Q4DFM+5W7*VnhX>6=HsJu)s1$^Fen{4ux^jaWYuEjK%z z%ZS_o4fAI@JtJ-3kgN*F*I{|3mZqj&vnL+T74bmo}G{&J$Kk`4EVxtfG?NetmKE9mgdp#SY|=va-|m4i5*1hugoAT8u4G zQ-2#?bYaDB+6tCPmV;_HyW^zACHNJmFvRD!jhi_Fx*e) zDo=QMF`+_wVV*Bl4iHWu8r~aW5u^R+Ui!oq^(h&X0mTGP3o#A2@`bCZC@D`UaO1YB zR++G)9emj610{z?2ZLKfc9aw+hesE{R0LP&?bpK4k}4bM?{ue5PPqAO2q1kiTK1L? z!7BCRM?gV)QG+&*`EKT<&r-prSUE+p#!L|H6 zRBy}OjQ5#3S6&V>M=mFclaG&!n>);7bNjw#I>zDa`#RiME7idX(43Qyz`D7%og4dx zv8qf(S)uboRD74D4B&G_lsGZB7x(v%B#?*|cX}4_A`8j7^6RJJfV{-c&Q3SqZta*j z7RlsOI`4A&tB=r_K#Dp#{>;^pPy~j>-h78}6i_SobRBSwx?oc)a<{vnxJTW*nDh91 z2WQ0aT?kC`FEu`VpF~uCYgbpy-&(FelO{1EEa3=IUxo3(q9np!C*bFxIb^d-6nMD1 zHNANxM3V5S(QE!lfZuMZqpuOtu{x$|<;13U4-y+dl3L8H`H=@9fi(oBp|&#bk(5*b zqR%~#t9XYh7Fod;*_oML3$7N$cPu>4&OdIql{`11?oVsY#~u*Qj0*}Vsc43EcTSW~ zZ=B7ZWy2vVT*K@PSV|XAw}s0r!7+{I|JtYYX#G~9#?5WLZ)|K#^pBChSoX&CC$nu> z1H5_k_nS}j?-?x;!oHtKS)!Yav4OF&i>?vIma6-5T*eb0wWb4AhMb?G8UAFvl#xZk zjYmag~EAJYIV!>*o%jyy0%u#!$K0RZ?GzZnfB*gwa*TUlb~FAILWu#qq~ZM zoCwBqP{E;5S%OY|D5@h zoFv=Yrg_2`f!9gtfBR`-|1-)EE|Zv1gDd#UU`ic{Qwadlx5O|HBWvX4E&iRg z=-158YxSg@V^&-QgtOBso9i;*>Q@mwMrdA}tEqw^#xRhElsF-<+Xh(T{qOL*1(s!s zukb6`*qYuA6Z>_&V{fN;QI#oo6qeW<-!BqPjcfxs70;mGp!H1_{zW-IvoITiTmpd%dUR3Lq`uMBxCa2!p{LlXl0_^ zV$4mLD^%J!^}XS@GI?)Rsz&3{Wq#+eKsz(yl=b&~)f|S!`r)@Q4YBi~O9Zj|)wOOw zv9Xb(EFr+?Xw$mkE`r4p9Ua}tH;!+M{+C01NEeorXfY3j20QhPi|K_JmECGqRWsn$3nTeZT68d zFN4)i;Wit_~J}4X-T;42=OGhIK0AAb+-X{j0YgU8^ z?vfWfow7-J>L{+dX`c7>X&|xmO}{%Y$k@^a$d~x-ZuN_3riq*+^PB=UTlaVyPL4Z> z+!-Gdr9wj&>NE#gOadCKHS}LP#{GId-u_%6@+a?k3PTcMPLKtl z)n4{gCyy5XKO;yXKcVB(KzOS1?_?&%fjW?{6;Pk0Nuj!B7RM_qfpiU|nMJ9f4{tQh z8h9~a%k_)5wg4)=r-#2;yu#G@>YQP*-b*1>4iZwL9`nzd3^q1)H~K^25+1@pZ3)Mh ztWHoJbQ>3^JnQhVYS5I(JhvnRVy>V{V=%we5pliB<%ieY^0cB#PG@l{OR3@~)0}ep z+uD=%k7{ifZnVoS54Neor$rUVg@wQcg5ktg(-Vs?if02gsnz^W0nNSF{T z(yk8-2lY265vI%#*C7KcgMG3%9|wV5s+oeg3+vPz`UIMU&lgzda+lp)#jg+6cu?OS zu0FNccD{7uHr%G({(1lBG(I5H&SdOzm0wbTkdRPZy-t=mpdQCq1TLi-U*dWVB|&ZUfv)d`Td zOxu5US;(Aj;WNMAZ0CFEJ=aQUxxylHZzoTJ@(tD34Jt5sdRggycB4kz&=o6ID1Nc_ z!&gdAe=!|CX`!gtQ*oqB1PR%6ayxNKRU6m@HJ~1N^;OT=2~R)7elW$h(t9QRsl|Pm zFm5#nd#8Ykmvf5*2SbY&gks-gN8;NOVXe5`jJ+g&)!Au+`7>kFBklu}hHA=;V&e4a zY(c1S{Yzng;}`QyJ}K*pE7sEadb>>b*GFpxeENikSf$a$q4h#BeRzA+xBZTGh}{Xr zN5HTPqeY3>LK|4FenE|Tz`eb*-F+ZIvkp66x>>GSIWk)}(=~1)FUhI)YF!(|cFJkn zu4>B7LU>Aw^VwN^Fl3tIyiWotoasW4^aN~q&_|LW>AXP!2Ke~5zz6PF;u49#flMTm zO(rU4glxB+xOjrS2v3O=K;bE>ljUjci}T0keG+q@*VlXsBSr}#6S%g-2%{!pmU@}Lko9CnLF9^ zVWvG*PAWMqz4L|EZAr;w5+-^BAtAoKJ%J--f}`EREZU-KmDa z`mS*g!-0zvfd^yK{z(b+|^>@MO z?td)5I}U5gF3}1O=$IuvUl$&{{;6B&r_55!F8SK{BM8UwYictV*wSrK9Yt3+Pl>W)TRSn8(fS z7)~bLW{B`*sah4~>yBRSk~O~&fj0c{0&h#X>ozPE3uR@%?cU_a)Js1FtMAHn_`iZP z!dOhLH6@=y%xnH>%ZNHKY;{JKmuj~pz8>6oQ)WlN!{;UK;wh^{#jj4VH_o?oc~4)cZG_yr8fk)9rb_KZ)=S5!Y_p{E^9Ex@JF) zh_7pDeXOgi0GsdRTFhkw!kchtx zSfxIj#tTsD*C6i??~qy}cIssG69c}FTPF3&Z=GBX=~Ja3^yo-H1y4>+mIpi*n^@z- z9JM_}k8+5d%#EQ)Ttr5KkG~COJ@i=V4cg*JelO7%F@s;eeNn@7-2H)1zgTSML-{A1 zL4VB1F;?r%tt~xs3!q(ewHO7LgT&V;i!*bz_thK;JNb=KAl4i&+gFp>4YOOQ#(^mI zqfu+iMj^5cPT05lNTX+IVTw`Or|{ma<*W7WZHwv-l{#oM@7_bEY+Y}A%~2&z)ArHy zZ9IfRHwh(YWo;QN?}Br9_zm)zieZ zj%cDT3E>i{1xQ&e8d_hI+lyNI&GiW|2bN?!-a7Er8M0vISfdbg!7m$IiMiNN#=u>#ar3 zlM7~-CB(!dNXbzkiZtV|lSxEn;oF+3C*ocfJZ4ZBna%?gTlO4r`S;qRMicGQCL$u| zEhS2+-K0|8cM1Ag9$!Ue<$p1>2IbI=;G~t@?AP7Y2Yz-)Q@(*50gri@(U{+K9Trcj3TvMF} z0ubWLO@_l2|M~DPhMd$X{wRNuc8gpbHW8MXj6vWB-4F0-=Gp?7qW0%&FJ5wZZ6?U& z!=$KrH8dPudAxhcRV_imL;b}Hp-{+wG=lSFFHBwistzbeOgwsu5{C;0SvJk0`bU;}>d#7N{IA38!d9#!T8-nQw4-DRdY zz>t?Q_j0y&)a<97V7vGG8a}{yinSU-CQ2gn3t(b_O#mmB*;NJ>k(&#!Eeb@Vr)?%_ zsGRnijm+-#)a*oB4z5@$l*4vz5P;w_$8_e9RD4kT1{aL%veLidC~v<~`{|ARn0)#4 zG&Cy)oW{$t?;Cdq=0~q|-=u9k<=?^Hd9l|~wk$6_vT;4B(C6}c zOP*K)3WA2_G2Oh6XF8!4^Kkr$j>%3GWhg$@rhtwX&6Y=aD2xf-|u41AczdOyYi?Zv(mIgVNfdd1y2!+;s!XWE0K4SUN2zGQs!(|Ay)Ampz?TfJNq7S zzzs_ZP7*FnGAj;UQs*`O8+jdVpSLCGGP(Ix>hC5Q85qpg!nGxQ#l@R-Y6~MC#6tkXBdRynj|=B*R5`XQ$l^e->2l2hh(Qo$ZP;>*6Z{gs3&=a8LffqJZoK3nB@ z`acYlf=5pVuHMU`idRZ9X6-432m6I4*f_q6QC(P$;)jdIhP~U)HjtSmv%*yYMiu7w z+|+hmv?zD_9Lq(a2d{unTLiJ!I}c?vtM8rl!sg^Vz$$FRBmM;rRCb>Bm&T0<@7{sW z>*qGFJh{PbVv#JGcz9-OXlNFTESiJrSX$2%A7AjGaQTY*y)@A$0#$3W;OP;Z;Xyg4 zGKa92Hm+giS`OyUQ7cGDLfzVk5SEtV()JOR@a6F0{_VBqq%I9iwDvEwIOx+XKH*?X zHurX=&TmN%*OvMQg?5`XIPOL9_gB<$QFM?kwG5E8Hhqgfe&~o*t;PUqC?Q=3_vqgO z1(KNbH}jsaxRzN}-|ow5{_F*(c=N&1F(zM*ZEdK?!=p$#!fvC^VVHaUONY*~EUsq5 z6>H1a7c6mg={kRY{=Blg5~MxB8#t%O;-gVRF3Y-LWPYty3%#t3%6ASnuf+SMQ4B!I zaglYeWCswv3~|w4mDucTz!@g!-(pX!TpcfL9P#h#p!bY`#cDh;Usr)6&QptSfI{}x z&j2)tP3^GQ9d=1Fi)p?phsy|#7I;i*P!TjbkXFY9x^vNW-`mAoZZYlLRSd--Jz=&y z4R?e=ca(m{i#A)D|B(L$*>Tmsw2(G9a{Y`S#Dlh{iY7kJQF1ugLAvOxX3d*SYyLnq zR&Q7+i!>Aw79KH2Y!VC+4)&Ozt>E8k0~Cm3gI;b0!O+#OQcJRoRoJa4xY-aXN^pJw zZ?}kZm{wlv?V5Aorue+p+nFp~T0@FT9_~ib&^Aj*4ZVnnT)Ls#icBeZ>-Mh}04J5* zaJrfc3AnZ@`q{}@1aXx@7(UxtTp53Bxig0c^_Grm^myM z!~3`K(C|-7@}H+I_--1@sZ#=s>&c#~#)oyh9ansFx_ma*Oj?=S%$|6n5(1pgrZrhC zOu5|HniTk(6`p<(a)1u`t!X|esgy>IYXF%O(zxj7a9*4~`>~C*tv!G7FM|*PspfRB z)b)fpK@XV%_fSFxXZ#p1OMqzL%){KxR3^!|BWftpsod_AsBsX) zL=_NjwdN}*_*$tn6jT&DEI^Q;oU+RAY4x@@`u(!&*$rF6DdT<)0V*?wk(VQPzfa=m zTTKNA@`ws@gN4bxq|JBO=AIz>j`FT3k;0_#3@u)x^SaHI?lk1)6HRzZRgojFTl^=i zro1nzWFc4GqX~5M3}=5H$JK(F)MlpCq&| z=*^htx}lo8uRH<}N^*(t8`@zRzv4!n7)VbUVx9oO2?j4M zPVSed;WNvR^kjGp#R4tE7pQ)rCFe>Q2mAZmN9}oe;s8BB?^?gw=$(X@v1$+ITlIbm zT2E5D9==30P_ixx8NM6tAZ@Ms!#FslqVD?0rG)(M_|JobbO zMD(qPXE#8CWZ6_z-%BVfb8Fjw&bR6R@ZwO+NmB9L!{Xk{-S$?CL(sFoAeAa81?;9b zM=@eYH^m-tkss0Ex@1l$Q4=>vYJyogG7<{B4~2+`!#Dc)584r{i8``m5iXaEtbMmp zC^d2Q@84S}J{3C}u=1eP3_~jFhh7peG}dM)*-tMOnjRl5EyCau5?b5aeYzf=Sqz|G zZqwivJ1l|{gMxAh_snJO>Z1LGd`qok9DU;2+f~Ang8c=HhIuKPtx~)Sp?mjtd>p<; z^=@G_qWuC=;$Go?e3M`f31+^r&eTv82fCArLr!wmvC!q$U0iHE@KwjfPn1w}DExD? zDn}ch-KxMU-iOHZS}APf5)|xcrmP5a*Xc*bt!VN%THQ*Xt}QzvcJhHkUJlp~*@^d| z;t2~2Uzit&lj|=->%`4T%>?UmFRoZFijjEt+)>_ePYd-lM{^o({0Upc+WLB()GwZ9 z)cI^nt*1q^e|&<_KgyNZrXo&WsfdBO9t=c?cG33!S}UxONr+&rWfy@AVdh;Z_=vchZp4JM4c6Xxf4c>UF?x&}Rn9-0EC zO|3c4F$P~{^8<-tu$BjDk%Yv=A5}kAZvgyrlgY4UDZlRX@yQ|2h5fI_I{+f$X903@ z*{lRr|8Y5n&Bi2G+K1IVdkaPmK{{IUb%b+UNDLAZ*czRo`N4jJ;UB!`!-wO%kMUdcI>+t*sU(3(6T-NHOeWvz%ObpG4kxea-Q(W;%p8Gw8gI;|w6!$?&&k5Edv!SxG{pV7s#J{|k5LiW_WfQ~)b;Vv$0LW& zL#)+tVj&$}T;-dBY9ZvhuW|F}!tc-RxD&rT-`QAtLg7OPrJT6UW`4Zs??(o6G=&swao17la#p=E=Iu@42HRHN&830QX|;Pt9(Bs25(!+3LRO}qFCXXVHUb89L) z4-d^in(SOBIa;3`6rEQlJH?WQnn5!4Ay<=`0^PH@rk=)j=;8RpFO%0PGsVz%?ThH} zE*S*0hn4XprVq09+Rs*@k;h^J5J-&--pBd?@w5*-G}A4-(q^qB5@7n%%q>MvLGjiP z-Jn9x&$aUT>Q|0bA#?7>C=Gmidb!Q>Ah!CN6Bi;gNX7P+gX_zMmAUy{(^}rF0|k#v z!=bKnTr{!<+T#{)`tUyE$Mec`)mxwh*L-W^Fy zOhjmsWs>%#@O=L2qbe(>zGDIU(*7}l>K|a)p2O~7t1Qx%Xzqi^$}ZF5hM?f#EzS^z zaowvu5sTKiBCZ(Xmo~1E#Z=Fl9v&g01y_wP=_-Gbs_@iQgvHwN%$K03N($pr4;5Qx zhEZwaAL+U&URDDrRWzIm6YF-EDu;PIW>7zP;QzFSFK_IbXdh^l^DBzuA9k0^oDxtZ^$At?pa;wkSxR4ttj$g&zcO-+u$c{lpkHn@0Y` zvf;6>50sExc|3~iL&E4AJ$?P67XM(9?{l@9Y>AybN+qLvxQxv7jEsHSgcn1*vp1mm zuDLgKp-VUj;Os%~#OuBXEDD;Fc3dX zbzTW!x-do60r`RPEE!>JlNh*7({WPQ+Y!c_$gss zUvq<_!mA!Xiie!gQE_0N<&P#QeMQla4m0d>KuPm6S=|A7Y+|oXo+F>t*1WvDa{tT0 zGi|Ta2dUaf5D`fDlb)D0oE0fdS+O3`qU}W2odY5Tm7-|PW%6jo-Fp)jk`3Mm(*PnQ zvYz&ftdW6!5af;gL_Dw3Q2lQ9f*v5S{XMz5SXjzMr;J}4_0wkP1fwvoFwX~+jO=RY zStB440$_)4Ev$Ybb>c7N*j~=BrNT+6Y*k+hbPPBgJuJ-TS6DKs_rEKPb?_(+!2-7E z$ndC34!f^)Pfgh$rY~`~a-9@qug(-j&x2 zc|j87q^|n&6ds+?#j7qs3Sa>T*~H?#=%bes6gpD#zS1%~FJ~X3l#NUo0A}qc4x4iv z6XDLibtkv1Vpigd^`z<&r{<|9HF0Zbu%X^INz#x#7JX@!e|6_3+(IXU>Q-Uh;rWJx zyqh79`t1A^D-W-aW+YB&c2p)Ha7N6?)RaEl!H?(w%P`DC@KCwH-~M1PF1qI zM?KoERT$B3tSqB-kN4*9YEm666cGmq5dpW)sV+ZJ?v=xzRw3t!WgaCYB0OacY9*x& z8(NSK(Kr7VE~{qfZtV22_#&x38-NtMdoIj{A5IRu*4DeD5xEm8jA465=;*8>`rq+` zE>28!;VvNI10N08g6 z{{Zz+=H~Bk9mfj_-dSBWW@5&y|5BdJ&o}Kju3%QBjw9sjn&DeRkU=Hc>|K~&NGk`& zfe>o{W>PkB0{+(oL8>nbh_x+-g(SN??4tAP=23mV{=HcF2!Q^=7R{Ndjza_>Ng0S2 z)*BNY%|J)Dd?1W@h}F>^o*{W2xPzm#JJ$ZltP&>G#c@I^?e^z;BJ1eQZ&*tQOYVEn z#X9_W-EM74fYLk=?|ZXX?tiGz&`_+xBP_hU_^X4P4KC++sfvM34L01_U27UFI3IX( zSl1xWxe0hs$MQg1mwa*~t7LCwemGfz4k?_0HdRE$dV}GU^*hh0PLMAub9h?f@xQAg z`Lmf5a04P--2}@gADClkpnU|oBu3YucUeJr)X@MmZV@lG@r)0@!>=cBWtWr|&SDnx zQ+=`5wd1`}R;#5=HU@_Wt<*o7-epFRLAdaZ=x<*FT?jou*0A!>z)Fu}#8@tbw>?pL@ZT62|%az=Ogo$pEI(<`{Q~V-e~1AvZVsMe?mrSO!K% zDC)sDP-b+@+}KP2j!IZ&y*)%gJp!*gY`F&NqK|~iix^jG@?kE+dVA0F@J|`b{Z@sM zeAnM`5@!=5(*QmW95NwIzSiwmd*=5Lq{m9W6gpk)uUj0ixRXphN)YLqkQw**?3$g$0in`2^Zj-O%0R&5vb9vf#C;{(7sLDl8^ zfuLPNaYf7%W(qE{U7a~g(4W(D0>iF0lwgGE+Wn{yUGIGz7bGkSiM*q53?{L^viz@3 z)}1>feSVA|SYI}N5E7i=o~R<2Fcs5`g{6E{%u~i;$VD8ZhV#dt2S%&rK-D|2FY+ae zcmgm~j(%JtBk@wdBQ1fene%s+_Li3?-TCu=J6WqtjdJhuCV9%?TJw2YuX}Ez5<`F>L&LR|B+UOkPmuSo(rl-MF7_iA=Zgue3>!p1NFXs}UqyejMnMZ(t>a;f2+9vXHGlXA4S zGJh>E&i8Oa=Ab0O7p|TKtFkvP6++;T8*n%``uJ>NXxvT~1*-moqIYttRDD8ef`7Vw zVT(%}QK55E0H(wr{(w}|&>#3xy|LYef3*Nl#64RavhUbrpXUX!<$i|;&-FAZ;nP7M_n2kDfKH(UX6iw+F!2tN8@`Bam$zebpE1A3 zQ@GO(jJ+PoZu`u;=I(Mnl72}0lS*%0zY_$>a@ss2Z^i!n6!mV5>@`J0Eq2}4vp#_# zz|R0!uwXJekl6p2@Y4CrUIqt|tkue7`4tiomT=8_2ZTN{SA)Z-eYatT{fZMFWRF;x z!r&#<*qG~^wPr-6Vat~-t9Qe9LQU@Lav*;?lVu#{NIKG<1M;Oa^nZMWhs_GwYBdv}VrQPKtc68w-xIyK#-j z^(`Vw>Cc69D=Rw*MYt;z+dug>rkR#7N+aKuGxyT)pqd*Z`FD{R+d)5f{|yv0OC;Bg zsU<}{^E+iNb83~Fmj<4DW+|qpKUY<)z5}8kr&=!e8^&ag9p;L_*Ka%?LpTL;>j57X zomZXx=4&JX{(&3gdEhB9Q_jxT3mm{tX{s4$tu0!=H99V;J7xuoQlEAheXrZvI*|@U z9*4#fHk<+{_huEkjI=c5?xko}v-4eyYzh6(LpL{%@;S?;4DP@Q=C=*pt=tEQ_5??R z%sbm_HbsMvBQ*^6`&jP0j8xH8jVC`=O<(mtV(GG+Of!RMi-VLwRq1LGim z578!Eb9H4 z_fl-@)6W7DINoKH(=kr|EK_pWyCHzi_tIs1V6xe57-V3sjod#tXw!Sc!^cO5p$Xl>58L>|e|b%AE;T#YJLnz5f=>Cl$gN#fCyqPn?C zug-Y&F+yK#OOu9wWIkge4UQ>%QIy8Z_5Cd1^tNeymeTc zRt@>M>kdi)4jl|6>Iv(y4NT`E@UNeiGHe-H3iw?$n|RYw7RZiM3I{nwi6AnYsoTb3 zJR5-+tsjR2fcFPWbX(Lg^qZPLG-{p4=`Y|SR&IznJ5UP=YP{mMDAj^8^YXebBQhxp zcUTsuwz_W~TbkHlc8(k?>DEj@?OO&GaGx=4AR-6J{|n*1+M7~We{ZPle>Mr9{c`o~ zvA2b9v#H47b5@|+>OV>Vw&u=-o^z0m-o>U2XMiplYAmP1@3XylF>i^7?)Vw|Czojj zjYYf^rhPDo#?-Pyv^>qN4IJpT{x+BS=#)yi(ND>YynGRgwL_ zzk2j`cdxNwxHSSCwq+MVPzuq7EDh!*oagO_!8cXxBsH1KB*GM12#SbDo8e5^!Z^1KVkzsjjNNz;*q zQ}CXB)+mXGlHjBdS0`7%%P{~Dd+}c*!Joo&B;!d29@%{+Uw75ulaur2%n0q4xe)67ouhEA#Dy>KXp5G&R?~kg3=%ToKZ_rHLPI2JXfM@x z8-!wR%d0qXU26_9T4M+ai5FT2gv9T)(lB09z6*0tT`i?{2PPL;BTNH6zv(J2bOM6G z>-fOW(q4^uG4Zj6 z&dLrnK_Q&vBWvMHh_BW+8noe<{T*7w36VB~CB$?SJsfO$sH$Euehyj1+X^e|gEDdY zLkcG~c>Qa3_M?KiA>KqFiF8RfeLDm~dY*0&befT?W)Pf27^M!>`V<=KI2#{V_w{X@ z>grQ=YG#sy^%jbxQ-_5>F{rU&O4jv2%vgM1@x>bvCgu4!{vje?KT5`@6;%g}Yg6N3 z)aQFwxOPiF11V?MC$4#|2wN*0dEv!)cQR~YX9?pk%P!5OcwLF&rU>X6A3gw&PLQ@Z zBNtVu3^NTEBQ9uFt0o}&XzKwu3hlF&J_ZKQl>aK4v!|^;!o6@NLV2cnUeuZJ^M2l) zl{PzZtxx_9VxMwyQnKw=v=CsezS8^+9T_9;JtMWjPlyPqbA!zcih+HbPYRevN#dhp zH2WSk?5Mwfy(z<3_R8$xWR8R_$8)XQ5EX?^J+`KAO4v}T0PJ&~Ln2`qkZ#6CEC zd-nh}jia5K`b;G95%QnZR|nd!zkF<9>|5cj2yoD|wze(lJakwwGxdDexr0RkXR?9L z);<{U)UTq;+Ti#^?hi;O1ktIfsQ`6)T0CXl;-Bx&J+>$MABm{->_kBO@7ub#c*eES zIm@9*QvMkK)$>ZS0uLX5n?UQ$PKPCry!h}r%hUWjMFkMRmj$f`akV;(6B8UD0L8#S z;Cl}AU+^v?+@8_@1FeT9tJih^L^nu}$N=>9^z;;fcR^f=(=UfKqK}H6f+GVuE^|@v zL4Zr@P1WQ%^FaA$}|L17h|M=tQcUKVzqIUo5 zl>jadx{}dEPW~4dd!DKPoE#jTAR>kZ29oB$o(;%ANIADd-!8p{ z5Lj9+&OF-AktoDN|DzCKUPK3ep}ZO@6x10b&)H7S2s@IHf6X^F1v%kL*`6KiQCSrc zPoo@E5=yuZ9%BE;gOlUc)iIz<{{`a5HfTMG!?4tZt2)%1nM#I23#c3xC!x6cD-fr0VEsnVEwyTzq{OVcPtZe(P9+$lS~CntUHzXh+t(Q`XeleIK8`vuvT{G8|BVAh#BJY>Aw?k^J~r0X#RmZl^nv}n>DKyCl zG9_@>$yFs^pZu^L#8xxV(YYD%$ZlA0$1z*z=xEIG+s%aqWe|z((4HW=Wdc=64A@+N z|1{sjEd=sP&4F<8#goU=UqF(_)|L>u*sUtu|G$Qvj?C|L=bwseXccAVkH*oFH3h^Z z5mL$xqD|CX&dKECl)zvBUYVVNK_RJ$ziBj6xcD~zx1B>k2+qF4a=KGKI%wS1Z}pY( zdvI6Bpy0;4>*@lvW|-8*a;d|%6N#y*eV`J+6kmj$rv1N$frttVD=RBo-%Rw}(4s6- z@=!oSe@>Eyd;sLOr*@JDgP>~5AD}ywaHxOqc0wf}D#gN_G2lMd!Mna=tuy@f>(`#Q zX%?*@syH%Imh%Vf!>?fg{|p@+OyN?g-Jx_on*alc&=MvFM)0hmj73V*4T(tzsBiv$ zQ$XfrZ0s~3$i>Uc$zLn&)Vtz{f)GKD@;~EVg+gUoA984t;m=~rPi$&9B))bHWNo{> z=1Ka*mwdbKgc-n|7NeVXRd4$#N%dVanaX8 z8wUZ{4-3D5y`Y1|#lAjT6cEtzdcy&R1HcL{ce&&Nsu*ys(;~&k+3Ex+S+5XFm}wu;j&kr+mfi1DDW zVpAdsaHI}Ep=hMuEyPO!%jOw5 z86v} zZr6PxBfkkwBsH~?mR9-P|J4FER{n{8MGS-Jm!OoZM$(k^;Q`6+;lYl@*RNkiqw>ba z$MJ|T5>qk~K{X*6pI!D50j}zxZ;;W|oNXHTKsTWG6%hYhTc2a$q+HeI&7Hqp15v6!bL69=Ct|FC56kY5$i-!PAS$Y42&vDmxm@@g)SxVn*}Hd) zjG*^Yq9*t^J~5u1mEF|dtHD9}+`Tody4u=}CQKg4+^98DEYY^8sGwRwVc|FinbM_J zMN1PP9@T4r2)uL{JV_9#)Zlw^dJ$dP!WWnA1?cY%XWLb8IV)pGx#2;3gR!xH!gASH zaQbwhWTj>Xj_m!?4=qJ_Pa(oi8%gAW6Ml#qI-Ht}z<|46=+Ux-9AwuH68hL!*gu(G zz@v_K&fZ9BYuEXb2Kx4Ju-_{#I_)m+GrY5~Ft#-JAC#M29aBN-hk2W457sjN%jVhH zJ)Mm)O5Se{>pK@036Xr+Kx2h;sCk+6hK>XpnbDv3eh%If1c*b} zjFkuKrx_6Ze8%Ai-@bGuu69oxhx0=fe{m$1nh6RIK!on30e(34_T7Sbo4lNERVZF7 z1bxmru`C7{u;E|;!*j7NAV;q$sLHc94&T7QqqDYm`P|;X(#|dz=M%aZDGLh?2L)s( zFveVu5UqPA7@%6X+AXfI3ynov*;|iG(0#EcTKyc43&QV>U2{S%d`$v&3cx zC7MSsg0QNArlbGT?(;ucs-Wsgja!_xs;G!`i?#q?U&0{Rhhi^L4V2%a{#=|2^&43{ zIdG;(ZPRbt_&5biTB(JDTs}hrHaP$ZNeXfi2GzgmA|=3g@Oi_*iqqg8swMOV0W}4L z5*6xrwu^OXJ+u&hm?3^n6XLOr7xauQ!rpU-20RvG6F!67N^>|5LJ@zBq0J8zU39cd zujShnn3}hr)E$%h;zbwRPt^=+zdUI{>hDCIuVwH8CB5+zuL%nQlH(%)^}Vh4)Fr$& zjPQEFjOEs*^_w@kjPkl-HF9i^nwka+hFG6wu^44T)p&Kym)E{PAU--aa*m1slN4Tw zdSZS3l?mi8sh9_Uz`m(c8kP`kBDaZzX!(ujKE2CRwMm=(H(5sQd0Geui%;IoY#(0bF zNO@8(DnJDRNNQuqfH)7F;Kp|OltIp!Kq+)rH|Pd{iyLTVC*$LTx6dDlIs+4v#2kGM zorpy3W2kv;J^G_fdzo*(Eac7jPX&c8228&Qxqw*o={Oh#9_F^$sLH8^8x#bnas2HE zkYFMqb^UeUG29nQSylm3W@U5yt=hkm5zo$T%2z7--Ctp);}+Ec3!Gq9eL#IhZUT^t zx}&mF?n1z*T3qB7J*X{HShhlD?1*{;-TK1A(wqobbZfEq<8blc^N zZJyTamiS1+Yv8W;xjwSdwh6@{r=VEMS^Xm39@d(aVv%F?atiM4Pm{{N;1uE6+KOqH zA2T=Ys~74%ymJ3sQy-JKr+I4ai??q@+OKnNUs41ik*B~>#l<|+^;OUL`_E#2MS9e4RV=iL9f#YEzj*jd_~C=XV|-2&6Je<~w#%Bch_TOa?IzR9{e&14y0I44HzBtKWY17(o$% zS%W~-(Kj@NU@>zudEbUNr?a;PRA_Bo)ls9lR!e9A#2gtzzC!Nc%%0p|8|^5_nM;M` zd4Xp}9v&;ZIh=}DK7k90k8WndkdAqJo8!k=>Tk!CHlq0VFTe^0qy<)2oASnyBWzJ^ znHOW2fXKrB-hrxmR5#_W{OgfYs0rNK3-pOmOh+dqQXicA5}@gKi`vN58Pe9LKYQGE z%nttwap&@JcE+UoLluU6QaF#a8YDQRS`$?)(2uCSwH0F2QoUJ|oxR?ZCmJ{4UyjH) zu`Ud)3u1u2fwG6oZ~1otF_knKaFF(bqr!wsF`$i%W@}KCtAe$K`ahXSO;Fh%zDal^ zD_Q9uBWYmNZ^xB=26K+)3U_(MHg=<^5M6PmzW%;5q^Fi8^C!eA8XmgeY=pFlnVFNz zEf*~l`*#1jUrRWAWJJUzx+~u`$ZPE~Xnzr8%tG?bHn8%9s0bN56gT>`rPZ)PNmbBo zDU{5`FsggM0b`a}M?w`W`-U7UN?WK6fFOQu8ZEJ5$KER&B_SXnT~K3XX&kO^z>J>v zQxGK+<5gF)7+leqHVoQQ&SB!K;bzk#BQ3Bx6Z66TMTB+JU(F0ls2zt z{$2hP9Ja;%W-g)UDB|};lo;tLgiJO{N?L9joKpzolJOhvg%W~OIT41&*Un&xFbqs5 zFIIsFu#6Dk;NiDoq>*s9I)$OtiNDJQ&y4EGFIhx}MSzy#i1F`C92}IMDJRARWdGT4 zbBTO9tIExd`o=cSe%{i50sFaZ?hx$%<%P!lMu4H5K>PK{6;Q=NN8B%VF^c8oRzvL| z;o|+93~Q|t=BLy7+CvL#f;a@Kleb4F`w7snJk3oaI1g|&Is4|0&t+oyh{>2sP@nL$ zIE~iJ0>vs%vRka+eF{UXsz9l#PG;0&AF@^dzy9eSCO(D#M_!1_1nABebH4|Sw+Mwj zu`WTs!sjV1gU{YzI6+;rdVID<8=#@?vV4A&;EHB8qw#uPH-f@oZqcMeO@SU66*e}k zd9Bx9Kw6&mJ$UWY(I*iE#3<^fm2AjI#X{=U92i}PBu?D3Mn|lz!-TllE3x@O@|}8= zON58uhIl)w+PXUV_hycIgb9tyOB3_^uGGqE_KGn>W=K6bth1cVJ!-N4E)FS_+86c8+BTo^fty!kppeKq! zgtqy6>tr7E^R#-3km*MJTSt|t?+k`O8p?mP`oAg*PAwN_ih&?KtoF0`d@wyNtKGfU zS5c4*EYm`BJ zCYpDIzJX<>zEi({Z0OiAuf@sfmW^Y1hYV@qDN~0xrDj|yd?9!(^xgvc_Hf));rItG zFCe%Ocf(~bG~r#mkAX38*p`ZrfFM`aNIE+zmBHm@&~6&0Iui0F!KPeQ7eQfxM}pjT zLnxg{Pfp}OD7`VJ0^2eWAvSzX1?(&V>-SMVVRSJuF}TL|P1;CJhv{angl%>~&_$bq zbVB|3XH``?)&U-FzCw+ep(M8Xy zs&c{~aqv=Y;PIfq6eu{tx~$xAqVxuH9#hqB{?k~XMSx!G|89CeD;oA^WB^MOjm&wVdptgjE zC~|NR_I>!Peg5Sq9XNG`k`QxJ1@&oz7AX~0oGyT+^D+$I!G-grK(PAp*nLUw&5OYa;wAc!ERiDh?kgEw3sBgPYY4DK#ou? zi--ljd|$5mcUv|gu~gsfM*zO^+}xq}_B8%BY+6lX2&cHDpCx&O{oO8zZz(KW)jMt_ zHh#+vpN1pq)AQAR(hh+^GR8nvM>1(U#z9#_VQ|Gs?B*pnpLFV{eOw0a&r>4ri`Q(s z)#m~MfKICX)KRU(BsqH44^miy-@Z8~CM5vX42HC8e$CwIKM9t%ZDsBS3sUbAI%@}; z>;{KegK;OrTlCZF^LVMu9fHF9Uy9|@Azo*_sG|O?%(Yq5Wf3DkKU!Gpym8_2-|sRz z1nCtUis{K&s@D&Mc`rY_=a6L<9nl$4NhALIWdK3wtHl)&t7{67xBIi-DM~W0SWQg@MbNK#7(8;kEZx=f~`x?StiW#_Rfx7(aQYvpQlfJ zilXzFTnwIaf+b>nq7{R$-^mX6Z#)StVMy2ZuHEk=NnWpxPtUqaD$>1=DqUbB{u2F^ zXW2DnxY+dag2ZU~hmd?@wY5fp->otoDS0UPINx6CA%KrqU5rq3Ae#(3rapTjK)=N4 zAReVIS?#k*=rXH#ILY*;d|DR(IZ@(bn^_(Q3#Q8$AR&alKMgWnZo$9T&at7du8s`n z45>27hs)3B6GaEXzUp~CLBXg(*qnrVT>N`#7FL!!rK=n3Xp^MjSq^a9{%KQ@S47nl z+Pd&Bq=w-STI>?I_p(Yi`_2bCU0a}Xjn10nBO@bijq9rc9>Cbskca4=V*f?y;wxO3`m}c0fiE?1FDlpCrA7V2mDiO$Opd#5iw|j?+&?YM z_mb_U^Q+km3#w$91LYfK$N=ttaTBe$4q^T;XXvD)1}uQzn&0k2oHs~#QXE@%{=Ew} z&(UhB-0dNy0M#Bw7sa$fzjuSw6$ckyu9f@Y;sTBo2iQ$`bbOy&0YQ4KT2on_*f+^= zQ9|_VxE2(2&>h_G($e97P2??ajbiJfQuSsl*KjKPb@?$HhQ$v5E%>+MTgIjn;pM9H z$}gZcJ4SQNjCiu)bf~xt43z*|yHD%}R^WQ-vC$bx_5s8u4l{kOEsi-~Z%(n-i9mn? zPMU^;L##n_t<%MYpw=Zy^1cCpB=5Y@#^s=b0yRDrQP<gFQd4@vBsVPk``2ERk-xjL{$0^G5Xb-e4Q%1VnOBtVjuSxg8-V~;8UD+^7Ht>$@s?ZqbHLLvDLe5a4 zQ1YnX%@`|JT~t-YUr1Fda(ZgtnA*^OcvUmbO41WYfF2l?C=Rl4ft8d1%`TAAn2KVA zahqbKdZ&>jn-39bq1sit*^Z%lwQtmh=At$1F3ZdHt4GLOi?FpwZtkswsJE~QK;!Be zquv8I564cKvFaQ79#A82yjXWp&}(v^z#IuINR3NupUDiPQ?rx=iiSLH+)7D;zsHf` zwBQG@kd1*zZpg_rANG+a!^eMvD$*20ycWP`TRKedxm9VKvMA(Pdwrq^!qWT&8@;H1Kni&Hj>O^?U;1NJw1++G~t zaefQ?B@R5EIKNWBtbXD|MP#JWV2s5H{;DxYdIfjw973$Rt*&9e19QB841ct;^6@UW zc-+}$YW2&n3wRjP9~M?e50XkfBO)cV8h6#0kV#8ptikwaIvBd3GJ!@}PYR`*@}Cua zIWjW+$SQdZv>XIYq73u8{-@-?lLHM46KmO8w44KU0e3dy!{3pW>>|22yId+$13?!^ z-vRFIjWK~M;HBJV*bkj!3yvR>wY~| zsVjo+){fKAhO0I)hg~KNa1}GDkBv+jU~UJ4hQ~2G4)%Y@M6FgFi?2^(ugs+BYt=a| z%L5-tNDNL-bYxhB?!Nc|Tk+e0*s-FIF67S8+7i#D=u<<8IgSBLRB`cRzWNiG(+d+Kt$t||jhB{^Qg`+9?#_t17_Nu79t~h+ zMbeAn$t_ZAKsN+0ITKEz_@7lhDJLq%y_etBGm0b#`;UZ%&lyaG6V$DG_q*aw-^qgs z41#{N^EYRmR@K{$3cW@UWlp3>z`$bFLq%i%%$~T9rj0kWm!-v~P@8j!^0`2AR*he;BOz5t{}<;Q8u+PJvLS`)2b^Sy1%hgbB$2GTzTy1tf@ zbcJMQs#IV!6}QOl>})f)qk3sur-(@x3JTTztCTaYWcEt}15YYB{M~IVJy)8I#A++o zhFREDf6R)wHDKcRtRg9`u&j03`01Wn@V(ug9{mzn4n5U=z5Mv$W__>X`asYl>e_j5 zNa@@*jS!`@p%kngD*OH+W6@RQ9ce)XGyU{7EcnVg($LXCWLe?#@Gyc{KMHK=61xNg z!}uiD3_}4p`A;`EMvc^sd)I@q9je!9oqnZel*_lwc>FV)ZLv={PPBbWQlURkMZQ)J z`pN*4g1e%C(*Xv&$IdS++p}x0Nvv`DBIDV_>Ig=-It=lP=^@TkoQ0SR-S_( zX5*(DDqlKJ`2B+)GTSlwB>0vvhB|>kvqx7~c(z{fjKrY;pWF@c)`g-IO6{X8M}DKt zYj&mee+g$8cuKJX50Ukk+(%(yVIb=`hJ$MQjkiE=+G_EDr6xT+y>y%pIBancoJ|b% z?SA{{+c{VimpwDYl}7SUILIUoOYXph=Q(+4efSW$e5AE_!eR{`_uT`0F5}*=aH(K; zixU=b?~ly>=ht^SMnEvMhctC?a1h9;Ye0#VsFmzJF9Z5;ctqqt$+?oxMIUn8ODCX) zt``(iGpUM*km1kc*x-`uy#%1-8wOIQ6Q6vUY0$QzNJn*aEKjnu#4;2h_Ixn6>B5Wj zh_?BX6dg@Hbet$PamSNQ@%Ki;HCmKpu{^bCOF$aTZ z<8d1hD8RT8jz`U&CEH?jso0SA?G9iIPrzRA_o&=*=rVeH}u0^`CqHBl8f%FevcFtl)R zvK?Bzi{NZuk3c>xEV_S~ZO1L_Ae@E${IZajPGRGl`@gO|NK~Bti5$2C{7&uP_vMsm zpCR7%gVKQaaRc8r=1^T%8&u0?sW7*82?X7-p%DiLHl9j{Wy;+E1QjHUH=u!dK$SOA z{?j-EPC^OS^LTc&%SlY?2;R@p8;{h$y(fZpr8IJ=dYAxXV>SDkD5J@P|A5~vl z&#DK2c3d23)(#W8A1HUxf--f9T&B*Tsq=YoNMSSOl70#l>i3(&{)uY*4p!Mh6nKK(zep zfM^;xp$Iy!cI>;^sAY!z9NKx7`X~?D9aGPjRGFef;o$47%XX-MC#>=5rx?i&o}n&> zCuekJF!Na$9i}qu?CVRb$Gwd6)kv;5600u^x1jq?--RBL``xwAWkfsAw>^}wcRW1J zjh8XETz5nOLA|aHI`o{}UXFQ3o}P*aFLZb<#vf5^{Z8I;E7av(0b+^^AR)P|)|R7O zx+zana{_U~ZM{F+uR%*f0%4B}TJK%sEwFeq{>rjtW8lXhqzx@3 z>$k`A~6e}adf0;34@Pgj;38@XLAUQ&ITkpqc??KY=EjHn_B0+@E+()OpMr(1oE zeX7``4S}9k#;2ESEdbpnnyhXzp-UWmvKB<-v!0jKgLnJy0r;=^>d24CGZxk6>({1{R=!}~ zF4j@xnHim3-i;+2o1Gn$cSE03tUmuTa5wE;ev%^OQy^+z{JU?n;Q#MtJ)62hMj$PI ztJV(!koV7Q^);b->kR8&=szaW`=UZO6U0u}bbh<{tjQZ?0hHJ%S; zpWcogl?CP#urDUppuHEoXurt#`<}kc8Wf@05s_)SeJd-$Vqcy578DR&cjIiNNxS8y zt$k#pB8`L*JexC`EwuT3;@swCw{3AecgF<`Ou3L5)_{a|ZU63IssurvP!K8P7gr(5 za=XJx&*YrzBM7S8{4g&&>Pg;a$#8}F$R!Y1+?NXIPD4ZGx5x)aC-cX{y5rN!BM|SP zQUMG8iD{aEV_7wlT~~z{N~7>?VJ}!8BAz|4C&m11Mu?xkuKT>+CfRxqrMVKabE}rH zGk=<=Y-;kj!#5PQ46-iQUEMFU)&jUkIk~zGefOsQ7bU9h3N_0^G4Z}Fs{gvVrro&u z|3?d;CNoY#<)41o@6ZLx`3uy8NH4Fw;>z^b9)3(N4taP1kg zac{C^7jD?h!}58)uJFli_j%K5B%3fn*@?y^II7ozfG4(+CbImKUAM`>$)-%dvm%K> zFXNkBY2xfA7?v{>+BBVUff2yR+dH~(((b2qz;#-BBa-sO{NdKTdY(bAl~VBSc5gnf z*Jy+jKU>PRR@@~*?bgh}*4Av>liG%wlQ=vPlYeIfUAypq zJEGuCL}RnXv?r3P0|(4D)9OU|$+3Pm^*cvz3DG9MM*IuF>w+^R3sH@x@t} zhogI%gdHgJ`H6*Mu8V^dM`24B9mCj-f`+b8C6tiRjhP@6g`AfycAD<^(%(C5jlTZU zI&GR-tK)@oB*A2MPGyn~d%ADROAC}Uxn158x=p>N-iY-geYS!C-~#J%4wU_agFvyq zC&<{#rvPcVRt#ZSU+9)nCRkzp&Ioy#j?j2LqCe<{utG{IWK}O~N|5DWh92IO8`-nt zpbD=9ge5&sZDCk~W&CF67Af`nE4RxnvVa-r9S{k)pP)bDPAHBY!jW3!xq-IM(f*v01>9gh7d zre@q+G$PJEB7P=Azg6D^h+3SOmfl9qsGI0#Pe*U0}Q_1#xti0yLa& zTGzc-XF0PMk+Ngp;o;$)&#alT;+Pb9yOEhYxqoxInv{~_cCyqMtaLMe$n1}U5QsAr zKF?P+%9aPU3sOQ*!YoTM*mwVo%01tU@H+`rj0_Ers)Q@_)YWUGW|6JF<4nM+$;(Lv z;s&OER-V>L5EB>A-iZ5WLQZ#c=UHQIZJ}UbKssepEJ#aB%c|8>WYxrl{A>l)cKdt^ zWHF4j<(CteOauR0{hu;2HMXm7Ns!MWGFX2LF_MsUCMTL|{kGN15iJht@C9bmPCF)c zb_xz}XYrLMO0Z(APeZQamcCp$ViPQ5melYQpumE~oBbkded{g#&n z{Ir6#ifZ+b!DPkql#7W#p z7r+fOMIQq_=Tj~us=(@+WR!kXv0c)iuwSFcMAS$3O$BCWe|)YL@?f3=6Y#av)v<~6 zbi{;LjD3kA`qSUR<6d4~>S}b7{9db(cFkmql`K)z`1JXcy@N%ltZe1l?}mn7{c?>A z;IM7bRWtuI0XY4iA>r1$ySKXi^K03R7ePz12pk^0tK0Pgd&X#6y!9KL)-{`ahQ8|M@X%-90^^v3S;Y#v{!q;lJFw zFwFln(o<|)+`4%yYW3Z(W1|1(dtfXZVkbR7pwy+>5u7bV(JUgXG-7 z!-E$d0=)Xbtiy4u0f;=o#yKo3)f#L410#Rhm6U3{i2s)tcqJw+tz`C45kMh66@~!o z_J0h?s4Ktn^Ve59e|TeZech(`U;o~qv!mn9KjrA(A45m<|GzBC`qigy=1kZ*xyPtW z+uPgw`{rUOxWOSIo$cTt2)ZTySBXb33WR(l1IcG^(ZvxL^W@`jX@O#ki2O!=N3X2CDonSIE42tLMg@FN>f z+u~ZDKxJ+ATT?T$*(s|{aaC1SUGIC9`+)+vj5XFoo)hPl<2`-r`6nl2SLt94!6&=r#BMlN~^P4w6J2s$WrWEcu8OQ%kPE1M*6VlRpY#Hf=F=Rd8 z%Z=i@s1r|)7hnHRU&A(M+xa>)g&-w##>P`4d<*D{d&x!?92vU4u5Y^wV62XS*ofTT zHlYT)G9dP`Fn(6Qor@6$ITLvJFviv=(Bbg`1ci%=iuS$&*ZMyTtX*j-)2oJ>0p)*P z>XQ$^(9f2ir=p^A!BQ4Q&h|xH`(4n&-JRk+BAxxP0wIb#1`=A9e@tA65b8 z<1-}W-TJl;uM0T1gCyI3?lZ{B`N>|inEt8w`@v~V4B(#vPU3f!i9>1?qLqb>ZVMMd z#M+nR!pNjw`+i;h9(!36XBeZQrInGB%OsKg!w+sCP@$`!uBmx&vj1;h_70W%e_a|@ zP~EXchKEPg7Zs5R2NppgHc{4h{~C4Ef479|;v&&{z(ZR7QUDcdipOJa6jK-fy;~z7 z2fIasxN|&a0Qg@9f0X#|4-3Yz%WHdkQ@*7_LCUm;s^1Z$RbHv^Jthc#g zbjs^=Fn4YQ62J*pNLng1++3_xfSH!Z-P@b6w`2V53|L)BBe_U;>4v__XlZDir*qTx=mQG+ zY4^AMYbtJW;m-t&VN(R~D{iTUg(ELdF8etm4~WoFV!{~L)&AU-y>YX}tb@gtjMa(OQ; zH^~rvNAlAR?~4A_y0x=oYMe|QRHk~kx2Fzp6D~v|YNF8c(z23LQog1v+}zWPvjui_ zJH}>tdGj7@SI}2pJs*J9@DnZfO+qg%Y$51qC@23!dFDtwxTTrcV|bqKKyMp01^DOc>S~SJPT?x~RT8w$PtW>cq`1@Q zb4zR9(S7zpSPa*cHB+mHu^;={Q98ka#=CU8EkyT+mDM`ALseF;yyhISj*63t_kC^N z))vlfxMf#>g#kbooic~K4~0`)mywl{OHEG}xnEtJHES4LgHYD|LdrM2+;%ZBaTR_Q z6BDxoO&=GBu9A?@z#}6ozqv5A{jA+!BvqwZNxQ_B%@JmcWgGFFm6oQYsU6OO?^E19 zyXN5)6%oXUDrQpe`?OF3&+R9bnf%SCP?n+jC!qV5=U}_qM-glu=>1)(~6vNfyV(s8T zrAYrFJoS>RyG46ZQ6YNHn@)&K{h^NUwkq7=9*fhM#sL~%b##p+kKQg(<~Buc5X{1R z>SDysk+dag()6RLbau^=Yv9*Ddt+k1)>i+nUhMKOcaRsAy zNH9SX^Xq=>4T2hXzvoSjnJ2$|IjPVWAzI=bloiE=rID;!$50cY1!Ay$08>47ixDu>$xYZ*x^HVkXe=&BE+~!ljFO-#e7-ajnazw zb}TdhR6j?!KE4gCVBV?eRi#V&FMy0eK$ZVe8|+8+$K`QU$3J}fX?R#h7}cMZje;9? z)%WA1g7N|ji(D3e6xVw>yLeFt9JdvN+TaA@yUaSnF{nC$|@}I+4wy4 z8Y+|InqiZ|7zO^c`5!G{x0Zw=BnjJhbdDB-y+2sHyp@NKk2H8@@CPLH)K!qc1u*GZ zZqE@#_totk`NeU?g`_e9uj^wd?JADi4njHnpy_F)c`6>b=QX@?&oPiMn^$&Q`_KW$T(^0 z*hu-iWr_Z7aA|U~s<1CoR1P9bd3v7DeCii@N?!Dk(T{3rafcpU3#21q6}NM*GF4BL zIonyAr71NiA)fD*8Evz;f6{;a_)N(NYr16PWGOf<_*?tp;(j+vdIoL1v9ZzjNn;>_ zBNYB#b8D+EKIuT3H6E6$Q}5+3O}*;Wzc$nM1GQkGH}%8R9f$$RFwZN_i0?EE0(~LI z;@Xn2U3hNy86>NsTb!Q*PfL6m6$5TW`s3vBm7-8!@3|DE;Dq4j`a$*?o|Kd{N7fcH z(hbK_vyM@FDjYT6XFrIszP|qPMa6{S!_wAk=jrRpC_TZ_*tFU5dupOtQRAwC}UNL}?TZaQLFC(LmwY|H&q33@l zhc9RmoFsXtaHrV(zLLq)ULr@?rmVrMK(3wqM5v^McKd2=JbL-$xB76yrATynO^vaQ zw@o8QDMszf8nWQ}qliR`yuZC83l%w^(?-L`K9n$V?!d3_2bt4lshv??W*A$Hv}%X7 zNxy`{ln!kV{>~Q8KNB=H7gjR^cpEiZoXUou}mHQ zWAEG9!naG}1~mH8x8r2Gku$|$G2u4f(7C9_E$12+VV4i1>O{$4MRuT4va z{YCu(g5Eo3t7q*mTk@hJ0~iDcw1pV!#k6>Z13~0XNzNz^XC2=23@8PHqXO})>Ig%* zp1_Aq#qs6Z_j@r+th2v=w(?~z$mEooHx?RiOV3;&qb}u8wSHbpe2Z|9m7${plVRlTteQ_U9$wh=QC|^?l$EwC0NGdmSFD>l zURxxf+gx3J8x9ZCny{2;qe^OtZWJLvQ~N<~8Ouj$umAJla1ja%FNz@e8?m#HFBCQLMG($ zS&u#4McjEKCaS4p=}_gk^-Xhk`gG*-R=I#haX_VE3xUV=)a{^f+pK1(|)KYbD>7dL78m zs>#>UjaO4Q(9rfI!uIq;OY@D6;;Tih55ty)6bArYW3q$Bn_bXsws0)gBkcU#wZM*w ziW-A)JTUa|;L)QAO$i42^V}L1-bp70mo`59of~!d*E{8-<=LH`1iUUYQ}_}R>cIpp zw_c|Y&+<<(tM$V1B7uP_@A>KZy~b9S>ur}&F%(kkVPpO@eWB>9y zueP>Uc9rRBDrlie{Ea5J9UrJw6`dgtx;9m+sYm`w&?<|L27QgT42G&S>ZOwy1TTjtljrKJ(+&(td>0mY6=V~VT$OomPnXGRpqw9g z$`1Zw#5{*3Sx!4D;_UAOjy{?uCwYNfmda4>yJ!N9O_Rdu{)MhiNND3q=ffKvuMqo! za$UKfFO+dfu7_{TB_Nfhjmwdo5;~BrvZF<6Q4F-#_iuB~6-M5AQpf8Tve3^~DLL=C zRAg69FXGWVD+6#^v8{iNS#*BFu{Ut;BMwMU*A%kq<4uaw(lEq&K)&5uSg_n2?P+0b zL!6&3_9xZhM|Z9-*FAnaHDgRk2wz`QH*k>R>yAsCNPTHyjp)Pg_V7_v#ZjLKEvOD5 z&D-GUOv!9?T~Arh1YBf-LlK?ZB6N8e`C2|A1fx{SRrktm{n8_ey%`-29IEdL^b5=Y;+{6!4M<%h7DHr}CZit%;l z^(7-6fcfq(+tpn!2-sWRc=_tI*zG@DA3iipOEW(21z=@*^zp7T_>2skuTFHSNW0@=+UCBofCD$s1>R~} z4Y9VxaQYC>bl)6UaQ~f~Djm~?D@(#|m(PG7GfMkI>qt|B)MtD#VIhkVqoAf&k-3de zNVtD|EbI!J${08~#jVM^?Ao5E*H-qujmR#Nx*Sha*E!wXc5O16N<`SI3+mOx8irwE zX^}NmG)UTmo3C$`chG*n*+^TgRWu6?g)<52s9|_|O7l^bwS2#CdvkrQQ8pv*^>7+} zfSIP{@Fmu2DmZ$i_KX&6{^-%=8p^iA_9LBi_ z1EHKk`mUE-ji6>-j0>*9if-K0%5^8HV8q450a7oz{ql;-dT9K1(ev_#z&{Ed4b3h> z?6`zUP>*sNrEq#yT~!W=92S}Ix(2gKyULlWMhFt8xgd*&q~@c}cN=rX#JYptzuoZH zQTYKiW(qOFk?6BrTd0a9f5jISgHWqvpWu3RCZT9`3&j9lLno^dL*Satzj%9kW}J?( z*h1p*!`7}5JnFLQ4=3|)Q*lP0elRxs_q@a-PtPACkuw?@C0!x;B1UJS`Xs0{qaJS; z)07>Iq4=oaeD%6`!`SZ9em+1I2|LzPKE>&Vv-MU6qXpE$q_o7lvEL1w2_*bvmuj}( zoLPN7UbS7Vo147ISaf-Rk6wg#Trz9Z?;tD`y_H$csMj9VC?hWq7BER4O%1fdlc|_r zV||2N19?#u0q?zmbcrW|VkE`K-5|}JVhh2UHQj}49vdQ04^=9#$6QF~(66t2y^_zW zRsZ-eof;|~YE>trOlpMkGQB)U_T}_8V0Sb_dXeo{PG<>Te=AlTJ-c@U?#3n8_*Q_qPd- zKAU_k7H}{m$F01-(Vv-Kre~#VD7kIz1fjSd!`>K1yx`>47@Fs3ywFAdT+)!(rq5lt z$`>qT{K9fF^0Fm6)fb6MUUP4rZ@*v+j%Zjphk%(!m`SrXgZ~dC%Q6*?YBt-S(9Dj) zI}=H`8uKWIn3?OVJoT!sxO${~#xVT-c9*5MQ({aKa{U*q0^X7r4h#IbuXIwLrrKBgg(>`rI^+-ww(?strNAucR zHTkdf)0sXDT?0els+bRiGo|@Yh51__*xMak3Wg)***%%K#~ZKM@(*c z8V~Z`-mA>b-xhCU3)jj|=XaEo)ob$9pkRa)>68G1o@o3#PWs??{FhU4!7_+Qh*6OX zAW~tPC?FlI{>40`fNl+(LO#Zo^(6bN+9%0(4;gSUt*f`;{ecl;6F0q^sy_Ifn#@M| z)kK+^0}bbWlDvF4!>o|4d7vv%mm`p$lB6pi`B5n;BM4fH*H2`mC!XMKzx_6CR}WkT z?B%jwTRq~OC)4yu5`NhHaY-~Qe)G&Xd$HpD?^xF-t*b)6swZU@)9%)Dt<&2X3ry71 zSPnKeYMknsJ+<*Mct@14!OZugj-uT9EL-YD6waWK>XPNcM3<3o$k#X|wPdg^9*4!K z3JbHn@9ea&UCaP5*TW6PwwGGl{w)({Io0SthVKXJo3G932|z&A{eQH8ymn))GI$C! zhKC^J>5uiat0lje*Be~g4Ib+(aKvvAoZOCk9a>j|#GNDQYX}R78h@`ogqLa#RpLFj z8k2SiqZu6G`1i-OU}*Ne&_d}bH!#(#z&(bm%py%27`-{j?Ao3z?%kG!d~{yRmeM@J z^ekf)z(P&QQ&)F&wl_HK?!tG&F0_eOp;S4+Z?}`7B=45@n9PGu!|eu7uvlIftSri+ z;_`)@Lo04>3XQ|?8ugb@kKumIuXw|Qwl#hW!z)*erCRU`NJ>MD2gTeH* zyE`V{#PvSU?8TyU1Of_aqr>$=C*0F-1)O3V0NHO6r995K55$k-@#9vmc0B?F1RCXPx9U0fET!fu@{DuyO zEv_bGU{GC-x{sh|urlk2DW_iO?xC*>Ev(R!(OqeA(z0@YdlA#Nb(iEVpI1b4TGS*1 z?H)$LX?tbuy`sdInwVK$JRC2*FXVJ7K&PqGAF$M@Rqxp6tU>v!Aa8(jcCIV1*VIcd zQpB>f!X>**j7j6_wq-Zt0+;jT+d-C^mYmP)8}F^;3c>4*L(#2wNW>eH*pHt)BbS zBGXsOSP*ZE-Mq^z-Y0Vu)Xg}jCtR$R78irctBF@95T~gM$sCt5{XC>~A5nLyc)ago zwMuzFVgGaId-}_bk2i0>n%C>2pzGt} zDkb0h9gfPnoz{f0$kB2IUazw9Vr7+ojrF6W3?5reRng0a@MRk$T{)U5L#Eqp%DI^B zU5l*hT-HHm;oqNHT1Lwmw8R3Bg7Zo|@_Le*WXA;wYw%U%S=nl_nk-g^HJwHxN-|4} zvjjXcpMOjm0oDVz(FaV-qrYOlS9Hl9i%#_6Xin}6Ugr+h78VxXy5$8W0GZ7#$j-h!7xSlJ zG~I~I=%1{GINgeDvHS2eiR^PW0Sqd5uXj)eD)TteWU7i^eZoKFi-)Rux?Gv!5tVlNw=x#;!kh2HuVFuF4Z|0N^Qdq_#WP8KS!r;3%p=MuZgsbw z;w6l2v*pYwyoR^+DQPj>$a!6TeO@NkyY@SMRnXO%eL1I8(GGI|JT^KQ`^;BT=LIyn zN3n=Me#H`s*#(`X7B+>a@9)w6;7@;JX)&c(KTgrLy`>cu%{*rO*q_wyTv|G&jtbUZ z?Wi*EXXZ2&_A!c??gmE#c`=`?h#H(ih75RkfY6HzFe4s@(ttRfYZQ(sbO%cP=eK1C z5zfvxLV`7F6|4WU9%i$#5Gzv9j<$F-L)X={#a#@F1W4k-Mw7ro+#d%zOjF&%YvX6rmYiEd_nwfVf>WHCo)`Y< z-as;iUX3?!c2-^ebEBDhA)t|vnMmk~kGVby>S1AykJ`TF)n)&k=4i124 zXO)-WS-?4)oRnt7!f)uIY{)`4S)aPw>RdYQ$GEu(kHw-T)}$_b@wgG3jG-P@FKJ?< zTh3Q&yV}IhwdN*~qoBsz>~$FV^SkP`*kWpfo!ZxWJiM#Nh%xHUrN#2-g9;Vrh~{2Z z-5fdjW+J|Bw{cn@mFICZaG13=J>21N_-ZFXWc82%4hysVw@pA{S}PDKNfLIEk9wgP z<9{tpFDzYfKbre1-X_|UNPp@**6iTuD0sE5m+o(yUovX%eAWY`*U5Q_oyjRF^!dGS*m6E5u1oet^5#4 zq*J4aG5(h@`{TA#WBH4KgFZ5$0RA-T6hJ3hR4xb>X`6~8J8!Kwf##fN)fp)R7Kd8>;(+m%06f{H8p_^L|<>8y|_QjdmE#ROFlPte|T_I zNpc<{FS&*}kNS!T{rK>p;zzYwZl$oynSyBpIi-eAgk^Tl@zBYc=K~MB>iy*l+RC27 z$d4d;>o}!2hr(a>1xoGe(w180lJ>xh1*~i#n|&uUt8uwm`Q%hdiI`ZJ80kEYHpiz# zzei?mmvC_jdq-BvGkA@8rQbbHk=@g>$0ns&GCBduBWcF>mZ25?X3|(|5E!FpWbC>9 zT0NiXxq(fZJ(qR2Q92_65``M(U{pTXBdw;qsTu0+H#Zf|^iGZwgN19&6is8UNn zfCS}L>aH8?P!fJkRnZob4h5X9o2sOC?AI9@6tXNL$b5Vh;oZ>Uu6nLa_y-OSmTYO! zqlHRp4vzZb=FHmKkuB)_L0x}Bel`(a?O-&Od_#{1LX&{;}p3#->7-jAY*> z>|+)iS7aj6{9&E#rlzAevw&8Ql`GAZr#@Vd6veY{S{J@fNJ6?%HXr!OSSDRh!Yb^?9tdX* z;`j%Y4_9h;+yy3pVs9>WrOBe?U;{J;fCb-l~a0 zo|J@yj(qvh?4&aHqk@LpBS>|L638bw{Hf`^9m3nDG0SKiK zHbBe%rmfv}wO1hAaus=9L+vwCXVYl-bB}gQzpqae=oYj5YuJ+pB3)kXg`XfvCQ;Ct z!U;Zmg@?mjfsR~RGm903pVcTT_rE6|herpu)G_DU)TlVE+kR!R+S372bNl@Ht_!j0 z*==t|PcN-1?2GJcH@znmXxf!!4yiOw)cjNlR<6YcG)zo%7lMq*#@&ey#G_0-$Zy7j zq@)m&TCy{2G|!WPr~yUT21<(NUEz0^_dITGEX=F}2lM@9i9h0x z4|_Ry+}0wach~-DH<`STmCw3HKm14ELMkE83rr*=uwpMVpwUCr{U%h^u=&nA+|sm& z*RiovXUt{#1JwkI;dfJ$dWVE-tnzNdm(phYrO`>~1Q9)LeS|MsKf$+{8JUjL2TFX| znudA6T5g}n-)_G5q6i|gq4bW*BXV8SYNg?KxVxB}X?^PHN)(V>?Ji!pzdmZi4l;4` zbch#fwXUe_uQG@P34bk>v-(i(pv1@E?`}tBFX6DcN?ypVzG(LIy3r-`w7y#j_=x#@l(FqS`Ce3hYY zRn?`D+l1Y$(@K)=sH0vjI$B(N_UMkvg|I-4}ZVmbPu<)@@7v7BQ+O9)tiC@d3)gn{kt$&Br-rzTZk&bz#q3Y_|LLz3ark%+uzQ%LZ%hN#tT<%NPsw%7M7m*?qpWrp5+g3naR z;b=O&_iQ3$fnj>AJS!A|pLa*Ie)WRmJ<@br{@%iYTntq>hNOSd;r)MPM${ACcVN)EBubVCoTsm;I zqETzjml2XbO%U8NHN?2?^FGOY=%*nz7SEndd2dN+Pew|majgCq`eN2v#rYb09s63NkQ#$Kbl1f2@o0JG=10WFkM$1V7+W9gF zyDVCa`}tJmOX=#g%{L6NOreULEQapxQZ&UmI*M^7rAsYpI}5Mbw^yyF7Zz&SsW0BD zwCN*H{ZROD2|2Rp%I=*y4#CRU;P{rpC9>;vW^0?N`kfv+EqMs8nc@PRE2GI{MhnWVs95jT*QEGt;sz)3)Myu|&pqKO1>~ou-SaS0C@F zI^rU6oZR+DipyCaYU^2HD{1bM`89phVT#TK0F5O@rP{Q^GvGX9UQssO)YU~#qS<&k zEe4*CU`O^~W+0tmfGH?OFxkhC5U-8UjwWc{QS5#AY=6-~aQi#?X|>edaYzU?gk3r< zPj%~ExvaWx3f<1&;Jlp#e5w03W#wE5&RDoq3baAi!bVS6R(1|?#$!jEG>r5R707Of zkAZZ_A_#LjaOr+!SCd6bP1SL8FpH&*7Q27fC2uGtB`Q^sQ9#qUg&7`GB=J#|M)kdW zd-i1~bwI#_s6^H8-vVY%dXxCyZDUT3%-DXeiYrJTa*pXpiTpv}dyjkSAL>l~B8uPw zE|T-<@Gx-GyL~@@VRn`1MpH{UoB+9DxTM6w{harm@B2uSPOZsV*8OO4l8jfx-`Xxz zz2CaC^P4HgWoA=e1#&1UIC1Hueq)>Dh!4 z*p|oU&?SKQKEQ&UFFOQ>f1G;iTevqn%kI8e`ufZxm9tVv5K=%tDnXnWhOh~@gYfv@ zo1M&S@BueRhkgv6(rL~GGIj>sD)n+7~EfRf`V1wZ6}|KEgs_tiRY1C2x@56a>Atam+9Zj@fGIf zo03E+uxhahL0X0Y2mZ9bhkvl6^@)a?`_`2b0?KUDFIpQc}{* z9Ve;2^mOeocfP{hqNXaHf!L4`IPr|^+{WDM>JN+NwS=HBFHb%w>g?=Hn41Il5b%pj zLOC`IeCe;ltEy}t78X$Z2w%OtjQ`hxRxu@_nfUHMFY>=%WzoK$MZNUp|L4ef^Z)&4 z=<)x0f&Y90;A=)65_te?b6s5>pxYml6Xp_je_UG+B%z{!Db1x#&e8-EQ>D&QP+%ZK z0#`WW;Bd)?G+$L@FTVjuR&{sR6iigV_2XSB-P71+gi(DN@?gj zIza%qV{5IaqO!8ZoSZ>C2P5PB+}PaGM2DOenWp2>H}Fv|IBZOtmFtL#PUlK-c?MpE z4L97m5NA-;L~lg*bl$>Zf_R{=ZqWPNKg=RaELs?Wng$hj-bC|~d5?o6Gc%5ECI}ve zq2J@_fcI`#c>8SW*f~uF@$B6C`e0c<{?J6SC^(m?CF+-akVXnLyC$q1CN({=iVb8Pq0Hni0^!qrKUzk%JP}$t10T6swa1>eWywcpx{ETrwn&IOzHXz&K}t; z(~Qk6pq6?i*Eya>xi||UIW4uw`vVXnQJLG!NO5<6bGOpE-ITR;ejz!|sJU=f^_2X1 zKb+^(#pBNd8SlJ_NE3;IiV9GY$E0Jo zNq+IB8^e)pR$(CGB$lRWvr~M6zJ&i0&juX^WU#DgQAu)Do!{Y zUsO^uW+Lr=u@y>{<7{FV1}`|sZcmuS?$-FMv`LfiKiywCQ0dym7vh(@y-BB2B85ggPqGN z=Kca89S*2mLeBG53*7ANlec*YW<`O4;DY;+pK8%}m|Fh%pt;%2TcE@EEmiee1#l3Q z)x6rzpOwQWAP6t5%gmG??h}z7>FeuGqz%LEOq@+D{y#yTATW{|c zli{JEwt`P%^V22LD}GjA%vnLkGwk8lRX*-WZM?lf_exKfaFwi7m+(cN_@*nI7Lio#5*0W$kS1<*wR_Ndbwi?xQ+b z&cxm9#)ptYJwhUJak(M!?Z+S)^#m}|m<&`64GklNhuGR*u9Do)VQl6XV7e03oM2$@ z&Zh1D$QKnAr63a$J_OtvyY^QfQnGKr*;2{Kq`RRbEG#Sw_g(jaE+NG?+w_JL6uX^? z64}{g6rWIOWAk@^+~+-lnYs8(755Fdw*~ylhmXLjS+3&l?yeLI{O9mHgkr;>Z;e~9 zHWdYN$zeiG;yM}n#>UQz9LvjN^^3zjXScUbsnXg5e^Lpst2ew)tb8tE<9MC=shj7C zsus`qG;az3<;b3IQ2A}REwadiBzFQk^63cRr&f#3Qh8OA0H(9boiKN>wX`Cm|sSdnx&ex0839jTS3PWP)&4FRlqG``7`N zvFS0-38Woepu_j+wYSu-%x*R^cvADi)L@u&3yO;uQnJ>(G9(ZS>Fi|aQNfHlTdB36FQBLs zTW+?wK2LjYe|X5j8RW#HFc23P^Vty_Q`S^XOpOd{&^ZSoKz)G){bJFcd4s>-b>m;T znTd*8`Q_$Gg)(&gekVW~M0SaZ5UmPEvJ9R&H4`g1dhlX5i;;o9#V1*ij1Rec3yo+0 z-O-TWmw^k?!f8KgOHf{(2_Q>KkUDi>5Zc?{pvRD873{^15cN7#a>#GX>iL_dQqKDr z45CHvB>Y9p6fQdh;~!<{!(;$oSIK~hzS=K>Ptgv4WZy58ne^Cm$o=?bUe+yx z*gG^>e__OjuWHHzHMe^51?x>Ygk9Kbd|SSEh>Fn96UgB= z(c*U%u(=M_)+p^1?4Msc5&Ud}XCA>T2G2aVi6H-vv~)Cr20&$C#CTo0;BaJbcl{R= z_DLazpSII7inxx1Kt^U@fss*0XJ%^U9QOk(IQ_bAfLQz{z}}DHf-k{lTJ#aOyjA+M}UpaT-45O{!o+73H!kpQ8<6C zT7-UG_%Vq2q5oH08^NF1?Uc_oBsYZ~wCk(0QfOk}&SC6sV34zxKpTxu*(b_Av=vri z^d4$h-X~u6kWW#bj>G|0DYyb^id1npE{;4wNAmI-=VISgZ%ddq&^CWDwfyunWuZ1b zIqsZx&H&9DWoMG<*(z7+{?1Ua9jf$AovTKAw3k~GabRY z9}JxTX#p=)pRg)hpSU1FI{<`M$|e1r*Ur=KXI8bau0ESfLIa`ZYG;JpnuC&uOUQ5&$9B)wiA!6U`CcWzEj&d$bjw4pxE ztSD^mY!wV{otyxy4?LBeun1xN?n_>ospEe(O^1`!{@mE;qK=9RW(mEp#6CL?PNY|s zJ!HAaD#}*&tr0{KW1NdNK);lhmIinG4Klx*Mt9wp+aWWGs(oXJ4#UpYHZiMza?j!e z-cg%nB4KBsnoI|L((9IQ)%YC9CP6W3jEsz&N45=1=7lWC)IG|9*I%LJd|6J(7vj^2y6LJgXlA6hNz{K3LfZRxf8 z>a+Vr?*O?pE*%V5skJAgdPFLBqFN-FT?7FE393fa^^J*%2?i!QI-ZjOt5ITi+B8D~ zeC&KM0W>$yR;Ea($HT#~XUAg~Fk>C*2e$xUsF~isI+=N^(u$Om{0FO^k7qW0)_q&n z>0EsLnEODZ+5yk{euBZct<;HKJS;qZ1~13t6QA**6LiSl*T>7v^09f2L?C>x8m=$U z@;Zd{mypWN=n0gVf~(w`XsPo!$C9`-w+(;0JbBoFH5~cJeugI4eg^f|$cBO!qYhhj zKi7K>Q+EkY)G?7NItR+hV$`V3SMpJ-5Z1;&mRjA6ztu7nXgIO6x9^JQvMIB6G7k%X zA;kx%-O;I0$6x=4pI`UE!NL;chyc&Aov#0jpU=bXo%n{Km3Q3L)xFNuRR{)2^9!FZ zK0}&-Z0%o$z{ z$+3tPd6kN1&F4_nf@JfrqFDSAdbQkdItZQyT5qWN_`an37toBy=Dj5~vRv80!UY@F zJGFv?U=$k=&?j|;5&B>d#YmfAvf+bdCgV=P*4j0K6i$-kGRqIU2YdYd2-INy%1rv8 zzyhtfn2^x*F>oy=uaNv^-bF-t>Qm6a!reLRGO~%w^=8zc=b&JKurz4r))#d% z77O<_vhm+H+dt;C@R9OlwtV&SvgEM$O)lYgRo#yrrFZ44;6T2*1$eW*vhFo54k7{9 z_w(xy`K&1_Pk_8G@b35X%K?4W1pY@_6N_U(Ja{(GfF|8XDB%LA6wg6XSm|Z`$an6udh5G0AmfINsFM7P@kNf zSWw)|dZaD^x2b3Np54Zm+!@8@W|Yqfg~-yB_0Cmv?qk2FP)_t`;V=$akr-0MCw?iPomyl)8GsvxQLnHnWX$etusGO{$Ic zdozH1f8IDpaRD4kF~`A^2Tao3lvV6FzvA|zjR{QuarK}6L=kD+98FFYD)%vCA@C+6 z5LWySwt9f!F48kAV}Y zQ>YiHtgeuknqXpPA`d%Y2;1F_=Q%PYQ|K#*+dVrw+j}BnC0gE(a=1`S&O;OyO7HCn z^GXaq+Oz`ar)pc@grO|NG~R67uN1QZl_mMu2}5O(xH`3&HG5(qa0Z3-h@h)ZC*mn(8{ zR1_B?&PFAcJq{0vb&1Y0Xe(~KPj{hkmp>PMkf8Y~b4S#rq@R~{Z~TQ0S9Yy@=r*0{y2UaegE z-Mrnwd^^#tp+<30qS;t7qW&g>w|9Z|TGb~s44;FBDUO2Hq*Nmuz}T`>F+eC&sjpbA zo-+-w&%Y%~DIo6Tm#B_vwZ2SjnFT9_VwPlFoPSp72cXO6c{B-%T z1XoI5^^(SXe8`68^xloG_#_gTh_;U~$uNs2YA zBPbH>?Ce{Qn+a})RvuEMJ@yEuBox%sT#h)vd}69$^b580Kmsz*- zK?b)IB~u(@x5NHb%5cf3(2CRX{W2LjaO47%0(G;nOs^0F;rkP#Bhzx*M{)6Bcx07U zJ@SmY<{uN>m;_m}jT$T2>7Fna)eiPJPm{~#mJfgZF9KLmf2HE`&+Y#X$cv8leTswI zi8Rq^w>Y-M-i3ws-p${YNRoWg(|2}PUfg=gSRehM6r09L}Wc zBCifB&~M)ga&Vgr_jiWlEQ)_c@x`!=M(ooWA@s=K-r3pdQ(K>|A%m35gCzCr(z)Hz zy8V;h;orG!fTf2_9&i9bWtleUslC$gIciyvH|q4slJjM(XU`kpx=@YF_I1Dkrpk`S7J{BdesuSGoX3NUOK> z-JB3_FETgzo6?wl)AX;U3;$kNg2xxomV8JV!p$1KW4Xa7axU@KyU%9 zmI$O}MeQHiV(n-I3ytAgL{aR3w9A~YQyg^H-fKRI_9K6vgXGnwg$$Z@>Nw53OCPZE zAm5W#Tdwy@HBS{{pnR?LxEtgh2(;N5Ua-4%qgZ+Oo)6ub(P=kTQ;vV{JnU>4`y76* zE(s8K8& z%s#omu09Obx>Ify2a-g~`G;eM!NK0%yycqFtc^mg$A-01C@_nPi^UIW3n#Ke|{ERQ{PDGr)dB++xqeH{rA5t zlV7?PHI@U4*UxI~RoCQC3JV$=$*bposTEIidUl0muh?A=0~xO?(to#kZ6kJikuh$fAHf9z^QE!4|M4qKrqx#Gs2R z6|The#K*cWUtJ*_Af?;2=F8Dkkf^WyiiF?&xtKgZKaYFN2KE7hcmgGh!YB?>K^Gvp zAbMoqb9`+Y{}c!ebj3s7KTGf7e7ta@(iZedfy-=_93ji7hz`af|4{P*q3y; zpNNGwOP=M1f6!QCmX`eifuI0+;Dk1Xf9v8=id=oUR+ANn1*J0%^lhgt)#dL}r}=~Y zFyKJl9Ks@lo7wZop4z`m%6nkH5g9iFm&Z}b^U`*$M0KR zl@;AL@W=ApW^1n+ohJ1H`r=*3t}Vn(p|Se1AK!T3GD z9$7F9s{St}*H(jLm#s}bHWpr)rM|siai41}ehCN6Q`KubY9;J4(}wo1?E{*Yl# z&aX|eal&h%O)(%+=`@FHSe{j(CwnPP^TUCCTuvS+bovlzWCeI9d~Rpw7Hg1U-Xa4J{R6ajAbw%*gcew>}+rM0*mhN+~TIM>`Cc;ukz@vGrGRMw{}-k zYdmgmBZzosD3#(4rUm`G?d=pFT(+$kXfZx$cjqXU23lG1aWiLweBboWf&w zyK>FaAuG2Uz>HeE$LBwpLXni97rB!F<0@)@4*)~4xh*MuS4IrG*e*Dek?v)b_XC>>+^kM3%wOPp4QX2 zawp>ksSb`UHzy=ZiefFy;M z?wIaE8#Ydk-w&`@DJ$^&jgv~QP|#e56U`>F#NAx1YL2gMqIYB^cC=g#FrMB{vB8Gz z7(b2zLil3^^fq)IfQ?F@mf9;XzvkH`p@$rRb{Tmm>M_WUM|6SLC@S$6g;kpi6-kj; z%{L(Gk)!|}NvLQ6d=b9cs;YKgB-H-C|DUWoI$ew$&NBz`B{a-MR0=XP6T zHf7-kAhd0I`+)LTM?{D}aWduB>X=<%j6=Ep zytA|Olf@t_P(mz0o=^cv2a zF2ifGL$vcK#=P>KjlSlKy{NK1Fl@!#59sZ$!rs<%hWu;in-rmWn+h$VZx2Qm7m%c) zcUED@+rxwXcsO_{`#~_+fL?+}C>CSqiHBWT{~c}>*+dDo`^vr{xdJ~bCT4DCru6xj zv)GqV`Nnzvf`=j>np1wsX5lh$1`KJsc1RD5!P8)ffBTl7$Xhn}HW-aHL927f!qv4Y z{WFXrEi>HZdTIhT9u7YXu-kozTYW?81gOR>7x`8LvVwrb!UCvT#~0rqvDQcACB3J! zwGIr4YoO;{UqhZ3ussgq%HCqA&RzoqHxWt}#GU0$*OM{DwRIpU>#F|EH#C4xdB}rg zayXnly0;}Y_jxFx#VUaQZY7)E!luwP5PQbR@nN+E6Pfv#RWCqTcB3jgE6b<34Fba> zJg4AucVFMhz1ZF*#Jd48@e9#6oBXc#3TUZWtLqM%Z21w%$weM(CjmQj$oXOiL1SaG zodWleTzwl4OV1uVq)to7_f0t`q7Rtt|BXOZqps-yVj>%rI=#+GzeA@}$itWc*8KW{_N60+nZ>?f(Z_%j^@ z)1h^0-!jMY*5{Y`ViQ>|2r<@{4EZAeHQDVRfDg z7d`(n$kOD8o}yjJeWxUv7n4@jCx`snP5#d^k5cKs6XW@gK$yjDr{sgjt+GcB{T!WU z9VtbI0<^l4Y7uzHanuCHZDuLQg`CaTXD$xMv0rs^r7OkD{r-DSH2ga!fcgyima^|* zYvl1^#C>CbB^lm4uN_mMeelQPWZah7>gEyjBmhOLs2T%$?Djo8#l_?OtBMjgFmq z3Wu@`wIHLQ@-qp(=(c-k!QTHZ8{!Lu+Mz(m#JzruFR{0~J2Z4En1MKbU~&96TB8#% zv2iBZ{>cpooZC|)TuTop>88f3?L!lS@n$or?q|?Vb=lQ+j*joB+cZ$u-4)d^D?W6H z*WwupXVCelpCMrce`7)Ja3D&{_<)UV6%y*yoh2c@Q0p-A=qEJTEUe~sgurlCL z-CwW0`_cY7Iq6q%1CoWQ`)@589y+?|+;kL!-M2&Rg9=&O<{FPcpVd||`u(_=f`YQqGCJ?RO zmfrSirUD+(-$>ZS#j1}V1;=poe54hD_iP44qPi6>wd-zy0j-1iHCnq`{{XPVfaq8& zLTKr0TYlY|~@PRM<`W{;LUVsG> zP~nnNlKt90;eF)*J~!s)sdHjx;S#L9eR5(cAmIHwfd5fxdCeNYC1l`#C5>$qHlpzUX2BQ3NDEE_Kdy%Fp2>DA0I%`h>>`^_Y7O} znv5~7;wn)2g{Gis_j&-g)%5lyaVslich~1l2j=^IHVXnC6>mrEBf7A?h9Y&2&R#&> zBAp2l9^90Z-0`lJWVY~(u6_Zdv8^qH#e~(3RlfoWlN4{b#kq6L2fCHf$>`E*^-f4x zhW(nFtGoNP6;*()Pwjms2;>x?7U*0_bKmnhj)Fof*gdt{saM8eZ7Dfgj_iQk`YC!N zJJ9P%>NaEZUmm&n{vVJ0j+v_>KI!1RCXf%Kl7Iio30P%>*jQ=J-&pAe(nC?N>_{Sr zR^Vp5vY4D-E+0v1GBvT#GB1}w6o~?9#lp%ZlR=Vj0R6r6qBxwdC!wdG zIZ^G5*1Ej-wKp?wGNb4sxw&-wkN@=_P5its{blWk3ihN8E0Dk^Y-kUj*np%ZrFzpCcs|EQT8f}+ zVC+}LV9E)J=DbM?!1|I2P)44Ti0s&a(HiefhqR#U;4X{zZ}N)EGn7DuW>Xy~Uf0_! zu}N;b^>@aYewa82e#iUW!r;~n@;bD`?b{2C!$*gwmFY_IeC1CdKeco=+Fh~>ls^W< z=)zM69%`?F>VEE&@do2-klL?qcl#WLH?lF$Tm zlTfvExg)8^=eux7YL45B)K|ixwvOOl7CSu+t>M!0syGQ0YmTMM%RG+|rCAILV0rej zA*L$-h4rCg$6!6-yvEQFeb~4^_esC6xL>ZI+QPhINqZT8oXPs&+_}mhhdf@|_}K!F zpJ;r{^;k7pp;QHT1s`x!$G1MlHra0Not#9SidgCfo{;h6KiJie~M|ow0Dg$ZUP8A9)I%?X*N%7n~rU_r2ok1XF51vK?=ZvA9$jz=pU7 z6VjSaZeH8@)x_Lf0_D^ihXaCRT`F&qvsAM+y}>^QP(8z1by*f`Xx;fZazr0jE-pX_ z_>&NMdyA^9*Yv$;5&_qNI%fm9SlM~0`h}V()R`*kS?afzIs{9arFu1g;(_ZiciJCg z)wY-CccIsA3yQe17v=RHt!ugj_wed}Tydcwc#94;d@J5-G3d11wR0R`OlfP~SPtuW zf(qtQ9_^g?&HbmFw~m%ZH;dGm$vnk!mfNY^9&NRA+4JHrr1U4Hh^B8y9UK)mR7*SX z`Dd9*Yc7+t$uR@2=_*t8=a@3z;1|&afw6iF;-}oBeA)x#BXmH}T-x)TmS%(PH<>Tz zHauT5YH$@_XZMr1_4y>PfEWunTk`hSq!b;0|!0dn7588HcQ$&U1=-kuNb-x(94qKeqrPwl1R zY+M&_vDCuX4$AcP2z7j4N&d9{I4RE(!aq2nR%B26B>>*SlbeYNwa*%{aVa(u9~YC2 zk#T(&i;2ITqO<+yWiDy%YMG#{-zS0&?W*LzO(*X?UiI{JWoPBYqYiFR;Pj-NhqLUr zILD;P6x&xv{4I9@g^26wF)ay(o8TrcAqN0QDP&Gt+E~KhEOaJ)TL>ykp$sUrl$^g6Oc_eWTk#{yog40(>TtfCB8d&?#Ibs7AL@ zt@~kg)$EF~S5AwOV`D>Hy=3nxIq6*iqH&af{RlM|KC`Fj&R;zbv>^%~)iw~1c1mJY zyoyln@qKMADquz`GglBE+JgLrlf};rjcqCdI+6~9?z%_IIX9mmuDGeGDX@|me3(hPV? z9v;oK`X;OWE3h305WD|7GD3a(#EDfQg$}RoT&{s^pCScj`hOP}lL>?JwznYz0|Pt_7_Pn@q2OM=A5;JKnSCi-oV{`($z>;J{q@}bGz z-rn9{9nRG>b56ug@qQYeA3y6LXyM}M!+o+8yi$-9tKhL)hnA>vu$`V-L9Ge_^LZd* zHZC!}IK~1fP{IhflR^CLL{NYcx0sZa`&poFypgFf7(smXp&%jI_`BvEU#F(L0toU4 z*g~pWbISklztc2sy|`xJXkK}w!n=~m`{5xzoA>F%J4xKzj|f}8d|MZ>3c?FuA!cu z0@9c&B^8Z`xOh@R!Ve=;6f`;v9lk(QS518f`6J+mfL2|z}^4I0KhG=c*A7lE@EPC^sqYxO|2vaaCZ zCYsAxR_~Wrw)KN##qXr2de(=R8hmbiSn#J_t`#GJiiHo##--XirmpIyw*O^gIl4;& zGv-fD0tkbWL2`!K-QX5D5kTVd<7bEcS|!tb4i$L~4KfNEE=7Xi^72rEZzSL|Rt0Ou zUqDzLo9~DJc;0>nC(+30$W%?42#bNA*2NqHjxgQ=L;yQ4`4;UKi15rCS zJNsj2&qk?zV`gFD0t*9?((k-7LJp2^04pr#JlU@yqfEHHhj+iDQwt4+mX@-&H#QD( z59?U_3uH5m3PN52@%4|D`L}#v+laZ8y+IBwD=P->%J{sW@~s9h#-F$-2*BD4!{>&c{S`5vuUQm$SB#HU-O8&Z`bzj>MuG0rm~V!RAj1l^~dgb z33+*WsocWSR*&!BBP6*pd)mAqHC;D?S(9k{jJwu?O8eHZ1UT&PCKG__P28|HIxnXg z8C4Q@?Br~(xe``*};>k1|%FmzOnI*p| zWB+ccL_hPMnzgQ|igdz2TuKz50G9yo>;U^fu5gO8I7ZifnYga>he=l~Ff0J@Zg{xl z;epF_Q$nqK5DfM5K4{@7m1way@rM|tIFGojq{PMHet+G#^wih-3|uqmV!wcUBSyc& zYz3^5g1H5Qq({1Ms&Ym2YCgGiGrTRX8{+C#6_u5Y;}bbc=0!EI!q=<*bO7Sz!STKf*g$!ox6@pf_B9LLA5Z*wS!*QB{qTdM zqSgT&n6Cx4V}mG>RkRG=8+3Fxz;@W(0T3}Wwsf1&G!zP<-Kq9?@#|l8pTfF23T|3S zUUDL$^rj*O-X6=HGG|=W)b{o_0!H|3B2T~K-lvvfek`*9+q8{oQm_!0N;k;P>^*!#4W_X@anqq~U&8s1=tWzU2?@)sy-1I`aI`ei1P3NC7N) zL^d=AOc~Dr){iThyzBn$&8tWzI0#J6N-AY4lZ1q!87SJ(1^vaKoW~581I;<{O#GJ` zL~Zl(H$-Lf;!hnBaYxG~>bY&%{J3M1`hET9UW8-qZoA5ZGS*#prj+L`TOU0Ge^}6XbD8>lZ>7 z?SOld4yzlP&_%~fZL9CA5nq%V%k#g%Ab>$cXAThLE!jIA57t= zyByJdo{YKsgTjz*Mw6xLO(X|zGNy6Zx6hQ8S5s3f`xiWrgubd|pU6q^I9!o(iyzSa zos|qeu8-Yq@N%*5!{^qF^3**k`?y{94JZ}|ewb}#V>1-}M$1d1WKPjZIvE*;#~E;D zX|+}~*tDn~Egm0O)=1=pJwBsQo{cvU9uj7dm5pxFp&|x$#NQ->#(jSj(`6je{d+MhL%FvqdPeJ9pF8 zmY@G4nG)j=`Z49R!$k^briFAuY^?LaUu}*^2-68j8#h=zv5_ZnYF0?N%&; zEhc_-aW+8i7H1_r5+Dgj$=yj}$x0OASxE^}_W7^{2|x{ScGfrHcOoW|OQjhclZON( z^78W2|C1pbjQC)k-0N?Q@LQ(q;-pvPaLUBSX06AWe?I=9Nj;|i0__+Gs=AyVw`gw(4lT7jBZ9$)?XkVxARgcn6>YRl%h(vXi)FmZ#cf@m`5 z?dnB+#>=cZLebZ$Q3w7W90V~qwGf&9;g>U9{NXTbS7?pHdjEaM9Xo@+oR^)Q`Sa(v zXuY8-{nbz37eGt~b?cpHlzssQ63H|(1P+xTm*RFsZ7D%aHh^R|vo;S7Xz=q-GC>+2E`J{@Qw0tPbz-*jf~yZh{z^z0+qUl)2ae@KGVn0c5->D zIih@^Z#XdgdeJ7U~-yaG*~D-J2$aHh)po>Ru{Em1dGZBtRrmns>Fu(a5n=hhYHX zlp+P@>>LPQaInBk+i$2gR7Wi#4qK+G-lexK7wcH()jNM?&7y581fD<1_;@%V@fX({ z1xvYkd_1cDww^_5_q~=2V!kSt(7&oE06%c4TTajPeEApQt1NsGdTQ#WBMT_*MYKNu zA*&Iaf0?dc_9k5zbEyXRHG9Evr2%DCHP!h)u;FlUZT^z*nbb3^wIL|npZM;i!f%uH z5~$ZXeycHSc4%GeJk1Oc>4!8`Y(m@(0z=ilA2bv5VDlmE??_1 z_tX2#;^w#4+l)hC;MVAIjGumKy_VF}q*i+Z=RXu{wK>|hr4(Q+7g$@@V!2y^=ZyCi zbO(^8PsU<(zk7A?2DIv(H9{RmM@Mbf19epwIxDWOhO6=N$X?LisdgCwq?fJ+4eld7 z>hfOMZkHy!Q*j*n-C_8Kd#Q1%=4y+ze;B*ZH2?8obHGK_WG z{fZTLAs6w8siLI#-`s-8fgpODTU*~P z-FhRhsHk=stkGb*b&z1AQ_26kXYEiD^OjZbAQh;mqZPK=*Tepogg11#rJ9ZASg-1U z`N`6-QW$|CnzEs#`ficiObdh2}XgV5C3Mv8uJjofEOFRutFPm)!JLjG#a79RD zIJUi+O=DazuKjF@)ZLBqIXhavl*&_aBw=GiD*6vJbhuG04yD0B`&7SV6)g1sw1C?1 z{#PmKV>rOaXM6`bB7aCku19jMNzOI_<1(Rvd|_Gz@=c#LtPbe$>M9#q8QRoR_2!&o z4ktZZTT4qQN+#*n{u(#|=}O`{simd+|wMZk%0F$&o#*dlptLH;dxoz-H1nJZ!~uVsQ>0o zqkHLN9avANc*}`?aR6G*a6)wS7ycvxAG@H9X*)-K!8T{l^bjRGDg~F9Ukd8ZM>p$e zx9i!ygvivy9!cq;P0S4Xz_SK?O;|6CVGZFJ5uM`46>3*6Gnd}Eiu{bq>zzpO;cA?0 z&_6vnVHeZvbCl!C%4!1!xwD8BD(7EGM2LA}w~TK`Fc0^2VCCeMh67=O>$XQDV@CYT zTpHSMQ}u2g1Ntic`hgK2u)5X+F$8*3jqQ)ZU?LHZaA0@+8&yiR^HKI}!Z2TZNWcDez_inLW3sLP?3=GELQrRf7+1& zfsxmf%E|qG{Jm%idB%>VoTo|Qq%EDLghIb$>s?&z*eY};;kg2lEzEckI{0s4@nn{= zO-oT6R!&I}m7?~Cvi2LkC^v>~vCiDrF809pNEIidn(s+-IyxJ#{O_r=|^L^goIaYTL)3~@(Qh9?B{W6hCgQ_fq3Bh z210%ok8f7hHh!UU&VBPSJ11Dj4SGLJt%6Vaf`co5uULni2&gapczxRT7t5#oE*L~!Kb_^=pQ_ySnQyX6fwTo%wxu`5GI%Y+ zwu>^lB=A@;sMI?-O>5k5#?yEnu|MOs&WXlT;?m&GoBi&Knb#+brkH{;tY_nl9T(z5 z(XqG~=4Nex_xaSEmf&I*dNm2XDB$O`qX^b=*q-r8i_<(CT;V%sBvG9p3I)#}$ksT6 zUdO7jaakK0RuQ0YUiz!xSz6kk$bEdCH@UeY9ai`-ck0XJY`GX$qXl>6Fo#*ts zD!%tuByGyxI&;Hdo(4SpJbI1H ztuKTPbr*r4qNj%raL)>JVetw+;|XR}Rv?-5h72q0du<&)kDw&*yGlq1o~>1RtULIO z-utzEb!CZinyGr#+vEG>w(K+nScs<-#v0Bs?}k2~{Im)tmsVHBOo|VO+H-%zS?+g? zw@sH>ci~(M=_U$$dZs`%R46ghYw+fcdocC#auJW`v#P7BE5JaC0}=suYB?n6_k5mX)J=ET%CP;vfw6~{Pp=xA*X1^k{yx?la4O=E3>%n?S zgw~X5rM;qJB}FXI%PF(+9ZuJtrOxohOwrTPjh9!1sVgj;O3t2*8Y>-|0z!4F^I0c| z#}hgPp`b)R|PmyhP^_E&}1@Ka{9zCZ*_bKkw#I+}hSjQTRi?rtTLhFMq zz)Z@9)tq+GNsIvbN7P2tvyD0mlZjtN>a3kzloc8{@8s3xR8{t}#%qDtJA>?AGmh8`wjyuBN`pt1_cj z>J+z6INFSLTCxi7F5Yo1hw5UABq$)yW=aY*Ww9ny=dt6EC1Y8crSgb?Mw8TjuTk;Z zm|z8(`E2QCocrqK+E{66>Fnv|tXeTUcM-2V#?tGJWp9+Xcf|2L94sT8AACnwF6l^?!fz@i@vjIAVSBBDw}3e^W>e_*e9 z2%(VCvnv=CL7FZ0a?v{hn<|RhJ3P?jwjH24aBGC8Da{d8+hKAD6EUeIfCq7}O1YtA zbN0}Sbck<2Piso;nap|f+-DP49_L_P`^}rguN-%LJT8as@Sn^_QA+0}OmK7SUOs+G z(CEDBOQ&`)uYuyT)N@dAFyc68Y%?@0NvzwooORj_Bxo`B{FcSt1HZ4UgXt1G2>&py z;&D|>U8<{hC51D7_^8>G)pRUZcr^CKTf-l_h!ix$K`_>Kt{mF2B=j%|%ESF+*;cQD z;HRD|M;gqg7CNbR`u!<-|NFEVj240^qdO|}_b5PuDL9&xr9r{4IN!({HL%D6@|?Eu z9!x~YxKo2h5u$*FiHV956sl`!Swi>d0lU~JoniK|+++AAgGKC3lwV_Jdfp6%;j2-% zm2XY+^4et7=Ch1yVK{*f}NB!oFW?bw9ORy&DHfoofjJjdi6AuHTGR~~qg zpc^D&m09%?QU$VXCX$YCk%s$!@Pfj^j+1m{dZlwR?3J@6m!i_H>Y(T6P$w|k`em4% zMK4T4nLId&`&a>EmO>EBf=-P*bzIA~QZ>^*40d&QxhnY_>VNS=P{~?ql_XOQV%|nu zs}IFJyx~2Io?em9UJBG(6142)cO^9G#IN5$3 z(@owJx!+X7PnYKe1O(X8yAs=zr1*~GLk}a~JR#E41CQov(wFkKb2{Ra@Sk6vrWj34 znl7kX+&eft+@9K+5WkBB>Q10K?3-uk8^-SqckbePR<+6(Hli0RH2Yl7geDj(nu3A? z=yU+9A+-8?L8^OxaihDH(c>rBD0i@-wA2g&?>~c%`M#H*Cr9zN>q?!a>#^kR>=9~U_FCt}awGjZM(z5lA{v@PH1SE1W(9nHP0uhEAzm-?> z@zZsXu1_BCVW3qOSn0|1UZ7dmA+(f2`a8x_j(b(6GAl0ZL;->d^1OjnZfkuzEftcv zk&=)y!nyjIxw=wUJZ>~?W&DIo(}&3Op5KQ2jR0~A#>_W`ozW3dm!FQI+n3N2O_T?e zIoVcd!<-^6CtrmG3*1~FFWyg%&J0dYuIvf&uK4gyN!DDNGf3Yj=xYwEF(#Jda25c#yFcvBVS;J0U>FH%ZmiQRyG0E zGTwhKc9x=OXsS$Cur`ESFhDwEiSwE0q3LGj`aJthQ}>(IJ~j2U3-c}II8jQ9Z-nk!UWEw#8rv%O<6!u~~f6+^?T+xXdu&%)hv_ z5D6S}=$|q*8ZS4^8GxbBiS*fVwQJTmib5YVpnxc-6Kp;U;bW%2qz4SZ72!@%T#h)h z)WVjzmm_-(H(Yk<%XSg(qd*b1oT_aAU5Tf$fT41N9pM$j$;R;l)7SWdmhxw;U_Mds zfXyc$1;WOxitjzI@Av#312Y9fGaF|GQ{C|!C}lFPPdHvXrrv$hwKw*91*l8>u%3OF zdL2>x@}WqgtGflmV9v-nxH6oPk1fG;=e1U}DMA8+j9=|YJS31&XCJJsZ4q(14#+Lg z7rpLEk9JdX|1GadM-fil`xWt4ccidA1mZZ-tS#`n*%5sB)4Xs#!8A1VnfZgdH^Gyu zZW>Qvo~HO2-09S-uNrla_yb0eu620n^`L)3myO@l6`5|O5rOrOIl=*Vb>1)4BBGHT15B-j zoge@1}QdXEr!YNiLjKuAh~<9Kt4H`~Z0LD|o>|&&ByX`HJJ2^$-Z*J0Dd5 z0w5$Nkd1BQ{9&?lJDHom!p$$I*m9$cVXK6kmLjfqGH6CdXF_QvB9B#TnG2L~T9Pzt zZGe8Xldly$g2CL>G!9D86$7*ofO#coBG<@Re3$A5qedf1cSgdKs(E^Wvqb$jD{2x? zx_GskaKQpL7JNRK<1|hrWya9Go#h|>IG4J?W(+5K=2^ci<_F6)jJ>>U0&uMc@Pfm>WKi`4tD+((9`S|fPyJD(RaU@v!Tj{iYzL!uv4_t zktYYEEo7fL)vd`gxDz)jIXN;}KP5gsy1_jlPq|**kmmfNNLviEwcQ76 zHPQ6aD=&LMF`m-btrHq(R8Y$^|c{!NB>24( z#{E*kCQa$lz&lN117`Xo_9xmQ8`k2pIv5~XikXZN%;Ry@pX);>fWXif%N;qM2M0$D zK)V&^Sm;rAZBCc-(3*A*yz%itWwGVv;%e<7N6s6CYJgq?bfG~FXCfsa&|Iv6k+})6 zgP?;-1bL`_u=b=906qI1FS4caaS*vzkt06TDtMX$XlK`Q6sp>+>@Q~2j0O2qYX?>@ zY(dPjE{jv@$;Q^I5WUhLCCVU;-d-dL9R~*oFR$b!h+(z{fpBB3-q#A4Kns(dZ)72f zVCD`30>t01-QVcYx<@?laa5;%_d97xN%o}Pc*skTsJGZcO1i(l@99rfyQFUjsEU0( zeGq%0GFu3EwGIG41?JDpNP=NJqzW)kew85@Vo40t%e@O^?U zD7Y?(`2HEZjE6U!#FUf(yYKqQ=x8PT^E&=~$@m{`-v0vdzQeE2De}BtA3{D{*Jbzh zA15%?&Cuy6)9Vr;F%ZRBRmjR(A(3)#>RmL-hW0& zC=eqdkBmw=RaIS<1YmXsfW*Mh7Z(?Mz%g;T#E3|Gjz0GD;NaMOCo);M%j&o|g#;bA z{S6IZ%gf8xY`~1(kAHp*_+(~h_GcWr0tRKyfdC6tDB+L9}1M-a< zefW(e%rL5Qm`zPP2_TLe#wiYfUadn15tS8%aG;YeNKQ>kL+m5A88d2X-hx6J3~)>U zB2=u5nxcKx=0z$f>zG+t7wfD5E=pKc6~syeQycU!bC^_BIoO@K*RJJv#m7IcYhmW% z0$Y>lln><;a_X?4e#1mf_4cr5UVnDpf&c5S_KmX*bnfv)Snisl&3Aew$XH!;DrXy5T4KwGM$G^EaO1IxwIa&~Uut4^usg)5zBNoL;ZKQp`_ z?3#7hS2`pF7$R)Bo}T#tUl35aFI9*VVqrop3W|s5Sv;Uk{p}!{<6lzTolZFX=Z{|i zZ^`eqSRwlKmE#9c4|R)Dq=SSR_SlO`2Z&|mOslG(T5vZ05#T-6J}lK~>-?I8B+aU#Yl%I~$yvp_H^ zc|6Wj$Q>~m^_#JEk*Y-jK#gyOSx%<9ys`|urC=*WMds)0=Z4?c*(c1Mm*!PgI;-`N z0G08Z99>CfL3hi z01{STKLrSOV1^fwHC%#Xtv|m?ZCz1oL#s$-ND>%GOg8_u9!B}YJti&&y?@Ti31mGU zPB&`+Ce@(7F&VrS{rOamyiR9E&-|>TM#>d%D*H#@M%LtuHP4o);s7}H6 zbCbux#Th>i2w$QJOP*sVfo%)iLR~%C6+=z99iT9=PlezFE@}*8iHcY4rx8WheABboC(Bv|=l=_BIR4 z5N(y>ua!B^I`uskAPEB@d+G0#Y+nsiQ&a7fc7UMB!ewB_^QH9}Xhgj%xpm76$n22H z%$DCvfKZ*^eKkN2yc^b~r3KnlW0Z^z+bTV#qobpNMn2K;CWe2SSI7OgTeW+X|MmU@LQQGkT8s}ZE(BNw7k|Je4c?@2Y+g@R+E`0}cjrtc9W6$we9k!+h9oB+PE&&b;85qqrBX2ZohWM__!!)ap&LM2T zu&ZI`a9mA6@nBm@R5bR9Tt>)RYXGJDT8?{0^%t^}xca3c%UIOzgNk#0=%H3Oy|3-* z^tOA)ij)*ce7f(5`mbwveJfAA^RonjU$ze92+v2Qu4uFZAp*&uy*0?m+$X@C3t(sCu4+d?AaL1>y=#-v#urGQFX_vLT>pbDKr&)&hEnqt}z;Kan05l+Wd5EJcb1YlW4d z2am=f0hFarBI5vQaOT5Hq3ZDB$p%v$cn$c`#6{P8xI@15Ws&TiInKD#Z;%>^7_E8|eRviaQBbz6II7 z1{d{eR@*s&&47OOT|%!V92|NaoKz0llLA*cvmP*(5fR2qd;o@ADUJ*AqwmWK8ybc= zC4!~Br}>JPD7L39zgvi8;QnK$AF8liSy?1WA7*#cb3;!rbkbq1bx+QzD+@o z`a+~PMik5*ELjBw-*h{+#x>oE<9~=v*DuoqqJu6iN zy4GFN9Ax|ioBl_iQXc`Hul;Gzxlwz9uzUgE;zxA%?qTKg&DA>Y3AGXO`=X+_ zE?sdCAAD4_RzOip&0)t&i*;W;qg{MDQl@fz4VJ0^?!Q-amk|&%$!VIWIVt+Y7|8ON?%X% zR3N4bf)K%Ee`Xz0A4S`%i?)V%M)X#(M<2AW?!f~PyhqQ&e@zF--+oDQ-a%5 zl^9cU=25#X%R1Ub(eKH6 z{!Dk@d8a_I&T|l3u(`Gt>evqw{-|9l_~v=NOiu?bXg3%(@-Eg^%`}{Oz-Ivf51U75VI}1IvOtRz__d zWb1+IUFBXuvf74BTcE8XTYG>|z?9qD-`8I&uG}0{d;B`lLBGSdeOZJdxzK)zrec)a zm*3t_my~za8xGfRwLSERERr`g#N%u1+U_!P0bn5bQiY2!LTQ8iNl@DE7Vk)auCQ}^ zvv_tkYr|%R{*)$1FD~qXX|u@o5LY7%rro}Vp{;8}!pA3srIqtALy)isSTwhYwq5IV zvfb zntXc2T~s1IyZ2IBb=JcJa9&b99WTId#B8e^pt<+MvwOn;H*r_9-t5UUS|`=(9m*}R z4MzUQsGp_#}Tr zYB|K=j&>zO#bUzFYLG(KjUsWmk2LCyT=UaeEX2mDFNZ*1wD7ou)m`fuKJm(QybtF~ z<#H{$7E3l)-PKg3PI>5J1!~D}{E&TdaenJDJ3wK+V)1n4pg1s3_aCjwx`PZ-h90yr z-qAwmJ>M|ZXJ+B&N1XP1%tv&C_T|+?+9fJQC=t)uk;9c|dQczcZTyHEr)}UW;Esq( z%6yr3R2MI%d31Et2|<9VNr}s5fym}j`U~j*Z=2PKxNq;%pT;ioaIo_;y^15XGk*=9 zmJC(5k$R)u;b9Bx53e>?{d`$jdAY|j{qB>Dyv*HfZ)$oIs)>X*ePMD!ei2-6NvU&) zxQH@8d=TxrSzape9ul%G286!5~LqwT67Q4#2M+0*I7zyHkG9DIi1zbUTQLZ7$lrM5azZ%w$Nbe zWlR6eglNO}sLfvf=sZZUf|pY^CB=XPv&-*v7A)TILvBnY^=)RlhgTyNXgDLDMC8b}V zLo2>08`1B9j{T;?lPVYCZ=L*ZM;G}=nss8pkP38=U<10mvb3O@yu8`W`EMR2#_}rC zJ$7v=LiSfwIU7%V5sq7@W1Z?s>726^6?h?I#aj4-CIBpAVSzP2txa&23n4QIO2hLj z%gfjq%PU-aqa+PcTAvKQm2M(fjP1Zc%>dfh4Ae)0fy_A`+V2a4ZKsTxlPa&y9zL6( zFtE{;W!T{H&S{&xY2Pbr2ZrtAegSwv{uC!$04BBL)c_1ZN(wa!?t>td4lLCe8TQ3R zm6xQ%r^*lrURjJt=+juC*Z~5DxR@AsU>S7Tc9|I&7&t*DPbP6%5NMu%({e0Gc0Bo- zRZ`NweYS|Rpy_yZssue#IJ?MYdBt{dxs8|uSMQ9o#K)q6lM{i-%lB%Z7sNi1W%bAz ze1OqZDgMCoR{IuR^2!N}lIp>{DZO&JUe?9DX8Xewcj&9M0oYl={W6$DDeW5CRNPzA zS4wLq3mGKbc)$;lgyjqb==rJ_ctdP@j-zgIXv$TTxO9A?%q-&DY!hR27#`}u<9 z{D;p6zfw^}(~F@k%@@N4Q80=brOClT>WU4DJslREf#P137p>7t zf;w-mNbv#c#6|$(pC6afz(i@)?}rVybLO~Rs>hxPqlu6-0WFNT&W{96-`&fFyraGn zo+VSwxqbUKvgzS?&RD;`jkuB{+7yR*bhNc?PSq?{d7N|3oHri-T2WF`SXx@{TJ<=c zT8UHJ&*8u9tg1ik_3a@avaD1pxjYl`*azwtui2|32M(R(hwbh7fwO?mxOrI<=PD2A|18hu%nuqlB2X24;S+ysV zW+$$a*BJLodN^vsEWOQS^XPMXsanlZXxsJ=%Q&~r&QAC9Wz3i!a#A4^7SuKMu?0q) z&wB$=QF5L}Elx`pKC>qwvrY)ctG#ZGR2L z&4@il#2JRA%Zk=zo0bE_K0vZ(-s(q=323klUuG>?DacBHe@B(z)-8P86TI0DMuh;b`@i>NVP`)HLH8ovb8EtD9WmOhceBokdX6EI+Y~9s! zSl^!5gv=ZB#|7i+>AY#mV_lK2FDpHL17tcoUmnqd=IJEQ%ZQfl?%s%$)uzjK1L(GF zY1Y&x#DPSH07p(!F>nOk65pc{1E_UL&}iz;aZ+C&DStFzXe#G<3dR?XrYO;APHU}T ziUwNT<23NKJsVr#Yn-W3DDc^-hvR~THv&8Qul84VgU_z)Ke;|9!8{EQR{30%4_2T_WMevAe_8F>%O~HNAKLxbS=2Tbr(RWFBr)F zxSP@QM#c+64y48aKVUJKn`y~(Z~sRKqI8{RPo^0iJ$*!8^*pv-Ixbjs*MZ{GU^T7h zJE{hSp!H?s7->$oPtS*ZY4^S*oBXB#>r3aIuc(XxK|wAf!_p%oW8D~-Yqvq!4IE8B zevsUPUCgB`Gpm0MS8TOMkNXJp=jO)7DWkV>h=?i+T#GurUE#WwWTWuToQ2OL9tG46EWnKZbP?^Bfn>h_)qeEZp$KCd?t0TyW6I~zT;!CWc7qs-uAVTQwLIMk}y_0 z`#w_;8r!OP-xx$?9u7mx8Dk-U4^n*2g;-TW&%)J_jiiySZR zcm7@2gYxZI(}bU+lc#jtpn2wov6%KVA2~|bU}k@myAHz3Em~w=R904Mg`U09 z3?R8%lg#M0It$VxNj)UR#V1!KaorY8XYXFX`dydPIL()B`25=)!Tkkpr-U72NLVB$ zx6s>eA$5x6t34Ctz2>&=M%2VcJ2$u@pN&jQM?z8(RNZCsX!_;smdOW?TMZF)x%0Og zZFcv5;UO(QQ{A8OP%rH}2Ys3ciuo zI*aS4w=F`(X{nC=b+WrSXO~S*_*@Utiej}8hgv+2M(Insa&r5W?%VfUo%JeJuB zEd%U-WT6>!=H=yGeezkRdn2qD@vT*wNxW<3rq5`+bRib}BD;d&A7V78-uZcKY@&+K z7i8|OiyV2_f?wYBZS2hZFr*;PC)YD4E^C>1cnIN@dIkpVtOwhHB8ZUZARrRzS{T%m zHPFue?0D7wBXYeX`#q~OB694nn{_%k83bPM>gqNE5aRZ$myi?Hhk=9R8(98Whgs(` zK=eRJHWM56ppDfdE;rb)$HvCSl*i>*73%eeY%X}+6bF6G_wVK7BO`U=Pbd0arQZ7k ztOmHN6M7BUbFSRI09@ccXlY%ovZh_n3k56Efz9IjX6*;}DF_%oG#vvZM;SnvI z9Nlc1tFlEz4iBx>@*-wHAP(fk^#r2!F9DPg*U}{WV((x^YDtGr#Tbi0(>T5 z&McK6*^82J+Ze(sE0bcCsZy7apo(L zALPG>3~mJ4n}nyqpZ%-q56sd6CVr1$f4_FHZ4jqG`C!8oS?~y(y`b_Qd)wDZ_V)g*n*IBh1lQF)4Iq$F3*tuwdXs@`taMt44(%5)u>I)+Fn)7g_8*1Ut_uR*RrE zK==EoUpTpGK#MFX{yj2&aq{!08C6o4G_=7)gw=5vO1l(!ozTF?4Nj6lIr+1Nhs(UA zx@Bk-e@{H}tIUCbL4RVrw}+vjp@^_A7=^a2sRhBacJygiDAa$nwv)Zv-A%<^-nh5? zn@RHb4+awaSXRL)LNj2^PLaxSv(vYLNEHUe7jCGR`buPv!+%B#if3%Rf`CWOW@;*s zW*%3(Olk3uF#N9@qbTO|v1q*RA|RCFfc=*DsLlo)-WsoG7UCkWu@2Aj?l%*yFe2)t z`2YNIEQ{lVpKx53I966x-Co{QcotyVsM0N0S3Anl&82Zgb^f=`!|1RV9DP7j;(WD| zn($`GCL~Ffpf#Waop@&H2}Tt1q4)2>!NXzuUzc4*?*B+YQ2$jk{Qfa2nmxKr- WgnFhxb1C?j8=^u|g2e*bp8p3+_-!IU@1K%cx%b}L_v~wCu9>;Rl@+DmpcA1#dGh3qtc--}lP9k-pFDZ~ zKd9-+OG_qFPBlC1$SU1s?dS%^?rPs zFSNj+tDoqm133-JKa>5l+*I4u@vbTAzlT3R2&R;~M7raN6qgV`v-YtWa z2!6aVMb7kJ7Y(Bm+JAk0^28WhyyVqik^~|#g}(%;({FA6wc!6;zY0Q?-~Z>^zdq1# z1*iWdU@QGN{rtZrUuECq()_pJiM;JguBZPkF;@Nmm-7GGmG>O)hZgldBz+DRi);Ei zAtL7FwE6SDH}1*%LC2;=d(Di|8}jnPIvn^dzeir6LRVd({PDZ7!(45m~if2+*VdPqu)Ju35h2JnbypWi+p`(@Ni4x z-xDGt={R!FRryPge&Ku)EgH21r16)oGQa&yh25g>Sd%(XJh<%{oX*j*G%%3zY~+X+ zJa#FB@z>O9-}04aj;z(_a8xm6JO)e>M{C}2?TwZ|h>~;_P+hHx=S`(D|2i6Mg*B5j z76H$OxGc_CLfJFq&C*e#9ZKj^80jYK7hzIC-L}N%!FYeo(jPW@WL-dy6JDTN>KnCa z=M6BEqQWlaO0TSB37Y)m6#mx{_^S3Y1GQ)#hQwuzo4fu@9)>{UO20|F!Cby%6~#b^Q{xb6`Y)&BJ7UER_gv*5*U*h#~T#m;$M?bVvC+RY&G!pZ#V?U zbPSKlKPZET7b72FE-Z{soB6VS?M}dC$%yiWLo8RB3H!8I+d;E#zURp=&zAj>>klHc%WVZ^z7e76 zsx?hw+Y4#+jTse|<(W$g{PeXeP}QPk#Ig>l2TcuodW#FG zldA_CfRmHPeoQlejloF#v8&V5+&A0B%z8p&vB~iyL_|F~Q_GHXHFi9%4Do~Jex1Vb zkFvi_GoX%a1iNNa4UHU>Maq8)vFZIIMjZh}0?5$^`eKL8@98zmA=aF_Kbzk^Evoh) zH_9S`^(Kof>%(_=qB+dQrSo-a=T3W5QjC;Ub^9}?W-1M3ySSM7q07E6Qp54ENfOy9 zp$_Z)qaqtjs6}~z*&M0InVA_$wp{xSY zL(_@Jgzfqwwi2x)`a06vaB=ZdlB0A{54dI@Zbty)Uox6)ArXy@jl}*S3{aDRq8rrA zSpSdtRN`jAk6*t!vAB46$j8TW%_9lZP|tTTNo?^_61VX)Pp)HA&ch86PM8KGzniWJ zUx?*?87;#->=SjQn;jV$nmSladncp#`SrA|kg&Renp}>em6g&y2{}G78Qy}2B09>@ z&=5vsWW|hH*C^rZac2BNrm-(D2jT0QlK~+Ol<~*)W4xQ2=5(;o$vBF}g_Pxp=czlV zq2UIcn3MU^2-@#ZfhjdxpnowK{_0t7EarCxhVs-&sXK@7Qf3XhcX!<(rDMZ)R7UJZ zMmZC22i%N9LL_OF@R|Qdp?;}v9vpxWZ@SU|R(N`^oNBcFd?5|5d4*0^5vt(@&CS=a zre%wwLN&H&!Mn^iox;K+sd0nmF(MB#=IR9l(k%~`CVAG=wlU!}r|0K-jpnC~FoDs8 z=55AvPj2Yk*#d;I&y?Mj;q3Bqoi-hZ+=Z`3w?enpdW}`U{nT|p1&0V*zNzC5vwjyi zB8xXAKtsdN!4ZhpZ_dH~#P_G(+jN4x+dlfzsT|H}ePID@CKrbr6WzYl&~&y6_1Wo( z@66*PsiGi0OYCnE5e1|+uCC|W!Rd*XH+OfF<1fTUZ6YzRDJgqOm34GN{@3kV#d(X3 z?SgnSTUc1ASSB|}n-oR3SMO5)^yy13lWNBfMDhc+LaHFYLQzjoUVo8g{$w2C^Xt3u zbiSZxV(3$rmIdUi7ubUK>T#{bIV>*}5XH^|b+vsIr$7P+M`L%87N{+^v9hwWQ*@=W zxDCGd9M#q=FCPaTRU;6*!^I%PPbTEvu5i5Tu1yiA471X=e@$F8mL`<2?$CrqAwb(y z+A<$`8vmIZCji_t5kGN%zCE(s0>bk9TpaUwx467|#Lk7a#l!aG30w3fDX&adUlz@4 z^#8HWY#oB9zs)`;#WU+wXy(3siq|Y)(e!Fzou1{@t5;;r856mxrRwL~V{1x$)sL%{ z25s~(?dmVxd6F0esn)lbm%Y+4keQj9cQ|*f)EakKWV(&!>>ICn(^RIo;iCM~bLIQ= zL7lmdC?V;i+Yv)$t+$~N#uV_ZX1*pMKQ}+W*Z9lxMYxlztDJ`0=+Ktj-UYol1nqiu z26Aq7ba-fP<;X)o_pbQ2Tez#XeuJ*03L|lBFECbPT8syY&NR;uhJgRE3~UA}kkd;e z_xAHKkW&Z32<=A`QvZB*Dm;*QhK> zA}A>Cd3f|^S6nwXHpWCAmo_)e1C%F}S5Eqgowl~N+D6~wlD7CE_BdlyON~>Oj5+sp zfp=Hr*Zad&P|Js2Uyn$M=uTOffx$T9;^v%{*QxuyMYOvc=}Dxe4H(^w+Zp(V&gr&$ zPKLg*3JDPi#bTmoLF^w?K^QKEG#KZkvB-tbdap#zc2YhUY8g6v>5KUo|Innu-qY2y zE3@r|%9^`5dXq_1d>z61`WGIziuxQGV-{$VfHZ_j$OAD8pr19mnO^R@lPLp4lWFM;Fq-*^7v&<4y zu2!nX5&7sHcCZjR<323pzcP@lHIC6@>Pw=xoC7^s z(5f_0(@))hu(PV&s@=cT>Ky5S#n)342Kd?97}TBiD)b#Aly^_DWc!w{^poP^R`H2G zq{xMk(&)LC?+tV$JtFw4!1f*)X%9op_{B7mwt@E+c#$3LivGM+dm&hLKO3`!<}P+< zSkl+7v3)xW&3kMAcn#`yOx}-Oh2-3;-^aA!gURzc4BVZEVdF>KdL&hkn-%BvovIA& zHwxXbl!89#62|?79533sLI`|EZ>KM~>^12O`K9{(MOL=xWXj0P_M@fWoyS{AtY?_p z+-Jp9k~T*zwrF~oSn4j|lyOWiShvLzw97wnlqP?tDq^9UGcbz|`%>RZoONp9XrFb` z(aO=wvKV^QY3bO?M$P{D{W@#YV%xqhKRV;W!=IjRXQrZ}`tVCBe-a1; za&mLy;^AI3ZNl$x@rd@tjrtDmof|aauS&JiM6Ux4x&< zKe^PI8@IBbB`kak*?2(TxPK?FxbEN5dUh5zZ}KxIhn2^$cF1ds1`)o@I+mE6bPi&* zBHnFkB5pqN(t(S=Cn1qQz2$R1F!nhiHn*1frdyG>2M@oyy+uQ{MIaEn<48Ck<&I*^ zk?M=(HePTfHKO~j%Y;37%*u>2$jto@7vQC#(NL2=s~FmN`1R`(eqb&$6$_0nO#+06 z6EBnZW75$2hUxBiuq~f+-Zww?`5Q`#o;}{!qbU=r3V!|%`LME*W-2;5HU^47O;(}A zgpA`$(p;rvO&Wjnich!Vju`S`1MHJ3_Gy@Yb7DXs&ZBsNL+$a$QFGzzf1A^Q4MfC;n zAS{uYD_1=K`K^?(EPwzV?>F1B$jC_H$3w<4RNZQ0VIlZ}-6Q1S!tq?~HSnlqM?y;K z`u1ij%}GH4b_o;kTez=Vw2#DN)^BrsgS+f^PMRj>KBHqrO--xHtl%m)T$$A-g4hH+ zjA$91AH1{*;RZv$$rWk}T~DAay#{9AZ6=JffqUr*Y*m~8M5VzA_w>`aSy?8{HPqFG zA9ml9<;Y}gn8k?naHT{?MfkvL!gBl{LV{jkI-h4c_wUUbdVF7eUwYI(KFh<+y?t0W ze!GE!H9LDX{c=1F47P-iJ+_%Ww71x&ar9}FYtm3rEg|keH>_@hh4@CmNz^6ibbVst zw0T)8Iu_Q(1D?qA$RC-myX=*7HIp(#!Q#((02Z0x{T2S>TBFs?fl-djL262Nxn}v^ z1wNDhmveQ?NvSVta}G583>*TqDGcV&?c%ae zO}9p6Sp{WEw{eRetE<6H-+!#Qq^b8Ok8ZQy>~R2h=7R{IreI>uDXT4XsH^G5=Gd!v zztt;>jmqe>w`Aji8ZmE)jRwnb@dz=`ctF}?e;g_5PzGsS83+ORC2o-JZ!02+%T+wP z(=0%K>imuZ8+{u6bQHfxzwV<+cSA?z`1L4XxQ9XZ5e(LfE=prEmGrRZ{IF9I)%q|l za5k*3v1!Hp-8if=GlS$)l@w~Bz68dXEyB~a0Ce~4K0x5IkLOlWjD6wRt>oI_MAFhd z9PW=WDebc@rsaQ(J(;zlsc*=5JeMT9gL{?g9*v%n{&56ia3$n(k?l<1%Ix(+q1alz zq3L!zVcwY{)C(#8T2v?8r>djG<4T=~DZ`By6Y&EfrAm5lFUOT!4G|16k4wl2UP+eO z>wJ8l)xv2yIPxpGG5j^edM79K?YLX=r&ljXi?q}=EiHB~vyenb4Lzy_K@GbKC+*c+ zp*TMezgw^JK3j`SQt7tu>GEOQi5aSzD*CGX+>I3YeiPBuLd+Va>R*&{%@Yl+Qi@T~ z7O2Ovgc9(=ANhd=a;La`V)aI_yF@~p(xo`+J9jbhK#!wkz@W&?O^hW-jo?^`^sU!nR-}YMDMn1C`dh(&>jr_YpUrX-%qJu68db7b1%^ zs7(QwA!bE+ubi;_j@dm@aR<+KN(lf`oSU28ba&*te#5~z{mv3Fc8RFtuspHK=W^XW ziR(;T(k8w~lP{-c<_e+EdvM)@O*9QU5T9IKdFTxSr*l;qcJ0O-B~^C<29OT)JeRCA zP9ovC^l;HuF6G+9#M>jR$=8b>m;2QpnV6eJfB}r*O&^W!J~*D%;obT<*7N+1APF=~|HtN<%<^ZrQYu=dKJR zt1+<@0xc^QtRpD!5`RMw1^pG~jI~s;Sv&j1pWYaNS?E-(G`Vl8h$IspebP{B>Tcn1 zvhdZ?xuZhMF2HwvJVx3hCwS_GXt=zTl$3&-n?wQSi<{d6rzNpbyGq0bq1DeF2KX*L zP%1Muwc37fy-V<>zR!MZyCBvg6kxC0V7aAZl{J_p`r-wu%D4A9Zy%?PvbQY_Tg~G_ zn@X#Pxr0(P6c~5oJ*^AcJEj^dx?bOU$phu<7jYJ9t2!=i{g7l`IGQKwtvl3f2ZkjC z|Aq`pBof5$hL9c>$sw7bi-vr}|$76@T-@2^hkVDgo z;4kHTLwS6_WXbY(#5JAr;UURv#P;RoW$O{=!lZTS-Hy5XNCseWWhKTr`cy|x%ZZby z^oT>byb!S(1?TiG{;nW&;jR93RAYZ~q@u#%SwMXLtUoIS z4t$}XuBmOKmNUlHHZfi)Tfc34<~Us!6!OMiY;X-*LDM_4YVqJ?C*>O|a6`m<>`aDb zI#b=xU-H&%hsw+6+cRTbn^4T*JL1SW`X>Fv9_n-w-2k8&4Q2*A!Rye_ewu}=T7`9r zo?Zo-^YEU$hipkN0!hj!SABDSy2NkPz=AQXsprelO0n)9%*^}|aZGp^)Fi-q>2qal z@jI`WTuPzeEb?luk?IU48Mig;F?th{Ryd5w%qEW%2yLVXGHIkjw^^?aBp5o%TAH{) zfimIQ`39MZDAB%x19jt(=sU78KVsfTW(YQIs;{3&ukmo3#F9XA6Rt8FuiFsXq{kEt z>AX%y_U;Y4x_UMZbN24K%nyE@_0nz!M7c#p(QWR*-%(nUdiROC-vubn>T1ARwZq0P z=9GdndR*)*c(G}rANUfjr!40u=4AAEvjS@eh;3|2-Sqqk$4^tk>Yo|#&DR#%x8!!#)YiuDN9E;F zkXFR2svdRhIL3UZ9~TCpAQqRV^^J`1iSUZtF^9O3bga3#xtAB8z<6AKnhJDHPF|jK zL-3%gq-4|Z_p*gm(VO6O@ekM-H={%@LR>tAPaLec8XDG2O!O}_KYe-vL34*!`sO>y z*x2aU$l7>Gq6!4l;^Xzx{zgSZJ0rF`gUmow5N{tB?g3-^<00u#X2*O zZQ9f4#wumtD+D02wgPV7f^QX_CigCn1Saf0M@E+$>D79!S%1eH4SUx2FzHh*uS`jq7Jn*Ogh$c*2Af`BsD7K_M^}MeCuvaGG`dV#lm^whud7A2{Av_bO)Q`9> zeW>M{O!?;lf4-fx-#?3)6-S1+%FBb5KDV~x*=gOpdKoPt>8138_8+F_rh%Kg?BxwR zg{EevyTRQXrr)B;$K)$g@MnTwWK2h!If~HhK7dR!<@#Q-}h4XDB?8p zJ20}a%-8P~D+xc;cXVWB1RQmqZrkaLq=kpSA`>4S8Y%-FJ)qz|z<=k5hgX(Q`uZAZ zd`|>Q1z*9VJa#A6tR8O#aar09*D+Yye;k)H8@9_V3R&WM!Q(`>cG_C=efA2w>`+kV z&bVd`5hvm?wHBrI#m^8qtdAK8ms*3TY6eqFUS@3rg7gi#qlSZGkZ8V^n-OiIak&Su zszKVsLr~at$Bs(%!rYuhcyYcouZR&#Y(BXP5>6UEfNEX=-uZA6m5FUB?NtR0teu`+ znyQc;Z{*7=D4OaGO(lP7sBr{e)95)*WDJSyh+jDo-TnJ1%HR@-*IqMaDPz7hnf6qTrS* zd(+_@k-B6U{_G8UQcS0J^YOitkJ=}mMxWiR^A-=pfIsO{4s^ofLE163PqGZJ+~L&e z!OA5x1v~EQp=r#@Rl$3B)=|diqP(3?_QBRd31fk^F}Zs9YwpL7_vOn=B!a+T%k85nE!GsC2Ts&H-yE^9Vc^8bk?gds z#!3Ln-d%P|&Um3mLxWqgdbtc$;-I$!^XHI2hd?R5ncQCKYXeR|G;hI5TyBh&g{!Qs zw6v9i12gfO%x_b$xlp2&()T5zcT+K_)Z#cMXRNUl@keYwoto;4?>&Q2oMJP3@=P6n zI`ZQeoTa1ws!&UQCTe*jobWrKakK!*1x3#V=&1rl0S>;s(81#d( z@FKCmAopXah>h#$+1c5h5NZHx=Shsm3Mdj?rM;4_s`-q=9k#W(S&N+J{$)1k(rFw4 ztMWD4Y+Q6Q*?Bx_J4Slo%G7gXq-~m2I+9zF$lKGbvfV(YW@eNr*71*>58DY!k7>>Y z3}jMu&(LzWW2+U`dHJDlZA(WiF&0Z|TFXLvXe(V|zkYpUnI6f7%Daz6!Qs?$_;)X^ z?{2LnD5Tx6y1cBlwZ9F_id3(-aUtS*2bz`Da=&nSMtnbjXr7%bbs1wA`J7(d;AgHh znboHOK>ZA8abJkLzH>RI+^aQqUluG(PJT=nn#-kY!BU$o%U4ctE(+Cepyc_bC#KJY zFkk5Ruvdw(CY&>JtP~e1Q^bvw7>KsIm`%2m!Q*@3a1@D&al4(E*nEP9?`jP`z`%%< zE_XXtzZz7E&LZ$-l1#dddOrKWHqm5NKY3FsM4w&*9#Y~Ql+K7iM&YC1j_32q{@575 zS2+9aACvhn2jT&*@P%JvVPZxdc>cmiTuuq)stheiexWV_u6AK7H@o1t_TVNAtr_KU zZz=|ELn-%PyD}B@!+)m1!tCaekLhDmJvH;pg|+U_e65k`xok3z3eCHXsy0;!$Y`Mn zk>r{h4qjS1yu>XpD>D(G)F@3v2t{HdZk|p(p(9C>EsRdK8tWjt5~s)W`X)<6L!Lwf&1qB0{ea=Tc?srsWN@owCEH7yF8(h@P zzzYrK^R+4Gb*uZyloY*pEU*2)iiLWpoYA>oc}9qq@IB}15GVzsp(%^;H5YROef!@#Dx3Dtt8>!Oq%(sZfrIgqz?#$Ei>6#`%Ang;E_H*&>FK4Z zJUd%QvZUwE1Z8%%d;Pp3^!_3%(~0KZ0^QxBVsR(Gx_d_mtnI*7JDZrbd#^QoF(>k& z^`?z;pUVus|5gR+FDxeuWdX!F$mm|md*iH2cmAyO%7L0v;EroNk<@J!27J&x5cp_ z$Ik~_u-pot6;Zsso$xgSxo%arW9CJ;`1Q;c>6a9NFIRY;fCOBaOFjkV{IH17*y@%f z#xeg*ZqBRA)$E>e4aQ{R*P+NP;cfLkF_F|Mf3B?cNlKL)oU9;C?oJT%7oSvU{Zm(i zuR!>X`xnuob`OeSivXdJBcW&rUtil*?AqlKOM{ovVFM!>^ke@EwpUnw|Az5Z9C2EF zU|x4)cwVb@8KE^W+XER$Usfb4GZ^4ncZ&u9501H#e8on)r=7kOgB-O=y)!w~O-yoC zWxL!I)K8I#1^z+T(cRRNgQ`abF|qam=^MMLfmz&i9Nbn9g2jb}8J_7)q+x8iv@IgH zZ3x>PaImK8Z{eGae<}I$Sg_Zd@L3Z}nOLA08o6yN?CWh_)^u--AYEK$!L!z`%GP~b z1Dmda*0dj=9Q@@})%0e0rp-Z5MCkn#c9A~Zo$L4`q+*A?RlrP&AIk0YaMM-Q)g2|k z%36hbzFp0%S^AlgmZ!?8Zn`v*m?YBO6-Av{}Wi1F$Rp}%tiYIk0}=2D<>^;es-+#(}v z6*xImvi>q$i?4U83&c@7C3H!1BC45naG z-S3B3&;1pqKui876YYF;^FePz-rtF;Yt16P6+VrG+yuwi%!kW}jg~jBZBQ(+J_!p430PrEnlm0k-YO} zuBCwiLfI&|a}UR1%3*Llgs34s8i1rXnr2OJ}N5_VrOrIGF zyeX}xh1ebcvMxel2f|6lS_^aUrRq1ToQRnmhn@_$qmXCa-QCoP62a(dYh7(^51Ogy znV2|x`GVJEzNCD8`MmggQUw`;Wmq>h5!br7q-W?guMDIS0>p&gc&sceG+HcPKJoY8 zsR|SEz7^~X*qvGf0v@7L7zcQR!N9Uj(D-lVp|` zC96Z~F~}slj^;iAEdG*1ziHCPt>NP1$I5Pjy4uWqt6$?=e{lQebIdtn?-TBoa%$sF{x~DCO|{V0iJo@n_1Y=( z3n72T#qZJ9)wP|))M+!tvz5P;piZn+8$X-|P?m5uzPuotu{G#;Nh0VIOw5p4Nbnts zI?JS#8>=)Hbey}-+63nJCqY(qE&JXvYcl$CJC^iy?uIqw*2FnR)q%oOOa7dEk+!<{ z*xjATuC(wZO33E0jX`mNr#}%;@TR#gUyUJ7xlB4N(6P%=HQa92gcCD&@NAQ3@Sih3 zJ+b|pw~a08C00yKWFdf+ALY&K=^02%tL~=8eze~f?W|;l#Co=H^u2`V_%Z@TFg-Jo z;615i$cD~*J}=smb*_Cp43I4R19aRHv$7TcXVAf~GG@NIx;ih3AvSbCwQnSDBEI9Xb|yr@=b!;vw6wUvKL=uSD^ zU$h+*7F}IMnL%==pELx4?p7znOo~YpAj7yQ*Kx|RcW=xAbarF^v zx}W=d%pds{kWit;b6Ou~*vb;xCijX?OW5CHeE&O!8tTmj$&>~D8_wF>-~-N!Lp{@8 zMPZ+&?>w1zBhN)*&ZoIAp1&HlLQPR`y6PB}MQ2MR^>6*zTD-ITgxp5`s=8>{>V@p@ z4Nk)>>8B4z$73twkgcyZ`3Z!0Eh7yk6DEa=;<_*ye>%ctSxL{Ui6b?f*_z=_Y7LYG3NyC5_U z$Qv6JZUO_4@#Pt-@X`KLN0KGkNP*S^C+oQf`JR8UqffcRQN>x-S(YA@;{T?m6Y3_l zEmFHoD73zSb9+T->=-LP_C^U=n3Q6zIL0WQpcX$bW+9oh_<^H*_UFEUzppQ;9`D8o z_y(Nxxv;7js}edd#|&vMDxd+Fg&TOrdCD{B6$PtR6w)|wDhXd$v8=8&g?1iP3N)(( z3SY1Gt~C(dZ*C}!^B>4NZvMGB-+nk)VYRT@dD-6a9{YX0F02~F0B&mFfF>yi=vIh* zw30?r(90`1^*u)gy1KfywzkdvDH!-HK1VlQ=_5tFhUdzi4thkBgDxh@F+H zO=NmW$ISB|E&z;ABgn*LrrAGFJa%?|wb<@_9v&!mNzeLtK#o_33{Sg|fJ}VFPo$va zW*cU5U)GQPetn(=T|l7-$q_0+(cIN{{>-r6-ClEZ@myu)wiYGtvq(~y$OD1Svf+#Q zaIc%2+s0ks5>B{;n25dOD>{v9?AzKXD-lrrLGj3xxy$ixYI3aK(|MNzDrU2X`m-3-^2t^0X@FC!V~;zUQT_oi1b`Zq`<^BS^OvxIiJ_TKIR;dOM? zHoT=e86Wj)B|C>H;id4+U_)-_g>QEtaJB*SL0DBcHOz>Q;9ZH&=~ZMiKBv2`hvf{1 znG!QTbszk&iYhOgmyJT3U1StDHEs0LjMm%teL2x7?RQn1g&&aZONh|npPSGXO z4MuvjQpz2arnlI|M;q=kfS7+{AfEyqA{p{9=()VO0qbsg*7?(oE@Lx@A3 zRn=>+TtxP=>XK5XphuR&rP0$H$twz-_?yN=uEG0@InWCAmqyoJeIvmxQBlOJD|2(d z6~ZGT%rP!5E=H>74l7xWzbG4PxQ(aIh>8Z-Lg=2WD~vMR)1Ctpk9T$sW(d?jyqz#w zJ654(7Qe#%2z(~Krm#YY%tpcN=@$z8Z|+QPFW{bkK4OPkAJ1N$eTa~puX%NMG@=8K z+#vA>JKIDMa8Cf z!N!%*!pw{m*n&gH_(!s$6_EeRaA>jD&$nxBetQM%ZS*a-(&v zsq1vE(|VD0alX;qW65vPp$WQ|oDmY>_JF2c~b}b}by|2!BqsVn^{+GhPsy91*2mz)8buRI0s&gE^jD{dY(*8bC zSprdo)UH#<#TW|K(g4(=E$RS^`bXD&tr-Ma=L$s@$NnojO!&61wKHHL!|4{Lz_a{m zh59qHwj;`a&BxgpS<5CS7HIQgDEZ)kn1ZtBZcI&0Prxy&OhutmdkI``vP{11K+|T*mr&`wdCEhHjfvtt+^Hl$NFm zW9V*=DZYpB-QL|ySq*5Gf;Fd?{86`>ZFmTXGSW)|Q_F&EeDS`|S_-<;sjD&SYk_`; zmacgD-~zlE_Fu0YF^O2Ul+PC`@A?i{*Z?;yt55h#mYfS%x_)xe58+aeDM22tuK-ZP zlbb8RKylJV6%W;tk4eNp*q9Na0#BoS7$u>WPq#nkxdb>(PG340Zqa4#zyzIZQ|k1B z_bNy_R%vQN#~Q>nh9r3mV#RnakJ`(-ICV&lFFVN5tM~!g2Y)=~e;Vro?l@((pLb|@Rm9&Qa&6?m9;Ubuu2=PwB+=uxoKW%vC-DnTh5)W zup0Ks&xLt;c~k7c75V3LH13Rf)e(xB1UoTeCMvHAMRBgFe-G5qYZ<}ih{*Bvwhmj> zR+beRBU~hg;>9z2UDRl%jY{T=X2GJ|Fp-_{EH!=A8Jm4`=^(O8?$yh6dy}zD9j_Zy zsh~InHJ3ZV%~J+RUwhVkWD#uco7((3@T@ezZd-o)-;Pmh5jQ=1z?i@F)<~KVqe$1+ znW%h0#-Oa+<^prUs*QKALIQ;=m~F5hjl;PCO|CtcN97qdcLjxo=kDdM#wz^iThdAY zb%fR5cbcDypPd!~alX`CdS@=I2`o2?3662)vkgBS=Gq zZY?G*zU%6R^r5&Nm-ICZI_&r2;c(8Fs>i{BoJzeWDI{ZebJuaX;7=FL=M5*w8dSyM z@>tH~D%Yad81ld0*n+lQvQdgdcwMB&qnF1;9%r38Z<4vm+8~YxwaBVdHZV&6G)e8% z%H3C6!!cf0AwXH@_5JY0fs&dB)(3fF>J))XtrQ`ufoMy=+r6C>eV4dJc<8Ov!=IGQ zSwmkTK5BYix^ILOy6P?O{V9AwEB=otmii~sn&+uV-uajPl9)mnrJ|CYTZW9lI;1^U zRc?5QKKt-)DSe?eHI=(epa>R#-C%7cKpWIu?YraXj#gGD;KJm3Ir2I^;IbNMrWjgw zQnH=y=m;+5W~1eaAvAh;@OyY5^Ik0=C$Q@JlE3uR%5#_ZtHXqNfSs((JPvFqRXkw6 z0>8~EmXzkenrp`Au%WjO8$lVE7?gJN_|SLhg}o9!fZxI`(lKZ;PplmjekWKFt=}+mrS;6n|H{2ow*K{FqUlO*e;U=DIVo ztpq%@5`-O~g=2Gl-rIev&k#2gMDAv^!uf-LMskd>*JkLj`9RT28_C^G|# zN!9VIY1{cw4|A}R-drjJk4VlNF2wyk-u1;{u+5`XTA>sym(t=kDg4{Zm=k!pcl~4e z?=uYa`Bm_Ec*a=Qg5{hw=m(a}x_!vt3fUz&?{BAi>8|R-vL8MkH?`DDz^qD0an6xf zab>sDuX?$`p|M;iI^WuVkw+UMpTlHv!~h%Lq7&!*-d*o@oM0tmlJJi>-H-ByMdSjL zJ6aj3`NA^{^;Of2z66Tw6!8DUqH28l>c7G+Ot2#xvB;)3I?BA1c2_bhGEu7L>x+_g zU58KT3Z8EzLiS&2R_v8&FhYwaWLM$~D*@iR3B4FxuOz?jWO=aQs)AK_`xTB44-4EN z9@?Wj*`Nnjf3HB>yxoF$yB#SLh4&ibUPSCCH#>$tC%JbvmP4#gT^pK~_U*Src1nV$ zyts5i9oq}#Eqf_O?$iJwc`!Sd^c)zc?@&nuVc*sXb>MfHxVb@HGRUZ)jbHOGgtarS zv~UPr1-u|**gLYwa7EIUKY!ZCR1FSvbPnKK`993!D+yi5TW+6fW+_(9f`^44?<2Vy zgoLj5F1(k?YY{71UH->VtT_`>=mff;bKVy#k9sLga{i^2m*2K5wy;FtsV42MIk3gr z#a_XYYr@~_YzBzq)2l9tKr7gk^io7W9^yB-4EffmCKK?5QfhAWwPBSX479ZV`@GAoqwP% z)mp4?`!pOL7njw%Mq}b{Ktn9cQns*S`4PN3oyVrrBv#i7&8vz9^G4sAhD4FV+U4f` zZ72G6US6L!;)LzP8#H^ey=pYpBa?#OE_-PwHDmwsbuw{g+w;6 zbIl{8b6#b}lI?sk_wp(o@`e;2u~sbZ^#*OgIuzk|iZP^@vT{9&)y61zG_l(v5Iv2f z)pj{|V^PuN?TJARz866(XnEl_pe-k!qHna}H&>U;Rdl^uh=DCNgb`m>%_g+sJFUh9 zEcY!VUO*SVfU9sV02UToWQMtqRsLF!{`;Pq+!nOHS78ngw-FI#%d9JXo(lo4{*89m z84wxVOu7P|siN6)5pPFV4kCfeBaw;uJE18kvbAKlRj=YSrK6>=Z-Z>nm~Eof6!h-o zn=qVIz+)CN8#8%4e3{iYJT$yl1?L~y-@gb?9o_bQfq6zuTFXq-LKb!BCm*!*p@r|( zudCT&cc19^z!8e{}qd zQazvpYpxZ|)p~o6*p2C&mvq0riTE1h@G@LJ`=5YJLxn-An7~&Fs}wJ5OlOIu&3rQL z4rx~I+{r()im^&wFbE}t8g@CKoWxBXm0{y$-5oBsIjve{oeAHsZj2K1v_TqGG+nNs z{?*!ZZwqF{AsSpBOAr2%eSL@daEY>yUK?FbE?P_bx}Xb0LQanVhLcn7T%l74S;eE7 zG~nC?w7=hSD{GhY{)@Z#J}U>Wit=@_2%@mHwcqRufYcM!I&2BY=}Gs;XuDoLy<#~L z#b`&7g!f=oHJiF3Dw+dN?kYlD{Dyg&`-J$spVqb07c!ZhQ^r*L*q=CRzmImTyP66HMe#^%` zjoTbdb%l7mJ~-*s`Ng}JA#icF2x(o8H1$&DDKvSN#XtV;cj8r5s%4ulI#$J{P-9-| z1gu+TWd>aCj1I|SfxQdEVAg+kSE8LB)tQ{cUK6l93pt)71BBYMXQvK38b@810k zSvJaqjjmyvB*A3EQ?JH92XV7~Kv(*Y@`Uh>37AI@DVCw-s$rEK3hv1!fBNtxvubDy zFR}sYFBce;O4Yttcy}LWcv6K$exZ+oxQa_PzW=H?8j&)-hbB=lc70;w+ zW}n5Y+Ah)1&^YmOw@U#<+ws(qN9_mE-Qz~u+63exbDd?QmUY@pmPJgBA{M#IZ}G{m z{JYu`PC1c%bXGgrP*CZ~*1CelatZ2spmE}5EAV{Oq+2G{<>1#GUf z3O`Z+0FhY~*cjyAn=y&js$R$0zOUtj)o7=KKRU~C4iY=HTjWq7aR0kSR6Z6N>L8U@ zMELsayuA&iVG74cggkd5u5=P-NR1%%WwByO3+QSYIu;r_k<-ZC5ff8%49CklT6w%x z+OF9+G-%YJ{m;UlJo&|GUZXu9sLeEmhV}(ayifdizeCH6hk^3`DKl4b9FkPkph*}_ zjjMb!eS3RL@SSwa!lJLQaCCI^ueM*dk!VtZ^Yil*76T&E_ob89+7&ZrXAzm1naEOm zb~fj?wu-Ezq@>6WC*yx6FCq;16q_D@xYd_Q$F#q@`|lR!TP>rNldTjZcD6K6WFHor zj+=Y>x5>Hg|GDYcpO>hCC)E?x6UwFPL;sTfQV00z*)rguqdhTpDKD$cB@Qz9-}dcZ zg4byO?zb&stpERhlL5HtPUlH#W_!r9I0<>w1QYm+_yVn>+2TNmeS;3uh(rRNIlQW+ zciN%}&|3&U$BpQ_rzdsrPMG}jze_WxcpHIA@lLN1NYvKaNxR`2?$nX{?mJo(OM5V&t-pe%Doo#9omvu`r^ilP*_>a`y!_uawUQvbEn z=(mFS>coQ8W`f8;^|-7>WmVz*HoKM>DbiJ?kV`xRkQxAd94|v@RbZP>ss8j~RD-Jl zHKd`hkn%D0Uz=SP%D;U4+QlQlBH=nelq`@J(@Xr9MsE@KOu-OS6^MO&67)|LXDA=|haKWJ4PW2__8Pvu1u-ygR}`*W-So9Ce|A51*K07M>(L5;W~#cH!sDvEj9r znGPy|$VV&)-vDT6t@?k+ddsl3y5)Vi@=$>SEmovJp+JG+?zB*(xLdFy!QC~b6etj& z6c5(m8r;2Tf#B{Q++D(d({rBld#~$VANUYRvRQlfnwfiM?pw&KN}y@KGfw}2&+K>` zN~meTvfcPYl$trfSH_xW8u#{G(MOr#Z}U!6aMkT&e9oDyemy7smPNhkChu04 zR5#cLw_oT5`tfPwze&9~(~BJWx#wbFE93$N1+#OYiWw3}Lq(rEf=Ss@2m@K2N3+n4o|O zBVi1o2rQJcVK2W)Xnrou*pP|2cE!7LKvzAv$qV9SiX9VXQ`nokG+Re$gheo~e>m~* z8T1+LrxzQ!e(aGl5YbD0xAhaie(L6KN0v3!chljl?)JI`c3R)nsIvFmy_{s{`Whxd zm7L2Gc}n|xj)Js!KcBnp`ndTXc15}7hlwhV^d468%g z%SOaj;K6oOCPHV8N3^}1%oj4sF^||4WN8*$o|NV~3NMsAPXMoNuRm)7V&Y zk>PY1_^mi#&)^!@N5A*Awa=D#fTZchwuypECyz~Tm+Qwj(I#xeDOF1DQ^@fE+P8;q zyVdfFO-9=zM2nAZ6fw`pmqZC-Vdc9WRu|a#xdl&0SnBtaz6CfnT}_KJ({Xa13QS`k zAH-1nVG?jIFGRH1mR$q|wX?$F>b=?96&x!(TQE@DH^=YLsv7!RmQ7l~*@eIrsnTXH z>*KQ-BeAmRzCPk5*q#&JX4h_lEY6Ds=j=HrNFsS)TyCyI=qQqx;(DASEgy8#YEV(E z3`s;iG*-6Nfp|)=RO*fh^!Y!Wy1*H3c8hl1Wm%nn$ZMhJJ8Ej}*9aGFy5wQ5H(n}Y zmDS>laP^Tbs&=QrYK8fXZIty3goy??BENj!=iIC3hm4CGG0ZSt^6OrE^fj*r5ghCnYb?LaZ+fWJ}U5S)UI-c1ilvoSL#E76H8OnN`B7iaL zdu;H#<4ArjiT?1TL{nPcpFj5i&^<*=%=b?(J#(9Q%!xHWX&!YEdkUv=LEq3xJ(^IsD^qu z_A<`$YdJ}F;lWd!V=OE^#|w$3`Wq_F(-2$=I2lAn)l_}hOdZ>F)jFIwcIe&rkQ8qJ zhOziLI^NUGMLUR`E=Q`P2xB%v-*u%+_%fbWINk^XTv{V6m&{ z&P@U~_n&%h)L*Klc>BAjG^;6`1ncybmUr-*k!K4o%n4KwpJ2H$71g+k)t9zQKYLgSKAFlB#%PP) z{wy{6v;tMT?Rt_pIisaqfm&w0I2nX3G;5pj>Fg8i&WdjJ4*Rrz1?5?uLN07TKFg)~ zEKfs1GdH*E$-OQS*flyaCBDps|5WfagG<&eE#EmEJ|-4rbs6Q*!EO9ZHP+V$!*73h z=0(B_u~pI~fXMiKO6Xksa9lcNKA!Zz%=b;~9}RskT3&HIWp-xKTZXBeu5ax}=c)qJ zVbRBIH=)vs!HI&?tkiOg`S4$9HT8@~C>vzVD1{l0th|hVCH-rT-=GCO0~P&ZFG|i2 z=IXtIdvaC5L5&xFhl!1xxW0*tWJ9n>dcvbVeoi(XnJkUrZgw*0U0@#mY1iGGZ7W+(`47tI-G?uQ+<9qvdmug=9dQQ6NvU*+<}fJvyvVJim7cJm zleh)H%?~TPdLG6%%(m#H^m#kmP0&=eNme#SDz11E!;J8CzmfNpppbz&YCoUlxKFZeWP=Ht||!zxL3 z(UQ>uJZ--sGwXD}ifr;pY~!1Uy>f6q5Iz5jNV($LT47I7z4JG$vh$^*iH~I^X@@~C zZ;{*#w)70bC1$r05pz;xt)=f+7sZfNKL4@R#CEfrkawzS7o$xSsuSY?6r8BDQ2cLV-<*5vH?+; zxdC{Ut!^)uuW5(a@m0HGl?7G>Ncel(4U0$yr)W!2nZr`oTeaw#>^+VQ7G31$vi8RFW=-shu4xfEj+1!D1lVT{{|tC;dIUB z2S&Hzezd%w5Dw&8Rb%6I$in>GbhZdgzd>bS!csg6pCROz*a7^FEgan4o%z7;S3_ewzPWx{m9R1$>fn^K028{RFS^!mP49~O#?bxIton#KdL>#w?5^@rtZYh(zC2V z1#P)1H@I~=X>(KpywMkA0w+6fPfyD0FcszXy_UJJMF@dNr#PCXo74Ba^Bor_8kY_-~l=DnV$fkYG;>hV1?qb)?zo7 zY^?vhvYeS?_%qwsX`I7m>5JhL9Xrb1Ocq9$FhW0e1k!H9G#vI7rvZH=Dm=~WakILETXdbD&fu!0<7kzt zNyfW*4+0DqM3zEKhyjb<4k`GkvhlNrWd;1}ycK1#{^T9^0NMa9{3-zNV?bYbs&3l!9;UMMn#iBRB{A%zb9ked+0dXS+kFVwLKvc#_Cn8f$H)$h;ekj*Pw%ZD!1{t?%Wv zG!c|1wEdu(m82las_*||0r}@<_8gf4d>m9B=se;1##FcBaS{W2xuJyd8F@3w8G=iE z$IQT3MiJw|h`suOc^JvhZ`!goj*ElB{*W{!>eYE0tGqKl(5JB$?RUJ@=&|1Rpi1vM zrmyC<4>?cS1b#>1Pl&nb_s9I4t2aJF(|dP%Env(4inYCqLUO)2aGgQ3@$tH^iS)en z=UsV@m3%B}Anx?Y*FUAXbb{MWhIn~Ou!DcbvaX5AW2PxIop@HteO5#UQ|F425KxN0 zWox8rxr>8Q5u&Y-RUo>7`X4KN`9Y&jcn~I(n95S${#WnFUzNBJtvTb)0EZdr1w7nFK%vB zuf>wB=Qh_Ty!~1n7)a0I2T}&X(>qWH$Qn*@m*$Z(HIXD-EQ2dbYrI}3HCMjp@rl&W zpE;Wllg9n5H*}dp7y3}9Z5QvcrE+Sf_*i#F=z=;tw)#+b@;J0va-u_V2m|MiObW_0 z&UI6io(+#1ky)((EuO5YneI*9{l0>R`uc>y=R}FUG5H}1jvH*uG3l1#2&i02i~xj| zx1l1p&uI7fJUVab70U=zy8HbdKP6iU5Wqqo(P@9^gY>!LtAa#r+9^kG^Hnsjse-9Z9QquWN^=P~>i2 zUp3vLI0Fxc>4~$9M`cJLj{T>jy;z&H;XFG+r2W<@`bGG( zRv7`}o%buVtH+J#xr*jLPq%E**yC$_OtgOnX7O}((-WL3jim{VL1bhDo>&+_bW4tG z?R!5T8oeqjkmLdX-5*CHbr8DtxLr~<=5XPhk0swWH+S}EGHyo5D8Z^0xn%i$!y3BY zHC|R}jT;g=C?GhXad`>V$YD_Kns^jmezw57O`+(o&3U+sFt4HOIY!3hzPdsc-uj@9 zr+sBd*_Vkd9kG9n`rWt1b@0-QbmqenH<*a83Fp}=KY>kQLyyYl_OGU^Q{4TR(uT(o z>!s5qc6RDtZk3wIcjW&fhRx1PtyWo|r0RES;p7r-k>cB z>1cCFHzq=~X^|mSnmVy+_d(zpxaTMW^IKYRH5W^bu4`YBY#GkfPB>@d{<$+;sSTM_ zb8}T2A{H!1_?#$#&nx$1mZ9WB@;JvZnL>@w##NeDNRm(ML*Ea(dMR4HS*df7nx^cL zm=j&h4KjkhyQl4&SkBXIg86|T>)Hs!15U^k9YLt7W;Mc_Nyt8abDdMc;LUS^@Jb-B zx5NrfPXgs!Uf_gCmt)ua0YaA#ZPY(rUG+p9zyk1<8h z;cnw<+N+clbg?q6!#^kIOdl?%O-g^^U_*b0*NI#T*)Hle>r+U8 zpeL=>pu01-G(c{)l&ot~dE$Xw3zYnMaG&@ESSbhc; zw^+TOK5TZkJhp6I_lH^@CN}X^-Utf3t2u0ZS$!I3DLQW2#=db>Qyg`D+|sjp5q^KR zzk2O#@qogU5C)mT(3So~wIv9tNhW_W40>I^wg@Q+`filVg{%Q1`Wx>v$N@I5M4q#Hq!u!qC3`Kk=|i5g+Slvrsp(^hwIzWPqjUPclxC~rv6Eo{ySa+ZU zORc=#+4F7VBdydSMiu|U3ov>mhJ<|;tLz7rsMVf!SOJe~xG`=oTTfA~9DdF!n5<(U zTlek#ZPUj^UsGcq4F`KG zciEK7jnR918oNKt0NxwEH@Ct*@(e1yz&y&rGLbGO@1XDgb&KKt=Rqjv2v>Q9{n2A7 zx}>A&$Bw5q%zp%$E0>vogp&jtQ@(#Seof&Gr*q5TC)DimLRFFI>>z|r=Af+F>z+cu z6e?rq13+D6xcz$MAL17>tSXuUMzV>>(`8Y8)2(Fw%Z|0*H$h7;`8sm6+!y%?asiNd zqT4{g%n-DpjO6BQl=DFwNx4FsxhBfLCeV>Xl<-<>j5|lF$=CsWXtfh% z6^ND{Li%UL@p91*gH2Uz(@N_=3VLB);iGdi90}s`O-h=t-bMC|p-*9G@Da9)9wL9N zRsh2?*9DSY=;G2#!2TZ_R9jma<`=TjjGoaw-ftlH^zr$m4ZsNpaN`;Kh~@Xo+lx_K zJe*yVnwCBm{Nv>866anb7nWgV66tw$21dz84@Wybma0Dm&AUg0#yM8*+?~?XznpSR z7$ugLF#HpSd6_1dM`o_~cqhKjNJW);J6zVP1C0|!+8<8Hb-T>0oeH&dP~{G#ntBA} zLOKSzk{HToaplI*V-O`>rn=7bm)7ePe_Y(_F~0t)Hjluq2`hdVD?1C!X%&zlMD;_M zqheW11Xbn^<~lXZqBP)Iy&_ZWEFd~{p&j(PlWSCHw{+cFd$!!pqhOU5TkGwrKqB9q zV7kxqaWz*%QQy_1Iya8J%CDkQQrsaPTMh40FYrMWLsfU_wIS)y(PbjxClhfGMpg9{ zfviogW3udaQzjkHK6Rsw_eFA_&E}P&9QhEeGYaB@yvbx4s;l!(6}p^7gEX|!6t^MW zRVa?tXpH>zH3uHb!mYOAwAW6932_d?{?yAGm4|6tAhNAP9P1w8VjHz7!EX2EK$w7n ze%()qxtF09^dlTITw&$VI1DmyQ6+S^Sax$tYRc`x#)y6P^2Hqqy4Dk&V#m7c6_nsSp%sob`s^o0X#Vd=* zSSl*qszQxYf1kXu9H}_<(JmVtEr=rfME2XS$c%W;qUw{qSYyP>}Rz8wf88 zh8jjS2b=L8U2)rjg`T{E|0FoD7EEjw#V3y)4M?^5x6yG`-z=QNH*_Y_$X+>W;JHks1-n=ibR}6Sed&Bs|$j> z6rONwbz0qo(hddxpfX3eR`;{7^;f1KGOLKane|h8^5M%zflPDz`8~Vn{GrZN5_Va$ z$97K@8_{KF*X1W=i_6OMWfD6J zAP{4g94@3`Gqd3uQY`~%#zB78g?5ILbWGe9CoY;Lt2TCxdt>}>gG!qlQhj6UjNRO2 zRNkv)#PO=DQxN3<+d3;52dM%s18#F&33&f9vXrwcu{4Ex0C zp2r==nyp!T-0Vd4^*^eGmVL^f7C+r|00^@Gqa#4AxMjIXx(WNNj!JdEZR|`l>;Dc+ zo05^!?(Cj$aWSBeL3Zc60T6cMqMlv8R+J>Y39mG(-F*lJtKE3IZs(wNXU`2b-XCmU zLA5~eEXZxH6B-D^mq2n?_)@i~IXox8*N#C+r_f`X3g)G;zP=*A2H={SUkYjVVV%b2 zBmp;g?L+X{hIp{u>>uc}!cE*=uV_)zJK%^M3c21lD9ECs@unDuDx>n0ji&uoVAUs0 zd&R2jWnfV^ski0JIrj7L?xgGQ#{@Rc8DfQqUL-63&&gc7R5!FXblK6Xl}$ftmZN58 zcx~oO1IDhDzy7RV0`|uA9d#ia_J%v0j$HrIw|1_>2fttFc#jcYvlC3g$a;>#iH`;H zYn&EI;=Fn}9vAtK3yp}DXYb(yeBQkGP)~NI&p)|*nwzP3`Oi1WTHy>Oi!puQt?^rr zuOuYtjc~eN2fyP`oC|*-a$D_A61&p1mfktUvNsl#MXK5rSCR_*m`DN#VyaISZ@tUc1K> z+Jb9AFC5kphSdq(`{gcY8F~8$8&~wx?}sf*oLvkkEe9$}lbsm3EUT1-YGUo9R8=Ji zK?|hWI0c0*ql*#sie?#@29#jyC*Sak?I<^4ixY)oOAn>iB~5MARtn0-Br-DD!mSx3 zspAr%#&e=hAo28}{vdMg9}blh>5k@(4Naffluet_DUw7yNz%;|w zKrp}&^#xwj-ak1@&&*6V%id?wS0|`c)W^CK$d~ylbec{olf>chkk*<|&e#J(!lBn> z$PKw(=cQ#zetqeM$e&yIrd8P-PAimR-jF=u^u>0Dpqp>9VrtII?{V;u?xkjy>!?b_ z$Vebvdww}O`n{74B&JbBH*xk~Jemq9lW|^7zT>qj*Itobf|wKbJ6+Y#gPl zpd7Uec$k1{%5=fa>3dG%z_FC?%8ZnbL_Pf(kIngIdirCK=DBy+1AO3STkA#eN5{9h zoP94a0}g?ax5>wDRdzwC_zH9}r9E`66jmYaOZs~fukD#@t<75{k~pq^i}%-W5moA3 zG;7Y+U|aDL6Hv6V#<%hba;{_-i?@gEW^GfTA_$+8bU;~IVA$ai4qjcNLQv#{z=`lq z$W)@<=)nsTi|d4jfCm8Bme4kp2%5mL9Qkm6&c6!>M5b#+N6kFB123LyY3?Ec=}n8j z|H#L=3%CX$OZs>7fcLL<|HCTujl`=~r_+OJ+{f0ma(QKjmnNRv?xzC|w07aQ(?ls; zqO(!n)qdb|$gvWCM7^m-CC||%uYP^$sG2StzvnIAcjoegsVt|({B-uE#65@M)}Q#3 zvpQDd#&Ov!_Wh9kT`PU>kOn0G)w4Ad6-^dXENze*Ta?^9w>VjGZk--?q2D(1bWMWs zTAvYC41W!UflZDTm@cZA>JoU6bi-f2_(J@>SL>T9CH zx(fkY^#3eCz!AZ?%P#|!Ngx+Az7GiuFw=FtEZQ>)l%Uzz*vp2UX?{(^lkz2ZlJ#-v zr%W4Q?{mr2nff^_)Hgpig8x;Lrq6tw`=sF_NYX*?oUOh^rU0y}JvUgG+HkrXRRt;( zo=rV}6jr{QHk?xxuh&p1ZQ>Z2E#kQGo|nTStFybxT|chuCM^2XAV*atc42Ex>2u(r zmwcgP86NZPeBvIYQ$n98)U?0xAyvx<_E~H<*WI~%6-F~~MwuJHu~H>h3O`xvP5DDn z0uZ^btfopU$n87uaBOiU0A0@nz^wZud4lykf0E27Ll~odf8&*_>&>g_^P_{*N_O#& zox@vpSImh=F=lJWE>o3EY9Z!K4#Bu8 zHUuNOdq&9CXtA-i#OW3P2LN!trd8B#G)bC{#}Rk&{p>D7o%sNZWuo|Oxag|yc`QsV zCaOOcfUHUzd;)1`_ovA%%kTSshWF-_YBLcO4`yZVpDb3@k@AY`aDGH+@IRh%Hc&`M zsIT^JoX9T^mME%bE}Q7*X((seR!!mf9vKe-q~gKfO8-EIH50>%2`8WbRRoj?ZK&W!g8nER6`KG?FHJ+sTrG#y3oKOi9_BjWh7Z3}|9X zjRn~>(U@(;VO@VRq~%fNk20IMPEi_F#%jrCHSnVqN{WukD}c>*WkDHC4PazR6JB3V zrPYe}U3;R{J6Yp7vZ;gx$?(Q$Br{+Qs=5hLn4f z=3z#lLPLm7R#{=FujvKmHLr@1)761qO<>_5pnR#Es9?R*kR1Tp^qj8%@ z#)%?8kJs+*cA0{rb_tDJr){19uUotro)M4*tZWYB`reRpJ~)OUnwh9<`zFmy>?T>% z-=R``=w?kjW`P2|uJ;CpnwHyeg`ntp!FCsWuoycq8~r<(nZSY{s4EHca%QGjS`XmU*lD@~PLP znYMtSEG~IyvS{L3)Bd8DujguER(IZy^9k;zhCq^sK*QWb{idd(Xl#RvR2k*Jw zE*4nhcu?a_q!@BJv1(ArB0o-WF1JidH4!N(D`IOC9;ff{2PoARGSCH#9P>y>!N0tNrbpPH9^eKlv{!jzD~N!uj1xrFWC!jy|m( zqVDilsLNyuGoXt_Thz`>9Qmc|`)E_mX4hFFp~xm}Q*Hb#YHM>-s`^8>4;SYc!lY+r zZIKMGZRae{5sT4Dw}QrZ5ssR1k{a}D1saofm<4Q1+=1q>0UFJt-E>iO+q2L=065Qd z91heWcE=T)q*ZxtQDG-lbI*y%-+pA=)Wy4fjXplRx*bd4V5Z2 zO$xd}86|mK)C~U2R@V=TeAiQv+@@&wAho_-PAj-dyX@2&R`J`#;!Sd=1Z_X5AsRrr zIOB>?)ctLfvg;jV((Xy~fQk{0pz2FRW@5WF$EFK)uo_~Uf6q0EcLNsx;vG`(cK~cK z*Xb${#spXTXjj~HX6{f{xl3?9wr%J|iS#Rp;Z@ z9g->1;&<$(sq4ZZ&YJ>&tmD%0n2By3K^jJAi0ikUR2Gd+hR?od*R0J!opH$;HmF#+zx;+*d!7q?LJXHVHe+Dh8D~ zDrzfpx&{i!hN}GUGLiULUvHG16~qN(V)TeJ&(-^6%=ApC=LAd>EA5}Ir@e8{VrhYV z<~pF8m(8}r8~w2?cNom>#QgDs2XbC?WaleQy|s~O@}uWHLqUgVPQSrz5()Oj<0@96 zWe!(niEQL7dX=nqz{dMbBEsKv2<~fMu;m;xCI<;-0KOecc1+BpQM=thnpIt)x;UR4 z|A^_~5>dpBo#q)w>6<_DYKe)tzin>rAa3#9g9=`5$jt~AVW(64i*({5L{7$dDDPII z_a=s`bUlk=&swE}Kz4OUf7$f*uIlzoGz)5$rHbTy?<`bQG_lGlVmef{yKckac8Bm- z0H~KiuC9BI=^@k@LG81`>aHh!k7{d$o*kk(<{(LI``|5ye_HOZG0b=^ly#=qB64>G z$$Y9ic}_jcfI3%pgivOFK1vZto+mEQW!hST4BF8EshSc_ADJBq1n#j^rFKCXMsNfTBZ|9q_D;& zZPx{p8|w*te2xe3HKM$3^MSS^1JN5JslC(c=xH1D_!gmdN>EsI*D9WeqUy#B`NI=o z3c>Nwpc=TuxQbpY6kDg^s_7hj8#jM)hE3W5W0+{TjjIxMoMs)=xNJ{FPtBzroofab zgB4EYtBy_`$#-^=AEi$}BWN4aTwc(8W4WYA##pDLp?mbMMyFjNBP>bZ6?K(LL@8v% zo{)c}IPggB3LpG^9_OxG9afl+_b(P;sFPNPmfu7B^t(~Q1ZHp-nZT+ReV=!2i^`a< zKH;Q7cM9k0FEggKB6t#Qwz7-d%FlEaJIEyuBi>#-{-dYI6Jc6<5_M~RwS98BX%# z>I@7rBcmhA_P#^)x=c|4nRG)u+R0J8_NlE;Ls6_vL!;NV994$Hq6WrU-xmu>GK&P#=Gg^uBeE(QODc=2?Jxy}UT~@?)@=xMXkVQkS?%pheK<9j z{!jIZ-IR?u{>6{)?N%CslK)K9-M*LYiC5Eq`Yo-wi|=;fd$_BQm9dSn3j?Q-^(;q#r!epVe9auF?%um+yR_D??K+w{^NZW|)Cb+PT_{*xXOysg zJdMDGh9B~kwVQaJ?FPlGwiEUXv8Z?DD#a$;9Oc`w57=xXNSgKsPO4^KtL6%c=p;jy zfd2bcMUwvl<+EWx8O@2*B>vIApBBkhcT={4Z zkT%`?7BjUZY{KcOQ*^&;Edjpbo*chzFd)%5eXt7ZCHP#X!`paumXnbHHD($b49=Hz z!qp@MtHN`Wts0BipTa%}2>Vk4ay6{I@)- z>=z45m)@atMk8@UGfNwB)d^nBAFL+cU`GMB>>i;1=IhG!fAXdAV$UtZ1#-p6i7DQw z=FxJPN_kny`cxoFIxIT|Htyb_a`%R?eZIS9`M)dcx!?N%K%bCrSpHFx0JhEQMd#h` zzU1CB{-2U+GuOiE`&&XxWvV-qVLMqMzN;PoT?#&c?J*NWCI2&kMEd`iY?YP&@@EzI zY?e9hoeszam|qsPn^VzNziZn1-;%Qf8iMKKpwMTw))AcjLdy$&{{6yd5AH(Re-~RA z)yON360Pm6t@I!7GE{=A;^JD&xrm|IVPSfDdJlyF5vGf)i%*$DfJWUKQF4VBL6Ae1 zay~a{m>gZE+h?A{Y3x8?%rU*hc)=`p)DlqOv9sG-izU+Wt!oJNV|M~rNt<66Hl;R2 zLPUf*p`qDLq^BV-u z0Y;J0k+BmWX=)-?{qpy8Q3r2hHPyhV6^>MIp~^cYxFOq4Dw_E83rV#%FI2)t@LEfPsa2^Y2907Y5W)C~HzAyFc^od25HT z*D22GBs4B=ycJiJo+vc8eic;+>>|*-&2RT8P>eCs-n4GEFJ@!ia;z8H{JwDd8ZX#n zO4PfIC%?;32JU-; zg=K08-I=RNWd7&TWA?v$0sK%!e#JP7`iVC=4TU;`zxN5BSp%&6I=OE1KB;#eaRZx~ zJ4mv~uE@?jr?7CiqEe@j2lKjo>dW_Hw#zt*WMNL@qkhnZ$7f5&pKS^LL)SsLl-vnO zfTaa%4Vn2iFdz`1#o*!LVPF1j&0e+cT)yIRf=x~yjs_EAde|!|=~_eIzXpao0fr2T zcG{V1g6h5$?kMKC*qE2VaPpaiwzZ`Uhx{LD#r*vIbnfQncnfoLL#*SCyAgxGYq*ym zmE1~%LoU>-VFp}rvvXi9Ox$T)`es()%Ymcv zcxqrFjD#|1XIm=So_EzL7XDu!)M)rCM@H%j{7+dns%?hfNx=Z3V{V?)Atjz*Sl6PY zt$cBjZLso^VBah>BwV)%eGJICc4iDv6=Bb`K}jrT=wrU& zuyg`ZafFEq1BfkA{(1wAMq9(-@JQw-|9k~RL2Mrh%w-lk2?b#!yVhzJ$}t+>ZR*`p zkfb4+b2^*lG&9|Qdl}sB+t>*3eTZDFlmVluKa<@%NU{yQX1Q$@v(2N{pkZPBSKDRi z^X687C+S)W)td}xvRLWL<*IoCvQYjHyf}Kga=PZP*K{zs)6>&xCeOWnyw^Ksh3yvx z?!oCAFm&)Lq2N1F)n>7?vh>$9eBXD#W42XQ>pC?XL%a3G706LnPC)jmnS{tOxw>?` zMV{bti?i;rMbR>C(YGD1F>4-B9obL1x3ri6;la9(E4P()*d$3w^&A|vwCMjm6ID|` zGEppaKqrP3g;!(E4;fY*5ljTZ@n}FaMsTm*=L^Zw^747`T29>>EPqlA(0njeC%k*} zmsnWqo99oAjMH)#meUW8PE0}iQ`VIL;|d~CJ238|1ivOWTwWeo;o@SE%K%;0a;+Cf z0tbj>AyM#0zo~oLZVy#;GVW-#DRh7;j7ylT;%C7OBrD(I)>f-XB!{wZj~cO_C!m1m zI90peDx;v#-P2=scOQUd*q!Edt^O|V$ZOxR4B%vp94TiqXk=olNBv$$AP}`vwH;Ym z3k$Cy5Qwcal?W_IrFH1%&|wH>j10HkZcZHfI zz0IoNu25GWwVq@@R&n!`ajGmoKBfk#kM8A2mXxr=;Z)WaNZvW{-Blz#x5Nqh$P^wC zx~d4jw%9}akIkhUJ8DiS&;4<(a?Xg~oH$?-71ex9s`AI3*Yz1LHa6y_3+-%4Z^0&v z6itA*p^qEvOXBxOa}z&nr_JOfKq#17EKU;>i`TjCWZ~m63LWoLp6$+R>Zkw$#X{ca z=CZO_|GRUT>X^z6A)sWu?Ak2XZ{y(xPRODf4)u-e3q?goe{)MNSl!-5awEW~53jB^ z8O}--xi}woo%>jO)sa}_aA0C&BnE-gZESCQuSZ1KBk2J>j&X!uD<8{u*6ORXvr_!q z%kk{$=x9qGeV=)RZaccc79>)xl;f0;gc~N>_A>IBRqn6`VyAc~@ zq9C(M;ZyE{Ld9|yx(&S1gaA)D;JKwJe4(OF3a&V_;EZfm?b->^=J|1{H+cMrdK6;- zapxC4s)yG#^Rq5)p@{5NQ&$a~+4vV&&z?a;BaD0Yny&8O?eYLN@DDn>y4ucMb1p-f zV`NMnjlMQDrHa9|8lC@)8B~_-aF9ryqq=Z{0SC%tCfmu=(3nvU-Ng(*@D22CAzbgc z?BQg~+vL1lG<@t-`mdkU(9%up=w+IkZVM5GCNO_*r_NP_EeJ(t(2j4BkMBB2Re_J( zS+AYN-x8W7dpsIG6Tp>lOO6| z_GxdfhrRf}u-EtCYgu65H2x68?T+1qSiV9PGR z>jM5mFidw#GOI2TaUZO~7=tT%_?q`x3DUOYD<#iCJe9!yOC^^BC?&1-H=V-(YrD5_ z05;@WadBJ!Fi6K6*>g?5kpT$}k*(%&H99c)g8^tDbHBV9`xgsOq%ol)oru#MV9^PFCZBR}U8Aeikn#}5v`B4RP@5xp*syxYTdAe@p4$`eFwE$C@! zYHIe!L{K1C!cXh#>%F)8Uge`pyEku{u+-NX9G&g z(|Ay}m8l^U1A${DpwIi~@4f+NLGIUiEhjaY1xKH3TA{`}x3jTnJBLIn9v(U>_7vux z72%hws*bGlJJL3O`FJjW!*W@94iF-!HmYZJbA41~i^=uLnP zqM(#fl>dx%ol}Hp^utk^EFB$l(jvhpZ(sZBJkfo!Au#r!;y%R{1$@K$x6IVk@yzid zrsfYxyOuffP8F8K0bwz53ldLp^0$@ugIfN3rC%6=#N=JqQ|Z zzNpn{!AQAU?SYq|agxowu>w70Eabv8h&+Z0__l$^wW;I}Y~H_@as1h0m{X89wly6_ zF6s9^M>!vGsu{Dw6&m}bqssqisq5jByii!Za6*}wq5uk!M;I7%v~jx1fMhPCopxl;w8d)JaeG4`*#RIsoYRoQ^OHG_0(h z38s~qk=mLD{moiMv#5`jMlJah4qK|yno&Q!iX3= zt5d%su&|-w2B4m;+2tKiDF=o)Qz13JHx`x^u!b#S|FSx}2?T;Agg-&~uoah#wRT<1 zR8%dyIJ{n#r3 ztzv62_E7K;UUOG2)e0m7g3nMb)^JwIq%MTO>)r2;R@|5eLAa7 zxnlqUA0RxdCOsoyBcrNrT<4*)w|lp{b0x-7buG=5hr<^}JcxQrBx7YHJ@Z7OUH#uI z*nR0=@Gzaw&}u6;$$fAzMhyN#x(zS5tta7{1nR5>COg*#X0%De0Cm-hO&zHcgGe~u z(*S2Ez3cM?IXa#57A7Dc+CMotI6ci`8a65cGK)Lio%`tfGBF_{Z(O?@&So@~mH+qH zKap-*0_f^gJ_907+1IO6)RFY;3{(sZxjnW;IR(A_qHw#TfzR<8WIvLUUXc>%sHr(` zo3DLTzq;NMWxcw%RG|_SL2`+ScWFXU}mnd3UozBM*> z7&f+G!c%UmQzo848ep24`LFY%{0kGU0!zR3A)vW4PpNGBkUPVv5+dj%GtnW zHM55101*+Xpu*)xz-)+ubKWbKOjjKv!9dIsjdhx=aR0M{t-icXa;KRxbv!ZUOH$I`bAb2dcNGdH zF_`-D#ly+W%R8qwi-(srb?$4Y)XlYb6doSH9J@W+yQ~f9{61?|+iycU^&5~NXB+HY zpre*es|k8uWt;ysi!Z9}dD-hp2TZd&Zw_j;`y1jeF2+>AGYsl!SS&JH z;F?T@`IIkfj`SIx2_FtEgZom3^~H(qjldV82?0HG~Y=e=)XR4nHz;XQM>Yho$o zg8YAsy>(Pn?fW&Zq9`CDEg+!M-Cas|cS|?Y&8U<}Ne&F%4I(i#2m;dGF?7R74h%5! zJ3i0n^Zvf;`~LHuKM!ZIW}Ue2>)Lx?d&7Fg(#XAldm#HSmIGwb?sw?1l8i#q-q%uB zR=ci_R%5$9ukHf-}p3 zZ97=!9N_1t@s9C4cN(R6G5{s@b#?Z zZ<~ldIa2h=ikZ{Q$xZ!N4W?@OFWCZE38fkl0BClOyhMhFFDwX~IF?U4O9 zlMmV(pXcG>N4HLo94x!fC-fN4JJe%`5jJ!UlXyg_$|;%Z!N$hdc0WnyegpDLdwP1G zJba+YZfTkKx1hYfySv>U*|VRwubsE!$29*cA9uDzFboPxIRo7A$P2HgCD@gs&vUaA zi(Rri&cj{*gMxn4iU-<&E~1O9!-iL8@!E&Oz}--0qOYy&wz|+zxFXDM^+NTw>1=pY z4pLJY?;fyN50XTw(2_G!k3-WB92W5?OGFww8meZ@YrSM-%ShO8jhg5sU;UY}qXiph zosS3j4K?QQUbwbem32ELW2t2_KF{4AdnxFd3Id-hVPi2d8P_;5ZGBF1E7KkT65*k? z^?Mf#sze4ADKa?QJcI=`HIXj2Oqe0@nnMlzVvB5STR(2qC(CcvF|ggvaImF5hX6_2 zWFMKL&?r$bwn}ADdiFxo7R*-5pz`^s5|&`<;(uJ6?qz({wYpL-X>zHe z20A8A8U2cem;jdS0Jz}v)`W>!{nd2~$*`Iip8yfoqgui{yd43q{MUTLYHx_Ar|M>P zDKJxG)`znBQ-aYdCrZ^B{GCpZFJ~rVBnn%N%}lfO43`GHmC_UTN26P~+fa9eGP31c zql94P7~xPzekY)HNRVhq*R5CV34;LjE`T;95dl`;lP185W^-!qTZ^cWVN%;B23pqCr+fl;~!>t_#jo+0v9ue(r4c}>P`?41DEKp8sOpyvvq?+&1 zv#`B%$Tc2Y%k7&;;}v5a533Ee!=%aJfEXw=#~k))YD-BnaUHjLh95 zntsGaq`kT69DJ0?ZmPAh)^vEPWNB$JcM4>X@jC-36vx+1(t@Vo{j4Cw3xT^Pw9&6* z*Cx&_WXGZT-_Hj)RArdrWBtpTA{}h%G{oi#!KO(G5OSiI1>abdi$;oii>QO=t_C?4 zuWS7R0ys>6*li6E1Hc4!nB=SHb^8ltWo4I#^9TG43`|UW>q_heT>|JEdI14+f)a;m zgJ+~>A+Tk#u{BqBAgOPD>6GiSn>2?8eU;6BPrCOrf@-y6>IM!{H`MHnzBlb;>_1O8 z&Na@RR#(*!yDtDlgeSJ3;HsaXJ}#y!crf%Xe}^u`hbO-wkG7;-FAty?2PZ{k<~{9MpOdkt+o-LiHz0x{qCX{8PG-}dIpJ=2=ldjdGG z_Eih`Di-~KKqT1M`#tHk>=U`u$oYZyLyFzQIi6l?6!9&#+&z}69iaP3FmF<$i7&Ev0ynoWjB)FhAw_dTWA<$-LTH*9oXP5G~{BZD3TnaI&z z<-4J|mAR3)d~J_DZ_>qH@dW>T=`E;JDp_;fT&_vN0f;%wvlHs za+i>pEzHqO^SqTBE?~r6ylbwRG}PE>9<#Y<{U)Sve@V2Tt9YvF<-gDUql{NI5J9ZS zuHFA=?LL7EHV-*K7Qk=1+lYAGwSN80nr+^iNe9}DyIq<%kIC!+R5g+9X?8j8)11G_ z>0oxF)1k>xP3^tQ_5S`y9-9KK-0$Ca_4IC;fk3GMdHTfh?B7G8D-#pkt}CM6{Nhk1 zB86DmDdSe(aY~<+-kI!g05aCxBP}=CHMu?O-83Fsl~V{K#oLPd?HcBOEt_;S z?5Yg;ULz!8IcbWf2j(ShBa+DkOil6BkX8Ta?f1hUICIj8&yHDsco;eC6FJnI>D#@vdci}!`=zx$SAiB^LtW8_2?+FU zXegoOeI3gZkaqcBEZ|snG~;J<8`<98tg+99`S#M)MlVo=+k`U;|MGIzF@TMbgg&Td zaCPIYDNfa5_c}xrSVZIh2jMQxX(rLK`?x`H33GX3Sv%yPDfG*%D_Y-9|93X(JQeKm z`%U?@p^=ds(2BnM`I^Xiz*-YE^k8SYcf@4~LQYPxxVTWi@Udi<(cfRTH(HK5;LAii z3iaHl9{37p_6)7LnXE%im!;^eZLP0wTB-_TzdW(c|CNxSiDJ>#*5&S&8T8vRf!2aX z?088?!FGYXKoYN0-aM(8=M80*TWYGQ7KDo}u4nVfj6R*{7d zbCuh*Wqp>Nxd~lE^FvtgE-6!~c38G?ZJKs`#dy3P+5wMOD1vQgD_Rvp>urh9%Lkuc z@zX=F#Q|x8nb~DC+t(cK+8=0#`Gz{b3y?Owqjk%e2t;kd9HPFGW_7&(=|=(Zl&*Fk zl)Tt@Qo3lmySpDJkJHoBJq0{`aMiy*Y8$@@x}8+}Xp;P;T2VCtx(a5;$iEK&lR)Qn z)u@jmYBTNdLBA7Tv7m4JGd7l!^A?o^L>W)>@jX?3rf7>d>-o^woiVfEDdus{8?w}-i! zMT+1~T$vzVb319PI=$WuSz?n&=HXQQ3+lI(M~TU_)A zJQIbQ3T|*0Ve>pdP0cu4fM*9JXB{Fp2iaRP$#gQ0s&Hu8C^MtaeucC-?zex?EK}#E zIlHzs3zZA4-O9*lZRZ(FySJRmwXrOw`K4xZT=Q%zfOJwQvd5w2%%G2YOLF*L%)?yz zf47AUi$jykUj8Uu8XNe8!3UWj1|AEtTJE_nfJVEH+*S}mTEu*Pii?Yn{gPpWAhLXz zaq(w`T&3``bm7O>xj&5^r;2(_O&+R(a7>0EcOQwZ36%4)wBQQQB*+8Ijj5SCOBam zG)hhSr?}(JUstLvo~-Iw{xndt$G!I7BW4P||6^2qz&2cF{V2%IDH=N4-`C6TC`-}QZiCk;qYR0#uN^d9~a=Gpgy5&?O0pDN5bvtCOZ&^ zrmFmf^vOeoNUU=e7B&jhlYLG@)k6`%n`kfX)V5$}z{(MjWawNo3~<*D)Sjh|o9}sU z9h2DJbA`K@I&rnEi`7W>MgwSst2KR6|DodNprmz*QMG4om$Em9Eq#j_ZR1}F#9;Da|F+*76|JCWLb{fb$C zi+^k2!cD;RTi5b(whnr=;~6*2x71BiSj&AnC3?apmDwwKSptXl+x7Pis~ao^HOv-w z23!w5A(|)ij~c2t#M#WlRhbA(mRewAsF!7~sn2qY1TbjKp}=;t08~3uyRDu|v;@7< zcx4I~R_6TafOS9O$ma+rfnWn5u-@k#BG1d$k7I3_TxVouhJ=HL{SZrjgXN&OOpz!u zu9h|tPx!t&YI3W2ma;edHX%--x_P{lkY(|rlQ(pavUj|c7ihpy26etxknZgk(uXF;a8M|Rr$XE^1ihA#L#p1`l}Zgq9rN4+cSt}7_V-XGxH(%0MyTm| zd}}7Dwa~9GaS;|V37RXL-cKB9^*-89+O+CTvktzy5HJfqNp5NhDJc&Q>Y2B7eQ~vS zbd*o{>sd%uVHg`D5jHe}H*3YW<)_Xg0M5A)XMWy1(>gAAD=PsgEym58l`iahDpna> z)BBc(*o(~Ae%YQhOzbi)z_eQ4?UbE@wAir}G>j2YA_U=E@ zBaqm_wOa(X9l4#7B|^f&!p4ui@4QO6(#GA0!ywTIe{gcQ3&u1}T7XT4Y+ET_8`ADR z|M_f`Km;$AGz+@c0ybT<*#OL$p2*x5<48+>GAA0*@0ADaqJ8K#Itd6Y1e~qH%UX+O z`$yAZMA`z4{ty!$foL|*)G_7%Zu%-FCdz(okuBxlxM}osbciV^x&>w9qZc~Rot-=! z#=GR%htspD7Uw~Jl+^p&_d^eJIr+E;_#V<10+uXyxKTap{CKl{6>)I^9AUZdbA!xk z^IAW%T_OE;r`2iQwP*D!bz3OGx)`136Aqj#TY2wBhUz8K(uw{|v?;YVV~j6Nq?n2E z{-nu_G4{}U3?%W4VKSxWMnL{XDekJ58fS{**%zEENEUjtiTVsvDpRG5jL=YkCZ=aH z??BKolkC-3sQlg;{)Qav-Dx>La|9PM)EDJC8Xn%vJqUQZX9pvzU3hj4JwtAbczK`N z{@KZ67PC&_j4COBUtCRxX9?Xb|_N_s%#`~Vrt?b~_`A(jj zo5$b7LT;8L-YUsQ+sejG&reh7fN&l@SnO|J7CAWNxeE-)>%)_{Dydhat|ca}Le-Sm zNU@T5;41f*O|u}|Z48=N9&TaIZWa{K<7Ao~s`e~M-usBpTsje9PaKlbR5d@IAtq#a zwjeb)=W;1;8hQNVG1L<;i$5$ZwDA-iE{uUe^OwUR!ft{>p{DTM$I<87vpMyN4L37y zo!@GCD8af#AjkRR-?so50)tS6kZ8_uM?9mtD&V7;6dbprK0q+y%FlxvgbGVsK9BM#@41Z-IE0(15ctz#!6V@I;0*h6lu25nn3*TCZaHvfE7fJWd$ z@O;CaUPp7Zrm(YlXBl7l(t;Ut@&Hh6cpohduhi=s8?4UnI9=^_$2H9Z%A><^N)yf5 zrI#-^1t+t`Y-fIAM5N*aCg#M+$@pt)+K+v^U8~Wv66j&oSqBVmZf@j=nU;wocN#50 zq%wW}m``79=8}}2iQglm-=lw(3PovPiGBlq7T<3?9SAA>yPFZqa_O$DmB($ZZQ_3J zm5Uj!pn&y7lMwO+zYI1*0{?UQAlrxl_{S)4IHsKm-=<91F1-g4Abb3uBvO&x;;C%Z^qWLQDM`t$mX?u{s#325?2r^Kiq+8+j9Zg1pnP=s_OWcAocH*pm!88v4vCXJ1+-o2jLd*$%aPFBCTVX|3gc2mRmRB=Axk!MP(`kre-a{Mmwj@nTi zg5YEB$wdi?;rCL*zs;v9@G7qsBl@~Awh(4wQFkU4uE&gJlA(WHy@7*M|LEulnB7dr zVQ>97AOJgGj3(QI1)rHHDA-F&|H|vZVXCYst=g6x?#f%=O|@gr@R}jxPd|!)gOd6I z&@gZf2rEg`&@t9b$ym3u|FDw@1xXER89VLsijd~m%^lIeuHfl$;z&+n-3on@k_%Xk zrQSzfCD%}A@4ce(@`H4AP{0WtsmArpqRY&cUBhkb^yn-Ca!?fuNC9kpx2Dkm58G0j^9_gWm}R^o@H;Dh61D=qWsYPM z;PZ3>!rnML+S!lxVFf!|{MOX26{Qmg7bMO(f%5}@rg-&c9|6d%3OxmYf&Nmjr^zdxXS|>s9ms9{K0D;@XYo0pnq0B)bGp8+=?b@L zdMphR8@CXcCfOB)`=$hR*8?HHfyPeRk)J#*2hXRaON2;>$cGc6M)T7bJ%hB)a^d_Z z#i`Mhg>rFyBWVg-*E<;s0^ZFv^(tkW6AUBDddU~Ppuh~T9qT>qtn8w@KckL~5z01; zxS;ueSX$uOb*cy6p4gI+kvZu?t@bQsW9mvHs4go>4d_ccYM-Urd2czz^N+j7DPyW}tv6pX6PLA=mZphGcT7V!;(Eud z%Aj^(6gE0IcmT-1awyQ_)S#sjS4T_W)5<+Zqv=m^Y%(P+*yw{ou|(O>)aXh$OKTe%>V|CyturxfG{-g1#D{m}bDf z)?&Q5U5#g$7ix+tDZiQA-$&^$i<`A%roS)9WG(OPU+Ou&v zYF8JB?NO=eM-r&-ZX3NSOD0g#n)$;!u_@}Pp3@fCa%N(t5~v1HIKq`KCR%#CS3o^8 z<<;$|%SCuYeSJ+epnbr>#?JCTwZGJW^5^i50;zRPAlRq&!OK%6wEs<|581ts_N9|f zW0TEUU}2x*U}-+OT4YVxh9HZ+DxQ7JPLic~ z4tb&0@_WKEjh;q)($qpSxtQ%q^{m%zYloq0-G4L|oFuy( zC5>{?0L^(EVT`%8ZIscCI#-a!?9c`>%v4gqPkC54S6F^*D9S5L1G_=LKLRInR&X7?iF#Vz9V zLkyy(bv0~#_ck(sm=dmHl0royg0l0Ar`Q z{C_Zn_V;t?c@%TEc|8}8pnxDQ8k@Qmy@m#OPoPtmqQwUy2~2xOO2;Li%DS*hs(4EL z9~I}lRd+;NN5^Ry%ci@Kfc464lMi++9yTFAX2P>gV;#OHanwy)gxPctRzkFy$-l6vmuzBzH0#|lgef}?I1S}hmTwPs(A5bIz z3;5H$PVJ4q6wSYfG6o>UK{-4BU0#6Vq3nPD^1o*i$(yqu0l!VbYVQY~y?tqLdoXsP z1)^&CzuKC=7XhCEUM_tn(dyO~9pT{Ik8vxjzi>W~1zQM4vx5hln8Lj={s#?f4lL~< z`mC217aG5bHA{aj4i1|0l0WSY@9hPY3vp*a2L}ku%kq-@t>_c`%{h6Yb)KG{+=TD) zbsc%h)07qAT~7Q^il=OBY_gVeptEvqMe3MvlB{h3@|dF|V91BQe7d)@@z3R{IA}{o zi94mAmfL0BYz3+1B}IoJRkOXoGO5d6*mZ*^K5lH%eNVZhB>LO~ zNZSB#UYnr_%*QNucZHSC+hvMDGbiEAkVvNjB4%*m&GofXp-g3^5L>f%d2-r1a4Uur zfbE|2P$cs~SH@B+WI-4u4U*{i^~)Fg(angNsYaTaI%n2i4*x6jm8E$q>awcR;o-qz zXlM2dGJGluLX~$Fi$nbBm8;V4?G1!5EaAO4E@}7zlg@ciQVglBt)nB|-O)V(6P6_T zgD9ovd_U*#pBOLZLf>-!$?y=U0304`ydeDTNO~UJUwu74!Xl^w>q<(#{L|Qed~eXs zeVC_|IDd+2n|5vW&k&L^2^y~6ShrB2pG*Y#LCBn0blJ^Xym5(51GX-JZNdgf&jWM~ zsp3h@`}?hnxI-aQG|BRfKbBn($Is+{S)2eh9skWZ5{c;&4rGZ3=k;f2 zzmcj}Yzlw}b5y%2mPo(BN3(<8OGZAhchKm zCm1j)dw05WxGaYgo5~uy+Ej#(i`%E(_1Ukk^ak_Mo2k(LSN11?=!C(Yqaik7N;W@}ASt8Iblr9>}~8Ww(T|j$3kKhnqvMVxiozanETd*;)O+>%_fo z1_Hk@nUcm9_b^65Z4D!5bKs=;80yceq?s9$QG>n{zdMM$j_MDzpO3h;I-xPPgrK-*dtczpCIUJz4_4?3$lkOA|u| zp8&sA#YdlIe!kP@Ty#=?KsYomAJctndPB=Z$JfbUO>wkzbdKCm1N#mDJ}Rio82wE)xBbIKp_7m? z#ZQuyQR8HS%--R%y-{kY&pCP2+~VL(bdPOM1Vi}4P~QNYeTbt{c~l4N&bhd0a>Go> zcHZy4_yS4Lpk7BH6~S|F)Bw(#&v~?O6k2M;pu9IAk#=tHEbLiV#myf*q}gzOx6vK5 z^ry!(Jfq9s#b1d=v(+xMmfr@=!pygkPuy{edXT=CW!Z(A0jRtXJQU3dN=zWaaCm&>vYk`XuQyu+Ns6%OfjSa1zu6}b@o`d6W8>wksE#`b&CFUhl=u+D=G9s_f8OK(hd1JJ| zdQCw)kC=uwiwm`x*~tT_FOXhC?wnItn_rX1?K+F<3TdnAiOd#Ya5=7sy}Vq=O8~kW zrrDCRGaQirhFG@w(T_p)b3D9B0sbT8Rn+OBD3lajmZZck%poW)yOy6j?cyM?pAJ!b zDQf)PR>HdOU)7{Cc~nXhGAjsOc^HAJOL{OefA(39YpUSvml8)CBOM%z}@>Or8YF`aUor| zz5H`Bvg?ELYR}}%<>YuJjwatb5-L^&o%mq=SNz8Xgu_iahPG$}k`|cWpoM zc62Q7lc)m#MV=Aikg{1?0$_fPi#!Hc4JDjWdvoJM@f<_nes7%~1be7hXy#SNsYR*k zeal8)8o`|fZz{fzjRDXox*Zk1czdp48ZcZR>k8EIYp#i0Rc~-=oezZxtN$3u)#S~0%OCB#Sn;{Uh z+&Eo4p2r@SZFhI+msMHMpo#ffbGVIpRkur9 zq+@>1M8vom6I{4*Yg~g6W>7jI$NqVWl&rz!Vfj=UsFdI19eRej9S<8HE(3VPP^I&FgvqQ@A9>ofeIf2GU_uQd0cRwrffx zRRE>ozutkhCrv7mF_C1ZC1jL@(}*6L{5RJ=&bsMFu`j4dF2`u_kXPrt_nth%Dq37> z@<5>w;Ad2Vzp~Rlcaow|fgjYL3xv(Qri;3N|Nhy|aNF$<7P&@FDFPy*^QlQtQO9vJ z#S3}pIT;VF1(!;lVWkT&)HT^h1q$uB9~u!c?!49&HY#=#Xk$ZyaqmOf6+%KbH=oaC zQ?Yz{BpRHCs$$;7xB#ZsL~IJM{PaLj8CwhVSDp$*DoHiHP0lDz;_PH z*j??(?C)-#D9|RPkyTmd3$I*?-2;JUy95LTcsLgf7mYlWJm%cLnSIM%h_9RGpQ)=u z)EUiE_+KCc(9?0h3uBd+E$WGqc8n^v3rdK{9z7$NU+!pzw}Vja-J4DL$(=?YW~~wG zp>G!}tJ(_lYrEAp)J82-iRps^oPCTp313Q+sewF5s6;DbJWUD-(o!VRhHNSOpS!Yz zntMwHhW;<*mDb+Y7e_9t9=dzw<`s!G=?XSm%g(vI*=g56*m zxLKVwrTw%p;>qo29a5eV6=+ctJvZamJfCI}2`|8$tKEL;LfS3qqkAO%u(5_270C;H z^5+BekRUplqNU(S7U$_budw7tlApdUuVMs+pgv4v;GuTJZ5}c{x}DwtS$Xg+VD2jo zdhykZzx#Aw10RrZY|`9$Yg_FMXva>oXq7Lyd$tcOJ48S5Z}!U;XXlni-lv)iTlnS-GqEx$fnLu~@c^FBd{uW;2$9+4I!e*d(C zAx6Iv$uSxk;H^4vHQIb9>s?>R&#SY!xxlK6RDIMVJvlqz_?)H?Z{n}qUQ$ku;h%cx zUU$N`&B13#oo@#vP$B=uEJ+n+R^yk*v!eKCpNPmwPKzbPwzn#B3LDEC8e$(hV0;Gf zlbQ_Wfoy|Uo~*LKu!okGmXxJsfKiJs#dBgx8MV>hsVBRZcw(o2Htz0TA4AM*=PM@b z2dp#;HTR}XxH2-6w_rgNMELmZM8ahPN{Wit)#@4s{ZEy2toaa{3vVkm*95Jrs$Dr> z_zTw$h^~~=P$wJSottG_k#<|uB&DQyy@&y%V-EF(v;@mR2>5aHna@S51JuZ+Elq`Y zueGA2q_LqvH-G%$}W)$hS>I$r$MVg+BmKG#A=F{2n&&^<+^D=>@eC85jGwnwQg=hKgPI zUFI#7T05#?78#lb0h))$I)r__(po?JeI;V;Foi%956nUadQWM#A_NZ2Tu&&5^_g(551dCQFjxh|)L5TWu=RGz zp$=!`d|uA?Cc#?|SFlQt4;V<)jDGAxM+2SNg$}rj{+x|WJ9<~x44mhf2z&UARkoc3 z!k<@k9Gl*3@Wabx@qEc`du4iAtY1eJvCpTXDfX%hp|D?pS(C2l)BZwb$>SA=W{M-lIl zG!D(|(aB*ErZ-RqJ6Z+8fm^-Y}D7*xIuOE(o=sPny%&D|;Y(<~^?P>0v4=!D=IC>+F zyy8NjAhpRR(#C4*3~?5l)!c1r^wnc}11Cpk&}n4x6gj*Hd48~F;sYb|Uk4YJ4U~09 z#8x0Jl7ZCsf|8OFbnCh3-F9+XnnGf0R=7Isk%#M zSH3H+ZhJ{ZrJ6q}N9~vKH2mvVY#3nIKbm>A-L#{By_+A`a?x-O4AlGZ0RQAww(mMq z{`gHGybYcO;A`Vzmwgf|=r6GCab+-5>sg1-oruB2j_)-w81I86(yCu5DlKQqiC^M; zHNUd*c+hsw@f^N`ekV21c?mZ5=SsALC>H@hNkL_0W=fdk+8M`fVmtP^b=$>Ex>?`} z9kAD%jEG6ZFm1ve>APj-FUYD8zjP#@?X0{+oO_3r#hS3OL1TRo`&e6XGwOsJtrrm= zN7dAn3YC2IUwB{|7f(7bwbnOXPrbHwcTX@rZkJZg-*a*zZ{L_>5a&;E@zb>U%rPz+ zSnvUkx?PD56Jhdsa~24U#*Zc1(EhQO;C;J)xc}4MXKn>~>{TRcyWX0()TT0d3F9z3 z$1A@iIYK$Z>?sI|cV~r^;B`nZ4Xqm_{666KwKG}v*sxbCxDKDf7p+ygtB`b9;{ z+rmB&pY^vM98f#lh9k%8eO?;EGy6PGzaI0X&62h-Or2cF+hCtde{Anw<}hZAzcOTQ zW+$l!%oUUW8R@X2~@b*uXp59kKxtS8H*`!V&i5#NS?-d4-8U!rj8 zKM{CM7-hY(AwBC^F>kmuM%JF$Wh6%m2@P2{^11}>=E?;|(w`XbqG3QD3$nBW2?gy* zpbJY2)_yUW8yXruqdE_c{GFZ@kU)*-rEtA|9Ly^buw4y8Y=zOt0gy@Tj&jYkL(uIB z!!7hr%q*-fpy+{us>1e3oDXZffAjA#xHvFta|U8WzBB_J;c`c_1H4hu-%w-VeLZQF zbqqEnth@V4JebF%oHK2`bCwOeH1#`QU?R-L^88?vly* zl!yS~`-;Ei=)*h~Mj+JDaFOq5ZQ#SRh)FFu;r()0`zy}q_G{$gRn>edV1)39f3C@r z)Z{nkf=*+8@%^tY_@`m*|J&x}U%RwL z-=QTpTH@ONA9Pg_S@mg=^UAro^}(9GL`8=bLBAbp|M)#9tV3rqZTx86I~->dc{%eg z)!t@Ky2uw%U|Ok=E}X{16Ck^ILC3>PSF_lbYQP_)H3VtF=C8ehzA*E>HDvRcoqIR$ zVN2q)l;=V|#D(e7u`yF3?>eOd5+kN$3x>Dh8LIYi0vj!G*na%YSR=hoWgC_yT5r(i z;gg(P;^9s+=QOj~AAf_mK*t>|RXufwuiVjVRkzD?7iijBXj(WqJq2G2&-1NN@^m_> zXOa)c9*OkZeFN_tc`Hb@H+i(dtPD(wm$fM=hxD?RGL~*J9;Yfo9&qOa{tP3FFyFh% z6;GZQZ?MB|>IlTtu9Wmf^?LCnZaw=8!4Dh2zEz+?1!t&%sH3Cfo>GxI^WJrDqG#u$ zdx9|}8JV1xmsmVvJo)u;>CZ2V`)saeL078pjSgNJOC=^!wBIgiucK1E+DDOmL){nlUt(B7 z68!YSJT#fIL5sKyhe%04loRDKLdZDx48KO(> zK!CW)<4TSpen*{KaQWiX`?~kt^xR!ZGbtIZ_wQ1?W;Sc}hJ?(R6EK}SqiZHr(wpmz zaPM|=B3R;lZn1Mp#_Wp5rdFmZ-O7dKIWAK<;n|cp#q4=FSmD9+5x*s;n^B&YxN3i% z-7aeDs>%|_EB6wmEC*|;IR_?satC%4JDGGurm{}94V-~-`{1Jx$Y+a|;ohy2hi}Hc zM#ZhC9MT8N_v4aNj{61d>#fX%`7(1~zZM;h%SWsJCIiBrSnR44{&|UV;M+rp;A$cF zKUd%%7&qzmB?>sT+r7B7Q_70U=Gc9)7yDKZ?mjo1o(=-E{Wb-21qJ=a(=r&3#j}ph zB&(w5q@)1{&d~EIRxz4sQU@wg-w&wU>pD)?6~K+e23il*OG<_>f;$2bRA9$3`YS;? zWKi~~4~R6sm@#dHLi~J)L4~~~2v%H8Gb#7Ru3$OWI|5SoEdk=byZTY~{QkWc*l7m2 zdwcJirM^hFx?Ervny=>CX#Thz321BM7QfE3^GmfNBtjt=lAtZe`h~WevtqSO0xGKB4L7ZX z#Lt%&MA%`qw!`MZ2vQQ_8#TP(W*`xMA7WT<$YXn{?4M|p0vKs5qrSW!D^39)WZ}hC zEw|Zbk58d}UOmnGQ0OC1*4F>LQFoD#+*w-QYD_(`h}^r+?r!t*&xr~LVZRU~_SPWH zZ6cV8|D0gP@mN%k#hGZw1EIrLFv%Da458%bO^DG)F{aDT$+|GVgiGDUZ^rm}(O)gF z_fvGa{h!bhn2iP)jm{3Fdi^xRFYcb#`O}-BTHMlULEUjR=)iq{-nC{1LC{RVzl zj8Ey1YeL!q@vbfk{Vx^}5>#9}?*v4CTvaK3!u^SPf5zKiO=|oDX)gV}=(k7CvLS1s ziEBf1nCHgD^MPH((0)4x3_^T5)MP&IQ}=Aso0FCwnTr(t_XLeqTP7(rvwjqo9?X85 zaftu3l)W}(`#G;6*R&mQGsS+W<*yNNE93MQccV``)>WQN} zqiK90*IFNe`Cy87;B+sCdS)Ftz_I0yMUfqB&%0dvuu$?HjZsksXf>z7@uj5Tk+Kb( zIzCYKTh;pKDt5Obs@|;n*W)k!+|TG&JSSt??3=ugn!P%nbsZMVp7pbfK$5t^6nOVY zYvB!nZFhf2jArjWQYzwTvszQ+zUQAWV3YX8YFRfjG@}ViMMvN@wBI4kRf$T}v8g}~{5%au z4QyT#)l|FE!Q|yfr{YmDq4MV3`)e|FNa`76S%p#adB}0%T0WI^RXWH)G7CAYL|#ayH~+&C=OeGw`G6l zRc|V;UZ{@|F+CoR6RgMu_hL#eOjb`oC;sQm_*iNZPb`U~rR9ES9iQ{a?Nx9D1aL{sH>6?VH9A+zaehrnSKVNDsm<1WQAAv7!>0thR9gV`jTB?owp){C!dND%O?Nlh!}$ z9YGrtFU37KftFAYib-DIJJqt5xwxQhwHp>8%^f!JaZj(0E`|YPa_X4U_x*k&S;rx2 z9yI;yytVT(<|xKM;dqRT!E0ST6mnz|w9Amehxi@N*48@Pv{U^AS4jL2wUZqL=<5|Q z@p!uF?q1r|%vYIrhiD<6sn|L3IupjHj_Df7g_|l_U+jZTJJ!rb8Q&~%c}QCr!!1`6 z85vm%T;C$M()xZ7?(F<;~4Ds9V3f z@8+o6>h@dYW=wZit6udntfgbIEPBY3+xO5!YQbGFBQYAaAkn^3=$=+l%uj5B(E!Xl z#Rqe}h|Uf|`UM5uW%{hVbCs2qJ`b=AoS2vZ*yNoSGGbz~7Y+n!5|5jVRnG=XwTiBa zZVN^X8$a%el7GkLhqO+dW$^M|WE(~u2O4%K9XQAh2bSEs7ozlPQ}kq3XsD!tuBQxY zN-^{-C+G*X(CeMvXxa`QWsQ%@+>mt*H}SEf`l0F$R}3UtwU{b`G!Rf2DbwRNGuz$@ z7OhGIvfN!rcp!PV)nWkRqx(_V=6PiFlbwg@A2VlIh*um->lQYo2C>7sglcWLe3-;_ zC&oB)+_K+)(Vp^a8Oj!bzd!h-GT0f&<^kdz8dX6Gg5WU~b*Jfm`JJt?m0UZR>_STFHb0$jBr$HbemwAIlA6sHZ;yE? zs5cAym#rRSc=?QlX*l`sI8uW!UH_YmlAhO*bjK z;hb}&Hgl$kYb?A7ez18>n!!177)F|PTqT!pq+h z<|m$CB4Z-~a!l78qefrUd4UKGDcJngX>(y>V6H|eabaVLbhx?9R9@>%cQN-Fo{`1T zGo}h`CWCpF&BA=!KzDRt<6q~81v@g2#eh-t7sS4zGaG8dy5Udkn~D_ACeCj9_i9_} zhZipFoxERWzd6s_q_uGwaaI}D-LVtHi5Phv^cv ze}9N;PIxnN15C4}{GwXB`Ao8SQsJzNck~72vbK(%NW|7|S`t{vBdKWHCb_KJoO9uj zKVJO>At534&hS0*bVz3K@<*Fd$j`GOGC(hES4Y-(qFY`Mc-nN@UrdK{&=;r_gf%st zRq`Jo#T+ZWDR48`MQ+?(Lx2X-GWiYjgdT}}o7O$%H(iG&`5_C#Hd4h6i*3AYl@?7I zRA+i(7rX7#j`hyWh?}l0r^+fiOEqh$N0UOQOHHJL8L?t=K3KlDVOn6;%%+T|FJcyF z;XoSh5{}*V3Ja={2^3^tV&LwyKSB1By0tLhTJLANTGFy+vQaENnipU-ZZusr~&7;{yn8*&yqc8U&9b3RvOMrinh9<#-VW@3A zVP;@|;WG-4>@_aVmS@Zg4eo{aF;Ra(J4W)h-@?rCU71n2!(_2)QP|mWn(rc2T?-_?H&P9bqyQCiXEQV-0<(MAtu)tx&bH-ddn zrh{E?lRUuN><0Qq`kq(NVYcLH-Fzl~7O{Zi!?~x3t?6^zLdx^tZYPp|)jaLLGl}{y zZ(lDjSbR4KFd9Sza@rJw}awR=dy7a$SC}Evhh5BS0{!gt?Zz%$ z+b%9Uve67|%GvxED>uhQJ_1G+JJ}uUc~R_EapHF7j6iz!~?SZj>;xU_QG#BI2-Q|{)nJRzqe|8Zvb*22P_|gy^R}UC*dmL-vO;f`nRm6AF?vbM*c5Tx(G*2G(c^P=v3Tq?cZkA$hB{rWI|DZr4-rL z8tpjzp|rbhG(EFGg-@o6i8VZ(!fG(IbCycISq{3XL_3SRv5y7=0Ch>_|Hsu=$2HZr z|C?BVN(u-F2uOFA(hUOAA>AOIV<6qqFiL7PNH>#iM)#OVj_!v2jwK>F^^QUXd09Xb`3$ZvO$famY3sPf?YCL1_vk(b9@OrLx2qfJYTO=tcFU?~? zT2DTZ+upEDk{0>te;JqCONximtynrXsJwCC?rg&prl(`V+Sud>`+PnttX#~svqNwG zLu-hWcxYJ9Ym-Fr@rCZngdS^fX}CS$uh(XQS(2}mUtQw8bxNvejx2lm^M#+-5aC|B z;QG~J9gDE;QO1znQF(6p8icgi;PUsyujp-*m#}D%2j<5y_~bH`&h2@J75l5SmRCES z_$6`9QlRA`*mX`r_MGQ$yej{yPd=flotVcffDg=sD-oBXV!B!q~)NM&S$B`eAG{QUNm`676; zX~@7$;FnObP1mGE(^J=2zl#Hr@|(l8CcpAl#Yu-RH_$h3ya(?bvA1pU-R(W!f{*vd zSFfHYV_~56cK8n-+n1Mu&swEq&(o(qsgPun`v{IhlBZHQppb7#Fe<$P%S6 zwol(+2Uq2P63VJrAiv#zKRRl3iF*Tcyd<;o-8e$jJH(Az93yjomXDz?*PpS#j>GtV zHN8dTCQeP+t@HN}FaS=dzu^4py4U++(GT?|^CKzrR3k6bR`5Cj6cWWC5ofmcGOCO5 zUo3!a$JNW&czj&xCSf+k&$zGkI1}x2JW4zGzEimR0BEI!jz@AH-1&U0d8N8KT`U_# zP#t%BD3UOp8n@$r(ge)Av3rcYPS-Md8Podgz)c%7Zj)RloW_At;xTQwq|2?$B~_|o z!@9>C@zQVa-OZ$7V}uiF`j39Di;g<@?V($y$+*^Zz)0{6;htle%#7umMUWLD9jUbL zSf7A}uTb=n5U7FvcQc|-}Gg7Nmej})^w*a-I7V{lgs?cOk zUH2M&c*LwNJTJ7=E7BoW<1Bz4|rh_eTOR>9|QjKG#X15Q_7z{pVkhV>4G?CN>i0q`WX zEiKKGE1s$JE@g(=ebW&nss#m=kKOG+% z9~~b(f4^DH)YL>mVgkxDS;1+hcf~P%%4_JrJQF-5kY2xm+ki< z-xcqSF(}Sr%O>X;ku6jqbCUsfaGCl*GB+`bpz&LliQ8)!0T+)kyQ+m%@m?V)|ASZV z^$Q|)0{^Vq?-p<3EHaokp}-5<)_%-EWCtL!ecwEYqjfBZxd(e9m@-ocT=Uh!3Kw6jQkaX&}`ji$^x;oZY*0eHeFq zV>*@`6D;^qqQiIqpz`^>s8M#=<$!UEJyK2m;s$1LiU6iBCQqrU^Ukf^F&p>#AJvl2 zIezCvx_w-aMada=AkuHQw5=i&KYCm|K29C7f}LetjgO5vI(7#K1~cGQg1nCYUf+9| zuE!)kq3##`y?J!44=_XW7VnN7DAyz+A-P&DDu+Ot?-NQ%NFe^qCD}2C?*bQx0RU&1 zkAvaMhwd%*Eb6`9t05s@kkv=!upm2#@kcWw0zErtUbQ*bxGub`h!@YO2aBFhH%on% zFWP_ePwBXGpDIDNVL>?UI$oOEBtk|`A)S-Y{&YJ7<&rSsxxpgMXtSpJ+JCfD zW%vFHjdF-4nwc%60N$BT`Rhq{{z`6l9$l_1bMSPoRe^PxkhV*wS>0dds&8AZ#nL^$ z_saSowbY|VKipXu8y`1=XW-+LmMZtU@Y{a+G~{>f|4R4~pyyQl&vLBVd+G^@9DZ6F zS7>1;u8jx&y+%wS?BHd`27upv_fGWTVVI-IHE>n3|3?MF<~L*p$QFg8rT)C*b2U*@ zmYKfhJHPP{rnP?({Qexi!bLou3*12eKwx%6@z=&Fhm^%+#!S zN6X16|E^?Xn^DF3*j0dN^@Y{xknM7%F?H-uPyeCX+Oo1A%K;*|9C%^Y9Ao~%idjYe zwLB5G_aEO0B2FE0L`Qe=dsJ)ZA+CWS0jz>hihhcf%I#aN1<+gbx$i29q%-@+F=dss(HMKok^|iKdc=!-T z7dHS31@=lmrMcaF(!kj$XEO3>r?HjZ;LPu^b6t~HflnT=45zHhaqj3XO;iS)U(qVQ zDKkVQw*_WEK;uT73EEszlMsxS#ck(9%@XH8BUy3xp!S=djnzUrIGNze2LBs*Zm)EG zuv#heC+i7yhEgoT$K8Pej3J?G4!ldEOV=9(ObSB}?tC}D5udu9^gh=PE+fH3 z1qGNTX@aJe=pp=dW|6*`BBak1$X3DDQPxq#=y&JBYd}4JwrHk(Y%an5oy!%8WzsFb zjLtMOVq$&|lnq{*eWD{`t}`*Gdw5U#-QKqM?$0djVi(bnLzJazgUzW{MFnRf|4bQW z4zB1>>qULZAR0QfN0Ho4hEyEgJIw!^F^MB)Tv??s=fHk0132D!+@DJxjP@DlG*<8>(4t=O*F;ATBj7K!cU_ zj43!MNcbj+HYFq7ZNcH{KG=H%mWQy*k68~}9q`UtTWA1ICM4uzDWkQ=1MHi=gX1Z_ z#;fIp*JH2Nef#Vmwue9*Z^0*5^Ll6>R?X^K`;`1Tm>GaOJ;%=Ep>v!ORiFsw7~rU? znOt(GL4TiGBfB^)&_0sWySd2lD1pmK19np@u|~PibyEc>J{5l3-@(o=8gF*hxS2hn_3wWj;0Ht}d>PQf53j|A$ zZU*^FZJv@=r^w$j(dxTWD81XZu_&2oM!q!97LGrOhV?v*@4wx-lBc`zIZ|% zuw`WBAwom2?ra_c^s!u>+3%1a2kT7c{aJLO@`eiy>&g7l(JSM?9A|t?ee!8>hddG|Fp;=rwzf}eR?4-7C=R#mZAv1>9W4y-E!U^hUUFtB%_(sXMa$W|C#=LbyngNu8#I#7EJ9I%Pp=}Qclm}EO6ky z)dNi!*_p&d6swLWz*93&@v)+*B4`M-wAGV4n&$>;ZRF$>RTmMKE5PJxr9XNml4QFe`nQY+X*6}0 zOhLp}+I5%*8~3^paU2~Re9YSDuEu_fr(ATU`tShA#|$5m`)t-z^3Wekb&(Vl{TD~; zqldq{!hJ3+73_D*)QgLYid0o%Ej>_UdAC_>z`)L;pl{U?2tjEvz8Vf^Y4%muF0D1h z<}x2l7Iw(K(plM_T{M@i+uVZ-Q)%?3VCTGySvp&EbJMd0z_o?czkTr`^heo%(=xWddcig%rQjmk0$Nkfl^ z4|qbfeFscMyq9xPxRiTdhJ<_y8*F^SZ%uTiA2SK00fLyNl^s*T#eRTXa_6BLAdLR2 z5zx&Zec{XTP~&H&$9$yxhJ~_AH5r4;+|F2U@3-6st(u)iRlUBWkM;`6K6UmuZty(u zdrwU9Lx(ZQHGz^ju}mRF#OsylkP~y`=do(b7R!r+RC_L-<0^sA<{&B%R9-9PMbFxo zuiPBfO=ldci9M3fRvqD>R7TJAa)qr5M|Mu}jD`TA)R)(128Y+PoF8%@rq0^fXdHD? z0_7spqe%mW)oM;38Sy>%DPLhgifXhBhTuK5Tp{QjeZ=rGz5tJqe=P5#fLjG=Ne(qn|8Z57dtC}k~uZQ#KB}<@pCUlBO zTugcc+!b{`M*8sSitM{Lzk(+*#`R5%ja7Oa5ztJe@z^V}h$(FTY7?WQ>#Kh8(m^x? zkSC|6LUN3=|D<<_4H0o5k^~3|@#DrjR~@-HIlFs$MjZ>*w|}S?=b2M=8nK0UY1eM2 zxgoE7EgOC>thS0*mDaRWGyvgQ6yk-0gRff|fgVi~nx?zQ(sbEKaV>#VC{XUj^B$)f z4htK6_ADn5qlH3|p2FwmSTY?Tc#OTcI)X9rubQC3pn}(7Z2#giOQ& zoLd>5!{ATbxuO2-e5RA9dcm#d>IC==D^JckNfd*Z^Mf-TXGzV4+*uTg@Eq7oHuB8O z#7}k~1qKA32u#>8zdMW^ZQN#w4r^jALrG3AR4z}V*;Yf7^uM)Q++})wu@-z@3@Pnby@aJ-0(TV1$*m2>DM_bE=4@fEHgC&%`(1~RPWVhHq>%Npq=c! zvl=NC)%Y6wANI{1)`-QMihv-95rx}a{k|68?h_iGU6S@E?CNFBYV;17t+@u@lN*?t zQuv(K2#bZWN~TfHb&HO{;6DLgniA=~BB-68xOhW48eud)Iw6VcKGRwL?iQ+JQe~DS`(A>)^4(8;}A;1w-IzA`#;H{@Qq38Q6Rtr zL*UGN@4M&46{PRW$HSHs$f6UmdhgOgDu*Az(@&&L+S+!cB2kHA7l0x5PpoybZV746 z@x!U`O60|D@+`kRsXMjc;@4zcl}Lgdlz%La>T}v2+Q2~5;CDCHt))f$*_&_fn7^=e zf2C?czaczhxtw(m2rH3YNXK?zDpkyn^NC?C;wwRIsrZx$AT;8YS!KONM+phy~l(Xk^3hkA>Y7OJVdacsTuDHhvP054g)_Ccl`QREU!dD)s3Y zNyiDF1oh@s0f`|`1zfjHo&vF102*>ka#^CqaX&u=v#2I7fi8p^*e8|hU2WlO=qpkI zSkMJ-i)Dr8)2Gjr$gEE55AKt(SRq?M$H=c#59JHAKB9&lP^ic0`sCSaVG@geUul#w z-X_Reez0df$5GhqA~d)>k9(f{()#Y5&o+(jrji!PS7#E|;fBkX+U&Y`dRfrfI88)+ z0^M)N9mRFIhk?stEnxhBr{^Zl#G^2+a=nbXfkYebt*P)T1ER8Fh+@*flJld2v@!?0 zoX%{WZd0(PN)Z;f0<_OCe}~Vw$UJiJhG(<3+W*V=f>$BJruR zrF6YxtX{ME!L>5av+M9 z#b9R&W4Hv15TT|FZ1|!v48t*6bUVocTUXPHUG?4hT2EY^$&tsPccyxd%xePrgSWe_ zEGrO*Cm>tN+CNtNPgVfy_0*1Ky_uG_cdo#ss^y>yQ_umOEW5OdN-XNPK@MQ*a*0|8 z!igv>ylNy>wQ*LObc~Iiep2PXP>P0=3b?XzU7haaXVEaFwOAMe1=)7mrNYlIbJoVr z#v&{{Ix@^z$y7!8%jTXn{wn@X(dp02n=9;Zeia@;_r_4oIS)6R6g>e8v`ZG)mbZhM z8NVv;H}D90*O>*MklYx${@{-9Xkdof?J^Z@1TEo93bUtYXiNS$EH?T9PNWaMH^yq( z!v5-dBQA6P_(^~GMK0`t&1wGx9{1J+;a0qxm0L|CyzfZxV?3fN9bnUr1-NUU7gWoe zR%kW`5homC>{t~Ua%YPT6(~FGk-(GRqZf#v%2nf5pf%qs7JTe*d}tnr`G9dpxUa*xiv-N zWknMm`FHwpr(?H;Tn^a!#Pe*Ew^x`Gsi*D$UNJ(Yd7*1y{c9G!goWl%LHLuA(^FTS z=>>8U9-GGN!vPBlhT^&-sUQh=*eo0BGY<)mZR72wb;_YqF_)F z)8mmLduoe0$u{?y)B2Yde~GTnZuY>-#zwp6V-quf>~cSI{{EtgLQ#Cs$jha_whxn7 z`2HUvYd-6$lJGkl>#cb@YcMBBH)X1L7kp7_D_>ygz}sL`>t$F$)|)DAZROlJ$(e0b zA+BqmNL1~$SitHircm*%V|PIMn*_1$84#{lnZ?C^_#C6fkSY!1GHNuvX>n^pJew^5)$ zGJQ&ru0OqyZEYoF>Qh3#9nO8ue)diHm=zd=w#;PKTfcee`Hk1>7R#0^?W5R(e-w2; zEk?%-tx&A&8b`3JWj6K#ARnzN(?^>sCIl{gwY|!a7!({F926jUGJ#u%a1CaO*bdHH zXEc0DlY_cGf*(!J+i(-RK7H`Dy1F_nEKF5cQ7!&#Q$zMcHn5Mv%sQM)w%0{NB)TF`|~~SF8c#7AV@U0@Ik2+P<_CNeE{SEjO^3 zvk}|eIwfr(F!Y~lX zOtO0Brl22m~UpASc^?YSnW<2WQxrX zT9G%f2Xyc9^BKO_XImTGBD`}g-~z@D^`HM~Jzg#Cdik6MaOMqLSlf`Slq+KTw@K#= z0Whh@@{q==V}tbD#)~y%%SHEmF05PW6&w#I4yU~77V;BgKqKvFuDInf7Zp|VSM5@4 zT{+|Fb@Yjmw5GI}*nJ|b2)*g6u&!*oV)5+pkw4LH7{i8cLSNud)tUF)B5zCPx zm%j+YXB}d%=;OckWI~4CexI+MxM^;T#f<2-YVy7b5=KbaR&=`4l(mjIBpWzgxov}#WY=vF+r!X67u z6pO{Fg6rW3wINve7?}cT3Faewh_dnt--dUfP9MjPykP%IZJsM7E^z|QW9KyK41#1W zEy=O8j<{7-?{D}aym~{-Rjl3FMuEX*fpW5dfYO+X>iW&;7D>h5NycY!KJ7f{Ga@5k zRxqid@3nm(W$DrO^#U-6Y$!9p?dvRd}E6%0jV-^OWGR$7SV#+$qa z8n>ReDQ>-gwDRCp#RON)pQ3;=AWH~n5Mf9-V6)BZ5qVF_O_JJiaI$tB({)PEE~q!L zLtiz!keb-N)S}-udZG|P_{G8Edq8}=rIXo(-B`JP4&}rIS6#pH!ZKbS3q<1_0g0>T zbSXd)su6=_bJ}Nhcj<&%kkVf9`*)Io zXU+T^@cX3B!gNT^{y zoSffi4`LKKU}Q?a;PiDaeb^X60jsnMiP%s+>M7;oNt>Rx>_(n@_KNL&f&8e_9J)K+ zTk*Kz=XhjN(OEcKC0-bP`tTgrP9_*sl7GZ9X+s>#CV3|)Q<=F+htUt$9Kw|j6n5qG z{STI-MDC&#dby)9mu7n_;guWjBy<^x+FHHQVvXNoq>!8G#Z-bqHK;EXe7K)%W?%B~ zB@v7f46`7s)5)}Ntx4EvyRX3dS>Y+>cbj5 z(+%)0V_gO238kf_Cdc!wpmi)BeYjDDimHleyex7U(2j+Lh$|@o3-D`?vC!>=jcJJ2 zuLB7EkQ{uEHXpt_#a-Odc7_>a;re=S+u@@l4#&=NE!3=dTte~>^}qGhWz;lW1%Q9( zbnF(8Gf<+##Y)uEi^G5i3A5fm^d_y?U6YxPe}u$@5O#O37R}}Uiv{$%FGdd9+aA>z zq(IuuDxzEq7@Qlit7cceygR=R&7z2FZvl_v74h5LjiLSdF2P}V7J!FrnV7Ts;u@h- zcAUX^`83061c`~F3-@E@Ba3j$rqn*E$xtnb`47X+PW9|T-|a1PUQSGqlu;U!rNVJN zm{SfGj|Ug!VQ*xvG0G}7v1)NyLY1c{*dAWe^On?}Ryr2Cv4a&gSDt8Enz+)Wc4(a@Nkw~~fW~8T2wFank;L&@YhSi|1d5a# z1VXMvE{(d7XkdCiJ`AA^j}pG@fDCujUp;B%T9 zw98tHbs~VLaZ%CG&@ghU(Z{hTxHjDkO)tLnUur%YPG@tH9Qm}@a^|O4Of4p#KaP)w zx3;F3YcOwc4u=_dqF`NJUBEJGIw}+R=e~l$%w4*4m;w$)XS$5~{mpfBABl`dwVlc6tj?X8nCrYvcrR@MRE zFKuCV37p+JmlGYWsV5h~r!DA0@O?ceIWH{cIibcglfoU|+vA$<%Vh}_wDWhXStx%2I z`rE7!_igRL;Q#_ToJ~n};oUlEUzYa-x7*EHS5@^Y+8j+ZgQx;oq}rb_=;oR`~8`CncLz&tgW5bQOIbq00qg~Z2F-1w>*+mgAAt zG)P)MH}HLLo41Pb>01iNAU~q@xo|Pk?T1$j)ah)VoR<{a0E>wb-P~GMoHxD%DsM>h zdziFmfc9j6wO4rfI~I;UTO{0TUWeIs^i76iFMOD{0iS@WVRk<(TyAy9s`EM=+Ut~Q zQ3te*mlblL@&P~rzu86Rn$C-JFOnV%I-IS<(n-4uFV1PKZTLO|gSwuzx+tM@stWn` z4I_)90QCRg4t|NGaA2{+!rnEwZgFX2olqxf?`7JDR;!)48l5ef^BJ4dnrVG8&oe|E z-xF@zZqBu}7^;UKQbz+~iN+GUjD`SHIRx2)RZUG@9U&m%1ju_r*CRQ%q0lPp;B&=$ z&d8uL`>0#<6@Z<_2`4*GIO_D`^9Na)wgz0bIyUOI;=Wvza`LDhM?bUI(YXShU1!ak zWRqH*01F6+cLzq6?>?!P-gtiM<0+Q)x_mg18drebvyU}z>B>tsUo{Q>{ITDp4yNb4 z-Ly%}4ypK;HlY+WJSsB@vy@a`fpyedajT)tc(eA1y_?W9~ODt_YFNpw#TUQcwh z~NHRh7maP0lMrJ91X&U=VX<1(^wWunq&y4f$|KyeJCKd)eYd8V(i^mUu z$ad3J{0EO1`i#Pv#tRyXv^bpo%Bq1&?E+r8Z7}#gRem8TEveT+&^W-uL+Xc|; z%2^k8EWP>jA^$x_9%ikvzI^&X6)K-0U_RU#$_J>Pa6$v%>rT9{lLjPIww-L0y`-CxN2G=9fHQJl@jKn39LoeEL@C^M;|= zcUY%rl=ROU0o`;@hQCaSKPU9%cqTeT!DG8QAz%lKT!R=I8X8q34`5ZowaD)I0m`<~ zURC-88d}<(uI>^baf2A3WrjY%Wl13t;Nc1DG2COY(}Cq@Wq*+RY{8gDe1v?oHqstF zZ$$LxS3jy%d>-*8uxJRO)6u_*;2;PVlK8Jv(E4*N^L1AlRB#3^ zIbBv@s0LUpXy)M&PG*ZWKa+Q5?R6$O>3?91KVOlx6EIIH9gK(&0E4|`WuGc=Qsca50_!7)n^v-OkkuW#*_T5Z_5rdCN?C)%P}1%JEyAGn%>!e zaqT~sju}?rgX1k7DxO_j-bhJ9BMB^p2lu$ICcIKnm3`|+miGW8)NzMPgBDH~vp%No8k#l4Jt`~8x)5B=EgX99Ype-HnALR`Tkxy=iJ4YN$13dDjP#OcMC z$QUWopj)Q=4)ghQ5w9g6I_;Vc)ifyHm5p+czo;@`xILPES&Z-)8mkVrPZPIh$H7lZ zPrp9twz_9t4MvKn{&XYvqK~{-gV~l^jObOrIY<$Jj#}92I`)2A&jq!Xef{}eHargD z>cFkK_@i#AukNrWBZWOjRAQQ0smV->pGd9T+r!z(hl&YLBN|m<9z2_PUjck!Ak4JQ z_b(%zb5 z3kQAawQ=E3Ux_oIxA@sNf&5}e}L_}c5NOuDNTtOKzY~oMsAA?zHj}a!j?bQdR*%j}id%^+C zCOllowItwpw7K~mbbmOy=X%Qk-M9fU-F?SEtw;cUQNYhs?S0Umd$dO5UZ=a1K5+z& zh9AL}pJfufF5b-zY>pUdD*r+Y)xqWjSJn#dOCh}t*GfWTZrxBkjlsLE-q+O!FQ0r= zX-GD&oJpNm$h_7*?MT!{o3XR)RZ8>?m~}}6%H&cq5A9p{s;TGSINM&dseG#I(dFmZ zJ*3|K=z%_HGb~JYyJ;Ybt7^x?@hP6GHj_eF8{o%$V7JvhXCgFJkj7ean5|*DM4ocC z-rQ7V5E}q1pxGm|(1ATqZKSYHoznt&xu)qOBS7RUz)aeM7gjupRSJyKUb1AeQGBJN zl^mcH3n;bX0ED{iqnR#K@f-1)4MV#HHWNapbFG(UnKMJ3$KO&}di$m0r2;}2)uj~T zZhLIG3~tr&s}EcTfPR5k42cW&w2W5%>9LKbQRv6aDJO0*c8R+sCnu$UCz9nwIpjcI z@A>o=JBXtW{3k;sEr<*mbevgzo zMywP+k2%V0^pLIVhBv!?10J$R-5pLS+L5fWs6B3to2AW#KCP_dSJpNhy9}-dyPw@K z+sm?~Mu7q$$gGw1?J2KK;;4=Fcrti?{=Dn*De>(Eq)Re{>vKN7ik9y z%(__se_Gj<{tW)Hl&-V-?}jSeIHSC!r&*J`8ynRn^W*zdbzKBH`|r-adV~^YB=8FJ z1#}pWcKkZA598UkeS81(xKuS>r4>AsL_+UIX1Oy}qLf*1>v^Q#r@02qaQzlu(&MUe-5roEw|XwE?9nsj%vlT-(`XihhAC+3y|t^GTEsss?|M0 zsdG@|W$-;jLfP1gY0QHj1woGK78@J|kH&TQPh;Uf{%Ao()~gtF!xtX{KlDFTvBo>n?&IJ)Q}E<0rhwz8eOrD0MzyBJDsX(t=U z2a!hHF1WIP){+T3%h3F}38`_^b$qNxARl!LgV~`7s6qqNc*s(Cs2LVCaEa)%2TIa< zpZm~*4yr`Q3^=;IItH+=qI&qs1v!IPd6L$Cqa5y&`<=$Y(iCtD%XAj{Qoc^IFgES> z4M`O@J`cIv$MOIQ-jS`Z^v^sN3w^Vh1}B^iyXTk%iNjI(!9+}Ny8%k$(Y=b1s~Cys z2bZ`=5AU|YRG)n=ePMy!Jy_;02G@tL|6&2DeX;eA4AsX>XSdHuGUg^!d-*ps^`!7X z4b!_Nv^OV%q^c~!3@P;@xM}v@pmw&jSJZlfRAo9>&!^)bVsWi2ghA2J9tJyJo{qZv zs=rN~wRpMAR;geY>rppfZWlVu_aJLv%B3vmos zO>?AI5rJV&bAd;3*WlMeuPEb1FK;Ua^pN&t|Lpz#E=ekqpiEMF!>lY_=A`Ae&Fo1l zk&BhMND`hg_8~?fQ|}N6A^`kG=b(9ctNzc0d*SdirS~a)TnVz&sGQDs_JZHJ9)vPL z)E1p-g=GivP6=x9G>TKY%-mQLT8Yi*%BR^+B5k2_W@inK#7rZv3g`U|oYisS=o6;h zu-`JugeLf0Ck4u9%ZR0iVeG8kk2I}GCn)wh$`#E38`C7`>L~Kqtj8oWJ%ViNAdE%F zK+?EVIxNFaFRAPVS;7}9@;Z_Y7NAp}UJS#1k^S;&-|pt{J-tDB=GZD3G9cWcv1_<2 z3p`ai1AAx?HegBM-c+qFmT9IC7d3mH%G}%7K3-T2#$&fnsw{n!n$kW*Xg2oKpTJpi zPY#!ag62Lh5oPuTCE{YxVT{Y2{i<-D#?AU7x+&kFjxwFEnPd)g9-Djgl+!JrCqF72 z2t0IBJXF=cUACe5meW*SCQ-geJU$tWF@tV(BXHWbJefiSGF|k{CFcav@EBZ!UJ@}! z+AbbQ!&6>n5=>`SZ3gLoMHCfsNz7alH8c9nAuX1?W)jp zy6Hl0dXi4R-7U5m(LWsV%+L3lyl}$JZ1Un~0`~rLPH*%yXxtEooQ-v%>j{mwg+qBY ziy1oW!wTo?2o8&-tgWL~q{=v~je=Saaj4BN-^szbg-BBR9td^qs1;+_bUpzHqxXQs&*F0|oxaJ6+8jbB;d+r7(&$~rmUy3(*e!+s-g3}eaE zk?-i`^Z3YTNfC&@`CWvPT}|AnL!b^xx9gH(k>30 z_Zv~H&x6y&oOB^kNVmy=Bp9!3(4sj^Jxv5o`UbG5xmr&e3%RUoiG*#JZQUpjmWyzj z-rrJ-wjsQ+6mnuU=^TK$yS_y19K^)- zr5O6OMi=W(s(phzef; z`~OF$1sMNbxUc+1RGkW5MM?s>?u{FoU2eJ0tXG)V)d-LaqE;UyXP@EznPaOS4) z*prPXn`Hv-ML->^vB$@?9TSgR)XU#;Dq12ri3ufZVsmyu#)o<28d!MO-zXmeed4jl z=+ExyySue=RmrMHsfVe(cLs-!6ot>`TP0fxHFB)kjoLejo*dRoKdHKJqgSO7)c5eV z@161TEiU&MVRB&qBZ_rv6f1Xa%C)t6X|ea*xDzKsUuwz7gddU0q)A17XTOS&Si3g~X2?0MF2rq*1?`z8A1Q#>kNN*52b$8lGLZty(C(@i*+iS*LP z=t+(dWNGe;5538xC|2W^4(raacX-DRJBL&$<9nL$#`RjfU9W$m*rHon%kyu)X5LN; z2ox?_GyxT_71Qz8#(IAdQZZTZWXL|eTyJ+*gOr?(`X+D61F3GV6iJkseXNxJh?(j` zTXRS$DYP^g;sx$e0`o1UT=MgFOJNS5JoPUF?_rxID%31q;W)dxw3$mT;2%aSG0#J} zIqdsHbU7$sxwgJl1^)vY(g*-rnXHZ%iA0WUp<4g)fyG3Rc&hwb&x(92o0%mw69HkEA0>^u{I?WrOrgqWah&#`dM7d~vX$#;a>adk~D zHq+8i%zsD>Eq@o|JFt@eA+PJ~)k%69Vrj(zp<4a)VjG5BBBNI=t`putH57bvuaYnI z`F;@8w;;r;vDF++m-Jdm-c;|&We1PqCMrvGwLL?9he>d@$yWwU2O%D#wjgOF2iW^u z3ZCqY+&lJj)nF`8X}L~}u(jx0h1_KSxK>JZvzM9A0pw?VI?Y0>m}pKNwo$f>;EixP zZIofjs8-5-edb;8kDGzA%iwZ&j*`O9^%754wjm?AE&emY8c<8t9FLnlOrigH7YjKU z)1s#CB|6=~9qFbNCjOe8@?;s&CLb&#c)_E}3Tb(mO1r({7zK_301u;6@v{WV(9z0L zd%f>t$>Bv40?)Kz2sKmAGmp3bEzx&;$M1E(vGHrPLED-#US3U-Ifg;mHKQCuWSq6f zd8xN)dKPkX8Qm%T>18!FHDzTP#~+PT>ztx_XJot^I#ZpkFkV=E;@p7DAw;Nk=>}yT z&A-j|g|RBZs)M-2^uqlx-`fPZoi9{ERD+3tLU)vD%GrNN4RLK6w{jZk;wiNpNmI$G z`bM!#5;d9MYMnXqIFatHD;7egE^hYM_i%M2e0$dD1gcps$Qz7`@j%NpCF|ip_c7j< zLi}jV&2*x(LiXN7D?jyKjT2NgpvT=r)bVYapl@U_#`^QaW09+x-+tCkmP=&=v?Sqz?n{S2b zW5-vckp{J~ZDy?V$uEPiDh4!L!xgU9l5b zUL>vr#|=5I%7S*^1fz-a8|O``K{WuaY|3AOfiSNmIW9Tljk*5g->v;0E=CQ88&}$p zo=0y!h~R)gaw$CLDOSJsq887mrKE(f3%BQ1EuTR<-%7}&$i3fSfri6nr-*Ewnf`}D zznTRgfvlpUO&}->cw`W1s52)4v7c+uJ$WyMg=7UaWH@U_n=G*a0^^+%~8YUqjX*7PgPBcy51a}-k z)dRHRz*8l^s)n!mDzRtB=hXw!dv!k+1PIMUC%!d*kPON4aXYVePS(FJ`Nn*F24C%H zJ<$CZ3kX-)tGCgu&$qwHdlu&(1nIcm{a=yc<--&a2(TEe^%$uA+TK1lHwR>u)z)&C zs#~+ZlJ|)qtNy$zYH!5}SzBA%+}tdOU6fT+gdV3Cjc0Q-UKNjyICq7rVs=Y~rKqm& z4hf9BayMw|=vs&w;OkP3tX^HDJWEUBB=$f(uS)hcF>oL`dVK%m0@u{W!y{a!*<@6g zDeG(#HRNL!W#DnO%f4(>j7zZ=|G0 zi4s7kwGLhr;bf(-!&`Htv*R_g^1ZNfzwi!ufr{-^Kx) zij@|!$GcPd0QTzybRfx*+E!OrBl=(EB8Q#hLb-j0VXsSa3!zY`MPGaHgOZb-LdoC< zaTg~Z&mXJQIxV_iqJ=IIJP^u=v3Ibj;>SQ_y{r^TpSv^59?2CbjchVRJk_V5y9q$K zq-F#u3%k)QfTxr1;jIofsZTo`~FY{YqT|pa*uU`8I(5xcVoMlTc zsbx}gv5@`q*h9B2o&jz*g$Ldb>yIx6D@#OmRRG>8eWRv1cZdBwTNQ|iq@U-Ivn``{ zOHL5e*}^7TTt88uF2?YKN)#{o$X&4nu0Z(#Ih>OxFF0Spo^Nr~{%q{8p-3abC(L%5 zL)Iu7-mB7MvQY+E)}u>wlE>|Ul)x4{+4DQ?H^;$yEgoHRTkUot6AC9!c_j!yYp>Rt znz#$eBE^tFpOv|3#OM65zIiRW^9pry4(HeKy2I`+IZj^IddbvO?csjbjg^yWobmpI zgKl_V8!V)LOVq|I7Xpbw@;&{BHty<{w8{p}nFptOS@lOo0$3%fIb!0~5*1D$gApM{k9r-N^Tt;%p?OD@ZfitVG&5xk@|{oSD^ zq{6$KZ6DoO3dR&36N%ryY&Ksy6-yx0D2O1u+oYvAj7$9Xaq+7f>;8V?ARzo@S|R0h zd}5LOb7nPmn(a+6n_rXd>N5$J(M=pwNRF z-3IFO#=4n{lC2A6iJ-nheL}r5emW_(@OzK!y-v^kyd6xY=gi_d(&I?W9jy9u%o(0$ zzYBgnS>bB#=NU<;W?4;cA!sd!rPwkC2%cxZjTaWRa#*4y(D(I7f~7<4_?m^Ss_XjeWe&p zZ+NPfc)AW}m27frZSbXKc#I{m>3vF1G;NnSh}}(K?(A{%j&u z-t+LY2N|zrzb(K&WHj3{>m_?a36Zw~mu~%V{`dw5d*Z?wB~^dKoCY38UJ8AmEqY<< z{j=ho*lX^XCFo>NuiItgTdabH%OQ_P*e1lN%lXY3 z$`qxV0D90MN+b=d;Q4FR>G|&Rkn!8DMF2CtRUeJ~(EL%Qf@TG;)=I?}$=(2NS{Bn* zskSlmwv%D>$#bLBcNlvt#;I4xkR9ZGQ6ufYkx}OZEh*yBT%IYP@?#Y_08j(&_&mRJ zA+f}xPP$FXdJkus%LGnthtc~Pu2J%{`g$k9*59@;Nb`L!&tA<|lfVx?(hN})zw)bu z?FH>}g)Td-7e7}b4j(sji#FUtwImK@73wS^AehcSQK`NQZm0uucCo9qKwQ|Ti)b)J zhnz!{8+H7k5kzhXh~58hYrST8G)eUwAHH5xG&H1KHX%Z8>fzC`oKbSJx@JFfxt&!r zj9?Ur@UgoeP-H`Cdp1_n)&0HhWH2Se=TiCm0Wxm~so(3v_aHv+ z;;ggT4!#0Eef>>sa#X(G&s%ynuKad*b05|bn*7<rNYR-PIPk+GD zo@+Ot7T;&|vUxc8WSJ+!?MAeB58K}Tm{}Xq8Em>7pIXAdBb4L6RTH z8v*^qyic_D^u0(Re)U&0>56mdhz41KD}^1W*1PaEYmUi_^PU*5jM>TJbb;*~Zhaer zw#F3C*%nVb_4hYs;xOGQux*3vdDV|EF-{~iJPup0GL+XRUJk9Nh$1s)EKa-b2CqC< zt~ohWPx5W4n`#MaR--)INTT|EB66A4w!!2uz-}t3ng2WMXwV8Xi;ntl3S4ta{@9mF;ovT2^2COLSmlSTkw#xZD4rbOYbvO zBqNGRp|Ao?k8Ro7prKuxd$D02eam0vr5mwN$*iG!4E8MF%NWc9l?Lu*<*Ru#RhKqq zDH>C~4-h??L>eLH9|6hZN9tH#9=6?VGm3fB(`&gv^8@d-%lqb9?F}(mbZdw72XloG zh49#+o3J9VS9aq<7mDJMkt(c1uMFm+Gp-YRy|DDo={?(W z3vC;jPwzTE-<4N0iI$btJ=v5Gj|u9%wRiV%;ij;*OSv%%mlVI-D`)3C3)JSxOv|1T zmASU7l${x4#A;X}2uLvucE{VU%sl2aoNw%p{>pfGUF&5DE8|vPS8K)9m3DxIMT8FY zxkM3G9E<}@Ex;BOBaxYX$;-zR+xA}B$s!OS893Q~&jl$eEp_M{vz6}XB9AnD%wCp~ zbivWbclMooi{fafhMCJ??X?yK{$~2?&9=+UP54LXHICFXNyUHA6^_Jz>WldGf~ZHn zra~pBd`!}91{8M_<|5IBFG8a5F>cYvk^ECWmdEWX34gQDj**IERR#I? z?Dt+e#bqjOOixYo+0DpZz4|@8^{*PAt5;}<|I#PEdVzSDBbOelu)pYG1BygbU!&00 zmgheuX>YFq9Lf)QQ@(!f#lth@x~)$=M}qCD){qZ_RWt>IV%WbAbpqvEkW}`Ej#Z@A zUJYfR6l^&rUih&Ju_wUIZjWuvBKMF{j{u&ZBKPmOmYT^Zv(wG|uI|#Xf&TgJqYECh zCiQ8A759S+H4GJYEr_5GJ?q&CVs~nc@P?jDcY2Jpl#IDa5JRq(Vo>5v`Phe7g}6jn zSLgm~YvmBn6Hqsax(~1%7@P~^%_`^WHNbj5)*O##R8V`I1#Gt-n6t_WYfn@k*J$U) zU2Ekq@c4YwpiGm&o-jp(Z8Fa5@d^5FmbN0$J4t3|R3YHM56;aJ^t+77(3oZ+x{-CE(gL+WENm4dzZ^3FRznb+qh}_%xu(6ImC*i*NLl&wcN85P&K0dE~-fq>n zB`ZAQ#JJ<}qeZKx0e}!QHg>Vn$E;e2y{G%$3zq0n^)-xZSY@a}QKB9b*Dy$``Wk@Z zy9`jLUntOSuH#MiP&vk=;qw7yZk^1wYRpcYO4y*d3@ycqbw$7S16uZB) zGW3PxWfj@j=n=}OPB*(=PM*l~eGiWcLgJy-7ZN66VQLzh6hIB;aNVI!_lNUZUNJq* zTUePtQy$r>^@GO>5K*Tox~FLPQ0*;$Rjc8(p0{YV4QHyXA(!!UHclqfzNLL3R~tIX z?|Yk&J%QciFU=(_*`f5T6UAfinXIrn|HT5tyovB0_c_n@CkvIhFWCPDdocn^mTSFo zqkRKTL?({D_EQ@1`4DApu2)jmZfw)VhRSOM(9vU>{vtCWjj(djo5Ll2KiN-znHV?F z5Y0ef1tslswL2_%pafQg2u2Wo;I-$-Q>}aw7EbPWAW*5C*5Y>dDQ73y!qy2nm*Iz~ zsZnZJcbu9rKum3f@7Yo63n; zutKAfq@~^j-XP7lB3%pPvs<^Zyk|oW%r+{waxPwQwsLZ18Z;=#c$&|Rmp8U8E-{e= z4-Xn2&lQqswsqLQm!MHDusOR#4GGT=B@q*Ul5kAwT+RD~q{-V~84r&%21-au)UuVreomGP zPnXwOotmx>guWz!^r!%AAdq{v`dPg0*^xL`rijLBA9w4JA4&~ek5L62KQ2# zn=NvZ8Cbst5T-BDkeNp}sH0_)akW{;R}{D}Dk|UU`?8^$1H%oPX1RM* zU@nE3oY^DxR%%)Fb+egfCgXG2ma7yu`3Sw*Ez2Z^TO#Hhj{7se5QSAYU4mrCnM$ixDlbt;X(LBW zILRqV>vI}Yv9Moi#OEBE4Eld_;*_afHmcO_@5JE|!3uD!^IO_@ZOUeBRK69W5IlTNiBs9}2e;P$J>%p!kEgUCaP*Av%NgWl58K(4cI@)dX zSSF&rc^d=WK*GJG>-}?4-}ksD6W@#Nq+#V#LWMc|(dq0(5i;W>izjbp3j&KZ;_dPY zz@X(a4L_xsDnhzegHB1EdHDc((Wc%sR#ud{0HE;Q@dY0vnG#O!;xm;zC3&pE-W=bY zMuX(CxUo^1=1{C~a2BYL>3zud$15?WkbrZVdxJG?ic}frI~lrfNo-yJXa#ry%4C)2 z-;Uo<<7#{+==>^It7}jC(y=Iu0I2(BWDy7q!vBiGm#;XO9Xu}ikiroYEuNfOZZ!BA zSjC=(h3H-c-wibv?%&Gr=v{PRso#AKRb~2Q+&v^O-xsopdToelN zXN5sOfK)CiBokARG3=I1mX{q2`H!VfDM3jW`?x|+&&t;d*&})QNHJPNvoj3=&9B;1 zgIw(A_qz=&iXGepN2;n2sqbM=f+BIC76?*B$)<+W$H9_8=`zLT+N@2MmRxD+$Na$< z({Y+e6dQKbM<&&iR1bwFag-s#^}xC0afbKMEA9D)7w_v)8GaIgUh<@Tt+!hM%+jv^ za?|=!jj+jgSIGWkTtV>C2v)j}s=@O0d4WE#ASH`0d*kiTK`+!$w!({(D zg^3vvrsO>zYVNlAt#`*+iZGP!aQ0ByQBDw9^r?KkujJ&?AQfGK3uNy zi`>D~&xfrv))#8Cw#rN@Te7*W1iH&6%miT~zd#e99!?5VaL?wBn#2YK$q9!F6 z&wv?^_{Zwj-?f8L)96HYyg1+Cs_IoWX22gHKkTL!qN~wmx zawQ<!YE{`cH`QE4ReC;MLP5RB@irjno;f^Beh?#bW3Yws zJcV6;)!OCOM|mg9(004!T80J!w#)YSW=&u<9i+O}ORuBSOMJ@+)8R6-R0a3si_&Jwr>P2QqBncoD)PE$cs?wwVNpqvdpQcupngQ+Wq1lJ~* zcZ|hA72m;#0`6nQ6YI+hl(UxOK;6^CjKMi~KL{ySkdmlJZf)(LI6B01)T@N{yDN}| z<@au`f#ln73Hg}{)hIT%qKbLF+P<7^HNUxJ@qYr?D36J;OiFo@-xovXHV~sFy*8f) z2!yJ&Yjz4)Je_tbS40|8Y}Cz%I@yR`=J#9s<|PY>*-a_9X_p?QWcUix?-YPRO?8hVsr;4}JxUOI_j8r#;~sB`PA!TQGlh2`3aul;ozgN^7uT_ z&x=2sUbL8A8?14hO>f*~GpG;<^@sy}NS96)-f59_kNpdgKMrT>&CDguape+~Dzf%3 z9X7mA>D48;2jXgG%Zd$q_bjF~NvLVBF<7y(pU&AUbuBAo&q-NG;Bj9tJW5Cuy@cri z)i<8@6alD11IH)pyr=CCW*77;92a?Zmsqm{bJKk%2p)PCYrdKL!GwIl?!7&u6QOtx zF?BEztj-_IdaHeB$cvpZxE=Kv6unxuV>3Iu&09lOcE$gu7c+A&d&4@js6L1Jz&kY3-0$!_NyyEHie~hY zhHlq_M_1H_av>ljA!$HnoC{?Npr>`!p^NTLwwnYYM{8>0uJc!$-UMp7shnoCrmA@@ zW%In^NLTMz|FHT!1Nd(OXbB!6z0p0=h~xN(Npe6nGk!Qk3Lgy1YIZ#h-YRzAeo6mH zx%2ChQj~ekeyENn_uGQ+4_M?}ZS{&TV1450i@E6*oqgJrPY>;p&d{OXjRhNmkH=ZKMmUmjI zuw}A*KLDr5>tOw(*G@s9-N$@}sIIIzP7;~O&$#IxP5gHlp^YcKgkf|Rd6SyDUkOYM zQHLgHUqcnzhB6%m(r!)?yGS;bRj3px2himzXqJcPvrGy)?i&35#l*hA;_v|gJeZk5 z>S0-4=K&mbUxb*nRo?Tx$HkcF$^U>bwz|Z;P0}~0XngO^dsYY5a8n6Lzg^iaaH{2) zE3kBn7ax?=tYUlnN3)f8%jy-n?MQo=#B&KIh8qAvwp4oE-B}tQ4ZYH|xxC~e+{+ED z(^WL03_xrA@&G%ktVzdQ(ep`}R_Z_^{gRorw1=|{eNtDS-kX`sQStfuy#As@1RlbT zvhi}Md~w+iSXFp+qAiU!Tu&J?8f)y%2Z>VsdX&U`)J}IBCgzq3&#+dF=eZ`u6_0D)mo* z5I>Pc>9vHcUh!vGfl3Y+G#n=|R*aL6np3L{WRZuQvYGkJ`{Ci-&MqR6#VJ0afNX7_ zIbjm*EF%??3ywNa%<*vWVb5n7RZn@RE5)k z`nb7mKdY|NfrVYay)<3pcjo`OI6_7l$=>oI+{1=KiACec&eJT0mW5ZI)U|Osqr;#S zqLf@#p4A-5G^EjHSW%^(r~}`m$dRcsqm7zF|F4fdGZUwwW+5MC#ktlvJ^Na1^3`k7 zg!CRWrvaapVadW4dqzPyw?JyaAPP%})6(N((+KvFZ>Nhy%VHzloJdwPw7)DB#M;rluk6a zr|Vn4MKgx}iv@V?yBGrzSie^NyXM#Za6#HXsGkEhuts5|z~$r;k#r7^M2^qe-4;>I zb-Dw!Kj)k=ZItkb&U{#JeU}17hxCyCYA(O92b#;BoKfsR?enkZ@>rp*{n0hmjq*~% z#{i>Fd+=_cL}s7#ED@ojpvgdr*w55QC}zv>ntA_VAHKCn@~QKV+zaf=VpiLPN4WWx zdurXUYeU!+eD?j%Pn%y$%g}n5jFg{V5@?DYo?PxGzy&u}m(zcuzE!M-(YXPl51@KU zn65L4o~Ne+>Eh<)!J1{#=WHQbW>%5a&!^oh!%-sb{3p{T9#02y0|P?iR=%i`@<4em zPlV7VCtqk1P7h$<4DmjY0MHOJ^W*jleBcEYkFPfCK#^_Qnyst;|q@kV^ zt24RV)RZp6duJv$qxq`28-0XahagF^;faSA8jY4WQF9kMoA<^LXyG|z>kH4b&@MN} zt;c?P;5Yh73nN|=9`kpG@^+T}M0Co1I?c*kY zwFeCet=QQ%d`e&4e!3ch73;fBB7?4G-P?d^w^D3V62Q7Zxj(}(i2SV zxiC5zm*DE+{U39;g1hd^%c@FsRgS9`lC5GsD+!g9kXXQ%=7M}~D$dHBvEtYpiS3wU zG&Yi4m`}qAZk8OK95LY`!Q4v&u?RDZh}e$lN~?mJEUS{oTh89S8tG=;S1d)sz}aahla1;>G*tB7rG0^6;R z7fvb~x!YtSI)|7sITJD>&Goy2)|; zNj{cAX>sRvzhW-(&C&AcAGhtvwO{!A3U@;XSF2PUUSC496wU(kZ zib17#-aj-Tz(2;a^44TmSoYiDAjPY9|7JQx>58olT%U zNg-2Z+OkFn1Iyp%bcZI3`in$+yxi?30o#+xqW=C^#D8)*9O_gf>nQ>i<_KMm()2q4 zK=KL-)dBk+KFo0(>qjfp)x)ZfG%-ooaOdU#LK2+%g0g&w9j4Dc2ETy4%8~Fr5Uf$` z@(KJ6CYFDa{t3H^`}a06a0YJzp;>=wB*Kyo_;ztJ2iM*2h{-9JaWYkQ} z8syxkqdl!af9PI;7s@Zl%*@IY*ghwl6FUoTYyuSp`>A{Edn{rv2=kjhx0`#?jUp{p3@@0(4L{&}U%DlcY z2eIXc{L$59LrY7xX_Y(@N}@v5+GRHzjr=d|Uof!3(h+}J9)V#{b_b}~y+If@IyIUP zW{bPc3!wRNj;Nc1R-m*9MMV?ZOaVHTXt`{0vhCwD%!RID2`!Jn9*e)G1aQjj_W@DX zhhb6*ZAN9cJ}W9HME9W#m*?Ky;QA60AOSO|(tgJa;7=)V*x(xNd*qjB2aij3ybr*n z`MtFg2Pr!}{0fj7Jb#Wm=$>h%XkJt0Eo$%WO2`W6nvy=(RC@0JEIKKrJs!B8H^>5l zgQdOh^a1jrBa4o>#4@%U8wylxY>B@Q2s{ZlOjfB7<0l7O$#DVE%ZH)phrH8i*h1tu z(6dRKYP$#qaPl*;-IccPX>CGOn|0}_h>MQEy+9|h~#acGz8 z){KgtnlTs219JXs^}^rA0r*+1$^LWZr|oD*0TFK=E{M%Q5ed-F)j|^7-jl{3LkLPs zgTq-(OiBUu<@wRZZ{)Cre6c{?^!Q}i`-_hrnN>hq(c4pn_Kg=ODcJiFx@>MUjdfQN zz{NEvF1HzSz$pLTI1)eRn)wYyZ;kJhg_yrp2PA~jAh?8t%rUY{zx3GEgWKCceFMFF z2hJ?~ax&rXvZS4nAphHviZ7%Rm>pYCt|ygRSX7?~9%N)9lR-A^Nh zR}7w4!0P`yPDC(x?skq&msV*&)HiVR3o?vFVjX0BL5XF)w+9bx4s&-L)u zfP8ECX;#4pwY9PNB(81Hx01)0uPSjL7$~0a+r}w^-bqoL0qnH@6de5T_8VXUYBP61 zCPo#Lf@z`-Y6C}a6#Pk=6Fx!owLGM+jv)(VVqEgx^Ac0X;Lhza+=+COUrV@mTV>43 zMIp1eDUHql0rmG?h;l`9Ca1+s;(Is>*7tsoEnuM|1EAdyj0b=OxhV&+MfUS7#lIv% zm7f?)jYN!qUE+2ewOG_uoGRo-4LOKyT~lNk!$U(uqryx{LA*RdxakqJzupK3sygp$Sl3oCC=zDlR%U*(*Rlmgpbq=%Fyu@&MYX-20{m%{DhknQiEbq$Cqejn-T3CFwt zA9GGPCffs`yZ&lNgUYr)q&p5vPW)+m`T$&!Ap6VGh4ZfD|2BE%q75j!Ds4+(arx!J z5ZnH#*tj~>wbqcJ|E&A~uQ{my>hmIa+qW`zI4((Z`-Tz262Er-=T8tWF!UC7kEy8S zLN%!g?oF^HwpoCP!+~XlE$M0L8w(4Ju+n#;k?rUq3&Ec4SKW*E0wrki5axze+WU9j zYZvp9D*Ch5=|)O?UO~UCe{oB-4*y=N01n9!U36e^$)2sH87g_3%TTJi7@tG%TyHv}lt zl%t(r$;+!8ApnT-669W~#6D#%ys;(wG(|_d;jvZf*MG49v8hm$;B|xePx-Ef($`rl z^HY8gn5!!3K;UE!7Adz|UhK+~;vupf+8XOXMA;;{3iKQ6Bd!fe9af`ORX-}N>@@&k z`c4B5MC+@9q4^>qARqB_i;zn-&h_OzvI}>#(x5&H`MoKGX76 zWhYu|4Uaf*zLcDS$#;iZK9-gk3eB#9FxN+${fdJ+yu07FqcM2HvPP|43D+mQ4c;$& zh2Sv27Qub#6qJy>_+SfX=t&}U|8#7$X6(2|OVCMLSBhN4><%T4TEL9+1#9yiaPC5T z#_S=SO(dSR}~$)v+AekOZLF1ROl-ls8gqXI9fGwQEiWU*K^+qxf5#?Tg+>%=(JHV zE4nda-TfBR6d{nLN063I{gPSJrdry5Bww)ifRYiQB{BjX*QEOG%Qef6yw>n@KgZ-o zb()xkXYhp)9-Qxmjd9mHpHwngsxUzIPL@6tpoxkeJ~fG;TWo1M4CN9unn_3s>gYmG zsR^n3=y>fBlMrf!E-d{R$O)vZ_F?#rxxC0qoFNRRe_3fc;83dIS7^~JBFXYG$&+b>+2J)u%TPutJ^9%e8k z^V$XZMfl~BP(Mf!8BR;o+DP2YG@CigUNONJbkmYHj>Jg$qAojM|zJ=G60xZQ9S9hq|< zo-U@jYgg02XqvgpkTzQExR%M<$@@RX^k0{hLjtI*xy3pBa(MXVS8mc`Z6wLW6A;Mc zpdSr5nnq<-F7=U-k+3B~t{X#&y?t=QUe@$hdSyo=Bga?NQGGnb5rV~^>#Ef7*9E>P zhun+kmFtJyPC>yCl@*gLq@bNz;Y;2Jv)k@A?kqpaeIH>j+OCe(h8$%ln~)9Zur_$`sdqGetT`2H8K@b~6o`=h8W}_vxq!Q>5>NZ*Bu4 zb0Qq1jS~?8yF?JgJ^dcK=y>8(vE2Xdw0+QoSg+iH?!2b1DL+4piIbU00awNzOewaT z`?zpgiQHh!0-?s|*#(6OWzaAF<=YvU06r5XISvC4AYmOZCv72%fuG7x9!V4U+?H3z zz$^3FGa~JWp;CKnp_o5=UO*+E-&3IHCUK34!M#_P+O;4p6A)G}m|URx7+}K_pYB`a zf;}S(4i3!8rX3$0B}$4%EXx~&1ooopM(Rac&Pw-nU_tG3uQ|4;XK6!_op2L8#jMHg z!KjQ~Q;h``$4zYyc2?bnvmlzq;N&u^mf4+%tr&fe?~0z^5FeeNw9WNM2TQw=3hH0X zA1C722Pnl=AIA~is?P3NbD|V(5BHIC`o>`I8{}@JK^V5UYCk|42kG2P0Zf6Y=L+Vf z8ZgHjx}SWlDb)9D0wg+DJ^Gf48bfAmN(wK}dd$(hvp>h=_ntE-5cBnC(*JZ$-FKO5 z+Aa5D$gXGC0yOD+0AsUjKV~^}af)0{-f`)(H#u4O%b^H2!QeTSY+cUH%{dugajr*s z9Zqi?eB4lspX@g)0~!mG)@GLFavTr(Nm8n9oUpBCYiB~DA|gI~*een6&Mqy>&(A%$ z^S;fddizK?U+T-(8cfWex)g^)b2n~C+Mmu90~LL>6;2I)ydI0Og~?y~3SVz;MQEt1 zX^y{2d6>Y67eb#6&aR^;aRuk@LfkSyT9Hb6TGOv~En6L`M($eA9Kr#jfT5j}^1UN0 zZJd}uL}T1u7&X^BCRGYygsqzNg*X@SYM4B_B_e0BUlI0fcK8IRii;UwagClEotRmX z2j$!I78^;xL!xE>`rRD8z#{!1w@>;enfA8gI73{|Qa`lJT)+7;6$+YRWPNIHVZ)UY zb=Vyq76vB~i=27+YR6(7UvbMy3Pg#$&d;v_CucaVgCHtPH9C51l9Lh0bpVx*@Cpl zkw3MlA1fEBrl+!CZ3cpbyX;@MWnU*lX=f_SZb{qI(|@HIA-58Y8?f1U6Fy%X!Vh~w z_`$B>=um_wY{QDTU(QkrJKc8Oz5jDh%P_I7!H+Ao zH)hU{H#RmeOoS=;=mgO5hXwW)CU**QHY|TU1LGHtYU`;qm~Z(mnW>xA`yIm5;}bME zZbKC03_>g`SL2GXcl&E!2zO1>2IKA-%{ny@q`!M?(BQUYX`J4|vIPIDZtdQHF+@pyBvFQ&Pp{o@ug( z8BShlYFvM+r4&mp#s*}{r^ifUdo7eRwCy2qL6-|#5Lu65w0PZhgZrz*XqKXCa)Q@niyonQaorR z`!;Z6RR-et4qRAWoL!XPBXd4iB{E4d()2tuppVRPPu--+@BQk?Mapk;fIywDNc6qT z@8M<><`ZBKPBi95+{O#-aA>s7>RbGDSjXYACI^>f9FKX1h#efVKh0?X(MLSB~2SSt=brB4aXN zHYYbGC1XVmicQ*t0WHv99#acZO)QiOaFvCJ^Rgz4UYX7c#g1>`vciT1FB?YXE+5Ht zpf(?oQcB(#q`Yw7V#x6AW*KbRX6Kr+z@9XDwReAr`FaU^HY4P4D;lEf4r|cp) z3$|Bde&io_1Hr+>XMRIvYz_M+gr`)An&!*O11jZGY+hD`6xt+s%*HqcW5GcJHVaG-Q<-(O_-|SiCK;T)+h@3zR*GeWDxKTP`bHD23Lm1?qMI8g^WgpRm*hkXz4}sV|?}TWsy} zi>gT#%e2swPUc-^wKugJ;4oVusu3HOVr3bbp)Yg~P>0AqdrPPe9z(d$ay3~Gq}#6% zKm<~XgPwi?>Q7Xvr~1?M(zwnySf{*ZzTLMpTnf+{&K%aku`8dp-K!PQgev`YwS(}0 zm^bckSY)ULu&6yRLV^6K?knxjqu6U0pFt-d!Xk3yzcZ8S+@UW5<->aw9@r>U4BiaJ z5dgHUa#IHK&ezAIK5Mz&^m$VeTTaCpX z{6n(YQ&GN<%W4S5vQN1+jusTDKy(IlTpYV8-5s0t?a^y?%+1^_8>hswL4LMGsnt5U z4v=euKfGwBTB3(t_$O`g=qQP}^Zfbk&su=KHBse4o{bG=eK#3D(g?HV&m#NS*cS=K z#kS&cVofup#^dR|1%?}FO+6KB4$_-zXe1Ns)7g5T;LF`lDH~#upIZ{g#^5^DF3x$F zSR_PmToQD1Z4@M7xicP(WldBL2?Z+qYnxT#Tcaa0fCqN*8l~y7!(ye;cHrXW`?Dl- zL;v)oWiQ67J`A}ivh;XB;OUaCv1#kl=CTMVIe>2VI)2I4>e^^x|afG^gRv zrI0U=$NJ(Fc1f0)c<9{%GZ}BTBWt%w?>qEG_tNX>u_yM;?Wo@M*qEP>(tlNIyT;2! z>^+x9^F1q6YfmB|+9go+3&q;{#ZUZ}a0ctag^ujpfQ~Mn1hq=_@mTRkcz9P@ znOqwnLcoXkM^n(WaP-8FZzkOBAH&$np;PH_T|{05nAqyC#jl2eK{q3T+=;!D3Jr-c zv2XP+j4UfD0vogo+AH|UQ98MirfthkhWu)pe78H$|D%?fqSGV2ZUbbB^Yh*ZF)zCf zt9TL;c@hrlo8apDx^hHZw+6IpTQx2&PAOw7{#xeuD1a>D+c^%?UK5xB7o_?0!0WGf zuQgpERR;XDbaY&SB`p_(ams(ayNCJfv)e%JCnJGlLwlLWg4thhU-JQKv49V+PdEH+ zM4z?%#T3m=`A^=FpXw@=&2jSGp8wxjz`y%OfSi5+uu{K#FB!5wAs}>SqPl^@DH@(FC|D+vVV!ht*lLtyr0Lo?^MqwRBAW|UNW5Wx`PT#B3%~TGNk~m>0 zQZJk_P%a#m$wL1)oZt133zW!L-SH5v=m01Zr`4Eq0a=Oyy@o?*KVjf2+(#sU5O7f7 zYq#?%N}nUnzx*8FTre`tX8R!`aZB&~_d!osm_^4%zTxe??s@TIp`5!x4NPm&HGtAi zi^K{G+1>_Xox6IY6C=9bMFFCLt!ltJ@oMvHUS78y(7dz@BuKht_c!=vhXV<(G&jak zExCcA0tm7D;9PrKYim2Z zVQ1H=4IJo(v{V4Y*N$O7^i+>W-5Q_G&fxup1tWlP9OC%$XW3GsdRT|Vf@IDsNNg&9 zYWtwJt$LM=WKCmE72L!zitlMmNLJP-Knn*5VO5!5D8BfdSG3d8cl1W9GM#YU^>mKr zHb4{Z(_6{uQy%*Br%C)rvO%Dyz}FJ=_nC#W0b!h({>Amn6i`bx6_w&WqW%>5T`}mJ zUK7LsxVS{zQ=3_3qQc(qc`%fzL6@!SE{P0asey(hVk{Y`5g;RfrT?sU5)1{>YxIIp zcbPF%vlAcO2;v#sE}miU^x)>k-xK8;mLR|pf}zQxZmmP6lGta`e6qdG5hE*gUl9&( zmU7Cr{0FdG)z65H?I)0v19%we|32f^ZAm2{uW}HO6z_LIL^79VR8deL6s}608O@|w z%s`vefA$faTTzxD8t$vhhU4FU;u3EuE`jI z+1?JU++Mjr`yHZSb>&HJ%CjfkzYvsS+l#`0^cRe17~Yo;p`o9y+lIU{nnee#jiiW366utD%_XLp$5?gz+I!}*BtmG2`F-K zp(P~T2SuY+a9O2Y#m_z8o-%P}HaBOM=1nX*#>`1qs0HeRB}JiSAL@-X5(=^!KOx40 zL}^aQ0mQu;kdx(+$~RfH^n&&wmVGOaG;M7klVDr0^$El2NwE-CXtHQ$A<@+v6FH-+XDOy;*-reM&e7G`d_2&B z#4+C7_BIn6$GTK{=;PJ7bZhRXG&G!4uk)3MbmQ`Ycz#>cGT*OJF2ewTnOKJyy7%}1 zI)SVdxeV-#L59s3mv&1WE8eJgMA}(n{ZNrOLImPfMVBei%h=f|h15_4yxjj?G-B>r zaeugiQK7KU$4Y3Mv zU&6T%NN;SM$4rc(>WHzKnW2en^m=$$L}mh&oT;r|6B13^&M3^Hz?^Wx8~#aWlZ5}! zy_*3q%yRq1{Ynxa86nq={QP2DTkDeI!UabGg)YS$uZ8F0=J1n~pqqDbIy<|90)u3v zr4^God{;-9_LdUiI{%uGa1tN~1Dt6PTsZ&=EMj6Sl+7)lXP*hTS0dhW2yxS}u&7eU z^k)c}BNL08b&+!pTr|k)swzGnp3}{lna@_XwqfDnAFbQlB~qX|-5kvP+EPT?-*>Na zwdtGLzk}!Y%Cb}JPdeJ_pU2mH_~hmK@aGo*I(1d%xu5PA?HiE_proelPxs3!%9F{H zWQJWEnvnLZD*wB*zaEI^0N$h!BznZE%Ik1hDMOG>SU9|E0Y=MkOrKk+%~}~mNJ>i9 zfGX?2x567d`uqb_rd>SB1FS7(k><{0|I6Y|=S>>@n=A^!4xl7zPH&2bAiZc;Jn9?R+Q_!I{`7Ud|(`7ykcz@U6 zynT81DtCMAC_4Nzbr3N+8`HHhLzCFP#BsX;1qSnF4R;eHUymf=)rlhOM0*O-7%nKi zKs+M5tn|eGzt^6n@6kPtKIDq9g*2||X*Gqm@tcU}%n2N~B{e>}llIi}4gw;r%+qQc zGgVxchX;B*R|gA)jKzyqMFOzR-xoX!;Mx$4mi_9FNl9aV#t-{0)@7pNbe}uYTHA^_ ztYgPMBQ?I8pfXLHiv@@S1<1ieo;eb8DB|J)4SgMrK>{vr#QAiX)Tf6zu}oyoCG&b( z^D6#xe4?ahCDH-GQGEkk#8~^-5rSzm7F>?}x`Dch>FM+Y7(hI~zu$a-6P#6-!^2At z?OGUsi0sOWXTG+N4(R}RtG185=OKfykdrThIO|akz?l9Qk?wa7PLvRT0PJ)v+C%N~W zbARitx8D50>NWIq@7}$uYFE|wRmCU2f~tuay&6Wpvkr@nA49}0i8IFzrvm5w@Z?{j zqeaIUb(vQq?cNS{!+J^VV15c=DDSllgD-;2`oLe`*au0PsesIm=FfYWs5HRW?{<0hTjVrFSbz~ zdsx-Z9q_x6Ug=$Z$R$$3nVbCSppf7~NydNQ4ukI;u^*sN>WZ|OiG$Ri zrJg)$d-uk$aVwsKC<3KSq<7ZYPfY^y&a^^V0><7q>?D`yyx#-b@c;VgN z+!@`*FcN!?WCbUdobd*i8wIY^QYBh35XB1~7ti!b-ia;v?cy-Ed~`SK?|;m#EH-PE&xVQ0DYB><@kHb67@}gDN^|yUF;! zKgJn(hitRiKQMr>#S--CJ(Vfjb<{{5w)SSRiy))Mw=(7vmMp^si^UG0?E-~avV;1Loq zE;?g_jl&=-71xjJ9U5rCF{5^npOP~2)1TvWr%_%mo#K^0o*6N+109LFPy}bBm>?U{&y^@`Q5hQ1J#3`VG@XEyB$EH4f&G+n&zaA0jYiYyBytMxT0N!{!=x2Em-d%FHQ*u?OJ zFzaJB`~7M=q#?6j^($LcDo|3;Bu^;iIO|vuCG`5!Li0aA+QbD7cb64U+7UsOMd;&k z@%DQ3;8gol0zbV<0&B@$c%>fd^Jp7DU0g+C`GNT2 z(*cG^@1Qcw)MauR-|t179xV>%=|cbe^R1T}|E`QH(aP#|;}M>1Rv4Xnf8hPXJ`&Y$UEsS zlo=)tj{NAZSR{^wOZNb3E+z?+u;3%uFn{3ojL`(mu+{j`|^HNnnrS?LrU{u29tAsMW zdNtX+nDvbite^Y7O+mx#XtFihf_UCS(WBfyZi$F%)d3n~n{)e}$d+DtvUy+zT>6t3 zCD!d9O#!es0av-X1(d?&NoWMx3jAqYt{Vef8|n$u$}3=D)YPo{i|=2#X)&0)I6=us^aiPn>F*BV<1Hfc1lmYa#K$Wxs^l zN7o!DEJQ$?MU%VKp9zHo4)H|uCXmrK{QhaW2)qh?vhiLBmfQr6$Y;3w> zP^<-}@(ZKHsncK=w8n{}i*zBkq(3j7(fBzhL3rK^UR+uLOM6PZtIJG=-_MxI6~%_Z zq|&CfGGga4SEzDn=)L2N&*+ie&Y`xuyl~J{v!@=^s+M~Vtm`C6-e$?F>g}fSVw69g zdBaCX3a+xUp`i+JMSX<>s>RlWfCPP%NwLyj9*yFv6&OF77cdhjI*ha%m{I{IQ9=w( z8Q^nH>E1`_Tt5{A$p}&vX(d*lPOF9(ChUG`$%`bfqFc5J^OBgEvYTc+Z1t#RE6lNF zrl%!XWvk3+i&|>K)X(>KmL7JJu0giWh_$CFp?jidIyNB*%a;QffU7^;V?4QqkF>>B z_=6}6;Br)kfAgXp}VQa z#Ht#6Z+t{Oz8oaiwc*6Ul_{s+HX~$hKI+|Um;1r*6oty1ZCuW5R4NZF!=V*iX7fi{ z(20?n8dOT;Tp|jq7&EEL9dh{fEa7fB)i#f-h*>&Sl0(j?lc`4+}HX}Nx0z}R}K zcU1W62a5vrR@NC&EnrJBHIFv;brq&uqY!mgOJP$pJbf6Ww!R9LD>UVb17a&VEsip2 z#Jawof?jAiY?(<|OYf9humf3f%^v0?*vUy(29zVK^D~N`x^GQajHXx?bW%2+;tso3 zt3KOgvh^O7Bf7|Mum~jV;Z41oZJA3_m3kYKC;P2nir5I%$F$GP>E7`ju2YZ$f!_R; zQ#8$qK(@s0YBrkw;i2u(-chav{z$VURyN>1+wP(Tvxjzoi9W(xs7Y|d16x5=4RQ9t z#r+GP&B+xq4sm%$bQxAPR$g!xs2VreRB5MCybKP?FQUc@E}~h2COmD{e$( zUteBqdGcz;t5U9Trra}#30PTQyAwyg3E<{xP{mK#S*ns#EmJr$$}lp>gnbe7D#jc> z$n{eiGR%9`vM{&w7AlWpjAt>SSu2wl<_GeiDx7J_P*cqVpUJ!MZFLt)h6F#uQb=sA zy?ZoR@Ym|45o_;nuyN@zug_?A_>dTmKJX&AkAQXHlZ1_^H*9%}J6<2-qs zm$Nm_@#hb>P|=NX%>0w^U{(6kGMn!{H`}ec4esh`22ph~G2E z8MAMkf(-m<1`8Ozhw&-q3VHtAhsl0APDK^+U?L)`lbc1guk`sg6m#XeC>7+YP{-RX zm^0P2C3&3nA9sh*6**_k=c!DK1Hdi1_Npf!i{7MPJ%>k;cl9+gt)J)>joMy< z>l7N`vmF)0*X0V2X)W&8b~n{k1Az>i>l=twX`H6wfC?tb(t-e z-zB>3kGUc+750<{`NeaQ+7!WV>=psNsFP00ebe5RHR{@!e)m|fpQ+R-8C1@#Jm{66 zpoj(k6knz98N)`BHL<=a7W4g~>}bQCD%z>+273|8%E+NQ$zVoN zpZ?Ku(qWRGedamY7Dc9mf~ET?B}=(&(9yVQ-}ufsw53HTy3=a!U@t9~g;X4X(i-}+ z6a>pUfZ_HY64qg2Da_(nQsU02{D^8_p0Sc0Wmy8oWnn~Pge~n@-mo8JzgEc@PZB*i z#a+k1aE+cRS!?^GO39gu4%L1xS#lcHHW+>OV$=MLpX-C4Q^DaQo>NOqTHWYsnsOXEI^((sbY>(D2<;oq@Ej(-vjy8mj| z^fL5_o{=^u07Sx~OMhh{zyE%`FJb$~?CRGknxeGAoYK6~fiPVsd6}Szy|X6WsJ8bb z>#WiZjMdx8gXkze3JJ`0w&zjXK9xJE)eI1N@)Mv4&BuPz{Kt|StU3p!Q6+%3DCA}S%#LKy#r9cV*^#dxn6|8>!~shMqXYSVo#PqbTJO?tCA9%2WuI14 zBY0chO@mKVew@1mZhBX^6`6M^jp9(JSowXElT{W;R;3TmfZfr@rxew&c`A&5t-{pF z&Ll7?1JQjWYDzke{h;uWTCmIVn?>?Ae~K&=8k6U~__35x$Lq-GCcH-2y zu=nE}>*w*ae4oXv#h6STF-2K>EkNS4ZSS8q5;pkPVp1&HNOKRzBDf9~xUvv)G!kE@ zVH6sD2d%pqUruRwecL*g7pm^isMqRqfD_4?K5!Aq@e{)b)o9!%qb++3Rf_vMMc!}X z?Bcvmk;AH^rY-06h#tz4o}@~Sajw)F%3P$1M8>@;5~${@r2TEa-|Zqj4p)Fm$?(V# z3CzM3(3;Z6-3KMj7h0r{(rvZ;jLM2L*&#@WEgbdC+ZwoaI=W2e&)`@`DUs z%e|ycef}L+DIcs3X1bL=kR+}hNsC=xnx({CFOUyx=L}=Lib>mV>C^Ovyud<@lfmOu zP8V=ix?M+nugx`YWEFoMK7t{sDE@-B^gup`g+BI-hJf1^z2ISSLq(c+Fq8!U2;8Wv zrP8SCJ}m~*m>6i}4U!+Gnan7TsZ&qNQg{+1r886U zvfU3!YEMm$T;M@^dORv$+?=XT9qOQ1JLd2yuz5{Cbs3IcOcUyjSJ+cP0P=>I2l0Xjwt>z z6f?|D%vd>|rqf^2dMh@%wFtiH>FI%rWR(Po_k19`y9+tiq5`B5za}qo18gUup;Cu? z`xYWcq}aJBYk}j7Cx+f_-9r$Sv55{)9}7-1h~SNo3)Pi|pWTN)=ih*P89)HS>1 zJ14;3bFp*b9X^4ndS-G?iW^j-<u3mq^Qh)OuN21JpvJeQZ+Z2a?f`9x> zP8Y=-1D(#RJA*=KY~*&QUqpc?W-dgd!}S?XYNk>Z(tSdh{de@Z3l8JsRYSRhci;L1 zuoG9Q$wVIKWLnYnvEIFZJe1E+ixFU`h}5&*GRLyc6Z!d=OSZmM8iRfXmh%!LZuj|vCl z$+>tkMK(~h8aL)#E6Lwd_8kpLTT})T#@8>C%KFUB_sE@0x!ZljVr@Q1ndl|srMXQ! z{kdlxxu2*VJo`vlla&~(kZd_XRc$3f9N;a)QoAYFcpuj#e2&io@AkYNv!y!nvM1pDQ=@mG6t*JzhM22}#IC zQHMlT&YSdxYuiGKh}~z`9HVD~X%$xwsLqd$rPf1^E4|htIS~n;kMj$5#4MM0_M2!K z;dLE(F2zBcAc#N=D=IY~0v8mSYL+);rRWZbmkR8cx3WKOQ>tOO&3?#B8pYg&~>pU-x#(!gD_sizp+O}I-Hbq;?v#G&B{25N_!vqu}!65{@h z7&qKx`ONxi|F}Z@)Nq6WI3z%@9La7eUHBaM+DP5NepJ-58ma(pe&gY3F1A>sFi-JG-bv4lb% zBb8c2Adk09i$-8WC>If@<{4=DT?s5rUkYmK?5@paw;KNq*)RBUi{8{q&A3Z2gg=^l zThHyHXkt%L;28sarTcJ7eb8{*xzg+%P2rX{@q~mG% zIcNac$@xn=-dJUpeam^qHbT9R>Q3vbHBLGlXW7bUIq5LtRa?kpFZH6OhRTcFAvK)4 zO7V4^u{euYdinV`r19eIPRGR$eLA;70k+s?1>+gRP09P-zXjMo0_m1*GwK*IGmn6+ z*YnIgjh<@_W?3HO~$V>RuM;oO@XF7%rR)mxCui3co5_HZ>u>(Q>FN zlW3`lulLhEz{fu&%C)?yCARIj$p#QEsk2+|;BaLS3l-5PoSNT7m4ye4e{I&}kj>9k zA-yv4B8!jJkx~)yQrz}e(`pOkW}nbWGG%0h{K%P!aV_W3%lbBROPwLWM=@-|xn`qr>YggwMI0eH1>DDbu>fp}#m%ZsJ%#nPbu8qLGUeCbA z8{O(M)iWvaI__q6Ee`DL(jP+KcwX+sN7~RF3x{bYEOs~B6oV1rh+zUA%UV15u6eb z(At`e%+J)77ffD%RD4XTPBAWb+31W5v(OtDuau#4Bb-HGWHK>1cwj2mL2A3zHCdk}!W{xTbdMt7d!CDB;9{LZ(uvwg zM{eI3t8bRY(AN7l=!!au=%V}CZ_(_-r3(-@zZzKBC_aTGn4*Vn?s?7m{o1Q0Q|z$x zilHHIKStol!<01Xt~-NemfvDosXGri#DX*jIl4L;cQha4#wJji~;A}$|GRY$>P z0wNKieVsk_!7eUbHDS73x9xKX1Q9bsvAZKx`X2G2XAmLv)=rKfUk|tG=6I)ElS3<_ zT_)Gy6{r65#^+nn&zw5?n$ELV)r(d>i!5owRSUYY)}1*Er$S)>dte>`cJ$+fOpPI& z=V3uTo360K%Xe-4=|YoVnhm4)19J#DuQh|Oajs>RNr;Y~Qzu4WNr#LXioIxqTGEoP zgaQN~*OpMfO{o#RG%XNt#nvt^{Ge>2vX9ECWm3m`4|g9u4mqYPoQY7Dr9RSMOUt@I zrRk!{y_(R1MJXQxpy)4q>G8~D-J8j39YQmcAyfyi?*l;$KQVTom9VA!G)?AsKGxFC zx2pbu6bw17&X>$#dV-JMTh&`X3!ng?aTbmzYZnyyB>bX%FCIX&6hY|oqigB?xZ@UO zX>6gKX42{`MT-IC5LZLk2!G|+)CX6EljOJfWQc4ZNRF!LYPMw?iHa@~J1dBs_J)jU zNDK5?xUZ7Z43+OI@I`?H(~xaxkfMWba?7{)Gqm10&6hVPbvJFF56D#Wcn4}YE>~Z8 z6?d5}IAzQON+|ONHS{%stN#^cw=~TF8}8 zEzNcePL={!Y0C;X;@o|VZk>kN*r~i325JGg4cD4!p=`9Z5^ZC%&C}9+pX_&UIb7!rj0wda z!x+l%7whZ<4;orI#$Phey@lNDk<24iYDHRo1qQ}Xz!o0@UwSr}Ug#!k>@9^{buZ1G zlbE&y<%_+J@;(nLfFLm1rVvICD~%N==Dq{ji$CNvQUXeXByk|uD=*T0?({%Fa?bq( zv8}A^sTi8YS4*0vw^i$U|icGd!#b4shBgx2-y`ED z$aOrA7gLw)LroFVh8$m zkvdn%3J^5e+7jJn49;6^XUh6^?5L79`@A5K7e-RWe2k=GsHaIHw{S$Q*=W*Z>J+0qM4JU{H{ za#NCjJ0G63?CbA~M(4f8B1g)1INIPP$;H*kY5ACU#gn;Cq*V!2;a_QgzTN!rm*@8% zkz`REZTL=fheQ;P`@3Y-Y#oXa@1~nshA~Z-vS2*xyjj}DR=3u)YrD^v!MA@H1l^!X!pjcfUZfaF&@6a-%vAkdf`48vA^L zc2EgnYvn1iJc8Jl3d)prUS#r*ZegD^VG0#2p3`DYIj;P3$o$LFrv z-l(j|;%JlvB)+~uP0U%k$4q#%GEGlZ!V08F?0v+WISSk;4+sBhW79kLiR@K|auQa` z|CBA?`9`#YK}smsf=j#lFlm}3mGcc!2in-AD^~8AB0c)>+RO{~k}_Qx{$Asq92Qw% zvRfK@FeS2a6a@VAyI!Z3cY#`fP^zCFK9&(vSV-^dH!C{X$NCdD+Js(ph@W!%Z%=t} zPLIZy_1(>z*g6Ex?*i6Te`k3g_5b2_Cx z1ekTuS|10^ax||3Z->*yv>kVcVDDJp4Qon>x{COQN|fd_hoKJ!z3NFSP<(*HiKJE% zcU_$)BUpQ%`AtS}fqS)=-K%TIvgvDlBId2)>#aO{xn83SpG_CkwkU@Zr@9A7X($#q z6v|qzXM5q~7vrXSNJdKY5r&SB=N5@vWk`HUwJi~HiqG!k~C<0UMV0+hYxPN3z(0Yeb+IIPNQjEjE zsiN=-SI@jv2n&m|u(1VRE(j|%ur$M$)P1Df?3!YGfmEDliwe`nfl=cf&sT8Nxb#VK z1bf&g7j?JM%-tg1hRAjBB(EwcKcb+|NRNUNwPh<@Pzk-b?GO*)jE_=>%3BxcP~qII zf2?A=uVjY)I(5f(Yi7kU4QsyxqqeI%n%xuTQOMHhD!_%N!7U&2j5r8t6u!Z@BKfEe z3zI8SWT?~RJDx4qwBxgn7qZ1U*?&irlib}cLX$U$$ZX#ki4ZNODdc@ zhg~&NcRX*sjTIDT!OoG`sv#p~^7muNdd+5p|2PtGLYcfY4LULT%i32k^tT62M*6z) zbSWnF^c<&1z`f^8ZvWtnhKK@F!byYT5=0VtH5lS$!opnQ94A0}2_Hrqc78kw6pO9K z@I*lt7Jtg8-QIw3D5Q?n8)h%&Ap^VSPsppl)`b`He`VC075qw5rHt>Dos~)aTczdZn;49a8n$EzL`Q8(%!bd^ffMzjASRU?i-^X9_UFO5AyH~{F)Dd z3>s$R#^PM(oxrm#;crrKCxCCEz>Nb-1X)Vjqp;x?GbL_fANfnw8WWFfX|J~0Ryw|i zU>lmP4g5q2nkOz{#92X9-Pxkgf4+b+6&v(s2T=aRf<6;n!%~%XlV>;8bz(yLt_A8= zR`XTzjou+DrNu=B_HFJx8KIxs0!64qV_icwPEhj(QLnx>EItf6F^u(6LhXP#fMN|i z19dG1GExc=@2yAyc_6%Ka$_3VTY|@xJqvWP8T}{pT_LBNi@jbq{DonszCdpTKOZMx z7lnRZQH6^$zsh2!i^>&EL{CEd*uunQvkHW^UF#&*cx}1I%E^4Dq{4B1@qCo7uuh5f zOLH*6W}*wU_G6|Pzaw6lD`~j*cQE^BSGUd`{iU^oAEBax7CXl2F1l-KE-P84tXbG| zd%bu4;pWg>rD^wzk?pQD-5#X+yhFNh(e5f9DAye2#ajIgWKVfX&MyqkPV z14|@pm5k*3X2RHAEthy&uC^(0I@%8Syee)3NM*ZHJe(*1dMgY#<~UM(!Vj*LU$dsb z85PNx(@3<^~nw}-c_ zi33K|Xm>U&`~A(Jmu@RMUvqPU_^}h@E`Fy+c^vwSPfSGk<$1^_=LruigN9~4wg1_D zRzHIQSW|~3VE{ZifD3;(N6PwoR|;?1h~vGNd)H=;60j-d8jPNr8Te`9z!gnJK>;N7 zuGy3Qo4g88#2FddwB0n_QVB=poPAFEBhbK4C-@q^|Ck~i$`g^+4kCGG|KnrL7YQ8P zrHXE`($_Z1rWF>k!dZC2CBB$8nTC&v>dz2of|gf>HtV6Nj*cV zCjIY?Whz2~=vTKtlhOQy>`mYcrQ%wIJ26pHBMUYJ8~~`DI?bR&W|?r>32e{v;D@;} z0~tm+RIVu4$mZs)vX=DhZEViE6y0fd&#*Wp`3Is2rq0jnPLzPty6?mTM+a1Ho_48{`jP0^$ddlEbJS-V-Sx+3aS~ zM73z6s|^3~DidWqBaIKiK{PB-OI&kK{p47cVofAmaEBT}hl$Ocbl4rsexJ6lyP^o6 z%$V)co*}b9<24H-sI1|l%4>i&xtK#8^z2u!Kq0AqWgabd6c1#P>n(ixVEv6BB{C$p zEq=8J7H489U9r$oP`GcHOoM|iar4802b5vw+rlqs5vqN7jpJ;3eP6y<7Vut|zPUm~ zjqbnvII5iTbGiffVrUz3h$?|j@avqWH1buX0vn5`>K_D@oWg+NI55@Zg;8f`WiV?Z z@SAteI9<&2^qz?`OC*WM2u??di=JSqN|~IkATC>#<&%;Is!aZ(3QB#7#{eGN9sA~q5OvXBNsmib_JOi^5V{4VF4@*WfC zgGx(Li&Onoc^b5C9y~xm;A|tHzjYnyw75z$8KZ^*o=T-$ZhN<}QL*)Cmk0Ln50H9L zu+&QlxmH!ayX93o@x`#pD!DV>^UznPkF)6sG%ul(kU_|wc=^o%L77-9-1qbw2t21v zcMRc;FYrRdL$2Y@+^HUTUzn?OXjDk@arncfk3>@CRHVZE+X#lCXqU;{J2^NBXX&P7 zbHv!B0>Y5#37$&bKGH>zklcsLFFZ8s8BVFL{Joe07aVIWyjvu5E>*MV7<5U{*MNM^ z9X76QxiH5d#rLmtt}})H@~-(=SD-mFngoiDJqN46xpY2f(&<2Rx1AZGoVWH+)6EmA zUkG?=df6<}v)Dr#)Q*}Q9QjXl33=gaJ6~aJbg$AI#h+F#yUV+(=Pw+93xIT(5L@=m zI9xR}ZX+yL&}T!WH$teZQ7D7#Jcr~lf5y#}N4g`pF3f4J zq*7~5Yy!qR+hKPVa%=%CvalIIgP7&y(RAIo&W1VEeh;DyUca zORQdV0j9KmF-=_CQZ@HRf7ueexzX#Hb`Bk#{B@ou5te2dBA}6*x{2^HkiZ$kMJbX` zcU}F7tYFw9=>puY4$5q5UW?V(NDlAu0YRo>WK5p1!PpY#a^1PUzfQ+xt$ZcMVRw*p zMODm@a0)28e_yt~ym*!rG8YpTPVYXbVKL2)wS%*_EFJ5-o1Ti{E zhjy<>h}OCL%sp;#rcsMXmMiBk9cNIGV6{t ziBjmy?x@c4`X)HLL%!5h<=0!iy_X6s zoFuvoN?9s&zbm=a`owx%yPZ0}-Gj88us7X;om(pk_n29eQNRX}Ckd4t#e3A>bgT!4 zB43WH!@FN_Yb<@ylx%K2nE2Se>eT!JSFubtUPGVAT4H~<;_4368JP_JQv&epZF?p`!LSOX4P%U?%bJF=Y zX#8oeLVY?3BVRO*Jr@xv@8tDrq>-5dz9wd{3EEM=*xq_FdZE_tZ4ge&i}ZRXw6kqX z2|rclbA()k(f&^(Ap>nSaUZ0^NLJ1;0nt^m`-oY*edclftSNRmXzb%?FJ+GTh2wm4 zY3JjX%C@SOx@sK-Kk$6AE&$F5oR6~@>Cd^C_ddZ$C8Btpt(Taovk&FJJT`dWrwjcW z_#)r@jdri`LC!al913_zZVLBAWv(k2#wjVlre<&O?7$h~oqKR}u!lPr8c0;(H2f67 zikM%PE?4N!lPP5*a(x~bP; z4ijY0RTuW{`q)oCOmE>Ogowi4fk*pPcORr~8m+cg>6%c<;bXPuY#HWmupQv5oz#@n zG+)9_Zdz}xa@e*kE$BRX9ns20!|qA~6kpad&3H?#J_@u|&9)6bhg`U~SEJG)jmQ8w$5VtW$O%Hm!cpUQk|fZ=Ei zawjJtv+lEXb~W>6Md<`P-|2Bb6PCA>n45O3Mn-AL?Cdqf3b8BO4KywSUvN^1Iwqa2 zZfN>R@-=%z3mUu4bvfIF*QXHx+CS!rP~}2ZHa`3nbzMjq+5Ywu{X9OPEj2zKaU6si zkeGW?>#*>~)`?D^TPBHcnm_&vjNQ=}Ci8eP=IGS(k)q%%qyFi6>@fKa(i(vzqUS2B)9hBgL}AA`eh||$ zFh_2L>m;)F`AFf-7t}=#eif;ADl{0yJmXlIg)Y(D-YO*7V_eX}(#kSd>hODaZ>zJR3bNn!}0;x>@t z5ZsylBBk|CPkemj1+D;x0pDQajrUT<($DPewNxr84?& z-^SBEzsK2;c4vL(q3K~2S#j$<>3H&L-QJ+D11F(6SA8Fet;_i;rzqQ8kY7Y`7 z$chvgHDBMxtYQQ4*_iPSJ2-$Vb^lT=U8wHTzn?E%e|uE2_xiH%F{9qOLs<5eB#O^# z^vu53dK5Hsz#P4N^D#eb%4(>%{2i5$;5lb-=9|wLjMpIJRo`Rii*E1qQtV*7gPus!9ZoW z_`zQDJuf&_kiiHM?i26G{(LnH_mIJv@+ar{@q^r9)498!SrcrC4bUb1&SOubQIQ5~ zy9Q-$|HCb|(Byl<(uEms2q2z<(2wzedBs76dP|sM_kaZWrS`b=3+IV$<7#vMO|8bHCvut}lMOL3db?Rf+TKF;w+3*`C` z>U$}G{fn(uM0k$v16NMr6{0~!ah8+{(L(Y|wxd@auP&MUNCE%~|M@oSXQ4ay=W%>A z8NN{ip3h^9py({Qpaez4*}DZhPS%-N)|}{>pafv++OW4osu-4BQUil66Tv7Z#!s*g zyg@?+6f^$K@x7D$3AT3o#su$*#ryUFSWD|2xWWef*^N#I=?As%@xwmL; zIKf+a_{WZJ#H3?A=rk5drq8!|xN6ggE46TLA|q{mHm3lM3TQ_o@v4F&oMf^y$**gz zFV0OcyJ-Lf zy-%T;i&6b4*HLQ>y|T1F8se}X>G{hT?C%}DZOW?` zc+~=Zoet}-el>Xy8_Pzbo>P;p^p>nP623XF2G#ts0tP}Ive7mj=C(mH<&?fQ9hOU0 zgf-``P-<7zyy%SZ(k(zED2nW<+ol)6@B|*`1`@f&&F@}!qIvqHwZ@)q7@J%@dfKJ% zpyiV1^x-GujAz_#ybpI(B0IZ@Rvputom$-e(bTK|tVdW;En6(stYCR2E|W9%c9p(+ zG-ZeQPELB|MZUg8AZ--088joTes=2&3auOCt_-x0LVAk7yw7jopSj`gi&=wf4dqe~ zZ+Dy}%_m6HLa)t!p4XzIdxY3{wxf#rg}33oC9_@{4qMBy4v|+S6PSY9pPXTxhVgGYoz#*s3+a{`mc%aFVyF7ebpazh*wib`M$X(3vb{ zD%u@iP-Ht>a{1$SK=31`izhw|R+%cBlEunBI~hSXgzT0Bd?sTSXZL$?lxGwVYf>1s zGh?a)4I(3M)~hdS9keY23PJREGEKRY+|>4fV9`w3v)vn%w%af9rS%s1V9@untBkCi_+*BEql}js>V57K) zq$RA;DRNMeT5qak_h&mA=IU9w&Jmg@3h@`jN2W-sWI9;?yv$a9mMUM^{v@vmbF1V@ zu`?ARM$NwJ-8E@V~ zs`+X|7WPTbV)7G4&kwn$-NDfne9LXWzBJ^Q0Q;-;@_j+WyVD(3THBe^XONqdjX&6e zGF2q^IE>wx#EHlDtKpmYc5i-6%VW=;j|KPoj-xGh8PM&Aj7~Xmp4D+ z1@-Hnnfxvz^99snf%W6YCz*7B@XvXMZU61!QSnAPj~z(^5c`{5s$2M9?i{1i%1BxG zxgX|#nQ{(!IxVox#%g>NXS>lsTkUj8kE_pao?c$8sJ{zVd^v}@QH(r!kc5&fhmRS8 zWXk;|F8)C%f}BPQg8yR4HN4IR7m6Y4_2T}f65^+HlR&r_fxw2>CF)pzMC`$Xr2J&8 z)AfrRHTtQK!##fu+z|Ge{m%pZ=dZs9#_y)*|9tuXN|5^)E0v4g(*Z>fAsoU(HL6+D zvb1ya+IOL5#7$|Qj+dbnhM*3&qXFV&3U?=eJ^$|jkXQW(Dro$u1XfZlVPTlwi+}Pzdj2mHwR?3CtGA`H&`ZP7L%7Zi zV@`!w@s!Hft+Pw-CAw*3K83yU1J|@Uc~q`~v!zETUy$z3#f?HH|Bzu>T;ez6E>~q` zJz4at;q?#iCP-1jPIZJTkL#%|7Y#DR7Qf-5+JN}RBVcTF*1wCVqq&}2U8l>}`_B|S z$VTF+@nuPzXqDvjeK{Epb}Iyb?Nh@$GaV9VOWO7__*zBi7_}PdV=h`6>({ndgz6sP z;m6^v$1A}~*E&Ag8=l6Sfwk^p)UZPlI#iB9S z2Yhu$x()hvukes;0HOt1fip~rA-!xO4?TJOaMJ^oX9p_mM9$}00D7oPy}|^#3V{#2 zYt6CpD)0ymzwmaXe>yFX?_c9S!`VbKNf9Y*4_#?F_{vPAlUMGs7-I)|O3KFvmVUuD zK-oL4PanO1!(!lUJIl#0GYg`M?LW(T^*ks}^xJ#7Y4{UWY|_kXBzMc~`BSdOO;D2+ zqDfkPGB<6HQ5!`Rb2%1Sjou7%!}PqommkiXshj^vd^u>+%mSET&AjSme(GpeJEuu{ z_M5^*EWeL%P>fd@0h9hSM*k~RB=7;fe%_wc$-uITE1kRw(*s12kXde}nb8cfZBwNm z{|`9|5>j#hgIn#y(fELCIVU=8?T#n0l-0mbg__BrzVbLdpp|Si?WcJvg|gHv*Tz7c z|KphU_Gt$;_o- z^M(+k3WG?HuZ(v%Ca6>JEF;CqLnd7)9u2R2NnyH0c6cW#pU3*h2Jy$4`8~X(`oB>B zNHTG=T{v!+vjs7R%#!>h*D7gc)Xu5PaVawyq)a!x-XApF;Z2cilkQ|D6O6=-YUMVk z_VNk1JmTYxWz*OOo3n2ogEAVWS`-uwBxyN_hqh}z>q9?#kUsX!p$M_NW_*0N<1pvx zIUfK!p?aM@V#vO}4fTu%AN=sJ+*oQGQKB{Rh?d9!nkH{w)uu4cad@Jp`ndPak)uTt zZK}eQh=0s#X#wKFc}nzF)mGe?(HL66fV7a>f-Gd^oJK)rPp)_w+cAqtV8N7j=CUGmh;grY4pgMN8GtHiJolsn%}O3c1&pT8j~E7?+^4L;Qy>D zRz2jR;*X_E_;BfyGakpw!i5Q6OqlULI(Z@rV-?TPPXEC4(kYqpFTMt*)-&4t6mK62 z$^j{Ed6|9Ma~aLPddaaxem+|o+YE4_`FJuZ!{8pRHqK$T=C~<)Ca>Gu*O=kt3RrYZ zWh0TU;v2M=Fn0hqyy9w=XgcEAR)mlrUbjF8_CPExG`FUxN&&6Fs{SKrxEPJ!~K7I?)Hue2ISqyfoR(SxvgbobEI`>>|5oHAODJue0leU^Wu=6ZZCjX>Ffh>2Z=E zQj3Bgvdu2aQ&C*)=z z%L7YZ>2R5auh3&sK3|%3+j+C|ktwq#WNk5~=MWXdho^lS!T+LA|X5 zex`IPXYivqfNJ>5r}j3$g_%C`U10Q@NLx#XUDW@A3-$o3VaHY*D>)9a{^7@-dMK|# zUY=nbful1~-gx)p*B-(Sj?u8%kPa@u>BIT0gSJ0$7DV`v%b^LLsh=~*zb@_hb!p#2 zT{macnz<*FJKT*h{z)9nw#ElbzTmxQ#MNz9J!qea|Dni8rcSn0T&>?vE3IB)q7Ns& z%-#+TP819FreELJ#hobhBWgxhrEgNxGjeTbwq4CVKtWIiTkR96@m+V>bi<6y>IfZv z{?DNzlI`Ei!4Z#nRG0`EK2cHEe!U+EyPU`_PT8S$P-K#FX9y9m1ftmF z-)w5D&9S+@zM(w&0-SA;&}Vb_5S!T|G}8~mRX2U5EL_FiJ$wSC=pLZbLUqrQl zB9&KqBqx5y0!$50l%_ z1njbKc;=7X#PN7REKf_A3v(4wnc}Xhz1)pn>a{hW-noLdT01`8lb)6(-8LB^!Y*Z^ z=YXZ(4|6?*sQmaYrd?Ha>zOW~;KtC0&QfgCvJq;s)Qp6T{iC?O%oamv8Z<{pYsej6 zFMlX+tn;_dhZAs`(u#KWTT(J#XTH+q(D>_9){U*)AXfTZXmkP6pxd_qn9N#kqwFO2 zEQ^b8qu(;Vvkx7xwARcxdHgFi3KSJJ8V>9QhO*guo`@;zSVB+ksR~I?+8)nu;r2{BJW`rKd$()KRa3Xh1-pzO zl2mz&Bl9esrZ~dze}X~YH)P|GB(Jl&Ld*J#^kUgxrIa1o+~1ZB`-o(XBW6~zhEgiE zWa89;Nsn{#Un-5u%ubEf-m+!y?Ia6lXQPAhDk=6A1b%YMGp6)%B}@hv-%4Cd7iZOv zZZ!hzt>3juKLzvQvrkMuc|_^Qm0VgD6lXqhZ)vv6HjaM`nF!J<^U}e1MW#pH)tbKW zPjkl$A{d%YbgJue48?}Zn7&+6;yfNs7iV~tGD;tKF_d^rZT4#y%rZ*k6g<3XrGN%}NS0po>VO>WIetiSf0|=hKN1QPCfPZ@O*&=TMc6o3W9(8a^;DVC6PL1wxe7 zm%8og$0`g~*l#afPVTx@u-VRFofb}dcgVAx`<01f1;q~MY#uj+$mZfQOJiC;wi;J# zlQqq;2pan?r%l+APYR|Yu&x+&9X^{6pZLX^;f5q(MWE1dUIJ&rPdby5H7`)%AKk$r|APi z(ZZK1#$6$yFC7+J6Ng^VmJvURizv*jY8%3z6foA={#Pgp4&h4YQt{XxYmaXHR%yo@ zL#GgeBl-_{^LMe}zy?6EEs^t0?51xyI>o>N$y6golSQwth3h%ap>LLg?*1gyfTqw` z$&(zXFxuZNa*p`BOhCQJSUW5Jlao&i8|J45YJT=A8Rk>3h)zcT;$24GYfcviCFIPg@L- zUmB~ZUxErWyF2wEZ31Rhl@rFFNEr^J1&t(Blwke?R!@@cIs&r>IeIzyz?<03)Ll#s zB*M<>=M;SD^zztB8~?uFq!%W;R~rhL0c?>mg#e(J4pMYd>U(Rwg3_Y@WA zCziM96C=3COU=#UN}aA!d9GpoiSkrQ2Q%%S;XSJx$9ed-Sj{>pf;w>6Dd~R;s}&{? z4S_JdJX}I9EZVkS`k$X|&OQyoz&pG0uUPa_2LFm~6~8R?g<4m~49I0gY9-Wa8!!oj>>@TJXa%uO}v$0!FyPy%5klV_7> zikIPxb6(M!UkmT1D6#vtf=##7Y+w*7%P1gAbeV}3Yn*cPK`d(l&x&=M6_rH+IaL=j zp)Wn9iH5qX4wFhfh)pjQPJTASr}eZ0PGl<6ATHaPYlZKl#>%WB=6&% z*wx&!6GWvy^Y~6jjdboP&RhvOJ$|2cX{$--i8{aG`M`{S&7>mKYz;_68o(H3e?*Nw zaUF1m%I5$JCsOC%5E`JNc6>2mxYr=O|No=$!t#82));U+PB>YUo0(ahYN+HComDVu zTjK>ZVY(sgSYk6G+RyQrK|o_r@cl1dxOAiKOzfXs$>TXB)7GmtN-h_DbTp7Q#%xE4 z>T&TA(Z044n^r1Xk`$LulCg1VJ%mdA+y-;7ObxZ}>$Y`3qeY^_t(GSc$Z$tckUf-Y ztzyMCp~<32c>YW=9aF1hN?T{@)CJHUTIQ>el_hX*=eXOw9HtZQw{>U3KJy_Qx7@d0 z>c?p!rGE4H&pTDG%D_*k@N2)tFVFOP(oVI=@H~2F#YYK)C6{fUDv6+iD~Nn-bJa0& z-94TVw-HB|x;ONurb!IzFCr5y8zBFa{00=J|J4~$j$5dxNxP17EqtMuPZ+R|T6->L z@@>#u;@!3fi1|It#h>=U{!X8tfKsB%y#%eS;yb&SR9%^L?O`;fQ5e9!hQ;+q|Qy*%nr<(Y zXajom$KKyLIMPin9_TdTw5;JQ^=^s5HI6F4j!f8m;D*U(aWbJqvdzm%<5@HMKxfqx zQw`qvdJMVLWtIFP>T6FcmCkR~5IBUNd1PIbFO9>Xqm~}t>Qc|m2-3NV!xjDX-xT(b zGapq6$?%x_j*cc)<4cX;oC)&zBlGdL$Oc5_kMd8X4L>lU(vs?o0e4L00r zoV>%?&D7q#q_`mj3?@WAykR^EZ$vv zjw!VmCizXQr)+=El?WE-nyzYKZuoQjh9IhDq+KmXvudWNXZu`nl3lP1u#y0SdLoBY zDU9N9Ek&*)!KoGYpl>4Q%v4gequ^0&+`p&k{!=nO&b+WJ7vyE*Vbxmw!uk|3_&6&J z>f1mNoA9BdKWF_~$so)dweMfG=*sFK|0pOvM$EPJoxorWGm=K>jRsjh|Gtvh=+CdO z`(70tXUH=q`>LlxpB$@{)-$0Bm~KXGD+z+h(nyw3gQGtMmir=upD(M(2YCm2k`Sqm z0siuM=)%Fz_i`^o2Q`v>p8Q0DW5j-vlO1Y)BaXf%7~?bz(+IJ~M)8kyE996f=NE?g z(6$n_>X`~yNz3vQPiS@pJ4d-aO!M-aASzf1c`?8MT9FVwP!4nQuG~G2unMb=^PWyk zu*AP;BBO_NWWZ?)g(^aI@(OX7r+#nJdZQnVyuR{pyRB~D{2;W&+O$H`Ca3QFPXha2 zTLtyH^B-K-pGLS>&&_c}>auavv0C#o>y-AhmhqktHwfDY+$VkeMF`hJj_->=rnq_6 z_{p`1wYn`?&9c~PYi3iUlDoO8@_zgVUoR)j`_x(D9KxE)hzLi{R0XqDrDDrZDpO*f zg$oF0(Mrp#1VpkV2#ZyixcuTB+Jbh7#Mf{9=~KISH}s~BG2xw-ZDilKI6IE)_^s)_ zTQ;MPQ<&?C4T#Q_@G-hNruwyXkY#-4Xq>{Un20ID;Xj$<2Zz~fb#Iv1GbgHwv-NvX zv7OYBGN4f-!e_#6J5>>963TU-qp=j6M7mniS63FE$K5;$3(lcZs%kQ>W0}?XwrHec z(ztY(HOV4xcLfNyKDqJg5#j2+4PXueCPG9KRCau-blxmiGKt$GO8_`yH)e_lcC>7KSoVfmZp zv6{6YHt)AxTpop=^Xk%YLOP@;;%tj>5EoEj`1;JD#sQ#ejD1hXA92kd}8!n8k1(@K<)F ztXB7R|9g_?CHj|-{Id@M@a)Itx2;z*n5~=@?2Fvr1dXj<;Abb?pM`Y4d4I=0PfDtN zBEeE+Qy6ax;9BJS5ztvGA}I{`?3sKvf?Nh@=O4YrUMmeEQoom z2moI|jaC%n7Z>i;?!1iRt#kW(+YW@B8P6Iqff&qxJOYE?4KcKOVKV6tZ&APLwE0nA;aC>f+&DOS71j)^Gi;3g#^oO@9M! z9Nfk!Pez@QPATN9o>7VTm4h$G+3mZT&<4NhG7nf*1i1ekK#;1GVp2vX{8;E_#?~`6 z3ny4g3^^`Q{sFDSFy2^OhIA9UIO+7I&C?MD#cB%rHvqW3Tt4WR-iwOxc+{*BBq2Q+ z?9m&)JFX}5fQ;Td@cl=YJi$l{M+4DN@2s|bFkMC)$GkAWu$Sal*9~} z<#-cKg!91(c}PP&&JWRtpU%I zK-Tj(-5(%v7|QRAF14NJ6@y4yFC7dZG>y;GuMy@nS8YAKwu5P&i>DJB(N#El{s;$! zTImLpL)1((n}fq%<(TE>-t|0`fP~s_FXm!3`7pl8W?V}mQ%J;~in_wXqx#>-(U0Db z0n3$^o@LW+I(^f;Tfi1-VO5G7Kwm%y#xH+E!?oIE8W@$_6~7F_NF+?yOtl) zpvi7w1rcCJrkWHx@w>Y2Pd|;{?jE#k{&XGYZEcPoEK#~#;M6Gy7M>kGT;N&nj~2aX zOkmYf$Qi@)`;}#KyCYtuXg%%Y8GssFThCCJ_}Z#K(h+1y;DaW)-A zAa^a3@e`k5+@ByneGvS)(O;-#=WRNi4owdbHmCg^BK`Nz8!I3*H9MQz<8)suu1urq zr`wHDO$R(fH7O5!CelQZ`kt@)U_0?R>nv zz8M=L6_+*8!-gAC?qu`^?6CJeco5aeCxXs{Tyt|GjhfBROX{lh;vD)nf*#&1{m(K0 z28>JFZk`jfOs>g_`<*&eOjK>7M~XOW9)HRhG*IAoV9uo1Ib;%bwH;a2`(u1)9Tw)j zEWml&y9*~B&mN2g9sUR*HC{L+FnIEcAoQEHk5TDuG}@#5TwRbzeaB6UlE3W7F+(kW z)Add`k*)f26ln2QTpY!LNX_+3KXeeKH&rj8Wo$L`mRpdq`C`9o1ouAoyzeIwFiLF6 zu8xon>959l%AF*+d2z5DTCl*~#sL?&Z1(6$yBuMz@II|&<(^1Yu#F5R4KBWF|69ZG z`vMM_0B5?aCcpg?tr)qRhQ_@v`fF!oK?x!TLC2$tYtRhDgf5#O?=K;1{47hANw?qC zSsC30)-}#FMbgc=T=Dwt`A zWK5wBx$Qa(nA?nsEZlJwrZia^clqVu@5lkW97+SNpL!?AYwgGS^y^4uL`0HpR~pzq zOw%MIw?4EHTAXq7+D(IJi}PLE`zu%YTR%wkui8w69e$IN#S-<}a(L{DFeT5XY@Giy z@Qtsmouzb*c2QB0owaR4hi~psDXkejC+Ky-4)o*6mLx#d*0NR;R`+|KTesrwrT8kU?0Kkr;f+q~E# z-`+J%{+8wdL{UBo>5MC`LSO5e3=j^Bvc5|B^bu*kzeB_s!C&qkxM&W_}P`TBI^e8qB33 z)L70UG{Kf{Xl&TH_{|`9h}%1@lkOoEd(Y+cTQ`)Y+p8~Y-6W0p3ySJv*Iof zbsS<1A9(C@*Ea6h$hS=XN_}Q04NsN8rs}Nvxze7ZVU0^jef46J!Al*R)Xv*Z|B}c< zkSqn-bDr^RCK-Gw7FhIDK4qPY;}g?9Yu{Y0zvg_b^*%50 z%&&Y2?dNZJ!7tOnQ)AqEl53DZ0_er?^aS4nqx!%?MT#i?g?mC|< z%jyWKTdel*WUt@ZDSQf;vm^!a-Ej1VnlEgJQB@uNZe6Sp zE$7NC)l?wviAl9aO9NA*W-;+4ySmF7L&3X&aX0>oSJzGG98f8uBwyXOhE8-L4Xh&2 z+UzvA?cdKfs&$MyJEuyca{Zl-?EV|MuW0t* zONxBZ86%|5VLZ&wG&HQwjiSq>wP-oZa{{ut9M=lT2zuMk@4!Aq8L#Pek(}7kQ5>p` z;2b%T&@g99Rb|ORE~wHLf1hNw;FjYevpOA4nPq=8)3rkHlI$nFF1$Rv$5w@JOHm_K zWcQLbhx3=h6FwySjJiEX-Y3C{VvfR9l}XTqoK3za%PJy#AjggMwGMiHe~HmaT@tm^ zSnBhJR_BSr1Xhh6ysp@6|KMRXmEGd7mDT=iWYfr)i)nvCK}Eo-?_y70=~_HX&0?xS zt;^st5X*8l^p^j|rJprn^a0-Iz&AaiSp_0%LlBf_vflu`Le6+HD~nyNp*uRcwfgyU zFim2q;b0z_NZsY6-TjV})~s%ccD|;5*6Y0DmF+U=Zs(H4Y9UsTEc#8ox>k!%q*vdo zjE$fTAkjeYjA_6)U#@BB8MW;Wj`?+Y|5{j$KtO)EZ9=(J23v1G2UDSu=Rw;zG%7k* zj~G#!DOi% z{RX9qygE--cO}^`5+bFFor1Bsw<859@*%R&tnSYl%^{!~**)`H_oa-P#eYW zltBZ+^o;ekyEWCg3mnL-D%X$W#hZy^dp?&Kpp`5&xtOnOrKXQKH%W7s|A9S6 z;9cF`3c+1V#3N~7S7213ZoaK;EKoHv>ftUt*xAoP=wLzAUn)ZfSBFJiO_wM!?Km3m za@UbdOlb1f#8O95pS2@6jnb8Ah+@W%opwA@4)O*42Aq_zFqSC?U^&LIW8jq|q%u_h z?UO!wJGF$Q%sgH{xL>p!iCmgzfGXVIN!syq4Bzj0TBTsJ6X^MLZIr}Rmu)v$mM@6{ zB7>gv^PA6(I`%6AFvpTyD&2T>3Zdxz`sPQBgN8=&D+? zh1o}_$8B_@cUuFp>hf*`T2b{qyX2lhE16>h_)%@=`zAGoYpSon#dBgaOb$VTS3^=?-qQqc?7Z5ZB}+s@MqbaWJ1YV12b zQ{Fok9?oo!Hb-%r!*cdx%RAN#ysjrgDV>@Uuo4m`?fGq1^>WQE6!S_QE(7|$5pLU1 zU~gOo#aBcSpQaL_7>AL-1R3K}X;sqtzER6sP_9xcSvS z$49lqthJb-x&HZ17T?)f8^1}&URPBIXp9_!&Slt)?8F<(OcDE zA{9EiOggru{`aj%%H7p+i3e7#J;@q|S(C7JtjR=>7;47}a0;g!X|As)i0oA9=WW?~ z56X&l6Dq-x&uwJ|Nmra>`_i*m-{ zWAc*5YhcN0sG+2`Pe4uk3tSC7H&tr|SrDfNe{z3Nri;<5ij9nfl(pV8U_uZ z>~l0VtLR34+AI=BzrJ&+K55G#iKIRG{CO>#Uk_s9#6|Y~+ML_6Dq0oLRfsqv{L6&)V`0I}%m?fvl?=d*&>j2%;#kdFX>p;42S z7FArI8N0H%CA~+TH#s{u(Yx`SKIQS}7->#7X5+|zC14!k-c+{gRr@q8wXT^`8s)B% z$9V?^7g;?++)4fWo|E!9v2R|S^(#2U73ZpVrBpq<)4j2hD`?4`k_s{pxd~Hne>BR= zi{Mg`928J)VT!+B_Fu}pFbnCqJ1P>lOlCN+@V$^`iBmJ20amvZZcifsr=0G!76+~mjji*LUe#dE_W$#ZmM;$%% z^bD3R-;cn7L`45V_n8?Xx0_kW-DTDA?Rt%<`D4-q)-^n_qftJ)mzW_lsW(^f`z^QW zs(}i>AqPsiW39&=M)n|&?ES50#~mw{h&s_LQ<7~?_tjTG=qf+a>E3PE@ZQ5)KRKZ2 zp6BWgS7~sHuoim{BU|K%yDe*4j*IRs3%2*e*CDfBDkC$h6)Ql(ZCj@EJILJDdTF-f zLls_sYGjKzWR8yjd*Za8l7HzAlcl)f;I^4mC8#sYJYbBc34MRZOm<{)UOK!^B>ibR zyvIcJ=0YQQer*5pmg+Xyq+a3)AJnnsGwBf3G&>HZfo7G}ZD~lpYVBU3D@Ho*)l0eB zrBw>@E#8d;hM$>iV{esg2Ey0A$LHW))?guYjBbq6t@V95sHbnmiT*rZ2Uz?(+jU%F zd^^XhU+sC2_;S{h6D+TG$GVD8xomX})7OyJVaN@oM4qICo>zc7J1kx^}xXGW1%=vQVnyh@oEB4Si#92%KgvtNK-JU8G$4#qEYp(>DVx|AihpjONv~(A8nF zL3K$m27N9DjsK6`0h^XDpSt<#mgto~hhl?Ef=lg%V~nxyE}FMM;TwV1_;C|-=odFwKL{&Z2?`B}{m1nJbbMSYiVJ35>_pM8tp}D{?zLQW{6v;{P*B`R>%q{(tt!QtFOu2^P zbZ42yU7JXTzUc!yvuX!Uzsos^%)XbRQlMxN6k{UhS&J7fkld2UHdF3~*jK2Vuh_W8 zChQ;FI)lN{g!nFDgn`BUyhIoWeC3*T2r{5 zqZ5kcdXT42xZ7!@+bo|E_NvCQQA^~Rl?viGaHv;zF#gqK@gg&u6Nn0?QENMid(4{1 zzR>@$ur#-`L&9C#!`Z>&6}WZS^;a?tb|`~T;~{6e^)y^ZpD{FAo~3u__35W^Aw35j zN}Q%&&G!Y-P45Vv!jzw zrVb(O0m@-qc+|%m|!(JP76!lAY`uFBFR zG&&j3V2}TVYO3%614=cL3Z4@4KY=j}BuV7F496#xXcl9y?V~vRsou=bD#}7G?;WM- zIa8<8Y&lCc|3U}KQlkbnRBlo27}WZ+RAF4Z&VmCvI48oXi?CsA@-Z?r0weclTSh=vVPU@0-Tee2^!jfXW= z=C~1ZI)j2an@;_1>PMN3STtBBV@5^~-EE#)iHViqAK>CuQ=S6yLXN`iMqXhK=Mfr2 z;Fem`uT$Ywr&sR|B{QPjh4@kwyfgLtkFSjm(PXJ; z{Uu(<$%&^w{a;Cvh)s3=|Wx`>lnIW^>m%@XVppF;k7Hj1=`8CCpU)A=N#e9u%7=20#O^VRij$~uQJzwt|Ph`b&0rp`qPR7O; zj|J_nygomm8D!S+5H=tDDW5Q(RHEO^G4?v=7_F)TrEB0yw8R>B;82$2SLh(1e$pqc zbnyzb=v?Jmo-mm5=EVzOq@Y@y6inE)m}mUGFC~IEZ~V9le*Z#1;E)c_KQsG>rf$I1 zQJ^f%ZS#_NE)ptEEnDDzO$0Y7RWJKtqjTQPF7YDe4GWyhlJqh><*7&#=8y}x<$W7? zn|j=T@Ec{gA`#1eFif0(^x^qNX2mcesQuxw8_!lavDbPG>m*vm$fH;zMUpp>jWL3w zh;Qu)wq*Ms4zxjOSUIzrx_tAL$xzLLv6DW~f=7|71+NEpk~yVH#X9g8`x)L3uq!>` zb2wH5GtwLiY+Xj5ou81uE<=q-K7b=^lC+@AeWHnc4U-y`>?^5O=H+89P?F>#^vytzHG@hoJvGu5n48diH9U=mRDh zbrW$;gTeQIcF{NNq`Vv73F^+cGe*Ymg6u2Mas}TOopqj4J%Mvx^@l^RBr-ndE{J8d zW0DF-i|23z>uXuOQt1craC>e@H67QF;5=S^RaD?s5sCT8%F;aF*>87hKj@M9%j)1@ z07x%Y)*XLMW;caQQDl3hUXM=X^z-hUDhiT{dr1>ku*IO5&6uD>W*dcbR-u;_Dr>hG zG4#&UZ}`yjei&?gwZy5>&QH|$u2K;-w|MJ){Gm9dSoixoP#{5nsAIrzQkB?qT+E!S zPIG5_K_b1EZqSJ>^WnofMT*04y&7)*BdeK{BJYe<^n>G+>r{#5 zNyZtkFc(7OSz#gt#FqjK#*+=FfbH_10e)|eU*sep%37U~n=Nj0OSe^GHD}h_HK0La zV*8;-P3iuvw^}c#`HQN~=n>k*^|z&Ory_$`M*LM@yZjWT|QvSWD1Lmi7dAWwd&28?&54JJ^ zau!BgW+it4coW6EgBo&#YTRQkX5hD5NyDVT)Sj1^8i@t!h;12!iO+#q8x2C7H$}Im zVy+Yz84&F#EE%Z!h9gUqzma(2pqw&m;iJ5KKf`tfKv-sG{3^B|xUlnB^tfr%ECl3M zO`A**=``ibcD#Vp1D~tQ)&?>-C|wJ4g_B{FMnW5 zJ!o{>=?!nSNG3VzGSm0=8`BO{q{fc>)czV7*fOQ@pw*;Ql}NMnmqI_KnfY*SIyH}Z z5$7V~-rAzLN4m=MHdlgX(Tc@5nNFgF9#IiA+Os9b#7LvU(cD-o!I3wL+vvUy?tLwO z?~v(sKfkEM?5$tR!;QJZM{{>|;N-{m>%4NpVy)rrHH=f_yavK*R8i@7KAT#Jr6mI5 z%r9u(pri5K2j6#c|J-e{PdgRC#o)~64NY^@nvD;({WXq>@wuHDV=0}aUbvzIvC6Z7 zMM{{_STB*_=J8VpH|+7Rw6&9lofm+M>K|Qz0!?+(Hy=JkJT@uCJ$h5T>Hd}`*G1`^ z;J=J!^x#r@3O^L0?+`CpTknWv_?0P7@dy0^aS=gao3&2tkcWYSYcWlz)XToHo)o)% z4{?JliDP3smx7ne93{Y}sm5sPD)Uliw!)_*W-ujjgTYw0#c%ReQGJLxW!7s87jqWY zqSould!I|u!z`(|lOyDk*ExV92!%&kUMG~Hja=R4288P2sDUN_ zF9|Us?q#3_im!%kmgczY5F(puO<)w2Y^2Sq{qw@x70qPv{E@w^37U^nr)-892M@%J zAAVWgZOD(EN>{O`w^hkJLSfdp;Gpu{vbvR>n+I-~(a&C@vm4Q{RXf8jDt4LVtl^M2 z-3?C86lm+m{xp`N1NlXVx%(t-Kl|k8Zm>GEi~9>V@?y2;cSoWE**7t{h0|R8%zHHW8?4QJ zEppRDAMv_Ku0OBqVV!bzQ&TL&N{?Fr#sEc|W1EK3-RVbVT+Nuui-0O!%oKj62{w=Z z1?AWM%JrxNmgX{IR3LKNDh=|xdb5|U%JlDU+a|&fkyPSdNs^ImtAcV1oy`;HR*eVj zSU^rn>KOSy7A_owvk8qJp7va`ySsO~IuUQ|+R0p8HqvS}Q~?v&kpV@w56=vCSkk zh?bt7?dL#C0=T9NMW-*;0xXI;O$JD=qd0J)+^O$<>8n`lhDh_vm=pUs{v_?S2@Aq+ zb{WVkSnMcF!1N^6?#eXO8C$C)4SHs+<4|Vk{FJjUeFj>d;!qw=%5-Bf&Wm5tr|B&( zFRuY13c6qH7!id;++tJ_hW-uw}& znL7n$n;@dxvCnfGH;o(=wP9hAH)h-l_qS%@rKrUhd~BY;nAgNcTUw;s7|;-0AIJL^I3xrlI{EL&dfP*prxz8cj_4t6-0F{)6`Uq@-Jtivd4 z6>_-w%|j@b)`FB2Jjr-Nn;|ZdC{(T)zd03^LyL8~nyM;On%C9__RZ2t(5wUUmFLvN z<|ZX}*z}oE({z*5(xM6aFuLVtp)4A7#V(C|f5K_vcbo&hKg$bwc>F+IMTC@6(j9d! zuo0igDDtYVQhz=sDtaY&F3`P}L!(F_THHR_Rywi%K`?hLC>Zu;8Ktic2-`^`~q`wU^_&-!dEf z6F^?|jVRrYtYBYGRCCNilEIW}126XlTMh%&CIR76MmkAL3UjO9yrD*}>IM(sALT?l}x|=-C>fZ2(rtr_T;CGbuKCB~8xI^3=tEnVlL9F~9Y& zX<>|uLv!*313l@v7w7`MWEc5R z&@`o|pi?U z^V1Ivn;$OQxPsw>*`>-MbA*_1BCHu-8bfXU(&53$dDH>@#{9c+2PPttKSx>HzVZ;@ zF|8G1l-^UCYbz(pKnD9^j=G+Vh%Xl{iQ%F##!?fu_uHPgi0g);EmRJHjj8gs66NA~ zDCn-D){7bOC5|zAq?J3_4>4uOpbtJ8>uTA;FQ|T9cefxuWxpu#^pc=pLesGF`l8YC zZXSxgo3{Xt@UkaJ4b%)Dp=la@T+81s*I+0M*W;n9Yra=%a`* ztVp%lmo5%q;&&!6r~AJYpa`pNClIB-^mYxNU(idLP${ck)`jC1h-M)j^v}FO?h&ye zJoyF=DGAxaNL!<9nv$AJGp3~JQ?ch*R7rI%t-CdL0_B)V2v*1Y5J>&8hTC(bonp)qp(;!L-Ze~n-iy#ABS<;zm+$+Yo;&@Qluy~b_Y+vPH1TR?X53i#_L@v52kR;nbsKIQ8e2{#i^R`V z0j5yBC}S^mtoZ3=i$LAWlR50Lsnkr4j{td0__g~!7>#DX6jz-uPaRV#Y}4CFj#5?} zelbsUJj1~pNk|e#*JdMhF`&_;3S_k#&|JOmJ4vX~F>2m*HAz(B8!D738sz+{nG_SV z95rNv{)>g!?T6F#9@K@kXxlzh6tW6#?SfDN-y&}CA}A`W2xje zQt!rrviktvx1Ar5I^-Nu=Wi;g9 z@p#_Tv~Uq&H8gXiF+3c%y|Y~Eq-os8eq6##K=0^-w=m7-wUNvyU_UJ%WLLZIbyI?5 z)ZhP=1!-E=fM+B+&nCHhE=US^pqkD;1M{TI?x)E1jT+o;YTRJfgLEn)0jqi9!?2;tjqcx~$;%^DVQPLj^TE%~vL zTU6@w>Cunq2Dg=(e&Vdvn%Z=VRyw1loH(jYym)C}SM9Rdw*rY2txL%Hd0idk_wnt1 zc~*wLY9@{}{4U{lig(_?ix~&`sDqF+F{!jmFFgHINSFZ@Cd;A)1(4 zxLAj*VB5ffDT(@VgJe`Anb*N<&Z>ROjMT6#HL$U_^ErE+Muz=5MZZt6rEB1#P|?*)@c)Z33hKX9|7utF~j4>-vk4ha0T-`h_^Q^h^`#giJsyKDo% zh*ukzqHkoU47Fp*6`DDaeVcGgLO@?3n|^&dbt&5WvOd>&f4{AB?&fLhPS+RDM1#KywY&U2e4O)ob*n%Fwb@0^O;11@PG zo>S}3$MvRmpNgDIjprmjtNpGhcDs3;_}MAVTdV2k?xk4M=4R(m#&J4J;>JmonOVkG z(W}p5@nIFVx$e^z~H{ld1<$g zQj%F>80E@F$WdeLcNYXs57;^G(>e8>=k&h^k>XK3xgzk@2eBninP)|wcZx1J-CpR3 z9VRI}xJ7lB1vu_UDGie0(jTBcphX#$_?{U!9kPnwiS1*BVdohN2?&(&3Nu-PWpBP& zezcSloWf%xdJcwRfGCYFdbbMV<&edVft-6HkfWNA`%Xu4#<1@Ru;?&zGGpo0M*2Jb zOnJ(%7Poh3oHFzV>r~6s7qG`Hn=j4Xtm@?z-GQ*|l%h7V@LbO3r= zF}y0Tt9=x z+kC+r2d=B#$>gR3{mgv@y<--7dk;kum7&OXZbrr)G~{mh9+2n8I|dv!E+x76J9u~~ z+tkaH)#2gdxVvAcDtn;vD=SY}iufLX_W$r9yG}N#N;M)n9%f`HL2GSt`lyU9&X@Bk z{B8hhR|r)NJB8n)I6r?T$KnIOd6_`&qM+!#zN|W8O6i6J6i<#sTJ>b^#&QWK4iDT* z17FTZe$e;`4KH^77D^Im%E2wSrMf9~eas6@dpsHkP!qTrvlvLBV8wv1DyvfbTsq zck=O%t-qkmM1j^Hl8n@SIvK?kf&kgelhZ@2(mC&OBhN*JAjbQX>0MtF(<;dlB|afBT3*8H^_J_w9WNUa^=D@pOp=dnHH-`REDah#!NMROUE1*~v#ylNU4lr2fh7)ou{yXdD{oQZ9IHc~N$)iy|$JVjlD+9${CjmV3hv7^_cW?IlX3+&U z*NyX|DzoTAn;c5wGyR}B$|rw~3b-D4HD_Q)RuP{J(!_J}d!(CH+5dbkCBP2~4rc3# zYOZoz$Q7<$7X1$v&>yyg{?u{Tve<|8)GH}fJYzvT!AccYQF+Y@79^_l@ED04d?>Ub z0!-4j;2&Q-r5&}1xg~tQ?UY9edzA5gc+5S}(ca@PG_?YlZb2Q=dl+yNUKX$qQZG1b zzJwgzEZuDU*i~J#-`~lmgi(p*Ro(27^MfP;?%(frwQJYD8^NUh>KVjl(ws;tbKO%P zwcw^6lUk*fC+N`VXO;6JzmW$%u5>y`rIr2iax`?#u)-|TiYxbxw#GZ^~5h!nZgFezJ(qpLJZ|?|)yN-#@zFNsRL`|A>2X^>A=-d~5fy4fbE< zMVzg@`Bj8CBG}l{%dyuxkuaTuhDr0fdI$c<_V1CnitR7Q9a_jvqE8iar>4SjxE(Ak zytI8={^k1y@c%ZT{jir9C8y6(XSPh1NF~R5q#{z+2w2Vj4oLd@-CqFOec*v1KPUQ9 zz_q9l+cwc!i6KXOm#h-U)BT*6-zUxEUzq0){5n8Z|NkP?XA=`$U{q;#kNvye42b>z zO>1J>c=3NC)Q<>BmIV1%1UVAzzyFc<8G20_R-N2DpAqf0=l`)wezZwJy-*2gHOWzr zoVNcb)`^1oUpDFQPmt8Zg=PaD4bbf(oeE2gY`If-h4(AyLX08i|HeN3@lhHt1F#G< zT<^Vk5#Q95wJ^1GXvOs)R4P+D-+N}iGwRQetZ_0$x5zR-qmrp73iHaO|Ks3$56ETf zD_uUzvuAzkTB+4%fbEQ>Dnt&1^`<=Jh-U2lJDsUOGqwr+Pw*NSnF33UaqC4CpF-`E zPzKb@!TtZk+FQo8l}2Bqb%6pcMM|+6uEnLm475<3VnG8GcXvr!N@;P56>o445G+`b z0)^lfJh%l2t_j@JnRhyK@BhB<{c`z`A0Ki~lIJ{UpS{;!YwdN$EsH&{iGQmgqt9oe zT(HkMeg>5yUj#unjL-^e%(dbCCr2?Im$(bP-95TF$m%a1r&)b!oqPXYGPl)xz5DjR zSK*zS>+`}Qz8UvEaE|E=~s-R&<@2u=8;m-08Uym1>pxPHE zb6(JGzh`mnIU8|ZW*aW|g=C*3zI`(Hn`nMduz5qCu#tx;8!`Yh?4OcK9^TTw#?H>} zHCKlr0A5`G5qx|GCI-HiH{V#EEMzvyH9>e!9;&CRG|#&5S}DI6xD)iDgNH#36VS!D zJ&;alU9}Pk?b0rWHpx5o%H-YN`xD@QwSQ<)W36~Ctz4<6cyUSyc$W0nh5YprbqTus zq;l_+D9)xl(?~zTe~2qH-;$Lgo;#M|11KaTg%2!(ao!!j8d(-(F+12+&3Mj52{7fy zmpmMBXuHRvfd{Xz(}>c{%La_?g7(!`f)(4=931WrSPQ_ zLGPR^`7bSK)^HUSjo$OG9Gk?q3JvN`N9`KMm+1ly#`wK+GO*|w?O2VRsKQli9*=a$ z=CP|odT6%oNw{!fh2GBB(ac~TMNfesJ-7>+>o&0}5?|l9q@tsPG|kN~{hV-O7OWTJ zyypvWnQsMu2tMDJ6Edxy_VBc}w(Dx*w^ZHo-4pakEXvbEW|`3t2d7Kyvmi8`H`kL3 zLlbPY09(Oa$C|y7%(|PhJ|{`!Up^LK3JMNR#+fvwvem~wo921uVGYi{5F1*Or&ax* zS`ub$6Cj2M9kmBIuvOa&R5va)Jgt`Qunr}>=biv1;4`pOgKcQ#lZbih?MBs|!1 zxNe1B2*)$gv#!v?tdyB3BegnreGhAEZ54+mEdAD+13<0W+n3)F1IQO~oJMQzVyo`7 z0EHngPH+rhf2Ci<#w7z+V3H*06*soObH(FG(CD?7OSVcizyt1HqO@uF^GVF9A$P*a zg!8G{*^X)Kz;AxvrFXhjm!y@mrB7p!lU3HQ8cSccnTdtZ!!RS;1LEt*z3om6vcKh# zd2$sMmPCR5#hH?#iOJ~8LU;EuM#yllu>(z|C-!Qq5cTj>?7esiTOfjUufP5W)hF=`U2I`(z5&|_1_ z9lmYpKdw-lYA;?@^p=ZY?MlKjY~u6f%;UvNn)=eLjPLOdz*z}fON^6-Pwg!31O=h} zRx|Y$R&Qskf)aWf-qUc-`_907%HCd$Q461_7pWT>tv7(ARiyHrY9d|E7Gss z3}n2Q_M$vVp%~Q*T@}vF+E10TwD7Yl;GIwSH(uOL#z8Hr{zRN1J!#y!oN;leY{&&v zkTzijawvXAll4duHdbHxjYxTgE0C}S%xoll_V4{2j6wHqN*Yq8!Pmw5jzsLtFk@@tsqNg~oWzCxqGX^sHNtDToHJ zK7J0S+N2U8JxZ7$W-aY3@Bs3*{2bk$XllHdK~`T6pm@v>6jx2{=H^~r`Y<7ODm;6n zKf!&Q<72Cd5X<`d!x_TXQFi%qvSZ`vsJ>$pD6?!8^ zQ~riMfl41aiT&Bzm3=qbrZ=SEKp|*-paH2AFhM&y-I<}~*)%HW%=`+sztXjS08962 zwqXpPXT3~GuB?Z!%!5D5eTLEedB4XjF36qC;Nmv8N>py*rk~`9YU*M0Ij3t$e$B@W8v`OTRgrXiKAeV=+$Cb zkMg`bIeE`W^~@X30}n96)@GH5r!C111v;SmGi-EOsKdmhbPYYHw{h$%E;5VePK!<_ zc@x5>!8)w#GjSDQwx;_Zm^bDa*376G_MIz3L)P{>ZWI{mRz6nDwB+9&#ho+qPzZBk4&Rf(Q5~k$ zxRXvYZ|?<(BdrpQ$Ussq*h`xgvsdY;?zK>^hdCa(C>I6kXc|0VyyfYlr6ovnThKN9 zI%)N0HP6MjD~gR-thsiCuZ15e#cps5dZdXuZ3#lZ-VJQu2Y_E-e6DJ-eXsA(&5dK5kBUR;PNqLsJb3F2cu(HEj#Y=eS;2XLM26GBT|20{w%(p}&0 zzU9^uNxGwQ(QfBfatrB@h9*#lBm8oVf{DJe_#tf8upuAUZ+6E zDljo3eb>kabY0&nWV@{>FKL#Bd#N%o8aut}m*Y?SgV(8XA=V2qB5CEWQx5M|&$r8n zaN|q@J^v=d(^yki$|}@rj~W|ziO7`0Kxva@fP8iTbUME%|7)Skos*m*I>|@H3iq%w zFb$foAju)0m-yVfNe=}wQ|SR&R=v}@`nYbLJ;1dz;7-2h!fD6xgNEB2Pb?ObAQ)$`=9 z!^^(Aes`a;wA!p|GA7-`TrekFPWU9V7`-nq3wK8wz}K0JZSVnme2JXib5UH*$Ng%o zuSeok$vT%F?s{vDsNw#>0-%r@9uxCW|CBLKv`!Ooa=b$>Ep4PGyP%b_5SlkxQp0Z+ z(>$tO^_|tdY&=>Rb9DY?bRem`4Kg@48}zP^mgm^(@q;`4NVmL?alXk91K+;`e31%< zg(2rChT!SJ86l^#Y{HM*u%TXyc8hA7@bTT%?W%o8LqkF(dgl0eA@ZLx@vji;n3u1G z%2JnK$F7(c(kOkec?mMSZ#~f1FEWh5zIA%_bF`!Vqnme1=Mhon!1C%I;6=|ia_btk zx~IT5lB-YsV_;5wf{YHVMof755#|RWAHn2bl(<9vK5Uywyzju7X*^$j+aR>L_2bUq zTzNRWQK+g>inn*Rf*MpI#?B1ueZfi38Gp2| z8Q;kW$Y^qCC^4GN^!HVtRp0}f^$0f~S2GosONMSlp>GLZz>sLjDKRz%l&7Dhp-(L@ z0XfVxl~k%m{NdG5=KPeB@6~Ptk+%MEIeW#g(GGnlAt=o7V4j~mMi19M*YZT_^ zJ>P94l{P63r;YDG z_YKddr7n`uIFrQXqaSG+*`uXFt+?>(iQwG5H9&hKB>q2%Dt_%fACe|)C3nlv0f$m{ z7Shmu02R|!uXAe)dF?-0YcBqu^7}O}@N1J%jHJO#Up3)fk0*=vrx7hmgC}tq%FUfX zHCL0;wzFz$LEX-yhZSX=*SR#@+X7FXBEPdr!5+m4a&WL8^_=TeDWbHuTNWJgIc2Wh z^~H!BX(9fW2k@Mtl#g{vwHu2E!FE^MS9c9${!GXYH%}^tRXfSkQ{K5AM4;B7&+%>B z)ha~W-97hPH~@)@@gwbHfI=zOmR*xQ$if3YruL{m0RLcG$Be3P*Bp&e)5QF-G!??0 zEz64u3jh!x0rZ3{$9{SHW%=FUu1qjCw+!kbQlesou_AXAFNB2lJbL z(8o(kKXI{|i8M{nFcVNgsCQa4OPwzuS5`X8oAy?E@f#~ruXUP*-tKv+uLoMuJbVl1 z(N9Ma7dI&1_SB*th9}ZI*jfr&io+hI2E6hE8NN`W#4@fGvxj_)P*iwm@pPDOYjZiM zAUrwg2pKn@DP%WQYtdtMbksPr)%_`nf~kD9Px+a;wVms2RKmq`4sr6=$sr-?k?&ashTS4AzR5Euqm5L4XUntY-_V<%RFMOR&6Dfu z2LE9%%p5K*acD37@}oqRtz>)LAXb)xDB5@Ov2W=3qu@6g?#ILQ%j5bytt$1U=T2r0 zv@=JDXg;YVv~hE!qq2Jk3rT$PrSI)pdiA~mX14E3f+B_6*LD_g0B}ir{)Zh|QU0{c zHXhruD=3&uQk!^~ZM!9gCG(u&G=qb3`^vJaToBfxqL-S4epOFXHVvr0;GkC z=UZ9MaU^;%3Q&dzYv$H#lCEN2o_{bWBol>(CUD^-eP#V%(%D`4c^kGiX09kvyB=<~ zY-tDck)~_SCa7kDEv_b%C>iH_5sEp3EmFF4b^`wFj{PDQ2hxVF42pf9JwZ_-@L2I9djy0mOmN{NOHg?S$>X5JN z_}TrfxVNA2SjcpMXv22z{q&GeNm!d|_4ED1L=gUcQ_@6_a4}L*=Y7xP@XlvHV)SCZ zP;2TL#*2>5@pQMSpy&?hD8aF;^BR}dU0goweCM9s^VvB3C@0DpNMWOpT}~@?f^hXU za=xS63Vp=HHCm!lb?ioJFrWIg8rGONxD&$_OhL4ilPzAwg-q*tATc*-d9GeWjVZd_5Z z{d7k1bo96A{+-#L*sz=T2QvSI@ZgIDF@%9wrwzS-L?7WO;6|c0D80eOJ)otfC1dP! zrP=qsaJ9YNaxqSvKqI2;{2{v|xHk33^nS&Gps;73HQ92q)P<+Zt9jU6n`(zl00Kxy z?ne5(RDQ1{=JO#~I&lqT^OI-n0Kvn=^DE&eHjkV>>_#J#N?W3H)5Z=Gd1TWcL-zb} z)bST<>5bh~>He1B=^D2>z5F*E!@`b!!qXq?PK&02YTeG_Fx3Z9TUx@2RA7&D(5;Gb z@bg9+>&rX5+CA-~_sRHSkZ8-U_LH*uSA$ze*3iq>2!O0xPO~*j>eg*)%ev)p8&*Dh z2cK*`fnb@f&~O-07qsLkg-?*T|BUpZ8_bXfy?X#jq?q%g)r*lm3_aZz?cSK$ zcI84J!wY1>1zUi|-1f&fAqqpTxz*s7W+UW&VBiYav)%HedyPE+jri?LZ+Nmhq}y&B z9tV`4(ZcBb#h@*6I3j}$>lZUFpL@EKftfSsKo9j~70@Q})DtXrPv^?Sc}3s@X)!zn zb86csju1G2O2JS}GlkIEZ`2RB)@BHhi_C@LokaT4obi5Vov;Ad-8H~6Dc&4I!rUVbU{YQkWew$qj&(iKhbIn#;) zNMe|iUI^beNcSf^0OiK1yXV(g|9t+_;yvJ(`Yb#*4qe=MupTF@{>woluK|MRkcpQy zdRro3z7!@>Om)`O1EHi}`r#sjQUH=dOH2_t8rM~fr1>fXavl*V6J5~hfN&J<=`4eC6 zxs+*4iA0?QQtqDJ)aN0sD%U;ekb{7<8h)hQPqfse*3!~K{d;w&)biL$>+p9jl~BBD z11gcVw~7{!^2@|6Hy!Yc(e2fJ?sU|$;OW|pT0f1)ls>^?(~`o0ZO>-O{0^kf^Xu!& z9Xi!Ds&rv}V&1zV|JGJIpMe&T!E+avZgwp@=^o$*PzJW;mIII)wEwF1N)&pfx3_B~ zuL55J+(f*AuYMUEIsDr}`s3QK!-W8iKcJaNeaTK=MM^?S%Bxe9rJksp&VpatK`{Cf zK*Uxy|M5NhW`9fY@@)C-AnCIsWT)}Hvt`DM#+(``Crkk*_%kcyeRLYoA#^<&|AV*b z-vzidPvw~By;T&{oHDuRlB}Kk8XT~gIy1w-a`oM-j`5itAydb{?Rnmfv&3|^%$3S! zn*2JvwEz46Z-!Co|JL}wPR$!>a;ys!ASh$Psd8ndqOxp^Y_5dIVn5b#U*`_-3SkT2r~IHZ;pCiHu-JJ`T$2(y0@3s)bljS69p)4-SCqXO1G+* zfDpRSBR1isKQ`SS5C49ST>5tHA8#g9o^e@CalCU*Ehl>?J6lgz?;Bge-MM?|=1n70 z0vkKmbZP;~3|E}O*96A@b$^1QCab2ZOFTFz15Uez0k}Tb0AfD!iFOnN)v}P!E;A`J zk~(RjWic{K{2vxdN<{1HJ?50{AFkvpEz?y^oSp(e>8@yp((M>S^#Vb24JZ=Pi929^ z5onOjooCpB@~3{tR>%RaGI$bwI$d%e`o&Vs!#Z))DnnXz=p+i$N0lyq(T4huEQW<>$j$Z9F=$EjA;oL^qDn*ac(|08S9n^*X z^c?TiZy%M&QOrzV^H;VE_3I7}xsI5);!E$``!L8RY%%12gwiU2MjY<>@{im18oVi6 zY9O;w&iS~6#Wi+V)B9{88@a*K2xiKerVEhb3o-)Lq zEa2OD*6|+C#W~My)yAE)v#{$ynqCJiQdyoqjA!!l@@9i@0Y}))&EkJ=m`gby)Lf&# zc8&E^gOtmqr88)Vg1pHTPdyjn--c`NtSj2zc_ahSDR1%!c%(>9`wY)jz43NhLf}1OS=5>&_7s!QgPUwwzcgs246yg z9aYL?UG5oPlzoirs$K7<*DA~_!+On1>Uiv_N@&olIzuYXd?W9@VjtJ7*gl|r1G|`1 z-4pb8I8wx1l=KCOT2b>Ra`J6eJEryQ|NC`$(*e_|u-)BC6lm!Uvk5K^TeyY+pHZ+Ru=#J5VaFKDZLdQ)kVSchNi zs^Dr+eJKp}LJw`IDApb{>97YapH@~g0VKm?xC2IHnh21P!`LVO)W{s(Wnx+m@iZh{ zHVJx44M^{7O@P24$l*EtwRC$Q)yHz=TmJ_s`&8F}(H$PIgKxY9`Q*<^H ztUQU@r#GEAQkb&1ve0$ca_qdnqlYq1^VTte=VIHpWX`0jCNU%=0aL1&o(}8kBDyIf zS&bUSpgs0qA0gmwS?b=OlDI%i+ArHN06GpZoqX)(mbpZ;m)^g-7}HP<0p);nE3w+_ zZYh!@lU@=3S(&BM|Ie;gRKP~rE&B<*B4O72?G1jepdekliD&o=eB-674^ZFvi(!-T zrQ1$JlMA1cY;CKFhLqYF9SorQEO_fOlI~~!FO4bNjUVvfl5Lx!rd~1N*fLm(FUAmR&!!UD(tlM6 zT+%AGh1K?5-<=5<{Mhdr0Ty3nsCn9T%6vJ|?N>b3&K@eRej*F8k&s+N*7y z;|y=4x=i^lxvXIzRz2-YC+URVfE#Q-2RVcs!|%KucbnlG!>K$SF3RKGmiA2!zZ|x7 zC{}x8(reuA=L)~MN>``aE^w>l7b*O?~eSbig6BMI*ao#Z6Ca!do{zId@p8 z=6PzaiUl?G9-r#ns{zQr94=}kI5id@RBV4J`(FCpLmu!S8fL5mVv#}u%xvK0US;}u z-)keXWEppN5+E3z0cdoOu#rEuSXlD34B3O?`sQK|L+?%F0#bqPQ!D#gfQ#Nf zdR7itwW5zb&SW4YzG;6be00363fGK>?>w{X<{`xW|VP{6h! zpiD6&r4@FVyIwfb@;kU*dL#&xd-&O6cP4K(<*DPHy7=>Xo)rnnZkTA|C-dbGEkDow zTpfd@iv8WubqTLC{h=!KjHRUBG?$c^=!mu;$JJ=R<4pDZu=8%dc%PyE0Y~U z{*&nBC!&FEFAU19VP>-b-@xxf)uxuZ;6I<;cNZhT8pP14?U$%Z&X48mpp0(m z(s%G(NVvcr)c|nv2%}G4UgLWrz*R0A`10sEV^{3?nUs~#%8tvUyERVGojyo_nGL7$3siL zch8!hELMg8awkZ~S3@NCj~T^P)Awr)S`0ZHYqLuo)@mXrE`H*;8(rTeRL@+zGsu1$ zI@#8G)BAC5*2WeL-@#>c-T~0(tNnV!5~ZJaW@_qjsS14Qut+|888fya)Wzqm%bkE8 z88PzR4F6AFpe_XQwXqrDlN_`T*)1Qr!>neIQCQNM1K|EpK)B<^*q9}0+0px&M^!-} z-K%Ke?GEpyZ;b%(=&^rmIxhua9F7DsjsnHXa7i83@R!TdeQn8u!95CyN2-KIxgTYl zi%Yf*>WpFRDB0)>IfEaHo}q9tmyw%DfO>e+k%n z0lL$j?m`|o;(&njk9l>2G71d$Uzzr7kYkQ9@;|7QkVtiGIJohj7(mgDQPbc~1@ow{ zy|tZAk7&u@1n22~C9Lrjse+*n)++Xf&kpe8kr5~DD%HAgtZNP;#zdL`&%w3z`a7v9 zmr7oYmh=+HE)GwT1c5j~*&z`QHxFJ(rj@72hC@?`%o4y3AEYc~U85MieO)~%ov&?# zoYSy&WBO<+y(`JFzRVJn3?qyf`HKlVt~2aOMjlOKP97?P7O=j0k#q$*@J6%o5WqSw z@x?BitjXNqCi)bhVR}x<>55ILB9EscRvipH2+9)S;WDZD5m2sZGrQM;YOMRGGobik zZo{&-lmvu3%Hy92hQIE4wj?Apr)P;QxRqSKKzAvs2MBjDZUIZ4ug;{xKPA0l()Dcg zz0HF>RksDa{;$5P!IsqJ*VM!&$jtSpGo1Mwi|ssKvXO+z<*N^Q=XP}^S?LVF59OlI zjYudqkXZ`Hc^d&NSQBn}lSfvaUdSuaou+~1r~YdO412^OyL&|Hy72N07ffot{c7wg> zNQtu^*mXb29UEx>afeEBY7gIfxG;DLn)7%<^*_Te)Sv&Q6WmVR&+mQgc}Tunb=%!z zLN#?m6`Yok%fUJLruiSp8d9MvC2Zu1^Tm3PA#eu(+2STmQydRDqBE{bQ@i1Cf;KEe zCB7~_pk=GH%=&g4xn%l~Xs2E<1Ei?5&F9_KrOc<)AaE~zJSp1g6< z+5kMOLbL3DEbn9qj8>RieLkmuSiZQpsDdcRq?a*%SCdqr&N)})^29HISRZIxwMS~o zG(X}=@pJHWZgpu81?3O)I{@Y>7aZUo>hx7jQ{Gzpr!6k7)@-P}oE%p?i#XqS{rRnb z1K>B%vU}+IkYk1ac2z9}=)7~m5@<0Y(UrNLDP>fkqOJv~g=&InpQ5QYuSMa^*?IPh zffsJy&wh$G+%dlQ-Apkx8$`RW9`t1K2u?F(Vd>b2J2&lnAviT1=L9-guk5lSU2z^` z!69GkyUa$C8SO!X^HKmwaHEC)+0IiuH~J@Uwj0HoR?*~`$3FessSa@|DxF zs2cTSoqpMa@I^X=Nf$0%H&jvKW$?f52ac3*Hl>UIv+D}me(g?7x_I>wWk-}C9g+GC z^UZZL>o*002udyCfOS_HLwdk)gv8xLMx zv!CL|PJP&Ja+f&fO$HPj(5wwf4GJGnc1pbPJN_bN54f3Wf?YeN2|d&s@j8tAY3+L> zwAE@RZQ;TIPUoB4OG^|YgggoeVjsDDHHWy2`F9rZ$2vg$SlhkEc)CtYcG2PPf^hpf zB6dobeug95;Zw*C86k<&YqYQr*d>xQx(j9gyhKBMu^fR^1)tB@O0mb%J4||B;9+)$ zG`qwe{#%NjsA~V&R_SrmYKgrA7;}-+Vm^z9|8nSnD6H2L~rmW$fhCYCa`PF0iOXK%-(M3 z29fj$(^9jWq7DPmbu!7**X(`31LpO3*9Zj};6c2}c$N%EnlC=dM1T2M*Ovx3$FQeH zc<}Un5j~rICn+3huKDP$nryeW0nzVOa9WD~zah4Jwf_sT6Cgh-}}IpsQZrwU_2W9Q=vv-R?-C%Kh| zsapX=-M-x|$F93s%AB(Ybl&r-^>*BatcGPF2}WmYk-eM#g0U3=KqmLg8VWR+KjFPz z<5}M+7hG4zI`1xPVEQCtm0Z`eBgVuN{$ zdXwe$EQI^zbpp1i9NNE)pf6o|{r;IS?47xa$(!c{@n3Ekn=`3#jCH=&e^z}un%F=6 zz>>s?IVE(qSKW(`|7A<=x;12^)3>sw=Kw?t8-)D?b;Bg3XPys?qj}dx4JO775tGyRM0QAHl9zX!V-tN-s2Pi4+sLUFQr zZ#_eR_QsAxv0LT`aG{g$)%TBTZ(nJWo_9rX+1tCB!k^L+MYwqmg$FT}CI5p37_QZ; z_!{lm^>jZZ4F(o@wcTQfk&$4ibwKW_Vm1LX)YQ`A`cJy>h3lJ|hOwt%qJJb1aiRet zyb&Q1@Fa&7>6Z`3+K*!4DrqlzfA6MC#&3yve!*ciS1PKj2mdvHyYvT9)_>9|-~eL= zfOGusfxv%z6Z7-|hf})5fuhwbOG3pe(e-#BNCOM;Pq62;HRID2p&PXl`0HF$54-bk zyRPrZ(f*?uXj*y{r@%!1MICDV>(r(FoHJ^0lf=a4CF4q;fAsWC0zH0FEJzGYJzv&N z=&y4VlPv!S!~>3e=S|Yu2LxMA8!^MtoF34dxqc`?B{;QtqcFd?u(+6-XZ&c{RwXyE z2TDKbSx^aBn$FEZ18>f}b;_>UY1hvxAHbdXH%xa#GMa#hD)rzC6SO}R0arK&8?g?m z&*ms?Dhevy8#jT~Yyb64fxk!Qw}7e1BO{hKuRs@<=r^m*1B9<$de;qD0;?l9Dehda zpOM!->kqytaOfO#67k#r`S^zG{HIi5VNU(W;K7+upRFl2q2R50EI5&M-^F+8mLTj| z_4Fb4PP&XtJO|q_Cp$Y}uq6INF^O%+Km@uxS`302AmU4EG5B`m!QpRK+-s8m2Zs40 zpF56SR~ONk_c~XYRm%opKPD`)YJ)I#7rV-7Sm#g}ufWuaBKzBA{;JNkQ6zQ-kVWKg z&mT3~V{xXJ;1=i=WRYOfm4J(wi&NG6#Twe$e|}-6>`f6B1a3+0!j{udwvzjIDgU-r z^BsFKyXPGU{pskR(yMeB-LMpTv3)UKN7hso(i*wIqT5-rMGMZVDh%? zR?8yMK&dY^ZTN?mS6|%>Fb}}r-@LgGts3?q%`VaPOIVMdQm@fAdm+1zgQ%CjY&JQ6 z`%5eTVbZy=fSMKuY65y{_?fAfu3F)+PXqXlFs$(uv$McbII^zq(16|PfN=eFUEf*W z5|k^69iHVVVJMD`q|ZNh>XAQ^0-(mGrmg1$ zBjrRs32yGk{I2tNj|Ts`fsBuz4AVh}CEt#l=Sv9iK5*Oe-1G<@Y*jx`5n<~B!3eYd zV%k>%Ih+S65_hhBk|Vcy8};Ky`>R*7C~2_6;dYX84E$;!JD4*T8)CPm)M}#yXbxwQjx*C=(wIw^7=C>$6_5NV)_3Bp-ABXPxiz|V zWSqt3VVFgnLR<=Ytf=G@Q@d||Zu{T*v#!2BLA0*jcWP3kJNJ{>xwlep)Xq8|CLjddXad)H38NzPyN73u<}+)1lLgN`)NKYgnL(aS#(Jq zX|SpB*}Jr>Hdvd2!a|@syf9Dx;ll?k7W;QUK;*u3Pc$oE7X<%og+;mTReQ~G6ZfQF ztz_S3TG!lNgy_L8GmaHuVdKLJW$wR8q7}Exe2ItGLMg{d1#2bgWDMKB5+A>uA+xXZ z@Y2W$;)mV$I2!fZOy6KplRoqXa_ z>W}aTI%o#m#0lWqT`ismm+1c5k2qnVle9SY?xtgkfF#$mvG4GS4J~&rMh6bR^UbFg z#2Vs<@uqEEZ+4|B1-XLBv^=S8JXp@W!pUu9U!B~ZP02hspsm}+_kaA@^wTOFHZ$C> zrf=Zo)%vNnoP2<6*P4a9AxmbdIZ{eMSkN<%4sPZATB%4~dzpHl>~QYUYe+2r0u@ z-C;v44L|=f*FG^(2?y8s`NTz%_yP6pFX6P1xxuD9R{uZVwOR-Z3y&luENzY(`iUr( zL~d*E(laTiG6*vd@rb-$aV)KC|a&)kns#~6ZzG8G&*u%hB z)6Lc1UJJYhRYg}nP(33Je*D6(B?x8q*m5O-3NC88_2KidKxJfYRh9?@19CyRRV$=z zFkA0WotS*-6bki5>pT7k>r_hP<9fn0BA1!Z!_hOb?R?V7EqkGDTX~;Hk19Ip;oW=V znt*5Wyw_-M`ez1nGqclU5eNw@8yh*pgDkkrL&yMM0}|=0yp?8{DsFptvT-XUgh9|U z&0z0c>8--fXPz1}pgLl*El{W*wn^GY=1}Wx!<+6 zA6b2A_aEM8Av1-l3!>55W|oXIHGeYLWiY;&;w#ykK)hD}s{R0ZoUxp^f|#ISm;wPI zY$YLT#ZL3o%A3~;??=ndQLwj1=70Jom;+yA3j^i*FETxGZ}0vbTR~+?C@W5O@!U)) z$L}8BzCR)pycxnbH_mWinI6wn5Rp0Dja zciro$?kw#1a=#dL4@q4ZOB0 z2F6jYjopKN(=$jQh-J=Bt<{pvUiF}cFw&*)I)5dFIs%*qeC7bFW4mgUVAao(1G3h2wQ@B4d6z?>KmHOk?+ZN) zIcVbl0;8~A zeu9Wed6@jmqa2mge2Q{-WGFvPJ+Q0c#?fJR)3$mK!%}5>Bva@I$M&dE{R5SeZUF%< zu5IQK9538vQ6M9au?ZJBgss?%xT4!(pZPupv0<63*YS>1h^>5#@Mwy{*H5z>-$Y$i zUcb&$KO8wbylW$CY35ebJ61GmLSds~P-T#_yd~&j+VxZyoHHtUKAAJ2Hvj@2b+bS7 zNITwHNvuubChSK^p*aw%)r?6T=`AwPk&kUGUCDQdtLyi1A&0O>KkfLu3tX?fLR0EA z)+K@r6Zp()u}oicm11sAR$UO#2bzuV-=i43UW4ll1iRch1tcGPcMX%J9jC6QH;Y@G z?^?vKHhdea=^o8jq73kXWM+d?>ekn7xTr$43rR>wH1ah`gJu5C5g5FE^JpGs>F@0i zJ_;;B$q7C@kf~Nl6qQ_W%&ofZ_2`kBxUWhIC!M&umhQ~dq#8f>46r@*c@h`oY_B$Sp?qSin{L#Y1zI;EO(8AEq5(T|L%$C0|9&y`(enQ+_}I5gZwHTa9MM7F)#F zF%Ml?DXd^laygJ*SXdH|Yu0gcD=NgL;wz@(#x*GywWz6%tt$8ii50*0;WE{aoFfFn zW%p*u0t&)Z$Kdt#8z8W^{C=8&M7FVwT@eotzqYo`LGAXUX5!7Cn#P^gIK#6anaYBK zsR>^l#}Q0>F8UAGGY9$2wjag7+c32&sYVyw4x3|^tYZEZR?4$oa5#wxbnZ(pgF9bh zR5D@qbm+tTnJwlZB?0rZqzvg3a+fx<2v!ajSWSjZ-kO5IQW_UZ^08}l-u@fD+WQg; z%J!k^q~@DA#M1XPdiC)g)6+{UNV#3h;ITnN#@>j|gp!}%kZNq`cq%jn_1Vqqom^}n zaTELxU^h&PUW=ox7n72D!t_d{&Pxob#-yQ?D39Xe^o*aP&`l30s-Vk)XZG2Ih8m)2 zmfWaXJG_ObVnv+G)gAKkOV~K0&iJ1Rfx*1y;e**VeL!3#85uEWiC{DL_By+9Lo|Vl z?YUsudLHnM_;~h2&j@LbxriqBMZsZDRMkOv;r>S&hf!l9f&5oBLIY?=JGv3j+5&bl zW?AMW>$ObyB$?D-yRn}hMk=VqzSHGM<(Xhr%b9l1v(J4Y&AWle=r*G@cir1qz2b7c z&Ge$aJ*Q}I;&}pI;Lpd6yZi!)PdMV_A~hMG4*w8+Sv;UrhgZn*3%{@t`P~wFjpSve`TBK9f2XzUOJQwxUQfR;zJ|{j;-FB&cCqEA6k2v z{w;|XRUXNBYSs|OGL5w~aJOF%(=F$nYsoew)nc#iYlldJfB~QJT9T5~)2_&=7QTuH z{E&gUKB>*A#(A^Dl?!~GdIYU-z>G5HZZCH!@seWQr|6AV2OA@r$xoK)(a;>HLxo|( z-9SdvqnEPD1DUdQ?SCqNtCN}p3uQlOj1 zzHVnUr?*B|!uhs|%+XG1_3baAAaZ3yt_Kn>=80B8%RqN-yE@j6IN;C*R~Z~=yr0#O zvViCsJvZwpS?cKTnVrUg*uLb{_u8EvNflYZ)uqhaC^J{O6M|QZunuGUEqhy`4+`1Q z5(mDzHM@&~`3_j-nr?i&z>AJANI=!iB4STLkMZ#Dog} zq@!k_Uzkcumf|V>CPDCX>e^r3iFtBA=1SblAqUU;Lu4yXPZv zWa0FgZ{ov;W@hehC#mM*atua=gw}GX(_CMftB;pub~)wqT?(c5oiH=xGl~0>W3`!@ zKOD>884$IeG(LcKDj@SzbE{AX5DeSz(>4;dYpy42^{e-jryT&eXqg{lV|#W?xQ!4r zi|>Ct5bJ^5i&wv;D!=K{+;a6S?xlvyn4M8$xdL0H18y7LOwE(N{#q}^J&#WqL?xhS zzgw|Zaw@sO-1dd13b?U7cx=Rkg_C5+ogV&# zmo<;cz~_8DlnJvJg#7>mXHDXh>nUE!M&ZRQzlQ`|pGoU{A`Kg3GQXl46mu%$?FhKhyhhMN?W z`8ST;1svmk{k@nSkq~q=h+j5QtkiQyca=e)aEl{1v4i>07&B;NZw16LXoXm>$OGX$ zve~-Y*;0v)B+L>vHWvKTr-`g(48+cd0CHxvH$^s8^;I zkGu+c?7UNcH}NZTs}NdU8!peLGhw+eASlRoy>2>3`^<`<(k7%VSlJ?)QSi;Hb61%M z-#R$RdE-Od+kjQ5Z(CFp?Mn-?_jC774@yRQ+T)%3apmPpw1tz>fXwwHsUjQPPA_Sa)E#|Z znV7;7Aqy$MZa+$;r}x_*NcuKb<mhSwLvHnC_);$P^j^m{05nN837@|5LZJ*tjVL3lM~{D>`Ox(n zA#WTT11fkitnXYuJbq!orn&4Z#s?R^^~E}QL3?FI_^4gK&X#IQtRgkEp)xtg%vx2r zIH&4E>(*Tx=z)Zw#agG~B#_!t_HM8^FZDsD)ieyFUCZ%5b~0pc+HLkNRGLMJo|L0Z zJInxgo332!If4Gh)3_w;dTgUcz@N>046cwoXu*Q#%XQQQ71=FY@x0TjWD0tpGlVp0 z`1!D;dd?JFpxW&-3m0s<X3L7vzgD8d<+`Xs`O>=eGd-5Dsf&T&``mg3cNS=XY{fBu z$YN~MNW98C=8P_QhMAXdeg2F=Q(J#7BtQ1rE2i3WmUhaW+KP(EUiO6sQmBP%ZY0!@ z#Oz7|#joX8fHn6ToV{l3kDpAeTW4m)D3U>QI)~@6SbQ!&D{D;6Xn$w}Q| zqb=IgVk?K^8~?1Mxg+MfJ%3i(eam3b?T|2aqMlZ+;oA<3*K1ect^PWC18Y9mQ?d80 zqaNlSNCEqRouED3vGyNWYU0Hp4n8i!nRXsTUVfFw5c0yLh?QCgW6SClB*IPgnbW8NbaS z{%jvBeM8e5Ii2pi%;6e2WbZI-AYgA1)}1W#I@+1EY&@3KzI8)v-s-}sUWCJT@&Zf| zxUkwz0+hkeR1+Db9HgzJKahXzq_Es*+3V@)*?lwM`!IYNuxCa1N)D&u>thPF3Htjp zEt6a7897~3Q?MCGT~*fDL4O<)A1<4Vb7=0JrV^Z}x+lk#6HgjmnVQyd&^>zCcY4!Z zIB`-=ev_|W)7Iw{G&5#=hm=7oAb9mkX zRGW7=O5lzF_OZM<&UWKZSNqLiRSBxN__P=H7G^dDQ2#0Gi>N3j%t_jd(%|L78?gG_ zuk{G@i-Tc|pPvAWYT7UNz3Zos1u8c6d9ocY{?<{x+X8l~F2*dHk)u#EEg(eC(2-mu zhCvL;PF87g=`bz*$J?qk|5Uk%=I_>abSm_o@3wxDMYs>}6@xq(j4EzY8#p-|7)*Zj z^9Uw{qd~gCRUG=t&S!T*H?MvqCD)K?E#snHQU=E?bf~7(?5i(Pc61w!b*K%=-KV5n zFi{-vmDDT7_Zv|?v@MYGJ%??P&hK~bKls2f z_r7EAz4ltyb*;5&)fVHKDF;qZJ~gmTo3y=qi9rpWpvPdG`bOFl`v@aQ)wzA45Goo< zI9lrl#Z@mX62B`V^07hDlUZZZuz`V$%-}LjZV48hAVEAPrjSLAdDMtm%V+HB_5`|F zolv?l<(*rYd%ErG;(!0mn?%8~noyi)sF0o7Kdur@jjJ@Q8rk99w``rUo{n6sWf8s9 zogbIh{BOiqGqWh3N+rGw##-p8F~Zwh+&b$W z5PaDqaP=lLJwYGlW`jq7?0o#z#7i(ldT62v2;{_ZA3uJQI%pd3tuwS~<`r*cJujtO zOOt?$XWryc%(^9si}E%aKiNoLo>6(hYzA226~z1xYMb4ytgl@Zezl5-Z-`I zOCv7{kB^@e`t`m)4z|md$;sKj^lNSzDi`haHTl*Zicai#tWs!$M9Ag7T(xvX+nqdS z4RveuYZtFdOPeij^L&o%QHWvxQ_t;LyXqmPsESRWR)Cy6KWp{|Nm2M`W?52y0o2x&8Z2{rkn~U{q4D{*u z<$roBfyX5kY{?wQ`;g5b&A`Jw5pz;SN#zeUHhl|-#HPlgTsn7AF$e^p+!Egi7BZy> z#P@iHWWGMj^@}GLMk5$ZG5uY;8XnHQ;s1VfVo0hQqBxol6xc z3w9y{3Z$^ga{@S(G1^kHb-1G@u{&}CJue`yyh!0~Rt6T)sw?u&=W#*@2Z$tJ(=4V@ zp&EeG1|l;%VtkUx>Efa~1!CLf3$!GtC`ajiU8%CAQQBbjf^MhMP9OUXzCc(~#XBlO z?n;^8Yb_GSd!Ux@5JF9bL7MH@tY_H1sc`nQdO!*hV?%0PXH2$ECEWR3Rmx6JNJ%N^ z{5ubGzt?FO?vP@<&IUEskE%DG%bL!!s{1*pCr?&01zg{6oozicB4TD^M{aATkV%MO za=E;8vN*#WyX%*NpD4SwRrCy1Pp|xNxXGNo3^#-*=1WRm=deg&zwlJ;6_AX^syM`H zV&cd-?nbit{sPfSe3>hmA<`2^@(jyCcVcw3|0xMc%JlGX^TS95lkWcIeVg+s3}GEu z{fYBc_;gLt;r#lfnvU}7;}_PF#;uKe(N8qjI%@X0dq=tYDL9gpi&FLu62bs*y~v2U zfqUyTVV+_Gq$XrKe9y(pWNCFsBlw_QAzP+4pYHAi^zedytmovEjz^_l*>TxhbGwGX zTK?1tfsIquGs~3&U72oMGyFoG!t2yZ3s~zu7=cIW=tCTxr%C*$!JV5^^=_@fT+CVA zHr+l9<<{#ZFx?a)&*#sx?MuSTJ>{4??ULBgXO{m-EnI0jLwX5slGllhIx<5PClc~!(E@odI#b;)Q zJ>2{@dev7Qg$G%v!hB5ZIU*!5a5)(OAfk)GEaO)Nj zpR7Q-gNS$vi?h@VYnCIoGv@cU&SPr65>AvJ?Xi_PH3XV9tG*=#WyI%M=o}ywxU^uz3D7xM}9tbOQgD+IzE< zYb@aRPz3_7RAYspjYCoP+VeFO*7#)PUYb`Hz&_=$@3a%*Jhw?Ap{CB6s)a}* zEro9s)w<5`O+`Kr3>M4MvMa0kbnAscfVS%u2KUe}n4++xt7r0R;w2IOy5~_r=9Js_ z1H3e2og*ieTDMbj0qv=S!Bsq9Hx!nF<$bxnDWc=eFy>UT6h6^OZg?l$_RQi6bJF~( z8Y4@y`VIC|3Q2ixd};vUDo)W(;mv_Ra{e5B-W#qH0gC^g=gN;=mQF>Mqz8wO(yCu z*}8f+V7A#K=djqGum;qP_Nr|9UYiV{)Hq;m&3%~7+J2q=0*?C}I#X}W(t7yLMspDT ziY(Pp>{*27cdxD3qB`1B!L{;iLT4y0DRcPb;cn2Lb*&KbLuRnH?b?R^^uARmJT_J- zu`5(kB6cbN%q$veGV}|RipMe`>X@iiSV^I~;|apNBej?gDT3BHcw9~vosI}q3$%3& z77$!qpao*MOav+w+Y8#OW~-4IhlV&tr-0Vp3GMxGG$jt5)yKT8UT+wg;84;6fAPCd zz3;;tp+*aE?MvSStg?yA+*9f3E_a|S`9h!Kht884-7;v)TvmSs2Ha)QbPvQ9fT-MU43BwM1lk|EcmL2?+W|N>lPB0V9IU9(q?3ry zp=)JhmlhD{6qb;ab7j2?beUb$Qlpl5qp2_#Z`!ZgkaTSxUR){>Wjmg^dKqDfPRsRu? zf%E$+Pi+ovzN+lD;Is;y;sI%;wz!H7#89~h)?z`04%VMgk0tNpPg5paef_z&Yk?X1 z-?Si{3*FHM=|UG#+6fd8tEu9=HkA#5c$J~-CCs?F#(UjluT*iK=3zYOT{(!4UtP@0 z!;W+L>{)sAVa2>G&*7qQgWO`W6WiNm8v_kZ;@vI^Dyy=xA`VtOw1ciDyrYehjGdmA zzrh;9rl^95j{2IA(EPfW;I@#y!MRYAJL_mb-skH6{_cSq5M_uq1IIgCNlOnSVd3uf zO$wbT`iq&SfL_Kp?V6JTl1`|-gh)mPB05@eaglqS$Y5o-cy4jZK7saU*Br1gl)8F2 zwyKg86rRuTERM3Aqj0{5iaiREc_1U6OGTg4(FwrQ-@k9CT&x4-1jq+q0+%zzEafCw zCV|gz@vvgP<{-}46qN>5qSz3qUG9D!JUpA1i$~0DQnp1vdEpdp&zh})slx_9MuDhZ zGIEe`=wX>az8`qLsuD(H1Q|J>Bk?M_qB1ktl|}vh`Jt4gEZ75x&W-X+AgE#8?z`NN z=Wfw^vN7aic7tQw)W|A zx&Y47=jP^lKpXbS4fcoQ6l0QnD=cy~C6n01LMULjU(~}(j)YVzr`|s`C4iGsFIzN} z@{=EQemCU}(C4TxPRzd8US2BGB8RGA2&`Ej1ZaXH{a<@oLE6pBfU>f$;6rf>Qb;d@ zC3%pkw{gXH4L0K&ec}&ur;)>R`&6A9Uj;k|w*zqo^xUvWpdg2is_@`AMI)$P@x5+J zV90$N4ly=i|0JGIhk&Aa6>=YLE=WkYwpVTo0y^%+YMghv#XmgX z8MU|y`50_p)D9zB4ZZDkIxxpw(QcHG(9^r32hil=shODza|agpY7)ll`T4W6-~}A$ zVVeiU0Ez`#+(!>>TH8HnU1PX^7nu!rEd=cV5P<>5d&~D;FhFItABoWCv(tZfpI_KY zE2QQVgjztLf&(V(uIVEWEUIVd6f8%sTwIjRRh`xq7;9i6hQb((lXndy>_SZB^@0snYECPzT1+a=cvj#YUcb@%sw5xIqABDOLrRcor%|J7k%>ep3uD|dEw z>^KQMJw1OtN)s9%8&igIeQT-J?+Z__%YqR=wbyLKFHI;a$4d@)7ah&A?WD= z0zq#6i^TmLPT2P}(r3SpzeH9Ep{d{$kV}s+k6@=(q{3Mw&`{4$JBp!~Q2;9?t+`k+ zsO@Q&|L4h7^76h#m9C}o{LUGtO>C5I*7de_{qt0E;-HDqNKp(G6r@@vmvjGzPuj7; zD;oviW-hvydgD?1TqWCmn-y#LmCDx*o(6HTiM}ceQ*~C$TiR%P>8|yO!n-c+E4PQ_ zte;)GLQ54rIk!-q0tki4??$M28j>9U5KHxda%c{^x0a ze%A6nJ7#NkX$S`a{$pydJj5!^($xB-@j#uEQtP9kiJInyy9up zeq71-lW9t}R`H`i{Wo)q!8$Kc#xQK6P`dGgJZo zbLI}5Hd_%scZjeP!?`^i&pBso^Cxx!L<;!4c1ubti!V=+BC9g<%eM#kET~t-jUY(% zKUx%GIvX3t`6wkqs|1?hat=>lMp~htjWXzL)#w8PoqsyYJC*=BHA@=oc__MPEXB!| zny!6}dtU0I69;Ph%p_A=2&ppto|*w=mPAd4LCq1v4bqw%-t$8^V`}&ASO9uj?G&7=i+2S?HX*=J!WRY%`{H z+hkd2gqcISMPFPzOS}<|kzwdVf6g(Xpw`;#6_nfJO zbnKa8Vm`aFuzz!lC|O4)eY__~%iv(<+(W!`d>6B!fQU7-`6p|E2n`C*+tmUZh?R#% zUXmnyDgn+Vz4~Uk7CDEAlY6K4p#5qt%zaTbI`Ue*y_S-pc$qZ~K_;4rC0R(T>V~V1 z-1FjFo`Q{dN!T3aiTI1$+54&(J+`n$n^&KV4IssJx%58;hNp2}oi^-E{9}BPw(S8% zBTsQQdWv?FzRyvO_vL2tS}Wh4Ys`;0P3M+ZW$H#{qXKFvF0HNVNvDmORB2Asu=GHS zyNt{~$K_~BxiZ^yrjC6^^yR53v$`LcVhmGcNUNlk7%L2*tX)p8vc?g|o*cAHMfrCw zYI>DUf1A*YT=3T<10iFubgnOLB~+V{k8+4%{@mAhK;9Y zPFSA}RSUGsD#SS9Pw=UnD^h%99+eD&E%##d3t>5B79Kh6>_Xczw1h6X9P%nl89R7Gcu9MsT&j-)tcS*@3|r;tPm`U__$qGytzk)O*nR zG9k+Tt!*%;gyHyE#St;k<`>N-wlN({kJ$z2wQcRC(VkG)Yc(<>E>{FAxfBqd;c#0x z%VaAs)D3ejX?i4?T}^&wDG!rDCFE=6GG1)Bz$#;-xD`yc=3IxE5W*)(Vt#8LRK-O` z%1cK2h7%eMjuH(5qv$t2HGED*y%qc+)P2LW$6??$5#u{uH3R4 zc%T#OKi&!8m&66+Vi-$r11!<6#~(;&H2h#Y>s+_aO@@dBg?MEv&kz zO#xvs5;$kiaiQmD=Z!)5R#C$Nhv&F)h%Ty~lTMzsG$X(A-|tI3;%BUN@C`23OJ`2Z zU2^DgH)0<%&>tPuDWw&j)P!j=?X|>abZB@at^B5y#`TNU+}^`CP2KiQXBrR*mvjN) z>Q0NDnh=m~fDIpwdY4BqE+Q}VN;|RTW-{WU0wl{IhZ-Szp!kBBvYJ*;O_<4`(2~l+ z^D-8R@|5CQ`J$t})tR6V4YK|GM~14pez>&gGrXPd+;C)qH!Tm0T}rj$S9%_p0SoO?ki9*Eo0>W;~}DBt;QP=TfnL9muGW zIFV3-t_UA=?wg{a+^wt@Apt z^+ssu8{`sx(;ULG+xNlY*O78Wj_Ph9wTnjEi>-x0oIWOF3=y z#I0%z@Hpr#X&0oC+|0{qe^(Bhg~w-WtNE?QL6meH>(qrgMnGv6p_wE)hOv!q&lpH6 zea%YaR&xM(hpbd~ANkuXO!jD?_D(}j!; zCK4kVzEmrlPMz}zNJjyT$Yo03s(}ww?sVq&EXq{M79q~eJz`-s9ZFZNtzK0wCgaD5 zK!twe_BY--y+pC@Q%X8U`42FHpEU^zYnf?}e41aDv&V!b*rwJ{9h{Z8)KzSFr4_Mn zT$#2ct{FWCe1Ie6OUc~QF)LUWg|ALqWoge}@3f{mJIgeQYHyb$zbMCQrLf_2<6dX| zRYcSCUdqscONZ9M4T4c?oF7%9tp<%C?!*(nVHf*0maU8OwDOESp|TK!28L(=9{!^wk6lowM_MMn;-6<#t!1_Z<#Pr#9XrbHCLHnUhozG8&;z zZs}v7w@@w7eyO9lFV$1LNGfuqd`lHE2RfMkq_UA9SsL9H| zy{O2je*G<}o}ZM7nXQ*$`R&fk=4=-_vd!-)jw_x?9+KvT{lA6JY17k>XU;DQR8a|w zh&=}wYy46ARnnwx!#zi?H!( zZiW&reiH@Uk%?XH+H(NHqbE&cOMhh=F*ZIizc%4WNZaOrr!CivZYL->d?W16dx~oh znCv|cQ=Xx%Ni}u#{#SpD0CJ!VO<+@MU+_3aGw?|OgJ)n=P~TncMJ>VJy^f7m+D zHup8pKlAl^ZD^Pg7A68lOuCLu)O)SR{%6bod#(*;q%XZz#Nb2;V3j$vxu}si?qh7k za;P!hy?ePBL8(Noq-a=rZCH_(Im&)~%s70~NiTu*gVfZLad2p;-6t$8ESUY*i~N1O zzUozQ@KdiLQ!6?$-7+D{=S@^Xr1qP#qI`3sgV8lKbo+Iu*KF%^x+vn)?c`tJdb##(EeuKaA=n}P>Na1iZM9-z^Wd1|BLj2lorem|M zI_AAlEQ4fM&{dw($Zg^THcEQNca$g=Q$3-d9zOm-YI^`jMSWoSt6J8dqgQ5<*gODv zWstX)_2;*>UAYjEi{1hS){)G7T6At~=kh75a~99;NRvbQ z$DLR$Ch-DgwSq&L!6i`TJKb=4QrV>?@TZUaBs}!z9Tu&co`_dTlcGoyGz>Hfk1#2u z|7vp%SP=g&PU`xKW(G_uCa)t4Ieo<1hCr5;jqYt+H0E-5Je$pkrLx+`&%vI@GdfzH zCu|N&bn%QIysyI^q>(oVa3qML*zk~LoYhl)NW7ouE2vBq`&x|at~bAVwqU# zXpNLwS@hNM8Br)`oaZ8PV>P3ADOfaPFrVHLHS$a5RDS7Q$jZ)sevX5o<#2#D*D4hp z8XC=^Hqzg}3m}UBu!cZ4?0-=?vJOVyJF3~q-;ujLp;67Nlx`P_2asl#GNXVxXMI?C zR-BbQXr#{CN?Oo!%r9Oc8`97hxn~R`67c+@U8J%(YRNwI_Qvia)y~%Pv0Zq0z|EtV zHeL#O+^c@_%SptD_Ma04cS zR=OS_Nc*1vj}zZ%%QfPV0*S~@U;j?joByJ2f$vqB)G;4%P8cgGLF9YSTn~m@IHB0| zm9MFyqOj}tHVOWnxFj_kv3WKnoP_An9Rv9#)stkl6nu`JO2qO!kon{{QU&F7mgQq^ z<^fOWX=&e3tq))N-`vVFNztaI%8)MlL%7>8Cr!5UHv)hE);njNJVT-)`1<;2CAzHf z4hzVR4g`{Cme1kk~+7_3HR zEj?c)gxuv4o-FPO7$b;?Fy#6n(@$uL?Iw{9~-^^Ij*zlLOA2mjhGt^)rKGK-Q z!8}dF)ALe1wK#&f_PT{{^?#E=bQ5f<^|iVuM*{YocTbz`M!iPWy2?l63oAfoVsk-P zyx|^c(nu2@KZT;9qCV{=u2sHvjgfk7053^FPIj>Jc+8^ce^|R;YOO(i&uA739BM}_ zy>|S4?G;4Zj?YdkP?3`+W?nH^Ty3F5|Jsc^ddL3pNHvj?Ob?l_AMl5+ z>>v5!?>D!t|DWsfPasYCzeitxeVvih-Q69CM`)LwxPkV(X9Bo>Bd*ShzZ*kB<%^Cy zFA{0GuMhm))bsO#h~7c7^2dm*!oZ6^-*C-M@#P)KSI+DmhLinjahx&x8omPlENV3+ z@OG(MD|9Py_z#g8#xpJg05Et)7P!Pt~0q@C~{=S0&1cI)Dt4ecQ2 z%a?$;w!8xDz~$P^&H=c&($cBcn8aXBEFEbxkQC}K`qt0S@7_J+b|@yLw3L)oPrKgS zucm(;-Vs5v4)fw-Xmzuzec~s>5vv$OiR2f-tjpfSY*GCO2GcxN|_tuA^u z4Sn5>$ub2hKT(mJDhJ+Ag0ErQ3%tWi^4LrQRCTrQ>Kg=uOACql7G}k(j;qCUjg(T) zjR_pt5YgfdQ&XhBZ~WH}5yqQDP7`W1O~ZA@(tHWoaC&zn#vw zA0U{MJCK)h(O08}nWo9+I%BXsFzI2mNJP`hd$4<{v{rJDm;HCfnl$!cT?!E{cA}v z5Rkyqqw^*4>$BzG9zYKvi6^i!(X_upRx&W~o!BJQQcLg4$P9UUbA^}DfWfWMjDJF6 zwwiVC^UCwV9@ch>8g)S^3taOfqT;2Hun z(AvV)1vI}D-X_Xo(7H}jSh;AS0|kxltKF=Ox@0@6vMk(PQ+utDR?&x!HY>Y|A+20e zi=#)7p5e->TG6ah3sEsMyY#h9N|FUYhoqg1>^rEteaNL22o3M;-NT{(6#7YSb9BQQ zj2MN({|O#`jq9gdXqo389#LjQe9!P!X?jB{-wUa`=Fk%URslP<9v+B5z%^H3`=h{h zc7SgD8jky_b0)$wBt+zc;9dcAE9}#!=zHnKn_FI23UYF(Hywcs`U43K1(p8Mz7l+U z)-M`3dG=$!8;!X&Af&@KE4hbnFM7n%CB+U>+&7wPC*(Gdhrb$|B9X)OG3u>?>*a~b zJJuV6{BfZ+)z~AlWyUr~G1)j8aX|5bWhHeFyc<3mN6v#O1x93{s?gA^9}cLm?puKz zB!ZN5d*8l&3lwvVS@iMYy>1AJQ66-V`0@XQ>m;Tp{NpWT(q+>!ScC?-9BxISeGZaN zXl5$)$e7CeZ2UoRZfS@;+fq#|;@^jEsNsgY+bB%Zb+YhUp0BUcez1;;Ww&|-+tL)! zlh1f+9`lUNQq@b{cY;S^c2=~ru@U8|j+Rri5()7P0sdlk6d3%FEzk!x^Z2ICm#SNf z1%8M-1E+{su7&}zXdLlxi&mrl+pQ?)F4OoaJ;H$J$Ru~q~uPJ(q_M!*t{9Eh&y zj2nY}r?ah1^rodBokFlI?6Hk7%M$gT$4OXGY~xq^>>qArxo&M>Izu60y7uC|bQLn^ zn;ruU8eHmNCkiWyNGHGx`OxqT8@uoselXgxiJyOqU8U^ zm%tBU`N$S$br!0`S7(0JSHu0Gj=Qp6e$v%cR&C_`eCp85Y4zC8JN)s~=g*5J{m5W{ zRM6uIuc@#%Z<^2okP4K+@b%HMf9-IvE)W?h=1+#x*pxh8F0x`*D_{qT@EI_TImis6 z$T2V;KaG^vf|zj=h8AdW#Kb(iaR9uZSPuKe)3-{er`}%rvN2Y1dUApo98^?N0rVKP zRk?t%{O1U^YyzsEbXyhG*NI<$hV&yu{pNQhZ=AmtGNfsQ$mTXA5R!K{U_2mf?;LHk z`vB?^6BEPwXX)}5oU`Se@0p(d79X$v%a_pe|1Z7-SHc9nSDs=Xl8`rWksr1!_Cl~O zyP4Z2LQ+yee=fV6>50B;Sf&m$hG-XY#7X|@#3r==jP?J+zrlAf*MDae{IE=YBWVp~ zcdfHC;U42pNBpF)QBiDKb}+*DiO0egfo^XK`@Nv{e)%aynm<wThGn#9F^mTE1< znh8){UIl0A%V6;0)E9h~(b}xk%u5Wg*Yp3l%pWSanl75_4;8G1;qSK`tCQ^6YI1zE zceb_$yWP~=QN^)RdYYD3Q*dA4$x?N%_cjlM$7|GAflc%`jmZL}^gpF5(n!{wMGXw5 zM7Nqp*!Yd|)C_H+805PAFaO9E6#%x!#x; zWVF=92W9WYO0=goCW~^-Kzj%2TKrKFPuT6mGic|R21hJw3EZ$bY0}=zMl}Ylr7)>| zt-fB9y=MYt9mqZh?~(|#<4I!U;LXk6;ov^!JYxHQGDU(N{8vf=uhRgO(HcJc9X zoO#mi{u8dhL4WY}Di^`8(p4pxqevMPw#ifV@}*wm`9qulWRV=D)qt$iqLPX&&XV@c z?^O(6A{edRcT2za`n?wVSe#p4TD={V-_v3Kd3>yk$V<=B)bdOsXQ5}>JNy@=Yz}OW zHF+}YRR{$@*Pv|LSbyItH|ZEc2d})`^hGieiZQ~&GM&0fy#>k)X%ZpL zi=LDkS~~0edj21V)>L4+bH|?e&(-po3z?9@zP0oDJnPO=OOaOI6ZW~rNLqFWF{PP6 z9uTY7(L*ifz z=DVHmw%R#7)8Ic16^+5gdJo(CR?_F%XretE1%3*U@ma46@V`$hDb(CYM9D1)2ewuX znYy!X+9+E;I+EQh&pZP7T4==)T1aFMBbUcwLn2VRc1Hl3t}~T_ixqoPwzs8NGGD$l zbQ*x$_$6Jm#h(%Yy%Fde1Ntn58jjF2#iWwV8Y$_NgQ>8q(Vph(+J@eGZDT^PUeby9 z>{w(xM=k!mz8sQjpbpE9+!0@y)Q>y2K8%hyB#QO?@lR_}*@z6<%7pdZoS6^TWglRC z7XL&{hoYQNHmI5@5B5RRV@`CiacCpQc3Sdei1n885G@B0;(c4~2e{ls!;^VTgGxaH;P7I0VHp==gUq^z4 z)cjer1^v`qKb}hM`O1{A4iVMx)Nub`oGM5fIuWDc+=w8}-uH8JBPk0rod}3NSWr4x zfMo^rdOyH>(E(7q`2(xJp!Yr%?vTw<;R>2h#!^B`((O!O*b841Jk-u8^#@LYhg3{> z9P}sU@`X0}okc$n?)$vS30$cB$ z1a=WaP0u1iuALh1Cqn;smV11ynAN1qJR#JshrZejJ&CWa-j+PRaU{Bz0wSgo)?~y| zDE|ncM8GtCQ6)hbvC24~2brXkSTvK-fHX{-Extu@*32)fJ^*#SHoluwzyRHSGs0hA zQ?QpKxz#MIR3h~aSslZsQ*Ko|5*Kt6qyRmC1h27Eiw~qjm?N}k+AjUO<0l4w!IjR^ zKB|A>l!_n%RDANsWn)C5C4d*=*L6=|yV4J#jgtAN12_KBzFXH}MwWJg+5sOM7@h>$Gf z&|WXjxMF}$eS?9%d2H@%@jL#(>(BQPfMNv6q>Kzo?ahC}cPrunrG>>yqEUczp`z(R zqt2g;y0?HCtC9b6O`uCcMzw)h9j`Z`bSq)Wwv1~Y+AA6@vw$I2vvRr(3MdY^eM6h%J)wK z;T*rUbH8s{1bGYXzX4cXy1U<>n>vBa6iAZw#+z+3zgyfl=s{1aZmlLJMq@8UGdHgo zvpTdk;o3;VM-TbT9fpn-R4@kA1Ld=OpjkUj5GNL?>9T-bHd0WqHk~dRn5%rm2WM4N z*FIS%8A<_C``EJBj_-wvCBCweFwu@ya6LchxiTw{*9y_{-Bhpcfm}N%xMtU6eU|I; zY}gDX1^a6%Abzg}Vv4`!-B|@I023WV%HNX4YZDaI=_r8c>!h?5L(<=@>^@ zW2`)hWzz>GTZ{gbu3~>U(&pUJvVZ;|l>+7q`Di;|;Wb?d2W{P1%Ym0&8LNg=N4nSh zy;x?nYu5U`I{o=h2w*jl1=ITyX*j+KeWe>jw{rLJn8oys+MVRfyse#Hm^x}*(MiZn%P2pW zZs$b5A1rjK14bP5rln?TQ{BaTGrnfziZhKv+WkCrBiGh?r5GI}Q#g!kZk8fQ4BU6N zh6V^#5XRWVuL?W779d{ZklpOmTiqX$(uL;iJ4drf>56EiLSW(keLHdg`t`3|IhxlV zyV)o(@b`K-JH@=_=#WTY&+plC=W+a2uw*1A=L=b!bB7kpl_+GDIStU#SeaUvJbWKH zUNX0vt(*>M3x#9R`sbLT`6?8nsQV~ixDuBGigT?*dNOhpk4{J8P|jEyGH^;%$BfC6 zm{)m^PN`NPzNif*nl**RB2>Yj3C4_kk?LP3Wd&`lk2aQ}AqqPt+RCZ@x#nVzSI)T^ zu;xjg;;oxq$z9L=ZZtqZbLr%yYyfGAj3IEwQh_s{uYdc>N-j^eKB7i3Z8SNuTLR!f zWX^-b{v2AzNyFdY;&F7G(>`Zjm|daqa=$Rp(K(0FGJj~i07&BYygYRGBypQMhqt^(oQiapiHWeN$emSUVq$v(UVWOH~}5XkRT z6tST*xn1Md(1EA2;-BXK(Cy9z5<4lE^C1?sPkDw zPfum#{*Vg^pRIj1bB>LM8zT1*5b9ar=W#QT`}R~+oFD0SZ%VHjcsj!jQr1C5d%U?N zi-zrewIe)#t+>=LnAK4ezp9$VX8pg(8uoqFH!v~rNpNCJA!B(2)SVWe6JS#Mq{nM_ zp1xGLbKxWXjAZk9H}8GF`@$^&u7O?I(()4Nw=? zCj)YF0#65X^r$8^rQ1T*Kn0~sWUHl906vqD!2d(q{g~c1Td?J1jgL6{02FxrvE8y| ziz^T0F#Q8C1thk%iGE@MvUz|;{|9{J1O9w&e$5-;3%Zqh(*N>zz`e|v*rCU>nyr2z z?~K=oUt2TZ-P;c!yylE1l{@)!%fY_r9{;e&$jiM zrqE-xeJbiNiUtW)$S?k-y1sn)O}o!?(ru0~-dy?Iv=`|=BPH=>A*)DK}{s}>xF z)lXrI6cPsME!HmGk^ol(-5q5Dkhg8u5VY1)SCe{qk`qrw>TAyfK(9VtvoIbqZeHCr zoC01ZcY<0DPiaJ{H7IMM1Q&2}E zr!k18{d{!=RPixNt^7Hxm2m9$I`ccoAoYvsBa=4K&iJEIpRQ$GUtDy;#v9-Wi7^pm zlY{p($8D=UXh}NwDXwlP7L9286@0LikY8~^EB%LVt^6xmPP$`S2CD>dg)IpVotx2! zdhd^OCqH*5<*fc5$+;a>-y%}{zha8bR5jne{AZ{E1B>18HIFEtc1z5r58!NL-Phl4 zTKU1qiW-n26^tI`N?KYECi9Y8m1{w(& z0y-2xSK+x;i}>p*FvbMz2vdjvbDO_t8?K?=FD3fI}mE~Va zJY4zQYb#j~vNMzqvKY+Y1ByEU6&W!E&cQ+eF0HHtA3_lGUgt*tnsS`D#;I98rVxzZ z6@HRlwha!&9c~qD8%6*!M*2!dHHvtmRh+~W+{YPXyP#BDbbJB=&&!~|!m85%yEzIG z(YB6+d`mO4lbx`7%A2>$NQl}gs~}i9LL(8IZO+;qVK7vevLSZXwKF3@FC76C`YHC% z*ePy8C@1jI@fkLpJlq9k^?a1eZC>mN5G@2v=2rpL8v0ipJG2sDi}9xa+N4Pv+`#xp zX;L!3Yo-Vp%^dfw?)Fp2V5>O_rpX^q*8&E0HEI_Sg9!V#Ce$$r#$-!|OzsF5w>!4# zS@x9d%i+<`*Q--`U5>O_4AxndssA<0!t_YYsb2`Ww`Kc31vNJJlUnL1YNgAa-M;y8|zN=b_~zlpxth zJmvqQutg)jQ)xcrvv|0-O7+12$%YPKsijhc$Nl@htVACO9M zcxl^`fjf*H$g+{ODp`f`at2jx3c+kBMcMM#;&C9Y$pU~-$+`*kw`x6RyKQ6!%{>hL zs!Z*GG9?1$6+Dx!b2+%^=jWrR(d_K(H(Wbl$N|tV%5E_aL+1R%X|}6j8c3_P?lL~B zzbd}+A*V`j^K*Wm^Zm#1PIcmGwO+3j3k5ejWADfm+`Q}$%>S!%P-OrivwA_OapZy5 zTFEDt`#lX8(Yu2a=`g8sjLDwCLWMx#V-b;4uu>kNEB?Go5$Ez~i`}3V6suVRu)1gu z9w?eW3flc^C{Y5&s?$Q<*kexX0|cgD92?Ero`B2$Kj|fq0 z{@#`t|M&WhoYF8&LV`nyBA#Og8Iz)jgy@$2>M~T0>)3|#NUdNHEyd;+4UC)ofGscz z*t;P(IQUcOBMb}-R8;tyBl`0$V+SE2V3#c^5D26Os)Dsv-1~R*DF7#ZEYcRR8ij)# zmZTFopR=M|}na+8pd1U5ZakPK?+A0O9LQv+@Hrf!V60K^isI!omG6#%u{;e`0< zqG8pWqZWo~cu$@@!Npx(TceqiJVFjt784UQ0IC#t^`+(K=MSmWSAq7hZ}q$lJP{5! ztscTnpaqem-S(yG)kz>EnASF^;3)yb<~3rr-qLgF%yCv|up8aYkL|ZPT+7CiDVGJ% zdMXFl_O`8;msdzukX501=FnQ1dO+dx7s3##|DBwt*#cPwkwCOpF$jz)Ig%ca*;pN%HZ9 z#91@f{FkbS$W!rtZa`@A2MZ{lD@YwFS$d}gk_y7*bkXEr45evx%t`bZdtbKPNw449ufDpk(z@I?b#ge7o14qr$BK(e#BJ(K zkuHU2PVJvyT~k~)dE5}V_I9iN)!NWhB0UO_uiW}8Gel>KkB+^O6s09vN@tw`rzu5f zpZrwm*i=zma4r4mQcPPNk3^Q*CL3TjT5G`qu!}kHec}3%b!VnyPsh%ThbyUc6k{AD zL_g~~3nAZl4$u}sE}*C&H!eh#v*w+D?oi~#8<^ny(vnNl!B9(UD>5?j>Va#Sx<{+9 zV!?^8bav!JQ&ZFB5S{v&9}T|u?)l&5tKOVJE8N|TRbDOSzpWL4XJYGp3A`6gZibn$ zFe?~6^JmXvKs30U6{RBJJo9y4m+1k0A|B;HTb+~IFUS1%v4jjdKQ=lHxb(Jvg{cl;5HLgO1oY@=Pnp8GhA9>Z1 z+4y&XL3A)+vCo}CGReAAaRubnKH2c)6Q%A6sbaaFXqb?g<0(<6cUJ353~3oX$qZS0ju&KJHoCmLe0*H_QZ)4Q^CwuVXOUys##wjo-(U8C z=Vf6_2wQbh@_g30;M554N*a?P#Bv2v_tGPMUI<-C8f$2aHMu41XxufX z?Hd9R47wfDVZU zo?NV>FU6djYRsHz>}nl&onL~Gy+Snks&ea{lor#>m~!m|vB4XL#XDD*)sXKsxlo*H zeYyTjhc92|ZolyHfGKM@B>~$3q%BQyTjGC2FSGZ3U&pLME2+*eKt;#TNcLK1NVl6l z&ubI*5*nuLJaU|6v=Wrn))8{$dYV-fU!N)agm_WzdbDBhLOlwz_9*J zo8x96lf8j8JjKJqBP1lll){tjcrV}1pd|n>^QIdxDs>?#kP5p3wj!~7#TT@Bmgcvj z7*aW)k(vzAdLAJ)G5_GrH@@yHU*5E4`%msQ;}DGsICjnx#AZTAJCXhuZ|@n^_1-g|E%3QCpULFv6pheQPFi1bbbq&MlE2uSZW^dg;*0HK6X!g<~M?{DvW z#~o+f5BHvY$Vdhu<$0g7)|zw8$;tRuMvUQdyfNJC+DS>qJO#MU&c>Cz`nh6`NfZ5Z zNq|;ag>lO1Xjyzsnr5|!{H{L`RGFp`pCrQwrLKn`qPtt?_+4W``%;ZsZ4$cCoOpM( zNpf!i@QATD8t6wbxj0)Va>`&dedQDwY1IX7-qE5;rlUU_fpACNJ@lAj?7H1QkD2%l zI@m%$5bO`H)>e~%PC#tSy)oJ(#9IOB+8=-+u7m2OGgN9KKwjIYrgwf^>|Xul?`pc7 zUjhb=tW47VqXv>(lgbf7oM~hw35#+=T>@+Ce#((VX~N8A`^t}fKLT6eY} z^!+=cD`ioG5I=8_m11FuJo4Lf@FGyvUutle+?!u|d{wurOYU984>W;|V7=Rn+;vs7 zQXnmvB2RZ^?7v7|L4z_OnBQXeGzBsc@n*M7&URjaO{3vly}FlMYGh3n*Z+Ox*lT~T z+$F-Fuo09l(?aaR;kso8weLG|^^;OJx&Z+v-<>=lK$y)hE!~s3#*82rn-@vnTDlE= z{YuPt2Cy_^{Oy}irIv9D2+LCZ9yk&@w$ss z^dfSPSVT$yH9|D}_-b@MaVJQQ#ojG48pRB`j*52Hmp(7>Qr0E`=qvE-_$kBFB(ek{ z)_oDt=kTS5dc#dq8N=_4Y0TA#$SX_xx^;w@f&PSecCKH(#77#!SmVj*8-h|#d$oDo zYo}t23mMa_A|0;}cX>_|+3cUicgRTbvPk!v9tUk1TJ^N^W4^jo>&=VDHQ6Q1hfiGm zFp-qNhVN$A1P@UXLR#agNKp$%^_DKUxuLmse0NgZkz8cVSv?!XKOPUSD0R8` zF}`c+?`{{GSKzf|lv#m|Dm_ z+b{=TUHSLjy2s|_&Ahdty0LiS0L&(+zkcr-*wco$5C%j?|GNDY1IUa)KsUaGDm_XA z^aTLv;@9&9Cxk6lu8N^!5~R5gl7~IM5V9|?sbT8|rWClOqz_J( zxnkSL7y8CX$K{BuU}4fbQ~k$7D$p|{wo*wMOl-6D@#wg2LEFClS|SSIC@o)i3j6t) zR&Db_p;ChNv;KD0C!PZ~{#u8zxOrE3=n9SsvBV$4y-|9iLh=NJx(Pt&vt8_uTAJ;* zlF`=!PmIWj)Ujx&`8%IhiQPltVArnP%dennuOP>E1EmJZT+WI?Ct!Ut>i1ujjL`=n z$Sfl(3uuFVng(dAdI2H@HDtTEIBz*Qd*y}?oErPhpi78})TGa>3<#{6JR)`&BJv8_ zcguT&NJd8}1oi%f(|DcR7lCIl^V{rkuq;~4OsCo}o%!q2L&BgQG~a=2U4UF3=_x8u@+*bn9` zV!biRE(EammOi|hKPNi%_#0uk5at$azO%Kn<4+#~xb@xficM_b{O{i{j|*g45q0wx zIc)n&ZUbC07qcVsF?3u5@hobf^;m`Srd@XZx_TCZswd?2299P2Og*<*Kl2djeDJn8 z30V-48Snr!X}ql11IkR!S5htt(`R3G*CM>2?jHFRafy@;L}2rX@#~7hoI^lfzR_CU za%xCd=6FY-!n)DUx7l(IPw4SuAueQiehu8kGFdKw@Gi{0>s5_M8^AD05qhdvvuP)C z`5|bmEM`$HYtgn=eED={k~qM$nU`>v&mCwG4k8$Sd!Pp@`vXo|44=Zmd+Pl#PSwY9 zNNeyiA}vyD)1T%3JpT*WLv91oS!!-o-F~9WRV6gQ`*TH9;b{&D;Crw)|-n0U?}3iD>MHMqs!`1GejIiMyoyn5csGLIWcw+H_lMy=4us|~el zXlpOd%*-q-aOSE2`m9k*)HF2yh+0_0bd3h+Tn3Ew&#N4i&dtqrZdk>I$tl*bk*YK{ zjM+R2s_33c@-*U=@-(sw^Wz-TxAQkdw~hC2+LINqT6(|>f7~hS3l(JNdri>SPf&Mn z$1&)WG-mmhwZp7$&EOPxVAH#J{e?J}Sybn|MydpJ|3$g#WscLZ~uM5c|Y zdr?i3Shf&2Q-JUMNGc#z-~DY&s{R^7Vn<(22%#FcLFjm5$E{{Itzo}>Aw!gA7pcS%dWtJ%TZ!rve;tlTtq>WRjT|EB2OtfF7o{{fJT*P=3`YTH@>rJM-Kn(%|5DVgNh>`#2C{9l_c{! z9?ezkI^eWE0O@e`@S=TkuZ zanhVQyR{SkXNQ=!r1nW->cL%46#P(l4fE^4Wm9x;+L`HT%9m0ig(Qr}u z;9I9-HNIUZbU0xT!VEdZ+(7&2NzAzZD2SYTXZoMm1)zMlYiMe^ulJ6nq)-I4Kao=z zqq1mnQ$gEIbWJHtm{s<^)a*``&#i1}Y5Df;?QvWydO~%YYKTaxdd+J&vxuOUYNaAm znEAz0n~&vY?84kU{p>nbj3EEZic+Wz;udU?RJc~}rKwLFzueCi_(Fi&R!z#ts9%M% z;buB?9tDB$MBH_?5<^{CF@ElyhjA-b2&Eyhi%GJ(c~qoJNt0xC=&wrQ_V8CM%SBVu z2nk0%v?cF)yR_Adpkr%)R5onDmQ8AQO5%W(VZtwBt7Z0;pE%D3(TN_fAT!2vswFggL^~GAnOASL%rBD$ zb#^9F-V|<@n-D)-r95#Q0IrzP0iu?CI0|a@roUnG>*#5g-P6GHWRMT`vUy3uJY^1V z6;TnVxggvCaD-JafpGiMddQXU8}3C)?9)`YU``AYuRPWx^rMax&IF0!e1WZY{vD}E zqaY+w%m5Q@>PXV6>*%n9%+79f`Wu@LYX_$Vv9hpuU3{VCAJghid~pB%IQ*pFShsLz zx9R)wSVDOIl%1okZEU!erKRQj_p4jfB4WPFh$<UOQtOc z(m6*mDLep|1ePyuUtWu`KNaPFX{rvVDV}twOdk|(9qxH7NJyfllP_VX_Tu%37Oei4 zJjHqzkcabd?%N*BV;xe}JjwdfIT?F!{n2Tz1DlM!x(RA0CwaNp6Ko}6^azB^Z_MYg zycx(sa&&3MZ(RzOKYSUpKGk&psNh%c3txXIvrqzjVbb>d1TY5_Inph0Iq~@)W6iFA z62TnoWpdZwZ-B&^yKuum5;M}nE@m}Q(UMcT5{>(O?{7hwuf%Xcpe?P&ZyMZ14!)Zw zoPV=6iubtR(jPW4boP#jI7z!4yaR-UWMu~&$*up^0%TvkdKC~5U~X<+ou02#H9D@k zR905T#l;2a5*uG_&UbYMq(a|T)qSBWI@~cMzo_fEm6s^>>Vqi_>-G7FbV;!z+*gQ= zVd3PhW01hxgrfPV!Ml8nzIv&I2`0t3GG$T7U(a3cq%OBvEl^UU!GC7VmZsL&}p>uq}nesEn00!PBTipwBfSlH;;q^y$5yv;_( zANJt9$+A>9wCY=T!TdMzg70O}ozIIczA}v=5?^8@xe%Hfr=as7p?N6B9HMM%Jz>X9p7s^#g1uXfY>7MU`9%yd5=WQOGC^1hsm*ag-(9Z zZd08wFl)jBf9wX;RqFAiCnr!iZXax)O^y~h-LrSDkBa&tE>qybT=YOOyCJ7wrI85a zJD*U&qoUgn_TBhe0$M}HS;bdxIcX@bREZhC404O%%%YoLoY<@*GH>>lH%fkR?mw8I zE5h;lj;8rb5o~pSnE*U7QlrT~4zLpo&wcUAG*P=YZ^yKmby1s5ZaS|TZ-t`7o|jx( z)OuplW-?|`prkX`%`gDbA;_mixFzm~v=fpBQU$9mg^hloNTPoHf8BxsjnogrMSLYC z3=9mG8EobQKXtHJta#>dPtUBm2Bn8is)FV{Av9thx>eHpI59DYJ_~$tpyrg$jt^)n zv2k&`3{Bsp)aOcl2%e81$ZJmHVdX%mS# z4K4z#nm57#ew@c*9N?F-yv=((G-7%>13qawrZ3%89`OmGf!zA*K$FSte&;850gup?ffka^C_rGspDx% z6KDxtIiad-&NIetqV>!IOj>0+Wj?+;)y`I}P$p<;v5%tsnFo2kF~7)RUTu$2CIX1d zHkBi=M?voR1Ju{(v2YdB#LYy(-aSOb=RO#>?Leh4a>rcP*bCZXZ=hA^Z1&;#hXx3w z4N=NdJQ^!pLF)M`UM;@@w1MWnYNwC zTI04~aLA@V!pwR_#Mx~yt$-)VYltkplN+wazE*pRN$Kk^%gmzOF)H!1zBVi$?@P;{ zZhS{%rQ6)CHr!v7NUcc6$WMNGmZ}6?lCTAZR~st1q@S$RqMBBJ3#LwjnsT?XGX8Am z>qixeWFsF!YDKuHnQrwG)jd+Cp*@{<9&(8epHm~kzP~7m;ZC}PAzQkAcHe90-RCL5mP5DmN@Y=)T{%#CSTc|kug;1gV4*ZEW*fMMspx(?@<^*UOE6W zQc$^}D>X3Y@|x>w_Lsq@ATKrY%%<}qU5+*6tO(Hnu@Wu|iqc9YEDq@W9ksxG=+am@v^9oYZU~pD{RPp&wFXc=1FwsAH%u=tS-NyYS5hge=s(U=2ok2wzyIfM?jcq{WFC7(Ji|l71aN8Ab)g!+&Mxho@(=jR)Cq4 zb8vZCjCwhobQVyFpQA2WzC=gzNTDxfAXgVhBhu&?@YO}vb?f<@0$gSZyt49>NOtzdK+Gf%k!z~eRav$8_6~e*|4`7@b47Jme z$H}ycjh)RPXSvbIB)$_K&IG*DD1J$e0? zu=zlvRW99x4>x0#?f473>9o#YRR( zLKoTsj*`kAJcu^CyHm3pZu>r7pu^(*b@=X8kJ^K|S^bX?D|ssm4TtA?-`c*FuD*6! z%+5&5f|%x!q_RB~=zfJuS=0FH0sqd~~qYSw6t>wS>;B^IKbf;@+hAI}prE?aCtPa$S?Khfc*BE;8gSBAkKo8`;l*!a2 z|GTR@c>5{pzZ5VdRP>3D99h|&B~9M)5c%~yzy01#M1`7^&)vvE)^@E&;y#`&9_9kj z-li5~V<;_e_ZKbjM8_)j=qnx`8=Oq?J=E+89yrsaL*S`t=}xBo!lB$V|JU^W-Y}EW z7th?^5lSEM2P@+Z2AT!eN5yu1f1?LpKcj>F>qzpSX6Vj2Iv z7s+$};lF&Ww&Z=GvN=g()GjMKUl-u>d%bUOFFrb2Zcg?;;IpU*u^nM~#)8p*_*6JJ z=Zai^<5~bgi~Qe6iU6%W{|5C}Xe=uA05omU=?}%80{cG>N;ocr#f7B{2N-7Ht9^98 z`7aOT|9S8Kn>qL2rCD|KjSi>CS$ahtyvaSDy(#QA28T2;`Jg8~qyY z?>``4(ATHrHj^qPfIZL&fy*bK;Uh~+3CJtybV4F$KK^-h!{^TjU_VJ1a!izHYKwcb zmgLvz5ODk>+q*u})O2I!{+sZ7Ydw~}OC~1i>tnnW(Rj^L90E_G^;6y5ENAv^ji)5O zx4g|E@I1P8w@;r^C*;r5{RH41w~&uRfHNxtc&JCIBY&U@{MG6sRW<+CdjIihU!Ig7 zIx#UZQkE3peu06$H-P&Eh(x5PrI(bHNICCc626Lj%Ybbj?2;Mk*joh$4dtoFg+rU&Q}i4 z|2zUl{|A4NZ?WRgP*!;(`T(%`uBuX8`VT4VW30;m>qYT@bV~mJux@OBg^|;IYc^9y zrL3={yp@qLRdKb{^n8Dn#)Y|K`A>rbus6)+M}$R@-2!+es@T$!lEude zGf&L+m!J(ItdC#W80ShQ&}##s%g9Zjrs7)mxx^1_@3F%ByWW==L`7d>Il0)#Zdt!X zPfprRE&>{VfZR;QmFHpA#k3gBO}Yqz!}PR=*$D_w;RWLN)qg9VAKj_l?dkwIT8{_J z)m@t=l;pN&hh>`ob=|5%#e`k~vKA0ii3TUbSU0cs$!%*8uUeT7o7W%4*55CIgEO4< zp45)H2UpU2?faqa({@~d6p1zSQ>29Gj4m(C~b=t$fVr?cBjm`R{9xOO9N%N!ehGQ>vgi-)pkV69e5mf)Ies zhAD6M>3RUgpiRbP+Qd(YoB;OW2R)-;D6}Gf)}o|bpzNaR;ImguO^O8FJteCy<7QDI z0I=iit#9j#)6@gh-N)=986SY=rVYxi+RbTar(S(&8Qboe*XHqAzH z5gphT9GckpPQKLLlH?PBB&MrO)9A_f|E&f5?$5vKDaq3F_||!&#SApQ5gC_&VwsPu zcC$ye`0pJLx9-N?HuIa@MYerE47;w{s69P){k2o3#?rwas`pe(x_*x< zaV+ya!T9+DW;d~xi`?I@%umIk;Tj5R<9*sc+UN=@IxJTZ zA=edbw)3s!PtP)>qnbqQeUCVoKWdSFTY0Jvj(_0FymT-%hd~a z0BQs}fLxr0Xk#3Nh4mAf%O9|I8kBYSOqKp<84Hj@$e0AIjmX4*UgRm8v<(oiNjB^> ztHnEmD3V>DcV|PP9xvJK{k6dU?}mZ&HB&dgau&4$sdHY`-7NMw$Ig-uslM%3aI>?t zDIUw9VwhWXSwJ5P>xwUh4$)EOfUkG*aAh2mqeb>OoA!5j{$T<v z^-s^8^$7PqAfjrqbOb0sVUJg6_`Yqbi6zQB))tPa&Xx;f-SLo?Y4fP^8_Hcy9W%~h zD-!1{*M?pncNsIMX#mv(YH0J@JdyyD)OKNe|8)q6w|)R9+T(^Iy-Y8=Fn?ZTrMTU! zX1vh2BsG>G?obHuGo=3fUf`Jy=WDk_Q_RqBZc>#uA(11}f;@ap@JxPTp6R z*CdMcK_4c0blRPQ(8$RAtcZR9bp#gs3eolD1`r+(^cU@1I{d+v2A7PyO6&}!mrV5R z1smlR$HqP8P9TC9&2YL-QY;cv_Xrv@7_#;W_z_i_Ca%mu^NYgd%ui7bY5%8td_Q~$OD`> zb64)8sbSUp{1DxCMRcU(<8Mv?N2C|u4}`r$!lZ|}#gta1{_de4S^l^{8FCMW#Rz(j zqslqDu}7KQR@!@IXROzdWxgp7^vm~)p{9=_s%7&{BcZK2ZMn|nG=BTAZjMB30b27I zE#-k;g(4(V5QF?MM-GxQ=k-rJu1;J5-09%r{S|w7web<4L|wMSL7vCD0q0Q#pM&u( ze()1vT|+f`U*88Ep~=}TDKCrxdkV8BMqcmjUiKEb>WF}~QHv~XE=&P1(+p2IiU5`i zR5j8{II9OO(PaX{`jd8tNK*2GUw7C~mRqeBl;<10jWV6ZTDQ_|$O_Kl?y~VV zm5x@v^m2fIiKvn)8H|Gx(VUJlN(Af(Ynwe*{0_+@v(A?GqE6W)Enn2_c9NDW6hsl~ z*2Zw|x`<+r=bpmkuKm%4C3^+1!l?kGR9PYSg`&gIbc0d=y*u7Lk568xANGJvDQTR~ z?{Zq6D>pBuUNr4m(v`xp>abi^)+_@N07D{zOj|HXEAu{8=gku&0#3zQ4k?S2X!h2b zu3`1kF0Mn+KJ;h5A8=a6sp|s=G`&o+H5C-XR4sz!$}*ks`>E1ZbaVs!6BOQnt!p0? zh;IS}D2P<^WvGY>!2>(^y{nCOl$sa8`pop-sfTl`t3<-;Rp`IualKRhEW_JSQ$@=@ zzn{Sd!#tbUrcE6=%WcT4`@YC+C}y|h&wKQ87mq00Qj=<1Y5l2=rz>}~iR)nYb~}ND zzR^JSHIaLw<=kl(ezF%j!#rLNAkhKyEQp;+_^0*~sIWt7Z0~u2_JGQ2(?xd(jV|V$ zXEZ^vag6F~{P}?6$Eq__-*V-mBPoPh`h>Jh ziKNLaYoZ42^^s5i5gqslgsfSA1bdNzqm&*Lv^Bbd(!~HFU`FU?(O^B&|3f@~8hlp6 zV3v&jlz2tzAe3j(?}81mqFoB!CI|aqM;36Uqa%+6={zB7HM$%Eg+{IS@-D~E=?s_^ zAQ3VfpbtcBui%$y@AbL-~zvhri?DkPsJ6wyC!#{%C;SP&AyB@y}?*>2&{`i7ut zPFzj%4Q%CS5MogU1G`!-2vyaYm!KtabHCa&oVazFqVrG2>rK1=fOj{Y6Ufw#eiV#Q zPANep!5=QP68Lv8!)u06(YM^VpZpxwOPr~X1cbPsm(l&WJuqW|S&BEkyMf z44i%C7}T&^V+UT=#Jg-;(>D7`E2)nFp^NE3dsO9hLH%>GYI??B)~AiH<3}ufrNA14 zmPhfMD&d6uH6FoJcK$ltiYB$(hX0JHH|aj2h%MvLkSAn$Pm=UIOICo*QbLqV9%ttd zzpMqI5S2>t1WC)fHjnqw*w^F}#Sz;W?VsNb+7a*XTeOgB^VM56P{Smww@2Qd$V!AzP7pXy{S;h`*IrcT>2qAX`m zT{WZBa;G`N^IU7s!RDi@PgS_OKz;As-%={hie-y$VINv}W3fuIv$K1oe3+#57*Qgy zr55hGnAkUpE>C~rjC9Fsg#=Fh;Lww9E~?OzooqxZ#p z*|$z%kS0Q{DI#OY-?|zO4w29QgE`z1(Mswga~CM}qi^x`gpQ>;&D$jamoj`K>5#onP#IJGo8Q2b8-x$<_nXd77ookF<*k-uOv1)ts+CXKPg*w zbcN_onAKjP=$jp#j&$Z0NeqF+NMA~?F}hhPTE$pRf_6yVL3Fz}PSo6x07(ktz^^UEH3(mxPEy~dfpgrWGU&n?y8cUp-5x@sXZpO9cByC)@w2L~&PAIQzsWOCW4~?8 z0b$uF%iV_VWN0)V!5HYzSNV3nsn1iDvT*l1nfO9!NX`chO}_$YcNaH&cEu21xcroy zv0YpLH2eI#D17!Tx9ewkcyzoBeAlk)d9#&ke1RmU)l#I>Jo8Fg&;&S3n7jv}s?%AC+5nDDpG-wX{r)b|bfT^Zgp(inr}}I5&oP2? zMfOj5OTgiUO7j2MAw6*8QTjU_0ZSzjitK!O0+H^CP_2J5A{-Z|qf@beJIw#@~-`6-kyu- zIlUbqLe=+8i;X&3zIhP{D?~|wUIomARrNiBn~92maLoheF-Uajn9T=+GQa34E1`6* zo1)~H3yepht&?pmlsD4-i%EedcL%psXy|k24ZBcN}IPb1pKUCzYgm%yRwjjId)rriH?l)sIaxMS!nSnBudHhXtZ1( z;~sf}wi0eGD=M0G5cUG$0?;9$ZIXXhem=93$UNm1qt6pA15v2lM){&?AN+^t)*wWr z=cMfAD<>1|DuaTQ{%I6IwPNVsj#7UU9$xh|IT`%>WgU)z3Phag*)tC0_%zO!)+ z&A9mZh4|j+^!ongjV1?4U#+>q;}6#9Du!uk=@KGg(cxKwt}jCSW2CVkC<4Nl0S_>C z{ukJURX3%`qPn`eru=Rv`lRKFh`U4(A@?Ru8p#Chw|a~prPYhHQ0ByFs!*2{<^0Xf zq~U@(ostLl2|iTB2AWno*zvQO!YEvlIa^-?wLPv2yJZkx&G>|dfP75cXD(9*0V?X- zfDP5{&uK6t_l-ndV>Sbso%tG{>cxe_92r)a2hIU=e1Woo&&K1vH*ZjCFVW|<_R?qj zVAIn}A8}LlTJa$PFh244n(bY~2n2#ztOVYl%y0-@uf81@&mlvGcE?B~kGrWsU+Ld&T(gFYWuG-W((9m-8R7b8ryR4r=tb zKb2jqCE}%MyUJ{~hufhMw7brCI^<*n0~MWg_4TJFCl@T!Q?^-|#vB~%;?#{C9Wx~j z&N0!bD?Gx!bPW@?_8dav=9WMf!~CFz89-0S?P54>ZY~SZyxyIhO!)r&7ceo?l$itF z)A}4dPncuXfB(9-_L)2^GWr1#Q9KLkXGj{gwDSd7q)CP8g0ur5V?Di*Y?^=R^n^#V z_1u@9_w5JqvN)SLhq{b~h5mj!%iFJrz+8J8u5ZFy*f##aXv@@H2M_7V;fjJltH5RR zb8O%@g5~?)l-hi+zK4_kUi~z@a%Fr7~GTwv3X}VQFFV261u^c!!0Uq5P#ih;;Hj@{-wN4Y1^78Ua=h24PqkVEe z5b7Z8fX|#i0mV_#GHon?A)&=pZQO73bA}?gZ&V2SYBgzy&RvO=27Q`ygLj6;_=>*U z3=9hWV6gZjOL8sB&}zT!)=9VT7}Zj6NbvW9Ja)|x<#ch(k&2;s3tCP;w4}I1`^5&l zga{vBN##vaW4?oo`P?M1vNR80xvpe1IN?yRa+K?30~&906AKGyf_vN5068J=?OVMM zm%rYqk@fMgmKGN$eRfBE(+&wr@&wn`x3qA52#<&oB`>&(civ$m$S&8?FLP|M&ZCxk zaKP)Mi&a)t930?raW*p2@O?Hfb~o@6A;Qc1#QfOCGAo%ao(0rqTRpoFIWpx}7qG>R zQLu>&Z}huC5c{6Yu3xRv3pvB)yI)*Vp>_WPO>1NGF3b^!A+058`j3b3szd;tG|`F6 zD=sb$KSUy|-tj`CQNnUJf&OY+wzkPJ?E9NVg23O%(|Kt2AN5FNyyY~E8bFo2_OW(r zThvD=RGAJuDpkO#Vb#8zlJx58%5rj7nwg~~SaLKcCxfAA8YuI^U|z664?!K+O5#XE6SXgUi)TfZwsP`i!gWmstO( zua2;=P$P*-QOj?dj3+eP)agUzmt8Cd;Ic$8QB%kdRh2hLVmpJu%{nO4D@_$gN7pxf zcOuE`1gQY;2}?C7!LVE&LA*e0=RI`#du7iQzB&jY<{6;>N4?;>E_s)ceB2 zu~-l)yR=hb$jUwR4g=&w@qG)UGf#MEg@lZWPKu^% z%*@S!_gn9hcM9(BFD9Ke_U|*0f2$t*5S7DHZDHDKVlosZpQ~)Q@wvo3G`nF&FZD&= z`5H?V(9)Tk`>eCGb6rTqq{q$es7V=W(VrNX@raI$jF{rd(Mo?Yd*iU1Z0bqBeFdkN z$xCb})niIZ5*kK8LY1Coa(enP+2cm+^WEnreG?j*H*ehxxbmml`_SWE91a^1q%qU{`$YLZ#pYC1 zCIgD8;e(ml!Q1_x%DT94F&ZyF^4g~36e z*}XTSA5k!whRzSNT#^CEgz{tcDB7QAMpi!g^aJViJ23W_b#rXsUX9tI88VE5<{r80x6zl|H>U4d!rq+dX=pqsgoa;QysE%jg zig?*~7B5qv?N4G(i>GBE&3!^6jMncp+d7~oAK}A&+ z=wCiKI!UCToSd4@9PC3JjMZG)KYMCoBKV2mMo7{ona@W+@4XQ$&v>n$0KxP^8~jAS zzJzB;JRP=8r&0Klm6o1cuRCdCEVAy-F151Ja~D;S9(*S1a}pog>Tl(v>vWBj-nrSb zaBx>>!+KjhvraCrb8VHS4Yc+^arNww6uEr5JB)5aFE$=+HX-}-UJLp$%NQpnYhY$` zN@S9ba=C-rr-Br*1MJieZtxFGhF|EDG1q&oc>avm0oT`s75$0^Crbm57cW>*}tsN5U^9=7TepcQjzxLK4WM+Cq$Fp z%!{Z1_GZ8$;$57VGKfZcVX+ygA{0E`OG`|Rjn6dpI7t(4Q6#1g4#9Oc2RShoKg;QB zobpw=Eu@R^-S;_OG>Up2eSx^X`cfvZ>=1Pc8&-8@FeHB2?1lVzn^YkuC+8c-3;a+g z16{D3E6CgXEb!{$_ir;y1umPcjjzERWsiY2A&p?q7n&scO5|?)=IuH%V!u%cro^Sh6;Vp%g@XEoy4tcOslK^5?ewkqQ^;Q5*8k=e`4{{%=_)c zy8{b-&*ywXLaiQfvTWPEW$1oJX|B}erU*a`LAhyZ{dCM?ADyx~_S9}&-?VU^ZF!@` zw(x}5>maYh57x%uf`N^ik_MI{pnpEP=%L6b}7s3bWk&Rl6IGbp<%cpad5?qdSj+q#+@2vO>*DQDW{dVCc07lsF4>Lzx#=Q zG&YK9>z0c>5M2ei-1w*i}VOj!NYF=;w0bkG?a_egzA{FK_kszUE==g?_JENm-{1 zO1H$W&_H<^$wS9&-& zl(y8o490nA-9bc?B5F!2H;zp^HaKj%nXUK}&8jctGj&{ZRWZi5lomQWs~@2s6xJz5 zWLN%XXx++sYe4dz4GG4_=YZD>Et+bGLk&@TgxuTv^qe$0P{M9S^0cBG5qqaX2r`X4w1J+{=a1X>kD~Jo%*w}e8(+7 zS4A23<}vZhC)HT5`K1<1(h&qM=xngMB}N zqE2>zZ0y(95L3Q}7m%O}ZB`CL;Y4?9ZboSuLs6%$=9jL2YXOS0 zq2lEoU^eDRZtG}AhlPp$4!gXxkJTz2Bf7{AA*wmouQ-8rmNbro1YH-Cj#oy8oos<>% zWsSQNW9X!}Cqr+3JDd+*A06G>qp_oVL4fxVwgWy1_HSwmvv~#zA4QQE_P-u^{ejb8 ztJ)f-+IEP`y#$lNxfkWvJ+wAkukG;pF(YIHFTkLo+y!;kAjZkb$Suq*By^`rD!8ob zw6&pk(d^}MLJn&krC-W!mkA@mni1gt1bD0nC zpm$NS+$ze-^71bknVEmT^FBlEbyiloj#W%(Of(!kQV`X&Z+?)1=O&lyZEeq?e(%%4 z;~1$^R-ShjJG)4$VBzEYe8%P~HicJfE_akw4e|>LvOii{eP1)RSyLdS{o0)JI5;E( zvDk|Li9Ck_l36|6)z#%Xq)$lGZib?1yK{>yz6Foj_Jv{CU;*c7VKm&#$w`MG^6k`_ zMnPt1DTH5{+HK;=x@tKYrYeWE1NPZbnISk@-t6 zXx5lt)ajZ?JXIT5C9SEyVIz%)-rvx66sW?*B^LSZ#B@m`{$ro0BI_&OPvYu_4^?VT z?;QpAS^Pc(6?o<7lH!}R9n?cOI5^zT3pzSJIbU^(NME+gSZ3v*g7Nv5LFgCBDj#>#qU-*4Z%Wpr^dR}YcBsX}x;7DTkf18VhI>n3kIu#~sC#V}FA zqPn`=Pdo1|-k$y-y37$_7ETh(Ph{8On90HBDT=xLtYn5zdgJ;K0&4Kl#5CfQV`QU< ziQz!FAMt}V{<{oh?^ck4GW3&bb!*P2WakA3Vh&MPfo3o5j(E$OvM>D~#I-}8+(mE4 z6|S6RdWEIpt$?r5*9#e!Jlo9kxhY%It7e`&aT4nL#CGS?BG@dS(3E{# z#KCSY9A%{a>htHfWSOAi*4*lHEUvDI0RK3UuMU5IspnQ9;zR^pvUAkj+rSOiea7^J zi*wMcIN$|NmXz0f4TDs?KwM`+#;2ydj8>rUj4ZB06mbW8m`Hyy2XoDVRXM!La+=N8 zH60@|UaN7uel9A%5Gg8U72YSc@xT2ab|;Oq?F35l$^>bAB9?2-cI zgsv!%7A-sRXZTdDQ@NP9I5Ww28u131_E>^hKj2XG#(yb#WZ)5fkiCLPPEP#h=rC)< z4HW^FF$eL*h{rKowNJ-YU!mHP@Bt^>90Rkj$b2L_+1G75 z0pI3g?q8pXv|wEWy7IK19&&OMv7LAfj&Jzyi;Fj{XDig`EoHpJHEq%o+R@{4@GGBu z6e}O|=1{e=#%!7HR@TjB4P(t7C;F_u2VB1cxR}^wiQ8_aJ zrFY)I*)fPJ0=@l6v^O8w`?V&CyKl-ND=f_A^7#08dU6W?G2#2hyZYTc4W!^YF_F=qNjrBsM7ib~Og1-5&GdpzdbV5`QnswhNlL>xbSsYdwRA8);7q=F{88CP z??ayXA}?QI^5QIa+@+Y=`Qx^5I`Lmc{m7qAJ`XAv{+gKjp2$O4W%UhaQobS4n;?bd zcG6ZJ4+qEU=iRv`ryi8fdnDVzb5eW_Vdq)K7@M5H+WLBHOUv+4DuX#Vz3*G4B<6zc z0F|2=G37%ru!yiwu6^#@81=e|LX2s=%z6lQ@biyJNKhb8mTGAq-LbE$g@SdmUgFtL zIC2X05DZf`z8WG_IOmSl{Z?9Y){)1qOD~(@>^AO(>3>`q@_77-z(m_C!d=bV5AET* zU2arS3jT+D>=5gl3N7)_yT5ph?g+iATY4W_17lKeO`!JH5cDQsdZsJsk5Bv-zb#AR z1+l%H%k6dOWnP8!Nx0hT7KiD1aXHbZh4q#g^Lr`u0(&zDVnHAC#p|;2thTQ1%d@nm zpFe&fLJwX2zQ&DwZa?@5eoUyqCqVd6!ADr8kjf}DWQ>GkfSoO*&tX=+KsoLHF9u?i zWm;H)TY;gPGenYw3yJ6+lJ9xI8sAEMyOO<$kv+bJ4sdc=`wbf|FR!*9ZWO01|9XLJ z4oy~rh;x||)w5^P(gGkuj1b%inU9mk5mP8TQqtt6U3o$Htl>n&saWRD#)*|&P|9-{ z3^rn|t)M`?ULafblp;UOhJThsDxTp++RfLm9*TV=4$2KpHn(UrBX(Q6gPHDP6>Lb! zWyz;BX)$7g^xg{}ivQM8_*&7Rjs9u$MtFPb_vKC_FQ^{zc$U%*^ZwE>6)`1cdk=HU zCsY`7{F1bYS2e%DMm!TN-|EGS!_23mv+sDnh0{s-e;w(p9Xg}bVJ@rP(C;7N_%Z98 zcOZ92L11HJH$7EwGfCGp;1$KL%V$Q$nPi6L0GRRbjN#$(uIEC7A8ILEjkU>tAbjvk z%b-v9-s8wr^+r5}#C?)jXer7_=Fv3G{3e?kxM}Vq zZ`JOu)7@88jyQnv$BRJGS(~WH4T={a2JbMJEp>M`t(0g6}m@0bue zt?gm(fdq@u_DR%n!ny^Wkiw`s(ua+dA zS8(AZutbunlS|6`E5f;hM%{kS4c}hP^2h?6Ua8FuB?3XfE?fwy#+~G-{?^#|XsSYT z=&sb=&(9w>>>4a}mNn&~6Jc@phy0m^)NAX;YY~>7touf7 zd*c>WG4x^dVc}dI_zx6h%u1g5P{|U{jWMZ@eTHD?bYE433Z9)$EW5a4;ilJ5)TAPY zvAOhD2|G_kc=mTHz$ew=h^#*z3s_=*tE_!wUoGk<9m8Y21YQ) zOpT3=#l(WjW4;zdMTcQ>K=_9_sutcbe0WhWYZ9RyRgrh_hhl+OYTc=Sd*jm#-U-Od zBYCZ#ot>S5I=XMFi;XqeHL<5)w$w4Mtx-67_%$F7y60Ih-Jn5P@vb5j+<80jd#Bu} zb^Kv%y|z~)n*77eI&(3Sg>jPK$bhJolf%hyQ@?nq{Kv_h!{})R{j&Z%r+xFpM6*~| zo#7BK*XHbc#u@h8MaSPqzqf;Kr6v7Vy-cT_pwI}c#SdpTgMn3L@GAN1`Pms+D%3JN zlxS$lDwulE4hR0pA~u9PYee zG0vU8Au_+af$CiNZDgJsd{qwKiy*#&dw&AI{nhAt7Wc)k79?fG_Y|Cssaho8g5BPe z?C;XJs_W$W7wSoPijo&@vd{)k448NC5iJ4(1S^DDNmqwMws z?7|pmki>Tk^)E>VTh8aZvlI>thp>C&Z+JvvhLlhjutdv%0f@iLqj;I0BnOQ)B-2sy z9+|_QT2ew{e4;Y+I~`;#Cy-!Wa(mzC7+?tyNUvhOAIO}~W^^2Hb6xi)(JdCO9c=RX zJXL5M2Dv^qR{Pw&DR{?vgwL=n_V61mywkXtAv0>u@uB@zrK6!8cd7j) z4T{J@DAJI3#}cM@@Bv8@B4jJcF-SJ*RNjPFel;;Zje)H<0*dSL&p=}^X8sn6*yLo- zO#wGy3_?N)T@wV?f)^eip5C_x( zvO0dUUfwOBGl`ww(5kz~MVA1K)k@QZ>#5vN!mDc;KSTfUd(K^9jrrhI#7^@Ec?K-3 zFOJsZ4>a|k(Ed+=?u1dDd58@T4KnKM+Le#LMKO{Txm6g&b2U{o1euGf?fU+$c4#g` zHJ0J0q`j80G*z?VFS#-#?)!U?z`C8u<9kZILoM1zrics$1s&|R!6q$p8WGE=UnVkJ zR$3{^|I?1!?PQ$iTm=ppeh5`uo*?ST3IgWA(PiBdSBjq_20u5>=^;@Qx@dtY^C0;l z*A0>k^~=tp(5sQh>PvDm<}Kyb;!gff2A4~9#^OslR?SOCo7YisDm;guto^erW zW_7>IapW`|-(#549bY5@!N<6mSJ-YA-EDtp{fE~ZCgvD>w&h+#Tsb$G1`|o7F%B1! z+!jlMot?m{rhb$i)g^y*^LqA!3a9Ygq9q*ki-C!Wv3hb6a&;A*W|uKDU$AiwJ z^N$C87Pb=IX!PG?^knYji#9(xPu}S4A=4aqX9P_@i8VRkZ z#<#s~B!b^s%J`%jMm+@8Ios3SoFLHvdT2~6ffRm(ESPEW$qqoF6B!Sz zr4$gb(bz}2D%WjT!7$UntuM@LMOJ}*2-pzYEVlwu0B8uDvge)sGJ$s2>y$5aJ#NP; zr2G~`W8S=ScuR(dwXw4=UtvxWU* zwse6#gmdiNlQ~M+)wW>5+h}46(PRP5bcgm{V{tuLlct)I=|G^r-(tfnmHB+MoBxq- z;cjw=$G_!qdT@YuEGvg;ef$xNHg+7xEbaKWP=RA!U3%y?zV{bzrU}5(5 z^<^Px8*SguXNHfs0W)B|N0eOEDUq!XxRp<@_zym14q|z9xn8qV+>yfMoVV@&CCeZsrj9EDvrbwXcXsU90dg9t9Q=-z==Josx z%?cISJ5)7Ru8hWuCDjvu+h~boB34jZwZr( ztBP_fu@cSX($a+DNsA}Yw|-mzJcEJ$LHQqC=E7^UU=1c1?PdT=-!#aV9gd~b1hHXZ z^la6=wYIdivq0s@?2=~FV@TM{no0-7FfwtOTexEmQ5!QVazT9HrnwLF#9Wn z)1Qp3AGI`f>1pYIw=dOwpWQDjxAq~iQ@SV1M{FS^J6M*2w{`-7if z`97IOweHJpu^<^#P2_mwqR=fd+3WAf#8W(`ZW`3) z6QK2w%U|+x55)Vu1MvCYhk8R?Nhx6leiz3LA&p`(8CNakv@nQHRVO#CgT~rdWseFX z&*7_e#%2@bK#4>dhR9^)W(%r07S5)Hl%Kfy7v)`s=WbH&dtxQU!L` zhIn;Rv#mX^q9=cB&onkZZdqmb)yl|h@nq&-#~@8sHr8Iix5FdeFGH9mGJFEyVfqr| z?KQbSa}Jg_;DF%Jgu&Ra_!xmv)mxY0Xl*gH7(c2+Wc18YOZ?s4LbHpNiHc7r5$JM? zP&Z^}Wo`UC1MG-OlM81KeY#zx+s|HdauW<|UO$i0hASIw6}#0h5+*>%;RodHEuB9i z8h7iRoI2#vzo5-3+n~L@KtsK}Kr4PzkU{gZDVzOml~{r&W{VOev0$!Si)G7J{Lf1T9n;H3ee(kN z?YkwjQJD8cOH`wxw#{eGG0evUwDtxh#vd*psXJh;aE?CeYD>|>)mX$53Z#f7uIsL|&mRby{ zJ&~*SaJT&BxBwahbFcoc_rmwZOKAg0q%&u_h)#wthx_{>;c0anahTf6hWSh#w=1`V zr9m)J!qT+_suG^s7A4Uy+X~y=QA1*c^{e@Jl~MnxYdikNNj`crfug~W^M0(oSS_f= zZG*ThWFE4O%R1W9a5taVxNJb-ti0@@Q9nV?+-k7itg*t|6{Y1^Y2y8YS#2nBfqO~y zs#KJecHc(Wo~#Vf+q^u@1SZDH$`LQ^{LhFtG5+`_NZr%4k|tD^znC-93wEY!UXmhH zcD}_mM_l89j}Y@mdR%e^RH8rWRZIQkL}_%ibrA9Hc;35vNH0{~j_T-W?Z~WTnsZtc z$E%U`z@9_@D04S3fa)>lEv6l8$(r_Ob~crvgy$y_rHxn?`4i4oooi0PYLwVIw__l2 zLycfyx}DFe&Z9f0kPtY+;9Ysqy!$2V0=5yEbE+7;lMs2yL0a%lNw|yu>!;2D1v7sT z5s`*`S0L}$9f=sbN4ldI;Z1R z*8!hI)ZvxE&ZqvB43~mdP_5O;0}KC1=fZu6DB{O;&Xn(YHG0k{)9~0xt-{jlcD<0R z%hluKqtH_V^4rmn(Cbdh`+>lP$71KhMyK7TKL6N57dY#-f!$$c0&4xm9wtOm;wjPo zs7Oj`v<5RMjAlkO<|)&JEhh5Tc_7Ez_?xq{^RSaJpvkI1bpIWwM6AiVmHE7Y)&dl&X0 z#V6P~R-5Y?Xz4Y%A~=BhqyKdQQp>5+{pt(6^?zZMXy!`2N`s4|1_ku;rMl%~)ufgd zZjV4MO-*cELbG^VU1i;ht~B(a0I&J1C4!IP=eu01+82 zQnSY=xUsm&gj6-QI5)rE_npIf!=*`+jZ8p}a8+V0{URdh@Xr09{2N9_Mgqgd3JP&e zwTD(VyO;Z%s~|b;9;|8a<>m10?fCd9y#g<_p8bHUOdI*hU>qJ~Uho~xocEUh;#F^} z(_w|va|eWa`5l$eQ|lwf`w*a`WbQ5gYIpF7mxaY)aZ)-6n}rb2d6I>ms`->R&L7L0 zct;?WP&zm?wbH&pKo}=beS|{jvgDL+zlkSZV#lGLsucnE-N00l+$i=2ngahMd|+T;xou~dyq>!H z{c|Xx_s(04-%e=^5wG{Ru2jN5FMDAs<0`~XCnslkBd43~#VsYwyel8%Q1i*y$RK*j z{eGntW-Yh!FizW-GGvS?v5l*5JA@(=Y~_#35MzrYrTKWd7L$!8sb7=!olD(~~o^TdsY{e$H->CR*y&@b%rlhr_3*VeC!I;}k*ZT3Z_bHR z`jrHNaW)Q+Ga$mn#k@i=@VDa{-qM-dde^{r&Kr7=X2h#8f0&%e7*$b@zd~bzZ%|!a zNoXWo>sDa@(7=mLuES~9_HfR3Rs9<9QH`xCwL!B54`yC@i!8^G*nWQ$Aw&?K09-jh443#x!>J`cpcxQ)>jvYRGNhq@ddn5qB7kwQ&W#JPw9_LxGf@eYC(Am zB>7iod`)({`3P8ma*x;X$Z$WJK>nit^pf~=MGaPnLnOl;<@m}cnIV};63UIB8v+8+ zPx`^EG3*UQ zHegt>Zlv3T{t^tMI0UI9r0~vZzl$jOfB!{MlL{bim)s>$Fj3>*!?GGa8`LcC-!%cB^+qgz780IJWj9hlEygw+ya|=04;NIXL*s z`wVXz0qrDApd>j^EIOpNc2ID=)6J}{$KQRt+yne;udbAyUPHF`Q}>UKu)+F9mCQrR z^8SorZ4P@-!WKpZ=W$42zLervf+>L)w4xj=1NSRLJ9lO^ZB`h;+ihfE)2`s+mTvh7 zfv0QI?snE+5*wGD9G6WArfV42sXUVx0@W5a6l%Vg&(5anXv>Dd#$KbMZYLqBg%AVH zwe|DcNH{ot0i8Ef{N9~>%1`EBXN7!M$Ho%`Iy*;3r1;K ziG&{>xb5Z*dB%aZPyd}Gpq<}2;XbXl|C_DF?SYZ9()}w!JW)^uw!JJxmusgdxT{kc zinAc&vBc2Rv#6-aS0}gb)a(UAf%M>`Ly47W{LRTaIf#PQ`iGA$yd4E-iipeU~t zc3XM)qlHffK~>uQeY9sN{-uO%MR@mrNUj}3J8uvcqd}Q+F)4XNfegr!=m#Z3a(1@< zHzk@eizl;X)#1E6qa5qy4^_J58_niigApw)OAs&jHN+&Gln2o!l5;~37ka)yBT{2D z%j(jfxch^BBZwW+`zG#o#;PwZQwR}Ex!Jh5sND8Fr6(Kza*V4C4i4hsW{mw>W2+fP z_X_wLxW9d-m&7NZ$$xewh_tf$p{%O5G))K6YBsmH+0NNn+2c8vjr2r=-6_LK9%o=i7X0j`7}8$efh_nXs+V{X8Yi#2E)9%G?&Oil0&csEFO=3en{o z{JrLAbaNI7xiM9Rg}plA_t5_7TA8{ySx8{N2Y3Igj1FbXy7H?*;KS}^9tM1Z;YBl_ zvW^E7uBNsX+@PTD>-4B4T$6vb@4#;^79N@)wHy<9De&)~srvl+R=VU|B~~^L?KPY~+!Tg3qEL_(V>o+jqD@&oZ=hq4=pk zj-oVwf3#=%62{p!8$}l>)8LYcPp@dC@bsS4!e}h$z}Q(=SGUc+w5+X3K5HOCp(9=) zfdqsYoQz`yUzZx{8g|k%*E~ezN5qtCkR#wUIgtkQ&cW3<-ddx#s=fMt%>+KV-lrS? zVP*9<*Q5LpD`NsJD_WO`Q&;G$jy!Q@eOAY9w}>>Aom0>kAY8gg*5XfSWs^f>YL2iQ zl9Sb6EuF1T=hB=+`}%shK6V16cSOV=pUEj5j78zo!$!2?kkBkK^uYviI$FUSAQ1+;WnI;$&teC^bXFcJG}!4cPJ z-0oQJ`YgpsyNl_l9x#|30ylp~!PSPc&(f6Q4vqxN*@0PA=jS6yv|?)WYM7V6rXp*u zp=NM1-U{#j;+Q49AyQOSw2daltiWJZc>LWaK|ZnJ9IbdVvK+T&Pu?*N9?4VBOA@+@ z2An@Yk@I=+@SvhPiyv`bUQlAVJwUKEPo;y+Pg*sA*n8lrJsJR;IdcP|uK)&k3`Svw z?q7n%;c^GJ$R;>HKku`@;__au0y|M%F@xfdbbk_-VBClMB+jf_S;OIMwM$4wI2tut zERN^QRwL3K9A%Q78Y>j7yScy-+e600>6HMni8Nl)Lo!vMA}hV@^4?3)NE@w0$W*12 zjs+9kwHw!Xc;8U;~X+p_I&)57c3 zr0_F~sp0opUA4Ew=NC+nkz1KQU4v6s%IX?5DNMm2k+@a7r zHyRGISvxXKVq@V!IE12(hGIQ@%~uX24~PhYTzy~j=@b}ugH(B5&d=}tha>DPmeNq^ zpGp#XP%*J{aHxo}QP)gP(J6<&JU#>NmghZZGMKYRwS2+*jUjh2G~Cod5HQIA&Lr@O z2>TLHvt6&Fc0jw^rM58W_euE|~p(?)h%rF|Z+{B&TAnMVxhC5FxnMWMXb zkmg}_)n#b2qtw}g9xN=`;2PZ2kYjcKu(f%|#hTf3>`LnTqjn|#1Ea%7vy%ApVgHHz zA}?`~g8=2Fgi-fP3=OQr@U&no$tX-t*K&KO(ArPtC)}g)mDS&;r>DPjed7O?Ss^1x z>CtcrO!o(%W51^`scnZoLF-kA70m3I;2i^Z3tMcioYp5m?)+&eXV+is7nBr=Kj9p| z@8XqP_X{d|uZSoHUSMNmQ|VN<^HW_9%0S^nGPW=Z*?77e zXt;5a{rgwo4{0jwZLXP>w6v~u#jMcV7POEm(d&$pkQpR^+b~_0i}_pyW8rL*?L-ac z_XYsjR74bwP8X%l4#BF(Quc;mZTje@tin`7qZ_lx=XnI+Duve=t*m}r_5IHY0yMFJ z2d>q#mU-8{`PS_3FDwBZgMvp``%$(chW?66`XY-HrB_Nw&Q@;{#r9P{rS z*==}SqS*D1<^`U>S2do1k&==#?;;~(i&%EmE@CM7|D5&TUyaG)V`GP{S63gHH&I9b ze+~#B{)7!@_2s{3_<#LIomNy#_@6KE|NM`jpCJM1|F0web9IoyknGz4lQd(2fT$MY z514)C=Fo4bfOTwp8?}R9P;m0ompR#Q-(cY2;o--T0i#|>aPUaXxYpsp;hj%POF)io zJa9G`xX0AShK7cgmf`=NbRh_^*Z|hj0bvU=G&HpFoZl$X5fQulKt`OC(f9GYh3L?( zZ-$HA9XwTJ3U8%CCIe(`9*p-zes@*_aFxwia8_2IcY6TLgy7CWjGf4DGhsZ(`>-8M zN}tpH^ooUti>v-N+~wmHC6O`Xc;T*ht*f&$D{!wxr~tJgprvfkJ~Z&%SHo-o#D-HA>`*T% z|DGNss;>9TDj3B)QiaIx!bAZW_{41BwE6ek=O%+FI>vy7=VbuP;Jt@U$h7Ngb>17G zMH=Y#@p;pz)?n*aQrA{i)%@A}gGxb8;iX93VI+RX7#&C`1vmsIZ0Q_oYjv8frN4bc zF-m&(_XiYL?Yw?!XX|+8@WR&A#5%wnQv@ZYo#8MQ^ViPl0k+q(LJF9Gmd=XR+=Fwy z_Kn9Pu1iNz(cLNEXQw8{*n{N?5ntgAs_bWOCck4D1FekQgD>wlfA3QGJA5TPpC?Dp z%EnlLZ`=zZLS8&y7O13ZYAO{raW^}=%E!w)sNQEPJw7@vme<<)-PJZ46|(kfnvM&2 zoUfzWZRjEmOHaJ5f2($5gx>WJnlG-GrjcOp-ukLqx^}Ng#?1}TzkDg{c(x&>r9C-{ z6KxZ$E4x3htq&&VM90wKIy~4bL4vk;&?4=o5=Qx(?t(YB*6>}$!vlwjikz|{Bew_> zs2F`ZnAzD?HFTyHK38|R#$)C7Z@Rpu-Xq)6GVKRPPgVgpsZ}eZ+WXm6p^6+PKywot zA*4e$V}y&1t$?N^Ep>S6;^d?#mr~eT_I4Bz_@>=oP8oxnJKt=^b7J#+bf_5^cY^b_ zx2w(x#|l4xXG$`U$pYfe0Tdazg*p)&9K6ufl$VE^z2IUM9z-aN(r@$g&y>}72ZyUE zq4yDH%jne&AFqw~Xd$zYQjXGf%$>gPHwJZx3eL{#^)~p%rRCi{|Dyk*q_i?35>%MQ z^WS&j_WD@Ck5Zyep@$3n{&zeFdpG%JO~1P8X`acCgKXbeoH_F86EeaX;2Q|7iA~em zq*}S-f>}dCj;Z+oTA?H-zwAvaU*w?OE9^uIdH~sk@wK;Qq}%;_lsio#!g2(+_xIN# zGv82WrGQI)Ltf&HO>JiMerVq`@f9^qP0LK>cY3B@UBX6y(#Iy$kHGH$0{d@vSeVrR zEK^73kj%(ok&)iu1cjiWC04lip=#gR&CQGV*UQWAc2f`FvzNd?(Q!9-GmDtW$hs|4 ziGa@^paN~!gdzs=1-?nG@CmysG?)m&d0@c;OOwALoE4B5b>GA_0}q~(A|p3fK|ui- zIfftndZCcbO)>d2ZvIZnKHikd%El&&FUy+t{#>7f+O6MWf3=_TPV74|I_bUnvN1LW zAXeb}^@~lXi*;zEQzmM95DYRA5m%0&&%vhO6Wsv;pW8XN=Pfl;JFFG3G6?{}E>4?` z#Q1oAR$kAiKl?fFVv@-jOG~L)d~_a9T;RLSYoX5LZK0Jm7kH-b%iaiJXS})|5_~sz zaH#EgJ+lMf1TBwu44Sh3D*i=DMYZjq=nsf%&E~%YMz*WSV@pfmtyNNri;$54^+sn* z0JZjpU7en?Zoga$u-v^cP^5A4VAinec(>WD%~Hupv;O*3ls~=ZNXNoL!bV2MGs14( z7#$t$;^M}~fh`*rW(nklS63kx5GSUNj(@DPv9a-;le7_&RAO^dG856wBSjk#5Ru)S zUGt<(jExTt4iwchyBiu3vyze$6H`%gP;f9T3AtjTVwxM>rcGr<{80)YVN-U z5>HHwNCZ>$<7s_^fx>l%xk{CP0Kp+5(hN_9;zuihhGw@vm;RzgjkHjLhro31Jf*+2 zC4+jNjzt-pLx1f!QUNIRlZ2aVM>&hrt1FT`60`$YXN3l%0hFAK3^Y8nK%t(oNV)>5 zuVoEuR&ojoV^b4RVPS(gCwA=PQpd-@dc<>7HXV>_-#<9G(=;?V=#V{-KetxL%C@^3 z)iP3akgPT@q6aV>FuiyvSl$m_8*19x@#*oOX06R!F^gsaJQ@7b{cb)P_j?v1<(82RjJ#^&S8bzNQiMQ6FU3Qy3@+?=zV++B?CEgO@K%~JMIG{N@%$=^o#!1Pcg zqK=!%-IHCS=S%3k{p-3lyj(0~1e-`)Y}7qTW;g`yh?)~zzP%i2IXM;z%HQOn>5KdA zSDy?R*wsFs_m?J3{4g_i{KEA!IS>kp>0`*a`Wn;bN$T z2@G;QTW1^oEPS*R=hj(YQ}Z*$@9pnqWK^`!<1=)Vnzfv?JfK>$`C$iMR`B&LZ%p!l zb6)RQ(?tiEdBdxHQ*&XW=&&g9!2ar^CO9(f0v?(Q-`K6AKpviDK)AS*nVhV%kObFJ z`9ejN7n6Gt8XR(Pcql9(j)$OFGc+`4*VrUise4&D*7VsPI+N? zeBK~zijBkUb7h+*toc~(T2|ceuoP0d!i2;UQ>sHFI=x%NO$sg z@yB&GI>E1?wNE1>lc;`KX=$*?F(^f!5;|xBCvL|3jgW6A)F{sFWVPShMST2OfeEnV ziXwM*6>1KZO+WBI+vm-39Mf0 zl6!@tW29p%I2lz7UUz)RavLs=zGmC@?7IQ{)wJx6onOylxiCI-llb;mGt&zoS&8^> zH6gMi1Q9+7yHjo3_E&3E>0c0G$L4hZI7I5V-IoNCh-n8DN`KDT>7~LJ!SuiHonB&v z%dU>nthf+m@X(bD9>IKqw5(qY;!;yvyx$sB8+6vj0ZMiTa=`RX&Kc>R%$ApgdbIYoY)m>O%C zm9ZQ&?-BK)ngNy5hsa>I!Mhxlk5j~kf72GgZyEvrfe%N(TDp7{W7zxVp&UO^8JH=_9DFcH!RgJd_vECC}{Iuzwnr0JLH{Dj)2rhVsRA4 z0GM&JkJxz52Zx#(W0TG60L-@kq{ zF^;-zIxU*SbV|N216TzoCwphZHQBr2VpUf7%O2=y!ul82S0+O2mFZfH8IGl~$-s2a zK_trM-PL9_nEAMjJ?!ET0RzPLPaWLBpAbAfUoz!;4>;I(InAWM4JX})9vE^D5@ZW{ z*?O+r1ZU@)K~AskYqOWBZi~!Rb$WehC5Gw5=W+Z7`RT>e^P=U(-L%lh7!nQxLud1S zcolq3r@*ElEV(Q2skSY@*SmGV=7zoKS0`Xo6F*XF=b_07q*Hu+;N|7R5SF|B+$H60 zZob&n**@?^K^O7Qmv@2I?dq|nV1ilzR1W&K?*=nKI5Qf*vvX+R9>ybDkdO?Ng)K1A zxd&dG4@++kn};XWAtm1q$Pl0c`SV)`y${%OFj3`tiY7ABIJYMG9QT-+z<}GVW)%`j z=5Y=xGz9SDF(>1Z7obY0g3GD)ZX(@rNO&P(=`qK4{(PZFi9D}?1k7#*x~d^iE;GyX z6qK>oYDs^L1NPIj{#7hL+{K(M+}(Tm<1BjpII{>x1?VxK5K3#NnJGWV0u#**v$ZPK zAFogg`xAO2LSIx*g-J=%OEQ7!ClpPIaoIgtkya>VJg&FQewrnGz zchBV|%+m-!0+QzQu(Ezy{Aw*rPfiOS3=aN$XRHW92gwCd5TgJ#8nkgVG*BY5rC@2V zg}-8e5bO-9na)pJJkLvpZ6hP*aQo8R+XkexMTlB7k^~3gZ-fT{RaNJ)iW%-hh)e6r z3CRHdbgGQ0l%17!c3ulD0t};e-_JGM8_Y0Pwh<9|?SXi4$5G(o=kL8phW2?lTXuOq z4Y$AU>bwV0RxK|I{Y+454&VPIHeG9Gl_#`R=aG<#%E2ip$Z7VMz+y=^0w&HQoP-_e zd~@uLm@~=H@PkiIv+MslycA_yMS<>+-h?y#&>qd=2B2C7?DY7YYCYT23P*>o$@^MGq4l{OZ+#Gg(C2pDI%~&2Pk^7F ze(giJ;ZHjDHgwLUlq(P=Q7Ur~kmMP!%{?-d2TbuuAVR^FA>*@)fP zgX=w2S!JNbf^{FpAXIHsy&TS&L3HeTi-XfVQ&vWObaa#i9)d)HgH0hnVX-D>0#bIx zdzWuN_dc5I+RZ;7*CPE@2cW|?s0ZGf#ri`=V$aa)s0>8F1NggULW61K2505q%YE-H zcA|!zay%@F0J^kHIG}@B*tFORPCc@){Q)#cShKb;?gE$}d3rf&8pa(b5`e<0)@^5; z6m}XgadmMU!x~%%S@Zjz!kqedtYrdrwO*RE_{{$GXFy7CK4q|1B=cWO7eXBm&|nT& z8~)7nR;w+7s;Oz|>6z&K1slFQJ>8vXOP~a80-0Y0P-ltb7zgpWEtx$W9`4fyq#vDj zxb=0lIhTgROUY|ng=->=l0O;ftB;N~y4)H2eA(;U5NJcdnO&5-3HvADIS^#Ux63i13{Rx2Nz4Cxy{KczdJ$B1lz=Gi~pmM^D`T zYP#p`Qi~Z2@crL>n%o}5ILX^jzEKrn?hEpR#>DkIDJsI$xM{!QUZp#YKxXa&K&eaC zLTW;^cU%O(F`Tw8(3wBzp4A89cRT--BeJ?Q7wIqcvLp?O+cwwx6+%fIh<*1cC7r6Q z!GS^b^Ce0JQAEkgb>sjj?|0G%eKYRB`6)E(ImC3u&Sf7S8S(_fY`?FTHejOah`vDHjACH6e{*3z{i0MDCl+f!o@^JAy|HElaw%^l3(7e}QNIG`MxLxhTo)Q3$Q?EYE4(-EZJJ2LD9 zzv~d(skFx|JTR#7x)%~sM6jCV5kyKx)?$aw@}-sMqirJql`kjzn|(JEfmOMfmqZCt z_!(?ppC=5e>+16To9r?C5fXNrt>z#aALQ{|hd+?n1`j1(0*px$nQ(SVx1@=$bAjYly4RnTi*sAmgm z+{I$j7;#eBeHIn%1G%rTYEY%k(TM};8?Z+D?q_>lB%61&dhY)d_sJQNu0OPS8Gxq) zcd9qq(SMg$cK}F&Z%m32p5T-J16@)3Qy3ryKo#nE1!QEZ_~7y>Z(GlOMqB^L@M8EH;sztEBu=!aPa1R|1qCBws77p@BkkU*L97<68h-TgXl zUg6{lan`dal>42cLE>LGha?7~P|T=rgiL=qs5*lbT4SfgLren?r*|{LqM~-GsN=17 zakdSeUGNH{&>(9WVFPl_qOC;(ii*s(+l=G6F^dAKAGeWn&`{+lDKHULXbVKF!4Vj@lCW z&^#kw=z^{rV3B`6*6T(O*GnbgWsQc}_;N8}ye6e<8VrR&={`LL+Q7y<%4 zy>KBHXV*Tt--UXj=zi%=d!5@ouzxcJAX%9{-^}TJbCm205FHPXg%uKFPH9h*brlZf zm31BO!4g3xqx{54+QXC}r3$IHw|IQ^w>a1AvTo2S&ra%F4dPmh0z-zjgVImNQhOcZ zA{YWP77`L!k#p)aH^>Wde>a;FYHma-x@0)ZL_EOZr5h0_%D?iVk|BNMF6xS<%5E!p zPFSwfiUi;yfPCh=hvW!Ad3cB=EPwK6>O3;0W1Rx@#Bni_Cwl<68o?Ew1_7e>C$Tg_wQ|Ccp3h|%n;i|p;3E3%GNipmvb#;&&t4%DY zJW78XfQP0#E}qFSb&kKnT4$u_-%eS z3#J2lcC5GfPQ+5Bn6pZ@=8J4;iN3}t>^pg8q3BHJ{6w;n*GlB$my=sI@0O^}yh==q zQ_|MP|4TYN@epUMe6!oLjl5B{(M%S7YNuOi(K7r#@ImmklF92JYywKq7g#=-EeTQJ=Q@ z#A=l7jqAEE8i%j?IRr&tvz^(0Z(Zz;^<*>5twb<>d_*iaH%mfe5Ep5(=yN<6VaVXxKim&Dz#>nbYigCz<1e*1Q8#~{ z&2*7RokLerc91J>c|rsBQPO15R!Mq^#rVguEfnJVGK8Svf{CwTfkH=ee z)Ifc$t2*re9rky7OYdf$lI>EwEO*s~#F18|{ClDJe{M0?RUIsgkB_ec1RpuuAuRI0 zHvoU7ab?AY*SQMOR`%kKd8LH#XJbx{s^F6A8GCKWe%ZdhEryU5WtI$uOu0vD}UcP{;A-^YB=f zR#p??;9yL(01YYVhq{(O%DcBX3RY;YlI!}8NJ;VMhZU*mXl$-7GTnxqo>rXE-4KN< z@VGQemLP@S02wO+0s?EmWugmb>*~;>$RZYvRbQV*jssI$lV@w8=68;65`oV(3y+tN zfEd3#dT}R++5BdwbOM^@M+N3HW}K>l%-3}v2z?W!nmqsm(OU=n+5klbGBgo3>xLJq z18cfef8>ytd*6J0?j9W->#ufjZ~$;BE+&Ic$4WWQ`r`KT3>)T(o0}?DszMTDmOc;@%THmQmC& zkz#wC$ErDoxVS_sFROr!K~P+J`Zzq0!>L)b@3Z4EOtH}E$9`Z?IfKZ`Y|t62axV<|B+7a~PNO){`iq-A96wsJK@t{7M8BwA^4CXD=Q zywV-MMO^U=B?jdd`sE67OxXUwLdRqkD)^4Xu2bsN%T>8>UZvj|LUcvP4?$YuaevyX zQY>GOh;aL{>jM`pt8%TzFOt#UFc+#HKCU*|p-J!QY~HIs5P9F$N_yng_l1@^jPsaA7_0lUFh+YsrADX6Wn<#DjRqlX z|B;qbhfgyd;_(-RRvG7JqQ?8>q1=%fe5o!d^27bpxzu0DX1!8a6BqmT)2uJBV z{i$~MW1F68Z}Y0+y{G2bDC!IXNGn@-;jKBZ<6kL2m#&cu-wT5nd>#aY*8_%(jh78c z@EsrcVw8*5fl2M5h8zJZURs|ZFaH-A(-nS!07zqJk7%*vbb>DA12n;fHS*q~d zfFcf=!dVG#WDK5HGfz)LH!hzGB$3;nRDFf@qfN99k#pW^GuWV^Q@DW6Jak^GMBR-o zEsuGjgr?09Rdi$xr7(nvNy!x_7ML$QJq{jToqvE(xlXLHFdK;%{tk$Gc-6l%(66jJ zflP;mGP1LaV00V-nSw{2^}hNxU`9Vlm@s2&ZkYX}oTY7BlCvc}A^C_W?s+oh_g)_h z^^eEB+u1?{fe@)F@zF8&*sA@DeJ$KmrLvy^ntH$>B{^By^gPvQsO)?#)7s;i{?Q^F z4&Ggh@ef3TrKArfrA535Y2x2O!l73||$?@K^nVr#wMcfAYh4=31IBZzT) z=>eHr8U36-zAV$QUap8n0-Qhl;Za8ipP%S(?Ik35W1ga-o*X1eKMQm=ZJ?u~>T4?I zzS9L^+h%)2>Hot@^WqNu9=tr{iQ0K&Gt&3F&o?^Zg*tRqR9=#pzyvp+ zs3(AK8?7E5uNtZN51W2OzK_)k{O^SW`Ft!}Koe~uzn#urPZ}DAcYv()nO6YV$=wcS zZf;Ejjf;cv3@$t*g1YLlp!}!gX8uSb*9>eTE>T#CJV!5afFQdZ{^s0}*HFmKM<+8j z^z!`dLH$s*>&Cv>Hh`5Qr)7vyb^M1yb+;$*1=th?Sy*t0h`P;Fd|YjuWFolDot^3F zW}Bd@Dk_{EEG-QUQF2BnCs*iK@x|pe+@^}I9k~%zfEn6n%j+A!N zK&O^BuZLWFdvMoak(q^fNie`_n&|49nL&|~n%(pReS~m?xxe=7k$X%|jy$h2y&;m3 z6N97+mmz?@VpEfo(UFmWkXF@teWx5`XQTIaWg@9W%}5(mV%Itkw;VhSIsPuU|DF39 z=-_+Jc6EmGnP*uG1q%S2Iy@^q*Q^I8tjm{1hd_X;dxitS4Cq27Hd<#B8oWZ!*l)7O znKW;uW(^r&;2~%Oss;=IfO!mPU4t!nh=rM1#el}9c7=JV#ZR^wXlmxFej3RtAQ0#& z`Z<5&ykl2W&*u#gvUcHKQ2)nW(lh*LZtc&SV?@s8%7T)rCdjIv!$Dia&CS9BJAY1> z9!)s>KViGFke!nf5e?V?KpT2GekR`DnNoDUEDNIWo_GB;Gs3tTIxS5q%DNpbEps!= zpEUsDXXV}o<25KFYQnm*#i9PAt?_LUkj$Fs(tDE5F%EwO6*bJMawh_bZI0hI#R0+p ztZ2_KFA4y!eS4(zPKO@W+`Vh_h)Tu19x_qQ_}Tv8Hf@oQ5@$F0{(L!#=>2bu-|Ot= z`{sq_B^oLrVUf0XjHn~Wm$K?Xo1c4;(b4Htl(`=%DalpOmwfBgs;?v7Kerm(>RYKFQ1c#Y}{TjMm*FBj@IYCQfd;X^NQ(z~we7 zed<&sxiBsM6$R2^6*hWLe)D-j$a@<;$Bmb20At#ryjsIM$5KFH(1`M=HjTs{JirFC!0a|}C7uWA8tEiyR?(XM+UsJ{zm^vT-v~S!Y1-lUr z;xTsJXQ*sgSZoQ)aaZ1t^tzN}0-7o{^Lq|0W_kd*_;UuLHKOp@z+nGx z8X6&(Zg0u|i?_21%c^a=wR9-mUDDm%B@H6dph$N}cXtTV4bmmjk`mJ0A>G{_>&Ex} zR{ZPVS{uv54Lnqs^O^Im>l))6CI#16UqW-*A(O;|3JZaIcHIOS38lnA&JPIeuMTGe z3;dm8_cfYe>K?~dbKHJ2y~8VqWi?Bu_reve-?&+Nc(k%{4__tKL8#WiXhxXg2-WOr}+bIB`c zEz|`y!hndM&yxJ-qE{zaCCfX}^y0jyZ)GU{VtfL}Ok5b~+YxUud3U)l1qI|(g5PbT zQ`yOq$q=u5%86G;^|SVV)Ic`x>|X4q^ViOE9rgB|>yO$0?JA4$1098lY=0kcJ=b`5 zE-?k_->)tmwQMmRbjBhto6vsIMk8nh+8{-W&`n$hdtc?H=s5dA*tw7v6L}Mndd4e0O}d*qvePr~pln zar20>e&rLgIj-dG>E-1Lnf}HEBqBabi-70qa)5UeTj#Pw|0c!5L}B~(>C$E?ad=2u zXGBo+?Ip|@);lt7m1emgZW$>lLf$811N&hM@YffBrS>WJ(~mt~IOg-3xB@U2Z$z)1 zdz_S~w_q|icx)7FXm#$8;PN;errkFxlWj5Uy|j}Lr8|7ZcnL)6@UExo z{?h^d8LhTogn@e3o{mN!V~a^A?S0wXF7*x`om5(53DlFlr~ARYezjAIKe~d{ifQPr zx7iiYNI1-Dnhf-Oj?PL-3RXnS{eid+f*K4B33|GJ{!lBX<8jkF&%}%2D1=eO*gw## zrn8$x=C2~kMd45#n##m>h@mp_HX5;x^dQnJ#-V)Gg8fZta^?th7t47d9y%`A^3TNZ z#V-E!ds21vSMu}~5nKO?`kQkgr9n@gg`)?hUEkrrt>&JbM!)&}fv6Y^x$Ut$<15qw z<1@gb3-eHgtRA?GLT)gCTIMMIX|FIkXJ@SYpl}Yjb3%ev4c?*UgAyeAhEYsM$qTr+ zxE=?cMJp>r{y20rJf7~BVj_gnF=*ZOTwnS+PFVV73 zaF}bria%U_PA76@;cU6{W4lY$;-+*i{@eS|#IF=pHn!fJ(KXKbgR^2x@M7FQxYj?1 zey>Y(uHI6cZ_#tGzo92g)KlZRJ~GatrjLL@ZVJa?(tZC2?g{bF9FHg}p!dbb7Jn*V zEjBcq8w-w#zOx&27ybB{z^DzxF+Up{ZEC77i<`uLDVmy^N_HhEq;l&wyVdkM8dL&V z(vjy=qX*0ukZZ&(JzTox`-X&slwoQ2_sQB!`~f;Lqq@}knHk`12@I6P4O4V@geJ|S z>=KaPC>l4RW=!bm>3JQ8fK6*j$K9v-xta{%D?vr?v!#wZVhxyU?FRo5kSDv?8A-@` zvC*+}QNen(?Ih#P{Kg+NGk}WC$Y^ociaI_H!Jt-Dl$U1_gLV5dYMPdwELm{b02Kl? z8foJzF9KI5uZjBGp~gUngX1;Rv#y$5P!M{s{*JQtUN3)^lcp+UQ+nsMa1TJcJl5m%*^m4 zw^<-GfYX^&BQKsZ_a_$IrGq9p@e0 z-#*jWQa5Nm$XpXjD#w)p-_3~tjFG#v$wMUPpn%L@-RHmR*uP(Azx0OY^#7!!Af^B= zVOYZLV%Jfslmh5U403XT7;kfPKiL>8=k#>@+6K!!|4}uA7R$fCXFez^vun6MiS#orQCigo-r>$cYEqIR*o6L<-vqCK&R60CnNxO1JZd-arr_%w zRm%R?e+69`l?`-{+qtdYAFQpB1HlvCgiA@$1|vK+HWuiwRK9$1c)!=VzJ5J(J#o(Q z-&|tMvu^nOV@6UN${BTtzM`Wu`~SLu|J(`K@T2{g3;g>>Xco)~P*VHPKl`6wkY_z# z*8g?2qNor^Fr47j^?&^rc++;x7*qlR3}Rw3VK!l#8jbv7AHur1v$1bKuH9L9UMcW87lL3cJS1< zf`fylrAp5wnFodkHIt){Wsbl_&-g$qD4+2!JtV?+iLePj9XbpC=J3y6y*~NWbiZ3d zjhQl{|F}_5XZfe}x@XCIkAzvTsWT)}_T9U8zy*uAX3RcEK(PRPyhgIJY>30H$LJK0 zvHVdacO$_hq^%Sgp04|vV&r&3nYPcuByCsO&g2N`QHS_A(4^2Uvcr#5v{QK7%8R@cZ;Fzv}wd!=@>*-z$&)TNe3Ax z4tI$cDOKY5xS_6RwC4x9vt`@X%G(jB$%Oh@&z#qZc%aaik+#T-h z>^!6nKOF$}f;Rm*)tWX1H_inzcuCX2)2_jSp z=wMAJ0g>8s?Xd~akJ>}Bj2P$tS{JUvxSLk8fBbk`;N92PcR!Zca(ogk+%*-Jv8Z={ zd>VBy4^)E-nfkh_!6bSucSHQ33HWSDKzs50R=)H;lhnKZh0=KiaO6LbqL7onFv9YmpS<$t+R{1{91_8!gvbVF`ts5Wp3R^%iU7(T< z7(#%sl_nxGI@Roq?C&`D3&TT@vUHJ^4Ri5LFoUJ~_j`&+yLVR&KU_;aAa!yAJ;2in zNh>Ya{hUgJ|6jjC027yl@>!ej!^z1>)BOOu@P`1Bp1y&IXl_7|=isaZ{`vFjiS_kw zV7UX&ZGKL-3kHpUps!E9jXKiq{oZ}OYg0vq_nVY5hPI{amW2?e%gamJ@|f7zwAi$W z_L1Y`kr5U|a0msZ)cXn@nf8j*zJ5azt)H_aoeOVuES+C)77>cb$mCbQ({8G2*m!SX zAZ9EjWglxcWKKjxw6}Yhkz`BEHay%P85Nb0oD4LL(%C@3S_29hLW1nJqZa3AkvMi^=~)(SEGx706sdGBNv<@8wysm z$s`~{5fES-o1Yfu^i_}-ijKdCJ^;m#<4C|-*D}p`rFf{xI9(uF2ATAo-<92TJ z;X*@)DMt>GUaQkXx9}tF{Bc`f-(atdf{Y>urJ{@i7-0@h){34~_)^K$oIO3;+ih*6 z0pg-w#L&pM@LI;sN;c}w(L6w&#Ky=;$w^7cM>U6v75EbDE3$q$J2~d!(3b;<1ST=D z5G(KO`dMdr2+^ETo|EtZF!RoOmFU}91YVEk!rHfNPXg?OXrbeXzz zYpbV6%-0P>%X6+kNd`<0>>+H}$EJ9zFam-MoiEpa&s_5mqyFfcjAso4R26z;19(t` zJpJ)js9I7|@`M66YNKkC5j$Mzt&UiZv5AqWe*2k}Gy#x_Q8C8hYNY4?3@oiOgF!g? zf`*2h%Zljid?jC|(*kRj6dManKiSw~seb$TxP;~)h6^`GF6?Etmxzq1xw)wBiOo_I z0{(|LPi-$Sx!_ldigqrC6t~fp>445Un?}rS$?|g!wz-Ewy|xZs;M7#@$aj`2^hs*I zVy0uSn}cL(Dvx+QjeZM*sNk+tb5JJPK(s*`Y-2OSBOM?LC5zq|HZg6G&#KmbR_Gq&vCYKKW1kGzhUhy2X0nLM06y;_oX79 zs(pKIMp9DE4fsAiEIr+=)ipD6GZ(a0JT;I!%m`RN9%p*c@bg=^xoz&xItaTRc1Mf^ z30rD!7Rf>jAshL~Ov%s91=l|RrIWmH(asFLn4P%wnWo6Tj>I``pR!G+= z%!D&nitYGiQuPsSK*Pe^7^TWho~@VP`P;IyvwDYjjrSBlMNg$leps75`iGQWN9p^c z?UM!jlqGaAlRmHWrpIJF{puTUZ*LnVeJ90)hpRlvO&DU14w!flW=UOa!AwLJ8pN0D;BOwESh-!h+Ag;!d`+VvZLtR9~ zXXE*MM_V1EHLUfG4Y@jQf&KVX-wJvLni%<9qhkgZ1JohcjY*8%4=4sKT61mX>HHsb zd!j`kx{R{Lej&b{Ata?lj~%L)RH}gIC1I0ISn5eu38*0+ z&Q}poMLv8~&HYeFjT^~L;JNdb8b0&vxWndlt*%w=kR)If8KKtuX;J^-&iiqb`>6{O zH&R>x4r;umxj!9K5PyiXenv-^P(0~P2J<%9V5g+KC0zd@ccN>55$f)j@p`gYk zw-Mu!{>#Hf+9T(Bhoo09FgJ!UO` z)8vYQgXwzX>V1NfnUPs{>S=ZS4MoUBm~LzO>4recw2h>eas245Ps~zFnb;d#>sayS zM!S|h{J`X)#cVliVDmd%s)L*3d5R}!$0g}%b`64q%GBcz+^N9h{GNeKG&3v=^HSHk zU^~9>7>>_Km6O%;KL$ z7fkF!F^~7}zQA#g&stq^8Ox0$Y|LOwy3Zhde!IzW2`%x6x%)`Xy>s0#sk?Gk`T|Q5WWxtBf~c#%>~PT&7Pj72lYH!_;C^C zxxpw>y$d9eN!!Q9hzP&k;jE<&5R8Z&Cl9c+Pn7FFayYZH=6wGyQo2AM@&Yu|o6io8 zTvEfaP_nPbfmXX466-)*Aa2w2(}&eq6ZiHkw-`Q%>M0LbVG{uB*~QW0HwTwiX_fJiu$ZB)?|bz-J9+%3G66<5gs8|X`WVb z^yOQrLG;YGG3p#;7jRMdI5viz7Oftw63Q)CsEw;O8O{u>()S!OJ3sMSL57YMY~SUt z2Y1)jj^yi-dWQgcWZuJZU`Dsv(0lhe0f?Ex>562&Q?wJypW>f|PhBaU<3C5N^mIQ!Q-J0_N!l)}$Iz%DAK0OsgA*Fw z$Ml7>hf0)WNb^S2cNR}@epeyUl?Qa<{f%5L_|C{!L9MC*_M<{KW*t!|7Gd7%-{~ZmV->^;yLiqtkUpR@{wLHR51|JJXt>1UL7$|w)eeKny}r%q zaK^5vFQFE)gK_%$BUBHLbh`)Y#z4fYh${??&D|8fd?eEnk3O=}a5eU@iHRu$buo}v z;axbkx(enHenFC}Xp-$&0Jk8Ak)7E1u2I80@RAfnWiOX<-)lx?%x>-;q7P*Se#Q>wqwF z)T|bjMh~bVuFs4Oza1@9rpx@qH^^B{Q!vVF@?n?6&-C-VAEe((w>!q12gMz3+bRfI z7Unfr;3|=qQRJGVx;1igS5NlsotT*DT>rLkx>Qrb1|W?T%u^En0?sSw!?uB!FFxV2 z+P^_Rhe<+G6o!NgI9Lz*UCY&YFM1bnz!;D;X)bx!G&z@_gdg!ZlsJlsy~(ee4uvv$ z6Q1ZIZE9})j5dy2Kt)X6)KrI2uTVRy`S!w2^RR4au=lbzh1l!erd`sWrmB z4PuTPtL2ArgJ*8@{*~AzBGrIymqBLyrDMx}vi6;Us|Yh40|#!xgOBafG38ES@)-^j zf^+srDVGf$NZ-g=y~SbD3wry7{cG3O*JW)c-P)btt3^-hcUgvUMdF+JcmxF9SfmI? z4SPISJeh*t5Rkk!uTAz626=?}=GqFncRUsB-^Ul~?H0QEZiTn{fyUzz#*X`C%Jt3G zkpB9ir0IKHwH4D%2=z+*83KiYEvV$h)DsK!$$4Ycy6@6B`T5ERI_RrISNmW+cEQG8 zZ!AiFtqp0?zd^6wX{ln02IP8{%|25uJ7amCcbB2Wb_cr`3aR}_uuy%pMYR8pTde_^ zkS_wk%B$q*GG#<79U#c(;*T4};;ebIc*VjSfOJd_w$!~?fGOc1K>vZSguj#fBI43_ z_!GaR++bm7Xq3?B;}@Cp0n+cciQOp8izvt-hFbM>JNkpDI#&GePA1@~a|a`$Al$1& zXMW^XjZZe?<$YdKtg49{U8hG!M{l_(s|a^ti8y3_JV;E&ahdgjLcD4gPek><57@=B z;mCQJRcm6zt~hdq@eOH?RB_`bv(uhba+TwA2dKJ)(9b;aEhuv$$nwSkimyL3Zub% zo#=kdi2ZUkeZYD7$Nl00^SI&IfauM-X_`&VTNuoX=rv@I1WDA9+IS)p|{?!`ABS z08Y-efmArNjQNrVOmUk%!eOmrPxTqJO}#wccN zq(;>c$ZcJo;-bSHxj@MSWGA&Sd#vUuWg zUVMAV_WyuF&BNgu1NCWcDEj+LHI&cq6tiUB3E>2v1bVh;yx5(!Fo;DS27+z# znVKk{p8~O4l~kM2=F^VszEf)9hzB*GbuB({(3akDYn!ILytyX8^V-=?EL>xf3XxpP zrslC@$-8m*#9UcYN%-MHUC%Z0Y1a#neg$)Bt`?GU^YyCC{VK~$J05R*6SaGg4aJ`3!7=X7N znAMNg0{;n`h&UDwJAZG`N?6$s8Ath$l$tK*G?2SaS27Yb$y-{kHccq(1U=MOrp@KR z+-mj1Y7$GGK1SdL9pu&b<=YbD7Z|hp$q$d>Zf@=_dS7RfaBpHIc)1Bu|LCaN43gfq zQx}Rce;KA3_$m+zj~d1sn(^zZJf@c6VB(RM(Mkka0De^25=rG=C9p#aSIZt2E*Kjp z@x7im8!M{{@taLmhU9m`VbK(?N-sB$1=!`aFiH!ZsMIL5(r3CH1VQcKf%rAGFc z#(iG9^HQ$CmDds~*Y>ep-tQzDmH*YN41Ku=w1zq(HPq;csL%vBV`ZllEVvBQ75L4N z#Qi69qK1 z058Zb+LxB-go+&r+E!sI+6rkDlX}5)HyS4D>N1s9ihMeeVT`y9w{^>fgez!kv#nU; z{hOs{r>$axYvp6E-KA(`af0J2n#(d1z_m-9ZPu`nD)|~@YEji_+*GKJk7I{Za&b8Y znk^UoueY>88vQ`0vVim}-VBxL&yVPes@W`N?Y=_gPjmeiWR79Mmn~jop%4K5<0`H&Al4M!@hc+ z7V^Lz>T)9L0L#NtY+v(aHOVWKE}s+S6*BE11SdG~TOE{|Qpbc9I&qLOL7hm^;L2(|H-#VHtC zo14$o^tbH5D@oRWRN+SN{~B09AVo83h9S13ueQ@|A{T~uV`;#tc-54ap;G7MPRh<< zdE=q)s74j4nOeo}@lcRY?T49BSX89^pIQKYXq62(pWmMrC@RUJ^caTz47%R%mB%7~ zOM)O05e3Jpl%y`GDNyR>AbRqhm3~VS;Y*{A?Hl34awOe`RdYMLUnkS91tciW`zJfe zQGJj~Ij3JOa54FsW(s7Z;3`7dHze>#=}t)!F4mnMgnp-vgoLz0<-;QL zela@mj&HPQl3t4^_fyMfCOA?=gtl+AIPYhLw(X?W0$d%7B;o(QX$_eB%}Rfkv(ZbK z_f7_F7p{<-#Ui#A-`R+U{qF5x8L$BF*Z>8;WR|Y=SDv?BY})6}VxE3_q4*e#b3UgP zxR3Rj65n`<@bETLUjl_&P>}Rn)!3Vp*Kwi4+6u8#XEFqxbb&AM6k2kA*ay>i-(|K4 z@^St4@a0D05zzqPq6e`E8?LmtbS%n^!_At=WkF{mKo_FXfde!d4+s%0tzFNn1(?K5 z7V`VtPaPB#Khs`;72l%6jo3faWwqIZ4gc$09JL~=fr2e(gW78p1QZmEsh%{;yf1!u zCcWt0gPVYQl(9?1gw@qaeniVy$?v0OWcFHjDf@I&(ob4l^)l=3=P0Z|37!N~csOFV zN&(PZCuey0!%-=undp%k3+*a!RGJekTY_xS7PA{a=(v4B>z+Wq`6n|kuZw14B;;`; z#fPXgwNed_<@~v6lCWSRJk45~RSfi5*x$wGpQ@sQ3|S;VTBc&fYQ2OFpVRvH1vHA? zOad&$D?SGdn)oZK=*HrNMF~`hz~4Z=K(u!O1=lQoe=3sC$4e7L#|^>4>EW$VfUXpx z?;7jM+m9G5ex;%HgH{U>OUzXNo*_Bs$Lpt7Za#AnnTh>|Y#lY~7z)u;GH_ubR&@7YaN^S(E;t>KTRY@b+A&M(3?FgpGC3 zT8lGS?#PYJ9J%zdH;beFQc_@rHjC29kL9gN>CV8WGt9X_JqJJM4}zcvbS0qxj(!U7 zsz#g@TQcf|yqp4-2~{$>U4ThGCx1Bg7qHvwoa!=-QBzX~EwUdFaHNXv!6ss*&CULe zaDXr2s?5$jeduSQZpHM{*+RkU&lF?o4GtyM>*EGxR4Sy%!Bd5nzmOHc&;ec1#hUq+ z-EHs3J#SnzmJkW@e_{rM+*h#F#IL?$)G3ZpR4 z^r0`CZsyw896ZjViZe)tHwR7CW4a$242lJ27San!^(4lmRMeEfDhu$Aivdy^flhHaoHlDh+fEf#m1URL}> z>nZP(wI(>fxZvjC?7iFkY~X19 z{^A5{)sjk8qkg1x%HZ>*lr$0{OF%r|=AA`yUI7|OOTJN{>#r}Od@&rXy4)Dbx@rq$ z;}yu-@CDZ$wUfvULh5&TKnj0k^V{=igpzx~d9o(D)ZMJWG?4&4Qm5&i z+B=OG-Y`rrMa_0!R(Woy*=#24vj|I_1<4IbJXTdTK6$k5k4 zOtjiCzwZJAyFx;af!a}8s(V1F5AEIiw*xQh-tpV>w`TUxs7nhdhV6+C0=?>quK3va z*s__Q)R1BPAxu1g)rWId(iz5 zXrN(82CcqYR?uokHCswjXw)5=;$i!dZN>X8oV?V+mg5_3v@v-u#tAH!HJ5&alkN)I z<>JVxg*s)34|zyvckOr83{|sx@~aFO5V4nD6x_wN+qu&dWV_a?RNrk92nfo7YaLoRUR8m*B zp46q27nDE#-kzDcNJ#-F{$I&)U%q4rew}1|83)Ril#-L)aGcHpMN=1_9oQt8iiU1EK*{vZ<-5 zAsl@`f(+n^b!pTjgxm>Ori|9le@z{qfJrTT_983{k+x6oG0Blg;-I?KTJhY$0vQrksP;Jxqbh+LQf{?OkX;f0OIV$CX zq3^0h^1ml6bFWR+PFUQvHCcTV^Wr)J zzOXV5cJ{CH#YTqTiiV}%CE>)%6VM;*k~Hr`Hld>7>AlmTi9$g}u0)bAF1DbS?F~sP zC<>NvCMF?kN~PT4=~EXjFfwDr)i=!Vf{vazr{IPyKBFLu>Xp za$%X_sBB|AZ?Qd({_SexFE%5Rz)5lyd0#Eg{lEhGjkC3dQ(UgMCQVmsnV{4+L9Y@x zE$La}!c;!fBgiiB0U`6Ps2(vQsOW=!XmuYKUw&w$@l*e9*BM%fW;%C_0 z^8sAaa&leXl!t$bOZ}C+oRjd&1AdBgZ{p7pJ5Bau>lH zTC`LS#8#Y@*|@*tUSIZk>|*xr4SA89JKhq4x>h|N;{Z-TS~Z81s>6T26KHVf}sGt+Jxz`LJoWyZlo= zz9mh-K}0;Q--V60p2Bfh>ajjeA| zwF&KzXYDoB>mF~c5JX_BcT8!dVq+txnp5-2CEZ*Je%ij)?LIp_ZF#&X*r+&NNOrJ< zip$KTe&VDMOi%5Eib7~|LvwFjeH$ih#l&pV(&nujPYM|Zgkxc+fWq-~$}Bv{UM~JQ zF(DpAYPe^39wwuB9QUT}6aGDW;NT=??XsBt@RQjjlY~pOkv0Ko9T zhHr|Ik)i6+KS>g}A&?&UMoZU|IQ=TE*`uGHM|DCq>ps9FB?-!>BHN7{AVg_`yiq((^BL>>{AVD=Q7yl0Fl72&OzY}AJKKKWz|0ITMMzD11$s?| zw+{~D>Df9?@R!5$6t8ByX0g(W)@Yp5_lRLYK3rQ{>YJWp{Q2`afIG*vv%5PTVg3%+ z3*}?y@Bfql&-U>;?y0D7MChaQ2isXc0;ks@eP6`*7wY#&a8achR8C`Qu#t|23R}mUd@*#oyNQB%7Ox zijSIquO}PonNP201FbLPi)oyco?cc|wgs1(qFvwj(i?AqQn59}<}51w=ua~}CuLVi zIB2lR(6eoHe)^o~)E49}X~?9DMS};2a=5jZV;cx`K__d2jEn=Spf3pr(Zp&d^)XgF z{%HSHK`&&g*2$V$r!}AM^i39Z(Q`;Isw(J z+QYVz`w_Uz`&;fuCU%FL9gy0Kk54cQ3wyY%%kL~9O|Z-%uOv5L+3ZKMg+VLu0q_b_ zkxW&zxe~i&ba8V4D;o+`W&r29q6A$+jm3| zNicrlMZ}~;RZo9V+0FjEO>JuOKFV0l5rbD-AnW{KECm}h=b_n|S5T+)=DRLG{mNxm zhgej$;x$5@miF{O?{+fPCIr6YyXLR)GtT3dr=JJx1G_5_C`JLJ(Nv{&!US)JA0!NP z6Qm|$ZGu<&d~smz^WRrmixHstTRR+Wy`0`}4iU}YoB*3a1nCrFtL(e_N7n)$GW~{6 z?q9!>5Qq-|7lMU1yW578g*Kf2{kyk1(Da-F0nPEzzi*RD;Qb zQuQxXrjN%eK~BsB-(BuN3m&9L%ks-m6}+Zy=)0Vrx5$k0v89+RJ6Qj^e(j<^^wO~0 zJ-GXMtLxBJk)E#DT4(Rx1_Al=*GJ@Z)eWX!d*@ydmUzhH1P#SIF$Ho#F3yjG zej8`_aL9-edOrpxt{24fCzx?@?0i4l+S<~S38=o;wL93lwEjFx{RdsQa~xM$|3Gh2&=bq!We4U%LKX*K(cL`XzYb^MRj(`zU883K9~^ zt5@yf-Jft*d6q)tJcT}^(@5^Fh0unvRex1A8KP6HA07Gr>@mP@#N4k=os(M)?7ZXj39&4OT-x6?RRav3-td|GsW^K3}puG#=7gHDcdHJUU7|UIW`gVLuC3O|8-$&9=Nun>QCXB`%`%H&xUAuHoWUnaSxJzJ?`^UM?=3@fQKRAbSv-01sZ7U|Ru5Ovz(3g6TPz?h}Gt zS8i*}Gw06&y~Rd%ZdG475Kf3~$I$XCLe;<^=YUol4RaEsx*m83W(55GnfV+J7l5Hb zQ}>>=#`3VZ*?1kCmcmb$mt#&N{Kw7Ro!(pc16kDxb zVFsdht(KghI!6(W>p6NAdKE$1-K&L6O{Jh*-nj`8wvXpxfy1PxHa%5TWqzDKw!ul* z#L$QT8|-UaAN!p*hQm*no*snL&xXQ@nizQTkDtThe^QF7I>>?JXK|(@6u#b{$keb! zh-3#q;g?8EmgPC_&6X=(eBJWqA=2&VZtR+p+`!J&nAC*Ci}BIXll42{&zJkW1xQ#> z8I53!HrouC*sd9B>k`C*c|!-I;*f1b7j`TPQc7 zcwh8}(w8{0NXYXO;Z^h4QjiCHQZeJf^s}nxTn;&>L6M@e=HE1@*}po4b#&3OD)C&fQc~g@etft~YqgcxA0b0+tO}2mJYJO|tP+%xey?~(n%g^F zc)@)H#1SvE;zaZV3sk&dxa*t`@4J9C>qf6kPcUp~aV5DfMrKZk`SWL|pJArth8A`S z^~frd0OWM7tPfbh#|UJ!MLPq|z?qQ$DLVSjOY^ppKk8H-5~NtoQ&1e-8MWN$M$;RARV|igJm_{*rE=M9ZY(`Lc0tfqJ{H9lP`{TNh0la?g!m|#%Xs6? zlLNLpszS4`-tzO;svW;$Nn}ztOHNVOdaLu+Qtkkz4w572AAiCe`UKU|rc~nrXD*r(px53N!#waR_jTiMjZ=4(A6mp|i8I<4AyE8!8S6%ig?|(EvCBeO7zh_BDFhR z(dQW9aT}aoe7+SF*v!4lh))kC)%5ljZb~9P@@)M5+`ZugNb&8Y?a@(IVWh8*u(?gF zLm|??+YtZsMryw%7g)fxi3p2Gsg_q%)UvK2K$}N)3_uP_={VLY`@lm4Rg734f zx0r{(=QSLCuRxhNc#xi{9IQ1)4E>cV|G^lttVBvulCqNk5NigEtBjg0sw9@z)I-Cj ztYziXs^%^YM{}-jwVNyw3F2-tZ7c&|nPic5FK=~Q{d$KCLVJg>Tl#nE~ofXe_G0?e~vl{w;7bei)3JjHzg$J?Rh;6KO!WbP_~k>6s{ zE5*`wb#Z5ev~*C0S0FFLlKBI6n5NEBQVK164^A}1O@d3t;m@7VU(9+)yu2JsreD5k z!UwP4B+uu97%v3ufWM#c@88`wLaU;E_xJ7FGq_7leS*i5Q4!FxZUZkSIv136Gd-upV$@nCdz@IXQh85%TpRPwBMku0Y2s(@m5)v^go)wO&?= z!+xo+||BMyQ1pAKbYnL0e z@Tvzk@AHM|Wa*~sF_PQcc-np~t$U&IynR|1Ah@M9~Hw;lJVq|g-p>Zn7Ih86`I(J|25I}WV9=dFpL{J&A6LsweEr(|tD zqrf+nhBA1ANu*FaZ^;3{hm}?Io=;HF^Fr(5YsGlj|G|v!w4w%VdkGGZ_XqTR63;(j z3S*D)fkE^-72IEo%H_Gd?S5tTN7t1+;n&INYinz{IXM8F!HC`8*|`oBz++>4OB@-0 zeH^QoV+#xDL_~s0vyY*{!YX+gj9!4v?<+F!n?q)aJ+OQLv9$(eo=6*0hY&o87n zkMVz8&-2}aF1FNbGBPw^YqzRuOlPM z;_trR_n>R1WMq7Vwo45O1xA$QjATtMEd#Jg75II94H&`LY35|GoiQ<}Z&JIufL!%; zC%FChl#Gm=fEgP2Wo5Md&{_&w0Jo>T!zzQ`#!{*I4TZxtzPDM{uQIQr3yi-X7yJ^s zq39skD?cBb2UEEuB?5xql+&|-oI_wRsogcnjv*5Eib&M=ynt5km+hB5wRiaA{r%$o zeA(1{DNBJIU}G@&q=L(xIyx{DR8aVxR9IMvI8?xHcVJ@T>v)`;T$pTFxYbtLGk?BJ z2;ita?`jdde&OidLM6+0T0uNKfZ!xdIA*}DBE)~bJ1!6azI1Ob_2N5G5y$4O#59PzJ@ zB#H5}bBbTee<<{gI#0h$YENUwF-&)QtU7T?o_duYd6|_o^II-!Y*@%iwZA2b4G2=H z8oW2ALIgnSeGcbFW}Y8589*j~R*x$jy z(6H0rMWksI0NKDYp{hD=`3VCL?-xZ12wf-xibHV<0hDNNV2_v&C(&E1^wfTD3=14R zU@Q4d&>tVuKyEsFb`ddmz|T@Cth64uP;|bB86;(%o~mg4`I8pd6n_oP!L!B^h(bUP z_x9GpNUh8M;{nt7^acZbbbAo}14&A6^^0xU%(4pi8yAL?ViZh#^9`9bkLd9J| zxg5@tJWrQnu?Bjkrsl>386Y51PsA`!X4ko7Y;+bJF8$ii&!tchF#Z|HV7|3w()mf) zE@o_O0$vTE@sgC1uwEY&MF40T)MtS^CIwmS(_k=aZ6>4yuaNK(vF3Keyu|I4o@#5t@>|f+aMM) z;S2y+5BGyKJ1F&nnwpxYQ=F$E_~`!^!->`+b=#6HGU9(@IEi6gOo&UTOu#ygtU2DJ zlFnBM%}Yfp`Q}5zRLlJG_ZrP3s6oie)pYTvYFkrMQ5hN=zNSvzES(x1tppQ^I;=QA zCa?MdoHfW2qQS($&PpIBZ!a)02GRptTQ4tBoB!5ql4TO6{*QHpnYweHU3hEVkeZS* z)Im$jTGOa8ay1eMxF*W|VV671vbD^EY`b!!o2k`h33}Aa9Yz!acwjsQn}_e0HKj^n zcacu11sNHcxVY%(>;YiH-e8O>|Ms>ZKVQd_j+>eQ5){*6|9CrDTRRy$*_swsczeUQT!yBh=B;0O)ipIvm?)=^5pQxjbmX%eA%*);$y;x4# zB=Igft3=HDHB~3Tvuow&gA!S`jRu420FEi1nqUk;T3%k>erf5q*9-1qhVQ<)E(mZ5 zElw@2h?l*%f=V9`X^aj}ts4SSAEMSG$jn7fxLpXmv&kpFT{u#cckmWu^u2|@a^LWd zjt1Q~31A)#NTs0G&bhX`xiRaHiP$+Hnev#NWFd#1@(;iIv zX4F0_q)!POkxs;u#SB`L*NNqwkOFY2w!42YGr;8fjfXTEl-JcYJIj042_1xTA@YJW zWpzz`pB#GY#kahY@J}J&r0C;<@)C)N7*B0G)0{*0UGy)X*wnbVl-LMS2w5S9J>7;%#CB#TBGTBANp)JJJB2LQgryM3y6)Ilw&YKed2IaWQdLL~*?B;9^0Z zZ^RlWd3ZZ!rxdtlS=Eg{c?LR~76@Na1{Ko0(ypiCaN11a#9a-&=*(zt1c2-d-eXAy zMouoS$19shZaThQkmeZjbOGQ1PxsOK?94txP`oj~0JS0B-X<6Vo0gbJfQJT=nL4tN zBwbr3MJAO3VvIVqz{X?nkGoUJg$mD?I;)c94K?ln_jTQW_Q!=D5yw!Pns`ODv^4Ts z4Ds`Ip=&@;Vf$8Hx1pH$G}{3*!9yGOlLx zyx_q>=y!e5H@Wwneqy>)+7|h9?yu}$Kztik5R{AR96n=c^#`e$^OLOnvKEfkMLnIR zPE2AV^Pk1<1rWjw7^*QDwe1`r!Tu{8r^+O`RRzc@99D>s#=*A$1NsX^aOW!&Ua>U4 z_8c*gu(NW=e*}-B&l)7QkXKL;kBOr;J<*<5&O_3&0~Fvn+MyJ+KSo1v^_-lhW*u-k z?T!MI2$rE$t}MEuYPV(WGchyZ)2%;S%7486HQU*Iz=DqzL^2dyBKPwws)4~S5gyb)MD9>C#SWg@f zUBkndRzq2bjU#rN9wG`24P6Z(W5j|mTet`H!8N^tUq1CSKaDU1ihoo@goTF(@)wm> zuLB?K2KCm)=IZ(ezwc#yk`F)7JyR|1!B+$c)9$9JhjTbHg5-&mqbg(s*c(fLr8l<% zMvxriV^M%}3DOc0!Toj>nEK_VjLyfaa@q3PxmNYD1cx70z)h1H$J-Z36|`G6^Akpi z`jAA?yU-BS#M`{I>e|k;W3-St9+*P&@4peP;Ku|`{)-h1N zuqye^EY&&J>3nP(Y=iL)wgUH5nDPfkQukxh@bGXWqInL!on3bDTHtCB8l^GQ@fE64 zDLb)S#~z5qmF}!)bUG+5Ep75Bl64__`!=>2!JH1$a$8PQGxZnAB9gt`_IU#e}#0Xq#*IDm)Ujzv7 zAbC53+zw`OGvHyS_@4MB16ct-yS^(=a^;7=~r&#g(j+jsLP@|muZr*_4Q|GaD1QPCLfnB_y~=nQbl6jjQx4Iv794Es>RM-- zQdtB4v+2ych!9i6!=^o+m#~)yHT*gwYqz&>q)fnTh^5-P@yto*olPKuFozn-Oi5|) zg`ZpTpQo#Br(RXafjr1922KN=S@- z8_I^dlZ-*(h8jf!lP4TKa!_!EDOsT*+Gs$GZyzQBMt>R9J4g=7u2^ZRz&Nswm9%yW z3E5>@0G}7&f1{{a+a4E)1HFYk-RC0q(nHQg16PlmDLx}(YUP+he47N=R}$@hfrv3L z$ml9y^x6Xg;oYr`aS0ZVSJ4swgR8fWso0 zQqm0~-5t{1@h+a{ob&yScMSeu2#&os`@Z*DYtCz4pEdRqrx#{#gM$&0faRgVRrZ)( zLUe{kA8%D=jAI*0*cG;`A=u2&pkoFF6B88+H|Y8$S(`|~=368r1kSI9zCU~?;?YsY zHq`3i?O~{OcJEF2Vhex%g3gZkLX3n@5EZgQ9taaI%-D9Cs*x}QI`~I;uc1W3Pient zT`Paa!@+xhY4t#5^Pxci)GmSo1Hs?_^XJb%tzFTO0fZn9O4y{>&7!}Q-c8UbMjR^| zNIoaM@SjaUTio+^q3wk)EZ_k>tY1&F?UUXX!Z);>mtUsQ>QhNONDUIckWNsVp&RCf zfbHrJa$)2ND{JfZNP`9^(E-sk@ttD|xb1S~r7Ms$nBCO0t!7!0#)<@ztzC|6y4x$q zPJk%nbNKJKYC-aeUvu8LEtPQ`iJ5A%m#1akp35Wc`lFEt5enoMzvEg$=6tv=0 zevgfj_jqs>@7gXbRJox|_-61r>lFX=^{dElFs;a~mL}jcv$VxB-eLZoNI@|)$?hbB z`+KZ$(x0QwVyiQCj;B&CC$Aw`P{rK-B*AhzBQxr*R~|44vbrrApWcqD{4v=PA}5xNB9_UN0BvZ{l!+uBcnVaN;kIHU1&tmL1g1#|DYTz z82_SGmtZVCGgAPF)PoN{7~(}Q2+h~2K8w`1P=1O(uQ!e_%7T7PyOsVF-{BJr2-q|x zchv`dNd59MRA!W(g z1}A&H&?#taMiTN4kZoczXz5sh1*OnhDxa+TL8rkLN6ThJVT!}t3kGtM#4sN}>2cJG zb`fpGa`KI$tfHl(mFnfksy-!GVEa<VqqSO00aWG_3l9*)sto$yLb5m zU*(AFXzo$sQ)n5R07qh6+Fl9N*p4BPuSVa4&crn;TrTtB%A==^;myzAR9*iZUp1tC zi3)Gjvu@}ZA-m)92TLtsNw~Oat@q!{%Wh|Ze34JW_xE<@UCdn^bAIvmV{cD4lL*rB zOZaKjKsycIg*K4*LGPPt{JmSJy1cZF_}&b(ZxA_tfkv-P>IRj3&MS39Iy7uWCgPQT zU+)OUcu`5*6S*y3J54X!!z6PSDbrX}ug)9jo10)wpaae(ZcI(*0swT2NkFI|Q$sqc zrtR>|C4AqokD`x4C?p0-3l!}yT+`ARgpR)rBU?P45bn<-ZEtRRKHz%y4(=4ld#)*m z|Aw!h#OMJ^MXKieKZlOAiF#r@6bwRd2S`(gD7x|?wVZkezQV$yY$+Q)u@ctMot>m4 zInrvO zm54C0^qO_Z^~?EqK*|i;Tc^H6D8~Mc*+U&Kd{yF;hSIN9y9#jzUM0I)v$hC(ISS{TMK<9W#$S_r5wH z&eZOVtDTRz-PQ@R5dO_XBe|;b(CfQiQj^47+1NH1Q@ht}NcG`ElO z?V0mZEu8`5o-(z5SV>36$&-`QVLmWPoAP;F%g-0*;|z&3)#B{rMNz@ytAKTvrITzV z&#yPHGKYPoc<7_dSj=@rEw#0!?3tenEK}5bd=L9~Sr9_TU)!plErBSH1-9Qa>C-Px zW%BYx(HMt@M?#7Mbi6S&jWDzaUQ!MBM&W}fzJ;I0tXT?3__s=v7=*=x$J!^e4-JpS z+Nw^@|kICr4k;Fk-d}LVMqbSKT8y$o^#R;(pOJrT;jCrEDb*k~vx$I(r=zkdL zk1G%-lhD()^pJHr05(m!iq%$iD(ujMpR3?p*YL`OZnDtI6J{v( z6t-hG%!%{8LK+U+KvWX79LDAQ8Ll?B&pLR%0WyMsVUlkl#KCt;IMye+Kf>1?pr2jQ z4_u#grW7}ZS>cv&_9U378JRUL9+n<6bArm)%RxX?WHhNeIqS}oitE?IZLk)rWtFn_ zOQdz!9l*iE)6&t&KGdR%1DpNbzsaER<0Tf30!VzOQH;TbmUe7YtZrQzT3m?<-bpt) z#fu!csgaS9)M2!f6Y(z1n>v=j>j2>o`mF3n68L;Srtg4+AFADMy06!iBS>Va5#0(-xycc)m`jpYlm z>9rG!K?1UFyrS)J^00}9L~uS)sHU>zsAWuQY)4j3iAM(AxKU;uj_)yHo%QzV={3Zt zfYRSzXlGXUbu=aTyx@!5@bUCmF~xZw_~o+|FqC<2%LJ-S>>MbC~oI%ELZNOSc?l zHW{2DO7k2X_w^NTReN;(`BK~UC3SM@b4YO#^<=$vJ{=?ox{Iz`U!u2%sS7v9s!4g; zf9@)^f4Fj6-Xf`#{Nlv~lRAdo0{}&}=rEH}v7umLV7Jw`zK$Un$~Au*!CPlb3U3Q? zHOz=ft8OM{n6rqp3iVc2u9ocH25ADs3s>x=vNq4%i@m^$eOky`$kpjS4#@lJM=Ma{ zfBN&i*!F4ssTZiAYi*Q_Sf1g025i?$U0u_jS(zUDYBvLe=%bC7rQZRbb`$>xb>11j zLI@1+sPns-sJWdPUVbn6E_UqP$b9)fK)?T4ir!7gXG$6u>rvt4!wK&5`>=V)OrG#~QcYh(Bq|ls+j`7iXocD*CJWphs#H2=0kfU(Nq&Y$P z5en^k0lUl_W-b+$3)B?N-s+Ocy6@yobz2G+2T%GAVBYY`M=RD-&kLU!uZx@HhfVP! zH5oBHDEt~kO;1c&FIJ^Qk%qv-Lo@}&O8~J`p#9cNGx*ObkfB`O8UjEvRou3#`OJJve~o+!CPkmiNxos@m|b-So+Q6i!;He z3&C(WY*96|!HJ1}Wz%y=Jh4qL7`$`u2GvLFrD3;t01}Tx_&=lcT3ircfYMX6(k{n& zWW}4ZclxEugc_3+0&iwVNuOb5a6)c-u%^ zAPc7{zssr;1OhP;cL%2nU(#7QNb?EU;*@7{VL0NB`g1w$mUm4ac0jG->`>&acK37# zZ@_kRV^+Ymh_v97!l`rXB;qxS0~MWTlMC0`Qz1=F2AG3>z0_!*L4sNd&Tg3y)diWt z;@E&JORrK$Ih@GZBDNl{TPj{FX!B4r2?9bLh(VQ7XB z5&wX|qEUU;kT=~QvcHEZdU$P4ki4CRv&e}~OY?JQN|9M;`8~OK(2^-AVB@t}8%N#W zuhdN$Htbnd#R3X_Wo|#GW1B2o@++@Bf+?qPFb7XLUS`wsI)pP`LSr>Dr*D=0HY{^@ zW&zzl`+3cJ;bD-M$RJP*R`jxBE|4)T@8)!V7TSxB8ZXW zkQE23zQR95yiKhIw;&BbT~VU2bio(}pcCLqh+1Pa6Jhv4!7!m7GNVEVXaD`9`;-YN zyohwBn_fyMIEVSr@p!N1IC<$U*>u;~7bKG>TUVNh+Q`X)X>=aCIcF^`i?;Hl%)2*- z0g6|$l^UT$Q*ZtI#bD-gI&v}(_4F91s0@7G-J;0jQI3A2RX7Ug;x@l}Sp*^+I}(u3 zz;f8+)&`YEA6ZjLa`g?j%RD{i}sM{Y$e&yML8xKv6inpkmn+kzO_b4tl}B@CQku z*x5OjeI(mK_51MQ`je8^bjN)&9(9W~&{bLMwirstLZ%gu3 zYEh*!Nzv3CvJ_ob;ha{0zmVvw1MG+f;g8V>jgF3vNCN(jL15{1_)YJvd1Ysd&i0mm ziK-o>BHrA$r_TKxR8{X1z6h0i>3yL^aoUN!-o$WmemP<>Xb?vt#*U7)8elHZ*?;!K z#PuFEOGH%JO6&Ld_@FOr%tB9m^2#|BK-ujAj4j+GG$t%8EZ&eB1?Pp8y(h!M+W8ym zuM(_bwh#b%;&Toq7l6opnpCAyX+l1G5mQLBaL}4?kMpj01=fWOrAv#29zkHy`)N<~ zCX)Bi;N@s|ygU*?Tw#K}Y%a6h!51Hz4i7U!ksMgoUUdvZf~aDxjh?PN&tQ=3l}w17 z_Kd>?1ePgrlNhAL{!p8b#ozv+Xc8tRF%0_NDT1rzA6}>lG)k%(oi$pY&L(f5Qp2S0w_+%(`;bg(9555A z&Bz+5dl07^73=VCvB1X%W8C>^N7i-&T9gya8YeTZl#$J>giiM4i*Cn$vbNIx^W0y& zAHI#Ru=SkRzD{>BOKH2_WW+%+aOBFjRJEGjXWPKT!YcSJ2?p{x-&=qDmnxF$TzM2$R% z01fT7uz?HCPZwufB&}jxRB;)zazo>(#5&A;Y;@&4qxX~gOIJVd>Z}%hvzqyqHL!#u z?Cc5}%%b^9XhhONaWVjHSf;ehrJG5n@BC{_Ow7PQ>$G6f3P2)Z8obk<@N3vVejU9oeG9zQw-tpBrr6w(QgqCd*Gk?=kbgw=m~ zW}0k0_x4)fT-#?L8W90S3Rr&(ePu}r-@l*A^nLqr2AJjTWxf7?D0txb zOmZnrEZ!M8Zxf%)-TFHPjdv`fEd1aj%~QcgvKby}9faxqL8R}u`}ihpwmOw~fkvYtZ86RZl1%$Q^=I;z!uvF9BvB>6S=muHZ6`uIm zrL}g(`zN9$vu0p8Bnl=PUitJXb~QdJt;zU|!V9284dX}_=!U>k(U63WCEU}&+|F30 z@s(WUm51{|hrT`Q4$$Hd7(i8S-Cs9m^?A2E`Ak1_3VMBcdVHY6HnZMaIn-KOU#W}; z5BI0#pk*EZd&6nNaeOv7_|e&_MCiyb2<0d2hLFADDj<{v0p4D6q@^0{##d|+k2_fl zkbJu*fdzUpG8o5nKStk$rmI8Vfb+BPIi4nt;IN~aR(iRgsyc+PZu+wQ0D4@|B~&nqf^PuXa11&0yvR1o^&_kPMF6xe~pKdc{Jl z$l6y6UnI62sx-sbA)&EJz*T9m^JAt82cx6c67CX2_yT(iMRzPnbX_QJ4!p_FYpBP7 z#gAE`=nZF1##O+ud*9RR>ESHa1P6cj&syL1aB!9rK6SB^d-S+B>PaER@iZjeRpk#x z@r4mrXn)sb8;~9zozR{nNFi~Zzbt(0DmM!ghz%l`F+c-OrgD%LS4H)V{9f9 zEM2ISsm?A+F^B2-U?uYw&*;?8?$XK8ogGKnW4Q0{&Ti~zynl6UDR<$!X2gpVP;3ll z+1;KIuTft!*mQ|B z&V<3Eg6vAE`!}#?M`>_{1pE$?c!apPE^S?LM39kRzl1I>b`N;#Xd~sd=vv=g-XRsf z+tF+;U)6Uj=#(tbGxj|L(C<>?XI^)zg(`Rc>car+Ge?z4Do)Ue?5;p8w@mpkc8YOq z3^v@hB{Lm)?EKd;Pm>n9%(<17Mcnl4(11TQ3QH*RX6z)yS$pXA)(tMbZCO7e#q79Ce`C- zygWQ8=bM|4J}(>ZI&hixx3;!6crO3O1L=6gnxwNDriGq8a%y1nT=wd6!|boTkVOcs zfKBnUgSaR+;}GXzHj;t>)yaC8?<$ zO-!7J#1&-A7Ye@Ggt-jwTlrbyzFc*qff2l$0cX@;#QL3|d-N7F&CX*^jDDk) z`E`ipu47{IS3gYP)Ik-H5NKk&_y7JCJJL}6UISkVH5ALb&G4%(=88g*(<}n0=TkMQ zHIDag5R!WElqWVXxPXoWp*W2p9rzLZNMF9Gfn&C9(9`w9{Yn)ln7<~ly|o1p9Xi36 zn_!G(F*3qqku7CXJ8u1L?Z(DpmUA}+I^?26zsYXZ_rC9XW`;BKG5=b1aqJcB+fQ)h z14qc4CDX<9nA_v;SB(Bqx__c4bo>`7G3Wos@gcVH2}az zg1LoFk^K)fmDhv;vsPDHed^ZkuXjbQvZ#9vD~VEBxbkFj%EUYqo2FN0R|busT@y@4 z=O^heq|cvQsg%EI1a4!ZTwKcg$fsszu1^QcnFtlV*G<+3F5s_~9N!hdS6G=K}C3fVur%W4+EY9$*nXVom5=&b83c zNS1Z(0>K=7^t#LSKBkhCI{XYAh!)ruFk@=!s^CF?&>IDf$L;W>O5Cs>0*Sl^@RAbU}1*qp4Cf7mBH5xeL&ng>wH4;*;-I?tv%ch5%6C3k7T zyZob>ju26)RA=$;i;}b<2*kZspytJygW@k(bCX2wt{!Bwl$K zq6*%tgIV=xJE4B&l1Uzxs%D}Pl2mZQM}T9S!$gdXVtrx~Z2Q)?*+BD{SU8TVH8M0h zxQW9!&)YngARb|jo|ddYR(|^T0_#Mp_q$^Ieds%?Bpj^?s)?pPl2M z7YfC@M_=gn_tY5tMFW-}me0b8)JWOr;!SPG3vd4cm;a%8p@gXMMXOHmOKk&hqWyfHbuURimD8vl869kyg-WNXWOMu+WHx-cA@?NK-Zf*lC7q#V{ zemCzOx}Xr&!~*=wVg=olHO)0#8)mI8jrYe-E+z~>X~jrHL_J3F{|EMRpn_vpC&+L9 zM6s#M<+eMqwy?Gb&SRc`{9hpQbf=7)x^Z)J-@GP-#3q%LShn6K6wJE6Jm~{YXmsF< zl91?4mP0<|huC?WnNi(X!>ex?nUa%{eai)TKF_WygZ3tjlm%sB#Ml4+^}UhVgk}E= z?z(>zAqB2xyBcr^`SIW@2Y&wr>}yLs8^kxdx{DxEf#W?A-}MW|bY7Pw9?o)s)d*XN zADl(mX8`0Ty#_~R0x0$q&DN+7U!)O8;Y`7a9ze70klg3Y1z{-1^=*CEkR(7O)u~z; z|NEB{HK-UHA4P5NyKcBy`%Z&SK|%Sfj<1YGNMZ=8h)$Ws0U_(Ghiy*+P-n^UCYOz- z-uvh2&CLr94GmI%*mTfPQI(W*{J|Y6B4LX4&!r=hlV8WcLV~(Z`kyNaB1=UYZ1B3S z{kRX#Ys<_W1#GuM0g)>y8D<=c0<{|cUse1%ja5kSqW01)6RA#IMgk6jO&a0s+?1TT z%JZcv0up=Rtsz#B^#8o;trWl2Ed;=5xx@E74TuOoB^%rMGr)UdsV{%TD(I?q{~iU$ z>pqefk&rt*HWm+DHUtFBoSc>%@^8H5(*R(#qyg(S}9|3sTx^X7zyEYq#4TeOGpR+6X^SQaXtJ$6P zy*TS4A4I_5RPehR7snAmWAO;mvXZj1LkGa0iE^f@+Y+An78VwE_(DwP=ZbCZKN0it zA`ElUv4LdS<~9KA*hxObfZ&+$b4O)El0#w=5{SFI$$}LSHtZe#RXw`Z1arPm>s=d0 z>gp~Ohj{ApEUSO*9`d&^)rHrv`ApPIM4C$t0X=1Z<_aKvkcdX=8wWn=kUV$#t4^!@ z{rv%Cyf=XW5icz*GxJMp0iHP~US3Y~l>ME3 zhty=03@Unhi~@0SQGiRXuWub55)jvN?U+zgQ>&F=cvb@=zAlDmV`WjlK`;X~16ztr z^k-RF`h`88XLtH34OA>ED=8^GyRn7E&z5SmSKk^6nOI5j4d1a`Q+WU z;rLVw_vzxow&m}t;9R{6CmZK^?(S~tk=M3|bcwaE)5@<$FsY;GwUt8HzwFG0BU3`7#rKGB)@y@ zMt@s?T&CoaRG(jTaW<$JWsh8OMnF=H`lg{I1; z-A-DgQf?T1SOs4Au#A*UpZlY|BlU0=?5|)FIazk`0HmDAvyn$eMsn2Gj10*nB_tX; z0!w7)%*25!gN6*~H#eY%QA@7lg@-7F{6d&PQs9ZO_Py_G1Eyr|?V-C7Zc3KBbTcu+>y`2~q3({-wEEVk z2f|z3?cOu|x_-U#&l(S3@v$j=(+#hWP~hvzu40S7wewh)%(iyjJSZT7LO~)8d}!w0en0x zIs7yM99<}1jseU27z`m?eBuOfxAVoOT3k{b-1hV&%3_nI1WDtI$yyA++S8NqKuM0< z)Y~edF=selbf}8Fk$^dYUe2Q^Lmn6$n9%7U(NQOw3b^vTN%+!=HbU&{yzyID)E860 zstzTI#GINMNuBvKG6P>%K1qxJAa^6{iC!?$TI#m&=eSFUvb+Y@?MSTyS|Xm124d7- zGf14ai(}tEqeQT{D&^%S*09+(ef|0ZuQfj`iDCVxV!c%GmxCES+Ili(6n(=t4DUe| zppu!kCz5(@h3_F(@bR@~8A<5F`FOdQ!B3elkt?qARZ_C)7qC}H-8jUA?c4#MTZse- z+hcA6VNdPT(Rp30dP9ml8P?W=@h29Wq7>QJk1Wtl10wULeAhYq|A+uXki z>!VwPlF%fZLfOXG!(?_Lqp^z(El5hD#5H^uENiKc)}7A~?psr6tE7y{qIH@8oj(23 z05&rRLHu)x!UU1B!^Q2pG;2{}Ek;;Gyy!u~+dfz%LLRC_;940;cXI%yXu^k!C;V#+ zufqddGz2h5#3l9Whq)Z{^uz=k7@LS8vZek-U1zzCSnZZw8H)OX{ELm;NJ&!pPA18z z5Y@XHM&Gqp)@0}sb5u-9?qIB5m2bAI1B^|ZSw1y4>!7QJQdVxq*T-k){b|9PlbhR$ z>tx2{Dhf$rFM?P6vE^~3E+xgR^%bt#U2A0t6=pA&?L(ve=A6@V*~WE+VaabBa0FXy zGOfQydxHmQ1EVC8M*%ga6)$Iq;lfD8e7-i==0d+~GrB1Ll<>tjhduZ*Irw_;U59#j z7eQ(a)lx0(-g{e$+RZ?E?}@3hmTe?l3Pfy8e4g!j(-WTC15RcQp4-xT+R>AyFeN^dj4ArsEP22 zMl`T0u+`1=FfubsmXg(iy}LX@Yk$f1CsEp>^{}=aWfdB4X~^sr0}G2$?h~7ur>#*8 z-CxYg)bYRZNHF@%LGISHdYIIssn)8l)F(u9o!7!+E)PAWP6Q8=hEmIFszshqxci(% z=9P5&g&=Y?W8Tsao*Eks6}Y!)Z49(DxG8ay90~<&7MiWE8nZ%5UBFRwu8U*!xVkdX zSPBt1?wY`~}7is$6Fe>Al>Zd`zf>u84FNB-4w! zO#61Ul}XVjVjX`oUcQTqD^l^OtY5he=NIn)(GyB|5&h?F)Qc%IoDO2x<+mqDQR8V7w}ri;*iEI5i@Uk3|`1>10gWBm(z zea%|2l;}6)IbOH5@`@_4?K*&wzCLxR_I^UXO*4dTqEr%Yb^maGmjF+zuQ)V~($Nysy7e~> z>~60vFLFgu_i`aKEtaN3L!n}wg`)$WU#h+dgz z_yujQP|&`0ctT@X#~-LBRS~RT)Vxd7rc^ud^sVnH$<`#F^Y6>b;Bua*?~I5ylxr_g zo^Ze}rDN-X#N`Vg;xr=&6uR>9(kfq(NJ)i|3tL@P=^ke-O@|XBsgLTDUZ;|YgCjp$(D?|u!T4se@S()IOMb+vdyT)@a^A64d%I@N z4Sy81JOp9s^=^y6o;d`fQ`h4+Q~=hrUpxi!{KPD&*LmP{QYg@MOVt^L&;J8=EcD+S zVesB77Ht;pG~lR zFtpCGqq7tJl?C+`rw-2`g0!lbIiC|`h{z?bRXv4uvkDzs+l38N0#ogE~_&7K+ z8!lq8sEL!QA{mv5lJaQ2$)oWxxc+FOU+#5-2pUf0T299czdmRr;h(%Nd!iHaUK_;& zAN`>>dALSUxGZgtemj$S9#@>q#B>IW7xBxo-bVu1?(abD-dZtCQkbb+meK@Uh_l4% zE2%v0O6{`62KKcUHft*@ftxP-+9yj*Q&Y~*O1P4$s>Yf5@&q6G^46kPry`G968h!( z;b50rzo_G`mr*ftreOMkT1{~42p4aeP7A|lcd)H+a8i*h& z1bgK0&_hqh_b^wW;ANskH`n@?ivHvc6-4hUm6c=-@^?UWgZ`tH*z<~b+ox*Qq(&M^ z3Onb1I9rflyyBlw;3np#DSN@uJ+5CmdG%-`W%AXrC0K!nSm)5ueoM|hT>*hqI`=^L z;dVQ-B|B5ot7R|a2pPdlO29&!1J`A9V3O4|vrEMK!0;&qP9z?4SVgfrcec^Hobp`= zT}GWOt%SH3!}00lo%#8mQ}T!J~8x%Lvz>}b*I-`QL61RNar0z@>?-nz(CBk=oxE;2a zeIkS48uqEZ6#Gf#gdtyDCw%y_W=b@WfR?nn5FsEpBQTJB05Yc4sjn~KLBQyA{Hqn< z!*8VnosIX8)kk!HwVAbsR=%s8KS?#)%M`frUo%hC*0E@eP@k!`{Ir3~hHrd^y0@NC z8D_5qQmC%ZZyQInPF{$csBaBM;jygVbx=UtM4*+%T-IH_xnL9hf(2W;JjfGPf2HmH zRBVDe+hzAAmrPz(sxlAuqeYIh!i3?#(a<3+=Funp`5bQdzo)7(BUTnR!nbGeZ%?M%;JUT?*Fuq)lW3bCob zBPF~kbeaiOxFGaAL^9Gl8@Bbzlp4msX<79;_!j2tjQs)Pvc4|o??v}FY%%%t%;EFr zb-Zsq&3tH9u4iuse$MDAlVaMz=M9^^B2mU-)IGVQE19HV6hwDgVX=pfjgK!B74iJw zx8G|}9dUkzL}Z0dNSKtCM#_o0%DucwZeRLXQ3OBj70Oc;v5e5>akXdM_f~PF_0bFE zh6RZ2EciwC?WD9CaE#8?+=8XVD`;h zhXu;`P!0VhH`3rZ#DEv5DI}065)iATUnwF2@jY@KvwTS?O1Bg0g3iwW$kU2eio22H zwVq4Z+3|F(nxz`Jlw1C=a|Xui5jCb zF=pn8v9%p$gnODXhdH<#5<-*h^u4Je`oY1~Lm>ON5XDjdI3)(V2bO`WcKr8))YW$< zq6hSr#0NNR8_{>7_(At1TI_Q^OTq5P_cbI(6f7Il&6m`bI(lk>n2VHx7xM`g z&d~Sr*<-fW; zW~S@jArTD7Wz7)iWF5{meozcDn3N+x3GjudHb@GSj_NO>wiZ`bELWhR9r&##{7%WG zTn}WPxl@vmHtY zhIzMH$Ub$E`j?n~_{&AW;OjP4Jvs?ambCl6keHqGEnZYDdE4^7hP>qApF<@%CIT`P zq>+%Z?5>>%4RcDV*o8x!-anNIM!V4EL~*GO!7G1@%x4$X{3|wsE_iz=#7Y;^yKPdr za$qK;&5{P4$`2n=YF!4^61Q5$U$tZEijOCyH)>+JtMQEwI;pF=^H`=1o9HSjL%la? zDX0sErCvH!=CqoqacLGfQIAg~@#R}@!58N2J)Vo%zN;H}BdRpz=1h|FqD)_V2g&np zN;hRfMvtfR=ak3t6+@*#^{iU6{=w}9F6CsVb-6c3hZM-Z{G>~~?idMVt(FKc{fNbl z+W6qP(W=BUjkyi?3O(7R@ntY-D>#Zm#?N|&=P4rzyII!Sa^mfHGJ-E@V&Y;AG5MVW zOVxA{N0V%Zyr;XM>R^`@zw(;@Ch(Y;YF*IpoMFw-< z#*4)B^O@SFi5zF>POcwnh&Q`ZwA%50iH@z?EE<~Y>sG&$`j(n%Vc(F$)K2{azw^e6 z{|=22LH&fJ)kGaj@j*Mn4sFk1NBF;#fg2Tl{H=3JWFkKo6b&Yo4~_^ zJuInVl`K^DIVd!xXyqUxZ90zu1~o{ov*HQyN22nR|6GaIXcX*%=h^za&iBcmZc^Bt z&T^!-M|GnI)ywn}q=sLNF~^FF^C=q=Dfq&TrHmIKSH7>C``tl+_x_J;f)93FG7Nmu z2Mq~1`}j|l!Mr<_--3y45(yEReeL?m$|5&f4un&aCn#;iYN$9+Q(%_u9dyb9KDjyC z3;7=u*Q?SexnFsZ$jI!%hG$$-u)LH0^MqjQ2!M2B9Isqm^xD|ruzE+nLj7iIoJtQ0 zcI9T+>d#i2u@XyotgEc|RWe2t^!%#EY@h7gwO4}qzJL0Qob=^O^-|l&wWqtzJq7(`}dUVkU-0`av+IB1tc3#+kFrelM+xi^cp%rgAHRNT_r89b);Zsq;`+lps9g)5-0yY?@ADzIXK$Zj$EsdtZ}plB$#5UUoz0~ zks!Y2POloOfJr97?*)y9`x?%OpA|*I&zH~Vp;aLZeIsUC8rtgW>Kgd#hr26dGltyV zBTlNCw{8WJ;(^dovbkea4AS<8+H`--a7;|-7Eml}Z{;mu7?uK<%B(3LbQ8i5z9>&z z5g}3J8K@O(`G67md%7zn6IrFW|E%g9+Dd0w%O?nwnOrEY_}n_Na{9|_x(=^XnT76` zkR*A`Ao@-AXTNg>yN;u%Zh)#`E^R@*k^~T>di1CjXx*B*ePn$33dm4 z?Nt!QpjYGMmZX*rN`zZ+_*Av^)_}{vo2gfS49%dc{|G_xLb`l`6?eKH92S;<72)+c z5@8<4j)Fdv!`?njI2~qKL&oKBidtLmE8llU=C=H0Wpj%Gk75Qiam^um*YUS!XPIkb z73Yo##`zl3adF94ZrQZ~c>OJR7ram#8BYJL1-MvY8Nc$C%?abEtEemz<2Az`8x*4pCt%};Yg0C zVpA9STVgV9-;<|Fp77v(hKnt0Xth07LBtNb41dbo68+ZL+A+iGDiQw~0CZr|iR38= zRaK@iL|vmyLNR)yFrj@CpQ2Ifr{InC7JN>m0_5Y9+fnP}6hW9%5ajmHoM_$oM)d2K zscv4S=C6~@=))sts=x5X!D3-x5C~LlaJ07ET@IW)*)zz9*8Ey9vO8S=Git;ZI^qjb zXiw!EXJ;jo`-vfmX+`{YCuRN~*1VhL$er~e>6RkTZ-2h1?4@2_u+f1-iTP946fY2@ zS=*%17u^i8mXANq0Y}Wj1RINmMAs_tB6zNBQ>4Z1FYU-wnFP;a^b(V`+qg7CF8N-G zH#T(j55(iYL3nfe`7N_c^Lq2@tJm3hxmONU+AVm%ARq#R4lf7MTniaoT*0w-h@W=C z9c0GtquwQmahV!*zq9S`?LL^V)}{laiw1-PVI-o%neM0YRc{>Xxpd3Uu=G^TlofcN z=ym3&r>1lo9aQO#W~-%VPmQ4XIGi_g48#u@)~_&AG>-a9aE0AJe9+7DHeiycUr=lg z`-7?&dr&*c%6e!sGW01(POWRA7l#2>$p?@zB@~u589-(s&%U+Vzlfq zQvo)rv}lPU4a_8qEiUq3_Pz5Y4xCn-2n<5SoTb%u{BT7cv~@|_%l?(7AvMzhG&pEZsvNgwiYxu`Bkx$`;sPY4-7UHEubJS;M62wf1 z;+kBQ1&Ehp8=1}5(YP7TP3@h2SqF8E0BGo z`tlXl^9H`>Hoow*y$@04xS{XCuHbNKWkn%+)Nn5&I5?Q2QkGo?`OoLM=7}h;>op1Q z2k$2k)jB@idV9fJZ(DwSJ`nn`QAbOSB8igHt<$8!ZkCCS57M^!a*Y&AuZ2$HTm()k z?K@hWF@T@G=Ox>>fQh=XA~}lsXwFCJs@@8`AP#zZ z)dlz2+roE(bMt(jy$lF`JL1SO)FRX$!=o7Gu4+H`IyXYDkBN;3zqkiI#*v;vGZo3H z_@Vvg3^!z9NM|`!S;SN5AiB4|vsnxi^xC|QNXyMd$n{iHiKi7+Ji_uiImqb|{r;r? zbkRbTbXAt2;RHbYyO?5YX`6LgM zyc}=#1th0oA~Y<}(le?~pjjLI8lM*A<<*XKoZDnoXy!P$ zxpCCX4gIaj1QIIzJ+1dVR)4r!W*yU{zIa<1Mf^3t=vpL9z2e{U{bZn&1&^*=V|b5E zok(uF6xUzV>!E$FMzIb}VnmqyBNigB z3f0@y5&FT3-`OF)LjjGWQ*AyXt-gEQZTYpBU=62S1`lxe?L_}|+}nvv-a zVlwg7BR$RCPWjzA{$c;Fl`reSUdio^`sv zmxYNiUtAJNC|I|qt)iyVe8+z@00vTi2MH48BcL8Gww3?>xVFCjAWmxpBgg9z-8?}} zL!&ZbUUGc&YvmgR3MD7_tv@-#=jb>DJd@a~zejVGi=0A%(#sb}T`O}kZ&yfxZzTlU zezDLD74>FGrsC`1Pe5ZBPx3Tjx`ZtwR{(Z_cMeIc)E2Uy=794lL-3(m@MfdH>(2J+ zuso+Y?R4GOL23atvajlJUwI-gIM^5d!v_T2c;vO|Onk1pE(0Ad{)5Zlh^q#1BUgTY zgRd}z1NBfsfkOKXa%JLUN2P)niLOp+^mt|Z4|CHZ?qzi|I;Jfa+a1@}4GzP{#Hb@5 zt+UDS1RC@w1~1+r#o$_co|~z(h|%%Vmi(xhIBJq{eck%kyy&BltMS-RyCze2_q+I& zct(1%vonWoObgp8cvWl*qqS(Po@1V!X{Ljy-mpVEs zg$Dv*Jq0`ZC1$%xwG`!PAh_VhdW3j34n0IJy{at6945zU>dyiV0*QU8%az<>t>tu0 zl#uQsf55BM#cld^G3x6R;P2TVb!1`cV zC4O?9-5DhCbmMIo9+9nyw^6$A+&WzRk#2_Ibx@+OZbmNIsH&<4SQn5m8yOKr+T|DM zWMd=emARb?bzowxH2!^yPV5D=IwR@sa5C^%Rr$pq%~ZqvzK+mF_J#L0(TU6P+X z+(1G@N9DS?5Foj@g~MlcRyyxe%7KfT-sF6Ud{ssQM^#>AG(g74Ijy$~683rn-Z0c$ z9?oLK&{^qwd%L+&xAumIhbznDN%*7Rq3P==DH#TKE2(LL@Mb`)vd`iq<>)^=1p2fK zyN$!hmFPA()8utjM)*O>d0KYHI)hSEwULjz{|1V{z&;BGf=W9{mw0Znn+loye`LyGYM@8}R9eJR>ci(VvCj2vjAk#pp#x1^3UE_6(ziXkl`4 zvgUsHcbEGtX~Xy#x`5weke4(j;Du@@WiCsyHc}xDwHf8FXF~7Y986jq&xSrtP1E|_ zEb3YCqX`xX7vc0wA$wXy{d;npHeoHdE(4nxppn7Oc5vd$@tq(QpzXAPMp5 zA_XyrS81WvJ^2C`8-H&D13#4vA2{cxWPom3Ab-yGFnuX~X;l2A@SY+a9#_TDr_XVN zjdt5PmL24#WaL`PW>03M@OFRyY__)x^D*Q?X&mnFtC*2<%)`9_<1b2qbK1-mS)Dd7 z%D3h)#c)CyM@wm#nKzBUH+ZQx`<2tgd_9I1`2W~?>#!=juI*PvQR(hRx&)+4TBN%{ z8tLvX>F!h->28o%G$JM49gFVVllyt@_j|v+_w|Q*cpz)JxaKv-9OHMMCmx*HM73-> zCrCNrFa3?o&26TePCtVZ7hS=LVpW3I{OftXWrP8F*PMXk@v zrl*&TqDT*WeQKrmEhRXVXO+h`J~*WFx9|q~0?H3JX`) z#-`WD>X~B*d0zLM4BAuF-JH=Gn2paZpPv+#wpJFYH&c?4%>AT2&T)qySx(>GwiJj_IeLLT#S?_&Fl>Vb|558sm<4r!_n>=n>3C#m$;Lz4nDdv#hfWf=#M2_C8XYxtkhYd-Kgp74B0=^lRtvi5JXv z%}M(w$I2HSK8K+Oy(LE_^|e77ev-uDCT z&6BsAx&8h9OSi2{y2s}NU?df@M*ddd>H+z2h4?|@2g$UU*xkjnJ!nnk4i4oRp64?_ z3fV%brav&fF2+@dY(!%zz=I?~JRE{EXm`7S)J7*WtFM?j#S+tTfY={9XKqzp`ZGF{N58NPz$uaUNmlz~3}-2j&t>_VOB<=2 z&JSc|Z5~u@3ghh1Cg_iC4i@g44rGrjaRIlty>CDB#uqZR-wjalAAf~%a}vgv?k?WD zVW@jGdGho$H6@uR;fh?muu@=g$vuEYqdg|`xCVvnS8EH0d-6Ty*OOFy~Raaa8S^%4}ZhiMWO564J z-(CQIlioq}WV0@@Y5v%kRCzFRC4{%nl8}wky}wuq$m*Ov@ytM+myirKO8CtfYeW`=HHS(lB6DRqaRt|v5@NxUN?>4M z?vTXHSR5ORrpOy-+9NF^Lx#(qCw(>s>%2SBuY3EeJlLpy?jBy?QO0O6EG$f#xnQ|M zTs~;s(i-1c0S~E1h+%8GY9Sj7ff2>`Z3Va{axVTF27>Ez&Hox^~Fk* zhaA245e%_T{R|xWZ`Qh>vz&rw=(QE&8|f+P?a#|r*i2;bBgATgz3v7Yzih5@+uoUK zn9-883%KnVLB^{-gN!}lwGN`4G-IOM%u&HK1}?6*5qcg@76`O~8$qGRH7Ub1o9pjB zBtVWH1`H_h;zB6nW__}3ipXzhMMU-(ugvGbs7ph>x4qSNj~#1lOu?4ax}Hbt;lwo! zR_LYihk-cId{23M-s#ck^6H!2IhJL(^xsc^l? z(OxR2h9cit`z@Wv#NVzcp4#V4l2yZ}cAH;wWE1s{T)TmP*2Sdc<9;*UkGV$?3b;MY z2PWzA&n+xOm@f-|Lu$G73?p|Zk13BXh#T1N+cte~pVnw%{P*T%IP50_m!>s)B<)!_ zuY;{cO03j0O?E3V(y(U0bLJ+V+J58O$feJH3VI@6SW?@x%HDF3yBP8<@~y$w()u0g ze-ab5{+|0w_$5_p5I#Sy|8Z(ju7@8`ssCJ|oRn-K z!KNMCh4(y5*RoIl<|>KFTl9xAeAOH`=v+NrqZ$U_HB8}mh;hz)U$Iu9Z)AaQ05l{$K8bFWKLF|x$*I06janw-`Lny98p{Dj4qWlA@CI<@-z$# zgpU`OqAZ-haw-4M>w-Ut4r#n&L;PRw<>~EUJiYJ#eP!dtr9OS5|G6+GlPBK&_p|ut zx9mc!0u)PEz`egcKAsf^w#fMf3xlQBQlEk&A}0A+pqZH|Da!06$;mkW9rj^e`}?pD z7$RvQ)P|t#3Vdo3KA|(U?Tk3@b7LG1{H31hcIFm1)k>BbTr?t1ds6V(Lh<0>}2UGM`=7!~d!4RL>AUAwmZoN*UL` zPEh?_n*aQB+R$%k?WSv@4s zev7GzlG4vxpDj~eCnyjAYVVtxLMA6Bl$7FkhzM|Tp$EHQ=wVRQfH%T-`{4n4NZjCA zFQX3RWx3;2S-*r#RGmG$U?{Rdm25j;u(Fyr2!_T3o1hKhw0b2^&ud{}W_~EgUOUBq z{%)2F7y*L;h$=fx0P5q;srTV6Ckw!Mr*7jTNCcRiM-H@`UVC4yM)}it0gL)d@^2M3 z?QK7bo5jH$nSHJ=BeU3;0~%h^l#d{}+VEe zMwAn9Au_AB_;6}nT((#@udAu4(S8MCs;{Y`#VEsp8Tn3KmEul+6CAQqS^vBw|GGj= z5uc39HGrA)$Ik)uuzlzrJ}$1ZY3qcFby!50Jtu*bJUXfJCv(oBo zQ?tS{$~IJ|H)QX_C|XID;?5wDor$xWr<*vpGB7rEq;-X>(&qXE^YScQXkFR4oJc_b zx>lC2s9AD!YS3gP?3LDHOV8YWl4(wH$YOkWwcnjABj; zw}zj1<}k{?b8w*d&jN9%`>b$!UhWMmk1yK#8VX9ZYJ_l@<+0q&sscH?5w^q@twM)&qStwZ*nE8$-Z~VYL{&z`5!mRC@VI(ZDsrj-8 z7a?2POd${D)k^b{=gQI}^pS#+GLzGGU)tKuAhW(JnhTO19sPdzR!`WlI)YlHrst+* zfq>2ea{$Z#SK*|wBKVf3o+(mdcY6-p{;~>I2d;ayI8V1r_IW);Y-(>LA&3UT9Mrw) z6rigyUR_%q82C)TlbD;^jpMIpW;U?nfQSIZEr?9c&wbKA>j`?9eTGw@2};H(7z~{M zC~h(}6z&!LrNtO{h+#FkyTzn1($fDzkBf~v9=NInaYGyysWTRgwB2+Cpt(;)MJW!w zc<}X&V5!jnRv)&udUgs`qsczn%%Jne!aXMNe%sv<10P>gN9CtGiaYr)OjSWIFDIu& z3O>tOC=pSeQ~8Gjbp?HWK|wE#pIe%C%_jRu?%t2TDkdp8zNB#zPE|~Xs=^;}Ctz+I zA0Jtr(3jC(ToO6bzE-Sgs<3)dP;MC`Yg$-+d656k4JRjxdDtYTQIOd zXi@Eyk{&^{=5Tj+H<0puUhB#ixUL@Qe{KG=_z-l`ESRYk0fD}P=`_W|xyDAu0KqplGzJ!HvtnXR?l(uM9;)ysN|SJHD4H(tlH3<2ZW?BG zb}XMmM&;d|WszmnD1>6;;(*sgH4Cf3n!dQWxIDragS)bnjKEr!BgYT*H9dF;Km$Vk z9$h-WXy@x~;k~?Ov!p$-+mSo$5?&h*JviOy*WTUTm6U|n)O<+yr{>bsAZDoFn2rUO z^8^ttN!=pjKuO$S-%?%d-k1?}4z@bpEV3>?J^>c9-q$OZaQN6i1#AZ-?{`VTV^>hc zgKcuIo3}(PN1oS@T>Vz;&4QSr+5`Y&3FIfM(Dz$3rZ| z!kLqHaPW`N$D+B3c?%W_73D-tdaV6)V4+oW)7@-cUaAt0v+sM?(vrSUpJbk$Qw(1~ z`n&h8Ma#d#$MdwJXvW##1&7x=3kDrrcuPxY(Dd|+bWdt#H1u8q1HMn4m*?iHSeOxN z?1i3@$L5yOwNBsoEY7N#ejYx0^a9qCjK5Cp2xZK|vFR+Qs$(x$J z+0JS|60Nz!fHP&IFnbSiSN}?5_pR_}>b-OTsqpi{5r=xT?B_xGJhMt)O%r>&mm!wy z__V3YG8~bT#xuX8!cMz~vnsi z%_z|SOluZ8(<&*m8rT}a^yc~aGi=xfk@?D26|d5e5V*2~(6CT$Zf@ca?0V)v*4=&S zSE%a)xPFhLT3WM@y6@PK_m{$~rJIr3C_Qc)X2Eg|UJ9xInEQZv7(k3xr#BS|)yG4F zve^{AURT-Fa;qT`D7E0Dpn!1l+R#M01n`R63@uO4(J(gIL7S}oN-HWpVmE$_r~0UX zZt{G9!g3~Xe9l5f41mtPGpE=I2?X=)$fTt7B&ka+yG62L@bEE}aqZdRz%!tz*|{BL zBQ|Rs75qdoBMpkfKqa$X^V1UO(iaTTUOM{TT%f963u=gcJ$1bA1HbBly_9GBgYV(M zbeBFHal8_>u$;_5sgNB^qtLZ9;MNV3dlU_!^S+1L{I3Erb+#r4RXsRh54~(2bv)Q+ zrvypEKjLRQP7Acj&a~Q#S2o?h$P8Np0=PkR^p+4W;m#j)`bA?kbFEqmtXHAP;zb9I zpLp`!zfCFfT9#H$QnC39_*4!9lv4b+?5)-(`_!{{&;IOYvf|(~C%7t6dI4w_E z`>ew?6o)#M&(ti`vD>O+Fq>Y8RU+|pW266*;|E^TiMGwq2;xS{u|j?Ko}ON3t8!5; zCL#_ae0hZYyj;_@TTYHz9(8$5+oq@-NwXl0Y_u3%_e*HZAc*T?A}OLtEo|=U%qUNetv{AEK#@5D{fx8_rw>9Vr*(u+k zG_>?BpxbF?wM$EVG*6cA`LZ^=u3M~HH)%qINXA(&a&Y<+1zW`1x2CROemE#D#WiDE zo895DwrSbi-i$US^NIA$FE35E*HK&VKYGAQAAs|6A3YmdR$HUO!prqStdyrxHybey zOh~!=bm+MOt{sZ<-s2cv7w#cMuO0B@g9*Z~FT)1YAB@OUL&)^Q>= zg+utVy^3Pue3ug-;vXpDv3EH4gN z9uBa}D7uxOv&7uP_&0#5RDX}6gRLvHXF|yueejdR3=}D@KRGEaESa#3c58DB#jWeB z-ybSJ&nC_cq&D?yZhg|fD0Fp(hK3IFI}XhY4dESOYsKBStJ(5FJjYa8^Q-t6{aTT23{T3tlAR=cge zl~pZUd^jQ(0aE%8T-;3TrE2%2LAD>za+JFw+5nAULO{fOFv>HM;`yDt4AE(M01=Q> zR8*eLVu7FI-DL{wO{YWkMFNJRvwo=(kZ`oPU&_d5uZB!hT}^y?XR7+fapVnIO2Aaj zte9N(Y8-85O)=H*c=OqW@Y(KJKYBJnS4fB*!l9oX0vm~6#qqIMs!id?<29!d1SHqp zKoEDqOQ`AhOA+AMf$Stomf4YANkk2qh()V=2L~a{E<_z+VfOYO^Ix6mRm!iF)ia`z zmI-Uw$krp!%}h;kHhd^xj-elTJ;D4D9eqkZX@it zwzlW#xBBYy%VZ-e9hU>-6KDy+D(_fRWBUznhD`YHB@b^g1N~4GLhw9}7bnNpJOe$n zLw}D8%X^~62h8fZ|MB4S+7DK90;3^mx&d$7VVCtkzF|pa)GK%dc!^x{qu)E5FOlhu znLW2MaRAMVy$L!LE%l8hL^``?MO59bJkvjYeLH~gcEYpJTrP^3$L(sPdh0%tu3Ah8 zPVfu4kr=wP=fqEtp1x_wYR2JFhGSIe$->4pIX<`Nsgl}Y)yYvNEn^)YQ~y+!N?V5K zZi1KxfwL84j|X^N-rEy(3Xwy%EuL;6S=mD{f&nA=yVJ*025ZlU>c_21VDp6uCzN^# z>$+agsN0x-ub7Ybbxcr6((r?=t34nTe2j5E+S{G9wKl^T#-kz$v)=rLHlGmjbvys0 zr8C~z#5hkC56V86;^^~&1^FxAkO`G0I`CnTBTiiUBXytTUyA|3BZaLH<<3cXr$Dtb zv3U)`#Xn3Qg4wsI7uR`os*q?SWc)On)})m~o>-1A`uFA>R{g$=z<*4Z-&PB%Dff3~ zCgKWDfhV|c?Ho0K0tqR{=y*}t>{RC)2{Y?^&WVL_)&eivPXB;>)&kkp6Id`ciPKdS zH!1iexn`@afS&U9kbB{zLk_u*0r;%lgmAR1oWmwu99w&y&JFwxfTa%mS1~|rSaFb^I{2UyZjI*aKFD}&Pao$A#@kkH# zyF70SM7!<2y30pn^KV9A_SjhE(dt!SY1C{@mLy#lYh>POPpM{A6#35rkKu*Y9|yQa zIo0sjGBJiicUF%&vX?O+g$cl$P8h-(8y6YPtgK;7%JMpl`OYVSLWfVf1kac%KKq;a zY%!daiTUq_-mBpVgJ59yq6Aj~;#}S)$S;}OYjd^YAV)@Z1%nguP2c)<9mI~XBu21D zn0~V;FKq-($%FH9on~J-mrKr}qP^I= z5K-a6Zj~DQUZ;|*WK%Q~x1$K+r6`YEnT&8}gJO{oRV^jz!#wlD?P$6%l6CvWZq0YV2eAUwlraJU^MXjyV1I@I}GCtbbfdvtq=_mP}C6O!4- zW9f4M`V5Z+hcFREc3*`%!G~ruP&75!z9V_Dg|SmT=%Wb zFH;Vd2^c&0PNR39xh%y%{K3iNZCLxwZ|4Wanb~L?JC`U0f?t=dKOTQ2?fDi}qcC8& zaab*m8Gpb$m$6wtO>}4U6oQUvX6|w%cYG^xI5j9m z%idP*t@l|V$Jmg4Ha`33D*Vo~#5E_9ccqA0WZ2Z9foEqm>+A0pG@oeys^0KzgVgAX z+}mbT(&d&oC~*ziMtkP@8n#UIGQI$}O0o2ue?gw(kCIQH;U>I|M9rt@-_2IZDL%Ec zA4;RVS997QDsd0zDUR+mGgYbIbR-r2z&a#*9zutqJtr&X+vJXILh(!aM}uxfeYr09 z$ZCIi998r;KfkGz;vkza)t7x5h_j}KYGj2P;2_Qx5{7;9f;3&cEi(mTblX=yK_e42 zkQz|yWH~gmCeC{Yj+X)K%_ILJ*}Dge@F(hO)!K;Y@5^y{T?N%NG)lsTZYW^MMZ$Z6XpJ_ z#ZHCNYn^cX#7#|}DNQtqb01f$W1trtenpNdTMhbsF?OFzgmRz#Eq|E3MJDDdv9N5C zAh7id9(@6WT!MjfQHtXWM-_(f>=jHwS7pvONW@}a*FuY@ct|=?)(-8)@P3o6O5hh6 zWr}#Ap)bLx?vDEUWTWwg42DOnX1df{FvyL#2sO_ggze5Ml0c$l@LW->=Ql(4D%4vSH~PGIy9$5VzDA;Csu=b&lqnZxdY{3@ zaLKu7a4wNG?Y!V;L#x5xG{%IjhH2y`bhBB$oO?PM%Tc_P$DC0Za%GwlxnLegMi6I4&Q(Vnl}hjvu5@#EKVfip&bb4dadT z4c^bU#fT?kDqWHk1*BUC=XlH#oQKPc78lzl@MM42iV^m|;=xi!DMow@FFQFH%*_pS zC?CutW<}HuIHbs$mjuk8?g1O5+J*dXLtfggKUZ z+*aH6GBfkyoq+?4;GjVdGgfD?CfQ@<83a30O?V#`C*5C#{3mT2=-15fryOzd7&0f+ zoYkSZc6F@!)$`G0?*`@RDQeNUJaVsH?$|DJ@%vlfZA)F9v7xR}_wbOT5n)2{gq*3y6`Q!cN}1^iuc1;d3>Pp9Cc|p5JHtFXNzkpJI4ku z^m{Li+Q(rikFzSP2SIkaen1$2_iMsYOh!Ns+z)g;W_ zOjJK9rdPo*uqfZnX-et%JdYmsn4F9u5%VzJLTi_!!cqn%4(w)BSIW_wsHi9&yQ^i8 z65x5O4%^SiTCH_NB+t7*e!^qdq_xG=^0TDdtTq(>_e6ZWgX5pZ#kPkhAwwv(>?M*U zU5}d|Fc?Ms3Yna`zX<~9fh(Vunp%a)luY~K*y2n`ZhrP}AFqat4 zfB)MHpt*vH#TfadWs>E6+9@RzNcvl+Wd|24Eb_g3NC8ppz7;`4NW}O=W#_V(3ItVB`XUH zC5}m=B;e}?lDW^6o_?&R2|on4ISv`aXaEmr{%)dYx{K+zlDlT*qP#sTk8I%I})1q}l^P&N(YvGG zy`tL4qYxF%-2ViG)B0^Ep|5n|{7$a?ViR$ztl12+p2hWVt8s6pj5gTZmL49(a(ne6 zAk=u}y8n`rlB%n92LHt(5`l6z&4le8WfcuPr)^?)N@b|TSE*0Q8g9bH{o4gF0XTP5 zeLAI8@RTg6jk|@M_b@QWwze}f>J1L4+Rq3L3|MgEGFsn%9R_D9OUd3`X`P3{U&`q? zn&r6-g++~dxzlm-zsUWCyS%25Pki1%#!;P^Ypb!SHepwJdP?@?s0#w#ChY4niVwgk zSnGN>r&fz|;^TUz$AX%qMH4$^C_sLkQ1LRD{!6nkuzLv9DKO`I=i(#Vr0-af zUU4ZEUDF%hh1&V1MzcGBvI@7S^@Th|m2@yQpuf3&z@SB1jC>$;dRk5Ui$EK#G#;;XQ$z)*$_fWg+0B|&JpEp^EG#R$0Yi|LdR;Lshrnvh`Yl7G(HceR+7({ z5YgI1Z@({kyuHoBbR9P6jr3UCTiV~#bj4BokShBx%AJZTkM%?Oz7u}w^!99aHnqO} z-clbIcX;G}G>i7XD0;HukiJ7qZmyxF5{LHTsnZ-O`R7A&;HfsFVUGY)Vvr-w;4clcLr_ zMbAnn1VzRQbppxAc6cr`k^FqDE~Pv?2%M@u=^-I&uC1*C0Y#*umW|okgG2~?lA%*G z|6iJ|wX@>l;^vkXge6omH~r|s-(^-5Z+wAd$zwfQYjKr1Ln;gX9Rr)Pym>@L^QQqW zLeTTy#mDnIgd?#YZu6`^7}|;J+a^!v`|x2NUqrcqEWMOZ(*F&}5?Vym;e_qvSI&DD zI30fpn{-y=uy4|y;3xvT(zc2E&t#tM!*R&B-teI(BYXj(TvOyvXf>zQz=Frb*a#S8 z3^NxvA+TPoK}pY+$xrGXPy z>WK2IfvK@kU!HCYw}Zy1EYFQ}HGa>VTn~?-N?bGpd5V@*!s|gGaH0MdGfEFamys_n zcGKGWJVRe;g;<~E8ZV=CCtt<^RX-GJ&ZD-+-OYh9GSAFjlcjq)5qFiC)ExFn$4Ru# z^J(In<}VmxMOJ>jEuWSx^PZoR6KAM;@kY@)Bsa}53*0U2U ze^K?2^w*3O6cqc2f0?h%{|@$xQ&APf+nl?XzZ?84Sh`)Sc$j46LQ#RUDaX1 zZk}a|f81>t)7f2yLr5r^?qJgwr}TSd5S`A{#49yJGdO#*Xn{LV%duO-$dyoATmQ#T zyOo|@MsJDXr$&vbrsE|3(i!^Wns>_%A22_9Qv9fxSt(7uBCJb2sZxMG&&o=oi#%OX z&Xuy^M$qJw?KN^$Hp)9Fci~woNkbAss6U*?90aTX)93JyQ)20!*<~2vZ{O&F%RJQf%lO|Rv@2&MAXMmuWZSf;WLypG{~_0EL5-Hno;1-1e5xk*25}P-jfNuXu zfautMNtSbgUH_$QQKOsV$no}X!9fb{vDlzA!#iu`%iEYIwk&M!83$iT%jU@4zN|NR zjv&}o1#D%ytI%t;dCc$;o?w`ovOL^~d%>)Dwd4qO(9kdn#TJPZ${SjE5G-Nf{SAhO z24JQBY?Ax`!_pPgfPfjm_dpL-p59C%%ud>YuZItYs(;{m>6Y3QO`JJVSZ7Gg5ec&87`b9yGQjGZq0o7Tk^2h%3f!!XywJ6j{kU zlAiSS>+QvX>-2O$@39_;7u|4{yt%m@9F#ofGd46#cUyJw>=NcBEKiJ&Pu8m>VGWhc z08-lsx2@bt4NLtgn#Gs9pffPOBPFA=E%qH+#Kpp*5uFtkxVvjZJr zKT!p02KK^Aeh#EHQp;y}-%?tF+I5#~HqU72l~m%_YAih`f>vK}$+T!&O0yBU?rf;W z`vjHNT|~;HyK$-`5lwp^k8LPBS$6O7+TLvg34pDc0V@bIry}aD>sLiuQ$j34aX+d6 zIep0G>WbP4`Z7J5IalE!A%Z_5OtJatPhyrHSHcE<5`u}Hx?XM~s@hDg!8aUIth~Ps z&e211f!e{Z-sWL_UTAga-8lU(_TSPK33(ob2K>IDU4K`eInLyN6Rs()u5K_S<%(e4 zegZxOR;MmoZavLsdl|`qTadHWB}OOahLN$oovJDa(mM#NONsL0exOfDM+Hh@f&pdD zQOpLyg@4KK&f=>HF+Y>EZEE}R zT-r!$F}tbz71ORr?z1#a4KUcJ+3WlgEb&P#{g6bZv`zkpITK=qt59*#JbcP;B08iTr>k-E4nfcL~Kvfl8L!u>%qS-!G zUJkL_@;*aZts2WCvqC3`#bunL;^2nh)56`G#v$kWK65tty_`9E6a!J5ckdrUoW9ST zB?p(b+a7S3M{BnQJkIw+&z$#U7Gi{7qlydDA0``b4^9dT3sCXEmm1d8$r1?syhq3D zMnv?bB;MU4re<;`Ne+zi|D&8ToAx>dBsPMsL3?E*mo9WC7@5pq23TDpBI766=zSx3 zwRg)|rtHv)hMMH9z-k)%uFUnN7P6L$qu$!y9x(whub1izAa0CIE*!gbJeV)#aa*t8 z{%kV<+BOM37UW@EgU_vr@eDcWCRcJClZf9ml7)vcy;Vd#&mhWvAE!^-j+~(a8x*#v>l>Qy{+@psEU~_hhc{<$T)U8}BG=T^Jmw`M#k2`Afj~KRnFU^V1lwKE4`xeu5`vnAJMiypw zzMxmNF7AvH!ULR7lGhe%R_Il_>>ezQ7-|HBMd2!Y1nzD-FUhF;^sGP5RC_zKkO#-> zdx{BZOX#7X!5YzdK*BJQD4*sNjISQJjQqtTP|3=Z~lf=CvU2hatiB`>F^qGCB6FMQD8@vjQJ zT^8^kq`QPJz4X9s7Wwf+D&q)Yk3!*eKXdH$)AtZezAiRuJ=2$(f*6Q#pv zXZ@YOTc!7zhAG!+%HAvX4Wmox`qTP-kj?hsPPAm1C*ivr=4=^M)@M0Y4RMaigdxFT zQKM8c=%71QwQQkcCUJ-?s2ES{ay2egH|f^G&PJ)_P1&>iGW4G3jhI&%XlSE0w&X`p zO=qwBDepD-tVa{@xE2gXmv(-%RiVty=tf z-c8^uu!uXztNxb#viWM)s68TpWG^-Pa_9u&=wq<+560g{xIbYiHZqo!HD%RuI9E0k zo)e*MGF#TzFe>2F#M#elAqwxezC_JK?0;}y( zm@t?eS5_%LsK6i-qMC(#7NNVDpz;!rv?wa1+5tkjPJxH6ElfBCY6`PLNb{fa#%_E( zJRK`Gj26}MrIKdd!#PLfsAYzmq(&tK+2tFql@XCO z$)`yjAy;CBq;Iq;c(lEGMt&LVHhHjpq;LUB1jd)q#FN@-)ZoUe*?<@tZ2@19q{BwS zIV*1qVNzf{K1(q77Ai_{Wt4qlQ|6m9kYT2x(qrx3)*FD;V@W|nuOydl80t~xaFR6SSTy~h zF*aVXkXh;JH#0XK4lq895nct`H^c^U`FDZSojy?^29%79Se4Tx;!T4?eVlez-?Jl4 z10*w^nFo1(9K&*0y&A2VP)axb2Uu66rT~7nD{{KW?7{DG5Q4z8fgs(5r(iI|{JeL1 z4#7k`2;%n#d5rY=K#H8~gk-};-Z66fO#TV|z#+0!eL{9EO6nyNAR)&V%tiOx{ z0_1}OpOvm}qrebwsjq}I z+3Yhh=ta&r&`lD=Gl zxk+06d%VKJ*wt0um}1a_*|0^g&CRx&G^73OksWa50wrgyW*r~5+OU03`7YR6CDloG zWQg~nRT{kAb!4 zxM-lF#*{yy-&MN*MZblxb^N*LSWf|vr`Djm1jw))UZl<3OCbB{(;xn^#nJ0!J%jfn3;!3#j`8&4ukFpH zv^1`roYP-h1;puE)0I4Ly$x+Kwn4CbFc}pq-D!2!y_A?(kVmeW=0*s5uh)g8!0B#r z`NOd8W2=zfN>S5qeS}Q;GXs^`y`F%8pR}?ydG+PihCscVeXgLS=7Vws(6OiObVZ+3 zOhlfHlJbS+f*k%3b5ygZ`zR>vfNaOlLw2k_ zFVE4;P2=g79s8mX$6oy}mrZ1#fWAU?7rfEx?u5O*MI#b5`Ck?!SP&e*+X%Sq)~zup z*}f_=r$_;x47KF+bVGh0Q$A8MkSztQ(tC3^%_>mH$=t&0lvRQQ^@?ko3#PaZx=(0X zEgdg+0U54)I}z6u8N0U+AQi}qvHEf@dySA60QikkfYw&oLiNkDtzX9K&uQuT}&Mt0vd#Q6@a*^saiVvonypvqHHRw3YZsL0RP_)&4B zs`7UGR zt81Q=Yqm+ueuE2R$-qv@%QZ7oR7CS%M7iQH6-0rnp<}CpVFgwgXaMp6dvkVnEc~Uv zi@qk;o}MK>OcaPmjLghxGse{bh41CP*!gT40io*7;P?Fez|GJ9(9VB?5Bd~pR)yAA z2hO@Kn=?SWSg`ohLLz(Hrg;INA~t@8Mn-uB1zf!uU~xbRGhF5`X*#lgYG6rn%S^_{ zW3()UyZ5lIfF^?YSKM_&_WuyvYCxrohpTS+h59O@15PyXx`?Kze{;P*q+hqtyBNf#yL`5q_gw$p_gNp5;|6q7pN^DE+FZ!pcpu`gt7svBO*akri)CU<@m$p zb#U}GGNMRykOboM@Q(LvY#R6U=)3ng`U9UOM_nYPB_TWPycQ7LpCuZ=gbANMQNF3r+E8s4O;N7wrsv~S8AZ^@ zw(AA}QSJB9J=6%^a~3Dz4`AYJ0fl@@jGhd0R8$1ACZ9WO^9LH5uNn*hp%%5#Ra7<- z)zX@uzH)JPmi6)?;eouKR0Upm!IN_ z-OQz81Rfrag+*>MmjVZ!!09z!f1&JDyKktc&Og9^M8q>qG^w@M?rLrHNY5(eR8&HZ zGqqkLo@~rYg0))XXpx({Ino9-$#mUxJeflFzRGFY4W6~ex7Lu$#SoB=j5c~v2c4Mt;U2opLecQxd&sfyxgpZ!t z+4*8&17&sRAujb*CY=QRm!$*X7{nh*VlC*k2>1-otiTL=-~tWJCDh*l3{6`7p_F}F zs5JCXhw!Xbs_yOXl&F~E%_y?2$3}u`Ji}WGoYjQ}3~^qe-=5}AcIVXprI9VTuN0Mk zoj?92tbHR!&u{o4yHKR0z)f@Ve@J9hOL`Lc;J%nDI8sX~psY|yY}c_*F^};%J=M`hKlD?Jr46^y2W7e9AqONCVV!6{inTT_)g#Z~LpptFBuST%YV_Af= zC;H;_*8Thptw#BLivL~+x6J+JVOc3j^yHrn7!+|Z3Hv_na;<0kWjXp|T{A$&e^4Ja zj@%1|%+^Gsyz0_ZR8n$T-;Mzi_;Ol#gx(g$)-5ikv2nTITCHBfQ-PxEFKl)C#KU(b ze5=dbRs`!WAD)p;Q2H{Hu58B$b6P^mIVXTp0kvzA=y9b({Sbd|g3s@JE_+d9K0_tU z?d9esJxwv>8zgKG4kR|@0(;yayjogd^919%4KyN$W)laA;pn#ffl#{=0TymE2}wE? z6L@s6?;f#fw>Y@!>)Y0Y+7dNJ7w|j4AjN&zv5J)ySLe;*K?aWseRn`K-cTW;JYk=% zyu?b(GmiO^h1${*Wr~RxvrPzDLaKbPmc$TY%q*2mc6N47P!(m^%i!gv<{Mn++SX4$}jK;|0FR?aQ?n|QLN!mlY$-tFF|D!yUwQt`5cV?TPJi&A0d@#>^G{6Pr z`}y^2QEwC>>LBPI7EcC^Bm)~#1q|RN(BQHYDwL*LNx2?szMrJyHseePWL8yyq?6z1 zOwy%;6_+i5H(d_}N7wlKHyu~tiPckB$gJ37R#;GIa& z@Pi-T6{08!rTEjocnBSeV~hi7=hS z_xW!2^`dT-)c6bi_@j|9N1vCC2)iJ5JG&A{ih$JkDJA7or2JX$G{_x?s7Kkq+{^Kd zO-+rB%ZSKvxGc-~1c#(~-+k_9fkwd95ekOiRM5o6yVzprQ|Cv!O_VXQrkZ|4LO>XzJ9TYz zUHy&F-g%Wuzq4}{gE#>=R?mW9Bp5? z)#=eLFdjd2)=FXXgO|9LP*ha-BZE|7cNCEY%*+ltDocB_y;{ z*YXOF;PPN9`)gv*=}$;~xne)UPdKD#6XFQ$e@C$|I=Xt|s3J)fLI%0CUJY=PjNyRH zQ?x;~g4P^GdI1ZICls=*8LVSC_!D=xTa4M+RVLd%g{twCH}QbSqF;$nLpr^@KfsW>#fR9 zn&G_+j>Om&SMR+%{pVr+p?+P1Y`X^9{H1~QJlS|kvMF~Cl5==F*@Rz`ki7p#?;r}{ zdOp?ig^v=-AGCa4`eX-HmMt{|1{UbvVqACtXC`SgvP9A@T;KsJ`dvi52LL3MK8_;% z-|NfE&qu4kN!!&u7?|~O!q#{X4E4!TbMG&;>oQ(mTx1A%>wWkBo?Z1qqB+!OOa23j zGmKB(9{TRTy?`=*61xbXX8oOakI!pxQ&dz14sf9TF!(S)4TsX!-FdLkti$ELc&Y98 z6>S*T^pJyukvi;`GE^hMff;8*gwl_3Hq)*zw~alc=T5 z<490w9GJ+U%80rKXX{|;+l_pw*KM+seyNa_s+q-UJG4#+qe8b|{&r(1!F&pGn>~b) zXQU_S>m(ki5sW%&XSLXbiCsSOURhcB>utWQjJ?h;l$VPC+_qpW+AXwj@5ZJ1oc4v% z>o&Ub^I8VHtc=Bt^nC&XTE-;0kJ|YGV`7NP=XJEBVxruqG7Eg_8OrfVQ%degYfn(? z-v!mb@MwkgR!a$USXV-nS3ObY`a%aQ|4(^u6<1Z;w*A_mgrszL3kWDFNOwthcXz6Q zz@)oDX{5VBrCS;%F(swDnZS3UxA*ft@3*nmZ|$zJfeEw5xW;v!=W+ZG$N`%@%E;`j zg(;2&SZy^R5;Bl?u~_UScv#LBB-=lqZ*LP}8|R2-;6`q>1Y16}M#2`f^N$bRNQ>*~ zk!bPbD+$PlCYI@28f)Ccc~z%}R{uUbTNv+~FhsR|9T=8Y-e#!Xd~3@EY#~)%&#YL9 z0U2pohexuur{Oo}@S8{w1l1d736Q4pHDAI9nFC#wb^N6wdpr-0Bt!=01NeGLbPxpH z%YpxdY3@NAnESs+DCYB6jzkP0jkMn!)HZe&g5vu7w+~D<2%-iSbGA=(h{qw~u7hnH z(eVQ(YHDhQCcTGSa!~=*Gej>D4GoX|G$9qL@m~)HPxtLgtGLWZm4HP6GH zd+bXx1AC03`+N^4eJ7zCc!B2!#&W92!UL$p-1)++FKF67?BKRN9;tMSRE*@yzSXG` zy>~Zqa&nu3C?}hGts;lm%0=lVKS1<@1c1H)*taN{K6zcGP}Gz@(LlAzg%o6Etmzqu z7z=JT-OsB`hFhE}S&eP^=g<1SBLfTFQpIExArj)K8JTM$Mp_h=|b5%U%uTs#em_n4N_E;-SM5xo`b-hrRXk zb}<9o$m`0=QOp5CLc)t{-<#LL1_z&@D(dg+vP(iLdIX_M(a$M_*u zNtuIGt0_!Kxe}ybJgx3v*h1sb?X&-0$*ew^sBJl4?x9&OJw8UcIeVI+N^54R5R{XM z1C5#ElM;GjcCm;KD|l8rSZxgyp1;=e=N8kH9Lr1aszVwcvEt1oU{HOqh2OTu9-327 zaR67j@A>s9j=|eQ$3sMIIxM1PtvuO`q=lU$;B>1IK*p~COOLPN<*gHbr~!az=f5S!SeUp<`hI zjw?5?P9h8B*WeQnw4R6AF6mN1$mVEwjzAgiv+7(bm}FHAwfm`V&1v0*)ZwVXlQt$f%Kf>_Jyu9(cCP8?ccb#D4|};a0^`+ubmnWU<9Z|{d~WDhi&mBA; z>7so&YbX)Y_m#nnxsao0!10sQbs>ioDdoww9OuoG`)==U-ZT$gw+MY!3lU;uwb!S7 zlwhmM-xLnES+7U5){`o0}yMW-5>c}SA%oO)*D zN)Rm$?ecjj&8tSLa#%8b;iR_eL*dAhdEcFmHoA4U>@5lks;w?AjV-Hs$C6;z>4ru) zZK4@lKyBkP?Q9F#UX|$=%s+`BYl;e{BJh<62@c{mjRb^?4vv8+KTL3 zrF5?a;u4SP_k(J3ff`Bos`|7~x2vmD;Cf%qF8N%(ScHsv20-pEIP+kurxW!xajwhV z7k#Dq+jsH2mI6VOlUAJ2C!YNEU?f?8L5J<$G$ZEqLOuI9f^X)Vro9lT!Ay$TSz?oR)}Ua9XgnUbQ3 z7~jzmz#F~c7Z_HzDn@#z4`8#to;UW6X^0b0v>mm~Q5oX6_N~&%ZMk#-Y66f(t*#oG z8XNa6aQ_3%-I-TfvnL=V^txfW*#Oe@(k(!^&CaM!_qnK^EY&RyS+xDqm{)ttwdMP6 z7s^CAj{NaA*Vg70{J80qcY9;U99R>AX{R3r9ZzOZ+caN@N?AfNzz_iqPsVEl0OY){ z?z4F++=?LA)fy|>4^t+Ntw&4NCxwO4K{CQ+u-tV#qjeMBSH1a5oHg17Cj*WnXuGrC=7M~9dZF^D&NUu_em_uK=Q3P{caiNU~YxI0lyua7y>**%{+^|+xN zBeXNXD;lQX$;C{`3(SrCS^4+f;}YVru(9bk_TsvOtinCDIJpTOd=I*OApyO;y)k*R zgxqelAX4V~7|3qIhEvCs$JQtpUCI3u;*!dXzp!bikr!rWYIPnPacuK69d0a;;u!W{ zm;}T*r*^1ljK-_Exa6wU*>Bd^7)Z5d4MSK>j3Zng^9*o}*5~R1%*L~1KHt5-R+^By z`uh4I_~1?XwAB+4goN58Ce6g?U5Z|lrkXgz&zoi&$v;XcRH|8{!c`xP{#^r-t5>dC z52OG}v$ZD!dDm+1XsSn@8SQZV3M_D4unQzIXV$#t_)xxjYH~Cx9IhpVov3IpuJfi!+SS;4|Qa-+y zK!=8}jN()PF8bqqp6j!S8}Ss(i$j5%KCuWW76ku5v_TrinJ2gX$*ROslXcV7K`|N@ zfBr}F){7r=Xji(fqg}F}Ma9ynwhwN4QKezAV`FolF{S%$+7Ad4=lf@c5|TIYulTc zNPwzfaD~F05Q&x%+g>sy1?!%|wJ6 zXcn?aD|6~<`y#pYF8y?5H(jQZq9VC-jFNa5i9`*_2uauWPq5Ztt+;<_|t8423`xxknVQe@bdEC z;#7b}_^F`TwLF%ccx5)rbFt`Q11KBFJF`2}Qi%A;13e&&%Fztw`H{P-mjJ$GkMhfr zi=3FvoX1XD=3EE2$jrc?;#fh`SmYHO-XAHCKA42(K1jd|+5`yR1vap2uFg4*5=xmw zV)5D?uszQ>5OpR*=5evx8_weB6qVe2KpIhAjt=RgU{sjm&22=S1 z9sIq^!>J=#8|{_rz1+UbDl6Cf(u(7!}{`kTN^$+duRen*EXrF&#EkJ_5Hf?Sboq{jS;|27F+mcx}%lW z0p{s}i~Yvh*0_v9M)YP&=L;L!AvR%))_arzm+1Tj$m7R|{Uo?RJ{$2snZ^hiDHc6hZ zwG0X*WUHu%A`sQZ$@%j-Fse1pg4DPR4hg|$2EtXTfXcRAYU|dvxu2!^t5)DzB9`-s zi1Hqa36_)D+9Des)dmlB6$9V= zk%IGE^4jBSwRn#^th%ZO=oZQt&~RpIT_c1vM{K>0xNdeyyf|OOqH=SofwE=%WiQH{ z9#ng7u3_3ki0>`Bd%bI`{%HwO?{~BcDIM50>c%1=-TSSrqUCJL%2#+)Odr-I)o$x< zS-{jqbA1h8{LTOT{L{kBEx#xWFmATo=lsgc%fTrdl(?Jj{$r{RxHlL{yWWxPliqt> zs?(CGje;#`Z;$SSMdF(2ncT^QIPMxPc}co4?R#14tD1=`n`8Yp?rfNE=T!T|O40{4LWGgGEMs^Bu-9p5#=73Tz z7#rM<@I+r1Lr9DVUT|_zC_tFHbmF+~+aeBmz zjFi=wVFOk#_Q`^ERyxuX{~FJ14^eV77ogLjRJre3s-6*sUKX-5SLzxXW=`{K)TK6A z^~0J6)uigpF3%8b7M|+bLFEe?=B*xACZMqdn<3aoQ5Fk|ABk&U&Om7YPpj^9}KUd-z;BMPm*s-lDMKeue>9g<0*b)v8O%9+c959#a z);novEsz5sP;@o|BBJqJD`(wIYa?OVjDi5@-63q(fl))(%~huD*{>RDL}?ip%ciLc zyl}?Mcv)Y92)&)0K2`4-dZ5HL9nvn-ux^q2R*?5J^y3ueYqR6QIqvNXwU+I5Jj?~6 zpj>4!Q<`KWsd>xw&LV9oWLu9FC5JY96rb)i zIUFa`hM1VlHq;`nTVgy+vt`X;IQ4p{1R8h;D*WmuzwmU_)bj(>#8JR(&U<08&@96I zCW!6aX6`D7fm!XB<;>UOA7wN7-$CaU3Y}SrMQC9O+Kd8yNOM&*`GL>a=-*Hafa0PG zUcTA>;0+Q%mUkB^|CgG0;0mLdD{c(r#?q&SMKKz&n9hj zTcg%!pWq>XbdSsYIM)&84CHa-fuy65h!80W8CGiCuCyhyvX6Yp-~Z0 zjJbnDFR=A0ib*M%h4l3I@|OAPYG`Nxj-y}T)45Si*XJ3ST@gU6w3vJ@#?l7$SPM|K%Wq2jPRJ3uBSJ1#yq6PPReM0P6{tICToyu523L#;7h%^>q}o{N^& zR(C$%8JQ*+nj5R1_HXL==|(j*xh&H#}WEtL6^A<@U&~ekL&hu3<)zdLY3tHD*dm&IgzzqZfgJ#r~JZA%rhl` zNxWSof@m9ZaO&yS$TLQ z!+{-o@g$8qVF&;UZ;xS7S=soa=!n|tS}xA&TXEg(adc)UD+2-K$w++(IT;xa{4g~a z?ljQp1KsZPbN2x7$SX#sKuQFZ*e6HA4v`=Z7it%cfeAv7F)(F-)Wy8k)5>d>-{KdO z$Dbc5Or{?4iep+ShTO!)2CQ6d5kkUM!^o&8w@gmR2Y60l-YuK)_Q<3)l)rs>|2Z;o z|DSo9|CdCn`sMF8>Gr44_5!$XSBE>fD#%@WV(kK+ATV!jQ;hDcC*k=VgJ)0`^n29! z`{7?lTE22zty1$@i37?h$0q@c^`;q}t-vW;yF2mlrl_dDpCa(7!Ge$X8z7N8s8eTL z|A^bx4}eSy^0Xte{Pw&6)^#cFDfSCA6u$AgYQ7bDYfSZQFs*ehIq~+DnZ#IE?m*CX=-JFJbbX|HL^G&T4Mb7_wL>8Fkh18%=NPoV*-hx57mNbP4?E|(ZR=; z^A%XO=ypi z;#j(o?)8W&)|0t^Sd9e|#)fP(G^Qpddf!Yc!N8FL%NT5Oid6`nQNKK41m|P!e?BQ| z?Hpq&qV2T1DsG3G={QIr>9xmS#mA>*+#=27SMkp&D~euGmA7xno=wTHbIW|WRb@f9 z{ydFLvszbJI#Juw7E6_{$n%R|zSr9Z?lwNxjv&q*eB1z)AuY|w*bS02 zS@RN6SXpHgknHEf2TPLh1pM&gW3e>BhEhohL?0Q3mjm5PW#P=}=(w_NNN{jD4`Ex| z#A0UVR#9m7^760(Pv*9o?&(erRfih5vAk((YuN?kU_%MHE+Oz~gIf;R@BnOK!C5{X z9gsi7V8%@Ocqu0Itu#8gsHn)wa`IaWdBN*O&1-o8wLx2oM-#ZufOMyR&cTz$SXU6B`SAypDRCyL{V8;PY%ihqz{%O;xHjj&yt(C<^ z=Va@+JnR#QZFvkdDrN8P@xCUhtE-y=r86V4U+vfaoV&RuBW<;5%MBa()M$?>paSX~{@4TB%G z=C*#Tz{na7`qEx`WoSr2k=4)&YNGaz4p0)gx}NG?Dr6a(sL2~dghCYr&vKg;Xfjp4 zTLeo4Q)k&*cz6K1*aGh6#*TW)-6i*deq?29H^D7XazulzuW-!cq3Q@INpJUqxNlqZpk==FPHJ@C7vgNbxKLj zKm^AJ6b2TCalRn>m#=xACu(5p)_SQEh8cV=Dsr;0kSy_=GpnAyJ|^f;~A%Bt9XoAgM+Kk%L@Ty}5W}MRm~pmxa*l z?Y(bTh;@BpKr{e|aOg^nK1=a7KO4cY56;8Qtx;M0goTzE^pCzhjdoPi-N9_%6;4G} zm{e_IS2eG-0|Y?C8iRUwXFdhAA9J;?EQ@&u=Hn4(C65PlLindz7_*sT8 zQ=B0N%`d(gpKF9ow$=fCQ!cYh@F#0P!xK~!j_J@eQe!k7(iNTp0cBg(<>BJwi^k~a zfCbFbJ%lO8!Xn4nj*n0L!a^5we;*7gJCw#u>4Lf`-p&pWpMNTU+$dh6F8?!F%kZxH zl((l#U)R3O0uvaO7Ng7p)iGES&0&a_>ZkTj5;9Gb3w{V_HSrNY^Tk!V1cX;wT%fL~<-hUz8nTEQ;l!Ll z@aD4z&@d^OGVzKq`GCUScD{wZxk?gyX0>3|W#@THOvh3_N2KV$K#%+J0X7wBHdDt3 z7&0xJ`%4T_QL!i-MwMT>Sn|P!p3FK8ysWGR=UNhZa{QmYxj9)ls2+}!(zjUhzio<) ziD5Ev5w6$+%GZh#oFS1;Oy>+2Z!eu9zfvnRx3%Tqr3%Hiiz!>`n0=qC`{&(|?Xdd# zSLOGk7EmL{gdqyjJdox63rddt?GUTNXY?MedHQ?R7K)0Qwk67(#LI=Ox8ltswLcn8 z;o+U(tQxTPDH<$Ja$PN_R7niXc|JQ#1AT4POl(DC@%7*p(96j{L;^~gOjDy!uAlk& zQ58#KPeUSeX88Qjo>xSJhevE({MBAg0dm1oZFe}ey@~woFA*N0w+IvB74SEmz4!Jk zg*8!4*f-80(ok^HD~1{nP_`cnJJpr8`f}7Sq;3^~SdEaC;NZuF)(a(MsH_1OMWSLlX2e&{xjg}qM53X9KzR9~?P zXNvD)80d1y@t)=%58pN=0YOcX6REKltwwF+J{3nZ5fpf++WIw$Ri;fb>fac<(@qk+bayM`Yo!14|K})$ zQj#HKhCc6fKIhj6^Krc57>5ab+I&Q>@3>FVcLKyTRv76aMVbKGSFa)6FXX)IR8NQ+ zIJ*9wJD(&frCr~BBY3GHCDqAgcb+a8;S7s;^1+C0rpsZUUXTd>)0Fp;7GATjw$nS` zTZ|CG1#7s}^>vhuRF~gaLvxUQ#yjoSpyqw%% z#+MfE*15B_ZOmXXEPnb&_ilFI?R-Ub9=>`*7Y`Eg;vzt@V4^hj`6gG(wKWwzX!Qn% zQr`=4-Pl1vW;Chn@96=aPo0s6&joDBjMg2rTO3f5#5+dAO4n~wFyD;=8*yuzNZB8Xr=|{gc-sef-sl;Kjow-V>ilj~L380~m1}n>*(<1m*$Mt1d_d0a3>~+H)+jML zX1aKFX5c@4d%X*T(?Vudb(`V9)ahuoEt-FATOfT4eA}A6hK246+vNuHM_zZg_2;dw?n|efnc0=&tT(i zT8lSrD#PQiWr~>|nTq_9-ET*i5lE3Id%@@s*v$cM{t#%^qRm`$%eBvW&{hK^vWinB z2<^)h8DM62BW%tK712%BPCu)8X0Ou`lM*^v!pM*G{Rf*@=%-5fWTg-M`;UO}8G4ba z3!k?8+r){<={DX~kv+5^yv|F{va7lI`924kGE;m^^gU-hbp?kC^`=iY?|29??s7|^ zM}gh!U?4yIo9}sV!u-v(?uhXV1&nzR1OYm-J-7JwoAZp;<p_gN;7jYn(aV z-PxAI@`$U6M%ZzStm5L#PeWtW*KG97*t;nr>- z(KR^iVlSnXM>IaifSDbO<@kjgP6x5S1;^o!ZlAC(yx3qFb}s=#k-yk93C4uD_zQmY z_0GVsFgDg{m;kAc0PAozmRFBBnp~9gXx! zR$&-cki|}XUKg$-jOu*zL>|ZW4W-kVjhviR$lG<%ppMdpq!P64xoXG2%#pEG+fCED~SqO>BI=jS>{nYQPd~cM=L}t_3@$btL=c^@4S2XJyTf%0}Ls z-o0{I)aeBWrZ0Uu*>1&PwP%1K0eN1)i!2)X>M*I|Hu&sr>RkSnGR)RK4x{* zq}exZ|MIBr?B#AJW79B5HH$Mo3yYRxoI7Oev3Oo&p_TfF#rCOHlt>BqkFZ#c+tbR? z()JB9X#<50U^iEmEX`*lkd-pMay1JJ98sQ|4b|3`#fu63O@ZsBU;9c53fF_K%~?<$ z!Ch)no_4VL0$a%e1{>&WxS8$OQ836Cj2EerX-7&aQA;L7-ho&M)yp(o7DXFewXIU|Zp?^b}CROQ=4=uKBgNAD+>cYM#+ccs*KVoKP=p}_N# zT`JB=v6C7X7fd3ujqG$eIJejE2Ho12cFpJdm#+=1We#>e=*x*P90%vybjB#i;THY5eE@oMH3=0d+TYb^{BZ zPvw8gJc<1Nw7U7dm9c`p0fhVHK7T+{AtMbPz~AXmmNORnRjG8yJ8_!$Igu5}MtXdZK+`WCBWRI|_J@4L{}o7}XG$ zkpRq{>~hb`i(5&VrIwbJ$Ayq0`)k;buJCGl&@iL^`p5lgjeEO{W_Vw*lN)KR4Ybi& zJnc@YRY@n>wogh=PY2$IEorXm83%@thgm&xPeq2S752H*Qn%PYQ+>~JkQ6t!vlH*1 zd#k85Ha4rMs8y6dEXS%2wRqW;MxCWVbjqUN!T$oZtPG4{bV4%o#FU%Qj8c=64?+vf z*yx5Iz=%GqpMBGz?;a|gSD|WIs~8yp;#O?(Cu>MIa4LAJ`$i8}^Lki7KuGl?$t8Bv z^!5l~WLOMPZN1F6;oxt{-o0djFV2X3zrQl&do@{Mm_hT+dG+!Z4hnMRMxBLEkoNS22&PGu<9GdvX-Eh36ZWZ^ELO zJP1htg2$%S)w|Ib(YvP9BHMTn=oas{Rs3F5)>Jt9kU-S|jI%;p6>Ykc8NcOyTxP)vJ>e$d2!DkCMMZDYKqn1}EN5gVNkU0mD# zdzl{T1miOx#8=gtUUz^zL?@r@9n^7a=U7mj2pC|`2Z@x}f{&HF&V`CLKkFkY!`CjmB-!>ofWYe(v zSgzM{Ry;_2;7cTz0DDqsdSSp{yn<65|>l}$xh z894O}%jaN&vlp~AhTj(q7#&+7(4rYKU zhP$yV6ALR|T~}ghPNW46O6jD>~1a zeI%j{y{zB?I4!5?t~Vnff^pr9n3t3n6I@V?qnVjPBHI8+MUNvVRH&Agjb=rmPhGVq z9K{W;r;rd$MiT{O6XOes=!}w&-xvuRqycDi81nHU?2hlLfqQK#5|ctCg5gf@Y>I24lX|c zax*{+aX(Oo$p`k3At52Iv#Vo)ZhYp; z6C_?kCUV9pkOO%D3{y3{2wD{u19Woi`=+E;(AKxXeaxJ@;IKLqa( z-I~B=nLt?Z8)W=~hg+$@+7gTn%$>z^Ugq2&JHe$|?k$kL6wriIj4~RmNJs>W1U#Ig z|Q?gNgDEGNz8We_juPAJKxe$@>5!Rtbi*&o;(1D}qU zu)-XM$VYg=monU7p0FD~5JqppSe1S#JMRVb{-;MzlyJ!}5B9$K!LH_pT27l=;ibCg zuB|L}ugrKBf<28tzMzQDdOnFgnI9^Rzxb_gis~uEi7kDqWNAXw~_@F^8bo}$$yVQF_S`aPk;RAW?YP&``$4v?{cFRKAzYE*Bpc zXJTx;D3(%~o{=$0ELBli&|`GuE&sSyC2sCRA;?sdl!}C6z2)Sw0ZnB-<|02(r39Jz z)q9<9B(dkMlnVH)8yi#9Ip^(kfA#}aGNKkSj|1)3)e{S`G2r>W#7Z7w=AT5%QLiyx(e? zP33hCXMRj}01~Zxxf>j7ch;iXHfX=mb-!S+%mQh>P8K~t-_m;1hU09xC_fF*V7m;Y z_lcrxs)aSD&(6*gTF#8&Kw7)Go|h3HL6JqrW=H#~6`tdZviHQ*2IhVCbHUf=w2^_D zp9`VTnv$k#G|&gMqpkYcM_z6aHMWs`((qDV1*UFPHa4q=&gHPcq;8I_eS3*XY` z8q4H06hDxhzx=|hoV>|fY?8l?Vr@EmclXMu+lHJB63|mXH{8rdj-QeO5DaBTJd+3q!fS@qJKXsA6y;{uE@RM|+ z$kq)YRMKIf9UzKN%o`gcKxa{R4orsL-dDYB0LZn%aC-cd7X8COi`#l{TPO84C?l4B zezIPla%xi{xEBufAr^9#+dU6S@M<*geNb#7ILzF?&Q>?CK=muZrhl z*0?%d*wiQMTa!%MwXQd^(CLxY8#w1%&bi*a<$=DAwWx0#|rrN8gl@%>Y-pNa2{5T8M{hV!PS z)TFU{pTQrAMZ;Yy0E*w8nA2@o{7_$i4u}I2Ai;GYGkE{;MRgn$UZJ_@N>SKcY0g>w zU|dFNOze<<{C$ZB21u&kNKl!0Zc&>xkA*35F{g6AD7dBcbpPU85uu{z{T_k+-u!fV zLkPkpLOkCi6+;iG_X%9YD+2mO{xW!VRrT7-F&Xl5O9T6I0m$T*#j33_V9*S3X-)jA z%ScBr*>XV*0IROBu;mJu&yp|E!Td+qKM0hHVM;2hob1FXYsUsH**u2VX8mR_fYJgN zxx70VY{kxBF4UXyd541P)^@fbETF1Nxv6DtN6j9qy+1S*Y=7x3Y(rNZate*4#lWQUM4jO5ok^wX);{RhH@1Zn79Z3-9G#zf zpjHT$pW?i#7ehbfue_Tjm+j8f!HxiUd|h^+_Ip1B&o^sZj){!#I~06SceJpuurvEC zpc{!Un$5nC*`I9C^ipIy_frwd^1Zx|ej5$%y-XkcTGXK0+6WGofYV0IWJ{7|I`2CQ zoN|_f(dqZlRYO*Gb{<|rjX;6gnc`x8m87sjM%{e8l;%U3k^nH42$T%Q*RSH@B>!F4 z5d6I_-fj9d2kv@{YJh;?Vp9y@ggmvov{(&OQ&S_+i~Z6=srn!*XUs+wXtkO)xokj5 z$OymX(wIqAK&_T!f6c<-U%&pO9^Ag&KU&NGv*CFpFRz>!9i8d9cX+e+FhD3aDXQFc zh#7DYNX*@)^3l+vGU0s*t(iY2s7(`1L~lg`v`>DIV}ykXhGu7HCtEH+WU>t%Rwj@R zTZ45SH1wXfPc1&_*;o1VMgUL_h~v|vV=rWzfK1Ab^J^05^f6Jyo+|19X0$xkepJOXftC`fr~E&j9Jn1Ly>|Ga7nGKs zoUDT25?0hr!=djr8}1v{DJ-(k|KAUvk}+)dy>-dZuoqt~CVTa0?C5AL`x{zJqM71< z|4b#2smX?m46b+J#W6-Hl2F7H6%zw)Z43j7zW@qQqqnj;fo0rSYDx+L z5nfV823HaWO1b_2`oG-e_V(h4DQDCh)`43}&cDY|-9Q&2gp8A!lb@fAnORl= zAw4ZM71uGe_^`WZGi?lOFG(ht+W9r~!GB+unJF`TU~CrC_`-s z2H0fJ_T*B(>HW8$YHdF$1$2zklG2XhLwxLhMyuSe17pET#0*|;38p2t(1rhT+)Ob= z|JOP7|0dq}KO&z$pT5ZdO|1H7UHkXtEBw_f{e5hR#h>Nu&rbkf6_o$KBrX5{@Tov= sp5D20b7R^2ZS~HbJCANF+xvHz5Q^thYPo#D-`tT9krgfx();j#09u+ga{vGU diff --git a/.asset/list.png b/.asset/list.png index f00c9a28c4050298f488109a3583c0d1614cd94f..b400f3223f711dc0bbab1760325f48356c7dcd4c 100644 GIT binary patch literal 41622 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 literal 41944 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 D^nRT7 diff --git a/.asset/review.png b/.asset/review.png index 006a4e741f37c3332d4ccc53f37fb677dedee421..3d4898688980766c3bb06736a9758d9a0dfc8199 100644 GIT binary patch literal 193217 zcmeFZ^;cWp);`*nDn;5tp?Gn3*R;61yL*DWmjcC$I}~>)F2S`}a3}OV^fxCamNLJR^du8sq=X&NdpP6uFMJY^lLi9(E9%0Hzi>p3*^eXYuqo+S! zK0%EfH2tc2^ytka8S&5Ro|#9>&y0!Y;V;hWEZEb`EsOZJ*u*k8rWdQ)I3AiB8K)N; z4i~GI7eAX=>{O)|C`_>ho5iFp)IMvRK<2n!+%b*B@W;U6@^U$fw0EuoStl#ED?TDY z>Bi4dSNh*$P5jdGe?R@}9nIsfDSwTy(SK}v`p=O-naAtY{~UNEkN%SN@jpk5RX=&Y z`scu-geN_6e+{JKzA^mQul_$rS3%&}yZ`g)UvFrh{r^k(zgdNB=j+7{o-~yy8Ch;q z-~>QqW#yOJU-qZ@vJ7fksNl)C1Zc`>rG(3lhP#;d$dQqeg^M#Je+vfD zOVhb7Ym^d1_St)mvAx~TSF0c4XkY^3eFnY(h3^0D zImQ&8UOv;&2-dS)s_{W7x&kIOsuV{0u9-tu9_Uw|zAN;Zr<^!nR_atso?6#rAftkYba~MVPphAXYetV z6NFkZ{bdDt(U=Z(9}0PtnTGH8PM$`6;qO?dZYM~RtyC{9F+Mrq&>Q{6{MTv~(e1y= zq~!!&$dy)Pn2gd)H}Cju5*ZGgJIk^hyMrfI4Z5U@t@7h4+a- zj#=B&oG5Y8HEi8HJes<#e>C;|bM~VynQuKJ`Q2-KZW_mOk~qP=1vFzRvm+DJtm56K8DsW5oPW(^3rUry$yjE=n?&}FY7^a`sWQ1S6%Nfv zv@rhdn`$pZ0wJW@1mW5}Q4LNnS+nG98gvN$I#;UmZ#reBI9Cr3PBYu6Ub#5st>a^0 z-D2ypS=*1lX0j0|<4Onp`1J8j#MjYO!o#zvg*ucIn*24%IKmX|bGY_!6g`=x{M}2E z^)eE_fxlvvyn+44U!lQf)~Jg)I6OvqqhwCaU*}N6BYNrW6YB)1HX}Af&m6HD4E#H+ zs-?6;A@Yc`sS#)-;@F*q@zJ9wRc&i);~xQGibjTp-Tye9JfS@)-_H8BcIT2dE7_wi zSIHp@Pi<{$X|{iuimfF|uBql1;a|@1e+k4rA7Z^wvDvW}yi?J)WzDUJSSyatjOY1> zYtTIH8F8Y*MYrG}(Bp9@WU^#La}*L05uwQa4(PY7OCLk|5zTN?G40cP@Xd+^H!Ojx zE%961w(2~jz`&t#u{G^{etB6zke%VTJ&$D>&daA!o6OMTn{e%>;LDqv0_3$k>m-ocWM=y<&)O++D_e%Gy7J2 zOf_VqSoIL*WPsL&8qT+Lr z42AYx69sfHyv&SJH1a@)>lv*&?n(3fk9EwpW*W-V5_at)89de0)Jlxm2rn#g!;sHpEX&UDUFdOSi+)SF`T zB_&KO%niE5{zM!f()3v54HEYkp}v3A&XvHn&vTH4tE^YIZrrgxYdQC}gwdnT=Nre? zZEZAryw?J5plIv*D⁡$CzppS3NY6_~(g$vkRni@kh* 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⪻c_|&K&y$r>YKR-xyGH+{Z z*G>fA!^);r;}?>v>#3D1%b}xJ38#Omyu4)kxawFvj8!}x7 z_9d|^Z1)@7RSKqt=`g+k7C!U~r%K7mQ^GdsHu;Fis&pWhA)h4I4Vg}9^ z!@9_`sq9mPyRB;pr3javeUlJ)Ggix@cK=8058m9RpT(gd`@7wMY>3-;=xT0WvdhUr zS8}JPJ0>)z^74Hdna{B?@^1B^@f&Jd7kJm{6xJPZyqW=>2|!3Wr1nb`c5j0yuuN+&P)jV$I&k+slcXb>+kx^%` zKnB70?hTc-e-*l3Ut=b7l`HR2CfzLP;yUv~3!*N{&|YAlgEcLQYX$=;dCA6xw%<)d zAXTj}Z=SNZk>W)|-oGH(Pg=Oq3&>u}2GW&n8NHO~6VBB_o|qRucm@SKe9zp7R|PQv z1$GO*M@8TMJ|{_g#a@BQSG3#Hd=Vk*elXN1?ppF+x37G< zj1>2)QqFzflkMNse3yA;^%Fmoux=<@)_5IX89M zin_J*8D!aq7U-{|qvO?C+;v)rk33(wcTgiwpKsXO*3uuYYHw@va8 zK$s<`)lCdkoLfQPS*8&L9dHATVDsJiObzCEny+@C83kNpLaSP8YQh1DJAL_!HFv`M z`|Feoa~+*z`RhC#gmyhF>%|zs$B!H8>eLwGYQ-d+$%+~c{mvnsfTay+j6oxE-gY*ICCzY)|A)zsFCB z(Xd-iSS|(#x|?3rB&r{B;27NZe(YSC{IpwmU1Tx9!U$-gB6FZCB=X?p%=L(EWvvcZ zU>Qn43cLObK&|ZR(a3_+l8_k~38k2mTJaeTV*{I}jq*oD%23-zC=*pnIonL zH8yB2^={qH_YJZWoYX5V2U;<@C83Ath4d;P@b;O$ou|g`1dtBI<;}(zdFp5yzQrRH zwd#(%~Mx>~*p|1U(~I=^r%v?YAj|zP`;ibA7C@h=VIFvo(=DJad^X zXJk;7to#dnAVf}%$o4tCIWG0Npi{=#bAp{@SG6xfee4#V3P(p!_;lDrUHbg;dt8E7 zn%{1)T)phA?RokswH^)rCjt9|Qge3@fz|Z*@82I9<-sHUk@!>56nf|)0OXOJ{{w$_ ziM##!1Cx7Z@kPY&K#`?o)K3M*R2(T9m&yQ`#)pDg0MaaPQKRvht@8IBR7JH^x3RFW zp;7@lwJ1O%v;J~sZgx7_$zSy`!r!Kp{>oic^o!qDk^37m^MTJ&VJy6?0pAo%N+Mjo zXYUoguj|*;Jha7KG1(JFyt!!AihgyBS$MO>gGq`W`t)jU-{JSPo{!>q9w3qUcoC;) zK$TAmB0Nl*m&V+l!6@M^@?`~VE0J>)aU40jSm#y8eQIfU`p_Y(qBpoDka?kXy;E(s z6GjH#6OFBt2odO5oFs39JLU)7lTK$$9msbKJ3vh*`KjZ+%MS{S~?)ZyT4 zZgY$)n60XEy6$_R$&OV4d)koD^DCOYx4|1uIjix{KbO= zZEe=;2DJQFoZX~-YQI{X?>K_HCzhsU$u!N>rau^BbG^cZb2LCYg6UjJvj-n@3=W|@ zw@NM+;=hW;@-y*T!LVhtx@n?rutuQR^Oj@^x-$Kq=QP~Uz28jm>7S4Pa8_66&$NX0 zP};J{qVyokT`wsY7Z;@LtB@XzAiQ_P;!Qz@YLl#O#Io?`9<96X++~CGz3)j$Y2IRM z&x^l5eYp4=zJx7;iEHKliLu0h?}ac`nmu8Bk;pq|rvYci~FV^f_Ad!}Dgtevs_ zR{I4GaRGs~%)tQ>EG)$ydwHHBZ8UG%tKIEw zZh##Y^hr`#)y2hY7%!)=ms7CTF_MMy1HabW=br*&pIEv}Gna7|9`#ut5pRWEc6E!@W7Io8L3=RE z%ij+S?(snnZ33=A_o>Q28ZFF{Qx_ zG#NRC@R);k;=!FhK5UkS94ZGT!8`Kj_Q8Gp!5<3V&lkY^bD!z8IX*^C;ps})M~Icj z!GqSSWxQj3ZpnV7b7ly?j1#OO6GtVhlS^%->5oWIR0T%8R^~6Du{IH#&&zeE!((_E zmSfiEQ@vv^lvV^niVN$|0hO=qoSwAD^qrr6t<3!20>r@j(NRmC)t!Ld;{Fvs6BpGe zKZmJQ*vZ;@?}K7gb7Exq+*t`yOssTut*0NM@grXe^(1VDPW8SS!+B4jqOUqE&*4;4 z6X3rigIJ*RICoMyoLvcPX7qN0$CG5O_@U2|yRZuW+A}jSAXWVBMlvW9Q^bt&mM%$g zebW?fhm)XSvpJ5VcsZ60+LU_6p`jrgd+VwFYrDCso7+n>$=sxQWrNwOp?L_YTo8u7?=fpH^_32@RalK7Ln71TtHb<+E_p6e! zs$6~dZ{uZErIilW7`dMWzdvm*yKiq-Q;VAHoFCTP%ll4#2a0GIOM5%7c96Sl<8NG0y6|^OOZZhX#_xpxFLJe z5?~UP>^L>iU_tn7!tW^D(amk_uo|ASs<-8H+Ih_L0e#-DNStE-0J^G*JiNFT)&h9A zyBqq9VPZs~^rgLK6NfGC5wG!?J+Eiy)7anP;}0g;D0y5eG!gi~mh?JI2{;8%#UK5& z1G_x4JcePCe3hw{uZMGK)wvz)Tr=FwmWqles3QFKxkY8NNP}*D*Erzz$@`7X%@h{B zOm1E|oEhlQG5>BRcicKP{KIH^+RzPl)%5<&%`rc0Yoi8Vd_ZOY$hLwe0n~C(n-d+}tpw6@!z^n~U>&YWj{tb8mf8OC4GAJ@Ji^hKBGn$)OG2m<=tR z;yxIMS#DAHo2oeMb8bCB`E|m12W82&)$x1V=CB^_b~3-u{nltl30R%|TXJM1%k`_5 zO{xyA;(@c#?aaMg9e(c55M_^jtg;@#1>da|eUK7h`zg73@ZK2NEw-fG!E~p6#L{f( z?%ZPUOlpoj|LHDs;BM2p3F>jWU{|AiSLY-~ej^2_KotgE%`%rI`Xr?!#Q6l$urXid zGI>osH#izHL25WHb+9N3^ezU11;A9M?1dh#bbB|4G;hJ~B$AtK=^vH+6CT!H{M#9d zLa}HE7N||k#l=N^iL<;W39OaB7v*-(x=~cCdK{t9W0gg}>20FZ6>SgL{gh;DGI6Wm zcd9i5@z@YaZw+(+-Qv5wQT5g1WuI}s2bRRIil9puzuwTWu$08Beg5PpHce^Fc&{x4 zu5#t5Xln&P5ovAt>f5-Bi((!ikyevj2AGEJ zJ3&@_JO^U=H49%XGpYu;Kx)Us$lybirjmtak=DTN2I56&OdA{=&W1V@gF8k~+u$oC z9!m{2)0Ut-8tX0ucu>q+mjUYDXUui7Sa(WwJQ;J`kjb!(f~hGqb!mP^9k#1)c^QBp zo8^GDH}?WlLp2T>33mfdQSbt$56#*prTM_)`w_RL&(sUIzmZ$H$h3hW z5GrbP?=7O$rFfk?X}xmXoKe(Wnq2-Q)`VsLzbT^Fbt`qDMWMy^kpZHiN1**Mipkiu zo!Psu;Vs4*n#Y*TZTL`zRk&%l6WKGnJV%d_#$Gp&RL+;O{;p(cw!;XGKY>-!LN*7S?ZncTry5WWU(c9;3Ug z2VAsCZD#n1V$T}wx>*uz=1NOb^6t;v4ee%%FJ8PTO*DHW-ca9Ilhr#t+1A;aqqnIT^yyPT zNT*a*J%+HB|3o-?2p8Pyr#4f4UE#|F#P(^}{`~YNd6+U?LAw!hB#;haK8SVH$!Rso z8sp+CKS<5ze*Ynsc+_AmPqXy-UHjg_QR26L*92MWr8krurLOwp3yR-R>JkNov2~M} zUPyE59t`#zM7GgPtiAbxE=%MDq4i3hXNhO+u>8g|wJ%-hzuU3KB*BX;!CNx*_(PMJ z)l+LJsTT?BsD{}Ky8)E5@V9EPqM z?ADM>CL1-?0tZf-;f+ubc$%4vI*rpxJyEMM);p1FF`2G5cM)&#Ycr<3Y`X0_wO4yv|muQoIwHb!h)h&i$$1Gz~=1YqClAs zVfnzOLnr(M4SQ*D*#hiM^pZNO6VVFX9^O7$Uilefg`$S4x{_{lR~zbT z@=3AmlPc#A&a50_!)Qy=OyS(KhZ(w)j92!u$ks?VhZ?7WAeIb$T-|wIgT!gQ z%p*s8C@QP$d9MeQaoljnR&sxH({HeF-*waS=b1qAl6y(+&pcuN#rFgdx#@?i+v#P) zvk>fB+M?MjhjIC~yD#do*jY^!C`vR9OOS&V8IQESsY#y32gf|@jrgCZ^R?D^6|dS? ze%gii)n&MOHE?+;vy&qoRAnUB;f)`db86~$w!yyMI3^mKzH1lB&I7%YtZco9$24iS zJO28*Nhw6dSt|CXx5eujN<352W^AZAS+lX&DgdkbvCMtUFg>lBp_i@{aaNm~%f9Tz zZ=!D>B}!ghR_2buez|fXC(Xkec^3Cwu^H>1TLQ+TsNJ!+T5iToB{Dl_p4T@OY>v!Hdpn+H+csrwM8p_({ zTpt#URLzRx$P!fx25+#^xvj8(-?I!1{5uYGIITF;AU}E5P_>J#0&#)y+$0pUSJBf$ zq01R_Q6cXhI#pX6-exGZw@JA-?;THbj-71H=^}VLeXCz752a;h&dSltLJOEup##Kc z{_hj4qVNZm8qjs+t6>Ad$p;Q3T4T?j7oqSDXZ^JTU7d^beqS^?3SsXmuF^^5kH#}J zQBw8@3b>-mJR}P}#EdMt(~b-ioiDJ-a?3slG!2hR=evBeTvDEaT^2E$O~Kd4nwIDe zpy7-fOiNz7K>L>5+;x;z*DAESwI~!Xwk%$pVm&`r(_PSwGDd7%8agJ}J`>}13>^9jN5_X8p<=Z)1r*x%} zQ<+(+;4jyzRHu87{4>ZX=y7B!8CK?G9+OSjZsfUMz3P8Y0u*vDU!DVwkBpfW;YE4z z+mp2+$!C9Ny2Au4<^AsZwGQX9@(u`orSOQb7!j91ytQM9A&8?oR+f%GqD}h>(PIyB z^!(MGH7i_)TQL1Xw+8h5O=xf!6t_{Sw|S^ydHbf|0?=%p&iTY4-jK( z%&K5=FE16TRT>%kKjy4?^5g;SiO^N141fxPSQ=UM|Ad5nv;@-~2><*rA) z!L-EexzNR;zbr*8Sg!N(&frwIMwMnCuKe5!y|91`(2$;I+O!|47^&~w@(8}NQ4%5ssV3T~Du9i197cVF_n(ak1 z!qn7OAAO#QP+W3FXmC?XLecy_nOc?0B5rmtAJ{#Smy~*gyFF|Wlc_}6YF@&&>aZgF1eI^PtKO*1$m=H;g#ix zUPBS&!|MRVWr8}61Z|SO4-dMXZVBP=v~&Qg5OPWkdsT^3P0{O~q={p5vq8%!;9`ij z(@Paj@^rfqtenV2?C7VX<7Un9%yb`6Fg zN&79>LT8RTO02&#;rBPYTU*|~3L+=h!X12vk>j1dJ84#Rb+L_h4FXv)hBqPjhGpfa z$6iXs)8~lq$Ht%VK?@X3e%&JwJGVI9ux=I2zne7 zl?;g9E`qXI>7tEt0LjSNk@}O{k zf3>2lJAK|+*`74>@GG^m_-F@MF!y-4&mQHD0f$C#hE-d))iMQ3XiCP&omv@DG^*kp zBP!d(&#VcpJ0*@mP$EEs_iIouk=2u5JEyA>d?HRYO?r(-CskW^U z{=H351_2C9fACb0VO?YCWe))1`{T#Z+6SOx7puRD#eFSNC)~*@X^@0a*aMo|I;A^L z3jUb~=Z&?`dzy|cHbS=kC|l{u;84l+8GnMGlGu8UBYIzREa>jkdvWchI=+F4V4nd0 zZujWa%dm$vFr z$~?3FD@g%Y0ff{zP*Kus_oV&471klu3icTn0V*+aA!?f%8@!gxh%lb(YS~vmBApED z0Nz7F2L_yAehaOBRuUG}@FWo_on=3fw{;6`R;&L0l%kCx6!Vvk$XJ_iL{z*|$W#0# z3{-QaU;D@e@7hlC98l1m5C&hI;!V-CM_Q&Vw|6F;0MhM)pzrHabg%qJn(qis!rhBb zAM4#JV~q*<<;R$l6^fCxuXGt1Hz}E45dTlfPF-RjKg;wAAY7p9Dq!UVZi|<&IzeqK z$E(M*?JwJLXUne?3H{*%h~ThcpE6l(*ONMz+wATf?rp!Tby}i%2iJ07e#O=a7-?Pe zlUzC{%+~Gzg$R+dvT_Sj`{C+h7dru~8&wsvjko(F#Xo{iqSXTI3 zw{x>D*9mj}v};G9T*~H-6(xU^0$?clOxECP$-H+{lTr#Ig?QPm zh^nx-aB@d3Tn;j+?|(W=nLqiosG#6$NLW&0;>7di%LW40>JFGvL$#e_0}4DMf^UWE zW7W&l>FI}RYS{7W(#k&C+1ZV}XeKqvRi>h)w)yhJ5B?w!EvZXO-Cqa<0x_ZhQVum7 zX{x0^mcBHK1y33`c%Ph&4Gv0?r^r#g^Nz@WYinhN#9E+z?iXy%ktWXMj3HoAM^Nfq z(Ht zC;-_cRi<}`nBKCF!QkSZ>a#8W{}GYVk2FZ~HXPfCL7_+QHwT~(4+6N4Zh#073`bw6HG2#E#U1rqSC`rX3sPZcKC{%RfVP0EgQKkvt<`Tn5%UoHTJY*H2$ z_>XXNf9k18^ifRuJety2hX@m;7LLoutTy8xhS%My?t~|tFgIrzreEnwO#i$#NM9c@& z#u8hc){b%gv){CcJhFcnPn;r`hVFaD%FOSF88sz6RM+tUj;^61C5jO*S7*p#rxe2} zIKRB)CKP03WRR5`K@lK-_46910-=rgcz7&2wNx}bvXwUtx|K;u8eU#r_qQa*#t-Ce znT7&_g10Bjga7?8@|;hCJ~DInk3{lo>Q5~!^#AJ%jEb6?{qpJ#%Qf*c%SVrlYYz@M z-saaN{7*mDnV_vsXYb`jioZM}b3?MU62a40oOXTmi$3?E|Wv z>(QgsgNcj(&wnY9Uj>;xHg>+adHb@Tf*}>d3@}02&e1ONzQVG6%+y4Yt43cInJ%cX z>@LWuiXH$Ui~9yBtP`{1Ap9RYq{=@Pp$Jm`mCS4~aB>2AKJYCiC8eoLWn9K?7F5TP zPji;5b(!~N%zMM`Uv=OjBGexxP`<^*Cy9SkjWs9zJ|d=QXKt}IqL)9oPa@(G@>{*R zf_i~Aiyc#S1+&ncs!ntrZfx?y&PLxem(sI-wef~|UMw!CTeXlBk|!}S0J#B(y^WXu zq}~@%?w>#N^ySkh?&yB#tHQ{OPnSklzu^oDfwQJwx3}0Fn>3blQM0`I5+QKpJ-bgY zjb#BOU=Nh5J({EHeRh`23-~bXlJc;Vw?+NB!;mL?BwC+5sv_A zvNlH(c83Rc=n=Z*cCnWge^P&4;R^IuGcy#yv%%AQU4p%U6S7m&&|WBXq=jnG zC{Sg+eHN!53T=4O-ZmNeXNUo`a+IWHv=RUl+8J#%qweg0$JMmABlF+xm)beBhC&}r zX))&qc=+8YAgZBhD%w7mZjh0L7j?Ul$ZgQdKvZX3Wm?50WK&eFwXJ%HJ&(+4uFp7Y^zQX^!J-RpO27e_|?4+BaH;MTd?> zf{H(CymcR76KJM;7;rJLGg{F=JgDzd)W`V3eMhvzr?_@s9vxQOi00c%#4dT7kxfWK zi7?dYy*;w@8}G+luN?ae=Nzr=(HQrB3~EftFGo;N`NMK@?BTsazAtLhMMVo0>62DE zHX|v4UPy_~uTJAUT-ij%ev}3_m8I;n&5aE$F$29Zo>pbvd%I!qdp-5U5~w@(^QFSo zEoAl8K#4Tpb2_H7M2zfJ=3?-~kIuD{F3L8rDW6lV5mU0nLDxmAoE%uEJ4C(4wXO2x zmt9dtj>XcF_)EjhdoWch{~5=IgSGJNw3<~fowLA!yvX5`XP4wRKG?k3Gj>}5PU<6n z-F}|ixHgAJM$Y0iFWMQgPTT#pX&r+&yF5IGd|)t+w6we$&E81I5d4NM1?Zg+@aZ*b zygr;kXbE2ome}UyFRl$giHO#I`0#O$S!Dn3`RV$-^1aOn#aA$i3a8t8%J<{kV?2>7 zuQMotU2JUGy^ka$s_v<6i(O>XuEibsbl^q=&bvb2uWJKIn;O+^M}gI1bGj=5IDYO| zs&zWqL&hpir?m#+0SmD>z|oWmZmo^Ffj8S)N@cVqA%ScJ;bCEl3HgqVYQI{PdJ9@@ zj(du_x(gYr#Bt_-BS!Z4^U4@+U|_40{16Yu&VRXk-d|KSVvX!Nt4@U zNN8;cmGLE>zwzKxP{0*!v%c-drdd%7Et!DUiU`e9MYdGiVMO0rVn#Kts=}gbB1_T& z^FU;_x9Qcx9HKqp?}1FO*nM`Qr}oKSywjs7&~yF)564~&KsN^JD_dDzdu-qyA0$x? za0oj$<>&T0)?rA0Vq_as)PsCpq)$`iM_<=@1)lPwnOUn`8syl-yuJIvOr|T6^@_82 zw(9x$Ea!c!iFRg17r8Y8y$_J$X7AA(?;0W;9@y?~=G`#zQirx$`AL0jUUr=-Hc@}X z9v`8Dbmphe;**dGr;<3Q<9%mrY;1kA;JM4OG8-(YZsfUA2ny=R?QA=J!ro@S=)|dF z_(i6*gFeNCFFoY_koeMXxOHY%j^u@V$(Xzyd?Mz#7Lwekl13Pr3-Z-NsU% z0&U}=jNtB~+F-fkN{3m3g!z4_y;BYtjaF|Env2d7O~B^lon*7d=EsmRG-pW2JwmLZ zT`uZW)f~K!2XV?qd;g@+s-NM9ce(8_32Gm&};(cfZJ->-@Gr z->>h_am%#y;c@Woj)S?WR%0{OAww+M1$}Lt@}YzJ2Z-9sE$96*n^Do`?DhH}PEf2W zXtH9=pZ3*tVcFUzAGcEH^)Ot=_EUAum&uBV%@?i$Hv=k$esB!Q@cP0sk+l>PjTFw9 z^f;oYgtojH8Rd4K{)dE}^LiA|`L_7vA~P4~fI4zOnTfZ&fy&%`b;p(s$k=zK=f{DI zri0Np2OV?+wFWcqRAp|`*RcmPY(x%5{vO5)FP9L7m4=F2KR93go|(|{s&L;&u`I0( z;l{+Ss@k%Z?@!N$8EfM&rEB~dw3U9h5n*5T$I6C@xo~AoLI$5Asfj64qEN}HKst<6 z*Fx6rdKQj~TX2=&$9P_u#1HQT*;ZDa2)TLdyAF(n1gXc(-`nf09mvZ9r{aIomYHlW zZdG};zZ07{ew^d8j=({Fn~c(>9u~Pe{@P?yswl(S2jbe)N03*poKn2-oqy$9JQqNl zF|_Oe@3=a0YTEFSp$8UG7J6hZafIz^hknb%C(9)u9pq}u;~8+)#kzwVy*;S1l2reu zs`(&&een3)$L$IFTg}Z+%kGu17#>*F`;~x>>y3?aLt?FE$Bi2^1`b#H6gtcPE}%v4 zzJmU%9QOS)`TWE-Z`3yL+rq9^F9{HTS}5vg(4_J<`P3bmdbt&bG0IrhVIdEC;{DM&4>usY$A@VjTZUbTXb#-2U&`G%=7#92^=lp(DNiH>8Zs&How zy^9(nFsI+P_zX$1u?sh`@slmYt+UKE$0o8QXqXlctwx`Gg7kCiDrk7EsOdbSQOugiqxdsZqa8o#~LP5VkOg#)&{m_4YaRg`c zOi5*Qgl9CX;jfD1!sbyLN=7-X1cV)TNh4Kpabi!$KfxU!r<0+{GXu1p0ZzZcLSo0y z!mX=?SYJ^a6&;>Di>M?@=(hotR+sz|)l_$$zICK!?N#T;SwZGn;X|9b=nQ|d&aY&F zibl3ShN(JSFZ=_Siq7pM=jNHY>l;VPG#(0VdR|M>Xx;rm!H#>o6-G$_TcLSR5Ft z&Y6AHv!=L@$^+8F=bZ-YvJ4Wku_U05jBl>Ux*S!${}>^}-GG^fefij>O@{9=@oz@t6dnnd< zoU!6$M31#e{|=ECz-9IiE|D|;LACSJQG|D~Xe8$g z^Y41i$7$GszGpo_lY`&rVESE2k$8JAF7f>VdZW3RWZBrdq?PTQhDGHmWP0=Z_oC|C zz?38q@EUq$r4?xmO4!%i4@Wb+qQsvzBc<`8a-WQi4B6H2B_?vmtY$oRUwi|f?}~)& zARR*~?bxbuK0nGQ{bW|7PYX#^ZdoOQyjMG{l`-^I2pTVKG#*Z7{#`1nO%uoZ5#MY> zx`&f*c~D~ZvdDlylIw_BfAvgY%c z<7u1D)R?}8nsiVa3)AOSFSevcVqSG3BUkYodz*1rc$9LXvQZ5k6GtdfDNEy57RJ~` z(o3w7lyq^SnHkc)Z=X%v`Yi`5NJn{jHQ%JK4wRXvbf`@|or~4i8>P^P@8@S9ZR!hs_lJnt_uEO^#No77z8Q7G2 zXbJfEfUDbp+-1h1a=2lyP}nC6hEI*d2YACw!4|R>3q5ONDKUV<*>RM+HT?KNDU>*j zp8m51&x{8#2-)-Gp7aG%NJ{sm=Qne=TedT0s(n;5wbGy0t#l zCgyuTOyxq~ACxj5=@4$u&7!FX9$n#e3%m8`$w6*@HmD5hgDHWITqaUW%r7+-b6w*c z2j@?--f)VYvD7t}^C2esfj~fPrwobbYPGYnG87fE-$YPlsNtHa^vSlAT#JlHMsuK| z-iNhmV}~7=$StL>_;=!}%YvnaE5l#!COio6ZgA989KBn%oSU!r)g48o$XfJaG;iZadi9HnZD)a$v{d8Cd^81OE&m8M8_kGdhZrLioiAYrqc0Zjk$9)dm z@|e}pXm*pspZ7r`E9$dtaFDoMTyNtrI{3@|$O9(jV=FQ2?Q5**9RktY{Av#)4M?OTQx?Q}Ol zhU>pZ-2@x}Cv8GVv_t#+B1X%bIavvg8Cie!NAP#Hyp$eqZ8nERGsCarp(GZHtFNJ$T8S zXOe9Xf*^HrvNZkf+(~hntbI#YXDV{A!rxjzYuxVXEjOBV`6Rze>}9>zaat28_W1%m z)UHO8fZWl(#L=nh4Eu>{YI7=?rQ7_>kyvO-#pdGdpOOc;zdY9E`|3w+>)?K)P=u(z zx)b`fyQ8r|di62xA3?em{D?w5`(bNuCrIu7x9@T!lsPc^M5SSrgAXjAbFupZzHIx%+{4MnXO&zY*}0w5c>Y=17HXu!L$oI@T3SwTV{ox)Yus3Droh( zHYtl|udQx+d2DuK!ns0|a($2LMOUaX0RcBYljXtn*CrBFBI?G^)#>LVIbA#po3;_! zpck(1i_}57L>ChVm=m=YRT}mZmAM_k+xvc!4Wz3BZC0c5Xcqpv8|CCm#sNZM0h}Nr z>{f-5`3$7sxsYvnr8TyToAu6h$?){6wA-NZUQQf&mpWztE*S6lI9#QftyOCsK+@T7 zel*K#QnG6!sa^;W1!fk=&IbIp=EvK69mi7_Ytl4j)ldX8XSMK@{C5=wNVOopVi=!q{`t@ShXgR z2&SRL&ZdMko%cGu%{=p(+k3i@(mm9Lr{_;ar=a19*y~6!X##};1-IndtUfy$-#$Z| zGUk;RY{?dTdF}#^z1PW?ELOjlH}6!<7VepbR(G^HcZZ?*yk20Y2hA73f7833aw|C{ z%gd9J3_CNLqbK3T9|NFd-)hSdHKF8u*uY#$Eu4o zY>kWGge^P5lOe9mOQ4MS4qu;L2DusPWToNjo1NLDaPh_PnCi@|z*C<+g4)_Q1QYhH zAt?;OTaU6GK6m3j>s!^;d<+w4)3D{+K3*MQX}o)i1=+LeR+4$Wr+_i#&9pZqeh~!e z2-411E;M6c4U+%m`4Wh>SngjN9T=!)`Mb&Rw{m}?`&skM$h2UqYjDi};hb^VqC7_+ z39KK)gcx+5!dVh(baya%j9q)!c={N{81M8spR~Sa&LgjNzsqg9daYLnX-2j*=5_ip zY|mpQZhjtg)T+Jqr-G)GZ^9?!6Qtu{tF!G_488*LG6V>wqCUs!wgK6^w$!EK*SMA| zGNNaP#i=5q@JO5{=6VvWz|MA)0H{hFlc5&1c3pmXiO*UVv$_zAXn@ZR#U+hfO{Tnf z7l1`n+OU0}*$!YCu9j9)4KxyL53rEN^ z9F+n7OKVQf&p^(Ztd-ai*}i11qp0X&C2bdPk6Q5iXYo>(=ACU%*pbc$nMqmJ4EYG@ zB!jQX#5Hl^4$k(o3oL{Iy$i6jZ)u5G`}T~ z{H;pUs@fvBFO}!5FMW2COI5kx!d9EJaS zXFDxnYnNvl-e+s>Lq8SGC3Dg$e&gFv7m`<7Eb+eb=>Eh{*%~d(45VL9WZWSHlml34 z#A~;v0!5#(ybGzcan4si+1qB%_XOb|2X(SqKaW$i z)avLYZcEJS>c7EwKb%tU7Bv~@>_^_(mro4ZB(?RhXv6sU=bR)KuQ~byYrMj27c{qm zw2I0of-xb5%~bUD{3(i2+ZtaBsAc)ryGcTn%S>l34v4oIh_liHPLzgIk1=Z`VUD2f z#!#YwrhfYO$du-_=Lx^~ht_j;J=Y9+SsA1gI){7`@FZs4+TvNME>aRpi4L+~){5Er(& zh^b`tRU0wC`o_=nN}Ek5^e3H*aE-{z^ELy@oAu_q;Go)c5z@l+tH{5+n+)Hlabj?} z#Cl*^{gCQB5er3*h7-!#5{Eti__M7i5ao#>keK*T=LXOf9UeLta*R9!e(p&|%f7)9HtA!}_l;5(uz356Wf7wvg#ry`bzW;Rlva8<=$Yv`k0|!;Ui5Q zs$!W|S@3%guf}$$=`s=|Hkt**EIIR|e5P7mFYS9rR(+xMf(G6-`S+JY;}2`^S3!r{ z{S8wZ5rafll8ICU^Oy5|0&A41;tZvV{R}DK&TH7FVQ3ux9ZPWEif0{2YA~jk0hJ_} zDCb(47k07(tdKjYp(5#9&9$-4-o;$KPj>$B+R&IW?~uJ}c1IcE-3aRqwsFMywq&j( zu!0e60uzZYmIDN>IFzsff9dB|k1WJE5%Y$D?pMBzavQ0WoJ{VcX`Ri-yPYh4_fysD z+&vDH_s_Q^yrzaTBm!@Wy-=s8_=4!;-N@Pg6vGuc;e*%1&-c^2579Khr9@HH-@0&L zCtN*hwG&FAHp{!75K*j90d`SkbFeu+ugHRJe|c4VJiC+6*8Rq}{KAPBJE-lgYX?!< zcM13N^V`}=6)$bH-il8-l?8NlLk~=OT40e)bRSel+*mAk!VQ>k%*~&3Iyp72mPrXC zg@T&+8hJ#W0K-o16(G=LnW>^VNBP`0-S*7jzg&R64rBE~6{)tvLJi(7_?6XZ)OiIw zJ=I1*)v54(|Ks9$-|jO`R3vHOoM&I!E5VO1Ti^KlV4oj(`?ON7i1=BFDpT4#m2(uD zUf`*>Lv|dATe1BHs5&ak&+u?_u|EEpE=j*9*Cidti1#!J$-auoWkjiJ@j z6;V6{yqegvv6$_?EicLbXFLwOltkJ9humQmBPhRqJqmhZPUT)NphHB?vtF<5HuZ6w z<0w_{i4kLUv-N9TCliMG`FoBZ2GwWkP~$VTADiuAcsP-+VEHP|>gMf9C)5!guZXOX z(;c>W9H;$Apx7((u(8;J-Fh#ym!Xbg=d{mB!+u01M1&m3zxU&vsBjgkX>raqwE{7l z93CoM;{JpSuQ@dn$0bn1GKV50t}Cw9PX8PM@jv8jho8^(;NFxJE^Vwj+|IJ7SnFxn zE|zS1R+O@wDqe}J2@(}si_1|-q~tYxl8xygiYP5ItaK%_Ot6Ow2sda>e8Z@!+4v)p zZb)(R>(YaUTR#f)HxKu+(%` zK0ErmV*kui4rQLnzF$I~9RDkaQG_>|-FZr^7Q}5ZF=nVI6Gz6Ic5K4ilAW!t zchz|jv}Gnp#~s7|&HUyqoxW3_=T1JEU`Va9XXWM<$Np1wJ0-NDR@F=iq~-G4@`FN# z5Ajx2?A2YvDfYpl|CTfP3hcMsWF^2oX=D<9A*8gM-{;>5z9?5jpXob=^mg%bSj!gY zH#El3d=Ny@TY6Kj?ftfGhQu3m2DCzohYbXYG>FlTTIvFGe$tEkO~0F>d`4~Eng_M; zDQWkg!7J{cGVv0Gp3XC=(~xz9}BQRKbw$J7!I6daDn{4&Ereih$KoUP1Uo`K{gD-cq5pDlorCkwY67z>;{ zv|8n?ijJ&LPoI?p^9|A!IXRe%CaYsS^u?p51v$A^rU96V#;~p{%sctkATI~Jptxs) zpU8I84@ye&T$ehL%Vu=w&uUiJwp$cy<%W%o6U{LR&YdGqJpslfVdo8i9>xj^*s3c5 z_zzJsC@UPMq+{$ABE7MRM=BgsE%7*-63K{ufZx0Kpi0KV+Y9Cg?Q&lkYvfoh| zn#*pf65Gpdtq#~AJr!817*AbNFsS*&z6_f0Rpz;w!g2Uslsuf`fYk)xhki*z^Qw&T1pwlt14#Dy%Syzyb`kIsH;Wrixxo1@9DEAF>ed}E zP_|B5)>Pm~U+(xx{bpnuKW(SAg$mEv_IO%&q0{)g_D)@fB&KBm`Z3Xb(H7#OwW6~| z?2I3IMjn;1^y@y4Hs>0r&t`28{;ZYz13T7Pm4Mbg7@1nLdP`sat>8F+nYgfwh zFF>4Gx&7hSo}cVgz6N@e@D>5FF@|luZU2qm#ZC#s;I~PfxY9&e5Z7GFc!`6K$dR`Z zRNDR5_`4k;+mw>T#4JQ5hJ5#{hgN3G6^MZs7n=fzY)|oii!z4N%{&1J0kph6qd*eg;(MV|M1{z;rCS-mR7c z1^BDOmQXlZqxZEGkci0V2CyzF?sSAL$Cy?9+u!Q7TQRLCq~-V%6UU;vw!eI8+W)=G znsb#<)u2L1@_jE5)P#HjO!x;|n=>yeV{dDxv*L2jW@eB1ftEwb5GPX$GoaJHteRwj zWPu?+I~$g4Zas)VAEiXqVUH&f8xKe60}+4ZaN9@GQvj5N>Nv_Z&R0#e zY~m9QT()j0CeAk~+#Ir#9nGGF^2d>i04~QjU6%#DnAA7(g8XJ&n!&OP*qQQz4e%T; zsxJBFp zaPhLvak1Mx?72XAz9VdI9w$gANdXGnI!+zvjJ-7VuT$eO58P z!NI%mB;ag3PYG7sHIq>VM=h)ohQ)kdIc#3b1niuPJhU0TMb(tXJZAxpDb#YgG!k?| z@7KYe_%C+(U~{~({yIg>y1W<=?eG7SCL*D^^%4RJ>U~L``I;`V9Ng-0LL_n)ZESo^ zTwMP_CB3oZ>cBEEAXOU-0IoWysevqLMY}wF(1Fs z>r3sP(A4f1BFh;PzxjP1iIUG4X&i3%>qXB=D!h`3ch3j9r3T=+Pf4vgN8-;(E{&%HGd z4|^wg^eLV{=3db+m5#&bK*vZLU)AK~K-f>37dUMCthBPm*zNsq_Ek&2k|{GcC1}0Z!$blqE+K?`^A? zW0heRP&@S3a!Qo7y^+jo-KZ~9ksF`k4wIQiWLE56MqTo2E~CtKm}#AK;Hg2&ttJ~@ z+f%ca8vf^$YiEatdEKyj4EuE}?u;mrN|{=Voha+$m;h1_7kAMpgc1RkcdG0 z4znaRALIfi->{j@TH-b+#lHt67WTiLG)uE3xZbQD=qWP}^ z*ek`v=dqMvHjr%fvNu-@T45G6>0_uSmhhAi%yJN&MxRWfcGFQOOPUh_qvmHWUX5)x z?>7R5*T{nNmzm2=+_cK7*E+p7g1QanFF&{(2bSl%dv2@{k9LL8GiF}(ExF&VKPz{l zwJI1(rqyC$j{Z}Gcl=h)e2vk>7=UutFS{oT9sQoz{#n~CC)jzwVQ`B3xZ}?P_)@|J zKvOwen#=X|;feR-Aa4_9ucV6VlW+~^Kv#b>tR&TH5xV+s7gTy@2;pRc8uQ8;;sNKS z>uDSB!yhLet4$gk=#ppfLn9CJM*PpLO>W^uqt=3Zv%ICs)!zWfA>r-}SyG(r8%=W` z%bo@DIKvlDDXSc8Oc@?j_Uav!fO^?GSNxR@JC3%3=xFh;1u{n)tEY)T zHXhhpU{Sy0astx8r?!A!w!j?DkI@H!X!cO2sw`nebm|2v8NL&vhAPVSnuTSY0Aj!n z@KsEK1#_pUFlYV-k&c`tN=odHDs?dF^xqI0c4@~C{~7;D68DB% zW55Xmuiq9D+`nX+>|R1ev?gLy$j__Bb1O7w{zS|_I>iy36UyMY^Y+|JRXI5EjZ0)7 zs%ms-E9em0M6T90^p>d{<>Wf3-NO zLRTR!BE?O;jdh6aU5)M8M8`EiYK-)J?+jX;4d5W5J3Y)pbNkik)5q>vc86G<-~~e8 zM2Wb2U1Qml46RpIcjo3OF&Es-se}Yb{OV4Gx{xoA2=?aBE|vm;uyRj=%)d!)^310W zh?%To#q%9(mQ_Jcpc&MUwHp(kL?+ww?HcPBiUSv{$z56VwL9nR8W#q?MjA;czfCGT zsMo+WG$3!YU~y7=WC~Bjcse_-o-IX{PhIcYIjt#F&)KnyI$QMhnW%9o+{LSWsGlA0 z|8Pg!K*<9aVQxK8EAvJys09Ma7C1CPUNE7jC=!E4=YX&1vy`VD$YD3)?Uc+-w2Z?u#`{GAB^Gx#@fN%3eaE@wUuH>M~oW^~xS-W+4`>u)*KH%oJ z?Hy24_l%%>I+u3aXkSg0Q(GxZ9q3_sAgu;7JiI<`9O{VvQ#W=K#>U|0u)sa@!8Wi9 z=LqrRcHt>2k^FLj{Fe)GpX^*{@7%jY(P|W5QD^pmScXM^&F#2BEG1wI3F=7Hj=gGY zbk90T3#v{~>Ne8S?=frs^a9>$$`WuFGtmDIJP9aOxE5UUbbGVM~J=nHwj`$ii2rI@RMeA zQ!6I>+G}raYEpnBN#`Ebdo@kJ*YXy{##8f#NJ9fyR65H`Auc{e8lA}`;u>1T7^*mF z- zR=s-?ZYe$PAGd(S)g1=LhM5#pWp%k_?~}ixk#efViIdSOL@j*D%zf^3&lyp}a^&&olg za>%ZbU_TMM_vlgd@~Y2L+*Vq`k1@CExBdFC@A>V0IO9t=!NyoQ7ci4t{=?hP5h@fG&wKi-DcAR?iN&eDU06_PRO zpV?rIJz+pThL08NiPQBT%Ts+Ly7JYaE^sar9DtP5_1AdFOkWd*pZk$Qr=btV{I9 z#Pr6yV)`l<@=NW>?CvqD|MLGN83~_-SMfsd1k4Tq7y)pCJLdP;Is3k_02%%as%HuX zH&kUTA}u@RjhHWbZ~J^c;LY{M&;x9{qBTf0e?`aPPzA=VBmKJ>6cG$r3qmK33rP*q~t6Yp8W+c@cc;q-(k6My@f{t z{r%LaZ$IMlSe_f&fzI@nswVT`z$R5s2 zPC`rs904Y=TeJDUQS=bFhXf@nD+a;SUO?mo5{N{t9UdJe zL6@J0Pa~jEQ@$5Cy+y05ySuw@vgs2P0DcMj=L%pj*gj)&hIgRrfkwHeU4uSL(nu>; z#*lAtZe`^VKwNjN$CAYI9XX6Zv^G>mCnFvAtW0OO5neBubn*XC0bC=jUSK`NzB>FO zPnUOCWFkO&D}|fN&_+t~BwTkeX~$DkrzpQfkC!+2BcJ0@WX~dfB(ZBh{aIqkug`;| z8^MB;{ZLrg|7&Wd)GI_u;ImcrCsJaE7&7EJaf~`o!O2A_6H#k z{-=`3m~nBmM$gDt(@2^|I>?pf2GawG^&8&pwV&O+T>|6x^^KpzzAbhF*_Bm0jX)X= zDh04k`O?4t+IPN8q0AEFbz9=hxM()jSFD{*^BTK;h({@qHWU!haa6ZDhTq-YWw*5n zur{YYeh*1S)a&aXhV~Z0-pWbTxHhxV2?>dFXuo{QL~z(Nof<#J;~0RYZ9SacpA2PX ziHso}zseirXXg(oval);Kz`r(}R1{sjr zvh*zK8Mr0-=hsB{vuu9?Dc3Mx%;31O0jaP$cq<4s@EGUOQ!ENNM7w+l%K5eNwTl%% zv3~WIR1Q3(2DBbZVEn@=227l`c7<-$7tyMA?^cB(H=ZL9q9CH`wv+6BkfcRu8 zmV%u2OpC)pLcfKyTw+G{bS3wgxoBEEFnEGB_Q>ClO`Fwik*~2SJ%D8y3+3)e4P`BF zqO=SS4sO!^FsiO@h=u*{a=Mf7b5_{xt&x|au5Rj#jtV?y-n68u47FIti5(enUMJHh zU1{KDr>KZEar#Xxj5JEtA;WWT-XEatRY9i!!Ug>ifa2oekKix?rx{mRv-NPc7%Lmw zZ>u_fLH@v-A++c2vr*K_iSKha=lQBiikM{Ghhs>?E~3LD zteJZKTf3s^6yN!~Jm@Ntm=^TBytNN+ELquFYdyCZ>u%)gTkdfcN2ZRpL&T({?2QL%DumN=gO?zE4V;9}P8Y>wC3@{sW| zQW_Nyke0?Pesg@p*?At3?D6AGJKRFk{kO-IkrWV*yWXY~mQk)wDM;wr3L0N4btR8(1J>EJ z`w&Az-?g=7ZAt9y_QY_c3>e{J>ET-cr>r)(n*i1?H zF~Yh6=r%d!!%+eBWe!}FmqoHI!<55Z#(r-{M0a<0|F?jJF2ZH<-Z&1H+^nQo&&Df> zH!Jrh0egs*DOSiLOw@_WBJ|TI?*Lcf)vAt57Koa$vAU5)H}FWlyMIhhp{0KMXwl5P zFn2v6(FvWUuvrd0oi&>?_rG0&CTJS-~vJe)YLx!X@}X8*M59> zg~2P9D@j^fiiJG(yO|~HOsBb@ex85*`m(V%g?x7+O4eKs9Hv+qe?pgk0+6fnH-O;W z7ViMo9XCkB$tg--gZGb(w2Mm(AfXDns1!v0_1Dwicnd!_i({e|kC6y*Et&(L8C=B} z_ZxA`H8YHlyT&b+(8{@8-xyJt$p6Hj^X8^uV-so`PI8f}bp!0uxkl6JS3@FEw^f|W zDO0Y*i zw8TUqHE)HMmKMr@ef26m3t!opbpCSEzK}hcTgfiZMHBQTPD<#zp2|hZM8cWP0Rpe5ui9jA?Btrz55>MN%(98C>~A+$ULFw_f)RW`WBMoh`Jc) zjHMhBKFf6LqU}oNFp?BZKSy0r1)S}i-ENt;BNJ3|8B(VAN}%JFXGJP0MYAL3}V?E|Z;D)V-zl5UXWtX({4nu+7nmv3C@>1a6qIL${<<{BwN3 z$hf}Co0~T>R{sGruStb}l&4FSrwfNk$?Cgi!CcrWy$I|DRFAt<1>Fyw0Vl@As6%a2 z*&t=!)b#IN-?{ULPI~QxlFVdsa)L}$G)?{UBfK>)oU0*0G?^dj)2DOrZaZR1N9@z7EQKBAe1nRf6QH*g@Xo0o0mgjfk8A|j`|5?oHZncu(P$sJ)7 zU`Qu>H3kwGC16qG`voz4<+{uSChvdC$ml#MUk5idR)gdDr%=@OpyRw%F?;FQ7KBR2oq@l@lp{$m;8LT5*N&4T^4Fa=9?q8== z)j%^ozBBofmz5wwj?(`#nSjkpn$ZvW6r?!5R^-5X8YCqJT|{zr{(ar_53Nku2#(!< zzInzV7zaIN8Z8J^QiL`MxY3MS^rL4)Mf7VpDcb+b1?cOOTC=`OQtW?QFRK2AB?;IH zG!~ps)mz&${55~`zGdu!9sp`F%W&%)IoE&vBQA_@(VQ0=vdHatm&tu+%b?d>=Ys&s z`bMF&2Td9+E07D!yL$!nZM`nrtUAcS!N}fzFRom1 zV?an{)kXL%hPJaam%&%OlKT3ne;wEl%s(m*R@O6&;`6%ZpK)v?(ROv0+uLEL3v*O8 zBK7Owt^lK}`pSK<*F}Wo;9q~-T!rZ{tRowfF&rmt!KXwr$0o$a(2$Zsk6r+w5e(OXTbvqThfWKpQ?w3 zp(}HoJmAI-PA{08!%jH)zp!$2&i3_?V$MK{IhArRh$vD7f`LOYakX&hLX*eq*9o_7H>z4IUc2aV-tYE;N zWz>;Adct12X2m3M&PvV_Affoq7wTvp_6DCMH9a20MN(#O=ONNwGtTt%yhLjN*jE)) z@yfN@WL*hPCVo%K$jGYs0Mu%LZUkVze*AdTuMobC18iA?(rNs>2{HEohJ6EleO%1^ z9=kY2y4>7cfGd0(2S(R$*7QxPcx!vRU`aksK9S$cGvH0!gk5xGxRq#Xp)lDCGEx%N zdsKfN>f77bc!oHC$B+=MP^UDh#MyD3ql4}jFs9??9t9NEKJ*F4-ZBZcaQrO3%$q`b zH$WgTBr-NRj8vm9B8J_#?K8Uu8$jS;2k_njVsR9xlH|24uO~puDNM2W40-hdSgapx zaTZp-^{=>c_`6HV1tel0784KJ%n<0=r`^XBq{dHdql;-$BXT~00qRfL6Qq#{R8TgL1rJa2hU;RYiy8j zfyle4@3O!H;lj;DOux6W9~Tg8^v2n#*WZB|fiLksIo82F_u$ZIs{UI2N`Pt)Q27~r zz*1epM-qKgJdR)%(Qfm&ib3r`ZMJ7?+yM3HKdRe2X@Jh8YWc??7l`9rDJZw9Bj&%i zw=~2qda#X}y6@*Lu{zSoYf6ysIIyIp#cB;U2TFTB@Q~8Gsls|z1%~p!a`V<{M1cI| zL^pRUMPFRX?4ZvAy_^sb6(_F!ux0m-)M(af!}fTGV+HKf$qc94h>EM-=fCu!&BWBa zcv1qpNJKnz#jHl2jR-7^FCHBCq!Sb@0fj=9Dzy~~$2=XbNKPN}7)nx6i4YM8KT=`9 zXTMe>l70E~{NlnF4A!u+t}_qpS&Au z$u}^d>>Q{EQDah8e5(xbMMDsPN+dRR?1soI_d7-Zhh>OdIMY9`%pY}6rc-!Qa zdivD(o-&641eDZYPzfm4MGuKWoV>_n2ybr*7^W;WdKDQ04p!vs0-INO{Xjr`XZ&fG z(ue+)=qWVx?{|QIl=0-;T-SSV|9gDPzVd$u!`=U%Q2G0NF6NiFf%V_p z6W`&|dp`(d&i)yxmmp8ko2`|V!Y{0Uee~1{;8Oqn@cVD;27Q25N0&_?O?j|{o}QkY zu^7-?#{@n%eJ<5l^Y8cm`SE|x_xCp+6z(nnB0K+QC}WWvxlT*d!~wyFAw!D%&v|2G z%=}SPE&+Z)FE1~uvv43x!ZKnQPsOR?x(BcoR%$C1KG!FygI5TW%*@P0^}?3K)mf4v zK1s5SXn+LB?mNe;u}T-SN2R7zal7jW%iW9==Y z+WOXS;krO66{J`xZGqzM*5VEYin}|-owO7wUNk_E0tJc}0t8R-qQN0Ra0tO&0wnM5 z@0{}==e^_JG46-EKV&clfn@K!_FC(ib3Sv<*Y}m}+kRu<6k<}y`NngNF$cY?|I69z zmO+6NfSg4Uh>Oovi2pi@MSD4m86y651+FQ}ylasxJ~s1z9!U)5)||XN*8@_WySE<# zfFA?=Z|Y?ay&Tl|0BOHFa^RSO%^UBfcCpHz3Bsg~YdZ zlZpB4R`73jT!^B_ zl6-m>TgQzpk0a`r;6BOVFU!m3w{KjhPjao~0vxtyFR$Zp?&zc1v1+6v@83cF=j-Wm zLLVqF>l8bA+dg!?<}R2)=6nRv#REeaxV6Lny|MkRwX(We^WsAd3+&aD+MCC|f2UDzyQWOi0k07vqrRo>1@E2bH$CyVm)Qht+XawpWD92A=Di+0 zxmEt19fZq&rn`dN)wC88wpT)?cLrm{5r~}>!(1|h)>_yZncL{Q~XmpYs zyy`Ub!9=4so9!hZlke~i=B=wWe>t=uJwGzQe}DGJIO5Tkmf9$q5l=?est6D2a0QXJIhZ zx3pQy4SPH1zq=X0$vIg90)w6Ab`t88>OLnUV+Qx#zVWWHHm{(-da@kl?CzG3n8?v^ zc7r+K0`3AtvU9Yo6d_MHjzQOLrdiFFEholFG;iW}NPPT(8S?V1UCsH>f%mhHp|7u& zRubU$J#O!0>nNI@dAKi^4G=G*S&|#>lU5idn^0^?#|@W?iCA`m7bZRujYYeh-{P8T z;gvOg_M1+6$O*Hcb(0H$CO2ULt9PZH)8;Ebdi-Xs0C-lom=;?k=9E6a6p(rSggLp_z`5D(IQ>JM81|OH z)j2s%v63EN52PD545W*>_l$HRaH~R*uTjRL^z?RJ(GQqO$N^`vgZYlGu8+h30F8Z$ zM9R%fPghk{O(D-_3)GJU)A!r}ronsGm&yPnnVXxpPDb@qicrnFy{#Q+fyq|_&j$3x zTrTF45Xb}=&W_|q(FU$WOiTdnsiqBBcprDUm`H?#qowWlOXUW(2&|pXF|Em5yXQ@V znK2|D632z9Y1hQf+RkDw9sHJ%*`Df^PsP{_q;;= zgV8`V2^&yhp$2h6dBeK;`UNK+6NFay}b$VSY?xu zxxJg4;(eAW{>V5sEQ878e6&2I-h`8p5QMm;Gstd3L%Fci@K2XDv5MUNGrbkVy zfo!ol7toK7xgCRPon%4SQ;-rd^;$vScrg+X+{voU44utg#c3|C;hWx&h^QL1_+VX* z>GKH(Mci@qHrRWiL1uJLHOKuvkzXUfeto7v21&{g4Bq2rRUahtkexi;R}&cc@Fzse zXK(%j=QSzm;=&RC=s%lS<#$4>cletOGj=w3_$y{P85UP*aeMy!BM$bCK}Yf303YBb z{2>YDby0@H1zo1~Dfa#K!CqNbdvNEK0GFWPStmHFFunT6kJmN&sJWebqHFYElGv8> zc^JRbben3<+x;~IXLAwJ3t+bOuqcEdAmEyB&){iu-QLk%q+~ia6Db3yI|IO>d(R~?9*}h`8k$dufeDLB=Z3P4jdkp z>3w+(E;R)qMdB*zwsHoZ)8=RH^qsP`N>NYW`PpMZNpw>qXN zQF62^Je<_`IOHT*pU`)7?-#CnGyvH1s4FQCMkXZm_T9Vth15NRMP(%xrf%wj{@)8; zp{k^imzc1V*zN3q&S-rpME=+90k+SJW?H7*!=)@t7KMFUz55S2Fe@SRtp_jCA#x*7 zMcwZuTtVTj`^n0Y8rd~t!>Pw_-;HwkJFsatP9e86${y8h4*X}uB1zD37PTsegP)36 z$vI!7*W>!v`~Ung<&ZAe;D|gD7V#H3&GXr%1%Z%GII!`h9G=|H)>hDCeQ<*7^-V zsyJVHQt^BO;V(V}EliG$UH+{Jqb2n1c({$4HN>v^P3l^lymzKNPmng9U0rnp9Em+Z zKH4)Is!_)5fOHjh1sUJf(|NqloG)7ad?|`u8sI!fRct?PZCMRVrSXUjf{tg0RPKtt zCPAR;Ukt%udU!F8ZEJ>R`o337PqBsrhnVnlNKm<@Y3ko+0EjXdBU{9_=rAV(0fO_; z-QSO1r9J&)UOCj}uB2*hZ7u(LX`}_^@H=88UqC%bfp#cCX>fiYqx0ABvY_FpobWjt z;7D_L>r1o4M*Sm=mpYtzhn;8>S!vl{t4&S8IG&-$5~x(yWfV_BcxB)4!9lV=`EY%B zr+wq0P&e%=;AK_w?0<$j*NL;gd$>#y#+`T9;`V)eR*P_-M-US1ma@`Y+kx*5 zOJS4y-R11gyHn#n+@2*Og8xR==a9+t^vWK$fZl*-j}|z5m2OGq=H^q9?heoysnylz8w2LKM%$6;l#toyxmYPE^5v8J^-W~gOtF8I zpUFny*B|B2B(Y3%&ie#0dwaX6E=%F35z&$wRUpavJMpYVTI>8q+bqvje9n87?jnOL zvVkA|c-nLT)qsOqOyx`i{Ic{bg?OmC&-?kHw|CvXSK2X$g6AGY2cw*K*Vm^S@o%Ar z8mxaYeQSA@9LAgfp!fAQ6`La28A-ogV(&Bd#v)qSw=tY4ZdNKDE2Ww`+5U)3SkuXA zT|E@&44m>)&sbg$LD`a)xA>l4yr$5Q<%T~%WZpJ$DAs2`M`OxgDEL;!;gSziUv)3X9Sgp!UB&e zB(kC5&f2Z}_wSn#(p+^dJKEdtNPujAme8m76$9?YDq0R)XMglyE#!13K6KtwwNW{Xr-I|d{TQdYD%d;K#mm+O^<5Eiwm)o=@X z_qAw%5%7ECjyqcpBia<;Y}Z1q6L2iIe~4bbRdg|71A}VX8dW)+45V=F#F78|k|j(T z4DDZl8q&RatJ79r6|;Gcj<0U`Yv*gwc(3s}Xy+IF;2i8f07BTVHu@?C#Aw8g&S&}% z!khiA+2xaQDht9lrfd0YUx52i&o%u0mi@kz5JY z`XqU7ZPrZC9K}oYyS-p{#3gQ3ryg1Nm<#ap!;RjSr2TCAU{JYB!N*6?+iGdy$eA4v!#rVKw6+pkjPdq75T2bM@ z8*H{{c4Y!Bu8L#>9IV!3)Zch$P3o3uH`0LBZ~i_Sapq*PY@-|Oui;69P@f$%M>YEe zBQ6hW=S2g8<=#*=Po$_4a1?#NpTg5l%uxuWDOyMsd3g4UmOk!dyr17&vp37G^Ek>Gk*Q$rUuv{V@5H*77&{0-{_L#%$turBZZ(o}X&jz@OOUK!8I4$gS zld873cYL07-0`dQ%ktJYdiD0c_{q|r9-*1D3*d~gY7$zT$vQ?0C%S9D-z1N(xA7g& z4bBd2*k)xt$qTw#%y)$O{`ju!kCB4--2rNW(6ELBaKW9MH>JY%+@7ttrNLk@RdfzI zGMaaCp)#>{X8eVUsgi>MzFjbVr$igN8vBsuCS$s=;LqmPKwTpz#M{QO7AjqT#7DyW zdhS)A^JGZNdYgONQ#t13k2>A*R?nwj?oQW0ocn#SRwe^_N;HK;nMTdz@9$hFfd{0U0z3WP7V(8zm}CjCmDKw?YLzJ%qz7%=*Y=RtJ5qH!5eWV_)7s1qrCe-tJ{_Y z$jGU=$MQ*3r$$jy8w#-Xb|*IS?Ob)t`StzV^=qlt#^<~)n9^@_gO|8C`lH>(xC#>N z(Fw!)>h>{a)M0il0NrRYzx`}vsPC!c;?l47aLPtul>dc6^=nr3H*FRNm5(pFeKOsb5M~B>jYvl5%)-RmRDv*?^p^IwSq}wOZdkk8`E@@!L z)_sIU>0K9Z+tBL66$-T3h4Iu4eabHQOV&6djy%aE7xAV`7h0N_dkHAeIP1x2MP&{2 z$DQ|L{~o{Um}9I9{&f4CJVR|22%|Dui;muHxoRmb73Jo3TLiRmiWB1#0LbI2V5jW( zfOJrB8Q^12mWd@4@)HO-8cbJvN&8co*-GRUJgeW-9S+XG^H-VJ_&n1x3DvomPGVhf zr)7Wht_b?T97H3x9A|1@spsVgwDIS8jG|Ci+xV8o^(DfhfK4ZXlE86D5OQl5?G4n5 zos1n&o+j)x2=Gg{V}O;i75<=qCB9JS&hOADKDU04gFaV$`8&N_$pu1`1qpiD-gn5Z zNJ7wjt{D)}#DP=cHgLAvm_33zm<9PeVLwb-k*vU0o;#J73}ZaVRK7W4BEMF9=;++) zCNNN8pyGKSAd_1o)}v*s#!XtNVKkPgyjoMcsv^(LXAV%JD(qlJMqkx1AnWTr`;?7! z8Y|Oqv%rH;$w8IUpQVnFpDG=XT|+~M%kWYjqTamS&2;)7zcJ8>m(O>+XsEQp61;4p zCU&dw+m}I)3^+BE=O6z*r8?78?ixI3ms?)z|8dX+RV$0Ck%(QM~gDIjzRz$mPv1CAEE9VW{kM}%zAE)~E}HZ~#HS|XZ;%cdIyFLWyOWULfr zksp)BCMI0-R`vq-J9SEQDh`0i)`NqFgWf(&7wD)kdty^q_}R5j81%G+6Y8v&qD684 z#i9C#?NwqIak{{E+@4dBA$vc9%5kb{bnqiW?$!)g&n`FjKU)bIVj|C zOET~2!P*BDL@7GBpl@k!Npy{eInoGp{?tcEXlbh+?73mBsa_3D6gW9M?+dm80z6c` zgPNyG%*>JVnxIMJ{R@2{6p1pr3pa|{CZS=OYY3FXpL)(#b`-t^jV7vFsb+OrZb&qr z{mxOt9hEklbi*Z@vDVv_<~WjGL5YAPJ1^CpR~tL$)eZjQ+AzeVGuryuHo6yN<$rpg zDjs)SL5RoBJ%;8ZC>@5qGW~bMs`SPFYWjeK^MkHaGy334E~t8c@Mt?vLujS5Gv&X)aloON_2E#kz6r$>6T!;1-nu&!6wW2(AFXAW~H@~)rl3$m!yQ#cS! zD3Faa2S8Ljcq7jxCOmKu~8ZgYLz)MV6=pPZCb?C{8BN)9#cF(L{>d7FkPh~oF|=L| zk`}*&kKRIlD4a~YKuFc>KtM%JyE|+J^Lb)C+?#TWR-!;u*4qehmybxp-V^VVq$`@;2#NIU5aO> zP+k2^N`vC!fiFQC_9~{j8aK8H`r<4h(PzpRUx_p`xFvGm&z$$o>1PfDOw8Zow?~cN zs#`IFiJeJI+psNKRYT*6yIU@GECrv0$$WKm^`Ad~3c9*-b1go67=LaP6&0hRs*<7z zn4ePre3KoWmqeuc;t>#iQJYtD6kRR%-1jTNOsx|h&4S;NfC3T1Zi*WE`su2L5^iVm zQc^d8d-;GzKxi*(-uku7d1OdztQniO!G|x4t7-=Tf!40fMv%|RtGtM2d|xD8R%Ucu zgT?ygp~NxnZSOTp0x|R027T+T|K=6}nvX|zah2C&W*Y`Phe-sqL3_h^+$jz4QSGnE z{0MIucaS2o}p_FrKmzgH&=oU?hnPcnp{H*enf z!L6sM>29ZhDMvLLq#OJtNB{Ba{P#C8)d#9WK=}u(!4x%rInjbQji?rY;&1p%vVMH| z-`A&gW(MG{lwOnkGlg;L{X^6I>;H^?>NL**&4>Wg3vm25`TEcAfB*Odq+a}GTlK0u zT>bpg;n{FQy7_twbeu%F&A5c$IqY0C|KkY>CgyZ?DI{O^^G zeCGnZ;XiNZECaMy{PFTDXfzABhyF<=3=EjK@;-|Ol7@jZdX6TK>b#B%(jsL^R#ag~ zYz1s7900Y4x$3PN#eD6Oe2x3fg#X3JeqPgICT+3jV-p>4;iWwGlTvbs8n?GFmGtrV z&4w)jF{DcQ=1c@EpJqoHn6>9!cA>oot zqWHFsP^C5`fmmXX-y|FSDBB4aJhbWDyCrdTgW+7)Y?G?OTJ17aI_TxF3Hc!L7S(=f zMKMmzSlpfaEkN}>sZ3>=+4kDadLjM#$v}FV9hBDD(Q(Q89?|_ZM)2i16QvdtDG+9J ze31VAwIZNw-#s8__z#sEHSaUVR==`Fe(x5rkCe{B%>B3u7PK*YSnZB~}nmHsSG-Iy`a3ci}PmcvONBv&HijZFGoRqDq z^#7LRt-I9sC3!(60k{3^qLyV4kwrnyK`qjx`ave1Zcq3%xRf7_D(>u+r@vvzOD z-d)ynXKFKiOm^a6bd|G4X6+{Re~cXfIQObTP&dr|tI|vt-!| za-sQ3?GpIvuYVVW=XMyJdBm@BRf)4>F%kn@Q_E$zi;_vuand{M8CYYM^CeSqGH`c- z4@LkRDm`b`jr%Vi-y;jVrP=BT74uzC5AT#*o#o$F`!H@JBciXINkI{@=cW%#%=V7< z0AkV0{I`05+&w!3=wSfIN>E*sc5rrO`yn}JV`gt}FE(gmWY8A|e%^f$@?N9w19@pf z2%DVkOJrMB8jGgINWHK4#p=^Qn{2Mn&CN|}1|G7K(i*m=KVh)%IW;X!wMXHZ^PXvq zqPS!zIE!k%#BQ`E@M@Dh=kp@EOi+SbP@k1#GX{HkFpGD(n4aPzE$=4j`w_)1jBr{i z=V;-gh<1L8&Z=kUe3`)pMZIFVc{zddpb_|ja-KQEiuC_9@h~rw+y(bq@n0wlg(tJrtaigH7GBf><8OD!bq*2 z4>w%iIruAmuoz#=y(y6OwF>g2j3FM2_Uj3;Js|~9;q?Wtc7`s#Y)7u5|hEz!{4Ww`A6Yv%E6%6w> za%XdbZF=MXL}vodqLK0n2gJn5MIWkLZK%FXi=oN|+BQ+rjxs z)mjH4bG&GB5}Y&uxD}-7>lx@?9zu36!faEF{ocKmt}Cy%>Si?2UTZM9$MBw+%*4kT za3Y%3Q7J+F5ZKVykK2~et#;tBs{9wXp-f2#Zoo!gEo{$*-$LW`)5ybU32_{~0ZxIj&hPPb_wM4WBQ5w$Of170>(Z zYh)yL`-4th@8C}NA9`|=YCvo_E86I_GhJ;*xNKMR!^ScsEbMFN(nQL{L1ZLsE}*cv z8MRES549e*v&oPhcQCK)u&;R*(*=aCW((i~Rz9ArlUwUrawBUdjWUxmR?wR>1>5Rx;gd*(^awbu(zprR0UwU8Z4=5HRk#hIKA0F_9Ue$OaX#vvBo# z?XQne>zREK)7CBLQp272tgWw-Zj<8qh$W@0jkm{EXNIjtM9JczdLw4@JWHS9G$kMc`nAn~vPbk!?C1_H{^NObwb-vwJF4$Q zFW6aeb6^lcwH|$NaSoxqPaOGurY&0L;_#&Du-)KfXD+r%(_8~dR9BpHkYR-$J%1n~ z#w-}=TxsU&0>YcX=!Goy^=#OM!W$uJf>F+Q2~H3yuBD)|@&UFc_#%0aeYu5-ohFe3CnF8SvrS*>%x8I}OT_eiFg`TY{S}e?|R-7=K30LjYAX*c|mf zGqdpb$M11lPdtDP#MPgx-0uKT0wfh&J#-cEmrn!7rYi?tn`3icYZ*AoT;f(-7+K+U=;pBt|bv&-F%l z11!*8VB#=sdItKJl2Mj{tH)J#6lqsf#y2*JX>Uuu{#hebU$++#k$?NQ)VCV za+I`WzJ_mKnLwE_bfZ!(djZhOw3#r~u1M%SC6R~eL2Upo^$ZCYorLSN{@;lmIy$>z zSu<~ziT(!*Xo`-A*}*TpAAWz?$X_zR#u0sw7zCiA0fGJ;N5uC5Veo9dI}UdWKHU}h zot<_APL9V(0+GoAp%ZlUUjb3uVbz+k7lsr_8Zo>7@L|vzhuW}-H;RZL*Ptt!!aV*f zgMOJd3?N7_%W9&%^VeR!Y{S%=wg#iK{pmzR!U1@Y8Fv-OwJxZV=elj$D9p&NmPWBq z96UEU)uGa4A=^M)vBoy6Bi2J@0$?{c0eu$TplqF2W3$Rk(CqoumEri3lT%)q4K018 zt|-r_=Yz4|GqHCcKU&Z~`zz4s(r;`LgNw$o-MzSbQ9>P|ALwobX^DZz*{qKm>|W`J zF((RExkrs_XzAHjrYGiU=992~&G*KywOruN!&MW}vhQ!Wv>Jiuq~2e5g6Rhu*yt3( zg+FC=Dw8r~wzM#k9T43wV72)!6m?2FCS6}H9HFR|4+8xAoZh?cQlp-ZMXg3hN0(GI z+rM!y$J<>2!e`Drul9NYXb-)Uj+0+mcAE~9&c2Q5P5Ej04TDW8gU#biznBUJF7CA2 zjMD1cFXLCnD@3JH=!&MVuFegfWuEU_he;|&QNDJBEi?O0&{_evydQ~5>~?F#UA=qX z|NQ#R$zQ+4A;f%q5@l3WtX;@f&VKOt>=#wQH~Wi zvPr{0XP1ha zO;N_-h1Gs=^Ze!SK?OY=1#JFLdCEyaN^w&Fq*HOeXkqFZR^Qh*4!JNFMb2SPn3-wx zuN5d--n@!db4IuFrZl?nuzeMXNx!q^0HaExQ|E zq$FwfAzE$OdJEJeEsc$h`T74l6$+4{>1+O7qQmIIfge&c?FB@js=t|nE4jJ5-SAUQ zfBEWFKmheP#L8;*Qs-xJxwY(%f`$}-CY5ipblw@<0{r|G51KQztZ27Kx#BePv3(}l z*5vKxl}TV756T#>N-pMPpa7W*Jl)-GI6RGMvWEf6r8Gdn(^UH7M|De!ahY~_NXV_* zcCv8J_G7e7mSv(6_AS#+jrYv*lKE9YpxB@??ezf;uZOv^hdN0*sbwi=b%ODuSH!d4 zqcN}zkH5VD88`S6AiEjuDTD_M>`X_yc9mYGHVg33)^|KNscYi-{G{rj#P204Q`2Sv zQvcS6yWO2#>aCMHDhjU+@*SYaDt9-wlx34nGFr5KmvpyJe@Nadx|+j2?AJ?1N(Y35lHRTey5i7Oy9+%WB`d~S z>o9Ui`FGo>T_v+s)bGIT`pAfQ(SvI6rC!+8DJfP~GxBiYkb~zb`%C7RxrH}pTIuQW z68@*x=Vd+5u3y^iE;gSkFHIpu=t91=J~yk-utu_3fhFixs90!^>{t^yDsPDL2UKQ)@z3uKol}=lT>LE_Kpl9hEFHuhVP_a9gech z#X^b_-4XEJ!L0P;ojE!3f`ILL{1Y;ACHPR*%BQ4|H;02_5TBOQ5!&~oo;f9~qDKvI z357hlbm_GUy~*LJ6;Q=E2i({|o%i@M-(A~KSyb)(5H79+|2lU*(RT!;Giwtx@u5ge z>$>$*_ygb)C4s@eu+wC0yyFtwdrr8n!hB&fejw&JvxQ8Lv}^RTY7$b7e{#9l;O8`NleAW3I3watZI8`P1X zeYKY~o{UXUS`u22FgV?BpOjGTvr!W%oCh*r6uC!_7$C z5~xd4`nl!Y@i8%9kkrxow8+D=z^5#))x47M)@+BgPob7LngL4e77GsQ{ls!m|e#{p2fwLo|o{nzlgce2^3sj1Wm z3bT@NY{yfz5t1R;M$F`V2A2ip0AHeJf^R_iz=oL9n_~~(ocX}ojI$$*d%zXQ<(ruY zkOa*g$^pMjS747o^8rmF=}Le@{;#WpRi(5xMp{tsYjDTY0NjNM2kzn=ZR6&pqKWNeR9X6#ZX zc1&(z6>7BU+!~$GW9e=^Fa_nnue3^i)evH5N%Xn#cr?Zpi)Gej zzb%D^RKR0)(@E=puIrk9$rSM#4tt&LA5m9m>>}_Sy2b(PFML^^X$g zpnYRJq{TUtZe$r=|1>W#wQVkUN9|l4)2b(g^6#}~u;vL3o4_hi%S12uoAHxlqe zFJRA1d@iS1+$U2dknT2QjJ;ccj^vnf6BZ3PyvaN(y#^LuZRs~&2|6T(|_W5 zYni0GgjpG$HvgrUscfYeAd6Sl4Ss(adjg2(MjE77q^40+CwDJZuTqpkyTP!f!(A4;Ji<*HQ_px`UY z-9Xp0MU0i}s>r%dg{iQ_PRe>&%j)XBxw;Yq?PRDJ)Ses(gloM_8}_^!Zf%$IL&EKc zNU7O!30>9h493Mo4EDWQ)&%uZe zdEq?%k4}(+$jH3kc4X49i5EF5I*K@*imn6SJIbPP!aOj zdvyKUGb?VW=rHDUdBRFfx*oz{(izDoB($ReR3?;Qosv zokoCNZj=CF$Cwru%|xFI&q(;EQ-oli}&NIFIcev5V-y`lg3rs&ykGB++x0_Y6z6DP{OyzUH>|Q5Yp` zT=v*7z9W^R=NUGj{@BpYMiw=2cv-ys>r224ul|D-EyTmYB)D@B-2j={T__ei}*9Ykr}@hhOSaVT%;h)V0o~>pocK(cFO#? znRX(k5Iir4ZxQjy+RW>8^W8`iZD6fCiEPMC;KK)w@_%x0#bH-QJKQxakO%n!vma@$ zoSQ5$^`4%dU%2yG{tk@ax;$3tr!U`QGo4Ombqn5*_#tpsF@*FtA3a|bBYbZ#T2i^2 z6|fQEibS?RjxwIOQ_v6er)ovFZ|_%IYL43RP%Al>o=O_bKYh@?_Ea^D$AWaoJ=6N|e)b&0auMU*Euxs|gJtj4PMPAnw63RH zhE2S_0~-WU^@!$e8umgI=HV+f8I3FV-SI|F8`uB{h`6!P&HOcn&N~ra`NtHJ+Y%>j#ypW!m{0_Xr8|L2Ny% z+%X0I*59>&?8{?W^7Fe7?Hjv@Lmu03`{Q+2+=D&#$viw=d4Rn_DN)brdLl$%e+}ZY zq0(35Fj;otNkhSzcWw!OtkRp>_8NRdIOT27G8g0%Rpwy&xpNe3*zoZ-#kJ;PszL?n zD(4buNd;4XD4^yUlfZSgH&buas<9e@t?r4zht8OhiH0Na6VRF2vG;tCOO1ZohspVm+qcOx zKnIPR$9`_74pE!gCkTfgzG72h$kF2?`j|= zrKzAG5l*)C)MWM#A-|jH0;kfn>MqkeaRGV%mLY%2UQ@y2aX@s}zI)-)yS`*{xM2{5 zap`KmYcL-ac#rXnh2^~f@A}e`r6WHJo638SYQ(E9yV6<~tWU18Q)P#b>bz0XR+iJo zOmA^RIkAmUHrhc-Rv-lYrQPxXcb#02BJ4i*vNzeB-g%w~-lZrNH$x)Xd zRmOkdPV-ocwo?Z1{`T!++=H%rQXP{fD$Mb>%a2uXlcn|yAJc(pFe)MfqtX{0J?05d z$VmamcazLr?U%h;Wi%9|pn0xzr%Qm}vF>HlOfjHMG`-;Wbof~)&dl4;P!#!~Ha4v5 zM}}+lBT6bwli3+A>UEu+j@P>$2}dI5K!djn)f^pp#>4P&$2G#x8$CnTm?Cw4Qlk`w(#M#e8mQg@2~_?{U_H!pD=QLlgU7WS;V8PbG7*^T%eq0~`|=RJ=gmv2nXIhsC9(e!zC{ zk@qC+eka(l3D7%QKbmwXZ{ENZ;^H1CTUvHRvc#Hv3|QHV-=6XIaFBvGb6d0%G+NUg z?;pn=PmU~YKV*4wm*TE2oet+;>k44&5+tm}KxsT8DV-ETO%ofEkK#z(`lTy=+V_LO zLq)KR`&AP)m8FqptS8k;=72RKgDX>k7cj(#j3w$$)(oUi^cR@(CZdsIB^$`X&}^K@ zFAk?njM}~FL$nmcsl6Xtz4 zeGKEx(XqKdBn7dM{l1;-D;*VO1fk>n)Ld%v%0qH@4aSEuKFGOo#-KJmcYt6S>GRL@ zZao$P_B2cSof%!=%@K|s(T6xefTFv0Z5>JhZC+e0q$PXaFR@6is+@6z zh-(<_m~FZ@VlqC?cZf#hh2B0ygN|1x8C|H!)|wSP@pD%wZ7a)y#8!)4%E*-V#SF`_ z3EciMS#qDHSWVG7MRH*c;`^*i1q3cz8EvUqMO9;FoFEuC%Dcd$hg!{87WY&pWKHwP$oExl!!j*?Ja+J$xE}DQ9sMX-1~DOt%CwYSv-a zsE|g`qT#k=om<%qT>>Z!kpODJ1cb>a=Mm$>_zu5|1C+R`gwVAP0-1O0-PvLS{7stz zE;8q)C%%Fas4}OCay1L+@)=1MIU^&G{_N~vUn?wkp(p6!y#D3u-kvK`50KrqHlPMR6Wp!Gbro0_n!vJ*7QTTiY=2up$vKnMkmjU#~SZ)Wxs^~NX*ur%IbPaYY3hZd>_ z?0S$#-B)`f4p(z$OlY8y?(CMG0x7rl4Pwd3WYBTwb<$>P@iOlk(HIbJRQfEnw&xgoK0FB z^=x%*hfZ9Yk53LcE~Cf_)F6KISEoab5Vi?IcHJNVi{T;?zwn^HeogR;Vb#ko-6A=6 zfxeTLB}x|^{|^wmWfvnI&sovMu6Z;yi#83Lt&9B-#-sMD{C*R3satLDp^Uorh*{-> z(N&sTVz^zo0Yd1N1F*%%`Nj?w1bZ+rP=7D}V*{b>u)9x~SiD`M;Q!nIk->_!!O08$1a%MX~ z+~hZHf-B^oMSIW`iuOaCPz#X+?4(`>4k-HwImvq9+m!6bi!0pS-A6}IH{1Kucp&Uz zHJ3+;h&4nu%cCLq&N2ARzrA! z4ti{EB2&dHk&Z4+`x7W{{O2GHAu%z0ZMr1Qk1`gRU31i@$^wmyu69uV)&uDZ!D5;X zzJRor@!GY*h-@7l#n(+sxrs*j%B`lI%7@|Y;^kK(i~~J?UG1>e26q$t<;MGo!DLq1sn|%U6r;hP*YN6e8f6%cE2J zxg^-_Bm5gb=C&uTB)m5p2aUZ%e~K5{cTUJQ5_raaI6siYVOIyy*Np?x3YLFjlwa;T z|9Z1RH9g0=zi|Be>MS<5A5F_eNp#gX>+$Q}f{{Luy2T{!4w7Cx7o=3`6g{n)@CN0Y z8l@~FtUQ~|TcBO5&aq^R)F+(`X+JR96xFlFiovnw(qglmZ4ALtd40K|)kR>Dnisx}3ll%R#cQB2cQwxIUC$-ap@ly_UO_eeV`nl++8)d6BVVbDtQ7P7$Ty&ak`4TKrhEgTHL;Snh^!;p?3g? zoF15vG1Zb=c^8dCeLqa*=}$yQ@TxGvmWyKh6k#Uj zMFVAf6mjk-7SSmsxFGbCo9|uxXEm9uu3R_a`M!{F#t9qVS18%XhR!=43s?RL30g6d zr;o2^s%lzmnrc?4Jr&b7oX@dgkbd94RQ{F|wvHVRKH@YIm=ovdQ-rswy`lC0P8BSZ z{s2Nzg10x~S(T@sGJB_hn#MhVRB>^xq+2>g8QC>RS?iBRqW^ef zz5BwhSNA@Bn58t2ovrjK*R^K~t7oYPfIQTpxHvo8!o%a_B@EC)nn(2m<8gj|&JPfq zALVPNKzN_A2+J2v2#ilb6BA*6bpj$lt|-hR%qr4nSv@&9o{*S;@=e-to$gt2O`G&{ zIOrReG^v~ctoG3J0pO7?Kt@&XQ}0hx`t@tsw{NcT26Uv?xGJ)EjFgJ_p35*pk3>ZV z2BR=*mYHrcR?wBQwNc$1){d3Kj+H@rbEkH3u&*yV(w)?j;iRXp?=O1Fg~{Wm zSR{fnz0uW@eavIIae_fMqDNNaIc(xZXU7bTU41?8<3n6y?(7UJ^}V?Lhr!(SX;qY4;KeJI%IOx)YZdVeY?M6 zOMRWO860;MjshOraHh9B7nnzewU%U0S_^Z4$UX#C>h7SC*cWEe(j*_ockNyx&Dmjjk6$ zfXGE1K!d)&cRmy2jG4long$Q(M1RIZE90&(xRD)K_CBS7Z~e+7p$c=36-jjQ_e?WB z>7IHrYiEmoiG-1yERF79x;t@~zllpxq37on{+LDeJqdCB?OwXf(01Pqt8^)_7C zZ(r8|ceThT5reK}d~nWxM`goBhzi=za6b(1nm54Oh^OzrbM5_`-!tIfBNE?U0M==G z;3M|usxl|0i9ttgQuvWK6J~yo(w_s9xA5-i4YSG_z}q%g`;U{|yDC$%|NQ&U>-#s? z{&&_t??e(L9o-MnYA{HD>T+{(ijrvOiOPRu34UP4sAf2}X^k_BA8 ze*R`YpA>Wak&pc&MT?p$*r0`8F=Ca#et_<|9D6k6b^LXS=FA1l+$g&f-vo=u+a5aE z*@r@@-!VWoA~`idb`8&YS0hG&zKu#?E(YwMO4QhMplcwp*xFSzv6-Uhz(_`J4=L4+ z74u@`xHv^Wb|2*UJ61oHo~=}_D@B_2oj7!j&8pz430T0k+D|k}Y{#_tH{}-rFoTKl z`Pr1ar>C~2X8y$H*Bvuc)2^6dpwoxL97*8>#oN}OMdxBA*euh405f@c`FBAFWL@1d ze(=&k$5QsvA}4D+3_ZXPgT&oWc9r$X*2_fI#Jad}E7fOZDdi%#SAi_w%*^!lu#)A` z5OrhEXT2)xC5PHY1wy;2tHaSy_+7x+6d^0~nNcPDb97=zFurK@WQeb!$xD4jNNi;4 z+j3?mK0YPpqK$2Kb-QCvQDNn$P1~@!Zi{Y(=N|xCIbcC+Xwr=jCb49GFlCW-Cm>Zy z>yCqyPyoq;Yfo701^O=~A8oA+esk+$7<6F*ziPSqF`mH~WPVC5SQ%vK{L@{?)@u)R z=2#uDk5Q_e-gdn8_uli~Q06o~KcdPh;(xoo&@c<$fdg&^y}G?h=P%^3%BoJ!0?>^x zCj~`i;v%nlgI5Fuix-P9r0b8PA>+VZpmW{@Hzfr{4E0vJG9v@ig2zXquhe%+@9gNJZNF_Kr-GUh@WMgW{7 z36LVt2Tra0YgtR#2o%-9{^1$app6cA{N!MK{6H|8S-SVl@kGZUEnwr_7SrBi3L*iX zCaJRv@NmjKP7xDGU~wV1GA}8W#Q9^L(@LQD7b=z9Qud_-?W`P2wuGxF*?F>|Gi>cJ zK4G)4XvARKBIh+OAvzv}nH$rH?EOayAvDT-ko6(4z53jnJS=}7?Ds|x#WP)b0$hqL z!nF5`N%>o!dNLfks}NY2%(>Y08^(12jah8$z2^GINFspkXXCoixYx|@cUtt-p`x<# z!l`e?)%drMF;~i98tppVKqRfZ8G4w0!ch3movHkL($FhJWkP1N2r?b+0}3_YnxrYbp1!&moK-tN5x2(446}CsjIW|lL0eK`^8W=;X|Ir86~;#E^v#| z{8Us$)|-0=kRwx9rV$twjngS@VC(rJjv*++9ND#&xl0H>E_V3$SsU=^m(?Y0ZGf^^ zF|k>v%HJLa^opLl^S!3!W@ctND#=nuQWR7bGuy2aC(t=3Y!KT|e+wVoPC$c2f>8r% zJ0B7txk{(4^%qSROyp!Ib55D}Y8eS7HldRwic za|bLg1PlxU-7(&$_5s|Q2al-n~mgzBlVuq&+B=lRtA5tos<~beJ+tP||gphThnvZd~4AHH$l-Tda zZYU=!B__wdQJ=jW$S=qYaMCgIRv-wL%6B*Zu{btM@sM1e5Rs!SF7K_YqhITXrUB4@ zYwHaJ7|VvxI2sb&^WIk_J+B24WxiR17W;fqQ>v&}O=(MRH;98}>#_?_As)x@$b5+_ zaKAT|aq;NBJ=Z?qwi9?+-_Ue?W^N<^vm1793LMKbVpe|^7zM=D^nKh!}~4BB~6c%soerFw$V%* z28k4URH&JWALEHbk~2KQw)LlLdiq*f#M}+T`<@&ON>HkE_OZ5&Q{%L9nHC5doz8F+ z^3HNxdZ;`PSlPmXibA_4478O};>7z3p5{#i9V@hx25d+d8}6YrGSF4DwWC*h(YqyB5pR1(vD zNMP+=kY5Nox5%t1XDM@WAFBJ54|$01 z(snmk9+6+{z>F-buWX6^Gl#AbHD)GkHVts)Ckb+kXMLRy2zR@Bjz)EU?2GPAmgbRR zB_&I#E$JUbdi4(|UuFvVATJ&-8enS8(0kCX( z%gr7ex@WwlD=8`QS(U^ozgDPQ>e{j~n#&(8F*rXjF>Gu^y6iRyuctQ(Nk~KwT24(& zI8B!U*YQ2sboatLhjjJQ>(Y{2^g8AC9CZ_PHix)c$(#IY^$7Nh@*Q zx8n>a`QKlR_u#QW3v1_knLQ~!LH%j4QK9QYJz>WaczCbqej!~@b^4qGz6X``@GJF~ za(bV0?{H?B9>PxX^n;p&H&U)y_K>kAHAS0z1~~ zvZ?E4qZnYP4_FPl8d#2PqpC(Uo#XLA56ijn5saf!^YI32KY-b{hV*OHEriI`wa$*> zajeH3*?iP$w2~C2mx&%$N*0`J?J}ta2L3SbwdL?xrr#Vcr{9D&d_RuI)17OHLHVvK z9*FE$Qn9+uRAj5Ojrr*TDEWH+??t@S=h&uj;rsZ=i}E?%Y}VRc5qWQNL1C}WC>=L% zF=Jx!fsNR^k``k>hFf#;3rf=mmz7)3XQ$^=mpL-&P%05=DLTiO!xoga|Aw2Ti4yL@ z>b1M|`;!qByI>pi$^e&dbi^dMyu|f$o1#MD6z`Hnd@gO*i-8n=2#fuhgW2oPu2&a6 zRsKW55rG&RWvAT|?Lxq8T0=d~#-}%q;c991bVtaT3iELbVjZqg1*(ChRhlY9j#5NIS=)zAUxsuZ+mR6CEsx($nWdqEtz z3>6eZoxEQFqPw)WhRu9Cr%PKQ(8rJZ9z0bEL;VK}I6YS$^4ROZH)uUNC0FQV-t!lp zZSTJ;jLU^4p7I?_Li+<(a^w+AG7Gq0oIFw+<$@B=%?)1Tafqf4i3BaJ>{y5`gvXob z7C)F*H8lC{7=amxkzVzjT(x`%~_EM?N{(dF@ca>hJ`RMN$e7KC4DP0 zRmJL+>_eoAuDz1A`gLSTYCk7e0W#ntkbwZl_kE0m@$$pRp?gj(%n?^}`L&vY zn>}Cf4^nHsQCuF@0BmS)?sSkYBP1W#+8?cP04Su>LaI>+bR1|1qz>HlXLP?ll}%dn z0s6vM-7+AWvN)G$Y_Ad%Iq)rg$V1-I3+sTOv+_TXX5VZdR(9xosn zlBFKKZqPKibe7T3^`t1*p+=pY?OudXs#37jsE3lKT{SEy${Ei&g+N(x$(vJ(&(nHR z{3I1uFfC7Z$KtT3V5gBJ;GmeD)%5_f8^)bV(ybaJwpt-N-EnfWrfHv5Bi$95pp-k8URFOZuVd5~ zU+A?heB3G6vaIkFGIVx%Lb7$B`tuA0NnVMwOobVpfe;bUI=^bm!R9S(y(E9+!>Cu$ z4OAq5c8S-xA{Vgbz>P9}<~3WluPeNZ|5R|7vMr25yQofy)dilDW&Aa%o~bce*lq1` zp#)*k6w198>6;54{CMl=Z93=k)zw|6v{!@?N%$;eko(EyM)IJl8Xvz8%nuJ83v29W zd?zM!a&mGyx;wcIWx;yQmWSiLOg>du+Bzubhm%lJYJmC-bba$anZWJLmv42!9EJA8 z(C!?32~Fq)?2P?sH{AaP{ICvxIe-JyI**l2V61}&R>ZMLp8cfF9p0G8283+Rw?+4^ z?>+T7$ENf;zd3A9PFZlH(C%59hw^@SM4(08sHf*hDH)w8eGcRvKf8{2mg$~1+xX0N z&g=z(2kfbHqHFKdIK3ReN6AKv9-GLA<%dFkLfYCYq~ovn7qzvh-*^Dg;4`0CBn#g| zciOC~1GRt1i5wVqRX#N&YUd*4Te+TSQ3K3x{xpvhz9#dN5pfr18%@^2&M{ab<8sdc zR9I#@-8^N`M3Ii}zLk=^p-@bIZs|u|#0;X@v-Q%%?oHSpV-zd88OMSu-Cm8TPv4Rh zp`;)UysE~rMyRyzBnV#G9Rday4{BO5iJ5pu?#L>DNjUf=D#q(6aFfS zIsP^0?EPfX+_0OwrFwf8YII~rJx`NGomBk&*-gr&q@{k5kx4Z+7>-$&O*oy^X_%Hb zkY>0~w%t-P>5fiQ%4lhMCM+BlC=KVgv;4{T(muz<~)?`$L! zoFmBbNb#k~Qg3@djbPySWyzhn+L$YS=dAbmAU0N{4~IB)24YJ(UZK24bbolI7kKno zI5voH8@tLkACL9J{V~sY$Jl{{T^U-`gGcO!Yq56Vwl^?V42k&0*2L#`zYtc*BWqBC zMETc$b@tCgmwx<1{msM(Zg}*o`_04+S|UB=PYc^8&c{%$!l}Do;}QH3Gx9YZI z6cnm|17i-?3H2katvVjQN4Lds?&_SXV^3C zcF;e3OM9%;p``@=VLtN?mH~R>abn8A1A>z zibvxUZ=UZ?PES+q_po#zg50{Jsg(v>0SUmiS2#bEVhePkO8#LEJ4EjP^H*{5d&xQpyDgE1u#8tuY_tNuL^P-=4W&;ybc z+T&JHq+(}hcM^*CpKCvlrBr!ws8O=6(1_1>d4um6ZJ8q`fym z1MXo!9O$DwC0$A?Cn_BD+!)D7pB!5`lmuNuQxzN+WYX7Vto-~Mi|vM@qbLOo0j6x# zmxPJAbLw`wrp4`~2W7A*m;lnb-9za-cS15&BO}8eB#n@8@l2cNO=${ZO&(mRB=&@1 z>)q-We!xvl&61^na$D^k8(VuRz^}wvJ=9y*c`4^ zRY`VxyRA7EJ20PxLF^8GyaEvvqHn;QMA;E@R+iNnS;{ zkjLZOu2}x1eYYQv^xiWmo^5N)v^8JgTRl%{Ik^-m&K2i1nOAA%jEc?3md5OA?c7!* zZ_&Q6iwjn7&OV6y@zd|0D`A6;3*O+#9YO9Jegqa3)ALjfDvVkwlz-GI>{TK*H;jJ7IbN_Ok6dRU3Y#Q))r*D9vbU z{+pexxP?j)?REt384p@b?3l~>Hq3AuUT1ghrtcRazbj>X{?s?p*gtFDchtA+_VFl z!Xfm;oV@^rEy2x?RaI5t;o%w*Dw^?VR&{9|V>$5FWO3sa#!i<#amHT4)1IsQ5JlTK z=ttM)h<=pHiDtoD9FZ_FSzxc>_&H{jatL^G2oVb#at1AZ;tltgfOWeW*O>B6Uo5BA zBtErzO#iI|9B6-=%<1yXaAs)dMuS4{lIv{RF4ti^M*xDtw)heLa6lk7WFXSI92*n$ znDjB1)sTgl6XWz~WAdon$ObXU@5uCwa$oKAMny}Dgz{2)zNj*%q`Y_US0AecZ73ad z)H{(z#N+mje}w3(65@+}R#4NuWMnzYB+4qLT{~HHm1FDk9$S;RrUlp?lk$+0LHpVn zc-@u}E~USu)pO`uaMk_*oR<66Cw)awz4h1ts@eP9;Q?*|XaUM(6+UJx7$;Fdfd$LI zQBzT!T3C=7Z%J)De?6M+)%}aB^-uE2)rZ8j?c&=gq>WBa3-lPLJpp=Y$|e2ANxNXB z!0sXTwR=BDEBGj?RvsJ$=SpXJ&d6W{Zm<48oX8=G2A7`DHAP0gBe1O&aps89F+M{p zJ~MenOiaAu{%*UWM2G#6hd#sos28sYft`a;DDvcIGgB&|IPP23Z%~NrYFb*K-LhML zw@{5B-P=|G;_f)7jy~E{;NhYu+zCIS#JE4M?!3R8{1!tuJhHo}t$i-V{Fe(_J4$I} z8zlhkpTIuJlopM{HdNYW5oUkYxuICVvG#zDK0ROKo>5!!r!GYR@EHqE1e(fK4(n5i z|3D54v2z47J(`OQ)cu;PLm$zOI>n0{xyuvIV3qYsM)o8pn}^SQJOrAtw4}&c-{VzT zwZHKJ>DQBIrEcd9G}IE%&r<_hAghk4Yph=;Zc*C&h2!683hQO(5R#jcgf3U>;LvAe zF{6h-q9%zwb~9{c^bCuNxEGLje2=2eqY=&KU01o-eeMF_g4asJvqv-xGhY*32M88QV@#pjWSdi;jM zO(C;w#$cBvH2E*gEu=v$tp3(`@h&axt5!Os@7!Q>@&eCDg++f-TlueFI!1xTbF;ws z5kUJB`d5MOUDVV}Fjoe8Uh#3a@b9axzpd`fz5nHCK34j}(S#U1o}*NbTKI9z?TE1i z^Ggw@HKV%>G!}~_zy55!7YCC*Qq<#Q(QZCzZ8!h4?Of zVl4MoK38lo%NnqgceY&oq;L2#`f71AO_5$qyc*^FOqfi|e&(K_F!a&bqan~@RT_=n zl^yCshoxJU;SI0ag!orc{VV(4!q9Z^N+IoaS`Jr#ZM)GP)vy2VDaL&F6N%;i$c*H57oTBKXghF56FFtv50@&Qe`2m9+veeAQBm@cv9Cl?)fggNYf-9cz(W+ApGw^mzoK3n=)*`)IAE79?X zB8H(e_O3z?{I5DjzQ`{vv>F1tjGFh>WIy>5Ty|&jtp*)9I5Y4e0Qtm`FEl%saVYgs zVxrXijo`Vc0GA1|@>4stuS-j~EN?@kGs99wOLP`V zL}$^7V{1WE#mQS6b5BNCyDp}-JKFyw0N5owYJN#W2@$f>!?gJXOBNjjL$Q)qrstAZ zZI+dYp%kWwXbDVv%1{?0Nhp0xL>Md;DrR+C=jqvQdMGfHe?tYyyVfRe^zB3k$2N4b z^c^oR*+B4-a~^u$qpLf+gudO%l!7$E>ddj91CR_}+tc@^?S~fv0Ia}ma=>wE^_Sal zvap?;l9JL}>pV?H3)US^EDYxdAqqJfmUQYGAb$yD)mNb+#fe1RX(~EuYDqBB*gyyH zf#h)O#UU7=%jYVmc}^j{fR*zJ@0Igjd=Il%41X>{OTV!3aQ121Uh8E+hb48iSkIEH zgQLA(++EfF|39`G;1Amjzy%b8(TkFmCzUu+Sic24OV=>s>I2j>cIiIj1J39e!iLT6 z&6HEJ(5Th2nffJ@`X7vjTUBoZ^GX=6S>45OF#EO%S;qA{lK7um)TVrc2g;}LN7Xgj z_YDVboJ~Cs&~J2?$qg2YgM;qk8*-YGXMAWy45v#jwXGsqZ47Ex@?ZH2ZXJ>CV1M%B zZa1tYo>qkKNAh7<%{dHZ9_O@p4qsiUYRA5je?(n<1_F~5!9B2h{uY(mji(1z{(|U$ zW7WFpY!Szq}1@G*K2ca-<5XszZq${?P}lf9{8t`UXrkz z2r)g-nb1kg`gPCt3~$haV(G-#zH4usTQUsjSz<}d!`9ukC}89gjGfcfG=B~suEh+- z@|m=qIYt3hcij1Q>-9#bQ&nF%3d4^jnALS-g%F9RtOXw|^0BdRx`a#l+l#a17|f=P zT>onHrbg+tYa@!muVw+i;)pt51=@D{CSITNnWA$mhMNwRSI|w839hJ)^Oy2ADN^Z- zP_|niyK|KejZXmkSetd{i$JQU0_4c>0=~zWK8CQIZt}IsoqSPTOlw0(cBoykit%W^ z$IUIanXgl=hMN9gn~|-qs&<7U)AQcP_XGs^TJ*ff*C=+x-Tv_{Ev}mXO2AVYteZQB zUh2aH+-aP$6Y*-j%s?#dPmH)83~y~U=!sA-pi}zE-#VWIex6K02kERJ&hv{jbgMTy z0OvrdQex!ZLo#cLwcCroX!!AM;@rt+B$1>We^DSUs~f(t+0A*<%$eIzTKL#++T$1A zZN9jRlhWZthv{EL-bU0D)q}S>uYe^FUF?T}rzsD9Ahpx<0M7Iu%${(uNB@*Y&Zbhd z>4fB!Wb1T;f6Py!LoL9F6{)8h*KJu@+PJGX*0`5GAYW#~o5L*_L&btO8_5_upjHJ? z_!61!?4178E-Y?tZr-pym~(1A>S>QTXMzruQ2!Fe9|@prXc5N1W8F?o%S8Qt>I{+X ztrDGPC!F8k#P*?F&sAi+X$MzlRB)gs2ZtS?No2PpB)~Iof=wrIbO)f5f43>f(Zik; z!~u1*(__LsL8dp<(Myyeh;3)F7OPU+i;VbQM{wiDwATdxiu-qhn9p=UOd?(4x`tNk zKMllIojSj*=!1Hr3GQ(>b8%>QFR4$oN{XwiBZkAOkHnS@k3;((GCt_@7GsHd74xdP zbIe2l=64mO+OzbD;HEl_PRAD6hdf<)Htw@2tYw4e$3;eN49hLY^3;91sK zPa2mPB0oD77W{>Wfh!w5tdx3vWn@QQ$ zZ_;U6PDe-gEt9Ujt<9V#`TelhJ=1Ev6W@SWp$*m5)!Ee(OU{3b4}X9CwfE(BmR7m$ z5!}?sQA!uJ8tMoW=H}+UANFZ@-R(E`MHZm|8?@v}o}HT`jG;kRTJ2q3o>SZM|2u|% z&+*Do0!xyoEGK`w2M>;Gp| zfNxAq2fnTzNNpB;x_9_mi3kbFB03EmzXS{&0=yqFnix5ldOn}9urQ~9v-?vR zNxb_-MPW&HyUcC-E&a!3Gez3fsMN+l#=Gw=ZJ=psJe;!0R2-T2oTM8w$_y^sCv7XM z{R#%Rj(>5Re+yFVeJN|_&Ce7A)AI`JBEo%>5Di%3gJl{B8F0PTIpj7u+U62Y#htqx&+(O)ny=Prwn zo|w3&tL0fy>g(&dt&!g6I>Q{N4A2&{_bna9618}!<-7IkeFtbG{vS{SJqMCpMB_S& zQjAUh<-39JOsxO?Aur%x*H`bR#6v|L=Y{e$6(EW^!xo_K_u1S`(Ef)6!Ana^Rv@vh zWmO6K0BCaFTR!n3yaHhn=1`5L^#p|8lRb}hel>d9I-v0R)Yph4p{#5q zGLk6vb;tUV4Uv315rsTYYzQd*7-_!SR&`MP?SLt!I|6w2BO=5-i#{EXHZ?Kl?C-{O zUu+rU8a8ILcY9bFR37Er%@g6M^6zcSI$CG+t~FRnb3aOBT037n=o}`9*76#YGLqX6 z*J*%^a@Y5PXw`w`)Rc7vjjUUFolWu}?~vv|taa(P*vPGQ{i^x(oLEZ>DE zTXQ78R-4ay5wrF-P+pY$y(oyX`$2f&1aYxkPU<}nocq~F7ACoVI_Xcvw!Gv|Fg&Ah zkIDFr__y_gyLtBG;#aK!Cx(*curSoKT7#s7SmqeKd%8u@DU6pfbG9uP#jMuLThQz@ ze*TaarmKrXnvC~HXM2pweMFh16wPKHkSjPXEi1ERM&q+VJK848UuS$4_H~~ewWMJt zd!wgduxp)HK>D3mj=szqXO3!y&H;YBx5XkPeAALAZ5N+H{bj4r#7;X5%*qYNWWJT{=~)aO0JtR++j4?Gj+< zIVIQ*nr6b}%g3C9M{K>^-SsASY`nMTOd~kF&Ha{|IwFP?sNhs>OJy4-`xwDa%2R>3 zfBY~tED9`(t!w?n38FDoo_3SDs+!zpZ%1lgDh=7QV{lfS4Br`kFpl9IF_ zyzMvI6)_L?^tjW{Q5@8Mz1K$KkHMtF87`ko<-V_vaNw|M2#|5S>#~Nv|B3!$!~1^m z3`!SUDiFVlid&yx3rkJ}uHYQyS87C4L@jEN%tlRg5rd*!K#E3dKwD1*M8lSM@rbv@~?g0 zuTX{ONi_R=v8OKu>}OXt@zNnwV}^0%%u1Z*H5{B$hkJfji4!GOBKo{nE>l$zYfR@j zAzv;T=HTN?3$KQjMT6gr=zkBnJ4BSCnr%|j^#+{XK@+lt6M-01E~TJjmPLxP<4naW zptsO2oTyS(RO}C>4NQW=_u%e45M#h_ZtPXqn}sJY?C|a@^5r+NsQAYxv21hLvy^D_ zMhx!0V-4URP&X>I*rc3Osvg{R`^6{q)#Xj?oz}CW=Zxa4rF&Gbnd9!WU9LD00;TQ{ z!H2}NgLf$UZACe>(QER-Vz@4)Yx1?Jj?+W*9Qq`D6SWQ9u36YGjQO>OaSxAQ&ASIa zYBp008XY|f& ztSXT$-J^(@2)#WqyeJqUd|KtZwcC~mBvk{WQe-KhtMbo8&@O>Jp>OL$pH(BahLeWJ zBS;6{#VHmJx*&}OshNc{Zn*g6);GNAW@n6O79@RA@?ebmHSLaCenFX(?4m};(QL85 z;h04*b9qU=)5?WND1qu#FN z+hBh{ov{36H#I1GXMp-W17Sagl`MM#F|OFM}naWfOEXbFva9# z!p#QsgCvId6{CUn!lzYFj9qmnzGjw=c3nmtw+t-1-EJ}d&!oC`?azAt@WYFrA})Cf zz5?|H1)JyVa5#@e-^W{o)?DW^R&XGB=U`*ATN_9YC8fQ>F5&_Q`KOf9L=x7ZfS%0j zRfgIN3^TW0+k?opr$0he_J{*b+nRq&U-xW5Dgkg4H%nhJAHZlWtzapNSq~1UZXQ2F;nL z5P1KE*Lk)T6K-)wBTO`Fz8R zYqWRl4sCen_{$Bglp7qZVP>V$`BhZZ0weozV;k&Hv8r^`si1^x z{pO6@=iEvbm~yHiW%^wPVW()nr^>$8;s=oehio7UFMHnFu-`dk<2b6X?lRi8$!Pw1P=K#dcK(>kw3`In=e*5Pa)4&@(v zt-ft+##9W_POGI49}l?Qk>x|;u7Vl(!mk{hmO+hMzLK8~w@8PRC1()QqnmY`2gFyG z>raS_y9j9wy5o)gtVs}Q2k}IVbDdzLVJaf>gF{fdp^TTGf0ntc<=dYdea(DeS3bmC z49yKfTv-=*B3!oj25m7K230|01K0LAd+>ZgDZNO{wssD8 zKx46=N4@4iCa8N%*X2V{{%P-ts)Ho~lwHYpE!sw$e`|}$7PmkRbU60f8NvXYmF6Eu za$ji^`ggIxEvQ4uhWHj{M1x$Yr_;`LCs+B*Mac`h&{Crwt3`le^qpqxfAf|ePaG5) zK5AX1SM1rC*7ZdxTpp*aqH@)5eC2vHD2P~zTWC7yq6E6|^a7cx-cWzP-&(R2XX7@H zo~P$62_U6*tQEyz5CQpFy%Z}gz7Rp-2%>wjf#(2=$K8&x+MN8?;f=&!NHsRJWsCnOLtl}c5|t#J12HOy&tq3bsnEuTPSpGio(?+ zfi{4WdwFIeF=HL8K#rMZeADnoo~`??qiyMx4@nf?#y_6uR!>js=0-lLnRRQi5s1?o z_BMO=lBrKKI_$ZuVt_+>qn!vu4t(L3k1Kx(spmHo+-vYRP?h}XczO$rnE<}QFQx{G z{^<33Y>sm%QE~pBj!khF)Zo6?^X;=%FA}cRhY^^?&}vnJzKOy~TG}u{7CF!UPF-X1 zT5mM=u{d~fKx20wot`xO9LhJ`vXbHPq1U2ybURU=Grz)jM~AYBm*wi9fojaS1?uf( zqF<{8Y$&cQHTcP|`8J(3kY1rA8!sV>zi1e1kGIK|)!}fjNesnSWX)cUChzJ%hXmS` zmgdsW%l???PIIH($ZTc;b;qTCP~OQdx)I0ZW*UjMz*w49&9MP&7w#fc{d-tZgSW<*{;1=5WMq-WC#vTI0md)Q^kti!!(0 zIi`EL)-9g$Zz?xaJcQgMV;p+@rCU}ZiTd4EiXo2@=f3I-a!NG3EVktxyQT!5kC9?% zdHLXqaiy){Dk44otFHXQ&EOou0ku5F2yq7O#7%P3alt!GgFMUhNbb$ZgQdk2wwu44 z=Se%w*VhL=r^Taobuh>^TMC20-AxS3y_2IS`{gs#Fw)dACOgR^{hR9IVkBF~Cd zqv5uigQH;a+xUU_WG4NoO=>HC@s|q-)r?o;@^a78M<;rVDqb$`{0Lh&{J!q;KwW~I z6AZ?UMALJqF7Pl&`7}jvAt(ARyWzazYX?*4lX2W$CGKd5ra*9()5p3QWJe{0sjt|q zC1Vr}IGX#ll~|9J?|!8q56<^ksGXS6Fzd=?zC^5k=zp!o1v0e@wb{y8TUb1(G* zX(5R?xEJJR*!Fd6u`ww5mPRqU2% z>WqfI8B!^lDpul0p!E!X86%36Hn2UJ%oP{E_wc@xW&Q*yUl&($GWd_pT9nJ8EytIEld(04Um0pTJ;+vE8tuE#(FaJaneapi+nI( zcZT%8_lqlw%YIw!P2og$bV5~atsNhQC7v#&c;@!YWqIRp)bLDjP1cT$eLe!Er>_t6 z(2=L*ukjJx`W%#21XXMb%dx!nLrXTOBp-RH(U#Cw^xSJQDXj?a=$O~ens>bVNzb(o zIq%SBjzVD%>)(M6r>j8EX6$NHD_SgY$Iu@UeS46eUxbjHr^Q4wV6*WQKT0oI%5>@r z%w05@n54n_X1L)%I3WK-HLi6)V>sVQQH!Gyr+?pOi2wUlMe$&Z8_ zyeHY94=NHB7O!=zW*}m969U%(>cdmxi=v<5-GWN>2aVtW|0J5^4n*c|{#;J_MKoV@ zz!-1w_B(u$%i_*T)w8B69Nky^4f@iZlO26PD8RsWajMu|?B@W0U1{`Wq`-A--A}S|@PArF?LDn@eqdeJo$Ku`z?~z^myl|UmSJhkOL4I40KMSaP9W|V z07v~5kN+8YIkMv>DptPCc_cqR=h{l zn~~Znq?dKolY-}~f;bVYEX#Vr$f#_?GjR3faZzn~(j@5Mk-5976%4|;2yhtJ3wZ!oTiUIFU2p0KF_h11&AOnw0=o9b z#dC9#tlVT!Jag}i%a+HRDw3~mYwA`IfQ0csa0^i|=*3k5ua2TaLyjyHoCc(4OZ56a?{*INhYFR_d`Wc(%+7Q`JWImO3IPyad~A3@>3`S{vCi$ zernNwYI<4*qcUMLN{+l7wiar*=wP|FOy4=c;)-6QwkB#SMJ}1{_N=CwewLkeb&B;< zQK0zHbkVJ=bho0kF3RWA2j*Q0`s23quw46r<366GZDd@3o?5Jwh$(eVoS8Y&HgVvv zGhj(y;b%A>a^XO8iby%ZZY_=pDT?e(^2>fbmSAtYwUXr3& z^vAdEi7J;R^D-?DW#a~KIRp5v_wqUF@t~?{qT-MO%}=h}T=N}Y{NtRbL3JXj3xp5T zz0JU|t^lrxoAc=ORMp!z2D`?7sR%JXR*o_uNW;9udllgMsLBYt!kEy7wHz2EIx4oc zJ)${}ea2*7>rbOkVLwc}t$?n)pP)X9^37Lvl6Vt(jJ(%_dR`b<*aYky2L74Suon6M zj(1yshHQHeeCkTU>~)HdUS)N4f+a*GEjlMj$sQHK1@KS|C&tHR^l2pgy@7HJ zwTOSx@zk*BW>T9WTNhTf^t`sD_tg5+BLJ@4*^j0d0k#~%3AjL)coz1QUE(OC%R^@J zGTNGPuF4x-vadPCMeFDEDCE-x1%G%!P((8A|BtZ0j;m^G+XhfJ7Dy>2jkI(vx|EVe zy1To(q(w?XIySZF?naQ3?gjzr?uIjPZ?`_*`#a~%f0nrBnsekm?!2z>UO|7aa<2t8 z5^LQd9f6ElvzW{a%i&pF6{U~YeH~O<9yXN$HC*X7DYbU4-+c%B&b*)=p#EJpd*ljr z3#s!#Uba>0w{7gp5nrgWz~U7xi^O8;nFPvZS#NhJqFj<|^!LAcuXCd*0mi-U;1ki0 z5llSxfnOxojG9g+8{$e{CO=AT@^~tjvm>VFn;taWcUSH2veQ8pc)fUNqtC$YJSTXU z=v1`NyFKpPm)WdKBKU@xwsL-ErmSx9oY?{}Uo)ek-*&cmD1{o8`{JP`yPEkLU24+B z-VC@I+N+5ZF6Oo8>W^;qQEYx{;`-ngrz`Zmt;#7O{({M)-0*kMDC98~t7BJfcG33w zhYuhAE(HL11_ZjLarcqD-J*}Z#-+X7u@cTM=lc;4o}g4#q8Lj|0GDCYrn-|eCN9y% zW$IeP$qr-Vkg(ooY>o&CU!!?0tm81Dv4q@ZV&laNHzUt|ITM?#X=9tgM1Kr??>7@e zR1WnWy&*gzCiXEtMG*u~d;&1{is@=^WSwdby{e^?lhH1Qqz#0|OcPva;xW#y5Sa6E zPnztjvfAR-u_I1S-mW$rI2@p;nXSjWCZG9t~2Bp2$@bk>Fn{^)m3 zm`18c2oE>AYzYQus{?i@s!2sW9*M{82uYy0!m(yl89#keqJ4jevg#?%NK@Hl(%Wxb zY7(&>)-5T`G2(LygR6>raxZ`d|QQY z$*Qu=kxPV--J$O2SjJD~d_Klw=5(4(VJ!36u*Vx(4*fb9ZFXbUvv9jRxw%sbOlc6H z>J5sRpb^b_+ZE7=gmP`fhV2S3v&2y=b8Nu#Zn$aLTHMpdEq@xq$a5Ul(~;Hg@?`N^ z_l9!SztCj3xu)!U+SZ)iH;@V<=eb;3wA%&oKOERtk+pJ+L#IBG#LQ=#S|8avjXR>~ zyk0IcDR$TFS}rB5H$gpmTso6{r!sYSflOFqx>Uw-aIA5+L2m#Ix?Bg$ODZ5L$#^us za69{JIg1LYTs}{WhF_Oy+?)~$Z>$>7uUv3{vpOa|?B;s?WUDLwPcv!SB(=jGHf~s?2E%jyD6{-lC$1mz`(cLys(N1**{-EoCF~tmKPql*H(u)TSVr;A&8@%P24l;z?QWAUtVY*|bo%wtZMeFJ zMbps>$2~=Idl%so(X`3fsfo|U2saxkFq0hCq$QL#;B$#m?>uC*uZ(u%R;kU9#%rsK zPPN3tc>w$b;$NFuce~+aO$UBgftCbwU0z1Li0UUxMss>YD2lPS2dZaWKEl}x%_U!} zEriQ?*1JmI=8qB+FTqNzs>zj(T`i8I??rhl$#~Rf) zQ$5n7L>^Ahq_y_#48JC$F%&V)U7$2^P);hSxXTUr>X^W z1AA*PszIpYG-cPIl7s$wq|QUg0wT39^<_;5xSZH|m3MX;-{Lj{NyX$`bkVbF#K(?a za|7~ywqtD<`W}$wH8+$Nt1-JC-Nrg9IG$V{622HZ%QXKhW0mQF1Lu=xE9~3zo!2f( z8an>pyfEfcCvF@@`bi4sb`KY&4PtpKnueIU4cSZ!FRrw`ZT1{C3)gt|%`A@KeWQo9 z9mXy{c4{q1KMt6RxP20Ic7Q+6vp$21cqv9(qjxgjI^I$rM{|lFn23TW=aBE@*eINh zHzjLTM&IPN^VUpk`!8A(Ntw@=V0(N?X@yr?vPZJ7Q{2o)Qs6?Vj-z?gvCI+&V60q! zG`(8;X%ja`D2qg4=bMeP6nC(}_ zr;=71(pD8WM{NSfBspp~SNY=23+g*s0tnD$y z8q)cNfa9FU&6I}OkcNls=Ihqgll<5pz_BRpvN}YQyPFtrW&y*uY#KpiIITaxqIJH529#@E#W7OlWCvBFjqt@kVFrX zk?JPn)*IB%*6Gc>G^FqUM;q=Hy4az$|EoLcIOcT;9=Uj`5H*?p9wO};Q_D@ zz(Po4MPDRaZNO7~TI&w7;8s3=2DlNA+u-c$Hdnpxwmr9oT~|~ zQihAtoe1Mb{$VA7gi$zPC*|kWCD7?ZYL`<1(gf+%kpl*2M(FVbnDy{^h-k~&x#?~F z=BwW)1b9Cdj9;wY(98lM$pbX17nc;V#avf4!I4+atsy{^!f@5fLfm zsPMRn2{SVaKT{lp$pC!$znAr6fTe*M+`eIdX^OhE{1Dc=TVMDmKQV)8=-j^T>^TE0 z$(usfUzk4cc}*>uj&nWK+^#zM{z+X*Qk?uFa{@e98~y(zj=`=r`00F($Iz|jda$)+ zT3J{~{y+WI1J%upetqPOrDcAC@e*HRMVy6wHO4ISayQKPh**9guvgefgb0$aA^52m zc1+J(7QB+fMRXk25+9H@C|B`50h~KG$9j+cdJoe>=q`_gX;?kg+4ndWmH@#Qz}&y@TFY)R8{)Fj+H4h(tjQ?gdM-wZK4>Jmeo*DnLcXz zRS19!{(CWW0SYOMsbzi>Yb<5H@ULv6CKE-uOzRf6Cu?-l1bjr?B{wR;sNtAZ7Pp1t z8>BD{h{`DqsqMPS4JziRHTu#`4(r*3As`W))Xu6QzHjy6I9GDm<~5*i*R&{C?s}wSy%6b*f6 zHo$`Q@6~V4{)Sr-PKe^+m{fL;QkeKBExWdJ%L6~bR+Q-!z{SxUs_y8C^VjUrgDWo%IPgB%)SVjW%0?Hc%F^4QKqr;$Cj>%C@u26U_WF8iU8+-bOT>?xioR=X;0 zrpOvS@wKq<1uHt*#ls6U;1}YxLoV!9DJw9a2z$==F9;dv!1oZqGhOhCQgNic8Cp3u zI;}b}Y_1&;B`FbkRXkTx)Uk)zvqC(kpjtPGE8!U*iRrVC+Ap%W_#7L1>g&pMqY)?r zBqk}$r~(iy2_27*mWghE@|rk`kPH)8TFxTu23<>1E^Bvh<{Q* zQSo??Jn%sTJsX7BoI}Uo@I%$v_QTd%8rP{{`0)D?(1ELJ$*28r`jeSJh_>$s2R< ze``Ezz?^ukCdGM2oboQm#FS>HcCMM1n}fw*6QcTRy5Y;;vO_*JOt#lk0LR4PcK#qZ zrb{oqvQIM5>sEAOo_FVv+So0zUA@*wse8N+fDx%X?>4v~m@E!PJRr}A2=N;{|EfPA zwO@)A`gY=OxGdi&%=$Jjz{_>=7_Db zyU$%_z_+-`f=5Op{8M27B{(32<46|T_l)WXUA@3U8r6J7+Jt{9)qG{lw{1%083BC5@KzRCZ|4KwmI!tN;Sp4C~dfjaTiO#>+@b zP`ck#-2C#t*g2QXJrMfA=)rXGog_hT>y?Z;IP;pZV!QxBUfd8fX(S z3oV4sbAe6kl1(a+C$?&|vf2TGK7)xVDqAYsKOj9r0%!ssMSBwk5f0Go;-8>Mi*anl z%t&%3)6gW%XFgZmExSho@zB0U0x>Xz_9g9TEtkxIlp7&I(sHBgp~fArk&O}*A!kwS zF?W6|aBYNu(RtawpD#o<6HwDFns*S`Hw&xup z_nCMpoGvkx>|FlE0{O&XGkm+(^b-rDZMm;ubGqh$qX|b-Fq4}&($Mfx^R;@N2Lg7x zYqL>gw#1gAz_M`e!f3Xzq-}FsPghZ!=*TF~t_96$z@V;wx)*NS;$ggiKRu?!)%Q6| zr)VKz!#=Jak60eZu>1#-RDJRB_rKfmVrI_>_5#{KpWzb;w)Oo%7 zPuLh2(>3RYR5itpSXG?$joo3jNQr4Mu^BGE=hdkiNYH?td-$k~!F$eh$SEg!sMOwK zvv;cPnI@fv?PHE{S})Ie zIW)Ihmz_7$PTYk98z;S}OKh(@?m_LEScvt&XXDDaP<&HYEVvchJM)>wZ`%7jaw^V# zSMNA-Gb!ba3ThH4)k1_F1d>&FIKVxrM83C_m+Z{dQ%#|6MEeROL=XEkN*uuJ3;K@ z6yDi$;!j=CjJx5+&61#X_TAv~A1<2t8r4ezDf+B|p${_@6lqQ1wl(r5G1AuHJVDGeZbKA)>61bOx2d;4WT z4p^Cw9TB)nEKS(-rB+oMY+V7=i-se*-lXdHn8<|}X@zAzh^3P@Xnq=c-j1V>?vDQk z`D`U;1(&@OCvvZ%BT zU(MkoomB2M-U+|$grC}}u|WfJUJ)Sq_e`j}jR4J1>@w@j&G72&9<%>`^k})&)dSj5 zd=7WxzHohp4;W%lZ5ABZ2~KlG@&$_;+;Y0(jjmKYTvMSZANL zk8@oA@1($^wdpPE-?FH&0+;sSwA_`bT!wo*z&(EJ=yB3sx+)CHaU&oQ05*Z{1i&U1 zjRDw1A;vw}M3rKK(O^Z};Lw{Wan%fy94DvjW$UiNksJj8sKQ1o35|%SxBF1S(+!#1 z8QzCWV9gqc?;OP)#V5Bgl0KV0*a)P}A_F9EpJr|@vNM}IQXAuXoZcEFtae=QHJxf1 z3~jMBUqQY4G7;!>o~kXl^?aXTi?$4hmcGHp?R){JS5}T292UuYx!+b@T)PVW^l7l> z{41#Rb6o2$q>=8_jZi*pxj~`G&SdVRqUr%?Yj@I)(a*lENPNLDzg4Pl7t7rBQO=cT z8;xqBo^S9bkow9TR^bI08+lS(3TLQ#c49Oem;aN<-+RIN*;}e=vb(HX9v;5vGM+9N z@6&7{w|~^n$|V`3+;m!D-99$OS6r0ys*P0N8diLQCO}jU3S^)Vi7?ZoyGOIS6a^2a z1tzoIh@tHOtcV>;0?|d?(g|u}pUe4T^W{WW{cr*w@BS-~^7BnI(|lg7i^XrB35Wbc zcw+As?7Tl8kLar@O$@wtb+~6_vtAVKmRQ`E&R$pST0MxnU@s((B8A8=iH@si=)G`) zjE?L_ViHHnT|L)~iNUMs=;xcBojvZ(-UINr5hH}s z>&a`AI+c%$93~r+jW389H(qF%`e2`G|>|8hBUu`fB9;AmXY7!=?nFw z+rC(`lS)q5!K~VfuR7Isvr#fnV{Zm#8(02K|GNZ~&z| zEqdrr{cO6IeE0=7L3Or{HVH|_jnz}`Ha#B{51TWuvr5gedASD;C~e)RxJcD;{B9Qa z=m_a*nLvg8?Zt@T~<#71qMTc?E@ub9`*Vv<_9&9?@_z5ij{yT$}PBx^piv0iL&j{GVMpL}mJA)5u13xj=aHZy#l zniNK38}sNid?D5CMzU8soIjVw(j8fYT*KN%TcUbi@uZb2SwEhx!n6?IqO@Cjv*$tm zsV4AMR-pHYC7+9UDU%;1J7s-gw&9yV{+-5}b3YR~BS15GHh>Yl*3VO41)bLB7U&pf zHLaBJrjL18v~tiG)MNlNP;I-A(r`qtU(ONa5)}_rn+_TP{jBbCa?A7EnCrj-ma2w8 zqtuusBEpOEse(9V_&z4-dC$(O0LqaJ6Fq|upJ0-5DjT)~oB8llnIi(8rNN8#)+Ecz zt6p9wTFo7gZ#B9+b6j}PH?`V(e~>*aH~*EN;y7eWBBk)m;b z@yd#Y^~4CXWoTm(${Rj!g8ka6;cq--rwL6Q+0?SEeCjnz8meiQhi%tX0{oUWi{lle zh^yqx@cDC=Yqqr<9JK@2H|=xv)m~RSFHYtB3o=rz_~jO6rU(PqZm3&z2cvG&W$g82 zY}}=gW9dKi5llE2uv?7d8IF|}{!xSz!U#w2ZCt4cn1Os`DGSK53Fb!(9pL_5>};NhgQ-zK#)sw{tSt7=7W5;14FF!J8j45dNNo*_BE>Qbs~O-QK(FQ*vA0^P_x9*W+Lz9fJT!n1LsE}FLVXco%tw~Z^~skQ z$505@hkH{&F1ug9?!wVNXWs4ZM9r#}iG#UAhzNY z#~zJ^S|WsWv{4kv!IxzT;9dTEB?*ICEO-Po#z&zY?%z7hkpbcBH)BCtc#07jt@@jc zvsk`kEHt54db-!y#pN^R?tcXm4kn8e%;g(fXWE1P;V0KD_u&eOso+5%r}_LBnG50} zN?Zz3s6;Anj}tRD%~Ay%y@N&J$5&@GpX2S;@HOjKNohk(Sw?VWaR~ZXZIgYcA29Lq z29d|IChla9EdcB%{=iWlH^)I9myLk#giTn&0GO%<&s*>3?+?1`!{u z_V$_s9SjVd{Pv+nPyRSit5H#q`z5gw?&0HGto{_#+LgT?}o z=(u4i@kc{3JJZioqr?$5?ABs;C+7=~$ap?Y(nuMJquG^LrgL+WMD;AM(DB_3ZoVv4 zmp4=tH-X=%N8xj}+bBa&EV}M8L|_U9tN-qJE2Kg2}K4ZoXrZ>#OkdOV!@j2>xy=9 ze1ojb4%bF814qu}=g*gNM>0I*GzexFBw()f>DjpeiC;`v%^=cbtjxt+6^>2S2k zq9~<(VVfme4%hWe^_V=PfGb_YO4v@SdybhIsA4~+F1oK`??mgtXi7{`A%G9=iwwZu z>o8)(GG9eAjNZ;E)_Z!aU_EJG_<2RKygo2TrVzVN&+3woQd5adUDP7 zbMLfTNueq_RyYe(4$poC$1H(UuoCde?N?YrLM^ z-h6OHYTNE-7aNQrwj_#;;Hmb)xwy$vqJ1}+Lp)|=BDhv1@CT?=|L4*!;CJQ-0JVFW z`W*MnCsDn8?n?88kv%IRxP(%%EvJx;-h~N%7%4&Dz_T2%%!Iih`* zW~wge*8st^#C;`aV8x@BjrWn1*|4ue#y9skD{N!kI>7F+S2gn}95=LkSXHfxpEy3@ z-k28+jh6gnQ~KuoiyLMP08tg{8aaKdjh^*IaYQBQ0#=PhuCae<{uB$maG! zCP*Jx@1;V^rV3gvZ`=|*FH3z|Hp2Us{X57+_yx{&gJkB?EX;UZ;Jz##w4$P73^DGo zjBN(E!Va1(0loiRFhT-qX0>IUQ;maoUp&nYTtkC3&e?5gd+!`rSyUv2VLd325W>Zz zr4w0{o?}Q_snV{V6gL=;BKFhY0B4R=3e#syMA_xvNlNCTEbiH>u0Si4)=xcOx}pl7;ZsI!kunxTeOG=G@F_$`m&B zIzP;1SB~Ncu!b~{1M8Zk=2&Q79VcpzNyUD@!e^2>`6+?aOTK~;is9XC_n$c<_$&G zM1h{r_P1^cg1_ADFfbjk#|=Oud*5U;X}+a(CC$H^3A|`sFcMAY!#}#^YTf^`8`-eO zyLI_pxcr_G@h24Aar~SvwzjQk(2AIr?MBHA8^DUuM1J&J%{8L>837ml5sRX2Q$ zYi)`IST z7w}5pwV%l!bygesCCRVev3xt?$>!zt?+a43JCrkOniqGCwLwogBgZyKOD`O5Kx?F=I{; zCF?TgKN5ky{4C2mJgDc--3ag$Oe!&Zk`$UOh1`?qzJf zKwsOVNBYsv;r%7Pm{vZtcpW9qnkbn%A^P~UKhfghtrjWzZ)ZN((qKKVy!;Rp_AxAs zIK_r{ETP}h?81Hie49o!rzn>ttSluM*83$rTOeh1Mb#r#I24rNQ$$<0%>5j&K^a1( zr)T2%)zxYKcg7gj47{w_lSZTURo_uzq!AIBS8+XXWXFRnmQR__;YcSjc(azw?2u&{ z=%arK33=DG!c9QWM65nKrX!!V`KmZ)dpy#Tm3i8tKJUsso&nLG6F;b^=M%tjzy{PDUU28v#})E-I0?)<^Yy8KM_YCH{igu`ig(r(A0Eqqw}gj=9@;~X zIovZD)+LgrRIs^IuHYzN(GWABI&M#Lc-?ZVp7%tB@69)6*X4ESGZC;`ixevU7J>Kh z^~eFCJ1E&bE64j|UHWAl<%Vz%Vebs_kSUy&1XTy^9a-6`KMj2`EO!W&IkL5j3(LH{ z$DzUQC8!;mlO+efWD0dC?J2XDI;RP*a!S=q=kz0 zPF}aixpJ*-ZN~EPkpOLqfHF!H4Q@cnPw$^ymw8<}c6EThb zy8U9G)+VV4k@P;4zWoYdvLuK&C?j$gN=$-_%UAceMoks+!oVP~Cep_CKoX>ust=;L zZ|FS$mZDr76UV@cEeIfMxSgV6F&${U?Qgz4f&HIgIr}nE10EiEl#`-Jgvh7`2GS$9 zx))K89JAs{I*cL1z{>>+kR_RKlrDz9S;kS2J==#zjL*q=1%0jc_qT6U|F1mdVAlsx z8-{oZi8mP=`gPimE24#kgok~kvdv5^G9Cr$`E?q6?ry}jVs#^#?C2oJiF;HP6814t zjI3gCb~c?2%Y8@Zl?bUW^qrR0&xC_t^YBvuy>26AO)MPQc%ZZrLfDBOr=vufu=5%4 zi{3v&zg1izkkisr6AI0#$&}0IS@Eq=Z}JI7%-BqrUSEF| zq&!4O{c`#+ID-`~TT#9S>sz`H6m}5-_Oh^#7Ma!hXb&By|Z+=18&3 zpZyW0{;BExe8PL?)H%y))k09Ct^9MELlpo2qw|0yi-$1p3E-W5-nqnig^sKkZx|E( z(Q<+RU-}QmBs&D+C#3v_uyfJg7?P|HcsFeQ`H4{BH_A&?3tfHR6e{9|LR(_g>E044 z9UrqB2FLT7!NO$Mn#Ilos#;#!>zkYGMEOu}q}5egfGk2?r!apvJm(k~`bQHGS-}C% zY;-D-aQA3@s z0vH*h2srx1AFPCvA}^rscM2$mju#GZV2$5OC?+Zt4h_;;nOHE#&n|xzBV7V83l*d2 z05k8in5pqGlJQAG@*^%VeBaq^$XkOhoF9BcXll889X%RRcoj;v-MPqSkw2QMq7sTO~TyRnc%cyCn!KqanUy zbu~^K*TBF=OHWBYWm-NCnJBv4DVJ&tK#Y4wo@{r~KD0rJn&s1OsCF!zoR?vK=RK_9 zMk^fU)pIdX@I6>?$KfP!B9#HnLc*})+@;)DXF#Ou?Fe*RiWke{dm)%4e+V5c82~&Vs7$K+6f@XANl}oWNUlUx zx}28J7ry4&WZ7ugN01cbsUS6`#)=vl=0`d%H~%TqX&Zf9xwe&k%i8^_*$~kt)*+oC z`}jznn=9G{%gN?`C26!yYlE6Ql%=DGBOQJF#Rn+#0zY)hDeB}H^XG$RgLoasyM7 zd__Mzl`j!9519aDxl~ZP#Fs;d_~)1WB@#y|U8vJD)=BJmn0ub0E`elPo>cD3=qgE} z08Ph3_En)w#(kk9`W0(-37)x9`!wvMK(qNR#}`>N_P3ekbqba|744G&zlAigGeHL0 zn`dbF82I=?+!Y-&lA0W+7`FpCGBU4l1+C8HoG zryx75QTH9n8QDxwQ)Bs(LW1a@GniBG)m*h?%7RLgE3q%#n>f7Z$m*yoRQhW`C+fhW z($KqksAXvI2kDQZP#L^X4z7wk->eG>an%pu658LEBRiQ<)HL_laPxbF9uE}0Sm-8= z<@8l7obVI*%oN03qM~mM(QsGePoU<^jp@E!OHyDCz7!;IB9%IFG*bso1#pY&Bq3KbsG7uB?5-B5R?YJ z5@!+u$b!>x7bPIAl157}p({5KH|bUhfOWZoVv916gJA zCRg4sz>ndtptePJS?5v1@<&xKo<6isdlVrexEC4sEHx>U!#=Y`pD9Y`1vYltrydt> zO?|=v^U99qIGyku*;7-vJR4n3CKvYsEX^-jU+J}0;sd$N$( zNsA=-1oc^py1lY}cG}TrdQIbvec=;`Od_Aj8*TA~65g{#=H9q0Nb$`U?Z7kXhHtv1 z>NkCIdQ2m6o}V}sIy+JLHkzp{HuYa%`^7n)^ng5EbV(ksjUSaQQssw;8YBFo#M$gc}_`6+^PN^ z&G$p#l>X1AN|vg2+w-iSBdBN$VoIE%iIJyTv7Nh8&z0{_;m{k2u_$`8vo(%;P+AHM z;#-!$aCBBymXpzWZHBl$OoCL3&mwVgtVBd9J<9}~>aVreE%+KhX*{Zvu;tmn%VJe` z7CC2wvEbXrt&e$6w^U8h(ouzAhx|r^AkCz0{TucmuU1PkW?4>rylT`PlcAU9WHAB7 zy_|M9v%H~+hKJWTMnFFexc+X^KLE(=&ribb)f6JUJ|PBNF3Db6>6viYMNtkqRWu0{ zhI~X9Bh`0isbT}s$<0K`{J4E4V$#Up{f0>*f2MgFII@!d1(Eg~Is%Zv>veUH72ZDaP7~D1-DCBd8&M^Q9SG?$g(SA3 zKVN+6B;2m+@x?T#$ChFO(ljV6W+*mYy;q4TpcT`wYU^C(|c&6ukbNWVnY zxZ9Q!F086;$h%cG*+_AZQWSsOd&XMrpi$hSAG52F@-C`vIbv}PYPq8*z!uq5@522% z&k~@~OO^o8!@i>m)t&j9i=Ca_TODo!HZqQl=(9X4WBtc*Svw{buZ2I1nHGZj=W-`L zJ7#L;xn?dyK$Axu=OaN*#_$!QdLlX=;9~fdG-Y|vwEVc@A=I}mLuG6<(NIw>e50WF zg$bXsBs5jivn`h9eBW0 zX0P5&k9Mn+XTQzPIwwz)z)E!(@^$h$+7<^9a!dpz=ijY?K_v8x^=;EXJSEsN$n0Ep zJ!|N*Bq0f1jes;{K1zEhGSVBxcItrPVDG^08zDQP+JjCU9ib1$fL1TdEp_(%oq;X~ z2R^&`>G0guI)9H$ZZ|U>Cp`y!V2mE~@FUcqcI$@x^q!UUyE67UKGcc{p1d|$T1 zBJQ?-n?LWFQ8+P>kmDsf&?U%6C~@s-)q}Fpu#f^nI^?PeO_^$)mH{m{B`#n#V0e`5 zNy-%hJ2sT7d)VGJ_(}_JUR*-4b1l`J^{bRGTQ_n<^0V(YlX&sU!cuIspU3jGJR8d; z+h;>WxOJ%B)sKnYVTiTQ?PA~%3OpVlyt7}(PWAXoL*H<2Wm`9d(=g(1ND=xw7aIoV z-jE>_Azex#ckRXI3!^+osn3(Af~DBWNRzSbe+Vs@zz70;s?fW@1 zIqS=ER0qquUiRV43@;{k+UvR!{IT(|V6j-MP=K$u)4&KD2+9EAWGO2MHV0l2Kb^R= zG@4^Osl&-h(`gjN%0bO+-R0wiBkYjff)5=S8@ai%xlX%{KCK!0H4@)?vfh};*_Hpq z0I_gP6nPaA6ciL5Y=8q{Ww{D~UpcxcH|l3lqhVoj;7sniQj{nBYJY1VX;K`cU zm|pg=MdZr3?`q(7alxF`ZE;kHaj|s4>H?b9=-spWRp_g9e*!1H6>lm<&DF)sgT2Xg z%LvgQ5MTG>0E+S5+uDrsxkdXr_5SG?oI68&RfQbx5Z*2xCGHa2ISS-@3#r{}povQe zH&U+Ac55`0RF$mnTP3Pd5tqjjIcD`wlL%x?|36-l%j9^z%d)=H*XR!^xV56qIioi`>U%_uyZa$=E;}b#{ zT4V$kOK@?M+VI6uKg$GteFSC)S-98g=~|rFA zdR;98>)}Iv4|FN7nRh#XqN0K-azsTj$%7ks(9uo*bB+xuDSS5oUk^#o?T;JZ+?+msG+a7e#73;D=e%?U}$mOt3gRieRv8} zpCnXur`XElU7ed&wX3gc`D(M(WwVZn%fOkLnB&e?6=Uyet@~bV5#sRJiEb?(owUQJ z2|Bvl^Q;FmRhA^aUtaid!ty4>DHNfFr^_|bWd?>Cx!0YxS+RK(4w+o@F{(GR|52t1 zek0kvs57iLOS7RnDB**%U><(E<3!3jo&VUQMBM?%H z_k}l@n+|Y*9L+fc%geH1NPjbzaZWo|kYDZ4+5J-9-nH(c(>QTKv`?g{BC|TOC^NsM=lMi^jmdZxI1nr$r6}n4G)vZ^UTki( zz|x#o#f^ZToQI5twQy^20w_&3gJo?5C*lkt`w7uUGTWL;rdN4tE6t8!YC725rc0mU5Q!5ikD zgjK4#PhX&H8)4Ce#MwlFW8?CwtroHk2A&&)CftVYL8tlovl*?%t~v&}LTLnD(w~2f1@K zH1Uro!#wl_CYm<;_Dp^F?;pXmh!Wk0M1NlInF;?1JF*kq7sD{PE?Tkt`xOlPkqrkP zd6j)_(!c(--(^n>0l@Y6(~*N!_GxF-+TeVUj;zqhb2htYugeeIKL1_sW$x+A|Gz~Y9U|QT5xYM>LAw0M zcHQ81T?h_{otd-ZVrxFFRZn~OL6HBFra&=&Ui)4Cm~h6%kF%vC7cs!cD}U(1UEZEP zW;&xll|3RPoUc)Tme7moFZ&!&^jZZ3_=E6<1EJS3{2x;R2;LDF4HkOid7@UmyiXu- zG*rCfqqC^Tn%$zJ%Vo^<3R0x{o&9sF$zh1WANKc66Q$lw4 zYfes=OiW~8IRZB{y`kef6gCFh~=+{F&15ZFkn5CS;T}+ZTZI zF+XxC>B9bRT){ttF^(Iyag(JMrpL#DSAS!>Vg?`57W{w1lO3Jy9qk=VE9pymeYAyO z<97IoWigR)*suqNR!$d~h6Y%=h?@bzUr;ek{QT`(p{y*ZH9KCed}KnTx{S(-SM0%Z znK2LTrwr%Ywfj-u6uiUR_Cg}#D=F{`*xOL+t z?B`Bb{c{jIgH3$oCmv0GJcytETxBqWRsbU5S&4GNcoi#@CbrxCWN}f4IN}3lLPDZP z_logI(II()Y|v;kFBw@pWps25paTE1#qZMqD6_A?HasQeT@pQ0E7v1K1qUST!hc;$ zBCp~vxRRxe^yJVuZft7VNB>+_!d#@BzAwo+sW>@5I;ZniLPwPL#37)Yi#ll#WJDB% z@~Q1)RSR+P{Jad`5Qz8dPqB$@(O{ilE5Y+b2@Xq=`C*`;3HeSw%WBnzm{!&SttVqh zL<)^HF_b(OgeNIEN}+Wze>S(p*nhu_j~!3SRE&xC)#s0cpPqsA)ytxvUWaI5gCUIw(L>jK>OfERu5Fl;%Hj*MfdHa{wXz}DeMF)iH7kafGv zN5NA}dY7ZmvLbV{cT8@@Qm=-V^eQVIe%QZ0Qd%{k(`+~gR7QX5qA(1qHeV_F?b%<; z4uphb2FE823Gy#Sce|ve5rJ?i23`h#!B=plK6LuiQnkSUp|bALN)Q`eFMESHZ#MW zlfN`ScjvVU|9~rXBvpO^aZY0~?JJmKHX)*=WpPti6x7!T#-Yd9sOhf)n)i&pJ&T!{ zq$B(u0?Q^gQV+mjY9FJy8d8jIIq2`-+oH&^iP3SdM|jC=NmCA#GBSvP!xrKWBCXAi)P6#1jyL;@I06&KsgfB zWkg~(@n+2!FzzhkVX3SvwAiV1a8RcU-1v}dZ*^@lcmWv17F)c1OAksxMum)w3=p=d zoDNSLYYmPRf0-eAkN>IIeZvMScJCv=mrr(!x7eNy?B_w?di#6f5D-3#kRGk|PgNM? z(>L3*C-r_P12hwol6_6})z$gHzfVj;vOc|EG6-G8WD0ru+jg$Vc6&uZ&D^$OuP`yn zV6pA#yATuedF#Y=p)Ydy(C^%tE|&VUm@{|E9YbvfTAvnu-FfSF0S$R^Rz&%n<=$~( z0{Wi|QWzctZ_{Dx@rlZCt z0%74gsAA!G??Fgj!smERHKk7b2P|qdO@>IJlDB8+i&|=KZW8toT5(d{z8vYltm-xZ zOZ%+!C&L)4hJ*2b{Q3Z|6q!HUu#Uv){l&VVBARj#ZbZqXR5jk`i}B|8{47h^E?hut zh*Y6s*5=C;%}m?cklbU!Zq^d3tf?P!&Jphfg&X5jjAK-*cdPMdoQP|Gov!y!$EpOJ z1jteJ18DdIM>HBYFI;AKdDJ<~k>x-dfqo`-s4%nzQKGkG%5|1OYGMQ%3D-+3vdH;7 zd(7;A4@}*ApS8s5PPs7?{+|BSe39DOGU$ zp;c;9bQgL>vMLh|F-a?Mk_@_L@h{F{74|D>sVNPh1IN+LOt4@&*yxnF(t-Pt-b1?o zBhvWjyfuU2PzYm_4H&RCad8|t8;A6NSl2wQrQzX`eD#dMVsmrLV+SAkt(~|T*lgjQ z$;@u65kCBl^DmzVQ>;pW+>x)$3z^XJD8yiph68zRVQQ(E%Zd0nqt6lz-XBm=9N3gf z_;x@I?{eu(nDfWPs+pOHiJg}GK(18*6Z@Km!CAlrOhT?n!RGAKI12x@%n16JMG z!~~o9R2|Q{Czb_W(>XtMFc%w2Q1tIS{`?rUT6dXxlB~MZbp3!XR-8Bj?x8y%RC1b5dakbIpZ_n!Mc zG?4c>kGf`vgJ$FAOZ=B?I@P9}^CB-|xdEs%w5U z!MK@5e@J}Rw*9jo%kSMjv#X{b;J$xd`E4O6e((98()8~gFL1H`Z&jQ0r;#SeENJm` z;@e}Zwykw}=%0uF{pTBQ@P!kqQJu701p}!v74U)*Jqu!}(U5Ls1z3SofyL5^aYg*Q zaOw$`x=c8S;f4Ff|AveHpG#E?5#z`N^nQEvpyqlo zO{Xn_a??2&ruxT=pV=KhKG~PI-y{6AV76YoTBmo-5Rex6AdH)Pf-NJPTUdD7(bVL% z_Iww0*GbgWvDUQR=+l-Hq(bwKEAWLsYHbq{-{pF(&1vO5v%vIa%?{~kZGK;u{jD?! z36ZqqKL5THzmUM>Z@=fCEj2hRIeY@>Cpd`0>)Agt2TxE%6Dvb`JdYC+uqj}FBX?VJ zOJK6bG})vr`e$(Y&xtQ$91lEN+<8xac6fPayH^DLYH<~<5#a^-Xf{rdp&-6B9Q%#) z{m+(y^O_l_Ez7PAv?vZ=s`{pnK>eRwfQm|4IymzPKVJsxu;ADgiuecl>0}01maPV+RXGSR(6HEdQXwr{(Z(Ls6T9g`rmMC zY<$zyDDK$qN$KCp!=1KJsnS(b(z4y5zX2~j{ZzVw)2O8V9@Kk|%JM&_djwoKy@w5` z+8jbF<;L#qA6cHYoE{!p9#InIIU*n4@h=#I{(ZuWYlO{RW5>Jt!lL;C2o>?A5{>uM z;*^d(82)K{ z9nHo5_c5Q~aZrN}3_``?@<)w+?~AE~9kWzFHul~4tG2*Dlf*D-kH-S|;oSw)8`f&? z`1a2iIHaC({U7+zpVzB>^`{^G_qAdFhLB;0V5^Fn*nM~>qrX09Nk9l@{}e7qmMC@b zOJwt1+p08WEJ?NLCSRgVAp;?l#OMRMkZHXRTb=m>hS_k{L|LT2tkwzJ1O)@8cJr~$ zyuR|w54Pw%wY%22fmODU=wB>Ve?7`qo)7K1Vl?k*Xy-Ikk8ULj6^b2r;gXEpBnKBS z>PwBZS~}a=25shLKr>{Uy~}X0I*&OVn^M&;T?Ef-c>y~v?U=t13AMQ2C6fyNWq7@ ze61@_)Kk@JVAb8Z7KzVSx1OVWqxZ|lH+yiqVDfXIjau=XESaO1`!s#9OrbJO0z+JW zzo4WO7{SUPE$A~-GPx1RlhgwYN*?WuDP7t17c`d*FF)jn9X9orX2Iq6wGz^Kx8yAj z|4|{zG0iKW`_qa*G2ZO=E1;HsayJuOrF~upSIkjxrc?* zg&~iWOhH`i`nWlsN7za$9Ea&b#g5)SC}d>;**~g5(K8jY+cTCwdj8-GVSGk43)P0A zT*;Og;^Bc?h!{izd%=f|hG`KVj~PQAGVd2Sh~UA?i+s24x(w+`x_u~Bsc7B&bN&^D zktDTv8#ZBH5{q+o3;bst70W5J5UylQHDuNl%?)9VU&1)dz?hZ-yB3P&-Ls*~CX9K^ zSBz{ncsUm;RPoHEIv@QIUj4)<-jLSpDy#ii4pH7bX))3AMaolDDO3?Z&tvYSXJQ&j zNyne3U>F+$ZK`zTnMH@y4rwTjJXGfQo*3u2dr9BilK>rC2*)c2iC)1$uwhNJ} z7mDkKef(6(r6+i>-dV$xqf?1*{`@e$$HA;ZjgmDL;jt18!_6m#a+cNmZcx`Fl+{s4 zI92Yd^G6!T@?!oflON3(2R^R=on*E5y%&Msb2!GZhdEci`gV`SHAYY@`Ft+kLUBPn zxAgs;OKnT8s~T57m9le|MCIub@1!9YYH+)^Gb>gF-syIpx_A^Or?Osart$SS<)g)Z z+#!9UI>Bfd|N04jl@`Vudrb4E#Ph#EWCuzu0WxK51+%?%WYki|0S z)k;*(zm`297iEgSj)u#Np$}|3Se{7s;t$<_&nc0dq?Y6t%KAjV~O>snGm{o)7v1=jBGaYd@63Nb*Wc~x5* zj-ij-6_XO?9A==v02@$`xFFboDuKtz_HX(1p@BOTz9gn$0kP^_L&I z;SIYdUtIbykZXEGSE?!(pN}5=*zK3JN8)9>gdP@2Ca!WpF1%s) zJ~`6%N+Y||1a@VfN1+wCtIXngEVU*BiL~krL(%nW(B}j&S}kwPXkz;hw1!XF)_lWx z>?X9Bbe_Heg302`65$~X&j(ek^sVl)HGIxp!WuNjk|T*kK3&tjE9T~eSgF)T!=a<% z+yJx94rH^{MraA#Qblo7NA@cgY&=KsBPZ;6^5*txC^^cxsIU@uUHDrHtexD>;oHdB zj+F)cCtY>Hpjh<#QifFKt3OZ6nvX-lsJy0ib$N7S8 zE3)Yl)9lM;Qn8AOiSUV8c=Yb>CY%}anQrN=lHNVvZRO43rLVy%W32j2jAb0SWCq`8 z=<(|!FM@ot?WYl${v7b%GuUEFNB}&sztDquAEER%Q{nG5Op_3%V}d~!v}S!O;kg;>;Uc7__Ek{t~1Jo9fBX+1lK$_;6_VyRVz%Aqoi;xnT%^#*b?oM zciU-mse=lfJ$V7SE!~^9p6*Mhj>>$?WxMI_+DZBBAKEjp^lUy<3$vuuFvV@R^iUG$ zkL)7r=a;uJ z%el-X!0*4$qGLsv!17z z(B4O(b?6I%+{E2+^hK54lH*I()GH4o!>{R}S&)PHIC^Qcr-0u9I>i&$XGJDi2}wqF z*D@WOY|d+nl`4YLDW)N=;%4*uw1;*C;=hr$pZZ_HTn@LY{?_ezsgL$bVadmlbovKp zX%`#Q0natR%+yPn3rB#uG=Z_F>{W87i9ygphUujq6QWGs!;Gw{)tFT}qZ+geoVf4- zQp}QsBVC}cLX>j;{3D!T@+dFM>~>y z17|(E{qIVOPT^&`MN`M}vpre)Gc&!ka)olqS*AS*B^*$X*gm(RX>QA|_`Dui-lpth zb6Zm;{(ZmOZW{6pFGA*oFk{!Ou0>rm+MD~D7Fs$Q4A%s*^(#$v6~>BpuODf(-w6e( zvmZG-JIT=%%H*o5jFJ=0Kx*EP4hdgfTMs%1A+?3yp`Vk>@|F30rN>NrS2g9ufp-N4 z2oNz>Pi{LbKO(jk9}-AHzI?RL^C?%NvGAg)tl^V@Sy}eGlT>8*Yt@eJb8gq=>Fe-& zR7%QxlioZxz;>(eFyk=>b7YDbSLbo{A=c4xGRpl?bN(Eg=jh{F|!e*~;%7FKCY}ECpg&zLeM< zy{6_xl-Hq4cEf&#L_lIBgSt2MTi=DA(=nCh1c(qY>(W8ZT+S;(htt|4r6`Cyz5q`jW z$>eaMUoRwU<~d;PX;72Oq%&qdJ;I}1ctPb7c>4w%gzX*UT4vVsZX8INZ0R>YCL^sJ zq)Hc_l^XyvLuK`>o(hoe+9>V3Y#fX#5!!jY)|89*&k8Ro1^O)J_frn|(qzHlxI*`} zFO>`$7qmNrHsm)RG8!VCmoWOw@hvLa{Uu_N&sxr!N{WGqqO83ZRWjm%_uY>H8|+6h zDP|ES+OmSTIFG^n&*oy5j%qu_bb^ygV6Ml@jf7^xr;e$@P<4kEy=S;gVC4JEk^4xF zJ5(PeBM53%XWkT&6!&AAyx;Wo{jHk<=Tdh?Xa3bW9hf;YMU@2gMyVr|sZ4d{^p3TR z{~B=lS2A9h4HgDu4r5xUU;m&IV?%3GEDq;bo$68#m(;9M8FueJZZq}uSNH|5ulWvz zyp)lO)J&F&LwBNMg%YE|PI0=7z&;V((-fJ8uau@7>t}&0S){i41pUd09R{NP>|OT; zzIdXyw7%U(Qy4onIOL^FVOUyTRQ58nuaniHwhFARVNayExm|v7UU1yqMA9Wr;xIHm zJpC*Dtdg3x?l75XO=Or`scuz8xjtRHb>0-cX`nfnDF|h zFnkP44OKOU_tn)gl10pUk+e(#mbFO0JXeU2X*3>9pw7Le?7 zON|)Mwfpkq>+4yOTq5%4kCu-Lw?0H_Uzd6$r0Mdt?g6|xPL0Y+wkVMZ2sf6s7G83t z_liZPZ>6GX-PDKGKcyK%q(1txRtiTO*NLgcy4n;7fR8TXYV$^}06($a-K8s=C@)*7 zb4vK2HI^rMo2Z4A+O4JyGFV>Qs)!c*7MzcF6J|+Cu#eHBEJkEL&iF^OLlT59&$%Vn zmvVz53`2WaK?S4E9b^UAFZN?0W0{kkbX+{bWIks=Pr|vfD}uw=HfsH#RMbOe!V~># zLiC~HJ%+-YsJAtIIAFOTia2q>u37NbRI$-<&~lx=`2mlX%-KlgOUeq2PO? zuTFGdK9Z+a=n}>Gc2h;5dQUfE)kh%e64&_=?@bF`p~QpZWCbQx(lo|&@e#)+r4R4U zMq!XFVi!Y5FR7>GRwl_>{2u$bBzl?B(FV6!oB2U1G*rUT%LNqh&b#)&O*Vem`)DjT zkYsi2j*pI(v9v%>9?@==OQiVjL2eS6QjH4$4`^d9Jp3zJ^_>moA}h1wCN`~M$+`jf zsN}lmyv+jNqPE>0T@4cRl0V^GHXa*C9^x!ZEK%k)TkuC@u(l*fnzh0D&_8(VTQ#IQ zKI4V@H8bifM80ZifnK&zag3^~&0gP8S+VAFQCT4t2TKL4_vKyJC_5u?US4ws`HIY9 zD%if+JIDve8jOb^gm@m3&OV8~DV;qrZW@fjX_%OupOt>ZdL}DIjxP3f zeDw7Ccb{|%jR$c!O8_Cp(N_fm0;HwG`W6AZW%1dPk$c>Rm&)l1BJ`+2Do+}x3~3y* zs$5r=H5N-P*TsEA>Ltbu*1Ch_O+ynTb$`5ixx6_WCdSv^Xm&U}gV?XAaQac!O5;Mp zRy(_K_0*9Ti_Y_P1M)a1t4oQ6<^(Uld(42$C~qF39R4tw;V!46uPv$u8Z&znWU+ny zU@|IGhORBr&&p!UTlnh6^~&k`P#7p)NLh;7&;O<@@TritXe)A!X@P=|A`-w--b+zm zH{-E+>k$DFRg4V%DQsF{X>}f+A;T+ChKp2lAK}i7=m@l7vr5?u^3T-_;OU4tfN4;v z+Dx0$SJsiMBf9@6?X}E5MxApdHkoQWJJl#$AaH-lW%iS<;6hrmMfNy|eP&XC78P4& z0Z@hu){C6fG0XqT*b-+^M1-qeiA@DB_sc5gaW_-Gc}xC80nnMbO(K_NvH#VA)k%8) zEn%H}^H&PRom9ZGOZ~2Qv!16}x=(`O-oeyNL)t`J+DI_a{B7t$aYvsby$rd#gUEjA z1?%8mOaaq3EY92Lha1ejO5l|k!3UE#e@yj~A8rSl#8?}#5juO$kYErpMm*leMVGk>4dXdZ{ zERby>+H~WD2@WP>=OxsJFyo#fUU9_mJ7T>fPJBip+Dn`OtvS3*rn}t`Vv%FM4A-U= zBeuQk=$?_QM@S9a7Gvt13yexrbFB99Bhs%h+{3TOE;DeJZb%#X)6I5D3?qJnz1cHo zxVKQB`tXBs35hEyx4u~=8oA=_8-v3j4&{Th$u6v^njHJ~o2-Lb^&#?SAhaVvAUu9e z%V#6yH0yn5$jl(+nuP}NO@WOX#CF^T^F2G$&#G3SHgL9h1|h%Qw~~e_%VmnmL9k08R72z7X$LS(4TLCWj`YB#cv|}k)sf^OIhcViy<>mMu z>@RH-HD-^*Dy4b~tSk2wkxqkW16B2wzLBlX(gnVb!3RIYlL%p1hN;lcwL{A4+9K1= zC2fO)Td|&YA0B7F(r_s29av!F7nCqo6wzJnVBR33Kv5OzpS2^oHhq+VDE1h5ji|2) z6yFeXs>ym>`)Eu;HxF`j7}D^7d8JWLN*$j@h8c59b2_NOFd;?V9s-O*MmhFitcEjX ze(5%i3^Jv1>+Lu-hT3fTt;Eun7!q2=dYCi17Pq|nYa zNUTVwdCr#r3A}GdSm_T{IRP~Fv_PUg#?V-#r)34C>N%msh6+cL*gN3 zV7HV5`mvR$nu2@RXmVBYHoE2etdsGg8uLI`=VfZx@bhg&7RbM`hLYw`OEb4;oJXcE zAWOg5Z6``iE7o9IVc}VoJRJq<)dqHp?6P_IoI2?j9aDEKNiQtOv$Akv_^6D5<|noE z*0t)*vBDd3>-z3Fhx;;S876cF$b0i7+#n_6)4coo3$I2H+&jhn&-QO*V=u!g+ZoNA)Y!9y{qe?)XtwrCSsjwwoAa&xOnAr73R19kvf*QdMfse znIexm$0kkDXk9T)ToPl`ORi7_MTi&XKm%GQF6&aZ<{pWzp{E}vLlAETAgfu z(6Z01lr17o(8sEYjbD%TgYhgfSv$jnlLEJ5vNV`UGL)PRMFWK%{4G1jKfG}^@2@Or zXv2bH1$@{;VrM^({SZ>d*h#Ss98aCXeuo@FlaWKPOEQ-jNuO-Lvx(P$>l*6Gq*6}O zkZ{Syi4aOK9%T7G=#0KNi(Mv*e0cEgci%{ z5)P^>W94G(KD;7v7}U4zhJ~GQRp7ss9SYSg;TC*h??gSpalw=rkJdpW5y_Vn+a35* zaTa@kk85}r!?%@`168?~i3nfjqq~#zq%fle(lF)eJ3%el=;T0k%QC~+5=<`<`H4W= zs9&_}>`$cLBQ#v*vt+|{KiA zQ^KEtBG$Krhu|90WwVS2#>79DLDf%zxm5Wbwhv5UdIGQfwVDhN14yZmnM)m0wew1e zl72mW5{JWG*Twa@?OXSSTyBw7#+1s@q--sbwi{T@V`>N)C2d@Qeb9iMBn0f$SaDe& z4>}|#f!ew)d6uHUUVLYL<*UJvse37Y9&`62BI+?e*lHIgB9Ji}m|WM|j$(2RSi382 za*p%m+D<>pI0LZL*TWrx4Iw9ug|~qZc>?S3GKHx(H2_-#*R_JZ?Jz)j^aF>|ZF!WN zOc4vi<~G&48z6u(s@xK;)oYTP#DbJS0arOm{z*{Sl2uQ;e=wX*|4I?DDD~(zZz^(9 zEUSjz3XqWEvedTwcLV6?81eQT()@HEif$7t2*QmU)&S$ha+?$bn6 z9phkM7ueBD*9T4y>A2W;?K??0*aF=OB~wf_d*;V2f$SsFdw3{#JU5-?jwgF7Gt>|F zy^yeAc5z3Y7EkzT6vW-*Nt86QItU4+c!RxXAVL$de?z5WyLd&HTOuPmi_g!>qFLjn z6sIVDO`zYV^sh?9H6pAeMTAV`K}^fgV&+x2UgCY-(8q*AufA*GCYtCje|BU|?}R!c z(8fO1Z`7$w{H@sQ(tT~%`H2F9G7~T5G%hsQr4aku)inO4UcL0}05?lbv6QqUrM)yB z{+Z&0eaUz%8>*VOt8nh&#}tHU#gW}F^`FG>r-BTEt_Ng1&4|ZU0#rrPslqvoAA{CI zURjmp>_r4dkPRBs9>{VioCw^ z=~w9&MLueMNekTR{gg0dV~j6UV4e4~Vm|<1E#58!R)`!_rA^HeM{u7fC8`3q2qvUB zIAW;;DOYaZ)QU9JM4(cDE4SOE+RafPb+c-LF7oSGB3{Q<0|+ovbAi($_R7LMu|w&8c;SSdPAzRvH3th|3EqJaJOwjYk7$Xt-itdpL?mVH-oHcwAilXR?C=0{g;I}=;X z2^6@6HvwA?`kmyV0zRkljbD$qj9_XqQmwL5Zqssqn0tAU`1Kda^!telSFXnwabCX{ zLvrQ3IUTP#Su?|WKOB*WScux z>vP-n&kB#buD&cf)$79#gLffSd#ZnHza~`nEFXD8_s=pow;X_ z3;m8*9}+||^}5)#$M5}=8{E&^Z^r~egqGfnJ1VQ}BDIS%d`2dL*%J@#&TF`v6(od5 z;?#e^BZtsorIyU%pM(V3uyns>ORHfo7A2-)m5u=+TJU{4guG(De%1R~evaXhGY3W5yhvLP40OwV4IhAX zZTLQ(lxsdoy}Z0!E9t=o!iBc}N3R&8LA$|g(2MpUS==`fO=7PF5FUn94?QllgBtz`%vJ6xi-$qBy)N4uJurk3)k?3 zX;LoJz?_4GppFGAPC>C1@_urBoO^!&!Mo`0@v(ImgIYRLkN%)`-gOgoSHgP>(0W4g z>r+68D1)cbB_ewMc#9iJ#_6t4*>Fk_gGX5@cMuo2iO;0N!GgMOG38}wvhHSGuaNjz zKlvu~5H}f0e^ep3HS;0kLq})5f3l-Q)_NzL^R zMQCLKrW1Sl1wYZfS5ncStyx;uVl2-KqbMFT-D@!15`Y>CfnXwtn$&bM&nn>+xkuRh ziOjUSw=+bk(=#!oo87P{aX1#GC~`#8hTr+;*aVxa*1u^Nrv;d91j&uRERwgS;Wt90 zicq7E;H38DIS;_<(8y2A+s7CcV-}zS{K4)jC|ig&cE@rVm6*qb6WWFPT|T3#K251N z&j{uA4TQ&_kNjGE{fS_i6e=@aA&d}EvO(LGoOxkXThNcTJ>Z7C?cB1O;2j&j87%$v9) z7ku;7BObz;7zG5&TU%+8V?5V?VPpAO!vx;Haz}S-V*#3kbzQ0;b;&q_e&QCAN>b}8 zmU!Sce2ngr^r|xPI z*$O)?s1=xCe=wTPuWd9hW81wlbQL#j~@!?P=%Er7ZtZEKM7jJ!Wl^ z-`kJR0G6&Ry4-UzA|^75DJflMNTI3R3G_94Dy8Y64Ws&egNn2!;o*hX;6+vJW9)4I zayC*@7bu8zs+pxbon?P+6RMzuxiSn7E!>45@nz-(n{7(f98CGai3*J3FVq|u1_y|C zbWiQTjZN##px!3whBJXV%GI=&8(~-3*i=2XD#M56Woyli1DTAz4o=mt>3GPA&^n1I zuvp#;8WAq+5G#Lnpvjo3PbMbqO0C%k(YY9^he($y^_v7Q4x|4930FW|2gJ-h+mSCx zn?2kvesd$cMpd*<80$=^`JJW0M}Cizz`BF|Rx;`GK8+ z%gAz(L;UTSk;?)D*HUGSm@h7>*8797^aO0Ts38h^L3w)JWF*ZA!UbzS4voq8?rq*% z@5XssHTMY?Ox5&wXz)<;0$rife#?1yB%3pwOC8Pt*5c$#`Xd{mt(kB6tEyT4g5v~7 z>Q`Zs{%`tEx1PJKpj3b%Ptk+BBbmt?7NvfyH-oAoYbe%U7_h{Q#_JJy$5xcQ<{yaKuVZ%o3fSl9!>Yk z>Pd4-0b^qDhD(A^pOl?T^)JoeZ>umG5e!>J(_Zj-xZun*b|ALBUDG*uhIiQSK5EGu zQ(r;@XkcNoB>kFv&90b*a)%?Zpstu11_|Q?a(Kb#zc|@N{-Fc?SO*Nw_#K0lC<#WD6%1+ zj^1`$#%+z9g$g(Z)sT_T)X9%=nv0Q2+WR4{9cXGK%w2I6c{>lU_R7NM-66rH_#BmE z!_JwH$TktD(!{+HC=a_yx~(X*PzBM!qGYZ2eT_#l>xI?1KwyVK#+UfFoa*i5O>sIbVC0u~!_ z$zr^|Naoh}_0LQC{IsK!qvJR~!GP0L`J$jx$0Aty#QnXjHM>ffxVet`0Al|wRTeY2 z8M>b~c#QqIilY;|)_qL@?W8zvz$HLGp^Hgv7FN3OP1@bXQUJX1pbJzqYUP<>$~%bq zIrFJUHb^&?geX4<^-W|*^7aODoZ{(21gif7VVlaf1D&qWAPNF2n*u z3nKcLw(6&NHqD!{J zcj7*i$$P5`Yy`f?G^tb-At%}mZ&!*jAj{^#)BNx=qs+Z4kVC1+xAU2SnI21q%Ur~H z4wann$n4=+@DwliZOBEsPomQvGOruIUAE)5Y1N|_>AObLR@*>L@wODP!5X;-&4#f9prh8)ETUXiq_I);jk@i$6)mO|>NPpSQ z#ZVx}mxngAf3T6+w$3f7`(AM@jK2^GVU^WTJV7)K9$1Oqs^s$j z!0s#ggr&Qy|NcWJY&Pz<&R zW?vp|*W;ufWUnEB&W=NIHN`~Y>&-vYlg z0wnrT;bMNJc%h2yOyZ|_Z?qe5V`Abeq2o>jS<-rlJ zVkA|&IeI0~kf~^|xNbk{ve9Whm}bm5AMaOe^VBsPt6j~CB-GoCQ!UaKXTrU`O6u4_ zxsVhZa?tCRdYkSA{dX;VoKN8@otugyfDMc_JH;vw#3*kfbGm(mRr^UY$l@$O}DX7;`=$|Q?KHCZzIKRItjvPqc&V*?j^jS6uQr}&_2P_2% zh@NwJ@HAuIk3BRPhjki*X;Zv7I28%l{jlPQWgW?FkG?xF+oI}8&@`x&bBM!(yuWEq z&-(^9RigMfAIejL2O`l_1qZyWuyK-5^nL}&*6=nB?O!jQkfT%09Y^jKa(a81-$NaE zo+C`vliij-Ee`Bp@#t}-kC&-f(~lmxWALT}lHOT4iCZ$lht(&GK=QZcD}ieTH0#?P zF_y*R#dv4&(jW`}QyVoEpvkpyUS-oz2Ppup1~xgw%#BX<+nk5(T&+GPrd zM;UXtr)L&O373WlLgyoE9isdtPQazxT2M z5>ne{Bfrda%=@4mnUK@W{R4VLAMSEkp$7#6fn0jqdb7ZP=|-j9E+JVR@5bZCQtGm7 z0Vg$zThg2ZFZx8U_n%zAxHsDC)@eY-p`ZBMP&B;E*K)J_>EeE5@k%Surq4TPJ$aj^ zgOf8$zKoa!wdR2}Y1Gh!SvfXM5l;e)QAxejuB5-HN@MUnqvC-ggJo85YjNjSp05-I zmSCCVoA^qSAAMFqA`;Q9W?qzQefPm4o76vN$7)qLA|hPdz`TSLsXywG)|lFWQUD+| zY6#EV+tgC5Xl@6fPVN)}I5+<{Vk7(~uD4}x+KyysT8aBAdNdt1S1xjIW~dGaLa-+? zij2p8LD2w`qQdwfqwSz*JZC2L(~)V_zt%^&b1oyS*HaT;DICC&o{{zDy-9u!5TJxiAY-!B>+_5!|L|Ui z6@}ssC`#d>{b1QeDJyu4d*bgpvMy}g>%MgJkh!$jmv0ZH-Cqc|Xn;I2zdqTFDqp_e zu{RiM$4IIxm_IsOcg^pXQWUZ{ zBEvdfxx9}TTjZZ5e&kG9j`mXI&NwXhmIiHmrDrJ}K#s4yJRBt7G;FD>ju7`rDt#?* zZBbIlDvBy>H!s4sgar@=2x-jwmL_}EB3DL+hpDnuX!n4h)387`P!!yeX=yNwKwJWCLS~=cP z%M@&U5FP|%>K|lF4n7`)`Y`C-ID}8`=z^3Sj@ z<%Tmj`$KF6{iBHSmhUO}&1ODm`n^47u$h{-;DlGno~DC&<}xw`6U%#=uq>&I}) zwCMn(+!w++B1vIkX}GBT#(AsTxYcI%qd_TVBnu)hkaPSH0m-X=XK54RFwML6uPOg~ zt(wScY}Sh(o0nkSfshAuJuI)!f#H{7n!-o#0-KRy4 z4Y4@hZE5-ZX_AXtrsO$IZfv+Ez#StOJKcXd_RbW;%rwTSKwWga*N!$e37`%bH>>f% zqP~{Dj*D6{cW&g=HG6Ig5ARYzNF+yubbM3;2h*YuCf~J1j9)-O^}HeI_lR-~EvZ97 zJ3C*2f(g>uADN-Mvar0=i|E-ap6y3i&9|jUNp^Uq3GK=OinY*TaCH z`}dHQj3P&QCg7A{u7F}O0g-(5LOlNojQv2RoTwtoIJ)UDb$qRoiHZPsf*$*5^jWr_ zUu|e;SGG`{PBnHJz2m~{=}P=%fOcUnKzi~dGzw{$jqY}ouS3h~OEI@>D(Hj5C8B?{ zO|-V`V1lbx{Tl(387s3~kLNGu5R5=3&zs0Ef)+H*PKpqXxI12uS3N!`^~_@kCd6x2 z!H(d=bRMl>$$Gw3J-0LUm=Htx1b~G%*xoN5m1qlvU7rm zE4bvQpPenfHnv@^=`w{@wtRk7oN$$Y_Kh&)kSO|ac%D9ED2@c{6tcDD3h!lx2Z284 z`U~Q$Ef(ffPzWN}82pH!2a?k&GLaL3YH3?cA&bn@z8pffp*7UmB(rG}<2j{@UpW1| zAyNV3#j^&Vr-32P`mbh#-lHPu*-1)BH0!yeC}9}-j{}1ubUXR0v?9ZJbrQ&UXrxk_ zGHCuBnvvIf3_1!&LwCBhIH^l%3(@Y_0v}bN#=Vjf3`J@bU)W`17GK3F#a_w zb``2;bjX(a~zQaK}P6p)E@;UTB zRM_U(fAo2p#e&+rCT4!|{zE1HwrhMDoNTV3gUisY$Lwa|61D@A%R4+j@1+p<^TKsA zD*=lz%^z%2HZ2~)c?*s|nQpaMp87qXJ)aXLvTb7RqfGCvDnw{dFj+?zRuWqP=yq12NxBt} zpQ3#QpEkq#&q?p16RmDET_19BP10aOtZr2=p!|Z_ZUeWRR+Vy9IpYmWlH`Zeue8_e z6-YH6pF88t(bzO;U_=#2Z+N%`tmj}RRp??3yZjF99=^Y5`vVI{ z4HGLtIXC}!^^3j5V9S+Ugkn$TDTL3%+wUn zZ8}RQ52Hn3F^~t~t;+JRph+<3I^lWf$)kmv9u~=nsOiYJ*lzo1&U08#Hw$qBJG>bKlW3%yKYJ8ZHGe&(TRl8fxu%~(BquI>Q%BWPs=G?llB!oUpC*3#Mw@^1Djtuei8x7d z1jztUuEI;d-vg(4huFjj-kKGi(-egx$|{&6OjnG?eGOktJ$5Qqw)W^g)Sj~Q2I%pZ zPxKuZEr!Nxh(}W&Q>76R)m_w?4A{bWJO91k7dS*cqy2f%h(xK%<`I)ZQ(Ce$dCyN z)37h5Kc0336wywU@sYUv>&BP>Fv$N}3-)o84mtegY7#;~oLgIcq{mP`8&fY%;5Lzc-QW^-*n0Ji|uphG4bCTf|sSL zn}^!NUv|M5AKX4s{y)Jywm#39usV-&q=GriZ*okBOzGVtf4$Q$VKNKQAJ0HebS!n#N_w0l!iE0zDgycAf2)&2?7utFl=4fj7lOkX0iEt@F0 zX1w^jVK7)ok$SOV^6M5k<=hAoX;xA(6fXhic)TIvhvHfv%%vT6;^A%g@q6F4&lYidYCqjN;OGk zPZErenQ8h-aJ9|tMxjoWDwWXS8ON$lGZLq8ynC%=NcB{zJouS%MB_k$o{x}gWR3&E zAVV5`6JPhGXtRJ(cfL8wT&Ua75IiQLXfc&;;e%XgWu278|NpV}o?%gJTi58`x|K~3 zRFY&7$)S-90<9o9=S)k^L2^b#K(gcv5}HhtL7)KviA~PAC1;wZ$)WkmbKdPa&-2~) z-anUr{ZL)iRcozTbB!_PnEqb||GcOFz@0tV9_WZGWav@+CM|DVBS22BUdUzK#w>{F zWu`zwkJ7wkPO>uj_NEN|Lkro=#jw}O0!t{>^0AFHyxf;RP#!N?6UMA-6Li#4rJ8Q! zKK04e>5JXV)vSEkeT_x?WqOdL-=#GiWmk8RGZ43|VOzt);{jyWmGz$Wkxup8wH5Pn z!i?)Hb6e)7{cU4athP{V$S35K4{M>5NV_(xgw77_^2Dn9b{ zdGU{105F32KqX^tjeT%qEuTzzY_iUl){gGIN`hvOHj$-^VIGoQlLCYqqo`qd68e#a zT(t4_iI1*FJc6_ak3k`v-8-lGtYaZwfr+vx>G4xq}nPHG_7ppNQW)|Esz$)fs&V(7@7`oMusTfbL~rFL+qYoG}flZJmTV{ zmSF%DZV|tdXhRduYy*xMrzvMD1nSP&o~*q7`QwZVe+u1naH4}b1R$nc7NvH-#qP*$cd!%1Vbd7d?~nX+S-TxEU9VhpAxJU#V{jwDd8 zX5`4X(rvV7kTOg-@3#nlgrDXQ%DBp_L0P^Es)6F-%ZmEaJcHf)u6xH=!@D_)R*exPBR{js+iU z7ZI|yPLXBzge~a=P>-3Is~`tVp0D%yIZs$4zdcG)6B&IIR9q%tN<*T~WlA#~+KmKU zjn~Ir)eB@BqaO;5zJz{>Ob#xl9{)O>PH-uE%Nx_<4pbMvbD@~cA6Tmxe64CKng6Bt zlvvOCZ1=X(Aj7cQ8ZKzRy=l>C>St&HFtj*^&Nb|*@@`Ety)8@m6w<`g ziaCS>J9`fU_@0Wt;+U$5N9F3?`};2*?cM)`t)~ER5@*50l#cI3bT{r zs_o{vMv|t}7)h7R&y?A2QIFJO7F?)At)jcM9kXkxCZiryOBlUeumOL&V zRD8UQ=@W}s3vvC2P4yql{qDAGR9+t>T0ezxvrgo^4Gn8b7$g%j(UKAadAcope#< zc=>$Fx+HaDtnwt9FzvP44@LsR1;G*40FHam4)Nu@)uCXfR%WB|jjtUq>i~_Yrc_pC zI1#bbG`x)?^R)yQ`$MKbwWO?UG8syo;IOgZ8qpy_6Y95FKgXa!be{A|)7H;qk_ah$ zjQ=zF2G|LxnzuwxHeKOg@^s1!jVhPJ9~Wy@JNmy9da{I(j;Wk01vP**o6`<>o@fHV zFl7V#tEdYX@BB{frw`ZeH4pYw8_4-7D(B=)@{t^&^LbYnxq{zz?|Ue+z2)CamZ zUqHQhgc~-9i2k~EMM;%J^ep`nBk}KUId>Sj{m@(Ej%w4$qxWE8t@tIZtZdaMMR1J6 z%!sp0j zw{JjVu+o>V`ynegSC`kVx+sxC-oqYbw)dHs0^gi$eg0^7iM&iRCkfu8lQKG1PaFN>@%G)a7x|L)uz>u>j^l1`)iwDYLm}FHy-+>dZW*MzMfD~lN=N2} zg9MHSJulg&`F(#!Bc=F5W~s#3gMrbJ2&*b%)Om4^c31SawfeImUy*8plV_xtgvxDJ zpJ=u|_qb$m?-rgf`%zDCwNOq@7OXQfx zPn!Ja>GW~{Ik=HZ!y?Zf&!!zzT~4kzx>|7=mh*ZV6yQ@&a}Ue1pP0#>`-jxs(1R66&E$uDZ9wiLx3Wq}-xKfmB5{{hdGk_TDzauR$TnCGa&pNKw|}8BJR*!?$ocSTqhB z0N3WIZV-iX?`&v}i-jj9YGOK4HyAoT7iR!M1QlDCi3I7#eHf#D{2Od!lztfvSmZRn z+2tIe#?qTiLY{>Fx+@`r*-DXuyEtBFie#=1=c#vhAlA4lFTA@nS`O@S`OPogl*qRK zV$XJ~Lw`_T^~8U<%Ky&Kr#w^hmp;uZRDku{x)>;v%b=s4F}uyBkq0CQ zIgck4yQBPjYP@d*fR)J5SaUbG4YbrW43r?xsA=sWS68|qrKWG#g%7C9d0}OmB}XoK za)mv@bcF9LoXwf+wi1Yf$%XRJqPuGbbVF!lv(gd>bH6OqY~928FaM|ShO!hKgi443`N`+> z^5ZTw?L{l=ty!P`V$7&?@rGi<2chum(=2aPSfT**V@Iznosdrc{Q6AfZVYoKD*<=< zDN~g-&yN)Iw8`^_dE)~QScjxOr7$B6F(xO+KLP!c@TERTB5mg{=>Jgee8LjHXi29Mta27EI_H<{WDwhnN~4B zlcaHLW6Ic9hMu!(H{4;TA@=PxF|#lET5RT0JH9oBKTO_x1dR`9F@a84HOSB%#_L=qIE|; zizU{>U>{F_F9>Lh(Jp1HSjE?~4Gb@!-rR8GEeu( z*v4It>_H~2W5wOuG}$MvD^*Ww^p0Hcw_)9vTENcF?W1ZPR6{y%O6?x+mJ+b#wuxb3 zCw%ijn92C7hU9PVzwB;}$V;z#&i|tRKNZLi@#>?kzu(D;`$6~dznWmZRsIE5su$;% z%)M$@Yldfi*HEcv;z&S1<6+2oGvr0Gc2aq+iFxfj6u|lCEDa%B9U? zTeWEbDVW2Mww12-s{-Kgm1o%$A`D?ECBw*blKkA}`=M7X_4yKjOM|groC29r{rT52+zUFWHOWEA zq`prgP-fcUB0slMk^bRZM29T))3FDzSNXJVWe^?S9Dii?TFp(OL292Q#}Y_LN8c6{ zLSI$=4-srFySaS?-HlJy@L$!6mcro@cRzLRz+;{IFfmM+bLVfA6uH;|iGobCe2fZK z#D?6&U9{FRe*eFG08==D%u6>z%;8=0oj!zQ&fz~?B&cd|ktacD$m;3C{KVVi(2ZA5 zeW|tpuP|@=#91yad480~cBDs`874&iyP~xoV4eE#54kt5HM5pHDy9clA9B&-KjMj7 z8)Z!#mBWeGfMMGYqG7ImnS|R~01UGz<{D*oh0`R`q#vJ+-1h)>cAt|+EL8(ojU`?y z0}g0}R%N_)N8R{A)kC)3J@uHv(2%R`KIVhIV+=UTr=RdE9O%?juY7xMpV^s&#eQ%^ z+tvnJ%K#Q5N8otLkts}}QJ5HIc?+5*C6@Iu>x`q#%hxLD+^l9DufF*iBG+idjn9}I z3B=}scNMNoQr?>++mrmvM;i14ydn=aNk|#GM82%d=E(IkU2F|@WUrF)7wbUf6AY^r z2aNs`I{t{e{`f3OxQj6s_fb!`wBD4RzNKYEj5Irf*Ur_2M8AB&@l201EA|nJZ~WQV zrBs(lp4vY8ucns{%2w|O2MgOOjoC8uK|kAX{9k4}nz>5TBZ1-6t)-&25axwJjAm2p z!Y4i@O%YS{ec>X5szbGH)?FHhQJ5?LrTj;#yy$DnRF0!-@$67z(~?P+?O54-!cd0; zjF2Vo9O9Wgy^nvEWUNf=$2|o)ugX7Y33e9RI`Q@wcj6YB zE^YsqimLfHM?t0-h%^l3`F1ns0Dwew``3+A1hxP2T6jPDB$cGB4K&#Ph#7F>B`0rS zpW#ja96jX(b~3Z4ZGLX4ttaP4Fw=TUp;PcYggH6ZF*(`Ar7t(gd@O1(og_Q3Rgl3~ z)on9HNyjMcjRb`i+Y2iXy!%014V~^b%3I&ON*I5?tiN0QvCL?w-EGf6!m3u8(9ahh zcP^T2Ccyp=lk)4x_Yn_%9VA^QSzNJ)ZW4R)>c33}pW4a(e=;j3XhJIAjoRS$kMk!k zq1uJA#sOQISgbhnKbJ`nnst8IvUGAKlpp#1l0PzD>H0lYWq6EBkFd2{^)*0ccMXs zTCt`>IcH|(J^@dDQ0WsCGyx7T9TyPV zvcxE|>h$OHu$>2ecr`N2B|{W&UO}0}@gTG_l!)dncec691x*8zGgej`ri%%p^NVQz zh!_TWZRMzp&aCD5%6Po=rF|ya^_6J9C%^h^Qx7mk2Yu>z_S*wu3aD3pW!QF*O8w zH!y=_`zW`MfRPCv%^T@5TihWQ%YTPY5ear z-taj9idO7Uu4a0Ime-SN7=}?9&wYwv{0jlokLeu^o5hb%2Rf`el;+8w7pO5kju&?f zsKw87Vn*9i`(4OF)Jq#rR|D-hF6*|%nwRZF0mr3~8>=K-C4&RDGQ%{uC<)$4J+1i7#;SNl#GhsgNqj&LX7%N@ zVl#pHC+WPn@jvjB*~#umj_>cRf(gm(Ya_)LAyo(vNo~w7b z!Uu`2p7`i7ePZlrZ#%DhN=;Z5Tx~n4Z#+}C3oXnZ(tYxeyXYTZXo2aGpxN!%T5fsi zzLS*V*j!_L&P#%aA;HY;vIAYeb389+p>KP-Juw~c>&|3%#V?clJv{H{M%!x`s_W}M zq%f<@YuQ&%-5=A{_gU<@)y`4JRk#z-W|;GK^!*P*waI=m5qOzyU5K&16PGL_9B4Pc zIovQcEtoQRk91wjXc04`6;WRTH<7ftnOltU8?>mYltK-?TteUndat~=uQs;;uP#{E zbdHJ~fOw@cdbFJ$WqP*gFvTN*r9rXhmnvqMmlt?h2*S8@YE755t_uh_xhOTlE1gj3 zzwh&>siaqL3^+1M66QpSB9Q?S9r^l_#wL?T)ge)1f6pep1Y>qk*hEgp zCTf46p-%+iI~xiL%gXmddrMvMYRwj(jYORey!TIE9u#Ppju(_CTX;2onV@_Ciqu7S z{`TGfb`B(T()WVr)=Qto@0^^@C?JmGVH(IU%*isApQ-D7vXQghJtOnYg;p2+ewkcj zFB}J(I{cl^s>=$sY_=hV^8wz>$@x`PVc3%kKW1fW3vvTJy^A0^tX)M9CKGkNskuAh zFbh~W#&lv=JlpnNd!!{#gfj;#P`2}D_2S@cixyrhWx)9ds;lG)hjT;%h>uZR&Gj@rqd!tES^58j`Yq# z&fj2|hcB=31z9K7pZQ%G#kRkdDbM09lrF#n0ejQ6;JnbQ;Mq377zMKy2cTkK>Xz3@ zqjZu4Q;jzd$3iRQh| z9ILaa7zI6}h06K>Vp0zpe{EKs@=~O_&Ro&>ld}3{vrQuSxafL{FI%wX?$JKuM!28k z3kxIV82`8VSA)bA1ksjn1=Z(U6v>1$uP%Mm^&mM@9E%%4p*xa%4reK}<3qG<7eYCH1; zuD;L|UAU=FJ)mU-w zPj+N0`aCe@?SUM3Z0294c&FS;LqD>JtCM1I+gENr%DFof`zYzo+{R?X z0u1o;V|%&vafTYVZ^GxMKYd9mc*soVzW%V17l=x5T}N9j(toS3(E~?w$L*MHqo1vA z>1nLo4OcS4c3;FBj@f$DW_3ONgbL-I&F6DzcU-mW-B-Qt7t~nQ-da<^NEl?##_F)( zK|?y!a#B#&VAYqXGim=#!h!G8-Pb*z*9Yt>PBX)>dHP-&m09YH5fN9zf4GN1j^5B07x+1_bGOi6Dbs^5;&c8^MJ6ZH3WAx>x8 z@#Rh^J=gh6^;G+Bc`cYN6M@ut<`@kxxnOqKOa}U}+OMl*=Y;C0pFQZ$TUi~e`PK%U z;RdB9OJgaEn+n#*;{0Q-`n6vaZd>yzemaUb7RPg-&875Utg{Jn5as83KF-mv(%wqXYE zq;0U2zOl7UbnruY=y4NO$tTiUkzhq8-20szS7pUW!vq61<7dfzI+_*4*nz%tiC&V zLCQW&?RSL6N9|c*Ko!;c6f{NLPyTkJd705Kd2pT_nB2!~Sgk3N*;vx#h)I;mzEGIQ z%AJ~A^iTTXedle4w47F8wV_eKJ<3D*DKTs%Sy+AZ>&ZEGf%UbGFgg~U5;mQRN1#+D zxajnp#4=+9ZSVy?C~R7|yHg?4L?T-=)v)Tc8z;g}8&`p(KR06`H}2Bi>Qu~sdCSXI zt8Py|oKsL@a4qO4UL=sN{+`Wcv}uv-y;N`_!hz!BMPCacX`Og=8|(N$k-0~|at zAIzF*$)4HH68SIBAt7wEVsN5c9?S7} zS1{dnDqLJcWGL4kRY1p^^szR*?eJ_xPU|9Pn3KIizvi^@_EIDr*CKl!jP8S1_dcvs z-tAp(`*9>&&f4JPzm|`G?uWa~sKwlhrS3$mgg_0z$B%wh*m{>B2HA_s5$x=No5Q&f z&9eC~hq@)hD{T9e8?GW3JW+kR z4K@lLytVuD>D0z!S<5O^c=rXDTq{Jfa-_L`fSu&&(iLVj6AzID6W`?%3+Xy2Q`WYA(7 zS$lm+6%1aT9-G_;Quu339xnLj7giD-@x$d6##IA_YHs-r@|kM6?v zPMdrirdR5Z0i#8dSjEe!fK3EUZJ1va*MgCX)X|xehURZ2)^eh?C|}VhVR~E zn|vJS@2G|cr}Lp99qnI>^CvX*rF%RVGf_GDYaQ)(HN-p+H*_li7jEJi6J--AT~`Fr zKMPxJgjUt2%LpB_B}L#>Cn`8i%h1svEbY}=)C$8mEKowsn!SGF5U2Oh1BiHtaM6nz!>I=0i* zIi_7c!}dJ+H1KIScHBwdvc=?4sn_y# z)nbQ4qq^%p4mQ}6vOuZ&xc*XX2tFoKzQmzZB!I;B=>%Sp&W(I3EGaA7h|QW5k(}-; z1s}c0GQ5Omwel9W5QcJrVoDxJy?-2*F!+Wo8F|<@JU08|*dS{p`<}i{CsmZmhV7)Ff*(Ep_ve?y+rtN#Ixo>cW>I?zTb)IOF;01Gbh&)$z1uk zDj*&N$KKRzB+c&!1>JC31yAk>IFQ9D%>R69GnuZQ z_v;=w$z?R+wGvMIJBiyA% zCwP0lK$q94dLShIw})6KwdTrBv%vGo>}o|~&onrysjUPQF(A@dygf%w7N!5QF)Yk3nLTBKUF*Ux*EMR@)! ztPZ(KNwp(DmcaZYn`3NQ(T3ymT4q9OG+`}1LdWPzJj+o3Y6#G=gGo*g*AW%1&6ex@ zZcnEc4s&i)ZdpupNJvP~9~T|XG~#8U1uN>8{mSA|;ZJ=aP9!o7bnSm8zAR&d%BBSYvjjW(0X z_D_R`3=zsppMfu(hl}I=aPNiNIW}u#O!(}b8i6n9K~C^1USNyc?XSjRW&z$ zoSB+ZkBNfZ__2upz2Ec_+38ycYrKJxw_=p)e+oD>#gP|WZvSo(^!-kHqs8H~%Ms28 z7WbMor>@U46(;-30zk80ZBiSHgsQ>Fg~jzVrRm<%=^kml<12=!lgD9eQ!k&^6R{Byemhg2g||!Dz~b#Tz#sW6ycBc+!CfccGignW-Rj7;-q{Hju?Y7 zV@0J?o@$hbo%C_RjG(GgkM$ZB*|LhNEB3ckJqoye0sGa?5s^lNq~(d^nB ziyc8lSxG@167I^5HvZ;+S+)(=pi=4Z`xu2=HbL#yMG)1cr(rQnY`ufLn2+PaMh-eu z1n{4g1QGEHWDgh&PT}H%W~6MBgV|S)E1)DLEk|ImZtq&$+7G1JaB4iR=ShYLeST!> z(G)6>Ge9|Y^?Q^G|q8r(2W=T9$blGFNB;Isei5h)yp?cMmtMNCZLS>@|H4r0D`+6$_Y4`kG^KGqDF(- zO47)q_Z91OwAt=pzca*KZxk0|ufN|AaXRQb@~pS+ZpeCy$rB^5mT-yyfpM{(-{uhW zCr%Q}isPnC`y@>ff8|y^Gd}q|hQN@O;y8(NbfZzcc>c}E%Yc~lK`J~M)}k+cJQu{_ zAH$(QPlb0crH5NEew(T2UPCqww#iuMQIxyQ150sO*~67+LU&61{^GY>#Z=$8#j~78 z=n%eJYVe;JkyWSXvM9-%Xm@)4G=z7~s^ZGX0(o?c_Cp#c?QAe@gIfct=%M{l$*PXzA?6-h(*u%~8vz`1L)lOuQpTeTt(X=qyVK=e1 z;O}Fqs=5m^6G*=hsC14x^0*OX7Zv+~4@ciX9Tk-Rdg;7dr+j{--l;;!b66l>jK*Ul;Ore;dn;1nShXGE4@#7>fGyDpFTRdo)_l-W07Rw0x~K&^+F`HqE# z4J+fWJ=USkv1en@z&n)-v1pVzEPghT%8L=Q__qrSfZe>>sTP5A^rv?{iPYf$nF9^U z5~Te!wX^Dp*fAu$Y1+(~+P<0f3n3<3%rk7=)a zrIaww1(zPx_$CX)=OQZTwA&h-;ban6niQg0FBKU6XzL6x{Zcfyh6%tkzIB z;P7Xw4Bbr&5}ZSx45ocq?0!j-4S}gwe6x|+?;eymOnt?c&7(wq=9)$%`W|=4brb&f zyVZ8)2+iOZx(I0!w*8QFu)yTqla08rVd9tVchMxgTM?vQ>#^*U*D6MiW$~$!eD^t+ zBk@Z4*KqMA+y8K&4^G2_&S@I*&e5d`Y8HQK_KUfHU?Nyd40k z{0(wIkD3nV8>SIHci*(ra~A;WRwpRU z+U%-`m|FQwKB}9+4L1E;h3t=u>Erv(3#IkEyWHoU;LbUdyxHKR-@u%#+9_dOi54PX zU2bQWe655+F{f5h$AH{MLTp-;X9kt_&OekhiId>Pj4E>~j zy<9cJPaV$js0nO)T(#*rPaIDl!z-XyEN}J@

    vOUZzJu#a&~1p#>jt_sI5A@;9zJ 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�l+ZMyR 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 z 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�-eA3v-d)-Ge1XHYxVw(zZL*#`+LIslkyo`xnWb@ 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

    sWCCSn0p|v9%qg##!m5{K*+wJHJ%4|8ED7 z|M5otw^p1WhCJ8hiA<7{1VQAc!Q$egsfo#7ik#lA@5bz`tgJuISPLVNivF4m??{mG zDB9RORW4X${y9Pa>~7xwOWWlCuc~99MMM3UJgWDEeIhIq@P@Vq8A5)9E?~l3J4;*fEp3%DY zs|xrr!l#qKy}dwe{gdzfCMfv6dv{Nd>oV*Ho&d(8O28+}85$FZYl$GeQ!smy>8k-H(sZM{meK2K2D&L8oEpI3J&c z0W`gkV|i^Y^k+K`e3TyJJH(cMN{UfWVg^N?@SQt%1khEwR~Q)qNo8C4uZuB2^eT~X z6%2+sIBa@g;?lO7(1~j+KkTcKH@Vm^k&xu&W>1v45TK{WBbT8iAf%2|?W?OC3@{KJ zH}u-Aptx9lVV9?^Pf3Z1OG-;cv3}xWM{5qldp>X98sI8{db3)Hkx^7cq$;fUxs+b{hyx#w#2=q@+ys zJlAGsKCdmlIqL_k4ZgfNeOwe2zr8M8+8!GdLj~Li$!?aGIjL!CZld9Jb86IvrM;xy zThN6Ui6U;RKl*oEWz(KLqAsjVO{nxrA*8`5a zFvO&LZwEl5pf$-XxYdy=c1})(D;dg^@=ry_Eaiz1lTIV3!Xg-1IN7{DEnNa7B;xdV zi7?XN|5D%P5NpEiy-gPo#TkWaxoL`7-N?$$7KZ1|3xLLfvBdbQRenXqf-w3tuL=l- z+@VsY@2g5PklCs84Z-l;@ZnN^?R7Na1ijmo{i>hK28*fl((Hl=`@J@3k!cC}%jA?D><-g(FAA_InZzZn0&2Dxpu0+rQ9zcO zU+G$~7HH?5V%>DyZd+EnR81N$}uW_=yb-Ja&e7sn-bN6fn!y8yP|QGKv?1LMk|^V%dt7qiLWy0~H{w%r~aGx5{_ zX@W6zJ82c)mpxP`L9`OheV-d?YK?;e6A;rI26AtYVtTyg_>!m%6MZ5~kGN1880ZaMMIxT^(>tP)-mT znq3uPmF=uOMv14Tr!VuNIy!`qm8l`oOtL1)tu)nG3fyu7=uwNF0;`vWSZaSe%L)Bz zboz{uNf5ng`Uo1hgpun43;IyFpPwIdy*g2Fe3zZ)9LM?dhj>jvVb-9eDp$kZ+a68T zm9?Makzh$WEcGymIi?=ND#Rkgo_T){Cso>(YHyd#w@*l@udk0<1bS-?w&>bKHb{+U zg&rY#!PNg0*e}JtJaU;nd@0+M_RM)j#mnpD9Y*A!AUJwn1>(bN)_s#Q$>LS(64_WR zpN-)cQ@*j8FFt-fN!+0Uk1Kx1f)*o6b&%=Nqvb}1!w_06K^|Bp5Usm)*0A|$Zidp@ zR6h+Wby8N2f0SuDD?vET7pjQ30y?pjl$0o9jtmu61bu2^($TS*BaBVDX6}kqG2P>`DEszc&zoVTDu1m z#Q>>! zXU(PNM6{Zz^CliNC#yRs-iU+#4K@Wq7=gnX1qHPs-$;=?<=h5)tD36~!QNZpmo>Et zV24@i9FZLTN43z?)nNE>(cwVW5C>s};Ps-H=MP(T^}u)K;)F5otgP&=Cz*e;Ti+cV zfa6uz!0{+tc`aru@QHp0D&KQ)Ac^ndstGsT;>nY@5b=YVRwu)ObYcR&9v<3|d4sj~ zu#2GK@Oat;n47u_)Nb$D(LJ(%Rw3nk(xF)skr=vBeaZpd`?$4b&$hd}dpvQGP+idH z_N9a56hxSNW{;IH!oUbB-+K@9cMLu7Pef?8FL5z8iR}#Xs;hT9O83ViH{8d_^M4G1 zRhax8s&+H66Tt)`Q)A=hH|osdM?i*YO1Hf?LD-?2BIT~V4NYdO-kSB3_G!=670^ZB z73Sa==JS6cZ)GJR;S+lu%`vckw>CX3BgV<#Bvy0E1sw;B9zVnNt4$;6g^P<*pLTVB zq(GtfOON(?Ah_L-A|@w~ZFz%K6!d6SAg4X;$I*-3xHxU4kKN1nQYACDg0TVmSTIt$ zOCOnM{;^EhbNPcTr1=lR44A&DMguQnvlkPkx%k16;bA5Ig5|RtP58qloKCp>!WzzP zpKjB&E>^Xp20lv!Erj$@oDOlrb5S5RsfGg}ihv{aYI6U4ibqJpf$}`-5SK1cYXF6r z^&}3or`@8a#`kc;of`JKw26@KEhKF(Kpd#t@XVZur9p6kOvTU!fRdBw;leXGeS ztwAe7#l^);EG#X}t@6Y7+#(Hj=yA~n+#TU*hiTGGB}g|#;mEU_Gm;yL-L7$ zJ;P?a=SC;9Jmt!kiU@9!$o=W-IRD33f=w=aB9<3EKwYqm%K~MS-HBWmW zD~e_@H&$0SHrCeEc3w1hEPw-9B_!Lu@Y1kp5un8jX7>#-FE#t+X01<@RUdNMDJUr= zZsp&pzoS~UzctIaO6{-wVZ@gwUr=LWLRh3hUNBgwdShi}dshw- zFSTd;2iqAgO*b^!fHOcWkCvMHE^e^5_ggSV*si6EK zVM}t&pB$#=%C$N2sFteD-Bhr-q^(tur_$$(a_N~d!Jf|Azg_V_6#~+{kQSrD@ z-py1}TKaI0Ot)OIOD#_GV$OSf-)}l|dUMW7UrS336d}C45|r=#{8;1oRGFj8y?$W< zyL+V3*d(A+_t>n~6;n+x((#_CFy8*&?7ji6Q5he5XY8$Rx;YIb8jYCLZ>3*l8c>Q+ zEJ7g6`#Y0`KQa; zPb8kORuj|F(OG&QpP;Ami2$+Jj#W3~^NV8LZ=lu|3(3ZSWY6bN{j}(h;9EKI46NPP z9=c+qHAv()X%jwEeQ;drnD$s*-qj0B2u~x@pPHJETQz48H6fcnqA`$?mOMPw3v1*+ zgou5s$!GQ75q#B5c?&wVC;g4fT;w!AF^^h~Mo$t`|U21uo^q$|q*^a193`x2*sxvSu#`=kB+ z-$&%#-Axm7o<4P*b`5==;(`L{jd6agkmA|~_4*#L*g9S9nQN_#R{&R1yo(6SY};{p z4txMn26BC;sgJO-At51K?*(cM5Tvw^4vLaak}EQ`39*Qzqh@Yz z?^OgTNjLx3L}EcUcLpak6qB@eJ@LducwBl;L3jBaq1n^{y$0-|I+ShJ*8!hWERU0c z;Eb&HNIv8A1dB#AHZn>`)Oa(>LhMG4Q^dTw6xbOFZha$5m<2f#7DmmPy1LJsk(Wt> zmoYngMHYYV4SV}<(8yP!q+Tb}jFBU5f)VDe(0ZH1ay#&am{Qouv!J;HrruQu-SA z9k!NMR##3CtOtA-O$j_|DWHsW!i=ylIeKZ=)ULL(;wIs>yq!o;O~OyC(44R?b+(Fe zG(G%D*W232%_%%L@3OelP^oKvL!Ki_{97GO75DKbp6F8N$wh> zh9PQdshu`qDE=h|CTnwpjI3&8(}nmorx~>2IR++pU@B|UtmZKM3krFC`MQAtao7oP zKjvB-0WHCHKJ)QRRe_yA=N2>@#EIdEkR9a#Kzw)29Vwb1ouV&edD_ z!D8vAt>_NgQ2}ZNh<2scsn@>t(&O^)u{@gGp`F(J4))y~nOa5?;jr#_YWykOGrtwe zEaur4U@K5da`h7lna9Y~oYaTvr9`CXO7}97A9ueEBcKq@b9ypCP;v?NwCqu3WE{Bq z+J3&xoG|jE+PfcTCcUnYbe5{P_y>PV?#6V94`CKYO>TN{-%j zMA!gdD9p^GSLM2`S-WpCwNOy= z=#q{HTj2*Oo7E=?b~x`@C;|HwlA0zYElNjAJ9*Sla~XXXU_adAnuOHUPy4I^{sDYM z&7JJ3Dmq!huh~cDE01t=Aq~@BM_pGUBZ(?UfU;`eNq-dhF(7Jo50gu*m_niws@F?( z!Pc-t6I|^0tPC7+vR-4T4bOFq0plAJIXNs6y^|+UeHdt|q+jVNNqM@>fM&I0dcF<3 zTozhW?7pV9(Fo*d=IxwT|LECy=3Nf@R}QnFh# zl1Qa%(6>JT=-E5=n%@FvHgPntf1CoVtngJk533#li9Sh$SWg!}&vO>ccu-Ja=Q)6Z z?u=_<7HSU;x&M(_qKSo;7Svg^<;~5PPjG0L+O(voR2TF~H*Sbi1Z45L{B{w?3LV1E z)(8fuK?$7j26x(sWKQj?O%(O8E##{`PJ;GMwdF8%7qAG~Rc~${9UYlHi&;#Micnh$ z$pX&CLT#S-OtWeHaM^NgqL7;$*9!zh{}h!(z+;gHEDIog4ECHy=fa2jV)u8FPF{jD zJWPGUx>U0kABiH zdI@}!qRopJGqtCf35J8Zqj|ZIPAtPTF0p-B#ADIg?J)BASj3;*u6q6E;RASBhym+@ z!va7>YbS=no%UAMu_=^tUk|%os&u;s;h@S9!&UUi40BxEvUL&AmK_E}tnhGA^4`=E!?ryvqF1tcO5Bsf!JYQ-vG7{J%9NzaI;f!1m_ z5hr%r7bu$X9_W+Dj*h!Q2@^K_6Mc-WmR43n@nM1a2G#7`;>zEPSF^JE`va!$d{-~} z%+8Cxd-tve&@mU=TbP+GEuauRNgOfvC3V%FeY0-nK~8z^F86UPP^{{>&czwPH>&|; zKA$;|L;%Ql(pw)N1Vp>gv$=3)CIpDyfT^gmtB$Hlm}ag)WK`^34syz*J!T)Md2;ey z509hW)JUKv)EpS-pO3HECbo;QUx<%iOD>TFM!EwT0jLg$qHy3ZjO6xf@?7o6$e6L= z=^8@ao%7tlj|OX}Zxa|Re3iyyPo{jY%nhYyG6z;&1VhOg&aWMv0++Xf7{u?0tL8he zU`-C6j|?Wb)I6p1J~&}uBgkIWR?%Sx|28~2y89_@)8aO;KN&uMIZjo-s9Gts23)hs zwZ*3MtA4t4`yHZ=_)h1|N>E3#w+V__fr(<+{v zaY^(W;l0fFUq4;Gc!~QBO#`TwK{Pw-E1Q~@4mkE}j0`9CaKaxRx=2o0nNOs|PGWaV z+Jn7!Z~WcWT4Vt2#;pAHz?;ukJl_-Q!-Af#ycJH*cN@nKlT zz6h5u<^G21nVa91lHlO1Fkb3TI6Pkg#>&UXhk_y!RMeudgRj4inlqa6uYD2DNH1gK zr{_O_jON1Xx!)y$=T;*r;qkARpZQO=-RjvtKcXf1`_<2M){@^0IroY1GLSlCqu0lUtHJj= z&+`h@Iqlq!FheE=3islcE64t#q?{9KKw;iBv4ZQK>mS#vENjW|`p5}8dFsWJySux4 zQjrOrh^2yuQhMH6F%oaY2D1D9c;@jfNS1yt=fV*ncFM0O& z621%DhClI;Zml`FNMXv(%jjj(N6khn?v|C8XTWs}d#f*_ydZO>t#9s1QAk{P(bwDD zA|iV5Kne0BL0xV2+~3i_B%_drH*ITPwdd;9t6yK2cwufHl3u>N$^d^E{MQ`h(Si4V ztf65#+s}M`b{0PZZpg~Z&sXNUDo@D`kak2v=6Bwyp@DY@;5sN=Y7?1mlUcjw8|xb# z9nBRdpme}`*`+6eyQ1Ur%O{@4%Sac_&*q0M1z&HYZOd>t9JE|3eNo0*;SwycLPA4Nc$`0GAZ=1ok^vTw_Do%!%doV;6*F=(EhEE? z)4JAx{ym;Z2PHt;m1SkkvlFFwexyEH}GWv7?%ElX8iK8+lX1l8i=}+Ca(U zBcO!C917FEeRdCmT+3u@2M8?bTP#N;aFB41UO3MuQ)m5DQjk}?_4k136ACJ-OmXoCXy!VV`(S>KGx)4SO7?;yi7~t^(?a42#q9djNwsLX7m2$;J3O}n7+JVMG+-+VpRxF=Ht*{os1ic$@o`G0kg4Et>v6qb=*<+)*2#UIDZ({Z=o3#&xq!$%Q+Xw zSMuYv`sWU03pp%ILW11%b#y22M@I|msn)?CzLBWLL`R22#Zup(qq}|`@M;-qqe6=8nQ+YYMkJ zvQ}HtS@@)lk5())!Ohj!o2B-;cFOrF1J9ppuTMRqr=wdJdB43q3-&9&E))(|c2Slz zF;R6uz0-|yx^e}Z_6*&7&x5^{pP8ABnYsDq&EcUbuLU_ti4+I!?=OvbdHVO{!^mzp zJ$^#&CR~&`K3++M3l9&F>n?{$@>m`RakICL(AnrtjEm%*3yld4jaaTSo-cNOL<{VH zr_EX``JhUwfUNpm^1KQV^Q^6}qdF9nmE?lHNw?wEhlWbRNsVK{Q5hCbPC>=&XOMTp z&Bj4KfHrC)k;=LH3K6k>m1`&jb&^I@c(Q=H(j^3=)XFBeTPeDA{ra6&>AZ`Xo|^AZf^DIxi5?vkaUy6!+roJTW!v5aGf>fo##N@LYoK4z zM{(=2yZDm>WJ=2K+@&jp^zm6)t7D(Y);1lCE_hZ6&p%HgT3@Go^{RksWd$35`3ecl z@zF(+1Z#$r3Yjol`=1bmTm7ZtrDwU~v4vkyA8+pkukC3QLlK5eeEbBDe+vZ&fvwqKiq z*KwA;Ll|`-!uTm5`pGC(WeQ!1OK=Xx>uo{n6P<$@D!(222L*MYx*~mHS46%)un3d%6w8;n+Cq$Re3Bzub31olaBQr9#x|kX(WcMR;y2AXoSM!~ z8V^}b;v=_lkGXzlXh>3q9-~_aA4}IT=&Mf19AOhPk|I5Ibi(&6HQc|8rnub{l>US? z93N-mVtt8P3{)XrSaTa-c~eYXYX#F%7`&s>(3lpeOM*J}@vHJ!JM@lCeQvOs!*myR zu9E`dryn~$H^LPTlF4EXt({jPGu6sBsBLO)bz^X@V9R;+Sub#y zvzInx=JV$`=k?x-{JbhP(*`0j0aml2j)g_dv4H64TmBL(Nc9tya>oKOpKx{8;?nwh z)D?s)XGFNkl$YD7>pMh!{bLRUch4&)Spjf!5Vhc#AMg|HxmdLQJ6~xD5Mr^gu$WdF zk-53cNI9**DzqPabLkZ6v_5%HD<#+vCP*jbsa7b!M?^-_zFFsOMKkBLd)*~DiadG71 z0;)3~Rz6SL?l0`HuP12|>7+QOC>mSIG$!=uAq|2NzSblgoG;C(T_|(P6d8I^O-`;* z8zS&QPtXHLw5?2wG{k#G)4tndEpTvBstE*v$hp=o2hn^+fq(N3_62hh8xTBvr zU_n#bY>Bf`9xZNVx^+D%JRviq>`U6(<*)ZdBTT>*16y0>;!N7faeN*}`0OyDi&!5(;T~R5s8ZXgbkAMG) z_$1fH#xh-jFLkl<_JjHNdsa@xjF;cdUmMeo7oj9OTV5%7&DvBdy-7dpjO^ko z>|l9QbN+xawsw%*O#F^twnWC@{k|b$84@)UlSsbDp^7#Wg|g6U*m>Y@)<&`X$vZrJ z{$-It;3+jVZNHy>o8(t+`J$)UGz{ljSer0!n*_-!!FAdsBqV8R>C3BJ9Gtst6d#9k z`u*SLaI&f?RZnhqZ#>IGN?PKXdB{s#bd$ zX_o69&q435tSQmGX*0~v&);OY)$6r6PsjY#8$Y(>v?L>XdD+~HntFkLgfEonkGyl4 z!6e1=kF*+56euD^7~9C}9qRD%d;C%xYztRD4sy0FR9nos>qmLY2Za?ezNqAtjf7)X zX>u~u^K2aK!5t}%Wop`H=H{GVlDaOX@w(a`bfb}s<9jtQ(KdZfi~v91>S-oEKa9ow zU1r!sj9-y;Rcz(ZuX>$QgC0q?JZ)7^>0nE8kRo z8V~mHZmYBy$-G;1IIxgq905+5s33Y_!`x4eC-GOyd@*t6AN^zIrbtB@?9{at;eN6j zQLJH}QSC;GBtc4$p`2EYy^|u-3k=&Gd*^!3A67-3g?QYdj5|j7cy6?z=;%^38~#;z ze}Dso#;HBpeUa(9~?I3AaHsV;!NbZn{#SR}T&1C0elcM?% zJ@J4pzm0+%tVO*4t+fp?V%=J+OsQPLiJGLJDcXsWC4iHXWglU9U&oF zzhL?S!--CI#;#%AGVA_{GUtcdmBxKx%_+o9!v&TLgEA7iuo4yqAh3mNrRTMkt2|;0oBSAJ~l`{9#Rov_K_)imAtZ-;X>EO7z3e!FI1VENI z(K&j!v}nANJ(7}vaJV&JJUG@leovjRr20g|OoZE_esIc7@foZC+qE3AOQ6xgU3tR4 zu!_2O#L@aVpYeJu=)Rm0bDWPBd`U&Mg84XnZ=|t_@xuPdm_tgn8sMvaVQehjzx?*1 zpqy##@Xg%5_Ob2ojPz(m)qXm!xsk!)_O!1qtDdr%8<3T&8N9r^7JPl>VvobDZP1mH z6(ozNXZ<3qik00ueBYhZEz1`c?hyJBtlh~LU>)7vSl8|YN!z>Odf<5M*p*s zm8q!g)@_t;5ALcTEAYxD;SNrEl)2b;HIb%f2ea|v@v<}x#5m|$f9sRe*3GV%yTtN}2BO3fM(K_}O-VSWoR-KQ`17BnI= z^1yiYdKse4ySVi@k#nWGyVo7O<1+Gs80&j{IEi-ImMjqXTGMrLQiIL404A6@Zht*I$c1_YdUbB1;`E};5Su7)H zpCF8kT3BRua1Udw6o$*_d$1guj*oGz)Vk=Yls2PJauwQ4gSchxN4#O97z4$1Rp-1b zWovDQ^0x#ZJu-HlbmR=@8>u9dd$o2Ti_tu1X@%L1ye8mX*)i6eq1D}2tZKnhPX7qD zpCJQbw(8Rkn!J<|5TMw?*m_*$@eHc!=HRq4V1xe<_oZR)!Ag;cXr~i|lsWjdqDGwk zsv?@pnH0ly80d6PpH2Q@n%+q*t4A*Vi;5zL#Q|OSxO#_17w;*$MTPbSR#H(1ow(Ro z#j%d7d{u;*I~XSu_g*PUsTg0Fnj(+;Os}CsJ!-7>dkxuL(Bk3=bP~VFL@wev|Fz=P zysznKf7`ai-Qabn$tLu{1MAX0yV-jTw(1M3u+`}SA5)Xdgie2l&Sbx`+CP^Q$4F|{ z@DS6dGLm%zaG9O{oS-01#Ov?8c-hTg@FqQdV)*(MMr5T(`dnZME+*siqVLDymw#<%iz?ksPdAEz*fs>_Lm zl@;QCd;W;j)2D6StF)-%5u6({vM|;_nxv*lv&LFb%=_(SX)|TNP#DGfWQ}@8A6XBr zkY^LJJ8X7^#874F`}ZPxcnPiZ*ykc`G#wTNl|gxo;#U zCUE?HWXcem71mEQJVomKJWskn`(9aTjT%5zMH355KdD+>wNBKBO^Xh1VrZtMF^<8D zyiby!Rix)&;`%;GG&ZR9oSS2hqhC)5zsgO^ATT~MiO>aD)pNLEa%o;SxU>RM!$By-<49ZVXKa1-|Tkd{i={U zl}BT*tE1!YF0zE_f1{D_VA<1`0GMnKHoy2iEDoDXC*ln%RMA)L?}$mo4-RJQQny=Jf{(bPpJih%#3%i^ca+1ac8sH*%8l?S^^rk^=vXEerez`(lAIMT<9A~X zj)tzTyE<49A`Y628UzDO(2EpEe|)Vw6}=H{m`ny zPQB5!jrj})I;`f2LygWGF{1Ri#q8Y^*e0OAP* zf$$)xx3;U4T@F4T-EDLjr|d#6y@wuG3U_|WB@Uc(e;b=oT~d~`;m!eZqm$JgU3RE* zuj%aDIZ$~En;uVzN#mpC!+4OM&|McBrzy!W`%Y!JS4KRaA1+Fm`!0oRL+Gl*-^dCY z4RX+PU{Y1PAU*rIqL%z%*Dl)5LU}}l-QwJ@!{oiBtA7O(mk+=PI)=3CQy#cH@s)2i zMXEV8_3KUN@jkIoL-3Dv=jBaL8*D16UB7-E>1-{aKk$AkB26`*gjX&e*<6)gs&QC1 zZ}a{fX#gdKE2;geor!{YE(WC@gY>&edqyWcB2HxXS~(mYBW(HalWAufz&j?vu6YcD+I@|jDold2WF?e zJxfS5%6nBwCLPN)$11@GeSDv{G?paDGHfniyEQB!u;BT_iS(7HeEW4VBA@)rM9!s` zUvT_p{IYv^xNl2kGoQ+B=#v%u<+QzpX0sl-^lS&k%RL&odUwRt)rXiVA-gzbp~UrK z1t~4@KAgNG^+PA7^u;{x@yj@4 zh?mrz=xmg)6|*`%`7qL1pN~7VQs3FuKKm!qVc&SSs!5NUh*4fHU0*wvyr_sLGW+>7 z@|AOof^_lfxK415`E+~Q!(BU2>j+p44-Q5dRGF_g9Q=UjDRL4hBh&J=5Ts{$J5Y){ zUsEq3I#71wC8`}DG37=;x1(db(H+s?qE8M%899Z)^HviDR2K$33L!@3uA_*J)am)r zRqOVYaI`Tfg!n@{GY6Xc&27887Zqv3!sCAncDYe2SRvMpy0u{&VP_YIdd{K9#AvqF z8=7+H=Jo>}b7rdLWUHPjD74*06gd}IXVHt8UXz3?hnwsx_GD6ZB~@0PI)V!P@-5I0 z;OQUO^$)m23a!lpWopW__QBQVvW?BnBs{ENFx~~u4SWlUo648Y*_fNh-+dY5>@CM| zNG2PUMw^4iA^ICb>%~nM=95tEeOg zMF0bwmvf*~Ed1HD<6Y+T<+LfW@g%!KHm)0!bT^i={+#Yp?Dj_V%V&B;bHg3WhyJW< zL{>r$x~dPox|GXnaJe?6GhRh;B;Q5DpB@>7^C`U|KJv_FchMLZ?@LRJi2khCBjIMC zD7=h+cZ|=8sh6&TIn4|ss$DomW8CmLKU+xUhSv>Vc1Pb=i5>K!dRu6}vV5kfhAE+j zckbY@|9$j^ZCoC>C0ER$8=o z*h4qeMv|x|Ph7`SB=Vapj(@;mkWGH`=0NxKWWSE{N@1*3=tiQ%^z~SQ3N@y6)w~ZI zzFtRZX`{t2QMRk+p1|tc7w^Qqv~IjSqUj*IkSH6R=;3V#h1Z^oa(BV*z?c(O8N^+4 z#4^JEIDn0s*~fOCiR?eOdHurj(R0PHJvoKDd?|E`S`O4SQ_=?uIRc5GFpW*5dq{((bO|u125u6LHq&5%q_9WxB ze*l~n!a3E)q6T@&$vav0;=~HQ!n6Ku4#D>(zHiuaxP*8wDo0ackOo0Mf^4rg{K9b8 zzPpp_^*wC2zhrch%35J~QmL*;skKSUQbFH&wVqcV5}B05$9wR>rCKtz)}aJ{q|Lab z3GLLe($%HO{AsBETJqcPi*1DseYOZ@u}){Uu6*s7ZsX=z-ToEiEgZQc{ZtrBM0Ch! zA_@xi;e~$Ann6*w3~62Ce2(Paz{CNb+=;FYmQ59xo~o)zz2L*LnzE`4TiL>hRsm)+}=$K<=*K|-8;*&#AQ`Hr4iXZ6f zd$l&|-xv7w=~r!D+zSssWuq2%(ypxVTbDZ(l;s8jtP&wFNGk^>imS61UiONbWF(sP zg}qROx>av3ZZFVrHn$4eC1rA3RICE>xZ234Zm&mi16gK9dxqYC@L5aR0K;tJ&* z)7Gwh=3Ft!`7r5s7G^#yOqzEQr72?ed5~;UqCsi@3zhicy^iU!EJ3~kgYdAMa&Vi{J5UfNWXyvb2Z~;#EsBXJ z%cCg+VRW(dAuRsefCSCi=j)6kxbehh{=X+3a zUKidbYESVs*GMVfkUmgh9D^RNTe%wVb_UIhk}94SI6EsL-@7yhUc_aL4@8 z!s-py_OC7(3ON3R5m|tD8cU?MxDlI(?Ca#~4v91w3v}I4$?H@nNWYDpvcUeF(~hL) zDa3GbD-o8Bgo%Q``tf;ZuhP(rrpELu$e4}`q!p+rr{Bw+MR1DpE)HqkT4}uXO+{Vw zMJ!W77nj5R`b5K6l&%*B!?=!Z?+_fFDQrmdIqTE^`d<5E!&x$`qkL&3+(th^$$vOU zhbr|gxYK~SButZ;m6c1sP)o!1+tse6DGtesw|SHC))u3YKF>6q+aDg`b*To7)W_`s zPV!t|mE*kNQ96Y>Nq)(q%21BN(ub0XG8;CC7>Be0JIm5t78a>h#yv#(&e*4W*=5}4 zL0z86Zfj!|e*ZQ*yPQr=ng)O-6pnJn7UI`(qK1co>d2zLr>kA3(6wM}oSe9$#$}$T z=wqHvK~7b&3Qy{FvjJ=yKuA9&+zVTAG3l>78o@63wgx3VglFaE$}7GyxDP-*`CTnl zUDlGqv4-T76yAY>G|}4J-1V8+6jQHSrSOvTp6y}HD$M@H;bCN&oVw{}=_~Yd+vVKd zb^2D-Rs247WCaD0w4WjSJ_qP4L|AE$r$Y*2ed(JD(#nFHFk{dMYs~vrZ*=g?;fZhy z>s`||J&b>p>M$tap1;$Zo+z~ybJ&kxL*%eXOZ^@OsDPKB?{A2Y_C08f=#G8MgcOFz zj~YeEi&)^BsTY5jS5SyBy4MP?D+y8?5=zOfPzJi+(!@Hsf;2SclQ6_yKvdeR8o zRU%Rbl|z~Fi2UWZJ3L=V50?h>IhJT?cI2v=$E-RN8ENPg)s#9qJNY@=i(cog{pSeM zJq@9;-#^ly;WK{K6eRTbJ_agbqn}?@dld9Ewi9?gJWt7JMVLTRB_0x8HbP`Ixb;wS^n=bbJykS+{PI zc1JQxa;xNUmyXP?;subK#kAuadEQ52#+zdm>HMLgDn-2a2eTr3QTDNIr5q_?q$Zix zPj)T-dYX?!-<}kTOGqeiT@`;cf!ko)%>un0k35acBJZ|(x7b8lZU8j|1vQH2qmcqN zPAyjl`GGN<#LIB9b18GCj9fD&tRJXF@*|SQaw0|WrX098JF5~LLW7zFUTamW zjaCkf6uR*xOk9FmL2485SmbUY1=|3Z5f3kKa~BygaSW~VUgz^5$en=`LNb-u5Q7{s zVJr^ZGkzpB@4cQrPJTzvh#ArExv>{NA2bqVquPDPYwVV_YF}@7^JKi$I!s6%sws z--Oz%o0=-_TFZB|enLSP#6zTOFly;4b{R4XIGx*iJl^Ws+V+x6D8BL3rpQ_0uC?(3 zcN0=o6O-g7H+0!=tvL6Rj6sUu z6s}_&ZUfR(Md!8&CZfbxd;tfBK_subC%1qn-EC;ih+lz^pPkM@p z;>1%WOIkHD3@WQ~#c%H0MUn-|1ce)@B^#-O%O#;`?Oc23luk_XEvh8_yH!TIx@Yz1 z6PTp9u0#CFJo-O-lhzJ;(FZ$drJ|*kwli3{g!tp{`>Q08qN;+XGn-_C=m%ZzBRV#X z$Ci%|M?MQ_cx-R5UBB_BS^lV_Dlsv3B%!As3)E1xWp~Gg4nV3p$Z&KHudxv<_)O9A zPn+=N<)zJ(9uX{Z-N zN?vQ3IGO;+i=tHfa26|kL`u{RrfunWtGoURYDOu!+3?HZP; zp<#SnauZyGT?%O4Y0NecG2J;lBAmVF=I(A1c#3m=)EQxP;l81sV}a47nqum&L$7BM zFy-yoM61$F-Hzm%0Y8?`IMXU~6No1N-@0)>tS?5HWIVrr0G zG10MAsC9sNZ=Cb3c}7P@sN`YUV`kEa;?_CUt=NSUH`c1Mn4Z9ZeUEX^Tr}FWC`A)vALtl=aj3Y@47Qiy53_ZDri zy*=1zD1K>xZeyd^(lR;c??bTS%@tlgL$LRQPSqDKTtJ5u-bi}|s)aoT8Xpra0+qz+ z!bV2Kie-EANbqu*uc|;Zv3ghT&P2WLyJSXc?Z;>-(z`SiGspGsO`HWglRti3NLXHO z!{IX43T8V%s(ESn71S1gelPxS3OYfB?T^p%>xdGz52x7Yk>(W^5%K8Ai3#gewIL0A zAJSX=@V&r%XBXBfTJPiZv9buk#f#(KX!m2;oG2nPvgEIHp<8UC?CiY4a(-S3soCyI zFls8QT&v;eE}&|(`bS@XkG@{%)-8qCrOfbFq12Cy8L38Q42m#)VfUF$)31t7q1>Pl zacje%AI{{xkdTm{N@@avi|6axUcjS2-lV4of=FuM3juwBhX)4w`|}*^ z+#URf+uX*u1Cyn9`%W@{>-Gt*TnvD}8pI$&s zhj%-I2dTJ+QR+Wc#{~PYli)8w3Ty%9=?U?b0X?{zo8^H42sDD6o|(a^(GC`jg07jY zJ^x_rz(cqpQs4F$OZIGB@qBJhZvKWjke{V6H96EAWPJJZqD%L1Md5Qa1%@6VpANCFe2lqzt8_?&& zb9hf(*BD2u#3V3eWW}C!v;x))MKCcu4`y5IB4y7xlx0<9$pPtZn(A2?*nYUfB zMIl6q=H{~FinXNA>Xb8E5RRgMqJKI}65!oid2+k&lw%W zHIYf=%&C4w2`Sxol<#bLub@h^#OPE~61^<#bGSGkMA#Ij{N%}#&Lv9DGDnrxj`ty< zB%~zI1%-rlv|{K*{SLk@5((4N(Hwp*A7?Ab6LDT0BR-h=FB3uN~Qf@|LSYiKLhM+;lu< z{5W2+*6Z|}z=Y#%L+>L=vb<&!8wfcqB^(}cRz&aayKZ=vmJ$7D)P6+mk*s+Dq*bnq zk*@{!2S@Q8|L@+$JK>h~>cb`nEvg;kWnNXsh`31HHRIO9HLvg9_NG|NcYZBp1LEk@ z+=3GKvg~1^@RG@c3HMo~0bg0OLwHEA3TN{qY^@D_h9*ONFF05r?4z0w_qJDcgQ@Pm zPaIX;V>}%tJ9YmCO~8I}GQ{q7XuN&B$#ZW9|hZl>rj&o!2t2hqFaRZ7Kn+!O^29{>_`qdx?Hu&1M+=k1|8)x?{eJqG}}8`G)B4Ry<+`kWX`%uPn(8@9L41r$Xt+3WOKF~OXj~V z&Ztqm6??WHARB`k(^4PT)3*r^1MrY{?}Ld;L&f=Tr*zh7t3H9+Lk#U@)U2$G3}Bd| zhr{#=cV(FB&o(>Oly`ZE7Hx((V--xDo_i9_}A^37}}wbRqZNsqiKT??ZNU1CvfNu$pTmpnr z_j;b!TJA&v+`Hlo*^{ElD80VGnC!0ymyxMwE^Alp2n$!Ju%DquidTTl%DY&+tW^_q?jE-T~t!Fwr;Qr;$m@0l6 zh?lpvZbp?tT@LnJ`j!ktbYQY<@K(`t^Hbrc`;ri}*%m!!0DTZ&;297&-T$4U1KDH5 z(o1~xYSHPUh4?Ba(DCfl5HqVmcX#5fWzAnp<&L;e6Ei$~^{Ch#w&-YaKYu8Pc+z`+ zRIKv)JWn!vw#ZryF7Z*-j8PmuuvH_<=>6A}mnO&dC42Mv@eaDhUvLv}e0?%{R~j?h ztDjp#=(n4qrU#ce+M1;En&kzbuIi_eN_-L`6>Gv|x`~|H zzczR0mr3x!7!o{Y*r*{O)+F27zGlR%(N>Ld-0Y;Ztg^9Z;2H%bE%h}a>>*!7VKz}V z>n%V8=x$rVMvT`$PziL&Icy*Eph(VKbe2ynTz&lwRgHe_E?L*<={uQlwVKnC7=;j( z-f_-c+8nxZdd#4d|Fk~dC&9pU6$bgRGsr#usg3pO3gZHR7&OVTWyQT$QR(p>)G##h zPHEqx8d<)!VUu0h(()Dg(p-k=&Nj^3sNI~Gnt@^BC_dP$MyHiw4IGJA{g6R3g(c&oO()&-Agz8=kSEjr#}c6cK`g zw^<7ZdOjb+5#nCvh{nCjgpk<`s6(x1nldM|BLwUU+^MaMDf^OiD_69TfHl8Cfngtzc4M66R8tD`<6_<@Tc>xM@lXqxVtfjz`W&-BjIM z=oL)&hkN6te9Y!tkCfi3^aoxpXzq4j^W8a;-dyp=FK#6e_7}7=H?iO!%IO9*xs6x| z*D!wz+s#>KT+rOQC1&GtWKSYR9|uS8B?b%U3)GT={xM{vins5Ii1bq$s*2cWVuoS% zhnqjWPcLW*vACUE(!7ovpU<-cf6l73hesWy9E9`1g9pGNi($EMSi!Ts8#;#oTdJ=Z z*Ybkx8E!^e9OBlRcYHRnUZCWBRkBP}LL!Yg0!tAtDNarFy!NEqf4mf*RK4wEsJHKJ zd~#ZFx~ar~-`A#&()S8~1yE34Stvu?de&li`*bKCU`^t16DHDH z$L(7(7gFJ^Z{TR_dAzacPTLV`9)0?2ZR>o!dX7h&6Z#!yRmb|SAAN!F=x{DQD0yxA z^R#5_H`&Iehh})|wK|+Ku*9WHzF_#N2jV+;&CsIOXITzsa$AI2NN!T^=^Ehz6Rb+{YCsNzI>ITwOUl zWkjdK$GrP;`8A93!J~|8#5{&HtMOhTrXPIn+16^`s-&VB%9CeY^0?#mT&p6a*{DqL z+l~7>t%xrn6tw<9LI%l0eM(5NYaXv!6>6LL z{7g81X!-=*mF)4DYISHcvU#1TF-GOBLc4scmcYPd->BB21b>RDX?Zn{WP+1xxa4az zA>pB`DQ=Y>AyA6njhn>Z?0by!+b(pvkDh=@V@_SdiDlDalY^@hR|DQv#c{%{;OZ!Sti zP_QD^dJjLQKeNYppz3WE&r`r@#K;J`hU?7cTd&zV+S$viD4!fvO;mbq=)}U4GA9AL5*!I(p3_+&H3k$+zI7E>?S#L3~}exG3+_e2#?ghIx9` zU`Dh%a-7~Y_)Fk0e^hZ;lC(r|t9%FwItXi+oE-1ZI(l52{Ff{f$%XI(>&?iqe()(;Pa+G+k zkNXv0*Vu#=!Kupn2XZlV^;2kqO5(7E{^2QjJGujf5?(nDuxhhDJ8D&q|XJk*dr zpF-7Jf6!`1re+Cek_^cSx#n2LdG+uhRMU7L8(o5Mlw=T9s`sEcw>S( z89qL+U?%akJ2P1wJB8tvH!2_aZEtQO+799_O{^W^+0F`XnMK%1a0xDx@Ol*=XNe9N zXqNAlldbuzaHc1e`YhrZj)n0igoKS@?Ge(_fUA{%O?}s?>I8I2H1=yxMsVatIu{Ml ziJlHc#jkq35Wu>g9iP%Ns89FF z?fJ~7oB?gLZPsC@%$dcCUUtHk=C03{ut|PaEk7z7dpkT-`uV~}*U4;O$4Uo7oA;4- zvdH#F*LSngsC)eU$Yc|H=MKgsUwQZ>Z2sh0+1ohnIW=C1%_!-!C$@LaWf~v!e~+3x zYVfZz5qFsDdHMCU>v*4nOnOUvEkHXqfm6EbY+Fi5yy^7t8?W?kW!U2`roPEh@8tsj zALq*-$GZY1cG=m*NTy7?GZ}x0jeX6-!3fi?qzI;l)wbq&yp4zTLMG$k?02RnuPW3V zZdy8O8jWB3cogxkq@lNow|6{(@jou^gx8)@hx-&)iCZ!!cMj4jm=)?zH*z~WgNL(+ zm5PXSX>)nB;hs$&44j@gsTvro8n`+7pB->oiC6iqXwuP;$HIAd+gDaskoGxz7aBSn zf#$p5Dsl17j(C$or%KyVx1lsgpkz?8$3onsYK5PXmYs3q=h=$c*s$0`%;89e=&Bh5 z`Hfgaa(pDbZ*ZVb1Jb9bE{e4!qPEFC@GN_~{=S%HWryVFx+YLgv+l^rYi}>x-8~`n zLFlbKrl6Wn_*j4}d)z_)CiHuCmTgvKa`qrK12tO1UEeP{8RREhb9h_B5#j>5A=Qd( z@MnGRxlvC>jl_o!S0MD6Je@NY*)kU{lv1_MS}hG2K=C-aUwHwpdwRzI^m6cp*5J^B~%{xAxFGB_Sn^ZSVaSD*1~9VLKwC4fTj0dET!N9smg&1Tr3~ zq5@)|-($aW_lHNeX*VCxMJL(-y#gf5Obm4ketpi1y02df&vD(67>fo(N0njA;(SBH zXaoZIQ~&w%qV7Rg8^N5D%YDK7n1O-v(sHmLT_PmROkrdm$ z)d05i=+c44+wgEDW%(wL1R52K z@r#IL{ru(xFY2!4{WL`#t>g7O3`WL!pM6n$FLjJ#_jqKU8aPZx8BcCGIZ& zns6sDLmVxvWQ>ycfh!#hk->qOjEqbpr>ZJ5w+iay^zR4uW}W}brAwDwtN!&1>Ms4B z0|GsQ|4yO)udmJ3yMI#?e$U7jS8t4R;Hcfz|1cFm_7_|uem|t&8Qt@CLwZ3CDZi)V zU=XXA0jl@ckvHakF`oZV$oQ12gV*9aZcxy32VN5b?PkfZUr$3u2-nP_!Syf`x6>2xaeX$PkRT1f6{Itw>o16{ks=(8m4mXY>Y0lQbr zKD<@V>4iNzp8AejUkqQ%&t3dAX-{8*s~ytLsFp`cN)^uNKiz`GUULn-NEqt2L~<4F z;Jt^`H!ATB75H>A-dAgD&bOI<4oqh=V}N~V@t1fIf7`2JgMGG7hmmE?#yw>^V*M_ z6e_tt=01O-1dDas+m-O2j$!?n%ZW#$}6IQ~ytDR)rb05ZNj}r3}dmVbUL3yQ} zUAoc{MMU_hWOb*lL&KuJP4Z{t;DFF3i3#eY6M?wd*2jQ%X3}f^gyZgl&%yA?_oG>Q zlcF7q79#eq4{p;Z+8?Q|`OXa`rC?KL_xr2d$7d!^??6D#%6mk7v^^s%hE5Vxd{L

    )yMn&CCx8SQxHp?0^e1F8_mPlTwC6mgcKK#5effRSk|W7p_-Q zbh!zK5%U&D7K0nqoj{Vd`SVoO z`vz`m`gP6Yll96Q!D41fCP7Ii+nLxu-d#xcsUACG5gtd-Qc_|@#Xa_)g5H^E2+!>r zi92_;GYp-lDeBMWbXc2d}@?BAqW42C!SUi^6d`DmDSvXf(q^fM^VX4!Oj4zrz zDQo(*#a?j&$GM}vX-bDBEdzs;H&Pa&IW8Fn!hci(;v-MoWItYsoE>kKZW$E#X1Knd z#R#NXpmz4rESrPlP)9y&dP-CqNGc;Tma4ZUJgE+LI^5Bv$V$w}nFhaBlo3W~K&Ky` z$zm~^KHpYgsB0hPelS2$`!P?)=ABI&46bDQ)ag@YzCuw+zz}nG$|+RSu&;8n7?ltg zNl8VSiSO$fH!XVt!zG~JOC4|6M@}dJgGAc$L#T|eyPK+u@q_AqqsZ^Eb4g}$OKd)- z^77r%zD~t?th{#6m6b&XdF8Uv71O91buX{}O-cogn>TOT+Ac?oiSo5b#cFcIB#>{Q z&&t)|^z^6>SM371_WGGB9Y#Y;AT8qCyufogSS>6?z92miJ+j*uCk`Dy}MBY zHxnnTINRf&oBj*@d920L;CJsjyV_!aYT^6osh_J#sk^Js0afxKu6)e%Y*$D;)A;Ow zqD%4ZT~ln+KV|3WP8p+ME27mGWES_4BNEk0Uy}@3+ zi5c|4QJDzh$BMmOwnwC;&emrLAL|;MRBX`yU^{`0p3!qPB?+BGRGxej-#&lpw$7(7 z#|yw1HQs|YURS$D<`8FxD}y_mx|4^f(fi}K11F_+a*1QoZFv$Tde#>S6NyaD>OSc2 zSD7SwZ}M4jEHBWl>-o1~{zx=(b0zV?3J}uJJ{GS;8blqR`orel?wy?EL^aXoHK1rB z#aq={D(B7)FdOKJp7K$Yq`-ZL>0^!0iU)gzwZ?}HYdi}qw^JVMpMco4P8NRM7-TF7`I<-8NRGvP!_`Jw393 zZ(ShnTjnAd53<_4k~v4Rmk9|c(Tk5XwUz^;y5eRvL^TJ#N=qCa^}f&TDRi}VO3TPl z@yPy^dI#15i;nwjAb`RiLbJ3BwQc@Hgpo^6>xrlcG}O{AXH zKYZ@w-$49hwr<|_9<7&@%Xm8U}c>_lSaZ^#xfw>Z#Bs($)&ureuxSwrcgHb+v zobap`6~nlI0H>N0%_iD>UOUINvy%eJhM6*qly5fxo7^9IGMP^mru^sJ&*=08G<==^ z1#TV(5VH!{*~Mp+FF;Y#)zo^3ns;YAywP>Mrt?qLJB^^3N;sTun?}BDzn2}-tlZKY zn9xrL8FFuR{?H4qi!KETsjRmZmKwT_RWH4|XXvCAU2OKueef@s;_P9l&1SJ_-$GXm zXDZV$54UoH9dYeJIwRAVqU~LEoVmY>QgDADCw$b~>vF!o*Xp7oL|);YR#bc$KLi<; z34>HGxdvL=D*rqJoFq+u#GDKaK*>BDo)6eHrKKvDKA~SqK|ZYWD+lh7g}8Cj-K67| z9l9fN**zbM+!>Phbx!0-V@*rubk8vHx}&V#r!`Xuv)@{XoULFMB9aSFEw9zRbY5W4 z%v@`z>df@SJlDcfPHmTM+@@EKRL*~GU#pix(rg>Dv?L*CPJi>}>I!|x+bgA`nO;-M zhH*@U(6x%n*!t+$tth>g157L|HLMQ$c1PE+RQk-uy` z5U96zvv^`e%s~5vykbaqAQl^Ou8l5^0ab0;+7F1cEIL|JQ0QXZbU{nD8^qc^?$+VT z;`28@m=xD`yNM{Cm~a3l8Bbc8Ts~x;F5x~ivj`inj-P|SI(qqttk%6%jF|Q3!@lz5 zM_Hc-LtU%j=eea)mDdK4Dw*%Afyoy)xyebHPQ{ahe-yx7Z>He!QH9Fu$a^fXXPxWL z7}VlNf}Bh>VgB7J+JW-c2BVnp;j-}((T(hGJ&5?ly-~@&yTsTJ)?(D_;y7)p1~)Hcz!+? zy(b_J832w!aLbx#Bi`I{vC{`2IiNy-LhJr`wG=!MjFE6&X2(a?SL0CK-6K;x{rHEV zl6Vxnr>|>V<>Ke;u5(#Eo$3KxZ44cE{F>G|b{96eK^dFG#1 z_wbbsJerx8Zm# zlDXsCWw#+>a`!Sw+flz8fv-Ki`TQeR$wBB$$p!y*)t@i zrI5nHGFRHZRg_iXDYWGP&yo3$WQt&_Q5HB90kr90YE){mW^6Y2b4~6E)7jPoA>znu zk4IC_a2N`5D^ybQ-jY9k=Z%0JE&4)JaRm&atuT{9sn+juCCRxD2k zdvx?R%cwDjwAaDQ=@V&h7l(;w24P`-?}#Qh-6Q)ia~no%W5XSF2Rn<^w8vnE4v#HM zwC3_14Vk1dwWk|c;_-1ATes=ydKQux#&8^Whh+HKPSMX3g5X@3sab*9gC!0cnj|SW z4K>5_e9@6du;y`H*f$~Fnf2y{=+K5$mCy>^dw%;(Yl>Pn5DjDJgPF;rg}SMVmh17O z@jr@mQPQ5()!F%rn$kY&&v2J;5Mf->J=nMKIHua2_yWnYGhPjr7TJz^EOz*@i{J3x z!;YrYlgcIApuJ>7ycfe!8_OE5L8kM9`1EK}SYp7UF4%y%W)o?~>gS`Va#+x*#SWUm5U+0DBwdjP%j5$@WH_qqlcX#g#N%ITz z4&D&0a+ds&R}~HsuAR*nfA6M%4VFGJdUO)AzYqXcocpdztWLt(B0g>!)St>;wZF=X zUOtRHY!kB3ETCI>`0#a+^Rul@GZxakf;D9J(lSitq36z}OQ6;C$K&rCUX4< zF5eRrf#G0P$5~K&b6IUIky*Kp*Nuk`2fvauQ(oV`6#m?|fDY<^ZCNMEdyRlJLA1LE zm(W_6o&Q^LH6`{tL0R!NT05roC!~;opyK@9uKJkTTMpX8P z4}bpX%r;l;^8XgB0TnAqAb;1^gZ$SosQVwi^R8%L(F3raG)Y)dt(cfN$T$AF zx`1RJ*q8N;9ULC`O_=+0OF5Sn<^1Aw5`dhZsoBr7<3}$)0Gnl?lXR;t?{W?pN?LXJ zwTBX1B>jP23`#97FW3G36E8#l`{(~V4fH0oh5^*$dl|0Xz9eU*Yh`5xNPIwz{d00b zF7WD)vNC`yQi0w)S_Vs>UmXKeJWiM6U+G8@@C_!qyPxQ~yZigsjyr_E4~b?05d+Ae zf%+uKpy~X2GXF`HJylUr0X##JP!&rB508ByfdjUc^lDq&=HZ(+FJGSf*LQmLH1Neh zzXVU^bs&TR&={Q8|Q2p)KNHqn`l{>%l`02Ls6m5V+cP~QIipl{ya z6`OSuak(w_@5ws%dVN#u`VBEJgCoMjfB*9 zw56t|Zf(I_EAwkqen0YauYlB#gOB|=qz3`22up~O&dyHY-}VlWWMRp^C2dmB-QPdf z+xy?&fO=?pW_q^C+tc6wtflY!uM>#i3LOY&K>Mt!;$luQvDPCs3&5=7suBb=(ch!0 zdjQ0L01yn|D7-)f%Foez!?Jj|9&lB~#l@>YHtyFy{qqHwtrVK8fe<;TI)SkXtqlbJF@}N*qDn_=3&1@b~ZEhX;p-2Wvif0C-^B z-1)%kjZ)YiiTvxkK4<#>#Hwy_;gh33itJoXgh0UBTguUU67zM3ZOpQ21rraTq7Y}) zeh3OV4(mgL7Ag~HbY`-rD%MuN#`ckpWybX+pQSjklmjcj_~K)ShHk#Y{)>`2^$^5> zY1jPmu`22j5e#iC$KpP-A5oZC9%HQ^&8jrNTcL6@iFiT1#@%j|hK`PlZ$h&;n1%V` zc#-E!KR!X+L<86tJ8Ca!Q_B=#fvHL9LF6jXN(WwQY3jQUG|9w2np;fB%00s2K+A=k z9F#A^gthtu^ti*?+FGqsplK#kMm5cZBN}LOmpreK&?DUp z0HN&=B7yFjs{S>OwL4jn-ulvs&^F15)-5FW@TK3|=12H`#*U%PrQ2n9tPOs+` zQr|yd?YieOI=mh9ww@!NJ^SqXvOy{cbnn?)m0sXb7T|ih#`m|mn81l1)C8VVFWN+E zDyD#5ck4Z7gC6e)HL~kq zP|YFpuYGKfL^_MZ-T#TL!i_;6NWdKwk$2H(<(1FO>S9{7_%uK z9=-=K4Gmb)mK;qQQ0@m?z`@o7V5NH23)A0&)4IEdKE@^S7)F(&0ZA2f1ljofXw$8M zi3x|(wdHCEQcQL8GC*8!EzlZTxkhbc19sjAUmx_c8Uqh})6H;lk9cE!;6DA)>;Vdy zf2KbSpxm%9a_YFKm5}7z9B4aQj~jqSH!Ay`F7vf~esv!7Fe%OFW)&0T=GG3)df(a# zK&Z>0up1I`#aq_ZHFO!Y%lXhm4C;ac0=*Ozafok}RV7VQHxiqN-+AgWsZhSy)-+eR0>7 z0_ENWu}Fce#s{d!{S*BYF_l)K$1dPbWXdzB04kq!=>FN+p^72E$3>wIiE3M?jv{(8 z72r%pQ7V9ec(vmyutmVqv#H+&hjui}58~3k$wEFf0Ai~>CObdBc=uL+vA1F%h$nDU z&Bj17+DtMu(re%aUT^%p+qaE%V*Qy`c2`#!D!=j?qs&RCmcKVPwo=@>ZTxU{=etL$IsB!as}oV8-L_E-PDM^tmWAF|1PwhohLtF#tGd zMVN+G+SXL_xy6+gsDlll=kcft5d&OFKww}?P+QDRCMdxU@=p==COAwL4cJms6C*yBaP!pNXn1aF4&cHY z*vLnhP*ZIL#eI=a|C-MLO=YB5LAtB<)v*M-{1dhqH8mw6|Dw^AUeH)$(TatakJ!0L z0Jw`Ex~g>S+8dhFZ)Ij>-F6tNpOb=$F%$pkY`~G5FGnyjK1mp)|CP!E6>A>^9I!X<13vvb|k0Z!$C= z(Jh}==(@!!a4D5_UWxxgr5}UuF_Dm_Um`1RnNpaBYiE0V74RK7^891|R07Xl)NeC- zrxeXd?TpA{zFVsEnCAs`<}>nSk7f9WRQr?C%F6H2z)!Lr%Ib)6SfQz`-+@&@VNX1< z0$q~Q5)!NNbeoYeZSeUDua{6*NAozd5-Gi?*b!e8?$3NZG}mB}uP6d`$b35rrzW)% zBKpzI`y03L%C1M{a@e-@OdIQ0GMco^%FZVyA}usN=!~Le1T&lYRNv_0`TNrA~tb9}^RCzPTK_hgF_4UMCh;iqS?<pbZ4VO1^6Gniz2hmnPRMeflf{NR#WO|9fXwCl{4JK~@7ixW6K zEHX;$?Ch?V52x8^_?f2&zAgi9sv(mV+g_5@)`1n+h@O(c`>jS41am<9+B4YMO4KjZ z$=aBuB`QDP|AJ=e4tt<^orXN%^R&0OFWjXbN6T8EZrM+7<^c8zsa#MA6FzoNC|5^FP!JJT z2{aU5+dXgBuh=-~Ams-P3PGPJfz_-Qxei0Ud^f_InZaG{Q_8bDf!eoz6% zz7rv@z*bbGiCHhQ?%<&BR%F4`(#$S5Uvu7dbG?+@!Oe|P_f#omDOqrFA^n4tRqW`F zC{^oM{mN&R{bPAtL3djR9_V}~ZLtKAENwhZdZ;mCZRe^|ESK2x%@S9tGP{YaD5Y#= za6W-%fqEZRCLY|_-QCI7U&jlwx6uV1(q7PrT17gv7`S*b+XU4JK7@5p(@~4kM0ze1 z(b@XGW#(O6p&d0)Qp!bS|L{rqRt7MOt0Q@0V3zrKy(7Qx6}+^SOw-y4bT>TRTL!jq z%txHGg`FQcTW~5>ZcE+|I&DC3cvknq=w1?83k)8)^(`+ zF!hw^!>m`Vv$-#6IEe=*dwOayxI)ItC)^;vQ*dRX#sW%bqT(e9=>FY%ePfytW@)Dh@y?%*{345TKf?MoX zB?sBLN^5{3dcLz35-D&;$PU)kCsB||^!IB1at8<~uI*mYoT!0jE?VC1z(hU+6ktY4 zH=p`*lgRT#ny#D7Sd$-w&=w3Jg!;buNeE@4Q#9NHP~I9{Yao!=T>A11RiN+}P@se{ zNDt4f_R>&LtnhUw!@d)xu8~u+sI&u!r|^ToJTA{~e{h)TOjNDCkWB#!T~yZxW;mM~ zRomCft?%x4t&*GntU;9I#M{bO?SicjFaIfRdm0#6<3f#Y0@Y~b(xPkopJ>n~P>hnZ zMo&jqw}ABypbX!luUbKYO*R~F%DxyarQf^i{{xViJZt+dbVuSDz*q@pZ^Z3kQ=62P zfrN(C*AoQyfUh|j9%7`GQH}xTTro;bF_u@}6N zX(eNlcaXA*Vilq9sNE5b!U;toZTxWWp*Q31y%~3vzr2K&dx>w^F(y8-#?qB-ZTR8@zmPjV-UEF7Z{z+a zHNbTn`Bbkm=|T`GqtMwor^4l4m8x?6%eQ{!0^FLZqlp`hRyIFsApZc%w5tM*x|Tho zJX{6B9?v{L8`jsCg7!-!|5HGyd%w>ABrXZ=WvgH#Y-eppLrop~LXO6mrD&wurU5{{ zYgkWs;XL%A3!MkuD;gt)J2$<057&A!%^RmF9v?+BqdW?nu+QS$J!}wPSVH>_;;_qi zh5TgY@Oft7;%?ZquGPspcNnMr*ou-o(JSPu$FR^K!iI0nnT;+Y!Yrl!rA&}Y5*t*} z16Mu}}8^dI_7;ZtH*qwp2_`fIebOu{YuhapLy+|GR*gR*6tGlkbGQL{P&GVY2#i`2#_UV`C$XWr$~Q|-?BMFFcA z_<@K@294ANJ!vM3=#Q&)_Mr$2p<+3vB_P81{liy?~*+b*5j8d2=~V zcn62*F|CD>T$n1PcP48+ZCCK1mfpS1-{DRV?jg)_gC`=ms6i&9eqz@LJQ4?K_rj~@ z3cG0LBQco!zJ47|u@VLykLPv-|H%;PfJ;H^$Sa>|t-==CG*5MdUiY<;+qjbc=v+qQ z8;2B+#iBYBdeWScC>Eiyg%VvTDcWX7Ug{AB3M2I;df!b6v)MICgyw;5#Yq4f`yYQ_@SnDbWZE2@B&fLWyt-xz>w$ zd?RCJ0Btjhc!b%$n-R2+AV#zSEy34o!toO`s!6HkH2>@!D&gLF(Y2~QR1*m{Se+iT(GnM&~A z#LtQ`AmsF{6y1dS%Dg^cXy7{V>j0 z<5uOBXnh~H_U!pRMDU^)_V{gFpz&K`5yTq)Lf`(lhfEII6fACR2RG1v$Iv5c>5F}- zlW)w)$hi~@XU*w*=E4QFL0+3(*PSHXa+OG>r^BMrhcURTHSGn%>p7Jwzmw>=To4wI z+Bpl|jSna&E$uLaf@qq7*T!yBVgxh{Vc?{-yexk5SaZS2D#%MrFoi-Km$19M9P*km zilekF>Q2A<6ErW|aRT!^V1hY|iV(u5CvyU}ZxR5Agq?l(>X19P$ zj&$-!3(rupKH3)$xhLX*Omhi@J~akdushP521G6(u8ND2Qjkhwbtdu1yn@<<%rwaR zhley(wQG80zfM4|uCiNF^wUSgq(h6`ca(86+!Uo=?T)qs0v25}>>v5wgKUVezBG%d zXJ6yaoNndA*}67U-Br>ez`QVa#7@d6bd1{co~(neBA`2(+scqbhAD%aW-PLfAz6QO zpZ|4HtLw-3C~oN*U*Gx87!SG4(}A&MDCbqx&{7(G6ukvPu*D%M!T93=6 zl-Bc(dJq9!B@TFrMzOGD2SoB0whuOKtD8%nHmChkkgCdW2EBDF397w2nBF%?L*%Hq zm@VFN!a!2z|6%Ms zKx!yL2%S(v=z#!%(DJT*w)^b!-rxOj^T97GhPmb{bIdWG@qaFQiWVYcE2JWs$Gb-# z-zF!IRI5Hnd;5@!OAYJl;sH>lP@^*@BR@}@n(iYqLbKhKMd4B=f^7R!^(kh3`wTw=y!)g4~qt7KKktAoaX)r^1ZLqt% zVqyD1{%l=xZOK3t#qn_hecMd*%2@nU@380o^p;bO{dTR0kUKAda)L;)Q4sW;n=%O?W0vKFV*kFqw&-xz4h+%7ImTtvr+NC-lD9 z1ew7JY%ylr)Jwb8Q{N!>A6lA~BKx$3w&Ob`W8|R8Oy8OGlK-1T@d6Tx>TGdjH#6oR zr+%hXHWE=$q~ZJ+&nwe=pNEmrcnq3@^vsL?+Wk6M4M{%P5;32zZ{WlRbdM{UyD=*6 zIX7wT&@QcGM^_x)Qrx;VzLwyr245y`6o{-g_w6o{9^@50-rm|8dCgsdy&FVbVpu?( z$s?U@@mypE@olUvm{xyWT)w0-odVgWa7$fuivXqOL4CG_&27YPT9})!z6dd&Zv1mUe(@57~I2zi6O>{&BZUtE#GU_CKAz zuCBGgxSX{#G>BEb>1;9;vv0SR?T)v}5;MugGhHegjB8k#&Ob2>=k*M^o(w=f@)-y8 zm{xp@6u%Zl$DPW3Zc*!>@1P8@Z!bd%fRDjsSR@oi3 zB=ugn$WR0qB?Cha{h3nmLafYd$-K1lW;nY~^sV%a#N3a zdVOF0?#t+f%V+nog$>u;nx}V{meRkK_1-_8mBKz^$!ESkx$@}q$_iEVpX@+_(o)yO z$W8CA5iav<@b-|PJ>h92K3|#ouo10X${MZbV&NyIv{Jd-W0Amm43ZEEWXX;kXc2?& zNvBL`!;WvRBf8AcNl^H;=IWVNHs!SZ;VLD@{BTS$vv2vJMs!;Op zC5eywFM!9|YjcenmxBkrv~v%V6H~rPyw~og&TzadYth(v`^}~Ayo}~IpizViX&sY1 zsH4FzE!XOjg6&{FqD0Y(bfd&j+BB)b*-x7`v%+FQ=E={8N>lK%u}ML)ba3cX!yNrK z%Ym0Nf67i|kPoP`8i9n7L|K@TH(*aQnOSM2wZbplsykDkz|-$W=F(b|@{o5ZW8VvK zUjUkMhRxyr)wBk3N5MggK-Oy9y!(jraB()<$R|gd&DX(}ah%JcT~ZM}NJX_$Xg_{W z4M`k?BJW9zS&mlCW%kxGZo8RXmFqG+TUcnowSRxw?dsLHL?!hmMsne((R5sK@bY*> z`h)9s7OtuNgaPU+#q=r)N;N#8PK?jSi?be%VE{+IHMt z>?s!nr>Na=PAQd)U7U5!IH=%+gWn(93ZtjiH?~!JhHNdWDeYZG>ffmD?d`?I-A&wx z#bnG6Mx6hupwN||HQJ7PNR7D>&E9{9l}!Y8$JsRAU;MDMpTq8IC`u>qz?V!wT4}{p zVbAvI?+VgP574*wK|@nxZEfQ(u=G~+U`lDuuq3zpz`BOd=e=Cll$*--Pb2oW@!vvp>w-?YHF$!-PdlqN`G5jp$$(Dk3kLduHc_`%px1fo?r#a zhd=ddTWwHb@%dq_)vuM_0EI#~r*T)T0$YUT)oWK-S7U5t$AD1ZsrGGj1Q{8Hvgl}z z9GnCQw$%C`tlqp%=U(qXQ1^TR((x_UQUo09W&t{5!xzCy$LU65|D>zSZ8H{^hi@w5 z($XmDDXTn5&u6I|Ygw+nRSkJ!*#(YEjcfEl-JrbZUHxrCIRqU~tvtb^R{2rSVT$$r zLN1;QDAWNC*>_`davmdm*UsYT)dsEr#%!C~D_cUju%e|rE>Y&@s}@dXvbKxcL}+rd zb_|RiYyJa;R8a0qCsVW+uC(c_#D~c@l*pz(ANZ2;Q(ehzl7@2d*!tKNyKIK&>fG02y=q7X?zly!J2iG`$x6fZWzrFldA)5%6-U(EncP953$a?kV?5 zw$a1s^UQOXndOBCw``iwl)M z=pJ%NNtIZY-X!7v$pst~rcO16^*w2Tuzrls|2U(h3Tb{Zuq+^|jF_{{%XQ!Hc%7vg zdP+~1W_I(gGGJQ=_`=`-%MP17yV~;k`C<6e(Tpp7?`kX}n<)p3w-B=r0l;V#NWdHd z_(iGe`)NvR=eFa60Dqa-A}KMk0`*eK@h_Ff**}-_&|13fN13}eRQbJrb`5g?>)0 zg!Dt8G$$q1+-W(uo?`=$i14Oo08wQ2=}Ga?;5G$I?tOS}uKU!%&Dl%+nNr}r+WG4# zY}N&;fW0PAvLyc*{~0Q+9A5xWQ=G0qmG!O48VdNPZ}a7J9aOo=`i%Yga7=0;{UxaP z&6~P8pDK4moc?-C1A2MtmyD?Vc2>UiJ*9yGAUfDH)Tu2Cl)>2Gl44{B0OB)8!m*c6 zclB6>hf2CAYeg==kp{r?hv?!pBaZu}j#j_k_lB8&#+#1CdXC~8>}77%O-gnx9h4Rx zsQA41^E(Z8-$kQh2xoxc(uU{AB~`IZH2Mod(bm#n8yCy}_)6?sH5e3=q?N(TnQ?aT zHN8PWCcv=Ng%RbxeeR9Viw0M87Ym^J!zl-jId#f{gpMz)U{<^iClha42xp)45qOgl zxpg*Y&H>Xvra9#ph4IE+JU&c=3##x?KtLv--zD^iJLDyZE_@cdp5S<1hB@;|y`1)1c}fy43PjD*)>W2ti9q zlQ5qHA}-R?(x$|2+g(Ux!-+*}nPz3@8+60Z)DN9E58ht}W9T4`mH!EeJt4b2dkMLn zV&Xpf?UpNRK;BByXS3d2TetUm*idHLqZjdSMB#iDl|7o*G%550T$C^%N#ZJaH4M6MVyQj zf!$N1gmUHJ*1pPwDzDtyQD{7X?^JdD2}R~a0})lX4U<4yLO|aTi>dq3Y6SoetHjs$ z^}hoHg$2!mK)V5-E~(&mLZ0!5Z7{pBA)r)j25CkK|sG;?zb)XWk4sdEBybgq2Z1{?q#W+rYX!<}!ygkFxG-#te$+;pG)Qvz#;FPD&`E z9tO<+@(mzoQ(1s7h6Z3?v@lj%G%B)x93Pin3?EPD;^g*pFA58fOmrO{84<4||CzKm z&9nQhaV!TT_2da4+Zvt&|3XerOG!^xRZg>*WSQnXZ0QuM-(V0)-MIJ~!~NouOpZ=# z5xl4sqM5yBsI=!}M)jZyR zL0Cu0pmlj9EHW~*TF%46-Tmlx%aomPL)xQ9?Lc80)6+w`dJSvtp~2jn5*8IzDL0Xe zze_oo7qX3F=PZzXh=Is-$i#6Wkk(0;{ONCQ{m!=N3jsW1b90N@nmQcVX-lt%`fI%? z_QQMknyU4%`Hz5hlX66Sa$+>6^t1Wr>?O+Mku6m^4FD(dhNc%|7ZG`Y-DXCjhxyYU zQn3SJZ>7h8je)d*pDgzUf1Z}&HJf^z#-6E_)%T89SH5~nfo{Hy4o?-4b}-5uX^ANG zXZ&?(;#hj#zBOEzZ&|Sh$f_0&mxew0N=89ZTj$x|eWB#P1DzL_^$MM|v9hzXw@(~1 zG`h-8rurPPTUyoP?EjQ9SmKYy3%p6a34J>3icd5uSlwLzx3g~#@CmHKj8~i8{Sf^9@;(o*KYX}fd0G3#n-5o#T5cP!-Q>*(qWY8jdQi}Q zuj28(;TCPQ)Dk-FDWdYJf={#?MuM)vdZsJY4_wqeG(6leu61b0Sq#|&1NstU%^)2w zYe70GrYApkWU(#{fPSU3-w8e|Q0MwPFLR;&bv19w$ccr_&&@xpc2tW{fWgq8{~Wwv z9L(99Ae((BnLGATv37~(@01*HyuZoN2!wL1yV;+__y2jAA;7*HjFM7UaghpuOZTDeV~vW9mvBX!lL$0u3Q z#@8+d@$hhRi;opoOQhO_TxEQI>8>j1fDNamY3bUGbiQs8!u#}TOmD6ogScBg9PYdP z!O;&JmY^PQCrMacqc-}kAr3i!ZzOh!wANPT_Od-t={yw9&6AbLDD}mmdH77(JY~*_ zLy(3;v8_Sc7vxx<2q zAhSuYgNiwrn9KDW%($~<_GOjmZdcM-E2H}d!?MVTh}&ogUDi8^M5Z@Ik+)q9P2zU9 zaGC7%a6?;Bk7|Q{G9@#b^e`PlTlCYY5nJ0qf+VS5j9&>j6F@GoA%*kzGt&2m{VBlSqvAGt#5{Sk?=oNP$bI^ncRu`3z)8Z=%&eyi zzz*{)p?Kos$Pr2TeR7kZUVhZ6wowX}+_D|F3=^AA$%oxXyQ%qNr?+qa{p-(YvhW~% zp}J~apOWkrbxqau^z_H{LN)GxJgm}r$}71u|DD%exc1AWP(H=gdJeisi_Szx^kF;r zXZr58XRCs>Bykz}huYrBwW!o3@~DgXKhpQx$Lw+5LvX;1v#e=d-XiMnNBEg2Q25l6 zF)g;Fy>llv<~A?ALmeFG^m$-5cu`K~Rc}l z-Ai|>7PP0`Dqajyp$iq|)Pt2ytxKW?Y(_gPFBjqz}Is{^-UQF>{t!fMX>s8x&AuDPKI;8Rv< zDf1?#Fm`X>vAwt`bDh3o5=LbT8>rh}in@yYNs-DUnwU%XiK zG-Ex)yxcB%aX?BGdWto08${$Ef4rjA%(TYLr1#x`YGLi_%;6zZ;)yjH{^~N5Rkyj>ST9yaZ!1 z0Hcfc(erWs*i?TfHa4myz}9j+pe}_A zS6Kz9`Y0znoEn*&LcjH&?}Xf%I%5v2OiTma#3IxV`&t8--JnfS{J&mXdVcv5mp) z{rz!E(VD_S-YUZozt=6#agTR)ch4t%pgaoU;Syk1M>W$qR~6WOwHPCsx`nXKA53ZX zJ9DH$I?H$r7qYZLnwNk0w*83MH3Pg|G826@Y-Yhi@!7P;dSjwewnLwv7Zz7!NW z$dDY~Jr%%9Wg1-vNg>_#N?uh~_{w#pIdBd3g<0FJ`fd&*?YYlzt+wx-b+Vcvt2NLK zL$4Ou+2yXZo0XNO7(L(RvV4c82B+SUdkugP4s4EoV{9X4fsO$}EF~ii%0cSm2ED!}{-Sa}Ctyy*+ai)ZR4g`igpRZ+Z zUdrS>U99pa4CjwzcyJOMayK-4Wf7CEpyYl7Q6v9e8hTemzBFN4B_QC(RK5pKi%(UX z865-7_Zc{e(dfj)ECttV2SxsuQ+nN-lY z9F+G^i8TAk*wD-#mN%feu33$ij}+#Px3qbWo|<-y?ap?~qrTrGw>G5_9k6ljV_PCf zG)9c|jr3?fXj`=dkyBiprGYTZZaChopf)0(avIi1OOTPOvE7fc;OQ|C#VH-4xhc(S z*li6%{rczX&yD6zLQC@5txh}9mpW}VskjfX(x1Qr&P$BWBYe&=Qn%x8^YXSi;)ss! zJE_wSN#5nh>W+e4`MF8OhB_6lxbRkp)pDys{rA9Ly~?+Q?;_tSA>PwHB5A46lSO7( zBKx1;B;4l{JL%_ghVfVMK!fe=3vXUNSGP)XXk44H9a20};V@Z@cWB&jUHLh>hhyb3 zl9o?$oH>TVYSSgQwt9J<>Q-tB_Z_y(=z=YbYmK*1ufnx%8hO!9v<4h0mx{W}D+&xT zI!^FICHiGKr4r1TtcCmNmO#v8@Yn7_}=Oz_UtJ#dj_f$LC4^`t0J{$h% zn*GX$Yb=LXZ(B+Le82j=OV~SLX7PM^G=_akGkzM% z#?i<%IthTsN8F%y*&8IuT=V`>;e6a*JQ0~z1wL*oIN$qxqD){*K6y??W_%z#9dNFHo>I5rEy-qDT*4NxP7_V zwA$sztn>yvo|>A)Gv7w6`$u|NjNsBsa&xm}2xC?rs4mJ|DU8ofph4lUGd41#L#CsKC$mU;#%hxWW#bsLU^;K1E*H zrb}_I&1+u?R+^&2?wABlyEVXog9UON4+E_8 zzJx=ojM4V6lbn(5jcsdjgWO@8D(WQ8f`w@kww3vGQ>$x=khOhrEzegv>oN4Kxf$=- zy9_GN)QI!0P1W}hs;NeevYF-OW3bm9vzk1toOTjJ&ZXA^W7js*wuxUxOs#Rnyk$;e zAv$>NC;`zv6$zvANOME0l}Ih&@F=y0SZ*30%H zH~!-4g4$7iIG3TwGwYyokm3+-?sVS%*c*=tCY>eLz#6cx@{zD^X7OKf z85f*9(EKO8=BSkIiasY^c{S5L zK%A~wq$IEWyRYV1J;19eUd9}AnF5teGmoDY3_y$gLEf!C8pU4DOWZuVS?b!FqnU2L zgF}bfsJ9J=%bCsWp4TW0Rhu@qr@=h*B1X;|q6@i-Jm%}fd1R}E&r11-sc`44_kcu( zOrXgPGg)_BU@P50u2H~|VV&(hm;>?Es%LHH_(!1Stz*ldLMcna%~<===h&V$5KF=> zT3YG7y=&>0&c9~aolRM}ZmLtP6u?dkx4npcX^s<4SbMy+oPWn$DPE&^-9WX9gS}C26tz9hP;!P|)}!{k>r8LE5Hv@-I8qM0L1XRBz>t9( zip~8;V_nND>mHVO>?PcWHH&#Fe%iuR4h<&b;7pq8X?9OO+T2(2?@Mc{Hogs!ROV}6 zaY2253ib>68&8{>bBXl&xnWRsk<5mMyDOx(afq?TLhSke(zoZ3ftlm9xn`$XA(vZv zXaa0V>IkBQ!kh>4CbJs`xQrU~(xc4?D}u8nZLhHW{QUCS-@aL=2NKbw?NDJKQrg6% zxAe=?DX8K2u}j;^%6w>stE*|^vTB|_gox}lD1(ujy@}4u&7KVs#=&}ebH5702J>Ox z3&mZZU&ozDm+yoPpx3k=o13*uM(8=EIv(%!Fq4d7WPhNHDv0tV$i?CBS%|ja?uQut^1V`d}Yo2Mv9@> z(&!@+*WRgsB_R2Z7#Ul8)Ov)f0Yxaj=F@leM~Cx{UUk@;LL5L&T)lN=_eEN^&JucG z9|#<_EYsor)*xdm_kSYZx-OT+j_-GaCyX!(kA$Yal==DlTWA*dOP4i&dsg!PY#cmD zQphkm+xDT2?YnSd38r&>hoa7uI*g6>C4KI$5uv*L89HtVD{JAb*)wtMc>wIIKur<* z&e2knpuabReAf(8O@#Vm((Oodl|Y{V=hL`?=+~&P)8rYp>&6GvbArze3wJ z#B>IE-ka-Iy#6}BlisJZo2`fAMZ}hf%Bijr4{LbI;i1ZT*Mi#@h39OsHg6v{VM3dS zNb85n-2hM>Id=Z@7Nn33I!S^5YXKXyo%*b0f8Hq3W1-LdYP<+7 zez1?ee8vLxQRd)2T1UnFUd3sb?N75?U7JPl#6czsLzdd(`Gp_k>;v!XG9(tbtH$V+ zSP{YzLj7jSsutdi4CUaHc~U`dZuMbFY?%meDyZ_lbfc80@;%B&5YX z>7}Nd*;)t^gFoYBx0lwtvmZ`&6%w1}KI5~W=^&>TuO!V7wMP>DT2f=Q#vpdK<%`qJ z5j339q)gVAuMuiCI^HZ|+`@uaw(QTq#D$Mv0Xz6_sUsXbOl2>WEv)B``ZjD_3Qoho zqze81H`lMDDS4ua6AOeN0paF56>?8H@7c}7*$ex62CTS2Q}u5+_GX_9LGVMhJ_GLF z&-HpIw9gYPRhZ&-#(D^dWmT`CZ-)|2qfbTxPxK0dZ8Bnj!E29)62HW-YU21jP$B#%jA!-u}!7&wWsvZ?y--t4L8MHHHM7q;g9xhIE z7;|`QF=}DP!MJ{bVds2TyzlERI-E;GA;EwTvQn{CR@%BWP#L?N=I-GV)p|5_T!&`6 zlv8<7bO|fOtpo4#T;8TE+q@m`LMnr>Fq?Fl4e_ecF_K3D?=~)bA!%p@Ou0;i^=EVq z5eU)mm*FV%^#otbmy%!)(*5i$e<_5(Ae@%xl9R9dda2^2k}np4t1~@2r5{)G zXEzUl3yW17)*B@T8776+ldGFda)*)VbhUMo+^uzMoVBg;;C|_RTAaazuHK}kUSg|L zE}DkXoUgB3KwLOrsRVamKaC%Pd0XxeJkkAbr|romnt-xus$y2DKVIpSSBR!+iC&I3 z?!nXeyM^;s#k=-n5j+zi{ZrohWdAT_|+eGYRAkt%0Y9!sl%jAwqE0d)I1J4WoTwF8( z?09~+AKjMzlb4s7=zZ=I-#D2ep!rV6)5qB9$8Gaus0bMJNHyi5hxg^R@U~aCV`!G`q#K*4)EHF!&LV>c(WaL~?Lg%!&)ynX!I{PM)rA zzF86)>h~>AmfA0vQCRP7jDS@g;;bj!JR>w3Hp)~+<04)oo`JUV!+Ex#=ccDs-IbYCG3Y?TnjS~p+>{!?p{sKX z<>Yzjh_0Mc%f9EvmP=%r7)@`tojcgA@JLLLJvZi!Rklx8)^ zMl}Sd0~BBFarn8d(#{%CHXd1XyCaRf|Gw{xGyEPwmqFR`wW~{B-mBIv1M_fbPSo-G zQ8*z}8pYY({jqsq9KC7)*`M0jD{Ew{EBIDcS-G)XLBPl34HT{4p&}GX_sX=4(%6}^ zqhg;MzsULq-|(9(QpIsJ%_T7r-B%fS%orHGetnH98OjT9_x1)R}36r0TVUb4cw73dQ~R((|Fby}AN=-Ctc@HBMwG z=8n3aZ%F+;3K*gEfb~*2#+)lLa{y7t5edEJaFd|`X+y%w%r&`SP&O`W3@#MnjQDRn z1G&QyI`boAQYr3~makP1ukMxh774gs%$&wBIUJF0;5>Zk@5HuQw|%frs03p_)G5m4 zkB4(k940_gk-$=tFPL;|h}L($01G6&;+M+`6Nnq4(G|k2-+iC0+c+>`QT2}@d}1Ju ztqp>TIGueIWxNy(tvdKD-l)itU7V-XsdHoi7cdb-bx8kxo?NvURk{ZDS*jR zro>bKwZR4g_jMT9X|^)40Ek_m6bO!1iLA3&aUI5hD>Sog$DLTe>)xfibLX`6GsC4e z_fk-MB_=`nB-vR@t+fW^wY$aj-oon4C88FvaM)9-&2?wYgzHpNi% zi|oeP-r2p4kyNgsi4y;=iRAuDlZ>_pp3rx?k55hjrgG6>Sg+6YG;XH+J+Nye%|%0i zW)*gxIM*NFiph>cNXM1^grBeI>U%y5Gx{$@dQP0Z*G}N~A}9#yFt~{3yYL-g@&kNv z5b6?r!`c9MpLZV{pV$n3suY0`D5L$c-6rDu9<{R zx&o+k^0<1|s*ZU-qHm8#X2Fj8pP1YHDlFU%A*rI@dbX6~@>^SEITsm12818Chmc)? zoK@|TcZ#ZmVFFz#xVWU{}X$9_Q| zW%uzEX|}yX=XG#EzIfN##xdr-S$eO2vPLn|W}HW#el6{~vk@`#YwRBWlu|O_q|K2q zS@MyWH6{MCMY6O-Lf=DH8rOZLnjafSh_Vvzy|m?ABR>>d^mO*jrFg?F)pwejsr-^v z8%KadiT#ctp}MB?c%6|FgwzG-oUEt~gA9ijyPs@VAXJO0r&9g~1|~N8gWvk3PB1dH z$QyeYR)kUG>skSYumiUE4k|zTV*Lt}t>czS$6(Uq7=q(@_UG-KeZM&-0A* zt0{VASU_I+UipS~E^06j@Kj07Oj0Wzwqo#@UeL-+S}?b0JB?^3_9Y+pnX-sHY; z$h9lhZdlw|U;!?^o5T!yTB4nSS!lsHg9pUlt7kAi`JU8@+aymH*T@b{=4&8R<5sHe zW-9ROPs7;=+xIqLY99r*ohUo{yY7}j_to@_38XfXVSaz~^|b8Nl)WH&diY?<@BD zjdB=X>Gt@z9)FyklMwwrsk76l}T46=Fz1M}_5rS5KaNibEu?P8=m) z{z#iALTAdWFUVh2tZhBvBinl^m?7|-T#0fB>b3kCn$WdaB+T3BqxKfNTwPZ)EyDu7 zxVY#pd}JC3RQi7Aj?FH@9IKp&abKZ-WlHI!wvY{fm~2d@<_F-p5IfRpE>*Holhx)+ zD+5^Oa2bhr83XQ&N@$xn7CT+e|ZT_TAdRu@=y zTaO&x)3m$6Kxx*!alYA9T>Vm!Sr2yT`d)B7Oo1&qQdndNJm6>_$!ay+jp51@jI@bq zTR<^nXUh~`%V3PUI8G=Lf_VLaapmWw{WKF2Is(s!Q{{h2soreg$QqW-$?=gSd#}3h7bn{mwo8Cp&GLbH-cnxz@L#rO^y_8rbp-s-p2?RXTQ+q?>;~6%S_KdV7oY zAO||k6De%ip9JQvq5pZm1*4F?ET}?ytSv1bP5BpOKEdw!jnCK zky!bkAk`uRm#sv3xDDw!zYd%0%=`}y1+OWe#(@@vv1$H{-qmeO=9YsFqZslM9#Li6 zf&#aR6Z8G#xI~yn_16k7c>{@mapdu4?>1(RkPRWL2hE`njUF4~` zq%H{;A^H1?TP=q&0gz2ZSXf_wU&0*U_MLDO<-yEZrSaMMjJ>@xX5G`svTY}FgWJ;F zx^aF$CP_!U!qUs2|4Mk=rEV+1JC2Y;KYstwtRJU;RMoqwj$}>CC9v1l5^-kkyFG8b z4iX!S%J!&+4Iygh;nOz9a{YN}F;;wZf=X(JkJJq(wG4~Z;#at}Fjj(Sk}xWrzImo< zZY3fTnYMJ$`296@{<6qKl?u$DY7joZvBGt>*9<<~U$#Usq1H9dcklpplj`rQ`&SZ) z%vU^vM+jvUI3mim&?o8xpfnrx)F?+rLa-lay!UHjJ9Oc?_>n#HCDS^9ip;3OP$r%l z7lW_0MGJw!Ie!$>-nEaKKFzF)J_f?iR3!W`6tQYdWv7o_tzz=>NMi%J%<4HJ3|5ui z2B!~p=+#9sNCFWk)a)oBIVGT@TiVTHC?G9&eCbXUkdn5Y?%BPT>Ax^wj#ZeUkZM)x zx1Sv-!Ia?)%dMOJqM1)2bF+X$RHl@hdW)Q^yo-hLcPl^t~~?Q?UpJJTimewH)UouIl&PG@jj>{goe&LkzgPHWRw zhe9}cF;2i0Th;=~w=1ZDpD}}pm7o@QO&i9=S`fV`O#4juIP7Ur^j6|RF3A(6741#~ z&_QOat>ZO|nvYY9Y8`#wDTc5E;Y?WMSCp@!6fm+hwsLMDK__C@ABWpL0k`0pZ^5K}zN1WN72ohv z-Rm^+_csh^Ap!+A5&>I~M9;=b4?fJTfgE>)qM5p<$Wt64P_XHFcSpV~xO^;t*04|E z6jN3L*)FJJWIW@kt7EFF>HIPhtalw_BU+6Y>o*2nG2i9~JXf`=8<@rvcXWH$~h( zi?vV?^gS>8G`QPT!8Yv_(NaI^!Q_8N;KHfHwrRMVPN&C0TK1WZ;v@H$BchuyrZ%l) zj~h#7p*E8UpzO8gWUd#Jv_46}Yq@WnaM_9&Io>O0Od6Cs$GA{LHuh#hq-u5<(OGpP zLR=V`wQ3KKvt3ssMlo$!TMD>=Ae{iktUoPAVbh{ zKHC4rXwD_vN60!D@9RE-S5}L#=J|%B#OZ7kLdAzNB)u>h%$kOb?t|K$bLYoj$au|{ zf;Y-CN_R#uc*&h2mP0?E&txNJSG|YwwW0)$b|LC$qB2gml}j@h5i;diB~~-Frcc24 zb`LcjY@v++l|-W-M+S)L1P^ItW7`1sLymA3uPy`HQU48i+GzgCp)l$E;~vbdN{5tG zm((ZsOB4UPR$3xgbPEUJ9*jT@6O*9dL!A(f-k;ad)j?xzaVHfSOfDYlg$-<+)J*s?YDYMSLnS-nXXXh87u9^UuHCx7vo~EQy<@DR2Pb1eDGyDAS8Fg!779K&WVpTX zLumDML#w4>Z@Bx?+}9U`(ai505dXt3_B`86J7h-n*UMZSeX)TsVx?k1;4$}B281}` zuasXTJIS^jX#HK(p0=d6vb9dja1n^==w^iS!bw>lDrV>c*B!lQ(jm2|1(|7jkk!b=?tUcrDw63}|n+9P}E}Q+9Ch z&`e5Z%jarr*)igU75*s=109RIeeE1^4G0+B;vJPfc&YKLF_>|SaMDsKqx0Qml=s?! zO{4z9S<{hPtSy9;mThl;ri>-t zf!mIL?$}l)DaNC#XS`wt7r>&QspFphj zw#ouLv?IP1RN#Q0@!u{sH#UA9WQ?^v4@|hW*QbCyo!j0h-8*Ob0I<9AVFCXj;@)#S z5@S_Tgzb|###mJBe@Tf=iEVKU^$h+2u+R@eIrzWzeCbKAZc4A-{Mgo}R)g_B)BH&5 z0aPyHz|%GxObs|+Kx8qwCr=3)p;OW76;)F#f(PtxCI7rU>9rbu7%5(}sc!-5&ZWYn z#mARq%+3OUDsrX8yTdQnKw&rHDytgxboB}c$)~nVQhTKGSFmYncggwrn;A1^2e@aI zxEJF_)*?A|u3WcH0UV+owG^}z0&ROZ^Hk*J@k0P{6Yz#kF*zU7YURn(cp22wA2z`C z1^H4IP&1&$_Qf-@F9-MpvbFw5PrQ$unlkckv~BOa)1fP`>n0n_$=SQg;8G)aC^DwE zMTq&-{3~VP9r5$Za>8oq;Kwm4J+*8NgIpJvmb1WtH@&j7h5?J zKDC9GVJWsTfW~6`{3mDu(Mp=Tbr`1B1%mFA=e_#J* zg|-JS1$CXS8dC2}VXyqyf9qCoq6)UFvle-&C?hU}X9u2!yCvxQAoC2>{b` zw$PMSTXHMCy}A3P>uQl-1h}7nKJI;@-xrY>7C2r`5DKfGqCn0^vgxCo7aiX!M{r zB>7@pOK0mJt7Dc$oz;y?QFT4ASt+T#(dGU%obNivu99w|qhxdcn()b~` z{HzoDS)|8~`bVy@pp9co35NieW-XAj!^b1j%^-*Hx$(8E)U-T-G_=O);Xk>6-^?rv z+6C4RYrCb60bAP$a_A3;L9e{SaDtXWb!Gv}9P4=Qs-_ z?Y#X^AW`F=&5P?_1CvuU`IM?paCawdL0W)RkaQl6y|D}Nur+~s!ZVaQ^>^lYg{@s- zp4<#asUl}1$mkwva&^;t^NrezrVfiTsesDxH#aW^rR8US2hyF}IL|QJx88*(4f#d0 z4#RI9xxvE=PW8VNj30*o5oAVR;Nv_wKPyh=?=}iBxbSRZs;cNse{${EIfN80X7IPp zvR&mbZKm9->;KVM*67;5d>Qn2toYZz7RhmnfVlJH!wl_95wzt=+CVvkd z_|9$3KY2U!Uc5LR=?ssMHGK;K%+z<|G0OSBmDa#lF1-H)5ZJY=hwCj+@~jPR@LA0w zltUdCFTmR=)vf4X+Wl8s`atomH*FUcPdYR0S|khrAyP0&0~uX231MN2vne6ENH%F{ zX%?1d0Cn}(FaP~n_|S*oqjD7Hie%}I;_A&ct08D)7N|~zUf=zFWr6SgNvUoa%wIC* zOH3d92E4(5;zO>Mb+RJczw*_f>rZ$)l2z>shF@MSv8TT^Z4K6?FhcHsWCQ) ztgI~1-Ef&eO|{HLPW7*8$}^hxQxkle&V`_^dz94FaHlpuT5VyWIvVoe{e3}N%Ra3k z)To<>`@eJiK=HO=a0M`)4EW(P7BdLbvJj*Tzi~6+9Dwjjoe=a&{Qu`1m=)>iyCj)Z zbgV-ac><4XbhoBZMU<43|8qU0zc-PY-dq_%0G0sc@Y#UMQ}yW1EToM9XhcCF%w0Ui zsC25?61Mp-{qdRTS3qyMcHr}$Ya`*YWsO^P63;mE@I9Dx?N&)w@9Kvc{g>8#;R7E) zt}GqZc~4Id`1}U{VFc){T^jT&?>Gwo-jV{d{h!k+vdVsEJ#p=-Y>W8369;)<+XLXp z-=7aoKT@F!Hcn1&t!W~&f5u;JHnbMaQ2w8}z64wgjWSfBAV>h@Hg)sGYW1jkq%4cy z#e5Lt=|4Ynf$#8+VQ>-Jum~hl+|M~)W|VfDnHk^>qHJ6%s{oWnafG#%-M^UEXUWD> z6Hb_2FF+CI*BR_yX&)A4Sm)vX>qCq5^je?5|4j8?w@Za#(E)1Q)6LD}>H&OqyKucq z!V`DrzkmGM5ioI02Zz&#%%V9+o5?nlwsv2f9bdX=Py`j|G&KyERbEg|98PQ)!4sx z@dZBi+lK#6MKWc(-GIUcO4U3x!E45$PVRx(ojZ2`AFk&ago`KhUj-5d03=`HeQyIE zs8`2ZtT$}Hvn1Un8b?L_`|Lg-ZZ4Ql#4kKIdGW%|u9$Pms%Fxs(buP>*_FK}E`-`q z7!f?{aLZhNbz&l!!yv&9nDHm?e&w*TvPJC`BG)#X8K7?y*|&~u%aS4qQBjw!-MSg1 zi2lAYR!Xs6Tqy0ES16t^FkWT=Jab%2)g{x0_n`2Z^z`;mlFf#^t}k=3KYIaEtt>xR z=}gnR^Yx1%OBgLf%Ksgmmx8jqeyv-9vS*vSTZ2CQaJx$PXC0uBL+H2g)1{V( z3jkMbVwO>L8|3OHo`Dx}qm>mF7FH5%ssH}=dgPNK_0R(T?#@W?*Zgjf4aCMq9^iZ0 zRaaMs@!g}w-r~K^&6Cvh3I%tY9OMxl$wdq~?+mAUvUPkMOo_QK zk8P?PY5(L$d*P{W`TRi!{3mN}aBM!;kfP{Bn%l}sPuGWz;oC1p#9C?zQ5hYd6LULX z0YO%~#1$)dTfLAGF+M)N^n4Zy%t+aLaN>rTg3k2QZwYxQ#|B_V#x|!e)NxfR)TbaxXkMnKsoq)_8E?z zg+u-g;auWE+JJC#Z!XRGYG|l3oX!x$kJtV`M-_I!UC!QAlq$s0o4c;BWZz!tHQ6)J zTOjJLtN+M`#(Uij6BG!vsNnr6`=_=Dc`KpugTD&G?}Sx^-?@47Mpl-a{4`&>+aMR0 z#N^5e~hSo*$nfJLHl9wAJ3a5@n!JC_C6}a788~(+1APLfAPjMu;GmZf(*sxb?Bn zx|d6;d$*a(82Z;uv+(NZ+JrS7*Gi{J3fOOLWjnB%j;3!G1J~~;$jduqU*}{w1L#9~ zm?yIewKmiVy^ZFjEsw0s<905(C};KrdAX*GIrNB)&du@i zs+p>}{=(`Sz9nv}s>YcrvNcP~6M*%wv9S>YC1}eTs_H+kt0Wxs^4^H&oNDz}?Em2Z zETGGFV|}?>PI2L%oAbg7T|2@lcbq;!wpGgOSdBJ>gIp*u#h*GTR%zh*?)vM_&sXGG z60TeDhV`1ME>ca?EQI;h6jzIWS6lH0I4IC&6O*sjT{ZvQZB!9Ck;+?x|58o5!79 zArhabAy}@TegHW5;cq@eK@DUx(Jyq=)KHU?xwROqvY3T;A19j?`NFCTNMKnJenq-b|^0(6s|I0)fP%iw{MDs zPBiV_V14N<9-^zKcP(RZdHFFd%&JD0RVe?&`jje5TRFr1lGjkWtXt}HG zeIOX?H)%wB<^cgC zSxl159;+J@eL@^s>+W)`2A1k;~)o_6@h##)(m0CoAd?{UU3*o#?X zRg<>J)?jD_LVU+2;%X_vdZ9YfG_5qR*8cWdlP=mgl3HT_dL$J3U3tH}tfE?b`Ff9} zeEc}C7ye?F?ow@&nj%x7)lA$*3RO9!;Mx1gY8}M$aVwtVQ7%-}+S+0Aw~)q%j$#+t za$#qoYr_SqochwXwyv(>^bkdy-km5$b|?MC#baDsV<~gYTIIO0{L7b!HnrXwi^ZT= zJ$F{Kiyb03*TNLkcjGx9A0zMZiW4|79a!=29+xZmK}|<3oYAN$!z&%!5BK5_5mT9#$6x`bvD@Ccnq2xy(0S-!U?sK43(3QQ9}>%cC;9S-l(Y(|JR1_ z=|^^daK#7Qe;uBIXcFb$`WCPoy;aiQ&p9*`IrjusY?r6KTP#{GQv{ZN4p z{FT8@H?lH+52byO%R2Re6DFeA9VC-!R(?_ngYEy?CPKzTNBdW!Sw6bjEZkXYl9iNG zjg%(UzzEuz={Hh$85sdme96e+P*6CPAX{eFdadcgq##zi-r0E{`5llz*ilp1(kLpugzE5<>(k0 z0R&kN%|9Z*0b4@ygkk>+X96rQMxkTLmN7~0&zN87mODq6Fj29y3A2;8l7NwR{ zke`#IG6u0zk*YH^WUn%P2_AaS-0M5ga}=t^bkisPSuVTrkqHkz#kxZ^ORsY0Ae_}*$-`F?gcg9_fmK- zbFJ+-!`I3xN8i*wXenXgEtmO{}P~aU?DZW*~UyFZQ>?XLRXkU1_D`L0iS6si)Bz4KA+~rdOn0+ z$YH(8gWgyuqe2BTsj(`}2ow7pp4$oAf(J4lKE5V*s@!o!GCs%o>?ZqlS@lU4*BqZm zhqqb^#KhRRJDs}Hy57IG&p%rKyx&Br^s9Y#fM1rJS`cZPs(}VW!abF?*HVOoN2nQA zt&&&f9Se`moQ1RQW_Xo*NG(Pg9o)p-QDgZLC=i@a_VQ>TjSwWie-OBnC$u}S?YbCe ztO|`uV9tz2974rgb7rJRZ4Y~wES{60<+yhRb=>Kn*97koUR`WO_C(7l&uUTT2 z4u%$TVS3-mU*YsZ)T7ljfUW8&%&keZ4!BttVm*zZM=HZ8t5Q%$4^-%csj}8s7WhPEED5lX9 zWu)yHe1D`D#@N|&~4 z5Kq!Sur8hbJD-A#a}}&D3V3*dyaAFaK7A!E005{6R3k&R8%c{RfYF4D>%^A9g})cJzpcOQ zZuG-w0nkF3taFQiQn$h>@Jy*n299n(Q;XV{fNl$m@nKf-1DA|teV0N&;e9s72(m%G z*ZKobS{&Fe^tlsBPdBj^El<3n#KX8{0t3)2{gacFZbGa1iA#JJw(FQ=3m3*~4D1-v z&F&OoHDE9B{o~&|9-UgRMU0>-x;_@ngeEfiqTJ@B@ChCdH?sc5W2E{JiHsz(Bh_f*u*%WhcZO?`$OQ(2y< z&U%+d9XrX-L2}T>f~Mbczt7pb-5^8zGeiV9 z)(s*TSCvRrYP4;_+sTueagBW&yju#l8geq1hzS$^&wANH9(%1s4+CTq zMuwxAnc3`z<0h>_PGJ_NPa9s3+)wsC`s3ky^ zFTKtlk`L7tox_3?&LMBt?Gyzq$Q~H()Z4q8<_6fzcfH7M`@9;YsN3GP^Y+!58})5>D=F6FMp(0Y1D7~28lrU3QYfo$`$ z_V;_uSBs1%ay+g}iTcZzM^2zTwS-wo_7#$EIA8FLx3KuNwY21`*DIT+3g~D||74Ue z*-@SvC+E#4$?(31_6_?R0Fw$l0ST0~OZW`MCvDWC@Rj6%AP9ua9D;f*Q>- zI2a3*ngZ=J$?F(b6ESyaw04#zl677tfu2mO%v+B}|bIPsf0+bnKr<#$_lt~(Pw;XyI!<)8{7^NvJ z;|ltVoldutU~NraZwk=>#(-Vvv2VVhjs3zx5<3~yp<`|eoAl<*<^?(>6FWSab#ST) z;9BT7H+au=AhL`8uFeNGHO=NaMV9e;-C@Ltyun zP_)3y(O3I5S7-9YnFmrh9LDUPS2kycrbZ&(K?^uFjByblVxt*E4k&Z10C2D6L* z`NdZK=Di(H$qi-(LFr?|GI&EnUY=GLF{!x8iPRS(nO`g`iGQ0*2KL9L53;>(H24U5 zTB4rf9O@p-#KyLG?(0x@etufL=vXm&=<4gh?VGq3#_5_8gUcuqXG4+&*$+ZKbXsJl zwhkeR*oRNqdQwN6T@Sx>uCDDa^L9#-@6rp7{{j9$w$&$B{A8_E`Lz6cf&vyyN8 zktB+#&PZ~Z)e-`p5?`2tgZi29xCs)!LLhcc{g0Q54K-l`MeL7lU5-1%4PJiuq5r6w zm(=w&IYX+Y?z*vJfI0;~|LTX#4SP!gL-FrpL4KpIz0~8cy_FeWO!~U04s|4F!7_0U z7%!gv?Q`;BqkpmfVQ{p|Pa}jwQHe@89a`S__nM&%R4+KX{zhJ+)g-~c#|M>5tims2ha+Gx;qL(=U}EM{;h!Wv5$%HMD?Flgbh4x09Mar#3U1g9E-DZ6J{^m8JAKgdv`A9Bejgj#$J`I!Z} zOCP9gLsoF}%_xrFE4GI7)LHzZ9_&;&WET~2=v}t3xOMB+qHBpz9B5zMGmy!s@Hj}@ z(6sH2HzjM5sGhE{J16Rw)AqN3%-PNCh^Xz{fvHcr@sxA1aZ<@P!@hSbG?Gmy{&_Xp zK#Wt{f?nI=^tAC`G(jKqa`{w7(G$;1g2_mc`m|7o-u_u!6O?@N{Q+iLVR+ehfT3XD z>tdikdb4L?A=Vxq&yYf)kOiev`Q!p<@yC<0X`9$l|GNwy3vb&Q(WKq|2yJ{PbA-%>;We%-7jj;S$Qc3o<0+YY?qOSm#LpA=@0Ujk@U0 zm6xf%oGEq;asWC4gQ}~Im75kO&{&U_DdhaZdpiFuufj?()y8w%n43+}f>Gt*}FgL_Ftd^`;` zp!BrPdvCff7$H`13C;g#vu95#O-gi+z9viMz~r*-1g#l(p;*E=Cx0Coh{X+aWt-%Iq62*`A0X0d zy54oRNM|+BY)94JUXQQ^N97torQ4IpU0yvW67-t-FvPvSu@ccYmfiYpM-9Ls4xp^d zU64CipVZURB5@+mZf9qo>sWxi(GQ|0dIqbqHu^Dl9A!5vOke4_8I^(9&z30F_<*apRx^ZWNA4Kn_GqbIv2C?LQvT5$~~_HGBNU{!g9X zg-h7UWNvWs-PG+)^s^Xqx$nxr;7U67Sxo41g$>bGMBf{$5J~KMB|(P~+m`K6DXqX* zm2p(%jiPpPc1)_>*?*=Ib*{-Wftin*wKXA-K#q6-C11aef9(5SNxKKIG1>iJuya=U zbWVxZ*+WCj4Gm<({fj}A;gY-(lMQ(^Vo)~I>=*~BvT8=|A<;a3!MopV_9LU6Ijt z6G(%i3N}7W@xDeI2LzIfnhA+5dtl~Tw7f+aE2jbJ>;hA<|M3gR@%3qXi)1r?l<_oH zSU9FgjxC_@wzbjX+QhJJrx5;UzU_xn{Ql2>1pe^j|6i$nN%z2bjx1C>yq)&Xzwsj_#z<%GDJWbk zrR!>vhO3ej64LzFM>C%)fzQyd_&8ctteW>Bh9JPz8sHj|CiC3n!z*f>%W!0-+FHJpVhaa2`+uGRR z|2w1nu;swUNfxRgkZiR#YQ+|7nG^wr^E6Y>I^Tg}QPncFF@z(2zCSp)jr6DP^w04j zHa`w8;A9TQ^8+hZ<~9|hR@~g>e};_rbbG+PiEB(px4mt$xKcdN0NTZNvZT~lUSC~v z{azph0N9q%0ux)n+VB)KRpFNtzR*$EX6s_M5hho5v&J#$DueFi_73$0Psznet!UaH z`B+bi;MSh1y~dq2&zbAIzKl|)+1C8E&b^KXIKU*mt+lnYZ6TPF& z%4<|C6t2g@=K9W?AU~;6ljA0^Ge{#A{C-MB7j_fR?B$#A#H$!l-ji&=psvGAP+oaFrZ-fM6NwZfHt$ z7>rF7*(z&zTUZN|y<+%AM(Qoue{BH2JA}GDG=zj$aV^i&6=ZJ6UfJBYCi^yE>&X%d z&^1W)gL=fSk$d%Bc4I;MHY3REajWxd1ITx!+{((#n7wb;V12`raF=W8TUEk;o|5*L zEeCu6L?NZSmf{XWp=&mgp+tl2hidDT)s_3fygjHylB&R(3*Y)Z zGjp5Kv4FKZkUQ&P?-Q0B3n{#|t(5k&C5+MJg<6h=?^G2$3_M;L897QQz3%QL)$Fi) z#$sDf!!Iapj&gkB+eS|}VRv|I@TyIv<+$wymqT+)R|ws(ZoKAKOF2nr{1LF2a+nD< z=b5)NadRpxL8@$}hx_HqsaoD^vVBVv2X;nu{s95~!R>|EPlSd-r)a8tA8PMouubgH$Y5GpVHmifevK<(M6@>h*t2UQmp`@I=d z7tt&QY^dbelq5pHzppEIt*rCfY6b32=&QqpbxbUaA5c&;xw}Gc?(x{Yb^kw4sq1+Y ziod0Q+;eYa``#_`Q1Rp*&*OEM)0vsHe)F(k6slXH{V4-ophj_(Stqcr`5@r$fuAgr zeM9ZsC2yy{si`&NQ><;n5~YGbos|#*Q`mf}muvOJANJ5V4=P9c9f)aEd$jh4m#N2` zy(E6hEiLz6bZChbtV<|FDlt>95nCU1Hj9?*?SIiIwnK?KB5$g_$Qq6<(0Vw+2|;K( zqwp+k8&o9wp89t_N`$HxSxFB5Xx7^F{VB}#eUAjLp1W@Ge?4wi7L>f@4&cC{p;zzB z!`3q^E}tE7kymYAy{aSzr5Sn<3zEiZo8`~8Xe};)r20J%dxN4b5=4(*e|TEIRbQCo zJFM_Y7FE&G-Zp(vsE5qLwU=BY(W4>v7Ym!&a#+a(1}&qH0Oy%&FGWz4lsfUA+gYH! zq_O*McnbeXB7@J$baSL^=XU3Na-<-`ubC_sL`Y!hA9|JkU4Zu^^|#s`CWVR19akb> zH<6ek&6Ie+m1&@wRFDT9jqGRZVe2!mYp4WDIXfAxN?*D+!SKoon0ThFc%6cH$cq=~ z$T^tQocf?$+eXo?^CxuGR#ui~t7cu&z0$IKa$iqV$fu|KM=8{As>cXkq*R{A_HPs) zD03@YaBIe^bxy}6d_6cm^jTp!^nKA4lzaWNqQm*kl4@W+l`1A@s$@KPOqeoLEyi2F z3rE>jiJQBkdCLZQTAs$0E=5~#CCo*mK5vjwkh;`NZp5rQ#?!rS(kfXIW`MxatIoin z3vwr^@*Sq$SCoZ*F^pw8_h~F!Y~Hs6BTLh~(FY7fKl0J*X%QsO1R>u8(O#>RsZkOv z)6(*KmEMghW^$3k(lYPwGBuo0Uu1kw@1Zf(v9z`{m9}_k;i6d(@?7@QuAr#4`*Xp; z)RW#`y|j>6*O_B)_e|@c;eGNU7CdR&!atWD$#2g#k2+BVU^qx+JQnRWf^@c})3y)6 zHRwtUK%yT93%>HY@N;dku!!o9-BC-YKTd3~KD zikUXs#kgvPhy$4acx%`A{;zq9Q=*28-}LVMqs@!cWA%Ai+->Q?TB)O*jx1jfUraHP zl&_V;oG13s*U6(!<_Uqw?n^Z##~D@m^942Mc9hzbSMw)9TcY}o-A%nyxmT}RB&d%9 zRkKhUe7^m&i;&zy7PN=^ z&QNRoT#J$SObo$q50zTqosMwmiYW}xa4U894_c~TIWK^NDYL>CJ9@gPnk-D2PJQ+| zUbIlg96dPnr;M>nfAfCp!2?}n7L2a7sS;~!Yg_2(W}-m)E~t9hZt=&9EHO9fr^_p4 z%S5W)&~)IQ#RiH!xfF6^9G&3qZ@@``cKl+AVyFJRsq4wE9n!fqQr09&gQo|r28It@ z3l7-*fX~namAnE%$9|Pf->k?=40gF;a6u6m$x)6Tl=SQR3^>2g0v8f8)#61~|CXDO zx6Wjf;99<R#?O zzdH)e5b@|?25XK|&`u9<&E_DjZH4-O5U zT2>JrU0vvSA!2u14a;OG%3+8tK7YsI4dklOww{ba!Ou9Ybk4oP)M~>!>uYP{m9`gR zz9*=OGyTiE!p{6RMW@%!EoWe*f1p1y65*&%#qZLEIcSrHlq%~w3$WW;amK(sQ=?{K zR#v+9gU4GAqtQ}^Y=EXbQ+%=u--X2@%dZ1QgM+_Y6)*2tH z$Wn%yuCkzdDG3tRT{V*m1nDy6Ri$G3`Nq}h*vi2}0&n@E5-AZ;smSe7@Rc(5(N?|ak@MO{mFHP+#EZn(vf@M_ zU8-d8N%)-N>5R?=lP}rbPvH~ivv}k~5)u-=>xQnWxqO3Q+;X}9{=Nc;AB&IhD*-|5 zBl{`8f=~S;IgM3C4SdHQ5A%yVn{_MKOYG0b$gws1y~737x+}ihjTOZ_9Ir?}crQf!4pKeIzds34=t3LG6-Sms-``%p7I;^`0nBEgJ;}3 z%NEn}qooaAo9c;A+vslYKW#Z#ervsEp+tt6#ENSg)cnO_6Kna?RbxN1I(z*coQbi-*}-*ea8eO2!+o@w?4@ z?e9P)Y2Cv4XI&e${{{?J3V(l>+J=h!toHs9Cm)WEGUbaKxu9J)7{aSYtUVK#A|#s7 z0ju){#@i9tzcTH7?zt#GDx&HB<{-Sh6ZoCI5Qe$$LdD1JOh(atTthR`(i)k{S>a@+ zGJ0y^Tgi3M2?~xwKAc;+LR(GLso3NlE^ZoY^t<%w>*=K()?8{#gCgR)NVXKatzFL)1v2tj8>$U=o1|?}z8HoqN996~&|OBh#|e%d8q=D2PW3(u z4`KG01oChD8PMm*y|qZ?d48*@a^{Tr?gYk3b;GcRvxNRC>_)9PthLI0R9inRShjDfO3^G*jq&7o4aD&rTSPxnom#<<+X+bBJRYgF|tXnj*$ zUB!6q>@$dOI7)8!Cvn+60gZOC&-O!8@>~z=Iy!#XZy$g%vdtR!_<^;s&YIrNfJr4? z8y#{x;Z3Mah1GSQ;PUZVr|)q}#Kdeqo3a=7?a{8t^CUh`ZJ7#g2S<+qXV4%Ag@HA?gdVK<`JJ(@9|$n`&Qj& zEJK}c{g22??RGzH#He}}4$f~sT{Mb@YdH?Ii~_uFZM^i9^yxK_>fsyfW~W;P}6T^ zHF;_}p5se`=&QXO9#YmQN)QbD?AabYG;gUejOP`qR(i^|b34b9I3L)NrONRzZ1NXd zF4$^lBe*!&By}^5=}@PXE~Jiaot9RR@MyGdJ{pSd)CV*L&YYq;w0pOT`Ql!SDEY{4$3X*$(Su9|(_dvZuDXX*$M*&pYV(~y%Yx&apcILg z3zgH-^RZa?#4ftGJAUzeaU>5r=JusJ64So6{#9uF-O_s6kQvVD8Y8^+lke z*L+*_rjy+`gq51+?EdyvMT7T#K_TiB!gr%)QOx3k!RLsOgK}(aJX##Et}oZ{3W>qk zNOh}lA2hOl|ELGl;eu|z-prI0D~7k07%tni2PBuaExJq|ju%oD2r<&a8Y?+V7UYU| zN5W>WZVcl$2yN82Zl-#r9X4I7O2~B7JMC6W5+gxq9Peon_?&}MBu9qAV^+E+C}C%^ z-8HZ?;fSnS+&2qow!*#UJy{32{jbkQ)4QU%&#+2*`4g^o3+!Y?qbx2P)`j~d=o+u< zJ@R4#2-R%UBevf%K%4Nm{G9|Mf4TM!Y;*MI`itewsq8vG)Nn@;7$#=69I7l~AQ~FH>a(FP$)(j z9tPKamvWa%q?y#m@Q)#7Wld*{8GZdjz?#?!^Xq=>ODQi44@Hkiehu*kRvox3W}hhK zAfCuDgtdzq(%urADkvgnMf!A1AKAMbLAn-8Np9P_Prp=jesK zCk4ansOI#6ftvatAz?~QqSm6AwgpDmdWUA|lSr-eeUdWYMpd7Uk6vH+XR<_(kJai= z=rZ~q5fZ)&J7h~ph)9w9qbl-yjA)@VLX%II%?^P(sk~rtNJ~M9#*f!8H+QvGWNTI> zPi<*=k&b~OUWUW8NBK`X^0!-{v;hEK4nfWHiP3*-H$0Y#u#vp;{rRoMKj(wrm5;Gi zH)O<>fM5%}r<6kFdY4c4%1mhJ*8SMV_!A^}kLS1D$i~Q+E#w4}!nWHt`Kz;rO(FpQ z=3ljsA4)kcAXYp>fnN98y8?Laeh%dYzPFdN7|iQmI9KDr{}(#@3Me+pHUANgfp6&f zu7`K0a>FFsbFHRl|E0UItA6rdfBU~Gj56Re-e(rlzhacpYvNd~Jx_4pCS-4496=aS z(uYE(MHvKzv#VDy^7FPQMWUxIG1i;eg?y7vHOzJ);#nxYk~cgj9yMBdmf{;v>#~17 zu#Exurt5fh!pE+?mXN#0Ww6{alNCH*WwhoW|NGOa*!Plvg==PIL1pTts%ip|%ol}fDfN3uOZ?AbkB!KZ4}vPE zi;q^jBO*x9PYSCsOEg)I?X(vH*tt9@c}3MW;B_iL`pewv)R+79ES)vtZuDn{53bWU+1z%C(G^9E)r2O`+A#x6n6qqxhZx)MwB8#i2`u&}V5ZQJD3e}%I z!;|)T{B*5jlXYu-?L?)Vg>K_oiaQPfGMTi<6I7@_EoPwPNffBEIv)#(ymQ~%{ce`a z2Bmu!fLfUAiuBEXZqNDqc59WGO`UMZ8@H0dEAoonr=xngl$C?}I^e(FCroLd`S2LB++*B^?*z zgGZHt@oC*YDpe&C1%Ni)v*y%R<7LW2Zw_vDHE%NG=dapZ>5PrpCLCIOH&3d@QX8!7 zS87yVjN|Ml@!OdhxmAOA0Vm4bPCw0I6YJ`Q30_6F?~t(8TPVqVI9^GeD#X`y=w90U z_Mx#`$-z+^kDbJ7;%ibO9XZAsPiyKFzg*N(w-d7~Qg`l3pt3$e#3!Pd;l69S(W&t^ zQ;0h*GxUj9KQE)=4l{?qB4lc0l@!B<$Hd?OX84aR5{F1g@IC#65pQ3dR9t!n;y_aEI z6dCUs9QE)lU5;iv{hf4i6Zn9hFZ%+C3&n(@cR^vEpr=nxhq!FS?<^ za-ent8d`RS2tS*JMLvtY>8h)}f(0g`vb$Lsu z&UkHDJkjv_XN>omxwB-SC-s>Mqi0O79aq(k+0jw&K<8nNUo}9d_>I9Mv(1C^(vb z)eu~?`(oE`ZJthfqihj8Po5Z{;UUEw3ON4#VbYSoaFQ@KBkrTyZ17$Wr3mqeZRy^I z+k!m@++%Dk^=MW;`6^3D%2eGUutsP_Q;cJSBDJODKF@Zc>3kY2yL|b(j6cTuxvdL|dSGlXiuBYiNK<2Kwkcf^7pK$8rec(mnI1b? zU3E66T?{RYW@)|jUbb7{NT(v?FV!O{Jm04_z=1YYuxy#1Zb=o}cS>5ADu($IPh>Rr zWqzxy0~itAHeG9IX9QSMcGVOBVS zH`bCZR{AKir`)z$L))ciT{w*^X4DG#Ah^r6kOeBe=aZ&XOZ;vbGhS99n?p{~ z+6#8Qkhfv8&i z)u(n|Kt)XKS1)oG)Axn;-Aj#ma`|O`Z=DwM$>>eb_Jr}N2RVZ{`=}Y~#cp0k%+RXi z{N@4(2k{&mi#|vc-Nki|92s&fm&$Mg*3=uCKPCTQ0Uz{=7ZO;dGU_Vix>T0R&=JYP z*4XUcAwyE6{!64s2w-S%$BD{TX6{MsFpteV*U5KwMv& z$=!YB^)V#tnXfe%%BYN23&_8EWgy;?VYoG@u2 zT!V>r{2cDgTM2F>;sVY3rEXrPLY|ZY3TGB~{9rY<*icaZ^a%sA<-VVMT)*mQ1j)&D z{G(E7hwqVRgooj;qRGBpBT}_AjU9L0)q@s%%8XehbARpRaei8VxPLA$!f<`8zdTQR zIRD?>Mhxc8tRQI_6ezR;N{eFVTJWL9t&*b0>>?s=vh_gvS+1j`wM>?nNIt%-FC;g?L5k`J(Lbm zj*^DenOTYYWA927_o`~iMLPTM3H49EZellSPjT|X^_F?uS#dm?Pp$;Vz5(O&_cOfH z(BQja?|gQU&h91a-Qb`uFTFOTck!ctH5G4Uir3!nlDTpv^IxNuz{u8qS`%>-@sobK zVB`5}`1p${@|+Dk?qFUYKRk|chq*!m3!%-X=|$HX`Ni2A^j28 zQPaXeT+_-S61B2!VY8NR3%u4_7o|;~cX<9S$vbU7O`^2xU>tLdBAEQcWwCw!U*097 z49`D|t|wEM!Kx)?s53)vo*8K}0W0H?XLS{Z43^=^4`$o?$LOi&@Whfk)QDix$ezg1 zmC)kLXVIu0$3uMOm4(kn_u*8sD$p3dvM8^d@T?Tih`k8-6pwycZ+;ctUNP59mg6z%t!GI2qvzLOBGkR+2cj0B;?N&olcL}UU_vT%eBra` zQvDAJ>B^NjcToO6wg^u?Y6jqUk(Z={Tnv+l4@j@eC`gB$Sk34BYa;L;hmKJ33=sKr z<@uyl%oI^!QN`s&ID;_LgTTUr?#HpdBi6Mj9|JZtmp>ig={%>4?>FNDtRKaX5Az0@ zFOR@0e(}R=(wQe17hv&W@-H3diXZCXfB%i2rV9xA{ZRf8v6}XIm)d_h97lj^qa&Wd zA(a&sDw5c}=n%^Nj0vdG+kk|Zl9bfEbaY_`j7#2sHUCe5+I7zfs@QTMzsnh1bP8HI zsNeLZ72!7SSUKC55TR@8t|P!oVXXv|&PQB*o;F2=+@0?>87&&eq<1OUJb$#1CC%gE z>6t7hW{~je)hlgZ%wS31RG_Bw1DWHSEu+LW>v+)fuA^DAfT{_MRAwpLcUNq7G!3^%Hf5* z^cQ>7l$3Q&+f7GDZpZz|MU<}Bu?lxz%g2+NnpAMdm!yaG(;1txRUaV1A$F{c)pl)% zdt&#Yarj!)ZlL{l!Iv?;&tsW#JbF$TkuY_DPnZH^yTDxK!eHKMG5&2^FFT78S+psT z{tFz(mmgWMot~WB@Pbws8fUZ{T)sAbyv(3&eEOtm+RV~cR7WE^B89#*rWgmMykm5n z^Qo<^(XFJR!FT$-n40xy{(w0QEWd%@Pdxr)jPt%!ZT0GUpqk6XPEI)SGp#47Z1pF| zmD}uExxGO}&Iel@gcVK#I=@W{?($L4F2AE&oUU_ z#GXayoxSC`OK2D$%_;4})gTUig6dZ(*I?0TpYC7-F+R5@XC7Z6EtEl2e>(h{!Fc}$#;5&_V{_g3)j@t1ZFol z_&n{c#zx;+FyC8V!DfR)4bdFk-K?|>!@$hv*u5HvXZ!l5dNZ46f32-Wo!V~xf-=Zn zo_0;dvx^i@F8=o28?oo`P7)KlrZiJDithBBSBzwZTdztp{Tr;cwo%3HI_tGhXK2;M zntC!~D|+lsdV@*0I(Ug4wAC{ypObpFn^AbS4c?2g!#58=LAsE%Zal1a-rnmyI5rA9 zuym>+2Z2mY52XiFTJDO03vPQXx|Yg&Zfgi*U=gET%3qiLxQKy{*A%_w@S_c{vwBLX zq^{r{%5ysXz_gpC+IuRi@?s+$F!j(q0a`p@7;p{fgZGh4Dzb)dzeBV)wJ`lQmAu^C z64}N*h9FX$CmvxOi-#8qc|F=Tig1-^41wvp86xH0bIbjtO-Yn5Oyop>;B&B#$|D!Q0`KoK}7Hep=(e{(Y zY1122)m<-u^TQ!VbYyh!^2WOIE_iDP0)@t(k0WL+pV zk{(hGy*1!c&@(iiC|vkzQ+oY(&dvK-m{2Zs!U_g|)d2ZveLLSiY3PLC8D~i;i-kdk z4Ge2PsnzD^5)XWb*XgX)x-9XPLTKQv{er7+;(M9;au8o2)lLGR#{|cWk#R{2;hw?4 zcfu)>`$e6;M$950zUC_+-4#S>HB3^`Uf)@GdMu5(P9hVP7#&Zu`x3^Q(Lxpcx^Ng+ zSD+#w?Ca~RHda=OxAICGn9c3gTwNRBqI7f`Hcz~Md@t@#lWQIy9%h)ApOqE>{u)NV z({Ib+tXq|?hkG|fl0^%ZW!d1WmYxz>h@@isVq|A=$tT8t-inX>zmw|}4ZbN(F52-K zkcQZM}A#AVt{i)e4~C8oga66KeQ2TTR^kT&P2Ny}K(k}4DZW4@JtbSy_;&VYzPY6=DXuBo? zc2_~pblbYep1t!KgU`hsQhzY;#GYRGu$lOYFf+6BN*p2C616lL?y`g1FWTcr&B><~ z=2|F{MUEx(^_^vwS>te+DLR5)sVu>_vaF0s*yp9jm@0j6o?5}z(2+QG4)CIISU9)? zqpO)4Xvhh-8wg-Uth!-l0S8t7n<9}Zlj6x_y?G;1dk45#4h}pco+Y8eD+8=*TP}$XfAa-Ds0uMFPcW7yVZk&@WI5uD@qYaBSEw8d^@*9GiN-cO6?@dwt;SfW zOw9-BaruoeaaTh@J-F<<@40Lw#!kx19Gbz7cm(29AoyNerFs!Gsbi&!b+&3`;TJPm z77k2tEl*$i}@vE?H*8(TEwah zsJW0bPOZabp`$6?L!xbdZZMjGA)sTg{Y;{T`Sr``)-!|vKe8-ON^3*NY(<+CODW(` z#-8S*fUg>f4pPdx9{hN*n5jCWOYnMdV6-a(rKrNx!?$OX=!tdFD;!d?aQ+@@_k+C< zs$V#GAby>qW^0-V&>eoO{r=gie$OQq7mbZuAs4qn(wXz*WEZKY{hX4L2sSY_bbWIZ z<9#geOK!;m{C;I_x9&-9b>p#c=1yLCc$`HfFed-tt^VcLO%)qyB_~N(zrq`>X6zLg zxy;Jj#mveNx~#a@izFrm7-y{8Gd6z7E`d7T)F@1H>X1okc}0aRp9m+dPL56iJkPc3 zZ_-o&x_qIO;z;H4t8{~)#`+(PfZMjyBB^}iUUh^>NguFmp=S|f;ba@qsu~?IG`F!K z^|g~Kfqtj31~B{2yoy<8-i(Y;)#=-XkXGf)&-(?e0!gaO=vMAq>(^<0BLqg*)s=T)&YmW`uXldFQfc-lB4kkF8epoep1&}eM$A8FW60V%!?b= zchDL5ZT0QndJD zd@k;-EEw!ai;xf*QVtA!&0y(6{%v?_;$X|;;HeUgDiF0F&8oHQm6bG1PYs&}2XdH~ zkI9nr?j2|XS0K&tu`GL+%h6gR>@}buGqN)E9KgNJD#s5u1fTC$(@p!~SRDX2X?HCu zd0PoJHAhERrL~W^2J+H*aU!^+D^kro8w>G4e0r*^UVVLh?fgG^#|O;~;RMW2OgvL8 zz{5<>{5eJ$!H@jG2>DjHxz12cDQdNHlo2Fw3;-z8DPBZ&6;uCet15Gs`MZ!FiN) zbj1rd8(}I?TSHHg-*XjsAgB&qr5tSZGjv-adr6Cj>Ff~ST$w!$K-O$KR4=5lMP=> zJR1Hxb-z)mH#nF}Kk@8F3hn6U;0Mk)^B?_n*nD4kZ~QDa^*ttkPiT}~$OT|(eB(0& zWYZ!RGLo2HB29SjR+x%Auxe~$?v{D8RT#jJoyeUBv1@PpN3lMhjPrw}Ho#-2ooqgG z^w_S0j9QeUTi5O5$*eO6Yh4CKwUeln~k9QG)!CeF{m{HVT;JfajN!lpR`1ZI@Vrlke!$VAXjut_U zf8qGQV3OD<*OVZ>76y%vu-WP!)dHA}Q;#xUDw*y?~p^ zjLq0*<|srtlr7|f<^x12TaKD8Q$-^Oybex(<>>_Zm7rG5b=tY!0C$Z?o(IZ=Uv0vk zDJri%&MKLK2{h!1eB759)KDMnaP*3Zz?R5KZ+;nZUgxE|riw(21S!VP524XKJlst3 z#@eix#pt`REl3EMOS9@#C?Czm)SVKj18>IJ&Aoy;srfO222n+F3Q1sUo_*(y*($28 zG#$XREK@%1*`6pJ#NS=+_Cn7$WqgmAUFv1oz#?&)(veIv=6VHF`n7H{eV1!?WREIsMBS~?RaaTt%vo0 zqn9dC{=m`f{rju4C==B}?ezcG-gQPbxpnD$SFc!TqFy?vh=|f#00k5jlu$$<7+R1j z(xikIipUj_rt}UX7f=w9Zb&Ff?;Ys~As`@x8UzB&iI<|^w`R@EubEjhEXV@#mXq_I zbM`)aKhLwBfHM#Bnm|%|nC}nRgdVNbK@PF%m4(YNS? z@$DD=vj+fXbM}rE+Y`HWO<`S2bMlAkz!bnPZ*Ev_NypkYXQtMwIjt_&iQ0+8=81?d zE;*>{BpsoKM}Ay9q*rd+{OklF(O}pZ$$YjUK?KTkSxV~7qDrLh>jxazM;&Yyq*5#F zfQ<5$H|f>KCZoH%x>r|L+;GC_wa%lD^A?#*T~I51At5bZSec8;(P3d>@rmq=lQJfG zng;H>CW5{U1VW+;x*`Bk=Xm0q#gu|2auLE3kijKtq~P8uGL<{-~>yOb)` zz@&~f3@@w*23Vq&N?j~MVoD{XE{V>6p(tt-k~WQx8hU*lUG8)}T(>w->?m4(31bcilKL{~}+u9#;Bm_sc{bYC4IpD_L*>PE2vd6R8t^R*Jq9hTCwX zuCTM2DNv1XQhicxV6$l1@>cYj1ZR6U+ZfAw+Iz(uic4n`sgi~-rW?OOjC);tVOjV)9=Qw z_0MWb!vMoDr>rbLJ6q;8at@P{B76bqw0@|#s4#d?9hp3B%b>#w%GNXsrwEvpwco^FRe{(2uDr8;a}o0OC^gys=A(p=x7ThN9TxexG~ zu{F=2)PR*cxLgPWTJ02;bg*5`PWInl|Tzgg9IUC4${$faKBO@4}otUNQH zXk(G1xJ{?QWhUnaWmu%*1+!=o4tNcS>g3zK*My3Rb#pP@SHDUT)2Y|5ti0C|1l@#yFFd| zln5c{^u%W37iRBs?Q0>DE0sCQeYH}q5!uRa3Xxkz%KQ~G)? zk$iL4_CZvj`)D88;kQ?0oXOWsG?(h`vG(MM14YqqoNR1-Ig;Ij9T(~I2CI+RZZ6ky zacvgX{oWYmf7vb{)MwbV8gX8JUPf*Av7>saSpN)b&i1T^l@gGQ^$+Uuw?u)e8g0`w zHWsbyuI^cTH?}iUVZB@o3N+f47*_(Ze-;vaKsWUFiJ4=`G@gyKD-wY`N~N(c`H`C4;$iYlKL|n zQ}I4avn#hP+zP3OM#ErM&#Ohm#>4vbl$9OS;8A2=q(PZeeGwy)mRejmDvRiz(*fcV z3*?+_5SI#D$|I6HEKu&H!a%Hgz;Br?J%6Pm5B|%9g?t24M=)h|LWdWMk=@U_++TB1pqAWzre!;Zq ze10pCHMOp-uF>Ty{SB|{)`?P1HLm4QznYTSBxsgkDH2~OZLly+upqIACECB?odK*p z<`;0SmtsA`&Ve?8H-_e$d=xC`I6{N{>*{8mZNu}u)fK!-9oIFG-&`OpmbR^b={sP&F44ucVScxlvdv?}$KGC>%-)8^fj4j%XdaScMMuzVK!$}XbBet8=R!0DLNV#(K;bE0? zygYiAT5DtVS5Z6{Cy=>n5_ybGnx7i~3R>g+7YIAZJ2DCgtxqG> z%StNy+fNmY))WsVAtr{3`k`L7x)dbNXbe0wEMD}1E5-=#H?D8T(P#Mi{g3P-VeMZ7 ze*$+eX=Qw-O4R!V+iT^0pict@(5S1;eRu8gg*jV<_KHL$W|}GP z8+oHnl9{w@433e+&2@`rRlx>2vlC!|4CKt}CuSEz(T2~4qtor&TL*rtgsnwsI&9|J z&wW~3oP5#Qr-eXy3I3!dZ6^eH2I{HpC;u1+`Bt2i@R@6|KAi*y_RIF5h~v?qOLy?x z9tdKc4wXmNQ|0yv$+Y(FE;69JVLFDtw-gJMkFxZ+&Jv$XBuR@-Z#~D&hcOtoV2urK zyJEgJs5Vq*4mw_Kx`*cU)&*sXLH6ikgzEV0YU}pqJ+S=DcWahyQ;qlo5AV47+$T2_ zk2x;HB*Ez1@QkEQ$2d(Tks*f0xys#0SIF_7`>&6Chy# z6%u-n8VJlg&ddy`O`hWtaU1L|f?ui#YB!Q?<4 zP@j3(aPIxUilPY|@kTAjMH=VxH2`XmfpcGe!dPvVk&!JkKlP{^S;1m<`u0w(1PBBV zDkCnAI%CmjG(|GHy`49C+Nu9B`HGKyA5hpcS)Lc^k<)vt!dZRtLZrWlfuR%Od|HOn z?8Q+%);y0|4*NcPI-1}u`GZKw-L5gZVtOPxMKdx|nJX3{tspe+bQGBHj(<;weFM^&yH^opPj zZ?(Z<)2b5=8gef%}cBk5q|;H^eN~%V>wU(IJR$6D=8vSxw*N@m9mBPY9pto zDN)2R@k_pj4J;v|t?aTA4wWg_w&i2o!*8jKw~20zHHzC|xbvIhpOH|j1>Ido4g>2r zuAV5XyxXWpPzk`oG84H`OPf>2WZM3CO*u8A_N-8-Z>y~~3s}{d@MB$Dz^1H}b!Y>8 z{=-a%alfb@=d@69{g+Z903Mh?Yxm4zDlRfKbhveBAsTsN-oDp*(ZUIbIFYvN{X@Rc zr~nc}Rdsb5wV+mP!noaEX=yCfhth_6yRHa*NjxP1wAQw8BJs^VZM~qt!OFmfI7_ya zK+%T}bzk(~sH@21;2G#iPvqd*S3En4=E4UZIBZI(U^ zaY3zRbh5;v^wEU2m-!1_Q$AkAv|MNBJ~Ub>M6T3g`xRKV0U%bkX!DftB(t%}a(nx= zL|uglDSmCwizCF7I&(_sG` zKFU~EEcp_|>D85#CST)$n5FaV@IYJd1^T$T^r&(Vf?gD<<)v4A^JOWEO*o zg<7AfY5%zd{onnq%%=i~r1`d&4Ybr9eqTyaDEAPMMh0Pw35F2NR zIT@@LEmJNA!XYdC(2Ftv^iqTmt*v%yQ(~1PFL46TR+>FzLv9_pH#eGW{uzJqqjC)N z*;Hjg?kNA+v#&;!jHEv#wDgFiw^Ucj8Q&0Ic$9AGXynr^fpqJY_>pr!lU}mW zanGxUR2)`eJr?u|cpZ#hOG=~hiv>AZFcnpx%+R-92u!@PTgmpD?7db%xNf^037T7; z^K9|)38|SFE^-z|XeizVHK8kp|BS_V?ezYeFihHN$v;9KVp>*&BCrb$|LWF>a-0 zrkNwQj6Xme`ycXy{u3a`5|iKa7O^=29eI$y>f(Y*ltJ4L92-C+?xCe1i~y6^nfmr^ z!H2(YS|Z&DQLAOEGRUnl9TpbWJu3&HXGsrE#0Dv*N(rdR$|Da+T)cRZS6D-q;lv4Z z%zQ4{^hWg?O^`(do69n;cF$?i66fUvbtKeu;54+f z0hkob8-(Rs-9q`FE_ScEalXj9o?)%iw)k^bPk(iqC!Gx>y_&e;St}--*i~Ona>XJ6mY*j=Q25T!14uLb zU>Zn}4`4q}t*qyD828<`u>s|JjypDK>)0A%9Ne_DA{L!Mrm^+Gp4EX=^n&_5-9Q!j zEEm_1?P~qvQQ_Jqq!4k4=oa1KH8Ewu>GfSBqmy^PUG@~pxTAgonRls?KOTCBWF^J| z*reS$^~oT|15~Q2zLhN0%tR`BDpV$KlXdo<8|2SN^CI8gSQ1`uN++r{l|)2nr7cW1 z=Il@6AH6!QqFrd1!`X*?k(^N#1tjy_t|S4mCE=N_Gy#{n-k)0126`w9qzg4RK&~20 z4{I%L9qbT?{Vf`d{;$Jpkb#jg8c3)Xgol%Z3ktM=aC8BPu2UU4R5kd=FN#Wm*IlKG z|A|UC>E+67698vfy#LdjjJxTBshV|uE?41r{KQAYxJ3}fee0T!kVsI=*y}8aydr@B z0PUm%4}V@)LLvLuo!$aVe4?FqR=bgZV4$Y^g9i_Ox~Rw}n96f9`3lNbZ!}(r#3Q#B z`}4J2pH111&$mZJM3j}4kw_t#qS~N7&rb_gHDFgQzp&)?;odtf{p_8+-ys!jzt(p; zoNo#0jQjwo?H*J?9r&MG3O`x*-~D%hX`kYvcdrJ4OdQivUbzW0BYFtj%q~cOX1ET#6_NE)2(i2@Do4zVV`Z6CIVeQOwq&4UBcoys^np$9MDxjV)5@_@tEl_VXqV@AV&ekMGlcafh(nykt@+VFcyvC+~WK+5OEx~t` z@?XVyH7O=q^SDEfLX4M(XPt=y-tXfZ8ij$lTg5vHHZ)l%3wN^21KnD701+Ge?AZcf zL^m}EMm3*SYwmtpMf(co!W=+P8f5y8 z!mRl`>>dhv*abb=rkevji8RKuQID`vep1J_eX-}LDx-TPDK7<-H%&&-CIW0hIPa1Y zYbcz090r^DBFLy+?HJHgOL^i?}SkJASi zcI@!~hQlryo-2hwe$Tyi{hAg8^564u?n)W9EO~72x-atuw%6v9B|pR!;t65|MDOI^ z`P@g7g$F-!)4sdE(%d+(t&_R4+Ro#mPJgKSD9#xV7axKuG=A#asW0ZL3!_hXoE*&V zw?Jw$i2QqHd&KkiMb>%?GRv^zm>klM9d^9~qt_q%5&$2;v8CG&YGYqHN$p@_lWwc| zNF7$|jKCY|b~h~KT?lwL6Gqs1+TgsS-vpvx-E~W`C%DGiHl}zcp*sI^QvLgW6`B}{ z;*&7~RwF^GdR2|E)xOorcZ1!i@ZIKwaTy`z*5Az#sSuwFy>LxlWXZ`sF&pJ!kDZ3K zrdravZMmXhti9(9Nd_Y>(RqCRq!&BqXS5a7=J5$e!{nAN55!kBep^{V#nqJ9PM7TX zb`^{|BdVQFvgPSE)~5s~-MnNH-+i7LZHvNQ+;LHmJ?}CdzBjHBoz`chTP<1jsvE7D z{D_l|8Ycy7C0ciq=^odlNbCdAS6U}O+cR~TJJ&|rS&HH%Bg_!cW-nyM3@R>T_egfk zGW&Bu%=)G)dgHsRx?aD8p}E0l8vH{^w&{``jHiPo9DG8FMg7Tw5NyH zU%@sUg87zg8)a5;m9kmWGqb@laG}53dHS6`DP$Iw)G3yz=1uZUE?V^m-CgLgMXuv6 zdd;}8$$wAHWDB;lxO}P;C-!p8q}P{&uVke9l32#m3tk(W&zG;7VKzuJg0m?GA+;fR zN$O28wa)`RQwiSVDu4H>YlKzqO~SkW*;SOb_LP?p$zjc7V~g}9F!OmxbRapAZg$k` zX3D?lA|9{wz2ljum rL&!7`$o4kd$lV0c2Ztz&_W_6x6=C`b$4hrguiUz!cKw~a(c^yu>8H8O literal 104559 zcmd43XH-+$+b`<=ySEJy6#?m+Z9%Cjy>CTCMLv~Uy+fph76>f~At5;vVZZM=_nvX@xMSQ8hfm9xWUV#VoX_)XGog14bUBX*9ND*T zALp%`*Nyk>JDj|4-|wFe{Rg~4|L2XxzJ15{-MW7Do?kL)?BFviQ?%Aft!ssQ0QvCz zaSMlAa}xSr9$hsOH9TIN@eHk5Fqj%<{efDkarN)NGil?-H*b%kN!?Stnk~f!)MpIop$a3{Dq$H{eAc7r2hZ$Uns4#U_3OW z^2ZT3TXm8+ZYl2W9hfBd@sXGOiEqocjOgT1|5Yym+h=f!J0-YG?g6+AsXIgT7z z=U7``Gd{6urAzKc1e2n19`q9z4y0;!#Vc~k(U#c@pN^%{M z$3{CAM%@1{Gkis}vaq;+_rdAOj<>eKXDic+#ePrt_cC0>NE|=xCA74})oL>{GqY-H zz$r8BL|?;Hbehi@&FWxJ1;eU~ZsAuGb}ylm^VOfFxw*MTMT)0} zRI2H8x{i(xCntqr|D9NWNP#0fEPzVl`A^4^hrOpdO=|B$kuE7Q-hpKaNlAiFzpgwH zEhrhPPP6xuv$NB<-QIT12x4hTxGRg>ofFU8q@xtIc|USL#WtkJUC2Y_FZK$3@zlnq zr%%3hP*hSfGc#3C^bWYjvHR^LL4B;{K}RBShUe5NdEYfZEGegFdS)h;GS}7JZER}I zGj6;$+eo_C4n43oE%&DOi)d&opY~3~9Z@JPEe)hD#Ky*&nwX4@p6%MZitW4K6}106 z{qWoIW5I7OEeNG}j~{O#PEYsu^(n~9U*A3VSGdIQFT{9{PWl^3`POmDE zU-(^E)QNYRFKcZ*34C&K@yzbYe(t+#W;W0}nv6Wc{t>Ne(HfFSe{C6PZe}L9Hn{gi z%KKhD`Qm+kAm>lap9>Bt$DJyuCB?ay_txF9(;nA9Lhg2Ucc1jmId)9J#6OorB4xE? z#SxD!U)Vj%+s9&m9ldI6U|?V)A-ix_SlFoo_jaUn@c7={9Q>$!LF&6~gz7!F-n6Id z6~RSVV(Q*%*l#FwswK_#;KI+la%yVgOc%Gy|IPuSCzGEpsnx!m4POHPnO%;+^6u4u zXZsC3^*lc?@5)K4Nitm=mn3&Dg6M0pJh8DS4!`ZIBs|NRIw~Zu%p9$&R$q{> zuC8ts_Vl`S%Oh!fV*FHn;*$Cg8--;ORkcSf(%T+GifA7P2RER9rObb7301Ae%|+nm z?o6jFMBu#cK1!MA6(8VF>EcfbtusmKN;u|JAcsodHZjzy^%<*qgYL@E#jki$@?woz z=iz4*#0^d(4dmO~m6R%77}>x7L8q6OdmAyjnJbx6Qc?v)MNz}zva+b^>df3+v@P7j z!^70no1qqSJ9A-SA)VTlFn0061qTNQ7ci#l919ChBSXqYDTm`V)YJk|sy!@1)OGKy zQiQ3uz3-@!Pc~y*X|$>4vz*&Q>pp&^;<4S~8e9GE;i^xQTNbRHHhf~;4c?#uMzug2 z3}S`avf!<`JC2U#Hsk$5ODm08%-Q8YuvGu5xu?XjQ^|vm4XK{?GV!O&;nmH|2;-N@ zyK}Y^-WYsL#c%EN+lb&NPCvTsPFPE*E!+T1hsa%EvG5HDA@9ie}x?ziOSd2W3x{pEsfB-n(wL zXn$s>5tdr$?B0IpyQCO7ukSy_ULNE-b?Q1vcJi^r+5Vk7c%2C9?_PuQst@aboL7@| zK0V*u$lR*teIFIyjos%9m1gWcynS;{M~S97iRo}F}?pGKE6`n zi;IiXP+cZG-gP`+?R!B%K^1G2om6f=)owp5CEcbsQ=URA&aKX@dpZEksO5kJlSqX~ zKNAy^-$TWAE7P;>wojTm5cJBMGvXVZwvSZ{U0hr=nJ`2&b$m%nvrzXI3&)72|J3g* zA3L)lpinhkz~88QR7!X-8+2s5`8;V^Y1HPTHAk%;n^x@ch)Y1j>G6eSH2ZmC;;;jf z%uJ%gb}l%ggI8gb+qua#mTla{RyYt3U44 z;j=y+R=ZroU@=7A{2J3i43ln|y&>f)sBI60>Ih4y<-ar>cy9nut! z5LJ4(`9+ZdY7-QjiguzTzS)ktyZ%hhuk+LDRO{=9ja!smxc6+kgTE(uIoUzv%MDH$ z*BFPa8KOOAo$}~**jmx%JogD}>DV?wxqyuoTkWX?cSzTCD0lEN;gbX9-rf{%N^`T0 z*b!`dy9TNAqBq6RZM5p*L-t?)K7!V78G)ILTftciSnMT@c~(@ zAnWkM$-Fi<3tQ@5%Pe}|;Of|*Pe5q*x+*9tn%y4=X;PAW6ftk!6T+qx=@{b7MY}Si zQUe}4Iyzb@DJl|)%NM^&NK4-mPc+n|bktBRwdz-j4N~Q82RqZ!G`-ryXrqCMCYH_~ zNM%H)ZHMUK-*tyl6P4U7D&9*wS2L*FJS!&T0D-6btw0{Q6w% zxb$~C{>KkTrxN=GxK2)W^oO|E6k4ip)M=Fx2&O*wUS3{JK=T?8g5Cp}#U;fL6(HEG zY^2BVhl?Q}VqqkkzPwNY+AJb?|BCiJzHvOL<uV8~veEH#Sc9X6IB_+hMa3>FpBmCyncp1AU~?sTnFZ<8byQ8sA% z?cm5R=hEDu^~rN$SgWqomS!Ctk7D{v*RAijD_n+7>Za=GypD~v{EK?#8rF53R=+NS zVE(A~oV}6qlY-KsY>O&uc@}tmR|uq#{8zrkus7H&CJjRnA}1?5Hkj3~Wp?a0$*p_; z{=HGg4FlxmZ3Y3eK%cc4q))es_`1~HAbx%RvVLO*4=U;BXkj(#Ct3LXx~L!fkBJG} z5Yb`cR}qask#5h{lz{2)C-xSq+ro72%PUaR$XK52C=EZ$r~D6_JF;=fnl6*yZPbw2 zWfx4XYr{J|+^si>heb7fjqT&Fy-~KmIkXrpvQ~=eVD;(C-jF3Tqcy#)e5g?^^xWjm znBUOhS^E5U&3jhxA#pmW+jicKGBlJGM8VAuzvL>A@jJ)Wv7C2jKzEO?mV2BGV{Gs% zQ9sp^t5HR8-N#8tB%=3SNcOBpq{TYs`Tm2i4*d)jM;?0)A>L}pmYaF|@*tPMM@{G( z3EiWj6}D4u+-Tia6&Sny97^Aa!IsDE01SH6NXHJPeZlsiP_!M5v_ z`%B2iI`sr^2jBHf@|bE(@gUB#88JwWweJ~5A*zd!(BLNdB4=l3vjQvg>guOIe?H%4 zP&hDDvC=!09V4j$!Gto(Vt=7|ZT+V|6`oFi?>v9@1Cq_;LDDzu0ylM!#KVa(9_i-R z*49Sm=Jzcu%C?abzpq0qjz{-O$;d1dFpvus_e={dYh}j%p|8#CwzxWbBpm-uR6UR> zgFNzMrgdDUIxlNtOO3B7Fd#M)z7qOKjvK4^w8V$en;(-DqwusdYLNVzj`IFsn|(xV z^81O#shXg5;@a5TirIg)fHiE|TvtYc+2WVXf+hOHUIB!NZ-A8k}z8q6Tq%+`0TCUUn#hjU|zL}H(FKPVYoa|Br-%})rnHTCgE&bz7B$jC*C zprXsTmC@a|T2H<{OHNKcaVA))QXZpB%XC0KsCBchl1c;ZWAlBcUXOd8A$ffDPh417 zTgwek{IdJ2M739MR=JVP2S`nr8=6v)^YXKCt}l9Vv6FvNqzOss4)VXOU=9_nBz*zfR3!*l05wdde93zOwE2izsGGC9jOd zDRM&4%4a#8@|hycX0vQ-b8oJ05V15qc#;l9GJY7sd4Iu_&TXu@mCeWDEnn9Dty8=_ zE{t||%~n?IV%}6udY)$KHg{=1&$O$vqSH;sUXOqepT~V$1~(ds#5gFi2;YuX@wiw39ZG~^7U03NCXZSYXfA{6Up|$r;E=PkgelHhmk?kKQ{vB|2BiI4c@ac*y3>? z6hWQ8>)~OP>=689VrUlfpw!-VEBF26WaBZ7vz|{L-@Gt&y)>_8>z%HsyThRBZAx?X zdX|WXA5s&oy`k(h{f5rL+Y$*dR0x-#0FpkTD;f@U;*5+=4Y>YB&}aG9ceNG~`SWh< z%@{-X;j)Y4TE5GAa#^B$sls5gc4xNd(|&Az2WTUqboNf-CC$2JK^x!O-<7o+R2_bP zegA&4AL^VM$a=lg**%lAtkzpmK@>fIe}6KJ5V%Dn(`pIU+}^Laf>xMMaCZwVYgu{Z z?LXIZBL$Uge1>MP(4?$uHo_$9zpUSaZ!{vU0>>26P8V+z9+Hf!JYfql$RAb#p8Xv| zw&A;Ag@9gP_ib%v!>LsHu4%StUw`$8lQTWhkOonb`Sh#s9u_@HP zH}R?_t)aujKsBxW+jp-V6_>fUe!N4O?Qz)ysYkCia>zlEehm>Rfmhr}AFE(DxqCwG z%M_GRkS|ZVnhsksRJ`WicH+T`sBobVmoG-C1UPvZ8L{Ep4ZLJXiPsQGMfL_M`c>jc z2NLtM+Ymt=Ayk*--3+a1Hy;xDZ{Z!qU15gTT4(60XB_4t$&p8vGpy=O*# z_@6<5!j(OwBqSnQ?Rd+JG^*RF6Ei-?6dIpC#nhpbX?d3tv4#P|l#9Ho~Z9Sjs!FhQLmKCx&Dh{1L=M*F_jH*^#8FdB{ z52Sc?&M2dvQpo;sM_#aEr2dg%Bb!gwW|wCD9WQZnrYzeW_1<-8mZURNsoqH?S8As! zee&&k?VjLA>w`uLSe-=MHy$_zp_RwB{~!S(IeZz~1izkB-I%Spz4|Ch<@~TJ!xKBJMawkJzpsNb2O=k-9@dzG20+_+ zplIwDTkG!b-h7LP6W8J*PLTZzcd7ZD@dUZ3$K0N6^G9qSr&?uhP9E93#`V`< zP>d`+c6sh!^Po(ro-e7cR#8(^(=a8a3byL7sKp->jvT3g{Wbr?Ui*}Bf8y=wY-4X( zq)W-42tH^|ettV1FFV@zgNF9|=vbv38R?4Q=~EaP|0hsJU@UwdT3J1v!PgpU?@uR2 zBS}4-|xlS7N4I1Km_?Ctp=PsCUt6Z=YS!q<@G>k1{EReF!k>(o7r?*m-!* zwzXj`YjJYN1k2hL^OZ;sGFCSm56Dmwh+$!1wVp( zHs*}{tNlG^u^g1G@{vjW%Pal85f&ki^^4ZCH-w?{@9jJ;2W@`&CAU7?kAKV3dC6FM zlXXS>y+%+FnUiPa3MO*Ko8$gHdy&)ES~t!XA%g~{&z#?&uOoQ-D{=a&P+NcXk84Cm z{GHR)t}2aZ#HqDgYx4x=wwz@D{aNB;eUY)nvZ>(urD-FbKdL#*?rF-oYdd&SBPJlV zb8iAuE$G|M(4yhH!lHxuWq+y#>Z1Bx^FnQ63GmgXdJW&BGExL%_If+C%yE4>nL?mX zc^dsCZCU@YVbdc`*{{1vR}@i#{g`8;5$INw^MsCB{~Am& znBLag}It#)8n>uLz_a245QSm>d+xBr4VOc;|>Cg953ce7fkH} zck3My^kQ)|fw5UUAJDgzrxZkr>VUH8o!#qr0ltCi>Y?mA!a^0U2W@CfQTM=$rv}C} z*=VSc{AWVNkN-f06j!1|k?&O8T?L0!jBMO+f>Hdu6+oQ8nsWY;OX^O)S98_VQ!mM- ze0z)1h7YP*PfY3R?@Cr7gr0Qjnml(Vm`hShiZoO@8{ycBP1b;}6S1}k$6G(%oM;R_ zDiVZ;aeY1r!6jk-Jf^@UAa~xX478JwQQM!-SSH6*l-*V)>*(`x0O{qXmy{Hgl|iFL zLWEUk0B95t5IC?w=&Fh|%{Pk{P)G;N{f%NY5D)Y}LkKWnbd zP0bXJ1$tk*mJqXD!hb`%PSt)Rr>ZD7*SZ=OhkZ+FNh4l;bVJvu9kjE>g+=W=RmXrQpNfOvs*Z%Qeu6E}dS+*E|+Fs}$(4&&} zQQrTddc7R)vhD<}Vt;&J-8NMXugNI5D-^Uc{iRt=dyt;SWD+@ zlVw~hhW))9qIR)#X!#^o(b!*QJD@`N{AMen{*>_7R5+EMku8!CA8%=F97O6ep>>uN z6}bV7*IJG{$PbSSq&K~lG%IwAdD)SuF#9nhJ9y>c%BSbHdgN%`8%sefC^C@sF(cY3 zg`;v~@KIEl>TuKQ)G+Dr#LX@1d#0wD+E^aR`^QM48{rn*qhHEZR;u~z6X8DWNBUS- z)r(z66$=PYCSLPtt$f|@dgJv$NwcDW%?aHeF88_#Lw5Z-!8OrUMi#Tt-7X+7`A3YU zk0wHIy&`Qil5dK4;gwF_H(>1O%WnHsJqw+E(pcz9@|z6e#kp0k^qO^KId(wy731|36< zZ5JYh)hZ1%sMYG(5t|l(`a}aZyZp}K%9{1!WIzw&uT?YyZXvOrA$pWE(Rb@VeZ9R> zR%L#Ai#16ppRw5+y>fV5q6Tz!$W2mGQZ!(?Si!mf2FbT%iz*0U`SX_*$K(h*zJd^_ zBI-a~ORL((A#}$&JH@om3#$VlDbgN?`Y6X}wmzQ=RKXZ=LlFh1rZpZ(Bzz&k@5Dd9 z(863)Fy{r$hu4rsFWVIF_e)!ro|{eqrITDTGi`*v!F5r%w=(C;pHO;Y-fKw-B+OA; zNgz4~c{}ClT4%xampL23@%F514{@&QvXKLDqtu@SEUtbUW5Ni*eeRW4( zetiArP-m4HK9#~rnVCsS8hPgzQc#nV^QG+bS#j~oii!#VjEfe7b$EGrd3pGNuj}OG z)Tp+!@>`|$UD?g9#(*o=4#8Q7oYd`(D8Onm+Tc`)WY|?I4aA+iTW0qI3AJ zwTX$V-{AABd&1<{U|Cp$;lEk{hf=+?>ZJ~gDv!0f@g)~4qp`d9Kk${0AlaoWf*9EO z|GaNY{4aZ+f6pTr8x$k6EPwxkku&~p(OuEF^vjnonVIKy4a8>#_j?oX%w!wyYWBb$ z0uI%#rt$ZCc?BilX}d}bB>hF@^SBZl6T{urS7V+7-opQDe(yVb2O!8X+PG*jA~&Z% zN?N+GC^vM@ssDcy2Cz^{g2%xe=iZ9Z|M(*zP|Fa_dzJ-`;|+V8%tm4lX0+ z-sy^9)f+9x*RqPIjyXBGRWAf;y|Ia1$;vWB@(ySOY#h>RWNbI^X~ho_w-()jnsO^? zzo71Bm zjvaoumCIx@J#qez^t~wrHr%r=`_reNVR&mr+lEcAr18RID$_qL-Kv*@7u{Vv*WSWx z*1E#AUwj+~u3TGNTX6Jg&47*^GJG~~gLU=gL1B-k6KOdpcL#2#RKLl?`wwzP*u2a& z$qp8&7#gz20}6CS8{0W6%G%6(zW>1E4RsV)r|yJ$U44x;YqGlR-ZQ*^4GYV5Cuq9E z*HzLSTwDqUtxniMV`Jk05g?t}WSJ5U=h|Gbu&{`ewytp7-um|P;2&cDIl4MKT<*+X zC)ajIYX81D5iT3Sjm6H)$fD&j^=TeIzy78jeDs)yqtAVVGE_&RN~s}o+(W}>5$Uft21t1AN*e;sX{0r#Mw zCN=zXM>%Aw{-KA(t~LU-O4>jkXpR_WCQ916Mt)oi)>0M?BfY+lYiX4oFh~+R@(!^W84X2eP2%EZG zOV%fo2T)`+987mF^e|$lOVTz}XFXQ!Ix4Uri147uBK?@5n-gjTZ#S!;#Wr#lH}+@R zK~WnZ6ZWc>lQyQZvuRucRj#-}KAVqy#MjF;i>V!-FFn6~J1nFBw_Ms7?QbH>d$FI* zgqrQmoi8cx5*Y@ER^R}kk(Y-W8XAC|b+@;#kCXq3!(8XLG+f(woT{vKjmzI`R@z5( z$4T@^4^ZCQsy?bx-gIT$khUtju%PMW?5ubDHprvMu)gb1K+j`Ym+n ziU#&^&qj$VRUk0v2k+%%Wh>LtierYejs5j46)H<%w52<4ZU%?4X?b!xMt`l=^mXs^ zT3V*S^2N2J$xXD6vf5K~aHme4>h16I8E^e8S36x_9D?&AFoKgF0GIw>Gyi{iQNKWM z$7BZfzWZDRqeX_!ZDr;S41Hi)d)d3ImAW*CHHXJvC-EKYyel`_J~?kVA{&bgvq=KQ zLPK5c3B#&n;{3>9)d=K!UY>BVgPq-sA)7Y41D5OR>Q=twtI;r zg_ofp?qRC72KFB~dRocNDhDKD4sMV|D;#^Wt-JkJ$#4e4Ov%^nmdC0MtYE@8RBTHm~HL790A5lIhpy<1?9e3!O;>ZrKifuVAO5x!r(*TuzQ zw8~@3M%dWIL=deALIGW=HND6AWN|5sa#YY6C#0?@j5ME(RH5|7XbUNW73=q(k$-^g z0b#V5X$H>EEUDbOZ@?#2INaO2F(V6e1tbsHWm`>$xwoi`-0Vs{H@D^2d@zURFjLQ2 zTqM<)PQ;28xgi)#=8KvdD!d>qaH7Qmgl}-viPD{ffs+$i>-2nm%3=1)^G)3#qtQ=z zO=SgUPkWuWqJqg!Wm`V)OaS^Z6+#7}gQ}`3VA*Y_4CTvy#*v~JEh4Ht`eeaSaL+rj zjNP1p*WY9R6-e028^CtP%jXC3=dYMTAeaupIFc#!MVLmEQbwT4-`d!kt*zEnKZ)D# z{XHRJ;hJa$3F~15gKaNW68J0b8YVnlsh&*@>>RwDCZg!&fJ)WqF(E1{x>=T8QL0?R zq!P$+hzBhoN43RslITEBqW;J{o-|a!>*jZ z?+ar7g;)To8$dG)i-Gr~vDyI}&T`xab6svnhIbzqc`PFD=CYLwypvWP)VPKm*N^sg z$$-qeo@3NUA;V4OA7 z^YY=FJxG@F*{Gf@VKu*%PtGW`+jyP7e|7GTf%JsAkrAaSAuCG;71N*+0VHz&(XuHb z9`b~-Z`Bh@TzCvKI5bQdnL5& zq|^ED!4$zF469`w7wG$4K{rZhHB%Ng!NYY}x;09}fixJs%~UEJJ?3JYP)tMOWlp+2+ipS43nLjVMdr+7UaY{2o&cF-5hFhf~0kxER= z0D8Ii9&q1oqnBLWZ;{!3vIrRH9QGAb7iBcpJ9--XiATkP(A437<82Oh0A2AJH@fQR ztxGD_Q{qN;mhOD+LpjrX_eKNp=!C%3z~$E)YY7P;OogIvi|+J7MFx8{+LDZ>)pux6 zD4bgKRYQ;<(nUS)%QHo8O+$f$+tu0mc6?~CEZp~$K+u9oJT6s1{Bh>0L|SoHyizJ~ zyotHp*X{<;?T~~Slii6Y^zpw)%YhJNl2W{G$|FD?Lks{iswB|K4w$(3wv9}?AVi~Ppc0S7?de{yxRR`FLv`KFblaG(A)R_ z7PtMs#(Vx2mvqw4S~JOgQ`C>Wh6Pzy5Tx0qEc;Z=lkdz-Pha;ccjI*e3;BldV^F5| zrWzyHf1Rj<(g({6OnGm8{p)6>djXz(|NEG*cd3HHtrxZ+Aa%M^>r}oO%Dg^EXK!hy z>;zy`=+oS-5&YZ((VAO>9SNmW;@kyE$;JJm>RPh0vb}~Hbg%c?*wv|4VFWXx3Q*g5 z3_#Gk7yHcZCisQ~dB@3T&-YITjMaDt3OeCFUIsucDJh9uH3czx5qVnW;pQ7#4{Ku! zsXazAm-Q-MPXrK9rgePD--83bR&dB z5@%*I8&ZdBhNXEd?ePhoY#0|QX!v4?$kWYtg^?E9x!r+2LwcK2g^)PVpit+CC z?B@p|esFu`CC6;Em|K6oFKT0AswEo6J~$o^-$Wt^=!eaz{ojMe77atg0eHA~|Ne4` zK6xAsVQ-l*xaJ`D?VUhq^Q{TTqINSX|SeQ6dDj_hw{?08jSn%L5=Rd*9SlgEqSE zOYk=Iqrzs9d^p}PO&H@dm#nljHYmH)9_zmrDxNX$bK1lpQQhAdT++45co}PWtFUh{ z>nI3az^V0&We8v~_KZ+&aRZHoH}Gu+4<8Q*PlJjN@9!`NmG0i|JozfA@)JsObks*=WdtTxM?Lu|@wuTNC(J3=(BsDKqX*D%M5% z_w&0RGt69TyRCPSi(lS#xERB1c2{&A{y-;ff_W9ek1n)>FAPpa&5uc@m=k%9N+~ZE z$blT*{)3rGb`q|!aAhcNRO40RqgIi773fvhN>ac_;>GOLpoYV8lXou1f&BAYdu2TZ zt1GNQ8Ne`I>qx|OVdI^X00`+fj&ZH0O>Z8Yq<;Qa3-GEG zH%Pn$I2foB>FEuAv+1wHyVLBe1js=&wetoa-wq`_8PbgwQSe@PhhdM2I$QWnDt;Z`C*0QzwVsO4*-JOfdHMpI23LHiXoH5P|2om(TZOz5|~WPNtsp zez!v}RlDv0tHMw`(bek7w}V%>v3Fh`;My7#mkHgi$b)B`o!oeIlPp8Fyf<>NmFR8h zYJMX-5NoLMUR+#Q*rLu`TN#(MYlGEzA7z1l+P47Ir&oV^PQF?NCH4(cK-J|Y2<{9Y z?Z2a!{S44-Q_H+?y>O6-n9>kbayf(&91yeB_q|wFP%!#lv$4k8Ib-a!y5C*k`%G<^ zI^0MVKs;#9JZHzh-$pJ{Na5k&itT&|=xxsTQOiA*hBc2SYF_`1HfcSw|JTrX`Ch{c ztEvx6Nywxsd$b-$hhcfNFk5Co*II1^L8p|!&tsPRhYFFz2uqhHGjO4*bt zyF9uPt?AeHO(SsQ!bNEuc1YFE+2F>5LHEFu6?$5%E<+$|_Hgk@TM1RnDJ+7L@-|I- zatq?ibdGlgX$fQz2==7{8y*B|lH9j+?WaJpp6xq@Y;?q{FGc{zB`!8L%h=Lnq#^x< zSJIO|(#L9-Dn>w*;I5I82bRn}?OlKMrO(+N((94VufEyYSeq=QylxG^4{UWUVd4dI z38iGcF~N?aWgF*$_4h>ouie$*15$#{!Y5s`UVi=L)E;MDq@Cb6*C|F;AzPoTO^8$M zFCB2ps0R}xA=Lh$DkIsoQNFSEqXtk~D{kSl1=LqJW4c6MpC)UIZlN}wby-V{Vo$~z zEndQ!1%(=P*V3X)_2gztQ#1l`xJXaSOi@kxbkBT1a~Mx#WaK;)0Q$8&Xwxpn7$gI| z!A8gx&fS*iWS)I|mxz+m(n2)7nLs_Pv)6ZZt--Y$ zE>*9BvYdQ->5vr2w*vB0<~WtLkeHaOD-2Rx0_gW!!NED)$=?0*K)p;mlr}aMtx?~u z=+Smsi6bmLoc5#v02OKveGr>T_?J4&4;cw@O z?hu-MVUdq+M?&>a2PtuAYwAMY!X7FaJMOf6>(GKtvKoz;_OA8q`n>W04hJ8$p*_i`FN2*#FxZytkh?(4a7h!kB_r4hf@QK_oSJpta{~a54on zt`Y5aApE?5kBm25ZWRK7*=0w!@yn@C7lkSgM#3lP32DpgYq!kh2Hp#yVW}g>j35wX z5yZoWFldIMW^TM~I~N|$q*e};IexLHEX;LkPpSrG9TZjf2Rd+?rrTC=t-7s!KS+fd zRIhGnHB%yhoYjb1u^TDN-4l@iQF@i=>U}er-?I3j9awAt#4%Ss#~94@)DCEKX&9TD zD%f|-0rlhcoz(>-`)OZZq2ygRST!6r6^9O>N?nl3DI8J_TnfYm4&dbC>v@xuVz~rW z<%>d&3O}W)xCgB^S92Dc3=~;ZOL*FTe_JE0LU~gKCjwBV-Ik)Uy2%Yq^}b;RbfkF5 zYQl(HE$kcf_4XDmMc!l5NY~IB1BVGY71@*%JD0Q#8!b70EU)9y#}^!Xq8A4@eXtAV z^Qw;%|1ltrZvlnauBj+re34)Y~52SuMg zu?o4fnv)TA)RMW|kL6QL zf(@NOgA8;)EK0N0r{BJuYCm0W)BVLx@et%ahB@!P2g_>*-f8cvMID#ICah2T)_e9v z4zP1GPGSd>RXm~fmr6CHcZAoxi1=e-5H@Rj@_OkbzV@JvcddE(&ci)VTL6HYZ04J_ zH<+nWQyO2%rpjB^x{U!qeucI{>XS2&SEHr?5`;r)X)QP?5xm+PUWX5pz=nZ>!osm? zk3mF_K6`NN&w&*)=xwCy zaMi`J7>Lz&zNw^Hxg&2)Jb#*k5=Ncs?1;NCl5~hQt;=Qr7Xlb@@(K!Q=3_Mx5s&GK z`I{5~SlscBW`!2ph3+s~W;~IctbgBi=ww6hM&pxmh#%{M;Z~ynwZ!Zss46DKxmwZ`j0j}`%5r~Xs z1rv13rO#5H&_7=Pk#QqRK>hJuV9C`eEb_`)clQpKdG5sIqfTG0bH~(6nicrXXZ|4; z8D7%>m0@_9J33zAm9}6q2-{-AdM^)f3aL0fwzZwu@?JD6dQc7a+oX)V;oJD zUB=Y`KtH~wGj<=K))}*)^XRj)c=%R0fQn^~z_MtGI1G6vw%A{k#O`J;B>F_g?>04? zlwWif`$79W7r%NH2;b_8z|_;n0yYL~Y$g^=B{QNte-`D^$H-PZOP1vd<(?Kx)#m>B zIeL-8N{RpyjJVOEWwiT+7Qz)8m52GJ!Bh&CUbuhl0fR-u_>SwzYA}DE0UolGgTovF zMervF8Une#zsS0F{W*m~5v%32+~YXo%1^ZQsh_Hg=W{_!x;dCr5D+20cVgn=YM@I_ zzB+6hZUN1}M##Mc*#U3T!0Xcg|ix7bFiOa%Z+r^CYq*zgZAMr zb1NRRQz3gZ|F_oSAm)$)moo6S1+?H+7ZeL1Y>8`F8saBftm|kq$hLf3xi0td>GyAG zmD^j?rHH$pZ6CBJ0cBnJD#N7^tr_4%=$|OvEmvRRx;Z~=zU$41_>Ov{Ik>s8rbJQE zyF>D6eMfvC!)djio|SNDDtv1Q0N;N_8RT70QGT`MPfGQx9ckLZl;s`(TJuXDw(H4a z!OkH;CAZO!|DX1Y06qn0W*|Qs(?yv-8LiQxmJjX;MOl|SQACUAQ%pL?wNlBVDk*U# z@lzUYZIk=O4O2H>%fe+~sXXmwR-RZ<+6wQrN(il{Q152&z}A>M0uy3Co64vNjXBSG zTKQ8I2%Z%A05fK%$^eBBIaC0Gu^&tfHJ1k;1<;mE?mYmSNu5Vy7MRatt9UgcE~&Cz zE?QKJwM6!FzTif0mG&fdz*?)_k(Xf>w;XQ)P6%R(N`#H*&2u{s3M`St@NqF&i@IqoHVf~G*F?H`cK;AJ zKx#@C1#Zlpzz{lo1*{O;oZ)=Zp*Am9Zoz<^tL4V50+hf_LKdmyyDVB%ygJwAVxY$vw7R@Zd2YaPw|5Z!rxdq>+|{e&+Q z)8+t3DF|pTYzm4^s|3+6oH+85?WkCYkWkq1o_dA``B?n9?Rx;2`Gw9R5w_rg_GAl> zoSB0C0n+KK&rxIFjn4RJ_N|;~loM4{P%J;J5UsX67!5dTXJm(V1FvQ+DrnvrL^ZK4 zLiLxln5(Ay4<5ZqK0I*gY&eWT)o@yPM-G_vpWimgHW;gxbEQUzC@g@{1Qyt4ewxUSzS)FOw2HIZeEKG=ar6H1hQQ0DZY@0OT*qEj5)7}$E=i) z=!1`<=}qEVyaSdME{8*Ai8H~;vOyaFMAxmgxie`9$cG`;WOR`7FCCUo>OmC{%0)B+ zcG8-x-YeMu$%I$FeaBa}f)uOSufagN!_KgHUpt>}=z21LBU+?yaVEiI7{rJ)w~C{i zyf;tESXEsJl4%U#;y`-eeB78TQ$P29w?h6yKCGZN&~%G?^19sb2>{8lS-?N&G1S-e z>(17shqi3BY^1KO0gIKF4VI8UF##%PxHi--1GWsENiXEiulMCz&jNQb{lN@AWy!%O zeH+un4^2KX0AWtXPd!}dJ)^lkq^G^gEX8k6i))1s&wh?EjM!h7sTXH|;8lX=_Pk;9 zk4cd1*|Gm!BxIv$v(wX7YhBSB%VUzI9?JOrAU=X0al&t=orWH^*aDlh>+ zpASQ)xXbAV1=BX8JPGgo*GAkiaxNa*J;-h4-$N!I`t+)C+R(O4rnt}*;8zCla2XLJ z)qlP|Bg5Du3ARDQI((4Rd=ri6$uQYhcNKfj+&IQ2Dq&LN{46`xzwYOq? zfNh(rdO_?!GaccHQD3+4o+5f+E^e%PYXM?^01mc$v0Db%*)=t)w?8Uj=*eEE zlMUoE`aiA=V8*E{y(We@_0OLlJ2Rfxfw;xR zax7p37a1NF))J+0!D)%ERPSMz>~KJjR~8LqpQ$Zjcf=m3`$CK8C0W5Nptm?L<9F=o(ItL{H;;f#KW;(vEz10 z7en+z!$Ft<7((ZrDuK*?RCEV~u!ahIS``%)ni(M8W_La#K`}nwH~u$74A;2g`UQuS$|a(hwmh@rCW7o`c3A7kU#{;EeUVpGb6x{fHdg{MFoF$^Kt}%th5fsEq${Ogp=fsw`C!$edvv!fM-%1&fuHEB>JRhwagR20B#_i2*XP4>m zj&%XjC0oRzJo{~bOQaxQdCTDbYcj(acG-N7jANa$Cw~{Nzt)gkmE&riTNb(EGyE!1 zEIu+kGD&fHw7$Mb=2hZEjP%8eLnU^4yRi2QkU3Ivf*7RSC81B$ot+r7{_XLoO$rLG z=DR$)VKQLji=|q5R!T^y*)0!&y*B??F$wIkvJm_Ev>fn*Bwdp9jcl#mKD0x+8Dzwt z8V6Qu3ETZE8ZyEHUK#hKULpP{j5&aqo{TP+8*y`T+FAp8NC`-rDZ>C4fiWmUace}P zjbB#?ke_4e&2#EJNtLh^AA0kMf6!7~US8FO!M?LURH{`x-hK5p{KX-jO>;Z>r0>Z0 z1u`Nj)UZhHQ}--tyzfDDbef@Bp8mw^8UBUoMV%M~`|`oaPz$;C5w?G;h(*zZ;=iV! zboH0>=&G|exdYXmz3wimGzQjf^u)V@?Q!e5Ht0Yd#yieMr6$qEoUSuS#PVyZXw{R6 zbR?U!aQ74+A9^0^uDZR^Gx_5m!oSf6o1`<*%99_bqHbx`O(A_j>3D04X9q9o z)Q=F<1}=?QlG#4_Fdq32^N(ZVE^;x_zwp4{fsb{)vVcRJ<6Y6$$ff0imlnU1e4MZS zf3Wx7QB7{$-l%T31r^u|h)COtfOMsI6jVT}ARr|~rT5;Og(AK8CcXDwgCL#IA=0IU zPC^e!2;9Z%cJDL3d+r!#ocrBz$NA3j5A`ual00iZbImz_WyKa5SJ(puWD>c zVlkLt0;_@&H%s@qCXAn9+A0Eumd!~TU7q+u4al202&HLn&3e<*)92fu{3Dy45<5f5 zBjt#DDdaVPJyTlxaNU?q!~7aMskrklYH}JEI<>HHHnJPa=#{`J*cPMC9YYZ)$gL|2k%0suHzSlYy-yXE`^$wyva zTXRL64<}aog*SqV?3{0rCwbybK!Y_|`qrb1g;dPE2S8;*BZ_VWpkUR~Z5A>mE||qt z*L-8xVp2$`G#TjtlQSB}?`cpxP6K#=5a$72(FuNTiqqU>x10H3Yl@lNX%<`3)1#ql zUf$e%0=IHe{hWO@@G6L+u;fUHy80vxdJ4bR`<(-!=Nqyqpx8fV4K>!;LB6)-qOLG;p4P7vK{Zdu2r(QJdH3z90AUZrydtW8g;+ zSYFO={vAwv&RCXVyPo?IfpaGzHNM{j+=+*C2<=>+jvetin9T`0fF8gT1^h@ceLPCA zA5y0j13z#_dP<^ueH9{3hDV=o?2KKbln~%5$u0e&gceWZ0UMId_oOud)=~-E8{_8t zC=L6QMXXlr`cuSK004R0m9F^%bBev>YD?Uw4);wx`mL!FrRhI)hWnz`?blWA)U zmjP+Z<#592S&`KBk&Nq7xPvogM7;uQv@mWpBYphGI?#rKsov>+4ooqgn^E_Z-DKrr zYjs1629!`x;z8(5Tb;?l03zE1^PQ70Hy=x22Jwt`NdtC#0LB4TM?SNsANEG@a|iu< z=?L?$A1}(qveSycbH1XWB#g~0ZO5m2EZ13i;TzTr&qVT2hcPFq%dJj7rtRkFsx?II zWNmD&aJP*cdesUx;Mpx3=TDnZ4mrT)X#SJi)YNRmEPZjyjME%-6YKnx+rb#DaVa8D zs(1nrtDRsgke!o1-uPKPbC>AZuYnN=QL2h0XkMK#OfyF8ZLj-bhzP2%F!%G%gmaj( zW+XC07Aj%0(@wA5Xbk*^?zSX~ne|WdiTGZhb#6;N@mPUPu>%8%#^Yf*u4_9g?t}d+ zRwkAKfgQftxgNzZl&_iRso(A{JYMf;vJnMl^-hf>3&4Abtfc5W9rUO*7I3#DMiBy) z6ZFHiVVT+VAU-fF5~t5x6?$GfJCCVJ=+wPyN6jj#s@myzKjkn@ja`PH;t;1spxzO2 z%9HZOxB)_w_eSJIR`zo2K_fue8R)U!i)v=8_da)*8qK#pJ3T>oaXa;=!rtIJ3EW)$ z@peC1Mla3IVe^zAcbZ?`{cYg*!3ZUXYT~u;mG}+p;3rZq(4lMBIC{9ttXkK`K?yyG z#aLrg*9j3~5w5x=pc****6)E|1AY;t2p#I5Q@2J|O%FWrXW{;qC!g8|;EBB%{g0dn zTcmPmZU#)DkDW$m^o@)J7u3Rk%>qKjR=*IDbs8D10E&`xe-h;)1^v_mPENqW*v);( z5L5CRyRSOnEyF&!BB@b=Z9}W%H5NS@lNN8b!Mg@;A;5Djds*oYczo-t%vRuTCKKgI zk(vqNA&_-02aDxaS1*?VW+Fw&@YX(h&T9B;tSfp#m+^@TRTu1Shiym5seAVOSyNmSLV@5>yw>Z`UAuRC@x zWW5cHxSwpSm<*Kn98zVT1Ybz?b?AXm1@!t~Mf~6mKo)8pU)@5vN!s*ESOy+K=Z=;U zpm>}(IXts2n5Zz6z8nGYm_vZ+onn=|G^BHWRiqiZm%`-`t_5UP#YXb3NS~5IZHHPapoABzI$&kw6(PEy@AF9 z7Tx!sShV2wzwv)cGqkj{Y)qm5`G4&51><|VyMg3m0@z6XEemUeZZ}X+{u;Jx{x4{Tp@G3)oXf#(;BCgt z%$#1}P_bqNM(}^BiB{byin?F@NBEHcyzf8yqyI{_ssFET^*>)ZhT4G*csT*`^slfj zPaoH3m52^lHJxD}J+sB=>G>;deu-@Feg%xo&Yb5)2L8dW2C=MKk$HgL@wwPg;r~E~ z+W$?r`k&|mmbdCxf9Cd|nR`|L83NIDqebMmZUOA_uPt`4I{<|3@hjG| zB%;hCARqwp$j|Niz2YrqRUsjvpYD&^|K3)b!1rq>{V(df{J%Y_|GghrIi0J`!p;t0 zn!k9aUm_{~v9J7B`2zCDFBq9!G27PG_H2($^sFu~=l*Lk`Zb0Uan6Su7cufdHfg}SEUXms&)jrw=PQ4ze?4XX{p0Pj4`r2Xi0E5vc%SfiA! zw5n$X(sX=B%=K`>#d-vb>igFg{@x`!GA}Ib51$Q=7T;6{!5aq;y?)ICXwHrr`1vc& zi?&!lzad9@-c?WWuTtskm1}o?nf!x`_ZR=}&A?U5$LGI1{K3_mCk(&j{NSqe%Z*l{QcZH_P;%e&#rFq{yID0?CO8s?(8o7-)^Q){`+?|Q_|0$lmF}Gv)>*L z+=Fz#s)c7;H(h+4O9gyjfFJ1Jul}#A{y!`IUnGwIe_!ca`RC|?u6Kog7DLA(dc4hW zHW6lF=NuXunyRsimUMA>rl}eKvj76&_FCo&-+W});2)4H#3V0YJI}hJ#Q>DBwy}W^ z9q@R9MJJXjRfFdzkY?DES!$E#>9u0y?d5Mo{*UEPeO72@aL$vQV6Zc4gpPg ze6_uOh5S}*&Gg>#k2fp(^?s!EYiP8_uXj0j?RpxM`@-s~^MZd4`K{!zurO+?X*Qqm z@Ngiq&G|bYzL~!}nj{S*u9(IHxQg?pRVcSTB#|IA5wtjxT|DJIcJ zw0$vHV7Al^(;pPnS9|pR>(?g}aA2-`W?*!I@X3%?Xi>yzD~ykahXdNKQGNxgmEX0VlOhWWSSZp#|jN)sko+#?&P(YSz1b^YlgeQ;*VDI8!be6%W>t4!xMDgpL+4dL-_ewow#XTA zSY6#MsQ_iIu%A$YL^?d%P)rfbW7-*xooja7y2Eme(}2CarXp{?DJ{O6_VJ^8#W%x> zXV0HE??yYp_OrOK4Q_LmF{djU&G&7x52{%5x_2wyF5+g~92IV(o=;{31dPi*Nq^G) z#2|55=_bXT1Abx%|Fv@Wb$RBOH|xr(rUlm|j=zR7>pUr*!p{(^*6B3f9bu@PerM$|06Kt!zc2(&^L#P6efxE?$5&m%N6pJiL5{DH2 z$_XvgMCx%~*o)YkV>0^A%knl34#B#$&Bikgvj-t8x{N}~Po6ZB9UsGLIQG z@U5{YQhuK=T(|(NI)y#f?fnWWlJE1L?sA<*B_yOH*nvKIb3H=xUBvx3e>$uE9*ya& zYakWv9E|{SpsDHo@jMHsgP6pRq0vIXzeLw-Bs*BuoI^lB`h=E_E=FI2L)4ZZwi8@J zPQJ7OMQ$dE+N=+^4}IFaabe@c#});s1^v)k>!t0XT{a}{)eBp!ztXHkJ2fLSb5pB> z#o+scERLX+cSVlKN;2|lC*JZ$}`Dl33_Av!wj0)yg<`a~MUI z&8D{lq@LRu-Ot}f)5z>b&=a;hmBg`?y1*{|7=@WeAP_lTgqF**IeQiB`3b;Vhb%i4 zDdG8p(BQZgHjPX@#h!vs<@Jh7)ONKCUNe3FB2l;Jen#r+Ib(ePR{eGh`t--k%QLe5 znk$J`?!etE2y&u zs^h26pR;Pr9{X^)W2YzVmX(~QcXmZk?sX1Gw%C#+VHX?%hI7zByq5kBWH|u2l`v2O zSjytULZRM8?X|`2{gDCpm8rQAIgoe(AUjo{Gjs$9B&-syST6!bAR;mn`5V3zAB0~} zEAhWhhlqThk1sZ5MIav-5Ydt zoIWWjDPH&=FadsHu2&OZPmg;jk?dV29xEbqCu1d^ke^dT&{POXD#6W`_F}?;JNoWg zKC96>14}=xQ=@r+h6jFXj?X_kY;%bx^(3kP8V@)3{<)%v0+0O+`ic-5Jb0EvP&Kj8 zFs|?j-J>6$GCm*=x3r6_!jq#ZHWD&Rv#P4n(w@LSqodax!=WR?BYnapp6~)x-3lNT zSPa98AvMoKpJ-{Rq#GKIhY(lXPd7J#sgi& ziNztBS-LCvhRDIQ!#tgVE}m27ZJ(kQav!~)@a~J(Hu!p|8ztgZJf(V_jvnj4?}<6F zc3<2nf-r4|FZ9p0JtPyugg8wb!MP0PVB0=inz5@_PuF8%<49s^{@iY$P(H=`iN6z5 z_9FDQ0m%*5*sWg#IUqobpU=EJdFL~?^8jaz6%zBYg8B}tI>RIe$4>3pdfV#zrr&Rt8{ z3KWxdE_LzoRB3nn&zm@CNFdiEL?-0!UpYlN!Ah1p6X%YZAV&b{b}x5`&~b<~mEkOK zXIgVmtftAKX%Lh240gg)2L%VGET|!vU`fi3jv<`KfVEr38T)>G-r6~ok(z=cOXtFX z7R>HXR#w)f>S%5G;xHEBAAc9FUQLgs6uKj;Ep|%S)OIH9ibmjULh;$p2j0E{(t3xx zLW~CG8VX|6?>wJ0bLtxyG~4ag2?3UNx|G7sX2rk;(H*pBJ7f-f=ycG^q5T{$eX^4# zkr%&Pz@4L%5~HkIhYLD;uxh4VD^3dZ-EQ2t0oI63y;!;U&#hXw-}*0RS-0Cl24^gC z7_sA^d|Z!h-e+_@d|@TLn53-XAFQg4AQf;-Sze&CL)Pnr~AO{EksLKH?77v{{7oNj| z{2TNd8gJjGUAXW`yjb3Vi2*Ym7FiO#W43rLpWF8Pr;i_x^W{%lT8<$XxRQGMHth7C zsQIpRB$+4m$b&!0qluM_Lqjh;o4(z$ROK049(!Am=4t;0A&59iCCe`= z(unNs>l^d|LD+4GB=;a($Ue@IH~}(Mbku;>%J;ZAM_^%TpO-=n*s+fM^YPH=i5hgv z#@x0rOCc9)gtA>ABV@M038NP(7LK|TU!Bq95ukw0&8gAI*Y7dq%*+g8ay&Q?4<5&t zDY?J$t4$DkYI|>=J@al_%8|r9C&yjc{C-2dtg0r{hhB2`J>Awj*kk%4+t}=tb3BheSFTA z?73$*)Z7C_!rErX@aNf0EkCGJ%ey`h+&#W>`V|t}V_l#^Mfc854Xip>=85`r6&(i1E)zMW^w#N2EYt(k8cr5rckFg)A#e=vxIXR!mQTRr-+4gceC1+G2 zAk<(`$(Kp##s@M$y**Z#%ps1+7MRUgj>5LeM3K^4)y%q9DDpB^x~-;3h#j@i$zp2@P@%<(*-tg!)J!!nUsY$me>x*1D$32fv>_0;wCf1BS|33SXL9eR(t3C_ z>lVK<a57 z)Movw<%F0Bh&Mo@Q5DL}{JT5DjqIU|o)AeR? zB=eJQAAA!$2n4?nod)ck#YHmFn9Qu~HA%Y)uZjGZpq2Cu-iWpnZegE;9sst>v|9qe~n8lSFuf!u5d$6B3G9V%Gb-K(jXacwj zm6zKv40d$5D(15IJ)_(VCktYxp`^~aX874;E*jE&PvY zE~7bN0C`>a&IeuMdR)f5Z(T?Yi0?IyMW|#)-2nYgajou z=WGsV$ywFD4aK?)1zIIqSNZx5CG8%@Hh-_z8J_m`{vCaQhg@LkoroPAt=A!G)>P4a zG?rBRcL~hpoq+hLFDWo%8;RuuK-I=LNBuD<5A&&nJU44m&B-a@;%|+~si^7wc&>7`VA6jy#%fpE|#?0p)ise z>UDYu8-cKS6 z7M~MqvHH5CrDaG0185z?I5)qSiLnTEvwH!j5B~W$JcS0E{d|gBC$Z&mkH&1#imZiM z;wP%Nf0u|)a$SO_F~v@e`vx^~QMLAK!zG?uz4d|m9#T@Wvi=D-{N+85BU9IRFQ3c- zU$6^kZ58D|&&$7iw}29B5Xa_)o^DIex#30TP=r?43GyvOM$RE5MOaX<7L6s4HG_Wm zxvppNiL5Nume(yZO0!!5@oL$bm9Ly`s};)vD<+8tJ|1||I0{xaN_(!F5|6Eo`clws za(S%nJ=;LYDszaq^>PS!pz(9f81$^^c;gbP4ObpJb25o&dj7F5Dr)JB2nqc4sK=7( z-I4j6$BPopO0zQemcYcPCsZ1$A{#4UHJPikLWqSOk5wiTPB5Nd7T1rCYJuK!$_;}G zCm*4DX*F|<<#I=PpuMaD8uS*{MvUz5a!H_@@w4&q(Ra<7LD^0KooQQ1U2P81S}=20 zMMnNbvCKv@gd%nasRkZ2ceF&Kb}Kbu1C+7M+IzjH*o!k;eJ|e8 znGNrayPY({U|yG^O)O1iWgST1TH4w<7y5yL5)R1N15Y;ARCC6Da|8!go^i>!V2cJS z{qSBwm-NXDPJ_12MB;RU>ku`=K~)VmbUP@3vPdi|1rsaauJrkzbwrj8Tk44%^008t zlP0w1scf%K3UHk{8xU$xkAVLz-W+acG!PvN zg%1owUfEmLwv3?PVjcPfbf)&vf25SrNIm0k7R{&ClX!5O**!acT7Plznm9VY0(jRg$o>Yt%UKpTC z{j!axKwfsum~spVQr0Aul#~M9u8$EeljQnr8A;&VnZ*zDK*17E@r4e4EufH4Ch5j&>GVA#FgwU2nuw6-Wg7=d-gM>|!Lu$pl)BNKLP(8O+0 z8$rjQ$vm*>l_sHg8E~70dS*@Q)tNt?El%?^SNVR{MXqq^Y`JRu)O*xK>J*O0RP9gjI5BUFb+r)3AaqP(U$Yfc8z`hxZk zo^51qZ)b$&T|{?KTR9K7p(9%(!GV8G=#xK%g?xcPl- z_o{rn!u>)u!n?K;zE*48pEE?DdyC6j0o3rn}zc(JUU zLO4Z0-~cuP&czFc382JrRp~47+ACNyF|k#gJMyiOueDWFbR5Fn(|-Luo~PZwAT}pC z`xgfE$K!zUqVAqPb2BRm>+RBy0}Bfa$hrE-JA6*JJr5_t2RE$tV%mE;Kvi^K!u0&> zv#)Y0><%F4^1^LQICp>h)GTnmB>xXK~uMVp8${(h`ab0;^J?Jrj)_BryqYma{`-jt6E?e8OeV z)0VZ7c2|FzGQ7me4Y7-BUoUWd_NM!5#ok{GR3>wNa(k8jcow9(hyInLqu`_o_oWPa z6q?@H$}ES+4rjWVTqb!pV7enn$h+8U_(Lct9B z?uICrZQxTZ7%0Uri6gS}V>&N}+^=@SJ-^a`MVyDr83 z`da4@+V6c592-0U1aa{*C}}Po|Nh%EDXGOzq$f{)ZAd?Et-Z)@wctMkRVCqrgM(kb z{Q38LpX=jEmiO`YexPIZmGz4t4avWG1xBL5JvK9v@h{NsFINNb&3^d!{vy4CtCo+q z-q@M`cAoXYg9n1&v9upSS?bd+8JaH6&CM+;TKMo9PKL9kq0J)zc|G(&-$fowOS;SL zo(jmoA?>PLrLp5*Oo>2>wB>tu%U+n9%Udg#k_+D&?#meVq@|~12D2GDsBcn;zkjvQ zL?$@3x=>rg=(%oUT-cAY(h?Xn-v*Lkra{ih)in^=n#LdvW{DKPrT%`7t9k1dOQnTUw=Z>u!UV`xYnk)(yI1 zFAt!&$K!CLt)=d35nzPPlEf)K1rbv?Lp|%wIvq`RV{pB?xtgE-{U@p&_Po6!1~JDz z5oSs3Oy4>~o83Bp3rKXJ%zFF*C}}OUka1 zLz%!-Y{W-VI!8;ULvhEx#=`#9D_z}Ua&R0Jbc1L#myRyQ|Q;_|RZg+HU@{gYg(mXDu4+1l9xH}X5Tsvi&Ny?z~Mxf&Z*USDrG zc@WD1Nf+6P(rwH%WESUiESHc~F7w!kF`L%oW@6Ghp}l>Z{3;@bcbp4a{fd*rukDc^ zG28}a7W9W1w~LSvD0@@{olaWG3)qo$M0S=e(^vadY_ zBXUJvd_M&{_K7^xAj6XQLl?dTZ8nI!0tUFA?l+*|}JP5mk&`uVdpk)Eron+R>P zt$Ra#J+m97$wfsu1z8!Hu-CaqkfAM9_dcF+M(KU|{%t%TZRdr$pVkkn4k`qGQac_INBNI#@$p zO@N;-Pw3v1l9F6-U|?iTsn3+Fn=5T{NI;J%`uQH{_*NbTg_4F|A+4Ff;qY$tZmg_q zi3!?F)8&P#%3)kSIN#?JszTK)EV3*tEY+o@#VAyP2HTxG$!<3&sR0yP42_72%e{89 zxN9n20XTfZYoW#=1P(FQvvLB~TSY*AEHbYZcG zwUb#*JV{0MV-o4sC6_;mLxZ{u3Uy%pC)9VFy~dC5d90x(6Hi#W^1@GhBG{n)vBzDP zt3~U%q9H@HwJZ3FpEeuk)IlmLOix$gc(o|mlb~f*D41qYEb|=8ue?>+=lni788T~S zacOM}MP=60h|H#LohkEXg1wlINKRIBKTOgmnnmB^SWE1{gha>6d@AQPb+Q*cq!l!d z(Uydl87j!8U5(`$L8|5i7R`IZqQi~#5&g7=rfPZbkDp3QBazEJl0p~h%Hk`>EN5%K z3R4s;+1*Tfg&0i|w^N5Fym9~uM_6e5zEjxvUeczy$>$oyxcX+}qROCx9XHmZV-+eQ z1Emz<#U>k*5wNkU7TzQ^oumpOy=&q)cN*3ybUFjaSbCz0WD3o9Me@O5(X z6$kUXsd2apF>*6+gy~7u9hjNzYx&>rskF9bZE2JAevtBOay!C$CS;cBq6_ac+Wy{0 z!RZG{__4Ui)(?HK^WE9pd~+O5U9=*TPf0<+=o0NsGhTq;ve~hj^@CVmHIsj!k-^8n zd-=ZLgH>O#279_fHm>OS?T-WSZp{kUEUen$Jtn5-?;^S_)nMeD(ENcP`V@3U7S`JV ztp;@0kouZV&=d)}G(&6a!S!f1I~~Y(1!Qu~bH&5?jLyEjujY-9gDot!62|=f{o_$b zPgCe3AdqGiOZ6~l;CRuPP552Emm#J4Fa1JkBIOm~AHAR3x@cb(iuDT;HEpy~6MBCU zi>2d=EkL+huT$R{lb3>1i3%JqAZF6s%t=W}nVA`jHJf_aV+qlh`|SqMm=IRv*D6!w z)x825P9bUA1u*}CzSJ~;s5+{K_HYu_kdVVWkX`f=E3noVgn3La z@jZ?HX2NB$o0=1b#Yodv#et6H%Brjx18=OXN_0G%r}M$sT>El&tm)DU62bzjcb`zf zjtxx+^(v2G1`?>;zpdySt?O}yPA7|0Ytmn{eblvwWkFmy+#_gS__-UfNhEeo2(%B} zYiap0&mb*ALsC%=i}nu+nr^adm}L=qf0N?-)(w-qyk+vr5cz{x^}O1~ z_n8H3`81ty^V#0)vQu^-DYGOk_HS0g@hAipBz(; z+r*2=CY05BnFmiyNrgy)8Rzqf4RAEqgqcg4dH$S37~^hKj4^UuC2x;ZmUx4@KixpJ#u26LDSkmhJj} z?fs6D5q;aQqvS@gdwvBMaz`HyjakT$yfQF|=F<#U*!o`m4BBLS5e&4uC{}~KBO{mI zRp<8(3mdhnq@w9-N{*MmkZyO)KiQeqs<>ef_ z`>Bwf`ITbRG`b(9THGLI+kir8!mm7_7#s@;431RI=%HrmzI!flZT#0 zt~ZG~k`BQae(iDb?|Gpl z^-F@UrNBuB*A&uO5byWyMBZlMe~w~7UJV;%??N^i>^+CXOv{BtR4l%!=Xo3LwXsfJ zn4?x~VP_36Z+iiCO(SDt_PSKKOb(B;guJX&CqCd_Zt7J z?hjBVv*VgJ9I-$}@Q;m;DN(C%Lis1>*N%OLCzum@B6gg;6NU%tY}#BQG1YG>bhJcE zUR+mG+ZuY)WYN2vdEbcrK1c7ky6r@NHZirmT(NZLpLsCe*V>8FZTG8f4eq-x4)fQ~ z%*2;uwAn0ux1nu?7jh3LHF-?kYVt7aj6(LtuxkrXTAS1EsVfHa{$SN$+nZ?B3{jz)E)BQ~?f;c#*Ry$B z7MY9+C&9OO#)_vB{?h~J$fc)R-7KmBp% z&ThK4)yv}M&~lh9&A#x>qP3^0ALrYoLlYTd!o!=>jFWA}6i1{UF&gLe2=t>ZDiHX~Pxmz_y z0XBxi`4VpgMimq^@r_35Owc4jL~1sa_r7(jnuhfKsGApop+a(VWkwv-LR#{8+HsXH zXsaz}Gm{|oox}$0@dW@!vYB@J@rCN>RZ4I@a8%drzlbRu-VMQBeO0`%Rp)Ve{~}by zb*-bR-(CkrLiAMOvX0p;&QuTJ9yH{#61`g>FjuQl2it$6_VQ((+fHw!s$YVIMWiph z3`MFAwN!Ii2fUV#vn!a;@#BT8@+r$YS^7sSHSVBCmB$`vE~2Fy4N01(XKrfuG{l{! zSh9|9uxget`x)kMC<@=#Rl8%2>+NR!EE9%*6#Ky<9aTd6iFvX+FOVmPDCRx3wpO-( z6}2Q>Gi{$?nH_aV*o%o5&uTiD#$KC+SoaNv-?*{pTg0Z*EKhosH8_)5F{S!M_D*=# z%=qNn_9e22Lz(*wX;CEnnN;?tU!`VcKS85qm6S$4eE4>MJnb;wtYgxsh|qUme2BPb zg)8bcK17ByH_;$V==*inRW31H7H6ucN5^DOp-$)VQMYRHVnZNBsu)^KDwB#GA>U(6 zv1nNvtBzm6&~KL62RH}{BY(IRO2k+Xm_Vr_8D4lYtoeX7a1OIu4>xAj2)*Yq5A4yk z^llQJyPrCU{2o_E^!->&VfjwvK~ZPL@wyshkWkYx?u2=~dwWC0@)i+Z3`f}?bRSz! z`3fJET-M4VV*Bl;3dqs%v;wq4`tXC|B^4S8n;zWQhe_Zn%J?lfmBfyJpC!hQck5L$ zQSs%FBm&D#h3+@@9Sj1k@eA)F30;q1Kj>(_znay7;OrB{k%nD19`ZPLB~rWOUa4*d z=g2Xpq{$H{xtX?4a>aVI{u(_uHCZ&gcDi*7E}Nn@ld${ovxeK#+sRNTKOt3HY`4@v z(s*{Zp=vd^)Gc~J`|qxhc)FUG;V%u-Xw)L(=tSMW>1^8`meiMccXgFLdZ{-vaGvN| zD2L}rd?p1Bd_-$SQr{3`2n~d@;)&Sb{bgx-4%0F)E^tc1yoOtaXA3)$>l_Qx#u97{&hYTEm7OD9P^1yrPNE zcHCVbm2dci+0@TjfIH-HRg?QJlvU675qp!MCFd{-WjUcRbIF3qBT7aM(;lw6IHX%b zx&E;-V!%A50(3DmYPm&45J@JOF7=HYcSQ>JI7UL|R-%u3OkHV(j&7P^%aKP%L`=NN zVzeqfYL#v)j>#%==5|M2FVVts)j1+zvdMvg11`s7w%-jt^)GvRDMgw?Q;qY2I+yaY z8KNBCDK=$u7V5lwpn2rI*2~`Bp%@u%%=9AsL9x;C7x>$>xApllsSH zYaf_j#&ZTS`NZJu-&pUL{W+93?U4+zyLHdk$7czKKR}6Ti8xp}cGQ5;M zUb8nE`!xuAG`$@N!lb+G#S1PiCyDRR>gd`H)21hJDtQG380U_JGL@p8QWwW=7tCu| ziIqKl(THrqz!iTPWI}nd)$?a0#Me~C$btsUU0a+Kx#ex#r;X?Ap_XGynNJDN0w(K) zL(#wU^7G|n2{TJtCbnO2=}6^kcF#Ap(Yu`4i}Oii=^HU3{+VnFukbzUyh+5T>EHl+NwYL$%H@H z!Kp1m!^LSi@rl8`EytPCDRB1n$f6K^97(-vvZ`MQ%3Mn;zy%->>CrR-kT{!f(d(x9 z>iynhIZSVmrby_^T6QMGg;|H$iF^~|m}*;kKTh7@gNh{8!Jf?Ji0nA>qWWyZR$j(O zcb`DRY~LuL?=ke<%Dx7wUql2fr~4Z#9oZxcf{=BMZbV*P4Uw56(zzDxEY2k$?O9}H z{P4p>(!(wMh)+UBflDYMx8aNCfR@(!YIr#0P@J2nxK60at|~s5SPg@%b3OQO{??V?*jpK88^Guh?i7xhYyj?Vei`M! zTPe+kpTXT!GoGs6I;(LSUm|Q6Q?KB>)R`@iGSX~zBL1(2U7?cTrlN=A7G=ozL4tvjt*eWCMZ)FrPoYk~gvR zlmhkApv%AoD)dm5=pMY*Wd366C{zPW<@5CTX14q$2EZfkJoLXtOWTig{p;>?_)bh{ z_Keki%?Njr^y%$19C>B;Z8&JQxI)UrJhpnWzqojIRu`?P0e}oQ$1PsSgzrpL7Fkf$ z-ixFL#-{9Qb!^L$weRmY+Ac~Mqe;}gg94+S4UW@hXtoLJ=E z88LD!Yp}64*`bb(hORw6lymx;6h@UcG&iEps+T;f%+u6dUoR#s$2W!$$jlP@bY5t* zPH1A60gJ)zF*+O^m~zJTdaf(VW$$t9P$+A6)&a78rC)ZuU{8@~Y`jpHQ3BXa zGg5LLVw8kAQI+zJuO)^siuNyf9bRQG7o#WpQm8$5Hc*2QL%`_i47L(RXyx#RI1)eF zx}MV%;yWW2P{>Eh112J`8}w?bv*?#r$xAIPF6fRdtWUq3b#1*7p2W$H$f*UOud^aDXJ0) z5)LkeHBeRD6xBB{)X&UWBcr@Q*K8v-6rR!9$g@i|Xf-o8Cvkwx+!I2dyv<%-zVq2; zKxlGsQ1ID4_ttT&_%35U4TQ%NH{CDFyHuR|ZWjJr!>Ogr!)dNjScr%3QFuxx&4;2Q z3xF|HCJhGd?`LK{rR6g)GHUN=M@@Mt!=s2anU+YDKvF)#j?=#RQI# zi!+bff7Bax7DW&3(JOs-8n-{G&Njm(q*{BRwWrL#;td68d)%1(k2{$@B`w@J#Hy>I zu2*@b%Zaf(dQz9-x7(QDxP3?jia?%Eq0Y$l?IJEWbge7*-u}N`Tpp&(sBA~5Z#lb; zxUg~&7f~)6jIWw2IkFq33fT(s0|ruRPFRFkZ0v(NcczAD6*ALC^xicR#h>T`UAG_p_Q+%rtwQ3(^MsRX$qeOW8BAt&6aa#?|s zLiT(#TfLj->3NeU{6$mciNf(=jn?HZ{n@t}Y+4V-bd=VNRI-dxffM2!*OTnoNs_k@_t+Q)S>tY3@nB0*!U+djbMRhiTbK zPiH<@t@po2lTh+dnA z%#8g6IwOdD~A)e_QSfXdSXlU=;7mW`UP$#`k|~pV$6vz2P>7+=*@` zjwvcG?8`L@3bk?Muuk)|m{6`XwLuA6{a|p~2zSve9F@JT;-u8vIIR_1$| zfU+Xi1`%=IuZ7FPs__9YR#+k(w<%ElJ-&*xOo_elPp}*oUi(5e>u*OjVV??5U#V&f zIP{GS4cUO=ekl0q(_Bp+%o{g9CA|Sx(w%&=J4D0s19Br9W+|L+Nb4h~E1SxY?*_%p za#A{nBFq(_E=}m=9VD$_d#8|9Y95zK-Fi=Ni8>;vzeq4~B;UyGASL&^5U-hK$erZ- zwLN&BdHyN=w4uJf&ALZ&s?)T3p|M1lG#zv)#s|L4rww&FSbts#kIGfbf$cte%jsS3z9cUEm_ND#0oWM1OSz$iLiTZDD zf5`a@0GMQT_l1T;K9xqcU3$Xm(4l=D3^r$fjfZDImI3WeB>npJ>r9VjoA3!w9rHrW zA>(ibQ^|60tC(Hw?-QDkLrY_R$jvGDehzuMhoVlANza}o2rYHw+w7>sqxfT!laV&J z9Ud}qbz5U%%OjA6Z`6>dCfp-z0l=wVHD=#w5qA&L>~2ulnd2a;&!*}(zC*SQ4~qZO zdfn}z<*vL;=iTHO`Jw$dUZP+>&@1~pkLf&21|v4zzKeyCuK+Xl8g|A@dl(9;+BH`yP>*k9*kfN{y=TT(8dLYdzSz8n zLEWa-adOYJ7`Lh@wEAdKS6xI@*0{I~r*^2@Utp}57JX=7RJ5Ye%F|S_`z5z5NZDds zNlu|kok@aABUMmVzDdNUzGkga5r@MuQJeDho5?JdAzWwjm+vw)n2?0q8kFHAZjNp$ zMnY5hc#b}6oCJwm9N{$=A3fTh4q^OR-j;rTbZq`6a#@aNKHdZq^;}*|GovyBTD`v% zr=fQ@i&U@sh1x-jS;Tw(n!c~Ud-|F@w>l`Y3admgv#osb0kd3ElIt(p((hmO@#!tx zYNc~|YynAD3>`1hq|N-ezP`Z-kI(>`8V-QKs#}&`-&vUnd{*~cDL_|Ewxd5Ot2<8c zUdC%vjkKvvIwFcS!FdI27lrWI4r(MNRm&=4h4L$1H6l*tY@FiE(z>inD`$iBb%ujj zrh|zf`GOj*i?V7;$()uJW|3ilrv5^!JWCx+coZ6nCXh*+g)!sfzP`^*Ccq$GtJ*$q zVv?K~-t2VDT@h2PS(V$WW3)4xK|NDBay5&A`xI_wt-0p8xZF?s(%X+_Tr-Yp->!-}Sq`*UwoE z^>CamS*Y58l2{mGU8zY;aNXH#RG6XxdAr{9p1O;Ka3dqV#VsTB`)G~9u_4AgfrgX9 zWsagyO!aC^E`zMh>xl7j3Tz#abm{NmY}o09htQ#fg%od?MJw7_AN7ze{H3U*6lwaf z$^UCoAo2RIBkXD0~u`tk&sNTHx+ih~; zZ}W^XA6$yfW9Eaapx$#U3ZTnFN9UkP6l?s5RAt6i6>6*zS6UX96d5O{5-)<`9Q|!GX)=G4l`!Su}@%x_hM|UP!<@@2l6m-s+0O z=Wk-;QJr3YoGIKIMOip`ZSb4vX_c0=uVm`kyO_D-)k7S~H^_$KUzSIJ!oX|Vs2?OR!gS$V-8W&5xwBZ$X05M z;&vt;x5(&zR}zQ3s$ztVVqRIr@%7-GlU14bB8!u?AqgV<4p~a3rV*d?*O^EWr&SPOL)F{lys;}! zj@E3O?VQ*v>eSToUU^UQDUu|EVET?VAL%1MpZ{87wZ zjcmFoPDtZ?Y0;BYbDXJ$dhElqe`3_y<#v8-pBW%DQGL;kOM$Wev$Tpl0xK(dY=oAD zy?HVboHqg&2kl4xG_mE<+0upX123IF|FR4dd5>5CueV}f<5cw*TKrt z+r3^>os~7B^c*qXAea5#n^++;i<~pPRA^N6^2{w}m%Z^rkTbr1UB>u5~<0$8uGgzStgvDkiEna}MCc$+MK=FM{qkg&QvZQgShE z-$1eX_HYR1LqA&e*wNM&T{z1)r%+t`ofEa^%59P+dymPHrZR&)pOu2YU<0_B7+3#d zSzFf0*Vfe3)+Yhe$JK$3`ywoxU`*J2?Fh) z`VB)N!~PouQrQcwJnIgv;WNvg4Z<>%p3Q(* z7Rk1TnKsRK9ZP;~zq~iC&IiX%+6-xxY9RKSDa5?MysZ&y8aq0}NhCQ~r;UmW!?S z#i!%@zp^?>*^~SU94AM)?>~GfITO->#Qx)aGP?2GjOm1TV{lTeNj@qpHmtVRD&a1b z-wtPBAPrZq->i`(BZALz&dF?ammkTY;GxX!xzQaqSaw*YdGa7QE}UL!lvWs3<+H9y zmmi+dlG!Y0y}gE64$E-oel_ow^~w5Rvc@II?g?D`eD5HF5Xs6miiFGJ;^NB}qe{Z# zHYFAV?2P}C8wvcD{A8r!J2zp5a?v9hDcKfOd08pP5t6yHP@R@G;i*UH3VIE_yjF_0 zv1C8mM@R0{^3fscwVA#wEI|z^)<@tdAViS>(b(k-Z>9saWDg$rn0ZzJBgYv(V+@9u z_RdENQmB-a|M^RbMhpgH+fD6@Y!(c+{c3@OUW>~4;=xBt0}ZX#2zftQw4J-RlPyRD zR8hh7Ink~0L}hmY#qHDait8RhhL^SiC@9Em?Cs+U&X`(Ss$%vI!+V`|Vx~X^`(dWN zwe=c#(tDd6ZDjYvRr;x@d#Z`I-eYfWIl3sK-TaZQ*SLjLou1e4<#iq=c7eSA4Rg!( zrY?A_Z}vad#(N+T04MIU(sF8$jrnHz;zj43ycL_p436N&jpEOFL>Lw8TGzhFhZ3L{ ztNj`dU5_S)lkSw#N6Tp5$yHxC2{P5XBq8Bbjak()o_aLW3ha|>Ym~+D19mrye2v|o z)K9CB?AA}O_zf)&(b;PxWfT@tPoQ@yGM9HynJ)(xQ~rv8Em~b)ICfY`V1HZ3w{Tqf z0vCh#elX)~^wqMLwfAAUhpSRgQkT-#Ec}lmHgNc&bJ5Dkqb!@5tsav_TlC5R#pY(Q zg+)^KKTDMEOQ3EV;06ch<>i4=?AlKQ#A&aA<)J5E{c{3QV4E;S2uKeUOQ|E3$z>66 zl(sBJ8<#vjLI!aQ;Rj=?^7S7?&L=N1lzcaKrTIT zhJbhk{-w)L_RH2O#h;?hfDh905!T#^yoy3=TSr(D)nexAM7UMsj~^>~BJ(cU2djer z+C2O$+|MN5k+|Hcc|5BjhErEY9I1<2V^;qiBY4TNnP z*cL(E)5OFC$nvXedtR>a%wpx?DTyhhcqJ{BIJMYm94e9Hm}~(m5sm7SO`hCZ@mq1- z9LR~n#@@VhX9kpRVnzCJ$v+lW)oA(W2~A(4|0k<}kQ$S>f~Wj+MM^vBTY(2W8ork$PrPoF+Ly!h*@ToN5G zVltKGi4I+l{!YBDKcXW8BCVjS8_jBxw!YGk zAGLj513cQwn=j zP$IM-y~e9CN?uV3y15s_)?q|UbO$n_>$L*lEg_toN?Yly0P(k&|3jGoSY@QH6*dZd8<7j4i^vCw`U9!rlTD%>VI~4MUju# z-tTbjMOMp`Z!{BYYm12!{wte^w?S{s4!7(Lb`+mSM8tF4!t-nKbu4yR>83s#*Pi-v z@uW|rGAlph-cm{0?uZgaJIZ}f4432O7KD1KBpW@HH?nYEC>t27J8I+5;nUO|I{$fG zOGZp)0U@x58HHEwyv5}|TX=6Q>ak_LULKlPbBa9Hp3g61e;@pzt*zOA1Su?bkms+i zq3}-rqgc~N>^zi9W?)t>+xR1cXwDIJY(C{bh1KzM z$Ylhk*qk<~l=)yt&|s&}65 zi8^{}`8#%vSnka`>grUOer&Q8jW!hVj{jqVZ@&b*>yeS4zu@Gt<*kf{$Ey}qfg0bo zftXR05MBGnPw&DXts76CB;)&`uMCFr3Ov*mG#z>c&scdIee^B)+iHJ&e98Fq^fZ6< zlCq@ao8vB#^}`aH;+!9$?#N49Pj~{`fjg+yWYL>TI z7&A-Dka=avh+=MbHbGnIosv~8mb6C#kGgw?!McApA@Uv> zAK7)C1dd>Nh5q^WdUJ2DA0yj?Y@t@aD;QqJ()1hJg%c32xm#L(udS`cBvQF`$UocL zHTEyf&DIp;?(FvWN1w*F#DZLDxt&)_D%SaP?FhT|?vXb^om2(2WmY3^kBttEn5upD z6R46G)`X2R2s;vM6CKZva)@?yI+Ey=t9=(KH8h!MnYJYzPctze59fNC{LlLxMYK0^ zxR96a65cO>bY}kPR$BvYCo(wa=3w={*7{JJ=s2`#>2@xR%I5&qC7RimOk+Y|X_0Qx z)I>L4bXdj+6Gd9sv?Y|IrHbN^}Div=ctv-A$QaRa}$&v^56t;$HC-z(tV&zCK*#el13-(QU=`bFS@+jeejv=- zLU}+)*UX6m(+@5E~Zr$70zsnZHrdf zH2R?`?nt1_DI!pD&X2F1z@c@qbjI6tDZ6<7@22vGIk(A9?kW2n*&g-`pV2fnQsZH~V zj(NKAmZV0nZV$ifD5k?((xv zrL{3USfgGl4h(FPWz3BIpsd^j9a1+ih8DK(lZ>w3*|g3oY-#z1ylgE=`(VczYS?bZ zK}tn6xgUr1yZGtSS69K}sisudD) zy2EDqYcB+jpxzgo>fbjh2TZfk2~kYHfGFUgj)#w*gHFqz;@)?5Ez9Atq@kyg4uYE` zCsRX@5xW(+qhF`LzO#Ke)E)Y0f{2UGj1{8zPPsqudj7*6k9FVOWAUvufAsQpyk&oW zD_s*kT0&MQsL6fQoWF+dd&pk>D)o}a_I)91*JFEJG0NDO+WiE@a=S-$cp!Gb$5Wtr zC?L>JWT_&+mN_`$?0a@d$#d4nf40u^NKh2&6^<7C}b}j zsdq~*cjQ_3Y50igp?NN=bId_~IucvdXEA@i|JEOpsIgSoF*8F0d3P(x^VV1kAkM5| zouNZSJ?7IF$Li~+wpaH3cVmpVber;9KeP5hc_y0Q$*teq+1p>?Wo*~5bo8{^X%3K8 z_BV@mn9L+pZsFQLJ$m&Mkwi{*uSS!vW=9%jyx*E-JUJw~zl-&IYHvsvNW5(8Y}GIA zC9RfMFFl`5uC4W2zO#g?$OIe^Fq^BohlNJtoXitlGUVkc#P?@a4J4()?#9g3bhN%@ z2BpAC8fOO$-1zY*^%LW|)5fn~T-@8!_1YZ9j-JEZPO?9dnhv^tE6I&t-90l!#YcZe zE<7=n-nH`W)j&YJS~4C$JP-V9{Z|SRN-4`eUKVdJ9;t372oVju^;fD&bD~%xgq@b0 zJUq&)CI>mDo}Kd2(ecoWNmp_WiS6IcEkq`UK|~W0MDftAJz<=iJ=l|DxeoUd9y#l& znCNCIALb&uydGCUQMKnm>r3<=Qybask#=YyKdp?y(x)U_eK_?JO>VBBt7*`ddY@)0 zj%`e?#`c%WB6Sij9aj9pK;;@|Lz@rmnn@hH2O1c7lnv%q<}uOmkU;E7`<^ zzh)kHl7)4ws3j5$>&VSycM>w_rae)>B1B`r$lIiNjMjafVvTILx0m^xfq~BRB;YER$G%~z*KNm1 zpSVO#^)s-k7v-+>c6U!BQ)=>EEJLUKmxR|6?5nDiolJd7xTOuE%Cl>7Y6?qfcsY01 z*F6_U(@iHxlZ5sH+z47fYSHsMRO{Uow5|-SWLbgRQci?CgzjXY@UBDGu*&jAHk-fI z!K2KtiIObDDk7LCYDChjp{J8K3oqBAnVAu+$M^A3`LXF+} zY+t{A{edItDYq8Hxo~NaJUui#CZeXOARUQBG~BsE2)I4F6X#pCM5r>#(>_}7j*9-s zT%xx0(AwN*U&`}Kkzx;+ox$F`?lqCqK8Q>d)bXzzuR2vT7+#1Ge6zCGm=S&&6ovm& zUENt*80E)4QvGD|;df#SSa7hyyY)2;87Z0e@9*~NyONTAP;oL@TbrG2b1g|)N~*ao zApwuqLxSipjS682LQvthHCv+sdM0SNe5@*?n=^>6If+<5$#t8FEz;1jZR^Od^VvaA z*Y3}%%c*vH4zWy{`r7BDy473rqT%SXjrMip7qdC(tgq&=rnXGb#=DWReVTS=2L^R# zqq1k1Sx}rS-NtWcP&2zx`G!05Q(78~;-GC!*ccfvD#hOdGcq!Ap%*XydhF|edT>r; z#u^qJ1m^aPv|}_iFGAmTW$$$F+eE%^dStOSyZ^-Lxy31Z`s;9*;L)P&M~5202dz{N zaILv64_4GnWGXO%KIEhCkePa7pip|sQzKUdrNmhlwIXEp6&$=D!l=(?VL=Wwb7 ztyI@a0ZM9*fbP~n``l+`m~hH#x-L&Kn=HF_`>Vg6@N?$HlNiydlMWr0mHZF~8_#Cb zSs10?j*IxAs|&QaX>0OqvI$T8Ipo1%Iy*S>qDgee47Y@^(&3pZ3E_$n`y)pcjF_XVx?R-x=H=|wpw#0S@VG1+vXoy$GEnWRNrGtZQ zu#5R}^TdJPtg3^0+})FO?bPIESamJLa&&#kPOTIKg-40)oJoQ{b>T z2`SmfkQ)v33`{OqeT2P-!Q{LBkNRBjac}KiXcU*)DJ7J@Is#YFmZOtXfmtj=CkP3> zH)5wm-Bz(LhWk=b8hFq)V|@LUl;zfz(N8%pB^`Y`Z7Yh&Z#Rg#7kAGZW@BTYZCByF zx1}fR5p;3qUkz~z)cPFCVL*#v6#?fCHI94EcZ_mbqo^+~PMj~N!$ss!%w*_znb-z^ zg|1(_#`Jpyx%4b?*^HTvPHM&*NBi=R8K*yz&a*SOitsEsS1Oz{UocG{C{hK$htEy0-$`VvH14hWjT)kBA@V3qM0^mz;`qAjkvA(`8 z?r|nz52?8r-KD>%!G~P%Zo^4~ii(QQJg%e6#P_L<&4>T~g(&Zp&ka2z-NU*%I#WO> z7ZA8hK@lGw9v=}!f8J^gWO47+_lR5*#)~1}eg`6oVUSSBt5fg;IhXsSi?~pCSy@^6 z#$OeQlat98fBNz}s*0+r8ps|igR#+zNcPh0Y4FQNa&pb#paA=OQxiP{-Bm2%pu1FLWI_-h_h-)@ zUjz}Cz;(E%1IO&zqS*`CUkFfO;ZsvmP-tG<+T&>)?Hf)Fw6qQE7Jx3-j-(s|`sjat z>tHF1bi*48rS@ILW&*rjFu;6P!^Fr)P^(z#v5!O~dbwL!$^H4oSD(Q7rfFltNmjNA zl%2uh@cE&Fg6`KRA{TS%(p3S84(TNc0Q;e1Wc)LW?tkSxS$zPMyBr*M)CHCB(yu{) zXY?MFiGyPK|6b*760Rn|HE?qF5T04Dt!Pzs4-O(P#`f}(tZK(&AhLoMlOKTLID3UG zD76@c5C-8MJD&x}wBMPT@lI&XX8!LrB|5$mgQ2B39R~OdY4{*>at!_q?$_f~D=jMn zT^fN%eH9BDLNh)%=#KG`hsyr>p1_Ptw)hg>zSUef3#8qrPoK`rlx=Km+)uAULBTA( zjurHu`Kt@&Z`qeGUmQsO+y<-qw+q%1_!u7jKZDtcv;X=q;XqAF`t;&4d=>fVO0O}) z7gxVa{4CkR%F0SjE%eXaUx-!7kdTnLi!8rH?gxl{f9B@zPnRkX9W3~7CzD@S{XbIU z^)u@qJTD%3o|2mWC`ASyX8;17ez&cRnDJtiRsLPE<5bl_zM+Q)8CJfnsHwWAH)}-S zoS&RA?$!_0c?|^fFUlpCq|Kv^#j>a0sGc@qBKsdQot*L0tDdZ78y$#?dls_$9L*lD z*i>CS!W*{(z=?VxnEdDLtm|P<6BRWT)zcw)r*138=`YjLW8|I_y(tOk_-||LiAP$B z&|)}FvI&SdIv)zP^SO`LH%RW(Z#X&V8n+boVs%*HaN_I|+#&Ox*z)`R3?E&&C64k0 zDVxtyghP)_Fs-|7Lv5<+cHtL~@oRPR?9hWdfP!GL%Ut?Q#Cv1rXA!r$m0jMyh9_{T zudLu;M_@aYdlMUbc?A>gPg~zGusb+Bc>fPr>(XaliH;xl1(`T$MIkpWJL4h7CE5_i zJ*VRd{_0lK8R{h80#yE36`d&4X}a)wX#KaJzPZFp7QeLsjtMtQ3ukRN(*Y1GAd^dH z635md(Z$uM^2N#sRdK&L#|3)nwn0auO0Ao9&@Fxt3YX=N=!NQa_YD~sLFboERSl6$ zaRp+Bq}M>W%p}alLBsH^X98@MUI(k+xXlrahJti-J9*_(Ij>){M^(RqygW z0iE%k?kgmys_X5oG|5l=_sdG1%{r6pN6&paj)IxW>wK&gK8OkkWY*L;PPq)Iiu$=( zS=sFkRtStKt{aBOP$$8O1-r#HH72~uDwf~ZK@xHo{Iq23#^c@5AGZkzX&fZS+ywr7tBV@Kxb%lFaw!%@cDZUxx1&DjWg;SnHA9Wd0b~U(Yt#@UsPMI zz!5nR{xh5}e|+nstY6i6`!?13aS_C$76^X}I@pHhvsQ+`HUTBrJZhyNIuoKHTX2@Dc=%^_z3G0mq68D#GTj0k07mNT>0N=$Vryp~NxwBzgLdRf z&PXQgSb3WbOSXcTLXl-cd;Y1`v2y|c1gh`p2^KNz3 zTd|W(%J3C=6Hm{y)#tX7z8>x>u0~I)`wa=2q8AcpWzmd2CIHm%%1vuV>`lrJf^k!XqUw`MUaQb2VM`U&p$acXi1(Q z<@uA5k)4#6`_OUF8q3B_QhD!vtE2SRjWPBgi*p$EjJRv$wQXCw^^pVah8YzWx{0Aq zf^PJ@No8?l9X|;{0k9J$r3PR0__3;SSHPI+C$|N6f8m{Xxv4P$0RfYhiw>gFR`xC( z{-=9r@53BNzX>)2hlqN|q>}+4yz-K$B-kD7oOaIT`#)=DJ(Z9^`$ZU zsaR5S{ufB5I~ga(&Bh$(Gae+n;i27MP{x(jg(f?4ps90ef&fQ!iO;U0tgGX2WJ&X} zcqO-p2oEotf{ojrQeOc1emWPLKV(nl^vpvgL4=RbG)F3~d?InZ@EeEE-ZOv<@UeBk z@ZyM{%`8et#*03&wMG5eo+!TEd}Sy3H0)#yu@yJ?XrO!U4y!ngJYzW z#!aH#PG4+nyiGrOs18b==SM#E`TW-}+=~X`l|1Y=uA05OZTu@LDQuJ-3_W)l6=2I^ zkzfleckt@DO9VaZFJ|b`>@0EH0Mc)5$xnUP07^27tgPkmq>RSGhe#Auj>FZ}b73&w zzs)M-pp=7}?-$CsU@NnlsR9FV{AXD4c?vb_t^+%pE_(cw{h;%W}u-lbUfdAFN4Mz z8$0$tx9w7^%qvx;E~%|8#O3SvKnKzi22}svRiDi~=)d(02%W!>J%B8ud+iHyQU!94 z%)L=X^fZ;z$RnRS9$04{K5U+)530VN##Re7DK3p7R~klMS(3e^J&M&Ga9l*`bUuv; z4cPsL@JIah<(ON@s_rpP zwDij2$@;G!l=L!-n(jbWRzzgo0gMQn2N91lJti)d-*-;TEz$9~)M0G}Wa2>ju6Xfe$*%m%Eqq*b{X5%7-7_;i zCK5q!Wn-|edF|0TxOpxZ*(a=3g;FG?;JhzPr6e>EuGV%hS&_(v=IT4zQ|2*0rlXfx zs^8dXerb-Uf)6p`eqkdi*+9V0oK#x6qqI3Rr-@=ODO0+Qy}u(M*#SWHH=s)aEtwoq zUeg{V8ojB5j!t;a9CI^E+} zO|z6)n~W>aelH3JT0nG||x?XKNQhwgHZbtI^hp%1*uhMN( zUC-0AVt)&qtSBu(g$W>%^^TG~dXshZd@bBfmD<0zD(#VDIy+AZUj@!?m0F2i!>gaC zgHb~q)CrzNg*EaW`gKs1?&fz7-9&l#ck%FH;CPpwF8em{8t$!jp-1t7RaHHSMQu2Q zB4?3tAdhGU4#sYEayWD02B6}ETUB-8W1%u_^8*R~9wvn#SatV7bMBgl!95^=|M_oU% zCp{F*w#X~A=K;ip8bb&pNvAL>Ucv03bqM)+X`R+~kUqyYCA|`bY7@+Kbp2#+-&4U~ zbF7uxv}m`PTQnD0f-RIb$nUx=Aq!2q2+=>@73Jl$qXnT)ZNy~U;d*!0n@Y0;pRL*R(^zdw>-0JQLbbM!Vdg@4zXwJmW1gy?~ z;iGX4lYqcd^w?HWQ3~~ey|q>pEf1Z5Fr!7^V2LQdSx`_=?Xf*9+m>c28H=NKldbcW z|I{%o&hISZr>X2ps%gE^=1M)UG*c@t?ZTTnwx`7#SzW(UT}j?2E6aqqrKOO$!7;L_ ze%RB7PfUF<(%`a9+~@4Nqv&%GT^Dhc-|9zp8os{|qRKDPtLSHjfipK(YC4yr@0ieG z;n^+>-)I#>rCv-(Lc-3Jb>hkDXpQmO$=A8qI(5_T`MKZ0Q6K8=-q`UP0E{Kujvn?X zNla}NEwb`{kgNQ?(7LDH9#XTDuf{AX$yqA=nVsR;} zc*-|lbMn2gs>}ZfWW0Cd)h~wAp7Uicl84u$mph)2qO80;>+o+gX7k7?dPbI7!}FWx zw&G+}juq@~?Ll9cR=;sDOhvcY%-&Mf()vdrNcuAw-6OVPX=ZI!XhAw=)v0Un?Y6#R zr{j4j%*e+fuKm3J=m-PP?qnaLiy1Of3vF$A-(pNQHNoq&{M^<6ZP@7^8%`V>b|)&* zjQSo$cFr0S>AJIXi~0Auvhbv*idQc-7T~wB@Tjym^b8HFPYiSnQWx+Vx*lwlxRqgq zPvbdk@ow$KXh$}~yf5D)qp0*whxqmH@^PgwGgEA(f`puJ`N@Tdupv>uQT+S*|F;%% zg1mPw;U$U=_sqvL7iHx=y;xMHuQB}XW&_m4l#RbMw6&Q3oS3J{KKwt*8*v(a{~LJ& zpd=fVG*YQH#9Oe^~Z+>1SbF*+;Voo+1h3}w*7~+ zcyY41bi)Y<#23%v*^^Yn!gHt9gZGnSU11i`D%5{fw;Q}9Z}4O-0qf{u{klX<`!?y1 zMD+jd>j%CRPTlgaHc?f-wE*{0(FYPYLpqUwSOzLbYHP**{BPEqKr?ybtRBuTB`uv* z(ocWw5R|(BJHo}AyL5l!j?MLI;1)z;FlT3es0k_}QYJ-!QPjyZ5pDzqh9nN2 zz4H4r*uUk*hX8p;A|xdA->ZDq;8p|Ts5@!`3c7i@`WYeF%S+4uD@gW$zo2KJcX+5j zG&pGl(HI*U85tY1g%u#u=!oVP(L`X(fW`FRi~dS9`xwTbc>XO$gRu6`h+e^feCP&R zXt}#f%gTD4XRU5UDVoQCMgKn+H~<&W0^+I5@g6wh%E(BM*4yzJ41fLl%+k`*L-kL> z;S%v3AXf4{5&$Whq3ZtpUOE&x`tO8HO}t9=Fh_nEb~L zihJ{>`o&Lu73piyl#_e+OIU2^68hiZRXGtC(ewYWZROu|)k_R%L9Rfu1iljOkNQr4 zxT4mLW1>oO*LOJm5f4w=BUyp$e}41jI`}TGSdYU#eE0zS7!3QU@#G2U<-x`VYK-lx zvUZNbzx>c+N%!{l_91l^Vqh30wuq3>aM@->Cq;f1*u9wmfdHV_3LF44u}pzYNj}~{R5xK?9j|5MQt&tRt@VsvApAmDW?(d}$B=xd@> zo~J0M2Z3;}9f7PtPZURur+i0LvF(_46W1UBrtVu=|7`@Dl< zNl%SIRt2d9fz-fl2{u?ksb1nGydcvL!wlf5k&Fu8;AP}fMKCe9lGX`QB;0hN>j6J z+S%LHIt+cO!p81iG7Fze4OZ?TMAGIp{QZtOpHKK6k1lVPy*%`U|D2VT>LS4IU3vphg4LH`xxi?_SC2Z}kGwLV+iyD~Ma`p?sPc83<6Q%RSt z!;KY^D=X)Ls!w3K0@&TBI<5KHXk`h72?IHa))n}u^$@kB#|WauPEQ;3N)-x` z)aGKumf3o5)3gOEZw@C0hG1eJtb~u-g2TVf8S`vaIM(&+fpA-fn1rgKBEkEVltV|* zORt`bsSxUI`Gl(4Q#XCw`yWr|QkmVdI^>}kw37~w6NLRQz%;G+7r+$i?QLU&_;mxI zc*@|#}-vLRJDIXM8r zu8(4wC!nTdq^D;T_D@T$YM80ebWblX?we{22z<*9sgk-0jQ+99%SF6iXs~*Xjg9^4 zvggPz!liEHSK7#RD~rb+fk>B6J^@T_s<5!==*Y;scPZ%X=gnjCJwFjKJ*im!5fu&3 z#__7G9CTxkiURI^rbVlWFu{>d-Ky-W#?_AlAh!j2pW#~GPWlJqsXsOfateLD>I3hx zGeNJ4?9R^C_V(s?1+tntL(M9{Qsq_s2+VeFT2W3K8U}_c0DY@zcyZWDBv>}-2)bY; z!r|fZpRHgevH?Mg^eCwJ3YvTlQmqr+@DNMGAstjeJvTMw>h0423|ToLq4-%*cXwrx zWytgAulsdW3N<~=JawP{*xSRad~4ZvK9Jv+W@xG$6evi&;G6)2t>zg;WtEWNkDz&E zUQSNZ1`A#-HK{M$Rj{5nHeDB#KIeiCF86id@UV*E;ZL7jAu0+={nrFnLH{L-1W+4c z3zHOuW@=W{)fwZ3tV*jte?9&Z_-)f;S{YDygakj$%@6r|9o8|JF!Gb$`L=~iokn(c zxgwVde$pF;P*U6jj&cV(8_ZTbTsl3l;Wys|;izk1cF0kXzEN<4vPudW?>sfS)tWlleJ;Sw#$|>|PMp?K$fBrlJMOo)`2*y(9lRkb_KOP?s zYAfN!^9sN#6-J?%;tPAs&cdAv`gouTrNM%@5EV^3h_p9)WSHmxXVSZJbpG;tPX9oiSkIcFL zQBI2NREL5uR!VkD!Q^#;=h8hc)s|s@Ns2Hh$nji_2~D*>Ev>Bl5eX_vc7hokt4vOX zD(iQhQMOx8y=Fk4RDKZ=3^~?$Gbb{Hwd3m8&7&w*lFDpIT&26p}vP-)1=FoSBt}gN;{cbl4d| zP7P=nj3&K4NeuHC2X+rxXY~{gk0v($iQAY??NXBqTjrD=ySUac zf`D1!YQ_53C%hWYPIK}phDlN3Hpk$$Or}arQM+O6<}KkaE-ri20z7SJ`CE}x9;Fp3 z9RbN1bsj+s)S_|x4&77E-E$P_>FKSD{ma~zHT>*DiAE2o=?M;Hr9s1y71f$L(X%wS z*=>*CMK8u6pUcc`ZeePwQPIJm9KA)0lkQbg1CH)z_Cw(g?{tt3@V-V!@9TK}LFMAk zDbIF;c;VSi+cc?dX8AO_@!s9#m6hm+5@h!Cp8AB!^Hduec811uYjwTj934j>e%aD* zA*a9;a-IS|pqD2oU|X8jX4aePzHccT^10X}m*uv-gLPpD#x|SH zLS6ZH^u9z8uao{R@3i< zdvs1WH}{0HO2y2pp(W`A6&$CA2f-0!K*`PBePykUo-X!-v)i{wZd*vxs19qR??^M{ zo&2A31GZxENwzmAxgB?;$Gg zQdDdAmLUA5bks&FSVp`iGiYwDgM{5uZ zG}F}_WT2`jzDvvNMzb^&;D~a>ts>*^WSK-jsg}G%|6OBWa{M}t1c=s0{^}xBWiIDZ zmKFyvz)c}ZpPi;FY#&Q#C&CilMgdJUlRt`mX4 zF|Jyu;xop9AYOnX1OPa9D^On>ze_=H-ODuOY*<1`Nz3lE~$KmytNFn-pSMP+ABiLz;EsfYFMLbNo1Z& zyiW7=rsTfs1UQ^3Z3-MwpnxpreRJddjb<4ocH6myg{AwlM#9B{d+mH(f8&VhNe6zB zF##DOpDm$=zH%(0)SmcPl_GwW@pV3V#IJ$D&!Ad1f9kapG%BkQVJ!rQ-d+T1K{?(LDsp^xY*B1EX*-@27qdEX?wGvdL6 z2d;J+I#Z9Nt?pV17Az_%v`x^W75dYzOnm;p zf@i)t<2<$X?3ja8EMn@ zxS6DU+X%otu?nML*uME7oiYv?oJt_5pSn z(|jvKlIM!`kdDv;w{|9|4#0iDN&y3nxy>>dzS#F~+l_UMw{?`H?N>&? z0Bf>f2H>6<79)7+HM_Z2q-92H_6B;b?OJE}fuD=MIP6_LS-Bi)Phse5aj&Z%Mgnxt z(zrZfa|R#HF>(C!RqAmwFwqQnV|fZn}ojOLIky`@!?^=8_D_Y+hy!B=ACMgL9&@L~| zB;N0`C_4|%ak3;8Z{3T*$}&_WSVViOhg`1Qqg>^>JV$A=g&uA|8uC@xCSg* zTqembS0#dGr)N^Dk^)LJ9mb0Eia43%5?}ab#P)rXx3&HUIm~1h` z(Jh99n=EhnT?Whm0Y%I`ADjrIzr3Y#caC)!!r;Rp_?J6W>a%c8aiB2%JK4GiE)t3W zbBQv!hLQt~8ON&5ULMc0;NZZh#5t)2leX4)S}MCGeXC>~k)>xX@kd6A{K_z*3{fsP z#Z_NVOL6S^fc7Yn-96uaml9(DP8be&)VfPNyYbQxH>%U`&0_k z84sO`%|{H;y7uF^Jz*C)OnU@FEfjWpDG zBY+NZJV~&A$bs_F>v(Fe^wLDgVdbgPn6M0ak+Li)cV=pq43KMJd4WNy-Ddf*hqRP^ zycuy{wL)Ncyz`OZjLkAs5eUw?nWSNIV$8jy-Fzq%5xj+Iw{z6aM2MgFIB@~4q*=K| zB>FQw3iEZ5lfew=J2PA90RK)n_>DIDQQ;Fw(+IapK_;pz)`Nrn05GIpw^0THh zAXUy18ftsQ5*aikZO@Gr8{KV$x<{UOIE+@CJx5s9DHxQ8e zCdQkgt{nl4K4KS^d!^LiLc^eZpQJ8kxEn`7DF6_@VcPp+_vV z7GIoCMIsTgyncy8|8wbf*Rm$qU0S4x4Y;b(D3&QY4ELfw`NRr8Tv_jipho z>$xj59-ETrpu9w27|Wy6O^(YOw?!v25g3Ihl0SR9R`u5~E^gxA1P^C2}x9=EBQp}kYIvzzSOcWqW)B63jB4o595e=`K7P+(8EBeNRs`4t6MP8|gTFBdi8_vT~C`o${57>~w!M>XMwmaOl zPLz5*q9}K`bz%^pilPgeETctg+ozGvlnV=HZK{sOQvl*Q`LxELcYhK7-u-{^ zb)ErDq+hsKSwR*B6#?nerAwEtq9DD5A~i_wp?8Q1f=ZL#LFv8s7Nz$VAkslCl3j{1W@`SkcS_`P^4 zXDNuuga9CB_8m(<2TU>4?Kw0Pyx7IeT~@N6g28Khjb`aF&Vu7rCFbHNUEH*`e7%zL zgVKxnl+}?M-|e(+35G9DRhbnVpKVw64z~(zaT7AeeodXm10O-!UdDNaC^A2O+A zeb+YKZP+R5egs*os1v)(F~eD9%cY&8YH5p}ft^wdH|wam43Kj-dDvQDHPi#Q=&S6W zd^9Hl&8VWYSi?tC`%$4ggO32vS%c(~Et&6c`zMvfHm^s#?0!t5mzT=sloW*`k_Ucd`L`DiMY8UgRySx0{Y4YFzw!%4CMY zk1>0@yW`$K|M=a{RHeqHR2iHy#a2(nHV3{=y$z+#K}gJ$R;7``nN-NUAMc+2T4lbs z&Y0bZKC`m4+lxyak6a1pE%Z~jAUERn!sd5wGRkcA3=XsLX1k{KH-E%r4p3a-)= z8Q<3~oxrWE4*qqxidE(|o#Wg@PS=BV(lH@|`F(RNDakq$zF!7K+zLw^oSlce{}3JY zB5m@^L)CLUt!ismPm|gm%je}bKdz|vx&G26wsR7c6a~L0doCu_f{Jwan$pqN0UT^v zJl0loI>+JyVw}sWtE&MAp39f3byg=z*fzjqvRZMVWktfV-Cn*Y!7fYOCijqmpk_Fx zaeX%bqAiTyE0j0`uszDBr!Znz_XVqr7DvTgD!gw44L;~54@_?_hYJI7`g0~KAI;KT1@rudVL$ zUOh=iPKqr*Od&tCXMJL+nA+lpA8Zi({{5-M%}3KA3NlQU$&r7wGzDjHTEpY9#h;okg##q`j`_qs7ci?=rLGGipw+ zGrwP7r;M`UU}7?{Hg*NO8^)NTGO|PV@WPJlyb&k)Blplv3uss;Fp` zrTDR?yng*Uh7ehWZri4vlPt>^luFO5tX}DukN!>fwDX@&XwEmxI2D-v3#qASoUoCR zavfHd{Pnfh*{;V0ALo7g%El6h5OQL_ee4Av5bv-R~Ax@{r?R#x$ z?0vYkAoI0PV~o-g(tj@)ADIL3PDv{kxRTelTw;XUzCHqcTD)c|B0&<1tT}`39^x?} znqY~kdwh($0-~YSwnYc&Q~_k}ytn3LPCgvE{FH!kkqe1RrZ-zoPi{FL5)U}P&oCBW zi(uyMix7UtZ`ky_@!D9*#}MZ53Q5{8xk_yoki6RzU8IYV#r^bFYr@!1u0gWN1@j5!bzAZokRk1n8jh)w4MP1pr-ZR2v z`5Dq^{XK}5gfrm2vaW%ikkEKM_to^`u}fk2hI(U&f0}bTU?&h2f~+KTT1+t-!lb9C zyXhoXeifPR8M0fS=Z8NhIY`(o*RS51K$;N?X@Rt+%BbmCPXVVxV)NARZ=VuBSxt!+ z+1{p2<3+Hr5CjF0ljz=izAn@F9 z*(7P95ECzS$4Ilmh|jbzXpa6D8kDo#BWfHD|1?!rSXf$IP!e;Y7bEUN1LT=c5Zn_g zGIFamm#tO?1`4v_tnWM?)7^?tt-4NJ3M_TG^?JSbF0YG#L=9g#?{6AYZVlg9D=-l1 zUHE9#3zSB019)>l{89z`jR|Ee(R%Ikth=+bcQPX_O`A(E!`{LGt7&$qjpF8g?XT`D z5(c-Bshfj5{jETFqt67?38kf5yR1i$f7nm;?--rtg{Nbe{~k z%Lh!^FilB+O@A)Zr>I!J;GgX=5M#5|*0QiVGb;B~i6J}x?LENvMj?^`ZK7XSPVi#Q zjwo?oen>41VUvLI_U);k67W;ckm7a8b7lJiz~_$_N{~?xDas%=qfGq(-ucjcD%xuT z<>Y7xcn3;#pPZBxov8c1_V>TcyLGTI`PmZ>NG|R8&RkPe_$8t?2UJq6jrUN|0<84W z6`;(-_yj%Uhn(rylP_sLDsq67!j*pV)*jCPFfU5xG+5udD4CukMMqoEl-T9?>fpf8 z!QKit)u4ksal$T`i`%enq7j>`{HIh~?SsTJkCnAG3VYr1xMx;YA(u&OcO$lOVGH2= zig1@*ds1P>{5~K-^o&2CfQ>8GeTXN~S$ZyhRQcF`H?=^$*x!Fs{We*C*vN36bq)*> zUNSX0nv{~ld@|Q!o9z)$cm(hst%b@^5q{`kU)49f2S-C;yc2 z!^;pX^1^d`g&|nu+3_@4Nl}k+T>VsG1^QsZZ%g2jxxHa(@Sn!yLwwWY4^lF7R1H(=vYN!jDf;}61|1}l+d04U2$V-3mML$`jZJ)Gtb3# z`rSUhm!|%wm&XD9`JM;kmLJ_(7-{H96_8!ZQ)~d&N{f2?u1`EqG^hl6A`=7JLET%w z{FPI5_w-}{{NQ{CE#Cv)Lx8Q#L^`{49gD#0CNVrq~9s(!^g;I zLJZ}`gG#r#q%tDG`1%{fq|xiY97S)n@2K}$<+8@02uwYAR_S3B+CD)!=eaMVq* zf#_)bEz;qEol=L8TvwnO?NGK~LAs@~|bW@CS#`bSn zT7%X98ee1TKNEd!c)an=+@rR7t7+-&vNaX4ZLNcYofe`40JOW11|ah|BYq`;gTtS@ ziFSA2bVujgqBfI;G$P1>7VBSQtAau?Y|7o7_T3r{R(T^ns-NWNas z^J0jWv7TSu7A(JE^2hO$hBmUaSyUF~O>q#Q0V=htvCsbVAyA$KaEM0&qub9Uf7da* zuQE?`Iso2Bb-+o>UBMqjM_Bj;s8k#m-?RFzLWPilG^VhQz8^?HisJ#GxVxvvzbddd z+ix| zf)HEl=inzdT6wM}Xgt$5O>DYtiX`E8d^>vWE8E-8pJkF2GXckul}hV5zgSEC1WQF! zbeX>bi&(_K57)NL$(4=G&AIJjzw&!iu=C99BdF{Thq~%`^2FtT^?-x7pQ%2$w5d%g zD0sM>+NGyb-`o2#R{{hC4xh740l*yh@4y87wIT*UhJjKHnkFvtqD|HhCgS4K$sW@I zz`>v(wcpPcSFSuNZs(a0riox6qcHbwb!#-L^*AxJYM9?ko)!ORSFc%T5>=1^)f{G? z@AV4`C+%36nSUqSfsZ`uh_g`29=kDE_wtTziEi;fTLB|5Dd$h#s-L}XWtjAT;Q=A- z4jBC_SJ*j3MLlOH4J}vV^-QWyPyaMsXvBqV-z1cKah|-jW%qlKgZzLr^9|y?dH{x8 zIf3WYTdLV>_s%zecZ4zIW0V*gjfUwrSenF4sxk_+MPZ;Wd2Prf7{ z+pIYsNQjiptIew`uU2juCMCRKY@}u2UZQX7B|J%bOX3|NYmUX1>Oy(R@VallIi*!5 zKM&96k9iJs;;uE#&3>zI%AprUaoVvCQkdRps*G|S3FyHrZG5*_TT^pxANvFKF0cBW zJbB6VGWEG?kZHHdUdSap6L;3bqSb|fQxp+k^`+mMyi2}N` z`P(jwzBSwxgfBXyU{SK`-(VRF_%rxV56?$MKXN*GQGuxr+AUQV?FX^f?k}g*2R>%w z2HWb<`CFpN$p~*X9JFSBQhk{ap~rxoZ#1vgczFI%J@5YuOhV-8zaZ=ZnO`tE zGu&oEEmvXOj-@j#G0DPzwwbcGJ426FjSfO3Bu7q7nE&(7i*KQc^2l0|4ZjRO%)2D^ z*k&d#)XdQyx`kVSX?Z;rg6Ubriv!x0zi0f-IkT22ZmWLenfSf+%pa?rS@8p_EPk5F zSJ<_h?5ahT_}637(sshbZ%#k<+MAOyQ5E8xt}wGK@{i+Hy4Ub-s$}4EegL*xMSw^O zJ0aAb>T8Gc-A?~~)+Z?xOx)BP;w?=u*#AaP-Lorgu+z9ViEm(6W!Vl+z=4 zfA*(8~=zy^24aii@H}E3T3wDtn z9UZL)b`udA{rjs-Wq`$;o}76}BK4g+(VuVg(>m2R1I4Ka7Q1ET(IwVXY6vbb!v=9tUP zp=DrqYtsqpv6HlZg~az zq*fdJ%I|`AZ2d=GwT>hdzj1aPHw1wRaY_!%j5S^?L#NVZvYlM9p$qwAHmSu$#borx z0kcEmVU)e*dro%IJXkt6qN+Iv?Zq z8MY&da_FHxe+y<_Ixn(`W_ z@4Rga!*rA3IRG(Hx9Nl<9I0ZQBkD=Z7{pNHL@r3 zXeuQy(NB)X%v`i}E%Ny1H6IriW)}JY?9_0XTWF;Ap7hdY=6KB{foSpfd&QGm2~KV2 zXWU;CUhpkA2Uv}@=NzX!l&i_Du5JB_870Bf)Lh8kvn;N+pyZ3o-&=#?_%``&#Um+t&pakPms@L<7Jn49CSklv zyQp1dqv)zq;x&uGEc7rGI@ld%WI->!_y;ZYt*)$Kt8skbXi6$C7s92y?l$X83I4nX zut!dCo$0sIqO(gdoW95~JGWlGv6s1tSr*ewjvL^!I{n#pGXp{6pS-C}9Wj%-prN5n zmznYU(}xc>PFs=zMJtW@Ykn;a;}*Vo$f?;d3v*Oih}fKFT08~($0&M}#d_8Nv*?BX z`LpV|AAYo$e^MH66w%Z-R8MJP+0$Qtx(^BV=s_FdN@ zG$c|2M>9EeNd8qjYn6Vf{FKLtvP?xC9k;cxjkiBY(&aBNj)SG z-hTPw?QG!cu%9gcXykNSAv4BnCU9lOgJ&mf<_?37nV3z8%sH4~ zN~YEgS!;NU9lrGK$r>&Qg5RQIX2A|j%TwP}E}y;|YZ|!40lS-6Xfx?b^D=b(pIpG& z{R99-ISy*DJ2yt!x^OBQq@(Ay+^Qh>!B!}y9pO7G8Gn_eeC7c(k8-^fdgOTM9XEWO zb?yA2F>E~=5-9sEPiu#F_9DTgb>I~j4eT>Yw;S7*3*qI<#? z)YouM??p=bLmgISxXWWw-(-_3w*UBS!VPjhZas0tk9wOF?CnDw=!Sw81tI2LiU&VV z=KE#~$ne%$>~4LUzW|@j2eIH=+b!om`wUPHFr2V!pYlU!&#gd5uHZB5L%cAPyESQR zi~A9+FwM{*Z+)8g36dCZ`$ENkoYxCFoR;K!&}y+ZpwQPpG>gBCO(3yum7abNAQT4V z&vA(c+dVhODNA8>HihU`865IpBTzR2f`3?q_AedOpoxmgq-1 zS6A_HxjNHZ(|gfWcQmArQ~q2dv%e$BtbjAhZCgbAt+ZOc{f-9wD7W0Pf2jG4>;a%R z0nqlJ3;g}(~YN_fbaDr$}0_aow!Ce0O+~87a~H+-eA#+=(wC}7ftc0vmLo??LC5*#S;n`J>4exg2lvJ~ef>(;P^EkUWsWF+ zYr2SIZc}rnJS-c@i+9< zYI68Nf6AwvKV}*prFcWdrYwgI;h;MBGWJ&JyptnpJT*Ko_^gtYT`Sw?2#O2!pWOAF zZSteTVk`R;1=a6@SkO~i0Zi4MhOu!;NNFL#u8A#=F&CFZFWw(DIACQ)Oa~Apn4uE% zk(k43LH~Y(S6p(VXU8>Sctk#96H0QcB4s6?xptvwaq~yRsu9G_tooG%Eg$8#>vd$( z*tENL{lOj<1&zmBr5zpYvDPhXWs+h}bGQ3@GcV8bPfl+AJY3^3aPHZVDXh6@@=F=k zwXK=i>9SNxIjh6tMu=oC)+*~%U#bt7yke)7Q_Gh+5(I8YO4_b#n)9xx(D>)ouzEcl zU$PD16ii8QLzjH0EH9xhWhQv=xaLx7Sv3Vgc8j#_a%r)9<~&#|N5v6XbB4wx8>89T&3bQ8F3CqIF@hRHbPInzEnEL|CmLIc4`2)ta8FX>y*n zfkBaQB%L^O-Xsj_e!f+UyIq_;Z(;~vIe5Oh+MScz)5}nL`m-;b&Izqgl$wf}F>uuM zbyT!{H^^?egg)nooE<`2$EO7zP4Q#)d-S+I=G7v`=63=1LJ#3RGobI6q3~c&mQO7+ zeWjGX<`rGUEvl9Jybu`yky|HIBpcXDdnc0;d7%aLuHk}79&3sqJ&)}C*vuS6RKe1s zi>pWU1qmg4z+tt0oTobaTVuadsi^DstmoO99NGQ+m*^1wK+&@cg+SJ|@75cgo9;B! zba{EU^pRg9>jIOd2lVPqVv9pk{yg8a$U=Jh6^(cp@&u7karDLVi(QWJmjjWO|8Y7l z4cGfMVaEtB8S}M#|9b18H{agF2cwA>g@u)?8>wq9{Tg+b?s`iQqc%YuMd9LMk0_lw zKm8P%)XTO z1)4KPw04LKKg@e#rI+cwM3vok3}wVTUy{mtYw?CPyJQzF>x`>_S{cWRI}J21Zqc|$ z((wfGoqyK+372hN6kj5H)Gt~VCEBC5W}0z%z`v!IP~LWur|LD&l<7GkcDY-;2o$i- zda<$zFh1*p_AeTsD#HuhVLW8UueCB%ob5b)@v`bNH9*NkP0Lev!#SdSu5`SYhdXe9 zN`{4YHrkYG(79&V;QZ9nQ}-cDY-}tC zmEFSrG89A;nlaOc9)of^MyPSD46df_By|Q;h?)59oKq>xi;DKq()PA^qGT^=ky^Kw~+c4McZB$O%52ZN%dAj6!fJiC8XJI zWRa1vX0~VM{7lS3-ZuJfgMnl-!(}-h2<$c|N>NE6;>BdU-Zc&5J9Y(0I@Md}CtoL>^C8R-Z@Aa%99y?8ht1oPtgYI7^=~Pw^Z{qgpNF7`t z8Jnju%3&ZU&laYkN$D0(Lg7Z*Y_id?kLl@D9bM&t2O_2X{0>f}84o1H#B>#fEioq> zvKb3UGhK_RiHzuI^%8fY!8rSES|E#XKCz;sv%$xC9)P-_0@qGTmTvDt_;iag@=7C* z`qB;+fC2--vlBgs))`sGoe}5`nZ0uVU6~6Xi1@`Sfk(wFJ)~fx8GZRw#9|tMUZ)#66pN4d*+U*h$@;33sk^$_Y+{AG<_J+Y0@Caov`;%5S(O#L6*?7uyTzW_P*X zS95rL9hJFaX~6*+{FYc(+N5jS;(r$7u#z8j3H$OKB%$e10{?ld1HRJm1H-&EY8NXVJiH-UM_$KayfP0S~LFj zztE6Vsly~!WBHh?9bmwSPh{*~+sm^qB3xDtiC+1mq?V7-UY?6@)})F_=?lyEhcmcX zKE;cHIl4u0w`@-*kxCm;gyl~S1I}!gLSok|X8F<%6D+qQ@?t1byJ@ThIXJ7kfJI%V z&k}UT&8Gd z`3=kq!XQ||n1mD7SG_*Fu#cUQw5JOyJUTT~?jD&YkCyi0*QDX!DIiu6&YekF;14{F zk30=yJUXqzG2)jrG_pARDpYOnQAO!#atPIxL(fG-#p8)HpokND{C{q; zHMVsLo^5u-oBb&Y84yivm6Y|WQ&tszU;lg@n=gy8c5K}XY57uWk;Vhtgd^}aaT1bPq;^tcjF6OQxhbx6;e6o0#L*4J|SJtqvi^t_89NC-p$R<&%SI= zVpEM3ef-GTa|9QSJwz>;$J_o1K6yRgH}HYd1Us-ONA0Ok#KIzc4i`w54I*-sD^5^<}BbqxcA~HcinO|7wKVa37V){8@seMTK^qi{sK|0oyj>EOL%F zR#t!$hFL3LlN-EmdHAX@`)ef-=yFTDw**NikSD*ETcU{&M>Grm9#gTmBV=hN_oY&LHsud51L)*-W^MdK@qVz zpS>R$nmsvd6x*lawW?|X$H$=)Z7HVg8+G^H)gXKX2 zT0Pe6pwa~xGE)nS0)(F)?JXIGRJ<%VU!tU-mO0~oW*;sP0+Ui}4E@r)(v_Y#;oEe1PHkUVj?!?$ z^^P1R=1&+;H(FD~dsq_@65Z4cx$Z;4!onP%Y^9e_s`)dR#X2alN@y#h-q@o@XQ2LJ zEIcyj$nkLz@YHEWcx>nk#=$#&3f5-8T7ql~ZrG~zj*@kYq`4I3dMhO$1Nx{u?c{m( zHY=vzUCVgdY`mvn!ec(SO4S-mG^!EE?$wv|Fo+2<{d0zVp}i1DpI91q1um>nSj| zc#`zlW^=FUELwYu$F#fW`EWZaW#uFxLvi@e z3T*O`;BZ`oBVxVi>-vQT}~b`quL8xcVqqhKsAOz9KU` zZ)Qfa)8Vo2RC7Yo&2HUQj z@lE&M(5B-=c_FK(Du!r_Da$k_Y2HN5P4@EP!RvlbiGB^s`0bY2UB~Co3G;6d)M@tr zkxsBs#gJ~opSSca7KhZ*oA(bIeqS11J<{;-LL~sHD zU!$({{}SL`w{dnRFyIJW*db6|Yi0G9KAr~h#{r8obV)Y-IjTMn)q66Xn{#d7UB9;x z2gR+-9hl?BpG2?=a`69pY?nQsu9a=ZhfoxQy6*MXXxSE6LnahPb@!N{F{RIE%9i^z zYlDTEna`jk;)L(E%`AOOg)JWQvKLpIe<>U@ul4gn*z~w0{?)B&E z8bag@<(7KA=Jrjh`E})AhO`%S8!rp9 z1XW#bM@(HzcPMf5VN4KKng1(GehB!Zsq@nzS%JVm2VMfK9DVo#>(=WA`@AsX^H z7$df(tW3>_edCRszRxilf54V}{&7Hf*r+Ny3Pp>`aJfkpAWt1+J*G|G!_<=`ru9(F zBH%oE(f_Axm~J`GY=dZP!4qQ-5o^t9TG@*O1sIk^fZkWqFqJ=T=;1>lj@(?TxCpwX ziVHFiG&!_Hs><)O^~BJRke)!(H%QRdQ7Hl4oLl$P2FTUEAD9x+&77iby`!l-^e}$3 zHDRIi4^+zg^K&0K#s0BAHt`AMhONxFdVp1gV3&=K4q6V%2PtTNb>l1+Y?6O3AhN@X z_U^J=$a~l&a_m?Iu47n5$*a`g`$=b^SuOv(w?_{*63|Srh_iILd6Sd;Ti~)#`Hx*8 zZ#8+fm&J$+4zl}6GpPB-*7X3!SAc$HF$SM68@K4K{B|5>?pKjbrGaM#_ ze_xeWBwyG4AK)#LC0n{p0s?}7yYKET!JKfRWRmJn9tOLZu5Fe8Aufi8i&Vm{Pcxud zy%6dB2$^P){ajYJm~S`XJ>gomIe%D1wiQwar~4x(Js|!;EyqAM@287joS*4gVw$^6JOUN95Kn3*S$tp zH0PxuVc9)UXKb; z6%}1L9F8vctnKBlRTLdmWGY>qnbzJ8dkKfTeiEUH=x~z69D)QV26n zye`V^I|UYAQNC{Ap#(?q`gu)@N8XFbT?h|uZG^*zVrB*tFT_a>Cz+%aFdsa?d}&g& z+|x%1)TklBlRLBU%V9KM%=uo*2{jbcfvnwb6@$T%5*6k8DnM5+^ICI#X{qt=XXT^o z@R4C6&OSxWwvX!=j6*=(bXu-6-WC$biBD+qTn-r;z`BjJ`LE`FdF|3BsG8c!|8Ok) zV`M~>;_al@K%((<`~|hpz^C|-QtP-h(_Vqi#Zlpdmav`-sHQDXtJQXlef=LEYHEIl z&CC|r!oO_<$d$P@8xx8dUzeHxO5Grt*N%{fUx+N7eAJDJ^1EqD?R6Fa$PX)jlXAn zorFtdBM5L>&(-uh7qNqHuXXS*RP3=&H#qG^AltTzPcu%-7M8A9Iopihw)`N{#nzMW zd0bP7MYSEYD!C9_%`{0m`7L{q6{#Z@0>j1&B!rc&>!=sQrZ`F;fK@tQZ$l*f_^L~u z^Kv^#=Pv+gus^hq z5P%EoM2uzM23K=@F123>V&15RRoppTp8TNBi}xN}ftPuZ|54aGrL0e0gzW% zZ{J+|iWRkXNL!#QM*zM4L>vv@Gkmr#n{F*!x2!kW%@hOJSM0Kq=z^)TgU}TI*8P}& zkM6UfihMXy3xpNnj?iOur&dr0djSPXyJrTNegBx|D42xnD|s2O5~ zqc}33HK*mI$%}80tkBdx?7W}kK_JFmzz3N2)5oAQS;Z2U9K6$XF)yYS!;KVV$ z46{{9YL3TY4eK1n>}nAvUPHt5{2!3}XR^b_wc?U9tgyG)u%jSHG8t#3yrgy(*P|7u z#!~08pQ}JNs8)3G+P8Fi0=`7UJTt-|fck5QyL6-4vMYK2Vx26&!Y56iKQ9UuyETp! zrcM@c-5^4X>GP0Aab&?3r)AzNf-E(tGM!!C>y-}EqF%_$_wH-$*66RH-@<|qwijm{ zYDwE_s!uz|>ej6cjf^HfP1@GCR=)H(*-7qG&zPH;gIVjXzB10!NEj20G*7oI%q%&}P6XluYl!DJ_AS6;z5j~r3Q)+12p=HMpL z)C|9zs?SH*@npn^j89v3_Tt*<6l7}ZIFfE|+ya2ri@KV+KG<2S zi;dXS#Xa5_ZsU3bnK(6jYXqYVIzBqcauvvqoXDdbA_UDFomYdCj!bYza>y6g1#9CQ z*C$ba`TifKS;*Fn7cW1ll_zqp8v^LtZ;7k5v**pSp9-U0Y;jd=*~7IL?I=7?-fWvS zV;izHljbD1=~K3K)DD+nt$tmiLyL(__hNi*E2qG`;oQ{Nt8A4spXKA_Vie}{;Z}j$ z2p0~M7;0I-Nh>z*jdg#Y!k4JgC5;l&o;*sJ^eWLtgHzDHqO56ir~5qC{$*^Ol; z0#k@Nx*Ct3CFgGuoZ^?p%nbv{@lp5`pPW)HTm`CR?rS=tHc!LHvkgPS8l{>$tw{jIy{Wd7^Q zf~}-m^)+6&^DwkXdMS-%>SsuA$fxRrF*|_^Kfg7$vN9Bfh6sS-ouEad@MTN-lihIwF@6M%s^$n z3D}c*4f`#)y1G?YS9J=D8;+fve>t98WLu*6F`3`h|7_*?D-&5OX@&+r@T-0u#Y(3CqFpAiu2ef2?%WazZ z1?dAS>kSiG{%)>Swbjjla;W&L;^1A?IKJ$H2b_|{&AGL?TkT)w`SL!_x!DD_iL;H} zCWp_CP0!Db&rdL0#j8P7`nX=c9H6V1_H8z3GN3V%Qxgc#(u#p%su>jkhbH$U80=6) zpp=>Uxs|Si$cS+d63rB{YarH-Qr4$J^CwuFWRqh zw1VHmF5aJR6kucfc+=@vtM zbK7OO{|97(zHSL?igc;t>qHwRQDqcevLHfa)1jasj!a;FH6xXKL_{4Q$uWYg036U0 z$pnOEW+hMerkjyPs%&gs$@~az-3HDa>CK&d-I!KtU>9Cgz={v zhjK(#K1_yxfA~QQ@O|Yh7mQFYt!!k0{XHSm#ccJYyFckg{dW7{#wvj~9?VIdd+QkZ zxEP4uy%!g4XAu%_#-uZY6f2p6%^z7>x-Y9eLQ6YVG16;ou;(Rh`MvVy z5ztcnnrFtw2rw0ov1yujDxS2fpN&r(AJ;;Z7%U%n|2Kf!>wqTFJdBDzJp8zOJU!hw zG>QQb&sNdX(pI}*B_ia>85uL9qZa^UyMG7$##uhs>VBA5YJ4})F96hUssICw5gpFm z&S3BV1{y5RCDM_kyWQ%qwlTW2WNHfQ8ZQ=BVUPWHKUdo6;!|F$6b?_=Fb7QyhmR|8 zMgXYJ|9$_f)qQ(M`&d~(@Ok9wcI|?MFzTzZG(PEKKdzug5sF@{mZjFPm;gz1jH}q)~$-6<){b^xBz_I^ZmX98iXiS6U`|K!tGf`x#?rBgmx zBrGT-=su&|j;xu`2F`5%@A-mcy#MUx%I&rrz{eovI?3j`>xr~tW$GWI07s7ryIS#S zeE{*H(+$x0{&%(ounrA}-cq4tjIDNX!fDYL3XoSYQJW{=%w2~y@&D&^c~w4%>9=o| zkdO?*%sYAMoSXwk>3{ZisaZ(9fC2nK$>_&yYr8jXK<+gIA{N_;I}A|@|Bms>(KR4> zwM0kbdg}Y%#-i+jD2U|?Qf|HPXl0ng_|4$fb zcTiQmLavo}dg?vrRIl*B;?A8rE|rx}(@(EnEPWA*8v?F}cnYX7U!wQC#zr(O24x^V z$*{=F_sm`!gY{+r_}2bTs?~)5=tVAo8#}~=$h*8SYW1kToFpLaQRavJ z8$o`JZkbn{)1~WhO=6x6F}CKqI}iP4w@dE!L{alKKpu5Sd+gB!b9tu$DxP$jsW9ng zB@JEaD(s?Q2OR?@s6EuC$ldvBFMKcVek>3BoJ_QhklwW=TH+N^w_C4x$svnSg5+ZOIg%hNa`pb&-rO)8t7}C9e zamw=L^p79H%V$5cp0TMEN$CM8OFAks+?x!BfdXvdU;TwuV?Zoz*Dy+xonReoFgm2v zL5))kBwFR#y{iUWH)3 z&b%QEOYWraldOhB)EM7#j@k$lE=rS|CFkv9{oXAg6yC(e>|oJXMN=Jp$yEg|$H>Xk zJw+xg-mO&z|38E3!cgv$FX+H&09zA}uX&=cU$i)^uCHpRiE~?h1g1{hP<(j_NOk!y zKCcBBwuL@F{}6WHG7B}^`PtR}?p?vd^l{Of9A8NKl_swWvX{s}U$2G;%Bm@=#>-|$ zbOU#{aG#>#Ohy{lh&dlGb#(_7U{;IvKQv*0hOzFQlEK07n?YlvKYnO~3^!aGJ1zRK z1#YffJe0~u4MOU6wJAXEF_{d&FK@dW^eioX`}V}%-cQ+ndm`wz&wT7%azGmd7`6k7 zDsX0Lb~UK2Cz=HgAGf%|Qm(ny$aPK$AVMvzDDP0e-aS!!GGk2}5TN8U2s}Uh6(7;_hj$aza81b9r0o z2>XZ%;89s%*yk<6A<4}oBO}9PvcMEDCF8SEK}9y`;cjrefm z@{O>taHL0Nw{>LLK<`VvnM2dKkQO2UA~_*2G{pOsBD8-p+6xKTZd@Mc0xXi1#B*aW zJuge0lUH7lhm4bjAHu?7IRu#&=&U1YT}e;S=z)QW9}{%PjR{oRZOw6UtM_9S%cEkX zPv5>RD|0%}m7a=DyhqhnS^@wF!`dxAokAGMg-jVgXCBNnNt_?t0iFGO75z%4lpXs9 zjc?Wysb_PU-_8AMC8W2&#$*X{)7X*Fa(VrB{Dx)L%z&9-a@_rHQTa_~FfTVR=~kRL z_-SAUMtfcQsm~J&i_Wa;B(DCs1%I9=SoX8|0S$HzmB)m;El-T*W@Ea-?vj%Wg;uAH z$Cyzor@=H>*o$j&dV%xywAaQiO#`%U5k|?kpAVApZI$5@6%}E7k;e{d`9n~Dy5@Dj z(m`)s_-j`H{kSvF7&mv1ilVc-n~S@h&!k3USL}sCetv#yo&88}fr|V|7!~i0GY?Hy zGC?L8k0v9+Kr@Nn+nToS5r*Lp<@)E|&^|fai>-X7nrz196?ZdgjUrJXew_b^gPJSS zcOO7A7weUMuFslbQ4bsJ0^BRr(xiCv*pCPP4`Xi~7FE~w4ckemh)9b_mkiws3Nmyz zgLHSNigXDKT~agDfOLl=A0OLuq8e9QZ}^t#{Ydynt<{&vgWv-eu(I^!45&VWq3 zFL#{8gX7C)Ru)9jceso)h^r|5N{o@fR8`8Vt1rdAdsjJsE!7=gu{F53*uFUq<|Sj? z`aUV(SRsY;gio{T^LmuP%c6)N_Kq@@!!6GpBd!rn5?nQ#$p>ZCo&u0mHsuJ;mfM*;$;Yp;@FOHDb7njHVI-|ZRrpov&uI4On+@L zA8y;SLS}AdMefKCwv%B&#*n$uy@LU!B8CN}5{bz?6iSGnUz33}1`swWh;!(>0y|wT z8PkDLYwdac6c4G1>Y<3NGIfL!A`hySYCA39^gUi0@*_%8tH=qe+Ks9`{w($NlaoS;?Qe+RbjfAZ{dgaf zNJQ5gvyxq2G;JLxbo=%W3G8AmaVTHc{bcC#MVDOJz$XtS4Dojm3MRCXgDtJ!+ffA# zT8on<-^C~N2}3P!J0=Eo}-F1_`L4t-+7soI&VRP*bT2S%~2BT+=6*B zDdm6;oJ~noLb{=>d6s)kT}ENUOImi)ks^WyC-I|AfhV4$p?s{Y@IZI61wxFZe;l)J z&c{Td*wo@1An-7R33(jd>|JGWxbL>DBq?mjTjqVC3HaYOstrcju*LEb%e_ZA3b|V_7w_)?vEC zUT657-xa(Vnt89`d_8(_rG@>6!rb$vF5Iw6I-8P_&nUMt{WR8lAIq!6&n z$jnq)iL6G{;ldRcB|U@wNuXc+Oi+Y>(8!YQN=Qi|R5r_!<;zjt(s84q!Tc&8C)!$PYqnqpInT zo?MYVQ*PIjOxSS(Iu2K5)Nz?za=jnp-}qiECdSJ31?T)>SG!D*2UBk{Zh;cqMyWb- z{$(D)Pu;?+4^#u{D&)T19 z-Pri%BI>*~N(7ha9EWW0-+{e$0(Ip}N_IEp^5*Fqos3EE(QNk;iW+MyDiclbOp_$g z$;E}-7d`p+2n5zph0L+KH0_ZmANiAVx?e-3f`SxT;)t@# z@$)t5RShQotZJ=6m#D7N`UcuRbPTB2>J`#v?XRdz4}_68xt`@-&}_Kj;dPu{HKzB$ z{G=!n*<+=Q`xYxQANZ5<1^4E(T^8bv{Nb^QjEI=JBe-}=!Y`>&o1?xv7SBo0vRros zwcJ>r4}|RBzr4`i*&9=!K>LE4XiQn3doD0VraSvvO&KBCat{jydu&Oana6V|m%_v-lr%?iU}A1u&Mg`r7b-57w_#;9qyea9IY#>czS_Q|d} zVGU>;+!Q-T;!}D5U8}tMpflmT>Uc87m2X6?h6vP1xVUgmaG=j^{_*3JYJSYiG3D5h zq~w9F+YI%$O~XYlTUl5T4a#i77)+xj73K5T6+_uz59f@zcMI}vztWWr_q>KH@164C zZKt6^uIn0E>Yz#x{d_(&#!wk9OKh`};(txFl>-E*Fc}%>$yi=Y7mzIQ63gsPMOMKP z4-Fs;CWu-j9epK1gG(Ogl`b@zEFV=*ZTp2}{u+e}I2Hyz6~{vOte#}Qv(el<{5ZoP zR$JpCI`Jw&bJ!)KT7q1U`)pdlK}za}6qMTx_l?-#!1ZI8bh0&T0-wRO zPUVbfYHTOlp2|#q@?B`2IG1ey&$3&^=UpP|J(jJ#SJBI_k7?7$EaD#!<*H@X)(UL9 zqDKXK>@d?m#|4I@6|TvC7~_~q67or>rQwsj9WZ|oRT=Er9++Qu-mRR`6R+-*H~`Uf zv)+OD`Ygk{Zq9b-{`6EFz1(VXU24UE2-a&6mz>i^u8keT;ibRgXQgTT;Ki*BqVOs zXQgr;WIAe44oS){p{z_T@r*p7_PdEgOhZV>H$Y&bh~QCFiR!|5p9R7I2|%WYt)L0X7L))~P*HJcH#N!26yz@(q-@2l73h?9`RM1*$}qMR5{*u`9X#;TQpBo? z&AQ9F7s9^NI%KmRL9W+4K01_Xw(NMn-~9E9(FB9fRp@J9x$>yxE)Ok$_d8HXx#ooB z9{xcB^GdM2g{@wkhiF>ITj*hz|`;{rHI<N9ut|)DK5Ke(Qte~Xf8_J z8K?fkl`H>IL(~r@*fjn>2^ZB}SSc_O5)qjR73^YD)c zKROheqi!#`#PIcO+k4H?d@%0@P1ZKbm5YrAQR(tK4u+?MHixaZ2UV1^;T-;oJdfUp zGefL38Z3h>Nj*D$%vVh`S1Y{Qmh!uP9hzBlst@HU3029~4s2Q-`Z@y@FuLBEKp;@} zES(F$xIWJ08nrQ2hEaNG>Mh_!MpkGV@bmJPZtdH%MMEhG7hqVf`6?bqDp||?RMxZX zpn{su#(K2w|JhyNuuyZ!4L zR0;}j#X%t$t~?STBO^<;EtI{mOkpK27 z1`JijHw9U^xV}i7EM3_hByx-^+(!i#l=;#g#Q4Ub+?mt88O6>Y+|7E_cpCBc#sKV} zg%i)J3|jBYrgJK!JZSWA$F`y|BLo*JBhx{a+WjSOwXW&|t3RBon}$g#p*z%ZM(Rad z;+nmEXtT#5CU)60n~K9fL)3>*Q_bZlr$0sWZcKc<`lmFyXi{X6v31kTE#_#&5GWW~ z8eLNI!h8T!!r12t(*Gms1rhh!JW2URRLXEWgQSd}1{e`wt}(G%=P@YgEyt`&WqmAq zC%q9j>aTf1$3o8(b5lc0ZTcsAVtSeq2q?hgKgGr(q)FBt@j9YGrJg_TLmm=x2c>GE zJQr0ZY>E-JF5dRFVBd}KMWeL#Sw`b3+|p;t2Z7xy7@`N=2v2P6hVi} z+B$q% zo}S*kz#V=;C&cLIv9{P@)syiBDNslXIOS=3znCA5-s0ruR-Mx8=#Y$A%A*zH*Z}GK z5O4oFI+wDzZ+0M@=j|~YSW$eNJ@H@bJM{xe~dy3nG<$*j{3+m9pMb71KxC9 z0K&o=#gjKteICeQV0m#tJ3Z1r>vwlyD4M4ys(~E3c0EdvlF5BYn)-ELZ-s`VyD#?I-Z~aIun1rUYi5kB9V_+u8ysIzy z{vac@5UMPTH%AFGqq_lr|05?I5$fRX&fMu40XbJX>q|z#?fg#5Kz*3-5r^etk-4qm z%x9cn_%mv~3lSgMbo7(F`-t7zSGSbr!l4N5@d|5-QMRp{TP!mMmE$mPr?^u^(K?OR z$B+g^I(pTP%0?UP``c?8ZB%`_z!NHT$Y{6BeW(-QQml_QMeeCzL-ZPvbV8zo4ccVe zc?XYJXL)SKcy}*}ragBi+ttrKiN?u?SE-GG#zZ2E70}$yy@dD7Aj_h{N+E62b%usZ zT+y6NBGx{^Rg06@3znoJr@}=43EFx?pM_RLL zIC4u&TOAt$x>c^1%;mxio709B=;@*D1PEJ zX2iL&qC9M(v@Xt2o=(m${=*NpK^lp*TAe=MC-46B0v1L>#)WW~_};j<9D!tV!R^*L z^EH{aJXRO}U1`SB5lwfx6NQvA2bCqcWPYLDy>W|j)zthu>$&+waW@HmQddR^?V2;n zNqF~#?s>P}p9RNb(Ki0t-+}IP_QenL>&)Mx}F?(c84(yF8J6`K0F^6TTA8Y?U|b+dlW(4Diz)!4a%o~G3> zICuaThj$)(T{ea0>g-F<=EEP_=t>9z!*#bRxTet)5^d-syY+1{J|(kij@J*@Tsdyb_-j*|l1#4Tut% zQ@r33q=S1IS16W(Px_yAbL%GP5COBQ^jh?-SZRt1oGCEIuJJpX?R}-py~cA+$ic~J zSiJAwkTq+Ru+qhe?B18)`hL;nK+(BA@z0%qk2Cc1fcRH!ZSBJJnwUlui|8xRhtIeC zGsp*{(R=s6H6)~Lna)*x#(-NL_RoL5bjejG=--L!rRM?v=bZhwZc}Fe@_$dlpEqZC zb-;xgp?VenpW;x@le~w`%l~2igWKsX9-Kzyde`dcRTLxsd!)$HjYzxx&g}(qaMHd@ zhOc^bXXm!K?+(7tv4M(8`QHaMc!Iw6j>&wXlQ8XK!pF3nsL>mk`rP9BGctO^W_# zGt*RSb0+^Q9_b=7I=msH%Mn#-J!KnWnVcu=_C+7tUT>vcsh<4Fz!yZiiJ zFrTzKUAekLSL{0%C-qW>%|jNO*sx|3JY}@6*U9A2Ys$>~S_U#$m~hS}Qo2@iUL-rrCEgd-3Nhz0(lQ;R{fA z_lQX2C7#vG?9Ul=V@sQ~rX(X%=I^nybF1cCji1kYX7`$zMYFUC`q=`4NJ+ztf9NZ=L^+0kCG<{ z%cA{G?uwivA{fpT;Pdd#Hh-EV@ADt{EM7vh!RmEZrF;uf`JV^Zq<9K$uM-oS7glc| z4s059BuAe4c05jktAEkg7@El(_c?gyVfto;O|x8kbZB?2NYx#1)*6|FSXgN!^9MVS zr^)N%A`V+=4cp~YhqCM%X+G0x_Jj6ANPl{<0tQwNJ|*!WO6=EwAxu}z%_~+qZsm3G ztG-tQ81XzY^{|HH!b}`3Rm+fwFzk>BR!&$ZP-?7dpKOc6lX4 z*3r~K$MMgPO>=UgQjA?%uICdwFcFLoMu>SliY$$+D!tC(1DX4~g?<{CTpG(iRCye2L`eZ3>2Ot~w#IGs2bvzM}I-RZ`>j(WB%RxI%f zNSM2HT(`8aVrEC`9(g2;oolu7*bHMI z-nI!s9woOwRLUQD-PY0(YWo#&a1(P78V?sJ@(uwgF73kLu|ZS{%2+8``cA20sjs;1 zu+Z};TE)HGN*`GYlqZ{z*W}@4j|@IZT{iaXkh=4M#*50RDE@$CCsa8qg$3}cM}f-B z7$-67=DF#@%(^nR@rHVQ;~QeOt)`H(UFmVJ~=Cn{4wHS zzS&_I6-M1AYpGr-Zmb7HlV^i@m5Z@IY{&z`NuvSw5P#Ax!cx2P z5b;@lZ;XqFK5Xeoh-b9|>wZwYbaaON zI1C!0P#V(=lWk3agoQ-NR5>3Uuu)7g7*C~2P$-R4Vki5InrP=*eJ-~8T1jl6fiUl8 zu5WQl!Uxf?p;X@N{We;rgp9>e)P3wdC2pB!AlnKZIFy^rRLBGLo^SRP1|m-Ac;ubc3A5{UD1Va{?R z;fxaNXJGqcMZ3~eESW)8dic!d>@yh7JUnm1$I2(Pssa$MXBU@^RH&4)gfONv)BMaN z?ILC(uM|nW@7u@>PFjYrnlb*rN1-SI!@blGqB19CWm)RS!z1e(8%}tA@{E}>>_=oM zLBVCmTQ-slS5gl3ck?134~^WWTbh0~t=!G*{%%pM0j2=%u1l~Kv8hT}yoMo#Y-6Ej zMT;e*tF`(R%GD3|*Y0f;#C{%VFz#{Em#ta!+LE`gs>dG3C7MEq!wU@rbQQ;#Y^teD z^ZkRNCrT`rR7fZykVW}gt|moXK^?&nK|~E74-AKPn!H0$M`>&#j0hDExidM+lSuFv zZgw7R2p-qP!|V31Ea*nLwBuuTb--OGD2}FKo^KGyS?H+aP%Ei*)#mgRb_#YrYr@XX zUSguB_iNN7jo?o-eZmR)1E`sk=K$AqUhTQ^fY_feMa-nveUBv$hs!G$shY2Hqniud z%|^FDg<>yuL2D?ZgQbCD^rwq`Uyjy>NI6f=68eOINlL9t+!z`wJ!Y86>GFP8(Lk#? zct*4txE^IwHKXZMgoSBec1z}7cY|gY)gu2x?qW^%y!K%fA z0s5l-BLfw8G4SPDd~9G@Fi^FUTH8iKkOY5xtlZO@j2F!Gy^DR=G=OkMNKaJ0J za*Wi^Mf2BMC8`dQo4KRyWpv^f{WAK7Tu7;t$@l#ZXon)n5^4T-OVY=W1A~JVg=4@M zBjqj-aadf>FRJ^S=e{rn&H0$-8962ZZvnQ-qo!tN8_Ube{4vMhHx}+YD8^-%=4LW* z@Nv)x)6fW)*CScDs95-fHI5mXJx*&RCe00TMh8t4NIG^Hpwv{oFu&YxTT=0T+Gx!_ zBrTj8SKTV}5b*V9{6!WWYwN=T+i$UJL^SU9!9SJ(AqhVl#<}D&?UPTJkq+%AO-hZp z+C~n+hMWTP_Q5OEV%FLHW0Q==<2N@kE+>O}&pnS*@vX+n*nx^^CT0DSbW1`-h4a5# z@CArcqo%!A3U5 zK1>TvMfnKbC0LY$-Vfo4$AR3gYLVvyY}l^NFCp7AWZP_XW|fB*htXJ?#Y>fKURVQc zTq?Z5Y(?en?jw_DCXB`TviWC#mUEgS;+>g}dMSN#>EVN(_CST<8x{D|`2GH->^wL) zIOqFxBCrxeJ8f<4SFgTvjp*)ei$&b}v$pPic=LXn^Euf&2H7~ZocoASX}G^;4<8Ru zN9yC77h2@HJJOM6;U!|!_jUKez$)r-+(UHqy|uKEa#X&IS((cjsaep<(}F6U!k5!V zLrIHJJf!K0<;hZ4g!fs*^zlTW@I_x7hRVPo8#^px^H41qQdE*Pc&!gXN=nXS@2TXG zIne&5^Pxk>jF<#mTy=4R|M{OsTZ8}|+l9wuW#bp+rb0rot%#5i8ASFeoj$-Z5U5Rj z>Z%Pl$a={Bb#mdbDniBmYASsSCWWU#0t4Tei;*zIswXisXp^9o5-VSrmEoEs$dJnz z;HK(yLUQ=M(7XnxH9%crJ$rsJu)2+%cl%rV5_TJH6NAjXZI+35_k!Y9O3PxJiF#Nu zq>e`SPcMKl@r{h7<9ho}*aqgoKz^*%{W!5|X>g$F8?TRV^{pSc*Z+C`OX)yO)xhZh z^V8UNTmLn{fcJFusEi%phRp`Al{wOfWvtKMz9~|-X#>dO8V z8YI^veHdHI7m$2_Du*svwCSpnj1<)}Xo^5PGNoILv)%jN?iKnGliLixT4^P5*v(dp zX$?D?5L$g#mT}Ic(ZpM@$6DP2J}e_WjjCAU>I zKLi3;FN;Vra6<0H2KMjcyRt=(J}esSeN(t%SNpg4tCCJMRSJz4W-p#<>X>6#ngHk5h4QLv#b3R$)OH^_@z2xMvXPWsK~C@Rp;~KM z*Tb)l_YI%MJuDx!3bG5bucK9@CSV(X*Q3AT%uCL&2ygL|ns(@FoOCFAfCy`^?JpzR=a+KoSKJOyPTPufgJ)V0l{Cwr%~1h zL=Xny-eCuJ5=$Xi>2@A2q=K`xm3gWrw>Eod%HqIPP?Ar>h;(>zw-~>$ZspXUBPO=O znXk(A06NMB6FUCLb2}XJ7;xuOEYT^9Hn|N?NPm+w8|~Ux1b4gf*cqnJj`1rCCJ;gB z&Mp(uWsaoTVYboZ2CdCu3AcQlqm(h7AzN#>k|W1u~|VuR3=^;!|ipQ9F~f|W-JO{oDc7}S%@=R$m9$f5cqBGsMFWB9`R~C z>Fn=phM3>+6rh&ce^@KGPD1g^`(RmWZd2=gGw95NjU_(ctY&)%<}=FY*pUDlZIk@#d* zb>@x-zPHqr8g*sjBdcbnNn;a}me!WPi2QpW0_WkJ>|O&Lby9?y%tHFchJTx-!W}D| zOH5wM%A%s*K0ACtw$0+@zdloi7n~mPc)j9gTB~bI- z@=cJOj2u)BLf7@CDm%YCx8D2Pps<5}XtAHh>&5uv-Me&cK^(rXNTpARudf8H>~fo0 z=G#=3g^cc%reS$$XkH&@Oz4KRY}!s>^I>YCs*`_+8Sy&*yM4;1i?KAbelQrYVzP9* z?U$aEMgA?ZN^9@T0atG<2bJ}};7I-1cMB@Kil6Rs%H#wyxj>~)_`9XWmRU4DJJ0?o zD!S_P#np=4yGXz^y)1IF)7Nkw!$uO;3bI>=Iv0iE(0xbIKk7=CT3_Y_X&9hMr@yQm zb{pC_6%7r8nwaX{$oss!)!J!nI+umo($WGA9bJMn`%>tWTU4g|10hZR)S3Sg zX$B4u0)%<0Un-&l`rxtn|D7`hY3M-`uMqTroqDjH;QKFo<}q$Mt?}3D)6S(s;f) zN|Vv)_p6PcM3Q<{L{2v-|2CSR7u`4SeH|2Z+lYo{r@>O1-)>jgKxvP64gd*2KNHuz zes{km4hCFB4_76n9ms%f}rstd|E0gJ5@c$^0UX2@*D)0FTvUYbhp z-Ap&BM~qgL<3gOgIbp$ySAaZLTw)qgrz~{1NR>b)!8g_2EzY%`5h(C5Fe#;WFahG< zp95*+>bEa^&luS44)S7FmEyXx`$N_IR28+g)jt&p#}F&Zr&Eb4fYvam#0eVKY_PoS z+Hm5y#1bH?&OA}a4o`W=40GR;5Y8#X7u@OYUvj?F{RQcBnjiQ^29$q)SHd27`Xbqb z`!hCW<&|lug3dQ`OstH_wsqYAvO${H2UD*%e+@V^wh51{cG_YEyf2!nuS%dXQx%7C znC%fA{0ojTG9C;?2~ljrO!N``hCyFr6}A|8&3Ni0lkP8f%+(9X28$*4rXv<(9aM%c zE-o6v%XZq1#&723^^Ks>`~m*gXqniVbj+^NCNeHHy))9&OYRxGv$u6TK^H?Zx;t{% za9HUR=msj-PC_0Xf~5Eyp4UJScMRplqCzyEWR)vi6waVsU0?`gOvvMspVbXgOH4WT z-Mn&CirqoFYmR?#ZkXvE?_ppV-rN+55R8paaU0T_hDXI^4z6veYE9d>KW5 zH6k4`fon(YcNy@OdSKfPbV0Xe#qYY9Z#WUfvD8!v&0X%oE@q}-({i1#o|~zzHK4g2 zDsHV(X8sx|;k`o@tym6$_uWcM_ozUf7B;qb)CPnv{w^EitKg06uWSf;&l)bz0btB^ zgfuB(HYWrsmB`em(~Ee@Ah5;)J1vMZRVC-&1&RUB7E=Ii+Yeo*eP9OvdXJna4jxnO zIT2M9I&V)kw$!d|Gx9$<}_xAEk}vI3s$zD$ijYm z5$V0l3))2cG%KQ2%li7!yHL27wcC-FuV@b`=3*MqT=1-O8-9!orPO~>Zmoo7{5=7T ziGDwJCv38GA;qObT+@3hzz5TaOK8$Z&a3S(yZ^4-CKW`j5ti{wqvqsV6`<|Xz<-lFPlCPfkpBaOW(vEG^VFMa-&_y1jCj8 zDC`PO+l;mz0Q-few`Y_dP@R%}0{ru*aG@^VLrS3MUy;Z^I=phQb%q%+QfA2PnP|DY zDx0Rz`dHr}c%<+_!>hd@N=#kD#5m=B;*()4M$S#`Z*2_Nx!1Q(oq;GW2&zn03Hb|b zTK3HWn2l+l(~BeTqXr=V32+|ltE#O(Y=2Vnvb1E&+R>|Aut4dA0i4bJc$o=ZUms5r#POBZo@7zd|R zDTVXEzqD<5ZxZc&IsHfU?$SHkS2?$V?e#^o8urxXEIT`4$1FE#+I#7&;Rx4Bbtuws zjLxT1a6P=wQ@dN@su%Z+hc5`}J@+Fy&YX5uVHj597bp21SJEo*i(Zk&C1*L)E*zT- z3JH_BF#_3pREo}@n0cuioa9Yw$Ki3_XC2tnuDC|GWuQY)egM^Es8flTv^g!33#*Zo zlUnn|9;n21(RkioKINHYTugB|!)FKsF78MDFzh_}k(XVUz*eVD-HYybK(+yhE|!(w z6jm`I42LWa$#VT#2ik{Y6JtYvxuQ*$)aYxhtLElYXAwR^j?*sQ2a$4=-p&C7#A%6& zRrVS`+QD`V*gPvNFI_8dybxQ_a5!VRov`xN!_ngv@A$=0TOYohV1B=;;;y~wgzE-* z+F2G3FVJwkHz;A;%!*X%zI62C$1>Y1?ejy9@5gGJpu^xRKFabh-_n>go%Z>iI0w@{ z>WK1@QzT;#Gt+I7A2usa{LZ*rZ~pWG$V%*X{nYqZNk95L81wKwn#-Sqix>6~-=FCd z2r#DYPI^R9dA5>LC1)a;8iCZHh7+9rht%ZdZ6%9%PjL;sF07$ zoDqmUI}4rvoNhSXfccy|)KZ)-{c3tQ(1;0lgUl83w-xZw@Ga9QiPrr+tx5rT^>MUG z)${%_zNv4)z^mgTLMXRPZOT(j?;-<*lrVcNjrfcTZB|MhbN6^1Z;OXRHrcRu0u%Zy z7$!$4wB~eT>=_28w1GGgHu0&k+}XvZYltQceI}JK%j-Y4c{eJa6EsqrKYe!Sy+1L1)GgiBP^f3|g(8jZil)Cv@+@C5+ z&wKDrHw|b{0JSry0AI)S8!0KS$2ibhFuB%q-Id#t%FShG$2@2<&Ggx6Jg=Leg5@T+ z&GGr9i|c7KxVf#oK7lkc`#8BM8L5o>@yoq>Wh^<RLR@)j~ zN3iFW-A&TQd&4e`2QeZdPX*RwV~?DU+ArE=PgWZwutW9@w0uk!Lnxk3Sl;^id`MAH z^{UV`CU4SQs9|ma#0p2A%2#bIj|w%aH^VCFi?~x!WKK+Ocp+*<@GvcrlSr=!;r{*~ zyqwGRR05==I=<0q79;maGb6(BR?#FGSEAJ{Oyb5}_F%Dv{)pIB61Ufm?iU`7XXUvIpxa>KzKOc-vgdF`_(C+-@?$T_k%QS zd}`0R9J`W+Jw2Z>&@ZvR_%4({^EErILnC49Y}0FX5QxdhS8si;^6b0Vt+c_85rsl{ zxJY;!FJ!ZoyqyiJrB6`qWHO>df8-F*S1ynX2dBqRa$c0b0c^a0StHmdwha$%(XJDE~{AKitjai@RTuh3qAk{<; z)%U$kDr}LhhqithK70&34NXG7@bO7e-j*8Pnwi-orfXVD^P=?5_!%u;#h10D}4a}^f@po#{Wp5P(4bT{wbhPfbj{o@vQj%QSbRxIY(ODh+_jT)M|D8RVBA+tmgvT|jER9wa9>xawF!<$))NDf_QW zK{fWVi!X~a1IK?p*^<2=vtcF(dvv$5i{{ToP3yk_Rtg@o=q-^8zYj58Q4S^2J3C@x zV&qP^EJI7AeaU}ENdLj^0P6j3vi`djzYxf5TCeog(62P{HPhS;9p=VV4M$aXL2rZ<%jcS^qZ{1=y?^Z>BZROS@xqb! z--;|b7-oq}=l`D=ARHzJMrQi=BPFnR%gZ`BUH=$*t?=G{Whh*eUGC!&H6; zhl#nJha?Qh)Gy`b{fYCJE~_g!SWC)CPT3D34lG7;f)>>cV-w<%2;zV1m}FBay)VyK z>o8Q-Gv61Vi*=bgD8!xwH%T*UR3c0lN=m}kT5twe9NpZiOJ;0&Nl24u$05OKGm@?s44{ho%0RF9Z|my1$m;XHN&>HNR_!(I4U~Q6(I4IzCQ{ zst8X;AM2{ULockSqI3X=dV0Y;0yhyHRJHo4n3bZZPq{!R`l%qm3W3)5C*<+sE_{rd{F@El>YEXVt_1U7ki0cdPpvX}SUN5itV; zJh#MAu)cgpPxk%5BgDt^w@3G0#Y>2n2X%5v$w?$J*9RyJ+< zJkDNK)u5G60EpJhpZ`UjxrYUni6<*36`cl)Xj1~jN9&l#R8}!nH&S&E)Gkv-pE1GU z%gp{PWOicD;>Y7-dN1@luck2*RKCqRxs{?eA1|GNRCuUdVB9o^*Kh;S2sjK6k8Fkp zhZtsNmI7%mIt~tMENoA~>k11C3JO2;<_6?27%XkV$3p@s_>Unf@W9-<2X??N{!yD;^25P4KF(*)uLGOB zlxw`KG@}D!hz596npVx*Fw3&!#xJ0A;6TKt41=_`P8{Y&U>3oI^Xk)VI+u=b*&~*> zC-y!K@_FY}uUOgWdUfHx7rGJ6z(?oN5;lUFaex&&JLg`Iq--umcz(7WvM;A&Z~hb? zsaofK0N@=WHD1X0M57Ta88*gS>yjNk#9V0YGB+jrLLQ{$|GgkLUz)W_>S2(4pR~5` zz5vfdu%knRgFBB<2(!xZq{KvObjdP%7UEfw^c1AW-(Q?KK4?W=Q}J15Ra0u>SWU5L z4`}cI{Hb0!&Vui{lM&()$H31oB(zbkzGFYq<60(eX0V$I#v);~wI=4F(T zi-Y%UTJP6j@4H%^QD zuTkasF%{YMr6@$}-2GetLT&gWky$@)aCTVarK@qKbVIKvW+=9zA}hI|?1QHpPSUg; zQg9t$^}aturxboVfe*;Cb>bTlB$#&kn$^mitZnq@%4ZzWxM@vY3^&OuQK&$zD+W}b zz9ru0zCQd))}lUzKYA|#xV_RQ4t%)YoNuP85@I$0rXmMA0uIR<2|tJRSIC{Rx;Nl& zRCHe@nDVEHZIEw3yrgA!+nQQh{My3hRw!Sz)7!mFXng2oYx^ZXzjoR>BJ!)7ebjmO z;d?2>cu!~dC%%k<*!u=RX=!AQgJWRfO#-#Evl9ipW;>EX1fC}y7f z4NU{;X7b3rjkUGt;+$=o&k4lDCBKb%$A%vrkJoy*Ur7TpPZj}SkrtauV|sY3&&%Ft2Zd%1cXf!$n!P^?*PosVEK(%qN9NJZB= z9H=62|K`G*BeD^U2YyZmxPvMPh8VSE6%wgOY|5fN6jFUT)G`QDE+QKI?c!^`7 zG}#ECqLUW07wg{v11|KdJ;#%Trl0~N#~Q=_Z=0JTH);E(fU?EMEq_5kG$&zK{U18H zVDI&8n)m65Q8Faw{IPF9gd;9?Fc?676{nm+8N_k9NJ)}NJjegTDz`MV5&-_)kF{QU zH*B+no{kj?iCs>Ex+RZ}YCt~!Y3RQ@p;y$S=r`y3EjTqM5h1rET~T!R{(X`ZRpI^q z*6xzoagmGS7Of&h-CSWu%jAtz%;*KMh8bn9@4J|F>Fw};3-MPbX-o5=dfpE=l>X>w z2I{GMmn2`kR6cGpX=H8|DK{DSm_l$;oMGeuwkl6RV@h{TCeIKaU+Gy~RU*6YsUgWp z<3Y@iG>nNYl%R5jp#20|} zal~g^9P962!BhX~WDj4_im8}z`!P@lc_?VV?h1QRpGj8mtbov@_r@ccP6MUgHwnHs z9#JxF$@079)iHfmuLFD7=aN30MB5=*2DeCr{XW z7?ZfynMa5r+%-2}tEo-!INSvVo#*<92sy|Q#?J;QvHZiTv4^q=Pl8vXee~*Gm4Tuh094uFMkfZHYqYQv8uKNuCESFm&+Q6gCTu@4 z41@7z*8qqEyW%O)zElb+2Zyd>U!|z*XA7pF(f&cV9JgqVnB1!DRP|HL3Ifto;Ic6= z^H3?Bb&5}q^6^OsTGFB|F-mQQY?tT-m|}JMrk#Gv_~+OER>kG>0b)qJ3=9g#!wJzE zflcrZ!{XWU-+esC zE6mHa4%|b&ij1mFkU6xm!HV_DtLu>O+>*6m%`jtO)P=pv2u$zAy8J@cT zlagpD&8cF~jF)>IW|+lg^?|8Cl4}%l6E6v)1;@w#SJs*OCcpo{x$fgbiD=pn7H@S zTUS@%?R!h!6fut@O2=?QhPT>RfsD4CFdggQJF8uS_u+<=tmbIqPy#&X>ht~sKWe(v zlSbIx&?n8_*$Q@tmh^K(a5uF<`1@&`7_;Da@wNp}nauv@sthKgAAC?fJ4>eI0Q&hc zYV7c6T#UG=7e4+IEjau*t{WZDJaT+I(|$NWjm9skHCrKHXkW-BU$EF4~k8N(I zrm!_6N2bO`rl!K-Imt}KI&BGaKz4!d-_4h9{IjdKQ?sfm>3h5O+rEYi>E_47mXksd zg=oGoGhQ+h3D6N6c#cHe3e|i57{0rpo9|>e^Xm=RI5(yz8oA1yWS69e&U4d^ryuVX zfSn^m{Xlqu=0q}WUq7wCAM-^JuEICuT3(u8%U@;|8{@L%h=;3lD#wIARVJ1UpIFsD zFgGR4+2wdDrh4+}<^R*(cLz1K#p_1T5xXA6LPzCbp?3rkJb<9|jt~M!00~ukCm@1? z5TpqPf(k7fX;cpsuf9w@!TCqdBI+f)+C%l4K66uj+P&~K zOL=(%hmY(`^RwBHz)N@;dTbErsODI*~AcWdI+7J4=eXgz2oWt zx4HeHT6y<;M-BBf1;_T@89IBbeA&x>Ld`?6tFgn4=$n|x>r!!7d6^^xTwK%WF_fGP zZ-I}?$U&e(XC99p$xt$WOppDW+rtUf{a!IU#McEs9phBoo|)(NJY(F}@XwoP6$91& zIC|sy-vQ{$0K91u$31v#OV(pK;L$k&(f(5Cl!;%ewbP9m>&tDYHep@{@V0oV8$zs{ zdy_$b2EN{%&kWe|0KEX>#*H;v1R}{a78G`i0PS(Nw~amRDPc`uQhltHTszhi^~K;g zb5nUh$UiVSaq%)$(hH7jJgw1hk{!-GN<$4Hcvm)u{d}MTv~pFeZDEBwD@cd!?PdTv z|2+JVy#{96+X#$+?TM2sORF=75Y<-Ot6n=R(=|0UK*R_W`8IQm6lBlGSKGxVbR)%S zI{8a)dh5i}Zr;ow>r^K9`uO;Jg|w?Ivx6XuFq0JT3FvEgB||?A%;f+WRhfc^^2RoiET9a@p;E&MIO-2>qEKUQ|m#O^6S@}2?Db|qyMtm2y z9eY}u*4ut9XTemc?Pg`tObmnbsQh(R4Pz+}-5KBmdwHesJnGl~RoPmEtB2CDRos88 zH#%wv)Y8>sQdCYt8{wCA(8CQSjuwuE(thmi7Xa;07P?@)q(n4Guz#_O1NKRS!TU#g zy66DlHMGJ@-=9!XQL(|{hQAd(k#k6vbtO-*QO4b5H9LQNUgA^9C&_L%EmGQ(pQG0k zU*V*$Gc$u9R38+sO8H?l73xf|rzN?;m9PQ9{VT+cHf;FDS&N-^Qh09fh|BWMOzD=G zXnOlZY@@Z+X3*TVhptwnS7$dzdI|^F;aHF*+zoYBW*00`t{9>sj|d8}^3D$82X^j( z#F)VeU6rYptl-GE9)!D&DO;f^c%T&ASgK%l1POx?DN)T$bt-jy&3cK{H0UOM zxl!b=LRYcT$r~^!cg|8^k50wKRM!F%jaO%*JHCanZxAq<3e(8{pgEj3%-5E-a#s8_NAZGb%w*#*VdcY68R0` zH2rnFEzGtrl12fh{~RRTPA*-1^2~9>L6ctCU@D)_p(kghycwAjmx=gp>Dqhe z?A;ug+!skw(;dUxN9=avt*(!zsi$=8`T6c{E|GH8I!~R^e6P^*taXT|k@sp^LQ-nU ztsqrjw1GAN7b)Dn&NW$hyV^X+s0~)@o!yJIdjmLAb)797p-@+)(mq=W3AobC_~L0x z3p3jMcO{~|`N@+ro^Ore21Q4K_%5Bdw-*zqg6thBx?UpDeYHk;%~U@rK8F<2?Pz2^ z(BHxh&~;JKX(B6=>374(eskI8rQqn0>j{c3zK$9auZ-qpO9DB0ncUa1;CAcV z*YDWo!+6xghcWO0e_k0Wtd#dv78yaV!EyYGBKNnwNSo&zJG9_7D=)6vV3(ctUQL5B zDcg;`QQlykYm1G`vG#Qm?t`+ZI5iutA@?M|1p#J8V(;)o6Z0z3P(rBJD4V=j+lUefYjt=jVFL- zw?U7*-Iqn*Pdu)#i!d(=FmRwY>}c!Q&q8zI?~{)Li)m!VL184|LPk6m*h+0NS#%O1 z&q#2{WbW)%%&P4G_};?$qBumEnnRG5OON8YwSkmZQBNc!Y2*xVYDRscgO}-R8<;9EPum7_07oa}1Ui0!8 z6j|EX0jA9^=`u&CLPj$iYb`A6YjjAPj{OIa;Rk@9d!E3bJGq9N&{>Kb*#5BJdY%eU zXpgO|e4Z5&vg(AJU#zTE4U}(WdSTI%*AG}lvyi|!F8U^CE1Pn!#wLQJV2i-`Dqyjb z<1zqP%oJ4gbT8pEJnCD-*5^x))JJgiIfR=REq6+%(!;*lGx4Y}CA0^w6zQc1W@Ad9 zjwem;50d_$3GXmapxlVp$w6%O@SDa8o$=Pq$OQm{9+bbocBY$_sj2@xP&txTFwDCG zl-RT{(?*4@_LDq_hA3M5lvJPi`>YYQ(mFOFWf#Iyp-hT!klH_JAJlmqgjwrM19`51VT1Lc~T=SR*)l=RV7NJ-$%|cw$M)Gywas3oxJ; zfZFIT!}K;&6*2^?s?6P{q8x!5%3*PlErQ;CNmGyq-@jL77bW9=L3(Nu=W~dzfEF4h zwmmq+gjLYAvva5gCCmQ&P-w5=6TNrxPGiRc13=+vhVRoRhOC@))uIro6K=`zk^(qTpEg-wm-PQ!4t76wr8w`U!c*@CZOiEva%uES~(Ir z7u6sM2RyXE1T)KAJP}~F#13kr{9zj+hkVj_I>WfJwdNg@c3;diW9~eabf}6?Fn3#+ zt^+{u!||Ehs9y74wn^WyGxS2p)kt$mNvZx>66w`n!EaC~kW%EH*Th~N$;boY{zMU{ z@z24O1_}T}B^vjU>k~G9ee*4GLmH*?J8I`ufd6H4od`ft-(p%w69o`ab`tlE1_#^m z{bA9V`0Q{$Bs}!IWx?1VlR(iTXISt;&Hg>)+zt7*_PYKgo@RMFbqSfoTTHEeUtR^2xO5XTeq=e= z9kIw;OS5WXTd;&q(~1eQ7h0OFKXpra@SlhN<~NI+%dy~Qm-~aAxamu;K$I$n)+;q^ z=TQvw0C@8rq(-d(@PG@CKj!x;VEiifA3F4t?mGw8Q zn0Ts2FMMs3Wng2exg<(AjIr)Im@9ZakZOinSuH<1U(9JVFh7H*@I}wFW52Hte+TfD zk>;ydTvFELH(e11@`4E&1od{yd^GZp0S9trbrdD#`LMSlFpf??RV+pUTb6f?U-xsw zp&&Q=GQ4oo1q+la4NSgqXMNz^t?5RRQ+-`jdT5~L&hi7Gj~h3$)3w0K@?rE@iU80C zmQC-E)ky`i9hG#s0E_lr0)hPIrT09`uV`y~PE5=sC5f_Ry?(`gX9^g5JUtDtqW7Qz z*QjB)+O8V8=_nR~jl~zM-o@`PP+oxkCR&swIWJL3G$b@6>~(`_PRZ(g3Lq~$Ov%k0 z8SdLVLbH}!oS}%If*VwRyluWE|D@RYNm%*oLObO_Ss(_N%y&kt7}mh~3qSK&^M%Wg zwTLhWabw^8vj7_${kVC0F3-I!rmL$uhMKl1@x>AioFf@C$K8^frT|Lj@BLOe7zxe3#a>=sfO6w?ATW(1 zBO^hW>fuAb>!FBx^(bAJ5%o?JEqb-BOFLO{!6gq(ys2X2!mD1xmE<&twKgw^>4G%4 zIvIPHV#3gA8O`D$ijnr==F%&p7=RBd!~UUxEH?}DdQVS2qZ|c@#k}a9o|&G$3rM4- zrLk_w1Oy;a{je>Nu{-6I^yM=qQcbpJC#J|#cp~T_=J7$ z_vRuaS-X;2FHX9Z61mdwNeRM(-aA`C&BNd)QrE#I@{ zFF<4+dP~^B=}Yw$*-PwdGI1L2>7d5 z15<~dHCclv@td8KtT+HkpaK>>W)w;mlRbkfj6=oZe!7C>ONUVX!^#y=`Q=OeDbD9_ zqrY2yjE@H~$avzeQ#Oc!2`~#e4?W|FYV7#hWtg+P)Vsk?lP1KGo0nHJ2+dGVwleuE z@`1F4gr1|KoOqE2*0tJQuWPFY4wBM7DG?b+f<>Jt09MTA5t#(dir+H-kVrN_z@DH7nujeMP7T#pHg?)?td=8TYuy!C)bKaCi?z*ZL zqBgM*gb(`w@4&J0;hhZv9=Wt2T&ybh_h^OZ|id!)#-Q^0v-r{ zJn?Tv86?0u0?6ZF&D@I^7lqUO(B$T`Jx42}9j9*0)Uw?=F)7zn=QiL-QhjGxy5m*n ze)P+QqQyZ8()OsPArm+6-Pz5ZA2UJww-y2{3$wmB^*<@**+s|Oi9|w6i_qk1OiT;9_}+bdJcfF@w&Q_nCp+zNJD{w#8o58g_x>IP1!enc?9N5zws*yfuskoNmxno!4Kv^Ncq%o7fe~-%lzgSe|I1VWA zJV}G%mjkVeh{hz+%%m`K`!j0HF>8GvP6SCf^5J@dw3Zga`eATu$@-)P$+@|(bkT=% zcj}Ql2hlf;^l+Hrp$Qz#yS;YIeXSetRPF|59>~e%ef9|%!LkC*4TOma9SzMqz2A)L zyS0z|--RRu$Ta3ZkP6vF>CYLDOaQthz|tzw{S-j7CpCH0&Gx^c?+ z=An$7PO)h`dY3EUD?a@Aw{Q1Pe(BT4cZW;K$p!q@#oq`^^m>a|#N{ot z);EsQo#E~kc{WLA0D?f|Xu(tazv9&Y5|mSrQM>d>#Cd*k-bi-e(1vgYDJ79PF@&N` zd|7yS40iqCmcG_jB7tcXlA}VPySyJJg?J``>PlCm_;^rz32d~YZ>f>AfDJ#aD%ULc zVBOF+1$D+yb8|Tl-E{Nlv{V{8x(l`vwyL<+M>yl~->;3IzoHjVxqMeFBec zt)(F_F-&rLfbYq;J$_UgMQ34QF+DLOYB&D!;H$g55>)lg^{)UQdDUDfwo=C+M_X*Y zMbT~W50YNKjk5;8bR5&0cUjpGJ1`_X>vzd=7hT-75SixLxw-a^D=&pc(JAeOXI0#6yl#LjDWGztzR@=emxY%gLj~bT?KO1k6qdn%4NNwS-K{Ic1 zu%K}92OqZe>z!smdXDj255r(=YJa4rI^nbgq7|_F&HZ`+fxiQUxKwB7Qwl51yRwWH zU{BVsRea5{pQ5+y+*A@a|+`|m{_58i(=A&^n71BV0xvDMykvQqNlMHkZjX-X$NoK+akK?yreU)YMukI)5YU926BnOF*XQn@v7= z27pr3w{He`%aXc|0h0B`NsqW#J8uQ-vHVTVj3Ara6cTi)?WVx!tRFdJT~w}5_4L$p z4=!O$#{}I8Yp$cbmz>Y$6^Y-CtnXQi7N&CUVY+sWV@jW6iolIMV=N_>OxN&ewLkI= z#+C~{Bx@e+4PLa*_;O|?lmH8m6VL+jox?cx-z}84w)bkLm zh4NNnbUFs#GBlUV)$5-z)@3+_b=Rh_<)RB1)K5UnM)wFEttfxG`!B|Zi>`t1^r-%4 zgE6{OKi_@kSO-2M@I`v(_sv=2H_FN@h-#*~*Kysn-*fl`{U#`l!_l83UXboQy~)bU z%gx`}O+t1(M<~H3m zJ}^M1D7*2;S3Ru2c(Cq{hdKQz zJp(u>b?_c?g|qFCpe>i1)l={r;J&1WIgpSowu4d@Ym%)7ZeKV*HxY`P2^aKvV@^*HRo;61I?Nwc00OxjF`?YsJ_>Q5{$h1$dyRk z;LvQRa|}Va!ynzvbxJI#I`(GFvPH~ZH&&%={_MjmIx_?{4|9ENH(yp1Yc;L1zFD7T ziJs0?7+c^|Bp&gL}ev@;SZYo;w|Y7FZwUA4O>m3gD8GD(FA-4?iHQN8{=gwftYRuTgWu%=aG2z>Nskjw7x zfLcJ}TaJsi+fL0sxrtV}y|O*gRhtoe_w#uK>p%&yQ$7@lbalNW$~cNpa8%x0-e8mBhss9~-}!fgyEG}(4Lc<-JK;xMnG)GU)59iW=(;ps1)C}M*m-f=pX zG`NrwokL3((uuIMt>oO%OAD&?nYNKwAr!ozu-Om2!&2X9*{Rl^+h^#kW~8-O_dU4K zuplBo%m)+owQk^EXi9mzqa3doUb?w40^1u5$WF8Np27bYI&p6>pI;|eC4cbSn{oF{ xV)q*T|KYHn0WcMIc5cpbMT0*mcK5(PAefKBki)N?TX$#4!}|)7>Eim&{sX|XU6=p> diff --git a/.asset/sent.png b/.asset/sent.png index 73154f61bd63d3cc2f49e0f99abf095c3944ce1d..45c9fc43235077482514f9198af707f4cd5f2460 100644 GIT binary patch literal 76639 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�u1^DmyP8+CqVu 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

    jVS5qU(UAJ0xwdbSac;gHJ4K;7^i2b`$wpvRI zE!Q{hQ?6eCsfdh-s&>LD1p^D1>R^UeP*Bn@H6kP_dUW7atbZ~M?ms4YXgRb<;B#;q zuWxLCbqIW9;PUy8>VlP0STEn@?9e(xg^`-t_$ad&iW$@C#0cPZgMv)Vx-)+!V5Zti zajyMvZK6_Rip~0OTADtr34sd1RrX^qsF)E_itOYn_Rgp^;$%$ba*bYR?hpR-_+%@fj`4Ivdq1k4ebd^?H0< zK49y0+z@t;i)Tc+Wf=zGp0n5~Czp&hnJhzWJKNfB2pIoi>^_3NI-bwK5yfW+B!+t8Xc6AfRHiPrP8p;*&cTimVJ7Vj z5-BYG6;Svt_ozO{!69d;EeS)FKN~Y)V`GCJW??2%t(;ySdtjjd>f*pWR|%xeGayQ9 zqb#bAqXJZGd#_%2g!U%`rGehSYX|}7q5P)p@#6@wf3VWStrfqzG{q+?%Ro(i4msxF zvukmDI(M%N`LSWri~q_2aw^W(-RUT1pVRT2U!;6g>pGu$nC4|q>4k{XZrs~ zxBwqYP_(AHx(ihQMGj+e*7rb1Ju)!BK>xbFdpb7t0z`FfAASuxEN8E6Z<}3UekNiw zmWXDtIqiLx+Xw=G2A$PUZ5Te<{E)8!qI5yG%bd})`}u&TWqtK<$}t!X)7RnywrfXk zZW^Z$x7W;?#U6D#M|uUsVDJ{dqmnunh?ZKEkxjWTojh0v**QuPX1lQEmB#9Y zDA0ZnIWN@;=RKvkJ%memMn)U+jC0q+hP32H5{Z1m;xDA;2j_1;kJH!E}Y%;~bY@QBF2lYS^3+h1RC zrl>OXGdy{Ggoq}W#vw$5r&m7YL-plHM!xj-_qYDtSH}weHCPdNd3trwMkMm7=;GrD~qBl0-`!LPulJDZzg&mQ=qFXbp#26feZZTRmj z0M&%)I;xi$qFW#=^SkSvsfB<1{jW|gkaF);SZ{F{1X66awYEM8_(w=WtfZ*qJu^en zf|o0!;vMgY-WRtGwY9~hEnKaz7rwq(4@+2sf#JhFZ@p!A$^7aMSuNd|<49(?xz6`( z{+pweG_bxkQ403NFw9ew5pnOyNj@~aTHgi+I8b&yKgK`sQLnM~)X1*V+oA#=9#v;7 zXTZ8X%F4+L_DHOcydQys-JoanrAV_t=h>1G#gqA|!HwplC=~9jv^4V5<_^W1T~;bQ z{QRE3d;NyPojMoPu>HQFr8}dEv}PIzNSg{g(Pz?#but=Dlz;$Arzso;-|J#3KpFRS%(&=csiSnWPug8tb1A+0MZccdLL&||S zyJPW@cA$HS{?lD*zeisqgNu&mxIXwo0i51~w?)gGRtN}5gEq6Hb5u)~PF}qT`38LD z&U#^t78}x#z(5wO=1n>8l>dTC#fXrnz6N@ux1HJGD%aKVSgh}WS?>*m`j&5Zg!4bE ztZuvj5tddCAs`s*68S)oT&Z^?i4s00h}ZO1v&1LB^WKcjrJkJid-9)$Ri0C3SUtU3 z9&5)aSm1vd$-NTZ-xh;%{BW(%mEG|tb+}JH#7W9hiY(rHg6%#U0I_{=W?!0J% z+y_-<*Rmu{NLr!GeQ(awsbNyEYe_xT4dlmc&Wn{$azOH3hA-R71 z;K3)PN8ZgoB_+1mU*^9LdiZM1%~^94{$vh#jUqm0Cmm?=`LnJu_46-zL1nBK2CKLr zgryox*VroHYtIr=%aqgdgrS%vmf&8ASQraC$W31|kP%5gjq20=_F89rij9qMd`w0t zBP&Z(`f}8Q3)b8MbsT9VMP160hL1g0A-;f}(uD)c8)xa8048~qc7-;{5uEw!5a;0s z?XgLxh5~I~;mOJZn(iR?%>k zbp28D@Ye+cmqy5|pvP|zmCr$)qQeC`brK8;1sklKTloFJ?zBMs!7537L-6@?-`Dqm z?OLYtpEr##u_#qqTTA@#3%xe`@13UhNJ1KX0BM?lTAF;5t)nALSj@!aZ`KIdl+rl9 zJiNvd5|!-f?oNFg!ijIHXEvVeq6!qJ+4!gb`jX2{-)*w9un0Qh#=?>x&Jyu|%FRiR z%d74p0+RLYr#OV<*JcWOWLu1x-=wKNXnmmIF1hV&NI~*x3+-Ux-<-`FC$W0&m1Y$~ znQf6dmsnVz_>r3mQ7n5+6SWMd=w{cIYspHUSeDEX|^w)-66)_Mj zu-;=aUVpA8vqbm41N52*;FbVf;&7izE-wu%)f9;LDiE6Gocv@io0UN+9p zdQ?|8A^u9X#b|pQ5R)d<(k}!5g_tBITwQ_~gz}r<9AbmVk|!lVCVyQ|{IBvG&5;v{ z)E?vP2iDJ@ev31@q4w=`izA<@LU=)^=bTvf31aR^(J&tg?BN<;M}&mDzX41N{8;~} z*0#GPYHDI~>h=7EiwkE&#O0+%zPoq+Lq)b#eMldad7xuvM(}p?ZYtePgghDrIxep2 zG5&N&U6>Z|TmO&Ltl|D-ux8!(7eb#;_51kv>q*K%_4OM1sIRmbclf2;1Eu;tb6hm| zR2dCTjWKXv+!b2F<|k&iGhMh=tJI5eCXCW0Q;!~@O8HicMlhb1N!5P1Jyv)$HI&Le z;Zyi9Ffk?m&3>=qB_P=JhlkAZcwPFmo8xA&9ZpG`Ir$-<4q4}g$%_|oZh4{MKYa8E zLLeSr8k(gR^b`xO14BIx*wMQg&wjni zo;@i@7OxkH%FOhM9QR`Qs45tBZvBy$Pgupti9Hun=t}0TIMU@~$k0f-u;$05-X>|| zuOP>5C*5Co64rP_LTW~b^0+Ur_Uf4C7(a^3a`21i7Pp7HdrVA>0j~dxjY5lt9{Qbr z!K$jLMP?%dt!OTn3P(Sq==cuoJZ@KR0xT?21dU5^MI;+{(Wfzr#oNl`s?BwMTqH_N zF8J6~FPj;Jx1SBnI|VF5KJsn~Z~Oz14~E|{uA`GTkwbxU^ZAp(7a*a1CQgDNMn#K^ zdcDyS7aT}z z+t#=ZOn;w#=hX09lSM|wJ3Kj2R2=wXV`VzsS;^CIzbHEBJMWFP;Gd4RwqLIM6-UOd z*O#Y9#v?P;zE(C_<3LA*2&^=TSQ^`Sp)Av#U82ziAFyuGY-MCYbdYq?K1`+5+EI2*rxH@-SYv_{i*BA9TR0+)A2OPJjj-56-#D2X%Fo{aIZa8DX=eJd`wRy zXy$ME!+?6aJ@CK8I;paH!8dZ6gp8JtPnK9M<{^;K{WdG*P;-H)7|>&&mun-GRV&on z>QC{d%pB?M{S+00F+FR4vW;(yMCC2x?}dv0f-asAe+zQO50<;;LQK0N;}mk0QnS)T zy+n4VIoFyfy$cHu`gKtV7I7K$-fO}r0iV^msPnNW>#L4W9joiBFyH&7K|f$9j*7?9 zNGa^>Ztxrne8~TL<|o(7Q(&3^z1>qo^OMXHhGQH#N(9RDjGxmlxvwhOuctyIVq;>e zL5^^|#rf*`S&exVhi>UURVUqKxkEv1iu8hjGb=PuNeySA>+N6aZ?FD`2FKd}wcy9& zP&J8d@+}=9=jYCgcJQ+Ph1BEben+I$9i^@;(~@xow_$CD}Cw1p);B zricKcZsiXx(&Y}G&&5_<_Rv~io4lA4JZKc1?ZLeIs`DtEgX_9y+U1sjbdD)ldZMOZ zRsWI-l9G@7xH|gBmC8ry??{-u#IeO2ulc2DNjx5Mv; z&gS%OWl`Us28j#RU$0D00`{k}kfE@H!>T*l>U8&+ixTE%cI(x^U%$$&TDnof6&dwZuD*dFuOr#Hi+GHPRQwCwU6H90vsJvIJnSS$-NA{6ST zxuyX^*rM%E$YD*<@KcdIEXZZ{5)IoRd|!l4qNlZ$HJD*-j~sH*{DQKwqAoapJ%GX)Gt9Nl`xJd}v#L9ApK7`tJ)zvw9>|yVnlL9kJ5to#8JD-cER_3)lYQYu z&e&X>+eONkU&>H_!uA}Moe=#Uf@52oCHJ6SYN60yJ6;)_MY1zu7>jlhghE#!gE2k$4i%zAoym{?f& ztd4SX^TBbN!#uuqpBC1R%$d`Kz0))t4Z~hI3Bz;30KH7$*)0)!2L}N@zI$Hx$}1|c zFfsAiZJlRoTvSUhlAttv$^5T@;;mc1(*xpLcctK;Zr#GT_pji%uMgc{-~9FOy=ut3 zj?A=8Fg-tB8%Xr5^vx1=b_PrgA;qm*pHT1d$G@=r@};*Kxd$c;ZEeyYOySLqjgMnv z;piu)WeF@VjWJ9VndQttfT2A6JTZ75NymtG-F?Vt-u7;jjI~-u#b@W>(5i~6j7rf} z&a%w-9C3Jx(Jt0)thFv|Z?80Brml*F#LCJ_mX->VJ?(+iE`UokADkl2OVH55>+3wc z{0RecE?&bpu&|^g=;Puyk9-S@996IH-|uxyLDNP~8bco|``Ru~BV2T@u`Sr?WK$L= zZp=!f|IX;>JG7LPlneo0ro>qEV95@*wm!im_y*BoxWDebw_2C?^4quD40>X+M?2Av z7_=9wfjtt|-lE zDvw#it+IZj^Y@;Km;Y9Zl$_jQ{Q<4;TyCY8-TI(3%8c_tZD`zei@n~%=%kjPK_9iX z`-w3KWpM}}A@V{}JUxxX91k}WumCk#XtI{?T|D{US%4+dty`Tw@ekf(dOR>o4UK^UU|hY;9tp|wzK5Uf$nfxROOGO& z&yf9oMw^OANK+KUN@#1V6*rP!uwVzaiq=+MEhSuLGq}vss%5)(sYN?Zzkj#tURzkm z!HSJws*a^0&qCDyo(h)aOh{>jbXBzJ>s_$v1{HvV3&w`qFJ1M&2z?RPSe)}lvw?uj z(9}lwI3N&h3Pn7uI>|$U#fGT+$E{nvn~eGK6vZem=K?}n6D9cIc0)1P9=Bp8>x|T}dgO>IuYkyBsgJ1&=q@*MEHIWcldvV2taB}6B{*5e@EpRJ>^JB9dGpdv|7 ztEz@O$1Lfz7wN|h>$7}$wVy>>t8i3H2O%5*|E%VOg0X5T5A-#ALI3D>gek7tr2dGG zi7A#)lO56#*0Q^yzzEPEx=XaB~(H@$CB}d255C){d zkwH{*h?Y3lj5+Tg+ng2ZR$W6ftsNasN1+bmjRc%dpqiFM5e=sa2w=!?h~3?_2P`fC zu$DR$;MVJ1?K{LYu!f1l;?9mf2k9%i`1bhceQ5#V;c0uA-o9Y3>fZq^M}a?2{*Olk z)lPN`Cqr_-``Jj6!+83dgsICa%7nB#dwRIz^s}xjmzJZhVjuqzHbikBxim;0b|y`Ycnq$TL$4kc+JX3T zDaIE@!UjW8($am+2Y3OTg4Hu)LW>kMG+|AF$?t3@R}ni^iU%tiE?q?ZI&!l7B8%ou1r7fgS7x(5yY6++SG3J(tt%tJ}014V;_ zAo^cf!U1$e$J#9jnH7DMWmR*N;!_-kuf0beceUGq^k6y&eQIh_&d^xrz%~k2Uhm=S z--r0pC+Mh*Td`}xb!MNhp;56Z>#aYgJSHj0xbo@+quOuqbxND5I9yel8&=0gS_s2* zqlmybnI;S3DuGOW3FNoyD`Qa!2?@p?a0_%Tg=^-9mYR*7A$&qJwc4;BK7Nqi7F|+8 zdi41=&+Xf{uNWh^-)F0DxzFpW(++7n3kWoi=41RM47z9E-OIRGVJzrhr5H+9bTXr9 zoj{|CPxq%*fyHY1Co~I3U*jLdKm5&pQp`N?OCWiJIEQ`jBxqwjxR1 z`Vu^Lm6VmSu(31mlbDlB4=3Iyej3Xa^X4Y&6PiK!C(&%7*+xwxErQgW)77Q*ytT2$ z(cY?N1Zr8AM&z$DMSzqqn9!NoDz)|R1OSu#~&H$axFd{BM!I^y$@o7!Z_ z*1Q-qFOnI16vfJ zMaJW3Mn}Xc+U$g@6v`tbd$kZa=}cEK%iV47=%_Sb^k9s;KIw966(34F{P{Six7ulB zn21O)DbeV(al)*2tDPD-qo3!^O7&SY_e4p?51WN2%#ZQjf1vJQ^7HZ0DBt(RpRj{l zNeb4r+_&ll2YID*UFK`?b1SU?x|2vbw#hw3jSnVlru**FEva zb>UZoZr$=;3t{m)ISw9M=@`RyV7Fa&J302`TawXmaBPODnme3Km9BKg$S--9qnMbO z#JbJhDVjZXZfbYhDK|fjIq8f>6b#3g%BJ}Ta9#cL?<+b2Hi3(fy{SLFy*PSYH=A63L}^tV2UI5 zC5iQ~bEFX3AAR?O4U2Jy)ai#N74=4D(fMsocjxR@Xg4i|SI&0`GmK`>cib|MSZ;1+ zNYj{r9o;BhGXz(r+K3|AzHpbz&4&ShIJKgq*)MQK(iQ*C97c4cLQfcSO zaqqUBi+WOx$ zobHXnyS2|QLf;uD8o4++nK?g+_*t7MXol*h)cRg&-u){F>|X?9yptG9{Qz(vgKV!oDDKj0Cf(x!G{Z8-uVv ztB=pffyUC(HgorlqM~9>{K;)A4HT3E=nHxVKWJ;qv;`$6$7Vz%Cl9oXfuieRvyh>` zUD2J3ULPsqMMP#1)Ba9vJN>b&r1(1xzmJl?r>Ccz2iUDQ<2y6c(^st>YV#P^{$kD6c=f<#r8{W#c92o#d`x7iz>Z zTu+sXWFDYwYpsUNOo`2E7m+ z{uAu&6aOl~?M%ndrk{uCG{HJTLnZ!(qB)KQmLO!5n`5vo==vqsckkY*;_ub9HCDTA zlgsUSNv_K|FBMyz{#%a>MM{Up4#zB1&0u3T4*HAN5sb6qiZ6SI%805(+%F9IzvUjtgcnlb<&shHW z$bM^_Qw@=zD;hqshy|ML<0c%+4U7rw!{sCfQv>#qx!VbN&-z*1~ z!$VEX&CREo5=mp!okB6IIIDYJnBBhh7h$A5LeVbWT6uue`j+hMH`IUgiS<_9vP$;D z4nCo*f{y7^^@}SjP_Qk!IGwC4EQ>h~jP2pID)J2X_X<4~`UP8XH3{P(?4I&N_q74$G}HI0~FG&&Kk1W~O0)n30r` zjf{+qDs{L^Icsrk4G^x_PoD?c?=RN1@^%$ximaco6`AiWtSrpWgTlIPb@g|WU{6xv zm=$E^lr08{`uO-VnN7YSKb7NLovz-%kR>zLWhMOuEMzQvhMl1itXsEm2o*u#ckdrE#}<4(?}kx(`f{TD7b(c7_DeIF{6h%~T*haL8jPde z-DcM{cm14`ZhoafEXiY7m0@Bo>cgXkVFId_&B2V%78ZMO3sb)beCp0G=iHgl(3!tH z@9195LKZheY=QZXtGjlgg>ZN`R!LrI>50=0jZ{|?=or;)y5yT>UtXDrsz1he1jUXq z6bl|`KY!)b8f8E5xz!s_CK)l9@71|V(KI!;!_b%Q*Z8tN7+78RpqR!@My+O5|uY=>`>WqKmIW1?c290dc5lIxirhg zu9};hIo~0KZJq_XyrQL*MDZqI09hLxtNsmnTPH0v$LjN<|rjGRnc#nF2WWevBAqcm(+ zErh9>DTsH$m6&nqQGYu*l~;WnNn3lWlF2Kd#0Ql9ULl*cNswwD?#FUsNpat~d)L{; zCFRR%Z$he#&FdM|!7LhewhmM>WxBHh=AQWn2mVO(~Tzdn@tY<5D6W~Zj|Z<21u<|YG5DmKl< z-}ZibE+U?~5QmY@&WIj%R(3<(4AyX#Kq6_qoa1yd<{_U1(gK+hS`U91(1+kS{%$ zVPQ);)ab4)^ksMTU6NcIV|+)X)QG^XNECgX@XDQ+!&EGz0|UI>VzBpYX=--K-|qmj zusnWihd;s52TyN8mqUX-6-7e0^YDp^A75_|b_p zNxrYOwZVl}dU^s-ua0QCSj~P&-s3>y_!5^FXTJDN2u%{s=gJIifXn5=QF)RYWma|; znFWnDhGeYsRxz`r!ur9d-Pvy=8g@BRSy?$b>O4HIFx`-|?xf|u?r%jCsIIEY#kaii z-l?laZ*6WK>{|v0N$?BuLjrPvB|}GsY+O-62^%o!D`tkFVTVCedNgV{;$&;0_B2@X z(W6Ix`lu)<6?TnNGN*_%&2F8z^1WqTl~UAS7!41}B`#_Z0Y+C2nQeOL!DO6zJD&*g z@e7^Dd?w5)mkP|n5$6c3MV!W_mRfc29_6B85MyR$A^&?fg4@T(Y|eQUjpbEy!M z7ey5>8n}R&X4XrCiWz?>a3`$?{CIf2!6c9ri<~5S^pDm8yeA_L$(&kzi21OaVVE4~ z80f1@fC~%yz4^9A7%`ZP{t-sKCm-{q^1vUuAQeQM>4e+aURq(-Sc+&GbzW7!y@;OP zGBTladZho=o7i-jpIpZ#I#N({}8rIjU<*|=J{UR!hXa&F~L)n>n_ zx|(`+j_IP^8wP6QnOK(@x9f(zh5Sr2qcT0JC>Vesjz&xEu6=212seCImUv zb@WK-UqFe~oC_E%!4TUauU4Z)e5Mr|Zl;GmGONt-XmFgoEY8Y($+2Jatog0ZqQU4? zR}M5a)ZEuS%rh5~Lty~{iai}pa=$6ApDS`<`mefpW<^EqVX}&>PL>ahX{y3ZQ{3gO zZFkr0I^SGcBo-{hFNI&89Zo;11|8qxf&ubaimW5((K_Dw*fP^m7#v53|8yD&WSy}$ zjtwX+5PtDd+SFZ;=#qt5kkGEdq2yeW6S2n?M4hwE8hHIq4v#+m~( z9LGpA7bC0xZsZXr+TB^(q0MT^Q$5L*sOghL0Sg?S>BN|EO#H{||gE%k8b0zum!u7lQ z(0Gmaww|JiKcC6dBwU~@NYE{A4WoKPMK8J}e|_bm%T4KI;Z$klt_|lYb+&Muia04n zJHlN*)`5zIL@Dky`|r*E(n-sMK%$XJ=6xP{WRM;P(H88508_Btf`TPkerbv_T|RJc zs@}aGg-5#koP+%{#LZ`MHMNWg0-MLiWh2M#u;L8bDI?n4ozLHH-W+FH!Fs9 zTZ;N&CF-%ip@U&2;tU%5ovH&=%I{vqihk(ugLL;P>QpGUB%lEj=wA z5FzceNT?@|Y?xuVx2KEaT4XZz5mmm2Y2_HdQYDly9Olni{k)tD1I_$R{8+L3<5lJ8 z6LM>ak%bn204Oc3kf-UoEGh9(@g^T1k;a z46(A3-UW+6L^-C}yzU-;UTax0Ab3`QvPAXBifPKcr2&I5h)OLdI>ereiD|fNN?d~v zo4v~AoKjLOSL&{V#tbT}%!sVEnwqm%=R0V7b?%K7&=;mOmD`yg1jR^c29Mv#BKxRt zu4>*j&|^(PM%L8Q6y8Y0O-L@-QlU9r;&y$T^SWc0b;86Ve-DO;D$1GvEaen?wzaqS zuZ$H>EZz%VoM6rC><^PVj)sbt0erHBv-9(>Yb}Gxxvy4<13IXmbMuGsF$G_IZ!gp# z5cY1aoCNljpT|64$BRQK80XH>_#lqW!O^i@FmR-lt_4-0fziVeoiIFJ{qIx_ClBi>f7HS@4oAbd!b zBurp~#>*aA|Ar z2s0|~a-FRE$N2TMm7DbP`iyD} z>D&c99W*-1BG-nd9RG{Gw+x7CZ~I2EwWyoU(T1~H-VX1Yu5Vz*LD5sn#;J2)8(}5+lHSU z-|}uGHG||-LG-QdMt$OG&c>DQ$9S}SAES5{33;58I+()5gH`Jv)uvr{df*jxU#Avx zFZ@R%fo8tRAcM<;2aWhHD&9Vf5#L2xk{jPOz-$$7wTIO6L8LsX0|DnL8~v2dB}!1G zBKlhZmsl?bB14DctpYZzdYsv$J3DfBT5Ek#j>TxNSJ$A_=)k3p_fpe@zKw7oHTG+O z%O9AJ)=#st^p;pW0u$eCZ13BgCpqrgXl5H_Hyy)qvNu*;$xTe8#YsZt84c*V0Y#LO zP&G25S{x>R7FAwu^8C4Qv5@D+jyB*Hy9_)nbA2(#oUsi*OEwOo($cciH)T4d5qiWy zSO279AtO6A5`KKCS$g%MkU3zE#bc$rv|IDi2H97wO6HPgrf%-TJd}$Uii(2CCJe-! z3>z6=K6_*^782#c6uHqYKdQ_%MNDmL=YWV*)31`2mhnzJ+8N|TqqG-UwaEOsjG6Ts z_kHzZ+itE?{p*bfIbj#x)oR-;Bwr})~jNJ=Hy!T%dNx&p;+2Y+-V9e zbCxC`d_^3RQzdB)3{Eud+@F7V@rY$`c6<4?uy{Lbt%}WX;puZt9=wV zO-2hd9vPWKtAvruHXn)E2#u&&3J`4|R<8S+^W}>wQt?zjN?g3BY(Rz6is|HjVmxY@ zYQutt@1-4w7RNoV;KWSc|TXlzJuVZYM#Er=8IV zZB6H>vq9NlYx6>p7p8f z!#oIefFlu!k%;<(L-IAJ)k0lNl~Uf(=4_M;%L&EEn4cU0@7~Yyh>CA18@LRYYY2%? zH8nMZC_kl~Fma+RQ!0bzHqPMia5skeb;H%TBJ<9J&Pxu)+;vguhddF+MQ2W#dm)b3 zv^J7t36Vi5+6JuHE1)Q<6>g|$$LE16EGQrz<;gIqmEb#0!!+-#Z!6~NzCh|Pw8yp= zTd$rNEf+NmruR4>Z?ko$xqZfT;v$V4Z~jpEktX6$+Ho+IAw6h~_I6bl7w=C;$jWZS zcUthPswy^G2vJcj$GI*E3JVKI#+N^o=Hb;|O8T_->74&1P_CPT2%wJ|lj zqKdakPlh|IVi{gYWv?fCh9r4@bw*g5n`@BnWMo|u%0kSNzlm90ytUrEk+u%a-u8@dSx4JSZ4jBlU(xU7aty-A6efEH6k+ zua|O5ozQ1&*q3*S@K`*Gq~oGY%a=+U*1lnH9bkdGyRT?EYPIa}U7cSx143nZh+)w_c}OIkU8THz z&qGAEsxv38dbmE&JDoG$-hP!aJ72bQ;67Wc=5FKZu28hX-DSNC(;07#EQh!jrwdzo z_*51(MV&u>L|&+0#zLGHuX5BP2jBKqM2d){tPLh%0+Nn$OqsgQgoU7E(y}xsNh!*J z1)~m(dRj(uoA{uzX%>3xhqQNvuD>tTJ(X2@X3OYiB`fK?=kVv#4YyhC6#GAg_?Q#Q z+ls8}FaqgD6yz)8{nARJH~8Yr=@=O9J$;&en~_$C+d?f=C2-s6FS0~-*2ja5{2we} zbzV6ZiPOf$bX22p^uh~%{>p+Z0?;F9tc|_6 zhj!hrv21B+X)WIyO1f10tZ6twNcr=Yf~X>&o?PlnkY$lb15RAP z+u1weaDEM=aN5gKd=-_!VOIsDUC2b-&ejlYI=H_V{0eoU|0q8r~|o*ENOG!?id|)(}Zh}q_xJ}QJ9G5c87d5_Ih2dXXFThRIyM#|H*?d!!p>Tbd zja)6uVK=*-_-Ts1G-4k|iejBR*|C1nfmyFKwNXmLjk0_zTQpUz3W|ab`{K)2jO3dQ zF^AU5HdWWqMbcP0K~Hanl>PAgD87HFfBO%uE1_s7_qF5gQ9LhF5oq=^fOvHg3 zn88ijRCPh{rDj{yGEADW6OT*=lF#>`!{vC*CZ=u%M#)+w5U_R7Jg$Q$c{yjUz4<3J zfqJsYXa4o4CXz?_p8h$$LiSU2Qs`^sw-bmz$v!DN?s0UjkULcAU<@#1Whl&T>`K<+ zLOIsfdXbydJtSZgh|Me=9LhPO3OzhlzQFCK9y6KP`Ucf zjjY;+i+ZmaSCyt6g?ah_DJ?rKlbS7Qc3ju8IuS>?=jJ8w^uHdC=6yKUKLikGjZOT= z*R+PCa)J@z=gZHyUc6K8>`Sh7x(46TizwBMaJ|*CW8}NNVH;wJa*IBWi$y^m>dU%) zt)m%X75(8W`5G$wFg2YbQc_EM#avhiC_#kMix)3YYI69L7+R^+Lh|jBzQIAopd6b_ zd7_}4Ku;?UC(;(qfQNoT3LVrzB{RQ-Xna21i#kY2y_kA2ahE0y@4ZyK(Wzl0eJN`n zwCei%G_7M}W6@E1DHrzbl8?M)C=**7Xm$bvi1k=x(f!1R+odYbL0*@x=mpzbG9K!r%cK|n?7KE4$ zWS(Jrxl1`nhko$bKgkYWj4Kna4(kz$@5*WZw!Y*7L|duDuFZUhU1il|>XPtaA80q6 zbSrH+?7;EiGVX4-ffv_Fkf|6a&3fBQMyqsC_UM zTRmKCg(6yoabE>yvGUF*Zr&AZW3Icsae3p=i7X7}XOKn{5Oc4E?f~7xA$Js}7g<%S}!Mx*MP;{jTzT`f6n>-?91J z+Pi(afcWXb7!1OAEKl>sx6+bR^mslUPi647hGRMv2L~pyW-Td}ZN%212P#0=bCwSp zXmdgslo(ik!d4!lI-s?uV$&eRH5(n>ZHlE((F(MWM~x?0Zc#LQ{51c;zaYvDk$vLPqfycthJ8jG;YRQ>u%>8{P+<&O%{JcsSH5R zm}EV@4LoVgeX6ICw(0>#-;VaGB(lSWt<*tE50G*qn|6PmRdI^z06H{`gw5HjA~&M^ ze7O*LXfz6j!4#TLhb-KmnVTD%RqIgrlY=t8;((G^r2X=Vg}|o5OzLGQVjiAt5ozk^>;Q%icKEJZ**k`9bS0%Fue=I`j0qD~2QbAwRJzYFO3cLj zg{GF~Y0h=uVFrc#xBFb0t6#EvZUWp&WG7iNKSP3fbeYfjG*&+?OrcYT0|JwdE|`0M zO+WsV9!D~iw88f-vonmMK{=3n`bz8_@AA>|Rok}U3iREjrAw)h5=RV2ka61X0dpK| z)7qGtPUHuK(VNgCS(K4qM`vg6abC-uiU<+rsC4UO=t?7z>fuYbS5ebz;|~z3WiD?| zPZA>?6FwAEaWK*bXB>fAkJhjmRAlvmQFLlcG(C3e(j5b8E~%MXd`D}Oj3+YNXS}=6 z_3d#09Us`ugzD@fipHk6Sp&-q2ocKsrRR<-&jyz5jk>tB6RA0BmGnug?(e%~H#nSd zhX(}(fjBKSz--p_>{08$Jt6usGQ!(sb97_}-Mje$3s&$LD%WWpX%J;Vcyie+ab}j6 zOza+&lbsq4s!m_9lD@FjA)4b$;ft7gdo(C5#+s^a``KldI>jL0x+PHsx}(Jv{X@wNsD|piEOJ-eKE+MPl-?QY2%iVaU#; zbYFbBC0*0qpJ#mV6iwrxZa0KVF>$)6mD@;&DmQ?_UrW6-D5*Y1Uu2a2F>V8dmnLtyvzmi8k{wmJRi;;N;Go;@eN;f%>E_ z<^gr`%sz`TA?d9ln!dqWE$^XjlkQg>QgCu`Z2QbnqUcWz zhlBn6B#-ZRk7@@5c1qjOL_zMJ09=T)cRGuak>n=jn+e?VHzv1qqPS*{umC#6lZWgD zPPIE=170^@xj!2H9)Zr`+6YKw85HN@xC zZF|oYZ=`Njew4jaB}kDxGZE>qS~UK7(L1rO@bjZ*<|BBZ*Oi#xUW;UO>#1T1CtP?fVvZyF5oOrT#>90b{n5_q z%E~$^|M9RJ?GmJxD`$W=s^{*FY2N3JKYj0Pzh8cOoX0EugT{yy8hRi78UwxDDVwnp zXEy!UJ)32vhdbSc@^2=!tD4`V#X3*e^G6O`Hso7wgway=fVdlE444a7Mo;5&TT5qp zzpBS>Ph4T-2qB1M*bw1rHGJ)kACf!F5*c8b?$MU6!q|x`&3xM2dy3Hg1xBCNn^a<~ zN#Dn$n(JK3jt+dwPgo=G&wh~YWOCS1CLs~vcl@Y71b8rxa#vh{g_;Igb!y?$UP3QS zLbpsruM84Jzs+-%ad9BRtJtbq<5MdJ*B_(DibpC@%JvuZ~r?#%0bO6M)PJ z#8SHYSc$@Oh@pnIOiEcfEvy*$b9Xm4k&4<@@Lb?LmwEYDy2<;mkK|%?e>2*Cl`umT zrbNT*|5qgog0GTaK<(T9_gleqih0`GHn=!VI!)iCB2^;+%w$wvb1rVn18wEv;;ca? z)A#xo4=?Vm`dUvJX)))a|0`bkAL%yCTm+G0T&BY=`J`Piy%ISYVeF{Wl>cSx9c!j` zCR%xCJ#MA^bd^hLERwiU8G93bSsFD2p!LQB(w{o*z`Fb7*gt=iDOcj936)MFm_37n zx=xRG2e%j5bS>~nSaXevt?lgWGRmH2n2hpnT!&&0W=RL!fGvMxk>15b3Iiq#%hfN% zjSU~pq#GMcv){I$qvuhHn)Mw$RVcPraihY&Yc2+c2T-hy+HV@UR_vS{3Vn9N6E8Sk*~kV&s0H;Etz2Rl97uGTGb<~apx_kqS#ewpj6ZETdmz46GTc=@(d z9!SiAi^;RB-{?;5O+sGA*F)?FHZ&5C($hUoBfXU|XC>Hw!JD_NQ-}M(qFlJ~lfGPo z-ktvWRxF2DNE@SaxR?Eb=6p4f+xvS5Nh11Xp|A)pz?ymTPET)ri&;WgHjooLSou41 zVY)HHMb`@3$ljUe?X@+(k4+Xwed}>Di6F*x<6Z>0!Rt3~j;3eTFdSeL>&(`=f+oFl z=dF>-Mk)y*q0y0kt%e3F6hfZmKl;%K%h-W^b7#jIq}}!tERU$AZmXs&J$?EVED*Zn`?c&$I<9%hp)oUIWTduS zYI9bJ_gp7_j?_;%9~0KJU$x73cNBH-96hFDe_`@M)^?Q9-B&!LU4joru?x%Do9A&u z`2<2Wb^_$%4op|y;zd_rXHgjvV6GUY5<;MAtrwY7UOxnmbh$}xHj??0`7)J-2T1qC zq#D_&J;gK0(9_AZYOiCv3Enj|4FZqEz(4>{jVKKC^t7G?Su&_eibSdUsYS!_dw6&N z4c)SnBwYf*QhZE^Ut3ywJq>(?T?V>GfSrGT zx=%e>e8BDjnSGk1f;ihT(b1VjLXC&K9M|sdS6VP5&SmFv+k9?pGOVnp;)xAj7N<|6 zQ8jTngFUL|bD+-qX~%xY?lo<$VY_rU0h+!P5uZ|en|^VTEc`srPe^W&wXMtQAjHMX z#D3-oJRnTTvAEKoy+7O>+$soLlcO^qE-1i1MMVUglAet4p~!e`Z>>Dbb=WqM71jNU zq4mjeGRTTjxA1jK5|Z$SknCP9W>5zTN}hke8IMP6Vr0Z)eAL(AD}wJe*IC>^mGFql zz^$=JHKm1t>(GmatRx0BaZc)B-sLXkmc4l$_*p^#`IDL+Qd0}lp1*Jrc?Xe?U%Y8O zDcWy^8G+09oaMv-q-=E!Q5v$O z-X51tMpbcrxi{8eKm6fC-rP)`Y{%s|RTs*vv(^8@=aruDMyO7d^Wt_sXkyX}e$3V# zzDi2afIv%R4D`U##RV3#D@|Sjo>Y?(55MzTA-g@guE9tIb}p{Qg$S0zc$-l>MmEOX z8WIz%@G0ecc@K6sNP0wcYf|ESA26i1c9xiw7#DC%RUaSN6VCRyc$M@?v}4~ObaE}Bn;t1>#Atfi;>x)6AD1sXFK=h}w%aG8hYoW8KBV5Q zXAgLehxe~c-M;Dc=FEFV;i<>Rrxw1AMfTlcfO~h42oQ@(NT}@&7STk3>g;rHGH`c! zn6aY9cB{9t^8RGMIJD@dUDY8T&Z@CIFq)l{<4u&DndCvP<=IGedx}WzG;Gwl*nYTZyGCYXV*@B9XMKGn zYO~iEdj~-T$2_{JwzgN|Bq2VY2B+YUzB_4E0-`6hbaXHUlgE7SOV=T_MP^P8DCjK~ z{p292d=N@hehwR(T~UVOI4#fHF30QgV4@L=ly-s3@xJC~HzuyR{p%-NE#AL;le(1) z4<2_cf@u!woAduo8S6il*I#e({<6V^XeK*wtxT@!+OElZmz8A{4S8YzZabAFA7bi_EWothiViQ$LVNvMQ5iB?mXoQndDP8 zMw@}oPQtdOt;NyZnQ-F`g1!9h`HuKT`3xl1EBjs=7}ky5m;5D9qiR%R`?3Taz>w6? zsRBeK)N1g;+$~+ZVLyZIAO%P%P*C_5ii*d+?x3sBbz*)>Q?${AF%F_?p58Hxll*%x zf3H0|pBRPv$65$KuzzX&78*Z%v3E}N3Cm72yVizGjZM|x6|r2JLLs&y*6qm+dOXwO zyg9$b-}eT1xYVHGj)gymF~;Y@jVL(ZgrCW{=qTu+xHi{Koa`O{s4sY zkH_wtHnYeZxP7{L`S<5Mf5vlxID|-tcecHws=i;5Yws zogQ^E*7|n-UKzxK_QRrTHeq2 z5DUuE!-fZ#Qbz-5tikx)T~qVu$>TpcXhUJwNFscEw_u%M#W)&sr(Gku1>$Pv38AD^=PQl zv8x9s>C!Wv>Ow-I5JJ$w{(UShhNi~#_4UZ{Y*9wASL5J>aechsLQg{@Lc6zrsEEvN z#s09FR7}Fm7+lYyA|e}GTe*38Cu3D^00cjPZH1A~?6g~NB6z~vnnwXQCgtGVd zpvv=vht7}?nEVdmgSl%TAxrZgNm;-bcS zB??~u1D`w|?d{^NayhkP!hfX%%g?^WwHRw$QZvBAnhGr3lio@5npGxhNMAAu_g z=NtGzhytQAOu+qp3kU-%rt{TcS=L5hyK85Ibc-*U~ zz?$+aA^W%odq+k7_wax_ttPN<)RN^}Ep^rR0u|O8AOT{=m4!3<>*p|F^8d9w;*H?Crp= zTVh&qxXeH3bH^+rBPye!#`F;v?bD4mDhfsjSV8rdY}EHG{euORaAP9$kBjiYj$Az5 zbGq1-9P2LB*p!wgaEYMBMdt++y(zB3f#g8=g?x04b!7!xdD~vq$zGK&@UES!ob2pZ ziMca-2}APNbm!lisDXggk#o9leUi^{S755bwSiPKXT+)1RFT66AAjQjv>7)f9>J9b zbG;bC847}b6Su>?0}Tu4*4IJ%gx$Mz6Ljr87CyPVTdxcW^u_1TQEoZvJ*slIJ&| zLq|hr54i#l6ZLX1Pwp_3A8p{1ae9$(#V}OK15r3!nOjUu1;QILmVja}*NID>w-uDa z9hr{LEghdb!dCtvYR<+Bvbihy+k`U|cB7?OrNYVe zho?}dxqr@EyxG1ut!S~aiHludVPqfg>&LmAmeC_~{XWV*j!#JF9~=}OU~1uOVPLRO z4UMNHO-6b6_;3V9kdfY4nwU`6&|tRPnDph{uvJ$NVBH)S5XvPM6cQ3jZVUVC*Y)<@HQuETDq$3N9{eRGgtfvI>5ypf*~b zrlc4LGgM&R!KleeqJFA_ud%&|m#3%iR}O8BOn>&(*;(3E1I6UiZg(o)u0)AXa^fP~ zl!Jn2tyAS*JTwd=#%<7}3_JLHZTILe#Qs5#+o$356d?eMwYsxYV`wi6(p?6I zg(#d9M8ARxxHFND%1ku;q%QWR!)_Tre@mROuUG`9Soj{;T66h#S5%_DJypalwq9~P zT(&{*WHL}zSj~7cYH6Y9yRCW&zy_MZz4_ssKO;Av%>DQvcl=T-uwMzk`x*Vg>aqu8 z*&$qJt9welJXko4hI01-A~*1ix%))-XF*nMJS2kjc2hpy`FG*!e8BhB zJFL0US3kbXydK`~%=M5O>cmqtahWUY~h*;A(sA(s9GR#SD?v1dF}Eq#V1=WWHI zy~r&9%K-<J;6im6;dpJe(f}nbJ6*Jqq+#Q2y|Hd*wj)Sf}_XB zH_BHI%K}Z#XO9OnD3X(Dbu_koa<4T&)c}^2nE3KK2~ob@q&Aw)3<-N|bpOA!mFw-R z0|UXBJ0<_&^>?!m3=S)@>s-}w*a{HkG`Jw_d;NN8ZnmIZBuB*eCAdZ07$S;}a*V?D zO;OD6P!p3kLBOuTP07sMh%K;YDjmg;_PJMauWoH^WYZa4LrOYF#HD(A_TWj-$30Ah zO6xTws;msT{P{HYnPa4PRC$yfyVJrJHrpXPPf_C0BYm55u4jKQrwFJQxU6+EY#7v= z;)9&?`M0k$t=M9S@I;JanHat}@o))Io zLz2}o!BB6G&MvOXz?>nJDS6HZ^Ro;pBGRS48LdA+hI~rFLtJXGyE5974iRC=PjWQ& z)f|&amll1j}SbMY3Mp|36Uxy$4V;p)_R}7G8HQlE-ewcH3dRvuR+=3eAA3^&%VCz zu}1pl<{KMYw2|MAroK3=p3YVI%E)x)&Y!!q(>v>r{8iFH{1!G;>?wL)eQ{me^l!b7 zHE*koP6LS>r|e)((uj>Glq~C8kcW{pQ{A4d$@7|06&ly|t=sfSb`B22>CjYXBIaYy zIU_O1UOI*r6N{u$cHo9SVSXThl4H$Vy_OEw)0FAnCt}%$|d-6AFOd4c75d} zMiW966~&+l%*E?!N@6_OjCZ)Q>mW3u5p1wSOt`;y zBM(up>mdW`oK#>y@^Ep9d8}n$zh2{rasWli*F`XeiMNPTIB%8766$vcU{e5W=4cof zmnKS_27RJj4g_aH5D-(hiq+F#?}#?zUe`$^yUZwizAwXt#c^z ziFwx{K%!*5W)Y$1DqPwecfJk=G0ksk#w7~9BEL$&sMpJ>yY}|^rh~&V^A|~~ z7P?P&o;(cA1o~u3ZhzjSY+cUn>!zxM#Xyb>-bGiV>{jG=)=V7dBsy~md*Y`j!&zig6z(jZ46RTQ*+8;l^*CL z=E%o3v&{|jPU? zuj#|8|1g&8;K?#W>TEZ5_SEvg%+z;?WT&^UlCsd7Z-1Jr!Ud9264!e`?XSf=`1N9}vMmt<8VB$^StZdQ$oeE%q`YaUd=+F)=RgBxgHn`FBzb+;842RndLu#rO{| zULg13KBbHjcitNp0`>&^WWkBPm_|w(5wy?F!PPiAG(>7O&Rz`P1bD`8gUhx-#o>~J z!zK3!E}P%Yq^>n2W=)x3F}Nsgh1fmF0su2J2-HKN+NZW$>H6Kk;OHlC*l6cKeSikb z(huy%;IMQyIq=Xwe(YC%QAr85H)yCrAN6c?y?wH^Omff7XwVv>^B_hBzJ@}UEMf@1 z`cEvOIg>fOAq~yw;d>eTXWH#e8B!1j6;jU1%8LHz`uEv{*-5?;mFUHlSG9}BHcdEP z&zVgE_xCqYzC0&iZlxFLXJ%yV0xg>EEaK449n%CEg}o@pzac%GoZX z5mO18{cNaWe)rd=49z9XB()pbsj2d4DeSlNo>+J0g_J>F7{q&h|DJ~Z5e`dRlk1Pq zi#M=m6Fu`!8y=?Mjor2&?lqti)|UR$a*S2|rKbAk-zd)eFg^7bOn;&3`s|zFR7oPd z!~Q!IK|lSjYV6)m*IhO1`FJ03eEeyZ$dm2a(cecT$=v+pF@)l6Z*8=#lJgL6H?y7o z^M;>am@S(uR#o!D6H*)o0%{EU^cArGb?-3!&!7+XP;nNbQvVg9IL?Iq3C^Q`mdHOy z_5T5c`)7q^%IUs2dvt8HyyTVmFp4)KprIgWJ5|v0_R7jijSTeSH*egyMT|#6LUQTS zC2Cl0L_|bb1h^{^3N(n|DzYwqgPT=5d7pqhZA~|d_j+F5=kG&9&Ed}S&6P`qjE!fq z)`MW`VA(SZIk8ACyM{RO;bP%;1I)~zN&69Y1;}l1sT>T;BuY?taa+zb-PPii;N5;{ zYDzmved88IflIFb)A+gI4qk`mK>xe3(D0k&-Vtb4n$a zYu(D-0yQSYMbW3U5GQcT^M7 zST)Cs&WhhK=jP#Vx`PeLcz^I*(vVj!{b(WzJs7vtz4`thEZ`a;89FSs$*T!`Y_yM` zV0Y~uvH=GNyZT>nca-f-SV-{h=N1)Ug^LGcu{0C|`6lJqHPUkFMb`e8ue^`gx*ey9 zZZ8ezNEiXJ0-XY{8z_`I*H8oCPXS#&{lE&f=x9u3F zS7mW#LEpeYUeYfrA_5)+n~kmIkclta?VaP=<9iiofS~E<=_yO&65>SO@2@ASJ?-d3 zDLNf4F93RHHQ%Awpi%2>x8yHOs0}bXWHoRB8nQe-e~*Hhnh8|aPGIEkQkH+%quK0r z$Ib+jspNVX(k-mbB6pU`x1*{B1#`3!?KK5PgRBtfqai674RusWNy(>AH%V9xu`&b1 zF!x5?c`k?IZ*$*JwB^qtN6-en74mpNm9w;E?AB>ZmadSSV|``{Lil%9hHV;`E#BVjBsYom@ssFx?Tc-{1W&d%V@;w-)-aIWh(Vq)k%52eppRb%Clph2*b++?}g zeuyj2#x^_J~S@*x3UD$ZLWAHF<&{%IUeR(NlR`#3B#$XO} z0ze!KGE+C}fmlfg?xF=6Jz3{<_%1XjXQrn?9z1N(D$&dKprReAXKJ>s40xaqAMvY z1z*2RJ8!kGI|bnLR+p^+K_jA%;su$J>WG%E0h1h|Yvc>Rg|BiR0SoM&H@ z9w}>uB;ISFNZC3z%uN>S`)(zbT? zwugJc-|uJT%UD@M#6W7mx?teVn-T{Q`VjghfO4sW1Bwsdf|T5Brxx0rG_j2nQM!6(k6;E(7T-Mfj!*seR8nr7bq zIrZA9>)R!aP`s+{c%>jX?%%6AS*3SHh-mdjRJl8qsmFs72+0haM+To+HKhObcXW2p z5^Vk0+}ZJgBvq08_J5hZX=-zsSc{cA;$Z|9s03SmGB|_|JOawr zj@}q?;gi`fwgHq_`ToT@+Vj-_R>N7m9D*CYlSCh>s3>N;7jv6_2*r_hbi@bAx_s!P zjYh^iy}?(w`FO|WY^tZbfmpNm0RCMf5<00AxYn4OjB#K9L$o$xwtCGn57}8sgR}!zC zfkhm*l=zGWEO{tBF09gb-B!iojXFFs!C_&n+sQic(Pc`T$Jz0X7;~pnV|el_n>J^@ zVxr`rd=edZ=vTZ_WO4eTPX9nMD?dL3`3QleonBofxi$vg(TxWXY3XBd?#XZcm63(d zr<(w*b8JzZw)I_DEmhn9nEtsdTkr}Z3<;49feW)~)nUS|b#1sXVatf@hIGtK-pSO| zjQ$1r-fYqKIBQwjUp3W>A0*Xmlc)UcIr<-`$SpWTt#9sj;wDN&q-U;CHD;tj_?mblgr!+2XIo-3*s7z(uS+;TaX*Fje# z{sj(pNXz(=dyilocESFGxD#BeqN{{{Yhb{oy)>6o`u6$r_bF%?y98N8@+j-A4zN3c zHqnQavqY6I`zd4 z>Z$UhgK$l9gvpi&{nzuz7a58RV0tPUa8FL0 zk+o=q{$Toc|HlbX*S7AYUECXn(=QkU@fjT*9p`A`Yqu(!(c>qYuN4#hLH`Fy!Fq|w}BuL8ol$n)CfHDMY47W{tDaV9;Lze zg!uO$<>+2)$wCG(MuB-Fdvnyz1WZ>L_Jy&rYvkmQ@|BEBDPi-iCQ^NBe4_Je$7cum z!aP~d)Xc00ciYTOp>&0L#n{+>D@A+U!h9h$d&N+{V40h{u}GKmwv6wjopxN5!=;_g z&2HR)d#TAat<915GltJcwEpDGQZv3Bs2efEk_~*lKy5O!xJLP zLgBgAljuhJk>F071isz0lu_Qt4UP44{y- zg}e{t^8MSKF8a^wq7IAhH40aCnWj*zbC=i;28E_D^C%bI!JIAq zGdrgtdkbsNmH5CZap6KY%XO3Yqj*rLUrC2fhk4pPvIk*xoZ*&EGidsVii%M!kKb6@ zm#Td_FD75FDjAQoPmRFi(gOlLw_ti?%7NvUZcvYvcWi7`^Qp}yqy}j`33B{CZiC0A zvrCR_Ko-RxkgUAIG=1DmCQ65mGqRt!E6z{^X@(#dx^IBg*-DMgNsE(Kp4PPa~{ zwXre8Nuae)J8}7(9Ew-PGgy0%9qwmy@t3&hk4gx;3QgCqK3@yLgeoh1DB+@Ij2XF9 zQo`*%!Yf-|Y%rS+k00ni-@i)E+O-c0lC|D4(UH$0e?xIne4u-8eG(!9oa`5#(Mu3h ze5|dh*1M^cYnt)oHIfH%W`dUv#@#9OY)ZLXIm3Q9SF5})@At99oCr<@s#^EQcem;V zv*Z}`M(RXG_{)*w4}Q)|fosg5KU+&u(r;Y=L>vi( z@WpCzt7xYxlLZ9_Cy?EjFGzSyLxV*140w~MRsXTH!TGmal~mSFeJLw@y{EHvDH#ihbG>BJ{ z%|+WJxs|`%sbm#X`=~l{+g%Q)g)ZtAhL*wnWo#}SJ{d2a#8PMCE^vnJoQmxvkM(Do z9W+jk@*zd&0+iSP8yRU`4lBs$x_iEJfX_MyvKbyT-XJ9G&erk-@p^rwt}nS4w?eZ; zY^-{&bvOkbGE=W}CRRxFGfXj^nj5duaz!_)U&7#a&DvPf8OSUwu7(H7_h|0E*|~fC zfbn3gs*!Q^oq@sP%*?^b;T3Emn_{RmOGk{xA%xShJbY-o(4~_dqH_nj`78XwFJH(u z)P{18vM@XDWvZ4s)MtZ6g8;-rjdgW%1IyVJt{3$LP_LbzkjG_NlafJ{Itlc?^UKrA zBb8z%LB$}@t|3b$_x1>A?FODbbbNSsB-ly2vqmiY2EZ1aRx6gx-SWb=dw)gfXror| zXIMMT>u$up;(Hu5w_2Vra!X8DcvyNQIJ@Vt3AA$cRKdZ)n=_@^`rZ1;`*buw2r&%g z+eGoUy2v@3O`}|um6egXhFSk*bJdK5v6VK9BUWuc&zMh)E$7dkmhBTDXr+W=85WV! zQAbTV66MwR#)^24OQcdN_Mw^qq8ksE7`f(~qfRyzCB16Y^Sh%1_CMdB zmG|SWdh%fnPG!0ZOs;I zNFp@YHJx@(xr<7li6b`zQ)!LNLzf0xgOHcR4ztU<550tYQp}^0N95Ic;#s1)T=qcfL>i$jLGE@T@o7e(?E)$e~iPzd@ zP8o!~*Gb*4+UZYD@IBlpJGS0#3T2f4b^=TV0)NNpDbspAQbCR0TvpDZ+d`t+%m!r?wEYm05(+1Pb{Tut_&BHJ zLeAS3OS{eGjXKF2D6LDjb1`32zD29x{Y@0>gt$cYghYo^355=q%j2+wdv;$PnW6XM=A8#X=dvKsfZYkp7+G? z3O4*LjQ))GOm(o@t@?nQP&ILGX_d`rzzh68xf?n`%nx*i@${n$9ObE#x*D_cY^zbX zHvk5K7Am4)P)aWCh}iM49Dy2*KMIU=FzQjKNXncNte)lB0cGTK*Q~X*ExDP=$;Cvt zo^KG_Kik{yanqGR47H-7B0TC}2@1+H^CSP=znGPk1!K#E-@HjX**3b`Gaf^ETHn|p z1C?q(fPN%F2Mzn<0z_uMuZ^?nNY=N>O9W(34>R#*MQLaTF-9aKyiFY)G@P9FAdByw z`Vp3K7lc0e%Y%n|`vnE;QQT%vIXPb$Fgct7bAa_+S9|Rs7d6v5sEx9zZuLHq?S6i| z%$$<@nf2dYmN!-xM;zrfz#Lg9I@@y(y|Xl&4@ubwzBrF;fkgZdA3kKyKn9ZRKB<_i znYnpD*tlE;`e9{tbqzVUZ9!P+v19ilFFYhAZ-QA$tV;ahw;Tz-gj;_F4ik0>NgAFN zllYB~<9+>a8tVR=VEO-vj{5&!{{NcE`~T*vYa+b`bfC!TDF5&KWI;uEkA^^9TVo|! zLE*6reNrM;v-Sv{{1)2byl<ZLm%Hk>(s?V8`ew6v5JRRQ{rhQKW@`sT+k zT{?8{9(Z>H!6r-7{jQq~y(;k*n;k<_CxXhs1ue{sf*q%+~DKv_8Z*Xg4@2O~Yeia^62k zh`;s7L|0Yyx6ig!>0jkUToWA~WRs!Ls6T%u!Qp=WN^#6SHnKrRHH(4Mm} za2jwMfSDOv_UlOpl~t6UKACgU<9x=0u$jEFBBq~azJ2r7OM0=XZJhOH*z8Zh*t7H(=rw;4P#gV$=S_*Eu$_9O1sb zv3u*T1y2qG%jN2RTafD;W-a~&yx9+U(+Qzd-btKvq;EO;=s(cM|NpadtpQB{vw>RE Z%nWVpH~wY(24!;w22WQ%mvv4FO#lP?8ruK> diff --git a/.asset/split.png b/.asset/split.png index 646fbf4ccd3e0a8af237e9046dea18478776cd67..1496b007379b564aa53d9870dcb818c73bbb2d93 100644 GIT binary patch literal 158214 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 u!H<|L;iN8Jki!8KD0f=W`v*n%>SqDyl> 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

    J>)0B8veu0nw$=Ye`} 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¥=8=EG1NV`>tkc)zbb~2NiD|oc<8Uwd_F+* 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 z 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 =FsU|1s{kVT&8_|d~%Gj=g-v$k|?^YBZg4$ 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 RlTZF7)n}Sdi776*p$MUe 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

    ;yd^Uyv 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 diff --git a/.doc/arch.md b/.doc/arch.md index 2058878..ad74221 100644 --- a/.doc/arch.md +++ b/.doc/arch.md @@ -72,12 +72,14 @@ only after one of them changes. Bubble Tea handles keys and timers on one goroutine, so the model has no locks. A reload runs git and redraws the screen on that goroutine, so a large repository -stalls the screen while it runs. Fetching the pull request, listing agents, searching -code, and sending run on other goroutines and report back with a message. +stalls the screen while it runs. Each call to Rex or to a forge, and each code search, +runs on another goroutine with a time limit and reports back with a message. A turn starts when an agent in the repository starts working, and ends when every agent is idle. At the start of a turn, rexdiff saves a snapshot of the working tree. The -last-turn scope compares against it. +last-turn scope compares against it. If a file changes between the time that Rex reports +the start and the snapshot, the snapshot can hold that change. Then rexdiff drops the +turn, as herdr-reviewr does. ## State diff --git a/.doc/dev.md b/.doc/dev.md index 7b93257..d898966 100644 --- a/.doc/dev.md +++ b/.doc/dev.md @@ -28,18 +28,19 @@ comments. CI runs these checks: ```sh -golangci-lint fmt -golangci-lint run +go vet ./... go test -race -count=1 ./... +golangci-lint run go fix -diff ./... go mod tidy -diff +go run golang.org/x/vuln/cmd/govulncheck@latest ./... ``` On a clean tree, `go fix` and `go mod tidy` print nothing. [test.md](test.md) describes the tests. To also run them against a real Rex: ```sh -REX_BIN_DIR=$(dirname $(which rex)) REXDIFF_REX=$(which rex) go test ./test/ +REXDIFF_REX=$(which rex) go test ./test/ ``` ## Release diff --git a/.doc/test.md b/.doc/test.md index c77e619..17a1ad0 100644 --- a/.doc/test.md +++ b/.doc/test.md @@ -28,6 +28,9 @@ tm.keys("]", "c", "h", "i", "enter") tm.waitFor("💬 hi") ``` +The keys and the mouse go through a terminal emulator, so rexdiff gets them as from a +real terminal. No test sleeps. Each one waits for the screen, as a user does. + Short shell scripts on `PATH` stand in for rex, gh, pbcopy, and the editors. The fake rex prints output recorded from a real Rex, in `test/testdata/rex`. The scripts in `test/testdata/script` run the command line: errors, `install`, and `uninstall`. diff --git a/.doc/user.md b/.doc/user.md index f9ab2a0..2cd9dd3 100644 --- a/.doc/user.md +++ b/.doc/user.md @@ -91,13 +91,14 @@ needs gh, glab, or az, and you must be logged in. ## Settings -The settings are at the top of `~/.config/rex/rexdiff.lua`: +The settings are at the top of `rexdiff.lua`, next to Rex's `init.lua`. That is +`~/.config/rex/` unless `REX_CONFIG` or `XDG_CONFIG_HOME` moves it. ```lua local settings = { key = "shift+cmd+r", -- toggle key, or false for none placement = "split", -- split, zoomed, tab, or overlay - layout = "split", -- unified or split + layout = "unified", -- or split editor = "code -g {file}:{line}", keybindings = { send = { "S" } }, } @@ -129,7 +130,7 @@ your login shell. With zsh, set them in `~/.zprofile`, not `~/.zshrc`. | `u` `b` `t` | uncommitted, branch, or last-turn changes | | `g` `G` | commits scope, or pick commits | | `B` | pick the base branch | -| `1` `2` `3` | changes, all files, or pull request | +| `1` `2` `3` | the Changes, Files, or PR tab | | `v` | select lines | | `c` | comment | | `e` | edit the comment, or open the file in your editor | @@ -146,7 +147,7 @@ your login shell. With zsh, set them in `~/.zprofile`, not `~/.zshrc`. | `p` | move the file list | | `<` `>` | resize the file list | | `o` | open the pull request in the browser | -| `r` | reload | +| `r` | refresh | | `U` | update rexdiff | | `?` | all keys | | `q` `Q` | quit, or quit and drop unsent comments | @@ -180,7 +181,7 @@ changes just as a turn starts, rexdiff cannot tell what the turn changed, and sa A comment stays on its line numbers and keeps the code it was made on. It shows only in the view where you made it (changes or all files) and on the same commits. If its file -leaves the changes, or is deleted, the comment list marks it (stale). An edit with blank +leaves the changes, or is deleted, the comment list marks it "stale". An edit with blank text keeps the comment as it was. When `q` asks before quitting, `Q` quits and drops the comments, `s` sends, `y` copies, @@ -207,7 +208,8 @@ column. ### Base and commits rexdiff keeps the base pick and the last turn in `refs/worktree/rexdiff/`, so they -survive a restart. With `--base`, the base picker does not open. The commit picker lists +survive a restart. With `-base`, the base picker does not open. `rexdiff -h` lists the +flags. The commit picker lists the branch's own commits (first parent only), or the last 50 on the base branch. ### Copy and editor @@ -217,15 +219,16 @@ code to copy lines, double-click for a word, triple-click for a line, and double file in the list to copy its path. A terminal editor, such as `nvim`, opens in a new pane beside rexdiff. A window editor, -such as `code`, opens in its own window. An editor rexdiff doesn't know opens in a pane. +such as `code`, opens in its own window. An editor that rexdiff does not know opens in a pane. To open it in a window, start it with `open`, for example `editor = "open -a Zed {file}"`. -A key in `keybindings` is one character, or `left`, `right`, `up`, `down`, `pageup`, or +`keybindings` takes the action names of herdr-reviewr, and also `focus` (switch pane) +and `update`. A key is one character, or `left`, `right`, `up`, `down`, `pageup`, or `pagedown`, alone or after `ctrl+` or `alt+`. Binding one key to two actions is an error. ## Problems -- "not inside Rex": rexdiff started outside Rex and cannot send. Press `y` to copy, or +- "not in Rex": rexdiff started outside Rex and cannot send. Press `y` to copy, or open rexdiff with Shift+Cmd+R. - "no agent in this session": start the agent in the same Rex session. - "no editor": set `editor` in the settings, or set `$EDITOR` in `~/.zprofile`. rexdiff diff --git a/cmd/rexdiff/install.go b/cmd/rexdiff/install.go index 5c5d95c..1201075 100644 --- a/cmd/rexdiff/install.go +++ b/cmd/rexdiff/install.go @@ -44,7 +44,7 @@ const defaultSettings = `-- "rexdiff install" wrote this file. To remove it, run local settings = { -- key = "shift+cmd+r", -- the key of the toggle, or false for none -- placement = "split", -- split, zoomed, tab, or overlay - -- layout = "split", + -- layout = "unified", -- or split } ` diff --git a/test/cli_test.go b/test/cli_test.go index 6bd3718..9e11f59 100644 --- a/test/cli_test.go +++ b/test/cli_test.go @@ -21,13 +21,13 @@ echo 'config reloaded' // TestScripts runs the scripts in testdata/script. A script runs the // rexdiff binary and a fake rex. The fake writes its arguments to -// $WORK/rex.log, and fails if $REX_FAIL is set. If Rex is installed, -// $REALREX is its rex, and the condition [realrex] is true. +// $WORK/rex.log, and fails if $REX_FAIL is set. If REXDIFF_REX is the +// path of a real rex, $REALREX is that rex, and the condition [realrex] is +// true. func TestScripts(t *testing.T) { bin := filepath.Dir(binary(t)) - realRex := filepath.Join(os.Getenv("REX_BIN_DIR"), "rex") - _, err := os.Stat(realRex) - hasRex := os.Getenv("REX_BIN_DIR") != "" && err == nil + realRex := os.Getenv("REXDIFF_REX") + hasRex := realRex != "" testscript.Run(t, testscript.Params{ Dir: "testdata/script", RequireExplicitExec: true, From 620c3233f9fd0bfee21198be57c7c9448003531b Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 01:28:00 +0100 Subject: [PATCH 074/119] docs: record the demo video again --- .asset/demo.mp4 | Bin 0 -> 279396 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .asset/demo.mp4 diff --git a/.asset/demo.mp4 b/.asset/demo.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..28e9afad3ee2c2e73a4d3e9c1e98b77fa2728458 GIT binary patch literal 279396 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

      ~$uWfrK|J7fnnB|B2@c{Y;Y{I;MBz=EFjcvVJC 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�t)S>8sQAu$&hC(xAg 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 literal 0 HcmV?d00001 From ac88d0e27d7de7f2427c2b5ba37253ba91409693 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 02:12:38 +0100 Subject: [PATCH 075/119] fix: reload in the background, and the soundness review A reload runs git in a command, one at a time, with a time limit, so a large repository no longer stalls the screen. A snapshot keeps a private index, so git hashes only the files that change. A second send waits for the first. gh and glab with no pull request give ErrNoPullRequest. Status ignores the sub-agents, the header counts no rexdiff pane, a blank search runs no grep, and a failed cwd asks Rex again. A closed pane stops rexdiff cleanly. The turn code moves to tui/turn.go. --- .doc/arch.md | 6 +- cmd/rexdiff/main.go | 7 +- internal/termtext/termtext.go | 7 +- rex/rex.go | 14 +- tui/model.go | 259 +++++++++++++++++++++++---------- tui/search.go | 3 +- tui/send.go | 223 +---------------------------- tui/tui.go | 2 +- tui/turn.go | 261 ++++++++++++++++++++++++++++++++++ tui/view.go | 2 +- vcs/hostile_test.go | 6 +- vcs/pr.go | 12 ++ vcs/pr_test.go | 15 ++ vcs/repo.go | 57 +++++--- vcs/repo_test.go | 26 ++-- vcs/saved_test.go | 6 +- 16 files changed, 551 insertions(+), 355 deletions(-) create mode 100644 tui/turn.go diff --git a/.doc/arch.md b/.doc/arch.md index ad74221..f6ec3e7 100644 --- a/.doc/arch.md +++ b/.doc/arch.md @@ -71,9 +71,9 @@ only after one of them changes. Bubble Tea handles keys and timers on one goroutine, so the model has no locks. -A reload runs git and redraws the screen on that goroutine, so a large repository -stalls the screen while it runs. Each call to Rex or to a forge, and each code search, -runs on another goroutine with a time limit and reports back with a message. +A reload, each call to Rex or to a forge, and each code search run on another goroutine +with a time limit, and report back with a message. One reload runs at a time. A snapshot +keeps a private index, so git reads only the files that change. A turn starts when an agent in the repository starts working, and ends when every agent is idle. At the start of a turn, rexdiff saves a snapshot of the working tree. The diff --git a/cmd/rexdiff/main.go b/cmd/rexdiff/main.go index 607e5fa..2f812ff 100644 --- a/cmd/rexdiff/main.go +++ b/cmd/rexdiff/main.go @@ -22,6 +22,7 @@ import ( "os/signal" "slices" "strings" + "syscall" "github.com/rednafi/rexdiff/rex" "github.com/rednafi/rexdiff/tui" @@ -30,7 +31,9 @@ import ( ) func main() { - ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt) + // A closed pane sends SIGHUP. The stop of ctx lets rexdiff remove its + // files before it exits. + ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM, syscall.SIGHUP) err := run(ctx, os.Args[1:], os.Stdout, os.Stderr) stop() switch { @@ -95,6 +98,7 @@ func run(ctx context.Context, args []string, stdout, stderr io.Writer) error { if err != nil { return fmt.Errorf("open %s: %w", dir, err) } + defer func() { _ = repo.Close() }() log, closeLog, err := openLog(f.logPath) if err != nil { return err @@ -133,6 +137,7 @@ func run(ctx context.Context, args []string, stdout, stderr io.Writer) error { // After an update, run the new rexdiff in this process with the same // flags. resumeEnv gives it the saved state. closeLog() + _ = repo.Close() // the new process does not run the deferred calls if err = os.Setenv(resumeEnv, resume); err == nil { err = update.Restart(bin, args) // returns only if it fails } diff --git a/internal/termtext/termtext.go b/internal/termtext/termtext.go index 343a8fd..bb65853 100644 --- a/internal/termtext/termtext.go +++ b/internal/termtext/termtext.go @@ -8,9 +8,10 @@ import ( "unicode/utf8" ) -// Plain returns s without control characters and escape sequences. It keeps -// tabs and newlines. Use Plain on text from other people before you show or -// send the text. +// Plain returns s without control characters. It keeps tabs and +// newlines. The printable rest of an escape sequence stays, as in +// herdr-reviewr, but it cannot change the terminal. Use Plain on text from +// other people before you show or send the text. func Plain(s string) string { return strings.Map(func(r rune) rune { if r == '\t' || r == '\n' || !unicode.IsControl(r) { diff --git a/rex/rex.go b/rex/rex.go index 0f649ac..60cdeb6 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -187,22 +187,20 @@ func (e statusEntry) status() Status { } // Status returns the status of the program in block. If the program sends -// no status, Status returns the zero Status. +// no status, Status returns the zero Status. The statuses of the +// sub-agents of the program do not count, as in [Client.Watch]. func (c *Client) Status(ctx context.Context, block string) (Status, error) { var reply struct { Entries []statusEntry `json:"records"` } args := []string{"block", "call", "-s", c.session, "-b", block, "program_status"} - err := c.runRexJSON(ctx, &reply, args...) - if err != nil || len(reply.Entries) == 0 { + if err := c.runRexJSON(ctx, &reply, args...); err != nil { return Status{}, err } - for _, e := range reply.Entries { - if e.ID == "" { - return e.status(), nil - } + if i := slices.IndexFunc(reply.Entries, func(e statusEntry) bool { return e.ID == "" }); i >= 0 { + return reply.Entries[i].status(), nil } - return reply.Entries[0].status(), nil + return Status{}, nil } // Cwd returns the working directory of the program in block. diff --git a/tui/model.go b/tui/model.go index e5f8fd6..2990a8a 100644 --- a/tui/model.go +++ b/tui/model.go @@ -228,6 +228,7 @@ type model struct { filesOwed bool // the same for the list of all files reloadAt time.Time reloadRetry retryTimer + loads reloads tab tab scope Scope @@ -265,6 +266,7 @@ type model struct { changeFiles []changedFile // the Changes tab changeSel int // the file that shows in the Changes tab shownTrees string // the two trees of files, to notice a change + shownScope Scope // the scope of changeFiles changeTree fileListTree allFiles []vcs.Entry // the Files tab allSel int @@ -477,78 +479,185 @@ func (m *model) flash(s string) { m.status, m.statusTill = termtext.Quote(s), time.Now().Add(flashTime) } -// treeIDs returns the IDs of the two trees that the Changes tab compares -// in the scope. If there is nothing to compare, note tells why. -func (m *model) treeIDs() (from, to, note string, err error) { - ctx := m.ctx - switch m.scope { - case scopeCommits: - if m.to == "" { - note := "no commits picked: press " + firstKey(m.keys.CommitPick) + - " to pick one or a range" - return "", "", note, nil +// reload reads the changes of the scope again, even if the trees do not +// change. +func (m *model) reload() { m.loads.want, m.loads.force = true, true } + +// reloadIfChanged reads the changes of the scope again if the trees differ +// from the shown trees. +func (m *model) reloadIfChanged() { m.loads.want = true } + +// reloads follows the reloads of the Changes tab. A reload runs git, so +// it runs in a command, one at a time. A request during a reload starts +// one more reload after it. +type reloads struct { + gen int // the reload whose result shows; others are stale + running bool // the reload gen runs + want bool // a reload is due + force bool // the due reload shows the changes even if the trees are the same +} + +// loadNow reads the changes at once, for the first screen. Nothing shows +// yet, so the wait blocks nothing. +func (m *model) loadNow() { + m.loads.gen++ + m.loads.want, m.loads.force = false, false + m.onChanges(m.reloadInput(true).run()) +} + +// reloadTimeout is the longest time of a reload. A git that hangs then +// fails the reload, and the next tick tries again. +const reloadTimeout = time.Minute + +// startReload returns a command for the reload that is due, if no reload +// runs. While the comment box is open, the reload waits until the box +// closes, as in herdr-reviewr. +func (m *model) startReload() tea.Cmd { + l := &m.loads + if !l.want || l.running || m.mode == modeComment { + return nil + } + l.gen++ + l.running, l.want = true, false + in := m.reloadInput(l.force) + l.force = false + return func() tea.Msg { return in.run() } +} + +// reloadInput returns what a reload needs, copied from the model, so that +// the reload can run in a command. +func (m *model) reloadInput(force bool) reloadInput { + in := reloadInput{ + ctx: m.ctx, repo: m.repo, gen: m.loads.gen, scope: m.scope, + base: m.base, from: m.from, to: m.to, force: force, shown: m.shownTrees, + prev: make(map[string]changedFile, len(m.changeFiles)), + } + for _, c := range m.changeFiles { + in.prev[c.Path] = c + } + switch { + case m.scope == scopeCommits && m.to == "": + in.note = "no commits picked: press " + firstKey(m.keys.CommitPick) + + " to pick one or a range" + case m.scope == ScopeLastTurn && m.turn == nil: + in.note = m.turnWaitMessage() + case m.scope == ScopeLastTurn: + in.turnTree = m.turn.tree + } + return in +} + +// reloadInput is the input of a reload. note tells why there is nothing +// to compare, or is "". +type reloadInput struct { + ctx context.Context + repo *vcs.Repo + gen int + scope Scope + base, from, to, note string + turnTree, shown string + force bool + prev map[string]changedFile // the shown files, by path +} + +// changesMsg is the result of a reload. +type changesMsg struct { + gen int + trees string // the two trees, as "from..to" + same bool // the trees are the shown trees, and the reload is not forced + files []changedFile + note string + err error + took time.Duration +} + +// run reads the changes of in. It counts the lines of each file that is +// not in in.prev with the same content. +func (in reloadInput) run() changesMsg { + start := time.Now() + ctx, cancel := context.WithTimeout(in.ctx, reloadTimeout) + defer cancel() + msg := changesMsg{gen: in.gen, note: in.note} + if msg.note == "" { + from, to, err := in.trees(ctx) + msg.trees, msg.err = from+".."+to, err + msg.same = err == nil && msg.trees == in.shown && !in.force + if err == nil && !msg.same { + msg.files, msg.err = in.changedFiles(ctx, from, to) } - if from, err = m.repo.ParentTree(ctx, m.from); err != nil { - return "", "", "", err + } + msg.took = time.Since(start) + return msg +} + +// trees returns the IDs of the two trees that the Changes tab compares in +// the scope. +func (in reloadInput) trees(ctx context.Context) (from, to string, err error) { + switch in.scope { + case scopeCommits: + if from, err = in.repo.ParentTree(ctx, in.from); err != nil { + return "", "", err } - to, err = m.repo.Tree(ctx, m.to) - return from, to, "", err + to, err = in.repo.Tree(ctx, in.to) + return from, to, err case ScopeLastTurn: - if m.turn == nil { - return "", "", m.turnWaitMessage(), nil - } - from = m.turn.tree + from = in.turnTree case ScopeBranch: - if from, err = m.repo.MergeBaseTree(ctx, m.base); err != nil { - return "", "", "", err - } + from, err = in.repo.MergeBaseTree(ctx, in.base) default: - if from, err = m.repo.HeadTree(ctx); err != nil { - return "", "", "", err - } + from, err = in.repo.HeadTree(ctx) + } + if err != nil { + return "", "", err } - to, err = m.repo.Snapshot(ctx) - return from, to, "", err + to, err = in.repo.Snapshot(ctx) + return from, to, err } -// reload reads the changes of the scope again, even if the trees do not -// change. -func (m *model) reload() { m.loadChanges(true) } +// changedFiles returns the changes from the tree from to the tree to, +// with their line counts. +func (in reloadInput) changedFiles(ctx context.Context, from, to string) ([]changedFile, error) { + files, err := in.repo.Diff(ctx, from, to) + if err != nil { + return nil, err + } + out := make([]changedFile, len(files)) + for i, f := range files { + c := &out[i] + if p, ok := in.prev[f.Path]; ok && p.Old == f.Old && p.New == f.New { + *c = p // the same change, so the counts stay + } else if !f.Binary && !f.TooBig { + c.adds, c.dels = diff.Count(f.Old, f.New) + c.oldHash = hash(f.Old) + } + c.File = f + } + return out, nil +} -// reloadIfChanged reads the changes of the scope again if the trees differ -// from the shown trees. -func (m *model) reloadIfChanged() { m.loadChanges(false) } - -// loadChanges reads the changes of the scope if force is true or if the -// trees differ from the shown trees. While the comment box is open, the -// reload waits until the box closes, as in herdr-reviewr. After a -// failure, the next tick tries again after a wait. As in herdr-reviewr, a -// failure keeps the files that show, and the error shows in their place -// only if no files show. -func (m *model) loadChanges(force bool) { - if m.mode == modeComment { - m.reloadOwed = true +// onChanges shows the result of a reload. After a failure, the next tick +// tries again after a wait. As in herdr-reviewr, a failure keeps the files +// of the scope that show, and the error shows in their place only if no +// files show. A change of the view during the reload starts one more. +func (m *model) onChanges(msg changesMsg) { + if msg.gen != m.loads.gen { return } - m.reloadOwed = false - from, to, note, err := m.treeIDs() - trees := from + ".." + to - same := trees == m.shownTrees && !force - var files []vcs.File - if err == nil && note == "" && !same { - files, err = m.repo.Diff(m.ctx, from, to) - } - m.retry(err) - if err == nil && note == "" && same { + m.loads.running = false + m.reloadAt = time.Now().Add(reloadPauseFactor * msg.took) + m.retry(msg.err) + note, err := msg.note, msg.err + if err == nil && note == "" && msg.same { return } - if err != nil && len(m.changeFiles) > 0 { + if err != nil && len(m.changeFiles) > 0 && m.shownScope == m.scope { m.flash("refresh failed: " + err.Error()) return } if err != nil { note = err.Error() } + m.shownScope = m.scope if note != "" { m.changePane.note, m.changeFiles, m.shownTrees = note, nil, "" m.buildTrees() @@ -559,25 +668,9 @@ func (m *model) loadChanges(force bool) { if f := m.selectedChange(); f != nil { selPath = f.Path } - prev := make(map[string]changedFile, len(m.changeFiles)) - for _, c := range m.changeFiles { - prev[c.Path] = c - } - m.changeFiles = make([]changedFile, len(files)) - m.shownTrees, m.changeSel, m.changePane.note = trees, -1, "" - for i, f := range files { - c := &m.changeFiles[i] - if p, ok := prev[f.Path]; ok && p.Old == f.Old && p.New == f.New { - *c = p // the same change, so the counts stay - } else if !f.Binary && !f.TooBig { - c.adds, c.dels = diff.Count(f.Old, f.New) - c.oldHash = hash(f.Old) - } - c.File = f - if f.Path == selPath { - m.changeSel = i - } - } + m.changeFiles = msg.files + m.shownTrees, m.changePane.note = msg.trees, "" + m.changeSel = slices.IndexFunc(m.changeFiles, func(c changedFile) bool { return c.Path == selPath }) m.buildTrees() if f := m.selectedChange(); f == nil || f.Path != selPath { // Another file shows, so the cursor and the selection do not apply. @@ -650,8 +743,18 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { // handle does the work of Update. Update then checks for a restart. func (m *model) handle(msg tea.Msg) tea.Cmd { + cmd := m.handleMsg(msg) + return tea.Batch(cmd, m.startReload()) +} + +// handleMsg handles msg. A reload that it asks for starts after it. +func (m *model) handleMsg(msg tea.Msg) tea.Cmd { var cmd tea.Cmd switch msg := msg.(type) { + case changesMsg: + m.onChanges(msg) + case turnCheckMsg: + m.onTurnCheck(msg) case tea.WindowSizeMsg: m.click = clickChain{} m.w, m.h, m.sized = msg.Width, msg.Height, true @@ -861,8 +964,9 @@ func (m *model) watchChanges() vcs.Change { func (m *model) onTick() tea.Cmd { m.ticks++ ch := m.watchChanges() + var cmds []tea.Cmd if ch.Files && m.pending != nil { - m.checkTurn() + cmds = append(cmds, m.checkTurnLater()) } m.reloadOwed = m.reloadOwed || ch.Files || ch.Refs m.filesOwed = m.filesOwed || ch.Files @@ -871,7 +975,6 @@ func (m *model) onTick() tea.Cmd { if m.status != "" && now.After(m.statusTill) { m.status = "" } - var cmds []tea.Cmd // Without a watcher, each tick reports a change of the refs. Then only // the poll reads the pull request. if ch.Refs && m.watch != nil { @@ -900,10 +1003,10 @@ func (m *model) reloadDue() { } now := time.Now() switch { - case m.tab == tabChanges && m.reloadOwed && !now.Before(m.reloadAt) && !now.Before(m.reloadRetry.at): - m.reloadIfChanged() - end := time.Now() - m.reloadAt = end.Add(reloadPauseFactor * end.Sub(now)) + case m.tab == tabChanges && m.reloadOwed && !m.loads.running && + !now.Before(m.reloadAt) && !now.Before(m.reloadRetry.at): + m.reloadOwed = false + m.reloadIfChanged() // onChanges sets reloadAt after the pause case m.tab == tabFiles && m.filesOwed: m.reloadFiles() // reloadFiles renders the file too case m.tab == tabFiles && m.watch == nil: diff --git a/tui/search.go b/tui/search.go index bb53a45..d7b4d63 100644 --- a/tui/search.go +++ b/tui/search.go @@ -7,6 +7,7 @@ import ( "context" "fmt" "slices" + "strings" "time" tea "charm.land/bubbletea/v2" @@ -120,7 +121,7 @@ func (m *model) runSearch() tea.Cmd { s.files, s.fileTotal = search.Files(s.paths, m.recent, q, search.MaxFiles) s.err = "" m.stopGrep() - if q == "" { + if strings.TrimSpace(q) == "" { // as in herdr-reviewr, a blank grep is noise s.hits, s.hitsMore = nil, false ov.showSearch() return nil diff --git a/tui/send.go b/tui/send.go index d31c8f7..68b0166 100644 --- a/tui/send.go +++ b/tui/send.go @@ -5,7 +5,6 @@ import ( "context" "errors" "fmt" - "maps" "slices" "time" @@ -83,223 +82,6 @@ func (m *model) onEvent(e rex.Event) tea.Cmd { return m.observeTurn() } -// member is an agent that works in the repository. -type member struct { - block, app string - state rex.State - since time.Time // when Rex got the state -} - -// members returns the agents that work in the repository, in the order -// of their blocks. As in herdr-reviewr, an agent is a member if its -// working directory is absolute and in this working tree. If the place of -// an agent is not known, members returns false, and the block of the -// agent if Rex can tell its place. -func (m *model) members() (ms []member, ask string, ok bool) { - for _, block := range slices.Sorted(maps.Keys(m.agents)) { - a := m.agents[block] - if a.state == "" || a.app == appName || (m.rex != nil && block == m.rex.Block()) { - continue - } - if !a.hasCwd { - if m.rex == nil { - return nil, "", false - } - return nil, block, false - } - in, err := m.owns(a.cwd) - if err != nil { - m.log.Warn("agent membership failed", "err", err) - return nil, "", false - } - if in { - ms = append(ms, member{block, a.app, a.state, a.since}) - } - } - return ms, "", true -} - -// askCwd returns a command that asks Rex for the working directory of the -// agent in block. The answer comes as a cwdMsg. -func (m *model) askCwd(block string) tea.Cmd { - a := m.agents[block] - if a.asking { - return nil - } - a.asking = true - c, ctx := m.rex, m.ctx - return func() tea.Msg { - ctx, cancel := context.WithTimeout(ctx, rexTimeout) - defer cancel() - cwd, err := c.Cwd(ctx, block) - return cwdMsg{block: block, cwd: cwd, err: err} - } -} - -// onCwd keeps the working directory of an agent, and follows the turns -// with it. After an error, the next state asks again. -func (m *model) onCwd(msg cwdMsg) tea.Cmd { - a := m.agents[msg.block] - if a == nil { - return nil // the block closed - } - a.asking = false - if msg.err != nil { - m.log.Debug("agent cwd failed", "block", msg.block, "err", msg.err) - return nil - } - a.cwd, a.hasCwd = msg.cwd, true - return m.observeTurn() -} - -// owns reports whether dir is in this working tree. It keeps the -// directories that are, because their top directory does not move. -func (m *model) owns(dir string) (bool, error) { - if m.memberDirs[dir] { - return true, nil - } - in, err := m.repo.Owns(m.ctx, dir) - if in { - if m.memberDirs == nil { - m.memberDirs = map[string]bool{} - } - m.memberDirs[dir] = true - } - return in, err -} - -// observeTurn gives the state of the repository to the tracker, and -// follows the start and the end of a turn. -func (m *model) observeTurn() tea.Cmd { - if !m.sampled { - return nil - } - ms, ask, ok := m.members() - if ask != "" { - return m.askCwd(ask) - } - if !ok { - return nil // keep the last state, as herdr-reviewr does - } - here := len(ms) > 0 - if m.agentsHere == nil || *m.agentsHere != here { - m.agentsHere = &here - if m.scope == ScopeLastTurn && m.turn == nil { - m.reload() // show the new wait message - } - } - states := make([]rex.State, len(ms)) - for i, a := range ms { - states[i] = a.state - } - started, ended := m.tracker.Observe(states...) - if started { - m.startTurn(ms) - } - if ended { - m.endTurn() - } - return nil -} - -// turnWaitMessage tells why the last-turn scope has no turn. The messages -// come from herdr-reviewr. -func (m *model) turnWaitMessage() string { - if m.raced { - return "the last turn started before rexdiff could snapshot it" - } - if m.agentsHere != nil && !*m.agentsHere { - return "no agent works here" - } - return "waiting for the first turn" -} - -// raceBefore is how long before Rex gets the working state the agent can -// already write, as in herdr-reviewr. -const raceBefore = time.Second - -// startTurn takes a snapshot of the working tree at the start of a turn -// of the members ms. The turn stays pending until it changes a file. As in -// herdr-reviewr, a write from raceBefore the start to the snapshot can be -// in the snapshot. Then the turn is not known, and the scope says so. -func (m *model) startTurn(ms []member) { - m.pending = nil - tree, err := m.repo.Snapshot(m.ctx) - if err != nil { - m.log.Warn("turn snapshot failed", "err", err) - return - } - snapped := time.Now() - i := slices.IndexFunc(ms, func(a member) bool { return a.state == rex.StateWorking }) - if m.watch != nil { - w := m.watch.LastWrite() - if !w.Before(ms[i].since.Add(-raceBefore)) && !w.After(snapped) { - m.log.Debug("turn raced", "block", ms[i].block, "write", w) - m.dropTurn() - return - } - } - m.log.Debug("turn start", "block", ms[i].block, "tree", tree) - m.pending = &turnState{ - block: ms[i].block, - app: ms[i].app, - tree: tree, - running: true, - at: time.Now(), - } -} - -// checkTurn makes the pending turn the last turn if the working tree -// differs from its start. Else the last turn stays. -func (m *model) checkTurn() { - tree, err := m.repo.Snapshot(m.ctx) - if err != nil { - m.log.Warn("turn change check failed", "err", err) - return - } - if tree != m.pending.tree { - m.promote() - } -} - -// dropTurn forgets the last turn, because a new turn starts that is not -// known. -func (m *model) dropTurn() { - m.turn, m.raced = nil, true - if err := m.repo.SaveTurn(m.ctx, ""); err != nil { - m.log.Warn("turn baseline ref delete failed", "err", err) - } - if m.scope == ScopeLastTurn { - m.reload() - } -} - -// promote makes the pending turn the last turn, and saves its tree. -func (m *model) promote() { - m.turn, m.pending, m.raced = m.pending, nil, false - if err := m.repo.SaveTurn(m.ctx, m.turn.tree); err != nil { - m.log.Warn("turn baseline ref write failed", "err", err) - } - if m.scope == ScopeLastTurn { - m.reload() - } -} - -// endTurn ends the turn. A pending turn that changes the working tree -// becomes the last turn. After the end, a change is not from the turn. -func (m *model) endTurn() { - if m.pending != nil { - m.checkTurn() - m.pending = nil - } - if m.turn != nil { - m.turn.running = false - } - if m.scope == ScopeLastTurn { - m.reload() - } -} - // onAgents keeps the states of the agents. For a send, onAgents sends the // review to the agent, or lets the user pick one. A list from before a // reconnect does not change the states, because they can be old. @@ -368,7 +150,7 @@ func (m *model) keepAgents(agents []rex.Agent) { state: a.Status.State, since: cmp.Or(a.Status.At, time.Now()), cwd: a.Cwd, - hasCwd: true, + hasCwd: a.Cwd != "", // else askCwd asks Rex again } } } @@ -447,6 +229,9 @@ func (m *model) startSend() tea.Cmd { case m.rex == nil: m.flashCopy("not in Rex") return nil + case m.sends > 0: + m.flash("a send runs") + return nil } m.flash("sending…") m.sends++ diff --git a/tui/tui.go b/tui/tui.go index cf93d95..80a3843 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -134,7 +134,7 @@ func startModel(ctx context.Context, o Options, cfg config) model { m.restoreSettings(saved) } } - m.reload() + m.loadNow() if saved != nil { m.restorePlaces(saved) } diff --git a/tui/turn.go b/tui/turn.go new file mode 100644 index 0000000..ebf979b --- /dev/null +++ b/tui/turn.go @@ -0,0 +1,261 @@ +package tui + +import ( + "context" + "maps" + "slices" + "time" + + tea "charm.land/bubbletea/v2" + + "github.com/rednafi/rexdiff/rex" +) + +// member is an agent that works in the repository. +type member struct { + block, app string + state rex.State + since time.Time // when Rex got the state +} + +// members returns the agents that work in the repository, in the order +// of their blocks. As in herdr-reviewr, an agent is a member if its +// working directory is absolute and in this working tree. If the place of +// an agent is not known, members returns false, and the block of the +// agent if Rex can tell its place. +func (m *model) members() (ms []member, ask string, ok bool) { + for _, block := range slices.Sorted(maps.Keys(m.agents)) { + a := m.agents[block] + if a.state == "" || a.app == appName || (m.rex != nil && block == m.rex.Block()) { + continue + } + if !a.hasCwd { + if m.rex == nil { + return nil, "", false + } + return nil, block, false + } + in, err := m.owns(a.cwd) + if err != nil { + m.log.Warn("agent membership failed", "err", err) + return nil, "", false + } + if in { + ms = append(ms, member{block, a.app, a.state, a.since}) + } + } + return ms, "", true +} + +// askCwd returns a command that asks Rex for the working directory of the +// agent in block. The answer comes as a cwdMsg. +func (m *model) askCwd(block string) tea.Cmd { + a := m.agents[block] + if a.asking { + return nil + } + a.asking = true + c, ctx := m.rex, m.ctx + return func() tea.Msg { + ctx, cancel := context.WithTimeout(ctx, rexTimeout) + defer cancel() + cwd, err := c.Cwd(ctx, block) + return cwdMsg{block: block, cwd: cwd, err: err} + } +} + +// onCwd keeps the working directory of an agent, and follows the turns +// with it. After an error, the next state asks again. +func (m *model) onCwd(msg cwdMsg) tea.Cmd { + a := m.agents[msg.block] + if a == nil { + return nil // the block closed + } + a.asking = false + if msg.err != nil { + m.log.Debug("agent cwd failed", "block", msg.block, "err", msg.err) + return nil + } + a.cwd, a.hasCwd = msg.cwd, true + return m.observeTurn() +} + +// owns reports whether dir is in this working tree. It keeps the +// directories that are, because their top directory does not move. +func (m *model) owns(dir string) (bool, error) { + if m.memberDirs[dir] { + return true, nil + } + in, err := m.repo.Owns(m.ctx, dir) + if in { + if m.memberDirs == nil { + m.memberDirs = map[string]bool{} + } + m.memberDirs[dir] = true + } + return in, err +} + +// observeTurn gives the state of the repository to the tracker, and +// follows the start and the end of a turn. +func (m *model) observeTurn() tea.Cmd { + if !m.sampled { + return nil + } + ms, ask, ok := m.members() + if ask != "" { + return m.askCwd(ask) + } + if !ok { + return nil // keep the last state, as herdr-reviewr does + } + here := len(ms) > 0 + if m.agentsHere == nil || *m.agentsHere != here { + m.agentsHere = &here + if m.scope == ScopeLastTurn && m.turn == nil { + m.reload() // show the new wait message + } + } + states := make([]rex.State, len(ms)) + for i, a := range ms { + states[i] = a.state + } + started, ended := m.tracker.Observe(states...) + if started { + m.startTurn(ms) + } + if ended { + m.endTurn() + } + return nil +} + +// turnWaitMessage tells why the last-turn scope has no turn. The messages +// come from herdr-reviewr. +func (m *model) turnWaitMessage() string { + if m.raced { + return "the last turn started before rexdiff could snapshot it" + } + if m.agentsHere != nil && !*m.agentsHere { + return "no agent works here" + } + return "waiting for the first turn" +} + +// raceBefore is how long before Rex gets the working state the agent can +// already write, as in herdr-reviewr. +const raceBefore = time.Second + +// startTurn takes a snapshot of the working tree at the start of a turn +// of the members ms. The turn stays pending until it changes a file. As in +// herdr-reviewr, a write from raceBefore the start to the snapshot can be +// in the snapshot. Then the turn is not known, and the scope says so. +func (m *model) startTurn(ms []member) { + m.pending = nil + tree, err := m.repo.Snapshot(m.ctx) + if err != nil { + m.log.Warn("turn snapshot failed", "err", err) + return + } + snapped := time.Now() + i := slices.IndexFunc(ms, func(a member) bool { return a.state == rex.StateWorking }) + if m.watch != nil { + w := m.watch.LastWrite() + if !w.Before(ms[i].since.Add(-raceBefore)) && !w.After(snapped) { + m.log.Debug("turn raced", "block", ms[i].block, "write", w) + m.dropTurn() + return + } + } + m.log.Debug("turn start", "block", ms[i].block, "tree", tree) + m.pending = &turnState{ + block: ms[i].block, + app: ms[i].app, + tree: tree, + running: true, + at: time.Now(), + } +} + +// checkTurnLater returns a command that takes a snapshot for the pending +// turn. onTurnCheck makes the turn the last turn if the working tree +// differs from its start. +func (m *model) checkTurnLater() tea.Cmd { + p, repo, ctx := m.pending, m.repo, m.ctx + return func() tea.Msg { + ctx, cancel := context.WithTimeout(ctx, reloadTimeout) + defer cancel() + tree, err := repo.Snapshot(ctx) + return turnCheckMsg{turn: p, tree: tree, err: err} + } +} + +// turnCheckMsg is a snapshot for the pending turn. +type turnCheckMsg struct { + turn *turnState + tree string + err error +} + +// onTurnCheck makes the turn of msg the last turn if it is still pending +// and the working tree differs from its start. +func (m *model) onTurnCheck(msg turnCheckMsg) { + switch { + case msg.err != nil: + m.log.Warn("turn change check failed", "err", msg.err) + case msg.turn == m.pending && msg.tree != msg.turn.tree: + m.promote() + } +} + +// checkTurn makes the pending turn the last turn if the working tree +// differs from its start. Else the last turn stays. The end of a turn +// checks at once, before the turn stops being pending. +func (m *model) checkTurn() { + tree, err := m.repo.Snapshot(m.ctx) + if err != nil { + m.log.Warn("turn change check failed", "err", err) + return + } + if tree != m.pending.tree { + m.promote() + } +} + +// dropTurn forgets the last turn, because a new turn starts that is not +// known. +func (m *model) dropTurn() { + m.turn, m.raced = nil, true + if err := m.repo.SaveTurn(m.ctx, ""); err != nil { + m.log.Warn("turn baseline ref delete failed", "err", err) + } + if m.scope == ScopeLastTurn { + m.reload() + } +} + +// promote makes the pending turn the last turn, and saves its tree. +func (m *model) promote() { + m.turn, m.pending, m.raced = m.pending, nil, false + if err := m.repo.SaveTurn(m.ctx, m.turn.tree); err != nil { + m.log.Warn("turn baseline ref write failed", "err", err) + } + if m.scope == ScopeLastTurn { + m.reload() + } +} + +// endTurn ends the turn. A pending turn that changes the working tree +// becomes the last turn. After the end, a change is not from the turn. +func (m *model) endTurn() { + if m.pending != nil { + m.checkTurn() + m.pending = nil + } + if m.turn != nil { + m.turn.running = false + } + if m.scope == ScopeLastTurn { + m.reload() + } +} diff --git a/tui/view.go b/tui/view.go index 5155d83..be80575 100644 --- a/tui/view.go +++ b/tui/view.go @@ -180,7 +180,7 @@ func (m *model) agentLabel() string { } n := 0 for block, a := range m.agents { - if a.state != "" && block != m.rex.Block() { + if a.state != "" && a.app != appName && block != m.rex.Block() { n++ } } diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index 2d546f9..d52ddc8 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -220,17 +220,13 @@ func TestGitWorktree(t *testing.T) { t.Parallel() // Such a working tree has its own index. Snapshot must not change it. _, dir := newRepo(t) - ctx := t.Context() wt := filepath.Join(t.TempDir(), "wt") testgit.Git(t, dir, "worktree", "add", "-q", "-b", "other", wt, "main") testgit.WriteFile(t, wt, "a.txt", "changed\n") testgit.WriteFile(t, wt, "staged.txt", "s\n") testgit.Git(t, wt, "add", "staged.txt") - r, err := vcs.Open(ctx, wt) - if err != nil { - t.Fatal(err) - } + r := open(t, wt) if got := uncommitted(t, r); got != "Ma.txt Astaged.txt" { t.Errorf("Diff(HEAD, Snapshot) = %s, want Ma.txt Astaged.txt", got) } diff --git a/vcs/pr.go b/vcs/pr.go index 75c6390..528bcac 100644 --- a/vcs/pr.go +++ b/vcs/pr.go @@ -179,6 +179,12 @@ func (r *Repo) runJSON( return nil } +// noPR reports whether err is the error of a tool that finds no pull +// request. Such a tool exits with 1 and says so with the text msg. +func noPR(err error, msg string) bool { + return exitedOne(err) && strings.Contains(strings.ToLower(err.Error()), msg) +} + // lastN returns the last n elements of xs, or all of them if there are // fewer. func lastN[T any](xs []T, n int) []T { @@ -225,6 +231,9 @@ func (r *Repo) gitHub(ctx context.Context, host string) (*PullRequest, error) { "headRefName,baseRefName,comments,statusCheckRollup" var v gitHubPR err := r.runJSON(ctx, env, &v, "gh", "pr", "view", "--json", fields) + if noPR(err, "no pull requests found") { + return nil, ErrNoPullRequest + } if err != nil { return nil, err } @@ -341,6 +350,9 @@ type gitLabDiscussion struct { func (r *Repo) gitLab(ctx context.Context) (*PullRequest, error) { var v gitLabMR err := r.runJSON(ctx, nil, &v, "glab", "mr", "view", "--output", "json") + if noPR(err, "no open merge request") { + return nil, ErrNoPullRequest + } if err != nil { return nil, err } diff --git a/vcs/pr_test.go b/vcs/pr_test.go index 0db13eb..7212790 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -238,6 +238,21 @@ func TestPullRequestHostile(t *testing.T) { } } +// TestNoPullRequest checks that a gh or a glab that finds no pull request +// gives ErrNoPullRequest. Both exit with 1 and say so. +func TestNoPullRequest(t *testing.T) { + dir := t.TempDir() + fakePath(t, dir) + testgit.Script(t, dir, "gh", "echo 'no pull requests found for branch \"feat\"' >&2\nexit 1\n") + testgit.Script(t, dir, "glab", "echo 'no open merge request available for \"feat\"' >&2\nexit 1\n") + for _, remote := range []string{"https://github.com/o/r", "https://gitlab.com/o/r"} { + r, _ := repoAt(t, remote) + if _, err := r.PullRequest(t.Context(), vcs.Hosts{}); !errors.Is(err, vcs.ErrNoPullRequest) { + t.Errorf("PullRequest(%s) = %v, want ErrNoPullRequest", remote, err) + } + } +} + // fakePath sets PATH to dir and the system directories, and links git into // dir. Then PATH has the fake forge tools and no real ones. func fakePath(t *testing.T, dir string) { diff --git a/vcs/repo.go b/vcs/repo.go index c555fc0..5b4ce4b 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -21,6 +21,7 @@ import ( "slices" "strconv" "strings" + "sync" "time" ) @@ -47,6 +48,11 @@ var ( type Repo struct { root string index string // the path of the real index + + // snapMu guards the private index of Snapshot, in the directory + // snapDir, or "" before the first Snapshot. + snapMu sync.Mutex + snapDir string } // Open returns the repository that contains dir. @@ -70,6 +76,18 @@ func Open(ctx context.Context, dir string) (*Repo, error) { return r, nil } +// Close removes the files that the repository keeps for [Repo.Snapshot]. +func (r *Repo) Close() error { + r.snapMu.Lock() + defer r.snapMu.Unlock() + dir := r.snapDir + r.snapDir = "" + if dir == "" { + return nil + } + return os.RemoveAll(dir) +} + // Root returns the top directory of the working tree. func (r *Repo) Root() string { return r.root } @@ -220,22 +238,30 @@ func (r *Repo) MergeBaseCommit(ctx context.Context, base string) (string, error) // Snapshot writes the working tree as a tree object and returns its ID. // The tree has the tracked and the untracked files. It does not have the // ignored files. It also does not have the files that git cannot add, for -// example a nested repository with no commit. Snapshot uses a temporary -// index, so the real index does not change. +// example a nested repository with no commit. Snapshot uses a private +// index, so the real index does not change. The private index keeps the +// file status of the last Snapshot, also of the untracked files, so git +// reads only the files that change. [Repo.Close] removes it. func (r *Repo) Snapshot(ctx context.Context) (string, error) { - // git does not read an empty index file, but it reads a missing one - // as empty. A new repository has no index. - dir, err := os.MkdirTemp("", "rexdiff-index-*") - if err != nil { - return "", err - } - defer func() { _ = os.RemoveAll(dir) }() - idx := filepath.Join(dir, "index") - if err := r.copyIndex(idx); err != nil { - return "", err + r.snapMu.Lock() + defer r.snapMu.Unlock() + if r.snapDir == "" { + dir, err := os.MkdirTemp("", "rexdiff-index-*") + if err != nil { + return "", err + } + // "add -A" makes any index match the working tree. The copy of the + // real index only saves the first hash of the tracked files. + if err := r.copyIndex(filepath.Join(dir, "index")); err != nil { + _ = os.RemoveAll(dir) + return "", err + } + r.snapDir = dir } - env := []string{"GIT_INDEX_FILE=" + idx} - _, err = r.run(ctx, env, "add", "-A", "--ignore-errors") + // git reads a missing index file as empty, for example after a clean + // of the temporary directory. + env := []string{"GIT_INDEX_FILE=" + filepath.Join(r.snapDir, "index")} + _, err := r.run(ctx, env, "add", "-A", "--ignore-errors") if exitedOne(err) { err = nil // git cannot add some files, but it adds the others } @@ -250,8 +276,7 @@ func (r *Repo) Snapshot(ctx context.Context) (string, error) { } // copyIndex copies the real index to dst. If there is no real index, it -// does nothing. With the copy, "add -A" hashes only the changed files. -// The copy keeps the modification time of the index. git uses this time +// does nothing. The copy keeps the modification time of the index. git uses this time // to find files that changed in the same second as the index. func (r *Repo) copyIndex(dst string) error { st, err := os.Stat(r.index) diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 2e2491b..0105881 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -49,11 +49,18 @@ func newRepo(t *testing.T) (*vcs.Repo, string) { testRepo.Copy(t, dir) // Open from a subdirectory. Open must find the root. - r, err := vcs.Open(t.Context(), filepath.Join(dir, "build")) + return open(t, filepath.Join(dir, "build")), dir +} + +// open opens the repository at dir, and closes it at the end of the test. +func open(t *testing.T, dir string) *vcs.Repo { + t.Helper() + r, err := vcs.Open(t.Context(), dir) if err != nil { t.Fatal(err) } - return r, dir + t.Cleanup(func() { _ = r.Close() }) + return r } // snapshot returns the tree of the working tree. @@ -300,10 +307,7 @@ func TestFilesInConflict(t *testing.T) { if err := cmd.Run(); err == nil { t.Fatal("git merge other: no error, want a conflict") } - r, err := vcs.Open(t.Context(), dir) - if err != nil { - t.Fatal(err) - } + r := open(t, dir) es, err := r.Files(t.Context()) if err != nil { t.Fatal(err) @@ -471,10 +475,7 @@ func TestDiffRenameAndSubmodule(t *testing.T) { testgit.Git(t, dir, "commit", "-qm", "two") ctx := t.Context() - r, err := vcs.Open(ctx, dir) - if err != nil { - t.Fatal(err) - } + r := open(t, dir) from, to := parent(t, r, "HEAD"), head(t, r) got, err := r.Diff(ctx, from, to) if err != nil { @@ -625,10 +626,7 @@ func TestCommitsLikeHerdrReviewr(t *testing.T) { empty := t.TempDir() testgit.InitRepo(t, empty) - er, err := vcs.Open(ctx, empty) - if err != nil { - t.Fatal(err) - } + er := open(t, empty) if cs, err := er.Commits(ctx, ""); err != nil || len(cs) != 0 { t.Errorf("Commits with no commit = %v, %v, want none, no error", cs, err) } diff --git a/vcs/saved_test.go b/vcs/saved_test.go index 922bee3..251d565 100644 --- a/vcs/saved_test.go +++ b/vcs/saved_test.go @@ -6,7 +6,6 @@ import ( "testing" "github.com/rednafi/rexdiff/internal/testgit" - "github.com/rednafi/rexdiff/vcs" ) // TestSavedBase checks that SaveBase keeps a base, and that the default @@ -87,10 +86,7 @@ func TestSavedPerWorktree(t *testing.T) { ctx := t.Context() other := filepath.Join(t.TempDir(), "wt") testgit.Git(t, dir, "worktree", "add", "-q", other, "main") - r2, err := vcs.Open(ctx, other) - if err != nil { - t.Fatal(err) - } + r2 := open(t, other) if err := r.SaveBase(ctx, "feat"); err != nil { t.Fatal(err) } From baa21aec693ec5accfc19a0b4eb353bcf9422004 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 03:09:56 +0100 Subject: [PATCH 076/119] refactor: run programs through internal/proc, and the conformance and simplify reviews One package runs programs, makes their errors, and sets WaitDelay. Resolve no longer repeats its prefix. -layout and -scope use the check of the settings, before git runs. The black-box harness waits on the writes to the screen, not on a poll, and new tests cover the arrow keys, N, :0 and :$, the quit prompt, stale and blank comments, the keybindings conflict, an agent elsewhere, a missing gh, and an unknown editor. --- .doc/dev.md | 2 + .doc/test.md | 3 +- cmd/rexdiff/install.go | 18 ++-- cmd/rexdiff/main.go | 51 +++++----- diff/cell.go | 2 +- diff/comment.go | 6 +- diff/diff.go | 18 +++- diff/file.go | 12 +-- diff/fold_test.go | 8 +- internal/clipboard/clipboard.go | 4 +- internal/diffview/diffview.go | 11 +-- internal/editor/editor.go | 4 +- internal/proc/proc.go | 71 ++++++++++++++ internal/proc/proc_test.go | 58 ++++++++++++ internal/testgit/testgit.go | 6 +- internal/tree/tree.go | 33 ++++--- rex/rex.go | 47 ++-------- rex/rex_test.go | 7 +- test/changes_test.go | 59 ++++++------ test/comment_test.go | 146 ++++++++++++++++++----------- test/fake_test.go | 57 ++++++++---- test/files_test.go | 23 ++++- test/rex_test.go | 15 +-- test/rexdiff_test.go | 159 +++++++++++++++++++++----------- test/testdata/script/cli.txt | 8 ++ test/update_test.go | 28 +++--- test/upgrade_test.go | 8 +- tui/config.go | 6 +- tui/editor.go | 22 ++--- tui/find.go | 8 +- tui/keys.go | 53 ++++++----- tui/model.go | 7 +- tui/nav.go | 7 +- tui/overlay.go | 6 +- tui/pr.go | 8 +- tui/preview.go | 4 +- tui/release.go | 10 +- tui/render.go | 4 +- tui/resume.go | 39 +++++--- tui/search.go | 4 +- tui/tree.go | 5 +- tui/tui.go | 19 ++-- tui/view.go | 14 ++- update/update.go | 25 ++--- update/update_test.go | 8 +- vcs/hostile_test.go | 10 +- vcs/pr.go | 11 +-- vcs/refs.go | 19 ++-- vcs/repo.go | 87 ++++++----------- vcs/repo_test.go | 7 +- vcs/watch.go | 23 ++--- vcs/watch_test.go | 4 +- 52 files changed, 749 insertions(+), 525 deletions(-) create mode 100644 internal/proc/proc.go create mode 100644 internal/proc/proc_test.go diff --git a/.doc/dev.md b/.doc/dev.md index d898966..760f939 100644 --- a/.doc/dev.md +++ b/.doc/dev.md @@ -56,6 +56,8 @@ GitHub Actions runs the tests, builds the binaries, and updates the Homebrew cas - Write short, plain comments that match the existing code. - Text from git, Rex, or a pull request can contain escape codes. Clean it with `internal/termtext` before you show it. +- Start a program with `internal/proc`, so that its errors have the same form as the + others. - `internal/diffview` is copied from crush. Record each change to it in `internal/VENDORED.md`. - When the right behaviour is unclear, follow herdr-reviewr. diff --git a/.doc/test.md b/.doc/test.md index 17a1ad0..9dfbd97 100644 --- a/.doc/test.md +++ b/.doc/test.md @@ -29,7 +29,8 @@ tm.waitFor("💬 hi") ``` The keys and the mouse go through a terminal emulator, so rexdiff gets them as from a -real terminal. No test sleeps. Each one waits for the screen, as a user does. +real terminal. No test waits a fixed time for rexdiff; each waits for the screen or for +a file. Short shell scripts on `PATH` stand in for rex, gh, pbcopy, and the editors. The fake rex prints output recorded from a real Rex, in `test/testdata/rex`. The scripts in diff --git a/cmd/rexdiff/install.go b/cmd/rexdiff/install.go index 1201075..f1befe2 100644 --- a/cmd/rexdiff/install.go +++ b/cmd/rexdiff/install.go @@ -6,6 +6,7 @@ import ( "flag" "fmt" "io" + "io/fs" "os" "path/filepath" "slices" @@ -234,7 +235,7 @@ func luaPath() string { return filepath.Join(filepath.Dir(rex.ConfigPath()), lua // file. func readFile(path string) (string, error) { b, err := os.ReadFile(path) - if errors.Is(err, os.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return "", nil } return string(b), err @@ -296,9 +297,9 @@ func install(ctx context.Context, bin string, args []string, stdout, stderr io.W // upgrade replaces the code part of rexdiff.lua with the code for bin, if // they differ, and keeps the settings. It is not the update of rexdiff // itself (see the update package). It upgrades only the Lua code of the -// action. It does nothing if there is no -// rexdiff.lua, or if the file runs another rexdiff, for example a build -// for development. It returns what the user must know, or "". +// action. It does nothing if there is no rexdiff.lua, or if the file runs +// another rexdiff, for example a build for development. It returns what +// the user must know, or "". func upgrade(ctx context.Context, bin string) string { lua := luaPath() old, err := readFile(lua) @@ -329,8 +330,10 @@ func addRequire(path string) (bool, error) { if err != nil { return false, err } - if slices.ContainsFunc(slices.Collect(strings.Lines(s)), isRequire) { - return false, nil + for line := range strings.Lines(s) { + if isRequire(line) { + return false, nil + } } if s != "" && !strings.HasSuffix(s, "\n") { s += "\n" @@ -374,7 +377,7 @@ func uninstall(ctx context.Context, args []string, stdout, stderr io.Writer) err if err := removeRequire(initPath); err != nil { return err } - if err := os.Remove(luaPath()); err != nil && !errors.Is(err, os.ErrNotExist) { + if err := os.Remove(luaPath()); err != nil && !errors.Is(err, fs.ErrNotExist) { return err } fmt.Fprintln(stdout, "removed the rexdiff action, its key, and its settings from Rex") @@ -389,6 +392,7 @@ func removeRequire(path string) error { if err != nil || s == "" { return err } + // Split, not Lines, because Join needs the lines without their ends. lines := slices.DeleteFunc(strings.Split(s, "\n"), isRequire) return os.WriteFile(path, []byte(strings.Join(lines, "\n")), 0o644) } diff --git a/cmd/rexdiff/main.go b/cmd/rexdiff/main.go index 2f812ff..e88b7d1 100644 --- a/cmd/rexdiff/main.go +++ b/cmd/rexdiff/main.go @@ -20,8 +20,6 @@ import ( "log/slog" "os" "os/signal" - "slices" - "strings" "syscall" "github.com/rednafi/rexdiff/rex" @@ -92,6 +90,9 @@ func run(ctx context.Context, args []string, stdout, stderr io.Writer) error { if f.check { return tui.CheckConfig(f.config) } + if err := tui.CheckFlags(tui.Layout(f.layout), tui.Scope(f.scope)); err != nil { + return err + } dir := cmp.Or(f.repo, ".") repo, err := vcs.Open(ctx, dir) @@ -124,8 +125,8 @@ func run(ctx context.Context, args []string, stdout, stderr io.Writer) error { Updater: updater, Resume: resumeFile(), Config: f.config, - Layout: f.layout, - Scope: f.scope, + Layout: tui.Layout(f.layout), + Scope: tui.Scope(f.scope), Agent: f.agent, Base: f.base, Wrap: f.wrap, @@ -134,17 +135,24 @@ func run(ctx context.Context, args []string, stdout, stderr io.Writer) error { if err != nil || resume == "" { return err } - // After an update, run the new rexdiff in this process with the same - // flags. resumeEnv gives it the saved state. + // After an update, the new rexdiff runs in this process. closeLog() _ = repo.Close() // the new process does not run the deferred calls - if err = os.Setenv(resumeEnv, resume); err == nil { + return restart(bin, args, resume, stdout) +} + +// restart runs the new rexdiff at bin in this process after an update, +// with the same args. resumeEnv gives it the saved state in the file +// resume. restart returns only if it fails. +func restart(bin string, args []string, resume string, stdout io.Writer) error { + err := os.Setenv(resumeEnv, resume) + if err == nil { err = update.Restart(bin, args) // returns only if it fails } // Run keeps the alternate screen for the restart. Leave that screen and // show the cursor. fmt.Fprint(stdout, "\x1b[?1049l\x1b[?25h") - return fmt.Errorf("start the new rexdiff: %w; your comments are saved in %s", err, resume) + return fmt.Errorf("start the new rexdiff (your comments are saved in %s): %w", resume, err) } // resumeEnv is the variable that gives a restarted rexdiff the path of the @@ -168,8 +176,8 @@ var version string // flags are the command-line arguments of the diff viewer. type flags struct { - layout tui.Layout - scope tui.Scope + layout string + scope string wrap bool base string agent string @@ -187,10 +195,9 @@ func parseFlags(args []string, stderr io.Writer) (flags, error) { var f flags fs := flag.NewFlagSet("rexdiff", flag.ContinueOnError) fs.SetOutput(stderr) - fs.Func("layout", "diff layout: unified (top to bottom) or split (side by side)", - oneOf(&f.layout, tui.LayoutUnified, tui.LayoutSplit)) - fs.Func("scope", "start scope: uncommitted, branch, or last-turn", - oneOf(&f.scope, tui.ScopeUncommitted, tui.ScopeBranch, tui.ScopeLastTurn)) + // tui.Run checks the layout and the scope, as in the settings. + fs.StringVar(&f.layout, "layout", "", "diff layout: unified (top to bottom) or split (side by side)") + fs.StringVar(&f.scope, "scope", "", "start scope: uncommitted, branch, or last-turn") fs.BoolVar(&f.wrap, "wrap", true, "wrap of long lines (the key w toggles it)") fs.StringVar(&f.base, "base", "", "base for the branch scope (default: the picked base, else the repo's default branch)") fs.StringVar(&f.agent, "agent", os.Getenv("REXDIFF_AGENT"), "Rex block (ID or label) of the agent beside this pane") @@ -215,22 +222,6 @@ func parseFlags(args []string, stderr io.Writer) (flags, error) { return f, nil } -// oneOf returns a flag function that sets *p to a value from allowed. -// Other values are an error, as in the settings. -func oneOf[T ~string](p *T, allowed ...T) func(string) error { - return func(v string) error { - if !slices.Contains(allowed, T(v)) { - var want []string - for _, a := range allowed { - want = append(want, string(a)) - } - return fmt.Errorf("expected one of %s", strings.Join(want, ", ")) - } - *p = T(v) - return nil - } -} - // openLog returns a logger that appends to the file at path, and a function // that closes the file. If path is empty, the logger discards everything. // The log is only for debugging, so the close ignores errors. diff --git a/diff/cell.go b/diff/cell.go index b5bfaa3..710f9e1 100644 --- a/diff/cell.go +++ b/diff/cell.go @@ -113,7 +113,7 @@ func runeAt(line string, col int) int { func lineAt(src string, n int) (string, bool) { for l := range strings.Lines(src) { if n--; n == 0 { - return strings.TrimSuffix(strings.TrimSuffix(l, "\n"), "\r"), true + return trimEOL(l), true } } return "", false diff --git a/diff/comment.go b/diff/comment.go index 89c721a..e216fad 100644 --- a/diff/comment.go +++ b/diff/comment.go @@ -127,10 +127,8 @@ func (cs *Comments) SetOldRev(rev string) { // Find returns the comment with the given ID, or nil. func (cs *Comments) Find(id int) *Comment { - for _, c := range cs.items { - if c.ID == id { - return c - } + if i := slices.IndexFunc(cs.items, func(c *Comment) bool { return c.ID == id }); i >= 0 { + return cs.items[i] } return nil } diff --git a/diff/diff.go b/diff/diff.go index 58b947f..eb02481 100644 --- a/diff/diff.go +++ b/diff/diff.go @@ -232,8 +232,22 @@ func Count(old, new string) (added, deleted int) { func Lines(s string) []string { var lines []string for l := range strings.Lines(s) { - l = strings.TrimSuffix(l, "\n") - lines = append(lines, strings.TrimSuffix(l, "\r")) + lines = append(lines, trimEOL(l)) } return lines } + +// trimEOL returns line without its LF or CRLF line ending. +func trimEOL(line string) string { + return strings.TrimSuffix(strings.TrimSuffix(line, "\n"), "\r") +} + +// countLines returns the number of lines of s, as [Lines] counts them. A +// last line without a newline counts as a line. +func countLines(s string) int { + n := strings.Count(s, "\n") + if s != "" && !strings.HasSuffix(s, "\n") { + n++ + } + return n +} diff --git a/diff/file.go b/diff/file.go index c309758..02f90fe 100644 --- a/diff/file.go +++ b/diff/file.go @@ -28,12 +28,8 @@ func RenderFile(path, src string, o Options) *Diff { "\r", "\u240d", "\t", strings.Repeat(" ", diffview.TabWidth), ).Replace(src) - hl := strings.Split(o.Cache.fileColours(path, src), "\n") - lines := 0 - for range strings.Lines(src) { - lines++ - } - hl = hl[:min(len(hl), lines)] // chroma can add a final newline + hl := strings.Split(o.Cache.fileColors(path, src), "\n") + hl = hl[:min(len(hl), countLines(src))] // chroma can add a final newline digits := len(strconv.Itoa(len(hl))) numWidth := digits + 2 // a space on each side of the number // The style renders once, around a format for the number. @@ -86,9 +82,9 @@ func fileLineParts(l string, code int, o Options) []string { return []string{diffview.CutLeft(l, o.Offset)} } -// fileColours returns highlight(path, src), and keeps it for the next +// fileColors returns highlight(path, src), and keeps it for the next // call. A nil c keeps nothing. -func (c *Cache) fileColours(path, src string) string { +func (c *Cache) fileColors(path, src string) string { if c == nil { return highlight(path, src) } diff --git a/diff/fold_test.go b/diff/fold_test.go index f1ce2bc..0fba112 100644 --- a/diff/fold_test.go +++ b/diff/fold_test.go @@ -28,8 +28,8 @@ func numbered(n int, upper ...int) string { // foldText writes a hunk header with fold f, for example "@14/14+13". func foldText(f diff.Fold) string { return fmt.Sprintf("@%d/%d+%d", f.Old, f.New, f.Lines) } -// layout writes the rows of d as one entry each: "@" and its fold for a -// hunk header, else the old and the new line number. +// layout writes each row of d as one entry. A hunk header is "@" and its +// fold. Another row is its old and its new line number. func layout(d *diff.Diff) []string { var out []string for _, r := range d.Rows { @@ -98,7 +98,7 @@ func TestFolds(t *testing.T) { o := diff.Options{Width: 60, Expanded: tt.expanded} d := diff.Render("f.txt", old, new, o) if got := layout(d); !slices.Equal(got, tt.want) { - t.Errorf("layout = %v\nwant %v", got, tt.want) + t.Errorf("layout = \n%v\nwant:\n%v", got, tt.want) } }) } @@ -158,7 +158,7 @@ func TestFoldEdges(t *testing.T) { t.Parallel() d := diff.Render("f.txt", tt.old, tt.new, diff.Options{Width: 80}) if got := strings.Join(layout(d), " "); got != tt.want { - t.Errorf("layout = %s\nwant %s", got, tt.want) + t.Errorf("layout = \n%s\nwant:\n%s", got, tt.want) } // The split layout has the same folds. o := diff.Options{Width: 80, Split: true} diff --git a/internal/clipboard/clipboard.go b/internal/clipboard/clipboard.go index 4cd8d2a..e2df687 100644 --- a/internal/clipboard/clipboard.go +++ b/internal/clipboard/clipboard.go @@ -8,6 +8,8 @@ import ( "fmt" "os/exec" "strings" + + "github.com/rednafi/rexdiff/internal/proc" ) // ErrNoTool tells that PATH has no clipboard tool. The user can fix it. @@ -29,7 +31,7 @@ func Write(ctx context.Context, text string) error { if err != nil { continue } - cmd := exec.CommandContext(ctx, path, t[1:]...) + cmd := proc.Command(ctx, path, t[1:]...) cmd.Stdin = strings.NewReader(text) // The output goes to the null device. xclip and wl-copy leave a // process that keeps the clipboard, and a pipe stays open while it diff --git a/internal/diffview/diffview.go b/internal/diffview/diffview.go index ee1c946..6cfcbb8 100644 --- a/internal/diffview/diffview.go +++ b/internal/diffview/diffview.go @@ -433,10 +433,7 @@ func (v *View) splitHeader(i int) string { // each screen line. l is nil if that side has no line. n is the line number // of l. The fill function renders an empty screen line. Use fill when the // other side has more screen lines. -func (v *View) splitSide( - l *udiff.Line, - n, digits, width int, -) (lines []string, fill func() string) { +func (v *View) splitSide(l *udiff.Line, n, digits, width int) (lines []string, fill func() string) { ls, sym, content := v.style.missingLine, symNone, "" if l != nil { ls, sym = v.kindStyle(l.Kind) @@ -496,11 +493,7 @@ func (v *View) lineNum(ls lineStyle, n any, digits int) string { // codeLines renders one source line with nums, sym, and the code in width // cells. It cuts a long line. With wrap, the line continues on more screen // lines, which show blank in place of nums and no sym. -func (v *View) codeLines( - ls lineStyle, - nums, blank, sym, content string, - width int, -) []string { +func (v *View) codeLines(ls lineStyle, nums, blank, sym, content string, width int) []string { code := v.highlightCode(strings.TrimSuffix(content, "\n"), ls.code.GetBackground()) parts := []string{code} if v.wrap { diff --git a/internal/editor/editor.go b/internal/editor/editor.go index 16d4313..a973839 100644 --- a/internal/editor/editor.go +++ b/internal/editor/editor.go @@ -51,7 +51,7 @@ func fromTemplate(template, file string, line int) Command { if !strings.Contains(template, "{file}") { script += " " + ShellQuote(file) } - return Command{script, program(template), dialectOf(template).window} + return Command{Script: script, Program: program(template), Window: dialectOf(template).window} } // fromEditor returns the command that opens file at line in an editor. @@ -74,7 +74,7 @@ func fromEditor(command, file string, line int) Command { case argFlag: args = "--line " + n + " " + f } - return Command{command + " " + args, program(command), d.window} + return Command{Script: command + " " + args, Program: program(command), Window: d.window} } // ShellQuote quotes s as one word for sh. diff --git a/internal/proc/proc.go b/internal/proc/proc.go new file mode 100644 index 0000000..e1652ac --- /dev/null +++ b/internal/proc/proc.go @@ -0,0 +1,71 @@ +// Package proc runs programs and makes their errors short and clear. +package proc + +import ( + "cmp" + "context" + "errors" + "os/exec" + "path/filepath" + "strings" + "time" +) + +// waitDelay is how long a stopped program can keep its output open. A +// child of the program can keep the output open after the program ends. +const waitDelay = time.Second + +// Command returns the command "name args...". The command stops when ctx +// is done. Its Wait returns at most waitDelay after the program ends. +func Command(ctx context.Context, name string, args ...string) *exec.Cmd { + cmd := exec.CommandContext(ctx, name, args...) + cmd.WaitDelay = waitDelay + return cmd +} + +// NotInstalled returns the error of the program name that PATH does not +// have. The text has the base name of the program. +func NotInstalled(name string) error { + return errors.New(filepath.Base(name) + " is not installed") +} + +// Error returns the error err of a run of the program name. If the +// program is not on PATH, the text is " is not installed". +// Else the text is the first line of stderr that is not blank, without a +// leading "Error: ". If stderr has no text, the text is that of err. The +// error wraps err, so a caller can examine the exit code. +func Error(name string, err error, stderr []byte) error { + if errors.Is(err, exec.ErrNotFound) { + return &runError{msg: NotInstalled(name).Error(), err: err} + } + msg := strings.TrimPrefix(firstLine(string(stderr)), "Error: ") + return &runError{msg: cmp.Or(msg, err.Error()), err: err} +} + +// runError is a failed run of a program. It has a short text and wraps +// the error of the process. +type runError struct { + msg string + err error +} + +func (e *runError) Error() string { return e.msg } +func (e *runError) Unwrap() error { return e.err } + +// firstLine returns the first line of s that is not blank, without the +// leading and trailing space. +func firstLine(s string) string { + for line := range strings.Lines(s) { + if line = strings.TrimSpace(line); line != "" { + return line + } + } + return "" +} + +// LastLine returns the last line of s that is not blank, without the +// leading and trailing space. +func LastLine(s string) string { + s = strings.TrimSpace(s) + return strings.TrimSpace(s[strings.LastIndexByte(s, '\n')+1:]) +} diff --git a/internal/proc/proc_test.go b/internal/proc/proc_test.go new file mode 100644 index 0000000..e021572 --- /dev/null +++ b/internal/proc/proc_test.go @@ -0,0 +1,58 @@ +package proc_test + +import ( + "errors" + "os/exec" + "testing" + + "github.com/rednafi/rexdiff/internal/proc" +) + +// TestError checks the text of the error of a run, and that the error +// keeps the error of the process. +func TestError(t *testing.T) { + exit := exec.CommandContext(t.Context(), "sh", "-c", "exit 3").Run() + tests := []struct { + name string + err error + stderr string + want string + }{ + {"/usr/bin/gh", exec.ErrNotFound, "", "gh is not installed"}, + {"git", exit, "\n fatal: bad\nmore\n", "fatal: bad"}, + {"rex", exit, "Error: no Rex server\n", "no Rex server"}, + {"git", exit, " \n", exit.Error()}, + } + for _, tt := range tests { + err := proc.Error(tt.name, tt.err, []byte(tt.stderr)) + if err.Error() != tt.want { + t.Errorf("Error(%q, %v, %q) = %q, want %q", tt.name, tt.err, tt.stderr, err, tt.want) + } + if !errors.Is(err, tt.err) { + t.Errorf("Error(%q, %v, %q) does not wrap %v", tt.name, tt.err, tt.stderr, tt.err) + } + } +} + +// TestLastLine checks that LastLine skips the blank lines at the end. +func TestLastLine(t *testing.T) { + tests := []struct{ in, want string }{ + {"", ""}, + {"one", "one"}, + {"one\n two \n\n", "two"}, + {"one\r\ntwo\r\n", "two"}, + } + for _, tt := range tests { + if got := proc.LastLine(tt.in); got != tt.want { + t.Errorf("LastLine(%q) = %q, want %q", tt.in, got, tt.want) + } + } +} + +// TestCommand checks that Command limits the wait for the output. +func TestCommand(t *testing.T) { + cmd := proc.Command(t.Context(), "true") + if cmd.WaitDelay <= 0 { + t.Errorf("WaitDelay = %v, want more than 0", cmd.WaitDelay) + } +} diff --git a/internal/testgit/testgit.go b/internal/testgit/testgit.go index 2c798f2..77bb0bb 100644 --- a/internal/testgit/testgit.go +++ b/internal/testgit/testgit.go @@ -157,12 +157,12 @@ func (f *Fixture) Copy(tb testing.TB, dir string) { tb.Helper() ready(tb) f.once.Do(func() { - dir, err := os.MkdirTemp(root, "fixture") + tmp, err := os.MkdirTemp(root, "fixture") if err != nil { tb.Fatal(err) } - f.build(tb, dir) - f.dir = dir + f.build(tb, tmp) + f.dir = tmp }) if f.dir == "" { tb.Fatal("testgit: the fixture fails to build") diff --git a/internal/tree/tree.go b/internal/tree/tree.go index d2ad88d..645d514 100644 --- a/internal/tree/tree.go +++ b/internal/tree/tree.go @@ -57,9 +57,18 @@ func Build(entries []Entry, toggled map[string]bool, expanded bool) []Row { for i, e := range entries { insert(root, e, i) } - var rows []Row - flatten(&rows, root, "", 0, toggled, expanded, entries) - return rows + b := builder{toggled: toggled, expanded: expanded, entries: entries} + b.flatten(root, "", 0) + return b.rows +} + +// builder makes the rows of a tree. The fields are the arguments of +// [Build]. +type builder struct { + rows []Row + toggled map[string]bool + expanded bool + entries []Entry } // insert adds entry e with index i to the tree under root. @@ -96,18 +105,16 @@ func (n *node) child(name string) *node { } // flatten adds the rows of the children of dir at path prefix. -func flatten(rows *[]Row, dir *node, prefix string, depth int, toggled map[string]bool, - expanded bool, entries []Entry, -) { +func (b *builder) flatten(dir *node, prefix string, depth int) { for _, name := range slices.Sorted(maps.Keys(dir.dirs)) { display, path, n := compress(name, join(prefix, name), dir.dirs[name]) if fname, i, ok := loneFile(n); ok { // A chain that ends in one file shows as one file row. - *rows = append(*rows, fileRow(depth, display+"/"+fname, i, entries)) + b.rows = append(b.rows, b.fileRow(depth, display+"/"+fname, i)) continue } - open := expanded != toggled[path] - *rows = append(*rows, Row{ + open := b.expanded != b.toggled[path] + b.rows = append(b.rows, Row{ Depth: depth, Name: display, Dir: path, @@ -117,11 +124,11 @@ func flatten(rows *[]Row, dir *node, prefix string, depth int, toggled map[strin Ignored: n.ignored, }) if open { - flatten(rows, n, path, depth+1, toggled, expanded, entries) + b.flatten(n, path, depth+1) } } for _, name := range slices.Sorted(maps.Keys(dir.files)) { - *rows = append(*rows, fileRow(depth, name, dir.files[name], entries)) + b.rows = append(b.rows, b.fileRow(depth, name, dir.files[name])) } } @@ -149,8 +156,8 @@ func loneFile(n *node) (name string, i int, ok bool) { } // fileRow returns the row of entry i at depth, with the name name. -func fileRow(depth int, name string, i int, entries []Entry) Row { - return Row{Depth: depth, Name: name, File: i, Ignored: entries[i].Ignored} +func (b *builder) fileRow(depth int, name string, i int) Row { + return Row{Depth: depth, Name: name, File: i, Ignored: b.entries[i].Ignored} } // join returns the path of name in the directory prefix. An empty prefix diff --git a/rex/rex.go b/rex/rex.go index 60cdeb6..189a396 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -14,7 +14,6 @@ import ( "cmp" "context" "encoding/json/v2" - "errors" "fmt" "os" "os/exec" @@ -23,6 +22,8 @@ import ( "strings" "sync" "time" + + "github.com/rednafi/rexdiff/internal/proc" ) // Client runs rex commands in one Rex session. @@ -74,9 +75,7 @@ func binFromEnv() string { // command returns the command "rex args...". func (c *Client) command(ctx context.Context, args ...string) *exec.Cmd { - cmd := exec.CommandContext(ctx, cmp.Or(c.bin, "rex"), args...) - cmd.WaitDelay = time.Second // a child of rex can keep the output open - return cmd + return proc.Command(ctx, cmp.Or(c.bin, "rex"), args...) } // runRex runs "rex args..." and returns the output. If rex fails, the @@ -86,33 +85,12 @@ func (c *Client) runRex(ctx context.Context, args ...string) ([]byte, error) { var stderr bytes.Buffer cmd.Stderr = &stderr out, err := cmd.Output() - if err == nil { - return out, nil - } - if errors.Is(err, exec.ErrNotFound) { - return nil, errors.New("rex is not installed") + if err != nil { + return nil, proc.Error("rex", err, stderr.Bytes()) } - return nil, stderrError(err, &stderr) + return out, nil } -// stderrError returns err of a run of rex with the first line of stderr. -func stderrError(err error, stderr *bytes.Buffer) error { - msg := strings.TrimSpace(stderr.String()) - msg = strings.TrimPrefix(msg, "Error: ") - msg, _, _ = strings.Cut(msg, "\n") - return &runError{msg: cmp.Or(msg, err.Error()), err: err} -} - -// runError is a failed run of rex. Its text is the first line that rex -// writes to stderr. It wraps the error of the process. -type runError struct { - msg string - err error -} - -func (e *runError) Error() string { return e.msg } -func (e *runError) Unwrap() error { return e.err } - // runRexJSON runs "rex args..." and decodes the JSON output into v. An // error of the decoder names the rex command. func (c *Client) runRexJSON(ctx context.Context, v any, args ...string) error { @@ -307,10 +285,8 @@ func (c *Client) windows(ctx context.Context) []window { // windowLabel returns the label of the window with the ID id. If no window // has this ID, it returns "". func windowLabel(windows []window, id string) string { - for _, w := range windows { - if w.ID == id { - return w.Label - } + if i := slices.IndexFunc(windows, func(w window) bool { return w.ID == id }); i >= 0 { + return windows[i].Label } return "" } @@ -454,10 +430,7 @@ func (c *Client) watchOnce(ctx context.Context, again bool, fn func(Event)) erro return fmt.Errorf("rex events: %w", err) } if err := cmd.Start(); err != nil { - if errors.Is(err, exec.ErrNotFound) { - return errors.New("rex is not installed") - } - return fmt.Errorf("rex events: %w", err) + return fmt.Errorf("rex events: %w", proc.Error("rex", err, nil)) } if again { fn(Event{Reconnect: true}) @@ -477,7 +450,7 @@ func (c *Client) watchOnce(ctx context.Context, again bool, fn func(Event)) erro return fmt.Errorf("rex events: %w", err) } if err := cmd.Wait(); err != nil { - return fmt.Errorf("rex events: %w", stderrError(err, &stderr)) + return fmt.Errorf("rex events: %w", proc.Error("rex", err, stderr.Bytes())) } return nil } diff --git a/rex/rex_test.go b/rex/rex_test.go index eab9419..a085004 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -148,7 +148,7 @@ func TestCommands(t *testing.T) { `api call -s S session.set_block_label {"block_id":"block:self","label":"rex\"diff"}`, } { if !strings.Contains(calls, want) { - t.Errorf("calls = \n%s\nwant a call %s", calls, want) + t.Errorf("calls = \n%s\nwant a call:\n%s", calls, want) } } } @@ -162,8 +162,9 @@ func blockEvent(block, name, payload string) string { } // TestWatch checks that Watch reports only the changes of the status of -// the program, with the time of Rex, and closed blocks. The fake rex stops after the events, so -// Watch reports a reconnect and then the events again. +// the program, with the time of Rex, and closed blocks. The fake rex stops +// after the events, so Watch reports a reconnect and then the events +// again. func TestWatch(t *testing.T) { c, dir := fakeRex(t) events := strings.Join([]string{ diff --git a/test/changes_test.go b/test/changes_test.go index 0bd46ec..a2318c4 100644 --- a/test/changes_test.go +++ b/test/changes_test.go @@ -6,13 +6,13 @@ import ( "slices" "strings" "testing" - "unicode/utf8" "github.com/rednafi/rexdiff/internal/testgit" ) -// TestChanges checks the Changes tab: the file list with its counts, the -// diff of a file, the next and the previous file, and a fold that opens. +// TestChanges checks the Changes tab. It checks the file list with its +// counts, the diff of a file, and the next and the previous file. It also +// checks a fold that opens. func TestChanges(t *testing.T) { tm := start(t, newRepo(t), opts{}) tm.waitFor("Changes (2)", "M a.go", "+2 -1", "M long.txt", "+2 -2", @@ -26,8 +26,8 @@ func TestChanges(t *testing.T) { tm.waitFor("x := 2") } -// TestMove checks the keys that move the cursor: the next and the -// previous change, a page, half a page, and : for a line. +// TestMove checks the keys that move the cursor. They go to the next and +// the previous change, a page, half a page, a line, and a line number. func TestMove(t *testing.T) { tm := start(t, newRepo(t), opts{height: 16}) tm.keys("f", "j", "j", "j", "j", "j", "j", "right") // all of long.txt @@ -44,6 +44,14 @@ func TestMove(t *testing.T) { } tm.keys(":", "3", "3", "enter") tm.waitCursor("line 33") + tm.keys(":", "$", "enter") + tm.waitCursor("last") + tm.keys(":", "0", "enter") + tm.waitCursor("first") + tm.keys("down") + tm.waitCursor("line 2") + tm.keys("up") + tm.waitCursor("first") } // TestScopes checks that each scope shows its changes, and the pickers of @@ -80,8 +88,8 @@ func TestFlags(t *testing.T) { "-scope", "branch", "-base", "main", "-layout", "split", "-log", log, }}) s := tm.waitFor("vs main", "Changes (3)") - if ls := lines(s, "return 1"); len(ls) != 1 || !strings.Contains(ls[0], "x := 2") { - t.Errorf("lines %q, want return 1 beside x := 2", ls) + if !sameLine(s, "return 1", "x := 2") { + t.Errorf("the screen does not show return 1 beside x := 2. It shows:\n%s", s) } tm.keys("q") if err := tm.exited(); err != nil { @@ -93,18 +101,12 @@ func TestFlags(t *testing.T) { } // TestSplit checks that | shows the old and the new lines side by side -// on a wide screen, and tells why it does not on a narrow one. +// on a wide screen. On a narrow screen, it tells why it cannot. func TestSplit(t *testing.T) { tm := start(t, newRepo(t), opts{width: 220}) tm.keys("|") - tm.waitUntil(func(s string) bool { - for _, l := range lines(s, "return 1") { - if strings.Contains(l, "x := 2") { - return true - } - } - return false - }, "show return 1 beside x := 2") + tm.waitUntil(func(s string) bool { return sameLine(s, "return 1", "x := 2") }, + "show return 1 beside x := 2") narrow := start(t, newRepo(t), opts{width: 120}) narrow.keys("|") @@ -131,9 +133,8 @@ func TestWrap(t *testing.T) { // column returns the column of text in the first line of s that has it, // or -1. func column(s, text string) int { - for _, l := range lines(s, text) { - before, _, _ := strings.Cut(l, text) - return utf8.RuneCountInString(before) + if x, _, ok := position(s, text); ok { + return x } return -1 } @@ -149,12 +150,8 @@ func TestFileList(t *testing.T) { tm.waitUntil(func(s string) bool { return column(s, "Changes (2)") > right }, "narrow the list") tm.keys("p") // bottom tm.waitUntil(func(s string) bool { - for i, l := range strings.Split(s, "\n") { - if strings.Contains(l, "Changes (2)") { - return i > 10 - } - } - return false + _, y, ok := position(s, "Changes (2)") + return ok && y > 10 }, "show the list at the bottom") tm.keys("z") tm.waitGone("Changes (2)") @@ -182,9 +179,9 @@ func TestFind(t *testing.T) { tm.waitCursor("line 3") } -// TestSettings checks that the settings change the layout, the marks of -// the changed lines, the place and the width of the file list, the -// scope, and the keys. +// TestSettings checks that the settings change the layout and the marks +// of the changed lines. They also change the place and the width of the +// file list, the scope, and the keys. func TestSettings(t *testing.T) { tm := start(t, newRepo(t), opts{width: 220, args: []string{ "-config", @@ -193,10 +190,8 @@ func TestSettings(t *testing.T) { ` "keybindings": {"next-file": ["x"]}}`, }}) s := tm.waitFor("vs main", "4 - return 1", "4 + x := 2", "x/F next/prev file") - for _, l := range lines(s, "return 1") { - if !strings.Contains(l, "x := 2") { - t.Errorf("line %q, want the old and the new line side by side", l) - } + if !sameLine(s, "return 1", "x := 2") { + t.Errorf("the screen does not show the old and the new line side by side. It shows:\n%s", s) } if c := column(s, "Changes (3)"); c < 0 || c > 5 { t.Errorf("the list starts at column %d, want it at the left", c) diff --git a/test/comment_test.go b/test/comment_test.go index 472c39b..b7218dc 100644 --- a/test/comment_test.go +++ b/test/comment_test.go @@ -2,6 +2,7 @@ package test import ( "path/filepath" + "slices" "strings" "testing" @@ -21,12 +22,19 @@ func comment(tm *term, text string) { } // TestCommentList checks that a comment shows on its line and in the -// list, that n moves to it, and that the list edits and deletes it. +// list. n and N move to it. The list edits the comment and deletes it. An +// edit with blank text keeps the comment. func TestCommentList(t *testing.T) { tm := start(t, newRepo(t), opts{}) comment(tm, "hi") tm.waitFor("comment added", "●1") - tm.keys("k", "k", "n") // n stays in the file, as in herdr-reviewr + tm.keys("k") + tm.waitCursor("func A") + tm.keys("n") // n stays in the file, as in herdr-reviewr + tm.waitCursor("return 1") + tm.keys("j", "j") + tm.waitCursor("return x") + tm.keys("N") tm.waitCursor("return 1") tm.keys("l") tm.waitFor("Comments (1)", "a.go:4 (removed) hi") @@ -34,56 +42,65 @@ func TestCommentList(t *testing.T) { tm.typed("more") tm.keys("enter") tm.waitFor("a.go:4 (removed) hi more") + // The flash of the edit hides the badge of the draft, so wait for + // the keys of the box. + tm.keys("e") + tm.waitFor("enter save") + tm.keys(slices.Repeat([]string{"bs"}, len("hi more"))...) + tm.keys("enter") + tm.waitGone("enter save") + tm.waitFor("a.go:4 (removed) hi more") tm.keys("d") // the list closes with its last comment tm.waitGone("Comments (", "💬") } -// TestCommentBox checks that the box takes more than one line, that esc -// drops a new comment, and that v and a drag on the line numbers comment -// on a range of lines. -func TestCommentBox(t *testing.T) { +// TestCommentDrag checks that a drag on the line numbers comments on a +// range of lines. +func TestCommentDrag(t *testing.T) { tm := start(t, newRepo(t), opts{}) - // The drag comes first: the flash of an added comment would hide the - // badge of the draft for flashTime. tm.drag(" 1 1 ", " 3 3 ") tm.waitFor("✎ a.go:1-3") tm.keys("esc") tm.waitGone("✎ a.go:1-3") - tm.keys("]", "c", "a", "ctrl+j", "b", "enter") - tm.waitFor("💬 a", "b") - tm.keys("j", "c", "x") +} + +// TestCommentBox checks that the box takes more than one line, and that +// esc drops a new comment. It also checks that v comments on a range of +// lines. +func TestCommentBox(t *testing.T) { + tm := start(t, newRepo(t), opts{}) + // The draft comes first, because the flash of an added comment hides + // the badge of the draft. + tm.keys("]", "j", "c", "x") tm.waitFor("✎ a.go:4 ") tm.keys("esc") tm.waitGone("✎") - tm.keys("v", "j", "c", "r", "enter", "l") + tm.keys("k", "c", "a", "ctrl+j", "b", "enter") + tm.waitFor("💬 a", "b") + tm.keys("j", "v", "j", "c", "r", "enter", "l") tm.waitFor("a.go:4-5 r") } // TestSend checks that s pastes the review into the agent and gives it -// the focus, and that S does the same. +// the focus. S does the same, and so does s in the question before a quit. func TestSend(t *testing.T) { repo := newRepo(t) rex := newRex(t, repo) tm := start(t, repo, opts{rex: rex}) tm.waitFor("send → 1 agent") - comment(tm, "hi") - tm.keys("s") - tm.waitFor("sent 1 comment to agent") - tm.waitGone("💬") - comment(tm, "again") - tm.keys("S") - tm.waitFor("sent 1 comment to agent") - calls := rex.calls(t) - for _, want := range []string{ - `block.event {"block_id":"block:pi","event":{"type":"paste",` + - `"payload":{"text":"a.go:4 (removed)\n-\treturn 1\nhi"}}}`, - `session.focus_block {"block_id":"block:pi"}`, - `"payload":{"text":"a.go:4 (removed)\n-\treturn 1\nagain"}`, - } { - if !strings.Contains(calls, want) { - t.Errorf("rex calls:\n%s\nwant a call with %s", calls, want) - } + for _, keys := range [][]string{{"s"}, {"S"}, {"q", "s"}} { + text := "hi " + strings.Join(keys, "") + comment(tm, text) + tm.waitGone("sent 1 comment") + tm.keys(keys...) + tm.waitFor("sent 1 comment to agent") + tm.waitGone("💬") + rex.expectCalls(t, `"payload":{"text":"a.go:4 (removed)\n-\treturn 1\n`+text+`"}`) } + rex.expectCalls(t, + `block.event {"block_id":"block:pi","event":{"type":"paste",`+ + `"payload":{"text":"a.go:4 (removed)\n-\treturn 1\nhi s"}}}`, + `session.focus_block {"block_id":"block:pi"}`) } // TestSendWithoutAgent checks that s outside Rex tells the user to copy. @@ -108,19 +125,29 @@ func TestAgentPicker(t *testing.T) { tm.waitFor("send to which agent?", "1 agent", "2 cc") tm.keys("2") tm.waitFor("sent 1 comment to cc") - if calls := rex.calls(t); !strings.Contains(calls, `block.event {"block_id":"block:cc"`) { - t.Errorf("rex calls:\n%s\nwant a paste to block:cc", calls) - } + rex.expectCalls(t, `block.event {"block_id":"block:cc"`) } -// TestCopy checks that y and Y copy the review and clear the comments. +// TestAgentElsewhere checks that the last-turn scope tells when no agent +// works in the repository. +func TestAgentElsewhere(t *testing.T) { + repo := newRepo(t) + rex := newRex(t, repo) + rex.write(t, "process", recorded(t, "process.json", "{{CWD}}", t.TempDir())) + tm := start(t, repo, opts{rex: rex}) + tm.keys("t") + tm.waitFor("no agent works here") +} + +// TestCopy checks that y and Y copy the review and clear the comments. y +// in the question before a quit does the same. func TestCopy(t *testing.T) { - for _, key := range []string{"y", "Y"} { - t.Run(key, func(t *testing.T) { + for _, keys := range [][]string{{"y"}, {"Y"}, {"q", "y"}} { + t.Run(strings.Join(keys, ""), func(t *testing.T) { bin := clipboard(t) tm := start(t, newRepo(t), opts{path: bin, env: clipEnv}) comment(tm, "hi") - tm.keys(key) + tm.keys(keys...) tm.waitFor("copied 1 comment") tm.waitGone("💬") waitFile(t, filepath.Join(bin, "clip"), func(s string) bool { return s == review }) @@ -128,11 +155,13 @@ func TestCopy(t *testing.T) { } } -// TestMouse checks that a click picks a file, a triple click copies a -// line, a drag on the code copies the lines, and the wheel scrolls. +// TestMouse checks that a click picks a file, and a triple click copies a +// line. It also checks that a drag on the code copies the lines, and that +// the wheel scrolls. func TestMouse(t *testing.T) { - // The copy takes longer than the time between the clicks of a triple - // click. The triple click still copies the line. + // The fake pbcopy is slow, as a real tool can be. Its copy takes longer + // than the time between the clicks of a triple click. The triple click + // still copies the line. slow := `sleep 0.5; cat > "${0%/*}/clip"` + "\n" bin := tools(t, map[string]string{"pbcopy": slow, "wl-copy": slow}) clip := filepath.Join(bin, "clip") @@ -179,7 +208,8 @@ func TestQuit(t *testing.T) { } // TestCommentStays checks that a comment stays when the agent edits the -// file. As in herdr-reviewr, it keeps its line number. +// file. As in herdr-reviewr, it keeps its line number. When the file +// leaves the changes, the list marks the comment stale. func TestCommentStays(t *testing.T) { repo := newRepo(t) tm := start(t, repo, opts{}) @@ -190,21 +220,31 @@ func TestCommentStays(t *testing.T) { tm.waitFor("It is new.") tm.keys("l") tm.waitFor("a.go:4 hi") + tm.waitGone("stale") + tm.keys("esc") + tm.waitGone("Comments (") + testgit.Git(t, repo, "checkout", "--", "a.go") + tm.waitFor("Changes (1)") + tm.keys("l") + tm.waitUntil(func(s string) bool { return sameLine(s, "a.go:4 hi", "stale") }, + "mark the comment stale") } // TestEditorInPane checks that e opens a terminal editor at the line, in -// a new Rex pane. +// a new Rex pane. An editor that rexdiff does not know also opens there. func TestEditorInPane(t *testing.T) { - repo := newRepo(t) - rex := newRex(t, repo) - bin := tools(t, map[string]string{"nvim": ""}) - tm := start(t, repo, opts{rex: rex, path: bin, env: []string{"EDITOR=nvim"}}) - tm.keys("]", "j", "e") - want := "split -s S -b block:self --cwd " + repo + " -- sh -c nvim +4 '" + - filepath.Join(repo, "a.go") + "'" - eventually(t, func() bool { return strings.Contains(rex.calls(t), want) }, func() string { - return "rex calls:\n" + rex.calls(t) + "\nwant " + want - }) + for _, editor := range []string{"nvim", "myed"} { + t.Run(editor, func(t *testing.T) { + repo := newRepo(t) + rex := newRex(t, repo) + bin := tools(t, map[string]string{editor: ""}) + tm := start(t, repo, opts{rex: rex, path: bin, env: []string{"EDITOR=" + editor}}) + tm.keys("]", "j", "e") + rex.expectCalls(t, "split -s S -b block:self --cwd "+repo+" -- sh -c "+ + editor+" +4 '"+filepath.Join(repo, "a.go")+"'") + tm.waitFor("opened a.go") + }) + } } // TestWindowEditor checks that e starts a window editor at the line, and diff --git a/test/fake_test.go b/test/fake_test.go index 80e51d4..44fcbf7 100644 --- a/test/fake_test.go +++ b/test/fake_test.go @@ -112,8 +112,19 @@ func (r *fakeRex) addBlock(t *testing.T, block, label string) { func (r *fakeRex) addAgent(t *testing.T, block, label, app string) { t.Helper() r.addBlock(t, block, label) - r.write(t, "status."+block, recorded(t, "status.json", "{{STATE}}", "idle", "{{APP}}", app, - "{{AT}}", time.Now().Format(time.RFC3339Nano))) + r.status(t, block, app, "idle") +} + +// status sets the state of the agent app in block. It returns the values +// for the recorded files. +func (r *fakeRex) status(t *testing.T, block, app, state string) []string { + t.Helper() + values := []string{ + "{{ID}}", block, "{{STATE}}", state, "{{APP}}", app, + "{{AT}}", time.Now().Format(time.RFC3339Nano), + } + r.write(t, "status."+block, recorded(t, "status.json", values...)) + return values } // write writes content to the file name of the fake. @@ -124,6 +135,22 @@ func (r *fakeRex) write(t *testing.T, name, content string) { } } +// add adds the line to the file name of the fake. +func (r *fakeRex) add(t *testing.T, name, line string) { + t.Helper() + f, err := os.OpenFile(filepath.Join(r.dir, name), os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0o644) + if err != nil { + t.Fatal(err) + } + if _, err := f.WriteString(line + "\n"); err != nil { + _ = f.Close() + t.Fatal(err) + } + if err := f.Close(); err != nil { + t.Fatal(err) + } +} + // calls returns the calls of rex, one a line. func (r *fakeRex) calls(t *testing.T) string { t.Helper() @@ -134,25 +161,21 @@ func (r *fakeRex) calls(t *testing.T) string { return string(b) } +// expectCalls waits until the calls of rex have each of wants. +func (r *fakeRex) expectCalls(t *testing.T, wants ...string) { + t.Helper() + var calls string + poll(t, func() bool { calls = r.calls(t); return hasAll(calls, wants...) }, func() string { + return "rex calls = \n" + calls + "\nwant calls with:\n" + strings.Join(wants, "\n") + }) +} + // setState sets the state of the agent pi and sends the event of the // change. func (r *fakeRex) setState(t *testing.T, state string) { t.Helper() - values := []string{ - "{{ID}}", "block:pi", "{{STATE}}", state, "{{APP}}", "pi", - "{{AT}}", time.Now().Format(time.RFC3339Nano), - } - r.write(t, "status.block:pi", recorded(t, "status.json", values...)) - f, err := os.OpenFile(filepath.Join(r.dir, "events"), os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0o644) - if err != nil { - t.Fatal(err) - } - if _, err := f.WriteString(recorded(t, "event.json", values...) + "\n"); err != nil { - t.Fatal(err) - } - if err := f.Close(); err != nil { - t.Fatal(err) - } + values := r.status(t, "block:pi", "pi", state) + r.add(t, "events", recorded(t, "event.json", values...)) } // tools writes a fake program for each name in bodies, with its body, to diff --git a/test/files_test.go b/test/files_test.go index 43cb23e..2f6612f 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -2,6 +2,7 @@ package test import ( "os" + "os/exec" "path/filepath" "strings" "testing" @@ -136,11 +137,25 @@ EOF }) } -// TestNoPR checks that the PR tab tells why it has no pull request. +// TestNoPR checks that the PR tab tells why it has no pull request: the +// repository has no remote, or the tool of the remote is not installed. func TestNoPR(t *testing.T) { tm := start(t, newRepo(t), opts{}) tm.keys("3") - tm.waitUntil(func(s string) bool { - return strings.Contains(s, "no git remote") - }, "tell why there is no pull request") + tm.waitFor("no git remote") + + repo := newRepo(t) + testgit.Git(t, repo, "remote", "add", "origin", "https://github.com/o/r.git") + // PATH has only git, so it has no gh. + git, err := exec.LookPath("git") + if err != nil { + t.Fatal(err) + } + bin := t.TempDir() + if err := os.Symlink(git, filepath.Join(bin, "git")); err != nil { + t.Fatal(err) + } + tm = start(t, repo, opts{env: []string{"PATH=" + bin}}) + tm.keys("3") + tm.waitFor("gh is not installed") } diff --git a/test/rex_test.go b/test/rex_test.go index 8a85365..414d05b 100644 --- a/test/rex_test.go +++ b/test/rex_test.go @@ -65,14 +65,9 @@ func (r *realRex) write(block, data string) { func (r *realRex) waitFor(block string, texts ...string) { r.t.Helper() var s string - eventually(r.t, func() bool { + poll(r.t, func() bool { s = r.run("capture", "-s", r.session, "-b", block) - for _, text := range texts { - if !strings.Contains(s, text) { - return false - } - } - return true + return hasAll(s, texts...) }, func() string { return "block " + block + " does not show " + strings.Join(texts, ", ") + ":\n" + s }) } @@ -90,8 +85,8 @@ func TestRealRex(t *testing.T) { r := &realRex{t: t, bin: bin, session: "rexdiff-test-" + strconv.Itoa(os.Getpid())} r.run("new", r.session, "--cwd", repo, "--", "sh") t.Cleanup(func() { - // t.Context is done in a cleanup. - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + // t.Context is done in a cleanup, so drop its cancel. + ctx, cancel := context.WithTimeout(context.WithoutCancel(t.Context()), 10*time.Second) defer cancel() kill := exec.CommandContext(ctx, bin, "--autostart=false", "kill", r.session) kill.Env = append(os.Environ(), "HOME="+home) @@ -104,7 +99,7 @@ func TestRealRex(t *testing.T) { r.run("split", "-s", r.session, "-b", shell, "--cwd", repo, "--shell=none", "--", binary(t), "-config", `{"focus_agent_after_send": false}`, repo) var pane string - eventually(t, func() bool { + poll(t, func() bool { for label, id := range r.blocks() { if label != "agent" { pane = id diff --git a/test/rexdiff_test.go b/test/rexdiff_test.go index 27d5eed..e268036 100644 --- a/test/rexdiff_test.go +++ b/test/rexdiff_test.go @@ -65,7 +65,8 @@ var userEnv = []string{ // opts are the options of a rexdiff run. type opts struct { - args []string // the flags; start adds the repo + args []string // the flags. start adds the repo. + bin string // the rexdiff to run, or "" for the one of binary width uint16 // 0 means 160 height uint16 // 0 means 40 rex *fakeRex // nil runs rexdiff outside Rex @@ -77,22 +78,26 @@ type opts struct { type term struct { t *testing.T emu *vt.Emulator - mu sync.Mutex // guards emu - wait func() error // waits for rexdiff once, and keeps its error - done chan struct{} // closed when the screen gets no more output + mu sync.Mutex // guards emu + wait func() error // waits for rexdiff once, and keeps its error + // changed gets a value after each write to the screen. It holds one + // value, so a write that comes before a wait is not lost. + changed chan struct{} + done chan struct{} // closed when the screen gets no more output } +// waitTime is how long a test waits for the screen or for a file. +const waitTime = 15 * time.Second + // start runs rexdiff on repo in a new terminal. The test stops it at the // end. func start(t *testing.T, repo string, o opts) *term { - t.Helper() - return startBin(t, binary(t), repo, o) -} - -// startBin is start with the rexdiff at bin. -func startBin(t *testing.T, bin, repo string, o opts) *term { t.Helper() w, h := cmp.Or(o.width, 160), cmp.Or(o.height, 40) + bin := o.bin + if bin == "" { + bin = binary(t) + } cmd := exec.CommandContext(t.Context(), bin, append(o.args, repo)...) cmd.Dir = repo // A stop lets rexdiff remove its files before it exits. @@ -118,7 +123,13 @@ func startBin(t *testing.T, bin, repo string, o opts) *term { if err != nil { t.Fatal(err) } - tm := &term{t: t, emu: vt.NewEmulator(int(w), int(h)), wait: sync.OnceValue(cmd.Wait), done: make(chan struct{})} + tm := &term{ + t: t, + emu: vt.NewEmulator(int(w), int(h)), + wait: sync.OnceValue(cmd.Wait), + changed: make(chan struct{}, 1), + done: make(chan struct{}), + } go func() { defer close(tm.done) buf := make([]byte, 32<<10) @@ -128,15 +139,19 @@ func startBin(t *testing.T, bin, repo string, o opts) *term { tm.mu.Lock() _, _ = tm.emu.Write(buf[:n]) tm.mu.Unlock() + select { + case tm.changed <- struct{}{}: + default: // the wait has a value that it does not take yet + } } if err != nil { return } } }() - // The input of rexdiff comes from the emulator, as from a terminal: - // the keys and the mouse of the test, and the answers to the queries - // of rexdiff, for example for the colours. + // The input of rexdiff comes from the emulator, as from a terminal. It + // has the keys and the mouse of the test. It also has the answers to + // the queries of rexdiff, for example for the colours. input := make(chan struct{}) go func() { defer close(input) @@ -200,19 +215,27 @@ var keyCodes = map[string]vt.KeyPressEvent{ "ctrl+u": {Code: 'u', Mod: vt.ModCtrl}, "ctrl+f": {Code: 'f', Mod: vt.ModCtrl}, "ctrl+j": {Code: 'j', Mod: vt.ModCtrl}, + "up": {Code: vt.KeyUp}, + "down": {Code: vt.KeyDown}, + "bs": {Code: vt.KeyBackspace}, } // at returns the column and the line of text on the screen, from 0. func (tm *term) at(text string) (x, y int) { tm.t.Helper() - s := tm.waitFor(text) + x, y, _ = position(tm.waitFor(text), text) + return x, y +} + +// position returns the column and the line of the first text in s, from +// 0. ok is false if s does not have text. +func position(s, text string) (x, y int, ok bool) { for i, l := range strings.Split(s, "\n") { - if before, _, ok := strings.Cut(l, text); ok { - return utf8.RuneCountInString(before), i + if before, _, found := strings.Cut(l, text); found { + return utf8.RuneCountInString(before), i, true } } - tm.t.Fatalf("the screen does not show %s. It shows:\n%s", text, s) - return 0, 0 + return 0, 0, false } // mouse sends the mouse event m, as the terminal encodes it. @@ -256,62 +279,88 @@ func (tm *term) wheel(text string, n int) { // screen. func (tm *term) waitFor(texts ...string) string { tm.t.Helper() - return tm.waitUntil(func(s string) bool { - for _, text := range texts { - if !strings.Contains(s, text) { - return false - } - } - return true - }, "show "+strings.Join(texts, ", ")) + return tm.waitUntil(func(s string) bool { return hasAll(s, texts...) }, + "show "+strings.Join(texts, ", ")) } // waitGone waits until the screen shows none of texts. func (tm *term) waitGone(texts ...string) string { tm.t.Helper() - return tm.waitUntil(func(s string) bool { - for _, text := range texts { - if strings.Contains(s, text) { - return false - } + return tm.waitUntil(func(s string) bool { return !hasAny(s, texts...) }, + "not show "+strings.Join(texts, ", ")) +} + +// hasAll reports whether s has each of texts. +func hasAll(s string, texts ...string) bool { + return !slices.ContainsFunc(texts, func(t string) bool { return !strings.Contains(s, t) }) +} + +// hasAny reports whether s has one of texts. +func hasAny(s string, texts ...string) bool { + return slices.ContainsFunc(texts, func(t string) bool { return strings.Contains(s, t) }) +} + +// sameLine reports whether a line of s has each of texts. +func sameLine(s string, texts ...string) bool { + for l := range strings.Lines(s) { + if hasAll(l, texts...) { + return true } - return true - }, "not show "+strings.Join(texts, ", ")) + } + return false } // waitCursor waits until the line of the cursor shows text. func (tm *term) waitCursor(text string) { tm.t.Helper() - tm.waitUntil(func(s string) bool { - for _, l := range lines(s, "▶") { - if strings.Contains(l, text) { - return true - } - } - return false - }, "put the cursor on "+text) + tm.waitUntil(func(s string) bool { return sameLine(s, "▶", text) }, + "put the cursor on "+text) } // waitUntil waits until ok is true for the screen, and returns the screen. +// It checks the screen after each write to it. func (tm *term) waitUntil(ok func(string) bool, what string) string { tm.t.Helper() - var s string - eventually(tm.t, func() bool { s = tm.screen(); return ok(s) }, func() string { - return "the screen does not " + what + ". It shows:\n" + s - }) - return s + timeout := time.NewTimer(waitTime) + defer timeout.Stop() + for { + s := tm.screen() + if ok(s) { + return s + } + select { + case <-tm.changed: + case <-tm.done: + // rexdiff writes no more. The last write can come after the + // check. + if s = tm.screen(); ok(s) { + return s + } + tm.t.Fatalf("rexdiff stops, and the screen does not %s. It shows:\n%s", what, s) + case <-timeout.C: + tm.t.Fatalf("the screen does not %s. It shows:\n%s", what, s) + } + } } -// eventually waits until ok is true. It fails the test with the text of -// why after a while. -func eventually(t *testing.T, ok func() bool, why func() string) { +// pollTime is the time between two checks of poll. +const pollTime = 20 * time.Millisecond + +// poll checks again and again until ok is true. It is for the files that +// the fake tools write, and for other programs, because they give no +// event. It fails the test with the text of why after waitTime. +func poll(t *testing.T, ok func() bool, why func() string) { t.Helper() - deadline := time.Now().Add(15 * time.Second) + timeout := time.NewTimer(waitTime) + defer timeout.Stop() + tick := time.NewTicker(pollTime) + defer tick.Stop() for !ok() { - if time.Now().After(deadline) { + select { + case <-tick.C: + case <-timeout.C: t.Fatal(why()) } - time.Sleep(20 * time.Millisecond) } } @@ -319,7 +368,7 @@ func eventually(t *testing.T, ok func() bool, why func() string) { func waitFile(t *testing.T, path string, content func(string) bool) string { t.Helper() var s string - eventually(t, func() bool { + poll(t, func() bool { b, _ := os.ReadFile(path) s = string(b) return content(s) @@ -335,7 +384,7 @@ func (tm *term) exited() error { select { case err := <-errc: return err - case <-time.After(15 * time.Second): + case <-time.After(waitTime): tm.t.Fatalf("rexdiff does not exit. The screen shows:\n%s", tm.screen()) return nil } diff --git a/test/testdata/script/cli.txt b/test/testdata/script/cli.txt index 73dc38b..51cab7a 100644 --- a/test/testdata/script/cli.txt +++ b/test/testdata/script/cli.txt @@ -13,3 +13,11 @@ stderr -count=1 'flag provided but not defined: -nope' stderr '^rexdiff: config: unknown key "layuot"$' ! exec rexdiff -check -config '{"layout": "sideways"}' stderr '^rexdiff: config: invalid value for layout: expected one of unified, split, not "sideways"$' +! exec rexdiff -check -config '{"keybindings": {"next-file": ["x"], "prev-file": ["x"]}}' +stderr '^rexdiff: config: invalid value for keybindings: "x" is bound to both "next-file" and "prev-file"$' + +# A bad value of a flag names the flag, as the settings do. +! exec rexdiff -layout sideways repo +stderr '^rexdiff: invalid value for -layout: expected one of unified, split, not "sideways"$' +! exec rexdiff -scope all repo +stderr '^rexdiff: invalid value for -scope: expected one of uncommitted, branch, last-turn, not "all"$' diff --git a/test/update_test.go b/test/update_test.go index 02239da..7d73562 100644 --- a/test/update_test.go +++ b/test/update_test.go @@ -9,6 +9,7 @@ import ( "encoding/hex" "net/http" "net/http/httptest" + "os" "os/exec" "runtime" "strings" @@ -20,7 +21,10 @@ import ( // does. It returns the address of the latest release. func release(t *testing.T, tag, bin string) string { t.Helper() - content := read(t, bin) + content, err := os.ReadFile(bin) + if err != nil { + t.Fatal(err) + } var b bytes.Buffer gz := gzip.NewWriter(&b) tw := tar.NewWriter(gz) @@ -28,7 +32,7 @@ func release(t *testing.T, tag, bin string) string { if err := tw.WriteHeader(hdr); err != nil { t.Fatal(err) } - if _, err := tw.Write([]byte(content)); err != nil { + if _, err := tw.Write(content); err != nil { t.Fatal(err) } if err := tw.Close(); err != nil { @@ -38,9 +42,10 @@ func release(t *testing.T, tag, bin string) string { t.Fatal(err) } name := "rexdiff-" + tag + "-" + runtime.GOOS + "-" + runtime.GOARCH + ".tar.gz" - sum := sha256.Sum256(b.Bytes()) + archive := b.Bytes() + sum := sha256.Sum256(archive) files := map[string][]byte{ - "/" + name: b.Bytes(), + "/" + name: archive, "/sha256sums.txt": []byte(hex.EncodeToString(sum[:]) + " " + name + "\n"), } srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { @@ -73,20 +78,17 @@ func TestUpdate(t *testing.T) { t.Fatal(err) } latest := release(t, "v0.2.0", next) - tm := startBin(t, bin, newRepo(t), opts{env: []string{"REXDIFF_LATEST_URL=" + latest}}) + tm := start(t, newRepo(t), opts{bin: bin, env: []string{"REXDIFF_LATEST_URL=" + latest}}) tm.waitFor("rexdiff v0.2.0 is out: press U or click here to update") comment(tm, "hi") tm.keys("U") - var version string - eventually(t, func() bool { - out, _ := exec.CommandContext(t.Context(), bin, "-version").Output() - version = strings.TrimSpace(string(out)) - return version == "v0.2.0" - }, func() string { return "rexdiff -version is " + version + ", want v0.2.0" }) // The new rexdiff is the latest, so it shows no update. It has the // comment, but not the message of the old one. tm.waitUntil(func(s string) bool { - return strings.Contains(s, "💬 hi") && !strings.Contains(s, "is out") && - !strings.Contains(s, "updating") && !strings.Contains(s, "comment added") + return strings.Contains(s, "💬 hi") && !hasAny(s, "is out", "updating", "comment added") }, "show the comment in the new rexdiff") + out, err := exec.CommandContext(t.Context(), bin, "-version").Output() + if got := strings.TrimSpace(string(out)); err != nil || got != "v0.2.0" { + t.Errorf("rexdiff -version = %q (%v), want v0.2.0", got, err) + } } diff --git a/test/upgrade_test.go b/test/upgrade_test.go index 1670fcb..843ce7d 100644 --- a/test/upgrade_test.go +++ b/test/upgrade_test.go @@ -33,11 +33,9 @@ func TestUpgradeAtStart(t *testing.T) { t.Fatal(err) } if got := read(t, lua); got != edited { - t.Errorf("rexdiff.lua after the start:\n%s\nwant the new code under the settings:\n%s", got, edited) - } - if calls := rex.calls(t); !strings.Contains(calls, "config reload") { - t.Errorf("rex calls:\n%s\nwant a config reload", calls) + t.Errorf("rexdiff.lua after the start = \n%s\nwant the new code under the settings:\n%s", got, edited) } + rex.expectCalls(t, "config reload") const mark = "-- rexdiff code below. Install and upgrades replace it. Do not edit this line.\n" noMark := strings.Replace(edited, mark, "", 1) @@ -45,7 +43,7 @@ func TestUpgradeAtStart(t *testing.T) { tm = start(t, repo, opts{rex: rex, env: env}) tm.waitFor("rexdiff.lua upgrade failed") if got := read(t, lua); got != noMark { - t.Errorf("rexdiff.lua without the line changes to:\n%s", got) + t.Errorf("rexdiff.lua without the line = \n%s\nwant:\n%s", got, noMark) } } diff --git a/tui/config.go b/tui/config.go index c879f4f..12f4ca8 100644 --- a/tui/config.go +++ b/tui/config.go @@ -373,9 +373,9 @@ func invalid(key, want, value string) error { // onlyPlaceholders reports whether each { in command opens one of the // known placeholders, for example {file}. func onlyPlaceholders(command string, known ...string) bool { - for _, s := range strings.Split(command, "{")[1:] { - name, _, ok := strings.Cut(s, "}") - if !ok || !slices.Contains(known, name) { + for _, rest, ok := strings.Cut(command, "{"); ok; _, rest, ok = strings.Cut(rest, "{") { + name, _, closed := strings.Cut(rest, "}") + if !closed || !slices.Contains(known, name) { return false } } diff --git a/tui/editor.go b/tui/editor.go index 25b0f28..f576465 100644 --- a/tui/editor.go +++ b/tui/editor.go @@ -11,11 +11,11 @@ import ( "runtime" "strings" "syscall" - "time" tea "charm.land/bubbletea/v2" "github.com/rednafi/rexdiff/internal/editor" + "github.com/rednafi/rexdiff/internal/proc" ) // openEditor opens the file at path, at line. It uses the editor of the @@ -41,7 +41,7 @@ func (m *model) openEditor(path string, line int) tea.Cmd { return nil } if _, err := exec.LookPath(ed.Program); err != nil { - m.flash(ed.Program + " is not installed") + m.flash(proc.NotInstalled(ed.Program).Error()) return nil } m.log.Debug("editor", "command", ed.Script, "window", ed.Window) @@ -67,7 +67,7 @@ func (m *model) onSplit(msg splitMsg) tea.Cmd { m.flash("opened " + msg.path) return nil } - m.log.Debug("editor split", "err", msg.err) + m.log.Debug("editor split failed", "err", msg.err) return m.runHere(msg.path, msg.script) } @@ -101,8 +101,6 @@ func detach(what, name string, args ...string) (tea.Cmd, error) { var stderr bytes.Buffer cmd.Stderr = &stderr cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true} - // A child of the program can keep stderr open after the program ends. - cmd.WaitDelay = time.Second if err := cmd.Start(); err != nil { return nil, err } @@ -111,9 +109,8 @@ func detach(what, name string, args ...string) (tea.Cmd, error) { if err == nil || errors.Is(err, exec.ErrWaitDelay) { return nil } - s := strings.TrimSpace(stderr.String()) - if last := s[strings.LastIndexByte(s, '\n')+1:]; last != "" { - err = fmt.Errorf("%w: %s", err, last) + if last := proc.LastLine(stderr.String()); last != "" { + err = fmt.Errorf("%s: %w", last, err) } return detachedMsg{what: what, err: err} }, nil @@ -148,9 +145,10 @@ func openURL(cfg config, url string) (tea.Cmd, error) { return detach("open", opener, url) } -// command returns the command for an editor or a URL opener. The command -// has no context, because the program must not stop when rexdiff stops. -// For example, a kill of the editor can lose the edits of the user. +// command returns the command for an editor or a URL opener. The context +// of the command has no end, because the program must not stop when +// rexdiff stops. For example, a kill of the editor can lose the edits of +// the user. func command(name string, args ...string) *exec.Cmd { - return exec.Command(name, args...) //nolint:noctx // see the doc comment + return proc.Command(context.Background(), name, args...) } diff --git a/tui/find.go b/tui/find.go index 50574e8..f591dd0 100644 --- a/tui/find.go +++ b/tui/find.go @@ -1,9 +1,5 @@ package tui -// This file has the find band of herdr-reviewr. The band opens at the -// bottom of the screen and stays open. Enter or down goes to the next hit, -// up goes to the previous hit, and esc closes the band. - import ( "fmt" "strconv" @@ -17,6 +13,10 @@ import ( "github.com/rednafi/rexdiff/internal/search" ) +// This file has the find band of herdr-reviewr. The band opens at the +// bottom of the screen and stays open. Enter or down goes to the next hit, +// up goes to the previous hit, and esc closes the band. + // findState is the query of the find band. The band is open in modeFind. type findState struct { input textinput.Model diff --git a/tui/keys.go b/tui/keys.go index f1c9354..8df4e7f 100644 --- a/tui/keys.go +++ b/tui/keys.go @@ -255,10 +255,10 @@ func (k *keyMap) pairs() [][]*key.Binding { } } -// namedKeys are the names of the keys that are not one character, as -// herdr-reviewr spells them, with the names that bubbletea uses and the -// labels on the screen. -var namedKeys = []struct{ name, tea, label string }{ +// namedKeys are the keys that are not one character. Each has its name as +// herdr-reviewr spells it, its bubbletea name, and its label on the +// screen. +var namedKeys = []namedKey{ {"left", "left", "←"}, {"right", "right", "→"}, {"up", "up", "↑"}, @@ -267,16 +267,30 @@ var namedKeys = []struct{ name, tea, label string }{ {"pagedown", "pgdown", "PageDown"}, } +// namedKey is a key that is not one character. +type namedKey struct{ name, tea, label string } + +// teaKey returns the named key whose bubbletea name is name without its +// modifier, and the modifier. ok is false if no named key has this name. +func teaKey(name string) (mod string, k namedKey, ok bool) { + mod, rest := cutModifier(name) + i := slices.IndexFunc(namedKeys, func(k namedKey) bool { return k.tea == rest }) + if i < 0 { + return mod, namedKey{}, false + } + return mod, namedKeys[i], true +} + // keyName returns the bubbletea name of the key s of the keybindings -// setting. s is one character or a named key, alone or after "ctrl+" or -// "alt+", as in herdr-reviewr. The bubbletea names "pgup" and "pgdown" are -// also valid. ok is false if s is not a valid key. +// setting. It is the inverse of [herdrReviewrKeyName]. s is one character +// or a named key, alone or after "ctrl+" or "alt+", as in herdr-reviewr. +// The bubbletea names "pgup" and "pgdown" are also valid. ok is false if s +// is not a valid key. func keyName(s string) (name string, ok bool) { mod, rest := cutModifier(s) - for _, k := range namedKeys { - if rest == k.name || rest == k.tea { - return mod + k.tea, true - } + named := func(k namedKey) bool { return rest == k.name || rest == k.tea } + if i := slices.IndexFunc(namedKeys, named); i >= 0 { + return mod + namedKeys[i].tea, true } r, size := utf8.DecodeRuneInString(rest) if size == 0 || size != len(rest) || r == utf8.RuneError || unicode.IsSpace(r) || @@ -287,13 +301,11 @@ func keyName(s string) (name string, ok bool) { } // herdrReviewrKeyName returns the bubbletea key name as herdr-reviewr -// spells it, for example "pageup" for "pgup". +// spells it, for example "pageup" for "pgup". It is the inverse of +// [keyName]. func herdrReviewrKeyName(name string) string { - mod, rest := cutModifier(name) - for _, k := range namedKeys { - if rest == k.tea { - return mod + k.name - } + if mod, k, ok := teaKey(name); ok { + return mod + k.name } return name } @@ -403,11 +415,8 @@ func firstKey(b key.Binding) string { if len(ks) == 0 { return "" } - mod, rest := cutModifier(ks[0]) - for _, k := range namedKeys { - if rest == k.tea { - return mod + k.label - } + if mod, k, ok := teaKey(ks[0]); ok { + return mod + k.label } return ks[0] } diff --git a/tui/model.go b/tui/model.go index 2990a8a..eeec52a 100644 --- a/tui/model.go +++ b/tui/model.go @@ -212,7 +212,6 @@ type model struct { bg, fg color.Color red color.Color // the ANSI red of the terminal, or nil green color.Color // the ANSI green of the terminal, or nil - dark bool ticks int // watch tells when the files or the refs change, or is nil. If it is @@ -398,7 +397,7 @@ type ( err error } grepMsg struct { - gen int // the search whose result shows; others are stale + gen int // the search whose result shows. Other searches are stale. hits []vcs.Match more bool // git finds more matches than hits has err error @@ -491,7 +490,7 @@ func (m *model) reloadIfChanged() { m.loads.want = true } // it runs in a command, one at a time. A request during a reload starts // one more reload after it. type reloads struct { - gen int // the reload whose result shows; others are stale + gen int // the reload whose result shows. Other reloads are stale. running bool // the reload gen runs want bool // a reload is due force bool // the due reload shows the changes even if the trees are the same @@ -765,7 +764,7 @@ func (m *model) handleMsg(msg tea.Msg) tea.Cmd { cmd = tea.Batch(tick(tickInterval), m.onTick()) case tea.BackgroundColorMsg: if !sameColor(m.bg, msg.Color) { - m.bg, m.dark = msg.Color, msg.IsDark() + m.bg = msg.Color m.rerender() } case tea.ForegroundColorMsg: diff --git a/tui/nav.go b/tui/nav.go index 10eb6e8..af0a050 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -378,7 +378,7 @@ type openFolds struct { Ranges [][2]int `json:"ranges"` // the first and the last line of each range } -// hash returns the FNV-1a hash of s. +// hash returns the 64-bit FNV-1a hash of s. func hash(s string) uint64 { h := fnv.New64a() _, _ = h.Write([]byte(s)) // a hash.Hash does not fail @@ -505,8 +505,9 @@ func (m *model) stepChange(d int) { p.cur = max(changeRow(p.rows, from, d), 0) } -// changeRow returns the first row of the next (d = 1) or the previous -// (d = -1) block of changed rows from row from, or -1. +// changeRow returns the first row of a block of changed rows, or -1. It +// starts at row from and goes in the direction d. A d of 1 finds the next +// block, and a d of -1 finds the previous block. func changeRow(rows []diff.Row, from, d int) int { isChange := func(i int) bool { k := rows[i].Kind diff --git a/tui/overlay.go b/tui/overlay.go index 9544920..af27fe9 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -186,14 +186,14 @@ func (m *model) updateOverlay(msg tea.KeyPressMsg) tea.Cmd { case overlaySearch: pv := ov.search.preview switch { - case key.Matches(msg, overlayKeys.Flip): + case key.Matches(msg, k.Flip): ov.search.code = !ov.search.code ov.showSearch() return nil - case key.Matches(msg, overlayKeys.PreviewDown) && pv != nil: + case key.Matches(msg, k.PreviewDown) && pv != nil: pv.scroll(pickerPage) return nil - case key.Matches(msg, overlayKeys.PreviewUp) && pv != nil: + case key.Matches(msg, k.PreviewUp) && pv != nil: pv.scroll(-pickerPage) return nil } diff --git a/tui/pr.go b/tui/pr.go index b0c1eaa..6c6d0d1 100644 --- a/tui/pr.go +++ b/tui/pr.go @@ -1,8 +1,5 @@ package tui -// The PR tab shows the pull request of the branch. The tab cannot change -// the pull request. - import ( "context" "errors" @@ -17,6 +14,9 @@ import ( "github.com/rednafi/rexdiff/vcs" ) +// The PR tab shows the pull request of the branch. The tab cannot change +// the pull request. + // The times of the reads of the pull request, as in herdr-reviewr. const ( // prPoll is the time between two reads while the PR tab shows. A @@ -28,7 +28,7 @@ const ( // prFetch follows the reads of the pull request. type prFetch struct { - gen int // the read whose result shows; others are stale + gen int // the read whose result shows. Other reads are stale. inFlight bool // the read gen runs polled time.Time // the last request, for prPoll cancel context.CancelFunc diff --git a/tui/preview.go b/tui/preview.go index 5fecfbd..19b2937 100644 --- a/tui/preview.go +++ b/tui/preview.go @@ -58,8 +58,8 @@ func (m *model) searchLines(inner int) (lines []string, listY int) { return lines, listY } -// splitAxis returns the part of n that pct percent takes, with at least -// 3 for each part if n has room, as herdr-reviewr splits a pane. +// splitAxis returns the part of n that pct percent takes, as +// herdr-reviewr splits a pane. Each part gets at least 3 if n has room. func splitAxis(n, pct int) int { if n < 6 { return n / 2 diff --git a/tui/release.go b/tui/release.go index 3bc2b42..8251dbe 100644 --- a/tui/release.go +++ b/tui/release.go @@ -1,10 +1,5 @@ package tui -// The footer tells the user about a newer release. A key or a click -// starts the update to it in the background. Then rexdiff starts again in -// the same pane, with the comments and the place of the user. The update -// package installs the release. This file shows the state of the update. - import ( "context" "fmt" @@ -14,6 +9,11 @@ import ( "github.com/rednafi/rexdiff/update" ) +// The footer tells the user about a newer release. A key or a click +// starts the update to it in the background. Then rexdiff starts again in +// the same pane, with the comments and the place of the user. The update +// package installs the release. This file shows the state of the update. + // Updater finds and installs releases. *update.Updater implements it. type Updater interface { // Latest returns the latest release, and whether it is newer. diff --git a/tui/render.go b/tui/render.go index adad9b0..28d74a3 100644 --- a/tui/render.go +++ b/tui/render.go @@ -278,7 +278,7 @@ func (m *model) refreshViewer() { p.path = "" p.set([]string{dimStyle.Render(" " + note)}, nil) case err != nil: - m.log.Debug("read file", "path", path, "err", err) + m.log.Warn("read file failed", "path", path, "err", err) p.path = "" p.set([]string{dimStyle.Render(" could not read this file")}, nil) case m.rendered && isMarkdown(path): @@ -293,7 +293,7 @@ func (m *model) refreshViewer() { // because a new one is slow to make. func (m *model) markdown(wrap int) *glamour.TermRenderer { style := "dark" - if m.bg != nil && !m.dark { + if !m.dark() { style = "light" } md := &m.md diff --git a/tui/resume.go b/tui/resume.go index 1d4b0c6..f1e14a3 100644 --- a/tui/resume.go +++ b/tui/resume.go @@ -1,9 +1,5 @@ package tui -// After an update, rexdiff starts again in the same terminal. The old -// program saves the comments and the place of the user in a file. The new -// program reads the file, so that the user continues from the same place. - import ( "encoding/json/v2" "os" @@ -14,6 +10,10 @@ import ( "github.com/rednafi/rexdiff/vcs" ) +// After an update, rexdiff starts again in the same terminal. The old +// program saves the comments and the place of the user in a file. The new +// program reads the file, so that the user continues from the same place. + // resumeState holds the comments, the scope, the view, the expanded folds, // and the places in the panes for a restart. type resumeState struct { @@ -68,7 +68,7 @@ type resumePane struct { } // place returns the place of p, for the resume state. -func (p *pane) place() resumePane { return resumePane{p.cur, p.top, p.xoff} } +func (p *pane) place() resumePane { return resumePane{Cur: p.cur, Top: p.top, Xoff: p.xoff} } // restore moves p to the place s, within its lines. func (p *pane) restore(s resumePane) { @@ -79,16 +79,29 @@ func (p *pane) restore(s resumePane) { // saveResume writes the state to a new file, and returns its path. func (m *model) saveResume() (string, error) { s := resumeState{ - Tab: m.tab, Scope: m.scope, Base: m.base, From: m.from, To: m.to, - Changes: m.changePane.place(), - Viewer: m.allPane.place(), - PR: m.prPane.place(), - Split: m.split, Wrap: m.wrap, Rendered: m.rendered, - ListPos: m.listPos, ListHidden: m.listHidden, FocusList: m.focusList, - ListW: m.listW, ListPct: m.listPct, Folds: m.folds, Comments: &m.comments, LastSent: m.lastSent, Beside: m.beside, + Tab: m.tab, + Scope: m.scope, + Base: m.base, + From: m.from, + To: m.to, + Changes: m.changePane.place(), + Viewer: m.allPane.place(), + PR: m.prPane.place(), + Split: m.split, + Wrap: m.wrap, + Rendered: m.rendered, + ListPos: m.listPos, + ListHidden: m.listHidden, + FocusList: m.focusList, + ListW: m.listW, + ListPct: m.listPct, + Folds: m.folds, + Comments: &m.comments, + LastSent: m.lastSent, + Beside: m.beside, } if t := m.turn; t != nil { - s.Turn = &resumeTurn{t.block, t.app, t.tree, t.running, t.at} + s.Turn = &resumeTurn{Block: t.block, App: t.app, Tree: t.tree, Running: t.running, At: t.at} } if m.prPlace != nil { // the PR has not loaded since the last restart s.PR = *m.prPlace diff --git a/tui/search.go b/tui/search.go index d7b4d63..0e29581 100644 --- a/tui/search.go +++ b/tui/search.go @@ -41,8 +41,8 @@ type searchState struct { // showSearch shows the results of the search in its mode, with the // cursor on the first result. As in herdr-reviewr, the code matches show -// under a header for each file, and a "… more" row tells that the list -// does not show all the results. An error shows in place of the results. +// under a header for each file. A "… more" row tells that the list does +// not show all the results. An error shows in place of the results. func (o *overlay) showSearch() { s := &o.search var items []pickItem diff --git a/tui/tree.go b/tui/tree.go index e521377..dc439a7 100644 --- a/tui/tree.go +++ b/tui/tree.go @@ -207,8 +207,9 @@ func (m *model) shownPaths() []string { return paths } -// openIgnored returns the path of e without the last "/", and reports -// whether e is an ignored directory that the user expands in the Files tab. +// openIgnored returns the path of e without the last "/". It also reports +// whether e is an ignored directory that the user expands in the Files +// tab. func (m *model) openIgnored(e vcs.Entry) (string, bool) { dir, isDir := strings.CutSuffix(e.Path, "/") return dir, isDir && e.Ignored && m.allTree.toggled[dir] diff --git a/tui/tui.go b/tui/tui.go index 80a3843..ce09e30 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -30,7 +30,8 @@ type Options struct { // empty text means the default settings. Config string // Layout and Scope override the settings if they are not empty. Set - // them from the command-line flags. + // them from the command-line flags -layout and -scope. The error of a + // bad value names the flag. Layout Layout Scope Scope // Agent is the block ID or the label of the agent that the program @@ -59,13 +60,19 @@ func (o Options) check() error { if o.Repo == nil { return errors.New("no repository") } - if o.Layout != "" { - if err := choice("layout", o.Layout, layouts); err != nil { + return CheckFlags(o.Layout, o.Scope) +} + +// CheckFlags returns the error of the values of the flags -layout and +// -scope, or nil if rexdiff accepts them. An empty value is the default. +func CheckFlags(layout Layout, scope Scope) error { + if layout != "" { + if err := choice("-layout", layout, layouts); err != nil { return err } } - if o.Scope != "" { - return choice("scope", o.Scope, configScopes) + if scope != "" { + return choice("-scope", scope, configScopes) } return nil } @@ -140,7 +147,7 @@ func startModel(ctx context.Context, o Options, cfg config) model { } if o.Rex != nil && o.Rex.Block() != "" { if err := o.Rex.SetLabel(ctx, o.Rex.Block(), appName); err != nil { - m.log.Debug("set label", "err", err) + m.log.Debug("set label failed", "err", err) } } return m diff --git a/tui/view.go b/tui/view.go index be80575..46c4f4b 100644 --- a/tui/view.go +++ b/tui/view.go @@ -36,6 +36,12 @@ var ( // truncate cuts s to w columns, with an ellipsis. func truncate(s string, w int) string { return ansi.Truncate(s, max(w, 0), "…") } +// dark reports whether the terminal background is dark. A background that +// is not known counts as dark. +func (m *model) dark() bool { + return m.bg == nil || tea.BackgroundColorMsg{Color: m.bg}.IsDark() +} + // selStyle returns the style of a selected row. The style is a tint of the // terminal background. func (m *model) selStyle() lipgloss.Style { @@ -43,7 +49,7 @@ func (m *model) selStyle() lipgloss.Style { return lipgloss.NewStyle().Reverse(true) } tint := lipgloss.Lighten(m.bg, 0.15) - if !m.dark { + if !m.dark() { tint = lipgloss.Darken(m.bg, 0.15) } return lipgloss.NewStyle().Bold(true).Background(tint) @@ -355,9 +361,9 @@ func (m *model) mainLines(h int, hits []findHit) (lines []string, rowAt []int) { } } marked := map[int]bool{} - for _, h := range hits { - if h.line == 0 { // a hit in a fold has no row of its own - marked[h.row] = true + for _, hit := range hits { + if hit.line == 0 { // a hit in a fold has no row of its own + marked[hit.row] = true } } for i := p.top; i < len(p.lines) && len(lines) < h; i++ { diff --git a/update/update.go b/update/update.go index 85c424c..e3340f3 100644 --- a/update/update.go +++ b/update/update.go @@ -31,6 +31,8 @@ import ( "strings" "syscall" "time" + + "github.com/rednafi/rexdiff/internal/proc" ) // latestURL is the GitHub API address of the latest release of rexdiff. @@ -187,7 +189,7 @@ func (u *Updater) Install(ctx context.Context, r Release) error { env := []string{"GOBIN=" + filepath.Dir(u.bin)} goTool := "go" // Rex starts panes with a PATH without Go. - if _, err := exec.LookPath(goTool); err != nil { + if _, lerr := exec.LookPath(goTool); lerr != nil { goTool = tool("go", "/opt/homebrew/bin", "/usr/local/go/bin", "/usr/local/bin") } _, err = u.runProgram(ctx, env, goTool, "install", modulePath+"@"+r.Tag) @@ -225,10 +227,10 @@ func (u *Updater) runProgram(ctx context.Context, env []string, name string, arg return out, nil } if errors.Is(err, exec.ErrNotFound) { - return out, fmt.Errorf("%s is not installed", filepath.Base(name)) + return out, proc.NotInstalled(name) } - if last := lastLine(out); last != "" { - return out, fmt.Errorf("%s: %w: %s", filepath.Base(name), err, last) + if last := proc.LastLine(string(out)); last != "" { + return out, fmt.Errorf("%s: %s: %w", filepath.Base(name), last, err) } return out, fmt.Errorf("%s: %w", filepath.Base(name), err) } @@ -249,23 +251,16 @@ func tool(name string, dirs ...string) string { // runCommand is the run of an Updater outside tests. func runCommand(ctx context.Context, env []string, name string, args ...string) ([]byte, error) { - cmd := exec.CommandContext(ctx, name, args...) + cmd := proc.Command(ctx, name, args...) if env != nil { cmd.Env = append(cmd.Environ(), env...) } - cmd.WaitDelay = time.Second // a child of brew can keep the output open return cmd.CombinedOutput() } -// lastLine returns the last line of out that is not blank. -func lastLine(out []byte) string { - s := strings.TrimSpace(string(out)) - return strings.TrimSpace(s[strings.LastIndexByte(s, '\n')+1:]) -} - -// download downloads the archive of r for this system, checks it with the -// checksums of r, and puts its binary in place of the file that u.bin -// links to. +// download downloads the archive of r for this system and checks it with +// the checksums of r. Then it puts its binary in place of the file that +// u.bin links to. func (u *Updater) download(ctx context.Context, r Release) error { name := fmt.Sprintf("rexdiff-%s-%s-%s.tar.gz", r.Tag, runtime.GOOS, runtime.GOARCH) archiveURL, sumsURL := assetURL(r, name), assetURL(r, "sha256sums.txt") diff --git a/update/update_test.go b/update/update_test.go index 1099d76..5bbd13e 100644 --- a/update/update_test.go +++ b/update/update_test.go @@ -166,7 +166,7 @@ func TestInstallBrew(t *testing.T) { // The error has the last line of the output. { "brew fails", true, busy, "v0.2.0", false, "", - "brew: exit status 1: Error: another brew is running", + "brew: Error: another brew is running: exit status 1", }, // The error has no empty part at its end. { @@ -252,9 +252,9 @@ func archive(t *testing.T, content string) []byte { return b.Bytes() } -// TestDownload checks the download of a release: the checksum, the binary -// in the archive, the check of its version, and the replacement of the -// target file of a link. +// TestDownload checks the download of a release. It checks the checksum, +// the binary in the archive, and the check of its version. It also checks +// the replacement of the target file of a link. func TestDownload(t *testing.T) { name := fmt.Sprintf("rexdiff-v0.2.0-%s-%s.tar.gz", runtime.GOOS, runtime.GOARCH) newBin := "#!/bin/sh\necho v0.2.0\n" diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index d52ddc8..06ec976 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -4,10 +4,10 @@ import ( "context" "errors" "fmt" + "maps" "os" "os/exec" "path/filepath" - "reflect" "slices" "strings" "testing" @@ -83,7 +83,7 @@ func TestHostilePaths(t *testing.T) { } got[f.Path] = f.New } - if !reflect.DeepEqual(got, want) { + if !maps.Equal(got, want) { t.Errorf("Diff = \n%q\nwant:\n%q", got, want) } @@ -153,7 +153,7 @@ func TestDiffFileKinds(t *testing.T) { {Path: "out", Status: vcs.StatusAdded, New: outside}, {Path: "type", Status: vcs.StatusModified, Old: "a file\n", New: "a.txt"}, } - if got := changes(t, r, head(t, r), snapshot(t, r)); !reflect.DeepEqual(got, want) { + if got := changes(t, r, head(t, r), snapshot(t, r)); !slices.Equal(got, want) { t.Errorf("Diff = \n%+v\nwant:\n%+v", got, want) } } @@ -286,7 +286,7 @@ func TestGrepIsLiteral(t *testing.T) { for _, m := range ms { got = append(got, m.Text) } - if !reflect.DeepEqual(got, tt.want) { + if !slices.Equal(got, tt.want) { t.Errorf("Grep(%q) = %q, want %q", tt.q, got, tt.want) } } @@ -313,7 +313,7 @@ func TestCommitsHostileSubject(t *testing.T) { } } want := []string{subjects[2], subjects[1], subjects[0], "b", "init"} - if !reflect.DeepEqual(got, want) { + if !slices.Equal(got, want) { t.Errorf("Commits subjects = %q, want %q", got, want) } } diff --git a/vcs/pr.go b/vcs/pr.go index 528bcac..1fc32e6 100644 --- a/vcs/pr.go +++ b/vcs/pr.go @@ -162,14 +162,9 @@ func cleanPR(pr *PullRequest) { // runJSON runs a forge tool in the root directory and decodes its JSON // output into v. env adds to the environment. The error names the tool // and its subcommand, for example "gh pr". -func (r *Repo) runJSON( - ctx context.Context, - env []string, - v any, - name string, - args ...string, -) error { - out, err := runProgram(ctx, r.root, env, nil, name, args...) +func (r *Repo) runJSON(ctx context.Context, env []string, v any, name string, args ...string) error { + cmd, stderr := r.command(ctx, env, name, args...) + out, err := output(cmd, stderr) if err == nil { err = json.Unmarshal([]byte(out), v) } diff --git a/vcs/refs.go b/vcs/refs.go index 6027a2d..f645fd0 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -2,19 +2,18 @@ package vcs import ( "bufio" - "bytes" - "cmp" "context" "errors" "fmt" "os" - "os/exec" "path/filepath" "slices" "strconv" "strings" "sync/atomic" "time" + + "github.com/rednafi/rexdiff/internal/proc" ) // Commit is a commit in the log. @@ -204,6 +203,7 @@ type Match struct { // that contain the text q. The search ignores case and binary files. When // it finds limit lines, it stops git, and more is true if there are // others. +// // After the time budget, Grep stops git when it has a line, and returns // the lines with more set to true. At the deadline of ctx, Grep stops git // and returns the lines that it finds before it, with more set to true. @@ -215,12 +215,9 @@ func (r *Repo) Grep(ctx context.Context, q string, limit int, budget time.Durati } // --no-column overrides the git setting grep.column. That setting adds a // field to each match. - cmd := exec.CommandContext(ctx, "git", + cmd, stderr := r.command(ctx, nil, "git", "grep", "-n", "--no-column", "-z", "-I", "-i", "-F", "--untracked", "--no-color", "-e", q) - cmd.Dir, cmd.WaitDelay = r.root, waitDelay - var stderr bytes.Buffer - cmd.Stderr = &stderr out, err := cmd.StdoutPipe() if err != nil { return nil, false, err @@ -229,10 +226,7 @@ func (r *Repo) Grep(ctx context.Context, q string, limit int, budget time.Durati if pastDeadline(ctx) { return nil, true, nil } - if errors.Is(err, exec.ErrNotFound) { - err = errors.New("git is not installed") - } - return nil, false, fmt.Errorf("git grep: %w", err) + return nil, false, fmt.Errorf("git grep: %w", proc.Error("git", err, nil)) } // Past the budget, Grep stops git if it has a line, or else at the // next line. @@ -262,8 +256,7 @@ func (r *Repo) Grep(ctx context.Context, q string, limit int, budget time.Durati case ctx.Err() != nil: return nil, false, ctx.Err() } - msg, _, _ := strings.Cut(strings.TrimSpace(stderr.String()), "\n") - return nil, false, fmt.Errorf("git grep: %w", &runError{cmp.Or(msg, err.Error()), err}) + return nil, false, fmt.Errorf("git grep: %w", proc.Error("git", err, stderr.Bytes())) } // pastDeadline reports whether ctx ends at its deadline. diff --git a/vcs/repo.go b/vcs/repo.go index 5b4ce4b..9fe9d87 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -9,7 +9,6 @@ package vcs import ( "bufio" "bytes" - "cmp" "context" "errors" "fmt" @@ -23,6 +22,8 @@ import ( "strings" "sync" "time" + + "github.com/rednafi/rexdiff/internal/proc" ) // emptyTree is the ID of the tree that has no files. @@ -98,65 +99,41 @@ func (r *Repo) run(ctx context.Context, env []string, args ...string) (string, e } // runInput is like run. git reads its standard input from in. -func (r *Repo) runInput( - ctx context.Context, - env []string, - in io.Reader, - args ...string, -) (string, error) { - out, err := runProgram(ctx, r.root, env, in, "git", args...) +func (r *Repo) runInput(ctx context.Context, env []string, in io.Reader, args ...string) (string, error) { + cmd, stderr := r.command(ctx, env, "git", args...) + cmd.Stdin = in + out, err := output(cmd, stderr) if err != nil { return out, fmt.Errorf("git %s: %w", args[0], err) } return out, nil } -// runProgram runs the program name in dir and returns its standard output. -// env adds to the environment of the process, and stdin is its standard -// input, or nil for none. The error has the first line -// of the standard error. It wraps the error of the process, so callers can -// check its exit code. -func runProgram( - ctx context.Context, - dir string, - env []string, - stdin io.Reader, - name string, - args ...string, -) (string, error) { - cmd := exec.CommandContext(ctx, name, args...) - cmd.Dir, cmd.Stdin = dir, stdin - cmd.WaitDelay = waitDelay +// command returns the command "name args..." in the root directory. env +// adds to the environment of the process. The buffer gets the standard +// error. +func (r *Repo) command(ctx context.Context, env []string, name string, args ...string) (*exec.Cmd, *bytes.Buffer) { + cmd := proc.Command(ctx, name, args...) + cmd.Dir = r.root if env != nil { cmd.Env = append(cmd.Environ(), env...) // Environ sets PWD to cmd.Dir } var stderr bytes.Buffer cmd.Stderr = &stderr + return cmd, &stderr +} + +// output runs cmd and returns its standard output. The error has the first +// line of the standard error. It wraps the error of the process, so +// callers can examine its exit code. +func output(cmd *exec.Cmd, stderr *bytes.Buffer) (string, error) { out, err := cmd.Output() - if errors.Is(err, exec.ErrNotFound) { - return "", fmt.Errorf("%s is not installed", name) - } if err != nil { - msg, _, _ := strings.Cut(strings.TrimSpace(stderr.String()), "\n") - return string(out), &runError{cmp.Or(msg, err.Error()), err} + return string(out), proc.Error(cmd.Args[0], err, stderr.Bytes()) } return string(out), nil } -// waitDelay is how long a stopped process can keep its output open. A -// child of gh or az can keep it open after the process ends. -const waitDelay = time.Second - -// runError shows the message of the program, but keeps the error of the -// process. -type runError struct { - msg string - err error -} - -func (e *runError) Error() string { return e.msg } -func (e *runError) Unwrap() error { return e.err } - // exitedOne reports whether err is from a process that exited with code 1. func exitedOne(err error) bool { ee, ok := errors.AsType[*exec.ExitError](err) @@ -170,7 +147,7 @@ func (r *Repo) Resolve(ctx context.Context, rev string) (string, error) { return "", fmt.Errorf("git: unknown revision %q", rev) } if err != nil { - return "", fmt.Errorf("git rev-parse: %w", err) + return "", err } return strings.TrimSpace(out), nil } @@ -276,8 +253,9 @@ func (r *Repo) Snapshot(ctx context.Context) (string, error) { } // copyIndex copies the real index to dst. If there is no real index, it -// does nothing. The copy keeps the modification time of the index. git uses this time -// to find files that changed in the same second as the index. +// does nothing. The copy keeps the modification time of the index. git +// uses this time to find files that changed in the same second as the +// index. func (r *Repo) copyIndex(dst string) error { st, err := os.Stat(r.index) if errors.Is(err, fs.ErrNotExist) { @@ -423,29 +401,21 @@ func (r *Repo) readBlobs(ctx context.Context, ids []string, blobs []blob) error if len(batch) == 0 { return nil } - cmd := exec.CommandContext(ctx, "git", "cat-file", "--batch") - cmd.WaitDelay = waitDelay - cmd.Dir = r.root + cmd, stderr := r.command(ctx, nil, "git", "cat-file", "--batch") cmd.Stdin = strings.NewReader(in.String()) - var stderr bytes.Buffer - cmd.Stderr = &stderr out, err := cmd.StdoutPipe() if err != nil { return err } if err := cmd.Start(); err != nil { - if errors.Is(err, exec.ErrNotFound) { - err = errors.New("git is not installed") - } - return fmt.Errorf("git cat-file: %w", err) + return fmt.Errorf("git cat-file: %w", proc.Error("git", err, nil)) } err = readBatch(bufio.NewReader(out), batch, blobs) if err != nil { _ = cmd.Process.Kill() } if werr := cmd.Wait(); err == nil && werr != nil { - msg, _, _ := strings.Cut(strings.TrimSpace(stderr.String()), "\n") - err = &runError{cmp.Or(msg, werr.Error()), werr} + err = proc.Error("git", werr, stderr.Bytes()) } if err != nil { return fmt.Errorf("git cat-file: %w", err) @@ -566,7 +536,8 @@ func (r *Repo) Owns(ctx context.Context, dir string) (bool, error) { if !filepath.IsAbs(dir) || !r.Contains(dir) { return false, nil } - out, err := runProgram(ctx, r.root, nil, nil, "git", "-C", dir, "rev-parse", "--show-toplevel") + cmd, stderr := r.command(ctx, nil, "git", "-C", dir, "rev-parse", "--show-toplevel") + out, err := output(cmd, stderr) if _, ok := errors.AsType[*exec.ExitError](err); ok { return false, nil // dir is in no working tree } diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 0105881..67d851f 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -7,7 +7,6 @@ import ( "os" "os/exec" "path/filepath" - "reflect" "slices" "strings" "testing" @@ -378,8 +377,8 @@ func TestWorktree(t *testing.T) { } // TestOwns checks which directories are in the working tree, as in -// herdr-reviewr: a subdirectory is, a nested repository and a relative or -// outside path are not. +// herdr-reviewr. A subdirectory is in it. A nested repository, a relative +// path, and an outside path are not. func TestOwns(t *testing.T) { t.Parallel() r, dir := newRepo(t) @@ -496,7 +495,7 @@ func TestDiffRenameAndSubmodule(t *testing.T) { New: "Subproject commit " + b + "\n", }, } - if !reflect.DeepEqual(got, want) { + if !slices.Equal(got, want) { t.Errorf("Diff = \n%+v\nwant:\n%+v", got, want) } } diff --git a/vcs/watch.go b/vcs/watch.go index e982b20..79164f6 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -68,11 +68,12 @@ func (r *Repo) Watch(ctx context.Context) (*Watcher, error) { return w, nil } -// Show sets the paths that show and that git does not list: the ignored -// directories that the user expands, and the open file, which can be -// ignored or a link. paths are relative to the root. Changed also reports -// an edit of a shown file or of the target of a shown link, and a file that -// a shown directory gets or loses. A new set reports no change. +// Show sets the paths that show and that git does not list. These are the +// ignored directories that the user expands, and the open file. The open +// file can be ignored or a link. paths are relative to the root. Changed +// also reports an edit of a shown file or of the target of a shown link. +// It also reports a file that a shown directory gets or loses. A new set +// reports no change. func (w *Watcher) Show(paths []string) { abs := make([]string, len(paths)) for i, p := range paths { @@ -143,8 +144,8 @@ func (w *Watcher) Changed(ctx context.Context) (Change, error) { // LastWrite returns the newest modification time of the listed files and // of their directories, as they are now. A new or a removed file changes // the time of its directory. LastWrite returns the zero time if no such -// time is after the start of the watch. It does not change -// what the next call to Changed reports. +// time is after the start of the watch. It does not change what the next +// call to Changed reports. func (w *Watcher) LastWrite() time.Time { var last time.Time for _, p := range slices.Concat(w.files, w.dirs) { @@ -294,8 +295,8 @@ func sumPaths(paths []string) uint64 { } // sumFiles is like sumPaths. For a directory, it also adds the git files -// of the nested repository or the submodule in it, because a commit there -// does not change the directory. +// of the nested repository or the submodule in it. A commit there does not +// change the directory. func sumFiles(paths []string) uint64 { s := newSum() for _, p := range paths { @@ -306,11 +307,11 @@ func sumFiles(paths []string) uint64 { return uint64(s) } -// sum is an FNV-64a hash. It does not allocate, as hash/fnv does for a +// sum is a 64-bit FNV-1a hash. It does not allocate, as hash/fnv does for a // string. type sum uint64 -// newSum returns the sum of no bytes, the FNV-64a offset basis. +// newSum returns the sum of no bytes, the FNV-1a offset basis. func newSum() sum { return 14695981039346656037 } // byte adds the byte b. diff --git a/vcs/watch_test.go b/vcs/watch_test.go index a5e7760..1c2110e 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -154,8 +154,8 @@ func TestWatcherUnignore(t *testing.T) { } // TestWatcherShown checks that a file that an expanded ignored directory -// gets or loses is a change, and an edit of a shown ignored file, as in -// herdr-reviewr. +// gets or loses is a change. An edit of a shown ignored file is also a +// change, as in herdr-reviewr. func TestWatcherShown(t *testing.T) { t.Parallel() r, dir := newRepo(t) From 24e4ea4bf05daaa7fc7f3e3a333f3b8d5f3e9055 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 03:31:34 +0100 Subject: [PATCH 077/119] refactor: the libraries take their environment as a value As exec.Cmd.Env and go/build.Context do, the libraries get the environment from the caller. main reads it once. No library reads the process environment or PATH, so the library tests pass their own environment, need no t.Setenv, and all run in parallel. --- .doc/arch.md | 4 + .doc/test.md | 4 + cmd/rexdiff/install.go | 55 ++++++------ cmd/rexdiff/main.go | 73 ++++++++-------- diff/comment_test.go | 8 +- internal/clipboard/clipboard.go | 15 ++-- internal/clipboard/clipboard_test.go | 28 ++++--- internal/proc/proc.go | 70 +++++++++++++++- internal/proc/proc_test.go | 121 ++++++++++++++++++++++++++- internal/testgit/testgit.go | 46 +++++++++- rex/rex.go | 74 +++++++++------- rex/rex_test.go | 63 +++++++++----- tui/editor.go | 52 ++++++------ tui/model.go | 2 + tui/nav.go | 2 +- tui/send.go | 2 +- tui/tui.go | 5 ++ update/update.go | 63 +++++++------- update/update_test.go | 29 ++++--- vcs/hostile_test.go | 26 +++--- vcs/pr_test.go | 51 ++++------- vcs/repo.go | 32 ++++--- vcs/repo_test.go | 53 ++++++++++-- vcs/watch_test.go | 6 +- 24 files changed, 604 insertions(+), 280 deletions(-) diff --git a/.doc/arch.md b/.doc/arch.md index f6ec3e7..a5d1651 100644 --- a/.doc/arch.md +++ b/.doc/arch.md @@ -28,6 +28,10 @@ the editor command, text cleaning, and the diff renderer copied from crush. `cmd/rexdiff` parses the flags, handles `rexdiff install`, upgrades `rexdiff.lua` at the start, and calls `tui`. +Only `cmd/rexdiff` reads the environment of the process, once, with `os.Environ`. It +gives that list to the libraries, which find and run their programs with it, as +`exec.Cmd.Env` does. + ## Rex Rex sets `REX_SESSION` and `REX_BLOCK` in every pane. When they are missing, rexdiff diff --git a/.doc/test.md b/.doc/test.md index 9dfbd97..fa02406 100644 --- a/.doc/test.md +++ b/.doc/test.md @@ -17,6 +17,10 @@ exports. A test that needs git runs real git in a temporary repository. `internal/testgit` makes these repositories and hides your git config, so hooks or signing do not change the result. +The libraries take their environment as a value, so each test gives its own +environment, with its own `PATH` for the fake tools. No library test changes the +environment of the process, so all of them run in parallel. + ## Black-box tests Each test starts rexdiff in a pseudo-terminal, sends keys or mouse events, and waits diff --git a/cmd/rexdiff/install.go b/cmd/rexdiff/install.go index f1befe2..74a65fd 100644 --- a/cmd/rexdiff/install.go +++ b/cmd/rexdiff/install.go @@ -228,8 +228,11 @@ func luaContent(path, old, bin string) (string, error) { return settings + luaCode(bin), nil } -// luaPath returns the path of rexdiff.lua, beside the init.lua of Rex. -func luaPath() string { return filepath.Join(filepath.Dir(rex.ConfigPath()), luaFile) } +// luaPath returns the path of rexdiff.lua in the environment env, beside +// the init.lua of Rex. +func luaPath(env []string) string { + return filepath.Join(filepath.Dir(rex.ConfigPath(env)), luaFile) +} // readFile returns the content of the file at path, or "" if there is no // file. @@ -257,15 +260,16 @@ func executable() (string, error) { } // install writes rexdiff.lua with the action that runs bin, the path of -// rexdiff. It adds the require line to init.lua. -func install(ctx context.Context, bin string, args []string, stdout, stderr io.Writer) error { - if err := parseSub("install", args, stderr); err != nil { +// rexdiff. It adds the require line to init.lua. env is the environment of +// rexdiff. +func install(ctx context.Context, env []string, bin string, args []string, stdout, stderr io.Writer) error { + if err := parseSub("install", args, env, stderr); err != nil { return err } // Make the new content first. Then a bad rexdiff.lua stops the install // before it changes a file. - lua := luaPath() + lua := luaPath(env) old, err := readFile(lua) if err != nil { return err @@ -280,7 +284,7 @@ func install(ctx context.Context, bin string, args []string, stdout, stderr io.W if err := os.WriteFile(lua, []byte(code), 0o644); err != nil { return err } - initPath := rex.ConfigPath() + initPath := rex.ConfigPath(env) added, err := addRequire(initPath) if err != nil { return err @@ -289,7 +293,7 @@ func install(ctx context.Context, bin string, args []string, stdout, stderr io.W if added { fmt.Fprintf(stdout, "added %s to %s\n", requireLine, initPath) } - reload(ctx, stdout) + reload(ctx, env, stdout) fmt.Fprintln(stdout, "press the key of the settings (shift+cmd+r by default), or run \"Toggle rexdiff\" from the command palette, beside an agent") return nil } @@ -299,9 +303,9 @@ func install(ctx context.Context, bin string, args []string, stdout, stderr io.W // itself (see the update package). It upgrades only the Lua code of the // action. It does nothing if there is no rexdiff.lua, or if the file runs // another rexdiff, for example a build for development. It returns what -// the user must know, or "". -func upgrade(ctx context.Context, bin string) string { - lua := luaPath() +// the user must know, or "". env is the environment of rexdiff. +func upgrade(ctx context.Context, env []string, bin string) string { + lua := luaPath(env) old, err := readFile(lua) if err != nil || !strings.Contains(old, binLine(bin)+"\n") { return "" @@ -316,7 +320,7 @@ func upgrade(ctx context.Context, bin string) string { if err := os.WriteFile(lua, []byte(code), 0o644); err != nil { return "rexdiff.lua upgrade failed: " + err.Error() } - if err := rex.ReloadConfig(ctx); err != nil { + if err := rex.ReloadConfig(ctx, env); err != nil { return "upgraded rexdiff.lua; reload Rex's config yourself: rex config reload" } return "" @@ -349,8 +353,9 @@ func isRequire(line string) bool { } // parseSub parses the arguments of the subcommand name, which has no -// flags. It returns the errors of parseFlags. -func parseSub(name string, args []string, stderr io.Writer) error { +// flags. It returns the errors of parseFlags. env is the environment of +// rexdiff. +func parseSub(name string, args, env []string, stderr io.Writer) error { fs := flag.NewFlagSet("rexdiff "+name, flag.ContinueOnError) fs.SetOutput(stderr) if err := fs.Parse(args); err != nil { @@ -359,7 +364,7 @@ func parseSub(name string, args []string, stderr io.Writer) error { if fs.NArg() > 0 { // Show the usage, as the flag package does for a bad flag. fmt.Fprintf(stderr, "unknown argument %q (set the key and the placement in the settings in %s)\n", - fs.Arg(0), luaPath()) + fs.Arg(0), luaPath(env)) fs.Usage() return errUsage } @@ -368,20 +373,20 @@ func parseSub(name string, args []string, stderr io.Writer) error { // uninstall removes the require line from init.lua, then rexdiff.lua with // the settings. In this order, a failure does not leave init.lua with a -// require of a file that is not there. -func uninstall(ctx context.Context, args []string, stdout, stderr io.Writer) error { - if err := parseSub("uninstall", args, stderr); err != nil { +// require of a file that is not there. env is the environment of rexdiff. +func uninstall(ctx context.Context, env, args []string, stdout, stderr io.Writer) error { + if err := parseSub("uninstall", args, env, stderr); err != nil { return err } - initPath := rex.ConfigPath() + initPath := rex.ConfigPath(env) if err := removeRequire(initPath); err != nil { return err } - if err := os.Remove(luaPath()); err != nil && !errors.Is(err, fs.ErrNotExist) { + if err := os.Remove(luaPath(env)); err != nil && !errors.Is(err, fs.ErrNotExist) { return err } fmt.Fprintln(stdout, "removed the rexdiff action, its key, and its settings from Rex") - reload(ctx, stdout) + reload(ctx, env, stdout) return nil } @@ -397,10 +402,10 @@ func removeRequire(path string) error { return os.WriteFile(path, []byte(strings.Join(lines, "\n")), 0o644) } -// reload tells Rex to read its configuration file again. If Rex fails, -// reload tells the user how to reload. -func reload(ctx context.Context, stdout io.Writer) { - if err := rex.ReloadConfig(ctx); err != nil { +// reload tells Rex to read its configuration file again. rex runs with +// the environment env. If Rex fails, reload tells the user how to reload. +func reload(ctx context.Context, env []string, stdout io.Writer) { + if err := rex.ReloadConfig(ctx, env); err != nil { fmt.Fprintf(stdout, "reload Rex's config yourself: rex config reload (%v)\n", err) return } diff --git a/cmd/rexdiff/main.go b/cmd/rexdiff/main.go index e88b7d1..8058bd4 100644 --- a/cmd/rexdiff/main.go +++ b/cmd/rexdiff/main.go @@ -20,8 +20,11 @@ import ( "log/slog" "os" "os/signal" + "slices" + "strings" "syscall" + "github.com/rednafi/rexdiff/internal/proc" "github.com/rednafi/rexdiff/rex" "github.com/rednafi/rexdiff/tui" "github.com/rednafi/rexdiff/update" @@ -32,7 +35,9 @@ func main() { // A closed pane sends SIGHUP. The stop of ctx lets rexdiff remove its // files before it exits. ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM, syscall.SIGHUP) - err := run(ctx, os.Args[1:], os.Stdout, os.Stderr) + // rexdiff reads the environment once, here. The packages get it as a + // value. + err := run(ctx, os.Environ(), os.Args[1:], os.Stdout, os.Stderr) stop() switch { case errors.Is(err, flag.ErrHelp): @@ -65,8 +70,9 @@ const usage = `usage: rexdiff [flags] [repo] flags: ` -// run runs the subcommand in args, or else the diff viewer. -func run(ctx context.Context, args []string, stdout, stderr io.Writer) error { +// run runs the subcommand in args, or else the diff viewer. env is the +// environment of rexdiff, as "key=value" pairs. +func run(ctx context.Context, env, args []string, stdout, stderr io.Writer) error { if len(args) > 0 { switch args[0] { case "install": @@ -74,12 +80,12 @@ func run(ctx context.Context, args []string, stdout, stderr io.Writer) error { if err != nil { return err } - return install(ctx, bin, args[1:], stdout, stderr) + return install(ctx, env, bin, args[1:], stdout, stderr) case "uninstall": - return uninstall(ctx, args[1:], stdout, stderr) + return uninstall(ctx, env, args[1:], stdout, stderr) } } - f, err := parseFlags(args, stderr) + f, err := parseFlags(args, env, stderr) if err != nil { return err } @@ -94,8 +100,11 @@ func run(ctx context.Context, args []string, stdout, stderr io.Writer) error { return err } + // The programs that rexdiff starts, such as an editor, do not get the + // variable of the resume file. + resumePath, env := takeResume(env) dir := cmp.Or(f.repo, ".") - repo, err := vcs.Open(ctx, dir) + repo, err := vcs.Open(ctx, dir, env) if err != nil { return fmt.Errorf("open %s: %w", dir, err) } @@ -108,14 +117,14 @@ func run(ctx context.Context, args []string, stdout, stderr io.Writer) error { // In Rex, upgrade replaces the code of the action if that code differs // from the code of this rexdiff. - client := rex.FromEnv() + client := rex.New(env) var notice string bin, binErr := executable() if binErr == nil && client != nil { - notice = upgrade(ctx, bin) + notice = upgrade(ctx, env, bin) } var updater tui.Updater - if u := update.Detect(bin, version); u != nil { + if u := update.Detect(bin, version, env); u != nil { updater = u // an interface with a nil *update.Updater is not nil } resume, err := tui.Run(ctx, tui.Options{ @@ -123,7 +132,8 @@ func run(ctx context.Context, args []string, stdout, stderr io.Writer) error { Rex: client, Notice: notice, Updater: updater, - Resume: resumeFile(), + Resume: resumePath, + Env: env, Config: f.config, Layout: tui.Layout(f.layout), Scope: tui.Scope(f.scope), @@ -138,17 +148,15 @@ func run(ctx context.Context, args []string, stdout, stderr io.Writer) error { // After an update, the new rexdiff runs in this process. closeLog() _ = repo.Close() // the new process does not run the deferred calls - return restart(bin, args, resume, stdout) + return restart(bin, args, env, resume, stdout) } // restart runs the new rexdiff at bin in this process after an update, -// with the same args. resumeEnv gives it the saved state in the file -// resume. restart returns only if it fails. -func restart(bin string, args []string, resume string, stdout io.Writer) error { - err := os.Setenv(resumeEnv, resume) - if err == nil { - err = update.Restart(bin, args) // returns only if it fails - } +// with the same args and env. resumeEnv gives it the saved state in the +// file resume. restart returns only if it fails. +func restart(bin string, args, env []string, resume string, stdout io.Writer) error { + env = slices.Concat(env, []string{resumeEnv + "=" + resume}) + err := update.Restart(bin, args, env) // returns only if it fails // Run keeps the alternate screen for the restart. Leave that screen and // show the cursor. fmt.Fprint(stdout, "\x1b[?1049l\x1b[?25h") @@ -160,14 +168,12 @@ func restart(bin string, args []string, resume string, stdout io.Writer) error { // flag, so that the arguments of the user do not change. const resumeEnv = "REXDIFF_RESUME" -// resumeFile returns the file in resumeEnv, or "". It unsets the variable, -// so that the programs that rexdiff starts, such as an editor, do not get -// the variable. -func resumeFile() string { - path := os.Getenv(resumeEnv) - // Unsetenv fails only for a bad name. resumeEnv is a good name. - _ = os.Unsetenv(resumeEnv) - return path +// takeResume returns the file in the variable resumeEnv of env, or "". It +// also returns a copy of env without the variable. +func takeResume(env []string) (path string, rest []string) { + path = proc.Getenv(env, resumeEnv) + isResume := func(kv string) bool { return strings.HasPrefix(kv, resumeEnv+"=") } + return path, slices.DeleteFunc(slices.Clone(env), isResume) } // version is the version of rexdiff that GoReleaser sets, for example @@ -188,10 +194,11 @@ type flags struct { repo string // the repo argument, or "" } -// parseFlags parses the arguments of the diff viewer. It writes the usage -// and the errors of the flags to stderr. For -h, it returns -// [flag.ErrHelp], and for a bad flag or argument errUsage. -func parseFlags(args []string, stderr io.Writer) (flags, error) { +// parseFlags parses the arguments of the diff viewer. The defaults of +// -agent and -log come from env. It writes the usage and the errors of the +// flags to stderr. For -h, it returns [flag.ErrHelp], and for a bad flag +// or argument errUsage. +func parseFlags(args, env []string, stderr io.Writer) (flags, error) { var f flags fs := flag.NewFlagSet("rexdiff", flag.ContinueOnError) fs.SetOutput(stderr) @@ -200,8 +207,8 @@ func parseFlags(args []string, stderr io.Writer) (flags, error) { fs.StringVar(&f.scope, "scope", "", "start scope: uncommitted, branch, or last-turn") fs.BoolVar(&f.wrap, "wrap", true, "wrap of long lines (the key w toggles it)") fs.StringVar(&f.base, "base", "", "base for the branch scope (default: the picked base, else the repo's default branch)") - fs.StringVar(&f.agent, "agent", os.Getenv("REXDIFF_AGENT"), "Rex block (ID or label) of the agent beside this pane") - fs.StringVar(&f.logPath, "log", os.Getenv("REXDIFF_LOG"), "file for a debug log") + fs.StringVar(&f.agent, "agent", proc.Getenv(env, "REXDIFF_AGENT"), "Rex block (ID or label) of the agent beside this pane") + fs.StringVar(&f.logPath, "log", proc.Getenv(env, "REXDIFF_LOG"), "file for a debug log") fs.StringVar(&f.config, "config", "", "settings as JSON (the Rex action gives them from rexdiff.lua)") fs.BoolVar(&f.check, "check", false, "settings check only: check -config, then exit") fs.BoolVar(&f.version, "version", false, "version only: print it, then exit") diff --git a/diff/comment_test.go b/diff/comment_test.go index f14bc37..fc8e266 100644 --- a/diff/comment_test.go +++ b/diff/comment_test.go @@ -2,14 +2,13 @@ package diff_test import ( "encoding/json/v2" - "os" - "os/exec" "path/filepath" "slices" "strings" "testing" "github.com/rednafi/rexdiff/diff" + "github.com/rednafi/rexdiff/internal/proc" "github.com/rednafi/rexdiff/internal/testgit" ) @@ -202,13 +201,12 @@ func TestSnippetIsTheRealDiff(t *testing.T) { testgit.WriteFile(t, dir, name, src) } // git diff exits with 1 when the files differ. - git := exec.CommandContext(t.Context(), + // No diff setting of the user applies. + git := proc.Command(t.Context(), testgit.ToolEnv(t), "git", "diff", "--no-index", "-U1", filepath.Join(dir, "old"), filepath.Join(dir, "new"), ) - // No diff setting of the user applies. - git.Env = append(os.Environ(), testgit.Env()...) out, _ := git.Output() _, body, _ := strings.Cut(string(out), "@@\n") if strings.TrimSuffix(body, "\n") != want { diff --git a/internal/clipboard/clipboard.go b/internal/clipboard/clipboard.go index e2df687..ac27cce 100644 --- a/internal/clipboard/clipboard.go +++ b/internal/clipboard/clipboard.go @@ -1,12 +1,12 @@ // Package clipboard writes text to the system clipboard through the first -// clipboard tool on PATH, as herdr-reviewr does. +// clipboard tool on PATH, as herdr-reviewr does. The caller gives the +// environment of the tool, with its PATH. package clipboard import ( "context" "errors" "fmt" - "os/exec" "strings" "github.com/rednafi/rexdiff/internal/proc" @@ -23,15 +23,16 @@ var tools = [][]string{ {"xsel", "--clipboard", "--input"}, } -// Write pipes text into the first clipboard tool on PATH. It fails if the -// tool exits with a status that is not zero. -func Write(ctx context.Context, text string) error { +// Write pipes text into the first clipboard tool on the PATH of env. The +// tool runs with the environment env. Write fails if the tool exits with a +// status that is not zero. +func Write(ctx context.Context, env []string, text string) error { for _, t := range tools { - path, err := exec.LookPath(t[0]) + path, err := proc.LookPath(env, t[0]) if err != nil { continue } - cmd := proc.Command(ctx, path, t[1:]...) + cmd := proc.Command(ctx, env, path, t[1:]...) cmd.Stdin = strings.NewReader(text) // The output goes to the null device. xclip and wl-copy leave a // process that keeps the clipboard, and a pipe stays open while it diff --git a/internal/clipboard/clipboard_test.go b/internal/clipboard/clipboard_test.go index 9ffa030..7a840a7 100644 --- a/internal/clipboard/clipboard_test.go +++ b/internal/clipboard/clipboard_test.go @@ -10,19 +10,20 @@ import ( "github.com/rednafi/rexdiff/internal/testgit" ) -// fakeTool writes an executable script name in a new directory, and sets -// PATH to only that directory. -func fakeTool(t *testing.T, name, script string) string { +// fakeTool writes an executable script name in a new directory. It +// returns the directory, and an environment with a PATH of only that +// directory. +func fakeTool(t *testing.T, name, script string) (string, []string) { t.Helper() dir := t.TempDir() testgit.Script(t, dir, name, script) - t.Setenv("PATH", dir) - return dir + return dir, []string{"PATH=" + dir} } // TestWrite checks that the first tool on PATH gets the text and the // arguments. func TestWrite(t *testing.T) { + t.Parallel() tests := []struct{ name, want string }{ {"pbcopy", "hi\n"}, {"wl-copy", "hi\n"}, @@ -31,9 +32,10 @@ func TestWrite(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + t.Parallel() // The script writes each argument and a bar, then the input. - dir := fakeTool(t, tt.name, `{ for a; do printf '%s|' "$a"; done; /bin/cat; } > "${0%/*}/out"`+"\n") - if err := clipboard.Write(t.Context(), "hi\n"); err != nil { + dir, env := fakeTool(t, tt.name, `{ for a; do printf '%s|' "$a"; done; /bin/cat; } > "${0%/*}/out"`+"\n") + if err := clipboard.Write(t.Context(), env, "hi\n"); err != nil { t.Fatalf("Write: %v", err) } got, err := os.ReadFile(filepath.Join(dir, "out")) @@ -51,12 +53,14 @@ func TestWrite(t *testing.T) { // TestWriteFails checks the errors with no tool, and with a tool that // fails. func TestWriteFails(t *testing.T) { - t.Setenv("PATH", t.TempDir()) - if err := clipboard.Write(t.Context(), "x"); !errors.Is(err, clipboard.ErrNoTool) { - t.Errorf("no tool: Write = %v, want ErrNoTool", err) + t.Parallel() + for _, env := range [][]string{nil, {"PATH=" + t.TempDir()}} { + if err := clipboard.Write(t.Context(), env, "x"); !errors.Is(err, clipboard.ErrNoTool) { + t.Errorf("no tool in %q: Write = %v, want ErrNoTool", env, err) + } } - fakeTool(t, "pbcopy", "exit 1\n") - err := clipboard.Write(t.Context(), "x") + _, env := fakeTool(t, "pbcopy", "exit 1\n") + err := clipboard.Write(t.Context(), env, "x") if err == nil || errors.Is(err, clipboard.ErrNoTool) { t.Errorf("pbcopy exits 1: Write = %v, want an error that is not ErrNoTool", err) } diff --git a/internal/proc/proc.go b/internal/proc/proc.go index e1652ac..dac7d62 100644 --- a/internal/proc/proc.go +++ b/internal/proc/proc.go @@ -1,12 +1,19 @@ // Package proc runs programs and makes their errors short and clear. +// +// The caller gives the environment as a value, as in [exec.Cmd.Env]. A +// program gets only that environment, and proc finds the program in the +// PATH of that environment. proc does not read the environment of the +// process. package proc import ( "cmp" "context" "errors" + "os" "os/exec" "path/filepath" + "slices" "strings" "time" ) @@ -15,14 +22,69 @@ import ( // child of the program can keep the output open after the program ends. const waitDelay = time.Second -// Command returns the command "name args...". The command stops when ctx -// is done. Its Wait returns at most waitDelay after the program ends. -func Command(ctx context.Context, name string, args ...string) *exec.Cmd { - cmd := exec.CommandContext(ctx, name, args...) +// Command returns the command "name args..." with the environment env. +// LookPath finds name in the PATH of env. If LookPath fails, Start returns +// its error. A nil env is an empty environment, not the environment of the +// process. The command stops when ctx is done. Its Wait returns at most +// waitDelay after the program ends. +func Command(ctx context.Context, env []string, name string, args ...string) *exec.Cmd { + path, err := LookPath(env, name) + if err != nil { + // Start returns Err before it runs anything, so the command needs no + // context. + return &exec.Cmd{Path: name, Args: append([]string{name}, args...), Err: err} + } + cmd := exec.CommandContext(ctx, path, args...) + cmd.Args[0] = name + if env == nil { + env = []string{} // exec gives a nil Env the environment of the process + } + cmd.Env = env cmd.WaitDelay = waitDelay return cmd } +// Getenv returns the value of the variable key in env, a list of +// "key=value" pairs. The last pair with key wins, as in [exec.Cmd.Env]. +// Getenv returns "" if env does not have key. +func Getenv(env []string, key string) string { + for _, kv := range slices.Backward(env) { + if v, ok := strings.CutPrefix(kv, key+"="); ok { + return v + } + } + return "" +} + +// LookPath returns the path of the program file, as [exec.LookPath] does, +// but it looks in the PATH of env. If file has a separator, LookPath checks +// only file. LookPath skips the empty entries of PATH. The program must be +// an executable regular file. If LookPath finds no program, the error is an +// [*exec.Error] that wraps [exec.ErrNotFound]. +func LookPath(env []string, file string) (string, error) { + if strings.ContainsRune(file, filepath.Separator) { + if executable(file) { + return file, nil + } + return "", &exec.Error{Name: file, Err: exec.ErrNotFound} + } + for dir := range strings.SplitSeq(Getenv(env, "PATH"), string(filepath.ListSeparator)) { + if dir == "" { + continue + } + if path := filepath.Join(dir, file); executable(path) { + return path, nil + } + } + return "", &exec.Error{Name: file, Err: exec.ErrNotFound} +} + +// executable reports whether path is a regular file that a user can run. +func executable(path string) bool { + info, err := os.Stat(path) + return err == nil && info.Mode().IsRegular() && info.Mode()&0o111 != 0 +} + // NotInstalled returns the error of the program name that PATH does not // have. The text has the base name of the program. func NotInstalled(name string) error { diff --git a/internal/proc/proc_test.go b/internal/proc/proc_test.go index e021572..e4af64a 100644 --- a/internal/proc/proc_test.go +++ b/internal/proc/proc_test.go @@ -2,16 +2,24 @@ package proc_test import ( "errors" + "os" "os/exec" + "path/filepath" + "slices" + "strings" "testing" "github.com/rednafi/rexdiff/internal/proc" ) +// shEnv is an environment with the PATH of sh. +var shEnv = []string{"PATH=/usr/bin:/bin"} + // TestError checks the text of the error of a run, and that the error // keeps the error of the process. func TestError(t *testing.T) { - exit := exec.CommandContext(t.Context(), "sh", "-c", "exit 3").Run() + t.Parallel() + exit := proc.Command(t.Context(), shEnv, "sh", "-c", "exit 3").Run() tests := []struct { name string err error @@ -36,6 +44,7 @@ func TestError(t *testing.T) { // TestLastLine checks that LastLine skips the blank lines at the end. func TestLastLine(t *testing.T) { + t.Parallel() tests := []struct{ in, want string }{ {"", ""}, {"one", "one"}, @@ -49,10 +58,116 @@ func TestLastLine(t *testing.T) { } } -// TestCommand checks that Command limits the wait for the output. +// TestCommand checks that Command limits the wait for the output, and +// that the program gets only env. func TestCommand(t *testing.T) { - cmd := proc.Command(t.Context(), "true") + t.Parallel() + env := slices.Concat(shEnv, []string{"A=1"}) + cmd := proc.Command(t.Context(), env, "sh", "-c", "env") if cmd.WaitDelay <= 0 { t.Errorf("WaitDelay = %v, want more than 0", cmd.WaitDelay) } + if cmd.Args[0] != "sh" { + t.Errorf("Args[0] = %q, want sh", cmd.Args[0]) + } + out, err := cmd.Output() + if err != nil { + t.Fatal(err) + } + // sh can add variables of its own, for example PWD. + for _, kv := range env { + if !strings.Contains(string(out), kv+"\n") { + t.Errorf("the environment of sh is\n%s\nwant %s", out, kv) + } + } +} + +// TestCommandNotFound checks that Start returns the error of LookPath if +// the PATH of env has no program name. +func TestCommandNotFound(t *testing.T) { + t.Parallel() + for _, env := range [][]string{nil, {"PATH=" + t.TempDir()}} { + cmd := proc.Command(t.Context(), env, "sh", "-c", "true") + if cmd.Path != "sh" { + t.Errorf("env %q: Path = %q, want sh", env, cmd.Path) + } + if err := cmd.Run(); !errors.Is(err, exec.ErrNotFound) { + t.Errorf("env %q: Run = %v, want exec.ErrNotFound", env, err) + } + } +} + +// TestGetenv checks that the last pair of a key wins, and that a key +// does not match the start of another key. +func TestGetenv(t *testing.T) { + t.Parallel() + env := []string{"A=1", "AB=2", "A=3", "C=", "D"} + tests := []struct{ key, want string }{ + {"A", "3"}, + {"AB", "2"}, + {"C", ""}, + {"D", ""}, + {"B", ""}, + {"", ""}, + } + for _, tt := range tests { + if got := proc.Getenv(env, tt.key); got != tt.want { + t.Errorf("Getenv(%q, %q) = %q, want %q", env, tt.key, got, tt.want) + } + } + if got := proc.Getenv(nil, "A"); got != "" { + t.Errorf("Getenv(nil, A) = %q, want \"\"", got) + } +} + +// TestLookPath checks that LookPath finds an executable regular file in +// the PATH of env, in the order of PATH. +func TestLookPath(t *testing.T) { + t.Parallel() + first, second := t.TempDir(), t.TempDir() + write := func(path string, mode os.FileMode) string { + t.Helper() + if err := os.WriteFile(path, []byte("#!/bin/sh\n"), mode); err != nil { + t.Fatal(err) + } + return path + } + write(filepath.Join(first, "plain"), 0o644) + plain := write(filepath.Join(second, "plain"), 0o755) + both := write(filepath.Join(first, "both"), 0o755) + write(filepath.Join(second, "both"), 0o755) + if err := os.Mkdir(filepath.Join(first, "dir"), 0o755); err != nil { + t.Fatal(err) + } + path := "PATH=" + strings.Join([]string{"", first, "", second}, string(os.PathListSeparator)) + env := []string{"PATH=/nowhere", path} + tests := []struct { + file, want string // a want of "" is exec.ErrNotFound + }{ + {"both", both}, + {"plain", plain}, // the file in first cannot run + {"dir", ""}, + {"none", ""}, + {"", ""}, + {both, both}, + {filepath.Join(first, "plain"), ""}, + {filepath.Join(first, "none"), ""}, + } + for _, tt := range tests { + got, err := proc.LookPath(env, tt.file) + if tt.want == "" { + ee, ok := errors.AsType[*exec.Error](err) + if got != "" || !errors.Is(err, exec.ErrNotFound) || !ok || ee.Name != tt.file { + t.Errorf("LookPath(%q) = %q, %v, want an *exec.Error with ErrNotFound", + tt.file, got, err) + } + continue + } + if got != tt.want || err != nil { + t.Errorf("LookPath(%q) = %q, %v, want %q, nil", tt.file, got, err, tt.want) + } + } + if got, err := proc.LookPath(nil, "sh"); !errors.Is(err, exec.ErrNotFound) { + t.Errorf("LookPath(nil, sh) = %q, %v, want exec.ErrNotFound", got, err) + } } diff --git a/internal/testgit/testgit.go b/internal/testgit/testgit.go index 77bb0bb..8c4039c 100644 --- a/internal/testgit/testgit.go +++ b/internal/testgit/testgit.go @@ -7,13 +7,19 @@ import ( "os" "os/exec" "path/filepath" + "slices" "strings" "sync" "testing" ) -// root is the directory of the fixtures. It is "" until Main runs. -var root string +var ( + // root is the directory of the fixtures. It is "" until Main runs. + root string + // gitPath is the path of git, from the PATH of the process. It is "" + // until Main runs. + gitPath string +) // Main runs the tests of m in a git environment that ignores the setup of // the user. Each package that runs git calls it from its TestMain. @@ -24,12 +30,27 @@ var root string // add config, are unset. HOME and XDG_CONFIG_HOME are a new directory, so // no ignore or attributes file of the user applies. The commits have a // fixed author. +// +// Main finds git in the PATH of the process, before the tests run. A test +// that gives a library an environment of its own gets git from +// [ToolEnv] or [LinkGit]. func Main(m *testing.M) { dir, err := os.MkdirTemp("", "testgit") if err != nil { panic(err) } defer func() { _ = os.RemoveAll(dir) }() + path, err := exec.LookPath("git") + if err != nil { + panic(err) + } + if err := os.Mkdir(filepath.Join(dir, "bin"), 0o755); err != nil { + panic(err) + } + if err := os.Symlink(path, filepath.Join(dir, "bin", "git")); err != nil { + panic(err) + } + gitPath = path env := append(Env(), "HOME="+dir, "XDG_CONFIG_HOME="+dir) for _, kv := range env { k, v, _ := strings.Cut(kv, "=") @@ -61,6 +82,27 @@ func Env() []string { } } +// ToolEnv returns the environment of a library that runs git in a test. +// It has the variables of [Env] and PATH. PATH has dirs, then a directory +// with only git, then /usr/bin and /bin. A test puts its fake tools in +// dirs. ToolEnv has no HOME, so no file of the user applies. +func ToolEnv(tb testing.TB, dirs ...string) []string { + tb.Helper() + ready(tb) + path := slices.Concat(dirs, []string{filepath.Join(root, "bin"), "/usr/bin", "/bin"}) + return append(Env(), "PATH="+strings.Join(path, string(os.PathListSeparator))) +} + +// LinkGit makes a link to git in dir. A test that removes the link takes +// git away from a PATH with dir. +func LinkGit(tb testing.TB, dir string) { + tb.Helper() + ready(tb) + if err := os.Symlink(gitPath, filepath.Join(dir, "git")); err != nil { + tb.Fatal(err) + } +} + // unset are the variables that make git use another repository, more // config, or another diff program. var unset = []string{ diff --git a/rex/rex.go b/rex/rex.go index 189a396..2f5cc01 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -6,6 +6,10 @@ // for example "pi" and "working". This is the status of the program. A // [Client] finds the agents in a session, pastes text into an agent, and // gets each status change. +// +// The caller gives the environment as a value, as in [exec.Cmd.Env]. The +// package finds rex with it and runs rex with it. It does not read the +// environment of the process. package rex import ( @@ -18,6 +22,7 @@ import ( "os" "os/exec" "path/filepath" + "runtime" "slices" "strings" "sync" @@ -28,44 +33,50 @@ import ( // Client runs rex commands in one Rex session. type Client struct { - block string // the block of this process, or "" - session string // the ID of the session - bin string // the path of the rex command, or "" for "rex" in PATH + block string // the block of this process, or "" + session string // the ID of the session + bin string // the path of the rex command, or "" for "rex" in PATH + env []string // the environment of rex } -// FromEnv returns a client for the session of this process. Rex sets -// REX_SESSION and REX_BLOCK in each block. FromEnv returns nil if the -// process does not run in Rex. -func FromEnv() *Client { - session := os.Getenv("REX_SESSION") +// New returns a client for the session in the environment env, for +// example the environment of the process from [os.Environ]. Rex sets +// REX_SESSION and REX_BLOCK in each block. New returns nil if env is not +// the environment of a Rex block. The client runs rex with env. +func New(env []string) *Client { + session := proc.Getenv(env, "REX_SESSION") if session == "" { return nil } return &Client{ - block: os.Getenv("REX_BLOCK"), + block: proc.Getenv(env, "REX_BLOCK"), session: session, - bin: binFromEnv(), + bin: binFromEnv(env), + env: env, } } // Block returns the block of this process, or "" if Rex does not tell it. func (c *Client) Block() string { return c.block } -// binFromEnv returns the path of the rex command, or "" for the rex in PATH. -// Rex sets REX_BIN_DIR in its terminals. Other programs, for example brew, -// do not have it. If REX_BIN_DIR is empty and PATH has no rex, binFromEnv -// returns the rex of the Rex server app on macOS, if it is there. -func binFromEnv() string { - if dir := os.Getenv("REX_BIN_DIR"); dir != "" { +// binFromEnv returns the path of the rex command in env, or "" for the rex +// in PATH. Rex sets REX_BIN_DIR in its terminals. Other programs, for +// example brew, do not have it. If REX_BIN_DIR is empty and PATH has no +// rex, binFromEnv returns the rex of the Rex server app in HOME on macOS, +// if it is there. +func binFromEnv(env []string) string { + if dir := proc.Getenv(env, "REX_BIN_DIR"); dir != "" { return filepath.Join(dir, "rex") } - if _, err := exec.LookPath("rex"); err == nil { + if _, err := proc.LookPath(env, "rex"); err == nil { return "" } - dir, err := os.UserConfigDir() - if err != nil { + home := proc.Getenv(env, "HOME") + if runtime.GOOS != "darwin" || home == "" { return "" } + // The app is in the directory of os.UserConfigDir on macOS. + dir := filepath.Join(home, "Library", "Application Support") bin := filepath.Join(dir, "com.superlogical.rex", "RexServer", "Versions", "Current", "Rex Server.app", "Contents", "MacOS", "rex") if _, err := os.Stat(bin); err != nil { return "" @@ -75,7 +86,7 @@ func binFromEnv() string { // command returns the command "rex args...". func (c *Client) command(ctx context.Context, args ...string) *exec.Cmd { - return proc.Command(ctx, cmp.Or(c.bin, "rex"), args...) + return proc.Command(ctx, c.env, cmp.Or(c.bin, "rex"), args...) } // runRex runs "rex args..." and returns the output. If rex fails, the @@ -354,25 +365,24 @@ func (c *Client) Split(ctx context.Context, cwd string, argv ...string) error { return err } -// ConfigPath returns the path of the configuration file of Rex. This is -// $REX_CONFIG if it is set. If not, it is init.lua in the rex directory of -// $XDG_CONFIG_HOME, or of ~/.config. -func ConfigPath() string { - if path := os.Getenv("REX_CONFIG"); path != "" { +// ConfigPath returns the path of the configuration file of Rex in the +// environment env. This is $REX_CONFIG if it is set. If not, it is +// init.lua in the rex directory of $XDG_CONFIG_HOME, or of $HOME/.config. +func ConfigPath(env []string) string { + if path := proc.Getenv(env, "REX_CONFIG"); path != "" { return path } - dir := os.Getenv("XDG_CONFIG_HOME") + dir := proc.Getenv(env, "XDG_CONFIG_HOME") if dir == "" { - home, _ := os.UserHomeDir() - dir = filepath.Join(home, ".config") + dir = filepath.Join(proc.Getenv(env, "HOME"), ".config") } return filepath.Join(dir, "rex", "init.lua") } -// ReloadConfig tells Rex to read its configuration file again. It also -// works outside a Rex session. -func ReloadConfig(ctx context.Context) error { - c := &Client{bin: binFromEnv()} +// ReloadConfig tells Rex to read its configuration file again. It runs +// rex with the environment env. It also works outside a Rex session. +func ReloadConfig(ctx context.Context, env []string) error { + c := &Client{bin: binFromEnv(env), env: env} _, err := c.runRex(ctx, "config", "reload") return err } diff --git a/rex/rex_test.go b/rex/rex_test.go index a085004..e0e15ec 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -16,20 +16,22 @@ import ( "github.com/rednafi/rexdiff/rex" ) -// client writes a rex script with body in a new directory. It sets the -// environment of the block block:self in the session S, and returns the -// client of FromEnv and the directory. A test that calls it cannot run in -// parallel. +// client writes a rex script with body in a new directory. It returns the +// client of New in the environment of the block block:self in the session +// S, and the directory. func client(t *testing.T, body string) (*rex.Client, string) { t.Helper() dir := t.TempDir() testgit.Script(t, dir, "rex", body) - t.Setenv("REX_SESSION", "S") - t.Setenv("REX_BLOCK", "block:self") - t.Setenv("REX_BIN_DIR", dir) - c := rex.FromEnv() + env := []string{ + "PATH=/usr/bin:/bin", + "REX_SESSION=S", + "REX_BLOCK=block:self", + "REX_BIN_DIR=" + dir, + } + c := rex.New(env) if c == nil || c.Block() != "block:self" { - t.Fatalf("FromEnv = %+v, want the block block:self", c) + t.Fatalf("New(%q) = %+v, want the block block:self", env, c) } return c, dir } @@ -83,6 +85,7 @@ esac // TestAgents checks that Agents returns only the terminal blocks that send // an app name, without the block of the client. func TestAgents(t *testing.T) { + t.Parallel() c, _ := fakeRex(t) agents, err := c.Agents(t.Context()) if err != nil { @@ -112,6 +115,7 @@ func TestAgents(t *testing.T) { // TestCommands checks the rex calls of Resolve, Paste, Focus, Split, and // SetLabel. func TestCommands(t *testing.T) { + t.Parallel() c, dir := fakeRex(t) ctx := t.Context() if id, err := c.Resolve(ctx, "agent"); err != nil || id != "block:pi" { @@ -166,6 +170,7 @@ func blockEvent(block, name, payload string) string { // after the events, so Watch reports a reconnect and then the events // again. func TestWatch(t *testing.T) { + t.Parallel() c, dir := fakeRex(t) events := strings.Join([]string{ blockEvent("block:pi", "program_status_changed", `{"id":"",`+ @@ -209,34 +214,53 @@ func TestWatch(t *testing.T) { } } -// TestFromEnv checks that FromEnv returns nil outside Rex. The client of -// the other tests comes from FromEnv in a fake block. -func TestFromEnv(t *testing.T) { - t.Setenv("REX_SESSION", "") - if c := rex.FromEnv(); c != nil { - t.Errorf("FromEnv outside Rex = %+v, want nil", c) +// TestNew checks that New returns nil outside Rex. The client of the +// other tests comes from New in a fake block. +func TestNew(t *testing.T) { + t.Parallel() + for _, env := range [][]string{nil, {"REX_SESSION=S", "REX_SESSION="}} { + if c := rex.New(env); c != nil { + t.Errorf("New(%q) outside Rex = %+v, want nil", env, c) + } + } +} + +// TestConfigPath checks the places of the configuration file of Rex. +func TestConfigPath(t *testing.T) { + t.Parallel() + tests := []struct { + env []string + want string + }{ + {[]string{"HOME=/h", "XDG_CONFIG_HOME=/x", "REX_CONFIG=/r.lua"}, "/r.lua"}, + {[]string{"HOME=/h", "XDG_CONFIG_HOME=/x"}, "/x/rex/init.lua"}, + {[]string{"HOME=/h", "XDG_CONFIG_HOME="}, "/h/.config/rex/init.lua"}, + } + for _, tt := range tests { + if got := rex.ConfigPath(tt.env); got != tt.want { + t.Errorf("ConfigPath(%q) = %q, want %q", tt.env, got, tt.want) + } } } // TestReloadConfigOutsideRex checks that ReloadConfig runs the rex of the // Rex server app outside a Rex terminal. func TestReloadConfigOutsideRex(t *testing.T) { + t.Parallel() if runtime.GOOS != "darwin" { t.Skip("the Rex server app is on macOS") } // Outside a Rex terminal, for example under brew, REX_BIN_DIR is not set // and rex is not in PATH. home := t.TempDir() - t.Setenv("HOME", home) - t.Setenv("REX_BIN_DIR", "") - t.Setenv("PATH", t.TempDir()) + env := []string{"HOME=" + home, "REX_BIN_DIR=", "PATH=" + t.TempDir()} dir := filepath.Join(home, "Library", "Application Support", "com.superlogical.rex", "RexServer", "Versions", "Current", "Rex Server.app", "Contents", "MacOS") if err := os.MkdirAll(dir, 0o755); err != nil { t.Fatal(err) } log := filepath.Join(home, "log") testgit.Script(t, dir, "rex", "echo \"$*\" > '"+log+"'\n") - if err := rex.ReloadConfig(t.Context()); err != nil { + if err := rex.ReloadConfig(t.Context(), env); err != nil { t.Fatal(err) } if b, _ := os.ReadFile(log); string(b) != "config reload\n" { @@ -247,6 +271,7 @@ func TestReloadConfigOutsideRex(t *testing.T) { // TestErrorKeepsCause checks that the error of a failed rex is the message // of rex. The error also wraps the exit error of the process. func TestErrorKeepsCause(t *testing.T) { + t.Parallel() c, _ := client(t, "echo 'Error: no Rex server' >&2\nexit 3\n") err := c.Focus(t.Context(), "block:pi") ee, ok := errors.AsType[*exec.ExitError](err) diff --git a/tui/editor.go b/tui/editor.go index f576465..cbe9c8f 100644 --- a/tui/editor.go +++ b/tui/editor.go @@ -19,17 +19,19 @@ import ( ) // openEditor opens the file at path, at line. It uses the editor of the -// settings, else $VISUAL, $EDITOR, or core.editor. A terminal editor opens -// in a new block beside rexdiff in Rex. Outside Rex, a terminal editor -// takes the screen until the editor stops. A window editor starts in the -// background. The messages are the same as in herdr-reviewr. +// settings, else $VISUAL, $EDITOR, or core.editor. The variables come from +// m.env. The editor runs with m.env. A terminal editor opens in a new +// block beside rexdiff in Rex. Outside Rex, a terminal editor takes the +// screen until the editor stops. A window editor starts in the background. +// The messages are the same as in herdr-reviewr. func (m *model) openEditor(path string, line int) tea.Cmd { abs := filepath.Join(m.repo.Root(), path) var git string if m.cfg.Editor == "" { git = m.repo.Editor(m.ctx) } - ed, err := editor.Resolve(m.cfg.Editor, os.Getenv("VISUAL"), os.Getenv("EDITOR"), git, abs, line) + ed, err := editor.Resolve(m.cfg.Editor, + proc.Getenv(m.env, "VISUAL"), proc.Getenv(m.env, "EDITOR"), git, abs, line) if err != nil { m.flash("editor failed: " + err.Error()) return nil @@ -40,7 +42,7 @@ func (m *model) openEditor(path string, line int) tea.Cmd { m.flash(path + " is gone") return nil } - if _, err := exec.LookPath(ed.Program); err != nil { + if _, err := proc.LookPath(m.env, ed.Program); err != nil { m.flash(proc.NotInstalled(ed.Program).Error()) return nil } @@ -73,7 +75,7 @@ func (m *model) onSplit(msg splitMsg) tea.Cmd { // runHere runs the editor script in this pane, in place of rexdiff. func (m *model) runHere(path, script string) tea.Cmd { - return tea.ExecProcess(command("sh", "-c", script), func(err error) tea.Msg { + return tea.ExecProcess(command(m.env, "sh", "-c", script), func(err error) tea.Msg { return editorDoneMsg{path: path, err: err} }) } @@ -83,7 +85,7 @@ func (m *model) runHere(path, script string) tea.Cmd { // If the editor fails, the returned command gives the error and the last // line of the stderr of the editor. func (m *model) runWindowEditor(path, script string) tea.Cmd { - wait, err := detach("editor", "sh", "-c", script) + wait, err := detach(m.env, "editor", "sh", "-c", script) if err != nil { m.flash("editor failed: " + err.Error()) return nil @@ -92,12 +94,13 @@ func (m *model) runWindowEditor(path, script string) tea.Cmd { return wait } -// detach starts a program in its own session and with no terminal, so -// that it cannot read the keys of rexdiff. The returned command waits for -// the program. If the program fails, the command gives a detachedMsg with -// the last line of the stderr of the program. -func detach(what, name string, args ...string) (tea.Cmd, error) { - cmd := command(name, args...) +// detach starts a program with the environment env in its own session and +// with no terminal, so that it cannot read the keys of rexdiff. The +// returned command waits for the program. If the program fails, the +// command gives a detachedMsg with the last line of the stderr of the +// program. +func detach(env []string, what, name string, args ...string) (tea.Cmd, error) { + cmd := command(env, name, args...) var stderr bytes.Buffer cmd.Stderr = &stderr cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true} @@ -132,23 +135,24 @@ func (m *model) onEditorDone(msg editorDoneMsg) { } // openURL opens url with the URL opener of the settings, else with -// the opener of the system. The command waits for the opener. -func openURL(cfg config, url string) (tea.Cmd, error) { +// the opener of the system. The opener runs with the environment env. The +// command waits for the opener. +func openURL(env []string, cfg config, url string) (tea.Cmd, error) { if cfg.URLOpener != "" { script := strings.ReplaceAll(cfg.URLOpener, "{url}", editor.ShellQuote(url)) - return detach("open", "sh", "-c", script) + return detach(env, "open", "sh", "-c", script) } opener := "xdg-open" if runtime.GOOS == "darwin" { opener = "open" } - return detach("open", opener, url) + return detach(env, "open", opener, url) } -// command returns the command for an editor or a URL opener. The context -// of the command has no end, because the program must not stop when -// rexdiff stops. For example, a kill of the editor can lose the edits of -// the user. -func command(name string, args ...string) *exec.Cmd { - return proc.Command(context.Background(), name, args...) +// command returns the command for an editor or a URL opener, with the +// environment env. The context of the command has no end, because the +// program must not stop when rexdiff stops. For example, a kill of the +// editor can lose the edits of the user. +func command(env []string, name string, args ...string) *exec.Cmd { + return proc.Command(context.Background(), env, name, args...) } diff --git a/tui/model.go b/tui/model.go index eeec52a..fd27b5d 100644 --- a/tui/model.go +++ b/tui/model.go @@ -195,6 +195,7 @@ type model struct { repo *vcs.Repo rex *rex.Client // nil outside Rex log *slog.Logger + env []string // for the editor, the URL opener, and the clipboard cfg config keys keyMap @@ -336,6 +337,7 @@ func newModel(ctx context.Context, o Options, cfg config) model { repo: o.Repo, rex: o.Rex, log: o.Log, + env: o.Env, notice: o.Notice, updater: o.Updater, w: 120, diff --git a/tui/nav.go b/tui/nav.go index af0a050..3a61bb6 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -311,7 +311,7 @@ func (m *model) openPR() tea.Cmd { if m.pr.pr == nil || m.pr.pr.URL == "" { return nil } - wait, err := openURL(m.cfg, m.pr.pr.URL) + wait, err := openURL(m.env, m.cfg, m.pr.pr.URL) if err != nil { m.flash("open failed: " + err.Error()) } diff --git a/tui/send.go b/tui/send.go index 68b0166..d23adac 100644 --- a/tui/send.go +++ b/tui/send.go @@ -259,7 +259,7 @@ const copyTimeout = 2 * time.Second func (m *model) copyText(text, done string, ids []int) { ctx, cancel := context.WithTimeout(m.ctx, copyTimeout) defer cancel() - err := clipboard.Write(ctx, text) + err := clipboard.Write(ctx, m.env, text) switch { case err != nil: if !errors.Is(err, clipboard.ErrNoTool) { diff --git a/tui/tui.go b/tui/tui.go index ce09e30..8882f9d 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -53,6 +53,11 @@ type Options struct { // Resume is the file of the state that Run returned before an update, // or "". Run reads it and removes it. Resume string + // Env is the environment of the editor, the URL opener, and the + // clipboard tool, for example the environment of the process from + // os.Environ. Run finds them in its PATH, and reads $VISUAL and + // $EDITOR from it. + Env []string } // check returns an error for options that Run cannot use. diff --git a/update/update.go b/update/update.go index e3340f3..44e3068 100644 --- a/update/update.go +++ b/update/update.go @@ -6,6 +6,9 @@ // install. Else it downloads the archive of the release from GitHub and // checks it with the checksums of the release. [Restart] runs the new binary // in the same process, so the terminal and the process ID stay. +// +// The caller gives the environment as a value, as in [exec.Cmd.Env]. The +// package does not read the environment of the process. package update import ( @@ -79,10 +82,9 @@ type Updater struct { bin string // the path of rexdiff as the user runs it, maybe a symlink version string // the version of the running rexdiff, for example "v0.1.0" method method - brew string // the brew of the Caskroom of bin, for methodBrew + brew string // the brew of the Caskroom of bin, for methodBrew + env []string // the environment of brew, go, and rexdiff latestURL string - // run runs a command and returns its output. Tests replace it. - run func(ctx context.Context, env []string, name string, args ...string) ([]byte, error) } // Version returns the version of rexdiff, for example "v0.2.0". stamped is @@ -108,16 +110,17 @@ func Version(stamped string) string { // The Updater installs a release the same way as the user installed // rexdiff. If bin links into a Caskroom, it uses Homebrew. If stamped is "" // and the version comes from go install, it uses go install. Else it -// downloads the release. If REXDIFF_LATEST_URL is set, the Updater gets the -// latest release from that address. Set it to test a release before it -// is public. -func Detect(bin, stamped string) *Updater { - return detect(bin, Version(stamped), stamped == "") +// downloads the release. The Updater runs brew, go, and rexdiff with the +// environment env, and finds them in the PATH of env. If env sets +// REXDIFF_LATEST_URL, the Updater gets the latest release from that +// address. Set it to test a release before it is public. +func Detect(bin, stamped string, env []string) *Updater { + return detect(bin, Version(stamped), stamped == "", env) } // detect is [Detect] with the version already found. goInstall is true if // the version comes from go install. -func detect(bin, version string, goInstall bool) *Updater { +func detect(bin, version string, goInstall bool, env []string) *Updater { if _, valid := numbers(version); bin == "" || !valid { return nil } @@ -125,7 +128,8 @@ func detect(bin, version string, goInstall bool) *Updater { bin: bin, version: version, method: methodDownload, - latestURL: cmp.Or(os.Getenv("REXDIFF_LATEST_URL"), latestURL), + env: env, + latestURL: cmp.Or(proc.Getenv(env, "REXDIFF_LATEST_URL"), latestURL), } target, err := filepath.EvalSymlinks(bin) caskroom := string(filepath.Separator) + "Caskroom" + string(filepath.Separator) @@ -189,7 +193,7 @@ func (u *Updater) Install(ctx context.Context, r Release) error { env := []string{"GOBIN=" + filepath.Dir(u.bin)} goTool := "go" // Rex starts panes with a PATH without Go. - if _, lerr := exec.LookPath(goTool); lerr != nil { + if _, lerr := proc.LookPath(u.env, goTool); lerr != nil { goTool = tool("go", "/opt/homebrew/bin", "/usr/local/go/bin", "/usr/local/bin") } _, err = u.runProgram(ctx, env, goTool, "install", modulePath+"@"+r.Tag) @@ -215,14 +219,12 @@ func (u *Updater) checkVersion(ctx context.Context, bin, tag string) error { return nil } -// runProgram runs name with args, with env added to the environment. Its -// error has the end of the output, which tells what went wrong. +// runProgram runs name with args, with env added to the environment of u. +// Its error has the end of the output, which tells what went wrong. func (u *Updater) runProgram(ctx context.Context, env []string, name string, args ...string) ([]byte, error) { - run := u.run - if run == nil { - run = runCommand - } - out, err := run(ctx, env, name, args...) + // A copy keeps u.env as it is. + cmd := proc.Command(ctx, slices.Concat(u.env, env), name, args...) + out, err := cmd.CombinedOutput() if err == nil { return out, nil } @@ -236,9 +238,9 @@ func (u *Updater) runProgram(ctx context.Context, env []string, name string, arg } // tool returns the path of the program name in dirs. If dirs do not have -// the program, tool returns name, and exec looks for name in PATH. tool -// looks in dirs first, because Rex starts panes with a PATH without -// Homebrew or Go. +// the program, tool returns name, and the Updater looks for name in the +// PATH of its environment. tool looks in dirs first, because Rex starts +// panes with a PATH without Homebrew or Go. func tool(name string, dirs ...string) string { for _, dir := range dirs { path := filepath.Join(dir, name) @@ -249,15 +251,6 @@ func tool(name string, dirs ...string) string { return name } -// runCommand is the run of an Updater outside tests. -func runCommand(ctx context.Context, env []string, name string, args ...string) ([]byte, error) { - cmd := proc.Command(ctx, name, args...) - if env != nil { - cmd.Env = append(cmd.Environ(), env...) - } - return cmd.CombinedOutput() -} - // download downloads the archive of r for this system and checks it with // the checksums of r. Then it puts its binary in place of the file that // u.bin links to. @@ -391,11 +384,11 @@ func get(ctx context.Context, url string, limit int64) ([]byte, error) { return body, nil } -// Restart runs the rexdiff at bin with args in place of this process. The -// process ID and the terminal stay, so Rex sees the same program. Restart -// returns only if it fails. -func Restart(bin string, args []string) error { - return syscall.Exec(bin, append([]string{bin}, args...), os.Environ()) +// Restart runs the rexdiff at bin with args and the environment env in +// place of this process. The process ID and the terminal stay, so Rex sees +// the same program. Restart returns only if it fails. +func Restart(bin string, args, env []string) error { + return syscall.Exec(bin, append([]string{bin}, args...), env) } // newer reports whether the version tag is newer than the version have. diff --git a/update/update_test.go b/update/update_test.go index 5bbd13e..634752c 100644 --- a/update/update_test.go +++ b/update/update_test.go @@ -31,13 +31,14 @@ func mkdir(t *testing.T, dir string) string { } // detect returns the Updater of the rexdiff at bin, with the latest -// release at latest. A test that calls it cannot run in parallel. -func detect(t *testing.T, latest, bin, stamped string) *update.Updater { +// release at latest. Its environment has REXDIFF_LATEST_URL and the PATH +// /usr/bin:/bin, then the variables of env. A later variable wins. +func detect(t *testing.T, latest, bin, stamped string, env ...string) *update.Updater { t.Helper() - t.Setenv("REXDIFF_LATEST_URL", latest) - u := update.Detect(bin, stamped) + env = append([]string{"REXDIFF_LATEST_URL=" + latest, "PATH=/usr/bin:/bin"}, env...) + u := update.Detect(bin, stamped, env) if u == nil { - t.Fatalf("Detect(%s, %s) = nil, want an Updater", bin, stamped) + t.Fatalf("Detect(%s, %s, %q) = nil, want an Updater", bin, stamped, env) } return u } @@ -78,7 +79,7 @@ func TestVersion(t *testing.T) { {"", "0.1.0"}, } for _, tt := range tests { - if u := update.Detect(tt.bin, tt.stamped); u != nil { + if u := update.Detect(tt.bin, tt.stamped, nil); u != nil { t.Errorf("Detect(%q, %q) = %+v, want nil", tt.bin, tt.stamped, u) } } @@ -87,6 +88,7 @@ func TestVersion(t *testing.T) { // TestLatest checks Latest against a fake GitHub API, and which tags are // newer than the running version. func TestLatest(t *testing.T) { + t.Parallel() release := func(tag string) string { return `{"tag_name": "` + tag + `", "assets": [], "other": 1}` } @@ -121,6 +123,7 @@ func TestLatest(t *testing.T) { } for i, tt := range tests { t.Run(tt.name, func(t *testing.T) { + t.Parallel() u := detect(t, fmt.Sprint(base, "/", i), "/bin/rexdiff", tt.have) r, newer, err := u.Latest(t.Context()) if tt.errText != "" { @@ -140,12 +143,11 @@ func TestLatest(t *testing.T) { // TestInstallBrew checks the commands of a Homebrew install, and the check // of the new version. func TestInstallBrew(t *testing.T) { + t.Parallel() // The fake brew logs the flags of brew and its arguments. Rex starts // rexdiff with a PATH without Homebrew, so the brew beside the - // Caskroom comes first. - for _, k := range []string{"HOMEBREW_NO_ENV_HINTS", "NONINTERACTIVE", "HOMEBREW_NO_AUTO_UPDATE"} { - t.Setenv(k, "") - } + // Caskroom comes first. The environment of the Updater has none of the + // flags of brew. const logBrew = `echo "hints=$HOMEBREW_NO_ENV_HINTS ` + `ni=$NONINTERACTIVE auto=$HOMEBREW_NO_AUTO_UPDATE ${0##*/} $*" ` + `>> "${0%/*}/../calls"` + "\n" @@ -185,6 +187,7 @@ func TestInstallBrew(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + t.Parallel() prefix := t.TempDir() caskDir := mkdir(t, filepath.Join(prefix, "Caskroom", "rexdiff", "0.2.0")) cask := testgit.Script(t, caskDir, "rexdiff", "echo "+tt.version+"\n") @@ -197,14 +200,14 @@ func TestInstallBrew(t *testing.T) { if err := os.Symlink(cask, link); err != nil { t.Fatal(err) } - t.Setenv("PATH", filepath.Join(prefix, "path")+":/usr/bin:/bin") + pathEnv := "PATH=" + filepath.Join(prefix, "path") + ":/usr/bin:/bin" ctx, cancel := context.WithCancel(t.Context()) defer cancel() if tt.cancel { cancel() } - u := detect(t, "http://127.0.0.1:1/latest", link, "0.1.0") + u := detect(t, "http://127.0.0.1:1/latest", link, "0.1.0", pathEnv) err := u.Install(ctx, update.Release{Tag: "v0.2.0"}) failed := err != nil if tt.errText != "" { @@ -256,6 +259,7 @@ func archive(t *testing.T, content string) []byte { // the binary in the archive, and the check of its version. It also checks // the replacement of the target file of a link. func TestDownload(t *testing.T) { + t.Parallel() name := fmt.Sprintf("rexdiff-v0.2.0-%s-%s.tar.gz", runtime.GOOS, runtime.GOARCH) newBin := "#!/bin/sh\necho v0.2.0\n" good := archive(t, newBin) @@ -298,6 +302,7 @@ func TestDownload(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + t.Parallel() dir := t.TempDir() const oldBin = "echo v0.1.0\n" realDir := mkdir(t, filepath.Join(dir, "real")) diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index 06ec976..5a62963 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -6,13 +6,13 @@ import ( "fmt" "maps" "os" - "os/exec" "path/filepath" "slices" "strings" "testing" "time" + "github.com/rednafi/rexdiff/internal/proc" "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -197,7 +197,7 @@ func TestReadFileStaysInRoot(t *testing.T) { t.Fatal(err) } } - if err := exec.CommandContext(t.Context(), "mkfifo", filepath.Join(dir, "fifo")).Run(); err != nil { + if err := proc.Command(t.Context(), testgit.ToolEnv(t), "mkfifo", filepath.Join(dir, "fifo")).Run(); err != nil { t.Fatal(err) } bad := []string{"../secret", secret, "to-secret", "to-zero", "to-dir", "fifo"} @@ -321,6 +321,7 @@ func TestCommitsHostileSubject(t *testing.T) { // TestPullRequestBadJSON checks the output of gh that is not a normal pull // request. func TestPullRequestBadJSON(t *testing.T) { + t.Parallel() tests := []struct { name, out string wantErr error // nil for an error of any type @@ -338,10 +339,10 @@ func TestPullRequestBadJSON(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + t.Parallel() bin := t.TempDir() - fakePath(t, bin) fakeTool(t, bin, "gh", map[string]string{ghArgs: tt.out}) - r, _ := repoAt(t, "https://github.com/o/r") + r, _ := repoAt(t, testgit.ToolEnv(t, bin), "https://github.com/o/r") pr, err := r.PullRequest(t.Context(), vcs.Hosts{}) switch { case tt.ok && (err != nil || pr.Title != "T"): @@ -359,15 +360,18 @@ func TestPullRequestBadJSON(t *testing.T) { // before the deadline of ctx, with more set, as herdr-reviewr does with // its time budget. func TestGrepDeadline(t *testing.T) { - r, _ := newRepo(t) - bin := t.TempDir() - // The fake git prints one match and a cut record, then hangs. With - // SLOW set, it first waits past the budget. - testgit.Script(t, bin, "git", `[ -n "$SLOW" ] && /bin/sleep 0.3 + t.Parallel() + env, link := gitLink(t) + r, _ := newRepoEnv(t, env) + // The fake git takes the place of git after Open. It prints one match + // and a cut record, then hangs. With the file slow beside it, it first + // waits past the budget. + removeGit(t, link) + bin := filepath.Dir(link) + testgit.Script(t, bin, "git", `[ -e "${0%/*}/slow" ] && /bin/sleep 0.3 printf 'a.go\0001\000hit\nb.go\00012' exec /bin/sleep 10 `) - t.Setenv("PATH", bin) grep := func(timeout, budget time.Duration) ([]vcs.Match, bool, error) { ctx, cancel := context.WithTimeout(t.Context(), timeout) defer cancel() @@ -377,7 +381,7 @@ exec /bin/sleep 10 len(ms) != 1 || ms[0].Text != "hit" { t.Errorf("Grep past the budget = %+v, %v, %v, want the hit, more, no error", ms, more, err) } - t.Setenv("SLOW", "1") + testgit.WriteFile(t, bin, "slow", "") if ms, more, err := grep(5*time.Second, time.Millisecond); err != nil || !more || len(ms) != 1 { t.Errorf("Grep with no line at the budget = %+v, %v, %v, want the first hit, more", ms, more, err) } diff --git a/vcs/pr_test.go b/vcs/pr_test.go index 7212790..7484e7b 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -3,9 +3,6 @@ package vcs_test import ( "cmp" "errors" - "os" - "os/exec" - "path/filepath" "reflect" "slices" "strings" @@ -29,11 +26,11 @@ func fakeTool(t *testing.T, dir, name string, calls map[string]string) { testgit.Script(t, dir, name, script.String()) } -// repoAt returns the test repository, on the branch feat, with origin at -// the URL remote. -func repoAt(t *testing.T, remote string) (*vcs.Repo, string) { +// repoAt returns the test repository with the environment env, on the +// branch feat, with origin at the URL remote. +func repoAt(t *testing.T, env []string, remote string) (*vcs.Repo, string) { t.Helper() - r, dir := newRepo(t) + r, dir := newRepoEnv(t, env) testgit.Git(t, dir, "remote", "add", "origin", remote) return r, dir } @@ -48,11 +45,11 @@ func azArgs(branch string) string { return "repos pr list --source-branch " + branch + " --status all --top 1 --output json" } -// TestPullRequest checks the pull request that each forge tool gives. The -// fake tools are in PATH, so only the subtests run in parallel. +// TestPullRequest checks the pull request that each forge tool gives. func TestPullRequest(t *testing.T) { + t.Parallel() dir := t.TempDir() - fakePath(t, dir) + env := testgit.ToolEnv(t, dir) fakeTool(t, dir, "gh", map[string]string{ghArgs: `{ "number": 7, "title": "Add x", "state": "OPEN", "isDraft": true, "url": "https://github.com/o/r/pull/7", @@ -144,7 +141,7 @@ func TestPullRequest(t *testing.T) { for _, tt := range tests { t.Run(tt.remote, func(t *testing.T) { t.Parallel() - r, _ := repoAt(t, tt.remote) + r, _ := repoAt(t, env, tt.remote) pr, err := r.PullRequest(t.Context(), tt.hosts) if err != nil { t.Fatalf("PullRequest = %v, want no error", err) @@ -159,9 +156,10 @@ func TestPullRequest(t *testing.T) { // TestPullRequestErrors checks the error for a missing remote, an unknown // forge, a missing pull request, and a missing tool. func TestPullRequestErrors(t *testing.T) { - dir := t.TempDir() - fakePath(t, dir) - fakeTool(t, dir, "az", map[string]string{azArgs("none"): `[]`}) + t.Parallel() + bin := t.TempDir() + env := testgit.ToolEnv(t, bin) + fakeTool(t, bin, "az", map[string]string{azArgs("none"): `[]`}) const azure = "https://dev.azure.com/o/p/_git/r" const unsupported = "the remote is not on GitHub, GitLab, or Azure DevOps" corp := vcs.Hosts{GitLab: "Git.Corp"} @@ -195,7 +193,7 @@ func TestPullRequestErrors(t *testing.T) { // Two cases have the same remote, so the name has the branch. t.Run(cmp.Or(tt.remote, "no remote")+" on "+tt.branch, func(t *testing.T) { t.Parallel() - r, dir := newRepo(t) + r, dir := newRepoEnv(t, env) if tt.remote != "" { testgit.Git(t, dir, "remote", "add", "origin", tt.remote) } @@ -218,15 +216,15 @@ func TestPullRequestErrors(t *testing.T) { // TestPullRequestHostile checks that the text of a pull request has no // control characters. func TestPullRequestHostile(t *testing.T) { + t.Parallel() dir := t.TempDir() - fakePath(t, dir) const osc = `\u001b]0;owned\u0007` fakeTool(t, dir, "gh", map[string]string{ghArgs: `{ "number": 7, "title": "Add` + osc + `", "state": "OPEN", "body": "a` + osc + `\nb", "author": {"login": "ann` + osc + `"}, "comments": [{"author": {"login": "bob"}, "body": "x` + osc + `"}], "statusCheckRollup": [{"name": "t` + osc + `", "conclusion": "SUCCESS"}]}`}) - r, _ := repoAt(t, "https://github.com/o/r") + r, _ := repoAt(t, testgit.ToolEnv(t, dir), "https://github.com/o/r") pr, err := r.PullRequest(t.Context(), vcs.Hosts{}) if err != nil { t.Fatal(err) @@ -241,28 +239,15 @@ func TestPullRequestHostile(t *testing.T) { // TestNoPullRequest checks that a gh or a glab that finds no pull request // gives ErrNoPullRequest. Both exit with 1 and say so. func TestNoPullRequest(t *testing.T) { + t.Parallel() dir := t.TempDir() - fakePath(t, dir) + env := testgit.ToolEnv(t, dir) testgit.Script(t, dir, "gh", "echo 'no pull requests found for branch \"feat\"' >&2\nexit 1\n") testgit.Script(t, dir, "glab", "echo 'no open merge request available for \"feat\"' >&2\nexit 1\n") for _, remote := range []string{"https://github.com/o/r", "https://gitlab.com/o/r"} { - r, _ := repoAt(t, remote) + r, _ := repoAt(t, env, remote) if _, err := r.PullRequest(t.Context(), vcs.Hosts{}); !errors.Is(err, vcs.ErrNoPullRequest) { t.Errorf("PullRequest(%s) = %v, want ErrNoPullRequest", remote, err) } } } - -// fakePath sets PATH to dir and the system directories, and links git into -// dir. Then PATH has the fake forge tools and no real ones. -func fakePath(t *testing.T, dir string) { - t.Helper() - p, err := exec.LookPath("git") - if err != nil { - t.Fatal(err) - } - if err := os.Symlink(p, filepath.Join(dir, "git")); err != nil { - t.Fatal(err) - } - t.Setenv("PATH", strings.Join([]string{dir, "/bin", "/usr/bin"}, string(os.PathListSeparator))) -} diff --git a/vcs/repo.go b/vcs/repo.go index 9fe9d87..d58ef27 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -4,6 +4,10 @@ // A [Repo] compares trees. A tree is the ID of a git tree object. // [Repo.Snapshot] gets a tree of the working tree. [Repo.Diff] gets the files // that differ between two trees. +// +// [Open] takes the environment of git and of the forge tools as a value, +// as in [exec.Cmd.Env]. The package does not read the environment of the +// process. package vcs import ( @@ -48,7 +52,8 @@ var ( // Repo is a git repository. type Repo struct { root string - index string // the path of the real index + index string // the path of the real index + env []string // the environment of git and of the forge tools // snapMu guards the private index of Snapshot, in the directory // snapDir, or "" before the first Snapshot. @@ -56,9 +61,16 @@ type Repo struct { snapDir string } -// Open returns the repository that contains dir. -func Open(ctx context.Context, dir string) (*Repo, error) { - r := &Repo{root: dir} +// Open returns the repository that contains dir. The repository runs git +// and the forge tools with the environment env, and finds them in the +// PATH of env. Open does not change env. +func Open(ctx context.Context, dir string, env []string) (*Repo, error) { + // git gets the root in PWD. PWD must be an absolute path. + abs, err := filepath.Abs(dir) + if err != nil { + return nil, err + } + r := &Repo{root: abs, env: env} // Get each path with its own git process, because a path can have a // newline. A path can also end with a space, so remove only the last // newline. @@ -93,7 +105,7 @@ func (r *Repo) Close() error { func (r *Repo) Root() string { return r.root } // run runs git in the root directory and returns its standard output. env -// adds to the environment of the process. +// adds to the environment of the repository. func (r *Repo) run(ctx context.Context, env []string, args ...string) (string, error) { return r.runInput(ctx, env, nil, args...) } @@ -110,14 +122,14 @@ func (r *Repo) runInput(ctx context.Context, env []string, in io.Reader, args .. } // command returns the command "name args..." in the root directory. env -// adds to the environment of the process. The buffer gets the standard +// adds to the environment of the repository. The buffer gets the standard // error. func (r *Repo) command(ctx context.Context, env []string, name string, args ...string) (*exec.Cmd, *bytes.Buffer) { - cmd := proc.Command(ctx, name, args...) + // PWD is the directory of the command, as exec sets it for a nil Env. + // A copy keeps r.env as it is. + env = slices.Concat(r.env, []string{"PWD=" + r.root}, env) + cmd := proc.Command(ctx, env, name, args...) cmd.Dir = r.root - if env != nil { - cmd.Env = append(cmd.Environ(), env...) // Environ sets PWD to cmd.Dir - } var stderr bytes.Buffer cmd.Stderr = &stderr return cmd, &stderr diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 67d851f..2446fac 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -12,6 +12,7 @@ import ( "testing" "time" + "github.com/rednafi/rexdiff/internal/proc" "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -41,20 +42,34 @@ var testRepo = testgit.NewFixture(func(tb testing.TB, dir string) { }) // newRepo copies testRepo to a new directory, and returns the repository -// and its directory. +// and its directory. The repository has the environment of +// [testgit.ToolEnv]. func newRepo(t *testing.T) (*vcs.Repo, string) { + t.Helper() + return newRepoEnv(t, testgit.ToolEnv(t)) +} + +// newRepoEnv is like newRepo, but the repository has the environment env. +func newRepoEnv(t *testing.T, env []string) (*vcs.Repo, string) { t.Helper() dir := filepath.Join(t.TempDir(), "a repo ") // git keeps the space testRepo.Copy(t, dir) // Open from a subdirectory. Open must find the root. - return open(t, filepath.Join(dir, "build")), dir + return openEnv(t, filepath.Join(dir, "build"), env), dir } -// open opens the repository at dir, and closes it at the end of the test. +// open opens the repository at dir with the environment of +// [testgit.ToolEnv], and closes it at the end of the test. func open(t *testing.T, dir string) *vcs.Repo { t.Helper() - r, err := vcs.Open(t.Context(), dir) + return openEnv(t, dir, testgit.ToolEnv(t)) +} + +// openEnv is like open, but the repository has the environment env. +func openEnv(t *testing.T, dir string, env []string) *vcs.Repo { + t.Helper() + r, err := vcs.Open(t.Context(), dir, env) if err != nil { t.Fatal(err) } @@ -62,6 +77,24 @@ func open(t *testing.T, dir string) *vcs.Repo { return r } +// gitLink returns an environment with a PATH of only a new directory, and +// the link to git in that directory. A test removes the link to take git +// away from a repository that is open. +func gitLink(t *testing.T) (env []string, link string) { + t.Helper() + bin := t.TempDir() + testgit.LinkGit(t, bin) + return append(testgit.Env(), "PATH="+bin), filepath.Join(bin, "git") +} + +// removeGit removes the link to git of gitLink. +func removeGit(t *testing.T, link string) { + t.Helper() + if err := os.Remove(link); err != nil { + t.Fatal(err) + } +} + // snapshot returns the tree of the working tree. func snapshot(t *testing.T, r *vcs.Repo) string { t.Helper() @@ -301,7 +334,7 @@ func TestFilesInConflict(t *testing.T) { run("checkout", "-q", "main") testgit.WriteFile(t, dir, "f.txt", "main\n") run("commit", "-qam", "main") - cmd := exec.CommandContext(t.Context(), "git", "merge", "other") + cmd := proc.Command(t.Context(), testgit.ToolEnv(t), "git", "merge", "other") cmd.Dir = dir if err := cmd.Run(); err == nil { t.Fatal("git merge other: no error, want a conflict") @@ -406,8 +439,10 @@ func TestOwns(t *testing.T) { // TestOwnsWithoutGit checks that Owns fails without git. No git runs for // a path outside the root. func TestOwnsWithoutGit(t *testing.T) { - r, dir := newRepo(t) - t.Setenv("PATH", t.TempDir()) + t.Parallel() + env, link := gitLink(t) + r, dir := newRepoEnv(t, env) + removeGit(t, link) if _, err := r.Owns(t.Context(), dir); err == nil { t.Error("Owns without git gives no error") } @@ -503,7 +538,7 @@ func TestDiffRenameAndSubmodule(t *testing.T) { // TestOpenOutsideARepo checks that Open fails outside a repository. func TestOpenOutsideARepo(t *testing.T) { t.Parallel() - if _, err := vcs.Open(t.Context(), t.TempDir()); err == nil { + if _, err := vcs.Open(t.Context(), t.TempDir(), testgit.ToolEnv(t)); err == nil { t.Error("Open outside a repository: no error, want an error") } } @@ -518,7 +553,7 @@ func TestNewRepo(t *testing.T) { dir := filepath.Join(t.TempDir(), name) testgit.InitRepo(t, dir) testgit.WriteFile(t, dir, "a.txt", "one\n") - r, err := vcs.Open(t.Context(), dir) + r, err := vcs.Open(t.Context(), dir, testgit.ToolEnv(t)) if err != nil { t.Fatal(err) } diff --git a/vcs/watch_test.go b/vcs/watch_test.go index 1c2110e..f5a85d2 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -233,9 +233,11 @@ func TestWatcherNested(t *testing.T) { // TestWatcherRunsNoGit checks that a Watcher runs no git process while // nothing changes. func TestWatcherRunsNoGit(t *testing.T) { - r, _ := newRepo(t) + t.Parallel() + env, link := gitLink(t) + r, _ := newRepoEnv(t, env) w := newWatcher(t, r) - t.Setenv("PATH", t.TempDir()) + removeGit(t, link) for range 3 { ch, err := w.Changed(t.Context()) if err != nil || ch != (vcs.Change{}) { From 076e47856c6cfda983868b8283384002a68a608c Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 03:50:47 +0100 Subject: [PATCH 078/119] fix: the second soundness review The private index copies the real index again when it changes, and drops the files that git now ignores. It makes its directory again after a clean of the temporary directory, and a closed repository takes no snapshot. A reload that runs while the view changes, or while the comment box is open, does not show its result, and runs again. One turn check runs at a time. LookPath skips relative PATH entries, as exec.LookPath does. --- internal/proc/proc.go | 4 +- internal/proc/proc_test.go | 13 +++++ tui/model.go | 22 +++++++-- tui/turn.go | 5 ++ vcs/repo.go | 98 ++++++++++++++++++++++++++++++-------- vcs/repo_test.go | 20 ++++++++ 6 files changed, 137 insertions(+), 25 deletions(-) diff --git a/internal/proc/proc.go b/internal/proc/proc.go index dac7d62..996a504 100644 --- a/internal/proc/proc.go +++ b/internal/proc/proc.go @@ -69,7 +69,9 @@ func LookPath(env []string, file string) (string, error) { return "", &exec.Error{Name: file, Err: exec.ErrNotFound} } for dir := range strings.SplitSeq(Getenv(env, "PATH"), string(filepath.ListSeparator)) { - if dir == "" { + if !filepath.IsAbs(dir) { + // A relative entry, as ".", names a directory of the working + // tree that rexdiff shows. exec.LookPath refuses it too. continue } if path := filepath.Join(dir, file); executable(path) { diff --git a/internal/proc/proc_test.go b/internal/proc/proc_test.go index e4af64a..3c94311 100644 --- a/internal/proc/proc_test.go +++ b/internal/proc/proc_test.go @@ -170,4 +170,17 @@ func TestLookPath(t *testing.T) { if got, err := proc.LookPath(nil, "sh"); !errors.Is(err, exec.ErrNotFound) { t.Errorf("LookPath(nil, sh) = %q, %v, want exec.ErrNotFound", got, err) } + // A relative entry names a directory of the working directory, which + // can be the repository under review. + wd, err := os.Getwd() + if err != nil { + t.Fatal(err) + } + rel, err := filepath.Rel(wd, first) + if err != nil { + t.Fatal(err) + } + if got, err := proc.LookPath([]string{"PATH=" + rel}, "both"); !errors.Is(err, exec.ErrNotFound) { + t.Errorf("LookPath(PATH=%s, both) = %q, %v, want exec.ErrNotFound", rel, got, err) + } } diff --git a/tui/model.go b/tui/model.go index fd27b5d..6b65228 100644 --- a/tui/model.go +++ b/tui/model.go @@ -229,6 +229,8 @@ type model struct { reloadAt time.Time reloadRetry retryTimer loads reloads + // turnChecking is true while a check of the pending turn runs. + turnChecking bool tab tab scope Scope @@ -482,7 +484,11 @@ func (m *model) flash(s string) { // reload reads the changes of the scope again, even if the trees do not // change. -func (m *model) reload() { m.loads.want, m.loads.force = true, true } +// A reload that runs is then stale, because the view can change. +func (m *model) reload() { + l := &m.loads + l.want, l.force, l.stale = true, true, l.running +} // reloadIfChanged reads the changes of the scope again if the trees differ // from the shown trees. @@ -496,6 +502,7 @@ type reloads struct { running bool // the reload gen runs want bool // a reload is due force bool // the due reload shows the changes even if the trees are the same + stale bool // the view changes while the reload gen runs, so its result is old } // loadNow reads the changes at once, for the first screen. Nothing shows @@ -519,7 +526,7 @@ func (m *model) startReload() tea.Cmd { return nil } l.gen++ - l.running, l.want = true, false + l.running, l.want, l.stale = true, false, false in := m.reloadInput(l.force) l.force = false return func() tea.Msg { return in.run() } @@ -641,10 +648,17 @@ func (in reloadInput) changedFiles(ctx context.Context, from, to string) ([]chan // of the scope that show, and the error shows in their place only if no // files show. A change of the view during the reload starts one more. func (m *model) onChanges(msg changesMsg) { - if msg.gen != m.loads.gen { + l := &m.loads + if msg.gen != l.gen { + return + } + l.running = false + if l.stale || m.mode == modeComment { + // As in herdr-reviewr, the view does not change under the comment + // box. The reload runs again later. + l.want, l.stale = true, false return } - m.loads.running = false m.reloadAt = time.Now().Add(reloadPauseFactor * msg.took) m.retry(msg.err) note, err := msg.note, msg.err diff --git a/tui/turn.go b/tui/turn.go index ebf979b..23687a6 100644 --- a/tui/turn.go +++ b/tui/turn.go @@ -181,6 +181,10 @@ func (m *model) startTurn(ms []member) { // turn. onTurnCheck makes the turn the last turn if the working tree // differs from its start. func (m *model) checkTurnLater() tea.Cmd { + if m.turnChecking { + return nil // one check at a time + } + m.turnChecking = true p, repo, ctx := m.pending, m.repo, m.ctx return func() tea.Msg { ctx, cancel := context.WithTimeout(ctx, reloadTimeout) @@ -200,6 +204,7 @@ type turnCheckMsg struct { // onTurnCheck makes the turn of msg the last turn if it is still pending // and the working tree differs from its start. func (m *model) onTurnCheck(msg turnCheckMsg) { + m.turnChecking = false switch { case msg.err != nil: m.log.Warn("turn change check failed", "err", msg.err) diff --git a/vcs/repo.go b/vcs/repo.go index d58ef27..aad46d9 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -56,11 +56,17 @@ type Repo struct { env []string // the environment of git and of the forge tools // snapMu guards the private index of Snapshot, in the directory - // snapDir, or "" before the first Snapshot. - snapMu sync.Mutex - snapDir string + // snapDir, or "" before the first Snapshot. snapSeed is the file status + // of the real index at the last copy. + snapMu sync.Mutex + snapDir string + snapSeed string + closed bool } +// errClosed is the error of a Snapshot after Close. +var errClosed = errors.New("the repository is closed") + // Open returns the repository that contains dir. The repository runs git // and the forge tools with the environment env, and finds them in the // PATH of env. Open does not change env. @@ -94,7 +100,7 @@ func (r *Repo) Close() error { r.snapMu.Lock() defer r.snapMu.Unlock() dir := r.snapDir - r.snapDir = "" + r.snapDir, r.closed = "", true if dir == "" { return nil } @@ -234,23 +240,17 @@ func (r *Repo) MergeBaseCommit(ctx context.Context, base string) (string, error) func (r *Repo) Snapshot(ctx context.Context) (string, error) { r.snapMu.Lock() defer r.snapMu.Unlock() - if r.snapDir == "" { - dir, err := os.MkdirTemp("", "rexdiff-index-*") - if err != nil { - return "", err - } - // "add -A" makes any index match the working tree. The copy of the - // real index only saves the first hash of the tracked files. - if err := r.copyIndex(filepath.Join(dir, "index")); err != nil { - _ = os.RemoveAll(dir) - return "", err - } - r.snapDir = dir + if r.closed { + return "", errClosed + } + env, err := r.privateIndex() + if err != nil { + return "", fmt.Errorf("snapshot: %w", err) + } + if err := r.dropIgnored(ctx, env); err != nil { + return "", fmt.Errorf("snapshot: %w", err) } - // git reads a missing index file as empty, for example after a clean - // of the temporary directory. - env := []string{"GIT_INDEX_FILE=" + filepath.Join(r.snapDir, "index")} - _, err := r.run(ctx, env, "add", "-A", "--ignore-errors") + _, err = r.run(ctx, env, "add", "-A", "--ignore-errors") if exitedOne(err) { err = nil // git cannot add some files, but it adds the others } @@ -264,6 +264,64 @@ func (r *Repo) Snapshot(ctx context.Context) (string, error) { return strings.TrimSpace(out), nil } +// privateIndex returns the environment that points git at the private +// index of Snapshot. It copies the real index when the real index changes, +// for example after a commit or a "git add -f". A clean of the temporary +// directory makes a new directory. snapMu must be held. +func (r *Repo) privateIndex() ([]string, error) { + seed := "" + if st, err := os.Stat(r.index); err == nil { + seed = fmt.Sprint(st.Size(), st.ModTime().UnixNano()) + } + _, err := os.Stat(r.snapDir) + if r.snapDir == "" || err != nil || seed != r.snapSeed { + if r.snapDir != "" { + _ = os.RemoveAll(r.snapDir) + } + dir, err := os.MkdirTemp(proc.Getenv(r.env, "TMPDIR"), "rexdiff-index-*") + if err != nil { + return nil, err + } + if err := r.copyIndex(filepath.Join(dir, "index")); err != nil { + _ = os.RemoveAll(dir) + return nil, err + } + r.snapDir, r.snapSeed = dir, seed + } + return []string{"GIT_INDEX_FILE=" + filepath.Join(r.snapDir, "index")}, nil +} + +// dropIgnored removes from the private index of env the files that git +// ignores now and that the real index does not have. "add -A" keeps such +// files, for example after an edit of a .gitignore file. +func (r *Repo) dropIgnored(ctx context.Context, env []string) error { + ignored := []string{"ls-files", "-z", "-c", "-i", "--exclude-standard"} + out, err := r.run(ctx, env, ignored...) + if err != nil || out == "" { + return err + } + tracked, err := r.run(ctx, nil, ignored...) // force-added files stay + if err != nil { + return err + } + keep := map[string]bool{} + for p := range strings.SplitSeq(tracked, "\x00") { + keep[p] = true + } + var drop strings.Builder + for p := range strings.SplitSeq(strings.TrimSuffix(out, "\x00"), "\x00") { + if !keep[p] { + drop.WriteString(p + "\x00") + } + } + if drop.Len() == 0 { + return nil + } + _, err = r.runInput(ctx, env, strings.NewReader(drop.String()), + "rm", "--cached", "-q", "--ignore-unmatch", "--pathspec-from-file=-", "--pathspec-file-nul") + return err +} + // copyIndex copies the real index to dst. If there is no real index, it // does nothing. The copy keeps the modification time of the index. git // uses this time to find files that changed in the same second as the diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 2446fac..f2f065c 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -707,3 +707,23 @@ func TestGrepCancelled(t *testing.T) { t.Errorf("Grep with a cancelled context = %v, want %v", err, context.Canceled) } } + +// TestSnapshotFollowsIndex checks that a Snapshot after an earlier one +// drops a file that git now ignores, and keeps a file that the user adds +// with "git add -f". +func TestSnapshotFollowsIndex(t *testing.T) { + t.Parallel() + r, dir := newRepo(t) + testgit.WriteFile(t, dir, "build.log", "x\n") + testgit.WriteFile(t, dir, "keep.env", "k\n") + if got := uncommitted(t, r); got != "A.gitignore Ma.txt Abuild.log Akeep.env Anew.txt" { + t.Fatalf("Diff(HEAD, Snapshot) = %s, want A.gitignore Ma.txt Abuild.log Akeep.env Anew.txt", got) + } + testgit.WriteFile(t, dir, ".gitignore", "ignored.txt\nbuild/\n*.log\n*.env\n") + testgit.Git(t, dir, "add", ".gitignore") + testgit.Git(t, dir, "add", "-f", "keep.env") + testgit.Git(t, dir, "commit", "-qm", "ignore") + if got := uncommitted(t, r); got != "Ma.txt Anew.txt" { + t.Errorf("Diff(HEAD, Snapshot) after the ignore = %s, want Ma.txt Anew.txt", got) + } +} From 9fc1fdd22377c8c8e25188072f3fdba3f406c85b Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 04:10:35 +0100 Subject: [PATCH 079/119] test: no process environment in the tests, and the second style review testgit runs git with its own environment, so Main changes no process variable. The black-box harness gives rexdiff a clean environment. Checks stop a test before it can panic, no test drops an error, and the timing tests have wide margins. The update tests serve a fstest.MapFS. Names no longer hide the builtin new. --- diff/cell_test.go | 30 ++++++++---- diff/comment.go | 26 ++++++----- diff/comment_test.go | 54 +++++++++++++--------- diff/diff.go | 24 +++++----- diff/diff_test.go | 30 ++++++------ diff/fold_test.go | 6 +-- diff/fuzz_test.go | 24 +++++----- diff/hostile_test.go | 2 +- diff/review.go | 8 ++-- internal/diffview/diffview.go | 2 + internal/proc/proc.go | 2 +- internal/testgit/testgit.go | 87 ++++++++++++----------------------- rex/rex.go | 4 +- rex/rex_test.go | 11 ++++- test/files_test.go | 4 +- test/main_test.go | 10 +++- test/rex_test.go | 2 - test/rexdiff_test.go | 25 ++++++++-- test/upgrade_test.go | 2 +- tui/editor.go | 4 +- tui/find.go | 18 ++++---- tui/model.go | 8 ++-- tui/search.go | 3 +- update/update_test.go | 81 ++++++++++++++++++-------------- vcs/hostile_test.go | 48 +++++++++++++------ vcs/pr_test.go | 68 +++++++++++++++++++++------ vcs/repo.go | 3 +- vcs/repo_test.go | 32 ++++++++----- vcs/watch.go | 8 ++-- vcs/watch_test.go | 9 ++++ 30 files changed, 376 insertions(+), 259 deletions(-) diff --git a/diff/cell_test.go b/diff/cell_test.go index 39177ce..a041ed4 100644 --- a/diff/cell_test.go +++ b/diff/cell_test.go @@ -22,11 +22,21 @@ func screenRune(plain string, x int) (rune, bool) { return 0, false } +// plainLine returns line i of d without the escapes. It stops the test if d +// has no line i. +func plainLine(t *testing.T, d *diff.Diff, i int) string { + t.Helper() + if i < 0 || i >= len(d.Lines) { + t.Fatalf("line %d of a diff with %d lines", i, len(d.Lines)) + } + return ansi.Strip(d.Lines[i]) +} + // column returns the column of the first cell of needle in line i of d. // With last, it finds the last needle. func column(t *testing.T, d *diff.Diff, i int, needle string, last bool) int { t.Helper() - plain := ansi.Strip(d.Lines[i]) + plain := plainLine(t, d, i) k := strings.Index(plain, needle) if last { k = strings.LastIndex(plain, needle) @@ -41,11 +51,11 @@ func column(t *testing.T, d *diff.Diff, i int, needle string, last bool) int { // the split layout, and a file. func TestCell(t *testing.T) { t.Parallel() - const old, new = "a\n\told_name := 1\n", "a\n\tnew_name := 1\n" - u := diff.Render("x.go", old, new, diff.Options{Width: 80}) - off := diff.Render("x.go", old, new, diff.Options{Width: 80, Offset: 6}) - s := diff.Render("x.go", old, new, diff.Options{Width: 80, Split: true}) - f := diff.RenderFile("x.go", new, diff.Options{Width: 80}) + const before, after = "a\n\told_name := 1\n", "a\n\tnew_name := 1\n" + u := diff.Render("x.go", before, after, diff.Options{Width: 80}) + off := diff.Render("x.go", before, after, diff.Options{Width: 80, Offset: 6}) + s := diff.Render("x.go", before, after, diff.Options{Width: 80, Split: true}) + f := diff.RenderFile("x.go", after, diff.Options{Width: 80}) tests := []struct { name string d *diff.Diff @@ -106,14 +116,14 @@ func TestCellMatchesScreen(t *testing.T) { words = append(words, "w"+string(rune('a'+i%26))+strings.Repeat("x", i%4)) } long := "\t" + strings.Join(words, " ") + " 日本 end" - old, new := "a\nb\n", "a\n"+long+"\nb\n" + before, after := "a\nb\n", "a\n"+long+"\nb\n" opts := map[string]diff.Options{ "cut": {Width: 60}, "offset": {Width: 60, Offset: 13}, "wrap": {Width: 60, Wrap: true}, } - src := map[diff.Side][]string{diff.SideOld: diff.Lines(old), diff.SideNew: diff.Lines(new)} - for _, tt := range renderers(old, new) { + src := map[diff.Side][]string{diff.SideOld: diff.Lines(before), diff.SideNew: diff.Lines(after)} + for _, tt := range renderers(before, after) { t.Run(tt.name, func(t *testing.T) { t.Parallel() for on, o := range opts { @@ -206,7 +216,7 @@ func TestCellOffsetInWideChar(t *testing.T) { } { row := len(d.Rows) - 1 for char, needle := range []rune(line) { - if !strings.ContainsRune(ansi.Strip(d.Lines[row]), needle) { + if !strings.ContainsRune(plainLine(t, d, row), needle) { continue } x := column(t, d, row, string(needle), false) diff --git a/diff/comment.go b/diff/comment.go index e216fad..ecdf841 100644 --- a/diff/comment.go +++ b/diff/comment.go @@ -43,15 +43,16 @@ type Anchor struct { } // NewComment returns a comment with no text on side s of the file at path. -// Rows are rows of the [Diff] of old and new. Start and End are the first and -// the last line of the rows on side s. They are 0 if no row has a line on s. +// Rows are rows of the [Diff] of before and after. Start and End are the +// first and the last line of the rows on side s. They are 0 if no row has +// a line on s. // // In the diff rows of the comment, equal, deleted, and inserted lines start -// with " ", "-", and "+". The text comes from old and new, so tabs stay. In -// each block of changes, deleted lines come before inserted lines, also in -// the split layout. Continued rows add nothing. -func NewComment(path string, s Side, rows []Row, old, new string) Comment { - c := Comment{Path: path, Side: s, snippet: snippet(rows, old, new)} +// with " ", "-", and "+". The text comes from before and after, so tabs +// stay. In each block of changes, deleted lines come before inserted +// lines, also in the split layout. Continued rows add nothing. +func NewComment(path string, s Side, rows []Row, before, after string) Comment { + c := Comment{Path: path, Side: s, snippet: snippet(rows, before, after)} for _, r := range rows { n := r.Line(s) if n == 0 { @@ -65,7 +66,7 @@ func NewComment(path string, s Side, rows []Row, old, new string) Comment { if c.Start == 0 { return c } - lines := Lines(version(s, old, new)) + lines := Lines(version(s, before, after)) c.code = slices.Clone(lines[min(c.Start-1, len(lines)):min(c.End, len(lines))]) return c } @@ -167,12 +168,13 @@ func (cs *Comments) Count(a Anchor, path string) int { return n } -// version returns old for the [SideOld] side, and new for the [SideNew] side. -func version(s Side, old, new string) string { +// version returns before for the [SideOld] side, and after for the +// [SideNew] side. +func version(s Side, before, after string) string { if s == SideOld { - return old + return before } - return new + return after } // savedComment is a [Comment] with its private fields, for MarshalJSON. diff --git a/diff/comment_test.go b/diff/comment_test.go index fc8e266..5d29094 100644 --- a/diff/comment_test.go +++ b/diff/comment_test.go @@ -2,6 +2,8 @@ package diff_test import ( "encoding/json/v2" + "errors" + "os/exec" "path/filepath" "slices" "strings" @@ -12,11 +14,11 @@ import ( "github.com/rednafi/rexdiff/internal/testgit" ) -// comment returns a comment with text on all rows of the diff of old and -// new. -func comment(path string, s diff.Side, old, new, text string) diff.Comment { - rows := diff.Render(path, old, new, diff.Options{}).Rows - c := diff.NewComment(path, s, rows, old, new) +// comment returns a comment with text on all rows of the diff of before +// and after. +func comment(path string, s diff.Side, before, after, text string) diff.Comment { + rows := diff.Render(path, before, after, diff.Options{}).Rows + c := diff.NewComment(path, s, rows, before, after) c.Text = text return c } @@ -69,18 +71,18 @@ func TestReviewMatchesHerdrReviewr(t *testing.T) { // TestReviewContinuedRows checks a comment on only continued rows. func TestReviewContinuedRows(t *testing.T) { t.Parallel() - old, new := "", strings.Repeat("word ", 20)+"\n" - d := diff.Render("a.go", old, new, diff.Options{Width: 30, Wrap: true}) + before, after := "", strings.Repeat("word ", 20)+"\n" + d := diff.Render("a.go", before, after, diff.Options{Width: 30, Wrap: true}) var cont []diff.Row for _, r := range d.Rows { if r.Continued { cont = append(cont, r) } } - c := diff.NewComment("a.go", diff.SideNew, cont, old, new) + c := diff.NewComment("a.go", diff.SideNew, cont, before, after) c.Text = "long" // The comment has no diff lines, so Review writes the lines of its range. - want := "a.go:1\n+" + strings.TrimSuffix(new, "\n") + "\nlong" + want := "a.go:1\n+" + strings.TrimSuffix(after, "\n") + "\nlong" if got := review(c); len(cont) == 0 || got != want { t.Errorf("%d continued rows, Review = \n%s\nwant:\n%s", len(cont), got, want) @@ -139,14 +141,14 @@ func TestComments(t *testing.T) { // layouts, on each side. func TestNewComment(t *testing.T) { t.Parallel() - old := "a\nb\nc\nd\n" - new := "a\nB\nC\nd\n" + before := "a\nb\nc\nd\n" + after := "a\nB\nC\nd\n" for _, split := range []bool{false, true} { - rows := diff.Render("x.txt", old, new, diff.Options{Split: split}).Rows + rows := diff.Render("x.txt", before, after, diff.Options{Split: split}).Rows // The rows from "a" to "d". lo := slices.IndexFunc(rows, isEqual) for _, s := range []diff.Side{diff.SideNew, diff.SideOld} { - c := diff.NewComment("x.txt", s, rows[lo:], old, new) + c := diff.NewComment("x.txt", s, rows[lo:], before, after) if c.Path != "x.txt" || c.Side != s || c.Start != 1 || c.End != 4 { t.Errorf("split %v, side %d: %+v, want lines 1-4", split, s, c) } @@ -167,15 +169,15 @@ func TestNewComment(t *testing.T) { ins = append(ins, r) } } - got := diff.NewComment("x.txt", diff.SideNew, ins, old, new) + got := diff.NewComment("x.txt", diff.SideNew, ins, before, after) if got.Start != 2 || got.End != 3 { t.Errorf("split %v, the new lines: %+v, want lines 2-3", split, got) } } // A hunk header has no line. - rows := diff.Render("x.txt", old, new, diff.Options{}).Rows + rows := diff.Render("x.txt", before, after, diff.Options{}).Rows hunk := rows[:slices.IndexFunc(rows, isEqual)] - got := diff.NewComment("x.txt", diff.SideNew, hunk, old, new) + got := diff.NewComment("x.txt", diff.SideNew, hunk, before, after) if len(hunk) == 0 || got.Start != 0 || got.End != 0 { t.Errorf("a hunk header %v: %+v, want no lines", hunk, got) } @@ -185,19 +187,19 @@ func TestNewComment(t *testing.T) { // text and tabs, in both layouts. func TestSnippetIsTheRealDiff(t *testing.T) { t.Parallel() - old := "func a() {\n\treturn 1\n}\n" - new := "func a() {\n\t// two\n\treturn 2\n}\n" + before := "func a() {\n\treturn 1\n}\n" + after := "func a() {\n\t// two\n\treturn 2\n}\n" want := " func a() {\n-\treturn 1\n+\t// two\n+\treturn 2\n }" for _, split := range []bool{false, true} { - d := diff.Render("x.go", old, new, diff.Options{Split: split}) - got := strings.Join(snippet(d.Rows, old, new), "\n") + d := diff.Render("x.go", before, after, diff.Options{Split: split}) + got := strings.Join(snippet(d.Rows, before, after), "\n") if got != want { t.Errorf("split %v: snippet = \n%s\nwant:\n%s", split, got, want) } } dir := t.TempDir() - for name, src := range map[string]string{"old": old, "new": new} { + for name, src := range map[string]string{"old": before, "new": after} { testgit.WriteFile(t, dir, name, src) } // git diff exits with 1 when the files differ. @@ -207,7 +209,10 @@ func TestSnippetIsTheRealDiff(t *testing.T) { filepath.Join(dir, "old"), filepath.Join(dir, "new"), ) - out, _ := git.Output() + out, err := git.Output() + if ee, ok := errors.AsType[*exec.ExitError](err); err != nil && (!ok || ee.ExitCode() != 1) { + t.Fatalf("git diff --no-index: %v", err) + } _, body, _ := strings.Cut(string(out), "@@\n") if strings.TrimSuffix(body, "\n") != want { t.Errorf("git diff = \n%s\nwant:\n%s", body, want) @@ -245,7 +250,10 @@ func TestCommentsJSON(t *testing.T) { t.Fatalf("UnmarshalJSON of an old file: %v", err) } c := cs2.Find(1) - if c == nil || c.Anchor != (diff.Anchor{InDiff: true}) || c.Start != 2 { + if c == nil { + t.Fatal("Find(1) = nil, want the comment of an old file") + } + if c.Anchor != (diff.Anchor{InDiff: true}) || c.Start != 2 { t.Errorf("comment of an old file = %+v, want lines 2-3 on a diff", c) } back.SetOldRev("x..y") diff --git a/diff/diff.go b/diff/diff.go index eb02481..333e0b8 100644 --- a/diff/diff.go +++ b/diff/diff.go @@ -117,12 +117,12 @@ type Diff struct { wrap bool } -// Render compares the old and the new content of the file at path. The path -// selects the syntax highlighter. -func Render(path, old, new string, o Options) *Diff { +// Render compares before, the old content of the file at path, with after, +// its new content. The path selects the syntax highlighter. +func Render(path, before, after string, o Options) *Diff { dv := diffview.New(). - Before(path, old). - After(path, new). + Before(path, before). + After(path, after). Width(o.Width). XOffset(o.Offset) if o.Cache != nil { @@ -144,7 +144,7 @@ func Render(path, old, new string, o Options) *Diff { o.Theme.Green, o.Theme.Red, o.Theme.dark())) out, rows, g := dv.Render() - d := &Diff{split: o.Split, src: [2]string{old, new}, wrap: o.Wrap} + d := &Diff{split: o.Split, src: [2]string{before, after}, wrap: o.Wrap} if !o.Wrap { d.offset = o.Offset } @@ -205,12 +205,12 @@ func (d *Diff) SideAt(x int) (s Side, onNumber bool) { return SideNew, x < d.oldNum+d.newNum } -// Count returns the number of lines that a change from old to new adds and -// deletes. It ignores the difference between CRLF and LF line endings. -func Count(old, new string) (added, deleted int) { - old = strings.ReplaceAll(old, "\r\n", "\n") - new = strings.ReplaceAll(new, "\r\n", "\n") - u, err := udiff.ToUnifiedDiff("", "", old, udiff.Lines(old, new), 0) +// Count returns the number of lines that a change from before to after adds +// and deletes. It ignores the difference between CRLF and LF line endings. +func Count(before, after string) (added, deleted int) { + before = strings.ReplaceAll(before, "\r\n", "\n") + after = strings.ReplaceAll(after, "\r\n", "\n") + u, err := udiff.ToUnifiedDiff("", "", before, udiff.Lines(before, after), 0) if err != nil { return 0, 0 } diff --git a/diff/diff_test.go b/diff/diff_test.go index 7dedde3..dc96ef4 100644 --- a/diff/diff_test.go +++ b/diff/diff_test.go @@ -19,9 +19,9 @@ const ( // snippet returns the diff lines of a comment on rows, as // [diff.Comments.Review] writes them. -func snippet(rows []diff.Row, old, new string) []string { +func snippet(rows []diff.Row, before, after string) []string { var cs diff.Comments - cs.Add(diff.NewComment("x", diff.SideNew, rows, old, new)) + cs.Add(diff.NewComment("x", diff.SideNew, rows, before, after)) lines := strings.Split(cs.Review(""), "\n") return lines[1 : len(lines)-1] // not the location and the empty text } @@ -38,25 +38,25 @@ func kinds(rows []diff.Row) string { return b.String() } -// renderer is a way to show the versions old and new. +// renderer is a way to show two versions of a file. type renderer struct { name string render func(o diff.Options) *diff.Diff } -// renderers returns the unified and the split diff of old and new, and the -// file new. -func renderers(old, new string) []renderer { +// renderers returns the unified and the split diff of before and after, +// and the file after. +func renderers(before, after string) []renderer { return []renderer{ {"unified", func(o diff.Options) *diff.Diff { - return diff.Render("x.go", old, new, o) + return diff.Render("x.go", before, after, o) }}, {"split", func(o diff.Options) *diff.Diff { o.Split = true - return diff.Render("x.go", old, new, o) + return diff.Render("x.go", before, after, o) }}, {"file", func(o diff.Options) *diff.Diff { - return diff.RenderFile("x.go", new, o) + return diff.RenderFile("x.go", after, o) }}, } } @@ -153,11 +153,11 @@ func TestRenderKinds(t *testing.T) { func TestRenderTabsAndOffset(t *testing.T) { t.Parallel() d := diff.Render("x.go", "", "\tx := 1\n", diff.Options{Width: 80}) - if got := ansi.Strip(d.Lines[1]); !strings.Contains(got, "▌ x := 1") { + if got := plainLine(t, d, 1); !strings.Contains(got, "▌ x := 1") { t.Errorf("tab: line = %q, want %q in it", got, "▌ x := 1") } d = diff.Render("x.go", "", "\tx := 1\n", diff.Options{Width: 80, Offset: 6}) - got := ansi.Strip(d.Lines[1]) + got := plainLine(t, d, 1) if strings.Contains(got, "x :=") || !strings.Contains(got, "= 1") { t.Errorf("offset 6: line = %q, want \"= 1\" and no \"x :=\"", got) } @@ -222,7 +222,7 @@ func TestMarks(t *testing.T) { } // With a scroll to the right, an ellipsis shows after the bar. d := diff.Render("x.txt", "", "abcdefgh\n", diff.Options{Width: 40, Offset: 2}) - if got := ansi.Strip(d.Lines[1]); !strings.Contains(got, "▌…cdefgh") { + if got := plainLine(t, d, 1); !strings.Contains(got, "▌…cdefgh") { t.Errorf("offset: line = %q, want ▌…cdefgh", got) } // The review text of a comment uses + and - for both kinds of mark. @@ -343,9 +343,9 @@ func TestRenderFile(t *testing.T) { func TestWrap(t *testing.T) { t.Parallel() long := "x := []string{" + strings.Repeat(`"word", `, 12) + "}" - old, new := "a\nb\n", "a\n"+long+"\nb\n" + before, after := "a\nb\n", "a\n"+long+"\nb\n" const width = 40 - for _, tt := range renderers(old, new) { + for _, tt := range renderers(before, after) { t.Run(tt.name, func(t *testing.T) { t.Parallel() cut := tt.render(diff.Options{Width: width}) @@ -382,7 +382,7 @@ func TestWrap(t *testing.T) { text.String(), long) } // Wrap does not change the snippet of a comment. - got, want := snippet(d.Rows, old, new), snippet(cut.Rows, old, new) + got, want := snippet(d.Rows, before, after), snippet(cut.Rows, before, after) if !slices.Equal(got, want) { t.Errorf("snippet with wrap = %q, want %q", got, want) } diff --git a/diff/fold_test.go b/diff/fold_test.go index 0fba112..ec1d143 100644 --- a/diff/fold_test.go +++ b/diff/fold_test.go @@ -57,7 +57,7 @@ func headers(d *diff.Diff) string { // header below it. func TestFolds(t *testing.T) { t.Parallel() - old, new := numbered(40), numbered(40, 10, 30) + before, after := numbered(40), numbered(40, 10, 30) header := func(o, n, lines int) []string { return []string{foldText(diff.Fold{Old: o, New: n, Lines: lines})} } lines := func(lo, hi int) []string { var out []string @@ -96,7 +96,7 @@ func TestFolds(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() o := diff.Options{Width: 60, Expanded: tt.expanded} - d := diff.Render("f.txt", old, new, o) + d := diff.Render("f.txt", before, after, o) if got := layout(d); !slices.Equal(got, tt.want) { t.Errorf("layout = \n%v\nwant:\n%v", got, tt.want) } @@ -117,7 +117,7 @@ func TestFolds(t *testing.T) { "… ⋯ 13 unmodified lines @@ -27,7 +27,7 @@\n" + "… ⋯ 7 unmodified lines"}, } { - d := diff.Render("f.txt", old, new, tt.o) + d := diff.Render("f.txt", before, after, tt.o) if got := headers(d); got != tt.want { t.Errorf("split %v: headers = \n%s\nwant:\n%s", tt.o.Split, got, tt.want) diff --git a/diff/fuzz_test.go b/diff/fuzz_test.go index 607b9b0..027936e 100644 --- a/diff/fuzz_test.go +++ b/diff/fuzz_test.go @@ -82,9 +82,9 @@ func checkLines(t *testing.T, d *diff.Diff, o diff.Options) { } // checkRows checks that each row points at real lines, in order. -func checkRows(t *testing.T, rows []diff.Row, old, new string) { +func checkRows(t *testing.T, rows []diff.Row, before, after string) { t.Helper() - nOld, nNew := len(diff.Lines(old)), len(diff.Lines(new)) + nOld, nNew := len(diff.Lines(before)), len(diff.Lines(after)) lastOld, lastNew := 0, 0 for i, r := range rows { if r.Old < 0 || r.Old > nOld || r.New < 0 || r.New > nNew { @@ -120,15 +120,15 @@ func FuzzRender(f *testing.F) { f.Fuzz(func( t *testing.T, p uint8, - old, new string, + before, after string, layout, width, offset uint8, colored bool, ) { o := fuzzOptions(layout, width, offset, colored) - d := diff.Render(paths[int(p)%len(paths)], old, new, o) + d := diff.Render(paths[int(p)%len(paths)], before, after, o) checkLines(t, d, o) - checkRows(t, d.Rows, old, new) - if o.Width == 0 && o.Offset == 0 && !strings.Contains(old+new, "…") { + checkRows(t, d.Rows, before, after) + if o.Width == 0 && o.Offset == 0 && !strings.Contains(before+after, "…") { // With no width limit, no line is cut. for i, l := range d.Lines { cut := strings.Contains(ansi.Strip(l), "…") @@ -138,14 +138,14 @@ func FuzzRender(f *testing.F) { } } - added, deleted := diff.Count(old, new) + added, deleted := diff.Count(before, after) if (added == 0 && deleted == 0) != (len(d.Lines) == 0) { t.Fatalf("Count = %d, %d and Render has %d lines, "+ "want zero counts only for zero lines", added, deleted, len(d.Lines)) } var plus, minus int - for _, l := range snippet(d.Rows, old, new) { + for _, l := range snippet(d.Rows, before, after) { switch l[0] { case '+': plus++ @@ -166,11 +166,11 @@ func FuzzSnippetSameInLayouts(f *testing.F) { f.Add(oldSrc, newSrc) f.Add("a\nb\nc\nd\n", "x\nb\ny\nz\nd\n") f.Add("\tx\r\n", "\ty\n") - f.Fuzz(func(t *testing.T, old, new string) { - u := diff.Render("x.txt", old, new, diff.Options{}) + f.Fuzz(func(t *testing.T, before, after string) { + u := diff.Render("x.txt", before, after, diff.Options{}) o := diff.Options{Split: true, Width: 30, Wrap: true} - s := diff.Render("x.txt", old, new, o) - got, want := snippet(s.Rows, old, new), snippet(u.Rows, old, new) + s := diff.Render("x.txt", before, after, o) + got, want := snippet(s.Rows, before, after), snippet(u.Rows, before, after) if !slices.Equal(got, want) { t.Fatalf("split snippet = %q, want the unified snippet %q", got, want) diff --git a/diff/hostile_test.go b/diff/hostile_test.go index f256e6e..9ac0746 100644 --- a/diff/hostile_test.go +++ b/diff/hostile_test.go @@ -52,7 +52,7 @@ func TestEscapesAreVisible(t *testing.T) { } for _, tt := range tests { d := diff.Render("x.txt", "", tt.src, diff.Options{}) - if got := ansi.Strip(d.Lines[1]); !strings.Contains(got, tt.want) { + if got := plainLine(t, d, 1); !strings.Contains(got, tt.want) { t.Errorf("Render(%q) = %q, want it to show %q", tt.src, got, tt.want) } f := diff.RenderFile("x.txt", tt.src, diff.Options{}) diff --git a/diff/review.go b/diff/review.go index 12931ff..1ee592c 100644 --- a/diff/review.go +++ b/diff/review.go @@ -8,7 +8,9 @@ import ( // Review returns the comments as herdr-reviewr text for a coding agent. It // writes the prefix, if not empty, then the comments in [Comments.All] order. -// Blank lines separate them. The text has no control characters. A comment is: +// Blank lines separate them. The text has no control characters. +// +// This is an example of a comment: // // a.go:3-4 // x := 1 @@ -55,8 +57,8 @@ func format(c *Comment) string { } // snippet returns rows as unified diff lines. See [NewComment]. -func snippet(rows []Row, old, new string) []string { - oldLines, newLines := Lines(old), Lines(new) +func snippet(rows []Row, before, after string) []string { + oldLines, newLines := Lines(before), Lines(after) line := func(ls []string, n int) string { if n >= 1 && n-1 < len(ls) { return ls[n-1] diff --git a/internal/diffview/diffview.go b/internal/diffview/diffview.go index 6cfcbb8..a9f7409 100644 --- a/internal/diffview/diffview.go +++ b/internal/diffview/diffview.go @@ -35,11 +35,13 @@ const ( symDelete = "- " ) +// file is a path and its content. type file struct { path string content string } +// layout is the unified or the split layout. type layout int const ( diff --git a/internal/proc/proc.go b/internal/proc/proc.go index 996a504..2a42ff8 100644 --- a/internal/proc/proc.go +++ b/internal/proc/proc.go @@ -68,7 +68,7 @@ func LookPath(env []string, file string) (string, error) { } return "", &exec.Error{Name: file, Err: exec.ErrNotFound} } - for dir := range strings.SplitSeq(Getenv(env, "PATH"), string(filepath.ListSeparator)) { + for dir := range strings.SplitSeq(Getenv(env, "PATH"), string(os.PathListSeparator)) { if !filepath.IsAbs(dir) { // A relative entry, as ".", names a directory of the working // tree that rexdiff shows. exec.LookPath refuses it too. diff --git a/internal/testgit/testgit.go b/internal/testgit/testgit.go index 8c4039c..2b431f5 100644 --- a/internal/testgit/testgit.go +++ b/internal/testgit/testgit.go @@ -11,69 +11,56 @@ import ( "strings" "sync" "testing" + + "github.com/rednafi/rexdiff/internal/proc" ) var ( // root is the directory of the fixtures. It is "" until Main runs. root string // gitPath is the path of git, from the PATH of the process. It is "" - // until Main runs. + // until Main runs, and also if PATH has no git. gitPath string ) -// Main runs the tests of m in a git environment that ignores the setup of -// the user. Each package that runs git calls it from its TestMain. -// -// Git reads no global or system config, so no hooksPath, signing, -// fsmonitor, or diff setting applies. A new repository gets no hooks from -// a template. The variables that point git to another repository, or that -// add config, are unset. HOME and XDG_CONFIG_HOME are a new directory, so -// no ignore or attributes file of the user applies. The commits have a -// fixed author. +// Main runs the tests of m. Each package that runs git calls it from its +// TestMain. Main does not change the environment of the process. // -// Main finds git in the PATH of the process, before the tests run. A test -// that gives a library an environment of its own gets git from -// [ToolEnv] or [LinkGit]. +// Main finds git in the PATH of the process, before the tests run. If +// PATH has no git, each test that uses a helper of this package skips. +// The helpers run git with [ToolEnv], so the setup of the user does not +// apply. The tests also need /bin/sh and the tools in /usr/bin and /bin. func Main(m *testing.M) { dir, err := os.MkdirTemp("", "testgit") if err != nil { panic(err) } defer func() { _ = os.RemoveAll(dir) }() - path, err := exec.LookPath("git") - if err != nil { - panic(err) - } - if err := os.Mkdir(filepath.Join(dir, "bin"), 0o755); err != nil { - panic(err) - } - if err := os.Symlink(path, filepath.Join(dir, "bin", "git")); err != nil { - panic(err) - } - gitPath = path - env := append(Env(), "HOME="+dir, "XDG_CONFIG_HOME="+dir) - for _, kv := range env { - k, v, _ := strings.Cut(kv, "=") - if err := os.Setenv(k, v); err != nil { + if path, err := exec.LookPath("git"); err == nil { + if err := os.Mkdir(filepath.Join(dir, "bin"), 0o755); err != nil { panic(err) } - } - for _, k := range unset { - if err := os.Unsetenv(k); err != nil { + if err := os.Symlink(path, filepath.Join(dir, "bin", "git")); err != nil { panic(err) } + gitPath = path } root = dir m.Run() } -// Env returns the variables that Main sets, as "key=value" pairs. A test -// that runs a program with an environment of its own adds them. An empty -// GIT_TEMPLATE_DIR copies no template. +// Env returns the git variables of a test, as "key=value" pairs. A test +// that runs a program with an environment of its own adds them. +// +// Git reads no global or system config, so no hooksPath, signing, +// fsmonitor, or diff setting applies. Git reads no system attributes +// file. An empty GIT_TEMPLATE_DIR copies no template, so a new repository +// gets no hooks. The commits have a fixed author. func Env() []string { return []string{ "GIT_CONFIG_GLOBAL=" + os.DevNull, "GIT_CONFIG_NOSYSTEM=1", + "GIT_ATTR_NOSYSTEM=1", "GIT_TEMPLATE_DIR=", "GIT_AUTHOR_NAME=t", "GIT_AUTHOR_EMAIL=t@t", @@ -103,37 +90,22 @@ func LinkGit(tb testing.TB, dir string) { } } -// unset are the variables that make git use another repository, more -// config, or another diff program. -var unset = []string{ - "GIT_DIR", - "GIT_WORK_TREE", - "GIT_INDEX_FILE", - "GIT_OBJECT_DIRECTORY", - "GIT_ALTERNATE_OBJECT_DIRECTORIES", - "GIT_COMMON_DIR", - "GIT_NAMESPACE", - "GIT_CONFIG", - "GIT_CONFIG_COUNT", - "GIT_CONFIG_PARAMETERS", - "GIT_EXTERNAL_DIFF", - "GIT_DIFF_OPTS", -} - -// ready fails tb if Main does not run. +// ready fails tb if Main does not run. It skips tb if PATH has no git. func ready(tb testing.TB) { tb.Helper() if root == "" { tb.Fatal("testgit: TestMain does not call testgit.Main") } + if gitPath == "" { + tb.Skip("testgit: git is not on PATH") + } } -// Git runs git in dir and returns its standard output. It fails tb if -// git fails. +// Git runs git in dir with [ToolEnv] and returns its standard output. It +// fails tb if git fails. func Git(tb testing.TB, dir string, args ...string) string { tb.Helper() - ready(tb) - cmd := exec.CommandContext(tb.Context(), "git", args...) + cmd := proc.Command(tb.Context(), ToolEnv(tb), "git", args...) cmd.Dir = dir out, err := cmd.Output() if err != nil { @@ -194,7 +166,8 @@ func NewFixture(build func(tb testing.TB, dir string)) *Fixture { } // Copy copies the repository of f to dir. The first call makes the -// repository with the build function of f. +// repository with the build function of f. If the build fails, tb of the +// first call gets the failure, and each later call fails. func (f *Fixture) Copy(tb testing.TB, dir string) { tb.Helper() ready(tb) diff --git a/rex/rex.go b/rex/rex.go index 2f5cc01..01958b3 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -62,8 +62,8 @@ func (c *Client) Block() string { return c.block } // binFromEnv returns the path of the rex command in env, or "" for the rex // in PATH. Rex sets REX_BIN_DIR in its terminals. Other programs, for // example brew, do not have it. If REX_BIN_DIR is empty and PATH has no -// rex, binFromEnv returns the rex of the Rex server app in HOME on macOS, -// if it is there. +// rex, binFromEnv looks in HOME on macOS. It returns the rex of the Rex +// server app, if it is there. func binFromEnv(env []string) string { if dir := proc.Getenv(env, "REX_BIN_DIR"); dir != "" { return filepath.Join(dir, "rex") diff --git a/rex/rex_test.go b/rex/rex_test.go index e0e15ec..4bed6d4 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -142,7 +142,10 @@ func TestCommands(t *testing.T) { t.Fatal(err) } - b, _ := os.ReadFile(filepath.Join(dir, "calls")) + b, err := os.ReadFile(filepath.Join(dir, "calls")) + if err != nil { + t.Fatal(err) + } calls := string(b) for _, want := range []string{ `api call -s S block.event {"block_id":"block:pi",` + @@ -263,7 +266,11 @@ func TestReloadConfigOutsideRex(t *testing.T) { if err := rex.ReloadConfig(t.Context(), env); err != nil { t.Fatal(err) } - if b, _ := os.ReadFile(log); string(b) != "config reload\n" { + b, err := os.ReadFile(log) + if err != nil { + t.Fatal(err) + } + if string(b) != "config reload\n" { t.Errorf("the app rex ran with %q, want config reload", b) } } diff --git a/test/files_test.go b/test/files_test.go index 2f6612f..27ba567 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -106,7 +106,7 @@ func TestTurnRaced(t *testing.T) { } // TestPR checks that the PR tab shows the pull request of the branch from -// gh, with its checks and comments, and that o opens it. +// gh, with its checks and comments. It also checks that o opens it. func TestPR(t *testing.T) { repo := newRepo(t) testgit.Git(t, repo, "remote", "add", "origin", "https://github.com/o/r.git") @@ -137,7 +137,7 @@ EOF }) } -// TestNoPR checks that the PR tab tells why it has no pull request: the +// TestNoPR checks that the PR tab tells why it has no pull request. The // repository has no remote, or the tool of the remote is not installed. func TestNoPR(t *testing.T) { tm := start(t, newRepo(t), opts{}) diff --git a/test/main_test.go b/test/main_test.go index 53c768b..ba06638 100644 --- a/test/main_test.go +++ b/test/main_test.go @@ -2,22 +2,28 @@ package test import ( "os" + "path/filepath" "testing" "github.com/rednafi/rexdiff/internal/testgit" ) var ( - home string // the HOME of the user, for the real Rex buildDir string // the directory of the binaries that the tests build + homeDir string // the HOME of rexdiff, an empty directory ) +// TestMain makes the directories of the binaries and of HOME. Then it +// runs the tests with testgit. func TestMain(m *testing.M) { - home = os.Getenv("HOME") var err error if buildDir, err = os.MkdirTemp("", "rexdiff-test"); err != nil { panic(err) } defer func() { _ = os.RemoveAll(buildDir) }() + homeDir = filepath.Join(buildDir, "home") + if err := os.Mkdir(homeDir, 0o755); err != nil { + panic(err) + } testgit.Main(m) } diff --git a/test/rex_test.go b/test/rex_test.go index 414d05b..397092d 100644 --- a/test/rex_test.go +++ b/test/rex_test.go @@ -23,7 +23,6 @@ type realRex struct { func (r *realRex) run(args ...string) string { r.t.Helper() cmd := exec.CommandContext(r.t.Context(), r.bin, append([]string{"--autostart=false"}, args...)...) - cmd.Env = append(os.Environ(), "HOME="+home) // the socket of Rex is in HOME out, err := cmd.Output() if err != nil { r.t.Fatalf("rex %s: %v", strings.Join(args, " "), err) @@ -89,7 +88,6 @@ func TestRealRex(t *testing.T) { ctx, cancel := context.WithTimeout(context.WithoutCancel(t.Context()), 10*time.Second) defer cancel() kill := exec.CommandContext(ctx, bin, "--autostart=false", "kill", r.session) - kill.Env = append(os.Environ(), "HOME="+home) _ = kill.Run() }) shell := r.blocks()["shell"] diff --git a/test/rexdiff_test.go b/test/rexdiff_test.go index e268036..b50c87c 100644 --- a/test/rexdiff_test.go +++ b/test/rexdiff_test.go @@ -24,6 +24,8 @@ import ( "github.com/charmbracelet/x/vt" "github.com/creack/pty" + + "github.com/rednafi/rexdiff/internal/testgit" ) // buildDev builds rexdiff once. @@ -63,6 +65,24 @@ var userEnv = []string{ "REXDIFF_AGENT", "REXDIFF_LOG", "REXDIFF_RESUME", "EDITOR", "VISUAL", } +// cleanEnv returns the environment of the process for a run of rexdiff. +// It has no git variable of the user, and the variables of userEnv are +// empty. HOME is homeDir, so no file of the user applies. Git gets the +// variables of testgit.Env. +func cleanEnv() []string { + var env []string + for _, kv := range os.Environ() { + if !strings.HasPrefix(kv, "GIT_") { + env = append(env, kv) + } + } + for _, k := range userEnv { + env = append(env, k+"=") + } + env = append(env, "HOME="+homeDir, "XDG_CONFIG_HOME=") + return append(env, testgit.Env()...) +} + // opts are the options of a rexdiff run. type opts struct { args []string // the flags. start adds the repo. @@ -110,10 +130,7 @@ func start(t *testing.T, repo string, o opts) *term { if o.path != "" { path = o.path + string(os.PathListSeparator) + path } - cmd.Env = append(os.Environ(), "PATH="+path, "TERM=xterm-256color") - for _, k := range userEnv { - cmd.Env = append(cmd.Env, k+"=") - } + cmd.Env = append(cleanEnv(), "PATH="+path, "TERM=xterm-256color") if o.rex != nil { cmd.Env = append(cmd.Env, "REX_SESSION=S", "REX_BLOCK=block:self", "REX_BIN_DIR="+o.rex.dir) diff --git a/test/upgrade_test.go b/test/upgrade_test.go index 843ce7d..9d2afa1 100644 --- a/test/upgrade_test.go +++ b/test/upgrade_test.go @@ -18,7 +18,7 @@ func TestUpgradeAtStart(t *testing.T) { config := filepath.Join(t.TempDir(), "init.lua") env := []string{"REX_CONFIG=" + config} install := exec.CommandContext(t.Context(), binary(t), "install") - install.Env = slices.Concat(os.Environ(), env, []string{"REX_BIN_DIR=" + rex.dir}) + install.Env = slices.Concat(cleanEnv(), env, []string{"REX_BIN_DIR=" + rex.dir}) if out, err := install.CombinedOutput(); err != nil { t.Fatalf("rexdiff install: %v\n%s", err, out) } diff --git a/tui/editor.go b/tui/editor.go index cbe9c8f..be27303 100644 --- a/tui/editor.go +++ b/tui/editor.go @@ -94,8 +94,8 @@ func (m *model) runWindowEditor(path, script string) tea.Cmd { return wait } -// detach starts a program with the environment env in its own session and -// with no terminal, so that it cannot read the keys of rexdiff. The +// detach starts a program with the environment env in its own session. +// The program has no terminal, so it cannot read the keys of rexdiff. The // returned command waits for the program. If the program fails, the // command gives a detachedMsg with the last line of the stderr of the // program. diff --git a/tui/find.go b/tui/find.go index f591dd0..0f87d08 100644 --- a/tui/find.go +++ b/tui/find.go @@ -95,7 +95,7 @@ func (m *model) updateFind(msg tea.KeyPressMsg) tea.Cmd { // paneSource returns the lines of the two sides of the file in the // current pane. -func (m *model) paneSource() (old, new []string) { +func (m *model) paneSource() (before, after []string) { switch m.tab { case tabChanges: if f := m.selectedChange(); f != nil { @@ -114,10 +114,10 @@ type splitLines struct { oldLines, newLines []string } -// of returns the lines of old and new. -func (s *splitLines) of(old, new string) ([]string, []string) { - if old != s.old || new != s.new { - *s = splitLines{old, new, diff.Lines(old), diff.Lines(new)} +// of returns the lines of before and after. +func (s *splitLines) of(before, after string) ([]string, []string) { + if before != s.old || after != s.new { + *s = splitLines{before, after, diff.Lines(before), diff.Lines(after)} } return s.oldLines, s.newLines } @@ -130,7 +130,7 @@ func (m *model) findHits(q string) []findHit { return nil } p := m.cur() - old, new := m.paneSource() + before, after := m.paneSource() line := func(ls []string, n int) string { if n >= 1 && n <= len(ls) { return ls[n-1] @@ -143,13 +143,13 @@ func (m *model) findHits(q string) []findHit { case r.Continued: case r.Fold.Lines > 0: for n := r.Fold.New; n < r.Fold.New+r.Fold.Lines; n++ { - if search.Match(line(new, n), q) { + if search.Match(line(after, n), q) { hits = append(hits, findHit{i, n}) } } case r.Old > 0 || r.New > 0: - if (r.New > 0 && search.Match(line(new, r.New), q)) || - (r.Old > 0 && search.Match(line(old, r.Old), q)) { + if (r.New > 0 && search.Match(line(after, r.New), q)) || + (r.Old > 0 && search.Match(line(before, r.Old), q)) { hits = append(hits, findHit{i, 0}) } case p.hasContent(i): diff --git a/tui/model.go b/tui/model.go index 6b65228..0b2330b 100644 --- a/tui/model.go +++ b/tui/model.go @@ -281,7 +281,7 @@ type model struct { changePane, allPane, prPane pane pr prState prf prFetch - prPlace *resumePane // the place of prPane after a restart + prPlace *resumePane // prPane's place after a restart split bool // show the diff side by side wrap bool @@ -501,8 +501,10 @@ type reloads struct { gen int // the reload whose result shows. Other reloads are stale. running bool // the reload gen runs want bool // a reload is due - force bool // the due reload shows the changes even if the trees are the same - stale bool // the view changes while the reload gen runs, so its result is old + // The due reload shows the changes, also for equal trees. + force bool + // The view changes while the reload gen runs, so its result is old. + stale bool } // loadNow reads the changes at once, for the first screen. Nothing shows diff --git a/tui/search.go b/tui/search.go index 0e29581..1e2f557 100644 --- a/tui/search.go +++ b/tui/search.go @@ -121,7 +121,8 @@ func (m *model) runSearch() tea.Cmd { s.files, s.fileTotal = search.Files(s.paths, m.recent, q, search.MaxFiles) s.err = "" m.stopGrep() - if strings.TrimSpace(q) == "" { // as in herdr-reviewr, a blank grep is noise + // A blank grep is noise, as in herdr-reviewr. + if strings.TrimSpace(q) == "" { s.hits, s.hitsMore = nil, false ov.showSearch() return nil diff --git a/update/update_test.go b/update/update_test.go index 634752c..6d6445e 100644 --- a/update/update_test.go +++ b/update/update_test.go @@ -7,15 +7,17 @@ import ( "context" "crypto/sha256" "encoding/hex" + "encoding/json/v2" "fmt" - "io" "net/http" "net/http/httptest" "os" "path/filepath" "runtime" + "strconv" "strings" "testing" + "testing/fstest" "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/update" @@ -43,21 +45,11 @@ func detect(t *testing.T, latest, bin, stamped string, env ...string) *update.Up return u } -// serve starts a server that answers with the file of files at the path -// of a request, or 404. The caller can add files after serve returns. It -// returns the address of the server. -func serve(t *testing.T, files map[string]string) string { +// serve starts a server with the handler h, and returns its address. The +// test stops the server at the end. +func serve(t *testing.T, h http.Handler) string { t.Helper() - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - b, ok := files[req.URL.Path] - if !ok { - http.NotFound(w, req) - return - } - if _, err := io.WriteString(w, b); err != nil { - t.Error(err) - } - })) + srv := httptest.NewServer(h) t.Cleanup(srv.Close) return srv.URL } @@ -114,13 +106,13 @@ func TestLatest(t *testing.T) { {"status", "0.1.0", "", "", false, "404"}, {"bad JSON", "0.1.0", "not json", "", false, "read the latest release"}, } - files := map[string]string{} - base := serve(t, files) + files := fstest.MapFS{} for i, tt := range tests { if tt.body != "" { - files[fmt.Sprint("/", i)] = tt.body + files[strconv.Itoa(i)] = &fstest.MapFile{Data: []byte(tt.body)} } } + base := serve(t, http.FileServerFS(files)) for i, tt := range tests { t.Run(tt.name, func(t *testing.T) { t.Parallel() @@ -219,7 +211,10 @@ func TestInstallBrew(t *testing.T) { if tt.calls == "" { return } - got, _ := os.ReadFile(filepath.Join(prefix, "calls")) + got, err := os.ReadFile(filepath.Join(prefix, "calls")) + if err != nil { + t.Fatal(err) + } if string(got) != tt.calls { t.Errorf("brew calls = \n%s\nwant:\n%s", got, tt.calls) } @@ -270,22 +265,34 @@ func TestDownload(t *testing.T) { stale := archive(t, "#!/bin/sh\necho v0.1.9\n") // The limit of a binary is 128 MiB. big := archive(t, strings.Repeat("x", 128<<20+1)) - files := map[string]string{} - base := serve(t, files) + files := fstest.MapFS{} for dir, a := range map[string][]byte{"good": good, "stale": stale, "big": big, "bad": good} { - files["/"+dir+"/"+name] = string(a) - files["/"+dir+"/sha256sums.txt"] = sums(a) - var assets []string - for _, f := range []string{name, "sha256sums.txt"} { - assets = append(assets, fmt.Sprintf( - `{"name": %q, "browser_download_url": %q}`, f, base+"/"+dir+"/"+f)) - } - files["/"+dir+"/latest"] = `{"tag_name": "v0.2.0", "assets": [` + - strings.Join(assets, ",") + `]}` + files[dir+"/"+name] = &fstest.MapFile{Data: a} + files[dir+"/sha256sums.txt"] = &fstest.MapFile{Data: []byte(sums(a))} } - files["/bad/"+name] = "tampered" + files["bad/"+name] = &fstest.MapFile{Data: []byte("tampered")} + mux := http.NewServeMux() + mux.Handle("/", http.FileServerFS(files)) + // The release of a directory has its files, at the URLs of the server. // The release of "none" has no files. - files["/none/latest"] = `{"tag_name": "v0.2.0"}` + mux.HandleFunc("GET /{dir}/latest", func(w http.ResponseWriter, req *http.Request) { + type asset struct { + Name string `json:"name"` + URL string `json:"browser_download_url"` + } + dir := req.PathValue("dir") + assets := []asset{} + for _, f := range []string{name, "sha256sums.txt"} { + if _, ok := files[dir+"/"+f]; ok { + assets = append(assets, asset{f, "http://" + req.Host + "/" + dir + "/" + f}) + } + } + release := map[string]any{"tag_name": "v0.2.0", "assets": assets} + if err := json.MarshalWrite(w, release); err != nil { + t.Error(err) + } + }) + base := serve(t, mux) tests := []struct { name, dir string @@ -326,8 +333,8 @@ func TestDownload(t *testing.T) { } else if err != nil { t.Fatal(err) } - if b, _ := os.ReadFile(target); string(b) != want { - t.Errorf("target file = %q, want %q", b, want) + if b, err := os.ReadFile(target); err != nil || string(b) != want { + t.Errorf("target file = %q, %v, want %q", b, err, want) } if info, err := os.Lstat(link); err != nil || info.Mode()&os.ModeSymlink == 0 { t.Errorf("after Install: %s is not a symlink, want a symlink", link) @@ -335,7 +342,11 @@ func TestDownload(t *testing.T) { if info, err := os.Stat(target); err != nil || info.Mode().Perm() != 0o755 { t.Errorf("Stat = %v, %v, want mode 0755", info, err) } - if entries, _ := os.ReadDir(filepath.Dir(target)); len(entries) != 1 { + entries, err := os.ReadDir(filepath.Dir(target)) + if err != nil { + t.Fatal(err) + } + if len(entries) != 1 { t.Errorf("the directory has %d files, want only rexdiff", len(entries)) } }) diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index 5a62963..eaa5d8c 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -9,10 +9,11 @@ import ( "path/filepath" "slices" "strings" + "syscall" "testing" + "testing/fstest" "time" - "github.com/rednafi/rexdiff/internal/proc" "github.com/rednafi/rexdiff/internal/testgit" "github.com/rednafi/rexdiff/vcs" ) @@ -49,7 +50,11 @@ func TestRevIsNotAnOption(t *testing.T) { t.Errorf("Diff(%q, HEAD): no error, want an error", rev) } } - if b, _ := os.ReadFile(out); string(b) != "keep\n" { + b, err := os.ReadFile(out) + if err != nil { + t.Fatal(err) + } + if string(b) != "keep\n" { t.Errorf("the file of --output = %q, want %q", b, "keep\n") } } @@ -137,9 +142,14 @@ func TestDiffFileKinds(t *testing.T) { t.Fatal(err) } link("a.txt", "type") - testgit.WriteFile(t, dir, "crlf", "a\r\nb\r\n") - testgit.WriteFile(t, dir, "empty", "") - testgit.WriteFile(t, dir, "no-newline", "end") + err := os.CopyFS(dir, fstest.MapFS{ + "crlf": {Data: []byte("a\r\nb\r\n")}, + "empty": {}, + "no-newline": {Data: []byte("end")}, + }) + if err != nil { + t.Fatal(err) + } want := []vcs.File{ {Path: "crlf", Status: vcs.StatusAdded, New: "a\r\nb\r\n"}, @@ -172,8 +182,7 @@ func TestSnapshotNestedRepo(t *testing.T) { testgit.WriteFile(t, dir, "z.txt", "z\n") got := changes(t, r, head(t, r), snapshot(t, r)) - isSubmodule := strings.HasPrefix(got[0].New, "Subproject commit ") - if names(got) != "Afull Az.txt" || !isSubmodule { + if names(got) != "Afull Az.txt" || !strings.HasPrefix(got[0].New, "Subproject commit ") { t.Errorf("Diff = %+v, want full as a submodule and z.txt", got) } } @@ -197,7 +206,7 @@ func TestReadFileStaysInRoot(t *testing.T) { t.Fatal(err) } } - if err := proc.Command(t.Context(), testgit.ToolEnv(t), "mkfifo", filepath.Join(dir, "fifo")).Run(); err != nil { + if err := syscall.Mkfifo(filepath.Join(dir, "fifo"), 0o644); err != nil { t.Fatal(err) } bad := []string{"../secret", secret, "to-secret", "to-zero", "to-dir", "fifo"} @@ -357,18 +366,21 @@ func TestPullRequestBadJSON(t *testing.T) { } // TestGrepDeadline checks that Grep returns the matches that it finds -// before the deadline of ctx, with more set, as herdr-reviewr does with -// its time budget. +// before the deadline of ctx. more is true, as with the time budget of +// herdr-reviewr. func TestGrepDeadline(t *testing.T) { t.Parallel() env, link := gitLink(t) r, _ := newRepoEnv(t, env) // The fake git takes the place of git after Open. It prints one match // and a cut record, then hangs. With the file slow beside it, it first - // waits past the budget. + // waits much longer than the budget. With the FIFO block beside it, it + // waits in the shell until it stops, so it prints nothing. removeGit(t, link) bin := filepath.Dir(link) - testgit.Script(t, bin, "git", `[ -e "${0%/*}/slow" ] && /bin/sleep 0.3 + testgit.Script(t, bin, "git", `d="${0%/*}" +[ -e "$d/slow" ] && /bin/sleep 0.3 +[ -p "$d/block" ] && read -r _ < "$d/block" printf 'a.go\0001\000hit\nb.go\00012' exec /bin/sleep 10 `) @@ -377,15 +389,21 @@ exec /bin/sleep 10 defer cancel() return r.Grep(ctx, "hit", 10, budget) } - if ms, more, err := grep(5*time.Second, 50*time.Millisecond); err != nil || !more || + if ms, more, err := grep(time.Minute, 50*time.Millisecond); err != nil || !more || len(ms) != 1 || ms[0].Text != "hit" { t.Errorf("Grep past the budget = %+v, %v, %v, want the hit, more, no error", ms, more, err) } testgit.WriteFile(t, bin, "slow", "") - if ms, more, err := grep(5*time.Second, time.Millisecond); err != nil || !more || len(ms) != 1 { + if ms, more, err := grep(time.Minute, time.Millisecond); err != nil || !more || len(ms) != 1 { t.Errorf("Grep with no line at the budget = %+v, %v, %v, want the first hit, more", ms, more, err) } - if ms, more, err := grep(100*time.Millisecond, time.Millisecond); err != nil || !more || len(ms) != 0 { + if err := os.Remove(filepath.Join(bin, "slow")); err != nil { + t.Fatal(err) + } + if err := syscall.Mkfifo(filepath.Join(bin, "block"), 0o644); err != nil { + t.Fatal(err) + } + if ms, more, err := grep(200*time.Millisecond, time.Millisecond); err != nil || !more || len(ms) != 0 { t.Errorf("Grep past the deadline = %+v, %v, %v, want none, more, no error", ms, more, err) } } diff --git a/vcs/pr_test.go b/vcs/pr_test.go index 7484e7b..67d0e01 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -1,7 +1,6 @@ package vcs_test import ( - "cmp" "errors" "reflect" "slices" @@ -86,11 +85,12 @@ func TestPullRequest(t *testing.T) { "repository": {"webUrl": "https://dev.azure.com/o/p/_git/r"}}]`}) tests := []struct { + name string remote string hosts vcs.Hosts want *vcs.PullRequest }{ - {"git@github.com:o/r.git", vcs.Hosts{}, &vcs.PullRequest{ + {"github ssh", "git@github.com:o/r.git", vcs.Hosts{}, &vcs.PullRequest{ Forge: vcs.ForgeGitHub, Number: 7, Title: "Add x", @@ -112,7 +112,7 @@ func TestPullRequest(t *testing.T) { {Author: "bob", When: "2026-01-02T03:04:05Z", Body: "LGTM"}, }, }}, - {"https://Git.Corp/o/r", vcs.Hosts{GitLab: "git.CORP"}, &vcs.PullRequest{ + {"gitlab custom host", "https://Git.Corp/o/r", vcs.Hosts{GitLab: "git.CORP"}, &vcs.PullRequest{ Forge: vcs.ForgeGitLab, Number: 3, Title: "Fix y", @@ -127,7 +127,7 @@ func TestPullRequest(t *testing.T) { {Author: "cy", When: "2026-01-03T03:04:05Z", Body: "Speed."}, }, }}, - {"https://dev.azure.com/o/p/_git/r", vcs.Hosts{}, &vcs.PullRequest{ + {"azure", "https://dev.azure.com/o/p/_git/r", vcs.Hosts{}, &vcs.PullRequest{ Forge: vcs.ForgeAzure, Number: 9, Title: "Z", @@ -139,7 +139,7 @@ func TestPullRequest(t *testing.T) { }}, } for _, tt := range tests { - t.Run(tt.remote, func(t *testing.T) { + t.Run(tt.name, func(t *testing.T) { t.Parallel() r, _ := repoAt(t, env, tt.remote) pr, err := r.PullRequest(t.Context(), tt.hosts) @@ -164,34 +164,68 @@ func TestPullRequestErrors(t *testing.T) { const unsupported = "the remote is not on GitHub, GitLab, or Azure DevOps" corp := vcs.Hosts{GitLab: "Git.Corp"} tests := []struct { + name string remote, branch string hosts vcs.Hosts wantErr error // if not nil, err must wrap it errText string // if not empty, a part of the text of err }{ // The host selects the forge, not a name in the path. - {remote: "https://example.com/github.com/r.git", branch: "feat", errText: unsupported}, - {remote: "git@example.com:gitlab/r.git", branch: "feat", errText: unsupported}, - {remote: "https://git.corp.example/r", branch: "feat", hosts: corp, errText: unsupported}, - {remote: "git@git.corp:o/r.git", branch: "feat", hosts: corp, errText: "glab is not installed"}, - {remote: "ssh://git@GitHub.com:22/o/r", branch: "feat", errText: "gh is not installed"}, { + name: "github in the path", + remote: "https://example.com/github.com/r.git", + branch: "feat", + errText: unsupported, + }, + { + name: "gitlab in the path", + remote: "git@example.com:gitlab/r.git", + branch: "feat", + errText: unsupported, + }, + { + name: "other corp host", + remote: "https://git.corp.example/r", + branch: "feat", + hosts: corp, + errText: unsupported, + }, + { + name: "gitlab custom host", + remote: "git@git.corp:o/r.git", + branch: "feat", + hosts: corp, + errText: "glab is not installed", + }, + { + name: "github ssh with port", + remote: "ssh://git@GitHub.com:22/o/r", + branch: "feat", + errText: "gh is not installed", + }, + { + name: "visualstudio other branch", remote: "https://u@org.visualstudio.com/p/_git/r", branch: "other", errText: "unexpected call: " + azArgs("other"), }, - {remote: "", branch: "feat", errText: "no git remote"}, - {remote: azure, branch: "none", wantErr: vcs.ErrNoPullRequest}, + {name: "no remote", branch: "feat", errText: "no git remote"}, + {name: "azure no pull request", remote: azure, branch: "none", wantErr: vcs.ErrNoPullRequest}, { + name: "azure other branch", remote: azure, branch: "other", errText: "unexpected call: " + azArgs("other"), }, - {remote: "https://github.com/o/r", branch: "feat", errText: "gh is not installed"}, + { + name: "github with no gh", + remote: "https://github.com/o/r", + branch: "feat", + errText: "gh is not installed", + }, } for _, tt := range tests { - // Two cases have the same remote, so the name has the branch. - t.Run(cmp.Or(tt.remote, "no remote")+" on "+tt.branch, func(t *testing.T) { + t.Run(tt.name, func(t *testing.T) { t.Parallel() r, dir := newRepoEnv(t, env) if tt.remote != "" { @@ -229,6 +263,10 @@ func TestPullRequestHostile(t *testing.T) { if err != nil { t.Fatal(err) } + if len(pr.Comments) != 1 || len(pr.Checks) != 1 { + t.Fatalf("PullRequest has %d comments and %d checks, want 1 and 1", + len(pr.Comments), len(pr.Checks)) + } got := []string{pr.Title, pr.Body, pr.Author, pr.Comments[0].Body, pr.Checks[0].Name} want := []string{"Add]0;owned", "a]0;owned\nb", "ann]0;owned", "x]0;owned", "t]0;owned"} if !slices.Equal(got, want) { diff --git a/vcs/repo.go b/vcs/repo.go index aad46d9..7f03018 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -221,7 +221,8 @@ func (r *Repo) MergeBaseTree(ctx context.Context, base string) (string, error) { } // MergeBaseCommit returns the best common ancestor commit of base and -// HEAD, as git merge-base finds it. +// HEAD, as git merge-base finds it. If git exits with an error, the error +// wraps the [*exec.ExitError] of git. func (r *Repo) MergeBaseCommit(ctx context.Context, base string) (string, error) { out, err := r.run(ctx, nil, "merge-base", "--end-of-options", base, "HEAD") if err != nil { diff --git a/vcs/repo_test.go b/vcs/repo_test.go index f2f065c..5fb3ea3 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -10,6 +10,7 @@ import ( "slices" "strings" "testing" + "testing/fstest" "time" "github.com/rednafi/rexdiff/internal/proc" @@ -174,7 +175,7 @@ func TestScopes(t *testing.T) { now := snapshot(t, r) unc := changes(t, r, head(t, r), now) if got := names(unc); got != "A.gitignore Ma.txt Anew.txt" { - t.Errorf("uncommitted: %s, want A.gitignore Ma.txt Anew.txt", got) + t.Fatalf("uncommitted: %s, want A.gitignore Ma.txt Anew.txt", got) } if unc[1].Old != "one\n" || unc[1].New != "one\ntwo\n" { t.Errorf("a.txt: Old %q, New %q, want %q, %q", @@ -273,13 +274,18 @@ func TestDiffSkipsBinaryAndBigFiles(t *testing.T) { testgit.WriteFile(t, dir, "bytes", "y"+half) testgit.WriteFile(t, dir, "lines", "y"+lines) testgit.WriteFile(t, dir, "limit", "z"+limit) - testgit.WriteFile(t, dir, "bin", "a\x00b") - // The NUL of "late" is at byte 9000. - testgit.WriteFile(t, dir, "late", strings.Repeat("x", 9000)+"\x00") - testgit.WriteFile(t, dir, "big", strings.Repeat("x\n", 50_001)) - testgit.WriteFile(t, dir, "huge", strings.Repeat("x", 2_000_001)) - // Diff reads this file after the skipped content. - testgit.WriteFile(t, dir, "small", "after\n") + err := os.CopyFS(dir, fstest.MapFS{ + "bin": {Data: []byte("a\x00b")}, + // The NUL of "late" is at byte 9000. + "late": {Data: []byte(strings.Repeat("x", 9000) + "\x00")}, + "big": {Data: []byte(strings.Repeat("x\n", 50_001))}, + "huge": {Data: []byte(strings.Repeat("x", 2_000_001))}, + // Diff reads this file after the skipped content. + "small": {Data: []byte("after\n")}, + }) + if err != nil { + t.Fatal(err) + } got := map[string]vcs.File{} for _, f := range changes(t, r, head(t, r), snapshot(t, r)) { got[f.Path] = f @@ -547,10 +553,14 @@ func TestOpenOutsideARepo(t *testing.T) { // with no commit and no index. The path of a root can have a newline. func TestNewRepo(t *testing.T) { t.Parallel() - for _, name := range []string{"repo", "a\nb"} { - t.Run(name, func(t *testing.T) { + tests := []struct{ name, root string }{ + {"plain root", "repo"}, + {"newline in root", "a\nb"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { t.Parallel() - dir := filepath.Join(t.TempDir(), name) + dir := filepath.Join(t.TempDir(), tt.root) testgit.InitRepo(t, dir) testgit.WriteFile(t, dir, "a.txt", "one\n") r, err := vcs.Open(t.Context(), dir, testgit.ToolEnv(t)) diff --git a/vcs/watch.go b/vcs/watch.go index 79164f6..707ba11 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -21,8 +21,9 @@ const pauseFactor = 20 // directories, and of the git files. While nothing changes, it runs no // git process. After a change, it runs git to list the files again. // -// A Watcher does not see a change of the global core.excludesFile, or a -// copy that keeps the size and the modification time of a file. +// A Watcher does not see a change of the global core.excludesFile. It +// also does not see a copy that keeps the size and the modification time +// of a file. type Watcher struct { r *Repo gitDir, common string // absolute paths @@ -271,7 +272,8 @@ func (w *Watcher) sumRefs() uint64 { // directory, which the worktrees of the repository share. if b, err := os.ReadFile(paths[0]); err == nil { ref, ok := strings.CutPrefix(strings.TrimSpace(string(b)), "ref: ") - if p, err := filepath.Localize(ref); ok && err == nil { // no ".." or "/" at the start + // Localize refuses a ".." or a "/" at the start. + if p, err := filepath.Localize(ref); ok && err == nil { paths = append(paths, filepath.Join(w.common, p)) } } diff --git a/vcs/watch_test.go b/vcs/watch_test.go index f5a85d2..262ca36 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -111,6 +111,15 @@ func TestWatcherLastWrite(t *testing.T) { t.Errorf("LastWrite before a write = %v, want zero", got) } testgit.WriteFile(t, dir, "c.txt", "c\n") + // The clock of the file system can be behind time.Now. So the test sets + // the times of the new file and of its directory to an hour after now. + // This is clearly after the start of the watch. + later := time.Now().Add(time.Hour) + for _, p := range []string{filepath.Join(dir, "c.txt"), dir} { + if err := os.Chtimes(p, later, later); err != nil { + t.Fatal(err) + } + } if w.LastWrite().IsZero() { t.Error("LastWrite after a write is zero") } From fb358b4a51f2bf6f1b747cdd29e9a7fb4d5bfcfb Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 04:10:58 +0100 Subject: [PATCH 080/119] docs: name internal/proc, and one idea per sentence --- .doc/arch.md | 4 +++- .doc/test.md | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.doc/arch.md b/.doc/arch.md index a5d1651..b9f93f7 100644 --- a/.doc/arch.md +++ b/.doc/arch.md @@ -22,7 +22,9 @@ import each other. - `update` installs a newer release and restarts rexdiff. `internal/` holds helpers: the file tree, search ranking, turn detection, the clipboard, -the editor command, text cleaning, and the diff renderer copied from crush. +the editor command, text cleaning, the runs of other programs, and the diff renderer +copied from crush. The libraries get their environment from `cmd/rexdiff`, and do not +read the environment of the process. `internal/testgit` sets up git for the tests. `cmd/rexdiff` parses the flags, handles `rexdiff install`, upgrades `rexdiff.lua` at diff --git a/.doc/test.md b/.doc/test.md index fa02406..a293741 100644 --- a/.doc/test.md +++ b/.doc/test.md @@ -33,8 +33,8 @@ tm.waitFor("💬 hi") ``` The keys and the mouse go through a terminal emulator, so rexdiff gets them as from a -real terminal. No test waits a fixed time for rexdiff; each waits for the screen or for -a file. +real terminal. No test waits a fixed time for rexdiff. Each one waits for the screen or +for a file. Short shell scripts on `PATH` stand in for rex, gh, pbcopy, and the editors. The fake rex prints output recorded from a real Rex, in `test/testdata/rex`. The scripts in From cae84a781f92f2037f43c2492347831a3c74cdac Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 08:16:41 +0100 Subject: [PATCH 081/119] fix: every cancel has a cause, and the cause reaches the user Each context comes from WithCancelCause, with WithTimeoutCause stacked on it where the work has a deadline, so a stop names its reason on every path. proc, rex and vcs return context.Cause, and a stopped program sends SIGTERM so git can remove its locks. The snapshot lock stops its wait when ctx ends. main prints the cause of a signal. --- cmd/rexdiff/install.go | 14 ++++++++++ cmd/rexdiff/main.go | 5 ++++ internal/proc/proc.go | 49 +++++++++++++++++++++------------- internal/proc/proc_test.go | 54 +++++++++++++++++++++++++++++++++++++- rex/rex.go | 18 ++++++++----- rex/rex_test.go | 12 +++++---- test/rex_test.go | 4 ++- test/rexdiff_test.go | 12 +++++---- test/update_test.go | 4 +-- tui/editor.go | 7 +++-- tui/model.go | 23 +++++++++------- tui/overlay.go | 3 ++- tui/pr.go | 11 +++++--- tui/search.go | 15 ++++++----- tui/send.go | 21 ++++++++++----- tui/tui.go | 11 +++++--- tui/turn.go | 15 ++++++++--- update/update.go | 17 +++++++++--- update/update_test.go | 6 ++--- vcs/hostile_test.go | 49 +++++++++++++++++++++++++++++++++- vcs/pr.go | 2 +- vcs/refs.go | 6 ++--- vcs/repo.go | 52 +++++++++++++++++++++--------------- vcs/repo_test.go | 11 ++++---- 24 files changed, 308 insertions(+), 113 deletions(-) diff --git a/cmd/rexdiff/install.go b/cmd/rexdiff/install.go index 74a65fd..1055bbd 100644 --- a/cmd/rexdiff/install.go +++ b/cmd/rexdiff/install.go @@ -11,6 +11,7 @@ import ( "path/filepath" "slices" "strings" + "time" "github.com/rednafi/rexdiff/rex" ) @@ -298,6 +299,10 @@ func install(ctx context.Context, env []string, bin string, args []string, stdou return nil } +// upgradeReloadTimeout is the longest time of the reload of the Rex +// config after an upgrade. +const upgradeReloadTimeout = 10 * time.Second + // upgrade replaces the code part of rexdiff.lua with the code for bin, if // they differ, and keeps the settings. It is not the update of rexdiff // itself (see the update package). It upgrades only the Lua code of the @@ -320,6 +325,13 @@ func upgrade(ctx context.Context, env []string, bin string) string { if err := os.WriteFile(lua, []byte(code), 0o644); err != nil { return "rexdiff.lua upgrade failed: " + err.Error() } + // The upgrade runs before the first frame, and the user does not see + // it. Thus the reload has a deadline. + ctx, cancel := context.WithCancelCause(ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, upgradeReloadTimeout, + fmt.Errorf("rex config reload: %v timeout: %w", upgradeReloadTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("rex config reload: done: %w", context.Canceled)) if err := rex.ReloadConfig(ctx, env); err != nil { return "upgraded rexdiff.lua; reload Rex's config yourself: rex config reload" } @@ -404,6 +416,8 @@ func removeRequire(path string) error { // reload tells Rex to read its configuration file again. rex runs with // the environment env. If Rex fails, reload tells the user how to reload. +// The reload has no deadline, because the user sees it in a terminal and +// can press Ctrl-C. func reload(ctx context.Context, env []string, stdout io.Writer) { if err := rex.ReloadConfig(ctx, env); err != nil { fmt.Fprintf(stdout, "reload Rex's config yourself: rex config reload (%v)\n", err) diff --git a/cmd/rexdiff/main.go b/cmd/rexdiff/main.go index 8058bd4..9821da2 100644 --- a/cmd/rexdiff/main.go +++ b/cmd/rexdiff/main.go @@ -38,6 +38,11 @@ func main() { // rexdiff reads the environment once, here. The packages get it as a // value. err := run(ctx, os.Environ(), os.Args[1:], os.Stdout, os.Stderr) + if err != nil && ctx.Err() != nil { + // The error of a stopped program tells only "context canceled". + // The cause names the signal. + err = context.Cause(ctx) + } stop() switch { case errors.Is(err, flag.ErrHelp): diff --git a/internal/proc/proc.go b/internal/proc/proc.go index 2a42ff8..ef429e7 100644 --- a/internal/proc/proc.go +++ b/internal/proc/proc.go @@ -15,18 +15,22 @@ import ( "path/filepath" "slices" "strings" + "syscall" "time" ) -// waitDelay is how long a stopped program can keep its output open. A -// child of the program can keep the output open after the program ends. +// waitDelay is how long a stopped program has to end. It is also how long +// a program that ends can keep its output open. A child of the program +// can keep the output open after the program ends. const waitDelay = time.Second // Command returns the command "name args..." with the environment env. // LookPath finds name in the PATH of env. If LookPath fails, Start returns // its error. A nil env is an empty environment, not the environment of the -// process. The command stops when ctx is done. Its Wait returns at most -// waitDelay after the program ends. +// process. When ctx is done, the command sends SIGTERM to the program, so +// that git can remove its lock files. A SIGKILL leaves index.lock, and then +// each later git add fails. If the program does not end in waitDelay, the +// command kills it. Wait returns at most waitDelay after the program ends. func Command(ctx context.Context, env []string, name string, args ...string) *exec.Cmd { path, err := LookPath(env, name) if err != nil { @@ -40,6 +44,7 @@ func Command(ctx context.Context, env []string, name string, args ...string) *ex env = []string{} // exec gives a nil Env the environment of the process } cmd.Env = env + cmd.Cancel = func() error { return cmd.Process.Signal(syscall.SIGTERM) } cmd.WaitDelay = waitDelay return cmd } @@ -93,28 +98,36 @@ func NotInstalled(name string) error { return errors.New(filepath.Base(name) + " is not installed") } -// Error returns the error err of a run of the program name. If the -// program is not on PATH, the text is " is not installed". -// Else the text is the first line of stderr that is not blank, without a -// leading "Error: ". If stderr has no text, the text is that of err. The -// error wraps err, so a caller can examine the exit code. -func Error(name string, err error, stderr []byte) error { +// Error returns the error err of a run of the program name. If ctx is +// done, the text is that of [context.Cause], and the error wraps err and +// the cause. Thus errors.Is finds [context.DeadlineExceeded], and +// errors.As finds the [*exec.ExitError]. Else, if the program is not on +// PATH, the text is " is not installed". Else the text is the first +// line of stderr that is not blank, without a leading "Error: ". If stderr +// has no text, the text is that of err. The error wraps err, so a caller +// can examine the exit code. +func Error(ctx context.Context, name string, err error, stderr []byte) error { + if ctx.Err() != nil { + cause := context.Cause(ctx) + return &runError{msg: cause.Error(), errs: []error{err, cause}} + } if errors.Is(err, exec.ErrNotFound) { - return &runError{msg: NotInstalled(name).Error(), err: err} + return &runError{msg: NotInstalled(name).Error(), errs: []error{err}} } msg := strings.TrimPrefix(firstLine(string(stderr)), "Error: ") - return &runError{msg: cmp.Or(msg, err.Error()), err: err} + return &runError{msg: cmp.Or(msg, err.Error()), errs: []error{err}} } -// runError is a failed run of a program. It has a short text and wraps -// the error of the process. +// runError is a failed run of a program. It has a short text. It wraps +// the error of the process, and the cause of the context if the context +// is done. type runError struct { - msg string - err error + msg string + errs []error } -func (e *runError) Error() string { return e.msg } -func (e *runError) Unwrap() error { return e.err } +func (e *runError) Error() string { return e.msg } +func (e *runError) Unwrap() []error { return e.errs } // firstLine returns the first line of s that is not blank, without the // leading and trailing space. diff --git a/internal/proc/proc_test.go b/internal/proc/proc_test.go index 3c94311..9be28ca 100644 --- a/internal/proc/proc_test.go +++ b/internal/proc/proc_test.go @@ -1,13 +1,18 @@ package proc_test import ( + "bufio" + "context" "errors" + "fmt" + "io" "os" "os/exec" "path/filepath" "slices" "strings" "testing" + "time" "github.com/rednafi/rexdiff/internal/proc" ) @@ -32,7 +37,7 @@ func TestError(t *testing.T) { {"git", exit, " \n", exit.Error()}, } for _, tt := range tests { - err := proc.Error(tt.name, tt.err, []byte(tt.stderr)) + err := proc.Error(t.Context(), tt.name, tt.err, []byte(tt.stderr)) if err.Error() != tt.want { t.Errorf("Error(%q, %v, %q) = %q, want %q", tt.name, tt.err, tt.stderr, err, tt.want) } @@ -42,6 +47,53 @@ func TestError(t *testing.T) { } } +// TestErrorCause checks that the error of a run that stops with its +// context has the text of the cause. The error also keeps the error of +// the process and the cause. +func TestErrorCause(t *testing.T) { + t.Parallel() + cause := fmt.Errorf("test run: 1ms timeout: %w", context.DeadlineExceeded) + ctx, cancel := context.WithTimeoutCause(t.Context(), time.Millisecond, cause) + defer cancel() + <-ctx.Done() + exit := proc.Command(t.Context(), shEnv, "sh", "-c", "exit 3").Run() + err := proc.Error(ctx, "git", exit, []byte("fatal: bad\n")) + if err.Error() != cause.Error() { + t.Errorf("Error = %q, want %q", err, cause) + } + if !errors.Is(err, context.DeadlineExceeded) { + t.Errorf("Error = %v, want it to wrap context.DeadlineExceeded", err) + } + if ee, ok := errors.AsType[*exec.ExitError](err); !ok || ee.ExitCode() != 3 { + t.Errorf("Error = %v, want it to wrap the exit error with code 3", err) + } +} + +// TestCommandTerm checks that a stop of the context sends SIGTERM, so the +// program can clean up before it ends. +func TestCommandTerm(t *testing.T) { + t.Parallel() + ctx, cancel := context.WithCancelCause(t.Context()) + cmd := proc.Command(ctx, shEnv, "sh", "-c", `trap 'echo term; exit 0' TERM; echo ready; while :; do sleep 0.01; done`) + out, err := cmd.StdoutPipe() + if err != nil { + t.Fatal(err) + } + if err := cmd.Start(); err != nil { + t.Fatal(err) + } + r := bufio.NewReader(out) + if line, err := r.ReadString('\n'); err != nil || line != "ready\n" { + t.Fatalf("first line = %q, %v, want %q", line, err, "ready\n") + } + cancel(fmt.Errorf("test stops the program: %w", context.Canceled)) + rest, _ := io.ReadAll(r) + _ = cmd.Wait() + if string(rest) != "term\n" { + t.Errorf("output after the stop = %q, want %q", rest, "term\n") + } +} + // TestLastLine checks that LastLine skips the blank lines at the end. func TestLastLine(t *testing.T) { t.Parallel() diff --git a/rex/rex.go b/rex/rex.go index 01958b3..9d96f04 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -97,7 +97,7 @@ func (c *Client) runRex(ctx context.Context, args ...string) ([]byte, error) { cmd.Stderr = &stderr out, err := cmd.Output() if err != nil { - return nil, proc.Error("rex", err, stderr.Bytes()) + return nil, proc.Error(ctx, "rex", err, stderr.Bytes()) } return out, nil } @@ -225,7 +225,8 @@ type Agent struct { const terminalCreator = "com.superlogical.terminal" // Agents returns the agents in the session, in the order of the layout. -// It does not return the block of the client. +// It does not return the block of the client. If ctx ends, Agents returns +// the cause of ctx. func (c *Client) Agents(ctx context.Context) ([]Agent, error) { // Get the windows at the same time as the blocks. var windows []window @@ -267,6 +268,11 @@ func (c *Client) Agents(ctx context.Context) ([]Agent, error) { }) } wg.Wait() + if ctx.Err() != nil { + // A status call that fails at the deadline does not tell that the + // block is not an agent. + return nil, context.Cause(ctx) + } for i, b := range reply.Blocks { agents[i].Window = windowLabel(windows, b.WindowID) @@ -414,7 +420,7 @@ const ( // runs "rex events" to get the events. If rex fails, Watch calls fn with // an event that has the error. If rex stops, Watch starts it again after // 2 seconds. Then it calls fn with a Reconnect event before the next -// events. Watch returns the error of ctx when ctx is done. +// events. Watch returns the cause of ctx when ctx is done. func (c *Client) Watch(ctx context.Context, fn func(Event)) error { for again := false; ; again = true { if err := c.watchOnce(ctx, again, fn); err != nil && ctx.Err() == nil { @@ -422,7 +428,7 @@ func (c *Client) Watch(ctx context.Context, fn func(Event)) error { } select { case <-ctx.Done(): - return ctx.Err() + return context.Cause(ctx) case <-time.After(reconnectDelay): } } @@ -440,7 +446,7 @@ func (c *Client) watchOnce(ctx context.Context, again bool, fn func(Event)) erro return fmt.Errorf("rex events: %w", err) } if err := cmd.Start(); err != nil { - return fmt.Errorf("rex events: %w", proc.Error("rex", err, nil)) + return fmt.Errorf("rex events: %w", proc.Error(ctx, "rex", err, nil)) } if again { fn(Event{Reconnect: true}) @@ -460,7 +466,7 @@ func (c *Client) watchOnce(ctx context.Context, again bool, fn func(Event)) erro return fmt.Errorf("rex events: %w", err) } if err := cmd.Wait(); err != nil { - return fmt.Errorf("rex events: %w", proc.Error("rex", err, stderr.Bytes())) + return fmt.Errorf("rex events: %w", proc.Error(ctx, "rex", err, stderr.Bytes())) } return nil } diff --git a/rex/rex_test.go b/rex/rex_test.go index 4bed6d4..8a0f444 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -3,6 +3,7 @@ package rex_test import ( "context" "errors" + "fmt" "os" "os/exec" "path/filepath" @@ -201,16 +202,17 @@ func TestWatch(t *testing.T) { } want := slices.Concat(once, []rex.Event{{Reconnect: true}}, once) // Stop Watch when it reports all the events. - ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) - defer cancel() + ctx, cancel := context.WithCancelCause(t.Context()) + defer cancel(fmt.Errorf("test: done: %w", context.Canceled)) + errAll := errors.New("the test has all the events") var got []rex.Event err := c.Watch(ctx, func(e rex.Event) { if got = append(got, e); len(got) == len(want) { - cancel() + cancel(errAll) } }) - if !errors.Is(err, context.Canceled) { - t.Errorf("Watch = %v, want context.Canceled", err) + if !errors.Is(err, errAll) { + t.Errorf("Watch = %v, want the cause %v", err, errAll) } if !slices.Equal(got, want) { t.Errorf("events = \n%+v\nwant:\n%+v", got, want) diff --git a/test/rex_test.go b/test/rex_test.go index 397092d..313e63a 100644 --- a/test/rex_test.go +++ b/test/rex_test.go @@ -3,6 +3,7 @@ package test import ( "context" "encoding/json/v2" + "fmt" "os" "os/exec" "strconv" @@ -85,7 +86,8 @@ func TestRealRex(t *testing.T) { r.run("new", r.session, "--cwd", repo, "--", "sh") t.Cleanup(func() { // t.Context is done in a cleanup, so drop its cancel. - ctx, cancel := context.WithTimeout(context.WithoutCancel(t.Context()), 10*time.Second) + ctx, cancel := context.WithTimeoutCause(context.WithoutCancel(t.Context()), 10*time.Second, + fmt.Errorf("rex kill: 10s timeout: %w", context.DeadlineExceeded)) defer cancel() kill := exec.CommandContext(ctx, bin, "--autostart=false", "kill", r.session) _ = kill.Run() diff --git a/test/rexdiff_test.go b/test/rexdiff_test.go index b50c87c..da1b5b7 100644 --- a/test/rexdiff_test.go +++ b/test/rexdiff_test.go @@ -28,9 +28,10 @@ import ( "github.com/rednafi/rexdiff/internal/testgit" ) -// buildDev builds rexdiff once. +// buildDev builds rexdiff once. The build serves all the tests, as +// TestMain does, so it has the context of no test. var buildDev = sync.OnceValues(func() (string, error) { - return build(filepath.Join(buildDir, "dev"), "") + return build(context.Background(), filepath.Join(buildDir, "dev"), "") }) // binary returns the path of a rexdiff that the package builds once. @@ -44,14 +45,15 @@ func binary(t *testing.T) string { } // build builds rexdiff with the version into dir, and returns its path. -// A run with the race detector builds a rexdiff with it. -func build(dir, version string) (string, error) { +// A run with the race detector builds a rexdiff with it. The build stops +// when ctx is done. +func build(ctx context.Context, dir, version string) (string, error) { bin := filepath.Join(dir, "rexdiff") args := []string{"build", "-o", bin, "-ldflags", "-X main.version=" + version} if raceOn { args = append(args, "-race") } - cmd := exec.CommandContext(context.Background(), "go", append(args, "../cmd/rexdiff")...) + cmd := exec.CommandContext(ctx, "go", append(args, "../cmd/rexdiff")...) if out, err := cmd.CombinedOutput(); err != nil { return "", fmt.Errorf("go build: %w\n%s", err, out) } diff --git a/test/update_test.go b/test/update_test.go index 7d73562..539be72 100644 --- a/test/update_test.go +++ b/test/update_test.go @@ -71,8 +71,8 @@ func TestUpdate(t *testing.T) { var nextErr error var wg sync.WaitGroup nextDir := t.TempDir() - wg.Go(func() { next, nextErr = build(nextDir, "0.2.0") }) - bin, err := build(t.TempDir(), "0.1.0") + wg.Go(func() { next, nextErr = build(t.Context(), nextDir, "0.2.0") }) + bin, err := build(t.Context(), t.TempDir(), "0.1.0") wg.Wait() if err = cmp.Or(err, nextErr); err != nil { t.Fatal(err) diff --git a/tui/editor.go b/tui/editor.go index be27303..3641247 100644 --- a/tui/editor.go +++ b/tui/editor.go @@ -55,8 +55,11 @@ func (m *model) openEditor(path string, line int) tea.Cmd { } c, ctx, root := m.rex, m.ctx, m.repo.Root() return func() tea.Msg { - ctx, cancel := context.WithTimeout(ctx, rexTimeout) - defer cancel() + ctx, cancel := context.WithCancelCause(ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, rexTimeout, + fmt.Errorf("editor split: %v timeout: %w", rexTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("editor split: done: %w", context.Canceled)) err := c.Split(ctx, root, "sh", "-c", ed.Script) return splitMsg{path: path, script: ed.Script, err: err} } diff --git a/tui/model.go b/tui/model.go index 0b2330b..6228a52 100644 --- a/tui/model.go +++ b/tui/model.go @@ -3,6 +3,7 @@ package tui import ( "cmp" "context" + "fmt" "image/color" "log/slog" "slices" @@ -307,8 +308,8 @@ type model struct { // recent has the files that the user picks in the search in this // session, the last pick first. recent []string - grepCancel context.CancelFunc // stops the code search that runs - grepGen int // the last code search + grepCancel context.CancelCauseFunc // stops the code search that runs + grepGen int // the last code search find findState findLines splitLines // the lines that find searches md mdRenderer // the last markdown renderer @@ -512,7 +513,7 @@ type reloads struct { func (m *model) loadNow() { m.loads.gen++ m.loads.want, m.loads.force = false, false - m.onChanges(m.reloadInput(true).run()) + m.onChanges(m.reloadInput(true).run(m.ctx)) } // reloadTimeout is the longest time of a reload. A git that hangs then @@ -529,16 +530,16 @@ func (m *model) startReload() tea.Cmd { } l.gen++ l.running, l.want, l.stale = true, false, false - in := m.reloadInput(l.force) + in, ctx := m.reloadInput(l.force), m.ctx l.force = false - return func() tea.Msg { return in.run() } + return func() tea.Msg { return in.run(ctx) } } // reloadInput returns what a reload needs, copied from the model, so that // the reload can run in a command. func (m *model) reloadInput(force bool) reloadInput { in := reloadInput{ - ctx: m.ctx, repo: m.repo, gen: m.loads.gen, scope: m.scope, + repo: m.repo, gen: m.loads.gen, scope: m.scope, base: m.base, from: m.from, to: m.to, force: force, shown: m.shownTrees, prev: make(map[string]changedFile, len(m.changeFiles)), } @@ -560,7 +561,6 @@ func (m *model) reloadInput(force bool) reloadInput { // reloadInput is the input of a reload. note tells why there is nothing // to compare, or is "". type reloadInput struct { - ctx context.Context repo *vcs.Repo gen int scope Scope @@ -583,10 +583,13 @@ type changesMsg struct { // run reads the changes of in. It counts the lines of each file that is // not in in.prev with the same content. -func (in reloadInput) run() changesMsg { +func (in reloadInput) run(ctx context.Context) changesMsg { start := time.Now() - ctx, cancel := context.WithTimeout(in.ctx, reloadTimeout) - defer cancel() + ctx, cancel := context.WithCancelCause(ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, reloadTimeout, + fmt.Errorf("reload: %v timeout: %w", reloadTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("reload: done: %w", context.Canceled)) msg := changesMsg{gen: in.gen, note: in.note} if msg.note == "" { from, to, err := in.trees(ctx) diff --git a/tui/overlay.go b/tui/overlay.go index af27fe9..9d63d2e 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -1,6 +1,7 @@ package tui import ( + "context" "fmt" "strings" @@ -157,7 +158,7 @@ func (m *model) open(ov *overlay) { // closeOverlay closes the overlay and gives the keys back to the panes. func (m *model) closeOverlay() { m.overlay, m.mode = nil, modeNormal - m.stopGrep() + m.stopGrep(fmt.Errorf("code search: the search closes: %w", context.Canceled)) } // openInput opens a prompt of kind with the text value. diff --git a/tui/pr.go b/tui/pr.go index 6c6d0d1..922feee 100644 --- a/tui/pr.go +++ b/tui/pr.go @@ -31,7 +31,7 @@ type prFetch struct { gen int // the read whose result shows. Other reads are stale. inFlight bool // the read gen runs polled time.Time // the last request, for prPoll - cancel context.CancelFunc + cancel context.CancelCauseFunc // trailing is true if an ambient request comes while a read runs. // Then one more read follows that read. trailing bool @@ -57,9 +57,11 @@ func (m *model) requestPR(forced bool) tea.Cmd { func (m *model) loadPR() tea.Cmd { f := &m.prf if f.cancel != nil { - f.cancel() + f.cancel(fmt.Errorf("pull request read: a newer read replaces it: %w", context.Canceled)) } - ctx, cancel := context.WithTimeout(m.ctx, prTimeout) + ctx, cancel := context.WithCancelCause(m.ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, prTimeout, + fmt.Errorf("pull request read: %v timeout: %w", prTimeout, context.DeadlineExceeded)) f.gen++ f.inFlight, f.trailing, f.cancel = true, false, cancel repo, gen := m.repo, f.gen @@ -69,7 +71,8 @@ func (m *model) loadPR() tea.Cmd { Azure: m.cfg.AzureHost, } return func() tea.Msg { - defer cancel() + defer cancelTimeout() + defer cancel(fmt.Errorf("pull request read: done: %w", context.Canceled)) pr, err := repo.PullRequest(ctx, hosts) return prMsg{gen: gen, pr: pr, err: err} } diff --git a/tui/search.go b/tui/search.go index 1e2f557..55ba710 100644 --- a/tui/search.go +++ b/tui/search.go @@ -120,7 +120,7 @@ func (m *model) runSearch() tea.Cmd { s, q := &ov.search, ov.input.Value() s.files, s.fileTotal = search.Files(s.paths, m.recent, q, search.MaxFiles) s.err = "" - m.stopGrep() + m.stopGrep(fmt.Errorf("code search: a newer query replaces it: %w", context.Canceled)) // A blank grep is noise, as in herdr-reviewr. if strings.TrimSpace(q) == "" { s.hits, s.hitsMore = nil, false @@ -128,11 +128,14 @@ func (m *model) runSearch() tea.Cmd { return nil } ov.showSearch() - ctx, cancel := context.WithTimeout(m.ctx, codeTimeout) + ctx, cancel := context.WithCancelCause(m.ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, codeTimeout, + fmt.Errorf("code search: %v timeout: %w", codeTimeout, context.DeadlineExceeded)) m.grepCancel = cancel repo, gen := m.repo, m.grepGen return func() tea.Msg { - defer cancel() + defer cancelTimeout() + defer cancel(fmt.Errorf("code search: done: %w", context.Canceled)) hits, more, err := repo.Grep(ctx, q, search.MaxCodeLines, codeBudget) return grepMsg{gen: gen, hits: hits, more: more, err: err} } @@ -146,11 +149,11 @@ func (m *model) addRecent(path string) { } // stopGrep stops the code search that runs, if any. Its result then does -// not show. -func (m *model) stopGrep() { +// not show. cause tells why it stops. +func (m *model) stopGrep(cause error) { m.grepGen++ if m.grepCancel != nil { - m.grepCancel() + m.grepCancel(cause) m.grepCancel = nil } } diff --git a/tui/send.go b/tui/send.go index d23adac..4a1101b 100644 --- a/tui/send.go +++ b/tui/send.go @@ -25,8 +25,11 @@ func (m *model) listAgents(msg agentsMsg) tea.Cmd { c, ctx := m.rex, m.ctx msg.gen = m.agentsGen return func() tea.Msg { - ctx, cancel := context.WithTimeout(ctx, rexTimeout) - defer cancel() + ctx, cancel := context.WithCancelCause(ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, rexTimeout, + fmt.Errorf("agent list: %v timeout: %w", rexTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("agent list: done: %w", context.Canceled)) agents, err := c.Agents(ctx) isRexdiff := func(a rex.Agent) bool { return a.Status.App == appName } agents = slices.DeleteFunc(agents, isRexdiff) @@ -178,8 +181,11 @@ func (m *model) deliver(a rex.Agent) tea.Cmd { text, ids := m.reviewText(), m.commentIDs() focus := m.cfg.focusesAgent() return func() tea.Msg { - ctx, cancel := context.WithTimeout(ctx, rexTimeout) - defer cancel() + ctx, cancel := context.WithCancelCause(ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, rexTimeout, + fmt.Errorf("send: %v timeout: %w", rexTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("send: done: %w", context.Canceled)) status, err := c.Status(ctx, a.Block) if err != nil { return sentMsg{agent: a, err: fmt.Errorf("check %s: %w", a.Name, err)} @@ -257,8 +263,11 @@ const copyTimeout = 2 * time.Second // before the next frame, so two copies keep their order. A clipboard tool // that does not answer fails after copyTimeout. func (m *model) copyText(text, done string, ids []int) { - ctx, cancel := context.WithTimeout(m.ctx, copyTimeout) - defer cancel() + ctx, cancel := context.WithCancelCause(m.ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, copyTimeout, + fmt.Errorf("copy: %v timeout: %w", copyTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("copy: done: %w", context.Canceled)) err := clipboard.Write(ctx, m.env, text) switch { case err != nil: diff --git a/tui/tui.go b/tui/tui.go index 8882f9d..16ac905 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -103,20 +103,20 @@ func Run(ctx context.Context, o Options) (resume string, err error) { if err != nil { return "", err } - ctx, cancel := context.WithCancel(ctx) - defer cancel() + ctx, cancel := context.WithCancelCause(ctx) + defer cancel(errQuit) m := startModel(ctx, o, cfg) program := tea.NewProgram(&m, tea.WithContext(ctx)) var wg sync.WaitGroup if o.Rex != nil { - // Watch returns only the error of ctx, when ctx is done. + // Watch returns only the cause of ctx, when ctx is done. wg.Go(func() { _ = o.Rex.Watch(ctx, func(e rex.Event) { program.Send(eventMsg(e)) }) }) } final, err := program.Run() - cancel() + cancel(errQuit) wg.Wait() if fm, ok := final.(*model); ok && err == nil { if fm.resumePath != "" { @@ -129,6 +129,9 @@ func Run(ctx context.Context, o Options) (resume string, err error) { return "", err } +// errQuit is the cause of the stop of the work of Run when rexdiff quits. +var errQuit = fmt.Errorf("rexdiff quits: %w", context.Canceled) + // startModel returns the model that Run shows. It starts the watcher, // reads the state of o.Resume, loads the changes, and labels the block of // the program in Rex. diff --git a/tui/turn.go b/tui/turn.go index 23687a6..56a9c6f 100644 --- a/tui/turn.go +++ b/tui/turn.go @@ -2,6 +2,7 @@ package tui import ( "context" + "fmt" "maps" "slices" "time" @@ -57,8 +58,11 @@ func (m *model) askCwd(block string) tea.Cmd { a.asking = true c, ctx := m.rex, m.ctx return func() tea.Msg { - ctx, cancel := context.WithTimeout(ctx, rexTimeout) - defer cancel() + ctx, cancel := context.WithCancelCause(ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, rexTimeout, + fmt.Errorf("rex cwd: %v timeout: %w", rexTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("rex cwd: done: %w", context.Canceled)) cwd, err := c.Cwd(ctx, block) return cwdMsg{block: block, cwd: cwd, err: err} } @@ -187,8 +191,11 @@ func (m *model) checkTurnLater() tea.Cmd { m.turnChecking = true p, repo, ctx := m.pending, m.repo, m.ctx return func() tea.Msg { - ctx, cancel := context.WithTimeout(ctx, reloadTimeout) - defer cancel() + ctx, cancel := context.WithCancelCause(ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, reloadTimeout, + fmt.Errorf("turn check: %v timeout: %w", reloadTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("turn check: done: %w", context.Canceled)) tree, err := repo.Snapshot(ctx) return turnCheckMsg{turn: p, tree: tree, err: err} } diff --git a/update/update.go b/update/update.go index 44e3068..bcd3ba5 100644 --- a/update/update.go +++ b/update/update.go @@ -149,8 +149,11 @@ func detect(bin, version string, goInstall bool, env []string) *Updater { // Latest returns the latest release, and whether it is newer than the // running rexdiff. Latest stops and returns an error after five seconds. func (u *Updater) Latest(ctx context.Context) (Release, bool, error) { - ctx, cancel := context.WithTimeout(ctx, checkTimeout) - defer cancel() + ctx, cancel := context.WithCancelCause(ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, checkTimeout, + fmt.Errorf("release check: %v timeout: %w", checkTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("release check: done: %w", context.Canceled)) body, err := get(ctx, u.latestURL, 1<<20) if err != nil { return Release{}, false, err @@ -172,8 +175,11 @@ func (u *Updater) Latest(ctx context.Context) (Release, bool, error) { // early can leave a broken cask or binary. Install stops after five // minutes. func (u *Updater) Install(ctx context.Context, r Release) error { - ctx, cancel := context.WithTimeout(context.WithoutCancel(ctx), installTimeout) - defer cancel() + ctx, cancel := context.WithCancelCause(context.WithoutCancel(ctx)) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, installTimeout, + fmt.Errorf("install: %v timeout: %w", installTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("install: done: %w", context.Canceled)) var err error switch u.method { case methodBrew: @@ -231,6 +237,9 @@ func (u *Updater) runProgram(ctx context.Context, env []string, name string, arg if errors.Is(err, exec.ErrNotFound) { return out, proc.NotInstalled(name) } + if ctx.Err() != nil { + return out, fmt.Errorf("%s: %w", filepath.Base(name), proc.Error(ctx, name, err, nil)) + } if last := proc.LastLine(string(out)); last != "" { return out, fmt.Errorf("%s: %s: %w", filepath.Base(name), last, err) } diff --git a/update/update_test.go b/update/update_test.go index 6d6445e..f484950 100644 --- a/update/update_test.go +++ b/update/update_test.go @@ -194,10 +194,10 @@ func TestInstallBrew(t *testing.T) { } pathEnv := "PATH=" + filepath.Join(prefix, "path") + ":/usr/bin:/bin" - ctx, cancel := context.WithCancel(t.Context()) - defer cancel() + ctx, cancel := context.WithCancelCause(t.Context()) + defer cancel(fmt.Errorf("test: done: %w", context.Canceled)) if tt.cancel { - cancel() + cancel(fmt.Errorf("test stops the install: %w", context.Canceled)) } u := detect(t, "http://127.0.0.1:1/latest", link, "0.1.0", pathEnv) err := u.Install(ctx, update.Release{Tag: "v0.2.0"}) diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index eaa5d8c..ad544d9 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -385,7 +385,8 @@ printf 'a.go\0001\000hit\nb.go\00012' exec /bin/sleep 10 `) grep := func(timeout, budget time.Duration) ([]vcs.Match, bool, error) { - ctx, cancel := context.WithTimeout(t.Context(), timeout) + ctx, cancel := context.WithTimeoutCause(t.Context(), timeout, + fmt.Errorf("test grep: %v timeout: %w", timeout, context.DeadlineExceeded)) defer cancel() return r.Grep(ctx, "hit", 10, budget) } @@ -407,3 +408,49 @@ exec /bin/sleep 10 t.Errorf("Grep past the deadline = %+v, %v, %v, want none, more, no error", ms, more, err) } } + +// TestSnapshotWaitStops checks that a Snapshot that waits for another +// Snapshot returns the cause of its context when the context ends. +func TestSnapshotWaitStops(t *testing.T) { + t.Parallel() + env, link := gitLink(t) + r, _ := newRepoEnv(t, env) + // The fake git takes the place of git after Open. It writes to the FIFO + // started, so the test knows that the first Snapshot holds the lock. + // Then it waits on the FIFO block until it stops. + removeGit(t, link) + bin := filepath.Dir(link) + for _, name := range []string{"started", "block"} { + if err := syscall.Mkfifo(filepath.Join(bin, name), 0o644); err != nil { + t.Fatal(err) + } + } + testgit.Script(t, bin, "git", `d="${0%/*}" +echo started > "$d/started" +read -r _ < "$d/block" +`) + errFirst := errors.New("the test stops the first snapshot") + ctx, cancel := context.WithCancelCause(t.Context()) + defer cancel(fmt.Errorf("test: done: %w", context.Canceled)) + done := make(chan error, 1) + go func() { + _, err := r.Snapshot(ctx) + done <- err + }() + if _, err := os.ReadFile(filepath.Join(bin, "started")); err != nil { + t.Fatal(err) + } + + ctx2, cancel2 := context.WithTimeoutCause(t.Context(), 50*time.Millisecond, + fmt.Errorf("second snapshot: 50ms timeout: %w", context.DeadlineExceeded)) + defer cancel2() + _, err := r.Snapshot(ctx2) + if !errors.Is(err, context.DeadlineExceeded) { + t.Errorf("Snapshot that waits = %v, want the cause of its context", err) + } + + cancel(errFirst) + if err := <-done; !errors.Is(err, errFirst) { + t.Errorf("Snapshot that holds the lock = %v, want the cause %v", err, errFirst) + } +} diff --git a/vcs/pr.go b/vcs/pr.go index 1fc32e6..fdb4ec1 100644 --- a/vcs/pr.go +++ b/vcs/pr.go @@ -164,7 +164,7 @@ func cleanPR(pr *PullRequest) { // and its subcommand, for example "gh pr". func (r *Repo) runJSON(ctx context.Context, env []string, v any, name string, args ...string) error { cmd, stderr := r.command(ctx, env, name, args...) - out, err := output(cmd, stderr) + out, err := output(ctx, cmd, stderr) if err == nil { err = json.Unmarshal([]byte(out), v) } diff --git a/vcs/refs.go b/vcs/refs.go index f645fd0..4ddf54d 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -226,7 +226,7 @@ func (r *Repo) Grep(ctx context.Context, q string, limit int, budget time.Durati if pastDeadline(ctx) { return nil, true, nil } - return nil, false, fmt.Errorf("git grep: %w", proc.Error("git", err, nil)) + return nil, false, fmt.Errorf("git grep: %w", proc.Error(ctx, "git", err, nil)) } // Past the budget, Grep stops git if it has a line, or else at the // next line. @@ -254,9 +254,9 @@ func (r *Repo) Grep(ctx context.Context, q string, limit int, budget time.Durati case pastDeadline(ctx): return ms, true, nil case ctx.Err() != nil: - return nil, false, ctx.Err() + return nil, false, context.Cause(ctx) } - return nil, false, fmt.Errorf("git grep: %w", proc.Error("git", err, stderr.Bytes())) + return nil, false, fmt.Errorf("git grep: %w", proc.Error(ctx, "git", err, stderr.Bytes())) } // pastDeadline reports whether ctx ends at its deadline. diff --git a/vcs/repo.go b/vcs/repo.go index 7f03018..b9c88a7 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -24,7 +24,6 @@ import ( "slices" "strconv" "strings" - "sync" "time" "github.com/rednafi/rexdiff/internal/proc" @@ -55,10 +54,13 @@ type Repo struct { index string // the path of the real index env []string // the environment of git and of the forge tools - // snapMu guards the private index of Snapshot, in the directory - // snapDir, or "" before the first Snapshot. snapSeed is the file status - // of the real index at the last copy. - snapMu sync.Mutex + // snapLock is the lock of the private index of Snapshot. A send takes + // the lock, and a receive gives it back. A channel lets Snapshot stop + // its wait when ctx ends. The lock guards snapDir, snapSeed and + // closed. snapDir is the directory of the private index, or "" before + // the first Snapshot. snapSeed is the file status of the real index at + // the last copy. + snapLock chan struct{} snapDir string snapSeed string closed bool @@ -76,7 +78,7 @@ func Open(ctx context.Context, dir string, env []string) (*Repo, error) { if err != nil { return nil, err } - r := &Repo{root: abs, env: env} + r := &Repo{root: abs, env: env, snapLock: make(chan struct{}, 1)} // Get each path with its own git process, because a path can have a // newline. A path can also end with a space, so remove only the last // newline. @@ -96,9 +98,10 @@ func Open(ctx context.Context, dir string, env []string) (*Repo, error) { } // Close removes the files that the repository keeps for [Repo.Snapshot]. +// Close waits for the Snapshot that runs. func (r *Repo) Close() error { - r.snapMu.Lock() - defer r.snapMu.Unlock() + r.snapLock <- struct{}{} + defer func() { <-r.snapLock }() dir := r.snapDir r.snapDir, r.closed = "", true if dir == "" { @@ -120,7 +123,7 @@ func (r *Repo) run(ctx context.Context, env []string, args ...string) (string, e func (r *Repo) runInput(ctx context.Context, env []string, in io.Reader, args ...string) (string, error) { cmd, stderr := r.command(ctx, env, "git", args...) cmd.Stdin = in - out, err := output(cmd, stderr) + out, err := output(ctx, cmd, stderr) if err != nil { return out, fmt.Errorf("git %s: %w", args[0], err) } @@ -141,13 +144,14 @@ func (r *Repo) command(ctx context.Context, env []string, name string, args ...s return cmd, &stderr } -// output runs cmd and returns its standard output. The error has the first -// line of the standard error. It wraps the error of the process, so -// callers can examine its exit code. -func output(cmd *exec.Cmd, stderr *bytes.Buffer) (string, error) { +// output runs cmd and returns its standard output. ctx is the context of +// cmd. The error has the first line of the standard error, or the cause of +// ctx. It wraps the error of the process, so callers can examine its exit +// code. +func output(ctx context.Context, cmd *exec.Cmd, stderr *bytes.Buffer) (string, error) { out, err := cmd.Output() if err != nil { - return string(out), proc.Error(cmd.Args[0], err, stderr.Bytes()) + return string(out), proc.Error(ctx, cmd.Args[0], err, stderr.Bytes()) } return string(out), nil } @@ -237,10 +241,16 @@ func (r *Repo) MergeBaseCommit(ctx context.Context, base string) (string, error) // example a nested repository with no commit. Snapshot uses a private // index, so the real index does not change. The private index keeps the // file status of the last Snapshot, also of the untracked files, so git -// reads only the files that change. [Repo.Close] removes it. +// reads only the files that change. [Repo.Close] removes it. One Snapshot +// runs at a time. If ctx ends while Snapshot waits for another, +// Snapshot returns the cause of ctx. func (r *Repo) Snapshot(ctx context.Context) (string, error) { - r.snapMu.Lock() - defer r.snapMu.Unlock() + select { + case r.snapLock <- struct{}{}: + case <-ctx.Done(): + return "", context.Cause(ctx) + } + defer func() { <-r.snapLock }() if r.closed { return "", errClosed } @@ -268,7 +278,7 @@ func (r *Repo) Snapshot(ctx context.Context) (string, error) { // privateIndex returns the environment that points git at the private // index of Snapshot. It copies the real index when the real index changes, // for example after a commit or a "git add -f". A clean of the temporary -// directory makes a new directory. snapMu must be held. +// directory makes a new directory. The caller must hold snapLock. func (r *Repo) privateIndex() ([]string, error) { seed := "" if st, err := os.Stat(r.index); err == nil { @@ -479,14 +489,14 @@ func (r *Repo) readBlobs(ctx context.Context, ids []string, blobs []blob) error return err } if err := cmd.Start(); err != nil { - return fmt.Errorf("git cat-file: %w", proc.Error("git", err, nil)) + return fmt.Errorf("git cat-file: %w", proc.Error(ctx, "git", err, nil)) } err = readBatch(bufio.NewReader(out), batch, blobs) if err != nil { _ = cmd.Process.Kill() } if werr := cmd.Wait(); err == nil && werr != nil { - err = proc.Error("git", werr, stderr.Bytes()) + err = proc.Error(ctx, "git", werr, stderr.Bytes()) } if err != nil { return fmt.Errorf("git cat-file: %w", err) @@ -608,7 +618,7 @@ func (r *Repo) Owns(ctx context.Context, dir string) (bool, error) { return false, nil } cmd, stderr := r.command(ctx, nil, "git", "-C", dir, "rev-parse", "--show-toplevel") - out, err := output(cmd, stderr) + out, err := output(ctx, cmd, stderr) if _, ok := errors.AsType[*exec.ExitError](err); ok { return false, nil // dir is in no working tree } diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 5fb3ea3..5ca620c 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -706,15 +706,16 @@ func TestGrepLimit(t *testing.T) { } } -// TestGrepCancelled checks that Grep returns the error of a cancelled +// TestGrepCancelled checks that Grep returns the cause of a cancelled // context. func TestGrepCancelled(t *testing.T) { t.Parallel() r, _ := newRepo(t) - ctx, cancel := context.WithCancel(t.Context()) - cancel() - if _, _, err := r.Grep(ctx, "one", 10, time.Minute); !errors.Is(err, context.Canceled) { - t.Errorf("Grep with a cancelled context = %v, want %v", err, context.Canceled) + ctx, cancel := context.WithCancelCause(t.Context()) + errStop := errors.New("the test stops the search") + cancel(errStop) + if _, _, err := r.Grep(ctx, "one", 10, time.Minute); !errors.Is(err, errStop) { + t.Errorf("Grep with a cancelled context = %v, want the cause %v", err, errStop) } } From ef5baab0e0ec1138361b70942e7a8cfe8c2ecf09 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 11:08:30 +0100 Subject: [PATCH 082/119] refactor: one WriteString for each part, as gopls suggests --- diff/review.go | 10 +++++++--- internal/diffview/diffview.go | 6 ++++-- internal/tree/tree_test.go | 3 ++- test/fake_test.go | 5 ++++- vcs/pr_test.go | 6 +++++- vcs/repo.go | 6 ++++-- 6 files changed, 26 insertions(+), 10 deletions(-) diff --git a/diff/review.go b/diff/review.go index 1ee592c..4fa69f6 100644 --- a/diff/review.go +++ b/diff/review.go @@ -35,7 +35,8 @@ func format(c *Comment) string { // diff. if len(c.snippet) > 0 { for _, l := range c.snippet { - b.WriteString("\n" + termtext.Plain(l)) + b.WriteString("\n") + b.WriteString(termtext.Plain(l)) } } else { mark := "+" @@ -43,7 +44,9 @@ func format(c *Comment) string { mark = "-" } for _, l := range c.code { - b.WriteString("\n" + mark + termtext.Plain(l)) + b.WriteString("\n") + b.WriteString(mark) + b.WriteString(termtext.Plain(l)) } } var text []string @@ -52,7 +55,8 @@ func format(c *Comment) string { text = append(text, strings.TrimRight(l, " \t")) } } - b.WriteString("\n" + strings.Join(text, "\n")) + b.WriteString("\n") + b.WriteString(strings.Join(text, "\n")) return b.String() } diff --git a/internal/diffview/diffview.go b/internal/diffview/diffview.go index a9f7409..a203cc4 100644 --- a/internal/diffview/diffview.go +++ b/internal/diffview/diffview.go @@ -359,7 +359,8 @@ func (v *View) renderUnified() string { v.lineNum(ls, after, v.afterNumDigits) } for i, h := range v.unified.Hunks { - b.WriteString(v.unifiedHeader(i) + "\n") + b.WriteString(v.unifiedHeader(i)) + b.WriteString("\n") oldN, newN := h.FromLine, h.ToLine for _, l := range h.Lines { ls, sym := v.kindStyle(l.Kind) @@ -398,7 +399,8 @@ func (v *View) renderSplit() string { var b strings.Builder afterWidth := v.codeWidth + btoi(v.extraColOnAfter) for i, h := range v.splitHunks { - b.WriteString(v.splitHeader(i) + "\n") + b.WriteString(v.splitHeader(i)) + b.WriteString("\n") oldN, newN := h.fromLine, h.toLine for _, l := range h.lines { left, leftFill := v.splitSide(l.before, oldN, v.beforeNumDigits, v.codeWidth) diff --git a/internal/tree/tree_test.go b/internal/tree/tree_test.go index ec1c4e2..19b4bbe 100644 --- a/internal/tree/tree_test.go +++ b/internal/tree/tree_test.go @@ -50,7 +50,8 @@ func shape(rows []tree.Row) []string { mark string }{{r.Changed, "+"}, {r.Ignored, "!"}, {r.Expanded, "v"}} { if m.on { - b.WriteString(" " + m.mark) + b.WriteString(" ") + b.WriteString(m.mark) } } out = append(out, b.String()) diff --git a/test/fake_test.go b/test/fake_test.go index 44fcbf7..4466350 100644 --- a/test/fake_test.go +++ b/test/fake_test.go @@ -40,7 +40,10 @@ var repoFixture = testgit.NewFixture(func(tb testing.TB, dir string) { func numbered(word string, first, last int) string { var b strings.Builder for n := first; n <= last; n++ { - b.WriteString(word + " " + strconv.Itoa(n) + "\n") + b.WriteString(word) + b.WriteString(" ") + b.WriteString(strconv.Itoa(n)) + b.WriteString("\n") } return b.String() } diff --git a/vcs/pr_test.go b/vcs/pr_test.go index 67d0e01..031f43d 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -19,7 +19,11 @@ func fakeTool(t *testing.T, dir, name string, calls map[string]string) { var script strings.Builder script.WriteString("case \"$*\" in\n") for args, out := range calls { - script.WriteString("'" + args + "') cat <<'EOF'\n" + out + "\nEOF\n;;\n") + script.WriteString("'") + script.WriteString(args) + script.WriteString("') cat <<'EOF'\n") + script.WriteString(out) + script.WriteString("\nEOF\n;;\n") } script.WriteString("*) echo unexpected call: \"$*\" >&2; exit 1 ;;\nesac\n") testgit.Script(t, dir, name, script.String()) diff --git a/vcs/repo.go b/vcs/repo.go index b9c88a7..efdbedc 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -322,7 +322,8 @@ func (r *Repo) dropIgnored(ctx context.Context, env []string) error { var drop strings.Builder for p := range strings.SplitSeq(strings.TrimSuffix(out, "\x00"), "\x00") { if !keep[p] { - drop.WriteString(p + "\x00") + drop.WriteString(p) + drop.WriteString("\x00") } } if drop.Len() == 0 { @@ -476,7 +477,8 @@ func (r *Repo) readBlobs(ctx context.Context, ids []string, blobs []blob) error for i, id := range ids { if id != "" { batch = append(batch, i) - in.WriteString(id + "\n") + in.WriteString(id) + in.WriteString("\n") } } if len(batch) == 0 { From f8200fe201a726be043633e64d79d9727b46af27 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 11:09:22 +0100 Subject: [PATCH 083/119] test: Fprintf for one line of text --- test/fake_test.go | 7 ++----- vcs/pr_test.go | 7 ++----- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/test/fake_test.go b/test/fake_test.go index 4466350..4992d6a 100644 --- a/test/fake_test.go +++ b/test/fake_test.go @@ -2,10 +2,10 @@ package test import ( "errors" + "fmt" "io/fs" "os" "path/filepath" - "strconv" "strings" "testing" "time" @@ -40,10 +40,7 @@ var repoFixture = testgit.NewFixture(func(tb testing.TB, dir string) { func numbered(word string, first, last int) string { var b strings.Builder for n := first; n <= last; n++ { - b.WriteString(word) - b.WriteString(" ") - b.WriteString(strconv.Itoa(n)) - b.WriteString("\n") + fmt.Fprintf(&b, "%s %d\n", word, n) } return b.String() } diff --git a/vcs/pr_test.go b/vcs/pr_test.go index 031f43d..a3a3227 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -2,6 +2,7 @@ package vcs_test import ( "errors" + "fmt" "reflect" "slices" "strings" @@ -19,11 +20,7 @@ func fakeTool(t *testing.T, dir, name string, calls map[string]string) { var script strings.Builder script.WriteString("case \"$*\" in\n") for args, out := range calls { - script.WriteString("'") - script.WriteString(args) - script.WriteString("') cat <<'EOF'\n") - script.WriteString(out) - script.WriteString("\nEOF\n;;\n") + fmt.Fprintf(&script, "'%s') cat <<'EOF'\n%s\nEOF\n;;\n", args, out) } script.WriteString("*) echo unexpected call: \"$*\" >&2; exit 1 ;;\nesac\n") testgit.Script(t, dir, name, script.String()) From 478b9aaffbaa5680bc0ded6cfced4195703d0891 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 12:04:55 +0100 Subject: [PATCH 084/119] feat: keep the settings and the toggle action in separate Lua files rexdiff.lua has the settings of the user, and rexdiff writes it only if it is not there. rexdiff_toggle.lua has the action, and rexdiff writes it whole. Both are embedded Lua files. rexdiff.lua loads the action with pcall, so a broken action does not stop the rest of Rex's config. A rexdiff.lua from 0.2.7 keeps its settings, and the loader takes the place of its code, at the first start or at an install. --- .doc/arch.md | 22 ++- .doc/dev.md | 3 + .doc/user.md | 8 +- cmd/rexdiff/install.go | 328 ++++++++++--------------------- cmd/rexdiff/main.go | 10 +- cmd/rexdiff/rexdiff.lua | 22 +++ cmd/rexdiff/rexdiff_toggle.lua | 135 +++++++++++++ test/testdata/rexdiff-0.2.7.lua | 138 +++++++++++++ test/testdata/script/install.txt | 82 ++++++-- test/upgrade_test.go | 97 +++++++-- tui/config.go | 6 +- tui/tui.go | 4 +- 12 files changed, 589 insertions(+), 266 deletions(-) create mode 100644 cmd/rexdiff/rexdiff.lua create mode 100644 cmd/rexdiff/rexdiff_toggle.lua create mode 100644 test/testdata/rexdiff-0.2.7.lua diff --git a/.doc/arch.md b/.doc/arch.md index b9f93f7..2e293d7 100644 --- a/.doc/arch.md +++ b/.doc/arch.md @@ -27,8 +27,8 @@ copied from crush. The libraries get their environment from `cmd/rexdiff`, and d read the environment of the process. `internal/testgit` sets up git for the tests. -`cmd/rexdiff` parses the flags, handles `rexdiff install`, upgrades `rexdiff.lua` at -the start, and calls `tui`. +`cmd/rexdiff` parses the flags, handles `rexdiff install`, upgrades `rexdiff_toggle.lua` +at the start, and calls `tui`. Only `cmd/rexdiff` reads the environment of the process, once, with `os.Environ`. It gives that list to the libraries, which find and run their programs with it, as @@ -53,8 +53,20 @@ escape code. rexdiff reads that status from each pane and treats a pane that rep name as an agent. A `rex events` command stays running to stream state changes. If it exits, rexdiff starts it again after 2 seconds. -`rexdiff install` writes `rexdiff.lua` into the Rex config folder. The file adds the -"Toggle rexdiff" action, which opens rexdiff in a pane beside the focused agent. +`rexdiff install` writes two files into the Rex config folder, from the embedded files +`cmd/rexdiff/rexdiff.lua` and `cmd/rexdiff/rexdiff_toggle.lua`: + +- `rexdiff.lua` has the settings of the user. rexdiff writes it only if it is not there. + It loads `rexdiff_toggle.lua` with `pcall`, so a failure does not stop the rest of + Rex's config, and the key then shows the error. +- `rexdiff_toggle.lua` has the "Toggle rexdiff" action, which opens rexdiff in a pane + beside the focused agent. rexdiff writes it whole. At a start, if the file differs + from the embedded code, rexdiff writes it and reloads Rex's config. It does not change + a file that runs another rexdiff, such as a build for development. + +A `rexdiff.lua` from rexdiff 0.2.7 has the code under a marker line. At the first start +of a new rexdiff, or at an install, rexdiff keeps the settings above the line and puts +the loader in place of the code. ## Git @@ -94,4 +106,4 @@ them to a temporary file and starts the new binary in the same process, and the binary reads the file. Two git refs under `refs/worktree/rexdiff/` keep the picked base branch and the -last-turn snapshot across restarts. Settings live at the top of `rexdiff.lua`. +last-turn snapshot across restarts. Settings live in `rexdiff.lua`. diff --git a/.doc/dev.md b/.doc/dev.md index 760f939..94c3a93 100644 --- a/.doc/dev.md +++ b/.doc/dev.md @@ -20,6 +20,9 @@ pane. The log goes to `/tmp/rexdiff.log`. It shows `/tmp/rexreview-demo` by default. Set `REXDIFF_DEMO` for another repository. It needs fish and python3. +The Lua of the Rex action is in `cmd/rexdiff/rexdiff.lua` and +`cmd/rexdiff/rexdiff_toggle.lua`. The binary embeds both. See [arch.md](arch.md). + Outside Rex, `go run ./cmd/rexdiff` works in any git repository but cannot send comments. diff --git a/.doc/user.md b/.doc/user.md index 2cd9dd3..299099d 100644 --- a/.doc/user.md +++ b/.doc/user.md @@ -19,6 +19,8 @@ With Go, replace the brew lines with To open rexdiff, focus the agent's pane and press Shift+Cmd+R. Press it again to close rexdiff. +`rexdiff uninstall` removes rexdiff from Rex's config. + ## Read the changes ![The Changes tab](../.asset/changes.png) @@ -91,7 +93,7 @@ needs gh, glab, or az, and you must be logged in. ## Settings -The settings are at the top of `rexdiff.lua`, next to Rex's `init.lua`. That is +The settings are in `rexdiff.lua`, next to Rex's `init.lua`. That is `~/.config/rex/` unless `REX_CONFIG` or `XDG_CONFIG_HOME` moves it. ```lua @@ -109,8 +111,8 @@ Also available: `default_scope`, `markdown_view`, `file_list`, `file_list_width` `gitlab_host`, and `azure_devops_host`. They take the same values as in [herdr-reviewr](https://github.com/persiyanov/herdr-reviewr). -After a change, run `rex config reload`. Do not edit the line `-- rexdiff code below` or -anything under it. +After a change, run `rex config reload`. Do not edit `rexdiff_toggle.lua`, because rexdiff +writes it again. Without `editor`, rexdiff uses `$VISUAL`, `$EDITOR`, or git's `core.editor`, read from your login shell. With zsh, set them in `~/.zprofile`, not `~/.zshrc`. diff --git a/cmd/rexdiff/install.go b/cmd/rexdiff/install.go index 1055bbd..71192a3 100644 --- a/cmd/rexdiff/install.go +++ b/cmd/rexdiff/install.go @@ -2,6 +2,7 @@ package main import ( "context" + _ "embed" "errors" "flag" "fmt" @@ -23,174 +24,60 @@ import ( // status that rexdiff reports. A Rex session is the same as a herdr // workspace. // -// The action is in rexdiff.lua, beside Rex's init.lua, and init.lua loads -// it with one line. rexdiff.lua has the settings of the user at the top and -// the code of rexdiff under codeMark. Install and upgrades replace the code -// and keep the settings. +// The action is in two files beside Rex's init.lua, and init.lua loads them +// with one line. rexdiff.lua has the settings of the user. Install writes +// it only if it is not there, and rexdiff does not change it after that. +// rexdiff_toggle.lua has the toggle action. Install and upgrades write +// it whole. const ( // requireLine is the line of init.lua that loads rexdiff.lua. requireLine = `require("rexdiff")` - luaFile = "rexdiff.lua" // beside init.lua - // codeMark is the line of rexdiff.lua above the code of rexdiff. - codeMark = "-- rexdiff code below. Install and upgrades replace it. Do not edit this line." + luaFile = "rexdiff.lua" // beside init.lua + toggleFile = "rexdiff_toggle.lua" // beside init.lua ) -// defaultSettings is the top of a new rexdiff.lua. -const defaultSettings = `-- "rexdiff install" wrote this file. To remove it, run "rexdiff uninstall". --- --- These are the settings of rexdiff. The user guide lists them: --- https://github.com/rednafi/rexdiff/blob/master/.doc/user.md#settings --- To change a setting, edit it, then run "rex config reload". --- Install and upgrades keep this part. -local settings = { - -- key = "shift+cmd+r", -- the key of the toggle, or false for none - -- placement = "split", -- split, zoomed, tab, or overlay - -- layout = "unified", -- or split +// settingsLua is the content of a new rexdiff.lua: the settings, then the +// loader of rexdiff_toggle.lua. If rexdiff_toggle.lua fails, the loader keeps +// the rest of Rex's config, and the key shows why. +// +//go:embed rexdiff.lua +var settingsLua string + +// loaderMark is the first line of the loader in settingsLua. +const loaderMark = "-- rexdiff_toggle.lua has the toggle action" + +// oldMark is the line of a rexdiff.lua from rexdiff 0.2.7 above its code. +// The text above the line is the settings of the user. +const oldMark = "-- rexdiff code below. Install and upgrades replace it. Do not edit this line." + +// fromOld returns the new rexdiff.lua for old, a rexdiff.lua from rexdiff +// 0.2.7. It keeps the settings of old, and puts the loader in place of the +// code. ok is false if old is not from 0.2.7. +func fromOld(old string) (s string, ok bool) { + above, _, ok := strings.Cut(old, oldMark) + if !ok { + return "", false + } + _, loader, _ := strings.Cut(settingsLua, loaderMark) + return strings.TrimRight(above, "\n") + "\n\n" + loaderMark + loader, true } -` - -// codeTemplate is the code of rexdiff.lua, under codeMark. Its %s is the -// line from binLine. -const codeTemplate = `%s -local PLACEMENTS = { split = true, zoomed = true, tab = true, overlay = true } -local TERM = "com.superlogical.terminal" - --- must returns res, or fails the action with err. A Rex call returns nil --- and an error message when it fails. -local function must(res, err) - if err ~= nil then error(err, 0) end - return res -end - --- call calls method on the terminal block with the ID id. -local function call(method, id) - return must(rex.block.call(TERM, method, { block_id = id })) -end - --- runs_rexdiff returns true if the terminal block id runs rexdiff. rexdiff --- reports app=rexdiff to Rex with OSC 7501. Rex keeps an idle status after --- its program stops. Thus the block counts only while the process that --- reported the status is in the foreground. -local function runs_rexdiff(id) - for _, r in ipairs(call("program_status", id).records or {}) do - if r.app == "rexdiff" and r.owner then - local fg = call("process", id).foreground - return fg ~= nil and fg.pid == r.owner.pid - end - end - return false -end - --- reviewers returns the IDs of the blocks in the session that run rexdiff. -local function reviewers() - local ids = {} - for _, b in ipairs(must(rex.session.list_blocks{}).blocks or {}) do - if b.creator_name == TERM and runs_rexdiff(b.block_id) then - table.insert(ids, b.block_id) - end - end - return ids -end - --- check fails the action if rexdiff does not accept config, the settings --- as a JSON object. The user sees an error of the action. If rexdiff stops --- at once in a new pane, the pane closes and the user does not see the error. -local function check(config) - local r, err = rex.exec({ BIN, "--check", "--config", config }) - if r == nil then error(err, 0) end - if not r.ok then error((r.stderr:gsub("%%s+$", "")), 0) end -end - --- open_rexdiff opens rexdiff at placement, beside the agent in ctx, with --- the settings in config. rexdiff starts in the current directory of the --- agent. The rex package of rexdiff finds the directory the same way. --- rexdiff starts through the login shell of the user, so that it gets the --- login environment of the user, for example EDITOR and PATH. -local function open_rexdiff(ctx, placement, config) - local p = call("process", ctx.block_id) - local cwd = (p.foreground or {}).cwd or (p.child or {}).cwd - local node = rex.layout.block{ - flavor = TERM .. ".shell", - label = "rexdiff", - options = { - command = { BIN, "--agent", ctx.block_id, "--config", config }, - cwd = cwd, - }, - } - if placement == "tab" then - return must(rex.session.new_window{ window_label = "rexdiff", layout = node }) - elseif placement == "overlay" then - return must(rex.session.new_layer{ - bounds = { 0.04, 0.04, 0.92, 0.92 }, - layout = node, - focus = true, - }) - end - local s = must(rex.session.new_split{ - anchor_id = ctx.block_id, - direction = "horizontal", - side = "after", - ratio = 0.45, - focus = true, - layout = node, - }) - if placement == "zoomed" then - must(rex.session.zoom_block{ block_id = s.block_ids[1], zoom = true }) - end - return s -end - --- The key and the placement are for Rex. rexdiff gets the other settings --- as JSON. -if type(settings) ~= "table" then - error("config: settings must be a table, as in: local settings = { }", 0) -end -local opts = {} -for k, v in pairs(settings) do opts[k] = v end -local key = opts.key -if key == nil then key = "shift+cmd+r" end -local default_placement = opts.placement or "split" -opts.key, opts.placement = nil, nil -local config, encode_err = rex.json.encode(opts) - -rex.action{ - name = "rexdiff_toggle", - title = "Toggle rexdiff", - description = "Review the agent's changes beside it and send comments back", - category = "rexdiff", - keywords = "diff review git comments agent", - args = { placement = "string?" }, -- split, zoomed, tab, or overlay - run = function(ctx, args) - local placement = args.placement or default_placement - if not PLACEMENTS[placement] then - error("unknown placement " .. tostring(placement) - .. "; use split, zoomed, tab, or overlay", 0) - end - local open = reviewers() - if #open == 0 then - if config == nil then error("config: " .. encode_err, 0) end - check(config) - return open_rexdiff(ctx, placement, config) - end - for _, id in ipairs(open) do - must(rex.call("block.close", { session_id = ctx.session_id, block_id = id })) - end - return { closed = open } - end, -} -if key then rex.bind(key, "rexdiff_toggle") end -` +// toggleCode is the code of the toggle action. It needs BIN, the path of +// rexdiff. +// +//go:embed rexdiff_toggle.lua +var toggleCode string -// luaCode returns the code part of rexdiff.lua for bin, the path of -// rexdiff, from codeMark to the end. -func luaCode(bin string) string { - return codeMark + "\n" + fmt.Sprintf(codeTemplate, binLine(bin)) +// toggleLua returns the content of rexdiff_toggle.lua for bin, the path of +// rexdiff. +func toggleLua(bin string) string { + return "-- rexdiff writes this file. Do not edit it. Your settings are in rexdiff.lua.\n" + + binLine(bin) + "\n" + toggleCode } -// binLine returns the line of rexdiff.lua that names bin. upgrade uses it -// to find which rexdiff the file runs. +// binLine returns the line of rexdiff_toggle.lua that names bin. upgrade uses +// it to find which rexdiff the file runs. func binLine(bin string) string { return "local BIN = " + luaQuote(bin) } // luaQuote returns s as a Lua string. Go's %q writes escapes, such as @@ -200,39 +87,10 @@ func luaQuote(s string) string { return `"` + r.Replace(s) + `"` } -// splitLua returns the settings part of rexdiff.lua, above codeMark, and the -// code part, from codeMark on. It returns an error if codeMark is gone, -// because then the settings have no end. -func splitLua(path, content string) (settings, code string, err error) { - i := 0 - for line := range strings.Lines(content) { - if strings.TrimSpace(line) == codeMark { - return content[:i], content[i:], nil - } - i += len(line) - } - return "", "", fmt.Errorf("%s has no line %q, so rexdiff cannot tell your settings from its code: put that line back under your settings, or move the file away and run \"rexdiff install\" again", - path, codeMark) -} - -// luaContent returns the content of rexdiff.lua with the code for bin. It -// keeps the settings of old, the current content of the file. If old is -// empty, it uses the default settings. -func luaContent(path, old, bin string) (string, error) { - if old == "" { - return defaultSettings + luaCode(bin), nil - } - settings, _, err := splitLua(path, old) - if err != nil { - return "", err - } - return settings + luaCode(bin), nil -} - -// luaPath returns the path of rexdiff.lua in the environment env, beside -// the init.lua of Rex. -func luaPath(env []string) string { - return filepath.Join(filepath.Dir(rex.ConfigPath(env)), luaFile) +// luaPath returns the path of the file name in the environment env, +// beside the init.lua of Rex. +func luaPath(env []string, name string) string { + return filepath.Join(filepath.Dir(rex.ConfigPath(env)), name) } // readFile returns the content of the file at path, or "" if there is no @@ -260,37 +118,47 @@ func executable() (string, error) { return bin, nil } -// install writes rexdiff.lua with the action that runs bin, the path of -// rexdiff. It adds the require line to init.lua. env is the environment of -// rexdiff. +// install writes rexdiff_toggle.lua with the action that runs bin, the path +// of rexdiff. It writes rexdiff.lua if it is not there, and moves the code +// out of a rexdiff.lua from rexdiff 0.2.7. It adds the require line to +// init.lua. env is the environment of rexdiff. func install(ctx context.Context, env []string, bin string, args []string, stdout, stderr io.Writer) error { if err := parseSub("install", args, env, stderr); err != nil { return err } - // Make the new content first. Then a bad rexdiff.lua stops the install - // before it changes a file. - lua := luaPath(env) - old, err := readFile(lua) + settingsPath, togglePath := luaPath(env, luaFile), luaPath(env, toggleFile) + old, err := readFile(settingsPath) if err != nil { return err } - code, err := luaContent(lua, old, bin) - if err != nil { + if err := os.MkdirAll(filepath.Dir(togglePath), 0o755); err != nil { return err } - if err := os.MkdirAll(filepath.Dir(lua), 0o755); err != nil { + if err := os.WriteFile(togglePath, []byte(toggleLua(bin)), 0o644); err != nil { return err } - if err := os.WriteFile(lua, []byte(code), 0o644); err != nil { - return err + fmt.Fprintf(stdout, "wrote %s\n", togglePath) + next, fromV027 := fromOld(old) + switch { + case old == "": + next = settingsLua + fmt.Fprintf(stdout, "wrote %s with your settings\n", settingsPath) + case fromV027: + fmt.Fprintf(stdout, "kept your settings in %s, and moved the code out\n", settingsPath) + default: + fmt.Fprintf(stdout, "kept your settings in %s\n", settingsPath) + } + if next != "" { + if err := os.WriteFile(settingsPath, []byte(next), 0o644); err != nil { + return err + } } initPath := rex.ConfigPath(env) added, err := addRequire(initPath) if err != nil { return err } - fmt.Fprintf(stdout, "wrote %s; the settings are at its top\n", lua) if added { fmt.Fprintf(stdout, "added %s to %s\n", requireLine, initPath) } @@ -303,27 +171,38 @@ func install(ctx context.Context, env []string, bin string, args []string, stdou // config after an upgrade. const upgradeReloadTimeout = 10 * time.Second -// upgrade replaces the code part of rexdiff.lua with the code for bin, if -// they differ, and keeps the settings. It is not the update of rexdiff -// itself (see the update package). It upgrades only the Lua code of the -// action. It does nothing if there is no rexdiff.lua, or if the file runs -// another rexdiff, for example a build for development. It returns what -// the user must know, or "". env is the environment of rexdiff. +// upgrade writes rexdiff_toggle.lua with the code for bin, if the file is +// there and differs, and reloads Rex's config. A rexdiff.lua from rexdiff +// 0.2.7 gets its code moved to rexdiff_toggle.lua, and keeps its settings. +// It is not the update of rexdiff itself (see the update package). It +// upgrades only the Lua code of the action. It does nothing if the files +// run another rexdiff, for example a build for development. It returns +// what the user must know, or "". env is the environment of rexdiff. func upgrade(ctx context.Context, env []string, bin string) string { - lua := luaPath(env) - old, err := readFile(lua) - if err != nil || !strings.Contains(old, binLine(bin)+"\n") { + settingsPath, togglePath := luaPath(env, luaFile), luaPath(env, toggleFile) + old, err := readFile(settingsPath) + if err != nil { return "" } - code, err := luaContent(lua, old, bin) + code, err := readFile(togglePath) if err != nil { - return "rexdiff.lua upgrade failed: " + err.Error() + return "" } - if code == old { + // Each file names the rexdiff that it runs on this line. + mine := "\n" + binLine(bin) + "\n" + next, fromV027 := fromOld(old) + fromV027 = fromV027 && strings.Contains(old, mine) + want := toggleLua(bin) + if !fromV027 && (code == want || !strings.Contains(code, mine)) { return "" } - if err := os.WriteFile(lua, []byte(code), 0o644); err != nil { - return "rexdiff.lua upgrade failed: " + err.Error() + if err := os.WriteFile(togglePath, []byte(want), 0o644); err != nil { + return toggleFile + " upgrade failed: " + err.Error() + } + if fromV027 { + if err := os.WriteFile(settingsPath, []byte(next), 0o644); err != nil { + return luaFile + " upgrade failed: " + err.Error() + } } // The upgrade runs before the first frame, and the user does not see // it. Thus the reload has a deadline. @@ -333,7 +212,7 @@ func upgrade(ctx context.Context, env []string, bin string) string { defer cancelTimeout() defer cancel(fmt.Errorf("rex config reload: done: %w", context.Canceled)) if err := rex.ReloadConfig(ctx, env); err != nil { - return "upgraded rexdiff.lua; reload Rex's config yourself: rex config reload" + return "upgraded " + toggleFile + "; reload Rex's config yourself: rex config reload" } return "" } @@ -376,7 +255,7 @@ func parseSub(name string, args, env []string, stderr io.Writer) error { if fs.NArg() > 0 { // Show the usage, as the flag package does for a bad flag. fmt.Fprintf(stderr, "unknown argument %q (set the key and the placement in the settings in %s)\n", - fs.Arg(0), luaPath(env)) + fs.Arg(0), luaPath(env, luaFile)) fs.Usage() return errUsage } @@ -384,8 +263,9 @@ func parseSub(name string, args, env []string, stderr io.Writer) error { } // uninstall removes the require line from init.lua, then rexdiff.lua with -// the settings. In this order, a failure does not leave init.lua with a -// require of a file that is not there. env is the environment of rexdiff. +// the settings, and rexdiff_toggle.lua. In this order, a failure does not +// leave init.lua with a require of a file that is not there. env is the +// environment of rexdiff. func uninstall(ctx context.Context, env, args []string, stdout, stderr io.Writer) error { if err := parseSub("uninstall", args, env, stderr); err != nil { return err @@ -394,8 +274,10 @@ func uninstall(ctx context.Context, env, args []string, stdout, stderr io.Writer if err := removeRequire(initPath); err != nil { return err } - if err := os.Remove(luaPath(env)); err != nil && !errors.Is(err, fs.ErrNotExist) { - return err + for _, name := range []string{luaFile, toggleFile} { + if err := os.Remove(luaPath(env, name)); err != nil && !errors.Is(err, fs.ErrNotExist) { + return err + } } fmt.Fprintln(stdout, "removed the rexdiff action, its key, and its settings from Rex") reload(ctx, env, stdout) diff --git a/cmd/rexdiff/main.go b/cmd/rexdiff/main.go index 9821da2..80f32e0 100644 --- a/cmd/rexdiff/main.go +++ b/cmd/rexdiff/main.go @@ -1,9 +1,9 @@ // Rexdiff shows the changes that a coding agent makes, beside the agent in // Rex. You can comment on the changed lines, then paste the comments into the // agent. "rexdiff install" adds a "Toggle rexdiff" action and a key to the Rex -// configuration, in rexdiff.lua beside Rex's init.lua. The settings of rexdiff -// are at the top of rexdiff.lua. The action gives them to rexdiff in the -// --config flag. +// configuration, in two files beside Rex's init.lua. rexdiff.lua has the +// settings of rexdiff, and rexdiff_toggle.lua has the code of the action. The +// action gives the settings to rexdiff in the --config flag. // // rexdiff [flags] [repo] // rexdiff install @@ -120,8 +120,8 @@ func run(ctx context.Context, env, args []string, stdout, stderr io.Writer) erro } defer closeLog() - // In Rex, upgrade replaces the code of the action if that code differs - // from the code of this rexdiff. + // In Rex, upgrade writes rexdiff_toggle.lua if it differs from the code + // of this rexdiff. client := rex.New(env) var notice string bin, binErr := executable() diff --git a/cmd/rexdiff/rexdiff.lua b/cmd/rexdiff/rexdiff.lua new file mode 100644 index 0000000..9dadbb8 --- /dev/null +++ b/cmd/rexdiff/rexdiff.lua @@ -0,0 +1,22 @@ +-- "rexdiff install" wrote this file. To remove it, run "rexdiff uninstall". +-- +-- These are your settings of rexdiff. The user guide lists them: +-- https://github.com/rednafi/rexdiff/blob/master/.doc/user.md#settings +-- To change a setting, edit it, then run "rex config reload". +-- rexdiff does not change this file. The action is in rexdiff_toggle.lua. +local settings = { + -- key = "shift+cmd+r", -- the key of the toggle, or false for none + -- placement = "split", -- split, zoomed, tab, or overlay + -- layout = "unified", -- or split +} + +-- rexdiff_toggle.lua has the toggle action, and rexdiff writes it. If it +-- fails, the rest of Rex's config still loads, and the key shows why. +local ok, err = pcall(function() require("rexdiff_toggle")(settings) end) +if not ok then + rex.action{ name = "rexdiff_toggle", title = "Toggle rexdiff", + run = function() error("rexdiff: " .. tostring(err), 0) end } + local key = type(settings) == "table" and settings.key + if key == nil then key = "shift+cmd+r" end + if key then rex.bind(key, "rexdiff_toggle") end +end diff --git a/cmd/rexdiff/rexdiff_toggle.lua b/cmd/rexdiff/rexdiff_toggle.lua new file mode 100644 index 0000000..45bc41c --- /dev/null +++ b/cmd/rexdiff/rexdiff_toggle.lua @@ -0,0 +1,135 @@ +-- This is the code of the "Toggle rexdiff" action. rexdiff writes it to +-- rexdiff_toggle.lua, under the line that sets BIN, the path of rexdiff. +-- rexdiff.lua calls the function at the end with the settings. + +local PLACEMENTS = { split = true, zoomed = true, tab = true, overlay = true } +local TERM = "com.superlogical.terminal" + +-- must returns res, or fails the action with err. A Rex call returns nil +-- and an error message when it fails. +local function must(res, err) + if err ~= nil then error(err, 0) end + return res +end + +-- call calls method on the terminal block with the ID id. +local function call(method, id) + return must(rex.block.call(TERM, method, { block_id = id })) +end + +-- runs_rexdiff returns true if the terminal block id runs rexdiff. rexdiff +-- reports app=rexdiff to Rex with OSC 7501. Rex keeps an idle status after +-- its program stops. Thus the block counts only while the process that +-- reported the status is in the foreground. +local function runs_rexdiff(id) + for _, r in ipairs(call("program_status", id).records or {}) do + if r.app == "rexdiff" and r.owner then + local fg = call("process", id).foreground + return fg ~= nil and fg.pid == r.owner.pid + end + end + return false +end + +-- reviewers returns the IDs of the blocks in the session that run rexdiff. +local function reviewers() + local ids = {} + for _, b in ipairs(must(rex.session.list_blocks{}).blocks or {}) do + if b.creator_name == TERM and runs_rexdiff(b.block_id) then + table.insert(ids, b.block_id) + end + end + return ids +end + +-- check fails the action if rexdiff does not accept config, the settings +-- as a JSON object. The user sees an error of the action. If rexdiff stops +-- at once in a new pane, the pane closes and the user does not see the error. +local function check(config) + local r, err = rex.exec({ BIN, "--check", "--config", config }) + if r == nil then error(err, 0) end + if not r.ok then error((r.stderr:gsub("%s+$", "")), 0) end +end + +-- open_rexdiff opens rexdiff at placement, beside the agent in ctx, with +-- the settings in config. rexdiff starts in the current directory of the +-- agent. The rex package of rexdiff finds the directory the same way. +-- rexdiff starts through the login shell of the user, so that it gets the +-- login environment of the user, for example EDITOR and PATH. +local function open_rexdiff(ctx, placement, config) + local p = call("process", ctx.block_id) + local cwd = (p.foreground or {}).cwd or (p.child or {}).cwd + local node = rex.layout.block{ + flavor = TERM .. ".shell", + label = "rexdiff", + options = { + command = { BIN, "--agent", ctx.block_id, "--config", config }, + cwd = cwd, + }, + } + if placement == "tab" then + return must(rex.session.new_window{ window_label = "rexdiff", layout = node }) + elseif placement == "overlay" then + return must(rex.session.new_layer{ + bounds = { 0.04, 0.04, 0.92, 0.92 }, + layout = node, + focus = true, + }) + end + local s = must(rex.session.new_split{ + anchor_id = ctx.block_id, + direction = "horizontal", + side = "after", + ratio = 0.45, + focus = true, + layout = node, + }) + if placement == "zoomed" then + must(rex.session.zoom_block{ block_id = s.block_ids[1], zoom = true }) + end + return s +end + +-- The function gets the settings of rexdiff.lua, and adds the action +-- and its key. +return function(settings) + -- The key and the placement are for Rex. rexdiff gets the other settings + -- as JSON. + if type(settings) ~= "table" then + error("config: settings must be a table, as in: local settings = { }", 0) + end + local opts = {} + for k, v in pairs(settings) do opts[k] = v end + local key = opts.key + if key == nil then key = "shift+cmd+r" end + local default_placement = opts.placement or "split" + opts.key, opts.placement = nil, nil + local config, encode_err = rex.json.encode(opts) + + rex.action{ + name = "rexdiff_toggle", + title = "Toggle rexdiff", + description = "Review the agent's changes beside it and send comments back", + category = "rexdiff", + keywords = "diff review git comments agent", + args = { placement = "string?" }, -- split, zoomed, tab, or overlay + run = function(ctx, args) + local placement = args.placement or default_placement + if not PLACEMENTS[placement] then + error("unknown placement " .. tostring(placement) + .. "; use split, zoomed, tab, or overlay", 0) + end + local open = reviewers() + if #open == 0 then + if config == nil then error("config: " .. encode_err, 0) end + check(config) + return open_rexdiff(ctx, placement, config) + end + for _, id in ipairs(open) do + must(rex.call("block.close", { session_id = ctx.session_id, block_id = id })) + end + return { closed = open } + end, + } + if key then rex.bind(key, "rexdiff_toggle") end +end diff --git a/test/testdata/rexdiff-0.2.7.lua b/test/testdata/rexdiff-0.2.7.lua new file mode 100644 index 0000000..e1aa56b --- /dev/null +++ b/test/testdata/rexdiff-0.2.7.lua @@ -0,0 +1,138 @@ +-- Installed by "rexdiff install". Remove with "rexdiff uninstall". +-- +-- The settings of rexdiff. Edit them, then run "rex config reload". The +-- README of rexdiff lists them. Install and upgrades keep this part. +local settings = { + -- key = "shift+cmd+r", -- the key of the toggle, or false for none + -- placement = "split", -- split, zoomed, tab, or overlay + -- layout = "split", +} + +-- rexdiff code below. Install and upgrades replace it. Do not edit this line. +local BIN = "{{BIN}}" +local PLACEMENTS = { split = true, zoomed = true, tab = true, overlay = true } +local TERM = "com.superlogical.terminal" + +-- must returns res, or fails the action with err. A Rex call returns nil +-- and an error message when it fails. +local function must(res, err) + if err ~= nil then error(err, 0) end + return res +end + +-- call calls method on the terminal block with the ID id. +local function call(method, id) + return must(rex.block.call(TERM, method, { block_id = id })) +end + +-- runs_rexdiff returns true if the terminal block id runs rexdiff. rexdiff +-- reports app=rexdiff to Rex with OSC 7501. Rex keeps an idle status after +-- its program stops, so the block counts only while the process that +-- reported the status is in the foreground. +local function runs_rexdiff(id) + for _, r in ipairs(call("program_status", id).records or {}) do + if r.app == "rexdiff" and r.owner then + local fg = call("process", id).foreground + return fg ~= nil and fg.pid == r.owner.pid + end + end + return false +end + +-- reviewers returns the IDs of the blocks in the session that run rexdiff. +local function reviewers() + local ids = {} + for _, b in ipairs(must(rex.session.list_blocks{}).blocks or {}) do + if b.creator_name == TERM and runs_rexdiff(b.block_id) then + table.insert(ids, b.block_id) + end + end + return ids +end + +-- check fails the action if rexdiff does not accept config, the settings +-- as a JSON object. Here the user sees the error. If rexdiff stops at once +-- in a new pane, the pane closes and the error is lost. +local function check(config) + local r, err = rex.exec({ BIN, "--check", "--config", config }) + if r == nil then error(err, 0) end + if not r.ok then error((r.stderr:gsub("%s+$", "")), 0) end +end + +-- open_rexdiff opens rexdiff at placement, beside the agent in ctx, with +-- the settings in config. rexdiff starts in the current directory of the +-- agent. The rex package of rexdiff finds the directory the same way. +local function open_rexdiff(ctx, placement, config) + local p = call("process", ctx.block_id) + local cwd = (p.foreground or {}).cwd or (p.child or {}).cwd + local node = rex.layout.block{ + flavor = TERM .. ".shell", + label = "rexdiff", + options = { + command = { BIN, "--agent", ctx.block_id, "--config", config }, + cwd = cwd, + shell = "none", + }, + } + if placement == "tab" then + return must(rex.session.new_window{ window_label = "rexdiff", layout = node }) + elseif placement == "overlay" then + return must(rex.session.new_layer{ + bounds = { 0.04, 0.04, 0.92, 0.92 }, + layout = node, + focus = true, + }) + end + local s = must(rex.session.new_split{ + anchor_id = ctx.block_id, + direction = "horizontal", + side = "after", + ratio = 0.45, + focus = true, + layout = node, + }) + if placement == "zoomed" then + must(rex.session.zoom_block{ block_id = s.block_ids[1], zoom = true }) + end + return s +end + +-- The key and the placement are for Rex. rexdiff gets the other settings +-- as JSON. +if type(settings) ~= "table" then + error("rexdiff.lua: settings must be a table, as in: local settings = { }", 0) +end +local opts = {} +for k, v in pairs(settings) do opts[k] = v end +local key = opts.key +if key == nil then key = "shift+cmd+r" end +local default_placement = opts.placement or "split" +opts.key, opts.placement = nil, nil +local config, encode_err = rex.json.encode(opts) + +rex.action{ + name = "rexdiff_toggle", + title = "Toggle rexdiff", + description = "Review the agent's changes beside it and send comments back", + category = "rexdiff", + keywords = "diff review git comments agent", + args = { placement = "string?" }, -- split, zoomed, tab, or overlay + run = function(ctx, args) + local placement = args.placement or default_placement + if not PLACEMENTS[placement] then + error("unknown placement " .. tostring(placement) + .. "; use split, zoomed, tab, or overlay", 0) + end + local open = reviewers() + if #open == 0 then + if config == nil then error("rexdiff settings: " .. encode_err, 0) end + check(config) + return open_rexdiff(ctx, placement, config) + end + for _, id in ipairs(open) do + must(rex.call("block.close", { session_id = ctx.session_id, block_id = id })) + end + return { closed = open } + end, +} +if key then rex.bind(key, "rexdiff_toggle") end diff --git a/test/testdata/script/install.txt b/test/testdata/script/install.txt index 23afd56..14ecf3f 100644 --- a/test/testdata/script/install.txt +++ b/test/testdata/script/install.txt @@ -1,25 +1,66 @@ -# install writes rexdiff.lua, with the settings at its top, adds one line -# to init.lua, keeps the rest of init.lua, and reloads Rex. +# install writes rexdiff.lua with the settings and rexdiff_toggle.lua with the +# code. It adds one line to init.lua, keeps the rest of init.lua, and +# reloads Rex. +env REX_CONFIG=$WORK/.config/rex/init.lua mkdir .config/rex cp mine.lua .config/rex/init.lua exec rexdiff install -stdout 'wrote '$WORK'/.config/rex/rexdiff.lua; the settings are at its top' +stdout 'wrote '$WORK'/.config/rex/rexdiff_toggle.lua' +stdout 'wrote '$WORK'/.config/rex/rexdiff.lua with your settings' stdout 'added require\("rexdiff"\) to '$WORK'/.config/rex/init.lua' stdout 'press the key of the settings' cmp .config/rex/init.lua installed.lua +grep '^local settings = \{' .config/rex/rexdiff.lua +grep 'require\("rexdiff_toggle"\)\(settings\)' .config/rex/rexdiff.lua +grep '^-- rexdiff writes this file. Do not edit it.' .config/rex/rexdiff_toggle.lua +grep '^local BIN = "' .config/rex/rexdiff_toggle.lua grep 'config reload' rex.log -# A second install keeps the one line of init.lua, and does not say it adds it. -exec rexdiff install -! stdout 'added' -cmp .config/rex/init.lua installed.lua - # Rex accepts the action and its keys. -[realrex] exec $REALREX config check .config/rex/init.lua +[realrex] exec $REALREX config check [realrex] stdout 'bindings: 2' [realrex] stdout 'actions: 1' [realrex] ! stderr . +# With a broken rexdiff_toggle.lua, the rest of init.lua still loads, and the +# key runs an action of rexdiff.lua that shows the error. +[realrex] cp after.lua .config/rex/init.lua +[realrex] cp broken.lua .config/rex/rexdiff_toggle.lua +[realrex] exec $REALREX config check --json +[realrex] stdout '"name": "after_x"' +[realrex] stdout '"source": "rexdiff.lua:' +[realrex] stdout '"bindings": 2' +[realrex] stdout '"diagnostics": \[\]' +[realrex] ! stderr . +cp installed.lua .config/rex/init.lua + +# A second install keeps an edited rexdiff.lua, and writes rexdiff_toggle.lua +# again. It keeps the one line of init.lua, and does not say it adds it. +cp edited.lua .config/rex/rexdiff.lua +cp broken.lua .config/rex/rexdiff_toggle.lua +exec rexdiff install +stdout 'kept your settings in '$WORK'/.config/rex/rexdiff.lua' +! stdout 'added' +cmp .config/rex/rexdiff.lua edited.lua +grep '^local BIN = "' .config/rex/rexdiff_toggle.lua +! grep 'broken' .config/rex/rexdiff_toggle.lua +cmp .config/rex/init.lua installed.lua + +# install moves a rexdiff.lua from rexdiff 0.2.7 to the two files. It +# keeps the settings above the line of the code, and puts the loader in +# place of the code. +cp old.lua .config/rex/rexdiff.lua +cp broken.lua .config/rex/rexdiff_toggle.lua +exec rexdiff install +stdout 'kept your settings in '$WORK'/.config/rex/rexdiff.lua, and moved the code out' +grep '^local settings = \{ layout = "split" \}$' .config/rex/rexdiff.lua +grep 'require\("rexdiff_toggle"\)\(settings\)' .config/rex/rexdiff.lua +! grep 'rexdiff code below|old_code' .config/rex/rexdiff.lua +! grep 'broken' .config/rex/rexdiff_toggle.lua +[realrex] exec $REALREX config check --json +[realrex] stdout '"source": "rexdiff_toggle.lua:' +[realrex] stdout '"diagnostics": \[\]' + # uninstall -h only shows the usage. exec rexdiff uninstall -h exists .config/rex/rexdiff.lua @@ -31,11 +72,13 @@ chmod 0444 .config/rex/init.lua exists .config/rex/rexdiff.lua chmod 0644 .config/rex/init.lua -# uninstall removes the line and rexdiff.lua, and keeps the rest. +# uninstall removes the line, rexdiff.lua, and rexdiff_toggle.lua, and keeps +# the rest. exec rexdiff uninstall stdout 'removed the rexdiff action, its key, and its settings from Rex' cmp .config/rex/init.lua mine.lua ! exists .config/rex/rexdiff.lua +! exists .config/rex/rexdiff_toggle.lua # If Rex does not reload, install still writes the files and says what to do. env REX_FAIL=1 @@ -46,10 +89,27 @@ stdout 'reload Rex''s config yourself: rex config reload' # it still works after brew upgrade. [darwin] exec sh -c 'mkdir brew && ln -s "$(command -v rexdiff)" brew/rexdiff' [darwin] exec $WORK/brew/rexdiff install -[darwin] grep 'local BIN = "'$WORK'/brew/rexdiff"' .config/rex/rexdiff.lua +[darwin] grep 'local BIN = "'$WORK'/brew/rexdiff"' .config/rex/rexdiff_toggle.lua -- mine.lua -- rex.bind("cmd+e", "pane.zoom") -- installed.lua -- rex.bind("cmd+e", "pane.zoom") require("rexdiff") +-- after.lua -- +rex.bind("cmd+e", "pane.zoom") +require("rexdiff") +rex.action{ name = "after_x", title = "After x", run = function() end } +-- broken.lua -- +-- broken code +local x = = 1 +-- edited.lua -- +local settings = { layout = "split" } +require("rexdiff_toggle")(settings) +-- old.lua -- +-- The settings of rexdiff. +local settings = { layout = "split" } + +-- rexdiff code below. Install and upgrades replace it. Do not edit this line. +local BIN = "/old/rexdiff" +local function old_code() end diff --git a/test/upgrade_test.go b/test/upgrade_test.go index 9d2afa1..deddded 100644 --- a/test/upgrade_test.go +++ b/test/upgrade_test.go @@ -1,6 +1,8 @@ package test import ( + "errors" + "io/fs" "os" "os/exec" "path/filepath" @@ -9,9 +11,10 @@ import ( "testing" ) -// TestUpgradeAtStart checks that rexdiff in Rex replaces old code in -// rexdiff.lua, keeps the settings, and reloads Rex. Without the line above -// the code, it changes nothing and tells why. +// TestUpgradeAtStart checks that rexdiff in Rex writes a changed +// rexdiff_toggle.lua again, keeps rexdiff.lua, and reloads Rex. It does not +// change a rexdiff_toggle.lua that runs another rexdiff. Without +// rexdiff_toggle.lua, it writes no file. func TestUpgradeAtStart(t *testing.T) { repo := newRepo(t) rex := newRex(t, repo) @@ -23,27 +26,93 @@ func TestUpgradeAtStart(t *testing.T) { t.Fatalf("rexdiff install: %v\n%s", err, out) } lua := filepath.Join(filepath.Dir(config), "rexdiff.lua") - installed := read(t, lua) - edited := strings.Replace(installed, "local settings = {", "local settings = { layout = \"split\",", 1) - write(t, lua, strings.Replace(edited, "local function must", "local function old_must", 1)) + code := filepath.Join(filepath.Dir(config), "rexdiff_toggle.lua") + edited := strings.Replace(read(t, lua), "local settings = {", "local settings = { layout = \"split\",", 1) + write(t, lua, edited) + installed := read(t, code) + write(t, code, strings.Replace(installed, "local function must", "local function old_must", 1)) tm := start(t, repo, opts{rex: rex, env: env}) tm.keys("q") if err := tm.exited(); err != nil { t.Fatal(err) } + if got := read(t, code); got != installed { + t.Errorf("rexdiff_toggle.lua after the start = \n%s\nwant:\n%s", got, installed) + } if got := read(t, lua); got != edited { - t.Errorf("rexdiff.lua after the start = \n%s\nwant the new code under the settings:\n%s", got, edited) + t.Errorf("rexdiff.lua after the start = \n%s\nwant:\n%s", got, edited) + } + // The install reloads once, and the upgrade once. + if n := strings.Count(rex.calls(t), "config reload"); n != 2 { + t.Errorf("config reloads = %d, want 2", n) + } + + other := strings.Replace(installed, "local BIN = ", "local BIN = \"/other/rexdiff\" -- ", 1) + write(t, code, other) + tm = start(t, repo, opts{rex: rex, env: env}) + tm.keys("q") + if err := tm.exited(); err != nil { + t.Fatal(err) + } + if got := read(t, code); got != other { + t.Errorf("rexdiff_toggle.lua of another rexdiff after the start = \n%s\nwant:\n%s", got, other) } - rex.expectCalls(t, "config reload") - const mark = "-- rexdiff code below. Install and upgrades replace it. Do not edit this line.\n" - noMark := strings.Replace(edited, mark, "", 1) - write(t, lua, noMark) + if err := os.Remove(code); err != nil { + t.Fatal(err) + } tm = start(t, repo, opts{rex: rex, env: env}) - tm.waitFor("rexdiff.lua upgrade failed") - if got := read(t, lua); got != noMark { - t.Errorf("rexdiff.lua without the line = \n%s\nwant:\n%s", got, noMark) + tm.keys("q") + if err := tm.exited(); err != nil { + t.Fatal(err) + } + if _, err := os.Stat(code); !errors.Is(err, fs.ErrNotExist) { + t.Errorf("rexdiff_toggle.lua after a start without it: %v, want no file", err) + } +} + +// TestUpgradeFrom027 checks the first start of rexdiff in Rex after an +// upgrade from rexdiff 0.2.7. The rexdiff.lua of 0.2.7 has the settings, +// then the code under a marker line. rexdiff keeps the settings, puts the +// loader in place of the code, writes rexdiff_toggle.lua, and reloads Rex. +func TestUpgradeFrom027(t *testing.T) { + repo := newRepo(t) + rex := newRex(t, repo) + dir := t.TempDir() + config := filepath.Join(dir, "init.lua") + write(t, config, "require(\"rexdiff\")\n") + lua := filepath.Join(dir, "rexdiff.lua") + old := strings.Replace(read(t, filepath.Join("testdata", "rexdiff-0.2.7.lua")), + "{{BIN}}", binary(t), 1) + old = strings.Replace(old, " -- layout = \"split\",", " layout = \"split\",", 1) + write(t, lua, old) + settings, _, _ := strings.Cut(old, "-- rexdiff code below.") + + tm := start(t, repo, opts{rex: rex, env: []string{"REX_CONFIG=" + config}}) + tm.keys("q") + if err := tm.exited(); err != nil { + t.Fatal(err) + } + got := read(t, lua) + if !strings.HasPrefix(got, strings.TrimRight(settings, "\n")) || + !strings.Contains(got, `require("rexdiff_toggle")(settings)`) || + strings.Contains(got, "rexdiff code below") { + t.Errorf("rexdiff.lua after the start = \n%s\nwant the settings of 0.2.7 and the loader", got) + } + if got := read(t, filepath.Join(dir, "rexdiff_toggle.lua")); !strings.Contains(got, "local BIN = \""+binary(t)+"\"") { + t.Errorf("rexdiff_toggle.lua after the start = \n%s\nwant the code for %s", got, binary(t)) + } + if n := strings.Count(rex.calls(t), "config reload"); n != 1 { + t.Errorf("config reloads = %d, want 1", n) + } + if bin := os.Getenv("REXDIFF_REX"); bin != "" { + check := exec.CommandContext(t.Context(), bin, "config", "check") + check.Env = append(os.Environ(), "REX_CONFIG="+config) + out, err := check.CombinedOutput() + if err != nil || !strings.Contains(string(out), "actions: 1") { + t.Errorf("rex config check after the upgrade: %v\n%s", err, out) + } } } diff --git a/tui/config.go b/tui/config.go index 12f4ca8..885318d 100644 --- a/tui/config.go +++ b/tui/config.go @@ -75,9 +75,9 @@ var ( positions = []position{positionRight, positionBottom, positionLeft, positionTop} ) -// config holds the settings of rexdiff. The settings are at the top of -// rexdiff.lua, beside the configuration file (init.lua) of Rex. The toggle -// action gives them to rexdiff as JSON in --config. +// config holds the settings of rexdiff. The settings are in rexdiff.lua, +// beside the configuration file (init.lua) of Rex. The toggle action gives +// them to rexdiff as JSON in --config. type config struct { Layout Layout `json:"layout"` DefaultScope Scope `json:"default_scope"` diff --git a/tui/tui.go b/tui/tui.go index 16ac905..09523d3 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -26,8 +26,8 @@ type Options struct { // Rex is the Rex session of the process, or nil outside Rex. Without // Rex, the user cannot send the review. The user can only copy it. Rex *rex.Client - // Config is the settings as JSON, from the top of rexdiff.lua. An - // empty text means the default settings. + // Config is the settings as JSON, from rexdiff.lua. An empty text + // means the default settings. Config string // Layout and Scope override the settings if they are not empty. Set // them from the command-line flags -layout and -scope. The error of a From 9be07cc219ff89b0bf556e998840220c97b32223 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 12:39:24 +0100 Subject: [PATCH 085/119] refactor: a lean diffview, derived from crush Rows come from the one walk that draws them. The files group by job. The crush leftovers that rexdiff does not use go away, and DERIVED.md replaces VENDORED.md. The output is the same byte for byte. --- .doc/arch.md | 2 +- .doc/dev.md | 4 +- diff/diff.go | 10 +- internal/DERIVED.md | 12 + internal/VENDORED.md | 43 --- internal/diffview/ansi.go | 67 ---- internal/diffview/chroma.go | 52 --- internal/diffview/diffview.go | 630 --------------------------------- internal/diffview/escape.go | 33 -- internal/diffview/fold.go | 28 +- internal/diffview/highlight.go | 211 +++++++++++ internal/diffview/render.go | 291 +++++++++++++++ internal/diffview/rows.go | 150 -------- internal/diffview/split.go | 21 +- internal/diffview/style.go | 101 +++++- internal/diffview/terminal.go | 103 ------ internal/diffview/text.go | 70 ++++ internal/diffview/util.go | 39 -- internal/diffview/view.go | 242 +++++++++++++ internal/tree/tree.go | 2 +- internal/turn/turn.go | 6 +- 21 files changed, 941 insertions(+), 1176 deletions(-) create mode 100644 internal/DERIVED.md delete mode 100644 internal/VENDORED.md delete mode 100644 internal/diffview/ansi.go delete mode 100644 internal/diffview/chroma.go delete mode 100644 internal/diffview/diffview.go delete mode 100644 internal/diffview/escape.go create mode 100644 internal/diffview/highlight.go create mode 100644 internal/diffview/render.go delete mode 100644 internal/diffview/rows.go delete mode 100644 internal/diffview/terminal.go create mode 100644 internal/diffview/text.go delete mode 100644 internal/diffview/util.go create mode 100644 internal/diffview/view.go diff --git a/.doc/arch.md b/.doc/arch.md index 2e293d7..5bd95c1 100644 --- a/.doc/arch.md +++ b/.doc/arch.md @@ -23,7 +23,7 @@ import each other. `internal/` holds helpers: the file tree, search ranking, turn detection, the clipboard, the editor command, text cleaning, the runs of other programs, and the diff renderer -copied from crush. The libraries get their environment from `cmd/rexdiff`, and do not +derived from crush. The libraries get their environment from `cmd/rexdiff`, and do not read the environment of the process. `internal/testgit` sets up git for the tests. diff --git a/.doc/dev.md b/.doc/dev.md index 94c3a93..454e657 100644 --- a/.doc/dev.md +++ b/.doc/dev.md @@ -61,7 +61,7 @@ GitHub Actions runs the tests, builds the binaries, and updates the Homebrew cas `internal/termtext` before you show it. - Start a program with `internal/proc`, so that its errors have the same form as the others. -- `internal/diffview` is copied from crush. Record each change to it in - `internal/VENDORED.md`. +- Parts of `internal/diffview` derive from crush. Keep the crush notice in the header + of each derived file, and the list in `internal/DERIVED.md`. - When the right behaviour is unclear, follow herdr-reviewr. - Write commit messages in this form: `fix(tui): keep the view on failed reloads`. diff --git a/diff/diff.go b/diff/diff.go index 333e0b8..1cf08f4 100644 --- a/diff/diff.go +++ b/diff/diff.go @@ -120,11 +120,11 @@ type Diff struct { // Render compares before, the old content of the file at path, with after, // its new content. The path selects the syntax highlighter. func Render(path, before, after string, o Options) *Diff { - dv := diffview.New(). - Before(path, before). - After(path, after). + dv := diffview.New(path, before, after). Width(o.Width). - XOffset(o.Offset) + XOffset(o.Offset). + Theme(o.Theme.Background, o.Theme.Foreground, o.Theme.Green, + o.Theme.Red, o.Theme.dark()) if o.Cache != nil { dv = dv.Cache(&o.Cache.lines) } @@ -140,8 +140,6 @@ func Render(path, before, after string, o Options) *Diff { if o.Wrap { dv = dv.Wrap() } - dv = dv.Style(diffview.TerminalStyle(o.Theme.Background, o.Theme.Foreground, - o.Theme.Green, o.Theme.Red, o.Theme.dark())) out, rows, g := dv.Render() d := &Diff{split: o.Split, src: [2]string{before, after}, wrap: o.Wrap} diff --git a/internal/DERIVED.md b/internal/DERIVED.md new file mode 100644 index 0000000..7b6d389 --- /dev/null +++ b/internal/DERIVED.md @@ -0,0 +1,12 @@ +# Derived from charmbracelet/crush + +Parts of `internal/diffview` derive from charmbracelet/crush. + +- Source: https://github.com/charmbracelet/crush @ 17fccc0c6d4289f159384d3aaa7315ef1f71015b + (`internal/ui/diffview`, `internal/ansiext`, `internal/ui/xchroma`). +- License: FSL-1.1-MIT. Copyright 2025-2026 Charmbracelet, Inc. See `LICENSE-crush.md`. +- Derived files: `view.go`, `render.go`, `highlight.go`, `style.go`, `split.go`, and + `text.go`. Each one has a notice in its header comment. `fold.go` is not derived. + +The code is now rexdiff's. It changes as rexdiff needs, and this file does not record +each change. diff --git a/internal/VENDORED.md b/internal/VENDORED.md deleted file mode 100644 index f11dc47..0000000 --- a/internal/VENDORED.md +++ /dev/null @@ -1,43 +0,0 @@ -# Vendored from charmbracelet/crush - -- Source: https://github.com/charmbracelet/crush @ 17fccc0c6d4289f159384d3aaa7315ef1f71015b -- Paths: internal/ui/diffview, internal/ansiext, internal/ui/xchroma, all merged into - `internal/diffview`, because they only serve the diff view -- License: FSL-1.1-MIT (see LICENSE-crush.md). Copyright Charmbracelet, Inc. -- Local changes: - - package and import paths (module `github.com/rednafi/rexdiff`) - - `escape.go` is crush's `ansiext/ansi.go`; `chroma.go` is crush's `xchroma/chroma.go` - - `rows.go` (added): the row to source line mapping (with the continued rows of wrapped - lines) and the column geometry, which `Render` returns with the text - - `View` is crush's `DiffView`, and `Render` is its `String` - - `terminal.go` (added): `TerminalStyle`, the colours from the terminal palette, and the - `Wrap` option - - `ansi.go` (added): a chroma formatter that uses the ANSI palette colours - - `diffview.go`: the code is always highlighted with the formatter of - `ansi.go` (crush's `ChromaStyle` and chroma style formatter are removed); - `Lexer`, the lexer selection that `diff.RenderFile` shares; the - syntax cache key is a struct, not an xxh3 hash; `New` sets no default style; the code - lines of the two renderers go through one `codeLines`, which cuts or wraps a line, and - the split renderer builds each side with one `splitSide` method; named constants - for the symbols and the ellipsis; smaller render helpers - - `split.go`: uses `slices` in place of `charmbracelet/x/exp/slice`; `takeInsert` finds - the inserted line beside a deleted line - - `chroma.go`: only the lexer cache `matchLexer` and `renderLines`, which - the ANSI formatter uses; crush's `Formatter` and its token loop are removed - - `style.go`: `DefaultDarkStyle` and `DefaultLightStyle` removed (and with them - `charmtone`); the `diff` package always uses `TerminalStyle` - - API cut to what `diff` uses: removed `ChromaStyle`, `Formatter`, `Unified`, - `FileName` (and the file name header), `ContextLines`, `LineNumbers`, - `Height`, `YOffset`, `InfiniteYScroll` (and the height cut and the scroll - code); `MatchLexer`, `LineStyle` and the `Style` - fields are unexported; `RowFile` removed - - a coloured bar `▌` marks a changed line, in place of crush's `+` and `-`; `Signs` shows - `+` and `-` in place of the bar - - `fold.go` (added): the diff has the whole file in one hunk, and `foldHunk` folds the - long runs of equal lines, as in herdr-reviewr; `Expand` shows a fold, and `Row.Fold` tells - which lines a hunk header hides - - the syntax cache key tells "no background" from black, so a black tint does not - leak onto equal lines - - the syntax cache is a `Cache` that views can share (`View.Cache`), so that a new - render does not highlight the same lines again; its key has the lexer name, it keeps - the last lexer, and a `Cache` empties before its lines go above 32 MB diff --git a/internal/diffview/ansi.go b/internal/diffview/ansi.go deleted file mode 100644 index cebfc32..0000000 --- a/internal/diffview/ansi.go +++ /dev/null @@ -1,67 +0,0 @@ -package diffview - -import ( - "image/color" - "io" - - "charm.land/lipgloss/v2" - "github.com/alecthomas/chroma/v2" -) - -// The colours of the ANSI palette of the terminal, as Lip Gloss colours. -const ( - ansiRed = "1" - ansiGreen = "2" - ansiYellow = "3" - ansiBlue = "4" - ansiMagenta = "5" - ansiCyan = "6" - ansiGrey = "8" // bright black -) - -// ansiFor returns the ANSI palette colour of a token type. If ok is false, -// the token has the default foreground of the terminal. -func ansiFor(t chroma.TokenType) (c string, italic, ok bool) { - switch { - case t.InCategory(chroma.Comment): - return ansiGrey, true, true - case t == chroma.KeywordType, t == chroma.NameBuiltin, - t.InSubCategory(chroma.NameClass): - return ansiCyan, false, true - case t.InCategory(chroma.Keyword): - return ansiMagenta, false, true - case t.InSubCategory(chroma.LiteralString): - return ansiGreen, false, true - case t.InSubCategory(chroma.LiteralNumber), t == chroma.NameConstant: - return ansiYellow, false, true - case t == chroma.NameFunction, t == chroma.NameFunctionMagic, - t == chroma.NameTag, t == chroma.NameAttribute: - return ansiBlue, false, true - } - return "", false, false -} - -// ANSIFormatter returns a chroma formatter that colours the tokens with the -// ANSI palette colours, on the background bgColor. It ignores the chroma -// style. If processValue is not nil, ANSIFormatter calls it on the text of -// each token first. -func ANSIFormatter(bgColor color.Color, processValue func(string) string) chroma.Formatter { - format := func(w io.Writer, _ *chroma.Style, it chroma.Iterator) error { - plain := lipgloss.NewStyle().Background(bgColor) - for token := it(); token != chroma.EOF; token = it() { - value := token.Value - if processValue != nil { - value = processValue(value) - } - s := plain - if c, italic, ok := ansiFor(token.Type); ok { - s = plain.Foreground(lipgloss.Color(c)).Italic(italic) - } - if _, err := io.WriteString(w, renderLines(s, value)); err != nil { - return err - } - } - return nil - } - return chroma.FormatterFunc(format) -} diff --git a/internal/diffview/chroma.go b/internal/diffview/chroma.go deleted file mode 100644 index 4dfd7e7..0000000 --- a/internal/diffview/chroma.go +++ /dev/null @@ -1,52 +0,0 @@ -package diffview - -import ( - "strings" - "sync" - - "charm.land/lipgloss/v2" - "github.com/alecthomas/chroma/v2" - "github.com/alecthomas/chroma/v2/lexers" -) - -// lexerCache keeps the lexer of each file name, or nil if none matches. To -// match a name is slow, because lexers.Match tests the patterns of each -// lexer. The mutex makes the cache safe for more than one goroutine. -var ( - lexerCacheMu sync.RWMutex - lexerCache = map[string]chroma.Lexer{} -) - -// matchLexer returns the coalesced chroma lexer for the file name, or nil if -// no lexer matches. The lexer is safe to use again. -func matchLexer(fileName string) chroma.Lexer { - lexerCacheMu.RLock() - l, ok := lexerCache[fileName] - lexerCacheMu.RUnlock() - if ok { - return l - } - if l = lexers.Match(fileName); l != nil { - l = chroma.Coalesce(l) - } - lexerCacheMu.Lock() - lexerCache[fileName] = l - lexerCacheMu.Unlock() - return l -} - -// renderLines styles each line of value alone, and joins them with plain -// newlines. A token can contain newlines. For example, a chroma -// CommentSingle ends with one. Lip Gloss pads all lines of a multi-line -// string to one width. Without renderLines, this padding adds spaces to -// the line after a comment. -func renderLines(s lipgloss.Style, value string) string { - if !strings.Contains(value, "\n") { - return s.Render(value) - } - lines := strings.Split(value, "\n") - for i, line := range lines { - lines[i] = s.Render(line) - } - return strings.Join(lines, "\n") -} diff --git a/internal/diffview/diffview.go b/internal/diffview/diffview.go deleted file mode 100644 index a203cc4..0000000 --- a/internal/diffview/diffview.go +++ /dev/null @@ -1,630 +0,0 @@ -// Package diffview draws a diff in the terminal. The code comes from -// charmbracelet/crush, with changes for rexdiff. See ../VENDORED.md. -package diffview - -import ( - "fmt" - "image/color" - "slices" - "strconv" - "strings" - - "charm.land/lipgloss/v2" - "github.com/alecthomas/chroma/v2" - "github.com/alecthomas/chroma/v2/lexers" - "github.com/aymanbagabas/go-udiff" - "github.com/charmbracelet/x/ansi" -) - -const ( - leadingSymbolsSize = 2 // the width of a symbol, such as symInsert - lineNumPadding = 1 // the space on each side of a line number - ellipsis = "…" // shows where a line is cut -) - -// TabWidth is the number of spaces that replace a tab. -const TabWidth = 4 - -// These symbols are at the start of the code of a line. A bar in the colour -// of the line marks each changed line. [View.Signs] shows + and - in place -// of the bar. -const ( - symNone = " " // an equal line, a missing line, or a continued line - symBar = "▌ " - symInsert = "+ " - symDelete = "- " -) - -// file is a path and its content. -type file struct { - path string - content string -} - -// layout is the unified or the split layout. -type layout int - -const ( - layoutUnified layout = iota + 1 - layoutSplit -) - -// View draws the difference between two versions of a file. -type View struct { - layout layout - before file - after file - width int - xOffset int - style Style - wrap bool // wrap long lines instead of cutting them - signs bool // mark a changed line with + or -, not with a bar - - isComputed bool - err error - unified udiff.UnifiedDiff - folds []Fold // folds[i] hides above unified.Hunks[i] - expanded func(Fold) bool // the folds that show, see [View.Expand] - - splitHunks []splitHunk - - codeWidth int - fullCodeWidth int // with the leading symbols - extraColOnAfter bool // the new side of the split layout is one cell wider - beforeNumDigits int - afterNumDigits int - heights []int // the number of screen lines of each row, for rows - - cache *Cache -} - -// Cache keeps highlighted lines, so that chroma highlights each line once. -// Views that share a Cache reuse its lines and its last lexer. The zero -// value is an empty Cache. A Cache is not safe for concurrent use. -type Cache struct { - lines map[syntaxKey]string - size int // the bytes of the lines and their sources - - // lexer keeps the last lexer, because to select a lexer from the - // content is slow. - lexer struct { - path, content string - l chroma.Lexer - } -} - -// maxCacheSize limits the bytes of the lines and the sources in a Cache. -// If a put goes above this size, put empties the Cache first. -const maxCacheSize = 32 << 20 - -// put keeps the highlighted line s for key k. -func (c *Cache) put(k syntaxKey, s string) { - // k.source is a part of the file string. A copy lets the cache keep - // the line without the whole file. - k.source = strings.Clone(k.source) - n := len(k.source) + len(s) - if c.lines == nil || c.size+n > maxCacheSize { - c.lines, c.size = make(map[syntaxKey]string), 0 - } - c.lines[k] = s - c.size += n -} - -// New returns a View with the unified layout. -func New() *View { - return &View{layout: layoutUnified, cache: &Cache{}} -} - -// Cache makes v keep its highlighted lines in c. A nil c gives v a new -// Cache. -func (v *View) Cache(c *Cache) *View { - if c == nil { - c = &Cache{} - } - v.cache = c - return v -} - -// Split sets the split layout. The old lines are on the left and the new -// lines are on the right. -func (v *View) Split() *View { - v.layout = layoutSplit - return v -} - -// Before sets the old version of the file. -func (v *View) Before(path, content string) *View { - v.before = file{path: path, content: content} - v.clearCaches() - return v -} - -// After sets the new version of the file. -func (v *View) After(path, content string) *View { - v.after = file{path: path, content: content} - v.clearCaches() - return v -} - -// clearCaches clears the diff. Call it when the content changes. -func (v *View) clearCaches() { - v.isComputed = false -} - -// Style sets the colours of the lines. -func (v *View) Style(style Style) *View { - v.style = style - return v -} - -// Width sets the maximum width of the output, in cells. Zero means no limit. -func (v *View) Width(width int) *View { - v.width = width - return v -} - -// XOffset sets the number of cells to scroll the code to the right. -func (v *View) XOffset(xOffset int) *View { - v.xOffset = xOffset - return v -} - -// Render returns the rendered diff, one row for each of its lines, and the -// columns of the line numbers. -func (v *View) Render() (string, []Row, Geometry) { - out := v.text() - return out, v.rows(), v.geometry() -} - -// text returns the rendered diff. It also sets the fields that rows and -// geometry use. -func (v *View) text() string { - v.heights = v.heights[:0] - v.normalizeLineEndings() - if err := v.computeDiff(); err != nil { - return err.Error() - } - v.replaceTabs() - v.convertDiffToSplit() - v.adjustStyles() - v.detectNumDigits() - - if v.width <= 0 { - v.detectCodeWidth() - } else { - v.resizeCodeWidth() - } - - style := lipgloss.NewStyle() - if v.width > 0 { - style = style.MaxWidth(v.width) - } - if v.layout == layoutSplit { - return style.Render(strings.TrimSuffix(v.renderSplit(), "\n")) - } - return style.Render(strings.TrimSuffix(v.renderUnified(), "\n")) -} - -// normalizeLineEndings changes CRLF line endings to LF. -func (v *View) normalizeLineEndings() { - v.before.content = strings.ReplaceAll(v.before.content, "\r\n", "\n") - v.after.content = strings.ReplaceAll(v.after.content, "\r\n", "\n") -} - -// replaceTabs replaces the tabs in the lines of the diff with spaces. It runs -// after computeDiff, so that a change from a tab to spaces is a change. -func (v *View) replaceTabs() { - spaces := strings.Repeat(" ", TabWidth) - for _, h := range v.unified.Hunks { - for i := range h.Lines { - h.Lines[i].Content = strings.ReplaceAll(h.Lines[i].Content, "\t", spaces) - } - } -} - -// computeDiff computes the diff of the two versions once. A later call -// returns the error of the first call. -func (v *View) computeDiff() error { - if v.isComputed { - return v.err - } - v.isComputed = true - edits := udiff.Lines(v.before.content, v.after.content) - // With a context as long as the file, the diff has one hunk with all - // the lines. foldHunk then hides the long runs of equal lines. - context := strings.Count(v.before.content, "\n") + 1 - v.unified, v.err = udiff.ToUnifiedDiff( - v.before.path, - v.after.path, - v.before.content, - edits, - context, - ) - hunks := v.unified.Hunks - v.unified.Hunks, v.folds = nil, nil - for _, h := range hunks { - hs, fs := foldHunk(h, v.expanded) - v.unified.Hunks = append(v.unified.Hunks, hs...) - v.folds = append(v.folds, fs...) - } - return v.err -} - -// convertDiffToSplit makes the split hunks, if the layout is split. -func (v *View) convertDiffToSplit() { - if v.layout != layoutSplit { - return - } - - v.splitHunks = make([]splitHunk, len(v.unified.Hunks)) - for i, h := range v.unified.Hunks { - v.splitHunks[i] = hunkToSplit(h) - } -} - -// adjustStyles adds padding and alignment to the line number styles. -func (v *View) adjustStyles() { - setPadding := func(s lipgloss.Style) lipgloss.Style { - return s.Padding(0, lineNumPadding).Align(lipgloss.Right) - } - v.style.missingLine.lineNumber = setPadding(v.style.missingLine.lineNumber) - v.style.dividerLine.lineNumber = setPadding(v.style.dividerLine.lineNumber) - v.style.equalLine.lineNumber = setPadding(v.style.equalLine.lineNumber) - v.style.insertLine.lineNumber = setPadding(v.style.insertLine.lineNumber) - v.style.deleteLine.lineNumber = setPadding(v.style.deleteLine.lineNumber) -} - -// detectNumDigits finds the number of digits of the largest old and new line -// numbers. -func (v *View) detectNumDigits() { - v.beforeNumDigits = 0 - v.afterNumDigits = 0 - - for _, h := range v.unified.Hunks { - before := len(strconv.Itoa(h.FromLine + len(h.Lines))) - after := len(strconv.Itoa(h.ToLine + len(h.Lines))) - v.beforeNumDigits = max(v.beforeNumDigits, before) - v.afterNumDigits = max(v.afterNumDigits, after) - } -} - -// detectCodeWidth finds the width of the widest code line. -func (v *View) detectCodeWidth() { - switch v.layout { - case layoutUnified: - v.detectUnifiedCodeWidth() - case layoutSplit: - v.detectSplitCodeWidth() - } - v.fullCodeWidth = v.codeWidth + leadingSymbolsSize -} - -// codeWidthOf returns the width of the code of l, plus one cell. -func codeWidthOf(l *udiff.Line) int { - return ansi.StringWidth(Escape(strings.TrimSuffix(l.Content, "\n"))) + 1 -} - -// detectUnifiedCodeWidth finds the width of the widest code line or hunk -// header in the unified layout. -func (v *View) detectUnifiedCodeWidth() { - v.codeWidth = 0 - for i, h := range v.unified.Hunks { - v.codeWidth = max(v.codeWidth, ansi.StringWidth(v.headerText(i))) - for _, l := range h.Lines { - v.codeWidth = max(v.codeWidth, codeWidthOf(&l)) - } - } -} - -// detectSplitCodeWidth finds the width of the widest code line or hunk -// header in the split layout. -func (v *View) detectSplitCodeWidth() { - v.codeWidth = 0 - for i, h := range v.splitHunks { - v.codeWidth = max(v.codeWidth, ansi.StringWidth(v.headerText(i))) - for _, l := range h.lines { - if l.before != nil { - v.codeWidth = max(v.codeWidth, codeWidthOf(l.before)) - } - if l.after != nil { - v.codeWidth = max(v.codeWidth, codeWidthOf(l.after)) - } - } - } -} - -// resizeCodeWidth sets the code width so that the lines fit in the width. -func (v *View) resizeCodeWidth() { - fullNumWidth := v.beforeNumDigits + v.afterNumDigits - fullNumWidth += lineNumPadding * 4 // two sides of two line numbers - - switch v.layout { - case layoutUnified: - v.codeWidth = v.width - fullNumWidth - leadingSymbolsSize - case layoutSplit: - remainingWidth := v.width - fullNumWidth - leadingSymbolsSize*2 - v.codeWidth = remainingWidth / 2 - v.extraColOnAfter = remainingWidth%2 != 0 - } - - v.fullCodeWidth = v.codeWidth + leadingSymbolsSize -} - -// renderUnified renders the unified layout. Each line has the old and the -// new line numbers, then the code. -func (v *View) renderUnified() string { - var b strings.Builder - nums := func(ls lineStyle, before, after any) string { - return v.lineNum(ls, before, v.beforeNumDigits) + - v.lineNum(ls, after, v.afterNumDigits) - } - for i, h := range v.unified.Hunks { - b.WriteString(v.unifiedHeader(i)) - b.WriteString("\n") - oldN, newN := h.FromLine, h.ToLine - for _, l := range h.Lines { - ls, sym := v.kindStyle(l.Kind) - var num string - switch l.Kind { - case udiff.Equal: - num = nums(ls, oldN, newN) - oldN++ - newN++ - case udiff.Insert: - num = nums(ls, " ", newN) - newN++ - case udiff.Delete: - num = nums(ls, oldN, " ") - oldN++ - } - blank := nums(ls, " ", " ") - v.writeRow(&b, v.codeLines(ls, num, blank, sym, l.Content, v.codeWidth)) - } - } - return b.String() -} - -// unifiedHeader renders the divider line of hunk i in the unified layout. -func (v *View) unifiedHeader(i int) string { - div := v.style.dividerLine - header := ansi.Truncate(v.headerText(i), v.fullCodeWidth, ellipsis) - return div.lineNumber.Render(pad(ellipsis, v.beforeNumDigits)) + - div.lineNumber.Render(pad(ellipsis, v.afterNumDigits)) + - div.code.Width(v.fullCodeWidth).Render(header) -} - -// renderSplit renders the split layout. The old lines are on the left and -// the new lines are on the right. -func (v *View) renderSplit() string { - var b strings.Builder - afterWidth := v.codeWidth + btoi(v.extraColOnAfter) - for i, h := range v.splitHunks { - b.WriteString(v.splitHeader(i)) - b.WriteString("\n") - oldN, newN := h.fromLine, h.toLine - for _, l := range h.lines { - left, leftFill := v.splitSide(l.before, oldN, v.beforeNumDigits, v.codeWidth) - right, rightFill := v.splitSide(l.after, newN, v.afterNumDigits, afterWidth) - if l.before != nil { - oldN++ - } - if l.after != nil { - newN++ - } - n := max(len(left), len(right)) - left, right = fillTo(left, n, leftFill), fillTo(right, n, rightFill) - lines := make([]string, n) - for k := range n { - lines[k] = left[k] + right[k] - } - v.writeRow(&b, lines) - } - } - return b.String() -} - -// splitHeader renders the divider line of hunk i in the split layout. The -// header starts on the left side and can go on across the right side. -func (v *View) splitHeader(i int) string { - div := v.style.dividerLine - // The header covers the two code columns and the new line numbers. - width := 2*v.fullCodeWidth + btoi(v.extraColOnAfter) + v.afterNumDigits + lineNumPadding*2 - return div.lineNumber.Render(pad(ellipsis, v.beforeNumDigits)) + - div.code.Width(width).Render(ansi.Truncate(v.headerText(i), width, ellipsis)) -} - -// splitSide renders line l on one side of the split layout, one string for -// each screen line. l is nil if that side has no line. n is the line number -// of l. The fill function renders an empty screen line. Use fill when the -// other side has more screen lines. -func (v *View) splitSide(l *udiff.Line, n, digits, width int) (lines []string, fill func() string) { - ls, sym, content := v.style.missingLine, symNone, "" - if l != nil { - ls, sym = v.kindStyle(l.Kind) - content = l.Content - } - noNum := v.lineNum(ls, " ", digits) - num := noNum - if l != nil { - num = v.lineNum(ls, n, digits) - } - fill = func() string { return v.codeLines(ls, noNum, "", symNone, "", width)[0] } - return v.codeLines(ls, num, noNum, sym, content, width), fill -} - -// fillTo adds the line that fill renders to lines, until lines has n lines. -func fillTo(lines []string, n int, fill func() string) []string { - if len(lines) >= n { - return lines - } - return append(lines, slices.Repeat([]string{fill()}, n-len(lines))...) -} - -// kindStyle returns the style and the symbol of a line of kind k. -func (v *View) kindStyle(k udiff.OpKind) (lineStyle, string) { - switch k { - case udiff.Insert: - return v.style.insertLine, v.mark(symInsert) - case udiff.Delete: - return v.style.deleteLine, v.mark(symDelete) - } - return v.style.equalLine, symNone -} - -// mark returns sign if the View shows signs, else the bar. -func (v *View) mark(sign string) string { - if v.signs { - return sign - } - return symBar -} - -// writeRow writes the screen lines of one row to b, and keeps their number -// for rows. -func (v *View) writeRow(b *strings.Builder, lines []string) { - for _, l := range lines { - b.WriteString(l) - b.WriteByte('\n') - } - v.heights = append(v.heights, len(lines)) -} - -// lineNum renders the line number n in a column of digits cells. -func (v *View) lineNum(ls lineStyle, n any, digits int) string { - return ls.lineNumber.Render(pad(n, digits)) -} - -// codeLines renders one source line with nums, sym, and the code in width -// cells. It cuts a long line. With wrap, the line continues on more screen -// lines, which show blank in place of nums and no sym. -func (v *View) codeLines(ls lineStyle, nums, blank, sym, content string, width int) []string { - code := v.highlightCode(strings.TrimSuffix(content, "\n"), ls.code.GetBackground()) - parts := []string{code} - if v.wrap { - // Wrap can keep a leading space on a full line, so cut again. - w := max(width, 1) - parts = strings.Split(ansi.Hardwrap(lipgloss.Wrap(code, w, ""), w, true), "\n") - for i, p := range parts { - // A wide character can be wider than w. - parts[i] = ansi.Truncate(p, w, "") - } - } else { - code = CutLeft(code, v.xOffset) - parts[0] = ansi.Truncate(code, width, ellipsis) - if v.xOffset > 0 && strings.TrimSpace(parts[0]) != "" { - sym = strings.TrimSuffix(sym, " ") + ellipsis - } - } - full := lipgloss.NewStyle().MaxWidth(width + leadingSymbolsSize) - lines := make([]string, len(parts)) - for i, p := range parts { - if i > 0 { - nums, sym = blank, symNone - } - lines[i] = nums + full.Render(ls.symbol.Render(sym)+ls.code.Width(width).Render(p)) - } - return lines -} - -// hunkHeader returns the header line of hunk h, for example -// " @@ -1,3 +1,4 @@ ". -func hunkHeader(h *udiff.Hunk) string { - before, after := hunkLineCounts(h) - return fmt.Sprintf(" @@ -%d,%d +%d,%d @@ ", h.FromLine, before, h.ToLine, after) -} - -// hunkLineCounts returns the number of old and new lines in hunk h. -func hunkLineCounts(h *udiff.Hunk) (before, after int) { - for _, l := range h.Lines { - switch l.Kind { - case udiff.Equal: - before++ - after++ - case udiff.Insert: - after++ - case udiff.Delete: - before++ - } - } - return before, after -} - -// highlightCode returns source with syntax colours on the background -// bgColor. The cache keeps the result. If chroma fails, highlightCode -// returns source as it is. -func (v *View) highlightCode(source string, bgColor color.Color) string { - // Chroma makes a lone CR a line break. Thus show each CR as a symbol - // first. - source = strings.ReplaceAll(source, "\r", "\u240d") - lexer := v.chromaLexer() - key := newSyntaxKey(lexer.Config().Name, source, bgColor) - if cached, ok := v.cache.lines[key]; ok { - return cached - } - it, err := lexer.Tokenise(nil, source) - if err != nil { - return source - } - var b strings.Builder - f := ANSIFormatter(bgColor, processChromaValue) - if err := f.Format(&b, nil, it); err != nil { - return source - } - out := b.String() - v.cache.put(key, out) - return out -} - -// syntaxKey is the key of a [Cache]. It has the lexer, the source, and the -// background colour of the source. noColor is true for no background, because -// lipgloss.NoColor has the same RGBA value as black. -type syntaxKey struct { - lexer, source string - noColor bool - r, g, b, a uint32 -} - -// newSyntaxKey returns the key of source for the lexer named lexer, on -// bgColor. -func newSyntaxKey(lexer, source string, bgColor color.Color) syntaxKey { - k := syntaxKey{lexer: lexer, source: source} - if _, none := bgColor.(lipgloss.NoColor); bgColor == nil || none { - k.noColor = true - return k - } - k.r, k.g, k.b, k.a = bgColor.RGBA() - return k -} - -// chromaLexer returns the lexer of the old file, and keeps it in the -// cache. -func (v *View) chromaLexer() chroma.Lexer { - lx := &v.cache.lexer - if lx.l == nil || lx.path != v.before.path || lx.content != v.before.content { - lx.path, lx.content = v.before.path, v.before.content - lx.l = Lexer(lx.path, lx.content) - } - return lx.l -} - -// Lexer returns the coalesced lexer for the file at path. If no lexer -// matches the name, it selects one from the content. If no lexer matches -// the content, it returns the fallback lexer. -func Lexer(path, content string) chroma.Lexer { - // matchLexer caches the lexer, and the lexer is already coalesced. - if l := matchLexer(path); l != nil { - return l - } - l := lexers.Analyse(content) - if l == nil { - l = lexers.Fallback - } - return chroma.Coalesce(l) -} - -// processChromaValue escapes the text of a token for the terminal. A code -// line has no line break. Thus processChromaValue removes the trailing line -// breaks. -func processChromaValue(value string) string { - return Escape(strings.TrimRight(value, "\n")) -} diff --git a/internal/diffview/escape.go b/internal/diffview/escape.go deleted file mode 100644 index 34937a4..0000000 --- a/internal/diffview/escape.go +++ /dev/null @@ -1,33 +0,0 @@ -package diffview - -import ( - "strings" - "unicode/utf8" - - "github.com/charmbracelet/x/ansi" -) - -// The Unicode Control Pictures that Escape shows in place of a control -// character. -const ( - // The picture of U+0000. The pictures of U+0001 to U+001F follow it. - controlPictures = '\u2400' - delPicture = '\u2421' -) - -// Escape replaces each control character with its Unicode Control Picture, -// so the terminal shows it and does not run it. A C1 control becomes -// U+FFFD, because it has no picture. -func Escape(content string) string { - return strings.Map(func(r rune) rune { - switch { - case r >= 0 && r <= 0x1f: // C0 controls - return controlPictures + r - case r == ansi.DEL: - return delPicture - case r >= 0x80 && r <= 0x9f: // C1 controls - return utf8.RuneError - } - return r - }, content) -} diff --git a/internal/diffview/fold.go b/internal/diffview/fold.go index ec0e084..b3396fc 100644 --- a/internal/diffview/fold.go +++ b/internal/diffview/fold.go @@ -1,10 +1,6 @@ package diffview -import ( - "fmt" - - "github.com/aymanbagabas/go-udiff" -) +import "github.com/aymanbagabas/go-udiff" // foldMargin is the number of equal lines that show beside a change. A // longer run of equal lines folds into one row, as in herdr-reviewr. @@ -17,13 +13,6 @@ type Fold struct { Before, After, Lines int } -// Expand shows the lines of each fold for which expanded returns true. -func (v *View) Expand(expanded func(Fold) bool) *View { - v.expanded = expanded - v.isComputed = false - return v -} - // foldHunk splits h into the hunks that show. folds[i] is the run of lines // that hides above hunks[i]. If the last run hides, the last hunk has no // lines. A run of equal lines hides if it has more than one line and no @@ -81,18 +70,3 @@ func foldHunk(h *udiff.Hunk, expanded func(Fold) bool) (hunks []*udiff.Hunk, fol } return hunks, folds } - -// headerText returns the text of the header of hunk i, for example -// " ⋯ 12 unmodified lines @@ -15,7 +15,8 @@ ". The text has the fold -// above the hunk if lines hide. It has the hunk header if the hunk has -// lines. The text ends with a space, as the hunk header does. -func (v *View) headerText(i int) string { - h, s := v.unified.Hunks[i], "" - if f := v.folds[i]; f.Lines > 0 { - s = fmt.Sprintf(" ⋯ %d unmodified lines", f.Lines) - } - if len(h.Lines) == 0 { - return s + " " - } - return s + hunkHeader(h) -} diff --git a/internal/diffview/highlight.go b/internal/diffview/highlight.go new file mode 100644 index 0000000..0048f31 --- /dev/null +++ b/internal/diffview/highlight.go @@ -0,0 +1,211 @@ +// Derived from charmbracelet/crush (FSL-1.1-MIT). See ../DERIVED.md. + +package diffview + +import ( + "image/color" + "io" + "strings" + "sync" + + "charm.land/lipgloss/v2" + "github.com/alecthomas/chroma/v2" + "github.com/alecthomas/chroma/v2/lexers" +) + +// Cache keeps highlighted lines, so that chroma highlights each line once. +// Views that share a Cache reuse its lines and its last lexer. The zero +// value is an empty Cache. A Cache is not safe for concurrent use. +type Cache struct { + lines map[syntaxKey]string + size int // the bytes of the lines and their sources + + // lexer keeps the last lexer, because to select a lexer from the + // content is slow. + lexer struct { + path, content string + l chroma.Lexer + } +} + +// maxCacheSize limits the bytes of the lines and the sources in a Cache. +// If a put goes above this size, put empties the Cache first. +const maxCacheSize = 32 << 20 + +// put keeps the highlighted line s for key k. +func (c *Cache) put(k syntaxKey, s string) { + // k.source is a part of the file string. A copy lets the cache keep + // the line without the whole file. + k.source = strings.Clone(k.source) + n := len(k.source) + len(s) + if c.lines == nil || c.size+n > maxCacheSize { + c.lines, c.size = make(map[syntaxKey]string), 0 + } + c.lines[k] = s + c.size += n +} + +// syntaxKey is the key of a [Cache]. It has the lexer, the source, and the +// background colour of the source. noColor is true for no background, because +// lipgloss.NoColor has the same RGBA value as black. +type syntaxKey struct { + lexer, source string + noColor bool + r, g, b, a uint32 +} + +// newSyntaxKey returns the key of source for the lexer named lexer, on +// bgColor. +func newSyntaxKey(lexer, source string, bgColor color.Color) syntaxKey { + k := syntaxKey{lexer: lexer, source: source} + if _, none := bgColor.(lipgloss.NoColor); bgColor == nil || none { + k.noColor = true + return k + } + k.r, k.g, k.b, k.a = bgColor.RGBA() + return k +} + +// highlightCode returns source with syntax colours on the background +// bgColor. The cache keeps the result. If chroma fails, highlightCode +// returns source as it is. +func (v *View) highlightCode(source string, bgColor color.Color) string { + // Chroma makes a lone CR a line break. Thus show each CR as a symbol + // first. + source = strings.ReplaceAll(source, "\r", "\u240d") + lexer := v.chromaLexer() + key := newSyntaxKey(lexer.Config().Name, source, bgColor) + if cached, ok := v.cache.lines[key]; ok { + return cached + } + it, err := lexer.Tokenise(nil, source) + if err != nil { + return source + } + var b strings.Builder + f := ANSIFormatter(bgColor, processChromaValue) + if err := f.Format(&b, nil, it); err != nil { + return source + } + out := b.String() + v.cache.put(key, out) + return out +} + +// processChromaValue escapes the text of a token for the terminal. A code +// line has no line break. Thus processChromaValue removes the trailing line +// breaks. +func processChromaValue(value string) string { + return Escape(strings.TrimRight(value, "\n")) +} + +// chromaLexer returns the lexer of the old file, and keeps it in the +// cache. +func (v *View) chromaLexer() chroma.Lexer { + lx := &v.cache.lexer + if lx.l == nil || lx.path != v.path || lx.content != v.before { + lx.path, lx.content = v.path, v.before + lx.l = Lexer(lx.path, lx.content) + } + return lx.l +} + +// Lexer returns the coalesced lexer for the file at path. If no lexer +// matches the name, it selects one from the content. If no lexer matches +// the content, it returns the fallback lexer. +func Lexer(path, content string) chroma.Lexer { + // matchLexer caches the lexer, and the lexer is already coalesced. + if l := matchLexer(path); l != nil { + return l + } + l := lexers.Analyse(content) + if l == nil { + l = lexers.Fallback + } + return chroma.Coalesce(l) +} + +// lexerCache keeps the lexer of each file name, or nil if none matches. To +// match a name is slow, because lexers.Match tests the patterns of each +// lexer. The mutex makes the cache safe for more than one goroutine. +var ( + lexerCacheMu sync.RWMutex + lexerCache = map[string]chroma.Lexer{} +) + +// matchLexer returns the coalesced chroma lexer for the file name, or nil if +// no lexer matches. The lexer is safe to use again. +func matchLexer(fileName string) chroma.Lexer { + lexerCacheMu.RLock() + l, ok := lexerCache[fileName] + lexerCacheMu.RUnlock() + if ok { + return l + } + if l = lexers.Match(fileName); l != nil { + l = chroma.Coalesce(l) + } + lexerCacheMu.Lock() + lexerCache[fileName] = l + lexerCacheMu.Unlock() + return l +} + +// ANSIFormatter returns a chroma formatter that colours the tokens with the +// ANSI palette colours, on the background bgColor. It ignores the chroma +// style. It calls processValue on the text of each token first. +func ANSIFormatter(bgColor color.Color, processValue func(string) string) chroma.Formatter { + format := func(w io.Writer, _ *chroma.Style, it chroma.Iterator) error { + plain := lipgloss.NewStyle().Background(bgColor) + for token := it(); token != chroma.EOF; token = it() { + value := processValue(token.Value) + s := plain + if c, italic, ok := ansiFor(token.Type); ok { + s = plain.Foreground(lipgloss.Color(c)).Italic(italic) + } + if _, err := io.WriteString(w, renderLines(s, value)); err != nil { + return err + } + } + return nil + } + return chroma.FormatterFunc(format) +} + +// ansiFor returns the ANSI palette colour of a token type. If ok is false, +// the token has the default foreground of the terminal. +func ansiFor(t chroma.TokenType) (c string, italic, ok bool) { + switch { + case t.InCategory(chroma.Comment): + return ansiGrey, true, true + case t == chroma.KeywordType, t == chroma.NameBuiltin, + t.InSubCategory(chroma.NameClass): + return ansiCyan, false, true + case t.InCategory(chroma.Keyword): + return ansiMagenta, false, true + case t.InSubCategory(chroma.LiteralString): + return ansiGreen, false, true + case t.InSubCategory(chroma.LiteralNumber), t == chroma.NameConstant: + return ansiYellow, false, true + case t == chroma.NameFunction, t == chroma.NameFunctionMagic, + t == chroma.NameTag, t == chroma.NameAttribute: + return ansiBlue, false, true + } + return "", false, false +} + +// renderLines styles each line of value alone, and joins them with plain +// newlines. A token can contain newlines. For example, a chroma +// CommentSingle ends with one. Lip Gloss pads all lines of a multi-line +// string to one width. Without renderLines, this padding adds spaces to +// the line after a comment. +func renderLines(s lipgloss.Style, value string) string { + if !strings.Contains(value, "\n") { + return s.Render(value) + } + lines := strings.Split(value, "\n") + for i, line := range lines { + lines[i] = s.Render(line) + } + return strings.Join(lines, "\n") +} diff --git a/internal/diffview/render.go b/internal/diffview/render.go new file mode 100644 index 0000000..1f8e247 --- /dev/null +++ b/internal/diffview/render.go @@ -0,0 +1,291 @@ +// Derived from charmbracelet/crush (FSL-1.1-MIT). See ../DERIVED.md. + +package diffview + +import ( + "fmt" + "slices" + "strings" + + "charm.land/lipgloss/v2" + "github.com/aymanbagabas/go-udiff" + "github.com/charmbracelet/x/ansi" +) + +const ( + leadingSymbolsSize = 2 // the width of a symbol, such as symInsert + lineNumPadding = 1 // the space on each side of a line number + ellipsis = "…" // shows where a line is cut +) + +// These symbols are at the start of the code of a line. A bar in the colour +// of the line marks each changed line. [View.Signs] shows + and - in place +// of the bar. +const ( + symNone = " " // an equal line, a missing line, or a continued line + symBar = "▌ " + symInsert = "+ " + symDelete = "- " +) + +// RowKind is the type of a rendered row. +type RowKind int + +// The values of RowKind. +const ( + RowHunk RowKind = iota // a hunk header + RowEqual // a line that is the same in the two versions + RowInsert // an inserted line + RowDelete // a deleted line + RowChange // a deleted line beside an inserted line (split) +) + +// Row tells which source lines one rendered line shows. Before and After are +// line numbers from 1, or 0 if the row has no line on that side. Continued +// is true for the second and the next screen lines of a wrapped line. +// For a hunk header, Fold is the run of lines that hides above the header. +type Row struct { + Kind RowKind + Before, After int + Continued bool + Fold Fold +} + +// renderUnified renders the unified layout. Each line has the old and the +// new line numbers, then the code. +func (v *View) renderUnified() string { + var b strings.Builder + nums := func(ls lineStyle, before, after any) string { + return lineNum(ls, before, v.beforeNumDigits) + + lineNum(ls, after, v.afterNumDigits) + } + for i, h := range v.hunks { + v.writeHeader(&b, i, v.unifiedHeader(i)) + oldN, newN := h.FromLine, h.ToLine + for _, l := range h.Lines { + ls, sym := v.kindStyle(l.Kind) + var r Row + var num string + switch l.Kind { + case udiff.Equal: + r = Row{Kind: RowEqual, Before: oldN, After: newN} + num = nums(ls, oldN, newN) + oldN++ + newN++ + case udiff.Insert: + r = Row{Kind: RowInsert, After: newN} + num = nums(ls, " ", newN) + newN++ + case udiff.Delete: + r = Row{Kind: RowDelete, Before: oldN} + num = nums(ls, oldN, " ") + oldN++ + } + blank := nums(ls, " ", " ") + v.writeRow(&b, r, v.codeLines(ls, num, blank, sym, l.Content, v.codeWidth)) + } + } + return b.String() +} + +// unifiedHeader renders the divider line of hunk i in the unified layout. +func (v *View) unifiedHeader(i int) string { + div := v.style.dividerLine + header := ansi.Truncate(v.headerText(i), v.fullCodeWidth, ellipsis) + return div.lineNumber.Render(pad(ellipsis, v.beforeNumDigits)) + + div.lineNumber.Render(pad(ellipsis, v.afterNumDigits)) + + div.code.Width(v.fullCodeWidth).Render(header) +} + +// renderSplit renders the split layout. The old lines are on the left and +// the new lines are on the right. +func (v *View) renderSplit() string { + var b strings.Builder + afterWidth := v.codeWidth + btoi(v.extraColOnAfter) + for i, h := range v.hunks { + v.writeHeader(&b, i, v.splitHeader(i)) + oldN, newN := h.FromLine, h.ToLine + for _, l := range hunkToSplit(h) { + r := Row{Kind: splitKind(l)} + left, leftFill := v.splitSide(l.before, oldN, v.beforeNumDigits, v.codeWidth) + right, rightFill := v.splitSide(l.after, newN, v.afterNumDigits, afterWidth) + if l.before != nil { + r.Before = oldN + oldN++ + } + if l.after != nil { + r.After = newN + newN++ + } + n := max(len(left), len(right)) + left, right = fillTo(left, n, leftFill), fillTo(right, n, rightFill) + lines := make([]string, n) + for k := range n { + lines[k] = left[k] + right[k] + } + v.writeRow(&b, r, lines) + } + } + return b.String() +} + +// splitHeader renders the divider line of hunk i in the split layout. The +// header starts on the left side and can go on across the right side. +func (v *View) splitHeader(i int) string { + div := v.style.dividerLine + // The header covers the two code columns and the new line numbers. + width := 2*v.fullCodeWidth + btoi(v.extraColOnAfter) + v.afterNumDigits + lineNumPadding*2 + return div.lineNumber.Render(pad(ellipsis, v.beforeNumDigits)) + + div.code.Width(width).Render(ansi.Truncate(v.headerText(i), width, ellipsis)) +} + +// splitSide renders line l on one side of the split layout, one string for +// each screen line. l is nil if that side has no line. n is the line number +// of l. The fill function renders an empty screen line. Use fill when the +// other side has more screen lines. +func (v *View) splitSide(l *udiff.Line, n, digits, width int) (lines []string, fill func() string) { + ls, sym, content := v.style.missingLine, symNone, "" + if l != nil { + ls, sym = v.kindStyle(l.Kind) + content = l.Content + } + noNum := lineNum(ls, " ", digits) + num := noNum + if l != nil { + num = lineNum(ls, n, digits) + } + fill = func() string { return v.codeLines(ls, noNum, "", symNone, "", width)[0] } + return v.codeLines(ls, num, noNum, sym, content, width), fill +} + +// splitKind returns the kind of the row of l in the split layout. +func splitKind(l splitLine) RowKind { + switch { + case l.before != nil && l.after != nil && l.before.Kind == udiff.Equal: + return RowEqual + case l.before != nil && l.after != nil: + return RowChange + case l.before != nil: + return RowDelete + } + return RowInsert +} + +// fillTo adds the line that fill renders to lines, until lines has n lines. +func fillTo(lines []string, n int, fill func() string) []string { + if len(lines) >= n { + return lines + } + return append(lines, slices.Repeat([]string{fill()}, n-len(lines))...) +} + +// kindStyle returns the style and the symbol of a line of kind k. +func (v *View) kindStyle(k udiff.OpKind) (lineStyle, string) { + switch k { + case udiff.Insert: + return v.style.insertLine, v.mark(symInsert) + case udiff.Delete: + return v.style.deleteLine, v.mark(symDelete) + } + return v.style.equalLine, symNone +} + +// mark returns sign if the View shows signs, else the bar. +func (v *View) mark(sign string) string { + if v.signs { + return sign + } + return symBar +} + +// writeHeader writes header, the divider line of hunk i, to b, with its +// row. +func (v *View) writeHeader(b *strings.Builder, i int, header string) { + v.writeRow(b, Row{Kind: RowHunk, Fold: v.folds[i]}, []string{header}) +} + +// writeRow writes the screen lines of one row to b. It adds r to the rows +// once for each screen line. +func (v *View) writeRow(b *strings.Builder, r Row, lines []string) { + for k, l := range lines { + b.WriteString(l) + b.WriteByte('\n') + r.Continued = k > 0 + v.rows = append(v.rows, r) + } +} + +// lineNum renders the line number n in a column of digits cells. +func lineNum(ls lineStyle, n any, digits int) string { + return ls.lineNumber.Render(pad(n, digits)) +} + +// codeLines renders one source line with nums, sym, and the code in width +// cells. It cuts a long line. With wrap, the line continues on more screen +// lines, which show blank in place of nums and no sym. +func (v *View) codeLines(ls lineStyle, nums, blank, sym, content string, width int) []string { + code := v.highlightCode(strings.TrimSuffix(content, "\n"), ls.code.GetBackground()) + parts := []string{code} + if v.wrap { + // Wrap can keep a leading space on a full line, so cut again. + w := max(width, 1) + parts = strings.Split(ansi.Hardwrap(lipgloss.Wrap(code, w, ""), w, true), "\n") + for i, p := range parts { + // A wide character can be wider than w. + parts[i] = ansi.Truncate(p, w, "") + } + } else { + code = CutLeft(code, v.xOffset) + parts[0] = ansi.Truncate(code, width, ellipsis) + if v.xOffset > 0 && strings.TrimSpace(parts[0]) != "" { + sym = strings.TrimSuffix(sym, " ") + ellipsis + } + } + full := lipgloss.NewStyle().MaxWidth(width + leadingSymbolsSize) + lines := make([]string, len(parts)) + for i, p := range parts { + if i > 0 { + nums, sym = blank, symNone + } + lines[i] = nums + full.Render(ls.symbol.Render(sym)+ls.code.Width(width).Render(p)) + } + return lines +} + +// headerText returns the text of the header of hunk i, for example +// " ⋯ 12 unmodified lines @@ -15,7 +15,8 @@ ". The text has the fold +// above the hunk if lines hide. It has the hunk header if the hunk has +// lines. The text ends with a space, as the hunk header does. +func (v *View) headerText(i int) string { + h, s := v.hunks[i], "" + if f := v.folds[i]; f.Lines > 0 { + s = fmt.Sprintf(" ⋯ %d unmodified lines", f.Lines) + } + if len(h.Lines) == 0 { + return s + " " + } + return s + hunkHeader(h) +} + +// hunkHeader returns the header line of hunk h, for example +// " @@ -1,3 +1,4 @@ ". +func hunkHeader(h *udiff.Hunk) string { + before, after := hunkLineCounts(h) + return fmt.Sprintf(" @@ -%d,%d +%d,%d @@ ", h.FromLine, before, h.ToLine, after) +} + +// hunkLineCounts returns the number of old and new lines in hunk h. +func hunkLineCounts(h *udiff.Hunk) (before, after int) { + for _, l := range h.Lines { + switch l.Kind { + case udiff.Equal: + before++ + after++ + case udiff.Insert: + after++ + case udiff.Delete: + before++ + } + } + return before, after +} diff --git a/internal/diffview/rows.go b/internal/diffview/rows.go deleted file mode 100644 index 4343f67..0000000 --- a/internal/diffview/rows.go +++ /dev/null @@ -1,150 +0,0 @@ -package diffview - -import "github.com/aymanbagabas/go-udiff" - -// RowKind is the type of a rendered row. -type RowKind int - -// The values of RowKind. -const ( - RowHunk RowKind = iota // a hunk header - RowEqual // a line that is the same in the two versions - RowInsert // an inserted line - RowDelete // a deleted line - RowChange // a deleted line beside an inserted line (split) -) - -// Row tells which source lines one rendered line shows. Before and After are -// line numbers from 1, or 0 if the row has no line on that side. Continued -// is true for the second and the next screen lines of a wrapped line. -// For a hunk header, Fold is the run of lines that hides above the header. -type Row struct { - Kind RowKind - Before, After int - Continued bool - Fold Fold -} - -// rows returns one row for each line of the output of text. Call it after -// text. -func (v *View) rows() []Row { - rows := v.lineRows() - if !v.wrap { - return rows - } - var out []Row - h := v.heights - for _, r := range rows { - n := 1 - if r.Kind != RowHunk && len(h) > 0 { - n, h = h[0], h[1:] - } - for k := range n { - r.Continued = k > 0 - out = append(out, r) - } - } - return out -} - -// lineRows returns one row for each source line, and one for each hunk -// header. -func (v *View) lineRows() []Row { - if v.layout == layoutSplit { - return v.splitRows() - } - return v.unifiedRows() -} - -// unifiedRows returns the rows of the unified layout. -func (v *View) unifiedRows() []Row { - var rows []Row - for i, h := range v.unified.Hunks { - rows = append(rows, v.headerRow(i)) - b, a := h.FromLine, h.ToLine - for _, l := range h.Lines { - switch l.Kind { - case udiff.Equal: - rows = append(rows, Row{Kind: RowEqual, Before: b, After: a}) - b++ - a++ - case udiff.Insert: - rows = append(rows, Row{Kind: RowInsert, After: a}) - a++ - case udiff.Delete: - rows = append(rows, Row{Kind: RowDelete, Before: b}) - b++ - } - } - } - return rows -} - -// splitRows returns the rows of the split layout. -func (v *View) splitRows() []Row { - var rows []Row - for i, h := range v.splitHunks { - rows = append(rows, v.headerRow(i)) - b, a := h.fromLine, h.toLine - for _, l := range h.lines { - r := Row{Kind: splitKind(l)} - if l.before != nil { - r.Before = b - b++ - } - if l.after != nil { - r.After = a - a++ - } - rows = append(rows, r) - } - } - return rows -} - -// headerRow returns the row of the header of hunk i. -func (v *View) headerRow(i int) Row { - return Row{Kind: RowHunk, Fold: v.folds[i]} -} - -// splitKind returns the kind of the row of l in the split layout. -func splitKind(l *splitLine) RowKind { - switch { - case l.before != nil && l.after != nil && l.before.Kind == udiff.Equal: - return RowEqual - case l.before != nil && l.after != nil: - return RowChange - case l.before != nil: - return RowDelete - } - return RowInsert -} - -// Geometry gives the columns of the line numbers and of the code in the -// output of [View.Render]. Use it to tell a line number from the code. -type Geometry struct { - BeforeNum int // the width of the old line-number column, in cells - AfterNum int // the width of the new line-number column, in cells - AfterNumStart int // the column where the new line numbers start, from 0 - BeforeCode int // the column where the old code starts, from 0 - AfterCode int // the column where the new code starts, from 0 -} - -// geometry returns the columns of the line numbers and of the code. Call -// it after text. -func (v *View) geometry() Geometry { - g := Geometry{ - BeforeNum: v.beforeNumDigits + lineNumPadding*2, - AfterNum: v.afterNumDigits + lineNumPadding*2, - } - g.AfterNumStart = g.BeforeNum - if v.layout == layoutSplit { - g.AfterNumStart = g.BeforeNum + v.fullCodeWidth - g.BeforeCode = g.BeforeNum + leadingSymbolsSize - g.AfterCode = g.AfterNumStart + g.AfterNum + leadingSymbolsSize - return g - } - g.BeforeCode = g.BeforeNum + g.AfterNum + leadingSymbolsSize - g.AfterCode = g.BeforeCode - return g -} diff --git a/internal/diffview/split.go b/internal/diffview/split.go index cdd310f..5bc7d7a 100644 --- a/internal/diffview/split.go +++ b/internal/diffview/split.go @@ -1,3 +1,5 @@ +// Derived from charmbracelet/crush (FSL-1.1-MIT). See ../DERIVED.md. + package diffview import ( @@ -6,13 +8,6 @@ import ( "github.com/aymanbagabas/go-udiff" ) -// splitHunk is a hunk in the split layout. -type splitHunk struct { - fromLine int - toLine int - lines []*splitLine -} - // splitLine is one row of the split layout. A nil side has no line. type splitLine struct { before *udiff.Line @@ -22,13 +17,9 @@ type splitLine struct { // hunkToSplit pairs the lines of h for the split layout. An equal line is on // both sides. A deleted line gets the next inserted line beside it, if no // equal line comes first. -func hunkToSplit(h *udiff.Hunk) splitHunk { +func hunkToSplit(h *udiff.Hunk) []splitLine { lines := slices.Clone(h.Lines) - sh := splitHunk{ - fromLine: h.FromLine, - toLine: h.ToLine, - lines: make([]*splitLine, 0, len(lines)), - } + out := make([]splitLine, 0, len(lines)) for len(lines) > 0 { ul := lines[0] lines = lines[1:] @@ -42,9 +33,9 @@ func hunkToSplit(h *udiff.Hunk) splitHunk { sl.before = &ul sl.after, lines = takeInsert(lines) } - sh.lines = append(sh.lines, &sl) + out = append(out, sl) } - return sh + return out } // takeInsert removes the first inserted line before the next equal line from diff --git a/internal/diffview/style.go b/internal/diffview/style.go index a27e88e..694fcfe 100644 --- a/internal/diffview/style.go +++ b/internal/diffview/style.go @@ -1,6 +1,11 @@ +// Derived from charmbracelet/crush (FSL-1.1-MIT). See ../DERIVED.md. + package diffview import ( + "cmp" + "image/color" + "charm.land/lipgloss/v2" ) @@ -11,11 +16,103 @@ type lineStyle struct { code lipgloss.Style } -// Style is the style of each type of line. Make one with [TerminalStyle]. -type Style struct { +// style is the style of each type of line. +type style struct { dividerLine lineStyle missingLine lineStyle equalLine lineStyle insertLine lineStyle deleteLine lineStyle } + +// The colours of the ANSI palette of the terminal, as Lip Gloss colours. +const ( + ansiRed = "1" + ansiGreen = "2" + ansiYellow = "3" + ansiBlue = "4" + ansiMagenta = "5" + ansiCyan = "6" + ansiGrey = "8" // bright black +) + +// The amounts that terminalStyle mixes into the background. +const ( + tintDark = 0.16 // inserted and deleted lines on a dark background + tintLight = 0.13 // inserted and deleted lines on a light background + tintNumber = 1.7 // multiplies the tint for the numbers of those lines + shadeDivider = 0.07 // the hunk headers, toward the foreground + shadeMissing = 0.03 // the empty side of a split row, toward the foreground +) + +// The tint colours when the terminal does not report its green or red. +const ( + fallbackGreen = "#2ea043" + fallbackRed = "#f85149" +) + +// terminalStyle makes the style of [View.Theme] from the terminal colours. +func terminalStyle(bg, fg, green, red color.Color, dark bool) style { + none := lipgloss.NoColor{} + green = cmp.Or(green, lipgloss.Color(fallbackGreen)) + red = cmp.Or(red, lipgloss.Color(fallbackRed)) + amt := tintDark + if !dark { + amt = tintLight + } + tint := func(c color.Color, t float64) color.Color { + if bg == nil { + return none + } + return mix(bg, c, t) + } + subtle := func(t float64) color.Color { + if bg == nil || fg == nil { + return none + } + return mix(bg, fg, t) + } + plain := lipgloss.NewStyle() + // number is the style of a line number: right-aligned, with a space on + // each side. + number := func(s lipgloss.Style) lipgloss.Style { + return s.Padding(0, lineNumPadding).Align(lipgloss.Right) + } + // changed is the style of an inserted or a deleted line, tinted toward c. + changed := func(text string, c color.Color) lineStyle { + fg := plain.Foreground(lipgloss.Color(text)) + return lineStyle{ + lineNumber: number(fg.Background(tint(c, amt*tintNumber))), + symbol: fg.Background(tint(c, amt)), + code: plain.Background(tint(c, amt)), + } + } + divider := plain.Background(subtle(shadeDivider)) + missing := plain.Background(subtle(shadeMissing)) + return style{ + dividerLine: lineStyle{ + lineNumber: number(divider.Foreground(lipgloss.Color(ansiGrey))), + code: divider.Foreground(lipgloss.Color(ansiCyan)), + }, + missingLine: lineStyle{ + lineNumber: number(missing), + symbol: missing, + code: missing, + }, + equalLine: lineStyle{ + lineNumber: number(plain.Foreground(lipgloss.Color(ansiGrey))), + code: plain, + }, + insertLine: changed(ansiGreen, green), + deleteLine: changed(ansiRed, red), + } +} + +// mix mixes a toward b by the amount t, from 0 to 1. +func mix(a, b color.Color, t float64) color.Color { + ar, ag, ab, _ := a.RGBA() + br, bg, bb, _ := b.RGBA() + // RGBA has 16 bits for each channel. Divide by 257 to get 8 bits. + f := func(x, y uint32) uint8 { return uint8((float64(x)*(1-t) + float64(y)*t) / 257) } + return color.RGBA{R: f(ar, br), G: f(ag, bg), B: f(ab, bb), A: 255} +} diff --git a/internal/diffview/terminal.go b/internal/diffview/terminal.go deleted file mode 100644 index 96a9f28..0000000 --- a/internal/diffview/terminal.go +++ /dev/null @@ -1,103 +0,0 @@ -package diffview - -import ( - "cmp" - "image/color" - - "charm.land/lipgloss/v2" -) - -// Signs marks an inserted line with + and a deleted line with -, in place -// of a bar. -func (v *View) Signs() *View { - v.signs = true - return v -} - -// Wrap makes long lines continue on the next screen lines, instead of -// cutting them. The x offset does not apply. -func (v *View) Wrap() *View { - v.wrap = true - return v -} - -// mix mixes a toward b by the amount t, from 0 to 1. -func mix(a, b color.Color, t float64) color.Color { - ar, ag, ab, _ := a.RGBA() - br, bg, bb, _ := b.RGBA() - // RGBA has 16 bits for each channel. Divide by 257 to get 8 bits. - f := func(x, y uint32) uint8 { return uint8((float64(x)*(1-t) + float64(y)*t) / 257) } - return color.RGBA{R: f(ar, br), G: f(ag, bg), B: f(ab, bb), A: 255} -} - -// The amounts that TerminalStyle mixes into the background. -const ( - tintDark = 0.16 // inserted and deleted lines on a dark background - tintLight = 0.13 // inserted and deleted lines on a light background - tintNumber = 1.7 // multiplies the tint for the numbers of those lines - shadeDivider = 0.07 // the hunk headers, toward the foreground - shadeMissing = 0.03 // the empty side of a split row, toward the foreground -) - -// The tint colours when the terminal does not report its green or red. -const ( - fallbackGreen = "#2ea043" - fallbackRed = "#f85149" -) - -// TerminalStyle makes a diff style from the terminal colours. These are the -// background, the foreground, and the ANSI green and red. The text colours -// are ANSI palette indices, so the terminal selects the real colours. -// TerminalStyle mixes the tints of inserted and deleted lines from the -// background toward green and red. If green or red is nil, it uses a fixed -// green or red. If bg is nil, it adds no tint. -func TerminalStyle(bg, fg, green, red color.Color, dark bool) Style { - none := lipgloss.NoColor{} - green = cmp.Or(green, lipgloss.Color(fallbackGreen)) - red = cmp.Or(red, lipgloss.Color(fallbackRed)) - amt := tintDark - if !dark { - amt = tintLight - } - tint := func(c color.Color, t float64) color.Color { - if bg == nil { - return none - } - return mix(bg, c, t) - } - subtle := func(t float64) color.Color { - if bg == nil || fg == nil { - return none - } - return mix(bg, fg, t) - } - plain := lipgloss.NewStyle() - // changed is the style of an inserted or a deleted line, tinted toward c. - changed := func(text string, c color.Color) lineStyle { - fg := plain.Foreground(lipgloss.Color(text)) - return lineStyle{ - lineNumber: fg.Background(tint(c, amt*tintNumber)), - symbol: fg.Background(tint(c, amt)), - code: plain.Background(tint(c, amt)), - } - } - divider := plain.Background(subtle(shadeDivider)) - missing := plain.Background(subtle(shadeMissing)) - return Style{ - dividerLine: lineStyle{ - lineNumber: divider.Foreground(lipgloss.Color(ansiGrey)), - code: divider.Foreground(lipgloss.Color(ansiCyan)), - }, - missingLine: lineStyle{ - lineNumber: missing, - symbol: missing, - code: missing, - }, - equalLine: lineStyle{ - lineNumber: plain.Foreground(lipgloss.Color(ansiGrey)), - code: plain, - }, - insertLine: changed(ansiGreen, green), - deleteLine: changed(ansiRed, red), - } -} diff --git a/internal/diffview/text.go b/internal/diffview/text.go new file mode 100644 index 0000000..552410c --- /dev/null +++ b/internal/diffview/text.go @@ -0,0 +1,70 @@ +// Derived from charmbracelet/crush (FSL-1.1-MIT). See ../DERIVED.md. + +package diffview + +import ( + "fmt" + "strings" + "unicode/utf8" + + "github.com/charmbracelet/x/ansi" +) + +// TabWidth is the number of spaces that replace a tab. +const TabWidth = 4 + +// The Unicode Control Pictures that Escape shows in place of a control +// character. +const ( + // The picture of U+0000. The pictures of U+0001 to U+001F follow it. + controlPictures = '\u2400' + delPicture = '\u2421' +) + +// Escape replaces each control character with its Unicode Control Picture, +// so the terminal shows it and does not run it. A C1 control becomes +// U+FFFD, because it has no picture. +func Escape(content string) string { + return strings.Map(func(r rune) rune { + switch { + case r <= 0x1f: // C0 controls + return controlPictures + r + case r == ansi.DEL: + return delPicture + case r >= 0x80 && r <= 0x9f: // C1 controls + return utf8.RuneError + } + return r + }, content) +} + +// CutLeft removes the first n cells of s, which can have ANSI codes. If +// the cut is inside a wide character, a space takes the place of the rest +// of that character. Thus the text after the cut moves by n cells. +func CutLeft(s string, n int) string { + want := max(ansi.StringWidth(s)-n, 0) + cut := ansi.TruncateLeft(s, n, "") + for ansi.StringWidth(cut) > want { + n++ + cut = ansi.TruncateLeft(s, n, "") + } + return strings.Repeat(" ", want-ansi.StringWidth(cut)) + cut +} + +// pad right-aligns v in a column of width cells. +func pad(v any, width int) string { + s := fmt.Sprint(v) + w := ansi.StringWidth(s) + if w >= width { + return s + } + return strings.Repeat(" ", width-w) + s +} + +// btoi returns 1 if b is true, else 0. +func btoi(b bool) int { + if b { + return 1 + } + return 0 +} diff --git a/internal/diffview/util.go b/internal/diffview/util.go deleted file mode 100644 index dcb0f64..0000000 --- a/internal/diffview/util.go +++ /dev/null @@ -1,39 +0,0 @@ -package diffview - -import ( - "fmt" - "strings" - - "github.com/charmbracelet/x/ansi" -) - -// pad right-aligns v in a column of width cells. -func pad(v any, width int) string { - s := fmt.Sprint(v) - w := ansi.StringWidth(s) - if w >= width { - return s - } - return strings.Repeat(" ", width-w) + s -} - -// btoi returns 1 if b is true, else 0. -func btoi(b bool) int { - if b { - return 1 - } - return 0 -} - -// CutLeft removes the first n cells of s, which can have ANSI codes. If -// the cut is inside a wide character, a space takes the place of the rest -// of that character. Thus the text after the cut moves by n cells. -func CutLeft(s string, n int) string { - want := max(ansi.StringWidth(s)-n, 0) - cut := ansi.TruncateLeft(s, n, "") - for ansi.StringWidth(cut) > want { - n++ - cut = ansi.TruncateLeft(s, n, "") - } - return strings.Repeat(" ", want-ansi.StringWidth(cut)) + cut -} diff --git a/internal/diffview/view.go b/internal/diffview/view.go new file mode 100644 index 0000000..d3b6f47 --- /dev/null +++ b/internal/diffview/view.go @@ -0,0 +1,242 @@ +// Derived from charmbracelet/crush (FSL-1.1-MIT). See ../DERIVED.md. + +// Package diffview draws the difference between two versions of a file in +// the terminal, with syntax colours. +package diffview + +import ( + "image/color" + "strconv" + "strings" + + "charm.land/lipgloss/v2" + "github.com/aymanbagabas/go-udiff" + "github.com/charmbracelet/x/ansi" +) + +// View draws the difference between two versions of a file. Make one with +// [New], set its options, and call [View.Render]. +type View struct { + path string // selects the lexer + before, after string + split bool // the old and the new lines side by side + width int + xOffset int + wrap bool // wrap long lines instead of cutting them + signs bool // mark a changed line with + or -, not with a bar + style style + expanded func(Fold) bool // the folds that show, see [View.Expand] + cache *Cache + + // Render sets the fields below. + hunks []*udiff.Hunk + folds []Fold // folds[i] hides above hunks[i] + rows []Row + codeWidth int + fullCodeWidth int // with the leading symbols + extraColOnAfter bool // the new side of the split layout is one cell wider + beforeNumDigits int + afterNumDigits int +} + +// New returns a View of the change from before to after, the old and the +// new content of the file at path. The path selects the syntax colours. +// The View has the unified layout, no width limit, and no tints. +func New(path, before, after string) *View { + return &View{ + path: path, + before: before, + after: after, + style: terminalStyle(nil, nil, nil, nil, true), + cache: &Cache{}, + } +} + +// Split sets the split layout. The old lines are on the left and the new +// lines are on the right. +func (v *View) Split() *View { + v.split = true + return v +} + +// Width sets the maximum width of the output, in cells. Zero means no limit. +func (v *View) Width(width int) *View { + v.width = width + return v +} + +// XOffset sets the number of cells to scroll the code to the right. +func (v *View) XOffset(xOffset int) *View { + v.xOffset = xOffset + return v +} + +// Wrap makes long lines continue on the next screen lines, instead of +// cutting them. The x offset does not apply. +func (v *View) Wrap() *View { + v.wrap = true + return v +} + +// Signs marks an inserted line with + and a deleted line with -, in place +// of a bar. +func (v *View) Signs() *View { + v.signs = true + return v +} + +// Expand shows the lines of each fold for which expanded returns true. +func (v *View) Expand(expanded func(Fold) bool) *View { + v.expanded = expanded + return v +} + +// Cache makes v keep its highlighted lines in c. The Cache c must not be +// nil. +func (v *View) Cache(c *Cache) *View { + v.cache = c + return v +} + +// Theme sets the colours from the colours of the terminal. These are the +// background, the foreground, and the ANSI green and red. The text colours +// are ANSI palette indices, so the terminal selects the real colours. +// Theme mixes the tints of inserted and deleted lines from the background +// toward green and red. If green or red is nil, it uses a fixed green or +// red. If bg is nil, it adds no tint. Dark selects the tint amounts for a +// dark background. +func (v *View) Theme(bg, fg, green, red color.Color, dark bool) *View { + v.style = terminalStyle(bg, fg, green, red, dark) + return v +} + +// Render returns the rendered diff, one row for each of its lines, and the +// columns of the line numbers. +func (v *View) Render() (string, []Row, Geometry) { + v.rows = nil + v.before = strings.ReplaceAll(v.before, "\r\n", "\n") + v.after = strings.ReplaceAll(v.after, "\r\n", "\n") + if err := v.computeDiff(); err != nil { + return err.Error(), nil, v.geometry() + } + v.replaceTabs() + v.detectNumDigits() + if v.width <= 0 { + v.detectCodeWidth() + } else { + v.resizeCodeWidth() + } + + style := lipgloss.NewStyle() + if v.width > 0 { + style = style.MaxWidth(v.width) + } + var out string + if v.split { + out = v.renderSplit() + } else { + out = v.renderUnified() + } + return style.Render(strings.TrimSuffix(out, "\n")), v.rows, v.geometry() +} + +// computeDiff computes the hunks and the folds of the diff. +func (v *View) computeDiff() error { + edits := udiff.Lines(v.before, v.after) + // With a context as long as the file, the diff has one hunk with all + // the lines. foldHunk then hides the long runs of equal lines. + context := strings.Count(v.before, "\n") + 1 + unified, err := udiff.ToUnifiedDiff("", "", v.before, edits, context) + if err != nil { + return err + } + v.hunks, v.folds = nil, nil + for _, h := range unified.Hunks { + hs, fs := foldHunk(h, v.expanded) + v.hunks = append(v.hunks, hs...) + v.folds = append(v.folds, fs...) + } + return nil +} + +// replaceTabs replaces the tabs in the lines of the diff with spaces. It runs +// after computeDiff, so that a change from a tab to spaces is a change. +func (v *View) replaceTabs() { + spaces := strings.Repeat(" ", TabWidth) + for _, h := range v.hunks { + for i := range h.Lines { + h.Lines[i].Content = strings.ReplaceAll(h.Lines[i].Content, "\t", spaces) + } + } +} + +// detectNumDigits finds the number of digits of the largest old and new line +// numbers. +func (v *View) detectNumDigits() { + v.beforeNumDigits = 0 + v.afterNumDigits = 0 + for _, h := range v.hunks { + before := len(strconv.Itoa(h.FromLine + len(h.Lines))) + after := len(strconv.Itoa(h.ToLine + len(h.Lines))) + v.beforeNumDigits = max(v.beforeNumDigits, before) + v.afterNumDigits = max(v.afterNumDigits, after) + } +} + +// detectCodeWidth finds the width of the widest code line or hunk header. +// The split layout shows the same lines, so the width is the same for the +// two layouts. +func (v *View) detectCodeWidth() { + v.codeWidth = 0 + for i, h := range v.hunks { + v.codeWidth = max(v.codeWidth, ansi.StringWidth(v.headerText(i))) + for _, l := range h.Lines { + w := ansi.StringWidth(Escape(strings.TrimSuffix(l.Content, "\n"))) + 1 + v.codeWidth = max(v.codeWidth, w) + } + } + v.fullCodeWidth = v.codeWidth + leadingSymbolsSize +} + +// resizeCodeWidth sets the code width so that the lines fit in the width. +func (v *View) resizeCodeWidth() { + fullNumWidth := v.beforeNumDigits + v.afterNumDigits + fullNumWidth += lineNumPadding * 4 // two sides of two line numbers + + if v.split { + remainingWidth := v.width - fullNumWidth - leadingSymbolsSize*2 + v.codeWidth = remainingWidth / 2 + v.extraColOnAfter = remainingWidth%2 != 0 + } else { + v.codeWidth = v.width - fullNumWidth - leadingSymbolsSize + } + v.fullCodeWidth = v.codeWidth + leadingSymbolsSize +} + +// Geometry gives the columns of the line numbers and of the code in the +// output of [View.Render]. Use it to tell a line number from the code. +type Geometry struct { + BeforeNum int // the width of the old line-number column, in cells + AfterNum int // the width of the new line-number column, in cells + AfterNumStart int // the column where the new line numbers start, from 0 + BeforeCode int // the column where the old code starts, from 0 + AfterCode int // the column where the new code starts, from 0 +} + +// geometry returns the columns of the line numbers and of the code. +func (v *View) geometry() Geometry { + g := Geometry{ + BeforeNum: v.beforeNumDigits + lineNumPadding*2, + AfterNum: v.afterNumDigits + lineNumPadding*2, + } + g.AfterNumStart = g.BeforeNum + if v.split { + g.AfterNumStart = g.BeforeNum + v.fullCodeWidth + g.BeforeCode = g.BeforeNum + leadingSymbolsSize + g.AfterCode = g.AfterNumStart + g.AfterNum + leadingSymbolsSize + return g + } + g.BeforeCode = g.BeforeNum + g.AfterNum + leadingSymbolsSize + g.AfterCode = g.BeforeCode + return g +} diff --git a/internal/tree/tree.go b/internal/tree/tree.go index 645d514..aff3c72 100644 --- a/internal/tree/tree.go +++ b/internal/tree/tree.go @@ -31,7 +31,7 @@ type Row struct { Expanded bool // Changed is true for a directory that holds a changed file. Changed bool - Ignored bool + Ignored bool // git ignores the path } // node is a directory of the tree. diff --git a/internal/turn/turn.go b/internal/turn/turn.go index 69769e0..60dc7fd 100644 --- a/internal/turn/turn.go +++ b/internal/turn/turn.go @@ -56,11 +56,7 @@ type Tracker struct { // time. A turn starts when one agent works after all rest. A turn ends // when all rest after work, also through a prompt. func (t *Tracker) Observe(states ...rex.State) (started, ended bool) { - return t.observe(fold(states...)) -} - -// observe takes the next state of the repository. -func (t *Tracker) observe(s state) (started, ended bool) { + s := fold(states...) started = s == stateWorking && t.prevResting ended = t.worked && s == stateResting t.prevResting = s == stateResting From 6cbdf68614bc91e69e0cb40d5ec5c8d2ab25bf69 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 12:39:24 +0100 Subject: [PATCH 086/119] test: no git maintenance in the background git can start its maintenance after a commit. It then writes into .git while a test copies the repository. --- internal/testgit/testgit.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/internal/testgit/testgit.go b/internal/testgit/testgit.go index 2b431f5..73bfcc2 100644 --- a/internal/testgit/testgit.go +++ b/internal/testgit/testgit.go @@ -55,7 +55,8 @@ func Main(m *testing.M) { // Git reads no global or system config, so no hooksPath, signing, // fsmonitor, or diff setting applies. Git reads no system attributes // file. An empty GIT_TEMPLATE_DIR copies no template, so a new repository -// gets no hooks. The commits have a fixed author. +// gets no hooks. Git does no maintenance in the background. The commits +// have a fixed author. func Env() []string { return []string{ "GIT_CONFIG_GLOBAL=" + os.DevNull, @@ -66,6 +67,12 @@ func Env() []string { "GIT_AUTHOR_EMAIL=t@t", "GIT_COMMITTER_NAME=t", "GIT_COMMITTER_EMAIL=t@t", + // git starts its maintenance in the background after some commands. + // It then writes into .git while a test copies or reads the + // repository. + "GIT_CONFIG_COUNT=2", + "GIT_CONFIG_KEY_0=maintenance.auto", "GIT_CONFIG_VALUE_0=false", + "GIT_CONFIG_KEY_1=gc.auto", "GIT_CONFIG_VALUE_1=0", } } From e92d73719c437bf045cb504bd9137ad4e6d54c5d Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 13:19:08 +0100 Subject: [PATCH 087/119] refactor: the third whole-codebase review Fixes: the PR tab no longer says there is no pull request while the first read runs, Owns keeps the cause of a stopped git, a comment quotes the shown lines, a restart keeps a file in an open ignored directory, the start and turn snapshots have a deadline, and two errors log once. API: Options.Updater is *update.Updater, env comes after ctx, editor.Resolve takes Sources, vcs.File has one Skip error, and diffview options take a bool. vcs uses hash/fnv. --- .doc/arch.md | 6 +++-- cmd/rexdiff/install.go | 25 ++++++++--------- cmd/rexdiff/main.go | 8 ++---- diff/comment.go | 5 ++-- diff/comment_test.go | 8 +++--- diff/diff.go | 12 +++------ diff/fuzz_test.go | 3 ++- internal/clipboard/clipboard.go | 14 +++++----- internal/diffview/view.go | 24 ++++++++--------- internal/editor/editor.go | 25 +++++++++++------ internal/editor/editor_test.go | 8 +++--- rex/rex.go | 2 ++ test/testdata/script/install.txt | 2 +- tui/comment.go | 29 ++++++++++---------- tui/commentlist.go | 4 +-- tui/editor.go | 13 +++++---- tui/model.go | 22 ++++++++++----- tui/nav.go | 4 +-- tui/overlay.go | 12 +++------ tui/pr.go | 8 +++--- tui/preview.go | 4 +-- tui/release.go | 15 ++--------- tui/render.go | 40 ++++++++++++++++----------- tui/resume.go | 24 ++++++++++------- tui/tui.go | 25 +++++++++++++---- tui/turn.go | 22 ++++++++++++--- tui/view.go | 2 +- update/update.go | 16 +++++------ update/update_test.go | 8 +++--- vcs/pr.go | 3 ++- vcs/repo.go | 29 +++++++++++--------- vcs/repo_test.go | 22 +++++++-------- vcs/watch.go | 46 +++++++++++++------------------- 33 files changed, 266 insertions(+), 224 deletions(-) diff --git a/.doc/arch.md b/.doc/arch.md index 5bd95c1..63b03bf 100644 --- a/.doc/arch.md +++ b/.doc/arch.md @@ -90,8 +90,10 @@ only after one of them changes. Bubble Tea handles keys and timers on one goroutine, so the model has no locks. A reload, each call to Rex or to a forge, and each code search run on another goroutine -with a time limit, and report back with a message. One reload runs at a time. A snapshot -keeps a private index, so git reads only the files that change. +with a time limit, and report back with a message. The first calls to Rex at the start, +and the snapshots at the start and the end of a turn, run on the model's goroutine, also +with a time limit. One reload runs at a time. A snapshot keeps a private index, so git +reads only the files that change. A turn starts when an agent in the repository starts working, and ends when every agent is idle. At the start of a turn, rexdiff saves a snapshot of the working tree. The diff --git a/cmd/rexdiff/install.go b/cmd/rexdiff/install.go index 71192a3..d9eb447 100644 --- a/cmd/rexdiff/install.go +++ b/cmd/rexdiff/install.go @@ -80,12 +80,13 @@ func toggleLua(bin string) string { // it to find which rexdiff the file runs. func binLine(bin string) string { return "local BIN = " + luaQuote(bin) } +// luaEscapes escapes the characters that a Lua string cannot have as they +// are. A Replacer is safe for concurrent use. +var luaEscapes = strings.NewReplacer(`\`, `\\`, `"`, `\"`, "\n", `\n`, "\r", `\r`, "\x00", `\0`) + // luaQuote returns s as a Lua string. Go's %q writes escapes, such as // \u200b, that Lua 5.1 does not know. -func luaQuote(s string) string { - r := strings.NewReplacer(`\`, `\\`, `"`, `\"`, "\n", `\n`, "\r", `\r`, "\x00", `\0`) - return `"` + r.Replace(s) + `"` -} +func luaQuote(s string) string { return `"` + luaEscapes.Replace(s) + `"` } // luaPath returns the path of the file name in the environment env, // beside the init.lua of Rex. @@ -162,7 +163,7 @@ func install(ctx context.Context, env []string, bin string, args []string, stdou if added { fmt.Fprintf(stdout, "added %s to %s\n", requireLine, initPath) } - reload(ctx, env, stdout) + reload(ctx, env, stdout, stderr) fmt.Fprintln(stdout, "press the key of the settings (shift+cmd+r by default), or run \"Toggle rexdiff\" from the command palette, beside an agent") return nil } @@ -212,7 +213,7 @@ func upgrade(ctx context.Context, env []string, bin string) string { defer cancelTimeout() defer cancel(fmt.Errorf("rex config reload: done: %w", context.Canceled)) if err := rex.ReloadConfig(ctx, env); err != nil { - return "upgraded " + toggleFile + "; reload Rex's config yourself: rex config reload" + return "upgraded " + toggleFile + ". Reload Rex's config yourself: rex config reload" } return "" } @@ -280,7 +281,7 @@ func uninstall(ctx context.Context, env, args []string, stdout, stderr io.Writer } } fmt.Fprintln(stdout, "removed the rexdiff action, its key, and its settings from Rex") - reload(ctx, env, stdout) + reload(ctx, env, stdout, stderr) return nil } @@ -297,12 +298,12 @@ func removeRequire(path string) error { } // reload tells Rex to read its configuration file again. rex runs with -// the environment env. If Rex fails, reload tells the user how to reload. -// The reload has no deadline, because the user sees it in a terminal and -// can press Ctrl-C. -func reload(ctx context.Context, env []string, stdout io.Writer) { +// the environment env. If Rex fails, reload tells the user on stderr how +// to reload. The reload has no deadline, because the user sees it in a +// terminal and can press Ctrl-C. +func reload(ctx context.Context, env []string, stdout, stderr io.Writer) { if err := rex.ReloadConfig(ctx, env); err != nil { - fmt.Fprintf(stdout, "reload Rex's config yourself: rex config reload (%v)\n", err) + fmt.Fprintf(stderr, "reload Rex's config yourself: rex config reload (%v)\n", err) return } fmt.Fprintln(stdout, "reloaded Rex's config") diff --git a/cmd/rexdiff/main.go b/cmd/rexdiff/main.go index 80f32e0..621dc20 100644 --- a/cmd/rexdiff/main.go +++ b/cmd/rexdiff/main.go @@ -109,7 +109,7 @@ func run(ctx context.Context, env, args []string, stdout, stderr io.Writer) erro // variable of the resume file. resumePath, env := takeResume(env) dir := cmp.Or(f.repo, ".") - repo, err := vcs.Open(ctx, dir, env) + repo, err := vcs.Open(ctx, env, dir) if err != nil { return fmt.Errorf("open %s: %w", dir, err) } @@ -128,15 +128,11 @@ func run(ctx context.Context, env, args []string, stdout, stderr io.Writer) erro if binErr == nil && client != nil { notice = upgrade(ctx, env, bin) } - var updater tui.Updater - if u := update.Detect(bin, version, env); u != nil { - updater = u // an interface with a nil *update.Updater is not nil - } resume, err := tui.Run(ctx, tui.Options{ Repo: repo, Rex: client, Notice: notice, - Updater: updater, + Updater: update.Detect(env, bin, version), Resume: resumePath, Env: env, Config: f.config, diff --git a/diff/comment.go b/diff/comment.go index ecdf841..3b4e2cc 100644 --- a/diff/comment.go +++ b/diff/comment.go @@ -95,12 +95,11 @@ type Comments struct { // Len returns the number of comments. func (cs *Comments) Len() int { return len(cs.items) } -// Add adds c with a new ID, and returns the comment in the set. -func (cs *Comments) Add(c Comment) *Comment { +// Add adds c with a new ID. +func (cs *Comments) Add(c Comment) { cs.last++ c.ID = cs.last cs.items = append(cs.items, &c) - return &c } // Remove removes the comment with the given ID, if there is one. diff --git a/diff/comment_test.go b/diff/comment_test.go index 5d29094..73d3752 100644 --- a/diff/comment_test.go +++ b/diff/comment_test.go @@ -94,9 +94,10 @@ func TestComments(t *testing.T) { t.Parallel() var cs diff.Comments d := diff.Anchor{InDiff: true} - a := cs.Add(diff.Comment{Path: "a.go", Side: diff.SideNew, Start: 2, End: 4, Anchor: d}) - b := cs.Add(diff.Comment{Path: "a.go", Side: diff.SideOld, Start: 4, End: 4, Anchor: d}) + cs.Add(diff.Comment{Path: "a.go", Side: diff.SideNew, Start: 2, End: 4, Anchor: d}) + cs.Add(diff.Comment{Path: "a.go", Side: diff.SideOld, Start: 4, End: 4, Anchor: d}) cs.Add(diff.Comment{Path: "b.go", Side: diff.SideNew, Start: 1, End: 1, Anchor: d}) + a, b := cs.All()[0], cs.All()[1] if cs.Len() != 3 || cs.Count(d, "a.go") != 2 || a.ID == b.ID { t.Fatalf("Len = %d, Count(a.go) = %d, IDs %d %d; "+ "want 3, 2, two different IDs", @@ -131,7 +132,8 @@ func TestComments(t *testing.T) { t.Errorf("after Remove(%d): Find = %v, Len = %d, want nil, 2", b.ID, cs.Find(b.ID), cs.Len()) } - if c := cs.Add(diff.Comment{}); c.ID == a.ID || c.ID == b.ID { + cs.Add(diff.Comment{Path: "c.go"}) + if c := cs.All()[2]; c.ID == a.ID || c.ID == b.ID { t.Errorf("Add gives ID %d, want an ID other than %d and %d", c.ID, a.ID, b.ID) } diff --git a/diff/diff.go b/diff/diff.go index 1cf08f4..5d3c374 100644 --- a/diff/diff.go +++ b/diff/diff.go @@ -123,6 +123,9 @@ func Render(path, before, after string, o Options) *Diff { dv := diffview.New(path, before, after). Width(o.Width). XOffset(o.Offset). + Split(o.Split). + Signs(o.Signs). + Wrap(o.Wrap). Theme(o.Theme.Background, o.Theme.Foreground, o.Theme.Green, o.Theme.Red, o.Theme.dark()) if o.Cache != nil { @@ -131,15 +134,6 @@ func Render(path, before, after string, o Options) *Diff { if o.Expanded != nil { dv = dv.Expand(func(f diffview.Fold) bool { return o.Expanded(foldOf(f)) }) } - if o.Split { - dv = dv.Split() - } - if o.Signs { - dv = dv.Signs() - } - if o.Wrap { - dv = dv.Wrap() - } out, rows, g := dv.Render() d := &Diff{split: o.Split, src: [2]string{before, after}, wrap: o.Wrap} diff --git a/diff/fuzz_test.go b/diff/fuzz_test.go index 027936e..2207078 100644 --- a/diff/fuzz_test.go +++ b/diff/fuzz_test.go @@ -256,12 +256,13 @@ func FuzzComments(f *testing.F) { s := int(start) % len(lines) e := min(s+int(size), len(lines)-1) var cs diff.Comments - c := cs.Add(commentOn(path, diff.SideNew, before, s+1, e+1)) + c := commentOn(path, diff.SideNew, before, s+1, e+1) c.Text = text if c.Start != s+1 || c.End != e+1 { t.Errorf("commentOn lines %d-%d = %+v, want lines %d-%d", s+1, e+1, c, s+1, e+1) } + cs.Add(c) cs.Add(comment(path, diff.SideOld, before, after, text)) r := cs.Review(text) if strings.ContainsFunc(r, isUnsafeControl) { diff --git a/internal/clipboard/clipboard.go b/internal/clipboard/clipboard.go index ac27cce..7aee185 100644 --- a/internal/clipboard/clipboard.go +++ b/internal/clipboard/clipboard.go @@ -24,21 +24,21 @@ var tools = [][]string{ } // Write pipes text into the first clipboard tool on the PATH of env. The -// tool runs with the environment env. Write fails if the tool exits with a -// status that is not zero. +// tool runs with the environment env. If PATH has no clipboard tool, Write +// returns [ErrNoTool]. Write fails if the tool exits with a status that is +// not zero. If ctx is done, the error has the text of [context.Cause]. func Write(ctx context.Context, env []string, text string) error { for _, t := range tools { - path, err := proc.LookPath(env, t[0]) - if err != nil { + if _, err := proc.LookPath(env, t[0]); err != nil { continue } - cmd := proc.Command(ctx, env, path, t[1:]...) + cmd := proc.Command(ctx, env, t[0], t[1:]...) cmd.Stdin = strings.NewReader(text) // The output goes to the null device. xclip and wl-copy leave a // process that keeps the clipboard, and a pipe stays open while it - // runs. + // runs. Thus the error has no stderr. if err := cmd.Run(); err != nil { - return fmt.Errorf("%s: %w", t[0], err) + return fmt.Errorf("%s: %w", t[0], proc.Error(ctx, t[0], err, nil)) } return nil } diff --git a/internal/diffview/view.go b/internal/diffview/view.go index d3b6f47..47e28e6 100644 --- a/internal/diffview/view.go +++ b/internal/diffview/view.go @@ -52,10 +52,10 @@ func New(path, before, after string) *View { } } -// Split sets the split layout. The old lines are on the left and the new -// lines are on the right. -func (v *View) Split() *View { - v.split = true +// Split sets the split layout if split is true. The old lines are on the +// left and the new lines are on the right. +func (v *View) Split(split bool) *View { + v.split = split return v } @@ -71,17 +71,17 @@ func (v *View) XOffset(xOffset int) *View { return v } -// Wrap makes long lines continue on the next screen lines, instead of -// cutting them. The x offset does not apply. -func (v *View) Wrap() *View { - v.wrap = true +// Wrap makes long lines continue on the next screen lines if wrap is +// true, instead of cutting them. Then the x offset does not apply. +func (v *View) Wrap(wrap bool) *View { + v.wrap = wrap return v } -// Signs marks an inserted line with + and a deleted line with -, in place -// of a bar. -func (v *View) Signs() *View { - v.signs = true +// Signs marks an inserted line with + and a deleted line with - if signs +// is true, in place of a bar. +func (v *View) Signs(signs bool) *View { + v.signs = signs return v } diff --git a/internal/editor/editor.go b/internal/editor/editor.go index a973839..9398141 100644 --- a/internal/editor/editor.go +++ b/internal/editor/editor.go @@ -20,16 +20,25 @@ type Command struct { Window bool // the editor opens a window, not a terminal editor } -// Resolve returns the command that opens file at line. It uses template, -// the editor command of the settings, if it is not empty. Else it uses the -// first of visual, env, and git that is not blank. They are $VISUAL, -// $EDITOR, and core.editor. Each error is a message for the user. -func Resolve(template, visual, env, git, file string, line int) (Command, error) { +// Sources are the places that can name the editor, in the order that +// Resolve tries them. +type Sources struct { + Template string // the editor command of the settings + Visual string // $VISUAL + Editor string // $EDITOR + Git string // core.editor +} + +// Resolve returns the command that opens file at line. It uses +// s.Template if it is not empty. Else it uses the first of s.Visual, +// s.Editor, and s.Git that is not blank. Each error is a message for the +// user. +func Resolve(s Sources, file string, line int) (Command, error) { var c Command - if template != "" { - c = fromTemplate(template, file, line) + if s.Template != "" { + c = fromTemplate(s.Template, file, line) } else { - e := cmp.Or(strings.TrimSpace(visual), strings.TrimSpace(env), strings.TrimSpace(git)) + e := cmp.Or(strings.TrimSpace(s.Visual), strings.TrimSpace(s.Editor), strings.TrimSpace(s.Git)) if e == "" { return Command{}, errors.New(`no editor: set "editor" in rexdiff.lua, $EDITOR, or git's core.editor`) } diff --git a/internal/editor/editor_test.go b/internal/editor/editor_test.go index 80b857c..4709e0f 100644 --- a/internal/editor/editor_test.go +++ b/internal/editor/editor_test.go @@ -40,7 +40,7 @@ func TestCommands(t *testing.T) { {"", "myeditor --wait", `myeditor --wait +12 '/r/a b.go'`, true}, } for _, tt := range tests { - got, err := editor.Resolve(tt.template, "", tt.editor, "", abs, 12) + got, err := editor.Resolve(editor.Sources{Template: tt.template, Editor: tt.editor}, abs, 12) if err != nil || got.Script != tt.script || got.Window != tt.window { t.Errorf("editor %q%q = %+v, %v, want script %q, window %v", tt.template, tt.editor, got, err, tt.script, tt.window) @@ -63,7 +63,7 @@ func TestCommandProgram(t *testing.T) { const noProgram = "the editor command names no program" for _, tt := range tests { for _, c := range []struct{ template, env string }{{tt.command, ""}, {"", tt.command}} { - got, err := editor.Resolve(c.template, "", c.env, "", "/a", 1) + got, err := editor.Resolve(editor.Sources{Template: c.template, Editor: c.env}, "/a", 1) switch { case tt.want == "" && (err == nil || err.Error() != noProgram): t.Errorf("Resolve(%q, %q) error = %v, want %q", c.template, c.env, err, noProgram) @@ -88,14 +88,14 @@ func TestResolveOrder(t *testing.T) { {"", "", "\t", "hx", "hx"}, } for _, tt := range tests { - got, err := editor.Resolve(tt.template, tt.visual, tt.env, tt.git, "/a", 1) + got, err := editor.Resolve(editor.Sources{Template: tt.template, Visual: tt.visual, Editor: tt.env, Git: tt.git}, "/a", 1) if err != nil || got.Program != tt.want { t.Errorf("Resolve(%q, %q, %q, %q) = %q, %v, want %q", tt.template, tt.visual, tt.env, tt.git, got.Program, err, tt.want) } } const noEditor = `no editor: set "editor" in rexdiff.lua, $EDITOR, or git's core.editor` - if _, err := editor.Resolve("", " ", "", "\n", "/a", 1); err == nil || err.Error() != noEditor { + if _, err := editor.Resolve(editor.Sources{Visual: " ", Git: "\n"}, "/a", 1); err == nil || err.Error() != noEditor { t.Errorf("Resolve with no editor: error = %v, want %q", err, noEditor) } } diff --git a/rex/rex.go b/rex/rex.go index 9d96f04..8a31eb1 100644 --- a/rex/rex.go +++ b/rex/rex.go @@ -258,6 +258,8 @@ func (c *Client) Agents(ctx context.Context) ([]Agent, error) { if err != nil || status.App == "" { return } + // If Rex cannot tell the directory, Cwd is "". The agent stays + // in the list. cwd, _ := c.Cwd(ctx, b.ID) agents[i] = Agent{ Block: b.ID, diff --git a/test/testdata/script/install.txt b/test/testdata/script/install.txt index 14ecf3f..a9cb300 100644 --- a/test/testdata/script/install.txt +++ b/test/testdata/script/install.txt @@ -83,7 +83,7 @@ cmp .config/rex/init.lua mine.lua # If Rex does not reload, install still writes the files and says what to do. env REX_FAIL=1 exec rexdiff install -stdout 'reload Rex''s config yourself: rex config reload' +stderr 'reload Rex''s config yourself: rex config reload' # On macOS, the action runs a symlinked rexdiff through the link, so that # it still works after brew upgrade. diff --git a/tui/comment.go b/tui/comment.go index 4a54388..8098f25 100644 --- a/tui/comment.go +++ b/tui/comment.go @@ -47,7 +47,9 @@ func (m *model) selectedChange() *changedFile { return &m.changeFiles[m.changeSel] } -// contentFor returns the text of side s of the file at path. +// contentFor returns the text of side s of the file at path, as the pane +// shows it. Thus a comment quotes the lines on the screen, and not a newer +// version of the file. A file that the pane does not show gives "". func (m *model) contentFor(path string, s diff.Side) string { if f := m.selectedChange(); m.tab == tabChanges && f != nil && f.Path == path { if s == diff.SideOld { @@ -55,9 +57,10 @@ func (m *model) contentFor(path string, s diff.Side) string { } return f.New } - // An unreadable file gives a comment with no code. - content, _ := m.repo.ReadFile(path) - return content + if m.tab == tabFiles && path == m.viewedPath { + return m.viewed + } + return "" } // diffRev returns the revision of the diff in the Changes tab, for @@ -175,20 +178,16 @@ func (m *model) updateComment(msg tea.KeyPressMsg) tea.Cmd { // As in herdr-reviewr, blank text cancels. An edit keeps the // comment. d := m.draft - text := strings.TrimSpace(m.editor.Value()) - switch { - case text == "": - case d.editID > 0: - m.comments.Remove(d.editID) - c := d.Comment - c.Text = text - m.comments.Add(c) - m.flash("comment updated") - default: + if text := strings.TrimSpace(m.editor.Value()); text != "" { + flash := "comment added" + if d.editID > 0 { + m.comments.Remove(d.editID) + flash = "comment updated" + } c := d.Comment c.Text = text m.comments.Add(c) - m.flash("comment added") + m.flash(flash) } m.closeComment() return nil diff --git a/tui/commentlist.go b/tui/commentlist.go index ca019f2..0216f0a 100644 --- a/tui/commentlist.go +++ b/tui/commentlist.go @@ -55,9 +55,9 @@ func (m *model) updateCommentList(msg tea.KeyPressMsg) tea.Cmd { case key.Matches(msg, overlayKeys.Choose): return m.chooseOverlay() case key.Matches(msg, k.Down): - ov.down() + ov.move(1) case key.Matches(msg, k.Up): - ov.up() + ov.move(-1) case key.Matches(msg, k.Send): return m.startSend() case key.Matches(msg, k.Copy): diff --git a/tui/editor.go b/tui/editor.go index 3641247..b122008 100644 --- a/tui/editor.go +++ b/tui/editor.go @@ -26,12 +26,15 @@ import ( // The messages are the same as in herdr-reviewr. func (m *model) openEditor(path string, line int) tea.Cmd { abs := filepath.Join(m.repo.Root(), path) - var git string - if m.cfg.Editor == "" { - git = m.repo.Editor(m.ctx) + src := editor.Sources{ + Template: m.cfg.Editor, + Visual: proc.Getenv(m.env, "VISUAL"), + Editor: proc.Getenv(m.env, "EDITOR"), } - ed, err := editor.Resolve(m.cfg.Editor, - proc.Getenv(m.env, "VISUAL"), proc.Getenv(m.env, "EDITOR"), git, abs, line) + if src.Template == "" { + src.Git = m.repo.Editor(m.ctx) + } + ed, err := editor.Resolve(src, abs, line) if err != nil { m.flash("editor failed: " + err.Error()) return nil diff --git a/tui/model.go b/tui/model.go index 6228a52..89f0850 100644 --- a/tui/model.go +++ b/tui/model.go @@ -146,8 +146,7 @@ type changedFile struct { // turnState is a turn of the agents in the repository. It keeps a // snapshot of the working tree from the start of the turn. type turnState struct { - block string // the first agent that works in the turn - app string // the name of that agent, for example "pi" + app string // the name of the first agent of the turn, for example "pi" tree string // the snapshot at the start of the turn running bool at time.Time // the start of the turn @@ -173,9 +172,8 @@ type draft struct { // prState is the content of the PR tab. type prState struct { - loading bool - pr *vcs.PullRequest - err string + pr *vcs.PullRequest + err string } // agentState is what the program knows about the agent in a block. @@ -202,7 +200,7 @@ type model struct { keys keyMap notice string // a problem that the footer shows, or "" - updater Updater // nil if rexdiff cannot update itself + updater *update.Updater // nil if rexdiff cannot update itself release *update.Release // a newer release, or nil phase updatePhase resumePath string // the file of the resume state for the restart, or "" @@ -265,6 +263,7 @@ type model struct { // is nil if the program does not know. agentsHere *bool memberDirs map[string]bool // the working directories of the members + ownsErr string // the last error of owns, which the log has changeFiles []changedFile // the Changes tab changeSel int // the file that shows in the Changes tab @@ -278,6 +277,7 @@ type model struct { // tab, to notice edits. The path of the pane is "" for Markdown. viewed string viewedPath string + readErr string // the last error of the read, which the log has changePane, allPane, prPane pane pr prState @@ -373,7 +373,12 @@ func newModel(ctx context.Context, o Options, cfg config) model { if o.Rex != nil && o.Agent != "" { // If Rex does not know the agent, the picker selects no agent // first. The picker still lists all the agents. + ctx, cancel := context.WithCancelCause(ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, rexTimeout, + fmt.Errorf("rex resolve: %v timeout: %w", rexTimeout, context.DeadlineExceeded)) m.beside, _ = o.Rex.Resolve(ctx, o.Agent) + cancel(fmt.Errorf("rex resolve: done: %w", context.Canceled)) + cancelTimeout() } m.changePane.anchor, m.allPane.anchor, m.prPane.anchor = -1, -1, -1 m.cfg = cfg @@ -463,6 +468,9 @@ func tick(d time.Duration) tea.Cmd { // the pull request and the agents. func (m *model) Init() tea.Cmd { cmds := []tea.Cmd{tick(tickInterval), m.requestPR(true)} + // After a restart, the PR tab can show first. It tells that the read + // runs. + m.renderPR() cmds = append(cmds, requestColors...) if m.rex != nil { cmds = append(cmds, m.listAgents(agentsMsg{})) @@ -639,7 +647,7 @@ func (in reloadInput) changedFiles(ctx context.Context, from, to string) ([]chan c := &out[i] if p, ok := in.prev[f.Path]; ok && p.Old == f.Old && p.New == f.New { *c = p // the same change, so the counts stay - } else if !f.Binary && !f.TooBig { + } else if f.Skip == nil { c.adds, c.dels = diff.Count(f.Old, f.New) c.oldHash = hash(f.Old) } diff --git a/tui/nav.go b/tui/nav.go index 3a61bb6..88a1ff5 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -327,9 +327,9 @@ func (m *model) refresh() tea.Cmd { if m.tab != tabPR { return nil } - m.pr.loading = true + cmd := m.requestPR(true) m.renderPR() - return m.requestPR(true) + return cmd } // setTab shows tab t. diff --git a/tui/overlay.go b/tui/overlay.go index 9d63d2e..d25a760 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -121,10 +121,6 @@ func (o *overlay) selected() *pickItem { return &o.items[o.shown[o.cur]] } -// down and up move the cursor of the list by one row. -func (o *overlay) down() { o.move(1) } -func (o *overlay) up() { o.move(-1) } - // move moves the cursor of the list by d rows. It skips the rows that // cannot have the cursor, and it stops at the ends. func (o *overlay) move(d int) { @@ -206,10 +202,10 @@ func (m *model) updateOverlay(msg tea.KeyPressMsg) tea.Cmd { case key.Matches(msg, k.Choose): return m.chooseOverlay() case key.Matches(msg, k.Up): - ov.up() + ov.move(-1) return nil case key.Matches(msg, k.Down): - ov.down() + ov.move(1) return nil } if !ov.hasInput() { @@ -262,9 +258,9 @@ func (m *model) updateList(msg tea.KeyPressMsg) tea.Cmd { digit := len(s) == 1 && s[0] >= '1' && s[0] <= '9' switch { case key.Matches(msg, k.ListDown): - ov.down() + ov.move(1) case key.Matches(msg, k.ListUp): - ov.up() + ov.move(-1) case ov.kind == overlayAgents && digit: if i := int(s[0] - '1'); i < len(ov.shown) { ov.cur = i diff --git a/tui/pr.go b/tui/pr.go index 922feee..1731057 100644 --- a/tui/pr.go +++ b/tui/pr.go @@ -94,9 +94,10 @@ func (m *model) refsChanged() tea.Cmd { return nil } if old != "" && b != old { - m.pr = prState{loading: true} + m.pr = prState{} + cmd := m.requestPR(true) m.renderPR() - return m.requestPR(true) + return cmd } return m.requestPR(false) } @@ -143,7 +144,7 @@ func (m *model) renderPR() { p.set(nil, nil) return case pr == nil: - if !m.pr.loading { + if !m.prf.inFlight { p.note = vcs.ErrNoPullRequest.Error() } p.set(nil, nil) @@ -217,7 +218,6 @@ func (m *model) onPR(msg prMsg) tea.Cmd { // As in herdr-reviewr, a failed read keeps the last good pull request. // The end of the pull request is not a failure. if msg.err != nil && m.pr.pr != nil && !errors.Is(msg.err, vcs.ErrNoPullRequest) { - m.pr.loading = false m.flash("refresh failed: " + msg.err.Error()) m.renderPR() return next diff --git a/tui/preview.go b/tui/preview.go index 19b2937..31d8af8 100644 --- a/tui/preview.go +++ b/tui/preview.go @@ -99,9 +99,9 @@ func (m *model) searchPreview(width int) *preview { } pv := &preview{path: it.id, line: it.line, width: width, hit: -1, center: true} content, err := m.repo.ReadFile(it.id) - note, isNote := fileNote(err) + note := fileNote(err) switch { - case isNote: + case note != "": pv.lines = []string{dimStyle.Render(" " + note)} case err != nil || content == "": pv.lines = []string{dimStyle.Render(" no preview")} diff --git a/tui/release.go b/tui/release.go index 8251dbe..01b4120 100644 --- a/tui/release.go +++ b/tui/release.go @@ -1,12 +1,9 @@ package tui import ( - "context" "fmt" tea "charm.land/bubbletea/v2" - - "github.com/rednafi/rexdiff/update" ) // The footer tells the user about a newer release. A key or a click @@ -14,14 +11,6 @@ import ( // the same pane, with the comments and the place of the user. The update // package installs the release. This file shows the state of the update. -// Updater finds and installs releases. *update.Updater implements it. -type Updater interface { - // Latest returns the latest release, and whether it is newer. - Latest(ctx context.Context) (update.Release, bool, error) - // Install installs the release, so that the next start runs it. - Install(ctx context.Context, r update.Release) error -} - // updatePhase is the step of the update of rexdiff. type updatePhase int @@ -51,7 +40,7 @@ func (m *model) releaseBadge() string { case phaseUpdating: return fmt.Sprintf("updating rexdiff to %s…", m.release.Tag) case phaseUpdated: - return fmt.Sprintf("rexdiff %s is installed; it starts when you are done", m.release.Tag) + return fmt.Sprintf("rexdiff %s is installed. It starts when you are done", m.release.Tag) } return fmt.Sprintf("rexdiff %s is out: press %s or click here to update", m.release.Tag, firstKey(m.keys.Update)) @@ -91,7 +80,7 @@ func (m *model) restartIfReady(pending tea.Cmd) bool { if err != nil { m.phase, m.release = phaseIdle, nil m.flash("updated, but the save of your comments failed: " + err.Error() + - "; open rexdiff again for the new version") + ". Open rexdiff again for the new version") return false } m.resumePath = path diff --git a/tui/render.go b/tui/render.go index 28d74a3..481f135 100644 --- a/tui/render.go +++ b/tui/render.go @@ -76,13 +76,17 @@ func (m *model) listHeight(h int) int { return 0 } +// mainMinWidth is the width of the main pane, with its gutter, if the +// file list leaves less, or if the terminal is narrower. +const mainMinWidth = 24 + // mainWidth returns the width of the main pane, with its gutter. func (m *model) mainWidth() int { w := m.w if lw := m.listWidth(); lw > 0 && !m.listPos.stacked() { w -= lw + sepWidth } - return max(w, 24) + return max(w, mainMinWidth) } // mainHeight returns the number of rows of the main pane. @@ -144,7 +148,7 @@ func (m *model) splitAllowed() bool { return false } f := m.selectedChange() - return f != nil && !f.Binary && !f.TooBig && !m.isRendered(f) && + return f != nil && f.Skip == nil && !m.isRendered(f) && f.Old != "" && f.New != "" && f.Old != f.New } @@ -193,16 +197,16 @@ const ( noteTooBig = "file too large to show" ) -// fileNote returns the note for a file that ReadFile does not read, and -// reports whether err has a note. -func fileNote(err error) (string, bool) { +// fileNote returns the note for a file that vcs does not read, or "" if +// err has no note. err is the error of ReadFile, or File.Skip. +func fileNote(err error) string { switch { case errors.Is(err, vcs.ErrBinary): - return noteBinary, true + return noteBinary case errors.Is(err, vcs.ErrTooBig): - return noteTooBig, true + return noteTooBig } - return "", false + return "" } // renderChanges shows the selected file in the Changes tab. @@ -216,10 +220,8 @@ func (m *model) renderChanges() { } p.path = f.Path switch { - case f.Binary: - p.setNote(noteBinary) - case f.TooBig: - p.setNote(noteTooBig) + case f.Skip != nil: + p.setNote(fileNote(f.Skip)) case f.Old == f.New: // The change is a rename with no edit, or a change of the file mode. note := "no change to the content" @@ -267,18 +269,26 @@ func (m *model) refreshViewer() { } path := m.allFiles[m.allSel].Path content, err := m.repo.ReadFile(path) + if err == nil { + m.readErr = "" + } if err == nil && content == m.viewed && m.viewedPath == path { return } m.viewed, m.viewedPath = content, path p.path = path - note, isNote := fileNote(err) + note := fileNote(err) switch { - case isNote: + case note != "": p.path = "" p.set([]string{dimStyle.Render(" " + note)}, nil) case err != nil: - m.log.Warn("read file failed", "path", path, "err", err) + // Without a watcher, each tick reads the file again. The log has + // each error once. + if text := err.Error(); text != m.readErr { + m.readErr = text + m.log.Warn("read file failed", "path", path, "err", err) + } p.path = "" p.set([]string{dimStyle.Render(" could not read this file")}, nil) case m.rendered && isMarkdown(path): diff --git a/tui/resume.go b/tui/resume.go index f1e14a3..e63959f 100644 --- a/tui/resume.go +++ b/tui/resume.go @@ -7,6 +7,7 @@ import ( "time" "github.com/rednafi/rexdiff/diff" + "github.com/rednafi/rexdiff/internal/proc" "github.com/rednafi/rexdiff/vcs" ) @@ -51,9 +52,9 @@ type resumeState struct { Beside string `json:"beside"` } -// resumeTurn is a [turnState], with exported fields for JSON. +// resumeTurn is a [turnState], with exported fields for JSON. The state +// of an older version can have the member "block", which Unmarshal skips. type resumeTurn struct { - Block string `json:"block"` App string `json:"app"` Tree string `json:"tree"` Running bool `json:"running"` @@ -101,7 +102,7 @@ func (m *model) saveResume() (string, error) { Beside: m.beside, } if t := m.turn; t != nil { - s.Turn = &resumeTurn{Block: t.block, App: t.app, Tree: t.tree, Running: t.running, At: t.at} + s.Turn = &resumeTurn{App: t.app, Tree: t.tree, Running: t.running, At: t.at} } if m.prPlace != nil { // the PR has not loaded since the last restart s.PR = *m.prPlace @@ -116,7 +117,7 @@ func (m *model) saveResume() (string, error) { if err != nil { return "", err } - f, err := os.CreateTemp("", "rexdiff-state-*.json") + f, err := os.CreateTemp(proc.Getenv(m.env, "TMPDIR"), "rexdiff-state-*.json") if err != nil { return "", err } @@ -148,7 +149,7 @@ func loadResume(path string) (*resumeState, error) { func (m *model) restoreSettings(s *resumeState) { m.tab, m.scope, m.base, m.from, m.to = s.Tab, s.Scope, s.Base, s.From, s.To if t := s.Turn; t != nil { - m.turn = &turnState{block: t.Block, app: t.App, tree: t.Tree, running: t.Running, at: t.At} + m.turn = &turnState{app: t.App, tree: t.Tree, running: t.Running, at: t.At} } m.split, m.wrap, m.rendered = s.Split, s.Wrap, s.Rendered m.listPos, m.listHidden, m.focusList, m.listW = s.ListPos, s.ListHidden, s.FocusList, s.ListW @@ -173,17 +174,20 @@ func (m *model) restoreSettings(s *resumeState) { // restorePlaces selects the files of s and moves the cursors to the places // in s. Call it after the first reload. func (m *model) restorePlaces(s *resumeState) { + // The directories above the selected files expand. Expand them before + // the list of all files is read, so that the list has a file in an + // ignored directory. + m.changeTree.reveal(s.ChangePath) + m.allTree.reveal(s.FilePath) if i := slices.IndexFunc(m.changeFiles, func(f changedFile) bool { return f.Path == s.ChangePath }); i >= 0 { m.changeSel = i } - m.allFiles, _ = m.repo.Files(m.ctx) // an error shows an empty list + files, _ := m.repo.Files(m.ctx) // an error shows an empty list + m.allFiles = m.withIgnored(files) if i := slices.IndexFunc(m.allFiles, func(e vcs.Entry) bool { return e.Path == s.FilePath }); i >= 0 { m.allSel = i } - // The cursors go to the selected files, and the directories above - // them expand. - m.changeTree.reveal(s.ChangePath) - m.allTree.reveal(s.FilePath) + // The cursors go to the selected files. m.changeTree.cur, m.allTree.cur = -1, -1 m.buildTrees() m.renderChanges() diff --git a/tui/tui.go b/tui/tui.go index 09523d3..1b83744 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -13,6 +13,7 @@ import ( tea "charm.land/bubbletea/v2" "github.com/rednafi/rexdiff/rex" + "github.com/rednafi/rexdiff/update" "github.com/rednafi/rexdiff/vcs" ) @@ -49,14 +50,14 @@ type Options struct { Notice string // Updater installs a newer release, or is nil if rexdiff cannot update // itself. If it is not nil, the program asks for the latest release. - Updater Updater + Updater *update.Updater // Resume is the file of the state that Run returned before an update, // or "". Run reads it and removes it. Resume string // Env is the environment of the editor, the URL opener, and the // clipboard tool, for example the environment of the process from - // os.Environ. Run finds them in its PATH, and reads $VISUAL and - // $EDITOR from it. + // os.Environ. Run finds them in its PATH, and reads $VISUAL, $EDITOR, + // $TMPDIR, and the variables of the terminal from it. Env []string } @@ -94,7 +95,10 @@ func CheckConfig(text string) error { // settings are not valid. It also returns an error if Repo is nil, or if // Run does not know the Layout or the Scope. After an update, Run returns // the file of the saved state. The caller then runs the new rexdiff with -// Options.Resume set to that file. +// Options.Resume set to that file. In that case Run keeps the alternate +// screen on, with the last frame and no cursor, so that the restart does +// not show the shell. If the restart fails, the caller leaves the +// alternate screen and shows the cursor. func Run(ctx context.Context, o Options) (resume string, err error) { if err := o.check(); err != nil { return "", err @@ -107,7 +111,13 @@ func Run(ctx context.Context, o Options) (resume string, err error) { defer cancel(errQuit) m := startModel(ctx, o, cfg) - program := tea.NewProgram(&m, tea.WithContext(ctx)) + // Bubble Tea reads TERM and COLORTERM from env. A nil env makes it + // read the environment of the process. + env := o.Env + if env == nil { + env = []string{} + } + program := tea.NewProgram(&m, tea.WithContext(ctx), tea.WithEnvironment(env)) var wg sync.WaitGroup if o.Rex != nil { // Watch returns only the cause of ctx, when ctx is done. @@ -154,9 +164,14 @@ func startModel(ctx context.Context, o Options, cfg config) model { m.restorePlaces(saved) } if o.Rex != nil && o.Rex.Block() != "" { + ctx, cancel := context.WithCancelCause(ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, rexTimeout, + fmt.Errorf("rex label: %v timeout: %w", rexTimeout, context.DeadlineExceeded)) if err := o.Rex.SetLabel(ctx, o.Rex.Block(), appName); err != nil { m.log.Debug("set label failed", "err", err) } + cancel(fmt.Errorf("rex label: done: %w", context.Canceled)) + cancelTimeout() } return m } diff --git a/tui/turn.go b/tui/turn.go index 56a9c6f..5af11fd 100644 --- a/tui/turn.go +++ b/tui/turn.go @@ -38,13 +38,18 @@ func (m *model) members() (ms []member, ask string, ok bool) { } in, err := m.owns(a.cwd) if err != nil { - m.log.Warn("agent membership failed", "err", err) + // Each event asks again. The log has each error once. + if text := err.Error(); text != m.ownsErr { + m.ownsErr = text + m.log.Warn("agent membership failed", "err", err) + } return nil, "", false } if in { ms = append(ms, member{block, a.app, a.state, a.since}) } } + m.ownsErr = "" return ms, "", true } @@ -156,7 +161,12 @@ const raceBefore = time.Second // in the snapshot. Then the turn is not known, and the scope says so. func (m *model) startTurn(ms []member) { m.pending = nil - tree, err := m.repo.Snapshot(m.ctx) + ctx, cancel := context.WithCancelCause(m.ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, reloadTimeout, + fmt.Errorf("turn snapshot: %v timeout: %w", reloadTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("turn snapshot: done: %w", context.Canceled)) + tree, err := m.repo.Snapshot(ctx) if err != nil { m.log.Warn("turn snapshot failed", "err", err) return @@ -173,7 +183,6 @@ func (m *model) startTurn(ms []member) { } m.log.Debug("turn start", "block", ms[i].block, "tree", tree) m.pending = &turnState{ - block: ms[i].block, app: ms[i].app, tree: tree, running: true, @@ -224,7 +233,12 @@ func (m *model) onTurnCheck(msg turnCheckMsg) { // differs from its start. Else the last turn stays. The end of a turn // checks at once, before the turn stops being pending. func (m *model) checkTurn() { - tree, err := m.repo.Snapshot(m.ctx) + ctx, cancel := context.WithCancelCause(m.ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, reloadTimeout, + fmt.Errorf("turn check: %v timeout: %w", reloadTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("turn check: done: %w", context.Canceled)) + tree, err := m.repo.Snapshot(ctx) if err != nil { m.log.Warn("turn change check failed", "err", err) return diff --git a/tui/view.go b/tui/view.go index 46c4f4b..038c5d0 100644 --- a/tui/view.go +++ b/tui/view.go @@ -389,7 +389,7 @@ func (m *model) emptyNote() string { return "" case p.note != "": return termtext.Quote(p.note) // the note can come from git or a forge - case m.tab == tabPR && m.pr.loading: + case m.tab == tabPR && m.prf.inFlight: return "loading the pull request…" case m.tab == tabFiles && len(m.allFiles) == 0: return "no files" diff --git a/update/update.go b/update/update.go index bcd3ba5..96a5198 100644 --- a/update/update.go +++ b/update/update.go @@ -114,7 +114,7 @@ func Version(stamped string) string { // environment env, and finds them in the PATH of env. If env sets // REXDIFF_LATEST_URL, the Updater gets the latest release from that // address. Set it to test a release before it is public. -func Detect(bin, stamped string, env []string) *Updater { +func Detect(env []string, bin, stamped string) *Updater { return detect(bin, Version(stamped), stamped == "", env) } @@ -217,7 +217,8 @@ func (u *Updater) Install(ctx context.Context, r Release) error { func (u *Updater) checkVersion(ctx context.Context, bin, tag string) error { out, err := u.runProgram(ctx, nil, bin, "-version") if err != nil { - return fmt.Errorf("check the new rexdiff: %w", err) + // The error of runProgram names rexdiff. + return fmt.Errorf("check the new version: %w", err) } if got := strings.TrimSpace(string(out)); got != tag { return fmt.Errorf("the update left rexdiff %s, not %s", cmp.Or(got, "of no version"), tag) @@ -251,11 +252,9 @@ func (u *Updater) runProgram(ctx context.Context, env []string, name string, arg // PATH of its environment. tool looks in dirs first, because Rex starts // panes with a PATH without Homebrew or Go. func tool(name string, dirs ...string) string { - for _, dir := range dirs { - path := filepath.Join(dir, name) - if info, err := os.Stat(path); err == nil && info.Mode().IsRegular() && info.Mode()&0o111 != 0 { - return path - } + env := []string{"PATH=" + strings.Join(dirs, string(os.PathListSeparator))} + if path, err := proc.LookPath(env, name); err == nil { + return path } return name } @@ -395,7 +394,8 @@ func get(ctx context.Context, url string, limit int64) ([]byte, error) { // Restart runs the rexdiff at bin with args and the environment env in // place of this process. The process ID and the terminal stay, so Rex sees -// the same program. Restart returns only if it fails. +// the same program. Restart returns only if it fails. Its parameters have +// the order of [syscall.Exec], so env comes last. func Restart(bin string, args, env []string) error { return syscall.Exec(bin, append([]string{bin}, args...), env) } diff --git a/update/update_test.go b/update/update_test.go index f484950..b46679c 100644 --- a/update/update_test.go +++ b/update/update_test.go @@ -38,9 +38,9 @@ func mkdir(t *testing.T, dir string) string { func detect(t *testing.T, latest, bin, stamped string, env ...string) *update.Updater { t.Helper() env = append([]string{"REXDIFF_LATEST_URL=" + latest, "PATH=/usr/bin:/bin"}, env...) - u := update.Detect(bin, stamped, env) + u := update.Detect(env, bin, stamped) if u == nil { - t.Fatalf("Detect(%s, %s, %q) = nil, want an Updater", bin, stamped, env) + t.Fatalf("Detect(%q, %s, %s) = nil, want an Updater", env, bin, stamped) } return u } @@ -71,8 +71,8 @@ func TestVersion(t *testing.T) { {"", "0.1.0"}, } for _, tt := range tests { - if u := update.Detect(tt.bin, tt.stamped, nil); u != nil { - t.Errorf("Detect(%q, %q) = %+v, want nil", tt.bin, tt.stamped, u) + if u := update.Detect(nil, tt.bin, tt.stamped); u != nil { + t.Errorf("Detect(nil, %q, %q) = %+v, want nil", tt.bin, tt.stamped, u) } } } diff --git a/vcs/pr.go b/vcs/pr.go index fdb4ec1..abbed6a 100644 --- a/vcs/pr.go +++ b/vcs/pr.go @@ -95,7 +95,8 @@ type PRComment struct { // forge from the host of the remote "upstream", or else "origin". Then it runs // the command-line tool of the forge: gh, glab, or az. The tool must be // installed and signed in. The text of the pull request has no control -// characters. +// characters. If the branch has no pull request, PullRequest returns +// [ErrNoPullRequest]. func (r *Repo) PullRequest(ctx context.Context, h Hosts) (*PullRequest, error) { remote := r.remoteURL(ctx) if remote == "" { diff --git a/vcs/repo.go b/vcs/repo.go index efdbedc..1d8350f 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -13,6 +13,7 @@ package vcs import ( "bufio" "bytes" + "cmp" "context" "errors" "fmt" @@ -72,7 +73,7 @@ var errClosed = errors.New("the repository is closed") // Open returns the repository that contains dir. The repository runs git // and the forge tools with the environment env, and finds them in the // PATH of env. Open does not change env. -func Open(ctx context.Context, dir string, env []string) (*Repo, error) { +func Open(ctx context.Context, env []string, dir string) (*Repo, error) { // git gets the root in PWD. PWD must be an absolute path. abs, err := filepath.Abs(dir) if err != nil { @@ -381,11 +382,9 @@ type File struct { From string // for a rename, the old path Status FileStatus Old, New string - // Binary is true if a version of the file has a NUL byte. - Binary bool - // TooBig is true if the two versions together are larger than - // 2,000,000 bytes or have more than 50,000 lines. - TooBig bool + // Skip is ErrBinary if a version of the file has a NUL byte. Else it + // is ErrTooBig if the two versions together are too big, or nil. + Skip error } // gitlink is the mode of a submodule in a tree. @@ -432,8 +431,10 @@ func (r *Repo) Diff(ctx context.Context, from, to string) ([]File, error) { for i := range files { f := &files[i] f.Old, f.New = f.use(blobs[2*i]), f.use(blobs[2*i+1]) - f.TooBig = f.TooBig || isTooBig(f.Old, f.New) - if f.Binary || f.TooBig { + if f.Skip == nil && isTooBig(f.Old, f.New) { + f.Skip = ErrTooBig + } + if f.Skip != nil { f.Old, f.New = "", "" } } @@ -454,10 +455,12 @@ func diffSide(mode, id string) (string, blob) { return id, blob{} } -// use returns the content of b, and marks f if b is binary or too big. +// use returns the content of b. If b is binary or too big, use sets +// f.Skip. A binary side wins over a side that is too big. func (f *File) use(b blob) string { - f.Binary = f.Binary || errors.Is(b.err, ErrBinary) - f.TooBig = f.TooBig || errors.Is(b.err, ErrTooBig) + if f.Skip == nil || errors.Is(b.err, ErrBinary) { + f.Skip = cmp.Or(b.err, f.Skip) + } return b.data } @@ -621,7 +624,9 @@ func (r *Repo) Owns(ctx context.Context, dir string) (bool, error) { } cmd, stderr := r.command(ctx, nil, "git", "-C", dir, "rev-parse", "--show-toplevel") out, err := output(ctx, cmd, stderr) - if _, ok := errors.AsType[*exec.ExitError](err); ok { + // A git that a signal stops, for example at the end of ctx, does not + // answer. + if ee, ok := errors.AsType[*exec.ExitError](err); ok && ee.Exited() { return false, nil // dir is in no working tree } if err != nil { diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 5ca620c..85c7fdf 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -70,7 +70,7 @@ func open(t *testing.T, dir string) *vcs.Repo { // openEnv is like open, but the repository has the environment env. func openEnv(t *testing.T, dir string, env []string) *vcs.Repo { t.Helper() - r, err := vcs.Open(t.Context(), dir, env) + r, err := vcs.Open(t.Context(), env, dir) if err != nil { t.Fatal(err) } @@ -291,19 +291,19 @@ func TestDiffSkipsBinaryAndBigFiles(t *testing.T) { got[f.Path] = f } for _, p := range []string{"bin", "late"} { - if f := got[p]; !f.Binary || f.New != "" { - t.Errorf("%s: %+v, want Binary with no New", p, f) + if f := got[p]; !errors.Is(f.Skip, vcs.ErrBinary) || f.New != "" { + t.Errorf("%s: %+v, want Skip ErrBinary with no New", p, f) } } for _, p := range []string{"bytes", "lines", "big", "huge"} { - if f := got[p]; !f.TooBig || f.Old != "" || f.New != "" { - t.Errorf("%s: TooBig = %v, Old has %d bytes, New has %d bytes, want true, 0, 0", - p, f.TooBig, len(f.Old), len(f.New)) + if f := got[p]; !errors.Is(f.Skip, vcs.ErrTooBig) || f.Old != "" || f.New != "" { + t.Errorf("%s: Skip = %v, Old has %d bytes, New has %d bytes, want ErrTooBig, 0, 0", + p, f.Skip, len(f.Old), len(f.New)) } } - if f := got["limit"]; f.TooBig || f.New != "z"+limit { - t.Errorf("limit: TooBig = %v, New has %d bytes, want false, %d", - f.TooBig, len(f.New), len(limit)+1) + if f := got["limit"]; f.Skip != nil || f.New != "z"+limit { + t.Errorf("limit: Skip = %v, New has %d bytes, want nil, %d", + f.Skip, len(f.New), len(limit)+1) } if f := got["small"]; f.New != "after\n" { t.Errorf("small: New = %q, want %q", f.New, "after\n") @@ -544,7 +544,7 @@ func TestDiffRenameAndSubmodule(t *testing.T) { // TestOpenOutsideARepo checks that Open fails outside a repository. func TestOpenOutsideARepo(t *testing.T) { t.Parallel() - if _, err := vcs.Open(t.Context(), t.TempDir(), testgit.ToolEnv(t)); err == nil { + if _, err := vcs.Open(t.Context(), testgit.ToolEnv(t), t.TempDir()); err == nil { t.Error("Open outside a repository: no error, want an error") } } @@ -563,7 +563,7 @@ func TestNewRepo(t *testing.T) { dir := filepath.Join(t.TempDir(), tt.root) testgit.InitRepo(t, dir) testgit.WriteFile(t, dir, "a.txt", "one\n") - r, err := vcs.Open(t.Context(), dir, testgit.ToolEnv(t)) + r, err := vcs.Open(t.Context(), testgit.ToolEnv(t), dir) if err != nil { t.Fatal(err) } diff --git a/vcs/watch.go b/vcs/watch.go index 707ba11..4c75141 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -2,6 +2,9 @@ package vcs import ( "context" + "encoding/binary" + "hash" + "hash/fnv" "io/fs" "os" "path/filepath" @@ -194,7 +197,7 @@ func (w *Watcher) relist(ctx context.Context) (uint64, error) { addDirs(filepath.Join(root, d)) } w.listed = true - return uint64(s), nil + return s.Sum64(), nil } // untrackedDirs returns the untracked directories, relative to the root, @@ -221,6 +224,7 @@ func (r *Repo) untrackedDirs(ctx context.Context) ([]string, error) { if _, err := os.Lstat(filepath.Join(abs, ".git")); err == nil { continue // a nested repository } + // A directory that goes away has no directories to watch. des, _ := os.ReadDir(abs) for _, de := range des { if de.IsDir() { @@ -293,7 +297,7 @@ func sumPaths(paths []string) uint64 { for _, p := range paths { s.stat(p, os.Stat) } - return uint64(s) + return s.Sum64() } // sumFiles is like sumPaths. For a directory, it also adds the git files @@ -306,43 +310,31 @@ func sumFiles(paths []string) uint64 { s.nested(p) } } - return uint64(s) + return s.Sum64() } -// sum is a 64-bit FNV-1a hash. It does not allocate, as hash/fnv does for a -// string. -type sum uint64 +// sum is a 64-bit FNV-1a hash of paths and of the states of files. The +// sums stay in the process, so their values can change between versions. +// The Write of a hash never fails. +type sum struct{ hash.Hash64 } -// newSum returns the sum of no bytes, the FNV-1a offset basis. -func newSum() sum { return 14695981039346656037 } - -// byte adds the byte b. -func (s *sum) byte(b byte) { *s = (*s ^ sum(b)) * 1099511628211 } +// newSum returns the sum of no bytes. +func newSum() sum { return sum{fnv.New64a()} } // str adds v and a NUL, so that two strings do not join. -func (s *sum) str(v string) { - for i := range len(v) { - s.byte(v[i]) - } - s.byte(0) -} +func (s sum) str(v string) { _, _ = s.Write(append([]byte(v), 0)) } -// num adds the 8 bytes of v, the low byte first. -func (s *sum) num(v uint64) { - for range 8 { - s.byte(byte(v)) - v >>= 8 - } -} +// num adds the 8 bytes of v. +func (s sum) num(v uint64) { _, _ = s.Write(binary.LittleEndian.AppendUint64(nil, v)) } // int adds v, for example a size or a time. -func (s *sum) int(v int64) { +func (s sum) int(v int64) { s.num(uint64(v)) //nolint:gosec // a hash keeps all bits, so a wrap is fine } // stat adds the path and the file status that stat gives for p. A missing // file adds a marker. stat reports whether p is a directory. -func (s *sum) stat(p string, stat func(string) (fs.FileInfo, error)) (isDir bool) { +func (s sum) stat(p string, stat func(string) (fs.FileInfo, error)) (isDir bool) { s.str(p) fi, err := stat(p) if err != nil { @@ -361,7 +353,7 @@ func (s *sum) stat(p string, stat func(string) (fs.FileInfo, error)) (isDir bool // nested adds the git files of the repository in the directory p, if p // has one. A commit there changes HEAD or its log, and the directory of // the git files. -func (s *sum) nested(p string) { +func (s sum) nested(p string) { dotGit := filepath.Join(p, ".git") fi, err := os.Lstat(dotGit) if err != nil { From 301b5984cbfaebcb41cbf90173dd1a639564cf2a Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 13:28:12 +0100 Subject: [PATCH 088/119] docs: short guides, and new screenshots The user guide is the steps to use rexdiff. The architecture, development, and test guides keep only the core points. The screenshots come from the current build. --- .asset/changes.png | Bin 165437 -> 166264 bytes .asset/search.png | Bin 104232 -> 104592 bytes .asset/split.png | Bin 158214 -> 159668 bytes .doc/arch.md | 126 +++++------------------- .doc/dev.md | 39 +++----- .doc/test.md | 53 +++------- .doc/user.md | 240 +++++++++++---------------------------------- README.md | 2 +- 8 files changed, 110 insertions(+), 350 deletions(-) diff --git a/.asset/changes.png b/.asset/changes.png index 1ee879ccfe35a879565c26bd82249810998fda53..c2450943ed1f17d8bf09eb51be9a5f3e30e35cec 100644 GIT binary patch literal 166264 zcmeFZ^;etQ7B<>$N@<}$aVyZ`4#k}ocXu!D?h@Kkp!mk!CAbqD3KVxja7ZZx$ zH~XA#pRxBH-x&8FxbF`cWU-QWWv#j9n)7*{`9`X%%3))YV?KHE1Y1E~TJy=1m&s3_ zJj;La2dZViWw_?alh;oaq(5r=Wgo7gn^VXwKmXNiogialv%|&HWS>Vx0Qf3;Zt(WmsU22z68rhkp~f7g%n&nNi*d-vBLgU`OD z{i}hC;ce%$f3|#n|8#@?pAAo9UcTUb`p*_~<^O*u|F>Cj+l*t?(@Rih@b)C=hUC^)PFM^p%gjE`bOUlvX3Nf8i}wS24byLW(_87LUWKqv+h9||4*+|l=aD?ciE;WvL}r(gNmyX z@r@b>l)unp{Ofxx(ZT|f%@vC^6Dl3$JN3Ienx@;-X;d8oDBU`$P z`WI#48ny@QEoiZ9|1zAx*O+Y8x|K7FvgmpVS=ub#zPJitS)8Uqad5H%ljp>oJDa8s!jeuIA>9afY9%|N02y zGvZI0JB)>Qn#b$C?hHll(&ya?*qm!?M9IdWmX-r=;b`xlN&5f#45{h7k5Q45K)pUg zQggi9t&*P0&+h{k&9dN`nF8>^F1!1`y1V^RSf^GCUJ5XQ_^H1bj!jR%8k+Dr_7keAO56xit5Rt!-8B`wD~1S z@^1$+h)zO6l2jjyiP;=Q@wA`XbhOwbQrn@~P=$fu-wVC@ea5Z{)S^U>kYE;A4VUOl z9(7i-=LKmTkN$g*f|Bp@yD)TB8B*N)ouBn7-D(iu9sAo5JmdmUESC35+tY-#-f-&JjonGEVGd)L?yZ<&O^Hqy4`IQG;SLedx8zsZt zK}V$jc9Q0I4sbizAi!_$_rBz#&te*C3x_i?aZL{mRm!XwYHR;c(j_i zw5H)cF{dfo;ub`8{*m{OjZA7JTfCxg75lG&{$D)rr}Uw}oU!1{{SjjE+6|jECNdwEhv7M;JSdP@_b!hh3%#o-2?d00l)fLP;e>Bt9-acBa zxsi-h({FCK`S)lKg)6z8yvg4DSme*`AN%p+$IqXBC{yzB1@BDsQ&5juH6+h%B_}7B zmAzwjCXtO$I2w;lV((XR9#)o z&c3{pO6(%&7vT3M_}ZZBBUCTtG~0kjR8-V1^v3c&+|*WHRrv)bCZVdmGsJnlJ(ePV z%cCs~h!HHW8ToU0y#~CuYw6(NvJ)GW9ff7EAsQyi*_l;Ut$Y%1A>@R7r{ivi}Xhp^TJqGyy7$zwLBd6JDj-aiPc5haC`UmtJ z)4Y_7iQZ>CIQ?TOz&w!K#vh6t^ocGL3ujoEQJ4|cG#8^iCV>5NprDFzr{5JI4c?h@D5Fp$YpH8Rp`e?ve? zg#TvFQ?&xY$-yzg%2cO67(&5KnoTjKlAW}(xDxabxDH<#ix+=n^&P)FbK{K<`~~e8 zb409ucgH)lGd7mp6R?v!>=BM#Hav=td*8NC@Y_Ph#l_1`+fa8BTVUDMk(WGrV0HnQ zBYW4_IR2FA9D#U&*<=DwNlSA*Jo-)dUz-xd^A89x^*n-T0aa~MPHY-)&c+@FzpSC* zu5l(QVqs#6BTooij42{Ew)ZM^0|NZqXk|IlBu;-8ecJfcB|dsZfHf2?TYb#eMrUej zdJdbsaRd{CNozI~C6Yf1=$eA85~OK125I&5NIrQeynmO6Q3zU1Cx1 zec=YZG80isikIcKf_-^Y+UDTrlM}Ax1b$xL7->I+@|2bqlKY^yo!ND}pC#CMzhPQi zZ~q-R4SqrG8^@Y179k;fWfN}k(&CcR>Cw}R(~o{HCtcdN2fGuMNJW-o20J_N+L6z@ z)>E;s{Q}i;lNCR{MYl(R`<|@XUmyJO7EQ^F6KRy@v!iCgXQXG&? z<$cT@zDG;#-V`O|Jhl_rVu1`8Ls_6^Z|Ij$9UTapgTd?ec9B1p_-8 zwY2B=u7WrU1hzN%FxZMaB{fBFVUEL~>2o)Tyg8Es=XvNyU?ch>!c|Jj(qCq~5dD1j zf|>Q=;)pXaz6I~}%mQ`HreY%_#Sf}@@bU4bT?&^om#?6YTp}Vv_PHnD>xfuYOZ}4- z(TzNEOrdj&O^yr4)ZLFW_B(;_4kb3w1@rRy%;|3|&K&Q{3?5tMbKDnp&dw@o5{OG9 zxDSH#568*uC04y$;x`r)>$P?HyAjkO+Ld$B#GF>~$15!%7p^^6u(T1YG*b@^FQ=Hi zyjp!W7YCObw%R-Ai+x0BL_lyn7^o(8yV}^**-3bOj97@3wN#4c=b=5X#iqc*#A?&{ zxIwTMz@Jz&S2tmoytGiES&;7)MZvCE!u_MiNDXAu*w$K%nt|M0DwJ!XBImPq0y&qK zw^em!Z@Y=Lb&M6!&}u8DD03XxxeAc0up6=ubP=9<3{l9WBWB8USVl>A(oaU{j8o z8U%q_4>xG%yxF@?_YiS9Q%m)zCwLogF4=i921&@_8ICjU>J+^>jnTPeeZQyX72;k~ z)+)VtAn51@U9Q;dfLQNFFueVdhl%h!oO|#0C@`G=;{(b)fcFTl5D3K8`NidBp@f_S zHSfyX8aHxcwB^tC9nHZ7ybh82%Fj<&p8t&n^z<}sZEq6=NVVj=a$XV_7x&tgG?MqS z`ew{gTV6dT<{{0HG$buIO96ye zo2<(zmYk8YiJ&Y{OVurP!>s;*lv2e~ju=Y7+o)2;kf?f%hsSaE+CJ;hU!Erw7w{j? zWxo0X`(1GkLP8Ts+$}RW*5(m8I={ZDGUj;lWPMp1Vv{$u_)SFqrRXIqU4K=H9F1Nrye! zLOv~ReZ&oknf8|VWZqXIos$n&`v;LXevfzMaH%ns-ApkoUi@0W=FdEzW&6{Y?%GP=>BUy> zF_3HbL!R3XYfY!Ga9=F+^ z`z9q45G3K3MX}J)r9T?=op7_WZ`X9d2}^sl#}rydv>1+-8sQKNFlQdTjZdh7T2y(8;PN(BO8^1KU78n<3gn^t$9owpM;*K3wORnK*Ii7ma?DhIbpOOJgGiUm) zYpYS~&LE?Y3xK>+czWmM+8l$+Y1uz_huC788UUl+i->4pW2vwC4ita?u&o8Bc0;l% z0nx>M50u-Q4z6Sl88lhx1hSL-wnrB;LJoW=2O*WeU3!=XAQ1QFFUF%KOkG-qT~o${ zfC;TE&nQZr4d4WpwUm;o(n*0{(briMWh}Qn=J)RanEX@O+K;$Y23~tb6lI+jJ})Q? z6Z7(NAMyfW8SF<0>04@#j=Qx1ahh z$munlcr3-_o5Iv$P6*eDqK#v}BF@?y@m<>TjUFGGwq|G^~rCB9m@GBR=Nuo`cD=ge)`b1h5QalVfK@O4M1d3p53&DiK2d~4^5OH?(6j_@!6(f1tca z4E5cAJkSrp4|tnj{XM^V?|~W=w+{}aU?M9ZxL2kbOM*IkL_`FJgv<`?00vV^X%D@C-4-Gwhgs)zvRjP@%c%tjh}Ekg+{#i*)stPCT#!1dbw{}bolj}j3^(VX2|b5_yfV8*-vn!vh8)0&@e-$N-}g zEvs(H1s_aWagP0pkbIY?8g7g8{1rr_sFWCzQ{GsOrwN-HtVRFTK)Ml)JAjnE0XM#NzvMEt?^?hiyNF6Q_l|9pG!raN8Ylwc2g^ zQ)SMXqA2Ki9xEv@N2@3qa6jHqB5-dAU1ircSD=em(Au-(?8$f_&u? z?|h?m+)1}xp>x_LF8z_Snm4ESZYeW}e|ylA;ASgPj`dHM)zkilXE~~RMtW+urt?49 zdFg)I@luYA!4C|Q12vxYEe)}khDwx6E6Q#4{ZQU=xP4~tyRf(@?VhmYR7w{bw{J(K zXly3|b!?T#tq&`AwM!l;uG*uD_RRi+UD#7!Fofea8eyrSr>7PoQ{Vk%5Zrk_QnZ!GKepU1yxg~^okZzM$H=JTx+s{rNsnuXrmFbecBI64 z#PMMFx)(f_H0ip;Z_ai2+eq`wPBn^PX<=z>%;)eU5bQ#OM^Tm82gmOXGvFPtYG`(` zTDxf6N(8a`yp>jS_w^;=Kd-K>h3Tb$`7k91`Dq^`9p}h>W>pE8eTESa`5PN&FN17wbqt({X6OSi9@dZBdgjKC)#=k*#R!h;*dDq(;#FrW$j|)MP zwJ$Wx2o#i+wU*VD6*nbg*N;SeeP2HV008<1(`o4p)s%09qaAsvnz(CD?Zv97i1-{I^Ow{|*2-mx*v`Af?hG#l23n5L zJIk#29`CHgsjCRz4{N;RJ%||LADq zibT#8W{&*i@@zWZ*Ur`)I$J1)9M_f@bC4--C!XL=uPPkeHRp4j8(s=+;voq?XD0W5 zNOh5V)ErFJTc$~94M#E?B+2C}{|>kpdU>~Yd5II?KDu%(nrM2L*D}$L98pmnJ6Y(C z5@LP`dSzf-UJ~q}|2ax5>`ZCHEd|jKa?D{S-sm{gvHbxu_l(*%!`YT<7Ysr2ca)Xa zt=21iL$a=}BHwVf6>APnksZP&Yh!i0+CcTJcvGCd#xyMw9pbCddS|(3%s2GqF4G6t zao@Ug4!DdcG04bEw$8LH!(2aws8W{HA?B|cDtwI-krPPCdAVb2;LjH%@uu^!-RfWY z^M|k~{ox{Rf2N2@L%I3XlCc*a) zXc+9NHEB^%F~tO-rX*QD3?e>9HX&(+O9NOWZkMYrY!PV)Eqwz8A=PRw!}GJVY(7h2 zB9ycF){~Ms`P>Jg+5%ss52ADp{7SE_Z9JZ4kX#7?y;`Wq=iz9tKO5iUMxqz9f7+Tq ze=i_U6^uk3p;ltEw$`xmJdvzEAs=j~sTXcrh!C_=9*243bltaL2)P|X)~~z@<{Do*30S{ ztG2c-rC|D`P3ien22ZIwZKUe-Zm}yHZV`BHPO^SX&n&nxB%~#G>$vTz#vbgHV{Gca zZ5`CTySJB-?Idzj(z%0*tfBS&^FFB#d8Pq-VV{rJ9=RSK9?o|rtj`}|P*>;m&M+0A z=#11tc?{5na*>HH=kG?H+C zxZJ3>ctD9>=Iwov?6e%lr~YUI@(#k|}h*0~}lPnedItCSA;jxP)wFGLx|Rj(grJtuPPY?PpjYa!~9irWq`{ z!B|B?ZWcy1zJRW$tw8J7ck_X@@|Jt~S!JvR#vP5>E>(9!J!;z`!$fzacv1Z*}oja*hc*6}IuG?HB(Y{)ME&keYTOS~)e{P4+RWQkmHKWDPq&c;V`-i8-5Nof*r zOiXEgU=YQkHj8WRgDpq}F_AJl(uSpJqBdZ)#&hti&O7D|hl+;_>2lkLm6WjR4exHtTW0 zEMzlDNixOUh~L$u!Rvj>ln6WK@Q2~NJ zfq!aD-!O>@giJ4bRT$c#y>HV-medpOB9`V>r8nqp)i7@MWdKh=i@Qun`=+?##k{UUYxADz zAh{rIXBNC@Tq@yJy_Kq`8P3$AZH&kpc!r#20}bijSgB0q#271S&3rp!d+lT0(a&AW z5l(RFfbeAmAlIbm%cT6i;uyl27{!)!8ykHPcyKXPUZC>!wP9D{7)gR3NqBw|%sZJ- zJ-vk@X#kV_feRd{G2rQ$vLZ zTl}_AC$i_GuD9C2wex3qSrFkXJ2YJ%Dw@<6!Wo|w$3`s*ofrIAQWSv%PCj+EN2^@d zaKRPH>~8ftn|_kTyQYpMgo0hN7nB2`D zP@lp|&6e^Eo&AbrMIdIx!ZBkKcZFt`KP+>^$pA{Y^sDyvl1d~a;b9du#Id-T92jHHALSx z{yIpN>X!`Qh;cLjsOoll%H;#~`zq-t^dx0XB<=j-ynwDDL~Xm`*;Gj_hnW%+v9UK5 z0YUJUn6JOryx7I)&;oE_Pei!m(!u4p!kWOFp9S;iuGIY!{_YVy->^7!$3`XI=ip)V)?)~5Rs(-~%`}z(cfo5SvO-K@evUbO)VLtNaCbu()S!Zm1L4cQ^A0oi}N=Z}j z1yPEQ*XChfa!Z=6ro|s!IiH_|2-L3}i`};3P0toi43F>IYLQm_7FAU9B8VDsVy|-J z#dMwVrVROxzE&yw%qL7!gvTMC3iG+2FJ!NFZAm9kb*fN;kotI$fI(JMQ17S2D9()X zPR&FLjhKMOf=O(HkI;<5o|{U!j78irUZaSo}$EZjU?T(k=dgsWJZ7zf(l zu6w?gM*9DLwxG;aG1+Au?eheR%tiZshOt{iqvujpXyW3hPuh{)xIkuXY_~zlD1_kY z#re&=W!&lZMHN_C>6(vQSqkzYt;HY@MTTT#7Tmra4XRi;c#=VD^?`y5S`tw()Dnuz zw${N|8?>{av%9*ff2d{LfxEZ1zC;B26}jd!&@b}rS|g@6l=?r`N@}~i^;MNue}%Ck zx-|2P@U6cbO2jgy__AbH;|uXGxLixOsn!y0=b_sD^N@C!7oS6|)^ip?L3xIw#+pc$ zb*ZnRgMI)qJTkxppWe{mAOczDrV`*MESYpC3X3z%$}$QFPYcq4pu(812cd>*N{CI~ zVmw=Dww=Q2PXe({DU@-lnkb`EX#nBZiKqcg(V9TazP(ruGs`P+50*?7=He+CP$4 zKeS?Vap1>y`6)2$>4kLzXF(V*UcXvdT67?s{6Kc@{tCsWXqjp0^PHOQ35%>BDrs6s z`spuh3+jqY0^CLbiN=8|BUe1;B8u6bgmU%+d^REOcD*~3x%8b)VY+xq?sj|))GszN zi?3QywCbJ~urBm<80GC-78VvCe#1=O`G(Zs`YI^_5!nr* zQ4MoS_9i-B#HiLs?5EjGpL5?iAs=7Ljz{h#)ePYo|tc~p_b>F|M z9hOd|gM6WN&96FseLep+LVu))LoIHsWm4(vYyt`@PXjUvJj4DPzQ2D=g8mFKuf1x= z?SZDPrRCXwA+Y9k9&2yUEJiS&q-qEXygEj)qpdSCeAR~-MfK(OA+X(_o3e7YoKH)v zx0A;%&kd}%iF6=*PYLaAU%SeA_f$GsNM;XMaEPpjO3c)955&Ga1=Ykei@XW&GcYmX znI;wY?oe4(S-rkS) zm+ziOeC?T&q9cdN$+_3RXKQnEhEPt9JK5Q7g-|n=lsv!SKMeBp97Fc--}nWtgot(C zc&6m%e<0CILo0f?75BOqq7$rNPQkH51L;?LJ()gGeBCD0U7>o9l`}nf{r7Q(#*pNH zJGti2ER2#hIq=0q>t zkTV*z((}O;^`aKR<6vbCxyrfv)+GZt+lx>QEjU@TMQMjX$M@_Pog6*Q=liyyy>1X_ z&9=GV+s-$nCXTF7Rrkwm1J|B=4guxD!oq9rqdk|_2b*Bqyg)1x_Fv&B)+d=$D_F%( zTHigvnOAW+>tszBOGgj#?78ss1<@eE&HF2f-3x2>9hYXqrXQRS=kzSna&l85U>&T6jv;9e1#>1=%OmV$j%h+DO8M`hsD3}dQk;Kwbel*zb3hvQ>33e9Lhe_3vv z4g@ui1B23y-vwA$JlN)-rz*0mx4Xn1bH&u7`dqF!M87QxQG%YqUM7RSL5)6^gKzS< zE`rH=2VaAU?t>=6i7o4DHwBpJm(SzZw(q2RyG^KreNNTU4hiDw2DVtu-Wc`(uUxGw z*NLB|LcE$^onP#NSWh&smP8Jic9#;KNXSSme)$p{Oxg9v;ZjQ;^=O*LtD)nst~NmR z*7%9g!!P@+dFRcKf+&R}e6elJss4rSW`yKnBtYNsV1IXTsU!OPD_pFX_1@gnq_001 zoTX#8FOGbg(s3W}=1>(xd4ZKz&fMk6vm(NTUP$jG1g@PmbV?(#;9$Gu>`1YF#Q{++h4(v7@8wY1{3O?`2hCZvxlQm&8>a{DC zHWFv+y(-A#BWFpT#edfv$vL)t)^XgXb-g>nstUO3adi)+A=y%kRf!E+<8VIi78hTg z-hz=}!gD<*4XWG*$tnY?m)JP=9IRx$g_Esyll6qxP|`9!DwAH|i6#z`I|Q-8*s>mQ zi@cz?j_d{mUqZ$36O-@_R`7C6dxBxd1Wj@x^NvC~qaBy2X5=aim))YgRG}`~hI-IC zRBm@Ed{$rYs#E@E?Hi8p1}TRZoraFi#FBvPB{;Cq(dB5L@+*kUHFon)dK&cs?1;{@ z8dDsU01cm}-Fs7&Vh??c_NF7*>ukG`*t>dt*F2?1Z=t|Q_F+a=P~vzw#^g4&?3X2O zku%Y&N^$1-$_4+5{f<9E(UZ_HSq%f%O9yXBRX`FZ#xs!3n)nE|PS3>|bgjFRL=AGa z8a?s#N%-W-*i6{x_31(EsE*b8PtzMkV5#nIsr!PhXNp&29*&VT_ zb>hH*7Cgl9doE*%h$xEe-7Ld;9+rYm#l~Os5g+f$R_*k<&_DA~m z6ia3sTX1V2>m6*6Rt5%oH`++{PJM2g6n4u|KSzHBiXomU@c|5>KHc#aD1cQWY6_MY z^1fB~vsuW+ggr24H2zS~64~_Fc@rQjTRIHk&uDF z4@AYoRE-wL>Esj?tgNgzgUO9H69K0sBryz@P5EuWX)_A`)3(x%j@uqn|I=y#=;Y*R z0jF%Cd|SZZSb)5n+wxWuSTA>H`>5GvqMf$Q|B%`B4#w9wa<_IRao7C7`QXi)S>vD; z>Vl~F@!P^uf8ndM?B*q9hwAEcPwkfB{RA;F(E|$dfJt?fg3mkIqTa|#TKeOs0&o$+ z-`_ugpP%nkt5}oy{<9E$j&{A$?ihFG{pJiuZi7P6Ok1dhp(L`za(n0f^x2-gDd59r z3EKmFvBJ8tYiZXYgSF{uvWeSxwxGM5U=)puha(|Gm{%k2aXO-L_xy4oNeOz#f6(Gg zf6RTl%G=YEm-03(s{5h8z5sA-bUaQt#D~33#ch}_x4urW4-DF#T)M;BUtu$vt!zyI z`j8CC`5e_2|E^i&!3lK<9 z@<@h73B7}HM0%yQ5hXib!RB3s)n%YwfSizrc>0z*&n(T2%d^LcjX2ho;b!r56cBco zj8g3BmX()pJRev-zW(F+^=*otSFF$x91hgQmU^uNogNmB02cXka;gCbb7&I2KSa63 z3)}1o*WTq55MkN}Oq%m&+1o1NG2FAR;(}{!Ya`xR)Tdtp#5mCkuajaa7d>q!r#a(- zgOpe31&@yUMLoDezM!;<;-hextlqatihB%cW7qFwSGUjb#B4=4o;N*Rn4d?-Si%u0 zqUo!wsJIFKe&k_pw(?;Q;eOSrXkN9^@)Q?Wr8Yugd{O9c1U70?aCfy0mY*1e>)8j8 zGcq)^Yd7Y&IzKM~XOuF)Oow(?jZ3s~Y8;X$yR$O0_MCE5zln*7kyB({(_0bk(0;4< z%+xbJK1$UXyfWu~IZZ)8L7S~gy(&XuGVS>Q?|F3JpDWi+7Ym$EGXt1F4TijrptZ-% zlrv@&0`>fsE$bfV69Ukkc_RmZW9d+1#h)} zh~Hg5t_0xMm)q-(s>+sb_1QM}&7Fa0l7@~403crM@`bN9Av6Gav+i~et?fBBL{6$Z z$a`D$VQrwqqiq^^q@*826m@IL%dxSr_k`4}bs%Nl;j(-nds+4r$J~e75bIFTsjExlzNI9EH!0YZ7zqr6g7)*1w zG?SIP%%J!~aS>f_RU-{4C{aRDsSYZis|7}xS6r4{WJnlhoemeAC|A1~L-2^I9@QKqwKX9;1X_sc7H@1sVXR1h;_`i$1@v~_3W(T{5E^)j-P_4UkrCBLPiw5%hSV=qy9 z!em7md;1LM?*>M|+6yPvLiH%sKT%3ANmIbP5^=)Azk)H|N=77oY-Aiui*H-GvvUcN zjQ>09!7rDe8kukRSUa6&9QMpJFY|axRoI!>TzEkBGnp7&*n(YxtjamULL!WMwctiG z&90A}uN0YQExSTh^Mq6Q<)w_WfDtxl#R{vfJo(tIg$*p?9I2C@cH7E1+(L|uY4b7F zqC&9~>gxJ}nF|NsQOJ^*q1r6nMlZgzjVcUKoukJJzEn_Bg29Myf8==)vc%90P5vEH z>uD2+`%bc9p6t#QmA6IiyE^MlAg}3u4mFUGcQ7XJMeywYjK%b{nb=Z;GRYK;C$h9i zNqt2nS15*%e6{b*$QTgp#xmW5%C(9sNQGMzl@w4|tjkaJIph$sC%ojgpTeb6b+(H@ zuR_1|2$W@jlJ+AjYafQNjSc*T*r{~r73hA;Q3qc~Py>dChZU8Sx^7Y_0%OhNwstf= z5D*f|=Z%eV_O#kew4X&qp(GTg#dKFlPwgkP~i{?^23P1x30BBRp3gKHAU8!{hdo{IoSH;EH_~?#oT1!h>i!Y~`?JRC&mqg1amr@=k6BV|Cf=M}XaU?44mEfu;UXqqM{Eu*RmD?n zI`9Z9%!VCWq??%9J%%7P$8$17IyFB_$bnt0Ojj1u++D z^Jn{oXxIc|)mD)4E>rEIB`zE3V75eV7<*m=n9nQ$Lv@_N` zxc+ET63R|cfT|;{(C+S05|Lz_BqpaFSv*SSdH~M1-L4n7sXp*EMyK(Kr3jA#!c>!i zl=RnAYMe}Lqa$K8*`CUj|3_Nnx4pT!=IMkp2}u0SE2=9cMH{jset3cFwU5f>l^7om zEi3@Sm6aQ^<8F{llxA<(9y13qkpmMf0`dv9o+PTz`R-)cs=s3vN^rSDfI$3)dSVe> zL8k+0DD|I0MPy-;Vz(GY7~h39He^LUgtO~ zXumj6WFhTn%}g~u!tGFj$MvtqE;H&6a#xQ&Qbem&Y0r_^SYi%I+XQ_msa`b{TzwV( z^(-}y-&;o$i`H@@w?V2d!4SzrkkoeH^k{T`d1XKxeXi@wYk=a)=(06+i_C)hISDm| zC+tD`d5^n4_|#mF4J#&dGMaPlXI!XLPP9OauwRUIjAwzW{9RHfUi>e%)f3NBe5>yL zJ>8=x>74YI7aVox$S1q5;=7ibg;(rCg8`?WN|_|aSLgfAC0)nUyKPxldc@j-my4(q zkwl^)7vF9p4{#N6ILne_K57?soP(8}X7+1N?Zwd$$Z2g7cWmKEAt%}w5&vaPjH4*1euN&q^|NU95NXHM+Wz_w_woU7K6NRB1iLj*aa)uJ;zEtY)2O{ZP9r1?{vp z@>ZF6ao_E<+)&+G{Ov)prKl>-CGY!))pA>4d>!69$AaN2(baRyec1DnshRWJ0Zu8o zAv-hp>?3w-P4}nsdFOVj9uQ)pglMI4$y#o~wd6dWf%T-r!lztjp#`P*-^^Q_^p-F` z*qtgcaD|qI?nUgX1Dkaijm?2-R)=r?-cmAqBsmrcQL$n}FJW8v_Rhoto~t7f-;2Y` zB-3xEQTsaW4A`9j%c<^rnH(MZS2?#%EA{8QQ{-3O*LRiPj`KngkcO_ug2`3p1lzN{ zOLZCl?dq00Gr-5Efyue@e01=htEVB>&RU)=-9a869yPbOv4kCns_CMOkdqGqKDv4) zVrCNdd+vWs@)vj0grZWT$Lk?55m8FlbAips=y>?&ta(bA5BW!i@SUB=*~i4{j>&JW zTg7zCLCo$#K}=GMffv87kw`i^x@YJZ+b|gT`Pxl088Zqfa*d6!bZgEFdAMj)3$&*$ z*Q_MK|4mCvJI+9$^HEn@oAAP2tQ#dMjE_cfA*Uw@-rb8P)w6RJM7CSXZ-Ja3yZ^S+#Ha4i#0Ffkc29qt#)QRnU{L>z*Fzn z{-{diMMlPNC9KAq5AS9XdXH zKP#Euy=j_DMI#`9d`CJ+%hG0Cs?B7NRx0njE71{Lu%O4Rb9{UT;ps*KsU+ZN?B0W#nqDaZn=Q>ys?qwa zEXC?X#p3FAUB#y&!h^8dlm8_j?&Ch|?^<+xH2GfS1gKlX-m5i8(dJFbK7csKtP#uB%>T&j z>B9qJ#58Eex@%IIF*gAZFLERjGpw*MyDz!0;mpIu7;NW6rlqs(7Uvgr;_=7LbrPO5M5MdbHhjT|o=X(>13m zAAHy`d}#4ZA zLB*9ZKA|$fI{+T*pO{E3pCKI85+qgFWb9l8IS=s%_J7<}Qi`7MmjZhRpjJBT(VzAH z*E^pyKJY(l`_n&<+hDQE(^;5FPy+&-Ro1lB#4P!TrFmcNoRz z)RVpnH|g;CU!gKVj69v9qOzO&M%>mm#VhAGs2}(N>fqqe^Z0;)6NmBFqYefuK>V~b z2iSl84|TnY&5|d?e?$0&kS=LN@UIrq%IP!wC+3HvVu^Bp)o%TLnOl4q`~Q9pf{W!- zb0>FHVZIW*HrGC4)r~-@q{fAYMPJ#ba%r5>RWnTF-jTb>yQ#%9wB+m*U#Yl{xqXMY zNOkDHCC@+fX*`m?|FqEMZ$a^+!h)m>92^`qG)7{K)exV`FbeJjimps7qN>zQvq03y zxMom~RUnP|kzV%en|}P05Z{!F@={Pu6I%$px9F#ggBiST&g${ITZX1aikW_9hL(|b zOk=Vs`~6Buh!8g+q$FaQ$^lFc^|q_;Dk!~ zC?|5KoCKNqcm~TmIXQ1mpKvwx6%nu~1gZ!frS@ojx^0m-zOlv@&`%S;coEjn$K2L& zS>u1+^&pxy?{ik@uYG-3z(~QuA|&{}ElT=Jy+-e;dsC%`-CVnkvy{J#f~>BI!qQA0 z5g`d>LaH+G+S)*fK4VE2tUfi;pGfeN`(_4KJ~{>r%Ap_%HR8c`Z@uyXt4_UsLv%Vf&%DVUWAA6>mSekg} zg743QRpX=R8}ifXdVb0KHb)p2yx(tDxqviVqg%`2TwQ!kTSXOEp@OnjF3YJrv+fbp zs{UY-^n1z0)i^0G=DdWTQCR6CzWMmH8##&pe7qMWP<>cW$i|~%9_Fl+_<&`Je#y&T>i9?517sRp$Ttuo^_51h! zzV>GV)zw2X)|#FQ7{Y&bX?sa-zVrSI3Y~xzZP+sdp@2|F7)<7_}G3m*Y67;&27q>98a?!-8zbyKP{%;nK|A(xv z4vTVI-`?sL1O=2vN=50CZd4GIleH(>UFz zMj!9JWxtNk)z6pfhJ%44HCJNG+2Eg#6Gi421jO`iV?l(o>w8#X%iFt z4xCY>`mT3a#$w~lY-hD~wBN4kON0=O&G66n;1ZAOAGC=JkUy0PeL=zn2*IGQ4JjpX$=4_cO1LQ`Y+uW!$|(;a7wy zk3AQc&!BE+bUSf&sr2vVlN%1>wmihlhI7b1saD&c2-&?Hk5_ZZGJb4hzL-NMr`8mbxY2##dRrlDFrO^tNQ=_(a!V27G8%bA3F(&6_hIjSj575;HqscI90> z46(a9%<;UPMki+j#*MMEcvw6!dp_!`B;+Spi88R`g5DoHJ4{S@eN$zHBIpOn@~g`o z4DmY6H)-$hD*L0|3Fdc5h@ZvwuBZ7-B-PBX8!mW5ci6}@lw?73uh)<9@s0iW(mWHz zI7(=5&uyE8iQN{WkD*euxr9l`a_ePYeqB=XzNB%@sD1NmRzW3!VZCB}S#=fWt95j` zsr}AGo{FaR2wbO>jE^U~T-q1&C1gN8g@4OOvDuXGDJ;@rsG3hrjdrS$1A>^(g>SkR zj`Oqf7~O1-jKv<77NwAs{^R!< zX77&OFI`>T0nZJ)8}{O(EPf?D*Z$R_Pch!-2;f!x^9~PfNrJ<)R@YUbQ zJPqbFp*6=Y9^Y;1y=Y{CMEg)s)(Gi+;~uiVWzlH)>a-aPIf>P6WBiZ;lN=HB==dDg zOat~_bP4M_l(oCLx)Ap4Gw+{{az?8z|M28;tYWVkYa_! zTh?YHxuENvsv35Wt2@a3Pj!^SU?Ez41+B6a5*e=Y^G-Rb)SKiy{o2zLA7zl+*w{za ztgu!N>`X%+5ApRFCX(aQrktGgo>vx>Pbz$q$&(6gHab5;4X2N2>$>zzY{=(SRdk#f zvv}xc#wJK3<3vy^X3pmI+nc?z+)n3w^%a9!9V23e@g(Kd+Y13fZKHJ0n9KdP7$-e55ENK-=DBIETr8#l zaCKuaECmX=-lE*oJ?j()`6y&%Zb$2Xrc9dX%mpE@EV(wA9&X#Deg7>mVH;CEpKfqN zAbuTz@uniD{&?r&F{|zphr~?~6-qf65T^%j$KPZHD&eu(Au+;BaENT!% zPhQ=-{?CX*g%>GsnIodc3gk1Hs$#OwaiGSDtr1~fE zI7C&WB4~B4W~H&Kso!-7g+7P6{7itk&-~bbD5%5XwRk02y6~5}z%N%n2lMF6;`0R~ z8Fr?3-%@$!@;w?cKQ{%v2UwZ6FAp^G^wEsW-|Oo6V>EURj&%)=mWmrnMcG1?=o|=Lhj^9u|WczKMml(iknB>V5%m4&=ipsMbYXX_HMsfu8q? z+1rEHQqY-2ykw6OJbx)s=s1)2lP5HHnnxJr!RM z)xaFBWeOkd&S>(1_amD5pcCUyOIca?O-8F_(>%TsCaog$ZENvpznEet`f&FmFH93kn4S&(SzQAqq7nBDz+ag9-cUPiuz?SB>1>Z2|=kn zuRdz=_zW$Y88A|q`CqpqGVKoAU=;&GskruYZh5fcVvORpP5Z z^%e$e$qzSfM_FL&fQ$-6zempg7wJq-E5asYeXL zdQX3PGW)%D>}&o*#t#(XeG;X{pIJoPA z9FZ5uDSw8J7(~{tH2EB;h6MT{1Vx}jC3Se~iw>>!mR^g{saD%B2Lyg9QU z-G<{c1ni8(cF@hn>u;P!MPNrG3@>G!P_U|{h-PLP{9+@{x{Rq|#WpMBJ-$%GBY6cm zZNuJ~@a@?hV*Ok;16INyZR;)nMYG%ZxnrB`iOl%K6Dy`v+5Ar)?g4o(y@4Pxj6}^g zN%6y{*=>~Sw?x6%lUzb#O7N*@%~n#9=oP5lrJFbya9tqFVRO)qwKPduoYyoP!sW#O z=P$e+inu6ASjQPhgADh>_@VLsojze|d7sIL^cNmo{YmN?%JT@cyiPUeGa+Sx4t~~3 z#6FkRjV`XFzlvr4q_FW=lbFJynWl{KX4L&QCejL6>3-DRVHLaDBMkA6t%XvF6%F!?gMt1!^)FpO3n^aQD%cTYj&^YR(aTFmirb{-tLKgme9(O>?o^u1l?*c!#5D`<*vd zaK5B5f1x}1<`Z(b2g+o18{IhZnp42I)F$B6))qOQJBoTroi73kYzq?<5DTFEGDz!P zkPaTf4<_-r*kN?k{d<9ov<)vf#5q2ed-`i;JC>F<2n^zt)vfTYg>EAPWcFD5^NPfIYLZ)5aG$X#bj%FWX32Ngw9XDgoQ z>KwYZudkU|1wR9UMO^?G>_S9+6eOdlXy@$y_xWg86fAgFWMIOJJ5534=Y;p-tMxNm zehC7#RWhZ=AGp8eC>J2}3U=0#v?n+j&3fL6HDtG-LWS+j&2U}d4u%X=;96KQXx!QT>(vRS)r@@5Z;LxQ3T>AQ5U4LDaEZDa$>L|7PhRbfVFI13Nu;;mt%^m;wxcb#%1E-b@~VfWd6n`pqf#p ze#+e*41!vjlioK!4z%>vW+u}hv#VsSyLxe1Q-%aH|CI z;0IGKjYvjo_{-^OtF*9muYQL3;n7@4#dJwp8+jwgwYbzUlGtPF#hJk{G3~b48e|LH zj6$$2P*YOcz*Hh+S-AXaPs4T16{}j5QAAY7+8SoWWs;MXo|86=*x0h^{|Tk4;y%eC zDOyaA%*@KcNKMh=Wtbwnd(4i!mQ&}zxWR#n zlKQAt5aMR9~_P&z;=8JBKZDbDXk>lptoBZ7bOn zA?K+6lW}vEy+&9Jnd#x8nWfj$TRuzQVaK*mcZ#JvH}oCJ1WqX>c{?|YtjeoKy{XXZ zrZis7gGc*dnY)@T?NgM3j#=Sc*&H;U0acYpkB*zS6T1Y^`}U&P3)$M+&0;rS(gR<# zK4H!E-c$|w3{=@Ru0x%9Rv zx)LDefgOGjvnVZX-Z;Q+{BrkFdpi}0X*)A_-@?W$URG~)AU%rMD(Z zo7aV>^_*5;0l6!<%dZ5s3WW29t7aMo15fv8RD7xvKbIu7)LOT%yQzpiooiQ)#H<4J$X`dE8|&LL7%V(bAX;9GiPRXY3TZ2BgZA zpuyp@(hF`zc5PCM)~N!+0Jer0=2^cb6G8MmU15#uNLGfpjnwdkQB~EZrqTR`1*{N+ zULVJJpM}=jHRqKwjT%XL?#Oe2qh{qu9wy|Z0x6< zy3SA-e2@zU5OC>&&{6yG9Cu|HoI!xq4la`K^*w$`@Cgid5GKh+T2WoLyK$86y>n0h zrd5HcpMIG(y>S?!QV?=_>tQP~A1Py-(8nww{J)x&cg?w;0=8-1z@zf~I3SO(s zc{nw~7~PSW zq#w#U;JN`7V(sxFMWv*jc*OkDXwlkc5;gL=VPWa$rwBSl&C5*?C^Stz&BAq#(3l+*0sL8eprfokH!O1)sfS*n5hgC@ltkL6w@jF^|@@gXfwT>eerQ7 zrP!s2(R@(}yK7g&jV<>*ZEnfs^^L{~3xc{+B^>D>gRdYSvWnquA&0o`)jXslxA1id zJ1bXZWx&ghqv7y}>pu?5p&4i&Na&ov-j@n3Co3LuW~XqV^yBr#Pjh2+iOVBQTF{fW z`Sa^JEdQOU!Mu@PM`L^I3Ks`?64Jc+W5~d~w#SwRGSx9J>!1>DGii+IVGs_OWEFEu z*b$X7@R~ zd4yRPsF-cGMU7;&==ust?^jYvu>nd71rd7ERvh!8uJL<6r2_kKaAweS>v`7pwMkMz zA=zaDRg_X;6455nj~wUYQ%d4mpXHv?i=eI#U}?~GL*0*oJDfUOFXzp%e;28Bz0O_@ z5%ipi>0ybZ)-;h7&c;1EqG`|>BSC)zQ1^Khu`qz@gVEINZOk-chN;1Jw5t5B%{LQU z@Yr+(RY>ly0Eq1~Ib{{iZJrjI`*o}hW6t4AQVkN+@j|(n1C5$j`9HJAe+~&i?6_UO zy)>TqY??ffae89pw|+pOCa;7uL;hviSWB`if+L|G8b2yavMtI;6#!=48sy_1;x$QD z*&@e^b()pf;>Y#F46jg_Qep+ru6^gzI6b*q9p~3F(Y+kdKkdt6jmQS2@irG$5Qs9m z#OJY9obZl)QaV{(9{lC_f+4li6o`tzelOyBNcFwg5fS(?%twdZ{2(HQO#4^$-M;DX zLNX6erw>BtnbP$0ofF7Li0$Up7unc$Fg4Gj4*A{%=r2*r6G_1> z!87FZlphD+ZRLSFG@q*@ze=LUubr(ufAFbAf333^yu4@BzCLX&kIiS!lNMYp%hH!3 z+5nV(vL5TlnXUe6vS!*7->IflZ$40v_7s*kaP23dxubU-g=cK3Txux2`n0~`nYGMQ zn{Ds&QZ`C4r|fKtSr;2OnHMYs8#A|+V$M4~v3l6=NRL|DdN-p)3a<~F+CrgTZavsv z`y#KaO>VwrTiql0uLV^utdN7!FGN-oj& z5{3DRY3BR!=N{tkECu+z8|8f*kuN`pr~5|oDiI-m-0PFheVhta?qfw!JyXd%6);CD z0B=rSN5s`&`q-#V^9|Ge5Qbv)Edq{)&dqrD{wkNL8CUwg)c33R$x?-Z!^=2n65HTx z*D~EtuI)0rVZC)ghL=jAJosd;PpZq1yt+iJ!&o+Xxuj#8@xuyN*8IZM6vDU9Tq}Q&A&jA%O(MWvP1k{%=llp~!53~IWY|e5tf<~B@ zWR^z>zdg1{rr1b&-Vs~$R z@h?}qc<;sEMhpdAt!$~-H^spV1|BuF&X?u+IKM39I=}8eJ10ji)Zqbby^m8ZWl)^;Y~3>ojhNbR8Dlq6rPw{q$zds)GHy+#%<^!c&Ya-L=0a_-#vK$-~{QMRb?B3BSNByMZv}egLJQ+!HTuwvl7qc_v$o5HMcVdhIdDBFN1Q3DD9rX zkEr#Cs!*3A-JuG}qW0rvgj2)%iSPP>nXpxm7j5;``<@iT$MUf?9O7kfhaN;lb?ak- z;T45pCV<&>-g4n1K)z9D?3Yi6Zu(z2V}6m>u?d|et<`OA&-s|`+}LPNbHMK}dpyPK z!sh^=+8sU&k6~85^Tg3hq3GaLe5+Hs`Fwp2D%xwzVEkll zQ$sN^d9CYCXvw73s3w}ZK=S6sAK|g)umaR0Q*PD`isZ)oi)hl5BMX*N`kxqOGjl#&*Y=xoL{g>Ev$*@)_r?gJ0!5blwZ9)vJv3J~mt_{l;V||X$LrL&ZhC%1fD;4JwT~M2;;u{mW=DU9nr-RHhYyv8H9l5U#;mKQ3#00RQk<>AET&wtlCS78Vhz za3XZ6o-{pubG|^tr&QqJtds+?TncCpjSYY6%vHBu$lvZwog1Yf5=hg;tNDDnC^i_+aKND#X)Qw+f*#h*{eHKHM`BUT08fCk94h+ zC{?UD^~NK$D2hadc^tH3vRyo7;s^cQ_b zTpe@MHa(4Iv&?0j36%>vKvH=ca=a3?W%A}u#m6Co4;Jwi?{L*Lk~^jk-!;i48Ye5v z^cqBV*Lpkbc}=a=6-el$2peRYXe&0i2(oZA?U#_n(9F+%Pn>!5<(0_k<>2H^R{*9F zjh4n-?gvqNW6sTPR%A0zvr}qIErR~;H_G#u`EM=2-{%SNQc?prvxmyv2#GkV)u7Y( zq3OvMX@fWbsg_FVqhU`F%&2YB&V%3R2mdve4b*S~Vi64&O)7awA_We}a})x##qXc@ z@xlbX~#A3yUf4#7T^9QzVwFM$mc&q^Hho%U}o)C@S=; z%}F)V&fO_<&8_xFkNBX^gu7CZKOwqkrd`K2CW>MQJLgBv{hT?8Q+x9sia<600BruZ zq;z?>#Yao!D+Af%+$sRAv{jO2Ro#_^)<6}DO^W=qncd{wDZ^BVW7YCV5fEF8|!|e@M(y$^*Oqk zIzC~@qW@B+DnV|R5k6m6asJ8t_sW>>&j>k%{>K}oy4B5)L`yF|2Zb~Z{0oy#*4K^x_o)&@NF%{HOOJxFD{@iYWrFU6x}h# zw-pnD#s5HP@R{WhTBBGvR%yCo7LLpPL!|sh1HWEZOtr8fa zuyWMyYgcsWtE!GyMHvT2JA+s9YT;6bG92p)l4|;Cv)vA0VSM!I=Msvvaoe7`vSd5e z(}>^%_fD%P(YAV8SRI`oNN}_4exudw3QE-6J>9Vc0|>_^_&x65|4PsBU_B@)3Xbd5 z)lGB9J1lm*>QyyFo&*=@HMAKyGksg_{44k!bbBt{`tB9%k@S&(%)=V_j~q!JmEA_TCGg-|!S1LU-FcFRA4#=gav( zy@ZuIVJR{2iGtC)XDU$l`wW(ETi!-tA#$bM~WB#0B0oeN*vDF0EM6 z#`e)f(A4BkdE3aWa~TRh8OhN>wobDhez7p;SW+@+U`2I&zUE6U7~j5{l*&wu~6vx6(7H0CBZ z1AG>3VXt?0cWtM#PsR9w!JqmqJ0A|aD^HXy9q;h@SN{|!hPvp|Z3}_4z;6(i#Ki&H z&nw%hkIn7pTJcDcC912-uTpl&Xgb5##lD!){lK{h@E4LgBhDscOWl#DV}KN%xVnIk z9__Dpa)R{kZE1GW4Mn_LG8q_z)R0HUZ6AME`HR!pOT5ziNmk<>hkFLxjRowCmlv@Z z9)u9!SO>7+bipp?MW?PQ`J{O>SVu=d>v;JsVOTTrDrCTHbs|9Ol&{eb)T^Fo&@IFv zy4q>8V%?R0*e1*IJuGZ4%Ob<1ASB=ti|f&?nfiZn_Sj}i)CaM3y3`hoU6?1`(MK`LPzAr|5si{ndcpm;6u zdbv+U>pApV%5Gs(#x{#$SS%6x@#vIl!FDI;ecs$5gbba>5%o>6`5Mdn=3g7|Ovs6y zqkCyDfI%ThCY340Xo86>&Ff-kHsf24o+zc-gPUL2NmM zBeglFiDmmym@EiXu;+e+k85A!>Y~t2z-9cJBBX-A_8eKCE&>Kv(s>{Id`21%RV zm262LpBc^+`e@W39wk63yR=Lt&p&ZfreCbypC;%xH`i!kuXjBubeYI+L23h2Q_^zb zydKIPBeqBX)WGsvES1-JLDy#TBWp6H5K**DPhRj-6tn0#8M(EauCb>hy1@IUtKVYY zg{Aih_blg(>bMM(WJBFG0pLns5OUq}H0u{m%6;Mt-i!ufTa z_c^z6xL-28oeUppM-DRZe5F)ZuSopDqs^HUpZAM;{3pdw(sSIf=`r(dSV~>4R9Gn+ zD~0Y%`R4*Qwk)4jfRK6}a2D0}J_`B`Z(c;RHLP4&u_*FwJ_4*x+dz^W*7O+3o!61> zo~K&!YpLQ_Tzgj)Bv1R*Fdn)21=@?56ss#-K*{0@6k8r^-CKodz2CerQgzM6MXzcd z;qt_)y1Mw-+<$H!cy(KKf%7hd#+&Dm*r;Y1?GmBR_x(*qnKGU;#?$l>+q3P|1i;w? zdaUwVWudrI5(v9QF4R|8g{C`lv#RkX^G4V<&_4$eMYt+cY62+9V+Hyu| z)FRQ-kpN0Cha>&ATevX zg(3}&ci(xYid!HjGAz4(K92l2N}2}lPpiU=*6^v21P0oF()7}vzEa6{>Zq|7na~6Y z2LOj#$8}g9hUVMBY>`P6F1OhP_04tUY;Bau54r4QjK`7gKO`lmFo*&VSz+bNIRelX zB}?tJcqP4*JWvscyE33lG5kXkvn@zVB?_^%h27<>_f1#n+u}TM#HD(0NcDe2YYObL zdu@xkIw)$T0!?I~s-VEVk(_*XHNwky-N&tw%ckRO*`5n;xEtNX_VP8K)uLC^yw?`S zdm$i$xzzW*Nh?knU?{45`aK|F)&o-(`>9mnxztEZ<$3wTe22>&{vymmMZ+B0l(_?F z9pl#22xPC$o}Qdt^~Km#^G$n%=cqXjKp|HLt$6{Yprxy+hwNgdrHJ_a7-h)%6V_Q% z!mw-RI{{p(1^Vk)3NN3q+^3!oepwBrOZCGsXpk>7`*>6b5wE*kwXm#G1aL$wj1DvW zNJOmKr?pL@r&Qb~)#0lV?@?( zgc*bKK1A6aTXsZx@e#kUunAFrzY4%`YJAR!{NvHyI?_jSV(v_hUuqf|0Q#AN;^HIn zV!q$9rFFJb`bI7#qbhpK318V=rRYTi)d8{)0NoQZ3>p=h6Y!{rg%my7&4 zdFBVP;kc;*@XhCT-*FWq^7B|N%$kB=5Qk^YNS2;%=3U!a6cMS@P5ar39a1eJZCD$* zKubX*Y9eF#BMWv4ST!(kEl`uM@I%-I_jqdw3 z&~$NJ`wT)szcy+v=cso7YmaoIxHuG@eV^srlG_fhTUYipNPivT=$P3)kge6bVa`W! zGEHBmx>mCNls;e}SvxskF|?G?Q=C>`>ZSY^g+7;^ow0`>v{AaE7_@PtPm3Fp{yY95 z0d4vg7jRAJGl=LLByDj_{w^GR#pR!}N37I6HbMW00|=OYMnTpn@&x;(0#SuX0DR!F ze^1}3x|b90JvRP(`6}vmYT=QiZL@SZ2LpI$zd!0xFFnCJYC9sQYjHfSU zEf9+icn45L#HQP68TtEr0NAB`c{_4wYT^&IDbG&-pK zbfhl@$jwp5Ix~}%sL@gmkEJ`>?MEB}p38aFSU{L{ZqT^~Qi@h-{Bp1G5clYeCWd(q zDj@-kfddaO1mJCvcA~V_qZEv(PD$rL6?} zPW)PIeO3*q!yEPByrP(*mzV({ERpc%JwZuC1i#Nx<8y_HHxguu|R&xQE$R9j6 z(a0Vx#%8L6Kd>XmvEBNJfL7n_O#EU#=%upOo3C_4qB7Q#KAscMyu;%Vh1BOMmR!|Z z{q#*8c|&y^H{c080@+nP(f(sF1tVzO4SjaLg>-6vZZVjvm8aW1p)7e=37|;_@n(}0 z^-(UIvKo;(pJJA6zf8y(^e_VV>QOyWMjl5n8xrlf9S)j`KMl9*-JIRcmNx%Ut|FlSb8B3 zo$6E9bx_IN=DBHcs=sUDQQ$zerMCy-yW1D}>x#e|N6U8eJTiXDF!9DKd!vlr7%KP` zfSzXBB2mcp<%F!y519ROHGrGgd$);krcyQT#2+CyuSx1ipV{=DM(lZ3mNfiWw>@4I zYShvL_e!6MOn=g1OPN$vYrOFrL}L)>ps0X|UH9yz4^6*BDKHnONA@lcs=wdZbNBg9 z$Z4r7fbHd{06>J_Kqj^Y0EbxaOb5gU|D!4B6ds8w0av9TYxl>|37^@WZ-8;>nHDln z-tP)Sckw0D*?g+uMP6`KwB@w+p+{M}%d!#(t?{CCe)x-aU18iFG< zBvmkMoEi|xn23)B)A_0I#c?#x9gd$-L$|50%FMa=K|1IGX$3usQT5BIdy1CmjRojm zHfx%~uNTSWOUJ8SPPzKCT4I}?0*VZNzW@y5l(itLu9=A^T!?A98)b&MTHu}@K<&hv zn~!46TKn|=_aH`%8*8C^3TJ$-+boBKMNRoALb%QjAoZ!BD%$03Ipp-!k?^2ESchem zHow=AfrJgWxPPfH;e;d(L6opiQDaNa%Ll{OBag63rnF(MaJ9d>K}J*oBjy=9 zmlD$fNrP$i%loI|9>vtwqgLQE&?==0A3_5WN2cW|d@m=#VSUelcDgQr5??(8wlJii zp6kWW$=qs%RgquJ!_bJZjRKm~&}+D#+Iv`|*i&vRQraQ&-Sg-_faj&9W#N?T>HB|A z3sKqF(FDluU5l7CH#96AA&(5uPm9?Wzpj%#S)(9lRH;J{lWLHW5}0UqSb9OfEE)e? zs^3`njx|h03d|D#pvs%qky5E8FZc~0Mb!e8`_Dff0I|oxVo_6)SD03bo!znd^^5kO z6HTz&X@a&%I{O8s?k90k3-ocsIkdTFyYribb_zO^L(k-?wwzvKH z)3&H!S72f=Z%mISE=h96v?nt(>x?9&)?wGlGg@+h&l@zMl=M8D7Xbe=+n4@|k-SWc zGhYL=ye6OMaa)TUh|g?f(uAq;lEBuMcn<4Jw ztEe1VQYE9VlDROtQF|bD-XU7!)zscBIzP~ zI6N14#mdl|tJsVc+k(mU)6t|sqrFej%qfPg09*QXTim>4EXjgK=k)u3Yf zDd3b{lHF&z@#;0Mtb)MK#8!v$j3IY_)rnamj}J|U?DS=4_<>tTKYYgSThh|T{jFtB z+V@@^!fz3M$DMXA@#gLY zuHCU~EOw@cRCSE1G#T%UprUjd?@3&^-=MpBXM+rH5;f@M47%Y4&4-4vP+or1n?=XM zlE#SGv#W#a&tYAdA8J4yqzva)`m^Oha5^`5iZ}kq4=(WU_yIDuu6MBZD9(4ITi=4O zs;UvXoI2}vaK?Ybq%zrA-GfZOnX$2V976rp;}$b|4y27C_1be=Svgu$;tl&r4shS5 zKVT~pqBhy*$nV|Ur9KJGGhnLzrR{rLV#2R4b%8Fro(HCoFh3NYBZ#sQgT_*pSJ-=` z0F0ZUBQlQA^k^U;^EKipT+E@oMFqGD&Ol<#))j=TJ{qci)%fuEVUAmg-JCIH*8G0I z3MMpJl+H;Rz`iEHyL1w^YEL5%Qoa#C^FDlqovN_GtD>QN+NwvODCYjr!K+Bo z@>{(WTTvk)Ovt|FA1q}HP8SobQoA_08S`EEttML>Z+gR18u1_i-X|nd=BzZ)blC8S zc?A-le=E(Jg~fI&lWj#CfmfL{KG3Uy;PdV_~w& z>8!>>T3cHyDW58b*-T1iiC6)WC6QtZ4>D$2jzr~EddI9{J;c}#8=>jN*?*vFCU>;; zaq}Cm2kRD}1j)@GWsb~B0PmJjYV=2F^Xm|Z_4Z`kt`@^*4ci}cKcW34;jz~Fx>lAT zpi*I3P*|A|`e*(MlQHvO^-JH@$3c?R)YK`W9V;y*@(AT9@a-(eU*xj?rzqR<_kytm z#sw_lPk#IONq-aG+wZwu1`j_! zFj95{vx5Rm1pg~M$@%(rW=aQ;bT}{LR}ejk5v@OKIA7}hXCmy+16%&~-FIqvNf?xu z7ucrvJo=-ap02Y;qe5P3apBg+h5)=`c5ZcEU!Nj7QBVj(>flPrCEfy;_9>#CY~fP}+F!i0{^$I}xVo6h`fx6%8iX8GZ>03&DAam-Eii@uR-J*zE?0{%Y&}oG5HTy6PjEr}7x!Vb;@9n>%`* zFUe(bDhC5Z2sM?p<02C~!d@8ArlUr4k1s#HH&au0#c%XaBLJlE22#Xgjb#^q-@_(Q zQ&)53GdTVa9>Z2PKtxWn@ja8py=?=BFSJ!NB5P; zKwxMw7J-5N(eG{fdlBCHraN1?X?A{oARfhNeVEN7E^d%_k)w=ifK>pJ3_dcNmLIgO z4~Hpj@HxsfSsPe%&jBS4E$-aW#f(vvhQXRNNaSXLGDR#gEaZ}R>9 zq#?0iL=6nmhZYPk<7ra4m_T#slwVLWB)POS8ty#BECwv>`v5!0 z`1m+DtId>;mydTi3J`#M`l#C5m<0FiFCPp*8x{E>Tb2383pzku@#2C>GnLDokcEsS zeubtd>+F4^4L}+y|55g1Nl8gAZ%ga9{NiG>`4f?0>>9sXDne^-Up5&B;s;p$&CN!2 zG6X6BDYZtGfeC%??|zXlFqUISXxq6 z(dkX<%2z8`TO;KY1=wOqm>`QKRQ6}v_=Gc$mE&jqS{K=&7{W0-Uli5vu)?T4wQ16uC9rZJ3!WZ?TlX|_;Zxq0dX2Cvw(yIOCu-2?UIH=Ty;ifW_A{i_1hEm;%#s5t<_hG ze4@I)KLjXZmB+=X7xG>^U?D|W8M;p=C7V`_p->4m7Z)ex7Z$?i)I0klgM%7b>LDG* z;s&(t7Jf?F*$r2By=k;n)feh3bMk(Ln}VGp+&nyfF({uh*;?VY%NC9+Qz__>K{au3 z4yL9A|NU&x_vOi?R!6Ds6#)Y!v*MEeAdw90zYBt+?+z#k~wlR5mei92w zjCy)P-8x;Dk$Uzkh@)YjH9bJN zzf;&A6TcN`QvwSnDX_72a&mahe>yL?!0?~G}-!CpM-gik>99jURDS$O?`Tb{u)6)}0=;(^BXh6mCIs3%S zjBMs7)&zb?d#8L+>MM(f7q%479UUDL0U6}UALFE?B%^x#{L1`rBwob{15%e}#H=El|*ytf}5e*H3;q`l!fiTJk`;B$rA zIO_T>iG&X7(asi7it6mlg@Mhd z$hdL=DV!=I-lx<6iYCU2sVAm+#A%I2u#G-gI9lV8o8SnI+d|X#?}h{34L5xigJfi} z|1ttNyx6KbSRG2%J1i!F4cOI$b5$tkd#wxyo*VgHzKA>)oQ_mLz{CEEm5Gf@YJ(%a z&*=U{Oi?V@?a%8g=ftJG!Z7Y$Ta0E%o-9P=Uyz>VK7Uq@fwCSnB&j|$lV{r2|w z_b-NrEt>xD1LpuND>e4Wy+VZ7QGX4<&Y~+`>7suw)=*NniR(Jo+-j&|R!SH~9 z5;~14c%MFFK zie!A;zPQJ7lG{={&?5hyO_Dzcl7AX z!_|U9oAblZ_fS_#sUaaDft`Fm-T)e)CMwPB7L-Z_16c7O5a{Z6Qj)g%FYV$)t*I+# zMFIj>+qto^zSa-QjI&yqMMa^vK|Zj258h3lJ835AIi1R;vyndZIm^|tb545B%*@5d z9uT{_t4D@ZnIlfug`08#x}A3C4>-Km(eazTIq|wnYvwkVMtsSbv;LYt=TQ}~s=jS6 zV`ZkcB$z%16+H_*2CNRsFea95qNKg6`!kgk|?PpKi-YzK|WGe95 zy|4g;DpjpdLKC@f#bYeepw_2FTH8t>S&i#hKr+qe`grba7R5up{&;+1;&3$~A;AXY z-M_*V9UT?DLBHJ?T4Au&>^w!NK40qy7G{dQooD+YCbC+!{c5H}CdMzZFy4%21>WDw+2w~s#onjrka8|1GA z7{3A4@E<9MLyM2{g6dDVQ~53Us1H5dJqD7wL(&znBaa`K_)=OmH8mAwfF}O+e4I_6 z+@@?ewEQNfr!R*CX$@RXkl|AvhyPH(RcZI{PIq>1Z;w`GW%(`1*(DU|H?9FKI;GR$ z=)|D{ZUqZ}AT`9r<^#ejUz`VXo%nA|OjPvrprx65Dk`JZJHnp$UjfEvfQ_jmg0@GK zH7>Mo`&Qna7|;F>@)`0BY|4?knmuy0dAqH8S9 z(%Qci&J<7VW>LF1k5ivuew<>^&Gmft^Roq`IDspb%?Ys_9Qt($yqDSc(F@lEx7k#} zq^_6OHEfaSv8By8Vpb$AnoTHJnUPpIUy?btZjwkWH4VSHNZKb3xa(3`alNYm9ZdTq zZTFj?x!DcPPsVh7Ps1wrueHb{Kdhioi<_G=i8)iYYlbhcmwURr8lW-EBv2_^xF`gv zp{?Ed@2(zy_`jOl@=ZCQ;7vtFOG!(M9G=(LR*#DYOU{hQVjBWPmOuvZw)HLGVX+Ca zX-losF%2gH0LMBB7Z+FhRoCe4#ZM97c}j3uQ&9eeQVfWBTNnezX7Dz&h~4>kc}K&9 zOZrGw7&w;pxwM^q}KAMIblI^?1tKX3N^9 z#-VE*xTji9AI04EByPPZy$CQRZ_;bv19F1I^YieGjg5ik$~&xxffClA<$Lhky1K}q z`Ey0pBrq!d@^<7&?hP<}-5Cd{(b4>SmpETj33(;h-M;!8hX220aa+{;pJj6Qb~@=l zE8(%wHqTSuKMyh?>1_CyWXJblaC%+=Q&(HdNFwvc;de4u{_jr#s#rOC=3AZl+XrU2tgyPsyJ^C*B;^6rBQ!R@rSAJngh(aj>bzJ4*0{DzB zuOGVfS?`jE-5RhohW;&kv?a*p0(o6onG&F0a1`VO(|tjz@;S}8N?XvE=&KZypqXoT zsHp*<*a%Qe6=N69%>0w!1AoaEcsmYd7gbTfzJI^G9v}q6CZGnW7fT}skF8WZ zpg#c)P8Q)nJS}8&e7uF1ZBbxgz?{6eb8W+qsCxoWMBLjeD@fn(Lk6`7t;+r%TW=W_ zF%)rY3T;(?wlb;KtQ@<7#MOGVCZIm;k(`O zJn#1&@BH8g2QhQs*L_{*xz;+@s$T>WqUb{3|J&&UC){3JIA0kj$YpZ_s2#E@U|OQIdZ3t*2wrKe*MB!jS%Y=j8ikAlK~R>w19Y8@>r9>jSI zD~jCd3dmxH#>9;9x5xr}Iu*M*9~?sYQ$2HcZ)?kKFqLDK9O>x1x0Fpmvv;y&=}zBj zlQ$*c2h)w^M6uNHPxL+)5Vi%5arrXG3IH)FEd_$)8}-W*ZZ5FcFZg#SV8 z{3!26q8n~rJOFM{(+r_&qHq#Of0CYN+XtLnMEHmkZ^B^z4=}KYcK&PT+%E#00*tWl z-?A4G1MlZ1EAx!Xrj+VjZ?Sy^;zVU2S0gt9i`P$$@)BB)madwgkznCIr%BXDmDj2N zmMK);+=u#V4^0gVKK_1cAB?t<3>_XP)YQTqC?aB#Vr-36r*ta(z4i9sIyxo=b%v6i zo!Y=1*tsh4u>8eZKn!0ujW@)W;u0oNMvS>_a{B(!Kfu2>H(3k zfoAyRE(L=tZD|qcJBTx z959ngZM6vNA5boJX-ZMScYLp7`gVPNN9O{s6aJEP70?;xc2+Wgr=~^kF{FXVAe!E1 zA&33f?{Vf@fLT>yWo7PsW=s6zL89;&fbiZkYms?B(TGQxO(_@{UY1@gB_p4+5G_HJljV%BkIJ56J}R1c)&%EJ86}#pWwgy_%qYy zMj8p@0=kS}`5BDw8#9m6$m2K7VjB`khnBa>qPIGDo0sN)<}=^i0tdHr+B%d~m6^5q z4fRB&LwO?0Fd2|KN*+Tha`NIg>~f46?pn&ez89xEl0YtWcW-aDH%?sp{GuqkuGVcB zw$ut(;d1IIl}!Pl-|;F5sD_Q#wAL2c3fbm(5*5NT4nSLf1(X1Gw5`R}DKvkU!kd>m zkC+&l*4zv{b%dv!15QvgO*e~s=vORn(-lOBjiQYqNJb(lxV0P5y;@!KHO?c#N5GMd7$H1 zmX?-;QYHvy=0gS6V~mHCO(8p80Mi_8K~t)o;fY~e+qxKZF2LKZf zNOL$zSq2-rGx!CIYM0fl3A+KC3grwzF0rRc(kwxzDzWK^E$~e;O&S1a`uO_R)T;2( zT<;6W7&Cd*HLT1u87P&}Q4Vvb(u)ZrL$leQ9)6j({`Wbj4Nk8aFMd&oG7Y;f5|9( zb1asy?>3wPZ$f$rmVutWU4H8k5&89da8V0T{irRY0Kn6!`9NaXMFT(+BslGHR}dhv zT25B>Hn1Am(nQS=BSfiHRgzrw)ZFvM04#4c$fni%W#8>L0(ke%Y&70K7$Af!RGTw1 zVO^}Ttg-}U{vZXs4CjXAe?A|NEbkF2dH+AUfPVX6!yO9RH8SAoxhrw#R9Qi(+)e&< z+(e1juBD=%??HG}Vaua{VWy>?_{~Tp@s&z#r;*wv$?F20cUuTAo8}XCSp;8l;~AccSJp!Um_4 zX!Z!sZrCTSatWgx7;%tm6Ua@y{wR2t#>B{s*b}+Whr9l-K ze9LP}!c>dGYtx+}eFFnpV(xEWEO*@AGz+{)R4YQW0Z=~dsy{+I{xKzG(U@&oy1(=7 z=Y1@}d4Tt72lfP9!$HoDbXh$q@2Z8LA(=z8!Syo<|A zf+AWKkg2vXqp0V;lKC6j^ zsnS?tzRfkc*^Wbv$tj{jo5a5u6fCbEXYO!OQx=K`wpZ|DklS-0Z=DpL9Zml_F-z1qu823#t5N-JV|2~554jcU=+n(iLm8iYAK9;T#)L)l`Q#Q+vyfY?Fa_g zeMy_;L!o{*xZ4wj@U$G2w2Vf()pwO7&g~bC&-TkID*O)_)ZLk4R{AD|6sojGq%LU} zn|2y25PB67(gFgVc0u0WXS1_Z!^oavfCGEm$HKwOd2uo`^}Ekb90Bba|1SB-ezpcb z9phi9T))5`m7jnUT%G~#$=$rRyw7wI`+yI`XPLTXY!RsbIsAq*Qqc2h=!VOE_s=S zz9b3?*7*-VSGe+6m5(g@<@z+geQ5gdFv@>@6cP%zXxqtd1OXmGGEX@EXQA5U&jpg3 zdNnJ-O>nJ!wZ+c;4st9xw;My|XQ~`Cr1Ke~_+Nw6(R76Lx>{bqBJlCf!>P_)%}< zSr^0*AGYEEsG~r&sFpv|+h3=O25GW(zgk zZu=F!K-(AS*>!8U;h)ubOYI(`d&7O3-6aQ;DTra3iDU@6c45Ezjqb1ET|GQJowQ7E z9Hb}<`iY_b7r}slzi`4Mu26O$SDj+($yNqEC+AiHlABQ~gTns3eI|V_RyMwmJND~E zD?sQ)CpY_4rR)+hQbUZlg-lkT(kb~|^l)A3cXVk%U0gT9Cm3Hb&Y;*7>Ww7ZFIkgm z#0vBSOwWRzU)DAidPxN*SJFOs0YHd=-*u(5KW01GBCOj92yU7u=(G|5kdy8ChR}tm zn21Lry639gU!F^ z(W%Q?^4(rc*`|zc0b21y*`0OZJPpaM)UBFG4Hgwyuy^!Ma~dU4FL2e$J1E*aGW8vc zg>jobdYTx9e;_d(?WKI5bu56xt7ILTr904(u-h*9sOv0BZtdq^$01Js2 z-0}3Z?yi`fy@M5A@XO`nZ-q^w$WnLh7r(4(vtq*MX-_8ou9s*I0C;QkdVl8;&`1DX zg$zD@pOwral4L^;;8%R89z@@6 zZijYK4Q!l;bt(_LrUdW1so0hm&jH#&+Osx&R%O5!ZQYual4Lk^Jls6 ze?g*1^~xQIFx)fI^8SGVfT|Tou*WO|th5YvuDyrG z%r1%pi&cx}Wy>1xSoF#YBWYN9?-uV~{e=3-;dVF`?EGqAoj$NDDM>759+-$pz(H_A&jt2^+Y~xmB3+7T1I2_<> zU$K!~jhqPeKJG0H3AqJEq~a1v;(uFG6Q#l(czL+)6A|P{{P+#~gK^ia>AM(Ad{WZ1 zJFY*RGjEJNQ3>TH9^3+0TQ4&}x5t(BpR)PSO6=hQqBy(L`R}(c-_Jc5Zo3{zrCeLZ z6h9pqk!?!84QP>W0d6FuWGkK$CI-HEuTuOzn=-pi6zlNwj{z}yL$bZ1okg#i<3=AU zI8y<$d*$DC%kp-v9lnKx0OT91)0%2lg1oP$wT@0;;AgcWQKLb(RPJZbp5@mKL;wU~ z5ihr`cwk_w0lXKXv43{9DtW+HRV-&Y^wt|L81tll?lT6*IiHQxH$YYDzEaH=IEvJQ z=b^+QovDC$eM2j6b#v*(?L`z*uS#mHCC zK{pif-KS%$_D>#MpuTSXiw|SV8X8W}*+D?MN?l1n*9ll%S@i;iHoJd60tgAQ8A*Lr zVrBgbkHK^uMJXpI|7N*EYpHF>+s|v~}!J0O-e=4~Lh>TqRl)$v=*UajObq@`lTt%!JK-#CPaWSO2 z?N_C1T$O5l!=)o)+Ij|+Q}#pcLAytk!OSd@P)4!133DMs$k@u$SnfTQ!apVBOV}H* zt;1HFbvgX*+HoZ>04H;E!eB<3$}=l~%~t8hYZ=~e?bR#QHmcW&HIUU_R@J?A*lS#@;6m?&_nN&jp_?K<1>E$u& ze;hLY3J~R!oRrif0D-upM=PqtLDy?_c=y*83pB&z+;$;06H(ye#=_y5kx&{|vj80G z5H-L|%6}<)b?l7{@(w&}%(+fZOjZ43ZQNS9Sf!8szJlVbS1cf<=usd!59YB+%IC~S zNtryr+w#S!QvrMv7}Z!1eEZf1{`IEp`{abKy6a;hJd!9ObbuVQn~9g^9j^CAk$@)% z{E(6|ob#ey^L3RV>|jgAiCn|n*Dl72Qy;isI9*MFp00tgbjJrT|0Qgg8~{Po?=X_` z)_FU>yVrZg643|e)f}9>W1A<^MH7fV>9{7lf$6M0Op0Y#%v`5BJ22KXByTyg>Fa+6 zK8Zmi{5`HNFA;lsw0(fnO61XzLiSttLk0~6bkWq&dcY6 z&q6aOWyEa-yp1eRR2^-Qb&b`ziT@%GDbKgrE_r38QQ(anh2Ioed>>Fsl}%NewuQhD z)6=K3mg+*2qW91_Tb~y7s(?5%9`MZOtMcj7cKWRdxI_DDbc=vs?FOIMJ=61j`ZYOWur_C`QUPy5Duzg+ZP83M@(Ofgb&!9(dySC>(u{(!ss)|2dq z$q5PhQ;qaeF4a(I8n6h%*M>s&(_}|5V`-WgS~Yt6o?l+8Xw?w_4Y;= zsbupz0@$8*wLUjy`ucCr_}6Z$e;-VLfBC`tRK}_2*sdr$D6LXwCU>e-hqFMbj~=_z zv`9qt86c3%zdZdP{s-8qstpmFW|Wka{oEI`wQX(Jy$oR7)LR+TArZGSd5IRvp+IjfMU#vz4d+uTcZY!-oL$p`Z|I%!|H-okk+t zZO%-gzx9_cQvc^w=m3P2-QBMkAG`nlFVA!#{}Hl4NBRNoPzX*pGW;8nrYiei+3(+P z=ts&2AV2~5I1f@q!A@>&amhu=FH2?{JrP?||1m7U52ic=elOz|V5z-ED$a$80^X>( z6d*M)1F!0MdwU0kSL%fB12gacyv$#|05(|Cu%AHK#B$}gzWhpFUWqo-qKTR5DNhfN zV+oix=gH||eyKjh*h%OKaKy@5=5>tr(2+c8Fw7hKg%a?iWQ{M;DSGeVFo_`w9IDdf z0J6LdebNBrx~UNueAwc7%yl=fbE^BK{1tjwHJvZH{~}Bsd>#`%CqRsEvAM{rYAO^% zm@R#5CHsoyu8VPSQ9*`lud4PeZYRb+=!L)xsxaNzs*mM5UsqSxu3=8v|LmV@_UyR; z#K)>{Z~@16 z?@SC7xxBCLKnApcxDo5xtM&E4otU87+IL;(nGQx>E0oyiQev_EDp z3ajL$eUK1QR;HE1#|8wvh?bNWet#HC8c7@btA-95E~k*~KG#oy8;hM5SxxhnSz`T= zvcazFbDqt8n3C{NHYqr9W-5X(atkpOuXYKH+IvJhvHvzZ)iO#bWETCPtQ5 zV%CJN&UTK+VBdaeG5WqeRmt9cG?F%6+ayreO!fz$u8vhK2!OP;Ei?$;i+#-;&sJc7 zAOU#aLqPymy&tc=(y)Ffqj91-jte4mV*>bq`9qXUB1L24_(`0yw~ zF8AjbpPJd7*QS5mW$M#Hb;l_aMtWO0NPcTsv~9#2O!TxB6Z>RgqgJH4FtJFo%o2$Q zxSsgjy*ozl^XW^nn>U_K3;nOiwZGS}IXmzXRt7jq+UL)O-Pb)B7_!@;vNXB%^^@o4 zVw`vG;L)D7x~T9xxb;JBX_H0r?9+M4#I?!gSjJZYwdIA=Q(~M!&4DS2j0n2JU&N4y z>G1s&mvhN+w|JeD#1Xf$e@nXbqQRpljAW4ZxS$kwYK&w4Z%R=YVW?$fq@%MiIS&x_ z9Bcb0Cj>;qh2YIGj`;EEYsg3Y)L?Zxd;4KNc3USW{xlVGosf_aX12M?z@z>B?;onG zi&JPQSnEmvh%u=ZS~zW9eL`0DrWuITQ&4!NNnfJPY5NvXQ)gxYmH`Hun$x*cnnA2y z?tt>3U^cN%I64f7u6XZcw`~6N3pTW-^CQzG$n1#Vu52}WM)=iT60IB{5a6~Lvfn-W z>a?dtyLhW+CUXf;v8rmQvU=Fz{eJqN`B>B_yA+4RFqIGQ-r*?a^!Q!zA0z&Mgx>V$ zw8klIlPRdT_equsFaab{*1*KABJ6LvpIeZ_7+WUKBz=>6&IcM=mmg>#IN*j1zIO`p zTKtF~&jFuUJ=mOJ?=&VSudk`K2b)NXHUjP2Z)G>Zo~D}O+rL;o-A9k)UB%R@Bq}M2 zv-sDS78d4DCS4sId3$&yBqTtg&CIMnCrtW@6?j?!f0rsuyZDxepAr|4!dNb8&~FyJ zjEcSb1f7$}`_5-j*Buv|isDVaJol-)0D^_sLFypgU);1!Z7q>$>swEN?b!0OhVw7L z{NZzZBvQxr?>%sJG@;~=@&<(;IXUSfK!G549Ko zO_N`rx_4llvpo{vUVFv4=`Ko&VU79BEydqcJ=q3gUP%*LF^+BD0&}L6PqUrvI`gNO zWQ@%o``f`cmm42zammU)GF7_=uz-LTpWIZ_phELt+1iAG0sP9E;yxe8=2~>Bz1`B1i+gE3HF7A|iF@DC>Y;-yZW-shPLpBTS zuL_PVRU z!mg}cxQuL`k$w{IuiJJO6U0P5?u1fZBnqV9PG3 z=MWVbpY+WUOazc>Zr63=!KFs~uQU9r?GF)m?=M9ju{z=DlM?D_G9&8SGBhh8H! zqTgOQ=p571@7GKJ;newfv^?M7MNkevtgLa`+XBO-9Ma!f&fWw;CkA>#S%70gA(%lF z%ttY>u5Oq@9$TzwYoBiKO*;p5y$La;WEJPMHl54;_5B_vr4G51cryfA<9G1@G4|tB z77<>Sfne<~IE;UnMM^xHG)NTwR7#Tf+5Z37jb}H#rPys%o!me zK*G)P38<`MY@7st$E7$gBsLWxghhdNTV6fg!PXJrg)(Zkw7sKB8QJz?&Oj&k_A|lD z;>f2Rb5QK>2$HzvfTt-c1sVRksel~@Aqi21mt~o$(V~mhNc;Rw3ws3W@8xMem;%_; z+HBh}ypy_$@g=uXOQnAnxy+KuX6n)b2~$+W{edI&4j!A;HPeInouoz4h!WW3k)?{e z+wd9IKVxTqlk?`QT<&^d(&6DD(DI87^+m+QfcCE3i}#PzK{nQ?3~&d)(hcd90@Cw_ znwrgCh9C=d<5sJ&R$q6xmeA=IhhcswebDoB&FsKaUyWt+Cl9^^2b%#UGlqi zT%arTT?IfRr;do3s+$OmV*_(h{vCY$*9GGt*pS?n6%yo4F)#`=1FCm`$7!ia2A9s{ zYo>NvOk+-hUv-1aFISg79_R24erRrK0fcCYt_QAJ^z^_i0z_OK$Vc7mpHRO~Ola?9 z=eq~nlN?fKKrL3bN{Pq}kBlTEJpq0E+qZv67c?{g9fX+cybnUVM!()!eM<61d=~S7 zrJIKa$BuJ%teKKHzrS;~mnS#z*woK=05Vql3>e;M)YYk5i>vcy_E$oy_X&Z_3et_r zx;vwQTJZM>#Qrz=)msuRd6s;;KJf#zMA?@JRWtP2q*PSLO7qK3z zdzFZjmS?TU(>{y72W|A6>OtWGVyqHk@0{j7&A@yi&9%j7GXpW}niiE8W9wPvCTAwN zhahZ;3Zv08-`LRp)rvjbQ06(gX%^rPD5fe^AEY(1FW@^C5ary&W%g6k4luIsu&nl}Lwx_6urAchI-U2sN zi5iL6+5Re(biP=_^%~l@RKf_D1lhC(9wbGCmT zC>M)W2OA;$&yd`gdOGkYDM%<0F6qqH%@>ZPv2H zNMrASuDg>>zt3u(8w1g8P}M8}JLDB)1avl%HDy6S;963`q5W%M0CpZ10c0JXhpxGa zUxytZ%SJ^-O%$oy)DeiQhJ{Dc8v9T`qDCHdcXf7s@veAWrezAKP_Op$NPK-fOg0!E zQax|7n<#9@Zejer_9%u`J}wSawUaOHji~2%z9z^8i?L6`Gd z$1`-^*H;@!acP{1uWfU?EnErtHZx^#Kl3_?{$gfMajJVaMK`q)6(w6?!@yXgEx|G5`aqj!HaeygfvDLhA|j%F(6m0iUY@I>dwO_z4;IANHT%iYVfOnl3|s9d?q zTm)ZhdhVZdPU(g;M2`4;QKHfjG<=bB)1|}uznFex*JiY@4nO8(;i3!uA^p#8T*7BJcO&x+U=F+t zdO$+WKYjt%kjfG+x4is#bzZym@w7N|*yvx`e*v^PIYW}qz(urngCZh9FA2lyW=YeU zU3AlyEWJN!bml7i+-|X3UFz4N;2gevxKbKtnbg&FK&LE6XF?0f2|^<+mPHS)TV-6~ z);|#3U+bomsX+C@m7iOSyYCn2@M?nbFl=KUAjfLlOzaF)T~o)k$TA)(FqjS2b0n3i zNKbepY|_lA$Z3Y)X%2IhJ-PMcs+?YWWp+f&gP9G0W%_JJ0xH{Uz|)~YXl5F)0x%eQ zj8y~N3rA=AyFF*|&$1-FiMgo$i3kJ~UP=zFY%~d6q650l?&fAh!O7Yw!fYEO4YG7l zc6PCSh8v%ZT2W4|avdEVRUqB?>h_@Tvw>!-Lm zGe9LXImw+okf6kJ*}}ZK|8{RUzHoH(p{S_Q$-B32WA`bP2Kt*{aPXBanf1?%=#^Aw z3d~GSZh4qwY8NnUP4mYnRRrw@+ss;|46WzpT6{KTcto9}Th?uHVB!tLTsV49-YZ=I zWGeVTc8jk;P|ynYABx_?y6A3r3Z*PCf2U|)RDX_u2D~_dKzDy5(J6Y`Lvzo4_e~|z$sxUOi zoE#@tfObX}fIPGNtb7)IEU%PC0``6Cq-Q+H!uDELo+^E?m6dj17B{QBET2J#bC9}{ zp~-Dv*InSqOuE5gm9&c8ER)P;k0G8#sgpms_*$@s`FQTwG9DAi%a+Zn|6PkjwKrYJ)#WrDPly6AkC6^n6FCWiIcplqLD8GKq!)0EJcBcfVd+1 zQ)1#=vbj8m-$q7?Y&^@`=(c0Fa7jK7oeLim>?9Mpv?eL!Y^H&TBC*rv`l=tSL~N~Q z1hD{cWVh3%tM0s!(Xb67XV}ZjkkK_cnbrr95%2yeZERl#`~x1fzXt3&>AFOpqdo;6 z8GN)C`A26+mEe1yc4mDSX-(t%eq^|RLKj|XkijqMvayW%tvw9B0khTK z&oI5#vu}<>@2k%E=q}`AtrW5}Ru(A(JIAJC13W!FSuz)aD8{Q9*g+s6$9e0SDsB`| zs5(7j3ez}xlacs6smIM$&fQML!?alVc$Rq{!ursjqKSMV7?JtR)XKOdy_B1SzEEtjNlc^v6 z4Z418t;_yYb$?zjF>GM;iVA;`6Sf!H@2@RlWjpvh7CzQQXYpIEM;_N}N3q&XZ^Ho` z)Pc_Q;_^IF_HUB?8QxIV>dl|vwQA9?_RgYk2elF*RyIHz%;X}j06tybHmIB3Y@ED0 z8I=X)orlBvP;Sx}a{C0yF*g@|qjxvAwj?|@_CMhvo!H&ilN=G)sW;$V2-cO$hMCfSCs2uf^l}x)DCp)^Bb@tyfYt%sp?=IJ70-@NzPk7eWTUrohBOORSDQrpp+^1;NIrvOHW@^WSJUvUi|s_b7+i< z&8M#A?=X6?s@aTM1A)|f+~l(GONuqL)};UiKE6t<$HW)K@0vcn2QFfC3ThdoPi;LH z3^R4}rh#@aN1`Vd95PT~zS4SGbykaS^QyAAn6RSSy_Xm25^pDkBKKKAc;%keOVxg$Zsyu}w5h?}-mBC`3&o4|ifg)6@pnI(_O5m9!$ISPF-764 ziF~jtrI}Q!q`yo1CE9OsPs;W^4>xuN#J8Oq_vJiq%4@B1-aKnEN*q2N99Nb5UpT6LC ziJeu?sx`2_OH6NdpJT@|Zz%}fvKX`rr+kUVWe9O5HW`G?5rAm6`}(gg7a2l{_$b4Bc~+SIRnweUxfaBAo8=DSU3X3fQHoj+KeqMD*0ht>ov+VXsUZEH08N5Fyy% z9BuZ;Bw1jOjbCH;F7={X4p%8WmRsXLDhrHHD1}F`hqLo=6nbl0PJCMpwaPC_PVzB2 z-GtMLi4l`cbZ;A-@tg-mClpaF5xuvYdh3mI|1x0KZ zFw=4amp@FJT{coO9wyH^)2cRUt2TmvAfw3|<_%uaQ}z;KV1ej2p67}})HwHk{&U5j z0?K=;?at3~KUDFlq7v0YndG^X`cX}|)3tzzKBoi;BxE6iJo8XqA0Z)8mH-b#xvHvyPI~ zV=7^%amv$2@sIJ|8oblb%K}ViQ7ClH%Xja3nsy=n#rChd@dA8+@#`F&GF^?gsD6rp zWIoK8Jw|PE7vXJwwku6P(yTh@YIy8##(02xoX4s(t@v4iCp+N{{xz~_CiW!w9*xP_ ziGPgzfddRQJf7P+{>tmn9G>ctvj1r!f*`V5M|hx z_k8{CEmC{ebs;q3O4L=7p0uMmv>Ur`mkWka(T@n*C_gT}SX2~Im0wkeQuWwK?mefu zeh_WD*9r*tR5tP!%%1@+{N`hyE}p2y>C?t%C(|_Q<*Kk6HG1%0MuK!TsKr#zQZ1T( zdnjC9dJZJ>V2{d@SQ8L7FM11kOX%|^HA{94*F<-Hr#O0Xda~F;p5q-}4 z#mbidg@})%%>_DKxNH6Fk%Ygxpw;n$UXZ_2UjUACM})UYbe{Cy7mG!O%-2-wGllSX zD{5>{kv9#`MMoJt;@>_8sRXuIz8t=KQ&d>{609fcefo`)JV4#AcNG0oKWf?RQPY65 z{(f(&Q&ZDl_rxRzooWKE&fSw2ZX9d&t~O@R&p%zbZ`5MfF-DxFAm2mZUaH~li<2r` z`jN1`aX=py;nWfwL}OMTWCAGgnpHLd%^CodPYs%FfD{vg>UfM|JHiE0VJB4{evG2{ zX;xq^Id?5N%f;)hWiz#GktmpwqtdpJQvaYnCu=x$twC+xYB_Z@3sV<3m*?hAS1sOy z{i7>)u%fCe5640DkUT6zQ%iHBHlX`(PaH-jHiVW_rj_cOda^5;*|mI+kgpD3{X#gk ztA3N_8265y&=m+fcuqcknxa~$^`r}~k2g7O*O29Q+?b*c5;te|xNam_tg0yA2;471 zW@WygK?fdcWDZHJAWwN?5SynVu|*Yj)K^pjvyOx{XH-E(imrwZ+!Q#E{EVZMg-Ei? zn4LhIVt13Zho;dnrD;`ofrpko65ovFvunlc z046^AwLK8AL<#63@I>Fe!?+YZ8sfqmkX??%|$4mwGkX|;mKo!bsBEfA5h$Jd zmib}e{w@LZ4zKT4aKmw*&)S=_h!M4=J7BibOT=7cYO3qYobT0dbX)^|GWBe3M`ILb z-%LB#6);t{l5i!~c#Sk_A1&hyx4xC&@__x(M?kNPZ~29w^9%^xU3uw@V!Od?@2o9x z$EK#H0`5VILn|wv_+-$ma~Uh*<@@8Ie6$tPsGog8s`#QJSF_bm5?MD2^Uw1~vC`KI zVeP1rFuN!^qIn<8`}ZT6!kL6&)SDHFvC+%VK@fMh>j}ki=R;Wgajm6WsIg0nu~(T6 zW4s~-SvmwtJDj#~x$zP;`Kh&A&ooW67r_L|Ykpn&X0~T_X4B^8A|p6?>&`!;qPLjp ztu{BoK!RwZ@Ya59MMc!12U!6UEhu(qxDdVng|gco#oyXG^bSqz4WYiPPf=wN+|%=W3iZ$96GK4a_|mQPlcWqa zL4?R(Dcf~$f}VY z-PP6kL=S`rILhCU2}o}p&r{FOde|a>XxroN>>Zr?l4@PV`j=_vna1RGzpicrygD|< z)=A>iuxwvscwTy=yib)fAB>rQd9C^!xMWGDRp=g)^pA1TU4Q0`k~!%+3yc;i55CTm z=o5!a5An?Z#FRQ;Z5-G*-*hpRS~+KAWW-bZ&PzrfTJ~-by#~c~GX{wNEt8|F=^nUR zMuAMly*7SuIErni_A}fJrn4puDXzNK1*BCO9xDfi{-dQK7W&YnDu_e zqovH_+So(#S`6|-i``;%CE=}eny{q=*B#;(C59vA$2?YM98iD1=mdt<;fw^UDE4`| zje6sX!)zMsXBo7lx~%a$X3&I%g4$AOMMdW44Xv4#y{#a4f7zeORT(X5LkhEb7+3#! zV-GEMa{kXNjOTr-| z12$C;jN2Vfl|1M5FMH_9xNPe5-q{L-*D0T)CXNc(N;;2QueSD+%d5Q(u=;i>rXd8b zVVjD1dnAV7{jU=&rTZy*nRH@Fk2Z*Du~*g8M>UOP7_~9aH=FSVxh) z)YyJ8MYq}vn#2k-CwHt`m5SO}ImBFbv_h%Ct-Bv}rGrDSq4Y8YUT!DqnW_mx4)QQZ z-fsb24X-G24k4lccDg)Oc1ql5>HE-32Mdq1BfPdChr+_rl9D%rp_y5fkFDMiW4po8fn>t^buzQH%&Jf;$lPG{VwbuxL z5)u-DvRU(`N)|;P#zhYgBat$IlFmh9O~Am<&ri1yRsn0vo1h!5uz`qx7vC3sAOUDyZPqaQPr8=?D=C+of1v0^IGlA z>|FK4j5S)?sR_G=wBwNP{+m#!ok^=?E-fu7WAo3sHfdJ{Th!Q?z`yQ_b!b`fi!? zX}dS?4X!Oz)It0drFXrPdBD-7ro;uwv)o}I`uy|_p=)o%1sJ*o+3qJeFfI@hQ3P#3(K z(B&RrKh5G*b!P8sKD+&x@L!NHtQNxYa*=X#mp8tPew}%pZ0fqMzcp|*sbcVI|Ju-L z4Idw02D_hERs~7xKMT4vvaYiUyc%O8B8q~;;mSZ&u3ekg76_!K=^E)}Cub`JEAzFb zjF+q59HkobwwyxWPnV0w(CD2IsZJF7gPV|mx|CrIJ2`_W_gW;Jd?i*p_KcJ3I`1Jc z5*9hv5lzd%@XU{G)nRXYgH9?eK5Jpo)HhM&ULwPJ#~CG$>G?ru_8WJzmoGbysVAl@ zjEoEob0;uodmwn#!3}P&iM7rbFR9g`xH&4M zkJ)-K7yYc1;(Onta`Wa6P%k+&DoV6{hEao& z51?O=a*OEx7&;Q;&fXd~NNc{>;0JnufvUiTi>P8yg} z6zI&@IXLYRJ({>bF0`3ohOFOx40T!E`W3mygO{< zwfqFSub1714odE#)?XgAp`kQwM@kkH7zZIML=Oi*zSwT;?ah8)k#PjnP1L{Jt0me-hhSI(dSiLty_a@&rmu4# zIATJc(loAV5vONhVDL89+dKs|kUVBxoOa{0a{@HguM3WMOx<=G^nQQRBBS(-+~pnu zl+F7YQ})=eaE6s+*mi+u3nO7BUP~Cp<&^HSc=pCM->D?Jq|3Gd4dL|BC1@OajLJC|}MQUX5X zeBsL;cX;#lj^gPUq;b=E%M9=t8!4p_8C4qsQhJ#){p2BL%i03;cb_8Cv`dht0?9JWDE?6O<&R=3;+jB;fSQOx7&W(s?n5$f$FEd9v-7 zbYqjwMw^{_&`HsaNz2XmDJ#PH$t*2kHqjkp#&B*hguI=j;8xbB39(dHkH7KYJRQ%- zka6EX2Dyr}QAH^{c z0R^QM0Y$n6=`v8HyStI@h7l2wmK+*siJ^uN7(!CIyPKiAVeUp>ulMWqd4Im^_gnYg zweIyk&(VkY5tP5wbZH6VQfFc;CmT)*|3G$Z=9D=d+jCB$KdGbj8W=1 zFf_#bD5R%WNlERb-_Ps*Vdj0<9c~^%I_nskFJ$A+eT;AX+1(|x`a!?;ooQSY?s!a! zL7mX$GOdp10fhyc9=X!xTwpM+;J!T=h3h-WmIIVq)u~HGG%2hu6Cqf|cPmKGExTee zi8($FaykR$T1yYfv2?8PDl*yfR`7F$^CYq=D^^dBG$!7?8MmNlb)KH#-o4ki<~UIi zC=^O~rCv{Id^2PIo-^z-iblm;q##@3h!bB2)Qd(R(l0NE|r8Pv<1maH1Jyqj8 zU7f28(_i%Vz7{chzPJS2szqJ<4Fa-Bv#7%3#_Y}3R%Hf;Y}syMf=n|tj$%06y%LBd zq)R|^WSH{TWF5Y0MHVOpkIlFDSdzb7&-H5m#sX3m8B99kV&kFaY$Rjq8s=tZu-6Hs ziSf_~XgoA7dbMyoK3?5SI)M%6+4y3*e_$y0!}DdL+MOlyS1Ga}`QfMJ%a2xg@s*w zKF{S(zAqV~;x0GVNxBuUH#CRDym-uZW@GXM>(>5f_%~6upjV+aek>EC#|7)?h+Wu~L~gC5VslSv zI*E#Q`iDHUdR2WqCy|lSFE5YqQKR=1myq~V#C#FD;3E@mSY%rzeYjFD_29;h8(^|b zX@74nA4zKYo+Vk6MUy8vT!O*WFG(t5ZZ!qZ9PI@|X_=Q3b!v2pBIvLi>aHvN3Q^IW!QeXcDMYS3&VH-@8rlaAbdb>=gCdn_$+q1t@Wks?$|InJZcBUsO@h3v9pD99(`{`Ib0AiRRc z_-1f2R>sG8eL(Lnb;ZLiM)BaI7CoftcCqRic()PoRFK<6!RrwTtT8)vnVb6)pLA*5qeBoT3s#;W>&B54z=fwj8_vJ z8k$H-z&xR=Yem?wu(DS|yncc->Jdwk(D`nfXo%41N-~g`f8Y@LCMLbuETdlOoF`nZ zeU-wL5TeMG7$%(i7%rQk*z%>3tlE+}v9pCVgfBt*j~PlAp;c&Hs>lF?oauvsqsIe8wO)+o18PM9RI$(BJ~ri!*N|HBQHQn9W5SpgetbMW){kOP zV@cy*-8fW^$S$s}ofLTEQ<>bE`1HOnChK%Q%sn?h>Bfh9~TV%o{!`bsnLadF=F)+bY&|3X1`8*)F;w^H<*IGFGg}4-Y2>#`41$^SA@= z@|?(U^bE1Qi5@)*Q;M0l`9IR>X!-eV{Iv@Ta?Mw^ws19s1qD5ugWgXR)|{I8OmiM~4|2 z8}l)$s3fyJ49*kqY%U4fcd#-g%5_{0(VBSR_!Hf{#<6=+@p!+#`|`5Q9DLIWYvB=# z@MW5;4El(0LpPsl*q}=uA}hC{Ba!z((XN`mzZkn(qP9+N0jUjN1^i}xdzh=kX!xsX zUWJ!;oX&I@a?6~Z&{;IU^_~xZbk(CUaTi^dP#Qe7nMMJ~3={o+@D}KpcIcq9do)P8 zMN;ZH!BcVWz4fI&(FS~5Ib~Z@mxonOfl;Ki*HhTOUp)Z8i(~a|Vb`C6)x^lBwPtQJ z^t$!M4h&xFq)pC9kv9ZZRgH?Uv*tu+0wRJ>EJrQ^qV1uAsE)mt6*C|msMu=Kw?Wug zL&IH3$%YF|?|YM5Q|)bFUUQy4*y!P(+S{n=msjvnZqP3pP)v4NFKW4QqZcR$uLz(# zO>M7r2x@xk`qn|9&N&nBn}#-P#O0D71$g<~eN&o(3*k^TX(E6SIC%=a1P&|vu?ckg z;Yl{B2qs*0uM4Su9Ew%1jYR{R2%mUOOuSZ#XqKU0GHMy!8tTaf-xs=WnLZ|ur9!rn zzmqPHXKj(7!tJ8hNC6mR)cI#jH+;H&ca;78Kfnr1srwTfr+3o1-D8 zj^pUoupP#)g|@U@d6vL&ugJwW{kaO^kA;uE4<$a4b1c)k*GgO%N{@ENm+{;>x{=nPozcIszCJcQ*>73Y)5r8?y>DP(4SScG zQZ8EF*3xT=|KRQ;;H|$Z{IE*f^aL9Wq-qZekJeSZWxq*FFl!^e>1sdF3cep$a6Icg zebTvAu~UeO=q3$)l=d+{H}H=qk;i$`(FplkX2WRly(>ciN5u|YuOTy$-x=#>eNfOo z`rfjF_Pd{8UOGQ$Ksk1o*UV$SFUS*=JDT;Q@b&y&X`^u75f5o&Gk|Kk?XVf7)*MY? zfbdAy6IY;chPN9xH8ui=GKSZ-r)9yRh?J$QQIRUbbSKr*{irBcMcb9vnGe*RYDRCA zR_t;uC*ER$n)QpUGZfh$x|W-JdgjKgUo?{{ft7!(exF%J%)k1uxzBkzf0m|wvR{0# zCdsAL?P3dud=oxyLh~KvKKqd*Wg8I`1S3oIE2-9W047`ZT3#Er?VQeysma0WD)?G< z6eC?wIp$4v*J8n`XMoC-;D#zNCjbzlOn81S)aq|mTc6K(9mwrpO*C?|% z5cw%am)QG^%tFQ@iPN85aj-3=M^o1Wm*st16LT9lbgdsuHA~ zC4+1RC!Tw?YN<%iL+$5Na^ZoCu7oX&Tvj6`4#;qd^KGxnhs4Ax@|v1j_!D+x<5`pZ zF~mvH;u-R})st_lDyx9z^LwGq>_@%&_UNVP$*Q9s-!^}Le-ubGh9|`xO`UCEK=vc* z;-s@8QadGBw7dPFjLJ;&P~3xK&OusA9ak_+d*x`~?O_j)ciA7mASSkA+pezS7edJx zSa!C$W|HA_(^3riH`NES?%}KonOK3Y?ojqH(`@Ud_f_o&zr0`H@^fw+o4=^+R##^| z>g4cLbKDbZ}GL&y=It&_#sXeHMS&mP8$qbLe597;?BZ)>kh72^y$j%*ZaFestu7^9W4a@0u zCsot*$Hq$YmOi#VZ8P$g$OCoRG`0{vmk_n<=%C8+mV8V%mPCH#ghNtN!E4gm%Q`(P z1le?@!O4M61U;gqy5t=3`RU@hR9r$HI#g4{w}F)F=y_>}n)_wYU^^iuLwSG3*3c&E zxc_qlEu(}1$Wk~{@A27kJDM)jD;JnFzoaJ4SXibqP7gGa50I{kS3iX8KiD8iiP~H4 zU{NcUjfjUyD&p?1l?HcW2u**pH2Y(OK%<%5Ilbhi7Hd=8Sx^16t8R_IoKrEi)U#;o+n0 z0?6LPo{R!72S=Jk*LvEuT55CiwM;2SW_o6#+c(KWX~iN$^k|pYF4WZ3>!qSg*H|=* z4R`83WLM^_wlNlbQEKGk;u73hriI(Xt*b7S+sqI68UV>xVLrV1jXz(t!eg?sR81`w zfI}G>j{TXPS8F1pa$cLhCmqG{=G*u|LUq0A&8|Y{iQ?>7U#QqaUT!tzth4U0vEET& zitFP3y58h-;}`2YG3DmQJ3NV+1mHOplE-Ml85*_7g5`y^s{Yg!_B8qce`ht?(N1w3 zBI~lNDVMED4j@Th7!NhKNq>7*g1=gs)7`-VM<;Y&Xazj8Q+2U(;~@?iPz2C0rWqn% zF%SUam0Te0$I5E5fNmdhFng+Bfc}++ZNp%suF~d6XCl6xG3XI{nNvp%WEIa5lHxK3 z8Z`GTH|la(p!SsY68b%d#oOV1i*?)VysUmOB@@qvKJ)xvvAl`3V&qxrf(xui!iJnU zh13C!pT3!hw{csO(jb`Bc_5R5&W$%E86>M7Y+zCc5?gpJI*KcuEK(L7&$-vCu|aSE zSELmklcZi^__NDdh-d%gPiQNeuHAdbAuk`!C)!R&Q5m=bW$xNy;jcC?9QTHZ5AX@J z@fzyTuvry6FW8#(k$u#8h41H=KHWUXQDV&YnDr(0INzZSo2ag>txZXJCM+DE&zc!@xODBUcQ$nh9;V$lNG_+nZwh@Vbq=S8gk+eJ| z^y+JY~&9h{R)!lqAtH%5HW7u9dShK za?;PhrBj?|j0@{H8JMVlN@YV7TS#_ccYW}1V@5%7GuhzPNtgcrPRxsSNwYpO)& z`ArOmPI76VAP@lXjb_$(DAq|!4k^wsikv(v>4fb|s`2u&YEa?%!ZNpdxhM(@7t{0Z z_=+!9S;vpM6r-Hmcg(Ex={$u!t8;r{cQw4V?~7w)>%vuo1U=<_HN(E)bd*(dKfpLP z5qHPlV3;V(gsB#9Zt|;+nz1`_KabtN<+drN7F!aP9xzhZ#w~Q-pWbn&i~mhoRa&O> z^kiaWq8L9Ftf4JF|JmW;;HL0jb-ZML@Yz^FZJ{pGVyioYzkn$Na&V)p`Or2d$bb$+ zAm{Z=4K)W}yC9M|a$Ewga1f26<5dym3uRPc31vf2`QeZOUr^dByIp!c*r>(k`ii84 zj7IGxB^E0&tC|QlBO^lvN8|iXNolExk&!%a?=Y4H8wp))P;fBe?VD@E1!rsR1%+{7 zrGA#IdFWt1&d+aWSByWf8Xn%-4iftw^K~-pK}Jf;Bxf)@zc&8dw5PpusXUjFO>Z9_ z{=J7ww~g=Oo50^#z<%(PxS9C-9B}|TzFYCm!O<(J4l3O(`A*lhbaK&cb;NdFmv-Vs zph9>c*lIM+`L;gn)TQVIDpYIH7DXqtdCKbaua2M7Bv%Igya-(sfSQ5a>Jd#S)Aa5j zw4f&TYm(cVHN_Ib6HAMA>IlEQ-?gEDB2^^dm6X+-RI*U;g##~h@LLW*bt zL0qVWcLXzXW1vzK+-~`v{gJ#K(t+oy zcJdgO@n!HDWFD?srwxrD5WL(&U3f>ao-bME^>4_E%*Ak)Pd2u-ly8pg9&sOwi7oEf zLOqtPOzNIOnY0?iCE9qVFO!8yZpjd}#tP2oP)v&YV%NAzT%<>w@6Y>Kd%=>6|_D~YQ+n%avfYP;76}@JgWAVP%hA> z-*$YG4TGgYLMd`}@#U8mmI{lsD{ea+9YYecF(8V&Wmc0;^HSUd1Pdlc#>M%m6p;N^ z1p3}**OIHMtMU_zu-);>me-NH)tw}_)!0OSr%5l+6k6Nu*|G$6E$RZ})2rFsf{Wm! z-ThdO<2V2ib27?)JPRG3(p|)$IG;^z!Up^2m@$@W#8*O`^|b|>Ky^wz-)lOW)cF3J z$(#{;M)H4j#r)FRsW)dAE8bCuY3iun`;p#idR|a{=J)XF@yDPb>YAU-uAvlyWu<98 zH+cNM%ZIC_T=w*Si(kcgG}rvv+_xNG4Er9J@e`$VX(@WG8kerhy-_6|IfIrewruGLQy5w(?X}^=cc^atZS>)uFRaGBpA2w23ALY zc7b-wok|Q*iX?2Y#|z;Cha>X^7xRQ%eV{*^q!gfwc%HSMx%N&PjUiHEzw3gg{>__wency3}^qd1Sj2e z=Bf7$EYvrP=(jYU)lbwxid#43;GIIg(gMt12prT)_ zO?q`T$3oa1uMTb(=$}(a4LVF^fs-!l6w=gh_p$NJ%bOO07F^@weC%*`c?EfNf!YLnako^k|#iDEk|4$V3-#S1Ka$hITrZ28U2K7x3M zyRbpGi_cOC*0jHr7`Eu>lcFMH@?`~z^iL+iAbx%8iN~o6x)zU)^Q02;eK`@am`JLI zL_nfdcWrze&j# zx?XZxz(;oZQG^8^%RKS!OVeD+XYbBm?{E`fe=~h+`;Lw83&i-D!OLjV+FU*C}$&c35gybhZ5(j z6cZj&f02)=shb06uPz zioWrg%HkppM?^-K73zC-MX}CNi;=|2DvbI~a%suP^^a~J;Lu6^ljEIbmMYY^g>Lu% zmUfC7ronI;HujSr)K#if3SQ<~4bQ~Cd%W=W*P@d;hPw^>Gob|Q4{>!~3F?-t+`b!b zTd$Sb*6sp@faeBTR;RyX;{3#!GSMfnT zaw<4Fk=x}0JQx~O6Xe$TH-$@N~p4gX47k0Zzf9pM? zal})biQ1%mHhe$otmez(YaJl_v$1Q#fKQ@z(H0|kjhCQZx17&sGILw%n$wje zH1DXrIXNWKzD6dWr$`uooz!0ALgZ@ip$*H9%~gAg9>C^@$@-v;zuo=Jn3lQ^2TDw# zBFLk8t8O&^zeShrx3UU;CCRxh`b@hYm509Bef%*D$c)?*%$7XY|``k4JJHp6Wm_ejP*538|@YPJVny*Z5mFX2V|xu-GV3w4-bSU3&^^# z4l#Nd3GmLsSJGBpu=2@A>a%kaLxOt_H)oB+*%|kbj{K&?h5INj8VoSSFhK*KiP1WX zom!8gqTO%t3w95F-)Ct5-pmm<21~_yTRmgV5*h9Jvhb)Gyz+BJfjINUVne%X-^t)m zG|Iyvu4JXe!3l#DCh92ogcMVFVQd z;ip>0dlot^-wb2(;$FL8F5^HO)Zp$ETHh1Yzm@}yBIv}`@~)MRC7gkPtG~6MK`ra8 zH{CH^<56s&bVdd>5{V2OkQ5gW8UuzN>XXW~g82e+K|2S~)lqYRbY%@{+~)f#CiB+{(jfmb#SIY|MzJA@ZAoPlFTx3)4oDeM);tE)$7Ebp+LKO^#Fosm6_wAd=QH) zDk^Fi2AWwMVsE4NbK0BEj=mJI<+`6m(ki@>?X0yy;VQ~bRg(};q)|%@M(5h<`dl00 z>F)b*ABdM(I49TyOHyO`9uJ4+eQiZBPx;|E)Lb56ZA$jsx*6fgH6C9|E5jTYyJGFW zRZ59ScxX2_rXpf$ih5!hOd3SfoKey+3`O zui*f2WIB!Rosp*2xHQiTWfdD*eRb{hU758pU6RfdD>S)xDFNjgmMQoeaSj(ui027> zCh1K)kE7a=;a|gsrl(qoXpGa%i{U@$4(qWYDcHoG`&xo|U)AIlAv0{wEPTZ~?Ww*~ zvH9&oS~e?z%$b)8d^&w0R0IKT8W&HoOBEHDyW+^75*7TIjk7GM#XmLWg_}HwCda~) ze~&mcntpK8+X}o6Bp8^~OWtKG;@k;3)*Sc6UV_&{HELIJAKcEWh9w@DYC?7@fl$c( zJBC`R*`nZdO?*^nG{xHH=2Dl}csY@l*GKhE>jcF4!~(%SSg~Rl8ufp& zQfOyNZ{v_m4SaJy@4c9ag;!OzY}$#5Or@B^@*@)Y^4r>t>`lA|d*3^||5*9FZFh6Y z{P}c(@|YgGrG>dQ7mkB^2fLi)OOJ`*H@^Pz^tteq(x?K|Oagn#i^4Sc-aBg@zg7ze zzHlRUaYXmg!6VA?>Z&jCH+X0}YWGu%OU>g#m1OG&l%`F&HQ2=i!A3b+ZXIZykv1f5 z(wMB{=BooWPXr6RR=h)#U0x24Mse7mR=RJ_WD10d#;06JzQ4SPsTYK`zCOyTfo{^mBDkhYwJ%27us^=d<%nHWocwauS|N?=H(K8Xma04 z@sIQcZ;A{?ECO(MmGYB?e2r~@0O_IKM0NN6vY3wuqOScR39x#EG)=;8!Km|Pkf87I9&P#FDPg1vS0GCYx24+& z#Y+jN+N0T^s40II0*1lhTCXoU`D?4n7&p};tdFLui&ZNkZw3M0?oVDoOM_Z>Pu=w1 zkj{_wI7S~L`BkSg)CD)B)VTYyI~l@T_)5oJRAbP;<9*XU0~5kSP-|qjjjW2hW}ksL zicSIXTMc$zd?s_*%z->$Ma?Xq53*{XpGo1O6k}svkQ#Pw=w!9a;!1~YEY((f{Y)(H zxz!5R-uVXMzXJ0zbGWBm_Pi-PlCdPBnNr#M2ztDtV!jrFSeC-0hX4gZAXZWx*UhZ0 z3mV9cl|wp7xpl58$ahj=AoA<*=XIFzT8tg zNKa@#gA(hU_8UObX~{`R&jNK4&Nsv!SW4cB)4qn*h29c!_-pYQc^8M`>36Yc_(xef zRYz^75k68O^Yyi0Q=#IbGYvP7uVVA==CZOnkQKz~9M_o=g}gt-BX?H4!EdqRgt`26sLkvm+mrDD{O9%w zHY9hnn$@%-Tj!`XqPyyPvr^`660T78RH^lL4(jfl)5%$36~;6>`4N4);JHRC2hLVD z7}`m$r$8U!+C|8|w6|a*y6r4Dn}oy&6{^@ulj(GOJrn0%FBrEs;JcYp9&bY6M-Sz% zKYP0`DMR-217)j<*SU_L(D(|D>vmUVb8|z>b*Q4%^uekO1ZHWD>#6!$X6rIkc=@lH z(AQv_Hpu>q+*pE7t&LW`9M1gGEX7Zdlzw{xWuyO{8|5wh)nr&#Z(EeWCLZ9G|mlOHhYYnJ+M|6Qq z{*OO56HgL4617L(WuDe{zeZ}t z>*8uTsR25bC0vN$*@|l?G4RS|Dn2Z!z936H_lTZd3v5EZIRPjm8SQE%X*}So!oDT{8x!bSHWPFY^X8kJV}gqFPtw!xW50VP|IyZ%0`EdI3kk3H zw@C{t+~ExNylYu-t^nGE8zed`RcUEUBBD}_2V@~bZ4WDL(4HC&9QIO&$3?0+aX;?^ zF|NOl7?KOVN#bP4RpV)qyZ@2A=#HrV`TxIue!=>8E+u&JF~dKZlD~iF!}kyWC?tNr zlKScn2Als>ey&R6r_r^L{lmX_U63;=Muq1pKwhDF)u8o{N+M#l`tx7VI{3tr_pp4g zd%yTAqw*e%&Eh{D?IkgB{CqA4N$-F<4qP(he>G3LNBCc%l`ja+$JUN(H0KxaMbXXt`Aqny!ask0qZ?(%L}v5CjSZs- zG^8@41KO76mAE4Q3RJziP!g5ftXTm~5`DEN8^t|~!!{W}HmvP7`(4`vThpsW3my&o zbq5BS@9cN>7(5*kX3$~*Iv;!)x-X_4Tj#v+tg~HM!IVqO_l^1H)@pj3PZT7!WP&rAP)-u=Es3U-oBzSr|@0+|t!w@kRdTv*H z4WlLw7Mh9d(tdcotC55MFqJKSD4tY6!KT~X(e5!1PU`Cfny`%JfJ5TXiJT4$! zt+dccjXmx}$hZ_XYwf4_#;8BEEqLn>_T+Bb(uB>|+*OwAygjwfj+~qv<1|@hq@^eN z2xFJEzB1!sDls4rxT9(gLK$kjbP7sSq|2S1TV`KRUU(9DzhJX3Ge+)q0I~1N&Qm);)0D<{G6ZSr6 zCQj`gLJ&v&&qu$uoT`M~&PM^%S)^Dw_qm|6W=25$$NCs!h}CJI6>q~C?SJlJ0>?e@ zY0jLS`>1Wi?BPWf6*)!P-Jc^8h2|rt)KM;rE_IyVEe&M+IT_emdMAtP71_60XA>gh z;`q#m?u53$joOt@q5S=PYpWG>J^d5)Sd+n>Kx*14VBG{poNs>S(qh~EJkzbG+{UN* zR+Tm;DO;0AiK(geD34v_=ezMgFl~&>B}d2h)b!>h3gqm>(EU0O7tO8B?TXc$J9yWI z*3Y&T{v%ETp{|b+39C3{=_384+B7t+PqQJ%FKDq@;r7pzsXjdkRA8w+%qdCr@KvY2 zhh=%g7$|D}FEGrVHcDeTyT5T2|H_G@RYGMqehR2+eu z6to&Hb$tRxJR~C&ouvrp&brrD+BY-cxoFR?sfR%8J(N}L1{X8;_C3hPjt?+!?B_R* zhsfFsP;rte-|W=Av}e*k|9?j;H+SzN`=39Q(vzFz`3w!SjxBYbX2Ek6?nFwpL@#v5 z#eHAnG46|*gY*Kg#H%zh(5wC=I&^E%mjAysuj!}v5Hwcd#^mi=%V;>NcUQlisY<-$yO>+}@V`hOiU?BJPw zA7?mPebjBTm=iG7Kg7zQtmF3P8Y9KXck6|%^II57>$DS>j*LH zZ_7!MQDPcmIbZJPd4SSgs;y(jBZAXuU;tTF6;aIb-Y?xz)wQ29GWCix4W4jahSh9@ zXy~}@6aanggPbc&>x$$)pYg^xa1-Qa0K>ZZY0IZ)Q-V}nEJ;&jifqV(YS@N{Z{6;@ zou7u*=Au1PEL9CwrQ(L{4DIvt%(oiesbrchCvlcfivZv2gMPaAPP~u2LxoXuj(Ii? zdtCp_LYa3yK^3}oqaOIaG0Tvb*Nh{{-FDV8v*xHdaWfh@)u}4uVUf-gQwFPhqdw$g zv9(OgrKi@T7a#V+UkyD7VNX$^I8~aF0^5DpAGR?9#UAY{IyI-puiRDvxE`|?Y;ZE? zDQwH1$bEkLL_A$pp1n6yCOJBau$Q9G^m!T%D=7|i&mebd$4_)FBBEY-&3x0M(nl6HH37cqqOaa8@JM5oY!!+I5{IdPfy=H{vlCgU(PWTCK1g7vbKy8 ztWn(*s;t`K9PZ6Z!j+*|#2$Omr>{jPScth_MQSn-1_1HWCCHW&zCd;h3T7FWgJc>{ zRLvIse54{!fw_C3&V=pK@J^ynfX`L!Nm|LuSn|aeEZW0I$E%$X+xaIf&%6mOZrn&I z=d*Mo(r%{CQM;OLKroLZ22K=f!5E4-X ztN3zoTPJC}Uk+sUO@)VXtLr@FQ5veeJjE)~(|_hsrns0fx)+-m`6B*=iz#f|iE9LdG zxC~$XoTRN#YxUjTb9Vq62*=Nruoi^e4+|ztnJec&9!%TGXST`nwl!~VwL8s6UZ~|d z>g7qd8;l5)A1$Ejdj1#B_;$s=CF%Uox#rERgSOXHgp6Q~?YwbH-FTv6isEJWQ(TZw zUuYJkq{Mo0V6@4U^=?~6OYDKo3d|`!_`p$#hS~{u51*EArFCB!tw(*A(LX~^>`maq zm8HdFdZmAX8DLsrGXl%19g}g^_{RNPL9?z6o&ETnyO3%^FAK4%Nl?+8oGM=KbQ7T# zPoDbWI@qIK%X|BjQBtD_OpD3^Bo#ZxoF`{q6+>Hod-kBR(vQ+(n5d!tUNT z*lJ^@iuSPcU03qg!}l6mL*f|TG+>dH9yAOO7@p}U#J=(x^*p+x#7xiVLkcUX8Iy(< zXn77g4r}4#&!gDL*l+|6_BljxLV4~5t1J7Ug08vQ`%W=LA5Q~p{nwPUcZf&P2|~j< zz5b)bu%+wb-K~Z;L!g{ZV0E{G<<0)R5TWTZfE;~C+dfJimH!zn;Ud*2!|G2};-#u3?qDvzBbVjCO03IXaXAvRQmq+j+}9C^(cg zM%a%f*Se-ABlR?bHrZK(YiyNmLK=11`ZtlKi+VS`lK6DajvtnVBmQ9iHF|s}(MYI5 z?#5zfq1Kk?FD&Egl-g=|LG^qIZ&AK|g8Ouv2fkS4mj+&s&f|0uWt*x=7C(dUW<%HT zxo^3iR4}UKgS4^z!Dc?{% zIamYD4v>9sm=Fo2#u>6Jo~$ZfzB2#WkbI!Wm|awKPOYqkb;iU#pe4YLQbbPy9#k``04LCZ4B{(jni1d;!ttBovv^WOKwVnRAxFm1mLqZXuRQv@!&y!jOO zaZ9}(FrbH2U58E_bXw3?M0G1A|HT$9 zi9*QomvoaRZMIh+Ne@tZUJ=j5jyzFS{aI25Dx*|+IDW60h*(wGP))T0<*s{B2xL*I zrKbWps{gHpOHu686 zVL;p*$tP&t!JkkE_QkLk8DYFUQ1B_akme~d_-ljj{JJcT-2dcsI_5m!gyMu)@km2a z?xAeC$5=vGJDy9a3h&>G0eqB-Ga?)>jSC?uCRVd~x^|rVCtw1D_yANy8L@T&n1p7f z?+ZnBRRyIknG3|lmYT_kM+YY`VB%aj$4GmvdQnXo|ltTv)9F+E{_~5 zCC&o`&!CFV_>U)U^W{~wj!+RwJtLU%S=Tt~4$NSE%fxr!9091Wot?aRPNVY5u4kPe z5kMjhX3}~@;P9cNQ+9a7_ld!g=h{!D{{l8ZJ2SPLv(z?7q-|bLzvJnBf;Z2uM{DBw zTx+Gila*Vulh%@4eSsTVNJq&_%VBfMmo>=}-fq-3^39#v_zl6`BznO~K_Ur}{$W}V@Y|Bl@e-H9Q5>NR|gqSazWg#$s3o^>E75#WMYQh)ahP%?ZqVX@s{nqa8tc5-+XT(W!JdjYk&PeH4jaCA2pL>lbcSby(KMysvZ@h>!X)SK! zTlr+ru*jlRz2P(Tu3w0qvm5s6zznlmi77cFNu|4h)sd=lW>t~vH=Qg=S+Hedxfolt zm`#!4{>zzhwR{|a<%1!brJKj&`?wjV)lZ!=%GVK0CX1Eof{cyL0mjkPThsjy*rt=G zwT>c-K5AQIR}*Hk`!Y;fmHJ9syze`JZ}-`(CWH~qe^6w}l6du29r)EWVq(JbTf62` zN3dDXeOWa3dz}voUm1(ZU3fQ4RIL1JW(_3j%6c_giH+k~)HDDQUzQjP`}9iA+MKj% zOkOUL-`p)o6*2eOysY|CdL?bKBdJ$Y`)BaPe5jypr=yB6Y9i3dJqDlW5l#zey?%6g zMlo@I5I^NH&uoQs$vOQ(<;*>!3S3xs9G_*Eoari zXm2j{kxun0iK+vRh)KPKKrG|0nJT$cLToS8k<*ckc@dmoEr=VqZj_|&5 zn+??$*fx~^UP$>Rrh*c`^$lpcLcLOK{q%Z&8EL5sR-}awa6g8 zt*y7k@_GW*sf|L?J4$65s+*bze|VJxLvEqmUQ>?bzH249DgJ~jN;YF;mP&)l@TmNU z?q{j4>z#G9)JmtgtdUOq7$$)Z>M)vW$i;ZBd3>l!pBHHPws}1NR0rJNi=R)8=ReRe zf?ggO_QQ#_^T}I#vx}c=&oAO3m(0F;|9@DOr^91IhYR>JxH^FLn(q}wbp-$XQg+9n zTy+H~jPW`8h9JxN_*F-8=%Ie_*v`}ZUfeae6?ibzW6P>*eD>hg7%rppdVm5g*use$ zr8=`_)c#nz2z|Z9*%w7WT@qX`=T<#37$=DF2LQcVz+%F|F6zmvlz*9$DSw0psxqlp zGDWbY9MB^tw$<=4Y#6Y}ciW76srNIbSW!<+TQ`q{5{m5Tmp6*DD|d!*ciJ7bCRYc< z$SgR1ZC1M*71@caxn>Y^A7|34J6ft!*mGMVez1vkeGRUx zayVw8XY3DGPqaoT?_^DH&7(;Vs;j|-ORcF5{x%-_96eB|-Mm`UE2KAF6sPun(hgP~ z-qk+nPF;375v6m&?aE!YO)frP@Ng&R<~D8#RT9|Sx9=9()10Z4qH(?n8OGm?_1a#E zI1@S@$m715UqL&O#w(+>Lhe@O+hye9#^U_xD0n5dQszN&9Hm%54UT77FWK(ZJ~!Ae z6rCk|qGoL{`BHs+i2SthbJElW1*9uDVi>ivB#b)QBu)+;e-sRE-5tvZZdJ%i_hX#6 z*Ms{kxFl!eg6n~Ap0RDHdxy5lvPdJ3Wse^AwtYmjCJ8ZrCEB*d-I#o71^4*u zg5mn$pBxZ1T0CF>j&jTQDUy*s@Z@)t(yi?Z)U<7p;yz{NwQ2Up_g+yEWf3pZ8W}ky zd%S8_{KIhN}`S%){0I$K1L}^dw(6Wq4V|H6MyPSc@ zga;XL76F+E~c3R6n`VfhsQ-(qv!>ze<#8#S&Rk!W=> z*@|YTSaYW6H?rQOTxX%tm z1$bgoZA?|950UjhM^>sT+p8)=A*E|;wI^@%-^MAjT%|o6G#5b3S2kyx-!er+F=_oe zIsHIBS^RfrGyuA0V>L7bJwn}WS(5W12ugYxn@NhV+N9$KQ%e?=&Pm#qzX&D6Fa;m` z09D*SUkTy2Woq!RprH0ym$ljHC?+)+1IZz`Jz> zpMNt7Z#(o#L!MPowKd)ps<_IAy*!k;kAr^aKPO*i_)P-X7(bdsNR9U`+3}6%$T$oP z0E*#XI04ruKm(LnScE8jc@3rDo#+Jps|orwwOcEwbg_`Do4-r($Lg5>?0v7!^MUR|5)`d> zF(p}ugfzEj4fKk*i087fvNZpT5WV^(P_NwrAE7rRFE6OG?j=jb!raB#q3|C^?4Mr% zKR?i;%`ScsqYD3Yvy@W#NrV`nNLnqpVmk!YVJ-9i3!4l|9znmVMmve%P5O&8PzE9G z4Ea{jAB)JT%CpXJb!&?|p85WiApNs2!u?y-{m41p>+9prkEuC%>7R+glzRt3Tx@i7 zq~h?vKjj2?-(|i}(5G;ZQM@+PE2zRfRXMf6-cio;NgznikRU3uGf=QMQsU%R3+Idj zD2i`&c6D0B(5IyO?NC`oRas5NUu|c&k5UoQKA77eZ=kr|NBE>S)ffAFp-U^}|6p&} z2ygR}V8$x8K|zF&PV_q}`{l@tbShkX9e~t3TRm|83^a^&x!#P)VM%3%y|2`(^)^|c z?I#O(G%Z~l{Ay3Ang1E5;KF0B_w3mj1~q$cCM9)su_R9MTjj{oNlFhHni%)hI;h%G1v& zn?lZA7C1C2GBUV~J-H448Lr?BC9eVbi}AF#kGBeaRyx~Pyq|-NDzfz=YQ~xg@&(+V zrozHsferGD0|fCPf2EEhLNEVuJ*)!^Z+ZYX9%o#}J=N74n?t5tzFR9Q*se|&)D z=OFX=$zM6!vRx(aTVCRHK4$VS-swFdYztM9z1Q@{J1;0mQO87lDlDy~zN?WJR-(#u zxcOwUg@K0$A1KHx%m&37&W8)UirkNqnm^M7HhFB%%wAr4{WA#xYBRw{&p@rRiY9^XTQX)vFu!^!;Nc4-YG896}HWk*Cav zVN!opA+N)`%S+2z8XNO8E9QpAtuBWIoeNYe68?P)d5BZMEtHKpI=NCC>ndf)^TN`3 z=;`HBWb@REJlcmWS)hSR@yhCRTNSEa34sq6TNqdBU1{edLELT>0kPaKb#?i5C-;Z( zamQx%OD+Z~Rg>B()4zT`2u~NQ+z$`rfS=oI%dbkh4}WNF{P%;95C|l-n7(4SeDt<1 zZv+x`44a12<#cqn8%2mVH__V{!@u{83_MDFkB=TvVs&u=cF@s1gMHztOVLC_^c<|L zD)&j-Pi_SThxb}#WhSG}vw)3Fv1iSp_F{4?{$c#T=hzSS#P#hvav)q+9v*~6pjW&t zPe{>im3o_F94h?my7vddT|4`cT`7&S-9%2>#>IOjDiU$6)2bc%U-0|`8>Co>~ie>dH zDJrks{oF6~rKN!wSia3H%%mkGlp33FF*{dHmO38X4Gy+CLJqgs7qewE3Uk7AAom#^ z9Gw0=>HePI?tine15-Nz9|HkawjyPeIQk4CmC zkMQwHNf~$W#x1ziUExi5Cq9n~zNcej;3FaAuBs8~a?MS>=8e%7C^L+I>U*$vM+f$R zXWlP#4`;hx;bd`yZ>HGXA|xPaY&@QhiHx*9);Exlh?GwM6FvCnle5(T!Gj2twRVDt zlyPfqZEbUCbEHNv&O{FVU$=%t2UIJm?Glg^#{cn#)c?C&`EM1+^?!93#S;)>P!jlk zhF&at5T5bpsH^B+bn34Kij8d9-$3>~SkE5b-*4aLDV^1CRj%;U82(!Uau4>uBpNUN zS4_s$$?LwR>%Z6cke|UTZy6jMZu-~omc06=X~N#&;SB_+`byFeV%?;Hj~cQcnU(_I zY>Az|{>KmapFAHy$20no6|ETop(@#mb`?QMzLQoIY_X?jXPw3prkyb)VGP=w1M{ku z%5FoC&=MA{v?1f5NrB=qgcap1YVB_7OK7jG<9>PY5}U$h-CY{`?=_0V`f9m9DW;A@ z`Lbj^E=(=XN!yE@dUxGh_y3~pEyJR0yRcCO0R;gmkyg69Q$mnVhwkp~66u!ij-k6d z1f;u$mhSG_w?5DFKKj1j{*L`;&kyG~9A@U8>%L;Gb)M@ydoz6nd7?X4=Ifjh{)mh! zD+&@Nm51dECxKm&U}uz*s}Tv0qpw|g7bk9k1f@TbbC+-Fo&rujUS^qqTkY*jzM#6f z{ofY|DFUEV@zV)&cHaR3F6ov8wRfIFpZ0PE&~K!r4E#@o^qK&()_t?2EJb7`xk?K{ z2ze@pCihCC%rq!!Y28IU0l}1y{IG^p65R0w+*o^0pPvrUEs05 zaf-1KgNLR-QERq=S@(?A2hNOh7r~KcGl#}@t>q!|;+i;GFL4P{CYUH#?+8RP@oUqW zqcJ_!wBs1K&o9QZc60w0bNMv~U*Q3#5wzF)k%gaq@G+~aKL8BcD0lyyEK$ri(tGPI zYS+BSF& z7o1ro)rH2LEp#f4s!+RXRcnz0YZ4#>Z&zr;yveO+~e0H#Y&XHPnHTAVp*P$F(|TaOt(HK5du0VP#e zgRi~mmUg$y4OuKz9D~&;Ew@b;>kfk_Pp6_WhI%E3E4lV0QwA+9-PHNgSGy%%gVj9t zKN)|xhOZWTiw=Pu=w56=yG5SbgP1a@LYbD_+}NYmtIdtM=yg&sjpqKwx>&|RZ!lW9 z>wvMPfrd`8M+`2hBL-niYp6FKuY2Z=M=CBlNy>q8W#<}K_b(H}6|JK(nGJ7FDlinT zE)@^OyDDOALBrpZ@WC?YTP_Z9hchnZ1K%2|W=mDvB}Y1tYnv@=5`H_kKQqDqJp5w% zm4EIFh8Vv>&0FP~jZJ#v5WSTU5(Sy>F^u_l4G0!%mO(MSr5ul(g$os{TZ(3)As^kQ zF_tK)Qv0Vx#l^Dv?~H?aXKogA?=_G5DXb^*SiC$x62{Udx3F7@YB?pmN~1^7MsaQ!iWGGFrqkSU%ck^S}DJyY!69EqN~P8hq-@kqU-OQX&V-> zf^f6JIk`DGHZ8JxxAr$9@PUCZ`eUgh#d27a7POcz&d=@b9IRzOgN&tSsX+%PFiaUI zHa0+v^o@Z5*h7uz9UL5YJ9tFmpXUeW=WvYYEn9KA*sEm7y!Xmv7sgfE1lK+?3P!bG zJG3^`KvEwL2G)w^&$xqrkZVh6e_rkmQ@Fe_h!h3k!L)>di394fyha_iP@`h~DrK)h4 zU{XG_#^hjUBr&?|;UGq2CO#*6`r)QTgk7_V^3`+htU>v4ad>6Ej{pg)5c!_+D7ORV zlzX22TNR+jXlCo&^`(D`uJwSjp}^eO{dBrD$G+v#w`W`0a5$N_cZFng_j$i#@BKmb zVkH5S1k^>Rqkww(72{(zSS>m;M%U1i%7kqabAjI*?h@GGK=`ULH7d zrfBb~224_-KaUpEmk4o8DxBQW7k_OzdlO@*cH8iQkcxc+5K0d&uiQ}kw>b|zoHR9?#gKWdc>cw@3sR8Nk9|Ivi;_Yk_NlSS zsw}6ikM2Cx`TJNWm(YwxpNJZXj9KJb1l9cLVvY?8fe8A-6 zV?8MwWkIwaD38yMc`LU8+Q062L`7Nfv1WRrqOj=w;g(m6hrLOVM8-0yVq;B;G;MFA z>Y~AlzKsC#>S@RrhD3jG8K33=^j}oihsO$ffF}rR!y8A$wFx;J6 z^Tcu@oDkY9G?VrSnqH@&wjJY9Ax%Mr9xUJ%)!g@ zx&2VdL7>&dP*Gew2&z#RX7uhj0J6+9n?f5sj#8N zu#W|^c!If=ZggX^WvbK!d=I#3)ZN`Zm;-5*fMv*`$B)OBizv8nW7fN`w;k%?5FXga z_mi|0-s0Z(g@?^L7-;5+X)L0t~?$*h}UKQJ5rv~)GPI=tiRGCR4JET0Qy z4*}ZDC9rVpO1~A^S=`+niCjLep0`%^XL;U0JJvA7-;Mi9^{4!#-T(9WmD8lld_!Ux z1uR>}mET#-e5zK#;4~)i71pmbs5oi+Y)oBw6Z%oCf^_dLu__r+OZ=r@lrwR$n~}bY z&uryg#s|;VFmI;fhWemW2X8b_^K*M`s)6rm7!LKbJNtHda(P`0f*Wx+PannA;yC#+tSQeOZ^(rO(!w%aazyNdX-EHi-754 zKKHFb=>E>>ur6n#5z=pqpZ+Pm+1_(vQ|57SOrk{YRE&mlR98mRfo$^iO9vvYHXj0t#B z{%WM+($d3y16mlsnQ*Nw0OUIrB*De3s`B!|qeegtjzPyI_n4&X149eG2aG)&<;fiw(0%%B?1Vy~{vd2~6aAtA|0~`Q; zd16?5e=@%CxIJ#FZc*E_YH?r!Uo>U7B^e@}30Hr3L(p{GWl9Uyb)GHgSJdeG(ENXs zREI5>^6wn66?2-^kOxbN=5|aX^Bf(c(QR=y+89V_Iu7H_*OOZ%uP7z(2~Ork;v#WT z&EbLWwaEJ4yHZ_f)cg>mq)w=3reQGO&7hG2dtW38vit^_KKXnM6kxug!+$UqwVp}p z1G@WY-_-eZWHim=Hu!)_O7dCWklC+&3aVpdVg!V*(Ym5CL@7xsa!5X8#89kqJ6)Ca zum4zTEH#-$Rj%P19U#s7pq-US`d_U#lvvpB z)JalcvrCoE*%}yxN=o-#m0CVHZk8P{sf(u>y$A_o1m&QK; zZiygOWV@5ao2mK&$i>I#)5Gy{@B*v?J5yJCaOmh|;pj|DPmUVaFE@e@4#~~mnU(94?ck1)$87YQm=c! zrA@W#nw(j*M*%B=S|Y!PUOw-mlKVo_s_ZPsn>0LWhy6Ydp27PH0M^Voa!>W&83gy5 z*>I{0egaYES11s^M(`B~LZ+za_I7{W1@sJ;m!r~^4;o~}u&GiDe#*rFf-ePm>evx^ z2BeXlq)vm{SBOHH@kMKU$yI7`{j*uS7Q4o}XsTf;a`=j0mGk5ZsIdF|18K6p{x@h^ z+1hMdccWwNBI_XsGUy3xIOsO8P$MBG=DxfeF9O^UTY-LjC$_(KM2QN7siIs^B5-D* zRonk65`-lDCENEYoZpU3Og*$WqQ>1$|;DloQsx%(bb>E6sMy z(gB%ZSnBSqYXADmul)yGc^sp%Xx8rjS=AMOK$AJU<)BH+T{|2BVg0jzC)aadpaiDH zIFQB{jzRsp|Mt-Rmze9{fAIeKPs}Rn9UGfJ#>08(CA}!|zi)l7^b-^$?F873V7V?X z^%6QZ&)(m*`1kC8z24G%`!D+eXzqFaZ;g%pGVs4~$bUYdt)5PpSf@OvXB9Bf23oLG z-U02!e?2}^WEVF2|1AE0HX`|>CJI2APh2!QIJR<2m)LDLUV66!1yZiE$F>YX|KHMa zK+Vww=qACf(t4QROU4ChG+umZS!}sIaBbV~_W4U{;_vU01?&UPoV;3y_)cFhea)Nyu|(ey+Nh^m8&SRPPJGLsE|ab zeA0mF%}dClM(teZheGwnOO+zl7?qgBNC8E(C{)Yl{aD4v2khStohMIZUjj8NYRwv- zlh%=S^k*Oi5Rl#aHY;ja9Gn@G@FN)7&WEKmA_^0+QT&Ea{;a~K3T#OVWLR0u?g0im z>FYq2a0;}*7@aRR9*+CM1Jc}gi|$Jq9ec`5zu&4S0Tu#C!UCi*C+lt6AOEVo0pL@H zBSjJq6Mg;5rZ{qglMdZ-C0r*KD;B`XFqT>c&OX5if&r)C6uBd5l z=zC=q!Swg2{(2I^IBUYi%Cb&x1cNIp#lh2DDYSh@fDZ0#Lc$r{0;i?ate>PRlx=&_ zKnPF|2bJU%?dP078utW*CVK+Lwrfp`tE{`_S-&Tw3s!`(wLSR!V- zcSBF#+VF+Sb$t9A(f2$50_?!GjlKZJd5;TF=%ieaMu(LntaDk1@4F`N4+)mvIfrc# zkkx)lwKrSa3hbsaJowVB$ZUaC5DmZ{j3Hql8if5)m^GRDL!{SAjsl^mwD_tU(GQEI z`Xolhn)!8`(bIigozH5&kHlx$&a(2=_ita>U7nTMxT)c`s%42r_OB}dSi&0MkD2vX z^^VcX*~0^$N?|$~Admj>{y=Xa_$8Xcl#6UjrX!i|R? z&MhpCwx`_d=#&-yj++T_5p%A-<)LArp@}*D0BB(Hv?fb4pSyUIQbhcCFDVzGz2qRZElICMl+gGSht${9R555qWR65( zEglTmP_0#zdRA<9P}9&3^$y7uDnx5mkcfog7Z&8d2$9`>v9Z1(k9)Ic94Rz0X%ZFaB8V^_3vA()fa#gcyfB0 zHv*aR096_P{BI$?1WShwFMuKJ0hD|F$Vo}r$dbl*W7TY0juio^Le9npby`f#;<~)A zrB+u)&ibG1!$EUXiy7m)OiW|O+Fw)_=Ers%8tX-~MaASOWA1`bRBV?%*OGN|JDX9% zBrBwwoP{{-LB=QM=NGcfEsO&LQOd*OO%D6gU{dIS+ku479UT!95gi{7bmZA?guozd zj86jgPyb%@UoZ##0V!eAx3cmqeoZUBrLw?N#8NT-<^M{RkFRt3*A0mJF3ya&I61Ey zO{<$17I=W2#;%Z*qCBfII7#RyS}On(C=?lyy0ME-Nl8QD(8v=iDOnW8q;)ixh*k~g zLf=j9Btn238(7gfa_?RTL;LrJN=3J7I8S1Xi-{|1h(}b8Z%@EUNd5~c{cxcX`==HF z467{E%6fd=g2k_N*XsiUAWI>tV=dvKLCfcyy+Zqb0GzuGSNqgydisako+GYrvF(tL9M1=EZLx`>Gn4CddeB zo4wK-&Nb~1!9U`c@kq zX(h^BbZ1;{EV7+{et!O+rs$uS_NoiGrq2Q>IEiZvl?D=qzHJ2)12gL;F@3F!utcp*^*J#Zz{>PPA2Q#3a#NF)&5)qfw^vb7y}qH1E37Q!BI1#x4pVM1 z>m5DO1*FqHnC$_FAqnb>%_K`X@U(4|&OtIGybKp77hnP)L0Z|l{k0!(Hr!TDz$y}O z6){{^h*KD}s2z97B_@j-Om)tz88WEMpWFd(Bqd)+gUcVIsCD-f`UISfROE0ka!+(I zq7h(e^NR{{?V=7)0VK=jx}q(KoPzpijwmFMLC^G46oXBfIyOBfBinY#OHdq>4jpK4 zxvYSg0eI8=?AvZOL9o5mgY0j&{7JySd4r|arBLdB@`e$c#)TH$X}~km+{(S#V^@(Y zr2DBw1v4v)e@bR#s?=a0#C*=thnEgm2JV{{QN8F@P1V)ryEXgTwSrakI|Woq{H00R z_$9x88@&mjBM#-_tqs7&_~9ZMG9PnL^A#wMhHi}*0Q(ZKX`XAnTFE^evg|urDbYve zqSt-YDNxMJZ)0#kBkq*`uqo+&T~;eG|=L$3!Y#X0t&@i_n|CfB-%y3dzOzB13Azp3$wSV?M@2rbFv`UKatFsBD@4aj)9g`G@=S zJJ_`jcW~LuN=+XZhf1WP`qz7V163OcPn!@bJ`iSzku*Q#j@3TMc2PRoCp_NuxC6ch z?HyHppxcE9N6O(Qg!q9ph_#UF zwu5&llucUKmyY*OI>wW3WWUf9phNtOEHO~@WE>a=_P@1~0@tFY z2HbfYP|*-2wb*mDlOdd#BsSKxi!e;}#9{cP7Ng&R_$N=glfHUWbn7@YETp!Pu+4Md zHzbMqx5kN)0Ayj=_H~=X+1XzT7ylX05VkYm<5NBE-csfL)3pYW3rm{GhxbpKE{78{ z4yq4yJZt;2{2PA>IQ-|G06An4U^DKFozL;QwO$;HTviqW?#iP2nHiL&N-4eYY4_lW zKSnG537{C!0QmNqn+sDu_x;i#@M(sV$7CFkpI2aD zCF*fdO;7q^piq~p+Y{*hLF4)jWmlkYNj9BR5xsw|*%4UaSBf`kZX5pj?> ztUD_+8JH;fqD{K9CQ+S*0quU}9e%^uf8?*9Uw9wcz@xy!pnp0s)_+^sdwhllCm4qr zL;S5vJb&4$4r%Z3&)Y}(5}2Np7kfKz=plk}jsLn*nZ{ehVHOQ)`$FGx@%+Xi{y9N@ zq;IY(9Pjk^Y-#Ezv-1che0>`n9(Q)G%rytc$u$_QiDX}jna0y$E%IN#&;Q8gZ<_WW z%)=+6aKHG}|K92M3ja%o0o;Cme+a?+&pxWd{#mq2U)Q!s0Jq`p`-;Us+lW?2fDmDL zk04CG(67z;mnTisj;5vJe=Z|R`v2#x)i4@JhhcC61m1RP4t)dx(K@KdwE(u?4w{j5e`KnH3KynIhj_*w1fYu zw@Bat)B9D#M;V!H+LYM%?1(}IIq&wxMU$euks4Oym$s!p#-25Z3+Kv_qdL?eGf(V> z;qI&m?+&^431!mXy93;Q=hbR>i!ZWsnJPJ%U%GS{RH?zm1eoCH01}0fi;Ifx;89s} z9ep|FWmNFEF=JASca-`2XmT2gq2d0Vj#T&C+nbwuTSZ|PNOHxj0=wOsk)a_bCd*c+ z!zctHZzKz7j<*W%<`)eN4928M7tptt)YU~}Gmr~h`*I4XgPW?lUYD=VV_|%v>Kxhh z6~ic1Adl%&3hFEZ6^^o}?@z+&@0b8axaiL8(lbQD%k63IVZ@}Q&)J_=d+(mzr1y#a zEa}O4SqQ+g%2nlWKasMGihuLSrh4PEP-cw4Mv-|D0PkgV`DO#;->FTH&GGq3rGeD& z!1wfy?m^8l{Eie^Q&4I4@bkjKn)Uv_kCHZYpsHM;)I@xrv_y-b?t!T2lG$*WgBiAC zUz45`DX-gVyEGp%P!|=vku$>A;IS({Opwo$u{y-s;Sp%<9wOG`=;^qrbw1^kjiqkP)qdbQY9 zRp|kCG_$CvLS8`$7U^U9H(w0c5NI{#!0=N7E2&#li4opc)mL!?Rt;o0E3p}Rv>kA` z!FehP-`CeSq5(zX7CU}`DGQJsD=T_dl`D+i?QULfZ{mD0$pwQ4&tX)ubE;!HfGk|% ze7j)5VyQ~sRK{Jb^~Y-S?ITbr%HkHH_&yArnrGC&M*uVl)QwM6u`o2aaqin@e3`;8 zg7yt1(u93m9v;HNqz)v~osv=>8PGZ3@6T70*7Js`&F&`oDXDF3K=12a2ocFJOUZ5RNB_YKj`o^E`rm{>^Y)y570>&#!jUGXMAO2@8K`F{^Fi^$9 z?8lEEbw`EhOt#&24d+fDNZ^PfA|sQdQa<<|@2{d_g4f(KPG;vQSlPI^D0=7WvokA9 z;!P+gwd5Nq8vINRRuDH$MetiTp6x@+ienHMH({>Cu3SF77pn0Qp6nC)f^)=Z#3!=&WkX!gb^}1ks6-z+p3T3v#gF?(?QBM#+4k8SB*SoM#?cNH{+VL zq7sq8U72&O45#@$$To(^ydgy;9M+J&#cU?BBzRC#G0T^1+c$Fg(e_Ijua9_cFKk=7 zt?MOXqoPuZMn^uGpqpA4Gh{Y)e@qVH>@G#|_slti<#C+S*?wNVfXqijxV!u&u`byf zAi=q4mM~d0+!+vFco~6|)z!tH#@C)dGD8Om*Xc_+tS5h$@{p}&jEHBkncU_S6E0}iAn!*Q&tqx;GJvHb;8hs{v$)-Rs2`2Ml-qFJ`YK9^jp6p}s?{-4Ls-zK#^w(S4*AU2N3EgR#dBP4$Z5@mryxCI%)p#^&?d5Em;xZon)4 zue$(P(>mJ5vXL7Gy0*5TbemHV$++Bw<(7-PNL~~j9dNPSWyiau?E4xbJ>E?( zw$Iv}{HU*l^Nra1<_u3X2jP-ZebgIMcE8ECb#lw%W?_q$FaYJ|MM6fW)SY;fQmFV- zfbB_W286dn8|enl%V^LP;tLe&xX4?Xt68&Ao~U`p=|-5(fpYtvxl*afE->4`M^zZ( zuvpk%sCI5pG9K6_#xt!VBrOdX6M#}qm$W6ttLH|miVB~mS(stN@UWen3}GTZR#`pF z3oT8!oT*(L@Qo~aGJ`Bj6$0w&&}=0`UPLC*GHC;kLo=kA zg0Gg$QxIE4IXN4pT{8!MZU%3EZU*1h)_hScusrmK7M=e_v4nvLRl#xVElJ|y5hH^r zejT^$YO9L;0%l!P{^;YlN=CHRuQ^yy!eOp&QaW&oNN-xM1dLFc9nzuRoIh=yXhU^z z%Kf{11zeY&nVFf8v#M`CK6UIlg9hU`A?JvQZg;&h@~$o}i9M?sz8M$jSs{;64{fg_!TJQm^BZ8M9D{K%+EA{haLLnovyl7lp6=q+!7 ztvwpvHW^$|;D>z)ZP^Dn$MZUTNmTJL#;bxXcIO&cm~CN+5c(?<$R z9-_NVP11pO@hM``KHYUYOcQ5jRlqD`fu`6zBiysX{(J&NDJhrPJuMPjV{5MNK2l|P zh70&8Z7nI)&zsc%I>^&g)5zm&v_NZ!2Ihw%;J6#PQ7W!kY-s`Z-pY06s4^sgYAvs% z)YfN{5Q4FF3|;$@CoAmp@c|Sh0+BHxM5AaTS}#G(0Gocae_~-A?E+br5@2s7q=O34 zCaM5=4d^N?*D4i@0V9~JLMQ=ZITd5#I<=d6hNIot_IV{7{FiDVz9EU0vQUjMgi6ywk7lqR73@spn&%4v zHa`MW2wyY97F;i25efU)NlC0l~1c8PH*$=lk>crHD^ z#Nr&v&T&C=huo7ZOG``Ubb7rfPmfETa?X=qC*-!Ew=3%Z>9V5ei0qy^ruvqHgMx!Y znecVezy|4|#bNVmUN{Z|10m$omi9KqI2hWUe7uKWQBm4Zae9kTuO@#R=R{^WfP#kN zBBeklR*w5@YyWgL|I0=wF{5tlZ0I;G> zfw)wdK1|_y^iuQvJt(GcPDAj~p(gFl9Uo_R$&fm>a^vNhe8=~Tu=IEu1zCPxDj~+U zJ!6;w1vb5?s$O(lwRJs!k;f3)DklAomNty=t8Nb!lsB8n?f2pS^(I7fXR{Y9Npb+7 zo1v%uS&bGvl}E>Ff#hao(x=vB^pwvRXEVt(6kDH@lM9)EgJUCAh*}#Nf5vApOQI}$ zhARsPCdw-*`UIc`Zo*2@#!$z|1;1QRZ@k#Uv+sdXQT2f0z~>RE@f&FSOi{+bz(mw+ zc2U%JQ)LlNHPR=ucQYBL&d-p|IbYDv$j><)(9k?SmU|+w=QRlXNxz{{zBtXIcIZ0EIWws!tU?~a@uKw)!(A8Fw*eV^arnq<8hG>(gO5Fp zVf|^9CAE4*d@(A^(&20+ozc(-m#p$yJ{~6{v?KcZjQ}Ahr_Cm9XV_f>Y;@%D5~Vfq z!-fXw)XjF!sb@cyuq9?vY=t(4llsXbk`GUV7unBR<{A&*%M62)llR&ZUvka)W!z*T z(2;EhV6TYW<&8G_@diNiSu`DzavtdGkE+sHksbng`9|YAM!BV1S}H2ryqJ|sT$e@~ z)du#XEy*;av&H$7bynJWl$dAcbLGPnyzo_#5APEFpQj05Dl^HUhgGntxQc*3lEcpv z%mnLK&OvR$g}S9>9D14kfWAT7i_zJ7E9(En+dtgS-X5-4Vyy?!Pe7`Mh5SB;Zie4d z^#)RJ+z;xT5q6yaKGc`Y;I6XVH^M6lHy6F87vv;zIhf2lxcyXDC{w#b{6?j}Mf@~v zf^tb4=wUF8L^T|WADYgl5gqjSW{`esSE%tn5=6MxS|yl-|kD&t{Rv~>9^B6%VVnA}9?ipDOu zKDvQQ3bqiNjF%3=nz#?cFG|%_Py8Pj27#rwAo-wqD1z*0YZ#c>u7Un(k_9YDn_ow9OWI63Xyvs3U#OD$Uj)2UujrzL2AN~v7sB)D?tO;E+8&m&lsFtoF@!E zltn?3l-gIU8q z&g#i_0ND7&?KiBl{b7?16*y{|nx4z*SE1vjyy@9LlC{qmj zA^MtQ#36|d9AbZvG1%z1^w2hYmG{Z$9PkFE>1{l2Y}iABGv9R5yhZAwRITyAm@)hU z@s6d{_>Ntj@1dzlz>`=TDjg+METEgPIlOLntV+s4;%hb_Z3hV|NMKhOubUt=W# zx1Yzi#Uw=y3Kdo4P$y8a-$0MEf)`>^rG#Cuo5`!PE-ub%L(MgmRG!vA3Y;)Z_mJj_ zScBZPgy`hoYvM-D>f}1e4Nb=zRn9`@xbm9A4+LbNndhX>+*T>k!STPBH_J*>wTVt6{tM#9mx#Kths@e0rla1-m1+S}R%TAc@~YAfG(r&c!!vj*|zMpZJR)d?aU zy!`M1253jd_DB@;D3jrwA|W9ivyM^EfgWnPhZA%}<-Lb*bUo$RQsSf&_Hf#S_1`(i zKbG2e$VX!POyiDQ78k>dMuENJhC=PW^=y%$D%f+)Xq-lcJ{+-Dyl`SXi$#_C3`NvZ z!=*=7_daf}25yS&%}d%iHm%ozI!aao!vb@zC#C~=Q4^xM)YiFmj!Xe%LRE-9%3jyK$yCe-KIF&W6mBMEP3Qw6t(A~oK+yhdLc zxd4~K+c~Z-$H(%h&~Rz=W;1fy*t9r`E!W~TE?5iu1tML6UOz-v$l`tzuEh3Eir{r& zbW1tf>dK^p)+uL~%Fni^hYdmE%yjpAJP~xvxVgXQ^d9{ho7l$-51cf!3kzsYRyd>9 zovkO{b6=4ldsKw(hPl<5Tw@!VwPg#JJSONph%Rz_-1ryqErS+W&2hXaTZk+>bmDv0 zNRJfBal6uJ*QXrOEpe$D2sbxkn(thyc#1qJ8)JA$p`sR0+?U>L$F8*c%irW}D4c;Z zdA?SBx@cdyeI{Xvc(shP?WizxnG*--)Z-(I({9@{W5dnkvo*#YOALSfE0C6d1?Yeo zUiXD`5LU}kP|!+-e7b_``dj`_t6EZ%c__I!fk8e>Gu`E;%O0br8Wdb;W>KMl-MQ0x zDvaUC`c;g0@1>o|v+b=tPV+a)YHNH8ymsUhvde}8@QE~mujL8}Oi2OO0dtac*v*IH zk9XOou9pOBbBN>P;~TMq2BzOdK3iLhT`VWnxQPzFg8x8mTE*$mlv&*D4dDk?&)U7M zo5-t#5X($Xw>9!5$LzvF*8|+ct@aNv*KSl8#f;TzGPc4aUsID0n>?mS$HvC`O1X>M zn(A$pPVbKaCE!?4O;f?mx4w1pe4gOM%>q*?A0Qk5QiH#gVInnaHWlx*^?g*kyDZaT z2Efg#oT25PeR8`y(HCdegjUwlH=)%lMK{IHGOX1bg}T5+gk5cchT8`_WM*C%IZ%FAV*2wp0C1bZ zFAgJSvWVVv!!Gvi&Y8B{SJ^%2h*pWB(8yDgd^jZh+>RT2%!(A}&4cEuKs5_CE<_!4 ze;BYOGCGp0h{Mn`o}P>L5?1ug(_zQKoo6oUZmV6s&J{nGJfALvw954q@wgB~ZAj-O zmw~J9#4$?6l);rG3ZgxZ%j`BZV{Q``BBg~WYb+HN9wFozGtK9aT{5JihUvltcdk1oI#V94mG*={w-a2ye`pvy&*^xcDSpq z=b=VvFL2T0Qok#5Ih5Z_vQ%#tpX4f636hc$%PjWpgq+o_XkG*8xd02NA1=_Fl&1Fi z;ytSo4O_t~EZ<_=kh&|>@LD<>in~cTCzHXFf&Uvd1iF7}0oUlUH#efTEu%s+ud^&C z+@=K~P$GTd<&F&Qu4+|nu8W4rC((!9L^mqzV>D>&$)fu9h)cz8H&t>DW6~qaenj_S zeK5E^Gwi)*M0pwI5$-D)o(Kph*Y2>tPHwHS=N$1m01Bg0&gnXIr@&k91_(z!UQbF@ zQjqhaa9@L=rTIMC_Af>b?`QQXf@8BQ*CHqRRQ*C}XfJBL6@*9jBUQdCKa!bzdC3Xw zVs|w&yzd};3#Fc??x)j_Fw7V3YdE3v5z*7l-9$BE)ij6@4jJ!-8S~-RmY%s_L3>a3 z6x`IJq-6NsGn4RA=P%e4K;ms|z9vFPjf;yC_h7V~=ctfd!!*Q}CAW;HJcmUBH=my? zO{MLb$Eh_?d)K5kr6+tWt;M@p3|cJ(8Zqx=vc4{xo*;0Y>7@I01LWwM^atsQ*9J%D z244fD6AaJv6hl1lSkUF*J0R|P_QsnBJp8>R)q~|zgerh*_nRe3NiL;NF?@h}Y~t04 zJ2h18%SLfW$Kjb{~#vqc@p=~cYX9)b~UPF|vA1u{25T4ICJtvbMS(c*go z!BHMhB3^#l6HrYte!;!}%`##Sn#d*L3NO9sL*&|y8@j*5G|yls)tcwmP@-rUIm{_tTQ05FZWcwMCd zCa}@(IIz5{oC?iI(|^TDUak#IPPzuj0bWY2G`^=m4=TIFBSpo}3S`d=+amHn-$Fi4 zi9{x#L6)H9Sc(8t7KpqmxyRrY6hOWg2CJ3Y2@=?L^2^C?3ZVimZOF4jCA59F-Ul76 z!hYq5f!rEW7c}^-L_2w)&Q@h3Xp6ZPZ)xCjz!KNT@F4tcUO`J+UYogQM*_{X3q;oN ztkR)gAmF^I{<@OI=(1$KRL^ClVwYvTEM%@ObN@XY$GQbCL?ba>(I2V!?3^Mm$!Tpy zgYpe`hI4hpaGymq5jqO0}>(<2r zq=I@I`;BSKBov5_>w@GsYNXy_i+bk=o}kMaVkOcj3cIj0nLDf{w{S0pA9K7$lE6$w zYzhPgLax4SNMzR7u(A_ZGa&j5bTiXyMc$Sbx(Ny%YMHvKB|C}&{RAvA-H5D=V|W}( z^>;<~e%RSxAj}*~@vdj!{Dcq{s;gL#NkO__OnMj*;LBb#Y~(ITw3IAD!=FRam0aqz zJyRZ(4!3C-8x)!YyY-F?H|QC`nh-A&ZgG+t?P^jUvD{;ot(X0kVjowOJiz3GvsYai zq@mJ_~6nd^xQ*ej$ zo`Y6=b{pemkb1qm2IzW5wc1VHA7fA3pKthW$Is9bZE3DZa}#k`kMS`eoyQxo@7SAY zH8gWGr~lIC^io`0GKI&KbTdh*aBMpAdpKx%2Hn7ObsTD8`{Md}?Mpt+WJ{|(`9$7p z+#${ai#W7qMzm(Zv0(9Qv}z+vjEz$fl^i(+(~S^7O&##?eTE-<-7Wx)INo}II#Mi_@m7yDvWNO#4@rX1o;_pYZAVWG{Hw)hGz0A$?r(ib1NAlzje`Ek=0o zKU19?+CYR7(!C6P#9nR{!zq9I$AbVs9oC1Qbu$+3?8gG>!aoha&gv`%J*wt0%a}fQi}C_ zwP%EU7FR>@XTmP|6cnpAsP9&7ocVlxy}_?WYuzut6~h%#vkna&=em1Wi5k3(>S$;0f&cX50YSqi~>B|rMaQvrQ){9s*k;+~WikUJ6ubG5tHyrq- z*wI5%cyRagsg5o-&N5aM6R_5PctXp{D-O%JZ`~v3+Lt-Gd2OuNEymLMGG#+pW(vYX zm=7?drGbFaFN;6E*WtDGNju5I^2k2^te#f})EC@)W7Al4Ou1Xd8C7rWr`L)>meSe# zQ;@0GE)E+Cjvq}%krv)zz;rcWX5o#cYT8HZo5BreG8a5P78xw;OTTH0ZsPJhSQ?$Ou)A2EV(D9@aetgcqjzFqBulR^j5DADG=cO< zMeSSo%Wjw|3)`oIxfxfiYOKv9EN$f_lx}FSOLv2Qlx^O#@6hYM5@^!W zO7*G;=g9`Ltjpu$&Rk@GZqq0hu$fczW?~4cpToV#R*WKe8F~r>+j7CiX0G=*9}8w3 zgbR!7lDS3V5!l)?-1(f?$vvJmz8P%y>}=xc+#M-s0eA$Oqfh-t#^fx z)?<2Smrp;0(ZdDY=0$Z~TpSSk>E-BY;Au-y7H%(%%=^}=aUr{(0fl>l65IL+EvA|7 z*if6FeW+f1yG+qAoS^xjTW99Lbo4+tNO5W8)x|-}(| zRZtAyfg2eK@;`Mv*xM*)q>GICjUUpCG(cNj@HZc*=y^}r$!PApL zG=PQNSrvU;ELGGi=vZ;?lO{9R>Z4D5SEcHvhYI;j7}u}lg-GAeh2?gGZM}shONHv{ zlWvh^q8TYRoKs^_xA>-kfsNsmVw;{O9G$gnEiy3~iGZVEe}9#Ykwv!r1sAko|Eea% z5ZjriyYA{v%%V@rTfWkaatfo*$}MS#3(OLlX{ld{H-MNAT}#g(8w@~k!h|L)No=)d zOApXhe)I9i-aN1@RWRD-xh+y;2P2KPU<)M=-02bH0Vi|>*bY~`O;@h?W4N}OX zH>dlFA#B;jw{cR=PTLzmoJHtcgZK0#+XyXXgj15Ft$VWsIT=oYDj6Tfma%;3$C{Up zeYw0j*aY9V5m#Tq{ET`xka|r`O~DFsQETQfxwZ5Nbk};pDpAU9g0A9R->S_vB zdrtbx-bds2eg^^*?}wp?O&F25PuJ(Q330 zqtI?r3ByCdiC@7(!#s*5*5(ipbi{aK%U>6OtdpgT`0#{r4|7O%k7?CMiymh9|d7{UmWs}5x3NQe^ zmXo^)6Ir_7dY&8|4X8vGoV?K4s)fS${JM4-BV5|ZU}Nu0qHD;t^T~9Ftms>nZ94=CjCSsaH*m7}#wk39kHpi>I%~D@rH_PqstUU) z5x@q3tm0$FStX;%4P;Nz{bYTxuu%mZg`w{53pmME(GT#B7(U!;a4Z}yU)uS&Vs)f| zQlp3c6e^vfPGeJKVup>vUI2 znBA}6c<_s<%t3s)MV|okm~b}Fv@+~z3X!bip&%=}!%{qo#n+9z8y1IuY5`kyr$=&E z)I39S2}w!Ao&85;W%EsL4=ETW;l>wk?ru&Qi#5dQBG3&@2=Waons82sR#W1i7bbZi z9{ka&n_8_?$AMW{?Cjr15@I02;o~Go#?obL8clQ=|cXx^e4Q_35r?|U21lIz^-QC^Y?VFx+&%Nh+^9TGg zA(J7qpZ#oEd#!E{dF_z=-TS^5N|i$84i&@q-dI(`2j3j^SCYSIbL`55owzeoGBUD} zC#IWZW|EMT=UT~w^UB}j`g3RK2*2ojMj_IL_aRO|skV&6zV@)d*A&@-E%SMXjCS)) zuwnRCX|b&_n|RqHSsU?M5#9eyilt8$gcIuC-k!QrSIX|$qFKo3`Ff=j5?~(L>?xzy zqe?kH`<0EPee#I8$A6A~FAZ5FXwXG#E_~v>+m)9?QS;&?C~(B5x5m*+M6(`xZl~W5 zFgLX}B&k8s@Tz8`-koHOcLQiRqD*0oi@D6h=jx_sv?rZkoR|0L>6Uhxya@apca*($ zitAh}fDxgv3aN$D2{IO$Q2(GT! zw|(*5_a6m90pX|2&~R40i+&}V<`b|1d>-CymN*gUP#0K7i4DmfQuFJsaEqI@Ge1;1r$c)_u8P zIrr!58_yfxPb*OgPDm2z_0d%>=ZsN-OWi2*<4%9&Yv>=>_2f0raqujA;rEnt_;#>ZJr=Op>! z0!xw90&AyW18Ib}Y7Rs~UWuO8o3CITWhW*0aG>X5keS&mug{*n_TiZpynjgh)g6s1 z=0H@%(a|(+Z^52k=oVq(Qfroz@D+iMMJ09Cr1}+uI<9Ipi8sQ+uVGR?lf?(C%@>DWONBw}o!Q0i)lIZNl!?@idO~ zrd|(eO@|KTN+|{o^PSY8R*IPO!zV9-2*;rlhJ(qFHp)rvh(uOqYuNz*`}a$& zD!UO_XDNJqe0TTqJQ8U-b`N}(5~T5!k%)ECWmr045mDHmX^cOzDz>mnKlU8Dqg3;C z*n@VEw!XdczPJZVo)0HYGWs(=9etxe>F|de9#EZSwU~F!9^9x0$6?{9krsFuW$1AOyXA4GZNI+z8FS z`pewS1TGzGhL2&=Fk{>)$3MFU!>_{>eOF6Y#=a#EVOM_1pb=Pk2@Ce}dO)cjf`tiW zUw$+cpP_kngby(%ggGR;qIpUy}`c;O;*wFzvBFKvC7_kJ+}9^1&X2pbh8Z4 z)$ChI2TBmgz8q0`F>QWRyXMQQ8CQhPC?)ARV_jJx%VJxf?#vHzL;~%$6lc>s`5rYS zW+!RzI__fq!UCER;>Pt*Q}X3yrAOYnxf5A5q16V6>WyukJ(SrwkXD0&Z0Do{BVNiz zyU)%B9$`L^F*>xgp9RWvNzvNwKybLPQx31{vE$B zKCwn|QDa_D8f9#(3dV0m5|APF5^i}xNf!Q-tSlM_M_pt_#^~sKKn97hS6_(qQsETP zg9#7LAuMKd>dt!l#7mxoU~OGhP|(ZVxtK!u`uTMsm4qO(0TXh9BQ|bSyxwQxIYu^f zTlp_vGHp>bcQr7Hh(vFa;o(DeDMyn`m^Jjj3AFeghgm;5hEx#s7XxUVuK_VJabuO) z8zLM7k55mxB~pW&D>(SfnPMNH>A+g5nO5WY`0tjISlgtwruZ(fV4>_aL(#>};fYsV zu1jz!WR1t+1l@!1a+;cWJQXdt8mg1u@qEj_J8~qclP_lLux~W6;y?XlCWWsL#Vh@I zS((Nkm(D-Ef`~(TkqJn|QVE!u``lTW$H&DunXrJrZ#ft^c}Xk5P|bT8j8xZImInAh z>_*h}Xx^GaZjjiL@bUmp^-dz6tP85!+&TmwKX!<^lfz|k$#`r`!Q+>@{pqLy(Jxp} zhdpgbLT=Q&w2+WbgdN%JY{Ks0aM?@nu#}yPIwjlre4{1|3@Y10&TlvmE}c^lfluXM z(L!DRUcYo{V{KXZaLDAQvB8_>Wka~N*<3OiN_whX=RL+n@CnW(YuKPmaq2KEH-~xt z7*Y07jzhHU_$Hu9IAc=f;5LwG+_E@9-1whxV)Yc=7aka_<8eEDOQ`KNhJXZ@ha%Y5 zXd9c2vfhITG7=Qz)sg+m1x*GAXU8kKQ!*mC0CR&i+Mmc219Y^@%F38Ll8dr^hLe`h zO)q?7=SBsp^u~wV&JyfqwRAIldfiuh6e{5gg7|8JKshv z7WTv|+buYn{Ec_EtB%{^_XL7zpR2Zddfg~t%hS3kaDerzqh->WmgzAMX4*R#cq_Do zvmloL_nB2^?Qjn-u5OK!Bvq})8&2;!SH+X1eD$rpY*y8!Kp)t=NMFa-}=Yz4iSU5rUgVNxw z$tl3Xqtzz4>-)Ry6T>3k-hP^i_D4i#Q!j{*b-$RH$QYmVe8rtZQ)$YZHUKz#aFm;L7Od@Dmla8W$W*PRJ_}quo5TE$L>6pyIeM6pRc7?2>z~hp#hSR&{5iz*|Dn3;Iuw z$7nSY7p~23dt_6TXE&@-mqa&Te~XTewoQ(DtaOiXZF@~rfRN}sbFO=j0%&=^g?=|~ zVU8^$m2UXd>XQ~0dfY;<%{b!5b!2PMEYs+4{}3)fOFcXOZuT>BG$cB@aKh}yD-Jx6 z5Fjx<(SsaQ2H8L^m7f)ttZl9!LLH9lU2o~VI^X|>4G5>`z$ zxSWqusO0z_pTz?yDneGmGCU;gs8Y~WwKmfBlJDGDR`>ZZktLyWO(CY=Ms7kOJR&U9 zlA%RJ(NGZWU^>02IV-EA`3F)vuoq3L&8Zpnx(*GL?K{cV6E#FA=BF(GW#JRtaah#%HlJqI~&5lT=QB$ZzVSb zJ833ovug6xv5em57Bad%z*k#w*0^@GC6P>sPS|Be$tV_kbA8TH6y~c}RXx|SmM1z4 z(_L}fFEyhF%|2){@b1|x^H&_-#LQtb-w+O8U|6Lm*zK>n$Tw7f1EZc0Pj~9%WVeKl zV8dQeTP&~3%1LRGH3#(M{&fKHtlh4D?3L8HJs#1+LU_`C`%N{DY7iV04iun2#m3qD zo@xvP`>^~9)B4xdwTP*K8;f^anZnzxurP34L67+h9vR8rqoo;$9` z4|;db*QicJaDTs!`}Os7bjIAF=ux2(`80Yh9KdxtYm`ng zPv(~Cx>A+N8ELnxEMabGR`FZIqrj*~PJQr$_!SE>q4n;ehGkkHtTU*j2^BVVbN5q5 zq&_M<*)Cnl4GsuxsemtWif$#BXUW15#WUvM0N?3kPL03%x8P@va;K9eJtZwEn921e zzp7EIl8y1QpQE%%V(t&usZDMv;XjY9#*wPNIE#W$2;9n0T5`Vv5xwb!0rSIQUfqVy zdtV2!0>)isxf$1mm^V-c?!Mt-eqCMLu}e#!S(g6x6Wrw}BvO!5`lP&zo_p8?C&3?s zW^St(b)(h`FN@UjUNPXeFJvS!jCcsvL?(uwVYJcS`Q-`TTW)&ExJv1-_6{fDbGn>` zV`l|&M5QgC0OVwboMKjx|EW|(-Mdfm1ABs!C*ySRH4W&xHoMIg$1al2v%r_KM>>HS z-eG%*g_lQD6xOy5Q@Z5xV{&p*lQ!Q|OI6j{3)<4!njgGb;EJEY4ct)g!)42-9w>^R z;#LHU3k0dLG1rBfnvFUzZg5A&%xV|JN9RLnUgZUz9yDFuD{N59WDBOsTUItK9U1kL z)_c5cE2j6Po5H4Xj5w|OfbTwEiAegs+0U-av3owd!4nr3_tff{ALfvEEt=0#%EeIr zS-m&FDPu%SV+z!JTy`;2lzA?oQ<9%fFbc$5TG!IVrMY#u*)WYvo*ue?+w8*W;NSoVZ@ z=Q-ofIZCI{7((G_m+4Mp5tf(x5Y|RwZ)ca;L;}W+;;&lDhi5_jy1j29{+3X^I4_p{ z89bCh8av(t&Ob7b99Wp2pGDF4|Nc)cfH8wd>{22%g$xhLQ&oo8h+ z7))gwJ*FjZnX_=_)b?h<%QYY6VC`7;DqsV<{R2*(Xr8|Cr|cDHaB^#>*Mvp5VCOwe z8m`>?`S>!$87Cc{R6>lSn|c8x(67$aA_b-2fj_gg+d$nwyniD$(%(nNevNc>d75#c zA>`9s(KnEDzMUA=tpzvbEPUo| zu(DDPE!vF2ZQ4Lwc_JOMeHRSoD4h#TweA)-a&b_q`ANsN5IUPMwY*#=Pl;*dAkOs9 zS0lE1EUEI^NoaTi+JgVe0YblYYzA&@;{Ro$0QXk6kPDny%bk!x*p( z2Ew2P#dYdvbp`>q9RI(r;@9V0VCaQB7ht8aBE<>;NHGdltqyDds`h20cSzwV=vns~ z{O7}8k&d)~!}VY4Mq>JNabpPH#ebayc=9VzZf1EHp(qaPFRV#+Y~Vky{Qch0H~-Uh z`RjU$HL~cOk1_mY|JRG@2cSJwubV(LERklYo@(d(G z`q*k%nGkkMQ3JigXtZ#m|M!Xi{A3&kSPsN~8wMnBmcs?{w|Xhc$(iL=m1dPtu|Ud7 zavE;19dl%m1B0&-5uDX1H65z(cE=_syWd$J$(S43p*(pyThTmSZb-8aQevE)U*`PK zEVWiBekeUTKHes?%M#S_?e21#O-uh2p9Ff|Q?hU$p;`JQf|S2T4$#mPyA_K9)WPw}^3*Yi zZtI_-MMOpAGfPUeGpiSL*XL?w^YQyOqg>qF7>)9V{b?B)e~rww^Q~27wvWhDzzdU@ zIDK;Re6^<1d;7gDbb6iCU)^}XWKlLUJn6sy%{?#|iZ9ehj%j~!o|r1nh>l7mib9gP z*N_yjryojil^=6FYdseA8WQNJHZ8pbZ1D=eNUoIrI2SGP!X z#&)QdKebL^==3Gnqg({#Kc_{%_om* ziCX!W{R73j+cKo9{TFvr;*)qTGq2sLnY=(@5g2CT%nL7N7L`eGQKPKB5Ih;fHerl~)D4~N3<%9@(+8A4A1;N7CrEv+EM zFhHODDRlG9)#0Kb`D<-aqo~25!`$McoG&i{=zk{tN|whrexvJqi^?UVo}%KovSO5u zcEM_A-zV~iB!Oi1zI5#8hmJ1>!gEVJ1D&M2SPX2JdfHXI=K(fH)8uyb3OKl^MBSkV z#;zhJZC6cE!zs_vvJ0+`U3BnTMOQrb+x1;yd{Y(+aFFPUSX_7bpH3U{D>L1)DT;*% zHp|(Jgfn<^iVmFf|GJ_SCm`c#>I|S915{nM9klN66>1G|L~6@ab+ncYbzcH(E?iu= zybWe?;2HcFnRzJcR{CRJiQvK{s1#3O#y(M`dLkghV>AXrzk7QsXe{jOn)>+T$MtpD z9-M2E$WLi4E&LX;55HDsdXky(Tzz;s+A``2x)&Bgs3+RW6wReVH0k4au(6WLodS7z zc^^GITUvPec=_gQj_ByRvS%+ZKt#sc+8VDWud3)?Spx1v7zds3Xww+)X|{`#f>I)7l6&(5k&|(9GX7c-+0U|2#Z0FzEG#`b3){W$5AbtycXf4jANyisZINdr3HpYF3;M>W zX%&G_ivz~5*g9OzFA~i*2U&)|qGYE^EJQ{pi?k#HSjRn~ZWd*;c#9n)B|{=h59 zQ*cO_qeHX?ZD@Ef>&uvjrVIc-QWT0@Tr5fAHUB8`)uUmObJ9#+e)WXMDM?PFUoR>p z0mu4Kvwuu1Pdqg4P#_@_=UhK0=HU~$Y#^hSfJn?`CZ%8YmR9XE{bqb7NxM0^(vY5% zMjoK`63M{+$!({M4@)B7PKn&E`>-^tN|F{WpNs-tPJvq_J*%d)rm8Bq)<94&rOT2W zP3(eC!re-IEtg4n^5Dv=m7l6lqQgG1nC9p@)%%crgdtZk9^hF5`bEeo5p~Ye;K}2b zhZ2fmu(NYAi{&SjF{E_*58u{VojEupeG)6>Dz1hr?I3hX=q$qo=0q@xWaeqm@Jyw> z?FQ}5TrrYK?0s`{Gc!BC`=k$Y09I8V&wk_iwGOm-y6@j#Z((Bggr^$|MZYH=Sn#mH zx0;{-QuBIY1o=QI7Ma{H6?}OY@e_3oLwTb3|K66Q^tJ&yXPK?7!@>J93T`X6hT`J- z+%9Xv2Y)$jv$pEPltr&-ss8bg0PmLSl~$V`VEG=A>ey!3lKur5iiLv#2UeC7iu#`( zcaN?6Qz-S$4AYbwGQY^a#!SzNtojwXs()e5NtLX@XhT2ZRXu;bzrW93Iz2KHzYlEw zimTP2hvC+IfkXV3jl;wVKP!n$<^HWO!=HiUw32RL2Zl&FY#11HBRSaFIoK>07CaI8 zt`HH-k$}wx$gAGz@HUcG*G8^>*g!T{VrP>8h>fo)%PpA0Q>CE$`=s5wC!*gdP*2Wq zeAR4fY#$3Z6k0Xarf5MWkFTb%Jg}hJI=^5;$|u0acG%pt%e0>vZH-Z6XR9lis{Rc) zf*+qXJF71Xf!)`j)n1YwK+?BIOQ}dnfk1@helfvk-QA&{NOKvx^Nt;9nXEA=_%yU@ zMU61ub(ixxh38lZ+mq(!ubp&&8lfB$1sRz-;KmYJj~pyox}9)@i78mga$3LW@>jbW zm_yx~DjBVw8AJpA;@QpU%_>*yRvT8>~r%x5-7>LX|6HkV)bnNk!&DIXC`$(zw+t zc=7s}=W}1ysj{tYWJFz^t4Wc=qp+!oN~~+6Q2N*5!$jqb(O$Qwj*P+>3Wa9y=4@pn zw^F$5or$3!@5u=;!%Ba7njFLa6Gkl{f(T;g_1mk@xJ)ozoSR!LB7N08s@B!5k!01` z`Ji^ek=xT+mp`{R#tIHF4nQX%%QobP1U&!H&D7xDge$9fKwiN`LU*yDpRwmCp)nOj z9t;D6&S6hzD(Ay7(%#sd@2<;{KxF0^PKSV)*x7lmR6->KspoqV`Fy#kq^QAAPsPHj zQ{6jgKpJl-GYK5(kE3g9x^*gOA&DmU9v?Godg|TSJ1YSm7w}N1ghh8Isj_;d2bB#P zK$xGelQVH}*IqSX@~;rpjnt5Fcu?m(yYrXZoWk#d_IG#r8gl%NO(IilR#u*==GC*` zUa5J%Sa))jH8Sc_xY_eiswxwkOBSv=kXLPXPxCG$1z<*s;Q z)HKCFV>^){Q@yODc`-{bNl*gOu0C4W@CmEKI#ccF)+jzwn;D?n>5((lZ2P^C;H(&9 zQocFv!9uyoZ+}={L1FGb_|OGUxlT<<%M1Wjn3j1|6#EA}u%ziZDI-zpH5C*zjGd&1 z9>mz$k*jucKdEfqaIlb!@njjjmc=6wH4)kv zyF| z7L@57t6IDP?b_lWW(@}gM~Wn2R!_B8Qdnr>ME;gVX6OmA+OlYR()i~l97%drA8SE* zc6RprSP}n#iB3b6W&!O8LKx86{=VdcuZ?szh=sYap@IB&&%1YTFK?|J%%;h0!5A0A zKT1nW*=pF29NZ9ezbYfv6lZZ6;PocWb6;#tH>G9|<%u)%(pLA#22_vu$tIR5QW5XP zPiNHjm)>bdfJI=$ z7uDwZg&ATr`}z4X8+|bNDSkys(rQ^NWopwA6YLp*ynk#hX|lh6K$o_U=cqb2*^p!D zG)R;my*cUWbb08*m}RQrnoD~PR|2A`5b>tAZ@MKc=}^o8nB`CjCi2KpUdftd(Fb}_Tt#c*!`(*Jf;nzav;Fv3Bb1?Z;b1o8YVP$r9WVr&stXv+h zB7I)QRe|TTyBprTNMPn6r25}l-Gu^Z7wH+qbaj_8@b>A^xPEuLnWkC2Pot(YciU|} ziq3oc`?t$Gzj{n;DrBO9q9S>|^9ZiyH_$0o7zgmA4)*t@hwJNTSa=q?%3oqtGG--)QV^%wQz)Bv5qH0|+iLN2$G zveqxV6IhtIi7^Sk5TWeZHCz0sJ{Cb-)7@R?FvgGqmG{TB(gh6Q71xdy7Z>wn6Mqi? z2`doicZ`NF*px-x6z zn2%5PRq($mK7$`1SLFc+w zqoT5B-F|D_Aa&Yp()y$}ZCK@V1o-)dqevo+_l=0P1rH~N$qDaA5Eh(|(L|-U1ciKD zzZ6!;8v8Z(PhWYP zCe_+MxTeEhcxxUW)pI!EtyG=~$jwE(le@TWR(}3ke5K-!MF->>@>P(N(fp*ksVk|t17JCvGqi(`sgyxI%Z)ii8RCx^~$t8^w zK+%jpLO;91o^x&)_F(4VXl_Co2Y>qG7Fym15Nk3~lnuo0qgo<-WO#N@ny|7ng+A?Cgw+z-dvqNa;@qh^G;-C=Ouo;_U$zyL!icr=ZZ+A(5_p zN+Soy*zxY)JzbKyike&_hRMk?g%QcgwA9p9B_%2AnXg{HO~#Osj6jaVKOr8PKZHgI z!pIO4r|%Ys!v|M)FMkKX75ER<*MT-cj_CpiW5P&Nnwq!b6;u)uu6NLv(=m=R(lV(2 z0lDzoa9OAA8-_-kVPW>J*>wP?p5Lex*QRy+;3(DTBq<{`^AF@`!MPlc?Qkr7Qjd=z z9GIekDqsO=m8q#r5|YbFfHzh)r8fuN_l*m;$>P#d;rF|{yX|p$oWsDX?e7KYb7pav08 z7GaD_I?z!c6*CZ4sZ;(8bSu$|WboeD>a?nka`OL)!O6zj`%s!b%Js|2)QKIRJyt~p zxY|@z(#Oj{z1adPD0ZDBc`C>k3AAv8!M~Jb7t@=r1u4&Eu&n_RgYgb0d%1{ z?B~r>Pb>pYqn2aJM}cbM8+(I0;-;GfXNoPPAVc2e+$arC#So%I4Gpd@-@jLDVw>%l z?rv`?hM4b-7_#JV9ih;FPT6jC%3us znx+&$G6WPIDvrV8CxUi+eI?I4Y1eggen5}Dde|sNMyA2_Zd>Xr3uPOtp5PbR?#xc4 z)KrbqCbfA^nQT8O+yL3wm|CZIQj7B4`-gb=)6@YDH;hBm=KRp+66RD#P8Sx{-e2Je z*O%E%U)m8vM%0zGl2fB+79Nn_Y|Z~ktELn?K&^|s4LK#@5e*hColQ=HH(~ix03ZFp zdar#<@3`1;B}*3FB2T{Ek&um!J;(}*J&n*bed*FEhLr`f@lm;AnJ96vX5rmJHagvZ z_n2RtJF7dyy@wQ(v!l7vnK<3=Vf}$}GaAAA_R-P$+S=r3Mq$y{vZ5@`((H(Pg|W2f z=Q8S8c8X%%Oq~5ekMb6XHtjJ9^Gapu>yzz z`@7K{JAxrHG&mDY`eFL8V9|M!r)gl?H6vr7b1Ah$#KL^La3NuJcUOEt?qy=n5o4=p z%EBOHe$1wRX!lK~!#^zSfTLRzj~!VaY&MYb z`wa{XOg|?mh)XR0`r64)uuwj90A$HQAdvD`5Xj`u2^jw+;PL1At8WUg0WQ!K1;9gM(`$bAJ6dpNr-}tw zN{fpRqH;qDD;#==0ivn)Jw}k5o4mZdjN{Pr6AVr${y-dqqn%w}{~$djrM^DJ8Jr!U zWPNdVc71wTP*C7;5mxut7618+Uwhw9(L^V!_rBAQ6KU!gco~WK1tYPT1wquw@&vV- zYIX8W%(9wZ?9D7JB*nyf$^@KPaAXa|de|(>z_zvt>~v2-J?X}b>u;c-PMS`LxZjE) z6W2(&?9n>pdM_-@gXf*zWzXiu>#lEY&5e)ScV2OfZH3PTiPOf_b1G%3Om&F9PLI?N zArGFPH?T+@{=yKaUH8dkO`E#J`?kUfTA zLgM7t2F!E|1{sX=V*}bwlFW!|)a&<3QS5K#+oI1p{1ALMt1{D`XXLfj|7X9l=s;;) ztzWo}=R{&>%jcnZ+4G{nk+7fErpc1JEAFu;cOZLr1?d1%`=r{@4eKrU0#ojq5QgHs z?8x&Zr7@gr)7se$YnFIG?%g!Q!TQ_qZr!r{egje-ZoS+sI<3K>x3hZ)P=tX`dt{ze zy>?P>@?_)yXX3o*`mp4@+<9oQ9Xw@lMm0Tf<>t8-^yKdKSgpc$=o!=F8#B4NyGuE_ z1pe_)Er6O}kdw^D%2;T7)Sz*ctD>@hX~yh1X-c_wzO{IF*N&Z+K=@-wNAJQ_&oP^t z-qyyE=k**->*Km*m}uu=M|*pf?LBz+Xga%EZ^BG^$B)?S*8GXW3Bl)|mG|l$ATGyA z?gXwsi>q!0sw^n=Th~+_5pJF^a!d?*(PTdZy_VDmyMIW<>kK1ov6%oWQ?$i&`BhnS z$O=7Q(TRw%s`e2a-!Ts*gTagaA;Ijt>0 z(UsK|GTeJ=PbLutX^CoVjBB3Kh=jK;e>br5(DK~tLhk;~=e^SE)84D7 zJcD6OkQX4kFf2=4s;VWgpAa`L^C>wYss9(z{DRyL(|^;ARe;HxV88xKwo|`?ZK|lH ziP~_Z*}bG1>_?Tn*w~<+0A)S=C=Wmbbko`x4}o^&TtW5M{ixkY99<_2eC~usPN|u) zW`%-Cy|}iE-jn7-sta|tmyguO#wR1x!_0aki`944M4kc96EZp*in4*?Nzv@_@GD1; z-5Tr6Hse1w3&@-k%|J#+%NtF##K(?hE! z_76Q?;^D@V-HB4lt(|msik0QtDfzYw3wZIM5QyfSvP043DhmF=Kz}0N?ZX{342(1Q zlFe)(6hYdP=H>PgDFH^|}iz|R`XaKGp-vv_bE|n45ek;;=W`9g z`^QPH0h8n9^ZoHsz2=Fm>PJlqNdvw29pk|4v9<1^EczBhKZu@N();J(C&OXqfCw%j2SDV0ebq$E#u?jkQE zB2pe+hP+HN3FQkV=J%9H(Ps!Qw?dIqK$<+`{2Y7?jVOaw?$_MdS?Q0h9q1cAP||B| zZ|!|Rt6{HWo#NOew z?tq0EZndoGUIZSm>gq$-?gdhZBW@9yrFLR(D(-Q%Q(7G+Q$4rLF1%}xE1lw^E<=)| zM8JvlBR*K@IgS-plOvE)`D|0(L*fee0hDE$~X2N7{;yB^pB6;7JDb6(9YW|9V)qA zOkGOP<^3!IK!X?}U_&!t{8EXZFVn6*$w-K|T{jV7jYb+e zY=F1`K&+;fez20)oy^R6Avu>>;Uo>?2Ln;=F1i@#sx`5_@Q}e#6aoE&AA6Ineo2RnJV9UDg_Vwk1Ue=))%-$i^;K&NlK zs=Rt}j<~zer|0+Hk3wivJ^pxgi4-c4n&xbL6JEZ8{n4T@S#^TC8&t1XL%Q=J<=N(ynq6g>1msXURK`1qItO`%@3*<$Iak0x7!E*Pu&yOFV|i(B2|>^9>Vu9^Yy&kCr`Kb4p{ z4%SsrsdVC|M~*sbV)#GsQ6g-n4{*@t)ScSDJU^*vS0=#+p+_a?$mmv* z(YFBf2p4C01KYzRt=v_693e?8^qe-^emigi=a%M=mzO0v4_@vkq#+Epf#gva$BpF7 zHI|k-#+hEInL!t(C%49(XCR>`5yr2wva{&q&-?)9_mY)e~rp*{c7#6irVJy zkm5JBvb1!Mt_ovlxb6<}FbI)6pk^@^2im{$Nm%Un1bsX?Rto3mzJbDx4{~*54pL2u zk&96T?8ex1%$M{*dYsSF%SP+!%#LT57A!{^Ha?|k*HXp~or?yS4?g5>5%UTcGlTM( zIx?LLd)W@u7k98s2?pzTKMK{x>mR;l_gLgXZ|%OPzSzQEyf2XZmbp`)TVBo|n_p6X z28Vos5|+oua&S0R)P0{74Ks8wVGq)>R1yl4i!`|Xnx;J+gLUsOtcV}k=;{LF568z7 zZAyz4CFLq(q9gJ%UVv?x@}9}-JmtE!R!1N~vAP7RO-|2?iDff}rL=P(XD`Hc?RT1< zpI?lRuG_LHxp;Z&aFuty z-^EFj4@G>bh2z=S23_zcxnRD|PRcjn_godvf#l)E#NNFOtiJt7u~X@MXC-AI-%t0s zw~vcF*6YMd3R-$eiMbQCO1IcJgd&A)UESEkd?fa)+9^6qe3Wq6KO{2?7>eIhC&ZWL z((A6G6ZD3<7Z%pGYkZ1zb=L^}zBoUrts*}-P>uVT4C5)4WGP;?7g|h9>2z_PL1*UA zKg4e?g-x`yI3<+&W?SWExqT&^I^JZb!PWg;SGPJv)iiZK&BDS0At9mXlShKi*=7_y zn`5rYGb$=SiT}aWBMtpeHPuvZC&dEM?`4tN?8?exQ-eHYfnqb4XM2aYPuVYt<=2Zm z&x6rYorRj}B_+iO02nA?j?rO{3%4AdkMkp%E;)Duz4>EUVSYsUz%EcjUw+D#_c}|P z*=@B|3OS!*&^5j`T{b_jl{%ITVj66!1a>w1K8+g`!Y#-k-L^93;g^mcR0Twt{FIY&0ovZkwFUi=kZj zjVVp2F1sRNn(Er>60eb)uwd+XTzE6|)5!1zL1leZQ z=6dNkkToHkK4|LR&tda8A8B$tnvdn+$H2gqlL|kXueaI2Zf!@!Ub^OF3I9yv8$S`J z(}4iP?oEeygO|z-+QY0?29C_-F_BG!EL3zvg7n0FMII#xQd6EnUCoLcfeB=J zb^e=2OILdhov4?A#+T~4#JtH=&t(-L%o_i$?lPC|eYXl7qJv6cCE1FP>B&YU*+iAU znSPTELyXOhiuMwCT9E@+B4k1MR3>#;0NGQ!4PYE@@ z0x&dnl|&8lUEAWenJ zgl9e?k8K|7cD}oAh^LE^QUvefK!+*YUYt4E?$$66f)?)E1gOY>9>xa5_y9&IH7YWD zqzhqqczDo@GB&05aeZ%qLBpjFDSqi`a52{M_I$$|pa=}*G|Q#Jd)f2Z@!O1w*-Fiz z{E6$%;V&c3q6cZz$Yc@S77SO9GwU_-g=5ZTcGeA)PTQwt(?&|dKNzAYqUCn2XdY$k zW+oR!-zj+?XLiKFwmmr~HMGKHu+K{*j7hLSN*m*P58zv6q5Jv0pI4zt8ps~J=0>d- zJ4O@8e$Jjtv3osxHIFV%{&u6dV85cZDJf%5!xx(|CIrQDXBaDA%NIiyE^urXp# zL5t>3y!p%)+W%lQvpRSOgA!|sD~guKF0gf2hHlUeoyVWV<$jIOM}7x5wCFp=ZB*@*`$>1jRS`{6aQnkm`}^L z8&^PpX!CNn6ZZ0O$zp&&$dmsvS)gq7Er*Cm_xrOozb-PeKd*E-3!6BF+RU`>bX<*t zoaF$c6Lpqt%*~VGH9A(jAj$}bg3=n_O_Y5n-p&X2*Im<;|7l*BAD*gTYZoUu!+VjC%=AFZm1yEltj#kH z-mVIAFe6%NT;g@E;}JQk2vyb8QMY31w}v#2(fnE&vvL!0)+6?so{WtvZ1O%^zpYK( zp0K^nD;;93Xb1>!mytn&pdV_dg5dX7kl<}%cPnnba!0NVCv%&r>N~Bpjek&_$9SOgclQ~7{`oHPh zEHc27V7HVm!=l=HA^PG>feEivOX3)N3)4uiVV%%^07SMwJcKB?unP<4C^11+1jVsh z%al9q5yI=nt)nXglRiZSS>KTGC1J?Xf_xN+{~u#t9T(LeeT#a9D+nklpr9zy3`)0x zh;%m$-Q7K-QqoE{(%sz+!q7u^Hw-XC!|;yY>%I5=-g}?VJO9DNnRCuJ_Fj9fwI61g ze9U!FFoHZQug=QKf?n^`wzRZ(ATA{h4Sh;HHwJ{}-7W>587xlo8qgwZX)o7bL=Dur z63;Dfw3}%-I1-(XD;6;E#o*FXw#ePlZO@%!Wi+hDUnaB+e4m(E1S@W6tR{8G@^jV< zt15Kx%}W2iw|fi}gt_j=Zd=9=548`nzsYaNn$=HgBfz)O(Mv6AY%JsU7nY_aHGAV~ zDQ))2ZpP5lzJI;T-N;Mz&kYLG>9daqu|}%%UG7VykM$mcIXUBblj~}aIYjei@(US@ z7ui&jp@UXLQ{zNYa*{uUY;#i6%ECy23ILWf>tG7IukFa53Dhuih)#aKSwu*F78s@s8 zp;y)Km6TR{qc+ypSF0+5yHXc_!@9Z+t$?OVSgTi%z7cFz$2~%&F>>4go!lX5-K73%IpHAft zq-=ZVLfs8+4jGnH@9_(f8t3UN(>4j7K_7b{1l`-~vaPd)y;g#>)|M6aLiYJlpFkGa zh`wCvj`2$woerE@e>7|H7O}25t>4MyWmmNY^Yg8XI(M+GgM*3J#Zq%I*ZAmBS;thI zLQfoNa`k$gSh2^Fnazwsni-?&AKjfL4=1uzZqAk|gsIef&kV9;G;GI=xSCMKI5+Oq z9YuGDxKwZ@t7W7mZ&W|X3Mt;Pkk^pW$t$zs)Y=$;B-+;sw8M<^mkN|avS{{`R^aYu z@t=FvFZ||#V#xcVi2NnKTcgu_1?%gU)(=$nVedOkZe|X$^NZ_`0`pVcx5+}@i^S{$ zZPn`$wL!n1B}VXVpdBj9yUy6#h4fo*iyPriFz};PyXoNX^jm(8NOXNw?$};oA#Y=o z_iM>sdN-x>R=(~EtE|gH>#~7_PTY2GybaT*_9Y^93q=+&+!7bDp~EbZ*qLFanzBkt zhE!aKPJ4Ty;Y-u8<%5Ddfs7y*yH|Za60K<+v9GJDtLtm)=bR>cQIg{1H*T8qPIX?zH2gY?uP@jNT&(9#WGi7W`+DkyP4A16#*U8w%sxZqzYgwPC zwXmZnGUeVicdg=-m}^YymyRA!ap4Po@Q>M>dbfU+%B}Ca7ZC0JXRuFPmvYlQMOoF= zstX+S$`@y?-RG@JCYdT_7nUdG zIhg8f49L>jZk20Vsd5;=GIpezy^Zm|M2wcT@;PI6wM~u|Ce3vhGU9C6dss}g)Ou+_ zd^sv|{n-aMpCim~r`H}pK98A(2NMC!M{WMc~= z&B~J9OV@DlHZw2;pUlRd`P5X;yYJOiPAGhRbBT=6;cP;M>&3qbB(!c^3+;>Wv%>lF z0J=;SCIF!Rfa>Ekz3w&qdpcxEZ@e|O@*v}0pKHmu&_#uty|~Z2ZAbAGz*DkKzJw2Z zqzZz53CbSOURu>BAFpg$CIZ!5{!yYgq-4_@>&p^*o6AP=hAk>>ewn@(6!&WGeu%WQ z)9DerwWf$u?fbF985fZ#vv(@83r{&87_F`CbwT=?nmC_aloiY}BZ@RnThgg!Z+?91 zpE;vPtS*PMdc3zeK7|}#H`zc6*znfHIaKGo@naeI}JxevNe9B2mPSo4rkdQU+p>fBP;z|J6gY7-U z^iozzkijRpW}8NuWe&x~e7>~_!>Z<~~8l}21=$IsUy@!{gH z?*H5I^U)tbiBT9V(>}15IUbfK46pIDul0k>9(v?vjg8{dgC-nd%GvN{}5V|=HsV5 zAeK@ujh({ZW0W-@k55sxy|i*EygV=%pTfz@&E4vuO@VCZnnZR5T(q^dx$ch2siYQg z_<$W5g{-#PAPa3{u%SH#_-uihIj4@y+i!g{$#0nu%`|q-W!E$T0fer4r$uv?lcUkZ z%2BJY+E4Fyz+<%ANIAL2k)y3}(1%^qn`BhTaTX?F9Czn(Zq5ru!+gt<#KMEsh-eo+Bc+h6r{nsw2H(^yyAMXRob(QX^sy+1L$nk9P{7jD zBR`k4pu8{3Iw(6SZJLM|v+G>|%^dlG&lKCG*Exy|?z*(vBW0{AZ~zv|-y_3NIYU5~n9&tp2VL3z7Ae-pr0Ue>%jG(d6)X zWQp>{@A-+*LIQ~7d=)!;k9S@dQq{XeA7bBi3qh@9QyFbfOUJ>pQi9x48?`}98HO9n zFalSznP>v%_j2qBFDZg>gV=PMxV`8z-&y{E2vtOpl1OW>uNhAz(Ei|}>ktaYRoBy# z*Gza;{pUU0CGBtSj*c)y!`CX$0H^hhCj_fAl8Nx@-Q7eTE-MHc06Tv?4?E^I-RmKY zqzsI;w?A)LXqXPS zDBfN{;@zeq3@=ll@ZcV9M3>mMKg<}UxgW?Ub%I8bfnG>yKDFa?n$M$ScRU3srN#wn zb1V66%ZgLFQN{^PH4g;!!pkf2^HVY)%r}?7Is00YYDa&lh-=WLz#E=$ z=r3BCx2y&37h-3q$i5mG?%|EmfCZ_f+-C(**v>_4tR74GI`@@k_n$O1f+{5kS@^D2oTU^wca!1@t{VvFd z=EU>;{cp)z|1v{zJ{=IaN2f5V=H7o6QC_~{9o85Bb(N5O9dfCY<>y1rOT2ab1iDLS zU=oO#`3%!GoO{7;O2?DmOTdV7qfZc#CK~hF;|Hi8#=wcfPOC@C&ZBm(dT`9Hsj=i; z-*jY3vOrN6v=X5`O24rH#WclOf!&$vFtn4SqgGkP1UQPA=bWbNt(KWVkrz5QAZP=Q z>yGv9hY+i(W9q>&l<9VRWwbsHMw| zf+jj9`cGv&K;;K)dy^D{-b>yTC-m(V_RmmuSs({;)v75z?yq^BjwiNdG4EGmzg9qt zT(4{*lL5@}k9T5sQS*&9OKEpQyI8`=$owZ+^YiJfSx;0l`V*>lsheysRS`!6F_ABm zJ?5?<&*USS6n04;QF84hG8TEEj?0T{{c)oez?uNoX-fAD>@_GvFF_R00U%v5vxoS} zMhq0&z4l?6%_RqqY(fa)>QiBs(&EWQjs0md{@~{8gj2Wk#GU;Fr~Rm8h~FVl8KWes zVQJnDwV;GJp?xQgYxEW%$R{_W4#tD}jeiD)G@*qC!G|3SIij^>{%aX1J7C82H<;2C z%elW!IHtW>OyxH~zw=m3!`df_bFx`0jG=yS?!ONabYzegx=F0f2kD=%9?zCryI(Kl z@7FTx>z9@HMZG>6>Nv~f(jp|VISaijYT7$Z*#_gRjCUbEzIRWc}-w47TW zn0QV~dK%sbw$5yKos!W_ZNkVLn>Ws$M|VL|JRavfE>}F9UcDJ>LB;Otc4Fc}3zT1b zv_yn)?d-j^z-mezyMcJ8%7gsmi4Q;oL1u$G=cDbO=ZA%SsJ*PidqkB^Kx(=gReat| zONYqlb!65?0@+EtyB0VzBaNX zroQ?afo78*rR5{fI!OD~IWo6oxxh%1^JZMLQfC3|(z${^^2ByJR&+v39N+ok3Q=mp zg1+>Ebj_!2Z7^kv*>F@tO3=N~t0XeTIOKkfxSGs86^F*zP&nB7a{Mb0;8J)JK6^mg`H74~bm`0+xb8$UvA=64R2yH71;;-`qyO!jwb4Yb6^ml8#w zQmiKfQb~=$lzp54buBI~E;l#Vdf)oh@UWMmD*D@!$(&>1@zJaR);1q4c#k6KwO#;W z#=dn?G9~QBb1#caipp)_R0yQ$!9h%|5MJbgHf#ENBAzd?wyo#CgZX4Ar$TAxP_oAc z0UepiKY?7gH^4wy!fnBh?gze+lP1}zdx-(@{v2?)7a*v59#=3C^n{|n)Rvh7=gxE%TOsQL|na~}QD_Mb>I*%!a$$gZL0s-hPGCPOH(#V`}C@uEh{A4>fU#`kOPT;GB9TJZw?QT{&s@ZG_o7Eh80 z39;`w7}50KTy;}srj2=~Y7}}MH)Dl8DKs(&Y)UWAaT+`ng3MJ9dj@1lBd23P6O7xJ zYEd%9h(r3Fq^Z#~&(%VI2;V{e{5DM|u_!IJ`(_R2pZ2x9Bp!cnPSUvJ$z z5fyn2WQc{^)^p*T-8L!E+^i1v&!u3K^8j8{-F))4w1|4AAM`57*_ZWDj|$-Xr3ZV9 zlMoY6jE=H;u+FSg4)h*%j1Ov}uj0O}K{*g@V1j>^r6tiFi~+hq;X3=Szz zM-I6-ZuXP7FmDZQ^-UZ!Zy@sNnJd)F%To7YF=()IBFsIlpjd_8$IZb>lor1XynD6o z4fvC}H76(?dXZfM4#sD|n_@JsCXRhkxTHtv)koT2Vy@>y<~1R)-&z17Q8v z`qMWypbW(XhM_I^JdYq7+vCIJb=v)_*e4f|0lY?akIj$+lD5imcZF3v?Lqhp#l?%A z87c+~X~LQjH*Hs-yG(IIPl}b|=`5MuxxL7!^sAFFA#~sFyGddS9cXoJ>dc>$W1ZQ8 z?u&< zB4Ts(kk>aY1h>@!!9*J5@ulx?`w(Z1TJbppVFQ7=hSx!%r;jwJeZ#VC9OWwN`_eVQ z+8W9u1=ji}D+t8t5hDoTv&sdYZ$1w@)m)exq@{b=I|f$-D{CuirJ0!ZVF-Tas?RKAch|;ZQB&MQrC6r?rVuc^x5Tn@g6SAyHovBd7Be;A2_U_oLFE6F;Wd zqacx(7|FXzYhq+GD8CmFWQRP?WoF4`VJS86ew=6q&zirPxO7!dA7>GzFxuyX%Uro;- z8lDjZSl6uqoWhHDVNP@!S-Q!`;DL3WlIQ;NHRbc$f`HVgY(1=Bu)Rf3K+q$SeLQiLLJw49Hpvb@8m=rofEJ89}lK3VgQBE&<`&j9UH=AU`)ur=))5c zo-?%eo7#l|O*WPGEKA1cBVUr7vZ@`1T4km{5_`V$ee>RI^Nr~fPoQ;*#>PoGKj;aZ ze$BZpnw9wz2UnUz0u&J_fB#f__|A9+Q=+8rF}~24oO}<4OuoF6b1*~o9E4Gp1u&Wb zH16^7@p#6De|uK}*ZoKqAmHlI6JGB(&?d#;?-#qD_NNP|B(QhhgpU#4zHM~X4HAOQ zAMMa%K3~oXvQB!$*Q1~M<5S2zVF_k}psB6(rv&Om?hfPq6Fj{2qeLXn6h1E*Tuyz1 z%m=ninkHpA!DpyS?4Gi4`jJw)ogIGueEXlp9%BW+4Q3~?yJ@?^Z00o)C&0DZCP~OI zkVKYiWju9dkrjw~rC$)ZVPQUP@EO)^+udqPedgW> zN%VS6}&_o%Wet$1d*AcK@Re#41hKwB7ZQd9R5SntdS>-|C7 zw}$o<>x!b;ymo2$t~xDZ0SxhS-I5Gy7*g(*6G{3kCY!j!PSfA{&z#*@5Ijm+T(%S8`~AN3U+p-)i`(?wAQSaA`*pfR22)S>+{p956W_LnL*i0 z<;PQNM$)L~zA^XxQnLG2mOJy^c={G1Nd{9Y=;#?lbC8`j6!Bxy>%{~-Uj~xBthLmH zOLR&;yeP8HVJM=zayt!+=addZl$p=pg@DmVFVCxInz2uC8f}+Emp*+PAlO)sUN2aV zSU_A=iKgp&a{!z$7HjKu$uj4?ToyXx=L1v9yq6<5%q08g+x05SL7i8m2n=fwF2Y3Xh}D?>{Wnzlp24@-u`^K6SJ=p64#o>ev$qo+rV?{e zf#t_Y>&OW0^E6#5MHwx;`->zDgbm)FpC7+V>#f5!uTD5Yx9ysY9Chji+!IV~1>*iu zU2+TaP;_14<`22%_qr=n57}s#Azkd?lLMqtm$BLW)1D?9sAWa(ikC23R9@t7EZ{Rd zni=~`=m83U$b1wa_)OKGY*6tVf@!U%M<-D|+w1FjpVPMT2ked=i+}Vi9HD8!Z_!AW z=1DH5irgZ|gkQ0w4A5j@wsX#EfQIysPEl9`zgczle@L!EMy3C7-!NKafJw}^Q51N5 z7zJpvxkBHGc^s=SgT&B?8@?7@LpP5z8OeCPQdR~)r{5NqaB9Pj5AqW5LNp%T0-Y8; zm}X{Y;bga#nZ8nOIz#04>hHLyvl@NN4+>7}_g258x`Ma!7d>Z@VL{S@Q1++p$eoEv zU1@-`k)AR0rGpu})9fC|NN}Ezbg){@)pG}L=is%`62B}|2T4OIB+^Z96ry-%QQ&NsMEU%oggE}m_VnT3vttoMic zVEPOjsBG_g$6bzJUwvv40r5vYit3=SHFN4YM*=x^r>EOH-9H4Loo=XoA;u=b!F4jv195hi z+8tGS+}8UXuAnmSm0w~n!jT&ZCWwDT^?>Yf=JJGWBAz_>T=VB9_3LOk^Et5hJUp>e zcYFJo7;iV9iP3ETd4msJc(~vP!@%m=o0K(Kt@=N)pHze#d@;A{IY( zjhUi;=APlIYUwXh;R+>-OpSz%~ zB7P)7UBLyP;e)^|GXWri1~_kHWH@ej?}L!70a%*uNY#a*n*c4lXT^I@hsFN5FnZN?WnzoK^D~*_6BA) zXsK$bIOO&9&#KdruA#uI{ zP+d?mBs3-le3QL;Uha`!dx^C10oLJ0iD$T(+zX8d*c5hp5B2o)IB|y)S)a|bEE#>Z z`6`_0x>Zh^N0E0<&`Z7{3x29ZSMWn98j7m+PSEUs|Lnvb2|3C#$^DesDQ)lMY-MIu z3IG!cg7Z$6w4ep&9&P$pxk_rhR#Se=DcDXd8m{+1R}Gi`DbCj|uu;>&csJ)TO^-bZ z_)speARk@Jz~$31WlN1r-^9k$pN6B1G})?3T6uTYEBVvXuMj&o9=Xa!->tgmn8V9~ot3r9kV+5~O@)**hpx{vW68{@Wqp^U)38!hooLzp zv|N-u?;-VpMO^$i_c)>M{jFvOa%aMnMC1|M{}XY9*IRx*3+J{aZA|Is_~2fVQg}7;^yKZ2$WnEiL3I) zkqF^8Su_SgqmaV(;=HJfCp$tnTT#`MITdH|jIQf-8!&{=YB>8C$Kxr>coWB79vCxN zIXX)623sK5Eft8>Yg>l~XGC8Tn!973A%&OpVCphBuklEYAM1&HO$={v+**c#no+sg zH{YT;zuC0=@9eVS{VO{T76r=c;18Lh7DWIfPrK0la$Et^;5G z2!~UM69f#=FRiH#wOb8hPI>j{t&Z2ZlUj|L=X776vCTfU&U?&%e5%{TxM)G=ZI+bmH1A?VbLY$MbFm9~upHQD3=v45;Np|{0@k->o0#K zV8WTlK(p++Hb!7U3dM~5{f3g|^~%PvhcAa$H*F6-S5=NF4aH*f8syM(h7!V(c$3G9 z#&{)O3@B`k4GPYuDXFZHMj36a@5AI6qbyB{La?c9YyuAVHWvVOC31kz|48ybIRP<{ z6Fg&?w-_-LnTQU)6O|q4?_Nyy{+_W74hr;CBl^aGdCO%>7orb4 zxqzk9IG{Y0FDu_)tZ!5tr3R2uGUIrJ8m|EN(wX9JO0UmkiW}vF>W6?FGL`A7fEXqz zDY^GLlkx8b9}ruM{w!DKJOY7Z!zoeIe4pCv^*TDu*gj`vP>l3nBBrxcs@WdljFQ7y z!({XWj>`vfgURwm?RhRTq~mLx_bRJKuhwF8pmT=)Q{tNJ%wGI_JP-z17W%R) z~(H^r=kLBoRgPyLf2T$6~cyJcSWxH&PX0- zA-r=eD&&bqh#5rANfBA^BGBR|W@dcC=Yr+{${jvaaBux|U$R&25wwZWg*_dCODaxw z_eS(a3PfC7Tt=3wqMAlB=IOsV^`mNF;DV?{OvwEyQwV}YlZbUKA6(?u_RJQh5Wl?1 z&nwnveedJvhlzzXqrfI8xIQ6mStA{o(t(43+>DoASwEM-I`=I}ec0u9j6{{Y_D-}< z)Ikaxy1HxlhiG$Z%Dzl#inxgyniCLv3V()`*;{!kUySCmnG6y^X3vmaZPb@Gnp7xW z?S%I$tINww6!U$`*;a#d9v>-{@PY&4?a;OI5em7F38*%hA}aGP5Ee7VAwo9GOPMj% zq`%<=0Dr(+w1g5 zxtu!8KS+4K2;XUQtt~2z4zVt7xJaw6rZ=A}_1XaV>@b-WJYL*K5!`&GdIyLbekua} z-j`vNJSW9a0TcOD`S~1`nbGW$s;XpMAt3|?_(x?tB?tZMI9xzhaTk<9+do-zYJ$vu z*(F_8q$98T>er1~FPfUq# zUk1$N{lNbNWX)u+Xcn4;msGhnU#6L$ACIb<_+Lw z5by|^`0vowsS)C4Nn}t-W*Ddd3qtiC;e&9F$R~SVb_EtO14yzWv&wuy+%RBDI?bb$Do+|4zH zQw`P!dBwFqFY8N$hM}Ak)K!59{H^a-pUI=$2Fjhs3snY7fU27t2sC!6AR~3cx|T`? z%F@8defIhCDH3H0uh5VMYTl8^gK*C9seAaK|KI`!e}Ym~3Bx@{US1;Yul}F{e@J-< z^z3Yd%~VH^E8!nma|5VivsYI;tkw)UQ(={GdOb2;l&QNF-We0eV0j)K@{~)5%Fg8e z*1EyA6upxR@;3`yW>AY3pBfTy91O#1l~aLGEi6Hag3 z=Vz6bnk*W{^5omse`@dcG1{h%MP- z4Sp*#L%Gp`=QBbx4av9?2^!^>K{ljXM%*rdBm)MpgJiCn6v6Uq4;QJTqF=ili*opO zirfQXxj2s!MRfp`t~NK9xw6xI#7=MT%*=hSS35A6ukH0@^g?!GR^y@Kpa7%QR9ZM;oLKc0SX*s&JPj}IK@7Kx z^9Rqz0+O_mBm37MUw!2HJ%n4h{Qzb_l%RlVD`1c5JNzoSq5LJiz?jd$5h_o4)LN*) zX(^IM37pszc`8Y`8nvFx#5?eQCl+|jB+8q!PK;YWER@K7+^z=l%kzZeV z9NfDHM)swT!{~1j^fIh_c8LGR0)Ex_`qSE~!UQ#uqtClI{wS<*D=fK+s;n+OG+CL~ zA(7GE-lmS?l~e`Qhf}sG0*d~&p$_jVGsIwkym)D<9rZWUEfg_o5f;Q4m?oT7xMMSU z)V#SE`?OiN7gVeURA~E(0H*_zxcJ9$(ZXvzFjBbp)ZpSkD8NXT(yVP`&CFD)JJ^Q# zt_d|>IO}yiET>wiJ4^M*!CQ;mSa9Gg=i+?>@NrNjknQSIA-xm${QUmv>gp~#(+cN5 zOJPgwQ+?LZ!>#K+oORR%#E)WZhxgHaif3Ire1n%jG`a(E*O{5O`l!h3EVOsA)Hw*= zbnEAB$M)dgeBQEb)!5hoxVZaLHQ(%G8RNTa-#jz*Z}Jxyl2a*NqPodrptFXX#x};K zC}z8G>v;J~7v^hcd!Zvt^0yiKf%eqrdK=Z6Y@7)yV{rcwb!~w&MUukM`D>vR!Rq71 z=&S)UO=5=5u1297J4@Od`Aqq^iHWLef#cSdg)4NXs5h5jWPMLgo>a=MFa zpb^kBZgyrT>qh=N z>Nrj-hJWtjN4uWCyJFb>d7UrE{`zBb!^wbsX^sC6&+e)bS)s0s1d(OL78N1M2Awk# z6X+4D0{R?rg;WJsc8#VKmy~QGpdLQ0n}nN$j~+f+Tiy-VPE?*zYxnz?OnnhDNmJD9y=9<8vlXJ837;!U2+oCQm$igb;(oU#)%~kw51~`9Ut{&8k2zx$*zh?Yrdo)V|MCD6LDk0R&NnDcAct^4cH1^qhd@Xm4bbyY|!w=*Kh<)v75mrs{_of}UeP1NyPrZNp} zP^j6=%)i?ZMzGNT(SM@l44!8tkeKim|F4*v^{PYPPE5>SiQyj~AD@TEYkrS^hvc@r zUw*cSz@iQC`H8Eyn9}I~{#6(&A64=*p~Mn2KL_~7VeJ37^!;T;ogr2*Niw3dSMbrho%OW{~7a;&y zXRc_$G`{#E%8!=z$i62)s&_RlJ1gLEMr}Pza$O#2qN@F<+SSY_Uur~o;S3Q49l5!X96nuGb#Y|~%E+*+?((>i#ojETrrf5*p34@WDnd3e=>;RA!53l)H=VCL1_wof>X*!c zuIUV(Xq3a)-Ol^(Luw`;fn8UZx^b|v|D9zRj>4`yG67GXSU1oVhGCQR0LE?42*|=; zl&U!n^s2ewZ^#Pr_h9U<0+q3&w&8|!vZ+go1Y)J4A|YJu7b_-GgaPm7KizV^5Atdg zWA^hw3c=w+&(seiGl=`tICo$f%y8+y9i7LTZBcn}cX$l<#&X%%k6^E5d^3 z=$Rqc~SSSI7%BrJ{`E{R%cL-*2^cvfsiz8l5ft3}|Y)LBYW6l?d zs(sJG{xJ^zO7X?+p~WMp+{kc!HE9MRSX#UVz*0o-U9*Hi@M!)y}_OSh=yxv(a5i(0Mmm5TxRcg(WU9%ZGB8F3)R9 zV=$R$0yGmS-Xvy=*cwN@4_Zvb<}y)_=W9AEY!9zKZqg-H?VW~k#j0kx#2HwA0Q7-? zlga0QYK|B!w!qNcPpoGc@1FSjsPVe%+omaq^9^3#CsGZLz5Cz!KrSig5u_SSvv!6a zl2-UjYruNb#{M-4bQ&Mc4zNG#Qr+p6GW)s{mg$0gyQ}w0@IZ99TT|6@+fKU+dFXe4hPuJ=^iU>QC?RH#036t<9~6!M zdjeo!+y-VqP<0rr7w7(U%U@Lp%6G1Dk@~%^fMqk=$9;`aX@Jz#@OY81!=!AtfB34M zMaB=iXrSm@tGtq_3RjGZi<1ab5tF{i(BC3@@Y_!;WniwCH;d11zOaJV#h-O*5Z9h- zbMRscHJKPFGlS0j{N81}h)(RQx~`NgzERYwOHE;?i2=|D#6_7s=jWGMS>XB;a!qsV z=^8WS`ojL@PGjrax7RA;IUHg9M~^5XhdNxJ)fO<&<+1Rt(R~B_TJCnelc)Y+`QZ;z za3e1e%Nsxb=+Z8PrYYvfb@)CIXAmenW)2V!ejgwAf5I4C3$N5)*bkXIr4;b>U=G0H z^c?*uG5AJGuRiV*F{~kXZhByt?P%DEKi^GF*gLiyW=jDo_OeP7jB0VPtRs=ToQ1rbO0)@v7z@zHgJ zkdou7tMXgD1yCYT?fNt<-*5#yMio+$@^8c>4@t&(;;k15UUmSuV|e1~_V%>RTIjPE zt@qfnk-`9@PjmkIgBnXTw~R(rO=>|JA_mmB6u;_Lp7Ta*wY)neGrdp7{~Txi5a^`M z{68-FIbg5*PL%9r-j%(GOnz5Z+!E95VT@z1U~Y+lrkRrw&Yh3wO{Y2?u$ReLV>Lw` z=IeFhMIoy-Z1)O_%1*H`#La%p{DmS=t`P^bZj6?;dM@eG5n+p3SmZNv>}=nM+j6r1 zI5*i%sFH?Z!e~cF%h^08z{oXTtIJd!&eQ8@;_CUYtk09M$)mR6V#)FxoMjIq6T=@r zCfeNCNZ_^8_iRYL!XzfTlvKG@h~x0A+F39;+K2?kA68zIoNuKM=0r(b z8qRsbQtsTj?W&$XW}MvTeshhVpD)|~z4G^l4+(&a>hL{f`At^9On(lfq#oq7`k@>-0J};g2SvV6)xNLsaLU6g7XdB_>aOS zh5+nHb@b`EH!(2-CdQp?c$EoY#PDsE&*jPqm`P(yTp?O@o7;>9jEM7XzCfO8Xu~Jk zB%lslZc{s7Ho|>L^486Hejn5f-#NY#lZ7q-BXXc_t4?$N3XwQQI#q^w^Wy*z0(QTj zH3$5Kw$$|mLrtZ} zwHfm+)`_Niy4m%N2!45M@0pq6`oLU3xk*=sEcTZ`7p4W&Z!Ex;{iK#C;2pq@wo$Ge zDi>(V%lqy+sJZ|~wdmyVuY5)Zh9woSFd0|bJ($|l6eOxgU%^52^gUZ!id)?Pz-l>v zMe*-U#b5)5J1Nj4M&dWdTG!F#HV4d8FnYC}&>v6VkMko7qiQngL$X#_q-5ji{$<*{9|GxvWzCy}d<%a@bUi_9F43EG)Y~ZQ8(fDr?yD z5apo6-CzfcERT_2y7E9=9W*stXx8tMBsFb(nP?yMpBn2*;W|7RfzA9YvBdZ_n|*=4 zY)Lbcg)#oV9`Cwc72dK;Byy`r#(mDJ+&S@5^O zWggWs4jvxvZ?m5_1Da4eBFm?|Qg^<;mR5A28mnqJl~>XTj0g%!e`mk{gbRwC4Qf-| z(_m)aebwM-Z@2E-+J7`jXQPxqRyA5sSeOmnG2gigd8WTGt$`Jhaq}Tm_vKe|CSZ0%ySe3(Q~0iZ8vX`g zH7VS0HD!A8-v#Tm{<|hb+io~&aVr<_D<_&YdZOD{DZwPG97Q@4g`c6{cK|B?^4u#Z zI(2a(r1QS+V^if^EdhS5M*dD20__=$I{A~XxxtNsgrb?l9@0vhXq~4YVmXo&0DTYL z&n^WS%u{DwmjKv95d}yvU-l)(m77pO^J?G9m^~JC5l0%ET$hTuiUS2euLs6bT$SXw z6g2`KCnN1A7x?@KT%3LUx38i&DoJqY9Y@V7sZC6haOc3yZs;`&G=fUMl$)A{-l^v^ zp{C29vh+I?uFv$wD**86pv?P2WSOa8ITt1PU!ord5FHY@pPY6Zi@)$|(qd*P996bI zkAD$_9r(V#D<$yJM>1$JM(XbNau*IHxk$S*WtGc& ztv&J(3BB4^A!8ho=khg9ohwkjgLY8wv^&tpkQc?#Nn*Z8(h@jBxV#~90pFfJ-*5!BBHs+jy?XHU(FtjG(V;xa4%@si3SJ)$t3H0LhNh1%PpI946-_IoC1A1BWZH`mls&hn5l{O z%gg7e615`u7Q}1kj^_B+Mhl&*U=$#R`1ZkZ*c*C&fEMFL`3-vn;XP60;*gx1Gd(@x zkF_YsJHf^_bOySE{sJ2f;hX<~1XcpSv~s@;R+>8f8s*hY@)7WHz8>EiazPymCtZ_A zvGy;$;mS%a&<8dgWo5ZpW0+k2+{AZ;*(LE1qL{K zEKtq+4%G1Wu4P?$=s0<;r|w%_A_i~!o8pNvpf&JXHD&SX;2S7u zoRqxkgqr%CnzltZztjtoOP{-!V(+;FJ2_}Foif*)f`ISw5PDbTcD?kSUCliz{D41F}$e4cO)WMN?qy zi)PYT{Hb1)i;dA~`T2`=fA9-5ZZ72YqD_v=p7@2_#dvhDFfY3IO4z+*DRp9NTPAAQ zJ85fF!l6ZOA6r#;UBq`o zKtYiZAHTb^v9YxU(S>6EXFmh5F$|1s(N7Qm^FKD~|9lbfGAs6fs*FE>@h|4?|0E9o zd;zGQ%K#jK^mLK`f4*>AN$Fo71y00bTB&iNn)(+-`6t)-ACr!sZ)wT-sAm8qeO(+b zE~mahByxH{4{GT%%!@A{BxIyyWH@z>0E<{@X=%$pk{kxGRpX@2N}E!bP79maxD~Y= zhwoCCs-2ZK6nG-$y>_L5E5EL|~xpp|uq@1N*I!PI#7Vdj7r+!lR_1A@T1#_t)lJ+3`XrH$N3uNrh8Y-N--k^~;x+K%*MB z%bFjC;dL5LZf@{z!R9|j8{^XnBOS|>n2hs(Il_~*aF?vsanR#zDCk|c%W^0wz5b}@ z0N8cZp1W3CRNBlsy4X1B>!;BJ6#rBa|22CazCvoa!eH|TC&Mm4KJ^x|)?ax8WD_#k z>B12s$#X0>DCo@r_5tE@h>=)=G#7`>S>IsAkJ)2gO878VqcBU@N!n?F!{26*o4bU^ z?9)IfwHMZmU4}xjiAc6WE}eDu=MOJ{X3=^E{hBt7d>md3R#)0C3x_Rtpay@Bh@mGy zmmWr=w1uS84CGPkwK5P$j$Tb!*nCJ5;2OP9j?sy#urQf2Nip1Vd~zQHbKvcZGCI_H zK|-;EqjN4j6FDtCULwg)&uX@pk8PUH@%ZL^Y^r1NU8d66)^}aEdrXdyII)cZk1tY2 zuc~JDSAD|-(L+E##V#z(lluY5?5}#xm?M%>AoBn&-&GKJ)O)#q38Yh2vut;kUp$<1 zayuf1tt2K%nV@`6Z#3kr{S%uC8m=xXp;^L!HxVEjxJ_XJ@V`$GLaY|!eP4cj=}~+c zW?O9W*Y$lI9z>tg>q$;T32r~KSt^(?^zZ{@X#`@Dz!HP;lHBg(iZ|xjMn3X_83D|ic56 z5~4^-Sx7S~-710t64FSCNIM|ij0H$5H8cX!Fmw-twA9cYLw61xGjkTAzxclIoa@XV zdR?&DZ1!5~iTk;q`#EABVpEO}-P_9YzVuDqOPbXC#Ham4iWOhu|G1WC>S}}$->Mzs zomV8L@LU0N1FCP+MVgzLrRQX9k#G2a4%pbmh6oD$iB}c?{Zj1T63*B`p>?KZckHBW zVFH7Q$e^#0!}d33XHQ`p+v~OR?;if}M`aOHQd08q!u>(E&fz4UpF(Xfe`XRB z(`}!1OBEy<<}EbsuyqIrEod~mSaG5YCZ9Rj3&q|R>~1>UmpEv8WssXM$UFOXWcO%2 zOVdEks}F9l+pm)bo3Q$`Ttq-6yw_$qPIZA`k*V(Hq`pn9zdQF-hKd|gcWaF92VE1O zYwyGs{+)CSP$XD*&=$t3?HS!4CEsL2I8CJ9k9Pf~ZIL{af5SEY;dY`(a;Ew&zxr*1vq4JMUtwKZ&=7sj*j( zWh`BpkUUCKR}(6q4i-=t37hqoqL`L`^;}O@8$C`0h}b(NvLy_6?wcP>eT!V!E$PQd zXfa1cL<_me{QM-8pKK)MGK*h_akRD+>lY5n-ane!%7_L~tg4>JV)F_PL#RFEyT{+x z)wN;zpgBXu57kW+G0zQ1YgZB1kf?MOGc7XRbg2-00^nv8WN+X zO|zQWLB2tAvjI{*u(54RYknf5q>#CG0fQuStMQ{9@;56R7fEDw#4wPXvC;V-f4*0I zV6h4g$K$|2viE^*GD5jz5MTb)ttgsoHEy+k9I%&|INBBrT_1^<0zMCj7=+8^=(8*{ zN&I#_w~`yEJP#6bseJ3pk1pNrNRUd)%zSRMKais>>ex|@?JhG{eH=6eG>_ZY-5=-t zJXXJ%@4O`3`l_3?(#=g&M6}BxTRKC`VdXVwTJ{?j5#al1#aoK8;nWic4n_Q6rbk?Z zEyoIv`?8kdL_YA7zs;nkre;9Ti43B;aj;G}elpUJM(d80MAx?V`m+D2oVA^d_eASa zEl+c%)Q(s)_y+C1BAQ`loA$aR%}FFwsO*}5oNCF)qIZi!R6fO?T-;FRu%CP&VHD+0 z7SYz^24Yldl3?pGLq`2nuGslS4AhU`x6tmFIxyE1UH)U+UG9OVXK}Z=HZM8?_0xcu zC=?*Wl3Neo&4<#XK5D8g&`gaFx8uX-{fyIpIIx*5ok? zQI^#-IEG8iJs?mHe`Qkhc-neS9+1ixn5Qgy{$K&qPrly$_Khjxfk~((aA$DzX1Iz-#;g1&SsUHo+YjHV7lmh}D)B>^e>=p9E z-|P~LIVJ!=wP=6IyJw)3#6-vTjaDOq2%XBO(p`&*B<6R zPDRth2=iw$DbgJo&P>lpQG4e()64>mhp7p9s1W~HxJBZzxPYkm(ym5DsZJA@biGOR zHrw4hejJ792WH=HQ#2P6T%&_I2TPBUNI?uk+e_C+R%uoi5t?c(S(a=I#Im20kMQ<; zu$^1v?)w8zqL;X)FCQvze>GRqn5E+547$DP45R6;J+R~{{0E{bX(7k6 z_%q`5+|%1ZiLzJOl8ij$o<5!Mk~&equ+!?eq~dyCe#vUkGsCA+TFl()vS|~NlP9X+ z6_Dr&kLZi#u-n=tRe1KTJxD&G8&%RSvckuJ`;hcyU&~~nz?|0n-3cTA;;NyDR+!`} zVa-(EE)pH|FpHD@DuVYIOxSK3DjmBlDIN!>D&FC5Xt2LabhCEhgRFdgkkp}DU!!<( zdJd;>R6}bo(l|c8aUi0U&%pu7BOYahr!dt#;j^Nrp&~~uc38gl%rE;w71uf)K0azE zU&mESS3@nNxBp^kq;3ev`H5_nR){v!KR7;Gn`k!9dZFjO?d+e_+=B_`87uO<@Rc$3 z3qucdu1#4-mHry_qh{k*-Ji1C@YPR#XBl@Dfyw(X$=>cpxURD-va+(i!+`qgJp0$k zHH+uFE*lR(@S_TpkNxrX=ODo1S&mdFd0o03mKtlf9JmU7A#m1y>+p|gE4vGRW!z%z zL=e~g$St=UYDKJwa+?evUt(>GM&G*U7bYNf5L=KM0SS(bbg!v$QZ{Vfu_PvE=4VEQ zScO&F%@c{_?1ofh)1L9*jKEY4Q4}Yf^|EfM*T+Nql zr4|fR&wB_)gOHMw6sDvW7G9;NbSTW^<8;FaN~+IMMM4ZJ92Kx1%GDwrx-yx3Xj5=o zJA^8=D9Z&1i>*C!%Gbw?Tvh0vaRc_F0`l)cCpTuIVERkt>viZs_{jhWI}`IBr$=3P&7ptTQ*nv|bj4J$Eus`T`>1rWW| z-v>q5nACl&E{WWCZQg7HEpct-+kcw`h!OS%3n{rrvHkwNq_wIc zAdo!Siku?0u}nz!RY14gW+Dm}01g6-@48j&FqQ^fEQ!*&$I`J*^X;ysXv@-Bk72-sc{h_L}=2Ym_g6xCYT3ob+Ay=bdb^B#Y7?>{lojs zN=X#2H}bh67_#}{V6^PzF; zr)-(wyQYvuwsb*MA+!riWhh*xDea>dRAP zu5cpBH?KWxZSG0OD99Nz_cg8!<%2ee{ry-s)UhJy#!%I(``Vr=E}U{Cl=4Z5ox^@% z=GYfMi?-&$UtZ~C1}eY*;BDH@fG>1fN)3}wx%aa3{dE=@`CV#BKnoaME+fR;T; zzUer@V5a6DP;DW*PxfZl$aPBPi;?C*CRD;CVV z@=&zCePBfN?vE7SuoUI@wbG`VaHeJEp@P2SCT~B$lT4W59ryk>Xv4Fa|?)=sfr%ohxGiSsFQ!~DCKQVe%z{*3A`x^@MT<#^nz+z6dG{^v zxS{Z00~wE>v10u)0dT2Ltq6VbQ)%@_q}k-r<;OjvLrJ~YOvLOCf**z2eT}MkoE5Hs z1nTg#Q4tnQKZ5i8A?0T1SSzCQLf5VimF*AG;Bm1BSh#^}@%Qha$Talz@sR3Bl*2>K z)VVnm$5hoUg(kiJp4{JTmv=TKr<$*2~hrPLR+E|c?AA-5B0 z;!1c|2I!;|@`vyYQH9f`n38_Cdm7x=@3)B|DPK@p z8;NlV9uK-0J1)giM(xVzxp*bm)GuzWmj^BlP=<$r4ijdf*Z2B2-^wd05|fY=>jPl< zb^a)(!y3>jba@Q+CY#=f*(|qZQUwzKLDb^FtiRJjr|lW4`IW#W4BD2@2OnS7_ zZ}~(3|GL7ZYA*Wq`M0TWZ3IWfzmGmjgPI!oJTYBM8dzRLIa-q|*p(vQA71Kt98en& z;HtN$G&W@SnU2+d6gTU1h>ivtQq5Z?aSlBWrN{$}Fwmz;j&yoE5pBxMtHk5QSPQei zdlWfWbS^wg?2I%`y>AVSRmZgFjuI}aftg(!#LZM2P3)e-iqJy3{hz{}{ zA{qpVWF!;NT`^>=Pu8Jr?n2uALtjV(FtnFZf}LGM-EEL(lE-@vlk}vNn?O&u1G$0Z z?+|kxBT?#M2?`9W7=EGPXMb|6>m($`t>P(y&N`NP`$OaW#G1>An=xE z)QPnN!GR?%ffXbozCUyJD_|M#$$HX1cG;^1s!^W0RC= zMXP(j+9l=D;`FM5S9a@}#A;(M-+|J*35$T%3QWO`X=B!mvylo=aJ(3-jlw2n3c z-$R)_qj#E^PK1Q%B|JAa^S*zoFE5n3Iwf|jFfCnqbeQeA^3Y=N)>iljL5#Z()1177 zb~U=I>z*j*JP?93xqB8B*Hn~U6z~U5Wj*27*etcgTR-q`NJ10iI@3q=jJ=NvH zrRj-ikD}>k(1|L34B1WRR_lPku=L~TJ8htbzFu{Na(vw+mMw04El!Cx(LNH85KhXm z7g)4FOPYy+<9qlfBPhm-lsN+_a36ce7fYpg=!Nnh*ZL5F5i&qOwYoil!neWWHoU&C zRdqqUSyo)!`QdYQ%jen)`s{D_?r}fwjjre-T{i44E#1mDjMH`d#}kY!ICO@Zm{2!F zs6|Fg>}*WxKcQq!Hucd@OU@f=ZfMY+Yw->p>j>KPRur_j(RhB&@F?r=zmFkRD=L#s zMo)rqn@v0d1*8VPk(O-E=g#F#s)0U2a*nctL*+_2or*7xG{vhxHL{>W$)Ci7)+~l@ zL3*W85;M{3(wvi(b>v=0({>&u;ccL9e*?nB^@o$%dGUWY?3hHperh+R1$}a%r)YPJ z$}>NiNQuW+#dn4ReHq)rVK9w+rK-V&H>wj9KrM}i&u;`-juIqr&l2!Z}J@BIcBr9p9z(~e!aoXf%n=||APfwXpqt7@{Q*EN<$f^BQffekt4mj zz@B)!Zmh#+TwaTbf#w#)4!_VbvnWAmZ?rJu?u{F$U<;$|m6zUw#a*noKRbSaJ$8o5 zveTRFiimO@A4ztQ$P&74HQ{%1=LZ+(JB_W$N=*-Ar zY_k^m4PEk{aC9ft^08_*sXN#Mk~(K+?Jommo_d<+fZCH>G@-^reauIZuWT}vPakx_ z<|Le>O%Ad;5C=6oj_=$Cw)+E6YQ}XW*?~_PDmykXTO-`hYN68A1+YykO5#P`!%XHL zr`{2kyKSdwfHcC*_fy@xa|h1Q@%kfZMaeDlBiD&h7s=6>S;?k;*+-p_1pB0*utv{scbjOOSbH zq1$To{dFfyt(HepA@_{>gsVOB^tB|mra|M`x00SpchIX9=&wU zUW9S=0xJ#N&Z>H|6QX05cCJAt!DE>W5sxEPSe#sU1Ea;pu;Z-Ufqob5OnJ(d?xWnn zT$Gi3e0eFRXm%_ZOU|^ry{BU{LKgP=Zk=*|%3R@_OUs7CTRVGTpj%H%C`}vmxd8KU znU_lU5M2LqeAwW+<=*OuAPn#BmmI;Rhcw=@7VoE9E39iDc)~SfD3R)^sNy6znZ3BM zkca*UDl8fVJ@9DJmS22#_~~p8ZjV=Iz~e=fX6Jb7&PB4+INpQohHXa-ZocnfQzOuk z`F44rJsTc5*qkR1WRSM}gHtnPBX2vX4dGadCtd8-)#JGHYT!pQ$c0kVOwsD>FJQ7{aTIoiLBZdUhz+8~sW7l~sminUXc_c$k%U9a z2#8xTrE!BLQu^B5J8$=bNfXMm*3thZavdZiqcvrR`AJkslG>k{Cj0>AJ84$u!-v}H}^*Agrd+;Xf2_mX52%4g~ zOpx^+J1IGF!@sv-<3+FyIej0CSvs-te!Y6F1yLKys*B&3Y8z+sjVg1N5a)_e z71>|bVb1Ha06Ps`Jw?G$uMpEBddc=$xL;C%L~7M{Qm)$)Ytb-qLsZ_v&-|s@SIaH# zsOCbeiXf)iN5i~2lDgLVP%ZM%7eis2Te&@&*RTOVIi$1BUH)*bVtetBj8b34utB>O z(4&Xm#xu?+5!_>U6B}xaQv4Tg9Pb}0IBAoXTDA^7^mN_H@n^1R(&k7BlqAHDL{$aG z7a9Sbib9A4=G6^G$W}yb<@!XbAjVW`;dF{So{OCSkf z0eMJ^JYHK}S=W8$F?nv6lRY70p6Rx|LHtgd6sFFSzJ){Jc-mll4eH@2+;V8t@q}DL zLvvh85CS?AYM2GV>zULO5pk=qxA#;rtUCy~q&L9yQ}Roq)skUL{;+C_fdmejR1y@Z z@k9VuvOdDh9h90>f)A~hY)C__EG#-dpWCj3=|k5gCgwpKqo?~~yZ*Q_Ckw-z{EM&_ zC1%eSB!OA*UEOOld2a!uF-k8M#<7IqqrSZn349w;BAopJ)O^J>TDDv_9&Sq8b6@P{ zO|GJWgDvm%mAtPzSx_<2CApUI%A>?l99_Q-;(11)<7#q58?1M;5u&zy86AY)YH*&4 zOvt=t=V&jQT{Z6|pl9mMAn5Jw_0MdasN?-3_SO~;0tAev(RO6{9-IK%_|lTeQtCuN z*5#X`JSJy}B#!|}XQ{2f)3CS%GfvpAq|xtBS8KCq&0tv}tj(iK^N<@aie#(w(_eD1 zEiajq^((-6ljJ&_-!0h>l!1GP?f+XRAiR8l?@5&d%(zibHen_a6fAB5~9<0XU zkd07L56il??D!u2bI+`!KEF2^~-h#O`_{ke9pewk; z3#=LPGxe{Zu+Dd9$IjtR66sNOkN-}(3A%(W{N*{eNTBY%)zug<^<-gU;sN_yazn#Ko~oCL z0F;Aoha@!Ims>ENN4U2qN+ljSsBHJoL`m_~_KcvF3N!(74&V4Fl$#^Vz_LPmzh4sF zE{ORNz{qFdxv2gpzXyyN0H_C8S|bnoBQPcRq`qjkzI==XWTl5S59j2uwp)WgU61ow zreSj?>v!*OZ4&aOsgVe>pHMMbcr)(>dyb_ zvK!eO3)X-CR}Qy@4#z+&hd3ZUs?{5afHb6%5q9Emf0zO3NSR(ZJ$i;N^7q|d z@`0`@AkU^qaq)zq^{z|q&xr>-sK0VFc_@*yuwdoGlOskdnCC;lfJiZgNdl-ol zm^BO0yZ1ttbHdMS?!CyF`)(-==zj?omJE1jPU z_Mghg^RV;{PLMY%yFer)l@smsJ^@~hl*O;^=6=9Eg6KLwcYgW3u)e%JML27JW>2&l z+Lhk6tQ4RS6Cotdb-lK=t};I(Kl`wEj;K1KFD!aM);}g}Tv#zXA*{6cx^WLWT(T1*A?F(}bj#R8SL;J^vXQY~ zLq{d-CwH^q$Ju$RJd5!IBm)&g9m#yVxIxz_Td#0fs14tGUIR%QOM5J>=vN1OcYxJB z=F%2kKmMLhDX1x^kd>NUGBbjyMr7xHvxvVRtiAXhX9xe#T3GP2buRcg&xP) zcN7VZM+4Q2$Ld;EPthSJT2?O~f>yrEXJj8gR6~AkpzzyntCMe`SyMDQaWd&w^NRrT`5U;e+?^dO{?oA(a#|N^ll9=b8#nN26EOSn7 zT?107l1|MW|8{S7&*QlDf}7Hc;YW%U`qwyFbAa2HEZg@_&h}pHxznKZs!@6OM1;@h z9VBf`@ks1cgilJ+)omXejOib@pwm~3W~QT*KIgyDy<2zo-)AEEEMUboj5Ha~p0iOC z%F8Xt{$7sRuszKFwxA^yx5FIQYavSeL+CoS?>g$((~o?|)x)SzH|P10^PyZ^%A5le za&Gc+^<@s_xDVLl7cL6vFs;{bDXW&I8sGwK%jEMW8_~in0_}3k z*OotZP)#u}v2T5U}X>lWw6VopO+~#+J>tFC?5{~v09sRQVHIqET~THRJT3%mRVMg&IyVEx>V5)(Ja4ppzqJ zuYKkxSFkW(mfUhkJZYy_;Jg!J-kQGA(BFZTvxDjqL6Lt1+n(W+Z~c7>D7O7LZ~WlD z|Gq09ZH#^?l}Q<-Lj-4vEDoy;V5>VB6uyzf)>WRstFZo7C_5S9$h&7H{PLRdHr7~k zqgI|C50!AYH0ko~UZUVoJ{w8F`!(*4HSEaypfj5|99y-HvFa;%p>~Ap)QH!maCNk7 zBosO^Z`d&SjOEb?seQP9MkCKD|LOO~UzhYEDn&ybrdc`Ro?JEC}K^DKT!HX1UyGR}uS-(4{#7aqV`>Dl6G4k~bq`PxLZf=!s zrCXRNoQEz?!d-6H_)l7Uc7)w1dt16s!btOPty-6)YcY3zZR7Lb=V#5HYejB(3pyE` z&s}=Zs#m%$VuJJXZ$TUMiSN%;Ijti`F$^_k*w7JAzCpcmVVBL$)OMd2cfy`UYuy(P zD=a9Oa+4YquxrUqH~lo|pfm6|O-~)F{?EL(%GUdxJ!5=%Wr0)aUHs4MrD+%<`ZY^) zsIQ{;r)q^?4?rs8Ec^mF8`nBz6(;DpHORd)G^D-mx$ctKIXvvys=#{x-R;;efpvG= zyvkIiXeOFQN=nqS`T)5Gboi@9+R&~aR4Q9r`zV$KDj*+zgWl$g1c9^>_NzzC??^WB5aZAd{;r-C{9Wc79lA(ES ztPG2hgF{0uVHOJ93SC=?1t#h6G_qXVAB&4?zG)cLN2>pMd*Lm)=~}<=S%YdDIagPa z6fFnC1HbUG#knU|WyvWi9&4lHht{qmLz5AR1i2mk+dJIrTDxViMt^>;%BcGSDbvisCsT<^Oo$89@1^sWau%+5ZR%5G zJ7J}6b9YEJalO7KKF#cn{#h^{q9xA8P-PJuxrL=AzlzcV)Y1IK>Bc9?TBfGfkd09_ ztAt9wrhsMMSw7_HLc|i+wmvs(om+BS8}5T021HHIp*b&lMMq1~_cQ+E+nm_H_VxC9 zrJIxS?3rYC9!YCkSy@lEH)AhU^V2q8s>`2Ee&#S%^CijH)KrN{l0}d;EvL$3AsD(& zm%%S4Aj(-;XxaH!6nQB#&oe4&D(amm35O{S1XXAhs-hxGFIHFy4Y8DRAg$a znt0V7(~*>{xLV}RTfZ^qYJ-rLVlU1fUE0;Jvt9aR-ox7Q8GZSJ1?P0_2Rf1gD;F^l zx}|HD(~q=Vqk3|+4?d`I^i|_8{@%`F!9gD9_|M$;*n<<8$PHb0S}d)dSA9$rqT=Lc zXXfWRVgv}m2$xk&$^DLXw{|ijiMR78Mw`j8Tu+QTCqnzK-Q)_kd@>?tEA~oc>Do92 zjn#fAxsRKaU-?vaI5Vs#Et$6|$ZuTJb?0CJHRY!Xi7LG9nSyI_66fjLxlq@E90g#) z=7lEsGdA{Xdl%rxlUcc*?eD^s_MyLA{DjN*d6plW=4OcMgHnte&L0yN7guGrJC)ev zR}GtSf}r-viLu0wm=1=Q@qFUA5lMoH$zHv|=oSVZYiG_DMj7tD(jgHQudiJQvmFXs zc&2Rgc0EE*i96OsL+kM*i;oWAmywaX69x!Z;?fPq2(5ys8HL2W*XZt!s%4VRdeFu= zC#BFJ?P1h))idUo5pZT&bP>*UaB$dRXV5b>t+@OB@U6+kds=)&?UV1xz$A3h1W=bs zBj{aNzJ%YcF(5xaj$?#*OdCkxdy{XxSzdA9jfTg?F-G-S&|BhnObvof?}!^!BiCWf zL)#l)C6DwWg;`nCKUK+G+1tmPc6BWaVa4ceUVFxAI`4%9*l{05Y@_uswW5utdp>;k zAXoH!gsp|19+Cjo~J8aZA22!fLq0GjFgUSat7Y`i$#bxH3X*)z#cT-n9#i-z4>>ZXh?=atT5h;S*c&+YW}d z{^{^|aPyBa`@6^g%1wO#)m%bxgY`qtLePj~5PQq2q{nJ>%RgY9Ccd z%okl$mdy*?c0~IX@U0)_@KCvid}B>b)3awDs9c1c99vrHT}`IXXU;t382F=&NAa*j zeqyFDY?~Fq62f%(bUvD4Xy6Ju9a8JQm1*w&c^UE$IZlYb-YU9 zifMtgKl(-9TTflo;ZoN4exsoK($$3VDpRH3Kg9>^7j!e^qL)#{zzOI@UZ@ndS?%L9_rG=#w$cI@U zN1nVz@E$vX2B=&WK2V;R#Lh=$3-7ikw*6yV;%ZhFx%Az#h}4MmY%a>iAjXl-w>NK* zp0)}lf7!6*iv~GO0jH^VZI6!S9E45Ob=Jd;UQqHmW6kCQG2!(02Zb6MJxN3?OXl4? z&K$*TPk6Z9I{nVm^OLjbTix&uX3506lqg&~|CQKli}7%l=|<_(E2NAD2fI?hX?2!x&S{9g)&O+uQlF~czyh-w!7d%Qqt%mZH+_0rA-|sfJn+y9?t7JVi>Y8r!IoKlIdaN)lv1Cr!)O7v9 zx7G+HPYfC7P1;d%Yg9^Al{jUpV%%XkY`>d+eE)D+fB)}?ry_dtEmoCWhFHzPj9mZD(%{ zde}#h2vy|y*e}IM*j?R;Nm!_wm?hB{6a7%5XSWm1sfl1?WBW{aV{L8y#?0?@9nPoC z&!*?SG+Zp7SGeT$ggIj{ze?hoH#1?Qx%#jg?p+(!Y;=>hJ|xB8fZ#0|*jjzukn6df z%v@Sr{Cg#zuz*x@u8lL0gi|8|hHGSBT-4UqwlVDUn&s4ROp9SIpA3qK*i9De8y6?D zNj!-sJ~}tc>r>J=u8!ky>ln)4f7JU8Tl;48C3EBccTOoPLr*vu6dpcY7wPHhqN}-n zMD-{IE%1N$J^8%r%6G~&+j9UE!x>f#b^PQJXGb@ zkznUx$QGfjxsJuUiq4HYt$X}A7$-3t=tb6sm%Y47;WcN zICNNREX~u<5WS2+^6^M+*+b7Zb&q%bS%ScgkiP=B(Up^RG(|;4;%_nIs~x?om;p7l zu)?=p`^)-btb&469ALQV@r;j>%-zr1vudY*sJEhX^EYrFbE~Wz35#)YdYFU$Vep3j zIe#zJ?3u2anHey0Cm(MR%bt3%`b(vbYHQZfVkzkasSmQg@IHeQQ;2N@Y6<6+4tL8Er7Z#QS#yCAur{2|}zQO)}x|#=w zvMKBU5)?B@h#LdxX_SUg9#8&lHqTSpw&W=FJ-*9lH`f+_-^KQ@!`s_C*JCx|=C3Dw zcjK!5->gm1O#_P2d>Q%qn?K%X=IE3lFnKpl0RSPUT4136F;Dpc&^+*=4O%%}z%$qX z`qiNbzV_fItw2Q2(*NNeQdIQx^b)@$z-j(E^F{5%iYJU02%p?p2v<J7H7I1RO?GN$rFI>z=`#wzp?3r0vIS9l7 zE~j*TypZ+ud1)Cx!DBVDcp_Dlg?_x)YwI7ba*Mf{WOjg^U9_}5u3<*L-no@keLR~h zb8(xx>oHq{m_nHgy(C6kxBHz ze$|d%t7^ty=Q&YFL3)BPnCfFnaqQ1z&{PMnqSCoqTFxF#i{D< zZ#gJu7HSl9qg#$SyXc? zOib$89VdRgFT3mb=K1ffL<~+_a#W!oq_RNN!`;oE$&z)ynT6uY34q5*$VV!r6 zS*Vjj$=ck!dU;oGlG?`4!7=`)y7cLhLF;-4GI~`Y2tWKbvTR{JANN)nv%9nK3)y8G z%LZb==$&3S(R)QdNCe_>aJ+eySZZ(V6HsCQ3h#=4Q+`Ia$!@2ga(78vT8c$nvRUEM1|WWtNWPss(aK zaAa@A>a$S8B{lU1uf?9U-?s2%H`u%E9d)##(Ey#_uW=G&N_k;r<;c-D##x$}zp9#0 ze`@*U--=N5|5y`qYXNSBlwE2LhlBg;#cI`eJZbebW|c=v-W>NgmT zQX3ET`V4!F$DV;r!))RP9JZ4IW)_$ol`wL1w+D-tfGPHOes3}x@GGQ&xuYLP@=<19 zDjIb-LL_VQtjV%{{G#g!YJUg*^ea7|<>|pM2 zhhG1{PxD#Ay;W>0grxND<^{>J0~*3n>u;l7-yB5CIF3admzQTKmu<#a25FZkBKY<2 ztGOj9p{)}~g#7%RoXPepxR8BTqI<7?y}+0qe)z^A{zf3WwrzX*5?JU=lB zbws?|_>8ji_E$e(&V#iHFLx5{4-g|xCgXiwW$(oB#a(=gHbQU-kDfu5G>H=dbFT3&ZBe2oOV*5{1f1@oVcS zuJY48FCzw2#X{m3yIZpVT9->H2v%DFPk)7+H%87F3^g_GZ-Xr8L8GIGZz@KytGXJ^ zfsbkY5cTOs4zT|}vS(jc5mhTKr*B!DBE7>*m|`P0+y^h?#LFCS##CYs(y`ckHijK* zjh|Ih)6<=V*T<_we=jYNTuXlR^ydHeb@OUvU@K2;V1o@x7f2G^*u*`CxARq7ni^+4 zfOdFKVsatxpL-O5gk-phQ^(EK5FM}MTIZvw7$tH?5OOq16)J&;(=<@6fowiu^0jce zig3p773b^P3aNSRF`d9vJt@Vhnz52%s&pJvU3GH{6%kQ#5@mc=HShi|Ym=CW`0X-i z&jI3NUqwa5A?1CjXVT#oZ0n_zhh@Sdzzz26ebz0YtDl9!^^d1$8oc~GsQ$x5r8};V zxz(<+QSGi+?Jrzd2O$=>Sk@ct%)LrSesCHF90yrwl@bX@a^P4XP#UW4kFasLOHbrBy3&{w5G~tO`bLui4t2 z@AO@HKXev$jjMVybpij%SXUpnfm(OBgdQSfLmQDt9`lS_bP~Ay%1auIenLc5v*eg~ zxK5rChPT>dW1#D)V8-k2Cd~HY!uO?>rGQ_H`Yu$#Sy(Q`wqSfSezxnby`y8_K(S10 zlm-v#x~Qm|+|W$dWqs6Kg`_Wu8;297bS-}D!tN(qJtHU|DFGXro6>54n~8+mxMONvZ3MYzESiboiTJO>6SX z#V^Qn=Ww5H9T3H|cA0^}P_2lSOV<;|U+}^nY7>YV8TDck(wR2$Vc5g*Budi zs{z~$^qvBIee$Q??fN7*#>xXb%vx7G)z_?DH&9hX-tdo6ck^EkZ%-+kSy|9?jlJGi z$%qxKnrR16U+9RSc-|y_mIUpwDGiC!5?~kQRL5w!5e|>m+*kG(0l-17EdV>nY@lh2 z6w9*L)rLx~uHi(jJZ79KIh~CAUAm-UcRf_Bnd?_pRyOS1oA*mmD~yZ802;yI`e5G) zTmTcoa_Tb@2TL4mTpdaH>7LmdVQ|lB7>P!pV_-)(3EpapX6e>Bh<`2ASRBf%5 z2i6cGY#PkSyQ{pMICjAie~cz%3Y7^W4k~C+iFd2t4&dWT#j%x~nz}%{r@Sx?Ej;Sz z+=PlN9d+!v>*G*$cx+k6&^Q~b=EOSv;kdSqrqW@r->rW%3eU^Q$=Nn9Ef0wnaG5Jh zvH`#!01@@VEBnQE77o(}q*?0*Yo|1I4>HSp=HNlx%`Gif61}>5u#NooEP(BFzRR%C z5`rK%Shi9-Aj}5w;c7Ufyt^TzE0!)Bqo=<@!NP0dpWOF}?v7AG5izAv) z`zclCow&VKUm;_x9ae+8ijC5bxXJtHD*pgp_7HLJoEKp}dVoP>)D~0WHpPA;%I&BX zQ|>j^kYWe-+;mGAae8ZDpTwi*c(C2fdp~VvZpH*P=*tp% zzYbi8ziOA--k#0O#AHR2VAs5)Ki;j0fyXoWbLcBp1TGsuvHRG!@*T3yRfgy~OZWET+#`5`JFte9C1M&FU1s?7JdihVwiuYR_eyiL zLT4w)r6k20m*u(|81JAOBN}B>LaEWZluWcAW{}7aFx=2U^40K!7y?>TpBYG!7ON|* zIVV+BL0djy!LmtRiwh4QOT#B=%a0S9s;*drgV#T%H2d9_x?P_Fi*7bnmDp`m@;uaG zKE--o-Uf*EFPP)T8OzhaQl@F~Sbg^3V2raZUYyLKIOj^*_`c26+768Pb_@Y^R6WHG zz`|AtZ1(+d%YKKtJda;!D?mzNdpL+1V-(7MP51;cPTcT@BhAP9`8R0`C99VudpeFg znDH7vyB}Q_iG8=R(83xvz~6_P4n`rXU14Iz{b56zu};Q>=o^N(TEda8ouyrG=z!Fi__YHA6_Y_$A>(HH6n=nsCxa- z{U<*hBINW8AL)Ea=?4JLr+*3~yF14BGukTAI?kS&y?gwq17mA{k`n_@ua5DRQA7dd9xbP#G9sDa_kq9w6<#Bib(5jHtrnna_m`0(ZF-HcRrj(OfomcAy52k zYhwkGS=lajhktITRSdZEbeWt|7`K~35H{o}jaYiak>Rz$U~%n4J1 zs#`ijk~U8NoXfe;*3@TgQMBZ@V-hqkD?ylec|@Kov)6<=(ax2_?5Pj!>Q2=Sj%M9Zy?v@nMt)h8s(2Ad2pw*oTMX= z1apu8Teb7(#Dbw3iOmuk18tW-BRr=P-;&G@sm>oyvOpx=@CE7fN#AeeypiY~dAR#P zVRk=WqFA*NZk;=Lnm+w7y9qGKk~av{JVFnb))6UewT28)PR|f7G8}u4KrAR*Vyxgs zezw#+*O=ij*mBV4`gDXSEw%x~InC229`L&;$t7t`%{?#qEi5)jB@K~L3WsWM?zb(T z78A|RMrrlO;3bN;nkAgLqpG$e$*qOmPu%sJ$-&WBWXWz_*X5P;L3|+LaK74Qex5Z# zkralG6uaf&+gYXVMg#0T@qC-kozqgr%OU_={NEMHnDg!{B>F;Wd$J{c0s^G2hSKpg zF-{WYpa3=+JF2O75S=iJPsUS4pv6slO2}|&g3J~iJl8Z;)Lg@mIf#4#p0vo6y zoCaUy;`Yy7zY3ZtoG$8CtYAl&tGLB+A;xexHJoW{lHZ|^MS5(cYsjucyKpuiPbKHq z$S5*8JiLA_0%%*?IJ@K_IK(&O`JKF37>Eb-_NPWPG5xTGi7zZ5+E8N{1^Ej2{P=te zIYWy;y2|LDWS6%n<|?a?_c{y+d*Ik<<{}-J>dj9)&7Rt7bF-pC0-sSsQaC)pO(xvwj zib@lt_fVzx-n)SG5)mn(N-rVwoFOP)l@dxPmSiKR&^=7rDr;NYp9Dv61;29N71xe zK64EHoCL6g)j4!FwrQ~&StF`Ht_B8tkYtPf5PwpNKKT#RAx69WbRcWW;_$ z2Xb_Da3C(bTDpZ@riAR}yw>6|TVI_$^mls;)Ucnn2T`zGT7ad(*c(Rp_yqd|5a>)= zfX-QoSZrgiQmXwy;9TX(5SjkT0v-cNdt;fyZh;*E31A0-cSFOokbaFruv*dSGcX3X z^;AENrFQzLqh58@zm{<+z7#r7+5U$!`+oSb$lLp$xjYlJ*A^#{rk(yWn%k6F_)HK@ zCu415!*np-^S?Uv)(sbd=vz_WCUVS@Np8iiXvQPmSCs`d1=vi9ucx%FCqo-d zG#jAi;`5!=i^WQC<9;q+R-SLYgT6)Q;Ev7x5exeIGKSCoN6gw1OPVkTrl_zm)Zh`M zb=N=tCr;$)jO%8@DLUy%z~k6H7`Mer(H?>t$a{Imc1$%94a+9%23!mGk=6JRj+rX! zbLF@FcMbYZSSoV{SbDhJ9MB|&u%5 z0Rm2e9j2uRX>K+3>3qg=iE2wap++@VR#$Dk&R`rmX<+~sSQ8cXW5*HFIlH#RZN(mP z=W*q9xvfr}6qAmTTn8ZNGn5T{4lnFJD~19>NNL-9V|}Lk@Jn7vzIP0}=WiMP3FsU0 z`vnfY-|x2Kz?+xX|7ti9aqBO>>7%<2PXt4^>a152GNvy^#!K>l`_zgswQvCSNTwou zi-Xg<+(?l-3PjBS)Ex&W*+nQ{jY`MG*%<&>>0^Ii{JpX3Gs&c__% zX*)VNNcfTeffq&?0AQ#}sn23md;4^zni~NBhH(rL0C3O|m)Cqc0BTDLU5}&19!M=R z-CtSBnLUWB#GYD)O9hSp_<1ij*1vtC+=!Bb;>jP&BI*?oVEhB7NG8WuvMnYr8fvfX zTWI&WILQZ0hK+YR*h8e{!d{WkVg~5B=1SO+LKo&Fi+?tg$GILV@a`_isYPf@ldLa(X;hLC-F){@Y84HYQIHE$k> zjIGH>Y`JUmYz?fj;{P7t(|7;ce>^ZKyXLXf7F@Se02XFrLn78o-Djfe%4`%&oEXim zHoah)dXDOU_zBNGF24w2{FgD~%yG>5c1;?9JN*Fo$|;(ATyx&@Iic!-Z-nF01X#eW z&=f>t?tHfZm^=lK^+UT|`9a=vP=_cCqE!Guxx z_FQXgO^)f|M)zM&uG(RXOnf?c_j-pSJv(@1&?E>**bF)Z%1hU`IX+na3 zu^*QUJQPXEj>B=EU)HwJ{$SEo#WZn_>5MG`mzpMkD)#C3fN@^ln_o8HjdSJfA5`#f z51rEm#hk_K@}oj+g_!OOi!^%g&gsy)n?s<`)xCYj<`ty}{;TfupI1#yOwJEvk}^SU ze43DYhvnd=rlu44(a}*?K+Yd-%zM8}d*(MduYX)u8ZNF<4xrVqY4*BHb*RWL4w2!d zUYKXPEkLYChkx92#WCK0uX=p&Viap-Z6m(2QwgtRkRxloAoQV#_c{FxIbV|j+gMuu ziPOHM0q6x!&GapFwaP0nNC8DzC3xQk^*xt=6?2aIf#H^_pNFsH)Brx;RAa9Fc-R@N zvK!!(aR^#s8u)NCjG_NVC^|w7aW_-;B^7{IA8_n@#KBZ^6sakdiV7`JSbBAJ4*T?` zCgxX7veAs){*7C8f5PmK+5q7C-?uuUCzUN*uXPP|WxcU7u?oze2%Mb*Gr!3}HuhSe z+kf5NQ{e8(fawZDC7mg?E)g_Ww?g!0*hUA`qZ(4!A!Az-Y8_epUz4%5F~`4_cqq# zpZ?2O^~V8<%?Y;JXH01bunIFbs%`@M~9#{x1z0!C*CKccqm?WZOu z|611y@P1{~Y~!)tl)*7Sf0Y-S(sF-aKt4sE*GSslg%!G;+9lRVAyGokFh#1VdyzPP zp=|iPtNu?=fXt3!dZR~t_<4CfQI^<0Lq-u+?Q+sz z_`*w5cr8?nj21s!Q`f1r(rY!8{8KP2;Bk?Eka)vV_Q!j{MdLpuJ`UdBWTv*V@?;Iy z=^96QWgG0e<+$4KSYoa`YwX6x2EIQ~73>cL-r;XL(|Y_U2WIFWM5jx6@pR9*s2zs{>}#Qxc&v<^#47n`yYM;4!?E!!*!K>HGq7}ytKLu&|?1K1U@R%IZ27me103} zQN5?;HDHbnmXPMQ;RFhUmz-bO<;2U1^}z8zBNP9J$Maut7f2}nHcjaC{vl-$^jY8R{=U-BZ9_8!q|G~riFK;URrxr<1(B;e-WXb(& z0^;Sz(jSU!=3N!TZgS(iU)s|n1U`BnS(@1_#>vYk0GNyPv6lY^`Qkq{p1(OGe_Nsd z*I!WRHwX~ol&=O5G1>0#?e78NBkI*}`TCVP;=c{%%f%N-OIfh}5?nd$iH5NIq*R82#1Hn6m^QdM0|TwVbq zm)F7-ZXk3v4MX;l@PQ1=%}h+F#|Nm!$0GA!LfJ_LF!GS|E?IX65a^*udFDV!%7iS8 zT%d1J;Qa#=LDVLuo8J`sfLAFo zOiDio1V2JsOjqjoM-4i<6!@yEm7ka>B=a%|yZ@OurPyAW!spn9kc$UyW&+pW^;}I& zeDrW|KsMjXRC;MZYm+Iv0>%xBgbB&Uk{m9Xb`2zugGk)7ffvbHeWoiRZVn(L(}56J zP?HMqLQ%y81bSk&;+7`rW;Hl@j%Ld=WMg3=1Rtw!hAO5m9W`0mSOD%3jmP_pDc|xQmL}g66 zv}&ff9^CNe4UrU+Y}3_1_<5TtuyNnNxT{Z-7Rxr2Bxon<4(DKFYdmRJPcJiE%+YH+et~0FM5gCzeNt~bchNmw^7$92v*?&Dr& z4uB6HvB^*18g4SQsV(<_3*R42>zN0@a8KGK@ZFZxH35#jLDxaPHX=Vb*h@+LbScGk znlwfK^z>9y&)q#OsE`%_V%10AALhm>X}4@9i<9_3k=sgr7Se`uZp+K@{_R70jRH0v zPd+X>^-7V&0JPoe>NyuQHLzmr-rV8}SJHI4nN}#03{y%oPK&k9GnB6AG~|4w5dp(pW^T$yI}JH1%5RpbhCy zLr>2g;c)?Z;J6q_W~6xna$s7hlI+N;iIU&uT}=l#ht4w6CSLZzlLptOeQGk@G9IQ? zgk%$t&ew3Z!8UhdW_z*$_OxCMP#CswOs1wf45aT}ko;w|h4tjPj`Kbmpr`~F>9lfB zFYFPN)U$E{u3)O=(WW*Kodz86cDaCzFJBDC2FTOx*1kV3R_oxl-uQ_}(&g&n61KVH zfIdP2iIPCPI*SB zi{sShyCJva;@Df3qCVejvb0hjW)j~mKW^QIBR4iOMlyhsp9jzQKsib}E<*^JQrh-Z zyU+croDg6!xnDP-3#8@*lbx| zoP=MXM6fhhx-HHFLfz}#nRc%NFvC}F01Az=%X2Af5Wb3&%47?j(piu&k~E_F=Pbg^O>4I%E;h`obAnp(t^cX*l51r6VxXp9Gbg<^L|9Z z4Pm(wvL4N(Kmjt9x3N(~&UX|Cz9CjqM@>Nxlas;|l6`%BIr6EzhV3V6tm>MYt=8zU zv$L}+mWqjj_IpdR3=E5V4vv&bi4w~|J4OE5sw}pFBoQVquG0E?_tlaa8CdTgOSGJv zTxK4!cQDsNtr<~i3b5);74iDB?7s}fj{qpXK#8DnvQCY-*Z~75r_64$DxYCKveO6v zq>&rQBVZ`bcHd(TuFvLx#{2az0@*ZEAo}{^HF?bJ6F}w@Q|bgJlXh0ci$`T?XUxwZ z(fsT4=Z*%~yye%{dNW}ujqR@{TKBj$e;KR{kV_eL`7yCDGbe~!ztgy{zBz?G08Ig{ z$V8zl1KdXV9ePQr6P_nK^LgkBX+60IX{1uxXg0RoxOk;h-tzi-lkO5d^s(kpnthTsfMk4G9WLZ6~ViM}UogI8b9fTt+>fLt$!gR%Nl+9Um9M*4qy+EG;CqlzVyq zEP0mZNXqc=mjAgJG#!XXDJBcHWMyS#XJ;2|{2I$mBezpr*lp|z=VI%D6DvV~JsVAJ zCLJ#05Vkb*oUg@TFmA6Vqsu~9HEr)u_>dk=kA!YY#s&rJn_-8 zWdaEJCVNX|jXiKUa&rSeblmyy&=5prmq~T;_;tcYy_E_-4OMmUWW1tQn6;tXH zCJ}dC*fIxdM6RzABi{ijS$RT+o(RAw0_4{W^yv1O8?`t?$5p(>iZV|X1OjM2mB?%H z*6{iB3H0db*yZ+5QyNJ3jPTd%JE^F6JyBx~wS>!<<&@nf6mB6H*z(7g?CiJER+6{u6ciKPeG@lKZ1-Be~ZF6#Pd}j09r^E^mNG93+ zdir>?vA?f96>N3Vc)Upn-To03RW{HO`Lf~7$p$G=wxnTqSc;cR!Td{6AW^xf!%O-u zap1LG$sd!GlkF|#SkdI2aS0$foY^mahJ#U4*G2a1C0%g1aPViz%mE-7cFX5i`W0F} z=Xa;>{qfn@+gF~Mce?|@bv9zr++upFrL<-z*-z3xR3#*p%$M-HUn0kBZv~$1e!H{d zCs{N!G?W<_Pe8{0P^5;riXo+jYPratpuJpoCFZ-IfSsFAv1n7t>s#||k~sLp>85MyY zabbG`#UCWT&NNIAG{m^Crc$b8AH+l;{T4Aom1bfsrZX+)=#i1Yx~sU4Y4K61hSZ9! z>5m@}TI<*sI$^%Pp5IC>k(l4{-bxlyRuZNeCq52{oBO_*(DH3~x?T#AzZv0bI&}K| zw-k`vqu~Dv(8Q}O1G@mC2^~ul2HlEnFG5uE` zUS2H~tX-`N(Z3PRb~es;j;%_Zrfy&b(i5` zsoY^a&u_%`DR@HKp9UA+aSU=)lWQ&#;LY`suKLGQiEF!TZlY-2RmNcc1W=JQ|D|fU z9y4_fG^2Dss1x18Tehp5YZMNj#BtmqhxXvY& zh<+okz|hf3rWcD=o{RBYEcn%5YWP!2-rMu71hm~^xg=t213tHm+6BH&ZPyk0*t`J} zg6of&6Jlsxwi!A*y@mwvMUKjv%@pxOKI~K(GLih47H1g>+MHEFC~k&mXluh@y3%69 z!^`oI#0$ssGs5AgRNH0>d;Tf%7%vgexrvIy^?}BKx*wt1cQuf%8BT3e!&Y9Uv(;2PD#TTZX-(Rb|+HmGkoyg1EXyW3%|yyza{& ziKLf;?+1c!ijj%%&iap4edqZx=^;qvM0z0FfiUBm@#)rsnJseaH8B%;H?Yy>y|c05 zq=Y<36`?9hb=}&Fiwj(IY4F7@TnsYmy3a3A`@*+rqK+^3te)vcnhGiUs1p}uc=u4& z^(N>Wuw8c_q*OoU)T9>G($s{!j(~`pyb^Ru7K3V-X_}=Kt$hRZyRw@e32_xh+Sv9b;=Qa+Tc&*VB z9DEMwMSCGkuCl92iGM@*HNRc6i_T6YZ`f#H{@tc4tF|tMwr2wSM&; zMr6CCvAG#4c?(|iZaLVE1MrHxd57Ll%w3COJ~rT(cWVi-wn)y?Jl7hJN6JVjueA3A*@`U@G&)Z_ub@k@7;WC$ z-G|!IcJtM`WqTMrk_OzLgxwn9Mc!4F`-swKm-k;gcE{XbUDz{-(9&6J6@-n4flR;o z59|ZYkFt+#4I2v!geQQ)2rYC<4hTfCsIL2`X0To&% zI%xQs?nW~zvToi@xg8oBx~?uP9!FlZvg-|aLpT8ow~4sGXaOIm0`BF z5W_&VKMmbJw~GX_5vXI4UXQxKrFjQ9J*jRE`^)kARFk<2pl>7giso%;2uDV5 zw>?~15BeE@^EQn8u68oujC%Y^56n#E|8k=Cy`rL`t-b%d3kew!ji}dn>U3Fotpy9c zPI`(tGckEz6kfOUdcT5L(^>h!Lxm&(+j>leoQH7pAfn#U)fBxL)U05Zaomapa3>zB zz->gOKvsxqe{RfebZo%QNE5NaFy-R}H-LqBw)xsB9kINbEyuGMonHFYB7KG0b%w+{ z;5wU)0x)jXshaIuwj;4(gIno(jG(65sH}N%i4w<|YRzu$Q|T_woxiYvb7JxPlaglY z@LM1f)BLisM>dt>ADkKaV@Ms)VP+z8eh8vLSwg}?e+bj zb`g3$-q5$-+RMwOvo%E?Vd@?0+LSpi&TTuKUiW{Jf&Qk^a5vA8^xVk2mjKf#I# zKQlZ{fXN0#`1!n?&vG&7F{EX!T^(^=5nSfZ30_UEqpJDhv~QVk8oQcCHoLX3uyCj3 zw&25U?zx$hHQ`>pzL(KD@tI=5kM`^{R%@vVVs*At}t1nQfAZg_QP@mv}A3<1-5Tdmy% z=0Ia)4ltU(OEjOAcmJ?JPGn@{%ShiBEFrEa%ahC+rmiM(npJ9=!kZ%u7_kt!Y(^At ziU<8wCi!xX)KtVXjM(L)!OA1Tc{wT1sF4Bk5s>TK$AtLMEWmI#HWgA@5_3L`jSm!? zErNmC&z}Awr<9y*PAf^7fNgz-V5ZhV9=PyZw%^Py_DTa0k>_>dmQm~?B1pjY>4eC& z2h;$g0*xOn>Y2HqCdFKBj)ln=P6tT&MBxLez}{@1OX99_I9a&^`1MH2cFm6ivfCJ+kT+DO;hn#4xmk^Mc)wAXC^X0H%=pOedy>$Jp_`Sbg9qT%i0<=MH!FBA zhVyO(#--dD4A8lV91ia5^WY+MC_6jwk7qJqmRl+E-(MWdCQM50X=;!MeD?K@Ca2Pm z<_~R0$aCGM>(t2~+aI=VAWN}dyTM1jtrweEuj9tKV?^s&(o+*b-z5K)RzbQVVYjEC z`VbF_Z{sC8kn(LrP3+~~oG%VfVnJ?rAjf~Y(C+6d2@Fwr6{2TTUBSE`vPCNVT#^rf z)Rg+>!*JJ>-sCBxl8DS#&!0bUz+6@vfcqTH5sU8pQUGcUsHS21DaCi%(y+%^=?**H zq<48#rAC2obU;8=0hsmFf@QHnl5n*Tncw$Uhf6Di>+1lFV{3^lp~~2DO8Nd)5Z!~{ zWIvMQv|NTA(Ct-9y3>6$G|OK?I=^u@pv4zZG$C)*h+FKz@~(G8HW$Ow^B$bda+YYOZa8Sb zCSL9VM=*hsH6jtF+g0hceNIf|7P|o0P@us0xihEjLgaovh5j&r@0}e;5I_umNFL_E zd;58R&Y&$2K`HCA=Uc8hxB$j?1Z)kop}x~2;Z%4cJpryZ8N|sD*m!){NEupW^a$;? zaHWyvwqVA*rOV2`pO(PIEalk1fc4|nFRte27uQe$wk&wy@01Oi*x^DD7Sld=F~bCq zoLyUy&AaJsJAa_OgQdht_F0t@c%QBt^V`I-b4z={VsTv)dO1EcKkCDuGX8(;k9e!S>Vl zqHOm1sj`p!=5jzoQJtT8uo%pocll#FzG=)))orhB+zdlzp$fGQ59fhCNyvwhk*V+{ z^>vBq9-7Je_E)n$T9X~t@O;{hZyaw?G9E@*NMMqpFO`Q{uT?r4*?L+iL*vf76fXiT zVIphygJ_>g-$19+s~N=6_B=BiqzTijZLe&AZzzI5+K!@@IaOZTPqP#rjrjqY= zAosm2x3d_Q=!G2zPxuF?2AMZ+39Wk%S~k?#G;be?!a}byVfa(*SGe3<+_D=cC+E}X z=45swvnRjXZIZ6nY5dYMld(mrHyqY1_Qcd(X@HNu6&8UOR=ZY#kCkQG`{@*jyBmkH z2u=K{)B(o;9CP&e6thBKTL{uS?%X_pZhsiMT*E`lEZL>0p{bF8uV0g|@cg zypyfQdPF|f!Q6)2pf?Mu$t7(0ocB}N63~}?(e?2nBJ7->`$eh8A=^T`QFw7LmH5E{ zWgpGqw=r1R6u|yojMsNi2HHKnMKv5U)hd7ov_wmst*vLcYpYjsTE>~=Y+L<}@No&a zMy^@hUULKYw6CrJC`+zF3I$Kb!b173XrLXlH|adVyj=he;Rl6jCU!C7_B+)FXr;yI zXq9span=5QGR|ZOZ_k}bZNxR*30r1#=tvETNT#0Cl1FG;^YLu0$Dz@1@6!Wd#U=6| zA}ZtCrFnndU{o?lL9{rIyNl%-4kilGiI09UyN}q~=AYMb^6G+pQidC3?V9j(<8HEn+xUquQ54JxCARFif-WcmOb4)RDf>OUr%)uipVsTi!FvD16B?=E^ zvo4*N8S>s^t==~_Wn#*y3&w3E-H=Sf-`PB`SE4=@3$1HkbdB23dZ&4qZFU;0K>JU zcMVdFncW6T6WEe;UKACx%w~U~93TQZ*$J znW;O%s+tgpw)-P-cQ)SR?J1uqu2eGOhj*-IE0z;tiK~xNP7jVmw8%Qlzc_mRP~7yj z8s8Fo+!WFv6P9wcw6e9!IzrtYC}e8op=sBIw{}MWl`Z$cj3^y83lH?av#O7{=7mqZ z+^aMN;5Pg|7nMvMVwmrA!@YL8X?$jW44=uUi%Pbzz0j-3ffg^c$dEn-1kOjqm8-}R z9xsbc9W>N&b34o|9D>}XohCi}R2$z6WgD}dcG6uXq1RX`PyqnxhG~S+i5U;|pt>6y4 zR1s=EhyO5Q8&x|FE7j7_@Tf!C0l^o+t#|KiXdoK=hMwBy+@H3^w7j~)6B509=SOF} z;9ioRKl7nU_ZTWEpI@-l@k}d^^)41n``i%ER4!bSIb>~6+Wp5-LkWa(GhczM=0Ml+u;c?qMBK@rVv9hw7EVEE`c2@AHJjWs$_kZ!1px-ZsKe~127l-~6=Q%P4WSNOvoC#a13(p8+ zbnn4Sp3oV_k+Bi}b=njQtc6PL2)}(8Y;4dl+;JjoqzZNsX^|-C!qeiM7RM4C#i0Cz zK|jjv>Z71a@UOdUcW@Y}2;Sj&fpgNA?_K{eQ)}xwx7|F~XxqQ?O_`B3-5$*6WjPti z`{CJZVn+{T%JClj-DfJ#6;Rp_g4LlE+C*Z<^krRB3W|-;DiY3k%hQVNpvuAJ-gT!9 zqvu4?>9;wvH;MtV-ymcE9{G?32W2LFc7_|0=rf!##$lbLMw9oAXWmXQ)PzN<@3wY|WznY9st{hP z^<>@iINFJFJ$z}EvZsMObPSk{YJIWlrs+OH;_#RERk6(0VBg{4a)DWo-1L@~`h4XA zaU)TCOG~++;-#2;A@A+DZ{JHTS8iFUdfeG)j=K==)F`;5q73-N5$SKu`8<6JB^Z_g zpG^@G5_$m8jCa-^=t1UNx`;S-{U(pmS4o463VJ`n_#-Umu)RUDV%$m_@}|qX9|WZz zRIs!{;OQ!wI)zDYH*c0goAvSZ`33k+7hwo#o1{o~9ScX7!7D-ieKpO46aI+%Zw0hp z0o9deo1q5|de$k^5lNIWhaP~V@k+MQ$aSv>-|lj@Bl=eNy%v#kYQvG_g-4Y<=-q(-@@iAdHA4^64eRXFPdc^((?m4P@8Yl4kj&^B%1E8Tx! z0l&~(1*eZ{dFVQA(PL<}BKklHL%eZotyUXzH+q(tw?i7my6I&1n8KT8(Ds66I?;|5 zfmDjd4uTLQDps&0x!TgwGAr);;v@rA?CLMm{P=@kxe`CWhK3$`%ufVG%cd^`H({w_ zwHQ71)9ywjCGs+f$!e@7A|@&}!Nwk`A+s&sGi+}S9jiXa#=r)xlV-tUixo_@JR>tR znMOx)@$8XrB$)hYsgn6figf3JqT!M)YV491!6tHKT>4pWGYc7(YCt1~GtR|H$x!B16RUtjF;J|yeB zATRH!O`yKV?y@GtO9A$6n^?E$r*l5C;(~v_aaT=$?!fO750M4)Bs$;AT^&Y=INvJ{ zQHbPuD##3}crfdTMzI}V4;!5i-mrv40VISYs6_9n*SOp6ASZI`mH|h$WZFYqu z$fmmO;Wd9Bq0V0Mo$edBCQ`FLx$b)e6wyw5s*w}+p4V94bV*C=-e>%t$cgc}Ql1Ep z1D;v2X=y@qF>ZV3BOXF=bKYI*_BJM6i-#L5 z4cSzjkQ%kprXM5G!`mLBw8`sF8AqHOKhL+Um`W79A55AGX%If#Vib^$FKw74kB@X< zmDPC^TJm)n1dW(3KQLwJ=m$b?I5@C`(qccEaH>&(WOr%K>`^*C`;1rSu*8AP+Py>M z$i8ZcZVS6TM%U>?*@%}rv8s`QA304Gc9W~WZ_~NDdM`6cATaBL^wyEHE0k}a@u`xu zF6+9tt&P*Myg+7^^>l=bv7w2H$=graUmAN=IQ5&Bc0EFE!Kb}Sp1YrYE)xpR0?xXR z#Lhx(y-}qtJ7ho^5?0Oe5(P7uPNj$X2BUL*9|>J1;=!+veKiA1^6?B7+BGxT_Pzc` z#oMCjO&`pZ5v@DBy@|qLaaS9j?bem`BBIgqa_;7q{QPo$J!Dpu)U!m+nMSQmwSKv|7p4@*_bD4MmD~WiEpo zRrb`>O_7V8=6dSo*F!97Ln0F$W+wS8h`9qZ2dLq$@x*Di4ZlX0xPzP{wQD>*9)+FE ze?B!$NB{}NzzC7!>grP6LbCIlKw6#eaeJp+xtVZHXMj;otUFA*+%sSNfq0W0cgJ1u zJvg(Rxkp^r)|u80&z)P0sX3KVQ$bdq)0u^@+~qtRoP8}tJY;jzl&x5|$A1TqB@Sz@nIOBqi`lRc1 z1md!Jd{$sS+O6I*x#H)6jjrIV0lUSngBm^l{l0fKM2XS6-o$5|U1biP_$H~hxd0Xm z4vz8LmYZB$dK+hZ@u?SEuBmXxf$XYu(U$FDTos^#nwpjX53ad_9gHV&<_Uy*^Xve#fX6n2ez zpUJBGjv`~#V{5yv+;~Lt$S>(hbQ8TWR3>(ficH)he`Sb^^}*+!P(G0nOaGR_;sDys&)J13Wi#%Szeulu?ZgJ zc=1e~cM2x>x)jaqp~0l`RT7eDG9xJo?}qK+X6fw5hpkkPL~5+PJm-vx$wQV}=)Bf~ zP*b%vRqQc#G2#co)s)W}#j&UGb${e|scZ83>-`rsCej52)E}dc&WI;-!8tK1GuUSm z)WWwTSUY$~2%55LevF>A^+(oW`&L+TQg#}HKx;*smM)*-f( z52@t)A`_BI`ZYr;F{v|+OBfotuMbgtPe^+tiNzyoK(82=o@j6t=`~8bgnG)eT(Ja$-LRqRkugd4jy^`*>!|MlL{seK$D7q>sP0ro}RBs$xa!n}Z zJIi-Y43BVAzP;CZARVY7r=U*N*6%v&EnuH~7L_fRcG1n{vp_dmtrqc&teKG0?`7_7{TCld*}9fAv@epIS}sWROOI2Ii5|icjb=*P+75V;I+mwA zE$5@i*4|?3`Jd=q+Ue70?AqF~yb&gQY&RwqG#oeAcCX9&0_DELFFUJV%Df>aw6rz!$qd1sG%RJR(9uIrNv* z&z$)-y>p?I0=T%Pa#rTM zH_or9f-P(zSUZ~0#-=N$39K6Cu8jBJ2&MN}FgU+X97iGrr}D3L^v7}NJ@A1$G*~Fc z^J-=A0XlSV!9lvtD?5@H58h)MnPVu_RcnK=Dgrwk)CFndu0(cq-NeJJEvI3YT1T6r z++mSoEr%`ZGhUk~z2Atq0p5~_(>9HeH^VcAad7^%a}Yb|9@BSJzse00@6IQrQvOrT zW-Ij*i@Ppnan~LA>r;A`qD!=!S$B0zqDXQTx0`$dHyJH-eau(S`{?(G7*>{|dcF?m zWoFE0B%Q8q)tEA998`#n(_3r{7Q#CnNIf7;YE)o*ho>_WFN7>8;&By1L%UwrkNfNg z)X%I4!&Bn>G>BY;u4fepO}Q(U!ixubaw1617Nm;Lrcx0jBK_HiQ4F6+%s%oa_d#dv zktgd)SfFb^#4<|0TU$&R!b)|@GbZ;~mQrK0-b0~#GW+OhL$_?_mP@0` z96V!etVV${TBEOj3wm&OQ3ubP(xfY*_s3voSpIcniORypXf|4pWuY%D8HUrdiG58aRToa63kS)+jaeE zj-cDx%kky@AicNy8-vNqal5CCv)-#>^~-YSv07@I4sYMo6uFLw9&fh#AdzrS5Z@Cv zoiEMj1HZmH$KoQ)x2Xl`L;3QjRA0?}A9(b9<%X6kdw8B3c`zBHQ79))FJbpC(Rw7z zw##j-m~5b8z*y%I31nmDn5ZX*Im~7|Uy%yTty9*DesvswabaOgV`1bdsK$`xy0a7c zQ)p>PYAM@kqsO9h{B_VW{ct%6)8Q9<-_5aWfkbl`wH3~&H`~LDOn|N61VJP8btetO z(*#MAh13%~2SC&*+i63E*(yY#k}_e6L+s^ysPqmQnT6GuELX?uMwzQpnMOt)X1&pk z&=LyY*{i$m=?k_z4kv57BPg?|*`{D(6S;vq5gj%>FN+TS8Gx<3&z?@N zUcBH62@j{8@OeF>r#+Sji-)0fYS$P|h1kgHSorGKxG8o4mr*i1S{A0={4UmeU$(jp zC5ti~fadnP8)DmhEdoU;a?3=X64n#9~@;v_l}G^ zhUzv$0LiTLEDb>d-`+z8hEd5iWJCaRE@$zTC)W$p7Qe(!t3&B4Y~>jdT3oHUTb0Hw-QSs(witvS^EaW-Uz4JLUl7kQq(%wPNOOb@ z<0-1KBZ9cWmQj!E=O`7TLDD6)%MJ@?p_Bz$O=tZOv11HD5cGA;EC_PipnZ4k;zJvq zOgNKz?mah}hw?t9^zj+8BQ$dI$|VwqY*{gc&N7j9iE=T28X?olvXVxXJn;57b4{SZ z!1U@?gHFb}uI{p8V8=G`OLXM;DoB7^88)M@uD9$YD5f9I8wf)$>?c~`*G{RErmXgI z4m#e`fF+7a>#WTf^O2Hng(mSA>()yol9jqZP@;3>JGim##&WO9onnNHE9E}RJ`zNJ z)+xX-Q#Xy!FfmzfsJ5g`qIiegVDuEXuxxaj|54^{)Ofkv-rpT8Ty~Mufxob-4d_^T zQEbJpgWWItg1A6k64&2$h)h8w*~8FlGn=bx$SIcXoPSK25ODdpsp$ z`|k8m=4ex6c(@4Y@^W;vY6~8Vh-nKJ`dm(~zXqjaVmOi$D&4RG zX+1)2V}Esi%k7QaX+KUKzxG_;`!p7Ev7jDHE>zWee7-)tsPfhOs1h6N|Dol>B9mfX zIXEHP2Oo2Fs_1`1Un5OiTe|+T+%j7y7o~my@P! zK-=1;X_iu2sL7mF+t8^Z|M(dp5`g!GMTEiTw()#mk7cQpAWhM8V(d>Cj~lm6g)jXM zyJmR9__mi0Khn6&B5-4)|EW7fATVIX>Vg1JrC-)YfBx(<@=3Gk&G^}*NNLGwk@0G3 zYKHyZ10MUXzPC>VsvJsF=TRQ%uF<3y1y68ra1}0l3XZ-+&JWYcEX$Dw@Wv{d@W1a+ zxgl7{<6A|4UGKYrG*Mtd6>Vr(Shi`v08rXY_Sa(+b713JAf&rDiS6lK3#E(QXkiDI-P8fPcv&FzCe3XjT+J#5 zzMH%CW@m3Jj+}04BfGzTN$41Tetzu+d9+y@35-h`_RdC}E_Q;dalE7p#065ZMHXe1 zW6Hg1eGqnnJpAIRybDdtQcof)sZ;i{@l8Fa=^*6dLc2VdO)=lc-USlQf6Z2y9=@9U zW(y=gktpS?6@C>tTcQR1l-6Zzs-(Eb4w6jZ9iamW&8Ye z-=b0|@ps(p;WkpGB%%_IsagS|E1E*EgakL_V69qj2>Bq?!{etI%e^4o^%fa0bU5># zuk*{Fo`@d|M1hh%l=%Lf`Wq^jKlL7S=l3n#Ba&fquRvI-b9-c0)z+k~uc45d%n6RG z@cww#hln7!*zw1!!PK!2i!w!pyN{igcpl!S5q0vbpSW~S9{F4csutAMQi*z2Y#gBwD`E%0lgJSy-Vaw7Xku{-v>%+6BmG zV{2i5KMk8vlOxRqX&fsYa4D`GUkpIr6 z3v+TbXwc|^%~W&M9Q?qJav!hkr?;TCZt?;lioyH^OH!harRcc|~& zP7<^CU8m#9+=fdZ{F&(s{F_-{_)(s(uW3sWk2*6y&rc1BNv*$5!}(&q{@$Qx!NTa; z2ZIACIn*B&mM;JOEb_;d=hRfZ`zEpZ7}e-KEmJPlf1HLB97A+#vgc)5<;qT-96Z-ULc((#19^(wP@4T5Ox1s`ihDQC+8njbn-jq)&Blc z@TcontZP)TKV!gg5u>^*xLp3-Al7ijTsaogfBwP15pB-!)LnaZoEv!hXStY*eA%Sp zZ_BKj|8%L3{mV57E1+-F#d`?pv*#b<-x?d!-^UlG0(3+A-`^W>3`=;;%quLMfuH%h zt=~>ilt+{*=tW<@UX4oQ-;d>~ZR{lK-bwV%+|JHxdMXWn<-A|nx2|6`%FJY7U?8=L z7iInXn)?yg(bFaP?o`y&csH*W7`&PxjV&@-nbLK9+xY_Fnm~p2NV>JCu5IH+~8gZ1S0! zn&wF1MC}8qs2ht!+m|`;vQu07sq|d;k zl4k255fAznCs6_8A2kQ~%R%@?F1rk>AS_q>UU*PS(pt_)H)v9{deC9LficnLL#l|4Tc=F^4w!EB_#*-)LiBF!q`0?@? zvSqJvpz_I+S5M@nK5F@79xS7nl0om$j%%$r(=4rv1V*r&hLjvyCtKWGA2C=O_ZJ9f zy$@$`hDO@Vzw^oWV5vlNavRqCB0@YSsEFlQ&2#pHJ9F%Ir*>&`REnpTZ&&=s+4b;; zkOTeWlWE(5^^aelJo)wF)A8$nwa~u^P5D;?$Gf*}FaFu`3H|9R-9H6C+1=h|h?nbq4OU|`|7Z6nf25AR zUZaP>TbX$+>J3J=#>Qe*GDiENTTgJp_`s7y>+Ade_Pi5oXJ=wXRgksI!GD51x(S6aG5P+OJC!%@v23 znZWf6KMC}>{xug4PPGzQ^dh-y9S50P%gQl+gUst+Hn zfR4MSx6vs79QqUbz>JSwOX=w7czF6$ zOiYY|f0(`!KzZ3i;9Zs5}sUPD9bOFC`YS5#Z_BV^ZNDL zPaQ)|&9jbn|EojcU!$)3PWyI>{zMqw;eN&i*= zbY(31%M;LJaCi={S1O{M3m^ch?CcbG;t+RP+VJ`^a$fiKtLp zrw`}vBBZHXd(3!9cP%FOJV(9`ZgNHFb?2A^=ah?ZqI%c7I4w1pK#`-?+-XWWWNZST z66XBlDwLwmY=(0j8GYAAB}eAYbjyiZJs*w<35b%CbU6|h_L7Eo8;g|7m+Sr6J@UfB z!>m<@Pg9$md)NiYf)gOS4yw7J{e3bV$}zM5S{>8G%ob}xkJC&ibrcsrKT^VIdd(of z)90Eav{>xpBKy%+!^s-%Os_BOJ9IP*3;=xggr&MBXNyy+;-eO8k%Yqwi;FJT_oD~P z@VV*0xL~(;NeYuw8j_L{2(jsf1wUH;xYzHkEw@IqL|uLK4Rio{o+JB`VwDVt^G-oe zPKFMYae?ErGsAjw5`S2+}y@AL7;H7ep4h}Mk$<;SXa-WYo8 zk?Uh`9x<`?b21*fOOxe3rwSYyXsFSJ9n;`5ad9D@va(7u8M4F18T-{4%Vij+( zj{ciSlo!{sp~6*H%xr9&{;dN4{UlJ4dHVEeXX`_Yeyw$N(y>nYMWZgD=hN^#?g|55 zl%k>{%=cE*S|cNLbyMFahvd)Ecr;0=7GlmK?)UFLpTNX@1|k)LdWB8iX4>H3U_~O< zr8cV!t7lNxP4dA)GDASSd$Sy^IX#Vu30080JmY0Rz17B69O6LM+1RWr}U zdViM;ondmDcY*8c>*nTpc4i~i+|MWa(|z%nIN>IlHKg}$J;R0EJyH@^$yBBBadtlF znhH+F6w7m`=LdFmDHimf=H}ik#5XiF#7g_fmujo2y}b{3+m>0g^GTduC=z34hWBrv zMIVejH85k4leKkUXp3cl#9(%^G>a@gdGzsXk!APA(R;cS4mZ#A(cWIVQPv9j1a7jI zI2h@ifutzG1gXm7V++Ik%fPvkZciI=W0dq;)#X_7Q9^WSO*5XRU_o+Y)DUn-ZY~%s z?=mrEjPR6@&+oDIM4dZ#ad0qHc3M6~#;pq`mYEl5 zGyFWKHt>T3OB=p7F^K`1H7x_Yjui@p1#(H)-Db=J29q-U$S0o43q-s1f1l&Bys~xH zPUpa@0z>hP#pUOr+w3#ejXkp4?`VtVd;E5n7DfWU7ApNzQH`>>QJPU4+S%91UY z-C~{p<-t9o+(pFtVX7U79yTT>jf73(_lGxUW8%P-rTJVlGt`iG4BG=NkAW5CiSXo&t`cT4DJ@*&o zVl{eHYW3F)$}yTVCz-6<7zrY)Cjg@J1{JfBL(JCaFJ4@S+wwfv6IwZrImwilSC*Q2 zG<8^V*+~RsYUC!$(HY}}&pX;d_nF{@UsD7jjNJusGKE?i9gIl|LP9dlGbp_YGraYV z>>dh*lQeDTKc?!Z_>QV{H1!L$ls+GGeV{`u9>N{od!p_yKhBLN>yDv!1~^e0t|Tm; zFF@hOn&t(k9S%jcn~?@REGC;UKew&CgKr;_3UX)8A&AK<(ECe7I4w1-wQ6Kc1t
      Whq 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¿@Y&mZ*V=@&ald0{FW8XDZ>N2N=SV)XU( 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 Kvfzc`hyMq$^}CY* diff --git a/.asset/search.png b/.asset/search.png index a30bb1e1ce70282c0b793b2962c4cb344c06ccca..7ba5324c594a76099149905ce139e6a4d8a3efdb 100644 GIT binary patch delta 23474 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

      J>)0B8veu0nw$=Ye`} zz6ucS6{LC16rhOGVnNc=q1$c!9j4lxaASNuj!aBZwIS4zqbbZcyl5V#>j$7g@7 z9zJ+Lj4d=dVk3|OloBm1cXxKEEKnJ3?`m|U;&=*QdWg(^!|5uHI8(If#7Nu)9U6WWcWhz2+;K2w^HE{GOSt zVn&dGlN6-emkKul3f-Au9}>1!v@mKOH`2p&uv4`qo**eFs)tX;b923{CQ_Dtp)D0j zDF;9n---Pnt-#j1@S?y4WW%#nW@rC~GCO^7_2ElKAn63G%05TEpo@ZY&y0+W&*Y9NrpXcx zt{lY#XMswiwHRlRKniNFsMJMx^bA;BUf=a?rSE_dfLs}JBStP~JkL}}?+MUExFi8A z(gFY-CR8Gjrc1W~8Czi=fEySA12}mqj<@xK_6egCa+{4zsf2F>Rmg^b6(fV1W|dLl zQPeJLFmGkP!|^<=Qou3KTb4)?-`g*D0N~fV9~lT&)xR*Z(}^k+joQrCrqL1y@eIx+ z?)Xk?vJeCPz=Z}cWhW<`C&rear;OrtlZ6$*_%=iAgDx&#U7OLx(#b)NYu?}PixQ88N?b#;D{62#v=%2j4U+jk_iQ{Us+ueBgE>orQgE75$A#j_|W)EtC{ehK<%Q;?J z+7aYFTO1DuAK#l-=~;4jZ*6hbl0>fR{8w2^OIy8`ev@2X)dDr8l;ro5ZyGJ9LU%zn zGdrsO{-Y#hQGM8edF0a30wCMhmR>fMKqLC$F#z6w;*j+v=s?pjGM!{@e*P|GkaPV^ zkf;KB$gApwn<_a;RwMFc+*zJHrb!fG$&PZa*0w%A9#W<$E4|q2af5^Gw_^Teqw0mm z^gyHe``kYoEQOezAj$vM0y>&^vNPN-q}xq+wScydtP&p+6-tWei5A=9j&m2wUP|R%P|;bO$h)` zbN75Pk4jwU7I^cI*O%bz`)u(r-5Q6ztb1W2yN&|2eBM>-MV(SH4BPU0uen8q-q-&m z%x*4eHCJFB>XS%E#kgk!W6a;a(k zR;!W)y2@8>U6z^{da62_onQjo`#tEn64(5`Dlx1iI9$Ro^VN$8aU%3PQw;+o&K!r@r`=}6 zbQdf!_iU)8mrq?2ezivV-@M*J5m+nzoS3ffH=WqGHCf|G& z@L8}tr+&>O%3?G-MDpfK1(sfZ_tfXfPYsB^aFh(vG5hC5YLc}wL2$&g(5DG~rT~=m z+?1sH;it_2%J1#)$f^+?A}W&p0h?w!#Yp`bxfMqtsMkqNtKW}whpD~Iv!RE$uUzHL zjipSNrt|{5JkJ>uokr%`j*s^`=xX#6Y8_~5@QIIRp;u`H;|W};U$5ojlmH3Ht6@Z0 zBG|hK*8b)*0tNyck#hf90SMKQ{slF?6sU`N|91&4+!JgdOh)}rL4WF%!s7P|cyAxD zqM}>!LZ&U9tH!raHTRSEf3D_eF*Ka~0FSNb9?Qp`=J!SBUnSuzV^-6Kp9ox_h(!pL)TknmHu};}`{wG%-^e5;g1^-Q0SMP1t2htYi0McCN}9;Q}TF zO_*-|QL)tiPh_0@=Bw+!yR5uq%HWHMCO=-6vpMw{d@3S}7^;})q{vBBB3qg?h|zZd zV&GR?TcA#2LKNVdR47(6q%u|wP_8PGKZa}M%;5%>{u%=7x6om%;$*E_hk(KF?5 z8#(%P&)^a0&!4`=Qm)2-W*e!$YD^40OP9h9;CV+$K`V${;5BGIx3ha>#50~(ss*4S z%ja(b6W*_W@p0<|xX-KVdE=`@`c^+4!kTVe0r|i9XJH{ZINdo0q9}NwDEvMBTecr! z?qdr{2cL+dQk~I@bt!<5I$*lTrddF$=O|u-zhSr74vJ-a=XHlC2Q)(o*;Exp7zCJH z&|b|JUgA`ef)GnY;-JKa%v%c3Y{7$banQH^Ra(LG;ooCq!$@sH!>0gM zrlzI9L#<;_$jQssa(iPVwe8q(H*{0&bL9+&m!sRFS2z69^pU3Tm333ypy_9t)fZbC(NPCFO*Xw2R1r1WZmL zwjhsem3g`=D$b~#p`9n-hZQ@klR4^g4?Ig*=h(@ANzG$CYqWYK!@!fI%wJ;fE_8Fi zj~FqSMrafgCug)>?rH~kAv8Kw2kk2scj&3vtSX%pEG4~mw=PM`I(UY4?yz`oQqssgR?Q2xqQ1qBeTzMf+4K-BKZ{ywADfG2 zGB);>G%Dvx^nGODIcFMH64t;t`w+#64e9vNk^fFTYHNxqKsQr$-zRH4M#saItM{tH zQOjuIU6J}0O%BClc9}m66~fWmtzx0;Jn5m5bXV&TTI9a(Nbe`DPsa;R+>Z356y(Vi z>!rCWM7W2d0N2seHnQA^gVZCUI;^KBFkW~r`+?ehHQIPNlWK&h_aPjP?zO)bxA|yD zuDA0BhkY^WCFQbOC0hb^kGL@Foy6*%296%;5>f#lN(8#3 ziXJ@Zq92*07-Y8&k<(71iLsYC9-aH!2loZKnrC^lF}oIU4@;8S77A?^ryTPUSG}f5 zoj3!-H%Y8<6BIx4!xb~Pirj9e7Urx6|C;476HyV#BC}lb$K>5?O6;G8hi8F#H91HE z6SfyT*yXuO($WCURk!NeC*(gY6+OK{n00umzhr;T60g5z!V_T2>|hnyZvyz1Xg8F$ zetGTo4EvxomcP#7^_*N`h@-rdR#G<y%bA zgHzbNu!sobdnW?O^vVs}Z`+HnhQ?tUYHE)360@s^pr#PtRMoI03#;8~XDqBo6{Csn zXx}3WqCcxu*86m!mF?j`W8U}i1!h(6tLP^TFZvXPUcs0G#u=AkR%kRwj{?D?XeH;54u?C z$vLwf9`mZ0%}wi`%whCbrT?)VZ5}UeijLznbMldWscw?5BRNZhdX^;DAJzt#>;iRJ z+&7<#hem8&W)3H1aJ;5=RKI9@?*{Nr6&r2#{2sWjl&cZ{2Vgd*yN(sV3@@@3|H9nj z)4@hA&$YW-QJ4j2awZHR`N9&;hqdg97quSN*#aBq(v$Sa+s z!=H|(e(MF>1~Dzo&NN6Jq_r(jXeN4tj`6PJ{mq%6U?3eJuc7A|TF4WitcLN}9K_IY z%)sJ5B|485${*rW3bG#DZpb&5pO)!gA>S2IFIJ=grsRlT+NVH9c6c?rjA;)OsnDXL zCgD%yH?17q&FIP1K)G%ULTs-SIbQ^K?UO?0|LUcb*cU8*HM!B87teD~fs&OV+9nBt zb|m5)CqrYkQQ`O#3sYx#nzY6e4Jz3~64T;64L90KCkVv4Qvo7guMhuy_oS3^3rbKk z!Am^v>@qZk`%)eH>Kc>g``CIQ^Bi-99@l89v+n3-=hhRqW?bAHs4DfjK;_l1Cbt~n z#_Os`B6kfS1>A>1mjC#S-rng2N#|~~eF5$)&d*0-{zgGx-^m3JdUHauq6lw>A=3}6 zui`-F{icdv-YiZpEr$8-nkFcKTT*L>ECqGXfs>IeZ2}uyPzyR-Tr^fic?7|E+)?7z zL=`Si)5y#x9?nnx#utq)7FL9WOv8O<#_ZPYc>wTWPM%}7$<=Su;=i-AcS7L`R<`=Wig#n_&HGX7vJqU>H6s2XudP(`tVpY?8Pk9;FA7Ncys8_{|3=PZ)W$ z=Q=#Rpx5zxp0|1y!(@Ig5#x5y<2pAihpCO{w*iLhMN0*krM&=xdAs&#}z`fb8QZsU^qGSd+G0TwG8$UA)D5 zv-U|>w^(DJ=6#2SO-X41pcF6Sv?^3w&TgLP&^F`-^|Bs`^{{b=?L;R2zP|703drCR8!i*rx+Uk9>+6HNeC6av$;NQ)5k zb^vy!DjssTvA&&yno!RG$j>pcsjsH*RbstXR9l!L9TjW6U9Uwo+*e~TAoOMJX9!S}ss=TS|6J=VC5~Cn(A7S#QoAJ!cnQT~JWFRq5Uiw(APWg_a@E+Xzp<;G znE0HQRJeAC7j`gpJ%(MC9~SrDS^zdT>T%150-6!*o<=OdshwhgeWxSrourAor%tj? ziIS31GQSro_;OOy;I8c!qoXD%nQz|ay3{TqQ)q1!?j=*9#pg4pc1K2e{e(GLfo@%y z*#{ltck&)5C&Iu6eb5n?@agKHdm9%poA15h$6qh2sQ4PGy61fM(%RXbA`}nSiuvQv zUz)0~9^tF}S5(bCqo9VB<)4pvqd2hVo9col6d%0N!A#i#6-^ zx~LeLAJD8>RRnS-T8!x>b76Q53A8@eHtCSow+HxcOT|^28|7B24_2IcvDjfyf~R9| z_>_Q#TM;{(>8k0~3ncij)|O%y$&VMh59vF#UX{7kOjx=d+yS6WNV#+}RM_b0=(mQ` z^8p2x)XKZ|eNj<;8mbZOWjK0jJGaH7iOjTN+wm7RH6V<|CqR=;ikDrQkr7#T@6#mU&3jdB zST$SPc&Y=KA@yFxK(Jhdc>{i6>6O1HqeI}P=BRrrKhj{Y@zDhK>{4+pxsYPp!Y`|g zlcn13FZ1z?WHJk{2QI?(>Bnru%PZ{NfdWJqNX_g=-EcU8r{x!C3tW=54kB;#**}&N zxHeSNTgi=pz|7GGz(()G=A5kgy68W00uCevR16EACqFlEs?LMwb{{OFbd{J}UTB0M zIqU@%aX44O@A8wrEfSN{P^84M7XOY|Xsm+iR{*q}aR@srs}H<|0RI5g_HRT6Xh>r5X|i^-QwA#mt%m%jT699+Gx=jqN;vo;p<4=`$MGNw>08ILiq{Ud@8S`4{2;s-E(vIPumf87!BuAEJo7xZcuSl_6twisK#kt^M^$1=Q22-|JOyCC ziWzSdUdAbgai%tj4|6te+``Zo#Wlu!0F=aYfA|*pf?xGuuIA=^dg;&h-9Y>&q=j@> zqD7EpD%X}-|3AD3-`_H#8aaNq@H*uow0{tm2Mt{)e@hQ|Ki~RPOtC3>omk4KbH$c!rkCFv?lv*FmXfuMETOX)|TReaRq6Jnm-P;9#?Wp0OAk_tXp)IG8A& z+;6J{N@Yh4bWxk!>hM7TPKj#wT5!G~yk^?(YHSz?9I zcXX;m$K+x1!Lkfus*&Zv zuVwH2=I6kGK|Do39rwzlIf46_ZH7Q3W$Cv_LpXv}6iq%yguN{9IE<%BP#w;cKOO&d zu9=^^Y0~R?xr<a-c0GH&&*9KjHnR@5C&TDPv;1DTE7akFE z=oU@VpxbJQ)^(+sib`F$zQ)35!U`A?(-xb2clk=tgVT12sN&(nA5R*+d~kZuVv{fD z!<{cV!%>oszWMk;`<9Ra1a0Sy_Jh4=Cr?*{n&RXm_e_}%>(ho z%k$iArF!$BD8Kk0~R+;@Ya}C zJ04zMJIt`H-*qPhD1CoZ{WffdILqYY(p{lZ0`W5zG-v$?i(U7BFv0?BkW5QU6LCA- zb)zQt!%9O6mQ=JrEU7uBl(4yXpYWpQ?LT@f7_7hE9kq8~4JG%H?OJTBCaX*j9zyo*E#Wn$mu9J@N9zrP<`0P5fAXk%Jf0W7wLw4LpP|Km z{bxKcq0Y2T&l!o7t($))h~BCOhjHq8r@0DlR zj{~gWkLc5B5T4P1d}(?4u>rLF6ig$N4NHl+_Qux!y8fv2XVEWZxCy-JKF zwzi6j!vIBdf~{oIDpY!zr~#lR5)rKlA>FIO0hh3OYG&0c^hS@2I8Q+{ykzaj*Kz88 zbhCzH;DzQXFZe>yzVLrSTR_vp?lSr6388U1+c|9k58WkIvd< z4ZIK(xbUqJH%HV~KSmImDdGf&Wa4#uC^4niT<{e&_}gtt_ZU@(-VA|wd3mdKI9ndG zYm~af7m@!qXGnqiOm@}y4X=FWG4-%C2kB==R>V+(KH$gp$(?8Tp&MHUgX}BSzh&yz z)7uKNKFE9AF2g(e9%Ii#x?e1|?1VQl30~wg4UO#oDL+O5)Ac98>)!_}C&rz7HJ*@^ zAJ_X_y6Oh)UysH)K0N5GfAjZ~{-%%kmskE!&5yrUvqHGn%4me$Ee7LD7A~zg$~H(F za2hj35nu9$#N^0E7UlUJdXm+(i{eL*Ud0UpvP#2?eAr)4w}!!X^(P5Oy|HpYmFb(R zf{e@)N^i9lf;9CQw&-8+SK}l8-X4 zL`1xD49>j1E-eUgi~>$={r!X6hCeK=Y_Uh1@~TtQd8}_%IXhB#h;l1GEca_NC2z9F z>$xrR7XzZ7sI}ik^+dh9LSbpHz92tL=_pO8_1szU%@HC!Q1*~)8gt4N)6byWzFMu? zG-)`(OAR>zUnZ7kEFjlGye_1IJb0W-3D3z$xnG0?P(R&L+TB*z9tgzN_!veVW9Okr zveX;#QIS-ZQE5J-uqik=SRUY(lm!L`hT6IB?xa82BuBlcY!c~`G5=$WIp(!HNJ>r? zgrdGnG7W3(DJlAA(>08~!^2Yy8^(f(3ZAjPqXgndstTWuea?{4F29|emPOyh5Nqmo zh~v$OULvVyR)O`!$lJ(?yob8ZA8}JMBWasWIv?j%S74u}z6WaleEGWg@2BOJaRHv^F|%EOBX{0>PQ&;{jBa5ZMVbyQOu@%V z&&Y&uJDtm9v=`*l#+~<*M{*gK6xCB3U%ui{$UT0f_Zf8EZVSjDMw)vc0LVWZ5BqY7 z%yf^7xpzLWT=(rmH-ORCFxtt+q=pje5zaL;Hk2d>G-VW=B|IJr_Uy0%E2UBbux-?)LyO=3b}&vEx%UHbzv2r9FJR&SfjsS>rjrvLs$FVryv1({UJ} z()b5OIJ`aq8r+dI+jfImynZFGoB1A*8+8IkER-_uyCs#=04VL{89h~KZBOoVm{7_K z)?grczRVlc*3yn7 zj#HTbvbg31LhsVoioVN9OB1hyUk8vprjA$2(S1Qlnn06~4o=>$`k_Db!8%?Ra*bS?u4{1EyKK=S@II*KhK2KWwd zURrL>dWf@sG~toZb$0Q6CCEV+tW~O!0`^w+wkxqW2>>*O>|*QRDl7vCm>BI}uj&gL zx@X0-0MH^=n@FY}7_2P*f{KdI_?mA7QRKUQB!-&WTIsT~vo?Z$p2T*MzMVLT?z~mp zk5BEz7Ge}y=wc$g!m&0PcylD?YSVK>+m?Cqb%FeOt4csK#C_{(+u#q5;FlRHf!~Du zY_{cGe@3-n+|YwF_Dc`apu-@sWmOy50LJkI-#TkC+GTQkk& z(6~%=!7ZTv*d1FkNQ~yR9qyN9MMeVX3pQZp@x)!8w}?;^^Q&uoT_3a(06c?pxK_xS z8)%lwEoV&=KCPZnmiq3yLE%jwER0esYL~2Nw&F(v$>*+9+im!h(p;OM3R_ey>A8A| zpI!p^6F#6r^+3YG!BeMj)~2+$FjvlA#ysdF1O8vD=xD;t#XMDYwTmJ1q@*`ec}~-i zf^>y*bAis^5z%8R2{>ZLN`Ho*_zIi%U#Y1J?BKfTxh{j3oAvFBl|y8qM+^J2*z*xK z=P#8mCSFbFo60Tg)M;_yJv|iq9{Yhz6aLbFPktcAY&fGsyKb?5JsU>JUPL8;#8y;S z_dob8nDnW>54(S~VB)g!e8sG)Ta?rC8a5sJK`hDpveOHxcXf|M1Hc}V8_vX3$(Kz+ z8jh)g>mi>d^z=#vTYWe0YC@+aWEeA`^K5}Bvo2L-=YNw~A)m`RtT1F{W9xnfC2;IK zA9mt4xS?As`)@4(9Tb%R+O+@2J&EHf0+1z3Nn}CnYJadi22K~C!5e)X&DLnuzS~Au zaKk7c`cVRRwj;!%)=rk)E7_4)y_cH!lIzPK*tDUj8iR6a5UXvYk`JA+N)vo;n*BroYoX@+@444J;oaA-o6h+7)lv92OW7jcdhqn)g&mdBaCd} z^x}FNxd~Tio!sUU0@1&UL8#?}7B6496%wMS;tESyZf?T|A5Y$?)^t zHwWkX^|$(^o%h{(??37FYHs`LO!&`FN2+HGul_{o3)*^BwQ%j*4OW^KAy3gcQM7~6 zHiNY`gG7(?+w~!={!#9Jmrm!t}*Se$rL`;A&Os{JD+Q{c?QpGJu z{N#LD^t>oN(@r=pj&e|N(x$--R)b}`iuA*zT`X1E$V!j65Tx3c%{FS&MS1T~8hBj! z9fAA~{`BthXsFlH)Z0v-YtmjXN(?^J=gNFnsr7F0L%aOk9}(!~RcD0gDtTRx(!}Vm z9Q$1OZh^Ue{SN2!oO3%KbF(dzY6?2Vl+hx=r zaM)i)$JN%CuTKij>-%!nK9MZ;?Y#(D_Dthg$}p#<_##A@7OwZ3Q7HcusI%ynKX2CM z1K1!1IYR3ad9dn+7_R&5i8NV}ABYvh@LocA`1lSWG-J=Fu+<|#p4K+;_1C`x{ZKmz z(X^+R3j{6Y_@XE`ISPARc+Zx$|$HqO#1DKSpQ2V8R;OAMhoMe=b!rjP#P@x?wp(ZUdz7% z!z)zPf^!nta|+~?1>>!WpZE;+f?`{n5jCAc%@?zWj#chn9|{VbE!=Ck3jk1t*5k7@ zeeKUtU%B3tO?zDrDTF{jh>tTD*Vq4o{Yo-&H+j@P$d4R5AuC;Q;ir{Hpagvq?fN6c zJ$F`bp{Z(OH(4+TmLbQ?{H$9aOw{T?M+#<(=);_C-7>-rqTGLc?H@tq4g*{l9Q*AW zPXd(oH(DTQP1n^-Hq17NxTzz0V5WB&t=ZxD8=@$b7Y{nzgwZtIRMFlhJW&5Gm)VFa z6!{sK!aPjUgKJ*cggN$yHX(Rplh$G(-rLLNx?X!n1`Ai+FqQm>JvmLE;}&2rD>oio z-E#Zgw3gjkd*hi3-fqhL++4otV~(j3yFfK9oisr6;vdaj)}c_CFAdUP2M#r9|9}Th z9p2tf=z+|Ij9x0A!HLZh0b!VLjBQfyLSFNmrX-e2^Mql5x|_bwVOXr$8Vk5yo>5q@ zG~a>YvoS7AAoESho4`*wAiXxBp_stuk zyPHD(s1MSw9&>|ka*pVGz3tpi(ZPXEpT0*(nw2nAx~g6ed$*Cz1va6NJBiY&8Y#!@ zgyx;Dn~*3?AobpTH+EwZl;>vlR&>8!^mL#TDSpjcB=*%ci_oj^hG8=3DtoDVHP9E8 zXW)%-Th49s9&q#&?pCD*ow0z^jUzy)6z)>*KNVsZKlJ(o3yG4sY;d) zqYBEHPC=;GWfZfhtIX+hr`^Y=vtGXE$AVD#O@VV4`lu7YLW0)U+mkn|E2g{d@`NljI;yC$y2|sU^kDMJ!va(QJ3xT zJhj8!BR4pv?0bdexlpRwIB_AvE<79*d-^*Df1eDF-Ufo*_sc)8oJlJclHnd3%tWfe zzNK7c?51AgNPlJ8!?)4;?~gB=?Nfcy_DpSFHse2$Dk#AHQ?|S?KJ7*~9xGin*rQ8w z$Vk@LpBZ)2dJ8$*`#$SLn3qUSem%SFTZ$OY-US~ydCe2Fyss(TO$ct0<14{tvUzJj zs8}fCMk~HI%;)&F1c5X_1^RgZ*!4@0caaZLOI0r>w2jNMor_&Yq8bl0tW)=^iIAtK>dnARQiJST%%s6|>6tgoC?yd5g@;AQ8O(pEwVViTo9936qqIk zGq;{?`dQm9c8wE=Uk2U4Z>ar6B_?zB#^(0M*bM&pJG#7e`gRukQ(s)W;kVwmpqqBT z64sK;w+jY-`$SHg+?;GB?Dn5n)z$?D^Ie?B>`aAn_(|jVCkoE5SrLgj_HA{(TPRKr zZcf|$m?AaT!OM-ld?z|Vy$yBYw1UPD)*QKeY?J53{`7X>qxsiRBnl&tq`xnrV?<=N8PrDGjZc4cAX7;0zJ{b`6>^9xj6 zfL~Y|SWWbUj8_hR`}ufpL!n4+%(aJAekPM-OM8ZSadRisd{Kimt~NJ#Nq zGwaPQf%hT!!_$occ5^11%h3qmp_K;+b3yMm9-)iVU^3Ln``;g(Tn5$23_6VtJ=^II z?Ro0kyb&qOTpSz=Zdaz#*-?aMRY|}!xYyQVVr!8GYZkVD0K z>)-ytgR){YuucL{$I1iMeD=A~<`BEqZ!oJ6#WXDyHMz~;ZkZ;J+vmT#9`E(7W;+`L zCn#rls{ddkpj0rzgN*m;=b$hzQ4hD@RngqsoCSm9M&BDOvUCRq0myGHj@-nY=e4*& zodhkHH`@{7gLl7w&+wIgN;Z5V=>RCFL&(OsTW%`{Hvtrn*fxx}{`hBZUIj3(;~3RD zPQMKPC7`|3e@kd~_r3CublC;5n@WKG8meaA2{g-p@16-DDVAKA47L^|+xl$e5gHr5~az!}U3UWD0fJ&mI2E?ypd*AUb-Kd49*$d-M zE0-K;<4=9N!KH@3cnIosH85k$B@2J1p*6Kk>k@vbfg;>{W4dQcB6}AGa>3@U*NS-_ zp(R{C>N!1ct)mwsVcW04-U1?nHDe_y+?b*Wm9+y}$d31(5U?Y=SHAkIySVuSSTB2W zZ<8WyXdPdhxfzAJcorgPjDAp3oU38Z_L6%_89ZzAx!J)R`>E+ZD zbl~demJoLTU9y|cA?2A{RvG-N$*)Z#L5q!Zxmw6WmXG4=e6H^L`l?~%=A0ttvf;OpD?vI2J#K~|8Ns^~n zqklUy))Uy!(dA6>G_WP1g8(f^xQqyMuWsu8(!+lfmIx@ zZp0H$GQTZPUks`01?ihL&=ZDeiGJ)ctmQxs$;IARGJUO!DS&F`Pu_9`RD;Xv*{HC^ z{H6(V1A}Jv?C$P$h`>poD_n_-Y;5(T6Vu@zIn(O@~9CDo4=n;{{^rl~$>$rm5Bz{95EP`EM=Y-M4rOlHbDt0h+N1{S1WJ zDjwySWF~WaG-72MH+%^-5=>~MbrNKvSZ!7>_w%e z8%^yN)r)4!~ofHe*`EaqSK~aBn7Kq(*s^(<8Whtwsy0cgRjW)kd*|>uPlQwovTK?)7s^5o22s z-ji*=nh?4)VmL<`3ptg;>u-2@6$Lq6YJ1MYBdJ3Dr)?i^v}>n2G9ztG67xz>sO@EM zAIuYRl?o4>Mcc-MQ{Bhh%ulXouFud&zv|ptbT?VLxbqHU?Sm-?*r%L%HQIgf%V5cL z)T*1wqe_ujR&D+UoyI({x|FE+k=!mb=%`Rfu zw*2a?qM)AX3kzCiHu)vpA>(%ij<+s7d4@>30H!mmZGM57jmEJff>Y2cv|B&r@PL+P zTqD-D>98blPcHbw`+)W_-=hOs4Dp$JG%q{$M89(07*EZo?ZKWRd~z^_%cd!ITD)tB zwRiJ&faXx%{Fswm+(7((8JAr?Cks0O)*JbZ(DE|J&wG4FSk%fb9Vwu+3umkr_8^^= zl6V-dm||?)6CYpnqWPz@W0=_u*p98VK;6oPE;!NG%PTh*3zkap_N(YlO2H?V8l3^@ z;O{ZLy^ZF2`?^r1im@W6lw7#@nOEx{tNHMOl6jQf^u|itR#BNMF|oo~8tAkQjvd;Q zX5S*Esd1E)EP8&K&AP8$iEO?>F*2I!Ly!o_4Y*d?%JooSYKn=w0{;R@E0P?osH)q1 z*huNon4cTST&wTY;s!VUkem zIIGPfE1t2eQ($R)9KGh`o4_vSgxGu{N0EZJNum-r#{WiK=(WSeEb~Je?!mO4p7@TA zthu>sDlG1*1zvVNEDI1~pw-xBD8~7_3(IrzLyNN6hLEumO?^}k3aZ`FW7BeR{lNGc zNgO=^ii-+2x0z2$n%nn=IyR%vq8BG$5}1c3IPHTAENU$79VAb=614@>W~p`G^6Gvo zMIS6v6c+t#I+IT*>>~bBIPbSB0l8LiR8qCZk)mUL|EfQB#k4c-rkgOhSGeClfiCzb zY+cLa1RouvSNa+5yWC{WJ!@;Dq;UAD1!+_m-EviBP=WVeJHHH6&TYDSm7p(Apg$Hq zNeoMFrCTC#)I5!jd#X?P`$47qab;Vq@Ulv0yN`3|4`0mRsC7-$`0{CX&)Vkqr3AS$ zzr#`pPEtx)lL}p$i#Sp!74e9hm7)<-CZ5Zdnv^T(T3{KKX`%`Yf0g}$kGKd^!+*DkwNdbp6GGL0d@tteCNfI3BV#j-EG*7(!8`%c z-99isNqWH_Ae9@~lQmG-NwC1pp-G9o@7il+Li|AXnXrJaqvdA+hW~TLbTi&oRGKb> zQO7tqH~$wVF(E;n>hc(Z*##RI%vY#8Nln)H-R_YE z4CQcg64S`*JG~`N2Dvw&dQ$EddXHxC4 z9qIS&n!Zafu`4K>^Op0$drqiOsc z(TdeEA8%V!Z|7YstPEV)bPOh+SJA3(D31iT4<>&P(?L)Trl#!H@I2UNyF+rMeeI$z zZ-lON#}|2-JZqa&x`eq?9v^j~!N-N)n@VB`8$vbY-B=$1dNaA6PkvMG@7T>=aN2D0 z+b`W-fSPzyQp-ed4y?I3PNHEMgPcP*TAz%fi?$DTM7?igGYfy@$?Jf3?B9}a#Hc!s z?gra9De+QQIV+oqQ~o^>J{E*zK%Eo41!Vs2eMFy%1JTQ6UBjfrhK3Po(6dDR8iq&|Jnby@I z=m|*cH;?zg2pER#0#0p9OGD!iQ8>=oe`w#&*QT(s8G{1pqjuiWmUjKn{^NMH3CBFg z)Ep!yS3A3n*_&a%Ayro&RA*x%tT4@9zKD7Fu%}U2ZeLDrhg*uBkteD0oqQSC>*T1` zT+{n3IRbUXtk^U5xatbkYVUW0sm!6+-wUlv?jlx}2^?!+V(x7e@z62Q$(`uI@~aIC zzg`?kQg?ByB6$~-BEuCtFA(%A2;++&y>xqjEYUEnVy%yl4K!G^c!| zLHA+_scFC5Kdv^E8;Dh~WXV!CL7`YJNta|<9K)(Eh(>`pb<%h29CR0ZKE^I#_JtKY>bZ zuItyD>i9Yq4zL4t{~%5c(Ld;MZocFo&=)wIhtM<=8`T|hXU#JLvytu}_Xgs#`HOcR zNh||wID9paA4j{FFp=Yf7N+6P0>%(^6u2Z5HF9*8qx=lo~Uk=`8N+w<{#K3CAP9G_UnDStQ_t@E4oYp6w zc%}ROTOcSd<(&V`&W0V!W~pAIk*T0&Q$mzZmOlLY@}~-`kb@LSK$_g(gj6?M#amLv z%)ZSK7+(G2E3C*r^`+@gev1ms6D=o_)DvjjMT^F8HI!>9< zcw9FvlLkxH`CVC`jpc-K7Cmpav77s&#w8jx%u}`wphZ-j*LUx-E+KzXxsCaOb= zY)WP5IWHuyk1i!8Gb>t#%Qzbwvx@YQ!N(yOO=fkak)>#HMIORe9*@l}BgbHVgxHTR zPxb1SrkdgRCJ(qgkX{DYvx_z-ERF>l*5bFTP%0XV%ULl{a%wdbsL=y4g@j^Y{1kXO z%QxnSCKa*NrwT|CLP@3zJIr0rLR;9?>N)SQ=vFMBYvF>(~7Q_cs5Qmb_w06DsmP z&bU{uinNpJD!DX&J}o2#(HIXh;WF-}r;a7`GFfdREOhb`*lXtE@bw$1!rPpw?0jqc zS!=)l%28?jT$D7I!9BZBxmjEHo3Ub02`HWSoy0ha4f5NGowYPYC*abE55y0A0uOu5 z21;a-wVtCsj(waS{kSm!r%@Wwt;49~aB2L*-01nU&(y}>zkMC*u~G=T<@KVLE1aepw-XKlX>Z4DB^FxKONaxt(Y+NM9~o_mm%Wah_CR ztA-_Uelhban;7hKk`9 zpd^!P$6!`W9y#g#tWW+p;H2qd^O z!L@Nh&;)mP5AJS_h5%uJ0Kp+xfZ)f;FWvhzBF|f8fC8Mhqwu$=M|i&R6yQ*NZ{|tZBwK0 z4Kavf=8}XI&?p;LMSaoOk#WVwlaGqSLtN#c2M>S0#nK)WfnI+9C=z#;xmwzoD^ZjP zz4rP12aCw7OKmdvJKEI=>otn=uJJ4Xkq?z-Zpwgr7Zj;oMXSG@Ast%^) ze|k0)=Xi~+n0Ymk_4B8#UnjqLU!Srb>GMe@yq*EyJyJQAgoBzg3m= zuKWE5*w9M{)&vlP4_yR{_BWSSyVej^^5vqUd1ag)YiHTUa z)YK{_zcyBhFbjC6rR^HtAT~~S>UK_N7P5ydPxlprrm7ue<<2a5qHeY)gvlabST*cP zn}(h$X2PvG`0#yPDU(H#$>(|{2H+5TZzxWpmC@3r**$RvAQM8}AG^A5}Je(zub#^imf&Exzt9m)h zhKbP>ySqwVeaZ58jQtDoAC(wnfeRwZ4_dLFQqpRdVvic zZ9UA`iQWo`6m4m9E|BTQhZMNQs>FX7%>1*Y`W?TE_;rswd7T27)~?h4%3F4(4vhHX zvF_|lfIR-#G@jo4nA1iU=Z~!pCaggg6Y|3Jf-sDE>E1=a0zD|&UP8kbj(YyHVwYdu z8^nMtLlOAs=Xp3IZa*E1-D#tH zCYR$Af&a{sQUd?fXMn-CiRpos-jP`{xG6v&MK#owx)CrNX~2}w(SuLpqhP^X`)ln- zeFaDQ_k&fS3FM;Q6gm@Q!pp|hNK$Z`{e(VhJjK3IJjrHc*Bx~^A#CR$4C4t?Vx!k= z>ky1#h~EmZJan}P{Jzkc5G2%|kX~A`E)P_x{_b7x$JEgps!yhXmzTOcC$|A6L@Ho$ ztwQP8scogMrV{?JuP?$YO@*?qvDh^|nOQ$`5N?w2M;?4d*O)3+Pgff}$w4m0ix!jW zdw%$5Y`IUThDhx=(w*)l{6wB)vw7guFx6|EsD_rh&K@$gTsgJjFGEclx%x9k zRVjv$te7Lg}#gm9Dwi=?8pd&&|gbqa4K8_q%4Rw#*W`dkVJ&8(8ru6U9n2 z_80t5-T^%-R?JC6eyv0^853ADjeUzlg4C%&i;->{h8>fdy92_KEwcC&Zxhg1bup>= zDyyLf%s_1UQC#GJ<4rm_vGu4!rdYPZ8^wc|Y)=bFt2Sgrrfr#{%4@Lcz29>Yg+Yh4 ziT&o9@5Mjt7v^Ke@$JAw&?icivHGV36kdD6P&*3Z4;LFLsLPzy1~>VLjLVGymE}V; za-YNQJXH>d>FTxJeQ#FSZ`gpq*>>eXWkeP#qBVT?eaexe!(d8nj9RG%OVZm_tb-3h z8RvocEs1{FChV1l zKreF&?PhG;4b;^1i;~iVDt?x4ElS>8Uo`k7^~tnl1zW`RX5!FcjdMI zP0!KM!?lVji>1L*%3rmxpRpDZ+=wlJ`D)Q4IId;1o^&n}aC zYOwy<_mbm{C_YrEJ8nU9z&PHtNiTAd=7&o%iv_vYm-5a{ItSzpjAzbA5Hk6*`Q-A= z-c9gV`C1K4=Cl*-+y>*&ptYhHgtMxZ70+86l5K;&6((Fr{Su4Wn7V+x@&=mU1^gN^ z`c|?pCqTD=YTx9J z#Z_$*IK=2|J)@N@7u%fbmFx2h&0$p&@eX0)4G~o*&ha`)c#4~OGzuhe^-=~SaB*g) zbb;QvbB932xyj5p89(k^X6At~mX zu2kj)J)DOxE4}^BHz=-zgM-C8Bb$asMv(m;^9+ehAn0{illPh6ambaS;4vjkwq3k~ z#K9}Yu_k+EXDFMlm%!Qkq2Q%$${I!y_FO{Na!W={0MucXKo{J#aY=`WbxJe~P zXQ>e{Y8`$XJmX{C!Y#?^y8{Vxi(zIXn)cH!T#FdCYOkSCcpX6+KCD^MCvMML)?A+i z?mozd&+u**7zZaP-i4gYeHWp2)kAJLFC!(#VYq7hZLYL>u=czqC>a*TWr=_5- zKBltDL5LxA+4YdMnX5>2o5X=M>*Zpahu_z%6prNLTKcoh5ioNh1|X-iKj)q7IH6_R zL)iG^<1MxlM{i>#56-uSyQc$EZF=h+u1%L5k69U70uz6W+~PRlA&YC2gz+*3Ql_W5 z{kts2JLB~_>Etro5_Qs$eK)>`R#fXF2y}U4wXox=md6Sv9QB=aD){xCB?3!T{2U<2 zY?a{KmsKa@DO%+G;B&S)Edz8<0htnwf{C!T3Mr$9)us{Y0yusSQk3yPbk^fxOD5>X zbD>43tG!E}jo1 z1ZpZT$MEl6kNEpj@p=DL2`iO9KKs0^*%5Vi@}$uKJq1r)L-pFZnBNT_yFkxAzxdmx z-~j&qdZC9!S|H;R+6g!{{zAEnnZh6WT=&oL_xAt|uuf zDiK;Zd{)#BPd>g_!++WrZPKFV<9|E0;;L}zGw-Oyn&`mF zIBO=SSLxotN2J$bx>)vF|15amkzQ#!0j9EAH@CU6<#R@Ny9L(~x9g$MJ?#}Ah11ic zKPztS(o)4MOe7wY9k|x*Y4^?6~I<;eBH3u!FOpUz`MA!U!_|@4xuZ4(^a$2 zHa1Fg*#smIKedR_6cw~PcAMcDD3)d0IotLMnw|8-4_7$%rOWo(ll@Zvfv_7RhJm{bN7W1#g~3 zE9Lv`-vZhJ`Uk7T5dwCmI_TBPwNkb4YWbX?JzAhV?^EQTV{^0-MEN!bfBM3ujyyf~lW}g*#mAKuP@;J#c(C3dXgy z)SE5}ZDdk(ZjMVJ{3|UmfC6wHaCHhrwZ=6sXH)F^oWvhFG_I4@(4(Vc;KfHI>S@f^ z2cuK3S%h1VlOWq!{W$!|VM!Mj!dI_!3)}aI>}h)5aS@a8xfHrjw8se@EJdYxT`Rk2 zS~%J5_NUmdO%P2=eCF(ztDB72@;n5i8=!j(G$H=H-JUe>51fa9-~e985!HPGB+Ejl zS~~z|g{;H4KF6Z^3JHV?>>s&g((K_g_F1|;&I3P6jtVwn6CX7h93@wWk(IY7>Nqqe z*!$EiEXCnjo?oNe82j`(A6HE_V(Rbi+Ok-}WFS`)ig~Pgj%i;{-;yd`A8D#^kV5xc z;5Qc(D>n2~SDC^%3Btz(17$vLNP-(_O4&5yyrmwbE6$$KwMRyj+(75l(Ql@llsEDA z5fKR^u48}9*Eoad{LYk=eOY#2c!lbFG{@fMPL1S4+q0(m$mWJA5LY5t!lP*wN;wJo zKk1Hw;E+bHzta=HMp~<^rSKd{gH%bu2RCsv78%~w`~35L#t*%#XRnj}*Pl~GJKD-6 z{>h@t4-hSU^zE9)_*%xhZq9rswKNkelniy;M}++}YOgwcp+vl3fwzIJ96Wx_ouh+N zl9?xkHk%!ZXJq`&K}r_P)j+7i6QgFq#Mkx8!K2e zb7KEWzQcmW-J~~-><_47sgepGF2?ZEZG>D#ZG%6f74;;wl)Ql|wE(hO26OY!y($mY zuKM(bIiWxf=W2*JorL^iKDn~xI{lJ-JSYdLM?cbA&`PHOJ&4%scc3+u=`4yb;WL_@k#a$ zprHG5r!O8=CIjSg;w%^6tnA;-`eKT3ttdqvm&F8z9`lloF$&~PUj~W~DX6lv<>xmZ zL>m3>AQ|Gf(n~@9T(MK=@lVs@rpo;)0kS`C-y}RgB6*4?aAXY0L&X$HYp#z=V_Sap zvX%x2ZJa0Z$82e4*!7^U7Sj1IX(gZ`Y9@knrBl94Z!=&-;Xl)O(<>VHyOvG~Ecytf zgewi3&n&vLVa|>HG-{$*BV$3yJvzKGJ|4*i;EM}G)MYwd`Z<*@6{mxveY6~24Z;3} zG|+o!7*laH^n98_Jy*qmQlOJbf=ad^TD-E9iVkzOk+RZo+PQgS2z3=-o?d!vD{7$t zPODrGe|!B4$vWp!v#=sPU`s+|?|o{OK!qiI{R_w6YjrKr(CBSNkYKBs;S>TMnK zhp8kr_LfW!dQnlEaj0*vT#M9)tXNl$;HLWhuQ4BCV(KTrjQXKZfyO3$cK&D%Kic2e`KAo#oy7a7&S7_jq*Z4> zp%9m2+$T){VDqtR<0L3VaB9GZ_FK}yaKs;`EZ7(d$7vaxFdqM3yB+6W%N`9`#uiW@&aZY3th=$#!?kqyLuNUHr7dmO|Fsn;@CP z*((Oxt)_z>vD`YSu)swi!ST=aOC{C!@>x#*%VV#;G%`#W;qBYUtidrbk**}x*4O#T zr)D|TzeBQyUe}}ma|B$)&+Xt9H-JWIksX_@g9o)=lTaUtK)`35<^IPZ zxWDV)uj|N}=mhO?MMaj)zWU#cw2%KWuG`PA20!=cm!15z=dQ=Wk$!*W00V=>T2l_R{{E&;6L$1O2DY zCH(AavV$fO7SXXh920{;R19Os0<1~cDmmm0EDw-i|1(0OM1>t62#+x|K5FE}cAI88 zCb@IZsSoXG6e*?)wBJ3^C@ofsT0A(oQ9{E&BX`7l4ZUuGq6=XyUN}f}>{UpauO<`K z$%GwBxT?d8ZD(x@^bb}k_$rh0Gq%Ql4$&Dx5h`)V0|Cq~KG46|UmrvVBa0qV>v7I2 zZv1pJy~|VmUcY%?rAZ;NS>WZAw^6V^Xp)*r9o)(I@kOpMJ{4x&#s%d)Z)9t$8>M+U?wpXQYm zQ!Jc_Hn$3&)%owicW(oE;MG>XdGh4ahMep}9hG?*p-ixd6rJHDQzFb`cUD=&_}fMu zWwhl)DH(>w5KxHs8>e3G_5F=nhPdcpgnp(9Eq-_kF-f)UJQoT$wmrdJG{r!3O3d{9 z(n9mQuXv#SD>X5E#kHP!WySm`sm~rO__vxUPx2Rl#&DcS-ekEEnU~?~S2`4y4@x7w z3L1Nb9{fY4fYh7(_I4xWkyq0?`}47`;#du+@L$-W=r2B3R1DWoPo|z#adT5;o2T@p zAJ(a{PS%@o29D8?VhaB5xclO-WRF-0HV%eNx;+>a-r_^v8af&IzYq9qoUCIPFt;b= zpCyr4c7uD{lP@_s$6cHB|2%b;C?jbx^b0qK zF*Asfl_|SzYs4b^RnW-&BM<}tIVe-3!1MS1S)Q1Vh)v4hj6>T_|Ha+dKE4RaGA>Ec@to$Ed&~)JBYdE{^+{Fr zsSAe2#Of-wqTWv%g8N_5^=ExHORyNFRX!v;sO38=BQtKe3HzcWug`X`HaVkgwJ%(w z=Oub@zneR|mYaKsDBeDSH*j>3J9%ffHV!b1sBLQ-Q;uYv5)eC4u#<+@)g>KmF~eJi zpWS(_0uxhYPahE$m(I@{r03@se=l@;WO91PR{bRc6fmI&>&=e>(0|*OYxB+et1zY9 z)gNK5(xIW)c>~p%G1atwS1DIFd;6%**b|2Sc3`lT_to2(Q8fpLg^Q!6d#f>?x1QUv zTKD?*(m@dfy5(Fq?6Nmq9(d!`G~ayV_oQfVC%O9Y&?&ZCtP{SMadSQ<3VHG31=^fjkuVPu_tIpG*f7;oaOF|bqdALH=baYka@mPTV6N&V=VStf2N($cY z<(#69fr0A8C|}L&oC2cp&1K);sTycVJkv??Q)XKwRsRx2#&4jkuB@k~rlV8u22Yr4 zV9jk{Z9c%hU!0SI-1;y^J&_1GW_(R`jY(T~bQM|)An+|Irq62|TA}k1S~&i#1(BCI zP8E(im}2xqC@OZZB4UQIn-qZdL5@S>fIh~Q{PUq#__rfBdZ@%0e>}0~TrvB80G9Jz zWcdS%n@0W)U@mm&h5Tuh+nEldBp1Ylcb*kZN(8d91X?pWjBy)0fSS+-h z9X1*l(Ly{`Z3n~CB;_JJz6OnTaN34l7*r7`8=Y3R?XM4?)mdv?I zX1@A%9s^+f46PhsDzJT#4?#64EyNdtAwrHok!ywLiwjBNdN{C9A8aXaAM^1=>&i)W zm4~N5dS6M(=H7T;38d+e*5C4~n#Cukz0z(MWBhMD5UN+$_nU{??k4Y9iG$zFR__|# z)a~sL$`1eXOeP^qOGEo|MgRV_9C_m?-1Yi3`Uee7b@aEvP7%NsK1To~`&SdGrKz%K z`aL*`f+xM1ng(X~_b(lvVA)z*lJa;H#&0PRrY&( zPZGDVzcI#+9{)J7Wi=$o(hR*hHDufNX$d?zYgrJT^X|m|AwC+g8Ixi^w~z7 z@#7NWlzwlyMrwC3yuy?uEG8ruIKA+Rjg7q@1P`E^L9HjnC?w#Hss)3XNN3p)BpZ_$@ifUcI4}efe002{&4@{a3C9$WySSPo~4h7 zg3mX%Z}*g~i%!L=`0LfR-~D96GvsJXAVskA!LEF;r)SW6A$CFxfq+nfyC?i5`_usR zdo<3@__vOlT34R3oO$Kc^z^_KS>$6)N({rW06EPTyPCNkoYSo(pF5YzC=GFeq@v0O z>MQg>ir}vOvl@?767Hz-_E*Y%Us}R4sjBR*G}6g8@7ckCKXW_9^gQ76O?GrXYcAqo zky0i4{9O2<=N!2QJ#N1I>gI zdqQz{|3~K60PT0sWdK@hr5fI6o{^Nq>$KB0c))hQydTxs+3f|d*Iz*fEYb)m$jJp= zH`T>%T~fdo^#0G13%mQTyI(xOn*!a}4%Ma7iS+*am-qiiJosP56kiE|5|;n`%*V$6 z%Wr-BA8z>VNB?5|>wk5=0RM4Ei1_d4bUjxA_6bvQV=bjwchDR*M(}NP4P3=#e^zM} z4b!q7KK4=Vm%iIf;AcSbL@aDAIQU6~PPQ5&piwik;?y9xf`c<;$tCEbtep9GC`TzB z>9ZMI_a_hFv*VY$8I3CthQrQ83NOS7-7qIEJREhBZ78FCekAGd{sZ~q?!n>I(NY** zO$n5*7<1GZPrRByH8a*}7*7JXk{P0Oa?)+o6%v_VK4p8Lwb6V`fcn6Z^eJ<3!S@Pf z+IujhdtXM?~FnE?PKzt6YR{?0(;z}X43;89?ZCu^v{Jzsqq39xYyBGFQ=Tl0c0 zC5(g^f=9DQ7~>_o5&Wli!cw6N!l)VPhWM6X8A|CdP?lG+9OhlFAMO^Ix&2@N6xc&P z4u+Z@iam(wZ{IHKr|ZVu*KKDO2iXEo3ZyiBI=MYmma9fsGxpxLFaAl3&%(x_LQQ;k zSj+r?v^?*vhpKv_#jJ2GlmJ_6aNm0>si4KYf&s!{;V$7%0q(xYR;2QLc9i6*g&KGR zF!2BdXBdBJ^KE7ys1~HhMXWZ61~YoKug*HG9h4|Nu2C9ynTiyMyZ_HqNJgrqp91vjAWLS=p)M8;Pu+69mwDl zDV|vQ@SyBw?rKxfjkrm8^X^Sk_WE`@LZZlJn`NDP%02ro!X92dN9V$Yjaon7ahL3= zybk!-x@7dA>=hUg(b4a`+m^+RrF%yr-zXE0J$lTuNoYK;D{AxUO%8^aTrYfto;)BK zx`-yf+fgJ>KPA3>=VlH&=LM1^B_q}&fr(|b_JWQnLq^}66_88qXgv|}4p7AD_OMQ{ z+!CU8`l|ota820LXK(d-tsPI(z{gEqyQEub`?=@m&X9TDqf4L&xEuWCbBr!lV?-Xj zhs1Mv9qCZnU@MYtvJsiS!v~u6-5A@~U{DiHXd#FcOl&OdC`|C3IaOX(gb1^LsH7GK zwz;t9N=Uwu+i_Ks`}!D}JikNjaY=_rtQNIXtt}*7==gWJMQgOyz??jH3hP371~wM- z`m0E;K-p0ki(5(+F|yX~`eY=;Kp;IuTAjqh@F)CpQI)tjdITTtQ_nPzi-*Gu43g~K zPiHaXchVAbS?|bp@EfuxYfw6D#R^^7joTD*ZbXd|H6L6;&%bIhZ~3eoBm^dE+FCo$ z>~v;$l_GOAv6{~!a|H=Pb7ESmBlG+bFiX>TTH3m!%d?>m#H1vi>j$cudah%U9cfi- zZUIK$7X%y^I8m`aK9ALYaTR`ArGaFC@zU-Pf$_HUwntb7DiL4a`{gqh)ZfIAFdWVf zS$ytz0;xZrhSls(*t}3nOim(3jliRFqE5WV+9!UF+m&*u7vNgMMzt0;FC-0bvO9%~ z0(a2tFaK7YVD{?*EkfcWrZT={7xlm>!=w#3rE4SEU zZ7>r8vHZ?Bi4wSgm7L75PI+0Ws)wsF=44--7e%>Zni67uE400;-c>YMKCLGQuK`C9 zxZo839dL1WVW~N&F>yD4+?Tpa$w2;sKE;V+TCZ);t4` z%BV+|dU~()ucUSQ-E1nhF1<7~Fwm<8N>LeDNA>1neBR(<0&JoJOo^f@xo@hU5^>FD zYXmih_{MxGX*>(Q_MF+)#bM);s4}W~=pB(Sy`C=f(DMypT@-ZPHmjG#^KKTzb@QHS znV~u46DR=caY@FId%imsw&3}roPqeZlmOm3m4flDFeaw_)2pT^AC9*h)kURj<7z6m z&u3wrb#|msJX*}rqO@ufIDL`=s!Q5;$&qlGlbnZw7joiD`UEy|VW4QK9L4L!JX`gh z1*fmoLGC&(^04a9WInIsDFUkov_@4VNC((zz@AWVM7wfTjvqRbcYUXm112 z?-B{Zg|cu@yI?=+1+T^36nOPhEWCVlp~FZ;-_tA9CW7xGhSK+Nq4A1B?n&&|yz1ge zd)&0krH2b};vL)s!)iOjp65g_BKyiAal&iL;DY@ssF2S6qF9N$zkVrnsX zZebt`?n$UGab=E4d?fn*-gn@6@`%;tdt>p>;^Me=$>_8mE)ivA<)voXGobS$RCv*m zkB*K`vd;uVBUp_2V&=>Ts2z26wJl|U49Hd)7fRD^fB_rWY(C&7AZSZOT!ul2j=?gP zl27gpC}gyd2pxoX`u9_$mC64+t2%TIE>NL>d>d9JO;6sd-ng96j*P>Pw=c9ZJLF3m z<9UrAo^PLu&9-6>-NwAMNhc&rBL%9wS;h%Q=9+XtzQ==94ADd4nO+=GdY@aDS}J!{ zvrUN8fFkuzXbg!_k>S3xjH+Gqf5~_-I7^3g&yMI0%}RN|-R&)k!lwx~CA=HF>3O7C zc73Krrk6bQTsF@9&lVVx`7dXF7EYQIf+|la^3RLV|TE0u#?pu~f!>R&RxMwYFuR7`r)^i(K1y)s_G3h;^cYA-D zLe0vx6eRPVp{{|XN4RS{?j!lSFK){DVbo%vf-J7_8O7-K-$2a%xqdRINczgLJEq7; z9Iw1pY)HncF;c>z@dP2e;B)R&9Y*ggox)|bmq#_PGV=S3XRK>DFcEisheTRWKu2GP zN)L9250C(kr|f%ZD9JXQ{sY@)I66)|C~Pm4&xMB&BX>iS5!W?4NG2yMZ&XclY;0N~ zm2daNxIZ3G63?hU4ZdFs#}Yn9!{)z^VM%<}imqIBQ5X*SaL6|kMRDCSH9z9>R$T^q z5Y4Krei2i0mF~6Dtqgw(_$wkWWuJm?_UaaB4WFips!ilT6`Kz8LJYmWvPMh&s3EVl z6HpaEyivRf^XR0$RR^)Po0JH(In(o4;DmmVRrfyxrJs*P`MKY0J_BSwAPt)xHd7T- z9n8?n*+lxoPzrxteAE|#gDMoqSt|5+_l=?ROkbmp5Vx^;k>&6QB=pQLI7&{uWySw$ zQd4Wkc$bATnw~gC$%*! zaJG+f@Mn9a={LdcVNk`-6Vn%Be=`XPTJRX2x1vEiapcGP{QWm9=$(Ed4;~II3~2oN zG}djJSFfPNlb)Nj=3RQlDWeBI90O!}s`cs<>87!oZh95{8JH8hegFo-%h@uBWrhlc zYz-K(Yj9{@Lhu`l_A6juBKM)b5rx7TwQ%UxoTkHEV^52$wa&#l>U!gsmT(RpM|&b_ zS@->gMX_wM8zmMRED~d_iF7$Ptb>2}i2ctPw)4`RkGr65V=LJZ7 z&NHj*`&X90fwkOo8oUYQelv0qi6u@2`&LXda)}cm+2YA+T6l2O;OAjnr=t2x<5d;w zF-D*D0f(++N}=(HBR)J_mA30PjQPloi}9r0>ADnf{v_lA8H|prth1#Jlm^9DnmNkLm20^L>EGBe*CzCSl82s@gzoaJ1UFL-OYn7}qg^4>R64C+Fpb3|APWz9rdMcbMaB1on5E^+krje+MD zUb<3|nj4^g!98{iKZ|KqFMF9x~O?|LZfs#^iY4J}}M|ulY zY7q(F?4~0D9jn6SP(V8i>Ul-C-lL(fQbpSWyPZx3@9p?Vatd{j-13^dEO6=m`3>Cvqh2c*$p*8Hpb`(Vs8Vt&wPUO3jcTeY^B} zNo=+|6#%4MNC*Y5(r0Li)5eZZjDgOJGnZZo`7y6`#vzy@7)>${QseomRH)QwAHGNF z)f^{{Z2@E7ex)wkuq-r-D)XQzF~?C z1(hT<4nF;0gSCM8hb?bK+X+{RfC2m^3~szd15P8`+R%01)PT-$FQ*vv%nQd#x0NUe zXknv1Ba?}EiARsd=GF`19)J3ydV3wBKlO~h@De1sC@4Q%1<8$4b zaei3C>VLM&>_NHIq#GdL2il3IMC{)fjO%$t}uC3wULIPI)#R8gTN!<6D z3yPvU8bnl-7ko!f{AxnT`^;&KUoqZ?@9DQVvw;KUlUx-u?w%aEZ<9wYFLO1uWtXHT z2@V+6WU55^G@k6s)8ps)jfYKG(ofSQ5wk;`7ev1ZQmZo7=z|wyYM|<+Um_-5w(Q;r zpEflF*)B<~Gnu+|xE(2I#>&-CuiS-@wzhuI49!kcj;T*0TIk#r+*<=^-JeZji90}# zK@5y0Oz#Ny#2J%Mo~QQw@*;ZH4R<8>M-bJAie+`o5$t+T*nP&v2_M*tCT;wpaF#Ad z0awo%;YgBa?%>tBovn-83gAI&9PU3L6Aeb@Kx5<~OD&&K?WoT17RB*|K6Z6;W`gkc zF&gf`gn*q4!l$(Be=0L^ADKOWtcD#g5&tc3R;znF<@HgPm}eC#9_Mr{7X}TxFgbqyJ@P^50uE%@?~Xor+~At$PYP$qC!*6AIAZx1;%s zAYX$Ig>PA&!3?h%GeIES)0xg za~`O;5~lf&iXc_od~{P4Fk29e;C2XzR}z@ok0K-lCxYnj;P8|_5HpbQ*b0y?wB4Dk zj?dEvy`fCB*;|WcMYM%D+-P-RxUHQKU71DBFbfQ+jrFdtBRX_M)zHW>p`t zu0~Cry^GhAV7Vc+w9I~*(XQ>D?a5i%ofQG6q1?G{*n+z_Xyc3C>v~Tt7_MI;KWWrp zh(+gCu&fj;g(Nm{-wVcFw`&4y0zfj!k>-q#!%R_4zh>OQzUPQSQCBY zA6J65kD7*p)B0l-p@ZJnqoeuSB_ljLb(=9Yb8Qr4LKDfUb%2PFohJGBHnaWOG48ih z9)%^f70WFC7q5gmcAlu_v&6{!5cx)jKKhtelya6NMv57|j~ zv%ndW;aY3VzUUITp+_#~e;Y-xQN*j%d7QPk7+G3+cA2{<(J&F45d#f0n-!9_5k7_) zU!nQ6mJ^Y?JPp2{rlV`l0D2d%V#a|tF)??LK47@)MMKakredsK50Bqqm zH_N0@Eo9^_0rZ4VyYbm?KCYOU1*^1Ce1f6u8sAIEE!IQXGMK=0X6SxZV%r)mz4rOf zKu1ktil;iv*w48+@Ec+#rGu%Fb&w3-lG3bnYzpt0&L|IZ{wcRq@oWW1rOP7eEwudc z`s2R|oMi9mG@+4ockh@)De9Q|Y2u~AdD9KP1~P>^=K37zj~J}*ZNzI z7B4G`K|-RhwY6Z0G|)h?=D0WD-QwyNCkEozy+r0uhbuoB!=@{pdb5i*Nkj1YY0=*I zw!Lvd*OljVWaF%}+^R=e2V=?Us{G$PlrKAc-;6}CderVdW@H&#*YeAjT0Jeo8fGyA z^OE{)muBQK`>aGo8J2Q0&^V7KC zpC1e_!y)J%Q9mheF0zHC{XycL5a{Y>V_$YM-^^9sxyS+J!N`4l@bGhleoz6!Oj{5) zcIXdb(|e)F%%!E(V0;*_I`%MUgWjGfq{*qdCb30knLoo={P{X*1%~e)T87ZH6E$+t z%V+*gf3py80vOc0KZn{CZaO7Y_lm`GHFaO>1A4H)GbyMoz8{-}kiVThT|b^1C5Wil zvNNz;p&Dv)X|>Yrr|4PV9WYsx(;eJbG@SQ6KKDi4oJi>$-pu*?jI22J>a3hetU`>ifmn| z+t5i6SlQvvZ%Q>j^B>=yFRPGZs>_EHfNHJa&WG)9_}BU|!%##~GYb@cH)ey(51~Bwx34rLJM{-hY?G zYy9OU17ye&=wOaCAW(LMt+;v5X1=ZWS6=`0XHW50n5l93xlLxBS+^^V=_{7&n6c$ zpvb&qyRc&YN#}W+(M+9`&P1!(WS}(fa1R2WCLx}5=)W>=W$Ck5;Ta4ov6h#}8!Z1#6WERp&?olxnz}lJ_>||+ zuFOG47Xrp!Fs!qFumQn%rmc^*>3{2O6sK@-Gxq`6oiV?hv=) zmjD`RG*`R4_&)u>Qvhqj(*Cw!4Y;~KcbnpZ=#WcTe!X{pp#cavJt(tpJVwAkiJaJ> z0F`9m?jL~iHtmvF;kv6l%JNCR4`d`HcdzgVOb=cDr;6OKtdh3WMB}?r-rouQ`4#Q| zC*3MV^o}<8Nh_dziDi&6@S!H^TPL~qu~SrM>pw$MzaFtbDVK~-?pAkq7g%KY*;{%h z-3CTLX!PJ^V^HsL@MTA?#L^!B{NbtL&9bJVz#;YRX1#UmYfL&Z3%Hampj){lQKUi$ zpgiRtZltX%c2(}jHH82TS%0J-#Z2w0bKQ`Zo{ox&fq{mO@vtSAbMoxUNk57?R7^$7 zGM}CmQdrEjdBPY!3_lX5e3bzC9c`&}|r^J5hd@YH2CgM8nLg9gq{-Q3PheG)`6YmZ|D ziL3a`E`r9q&b!zX&TbAlQDq(j_A¥=8=EG1NV`>tkc)zbb~2NiD|oc<8Uwd_F+* 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 z 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 =FsU|1s{kVT&8_|d~%Gj=g-v$k|?^YBZg4$ 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 RlTZF7)n}Sdi` | resize the file list | -| `o` | open the pull request in the browser | -| `r` | refresh | -| `U` | update rexdiff | -| `?` | all keys | -| `q` `Q` | quit, or quit and drop unsent comments | - -## Updates - -When the bottom line shows a new version, press `U`. rexdiff restarts in the same pane -and keeps your comments. - -## Details - -### Reloads - -rexdiff checks the files about once a second without running git, and runs git only -after a change. In a large repository it checks less often, to stay under about 5% of a -core. `r` reloads at once. If a reload fails, rexdiff keeps the files on screen, shows -"refresh failed", and retries with a growing delay, up to a minute. While the comment -box is open, the view does not change. - -The pull request tab reloads each minute while it shows, and after a commit, a push, or a -fetch. Switching branches clears it until the new pull request loads. - -### Last turn - -A turn starts when an agent in this repository starts to work and ends when all of them -rest. `t` shows the changes since the start of the last turn that changed a file. Before -the first turn it shows "waiting for the first turn", or "no agent works here". If a file -changes just as a turn starts, rexdiff cannot tell what the turn changed, and says so. - -### Comments - -A comment stays on its line numbers and keeps the code it was made on. It shows only in -the view where you made it (changes or all files) and on the same commits. If its file -leaves the changes, or is deleted, the comment list marks it "stale". An edit with blank -text keeps the comment as it was. - -When `q` asks before quitting, `Q` quits and drops the comments, `s` sends, `y` copies, -and any other key closes the question. - -### File list and search - -The file list is a tree. Directories start expanded in the changes and collapsed in all -files, where a collapsed directory with a change has a dot. Ignored directories are dim -and load their files when you expand them. - -At a side, the list takes 32% of the width (15–60% with `<` `>`). Above or below, it takes -a quarter of the rows (15–50%). - -The search shows up to 50 files and 200 lines of code. A code search stops 80 ms after its -first match and marks a partial count with `+`. With no query, it lists the files you opened from the -search first. - -### Side by side - -Side by side needs a diff pane at least 137 columns wide. A narrower pane shows one -column. - -### Base and commits - -rexdiff keeps the base pick and the last turn in `refs/worktree/rexdiff/`, so they -survive a restart. With `-base`, the base picker does not open. `rexdiff -h` lists the -flags. The commit picker lists -the branch's own commits (first parent only), or the last 50 on the base branch. - -### Copy and editor - -Copying uses the first of `pbcopy`, `wl-copy`, `xclip`, or `xsel` on your PATH. Drag over -code to copy lines, double-click for a word, triple-click for a line, and double-click a -file in the list to copy its path. - -A terminal editor, such as `nvim`, opens in a new pane beside rexdiff. A window editor, -such as `code`, opens in its own window. An editor that rexdiff does not know opens in a pane. -To open it in a window, start it with `open`, for example `editor = "open -a Zed {file}"`. - -`keybindings` takes the action names of herdr-reviewr, and also `focus` (switch pane) -and `update`. A key is one character, or `left`, `right`, `up`, `down`, `pageup`, or -`pagedown`, alone or after `ctrl+` or `alt+`. Binding one key to two actions is an error. - -## Problems - -- "not in Rex": rexdiff started outside Rex and cannot send. Press `y` to copy, or - open rexdiff with Shift+Cmd+R. -- "no agent in this session": start the agent in the same Rex session. -- "no editor": set `editor` in the settings, or set `$EDITOR` in `~/.zprofile`. rexdiff - reads the login shell, so `~/.zshrc` has no effect. -- Side by side shows one column: the diff pane is narrower than 137 columns. Press `z` - or widen the pane. -- The PR tab shows an error: install gh, glab, or az, and log in. +The other settings are the same as in +[herdr-reviewr](https://github.com/persiyanov/herdr-reviewr). After a change, run +`rex config reload`. + +Press `?` to see all the keys. + +![All keys](../.asset/help.png) + +Press `U` to update when the bottom line shows a new version. Press `q` to quit. +`rexdiff uninstall` removes rexdiff from Rex. diff --git a/README.md b/README.md index d1d275e..8adf79d 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Then press Shift+Cmd+R next to an agent. ## Docs -- [User guide](.doc/user.md): keys, settings, and how it works +- [User guide](.doc/user.md) - [Architecture](.doc/arch.md) - [Development](.doc/dev.md) - [Tests](.doc/test.md) From a2e948937886691e8874c31948a500da15fa8629 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 15:06:07 +0100 Subject: [PATCH 089/119] feat(vcs,diff): list bases newest first, show CRLF-only changes, smart-case search --- diff/diff.go | 5 ++-- diff/diff_test.go | 19 +++++++++++- internal/diffview/view.go | 62 +++++++++++++++++++++++++++++++++++++-- vcs/hostile_test.go | 6 ++-- vcs/refs.go | 48 +++++++++++++++++++----------- vcs/repo_test.go | 26 ++++++++++------ 6 files changed, 132 insertions(+), 34 deletions(-) diff --git a/diff/diff.go b/diff/diff.go index 5d3c374..337e2a4 100644 --- a/diff/diff.go +++ b/diff/diff.go @@ -198,10 +198,9 @@ func (d *Diff) SideAt(x int) (s Side, onNumber bool) { } // Count returns the number of lines that a change from before to after adds -// and deletes. It ignores the difference between CRLF and LF line endings. +// and deletes. As in herdr-reviewr, a change from a CRLF to an LF line +// ending, or back, is a change of the line. func Count(before, after string) (added, deleted int) { - before = strings.ReplaceAll(before, "\r\n", "\n") - after = strings.ReplaceAll(after, "\r\n", "\n") u, err := udiff.ToUnifiedDiff("", "", before, udiff.Lines(before, after), 0) if err != nil { return 0, 0 diff --git a/diff/diff_test.go b/diff/diff_test.go index dc96ef4..3d5a2bc 100644 --- a/diff/diff_test.go +++ b/diff/diff_test.go @@ -148,6 +148,23 @@ func TestRenderKinds(t *testing.T) { } } +// TestRenderLineEnding checks that a change of only the line ending shows, +// as in herdr-reviewr. The line with the CR has a ^M. A CRLF that does not +// change shows nothing. +func TestRenderLineEnding(t *testing.T) { + t.Parallel() + d := diff.Render("x.txt", "a\nb\r\nc\r\n", "a\r\nb\nc\r\n", diff.Options{Width: 80}) + var got []string // the kind and the last word of each row + for i, r := range d.Rows { + words := strings.Fields(plainLine(t, d, i)) + got = append(got, fmt.Sprintf("%c %s", "@=+-~"[r.Kind], words[len(words)-1])) + } + want := []string{"@ @@", "- a", "- b^M", "+ a^M", "+ b", "= c"} + if !slices.Equal(got, want) { + t.Errorf("Render rows = %q, want %q", got, want) + } +} + // TestRenderTabsAndOffset checks that a tab becomes spaces and that Offset // scrolls the code. func TestRenderTabsAndOffset(t *testing.T) { @@ -305,7 +322,7 @@ func TestCount(t *testing.T) { }{ {oldSrc, newSrc, 2, 1}, {"", "a\nb\n", 2, 0}, - {"a\r\nb\r\n", "a\nb\n", 0, 0}, + {"a\r\nb\r\n", "a\nb\n", 2, 2}, {oldSrc, oldSrc, 0, 0}, } for _, tt := range tests { diff --git a/internal/diffview/view.go b/internal/diffview/view.go index 47e28e6..3806fb8 100644 --- a/internal/diffview/view.go +++ b/internal/diffview/view.go @@ -114,11 +114,10 @@ func (v *View) Theme(bg, fg, green, red color.Color, dark bool) *View { // columns of the line numbers. func (v *View) Render() (string, []Row, Geometry) { v.rows = nil - v.before = strings.ReplaceAll(v.before, "\r\n", "\n") - v.after = strings.ReplaceAll(v.after, "\r\n", "\n") if err := v.computeDiff(); err != nil { return err.Error(), nil, v.geometry() } + v.markEndings() v.replaceTabs() v.detectNumDigits() if v.width <= 0 { @@ -159,6 +158,65 @@ func (v *View) computeDiff() error { return nil } +// crMark shows a CR at the end of a line, as less and vim show it. +const crMark = "^M" + +// markEndings removes the CR of each line ending, so that it does not +// show. In a block of changes, the deleted lines and the inserted lines +// pair up in their order. As in herdr-reviewr, a line of a pair that +// differs from the other line only in a CR gets crMark. Thus a change of +// only the line ending shows. +func (v *View) markEndings() { + for _, h := range v.hunks { + ls := h.Lines + for i := 0; i < len(ls); { + dels := i + for i < len(ls) && ls[i].Kind == udiff.Delete { + i++ + } + ins := i + for i < len(ls) && ls[i].Kind == udiff.Insert { + i++ + } + for k := 0; dels+k < ins && ins+k < i; k++ { + markPair(&ls[dels+k], &ls[ins+k]) + } + if i == dels { // an equal line + i++ + } + } + for i := range ls { + ls[i].Content, _ = cutCR(ls[i].Content, "") + } + } +} + +// markPair adds crMark to old or to new if the two lines differ only in +// the CR of the line ending. +func markPair(old, new *udiff.Line) { + o, oCR := cutCR(old.Content, "") + n, nCR := cutCR(new.Content, "") + if oCR != nCR && o == n { + old.Content, _ = cutCR(old.Content, crMark) + new.Content, _ = cutCR(new.Content, crMark) + } +} + +// cutCR returns line with mark in place of the CR of its line ending, and +// reports whether line has that CR. The last line of a file can have a CR +// and no LF. +func cutCR(line, mark string) (string, bool) { + body, lf := strings.CutSuffix(line, "\n") + body, cr := strings.CutSuffix(body, "\r") + if cr { + body += mark + } + if lf { + body += "\n" + } + return body, cr +} + // replaceTabs replaces the tabs in the lines of the diff with spaces. It runs // after computeDiff, so that a change from a tab to spaces is a change. func (v *View) replaceTabs() { diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index ad544d9..041ee18 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -262,12 +262,12 @@ func TestDetachedHead(t *testing.T) { } // TestGrepIsLiteral checks that Grep finds the text, and does not read it -// as a pattern or as an option. +// as a pattern or as an option. It also checks the smart case. func TestGrepIsLiteral(t *testing.T) { t.Parallel() r, dir := newRepo(t) ctx := t.Context() - testgit.WriteFile(t, dir, "g.txt", "abc\na.c\n-v\n--help\n[x\n(y\n\\d\n*\n^a\nx$\n") + testgit.WriteFile(t, dir, "g.txt", "abc\na.c\n-v\n--help\n[x\n(y\n\\d\n*\n^a\nx$\nAbc\n") // grep.column adds a field to the output. testgit.Git(t, dir, "config", "grep.column", "true") tests := []struct { @@ -284,6 +284,8 @@ func TestGrepIsLiteral(t *testing.T) { {"^a", []string{"^a"}}, {"x$", []string{"x$"}}, {"abc\na.c", nil}, // no line has a newline + {"abc", []string{"abc", "Abc"}}, + {"Abc", []string{"Abc"}}, } for _, tt := range tests { ms, _, err := r.Grep(ctx, tt.q, 10, time.Minute) diff --git a/vcs/refs.go b/vcs/refs.go index 4ddf54d..dce5536 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -12,6 +12,7 @@ import ( "strings" "sync/atomic" "time" + "unicode" "github.com/rednafi/rexdiff/internal/proc" ) @@ -68,22 +69,32 @@ func (r *Repo) Commits(ctx context.Context, since string) ([]Commit, error) { return cs, nil } -// Branches returns the names of the local and the remote branches. +// Branches returns the names of the local branches and of the branches +// of origin, the newest commit first, as herdr-reviewr lists them. A +// branch of origin, for example "origin/main", hides the local branch +// with the same name. func (r *Repo) Branches(ctx context.Context) ([]string, error) { - // A ref name has no space. The short name of refs/remotes/origin/HEAD - // is "origin", thus filter by the full name. - out, err := r.run(ctx, nil, "for-each-ref", - "--format=%(refname) %(refname:short)", "refs/heads", "refs/remotes") + out, err := r.run(ctx, nil, "for-each-ref", "--sort=-committerdate", + "--format=%(refname)", "refs/remotes/origin", "refs/heads") if err != nil { return nil, err } + refs := strings.Fields(out) // a ref name has no space + onOrigin := map[string]bool{} + for _, ref := range refs { + if name, ok := strings.CutPrefix(ref, "refs/remotes/origin/"); ok { + onOrigin[name] = true + } + } var bs []string - for l := range strings.Lines(out) { - full, short, _ := strings.Cut(strings.TrimSuffix(l, "\n"), " ") - remoteHead := strings.HasPrefix(full, "refs/remotes/") && - strings.HasSuffix(full, "/HEAD") - if short != "" && !remoteHead { - bs = append(bs, short) + for _, ref := range refs { + local, isLocal := strings.CutPrefix(ref, "refs/heads/") + remote := strings.TrimPrefix(ref, "refs/remotes/") + switch { + case isLocal && !onOrigin[local]: + bs = append(bs, local) + case !isLocal && remote != "origin/HEAD": + bs = append(bs, remote) } } return bs, nil @@ -200,9 +211,10 @@ type Match struct { } // Grep returns at most limit lines of the tracked and the untracked files -// that contain the text q. The search ignores case and binary files. When -// it finds limit lines, it stops git, and more is true if there are -// others. +// that contain the text q. The search ignores binary files. As in +// herdr-reviewr, it has smart case. A q with an upper case letter matches +// only the same case. Else the search ignores case. When it finds limit +// lines, it stops git, and more is true if there are others. // // After the time budget, Grep stops git when it has a line, and returns // the lines with more set to true. At the deadline of ctx, Grep stops git @@ -215,9 +227,11 @@ func (r *Repo) Grep(ctx context.Context, q string, limit int, budget time.Durati } // --no-column overrides the git setting grep.column. That setting adds a // field to each match. - cmd, stderr := r.command(ctx, nil, "git", - "grep", "-n", "--no-column", "-z", "-I", "-i", "-F", "--untracked", "--no-color", - "-e", q) + args := []string{"grep", "-n", "--no-column", "-z", "-I", "-F", "--untracked", "--no-color"} + if !strings.ContainsFunc(q, unicode.IsUpper) { + args = append(args, "-i") + } + cmd, stderr := r.command(ctx, nil, "git", append(args, "-e", q)...) out, err := cmd.StdoutPipe() if err != nil { return nil, false, err diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 85c7fdf..1ab2232 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -380,15 +380,15 @@ func TestWorktree(t *testing.T) { t.Errorf("IgnoredDir(no such dir) = %v, want none", es) } - ms, _, err := r.Grep(ctx, "TWO", 10, time.Minute) - match := vcs.Match{Path: "a.txt", Line: 2, Text: "two"} - if err != nil || len(ms) != 1 || ms[0] != match { - t.Errorf("Grep(TWO) = %+v, %v, want [%+v], nil", ms, err, match) + // The search has smart case. An upper case letter matches only the + // same case. A query in lower case ignores case. + if ms, _, err := r.Grep(ctx, "TWO", 10, time.Minute); err != nil || len(ms) != 0 { + t.Errorf("Grep(TWO) = %+v, %v, want none, nil", ms, err) } // git quotes this name unless -z. - testgit.WriteFile(t, dir, "a:é\n.txt", "x: two\n") - ms, _, err = r.Grep(ctx, "x: two", 10, time.Minute) - match = vcs.Match{Path: "a:é\n.txt", Line: 1, Text: "x: two"} + testgit.WriteFile(t, dir, "a:é\n.txt", "x: Two\n") + ms, _, err := r.Grep(ctx, "x: two", 10, time.Minute) + match := vcs.Match{Path: "a:é\n.txt", Line: 1, Text: "x: Two"} if err != nil || len(ms) != 1 || ms[0] != match { t.Errorf("Grep(x: two) = %+v, %v, want [%+v], nil", ms, err, match) } @@ -468,13 +468,21 @@ func TestRefs(t *testing.T) { if b := r.DefaultBase(ctx); b != "main" { t.Errorf("DefaultBase = %q, want main", b) } - // The HEAD of each remote is not a branch. + // As in herdr-reviewr, the list has only the branches of origin, and + // origin/main hides main. The HEAD of origin is not a branch. The + // branch old has the oldest commit, so it is last. for _, remote := range []string{"origin", "up"} { testgit.Git(t, dir, "update-ref", "refs/remotes/"+remote+"/main", "main") testgit.Git(t, dir, "symbolic-ref", "refs/remotes/"+remote+"/HEAD", "refs/remotes/"+remote+"/main") } - want := "feat main origin/main up/main" + obj := t.TempDir() + const who = "A 946684800 +0000\n" + testgit.WriteFile(t, obj, "old", "tree "+testgit.Git(t, dir, "rev-parse", "main^{tree}")+ + "author "+who+"committer "+who+"\nold\n") + old := testgit.Git(t, dir, "hash-object", "-t", "commit", "-w", filepath.Join(obj, "old")) + testgit.Git(t, dir, "update-ref", "refs/heads/old", strings.TrimSpace(old)) + want := "feat origin/main old" if bs, err := r.Branches(ctx); err != nil || strings.Join(bs, " ") != want { t.Errorf("Branches with remotes = %v, %v, want %s", bs, err, want) } From 8099ef4f5a9f5bf865b4bd0741546672d5de0fcf Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 15:06:41 +0100 Subject: [PATCH 090/119] feat(vcs): keep at most 100 PR checks --- vcs/pr.go | 11 ++++++++--- vcs/pr_test.go | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/vcs/pr.go b/vcs/pr.go index abbed6a..04113ae 100644 --- a/vcs/pr.go +++ b/vcs/pr.go @@ -20,8 +20,12 @@ var ( ) // maxComments is the number of the most recent comments that -// [Repo.PullRequest] gets. -const maxComments = 100 +// [Repo.PullRequest] gets. maxChecks is the number of the checks that it +// gets. The two limits are the same as in herdr-reviewr. +const ( + maxComments = 100 + maxChecks = 100 +) // Hosts are the hosts of self-hosted forges. An empty value means only the // public host. @@ -245,7 +249,8 @@ func (r *Repo) gitHub(ctx context.Context, host string) (*PullRequest, error) { Body: v.Body, } // A check run has a conclusion when it is done. A status has a state. - for _, c := range v.StatusCheckRollup { + // As in herdr-reviewr, the checks are the first that gh gives. + for _, c := range v.StatusCheckRollup[:min(len(v.StatusCheckRollup), maxChecks)] { pr.Checks = append(pr.Checks, Check{ Name: cmp.Or(c.Name, c.Context), Result: gitHubResult(cmp.Or(c.Conclusion, c.State)), diff --git a/vcs/pr_test.go b/vcs/pr_test.go index a3a3227..9b87a48 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -275,6 +275,28 @@ func TestPullRequestHostile(t *testing.T) { } } +// TestPullRequestCheckLimit checks that a pull request has at most 100 +// checks, the first that gh gives, as in herdr-reviewr. +func TestPullRequestCheckLimit(t *testing.T) { + t.Parallel() + dir := t.TempDir() + checks := make([]string, 101) + for i := range checks { + checks[i] = fmt.Sprintf(`{"name": "c%d", "conclusion": "SUCCESS"}`, i) + } + fakeTool(t, dir, "gh", map[string]string{ghArgs: `{"number": 7, "title": "T", + "statusCheckRollup": [` + strings.Join(checks, ",") + `]}`}) + r, _ := repoAt(t, testgit.ToolEnv(t, dir), "https://github.com/o/r") + pr, err := r.PullRequest(t.Context(), vcs.Hosts{}) + if err != nil { + t.Fatal(err) + } + if n := len(pr.Checks); n != 100 || pr.Checks[99].Name != "c99" { + t.Errorf("PullRequest has %d checks, the last %+v, want 100, the last c99", + n, pr.Checks[n-1]) + } +} + // TestNoPullRequest checks that a gh or a glab that finds no pull request // gives ErrNoPullRequest. Both exit with 1 and say so. func TestNoPullRequest(t *testing.T) { From 44c3b68f5b4cb4c8d2f2e2e6078745adcf9a2c36 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 15:07:19 +0100 Subject: [PATCH 091/119] feat(tui): align the picker, opener, keys, settings, wheel and PR tab with herdr-reviewr - agent picker: a digit moves the cursor, and enter sends - o opens only an http(s) URL, runs the opener as argv, and tells it - url_opener must name a program first - the old key names list-wider, list-narrower and preview work - a copy failure shows herdr-reviewr's text, and logs the error - the scope and picker keys do nothing on the PR tab - e does nothing while a selection is active - an edit keeps the ID and place of the comment - -wrap takes on or off - base picker: the PR base and the default branch first, with tags - the wheel scrolls the view of the file list and the search preview - PR comments show their age --- cmd/rexdiff/main.go | 8 +++- test/changes_test.go | 11 +++++- test/comment_test.go | 34 ++++++++++++----- test/files_test.go | 41 ++++++++++++++------ test/testdata/script/cli.txt | 9 +++++ tui/basepick.go | 34 +++++++++++++---- tui/comment.go | 24 +++++++----- tui/config.go | 39 +++++++++++++++++++ tui/editor.go | 72 ++++++++++++++++++++++++++++++++++-- tui/model.go | 1 + tui/mouse.go | 20 +++++++--- tui/nav.go | 20 ++++++++-- tui/overlay.go | 4 +- tui/pr.go | 24 +++++++++++- tui/preview.go | 1 + tui/search.go | 3 ++ tui/send.go | 12 +++--- tui/tree.go | 5 +++ tui/view.go | 6 ++- 19 files changed, 305 insertions(+), 63 deletions(-) diff --git a/cmd/rexdiff/main.go b/cmd/rexdiff/main.go index 621dc20..8aae8ff 100644 --- a/cmd/rexdiff/main.go +++ b/cmd/rexdiff/main.go @@ -206,7 +206,8 @@ func parseFlags(args, env []string, stderr io.Writer) (flags, error) { // tui.Run checks the layout and the scope, as in the settings. fs.StringVar(&f.layout, "layout", "", "diff layout: unified (top to bottom) or split (side by side)") fs.StringVar(&f.scope, "scope", "", "start scope: uncommitted, branch, or last-turn") - fs.BoolVar(&f.wrap, "wrap", true, "wrap of long lines (the key w toggles it)") + // As in herdr-reviewr, -wrap takes on or off, so "-wrap off" works. + wrap := fs.String("wrap", "on", "wrap of long lines: on or off (the key w toggles it)") fs.StringVar(&f.base, "base", "", "base for the branch scope (default: the picked base, else the repo's default branch)") fs.StringVar(&f.agent, "agent", proc.Getenv(env, "REXDIFF_AGENT"), "Rex block (ID or label) of the agent beside this pane") fs.StringVar(&f.logPath, "log", proc.Getenv(env, "REXDIFF_LOG"), "file for a debug log") @@ -226,7 +227,10 @@ func parseFlags(args, env []string, stderr io.Writer) (flags, error) { fs.Usage() return flags{}, errUsage } - f.repo = fs.Arg(0) + if *wrap != "on" && *wrap != "off" { + return flags{}, fmt.Errorf("invalid value for -wrap: expected one of on, off, not %q", *wrap) + } + f.wrap, f.repo = *wrap == "on", fs.Arg(0) return f, nil } diff --git a/test/changes_test.go b/test/changes_test.go index a2318c4..598ef21 100644 --- a/test/changes_test.go +++ b/test/changes_test.go @@ -114,7 +114,8 @@ func TestSplit(t *testing.T) { } // TestWrap checks that rexdiff wraps a long line, that w cuts it, and -// that → scrolls to its end. +// that → scrolls to its end. As in herdr-reviewr, -wrap off cuts it at +// the start. func TestWrap(t *testing.T) { repo := newRepo(t) long := "var long = \"" + strings.Repeat("ab", 60) + "end\"\n" @@ -128,6 +129,14 @@ func TestWrap(t *testing.T) { // keep its start in the view. tm.keys(slices.Repeat([]string{"right"}, 12)...) tm.waitFor("end\"") + + repo = newRepo(t) + testgit.WriteFile(t, repo, "b.go", "package a\n\n"+long) + tm = start(t, repo, opts{width: 120, args: []string{"-wrap", "off"}}) + tm.keys("f") + if s := tm.waitFor("var long"); strings.Contains(s, "end\"") { + t.Errorf("-wrap off wraps the long line. The screen shows:\n%s", s) + } } // column returns the column of text in the first line of s that has it, diff --git a/test/comment_test.go b/test/comment_test.go index b7218dc..39ea79a 100644 --- a/test/comment_test.go +++ b/test/comment_test.go @@ -22,7 +22,8 @@ func comment(tm *term, text string) { } // TestCommentList checks that a comment shows on its line and in the -// list. n and N move to it. The list edits the comment and deletes it. An +// list. n and N move to it. The list edits the comment and deletes it. As +// in herdr-reviewr, an edit keeps the place of the comment in the list. An // edit with blank text keeps the comment. func TestCommentList(t *testing.T) { tm := start(t, newRepo(t), opts{}) @@ -36,12 +37,18 @@ func TestCommentList(t *testing.T) { tm.waitCursor("return x") tm.keys("N") tm.waitCursor("return 1") + tm.keys("c", "z", "enter") // a second comment on the line + tm.waitFor("💬 z") tm.keys("l") - tm.waitFor("Comments (1)", "a.go:4 (removed) hi") + tm.waitFor("Comments (2)", "a.go:4 (removed) hi") tm.keys("e", " ") tm.typed("more") tm.keys("enter") - tm.waitFor("a.go:4 (removed) hi more") + s := tm.waitFor("a.go:4 (removed) hi more", "a.go:4 (removed) z") + _, edited, _ := position(s, "(removed) hi more") + if _, other, _ := position(s, "(removed) z"); edited > other { + t.Errorf("the edit moves the comment down. The screen shows:\n%s", s) + } // The flash of the edit hides the badge of the draft, so wait for // the keys of the box. tm.keys("e") @@ -50,7 +57,7 @@ func TestCommentList(t *testing.T) { tm.keys("enter") tm.waitGone("enter save") tm.waitFor("a.go:4 (removed) hi more") - tm.keys("d") // the list closes with its last comment + tm.keys("d", "d") // the list closes with its last comment tm.waitGone("Comments (", "💬") } @@ -66,7 +73,7 @@ func TestCommentDrag(t *testing.T) { // TestCommentBox checks that the box takes more than one line, and that // esc drops a new comment. It also checks that v comments on a range of -// lines. +// lines, and that e does not end the range. func TestCommentBox(t *testing.T) { tm := start(t, newRepo(t), opts{}) // The draft comes first, because the flash of an added comment hides @@ -77,7 +84,12 @@ func TestCommentBox(t *testing.T) { tm.waitGone("✎") tm.keys("k", "c", "a", "ctrl+j", "b", "enter") tm.waitFor("💬 a", "b") - tm.keys("j", "v", "j", "c", "r", "enter", "l") + // As in herdr-reviewr, e does nothing while a selection is active. + tm.keys("j", "v", "j", "e", "c") + if s := tm.waitFor("enter save"); strings.Contains(s, "editor failed") { + t.Errorf("e with a selection opens the editor. The screen shows:\n%s", s) + } + tm.keys("r", "enter", "l") tm.waitFor("a.go:4-5 r") } @@ -112,8 +124,8 @@ func TestSendWithoutAgent(t *testing.T) { tm.waitFor("💬 hi") } -// TestAgentPicker checks that a send with two agents asks which one, and -// that a digit picks it. +// TestAgentPicker checks that a send with two agents asks which one. As +// in herdr-reviewr, a digit moves the cursor to an agent, and enter sends. func TestAgentPicker(t *testing.T) { repo := newRepo(t) rex := newRex(t, repo) @@ -124,6 +136,8 @@ func TestAgentPicker(t *testing.T) { tm.keys("s") tm.waitFor("send to which agent?", "1 agent", "2 cc") tm.keys("2") + tm.waitCursor("2 cc") + tm.keys("enter") tm.waitFor("sent 1 comment to cc") rex.expectCalls(t, `block.event {"block_id":"block:cc"`) } @@ -157,7 +171,8 @@ func TestCopy(t *testing.T) { // TestMouse checks that a click picks a file, and a triple click copies a // line. It also checks that a drag on the code copies the lines, and that -// the wheel scrolls. +// the wheel scrolls. As in herdr-reviewr, the wheel on the file list does +// not pick a file. func TestMouse(t *testing.T) { // The fake pbcopy is slow, as a real tool can be. Its copy takes longer // than the time between the clicks of a triple click. The triple click @@ -169,6 +184,7 @@ func TestMouse(t *testing.T) { tm.click("M long.txt", 1) tm.waitFor("⋯ 32 unmodified lines") tm.click("M a.go", 1) + tm.wheel("M a.go", 1) tm.click("func A() int {", 3) tm.waitFor("copied 14 chars") waitFile(t, clip, func(s string) bool { return s == "func A() int {" }) diff --git a/test/files_test.go b/test/files_test.go index 27ba567..b8bff1f 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -6,6 +6,7 @@ import ( "path/filepath" "strings" "testing" + "time" "github.com/rednafi/rexdiff/internal/testgit" ) @@ -38,13 +39,15 @@ func TestMarkdownSetting(t *testing.T) { } // TestSearch checks that / finds files by name and lines by code, shows a -// preview, and opens the pick. A changed file opens in the Changes tab, at -// the line, even in a fold. +// preview, and opens the pick. The wheel scrolls the preview. A changed +// file opens in the Changes tab, at the line, even in a fold. func TestSearch(t *testing.T) { tm := start(t, newRepo(t), opts{}) tm.keys("/") tm.typed("long") tm.waitFor("files 1", "▶ long.txt", "preview · long.txt", "first") + tm.wheel("line 5", 1) + tm.waitGone("first") tm.keys("enter") tm.waitGone("preview ·") tm.waitFor("first", "⋯ 32 unmodified lines") @@ -106,35 +109,49 @@ func TestTurnRaced(t *testing.T) { } // TestPR checks that the PR tab shows the pull request of the branch from -// gh, with its checks and comments. It also checks that o opens it. +// gh, with its checks and comments, and the age of each comment. It also +// checks that o opens it, as in herdr-reviewr. Without {url}, the URL goes +// at the end of the opener command. o does not open a URL that is not +// http or https. The keys of the scopes and of the base picker do nothing +// on the PR tab. func TestPR(t *testing.T) { repo := newRepo(t) testgit.Git(t, repo, "remote", "add", "origin", "https://github.com/o/r.git") + created := time.Now().Add(-3 * time.Hour).UTC().Format(time.RFC3339) bin := tools(t, map[string]string{ - "gh": `cat <<'EOF' + "gh": `cat < "${0%/*}/opened"` + "\n", }) - tm := start(t, repo, opts{path: bin, args: []string{ - "-config", - `{"url_opener": "opener {url}"}`, - }}) + config := []string{"-config", `{"url_opener": "opener"}`} + tm := start(t, repo, opts{path: bin, args: config}) tm.keys("3") tm.waitFor("Add b #7", "● open", "feat → main", "by ann", - "checks: ✓ 1 ✗ 1", "✗ lint", "The body of the PR.", "bob", + "checks: ✓ 1 ✗ 1", "✗ lint", "The body of the PR.", "bob 3h", "Looks good.") - tm.keys("o") + tm.keys("u", "b", "t", "g", "B", "o") + if s := tm.waitFor("opened PR in browser"); !strings.Contains(s, "Add b #7") { + t.Errorf("a key of a scope leaves the PR tab. The screen shows:\n%s", s) + } waitFile(t, filepath.Join(bin, "opened"), func(s string) bool { return s == "https://github.com/o/r/pull/7\n" }) + + repo = newRepo(t) + testgit.Git(t, repo, "remote", "add", "origin", "https://github.com/o/r.git") + tm = start(t, repo, opts{path: bin, args: config, env: []string{"PR_URL=file:///etc/passwd"}}) + tm.keys("3") + tm.waitFor("Add b #7") + tm.keys("o") + tm.waitFor("open failed: unsupported link scheme") } // TestNoPR checks that the PR tab tells why it has no pull request. The diff --git a/test/testdata/script/cli.txt b/test/testdata/script/cli.txt index 51cab7a..04d2de2 100644 --- a/test/testdata/script/cli.txt +++ b/test/testdata/script/cli.txt @@ -15,9 +15,18 @@ stderr '^rexdiff: config: unknown key "layuot"$' stderr '^rexdiff: config: invalid value for layout: expected one of unified, split, not "sideways"$' ! exec rexdiff -check -config '{"keybindings": {"next-file": ["x"], "prev-file": ["x"]}}' stderr '^rexdiff: config: invalid value for keybindings: "x" is bound to both "next-file" and "prev-file"$' +! exec rexdiff -check -config '{"url_opener": "{url} --new"}' +stderr '^rexdiff: config: invalid value for url_opener: expected a command that names a program first, not "{url} --new"$' + +# As in herdr-reviewr, the settings take the old names of three actions. +exec rexdiff -check -config '{"keybindings": {"list-wider": ["W"], "preview": ["M"]}}' +! exec rexdiff -check -config '{"keybindings": {"rendered": ["M"], "preview": ["P"]}}' +stderr '^rexdiff: config: invalid value for keybindings: "rendered" and "preview" name the same action$' # A bad value of a flag names the flag, as the settings do. ! exec rexdiff -layout sideways repo stderr '^rexdiff: invalid value for -layout: expected one of unified, split, not "sideways"$' ! exec rexdiff -scope all repo stderr '^rexdiff: invalid value for -scope: expected one of uncommitted, branch, last-turn, not "all"$' +! exec rexdiff -wrap no repo +stderr '^rexdiff: invalid value for -wrap: expected one of on, off, not "no"$' diff --git a/tui/basepick.go b/tui/basepick.go index c04ca77..183392c 100644 --- a/tui/basepick.go +++ b/tui/basepick.go @@ -3,14 +3,18 @@ package tui // The base picker picks the base of the branch scope. import ( + "slices" "strings" + + "github.com/rednafi/rexdiff/vcs" ) // openBasePicker lets the user pick the base of the branch scope. The -// current base has a tag. As in herdr-reviewr, it does nothing if the base -// comes from the flag. +// current base has a tag. As in herdr-reviewr, the base of an open pull +// request and the default branch come first, with a tag. The picker does +// nothing on the PR tab, or if the base comes from the flag. func (m *model) openBasePicker() { - if m.baseFlag { + if m.baseFlag || m.tab == tabPR { return } ov := newOverlay(overlayBase, "base branch for the branch scope (or type any ref)") @@ -19,15 +23,29 @@ func (m *model) openBasePicker() { m.flash("branch list failed: " + err.Error()) return } - var items []pickItem + prBase := "" + if pr := m.pr.pr; pr != nil && pr.State == vcs.PROpen { + prBase = pr.Base + } + defaultBase := strings.TrimPrefix(m.repo.DefaultBase(m.ctx), "origin/") + // groups has the PR base, then the default branch, then the others. + // Each group keeps the newest first. + var groups [3][]pickItem for _, b := range branches { - tag := "" + var tags []string + name, g := strings.TrimPrefix(b, "origin/"), 2 + if name == prBase { + tags, g = append(tags, "pr base"), 0 + } + if name == defaultBase { + tags, g = append(tags, "default"), min(g, 1) + } if b == m.base { - tag = "current" + tags = append(tags, "current") } - items = append(items, pickItem{label: b, id: b, tag: tag}) + groups[g] = append(groups[g], pickItem{label: b, id: b, tag: strings.Join(tags, " ")}) } - ov.setItems(items) + ov.setItems(slices.Concat(groups[:]...)) m.open(ov) } diff --git a/tui/comment.go b/tui/comment.go index 8098f25..4c40c25 100644 --- a/tui/comment.go +++ b/tui/comment.go @@ -176,18 +176,20 @@ func (m *model) updateComment(msg tea.KeyPressMsg) tea.Cmd { switch { case key.Matches(msg, m.keys.Save): // As in herdr-reviewr, blank text cancels. An edit keeps the - // comment. + // comment, its ID, and its place in the list. d := m.draft - if text := strings.TrimSpace(m.editor.Value()); text != "" { - flash := "comment added" - if d.editID > 0 { - m.comments.Remove(d.editID) - flash = "comment updated" - } + text := strings.TrimSpace(m.editor.Value()) + edited := m.comments.Find(d.editID) + switch { + case text == "": + case edited != nil: + edited.Text = text + m.flash("comment updated") + default: c := d.Comment c.Text = text m.comments.Add(c) - m.flash(flash) + m.flash("comment added") } m.closeComment() return nil @@ -234,8 +236,12 @@ func nearNewLine(rows []diff.Row, i int) int { } // editOrOpen edits the comment at the cursor. If there is no comment, it -// opens the file in an editor at the cursor line. +// opens the file in an editor at the cursor line. As in herdr-reviewr, it +// does nothing while a selection is active, so the selection stays. func (m *model) editOrOpen() tea.Cmd { + if m.cur().anchor >= 0 { + return nil + } if c := m.commentAtCursor(); c != nil { return m.editComment(c, -1) } diff --git a/tui/config.go b/tui/config.go index 885318d..35379f6 100644 --- a/tui/config.go +++ b/tui/config.go @@ -164,6 +164,36 @@ type keybindings struct { Keys []string `json:"keys"` Quit []string `json:"quit"` QuitDiscard []string `json:"quit-discard"` + + // The old names of navigator-grow, navigator-shrink, and rendered. + // herdr-reviewr also takes them. + ListWider []string `json:"list-wider"` + ListNarrower []string `json:"list-narrower"` + Preview []string `json:"preview"` +} + +// useOldNames gives the keys of each old name to its action. An action +// and its old name cannot both have keys. +func (kb *keybindings) useOldNames() error { + names := []struct { + name, old string + keys, oldKeys *[]string + }{ + {"navigator-grow", "list-wider", &kb.NavigatorGrow, &kb.ListWider}, + {"navigator-shrink", "list-narrower", &kb.NavigatorShrink, &kb.ListNarrower}, + {"rendered", "preview", &kb.Rendered, &kb.Preview}, + } + for _, n := range names { + switch { + case *n.oldKeys == nil: + case *n.keys != nil: + return fmt.Errorf("invalid value for keybindings: %q and %q name the same action", + n.name, n.old) + default: + *n.keys, *n.oldKeys = *n.oldKeys, nil + } + } + return nil } // minListWidth is the smallest width of the file list, in columns. @@ -197,6 +227,9 @@ func parseConfig(text string) (config, error) { if err := json.Unmarshal([]byte(text), &c, json.RejectUnknownMembers(true)); err != nil { return config{}, configError(err) } + if err := c.Keybindings.useOldNames(); err != nil { + return config{}, fmt.Errorf("config: %w", err) + } if err := c.check(set); err != nil { return config{}, fmt.Errorf("config: %w", err) } @@ -303,6 +336,12 @@ func (c config) checkTexts(set map[string]jsontext.Value) error { return invalid(k.key, k.want, k.value) } } + // As in herdr-reviewr, the first word of the URL opener is a program, + // and not the URL. + if w := splitWords(c.URLOpener); c.URLOpener != "" && + (len(w) == 0 || w[0] == "" || strings.Contains(w[0], "{url}")) { + return invalid("url_opener", "a command that names a program first", c.URLOpener) + } if set["review_prefix"] != nil && strings.TrimSpace(c.ReviewPrefix) == "" { return invalid("review_prefix", "text", c.ReviewPrefix) } diff --git a/tui/editor.go b/tui/editor.go index b122008..e1f6ef0 100644 --- a/tui/editor.go +++ b/tui/editor.go @@ -11,6 +11,7 @@ import ( "runtime" "strings" "syscall" + "unicode" tea "charm.land/bubbletea/v2" @@ -141,12 +142,17 @@ func (m *model) onEditorDone(msg editorDoneMsg) { } // openURL opens url with the URL opener of the settings, else with -// the opener of the system. The opener runs with the environment env. The -// command waits for the opener. +// the opener of the system. As in herdr-reviewr, it opens only an http or +// an https URL. The opener runs with the environment env, and with no +// shell. The command waits for the opener. func openURL(env []string, cfg config, url string) (tea.Cmd, error) { + url = strings.TrimSpace(url) + if !isWebURL(url) { + return nil, errors.New("unsupported link scheme") + } if cfg.URLOpener != "" { - script := strings.ReplaceAll(cfg.URLOpener, "{url}", editor.ShellQuote(url)) - return detach(env, "open", "sh", "-c", script) + args := openerArgs(cfg.URLOpener, url) + return detach(env, "open", args[0], args[1:]...) } opener := "xdg-open" if runtime.GOOS == "darwin" { @@ -155,6 +161,64 @@ func openURL(env []string, cfg config, url string) (tea.Cmd, error) { return detach(env, "open", opener, url) } +// isWebURL reports whether url is http or https with text after the +// scheme, as herdr-reviewr checks it. A control character or a bidi +// mark can hide a part of the URL, so url must have none. +func isWebURL(url string) bool { + lower := strings.ToLower(url) + web := len(url) > len("http://") && strings.HasPrefix(lower, "http://") || + len(url) > len("https://") && strings.HasPrefix(lower, "https://") + return web && !strings.ContainsFunc(url, func(r rune) bool { + return unicode.IsControl(r) || r >= '\u202a' && r <= '\u202e' || + r >= '\u2066' && r <= '\u2069' || r == '\u200e' || r == '\u200f' + }) +} + +// openerArgs returns the program and the arguments of the URL opener +// command, as herdr-reviewr splits it. The words split at spaces, and a +// quoted text is one word. Each {url} becomes url. Without {url}, url is +// the last argument. The check of the settings makes sure that the first +// word is a program. +func openerArgs(command, url string) []string { + var args []string + for _, w := range splitWords(command) { + args = append(args, strings.ReplaceAll(w, "{url}", url)) + } + if !strings.Contains(command, "{url}") { + args = append(args, url) + } + return args +} + +// splitWords splits command into words at spaces, as herdr-reviewr does. +// Single or double quotes keep the spaces in a word. The quotes do not +// stay in the word. +func splitWords(command string) []string { + var words []string + var quote rune + inWord := false + for _, r := range command { + switch { + case quote != 0 && r == quote: + quote = 0 + case quote != 0: + words[len(words)-1] += string(r) + case unicode.IsSpace(r): + inWord = false + default: + if !inWord { + words, inWord = append(words, ""), true + } + if r == '"' || r == '\'' { + quote = r + } else { + words[len(words)-1] += string(r) + } + } + } + return words +} + // command returns the command for an editor or a URL opener, with the // environment env. The context of the command has no end, because the // program must not stop when rexdiff stops. For example, a kill of the diff --git a/tui/model.go b/tui/model.go index 89f0850..619e4d3 100644 --- a/tui/model.go +++ b/tui/model.go @@ -849,6 +849,7 @@ func (m *model) handleMsg(msg tea.Msg) tea.Cmd { // or a click can move the cursor. func (m *model) followCursor() { m.changePane.free, m.allPane.free, m.prPane.free = false, false, false + m.changeTree.free, m.allTree.free = false, false } // onKey gives a key to the part of the screen that takes the keys. diff --git a/tui/mouse.go b/tui/mouse.go index c2ea0b2..5843f0a 100644 --- a/tui/mouse.go +++ b/tui/mouse.go @@ -289,7 +289,10 @@ func (m *model) sourceLines(lo, hi int, pref diff.Side) []string { // wheelStep is the number of rows that one step of the wheel scrolls. const wheelStep = 3 -// onWheel scrolls the overlay, the file list, or the main pane. +// onWheel scrolls the overlay, the file list, or the main pane. As in +// herdr-reviewr, the wheel moves the view of the file list, of the main +// pane, and of the preview of the search, and not the cursor. In the other +// parts of an overlay, it moves the cursor. func (m *model) onWheel(mouse tea.Mouse) { var d int switch mouse.Button { @@ -300,12 +303,19 @@ func (m *model) onWheel(mouse tea.Mouse) { default: return } - if m.mode == modeOverlay && m.overlay != nil { - m.overlay.move(d) + if ov := m.overlay; m.mode == modeOverlay && ov != nil { + _, _, y, _ := m.overlayBox() + if pv := ov.search.preview; pv != nil && mouse.Y >= y+ov.search.previewY { + pv.scroll(wheelStep * d) + return + } + ov.move(d) return } - if m.inList(mouse.X, mouse.Y) { - m.stepRow(d) + if t := m.list(); t != nil && m.inList(mouse.X, mouse.Y) { + h := m.listRows() + top := m.listStart(h) + wheelStep*d + t.top, t.free = min(max(top, 0), max(len(t.rows)-(h-1), 0)), true return } p := m.cur() diff --git a/tui/nav.go b/tui/nav.go index 88a1ff5..9f67a68 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -80,10 +80,14 @@ func (m *model) actionKey(msg tea.KeyPressMsg) tea.Cmd { } // scopeKey handles a key that changes the tab or the scope. It reports -// whether it takes the key. +// whether it takes the key. As in herdr-reviewr, the keys of the scopes +// and of the pickers do nothing on the PR tab. func (m *model) scopeKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { k := m.keys + onPR := m.tab == tabPR && key.Matches(msg, k.ScopeUncommitted, k.ScopeBranch, + k.ScopeLastTurn, k.ScopeCommits, k.BasePick, k.CommitPick) switch { + case onPR: case key.Matches(msg, k.TabChanges): m.setTab(tabChanges) case key.Matches(msg, k.TabAllFiles): @@ -306,15 +310,23 @@ func (m *model) resizeList(d int) { m.rerender() } -// openPR opens the pull request in the browser. +// openPR opens the pull request in the browser, and tells it as +// herdr-reviewr does. func (m *model) openPR() tea.Cmd { - if m.pr.pr == nil || m.pr.pr.URL == "" { + pr := m.pr.pr + if pr == nil || pr.URL == "" { return nil } - wait, err := openURL(m.env, m.cfg, m.pr.pr.URL) + wait, err := openURL(m.env, m.cfg, pr.URL) if err != nil { m.flash("open failed: " + err.Error()) + return nil + } + kind := "PR" + if pr.Forge == vcs.ForgeGitLab { + kind = "MR" } + m.flash("opened " + kind + " in browser") return wait } diff --git a/tui/overlay.go b/tui/overlay.go index d25a760..857ece3 100644 --- a/tui/overlay.go +++ b/tui/overlay.go @@ -252,7 +252,8 @@ func (m *model) updateQuit(msg tea.KeyPressMsg) tea.Cmd { } // updateList handles a key in an overlay that has no input. In the agent -// picker, the digits 1 to 9 pick an agent. +// picker, the digits 1 to 9 move the cursor to an agent, as in +// herdr-reviewr. Only enter sends. func (m *model) updateList(msg tea.KeyPressMsg) tea.Cmd { ov, k, s := m.overlay, overlayKeys, msg.String() digit := len(s) == 1 && s[0] >= '1' && s[0] <= '9' @@ -264,7 +265,6 @@ func (m *model) updateList(msg tea.KeyPressMsg) tea.Cmd { case ov.kind == overlayAgents && digit: if i := int(s[0] - '1'); i < len(ov.shown) { ov.cur = i - return m.chooseOverlay() } } return nil diff --git a/tui/pr.go b/tui/pr.go index 1731057..b45ba1f 100644 --- a/tui/pr.go +++ b/tui/pr.go @@ -157,14 +157,36 @@ func (m *model) renderPR() { if strings.TrimSpace(pr.Body) != "" { lines = append(lines, renderMarkdown(md, pr.Body)...) } + now := time.Now() for _, c := range pr.Comments { - author := headerStyle.Render(c.Author) + " " + dimStyle.Render(c.When) + author := headerStyle.Render(c.Author) + " " + dimStyle.Render(age(c.When, now)) lines = append(lines, "", " "+author) lines = append(lines, renderMarkdown(md, c.Body)...) } p.set(lines, make([]diff.Row, len(lines))) } +// age returns the time from when to now, as herdr-reviewr shows it, for +// example "5m" or "3d". when is an RFC 3339 time. A bad time gives "". A +// time after now gives "0s". +func age(when string, now time.Time) string { + t, err := time.Parse(time.RFC3339, when) + if err != nil { + return "" + } + const day = 24 * time.Hour + d := max(now.Sub(t), 0) + for _, u := range []struct { + size time.Duration + name string + }{{365 * day, "y"}, {7 * day, "w"}, {day, "d"}, {time.Hour, "h"}, {time.Minute, "m"}} { + if d >= u.size { + return fmt.Sprintf("%d%s", int64(d/u.size), u.name) + } + } + return fmt.Sprintf("%ds", int64(d/time.Second)) +} + // prHeader returns the title line and the state line of pr. func prHeader(pr *vcs.PullRequest) []string { title := boldStyle.Render(pr.Title) diff --git a/tui/preview.go b/tui/preview.go index 31d8af8..ca4b9af 100644 --- a/tui/preview.go +++ b/tui/preview.go @@ -46,6 +46,7 @@ func (m *model) searchLines(inner int) (lines []string, listY int) { } pv := m.searchPreview(inner) h := avail - results + ov.search.previewY = len(lines) + 1 // 1 for the border if pv == nil { lines = append(lines, paneRule("preview", inner), dimStyle.Render(" no preview")) } else { diff --git a/tui/search.go b/tui/search.go index 55ba710..5578b3c 100644 --- a/tui/search.go +++ b/tui/search.go @@ -37,6 +37,9 @@ type searchState struct { hitsMore bool // git finds more matches than hits has err string // the error of the code search preview *preview + // previewY is the line of the box of the search where the preview + // starts, with its rule. + previewY int } // showSearch shows the results of the search in its mode, with the diff --git a/tui/send.go b/tui/send.go index 4a1101b..8787eeb 100644 --- a/tui/send.go +++ b/tui/send.go @@ -261,7 +261,9 @@ const copyTimeout = 2 * time.Second // copyText writes text to the clipboard. If the copy works, it removes // the comments ids and shows done. As in herdr-reviewr, the copy runs // before the next frame, so two copies keep their order. A clipboard tool -// that does not answer fails after copyTimeout. +// that does not answer fails after copyTimeout. As in herdr-reviewr, the +// message of a failure names only the fix that the user can make. The log +// has the error. func (m *model) copyText(text, done string, ids []int) { ctx, cancel := context.WithCancelCause(m.ctx) ctx, cancelTimeout := context.WithTimeoutCause(ctx, copyTimeout, @@ -270,11 +272,11 @@ func (m *model) copyText(text, done string, ids []int) { defer cancel(fmt.Errorf("copy: done: %w", context.Canceled)) err := clipboard.Write(ctx, m.env, text) switch { + case errors.Is(err, clipboard.ErrNoTool): + m.flash("copy failed: install wl-clipboard, xclip, or xsel") case err != nil: - if !errors.Is(err, clipboard.ErrNoTool) { - m.log.Warn("copy failed", "err", err) - } - m.flash("copy failed: " + err.Error()) + m.log.Warn("copy failed", "err", err) + m.flash("copy failed") default: m.clearComments(ids) m.flash(done) diff --git a/tui/tree.go b/tui/tree.go index dc439a7..38bf1c5 100644 --- a/tui/tree.go +++ b/tui/tree.go @@ -17,6 +17,11 @@ type fileListTree struct { entries []tree.Entry rows []tree.Row cur int // the row of the cursor + // top is the first row on the screen while free is true. free is true + // after the wheel moves the view. Then the cursor can be off the + // screen until the next key. + top int + free bool // expanded is true if the directories start expanded. toggled has the // directories that the user changes from that start. expanded bool diff --git a/tui/view.go b/tui/view.go index 038c5d0..e861e60 100644 --- a/tui/view.go +++ b/tui/view.go @@ -309,10 +309,14 @@ func (m *model) selectedRow(r string, w int) string { } // listStart returns the first row that the file list shows in h lines. +// The first line is the title. func (m *model) listStart(h int) int { t := m.list() - if t == nil { + switch { + case t == nil: return 0 + case t.free: + return min(max(t.top, 0), max(len(t.rows)-(h-1), 0)) } return max(0, t.cur-(h-2)) } From 0fb88c179cb5919b287648493793cd1a41ebc142 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 15:07:52 +0100 Subject: [PATCH 092/119] docs(user): say that file_list is navigator_position of herdr-reviewr --- .doc/user.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.doc/user.md b/.doc/user.md index d1f9bd1..7f24305 100644 --- a/.doc/user.md +++ b/.doc/user.md @@ -104,9 +104,9 @@ local settings = { } ``` -The other settings are the same as in -[herdr-reviewr](https://github.com/persiyanov/herdr-reviewr). After a change, run -`rex config reload`. +Most other settings are as in +[herdr-reviewr](https://github.com/persiyanov/herdr-reviewr), but `file_list` is its +`navigator_position`. After a change, run `rex config reload`. Press `?` to see all the keys. From fa794ea655541a9e839e9643c2ffb99b97a8a99b Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 15:12:56 +0100 Subject: [PATCH 093/119] feat: add the direction setting of the toggle split --- .doc/user.md | 1 + cmd/rexdiff/rexdiff.lua | 1 + cmd/rexdiff/rexdiff_toggle.lua | 17 +++++++++++------ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.doc/user.md b/.doc/user.md index 7f24305..45e429c 100644 --- a/.doc/user.md +++ b/.doc/user.md @@ -98,6 +98,7 @@ The settings are in `~/.config/rex/rexdiff.lua`: local settings = { key = "shift+cmd+r", -- the toggle key, or false for none placement = "split", -- split, zoomed, tab, or overlay + direction = "right", -- of the split: right or down layout = "unified", -- or split editor = "code -g {file}:{line}", keybindings = { send = { "S" } }, diff --git a/cmd/rexdiff/rexdiff.lua b/cmd/rexdiff/rexdiff.lua index 9dadbb8..aabde78 100644 --- a/cmd/rexdiff/rexdiff.lua +++ b/cmd/rexdiff/rexdiff.lua @@ -7,6 +7,7 @@ local settings = { -- key = "shift+cmd+r", -- the key of the toggle, or false for none -- placement = "split", -- split, zoomed, tab, or overlay + -- direction = "right", -- of the split: right or down -- layout = "unified", -- or split } diff --git a/cmd/rexdiff/rexdiff_toggle.lua b/cmd/rexdiff/rexdiff_toggle.lua index 45bc41c..f887c77 100644 --- a/cmd/rexdiff/rexdiff_toggle.lua +++ b/cmd/rexdiff/rexdiff_toggle.lua @@ -3,6 +3,7 @@ -- rexdiff.lua calls the function at the end with the settings. local PLACEMENTS = { split = true, zoomed = true, tab = true, overlay = true } +local DIRECTIONS = { right = "horizontal", down = "vertical" } local TERM = "com.superlogical.terminal" -- must returns res, or fails the action with err. A Rex call returns nil @@ -52,11 +53,11 @@ local function check(config) end -- open_rexdiff opens rexdiff at placement, beside the agent in ctx, with --- the settings in config. rexdiff starts in the current directory of the +-- the settings in config. A split opens in direction, right or down. rexdiff starts in the current directory of the -- agent. The rex package of rexdiff finds the directory the same way. -- rexdiff starts through the login shell of the user, so that it gets the -- login environment of the user, for example EDITOR and PATH. -local function open_rexdiff(ctx, placement, config) +local function open_rexdiff(ctx, placement, direction, config) local p = call("process", ctx.block_id) local cwd = (p.foreground or {}).cwd or (p.child or {}).cwd local node = rex.layout.block{ @@ -78,7 +79,7 @@ local function open_rexdiff(ctx, placement, config) end local s = must(rex.session.new_split{ anchor_id = ctx.block_id, - direction = "horizontal", + direction = DIRECTIONS[direction], side = "after", ratio = 0.45, focus = true, @@ -93,7 +94,7 @@ end -- The function gets the settings of rexdiff.lua, and adds the action -- and its key. return function(settings) - -- The key and the placement are for Rex. rexdiff gets the other settings + -- The key, the placement, and the direction are for Rex. rexdiff gets the other settings -- as JSON. if type(settings) ~= "table" then error("config: settings must be a table, as in: local settings = { }", 0) @@ -103,7 +104,11 @@ return function(settings) local key = opts.key if key == nil then key = "shift+cmd+r" end local default_placement = opts.placement or "split" - opts.key, opts.placement = nil, nil + local direction = opts.direction or "right" + if not DIRECTIONS[direction] then + error("config: unknown direction " .. tostring(direction) .. "; use right or down", 0) + end + opts.key, opts.placement, opts.direction = nil, nil, nil local config, encode_err = rex.json.encode(opts) rex.action{ @@ -123,7 +128,7 @@ return function(settings) if #open == 0 then if config == nil then error("config: " .. encode_err, 0) end check(config) - return open_rexdiff(ctx, placement, config) + return open_rexdiff(ctx, placement, direction, config) end for _, id in ipairs(open) do must(rex.call("block.close", { session_id = ctx.session_id, block_id = id })) From 33bf0a13df3792df5feac0beaf33f9fa6136285e Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 15:19:05 +0100 Subject: [PATCH 094/119] feat(tui): open a markdown link with a click, as herdr-reviewr does --- test/files_test.go | 7 ++++++- tui/mouse.go | 20 +++++++++++++++++++- tui/nav.go | 18 ++++++++++++------ 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/test/files_test.go b/test/files_test.go index b8bff1f..5752da6 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -121,7 +121,7 @@ func TestPR(t *testing.T) { bin := tools(t, map[string]string{ "gh": `cat <= w { + return "" + } + buf := uv.NewScreenBuffer(w, 1) + uv.NewStyledString(line).Draw(buf, buf.Bounds()) + return buf.CellAt(x, 0).Link.URL +} + // inList reports whether the screen cell at column x and line y is on // the file list. func (m *model) inList(x, y int) bool { diff --git a/tui/nav.go b/tui/nav.go index 9f67a68..4d1d0d9 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -317,16 +317,22 @@ func (m *model) openPR() tea.Cmd { if pr == nil || pr.URL == "" { return nil } - wait, err := openURL(m.env, m.cfg, pr.URL) - if err != nil { - m.flash("open failed: " + err.Error()) - return nil - } kind := "PR" if pr.Forge == vcs.ForgeGitLab { kind = "MR" } - m.flash("opened " + kind + " in browser") + return m.browse(pr.URL, kind) +} + +// browse opens url in the browser, and tells that it opened what, as +// herdr-reviewr does. +func (m *model) browse(url, what string) tea.Cmd { + wait, err := openURL(m.env, m.cfg, url) + if err != nil { + m.flash("open failed: " + err.Error()) + return nil + } + m.flash("opened " + what + " in browser") return wait } From 5bda4633c00f0c072f3e986c177518b94878164b Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 15:25:13 +0100 Subject: [PATCH 095/119] feat(tui): open and close

      blocks on the PR tab with right and left --- test/files_test.go | 12 ++++++++++-- tui/model.go | 1 + tui/nav.go | 5 +++++ tui/pr.go | 23 +++++++++++++++++++++-- 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/test/files_test.go b/test/files_test.go index 5752da6..34bbbdc 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -123,7 +123,7 @@ func TestPR(t *testing.T) { {"number": 7, "title": "Add b", "state": "OPEN", "isDraft": false, "url": "${PR_URL:-https://github.com/o/r/pull/7}", "body": "The body of the PR. See [the docs](https://example.com/docs).", "author": {"login": "ann"}, "headRefName": "feat", "baseRefName": "main", - "comments": [{"author": {"login": "bob"}, "body": "Looks good.", + "comments": [{"author": {"login": "bob"}, "body": "Looks good.\n\n
      The logs\n\nA hidden line.\n\n
      ", "createdAt": "` + created + `"}], "statusCheckRollup": [{"name": "test", "conclusion": "SUCCESS"}, {"name": "lint", "conclusion": "FAILURE"}]} @@ -136,7 +136,15 @@ EOF tm.keys("3") tm.waitFor("Add b #7", "● open", "feat → main", "by ann", "checks: ✓ 1 ✗ 1", "✗ lint", "The body of the PR.", "bob 3h", - "Looks good.") + "Looks good.", "▸ The logs") + if s := tm.waitFor("▸ The logs"); strings.Contains(s, "A hidden line.") { + t.Errorf("a closed details block shows its body. The screen shows:\n%s", s) + } + tm.keys("right") + tm.waitFor("▾ The logs", "A hidden line.") + tm.keys("left") + tm.waitFor("▸ The logs") + tm.waitGone("A hidden line.") tm.keys("u", "b", "t", "g", "B", "o") if s := tm.waitFor("opened PR in browser"); !strings.Contains(s, "Add b #7") { t.Errorf("a key of a scope leaves the PR tab. The screen shows:\n%s", s) diff --git a/tui/model.go b/tui/model.go index 619e4d3..09477f5 100644 --- a/tui/model.go +++ b/tui/model.go @@ -283,6 +283,7 @@ type model struct { pr prState prf prFetch prPlace *resumePane // prPane's place after a restart + prDetails bool // the
      blocks of the PR tab are open split bool // show the diff side by side wrap bool diff --git a/tui/nav.go b/tui/nav.go index 4d1d0d9..7fcb1c4 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -158,6 +158,11 @@ func (m *model) moveKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { m.setDir(false) case key.Matches(msg, k.Expand) && m.atFold(): m.expandFold(p.rows[p.cur].Fold) + case key.Matches(msg, k.Expand, k.Collapse) && m.tab == tabPR: + // As in herdr-reviewr, right opens all the
      blocks of + // the PR tab, and left closes them. + m.prDetails = key.Matches(msg, k.Expand) + m.renderPR() case key.Matches(msg, k.Expand) && !m.wrap: p.xoff += scrollStep m.rerender() diff --git a/tui/pr.go b/tui/pr.go index b45ba1f..4a89a49 100644 --- a/tui/pr.go +++ b/tui/pr.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "regexp" "strings" "time" @@ -155,17 +156,35 @@ func (m *model) renderPR() { lines = append(lines, checkLines(pr.Checks)...) lines = append(lines, "") if strings.TrimSpace(pr.Body) != "" { - lines = append(lines, renderMarkdown(md, pr.Body)...) + lines = append(lines, renderMarkdown(md, m.details(pr.Body))...) } now := time.Now() for _, c := range pr.Comments { author := headerStyle.Render(c.Author) + " " + dimStyle.Render(age(c.When, now)) lines = append(lines, "", " "+author) - lines = append(lines, renderMarkdown(md, c.Body)...) + lines = append(lines, renderMarkdown(md, m.details(c.Body))...) } p.set(lines, make([]diff.Row, len(lines))) } +// detailsRE matches a
      block with its summary and its body. +var detailsRE = regexp.MustCompile( + `(?is)]*>\s*]*>(.*?)(.*?)
      `) + +// details returns src with each
      block as its summary line, as +// herdr-reviewr shows it. The line starts with ▸ for a closed block, and +// with ▾ for an open block. The body of an open block follows the line. +func (m *model) details(src string) string { + return detailsRE.ReplaceAllStringFunc(src, func(b string) string { + sub := detailsRE.FindStringSubmatch(b) + summary := strings.Join(strings.Fields(sub[1]), " ") + if !m.prDetails { + return "\n\n▸ " + summary + "\n\n" + } + return "\n\n▾ " + summary + "\n\n" + sub[2] + "\n\n" + }) +} + // age returns the time from when to now, as herdr-reviewr shows it, for // example "5m" or "3d". when is an RFC 3339 time. A bad time gives "". A // time after now gives "0s". From db4509591334ff554a685e66405a8954ca27cb67 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 15:33:18 +0100 Subject: [PATCH 096/119] feat(tui): copy the dragged span of code, not whole lines --- test/comment_test.go | 4 +++- tui/model.go | 2 ++ tui/mouse.go | 40 +++++++++++++++++++++++++++++++++++----- 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/test/comment_test.go b/test/comment_test.go index 39ea79a..7841528 100644 --- a/test/comment_test.go +++ b/test/comment_test.go @@ -189,7 +189,9 @@ func TestMouse(t *testing.T) { tm.waitFor("copied 14 chars") waitFile(t, clip, func(s string) bool { return s == "func A() int {" }) tm.drag("package a", "func A()") - waitFile(t, clip, func(s string) bool { return s == "package a\n\nfunc A() int {" }) + waitFile(t, clip, func(s string) bool { return s == "package a\n\nf" }) + tm.drag("A() int", "func A") + waitFile(t, clip, func(s string) bool { return s == "func A" }) tm.click("M long.txt", 1) tm.keys(":", "2", "0", "enter") // opens the fold diff --git a/tui/model.go b/tui/model.go index 09477f5..9121b28 100644 --- a/tui/model.go +++ b/tui/model.go @@ -159,6 +159,8 @@ type dragState struct { gutter bool // the drag starts on the line numbers start int // the row where the drag starts pref diff.Side // the side of the line numbers or the code at the start + // The screen line and the code column of the press and of the pointer. + row, x, toRow, toX int } // draft is the comment that the user writes. It is a new comment, or an diff --git a/tui/mouse.go b/tui/mouse.go index bc79684..8823c6d 100644 --- a/tui/mouse.go +++ b/tui/mouse.go @@ -101,6 +101,10 @@ func (m *model) clickMain(mouse tea.Mouse) tea.Cmd { start: p.cur, gutter: onNumber, pref: side, + row: rowAt[y], + x: x, + toRow: rowAt[y], + toX: x, } return nil } @@ -149,9 +153,10 @@ func (m *model) onDrag(mouse tea.Mouse) { } } } + m.drag.toRow, m.drag.toX = p.cur, mouse.X-m.mainX()-gutter p.cur = p.head(p.cur) // the drag moves by source lines m.drag.moved = p.cur != m.drag.start - if m.drag.moved { + if m.drag.moved || m.drag.toX != m.drag.x { m.click = clickChain{} // a drag is not a click } } @@ -254,7 +259,7 @@ func (m *model) copyChars(text string) { } // onMouseUp ends a drag. A drag on the line numbers opens the comment -// box. A drag on the code copies the lines. +// box. A drag on the code copies the text from the press to the pointer. func (m *model) onMouseUp() tea.Cmd { d := m.drag m.drag.active = false @@ -269,13 +274,38 @@ func (m *model) onMouseUp() tea.Cmd { p.anchor = d.start } return m.startComment(d.pref) - case d.moved: // a drag on the code copies the range - lo, hi := p.span(d.start, p.cur) - m.copyChars(strings.Join(m.sourceLines(lo, hi, d.pref), "\n")) + default: + m.copyChars(m.dragText(d)) } return nil } +// dragText returns the text of drag d on the code, as herdr-reviewr +// copies it. The text starts at the rune under the press and ends at the +// rune under the pointer, both included. A drag that ends on its start +// rune is a click, and gives "". +func (m *model) dragText(d dragState) string { + p := m.cur() + a, b := p.head(d.row), p.head(d.toRow) + _, ca, _ := m.textAt(d.row, d.x) + _, cb, _ := m.textAt(d.toRow, d.toX) + if a > b || a == b && ca > cb { + a, b, ca, cb = b, a, cb, ca + } + if a == b && ca == cb { + return "" + } + lines := m.sourceLines(a, p.end(b), d.pref) + if len(lines) == 0 { + return "" + } + last := []rune(lines[len(lines)-1]) + lines[len(lines)-1] = string(last[:min(cb+1, len(last))]) + first := []rune(lines[0]) + lines[0] = string(first[min(ca, len(first)):]) + return strings.Join(lines, "\n") +} + // sourceLines returns the source lines of rows lo to hi of the current // pane. It picks the side of each row as [model.target] does with pref. A // row with no source line gives its text on the screen. From e48f95fad414f603a852e1da4fe44a6f4169f54b Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 15:49:45 +0100 Subject: [PATCH 097/119] feat(tui): comment on rendered markdown and mark its changed blocks --- test/files_test.go | 25 ++++++++- tui/comment.go | 19 +++++-- tui/find.go | 12 ++++- tui/model.go | 3 +- tui/nav.go | 6 +-- tui/render.go | 124 ++++++++++++++++++++++++++++++++++++++++++--- tui/view.go | 41 ++++++++++++--- 7 files changed, 203 insertions(+), 27 deletions(-) diff --git a/test/files_test.go b/test/files_test.go index 34bbbdc..bf092cc 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -30,12 +30,33 @@ func TestFilesTab(t *testing.T) { } // TestMarkdownSetting checks that markdown_view shows rendered markdown -// at the start. +// at the start. As in herdr-reviewr, a changed block of rendered markdown +// has the bar, and a comment on it is on all the lines of the block. func TestMarkdownSetting(t *testing.T) { - tm := start(t, newRepo(t), opts{args: []string{"-config", `{"markdown_view": "rendered"}`}}) + repo := newRepo(t) + testgit.WriteFile(t, repo, "README.md", "# Title\n\nSome text.\n\nNew text\non two lines.\n") + bin := clipboard(t) + tm := start(t, repo, opts{path: bin, env: clipEnv, args: []string{ + "-config", `{"markdown_view": "rendered"}`, + }}) tm.keys("2", "tab", "j", "j", "j") tm.waitFor("Some text.") tm.waitGone("# Title") + tm.keys("1", "tab") + tm.waitFor("Some text.") + tm.waitUntil(func(s string) bool { + return sameLine(s, "▌", "New text on two lines.") && !sameLine(s, "▌", "Some text.") + }, "mark the changed block") + tm.keys(":", "6", "enter") + tm.waitCursor("New text on two lines.") + tm.keys("c") + tm.typed("hi") + tm.keys("enter") + tm.waitFor("💬 hi") + tm.keys("y") + waitFile(t, filepath.Join(bin, "clip"), func(s string) bool { + return s == "README.md:5-6\n+New text\n+on two lines.\nhi" + }) } // TestSearch checks that / finds files by name and lines by code, shows a diff --git a/tui/comment.go b/tui/comment.go index 4c40c25..00e8aff 100644 --- a/tui/comment.go +++ b/tui/comment.go @@ -108,7 +108,7 @@ func (m *model) commentAtCursor() *diff.Comment { if t == nil { return nil } - return m.comments.At(m.anchor(), p.path, t.side, t.line) + return m.commentOn(p.cur, t) } // selection returns the first and the last row of the visual selection. @@ -120,6 +120,20 @@ func (p *pane) selection() (lo, hi int) { return p.span(p.anchor, p.cur) } +// selectedRows returns the source rows of the selection. In rendered +// markdown, they are all the rows of the selected blocks, with the +// deleted lines between them. +func (p *pane) selectedRows() []diff.Row { + lo, hi := p.selection() + if p.src == nil { + return p.rows[lo : hi+1] + } + first, last := p.rows[p.head(lo)].New, p.rows[hi].New + i := slices.IndexFunc(p.src, func(r diff.Row) bool { return r.New == first }) + j := slices.IndexFunc(p.src, func(r diff.Row) bool { return r.New == last }) + return p.src[i : j+1] +} + // span returns the first and the last row of the lines between rows a and // b, in either order. func (p *pane) span(a, b int) (lo, hi int) { @@ -134,11 +148,10 @@ func (m *model) startComment(pref diff.Side) tea.Cmd { if t == nil { return nil } - lo, hi := p.selection() c := diff.NewComment( p.path, t.side, - p.rows[lo:hi+1], + p.selectedRows(), m.contentFor(p.path, diff.SideOld), m.contentFor(p.path, diff.SideNew), ) diff --git a/tui/find.go b/tui/find.go index 0f87d08..0228f88 100644 --- a/tui/find.go +++ b/tui/find.go @@ -2,6 +2,7 @@ package tui import ( "fmt" + "slices" "strconv" "strings" @@ -45,8 +46,8 @@ func (m *model) findable() bool { } // hasContent reports whether row i of p shows text that a find can match. -// A note has no such text. A row of rendered markdown has no line, so -// its text is the rendered line. +// A note has no such text. The text of a row of rendered markdown is the +// rendered line. func (p *pane) hasContent(i int) bool { r := p.rows[i] return r.Old > 0 || r.New > 0 || r.Fold.Lines > 0 || (p.path == "" && i < len(p.lines)) @@ -140,6 +141,13 @@ func (m *model) findHits(q string) []findHit { var hits []findHit for i, r := range p.rows { switch { + case p.src != nil: + // A hit in rendered markdown is on its block, as the cursor is. + if !r.Continued && slices.ContainsFunc(p.lines[i:p.end(i)+1], func(l string) bool { + return search.Match(ansi.Strip(l), q) + }) { + hits = append(hits, findHit{i, 0}) + } case r.Continued: case r.Fold.Lines > 0: for n := r.Fold.New; n < r.Fold.New+r.Fold.Lines; n++ { diff --git a/tui/model.go b/tui/model.go index 9121b28..0336fa7 100644 --- a/tui/model.go +++ b/tui/model.go @@ -76,6 +76,7 @@ type pane struct { rows []diff.Row // rows[i] is the source line that lines[i] shows diff *diff.Diff // the render for mouse hits, or nil for Markdown or PR path string // the file of the rows, or "" for a pane with no comments + src []diff.Row // the source rows of rendered markdown, or nil cur int // the row of the cursor top int // the first row on the screen anchor int // the start of the visual selection, or -1 @@ -89,7 +90,7 @@ type pane struct { // set shows lines, and rows tells which source lines they show. It keeps // the cursor, the top, and the selection in the new lines. func (p *pane) set(lines []string, rows []diff.Row) { - p.lines, p.rows, p.diff = lines, rows, nil + p.lines, p.rows, p.diff, p.src = lines, rows, nil, nil p.cur = min(p.cur, max(len(lines)-1, 0)) p.top = min(p.top, max(len(lines)-1, 0)) if p.anchor >= len(rows) { // the file is shorter than before diff --git a/tui/nav.go b/tui/nav.go index 7fcb1c4..6f8ddbd 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -660,8 +660,8 @@ func (p *pane) rowOf(s diff.Side, line int) int { // text is digits or "$" for the last line. The line is clamped to the // file, so "0" is the first line. The line numbers are of the new side, // or of the old side if no row has a new line. gotoLine opens the fold -// that has the line. Without line numbers, for example in rendered -// markdown, text is the row on the screen. +// that has the line. In rendered markdown, the cursor goes to the block +// of the line. Without line numbers, text is the row on the screen. func (m *model) gotoLine(text string) { p := m.cur() n, ok := lineNumber(text) @@ -684,7 +684,7 @@ func (m *model) gotoLine(text string) { if m.tab == tabChanges { m.openFoldAt(side, n) } - p.cur = lineRow(p.rows, side, n) + p.cur = p.head(lineRow(p.rows, side, n)) } // lineRow returns the row of line on side. If no row has the line, it diff --git a/tui/render.go b/tui/render.go index 481f135..0ff8071 100644 --- a/tui/render.go +++ b/tui/render.go @@ -6,6 +6,7 @@ package tui import ( "cmp" "errors" + "iter" "slices" "strings" @@ -230,7 +231,9 @@ func (m *model) renderChanges() { } p.setNote(note) case m.isRendered(f): - m.setMarkdown(p, f.New) + all := func(diff.Fold) bool { return true } + d := diff.Render(f.Path, f.Old, f.New, diff.Options{Expanded: all, Cache: &m.cache}) + m.setMarkdown(p, f.New, d.Rows) default: if o := m.folds[f.Path]; o != nil && o.Old != f.oldHash { delete(m.folds, f.Path) @@ -292,7 +295,7 @@ func (m *model) refreshViewer() { p.path = "" p.set([]string{dimStyle.Render(" could not read this file")}, nil) case m.rendered && isMarkdown(path): - m.setMarkdown(p, content) + m.setMarkdown(p, content, nil) default: p.setDiff(diff.RenderFile(path, content, m.diffOptions(p.xoff))) } @@ -368,10 +371,115 @@ func (m *model) rendersNothing(src string) bool { return true } -// setMarkdown shows src as rendered markdown. The rendered lines take no -// comments. Press m to see the source. -func (m *model) setMarkdown(p *pane, src string) { - lines := renderMarkdown(m.markdown(m.codeWidth()-2), termtext.Plain(src)) - p.path = "" - p.set(lines, make([]diff.Row, len(lines))) +// setMarkdown shows src as rendered markdown, block by block, as +// herdr-reviewr does. rows are the source rows that the view stands for, +// with src as their new side. If rows is nil, no line of src changes. +// Each rendered line shows the first source line of its block. The blank +// line after a block shows its last source line. Thus a comment on a +// block covers all its lines. A block with a change has the bar. +func (m *model) setMarkdown(p *pane, src string, rows []diff.Row) { + lines := diff.Lines(src) + if rows == nil { + for n := range lines { + rows = append(rows, diff.Row{Kind: diff.KindEqual, New: n + 1}) + } + } + r := m.markdown(m.codeWidth() - 2) + var out []string + var outRows []diff.Row + blank := func(l string) bool { return strings.TrimSpace(ansi.Strip(l)) == "" } + for first, last := range markdownBlocks(lines) { + block := renderMarkdown(r, termtext.Plain(strings.Join(lines[first-1:last], "\n"))) + for len(block) > 0 && blank(block[0]) { + block = block[1:] + } + for len(block) > 0 && blank(block[len(block)-1]) { + block = block[:len(block)-1] + } + if len(block) == 0 { + continue + } + bar := changeBar(rows, first, last) + for i, l := range block { + if bar != "" { + l = bar + ansi.TruncateLeft(l, 1, "") + } + out = append(out, l) + outRows = append(outRows, diff.Row{Kind: diff.KindEqual, New: first, Continued: i > 0}) + } + out = append(out, "") + outRows = append(outRows, diff.Row{Kind: diff.KindEqual, New: last, Continued: true}) + } + p.set(out, outRows) + p.src = rows +} + +// markdownBlocks yields the first and the last line of each block of +// markdown lines, from 1. A blank line outside a code fence ends a block, +// unless the next line is indented, as in a list item. +func markdownBlocks(lines []string) iter.Seq2[int, int] { + return func(yield func(int, int) bool) { + first, last, fence := 0, 0, "" + for i, l := range lines { + if fence == "" { + if strings.TrimSpace(l) == "" { + continue + } + if first > 0 && last < i && !strings.HasPrefix(l, " ") && !strings.HasPrefix(l, "\t") { + if !yield(first, last) { + return + } + first = 0 + } + } + switch t := strings.TrimLeft(l, " "); { + case fence != "": + if strings.HasPrefix(t, fence) { + fence = "" + } + case strings.HasPrefix(t, "```"), strings.HasPrefix(t, "~~~"): + fence = t[:3] + } + if first == 0 { + first = i + 1 + } + last = i + 1 + } + if first > 0 { + yield(first, last) + } + } +} + +// changeBar returns the bar for the source lines first to last, or "" if +// rows do not change them. The bar is green if rows only add lines there. +// It is yellow if rows also change or delete a line there. +func changeBar(rows []diff.Row, first, last int) string { + added, changed, deleted := false, false, false + at := 0 // the last new line before the row + for _, r := range rows { + if r.Continued { + continue + } + if r.Kind == diff.KindDelete { + deleted = true + changed = changed || (at >= first && at < last) + continue + } + if r.New >= first && r.New <= last && r.Kind != diff.KindEqual { + added = true + changed = changed || deleted || r.Kind == diff.KindChange + } + deleted, at = false, r.New + if at >= last { + break + } + } + switch { + case changed: + return noteStyle.Render("▌") + case added: + return addStyle.Render("▌") + } + return "" } diff --git a/tui/view.go b/tui/view.go index e861e60..dfddb46 100644 --- a/tui/view.go +++ b/tui/view.go @@ -376,7 +376,7 @@ func (m *model) mainLines(h int, hits []findHit) (lines []string, rowAt []int) { t := m.target(i, diff.SideNew) add(m.rowMark(i, t, lo, hi, marked[i])+p.lines[i], i) if t != nil && p.end(i) == i { - addBelow(m.commentsBelow(t)) + addBelow(m.commentsBelow(i, t)) } if m.mode == modeComment && i == p.end(p.cur) { addBelow(m.commentBox()) @@ -431,18 +431,43 @@ func (m *model) rowMark(i int, t *targetLine, lo, hi int, hit bool) string { case t == nil || p.cont(i): return commentMark(nil) } - return commentMark(m.comments.At(m.anchor(), p.path, t.side, t.line)) + return commentMark(m.commentOn(i, t)) +} + +// commentOn returns a comment on row i, which shows line t, or nil. In +// rendered markdown, it is a comment on a line of the block of row i. +func (m *model) commentOn(i int, t *targetLine) *diff.Comment { + p := m.cur() + first, last := t.line, t.line + if p.src != nil { + first, last = p.rows[p.head(i)].New, p.rows[p.end(i)].New + } + for line := first; line <= last; line++ { + if c := m.comments.At(m.anchor(), p.path, t.side, line); c != nil { + return c + } + } + return nil } // commentsBelow returns the lines of the comments whose range ends on -// line t. The comment that the box edits does not show. -func (m *model) commentsBelow(t *targetLine) []string { +// row i, which shows line t. In rendered markdown, they are the comments +// that end in the block of row i. The comment that the box edits does not +// show. +func (m *model) commentsBelow(i int, t *targetLine) []string { + p := m.cur() + first := t.line + if p.src != nil { + first = p.rows[p.head(i)].New + } var out []string - for _, c := range m.comments.EndingAt(m.anchor(), m.cur().path, t.side, t.line) { - if m.mode == modeComment && c.ID == m.draft.editID { - continue + for line := first; line <= t.line; line++ { + for _, c := range m.comments.EndingAt(m.anchor(), p.path, t.side, line) { + if m.mode == modeComment && c.ID == m.draft.editID { + continue + } + out = append(out, m.commentLines(c)...) } - out = append(out, m.commentLines(c)...) } return out } From 3ffb7dfc2a9fc8a17ec9a8978ac566cc1c595409 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 15:52:40 +0100 Subject: [PATCH 098/119] fix(tui): name the fold hint expand fold, as herdr-reviewr does --- test/changes_test.go | 4 +++- tui/keys.go | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/test/changes_test.go b/test/changes_test.go index 598ef21..a717c51 100644 --- a/test/changes_test.go +++ b/test/changes_test.go @@ -19,7 +19,9 @@ func TestChanges(t *testing.T) { "return 1", "x := 2", "not in Rex") tm.keys("f") tm.waitFor("first", "last", "⋯ 32 unmodified lines") - tm.keys("j", "j", "j", "j", "j", "j", "right") + tm.keys("j", "j", "j", "j", "j", "j") + tm.waitFor("→ expand fold") + tm.keys("right") tm.waitFor("line 20") tm.waitGone("unmodified lines") tm.keys("F") diff --git a/tui/keys.go b/tui/keys.go index 8df4e7f..03fde7d 100644 --- a/tui/keys.go +++ b/tui/keys.go @@ -370,7 +370,7 @@ func (h helpKeys) ShortHelp() []key.Binding { return []key.Binding{k.Down, k.OpenPR, k.Refresh, k.TabChanges, k.Keys, k.Quit} case h.atFold: return []key.Binding{ - hint(k.Expand, firstKey(k.Expand), "show lines"), + hint(k.Expand, firstKey(k.Expand), "expand fold"), k.Comment, k.Send, k.NextHunk, k.Keys, k.Quit, } } From 5370d287d8d3548d23ef9cb5b30961b2d6a9de55 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 15:57:33 +0100 Subject: [PATCH 099/119] fix(tui): fold nested
      blocks on the PR tab --- test/files_test.go | 7 ++++--- tui/pr.go | 31 ++++++++++++++++++++++--------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/test/files_test.go b/test/files_test.go index bf092cc..af476c4 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -144,7 +144,7 @@ func TestPR(t *testing.T) { {"number": 7, "title": "Add b", "state": "OPEN", "isDraft": false, "url": "${PR_URL:-https://github.com/o/r/pull/7}", "body": "The body of the PR. See [the docs](https://example.com/docs).", "author": {"login": "ann"}, "headRefName": "feat", "baseRefName": "main", - "comments": [{"author": {"login": "bob"}, "body": "Looks good.\n\n
      The logs\n\nA hidden line.\n\n
      ", + "comments": [{"author": {"login": "bob"}, "body": "Looks good.\n\n
      The logs\n\nA hidden line.\n\n
      Inner\n\nDeep.\n\n
      \n\nAfter inner.\n\n
      ", "createdAt": "` + created + `"}], "statusCheckRollup": [{"name": "test", "conclusion": "SUCCESS"}, {"name": "lint", "conclusion": "FAILURE"}]} @@ -158,11 +158,12 @@ EOF tm.waitFor("Add b #7", "● open", "feat → main", "by ann", "checks: ✓ 1 ✗ 1", "✗ lint", "The body of the PR.", "bob 3h", "Looks good.", "▸ The logs") - if s := tm.waitFor("▸ The logs"); strings.Contains(s, "A hidden line.") { + if s := tm.waitFor("▸ The logs"); strings.Contains(s, "A hidden line.") || + strings.Contains(s, "After inner.") { t.Errorf("a closed details block shows its body. The screen shows:\n%s", s) } tm.keys("right") - tm.waitFor("▾ The logs", "A hidden line.") + tm.waitFor("▾ The logs", "A hidden line.", "▾ Inner", "Deep.", "After inner.") tm.keys("left") tm.waitFor("▸ The logs") tm.waitGone("A hidden line.") diff --git a/tui/pr.go b/tui/pr.go index 4a89a49..2e65036 100644 --- a/tui/pr.go +++ b/tui/pr.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "regexp" + "slices" "strings" "time" @@ -168,21 +169,33 @@ func (m *model) renderPR() { } // detailsRE matches a
      block with its summary and its body. -var detailsRE = regexp.MustCompile( - `(?is)]*>\s*]*>(.*?)(.*?)
      `) +// detailsOpenRE matches the start of a block. +var ( + detailsRE = regexp.MustCompile( + `(?is)\A]*>\s*]*>(.*?)(.*?)
      `) + detailsOpenRE = regexp.MustCompile(`(?i)]*>`) +) // details returns src with each
      block as its summary line, as // herdr-reviewr shows it. The line starts with ▸ for a closed block, and // with ▾ for an open block. The body of an open block follows the line. +// The last block is done first. Thus an inner block is done before the +// block that holds it. func (m *model) details(src string) string { - return detailsRE.ReplaceAllStringFunc(src, func(b string) string { - sub := detailsRE.FindStringSubmatch(b) - summary := strings.Join(strings.Fields(sub[1]), " ") - if !m.prDetails { - return "\n\n▸ " + summary + "\n\n" + for _, o := range slices.Backward(detailsOpenRE.FindAllStringIndex(src, -1)) { + sub := detailsRE.FindStringSubmatchIndex(src[o[0]:]) + if sub == nil { + continue + } + b := src[o[0]:] + summary := strings.Join(strings.Fields(b[sub[2]:sub[3]]), " ") + block := "\n\n▸ " + summary + "\n\n" + if m.prDetails { + block = "\n\n▾ " + summary + "\n\n" + b[sub[4]:sub[5]] + "\n\n" } - return "\n\n▾ " + summary + "\n\n" + sub[2] + "\n\n" - }) + src = src[:o[0]] + block + b[sub[1]:] + } + return src } // age returns the time from when to now, as herdr-reviewr shows it, for From 685d4e074d9297dbdef090dc44eb67b249ea5884 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 16:04:53 +0100 Subject: [PATCH 100/119] refactor(tui): check bidi marks of a URL with unicode.Bidi_Control --- tui/editor.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tui/editor.go b/tui/editor.go index e1f6ef0..a7a7ba6 100644 --- a/tui/editor.go +++ b/tui/editor.go @@ -169,8 +169,7 @@ func isWebURL(url string) bool { web := len(url) > len("http://") && strings.HasPrefix(lower, "http://") || len(url) > len("https://") && strings.HasPrefix(lower, "https://") return web && !strings.ContainsFunc(url, func(r rune) bool { - return unicode.IsControl(r) || r >= '\u202a' && r <= '\u202e' || - r >= '\u2066' && r <= '\u2069' || r == '\u200e' || r == '\u200f' + return unicode.IsControl(r) || unicode.Is(unicode.Bidi_Control, r) }) } From 76c12bb55eddd752396a1917f57a39c7c384b6bd Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 16:26:26 +0100 Subject: [PATCH 101/119] fix(vcs,diffview): skip a dangling origin/HEAD, name an unborn branch, colour an added script --- internal/diffview/highlight.go | 10 ++++++---- vcs/hostile_test.go | 5 ++++- vcs/refs.go | 16 +++++++++++----- vcs/repo_test.go | 12 +++++++++++- 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/internal/diffview/highlight.go b/internal/diffview/highlight.go index 0048f31..fff826f 100644 --- a/internal/diffview/highlight.go +++ b/internal/diffview/highlight.go @@ -3,6 +3,7 @@ package diffview import ( + "cmp" "image/color" "io" "strings" @@ -99,12 +100,13 @@ func processChromaValue(value string) string { return Escape(strings.TrimRight(value, "\n")) } -// chromaLexer returns the lexer of the old file, and keeps it in the -// cache. +// chromaLexer returns the lexer of the old file, or of the new file if +// the old file is empty, and keeps it in the cache. func (v *View) chromaLexer() chroma.Lexer { lx := &v.cache.lexer - if lx.l == nil || lx.path != v.path || lx.content != v.before { - lx.path, lx.content = v.path, v.before + content := cmp.Or(v.before, v.after) + if lx.l == nil || lx.path != v.path || lx.content != content { + lx.path, lx.content = v.path, content lx.l = Lexer(lx.path, lx.content) } return lx.l diff --git a/vcs/hostile_test.go b/vcs/hostile_test.go index 041ee18..8c9cd62 100644 --- a/vcs/hostile_test.go +++ b/vcs/hostile_test.go @@ -246,7 +246,7 @@ func TestGitWorktree(t *testing.T) { } } -// TestDetachedHead checks Diff and Commits when HEAD is detached. +// TestDetachedHead checks Diff, Commits, and Branch when HEAD is detached. func TestDetachedHead(t *testing.T) { t.Parallel() r, dir := newRepo(t) @@ -259,6 +259,9 @@ func TestDetachedHead(t *testing.T) { if cs, err := r.Commits(ctx, ""); err != nil || len(cs) != 1 || cs[0].Subject != "init" { t.Errorf("Commits = %+v, %v, want init", cs, err) } + if b, err := r.Branch(ctx); err != nil || b != "HEAD" { + t.Errorf("Branch = %q, %v, want HEAD, nil", b, err) + } } // TestGrepIsLiteral checks that Grep finds the text, and does not read it diff --git a/vcs/refs.go b/vcs/refs.go index dce5536..c77a5d0 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -101,12 +101,15 @@ func (r *Repo) Branches(ctx context.Context) ([]string, error) { } // DefaultBase returns the default branch of the repository. This is the -// target of origin/HEAD, or the first that exists of main, master, trunk, +// target of origin/HEAD if it exists, or the first that exists of main, master, trunk, // origin/main, and origin/master. If there is none, it returns "HEAD". func (r *Repo) DefaultBase(ctx context.Context) string { - ref, err := r.run(ctx, nil, "symbolic-ref", "--short", "refs/remotes/origin/HEAD") - if err == nil { - return strings.TrimSpace(ref) + if ref, err := r.run(ctx, nil, "symbolic-ref", "--short", "refs/remotes/origin/HEAD"); err == nil { + // fetch --prune can leave the symbolic ref without a target. + ref = strings.TrimSpace(ref) + if _, err := r.Resolve(ctx, ref); err == nil { + return ref + } } for _, b := range []string{"main", "master", "trunk", "origin/main", "origin/master"} { if _, err := r.Resolve(ctx, b); err == nil { @@ -119,7 +122,10 @@ func (r *Repo) DefaultBase(ctx context.Context) string { // Branch returns the name of the branch that HEAD points to. With a // detached HEAD, it returns "HEAD". func (r *Repo) Branch(ctx context.Context) (string, error) { - out, err := r.run(ctx, nil, "rev-parse", "--abbrev-ref", "HEAD") + out, err := r.run(ctx, nil, "symbolic-ref", "--quiet", "--short", "HEAD") + if exitedOne(err) { + return "HEAD", nil + } if err != nil { return "", err } diff --git a/vcs/repo_test.go b/vcs/repo_test.go index 1ab2232..b98804d 100644 --- a/vcs/repo_test.go +++ b/vcs/repo_test.go @@ -457,7 +457,7 @@ func TestOwnsWithoutGit(t *testing.T) { } } -// TestRefs checks Branches, DefaultBase, and Resolve. +// TestRefs checks Branch, Branches, DefaultBase, and Resolve. func TestRefs(t *testing.T) { t.Parallel() r, dir := newRepo(t) @@ -489,6 +489,16 @@ func TestRefs(t *testing.T) { if _, err := r.Resolve(ctx, "nosuchref"); err == nil { t.Error("Resolve(nosuchref): no error, want an error") } + testgit.Git(t, dir, "symbolic-ref", "refs/remotes/origin/HEAD", "refs/remotes/origin/gone") + if b := r.DefaultBase(ctx); b != "main" { + t.Errorf("DefaultBase with a dangling origin/HEAD = %q, want main", b) + } + + empty := t.TempDir() + testgit.InitRepo(t, empty) + if b, err := open(t, empty).Branch(ctx); err != nil || b != "main" { + t.Errorf("Branch with no commit = %q, %v, want main, nil", b, err) + } } // TestEditor checks that Editor returns core.editor, or "" if it is not set. From 86514ee3ef191f875a722ba8765d07b61d158d1d Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 16:26:26 +0100 Subject: [PATCH 102/119] refactor: turn takes plain states, unexport shellQuote, fake clock in TestWatch --- internal/editor/editor.go | 12 +++--- internal/turn/turn.go | 19 ++++----- internal/turn/turn_test.go | 21 +++++----- rex/rex_test.go | 83 ++++++++++++++++++++------------------ tui/turn.go | 4 +- 5 files changed, 70 insertions(+), 69 deletions(-) diff --git a/internal/editor/editor.go b/internal/editor/editor.go index 9398141..235e8aa 100644 --- a/internal/editor/editor.go +++ b/internal/editor/editor.go @@ -55,10 +55,10 @@ func Resolve(s Sources, file string, line int) (Command, error) { // {file}, and line in place of {line}. Without {file}, file goes at the // end. func fromTemplate(template, file string, line int) Command { - r := strings.NewReplacer("{file}", ShellQuote(file), "{line}", strconv.Itoa(line)) + r := strings.NewReplacer("{file}", shellQuote(file), "{line}", strconv.Itoa(line)) script := r.Replace(template) if !strings.Contains(template, "{file}") { - script += " " + ShellQuote(file) + script += " " + shellQuote(file) } return Command{Script: script, Program: program(template), Window: dialectOf(template).window} } @@ -68,8 +68,8 @@ func fromTemplate(template, file string, line int) Command { // adds file and line in the form that the editor expects. func fromEditor(command, file string, line int) Command { d := dialectOf(command) - n, f := strconv.Itoa(line), ShellQuote(file) - at := ShellQuote(file + ":" + n) + n, f := strconv.Itoa(line), shellQuote(file) + at := shellQuote(file + ":" + n) var args string switch d.line { case argNone: @@ -86,8 +86,8 @@ func fromEditor(command, file string, line int) Command { return Command{Script: command + " " + args, Program: program(command), Window: d.window} } -// ShellQuote quotes s as one word for sh. -func ShellQuote(s string) string { return "'" + strings.ReplaceAll(s, "'", `'\''`) + "'" } +// shellQuote quotes s as one word for sh. +func shellQuote(s string) string { return "'" + strings.ReplaceAll(s, "'", `'\''`) + "'" } // lineArg is how an editor takes the line to open at. type lineArg int diff --git a/internal/turn/turn.go b/internal/turn/turn.go index 60dc7fd..d925308 100644 --- a/internal/turn/turn.go +++ b/internal/turn/turn.go @@ -4,11 +4,7 @@ // come from herdr-reviewr. package turn -import ( - "slices" - - "github.com/rednafi/rexdiff/rex" -) +import "slices" // state is the work state of a repository. fold makes it from the states // of all the agents in the repository. @@ -26,15 +22,15 @@ const ( // rests reports whether s is a state between turns. A blocked agent and an // unknown state are in the middle of a turn. -func rests(s rex.State) bool { return s == rex.StateIdle || s == rex.StateDone } +func rests(s string) bool { return s == "idle" || s == "done" } // fold returns the state of a repository whose agents are in the states // states. One working agent makes the repository work. -func fold(states ...rex.State) state { - if slices.Contains(states, rex.StateWorking) { +func fold(states ...string) state { + if slices.Contains(states, "working") { return stateWorking } - if slices.ContainsFunc(states, func(s rex.State) bool { return !rests(s) }) { + if slices.ContainsFunc(states, func(s string) bool { return !rests(s) }) { return stateHeld } return stateResting @@ -53,9 +49,10 @@ type Tracker struct { } // Observe takes the states of all the agents in the repository at one -// time. A turn starts when one agent works after all rest. A turn ends +// time. The states are those of the OSC 7501 protocol, for example +// "idle". A turn starts when one agent works after all rest. A turn ends // when all rest after work, also through a prompt. -func (t *Tracker) Observe(states ...rex.State) (started, ended bool) { +func (t *Tracker) Observe(states ...string) (started, ended bool) { s := fold(states...) started = s == stateWorking && t.prevResting ended = t.worked && s == stateResting diff --git a/internal/turn/turn_test.go b/internal/turn/turn_test.go index ec090b8..843757e 100644 --- a/internal/turn/turn_test.go +++ b/internal/turn/turn_test.go @@ -4,22 +4,21 @@ import ( "testing" "github.com/rednafi/rexdiff/internal/turn" - "github.com/rednafi/rexdiff/rex" ) // The tests come from turn.rs of herdr-reviewr. // The states of one agent that give each state of a repository. var ( - resting = []rex.State{rex.StateIdle} - working = []rex.State{rex.StateWorking} - held = []rex.State{rex.StateBlocked} + resting = []string{"idle"} + working = []string{"working"} + held = []string{"blocked"} ) // step is one call to a Tracker and the edges that it gives. With gap, // the step calls Gap and not Observe. type step struct { - states []rex.State + states []string gap bool started, ended bool } @@ -30,19 +29,19 @@ func TestFold(t *testing.T) { t.Parallel() tests := []struct { name string - states []rex.State + states []string // starts tells that the states start a turn after a rest. ends // tells that they end a turn after work. A held state does neither. starts, ends bool }{ // No agent rests, so a fresh pane tracks the next turn it sees. {"no agent", nil, false, true}, - {"idle and working", []rex.State{rex.StateIdle, rex.StateWorking}, true, false}, - {"blocked and working", []rex.State{rex.StateBlocked, rex.StateWorking}, true, false}, - {"idle and done", []rex.State{rex.StateIdle, rex.StateDone}, false, true}, - {"blocked and idle", []rex.State{rex.StateBlocked, rex.StateIdle}, false, false}, + {"idle and working", []string{"idle", "working"}, true, false}, + {"blocked and working", []string{"blocked", "working"}, true, false}, + {"idle and done", []string{"idle", "done"}, false, true}, + {"blocked and idle", []string{"blocked", "idle"}, false, false}, // An unknown state never rests, so it starts no turn. - {"unknown", []rex.State{"compacting"}, false, false}, + {"unknown", []string{"compacting"}, false, false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/rex/rex_test.go b/rex/rex_test.go index 8a0f444..93db25a 100644 --- a/rex/rex_test.go +++ b/rex/rex_test.go @@ -11,6 +11,7 @@ import ( "slices" "strings" "testing" + "testing/synctest" "time" "github.com/rednafi/rexdiff/internal/testgit" @@ -175,48 +176,52 @@ func blockEvent(block, name, payload string) string { // again. func TestWatch(t *testing.T) { t.Parallel() - c, dir := fakeRex(t) - events := strings.Join([]string{ - blockEvent("block:pi", "program_status_changed", `{"id":"",`+ - `"record":{"state":"working","kind":"","app":"x","effective_app":"pi",`+ - `"updated_at":"2026-10-25T21:11:03.5Z"},`+ - `"reason":"report"}`), - blockEvent("block:pi", "program_status_changed", - `{"id":"sub","record":{"state":"idle"}}`), - `not json`, - // The removal of a sub record is not a change of the agent. - blockEvent("block:pi", "program_status_removed", - `{"ids":["sub"],"reason":"clear"}`), - blockEvent("block:pi", "program_status_removed", - `{"ids":[""],"reason":"clear"}`), - `{"type":"session_event","payload":{"event":{"type":"block_closed",` + - `"payload":{"block_id":"block:pi"}}}}`, - }, "\n") - testgit.WriteFile(t, dir, "events", events+"\n") + // synctest has a fake clock. Thus the test does not wait 2 seconds + // before rex starts again. + synctest.Test(t, func(t *testing.T) { + c, dir := fakeRex(t) + events := strings.Join([]string{ + blockEvent("block:pi", "program_status_changed", `{"id":"",`+ + `"record":{"state":"working","kind":"","app":"x","effective_app":"pi",`+ + `"updated_at":"2026-10-25T21:11:03.5Z"},`+ + `"reason":"report"}`), + blockEvent("block:pi", "program_status_changed", + `{"id":"sub","record":{"state":"idle"}}`), + `not json`, + // The removal of a sub record is not a change of the agent. + blockEvent("block:pi", "program_status_removed", + `{"ids":["sub"],"reason":"clear"}`), + blockEvent("block:pi", "program_status_removed", + `{"ids":[""],"reason":"clear"}`), + `{"type":"session_event","payload":{"event":{"type":"block_closed",` + + `"payload":{"block_id":"block:pi"}}}}`, + }, "\n") + testgit.WriteFile(t, dir, "events", events+"\n") - at := time.Date(2026, 10, 25, 21, 11, 3, 5e8, time.UTC) - once := []rex.Event{ - {Block: "block:pi", Status: rex.Status{App: "pi", State: rex.StateWorking, At: at}}, - {Block: "block:pi"}, - {Block: "block:pi", Closed: true}, - } - want := slices.Concat(once, []rex.Event{{Reconnect: true}}, once) - // Stop Watch when it reports all the events. - ctx, cancel := context.WithCancelCause(t.Context()) - defer cancel(fmt.Errorf("test: done: %w", context.Canceled)) - errAll := errors.New("the test has all the events") - var got []rex.Event - err := c.Watch(ctx, func(e rex.Event) { - if got = append(got, e); len(got) == len(want) { - cancel(errAll) + at := time.Date(2026, 10, 25, 21, 11, 3, 5e8, time.UTC) + once := []rex.Event{ + {Block: "block:pi", Status: rex.Status{App: "pi", State: rex.StateWorking, At: at}}, + {Block: "block:pi"}, + {Block: "block:pi", Closed: true}, + } + want := slices.Concat(once, []rex.Event{{Reconnect: true}}, once) + // Stop Watch when it reports all the events. + ctx, cancel := context.WithCancelCause(t.Context()) + defer cancel(fmt.Errorf("test: done: %w", context.Canceled)) + errAll := errors.New("the test has all the events") + var got []rex.Event + err := c.Watch(ctx, func(e rex.Event) { + if got = append(got, e); len(got) == len(want) { + cancel(errAll) + } + }) + if !errors.Is(err, errAll) { + t.Errorf("Watch = %v, want the cause %v", err, errAll) + } + if !slices.Equal(got, want) { + t.Errorf("events = \n%+v\nwant:\n%+v", got, want) } }) - if !errors.Is(err, errAll) { - t.Errorf("Watch = %v, want the cause %v", err, errAll) - } - if !slices.Equal(got, want) { - t.Errorf("events = \n%+v\nwant:\n%+v", got, want) - } } // TestNew checks that New returns nil outside Rex. The client of the diff --git a/tui/turn.go b/tui/turn.go index 5af11fd..4f45951 100644 --- a/tui/turn.go +++ b/tui/turn.go @@ -125,9 +125,9 @@ func (m *model) observeTurn() tea.Cmd { m.reload() // show the new wait message } } - states := make([]rex.State, len(ms)) + states := make([]string, len(ms)) for i, a := range ms { - states[i] = a.state + states[i] = string(a.state) } started, ended := m.tracker.Observe(states...) if started { From c2115da25ccbd648c823a9e367023f342aa63dd3 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 16:26:26 +0100 Subject: [PATCH 103/119] docs(vcs,update): name FileStatus and PRState, explain Skip and the proxy variables --- update/update.go | 3 ++- vcs/pr.go | 2 +- vcs/repo.go | 8 +++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/update/update.go b/update/update.go index 96a5198..787e500 100644 --- a/update/update.go +++ b/update/update.go @@ -8,7 +8,8 @@ // in the same process, so the terminal and the process ID stay. // // The caller gives the environment as a value, as in [exec.Cmd.Env]. The -// package does not read the environment of the process. +// package does not read the environment of the process. But net/http reads +// the proxy variables of the process, for example HTTPS_PROXY. package update import ( diff --git a/vcs/pr.go b/vcs/pr.go index 04113ae..73f7fca 100644 --- a/vcs/pr.go +++ b/vcs/pr.go @@ -69,7 +69,7 @@ const ( // PRState is the state of a pull request. It is the same for each forge. type PRState string -// The values of State. +// The values of PRState. const ( PROpen PRState = "open" PRDraft PRState = "draft" // open, but not ready for review diff --git a/vcs/repo.go b/vcs/repo.go index 1d8350f..b9e2c6d 100644 --- a/vcs/repo.go +++ b/vcs/repo.go @@ -361,7 +361,7 @@ func (r *Repo) copyIndex(dst string) error { // uses, for example 'A'. type FileStatus byte -// The values of Status that [Repo.Diff] returns. +// The values of FileStatus that [Repo.Diff] returns. const ( StatusAdded FileStatus = 'A' StatusModified FileStatus = 'M' @@ -382,8 +382,10 @@ type File struct { From string // for a rename, the old path Status FileStatus Old, New string - // Skip is ErrBinary if a version of the file has a NUL byte. Else it - // is ErrTooBig if the two versions together are too big, or nil. + // Skip is ErrBinary if a version of the file has a NUL byte. It is + // ErrTooBig if the two versions together are too big. Diff does not + // read a version larger than 2,000,000 bytes. Thus that version gives + // ErrTooBig, also if it is binary. Else Skip is nil. Skip error } From f92b9174590e05199141882ab95acb0e992036fb Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 16:47:37 +0100 Subject: [PATCH 104/119] fix(tui): take the turn snapshots in commands --- tui/model.go | 9 ++- tui/turn.go | 176 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 112 insertions(+), 73 deletions(-) diff --git a/tui/model.go b/tui/model.go index 0336fa7..bec3029 100644 --- a/tui/model.go +++ b/tui/model.go @@ -233,6 +233,9 @@ type model struct { loads reloads // turnChecking is true while a check of the pending turn runs. turnChecking bool + // turnGen counts the starts and the ends of the turns. A snapshot + // from before the last start or end is stale. + turnGen int tab tab scope Scope @@ -785,8 +788,10 @@ func (m *model) handleMsg(msg tea.Msg) tea.Cmd { switch msg := msg.(type) { case changesMsg: m.onChanges(msg) + case turnStartMsg: + cmd = m.onTurnStart(msg) case turnCheckMsg: - m.onTurnCheck(msg) + cmd = m.onTurnCheck(msg) case tea.WindowSizeMsg: m.click = clickChain{} m.w, m.h, m.sized = msg.Width, msg.Height, true @@ -999,7 +1004,7 @@ func (m *model) onTick() tea.Cmd { ch := m.watchChanges() var cmds []tea.Cmd if ch.Files && m.pending != nil { - cmds = append(cmds, m.checkTurnLater()) + cmds = append(cmds, m.checkTurnLater(false)) } m.reloadOwed = m.reloadOwed || ch.Files || ch.Refs m.filesOwed = m.filesOwed || ch.Files diff --git a/tui/turn.go b/tui/turn.go index 4f45951..209a8cf 100644 --- a/tui/turn.go +++ b/tui/turn.go @@ -131,10 +131,10 @@ func (m *model) observeTurn() tea.Cmd { } started, ended := m.tracker.Observe(states...) if started { - m.startTurn(ms) + return m.startTurn(ms) } if ended { - m.endTurn() + return m.endTurn() } return nil } @@ -155,50 +155,74 @@ func (m *model) turnWaitMessage() string { // already write, as in herdr-reviewr. const raceBefore = time.Second -// startTurn takes a snapshot of the working tree at the start of a turn -// of the members ms. The turn stays pending until it changes a file. As in -// herdr-reviewr, a write from raceBefore the start to the snapshot can be -// in the snapshot. Then the turn is not known, and the scope says so. -func (m *model) startTurn(ms []member) { +// startTurn returns a command that takes a snapshot of the working tree +// at the start of a turn of the members ms. The snapshot comes as a +// turnStartMsg. +func (m *model) startTurn(ms []member) tea.Cmd { m.pending = nil - ctx, cancel := context.WithCancelCause(m.ctx) - ctx, cancelTimeout := context.WithTimeoutCause(ctx, reloadTimeout, - fmt.Errorf("turn snapshot: %v timeout: %w", reloadTimeout, context.DeadlineExceeded)) - defer cancelTimeout() - defer cancel(fmt.Errorf("turn snapshot: done: %w", context.Canceled)) - tree, err := m.repo.Snapshot(ctx) - if err != nil { - m.log.Warn("turn snapshot failed", "err", err) - return - } - snapped := time.Now() + m.turnGen++ i := slices.IndexFunc(ms, func(a member) bool { return a.state == rex.StateWorking }) + gen, a, repo, ctx := m.turnGen, ms[i], m.repo, m.ctx + return func() tea.Msg { + ctx, cancel := context.WithCancelCause(ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, reloadTimeout, + fmt.Errorf("turn snapshot: %v timeout: %w", reloadTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("turn snapshot: done: %w", context.Canceled)) + tree, err := repo.Snapshot(ctx) + return turnStartMsg{gen: gen, agent: a, tree: tree, snapped: time.Now(), err: err} + } +} + +// turnStartMsg is the snapshot at the start of a turn. +type turnStartMsg struct { + gen int // the value of model.turnGen at the start + agent member // the first agent of the turn that works + tree string + snapped time.Time // the end of the snapshot + err error +} + +// onTurnStart makes the turn of msg pending. The turn stays pending until +// it changes a file. As in herdr-reviewr, a write from raceBefore the start +// to the snapshot can be in the snapshot. Then the turn is not known, and +// the scope says so. A start or an end after the start of msg drops msg. +func (m *model) onTurnStart(msg turnStartMsg) tea.Cmd { + if msg.gen != m.turnGen { + return nil + } + if msg.err != nil { + m.log.Warn("turn snapshot failed", "err", msg.err) + return nil + } + a := msg.agent if m.watch != nil { w := m.watch.LastWrite() - if !w.Before(ms[i].since.Add(-raceBefore)) && !w.After(snapped) { - m.log.Debug("turn raced", "block", ms[i].block, "write", w) - m.dropTurn() - return + if !w.Before(a.since.Add(-raceBefore)) && !w.After(msg.snapped) { + m.log.Debug("turn raced", "block", a.block, "write", w) + return m.dropTurn() } } - m.log.Debug("turn start", "block", ms[i].block, "tree", tree) + m.log.Debug("turn start", "block", a.block, "tree", msg.tree) m.pending = &turnState{ - app: ms[i].app, - tree: tree, + app: a.app, + tree: msg.tree, running: true, at: time.Now(), } + return nil } // checkTurnLater returns a command that takes a snapshot for the pending // turn. onTurnCheck makes the turn the last turn if the working tree -// differs from its start. -func (m *model) checkTurnLater() tea.Cmd { - if m.turnChecking { - return nil // one check at a time +// differs from its start. A check at the end of the turn always runs. +// Else one check runs at a time. +func (m *model) checkTurnLater(end bool) tea.Cmd { + if m.turnChecking && !end { + return nil } - m.turnChecking = true - p, repo, ctx := m.pending, m.repo, m.ctx + m.turnChecking = m.turnChecking || !end + p, gen, repo, ctx := m.pending, m.turnGen, m.repo, m.ctx return func() tea.Msg { ctx, cancel := context.WithCancelCause(ctx) ctx, cancelTimeout := context.WithTimeoutCause(ctx, reloadTimeout, @@ -206,76 +230,85 @@ func (m *model) checkTurnLater() tea.Cmd { defer cancelTimeout() defer cancel(fmt.Errorf("turn check: done: %w", context.Canceled)) tree, err := repo.Snapshot(ctx) - return turnCheckMsg{turn: p, tree: tree, err: err} + return turnCheckMsg{turn: p, gen: gen, end: end, tree: tree, err: err} } } // turnCheckMsg is a snapshot for the pending turn. type turnCheckMsg struct { turn *turnState + gen int // the value of model.turnGen at the check + end bool // the check is at the end of the turn tree string err error } -// onTurnCheck makes the turn of msg the last turn if it is still pending -// and the working tree differs from its start. -func (m *model) onTurnCheck(msg turnCheckMsg) { - m.turnChecking = false +// onTurnCheck makes the turn of msg the last turn if the working tree +// differs from its start. Before the end, the turn must still be pending. +// After the end, no new turn must start. Else the last turn stays. +func (m *model) onTurnCheck(msg turnCheckMsg) tea.Cmd { + if !msg.end { + m.turnChecking = false + } switch { case msg.err != nil: m.log.Warn("turn change check failed", "err", msg.err) - case msg.turn == m.pending && msg.tree != msg.turn.tree: - m.promote() - } -} - -// checkTurn makes the pending turn the last turn if the working tree -// differs from its start. Else the last turn stays. The end of a turn -// checks at once, before the turn stops being pending. -func (m *model) checkTurn() { - ctx, cancel := context.WithCancelCause(m.ctx) - ctx, cancelTimeout := context.WithTimeoutCause(ctx, reloadTimeout, - fmt.Errorf("turn check: %v timeout: %w", reloadTimeout, context.DeadlineExceeded)) - defer cancelTimeout() - defer cancel(fmt.Errorf("turn check: done: %w", context.Canceled)) - tree, err := m.repo.Snapshot(ctx) - if err != nil { - m.log.Warn("turn change check failed", "err", err) - return - } - if tree != m.pending.tree { - m.promote() + case msg.tree == msg.turn.tree: + case msg.end && msg.gen == m.turnGen, !msg.end && msg.turn == m.pending: + return m.promote(msg.turn) } + return nil } // dropTurn forgets the last turn, because a new turn starts that is not -// known. -func (m *model) dropTurn() { +// known. It returns a command that deletes the saved tree. +func (m *model) dropTurn() tea.Cmd { m.turn, m.raced = nil, true - if err := m.repo.SaveTurn(m.ctx, ""); err != nil { - m.log.Warn("turn baseline ref delete failed", "err", err) - } if m.scope == ScopeLastTurn { m.reload() } + return m.saveTurn("") } -// promote makes the pending turn the last turn, and saves its tree. -func (m *model) promote() { - m.turn, m.pending, m.raced = m.pending, nil, false - if err := m.repo.SaveTurn(m.ctx, m.turn.tree); err != nil { - m.log.Warn("turn baseline ref write failed", "err", err) +// promote makes the turn t the last turn. It returns a command that saves +// its tree. +func (m *model) promote(t *turnState) tea.Cmd { + m.turn, m.raced = t, false + if m.pending == t { + m.pending = nil } if m.scope == ScopeLastTurn { m.reload() } + return m.saveTurn(t.tree) +} + +// saveTurn returns a command that saves tree as the tree of the last turn. +// An empty tree deletes the saved tree. +func (m *model) saveTurn(tree string) tea.Cmd { + repo, ctx, log := m.repo, m.ctx, m.log + return func() tea.Msg { + ctx, cancel := context.WithCancelCause(ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, reloadTimeout, + fmt.Errorf("turn save: %v timeout: %w", reloadTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("turn save: done: %w", context.Canceled)) + if err := repo.SaveTurn(ctx, tree); err != nil { + log.Warn("turn baseline ref write failed", "err", err) + } + return nil + } } -// endTurn ends the turn. A pending turn that changes the working tree -// becomes the last turn. After the end, a change is not from the turn. -func (m *model) endTurn() { +// endTurn ends the turn. It returns a command that checks the pending turn. +// The turn becomes the last turn if it changes the working tree. After the +// end, a change is not from the turn. +func (m *model) endTurn() tea.Cmd { + m.turnGen++ // a start that is not pending yet stays out + var cmd tea.Cmd if m.pending != nil { - m.checkTurn() + m.pending.running = false + cmd = m.checkTurnLater(true) m.pending = nil } if m.turn != nil { @@ -284,4 +317,5 @@ func (m *model) endTurn() { if m.scope == ScopeLastTurn { m.reload() } + return cmd } From 4f466a16154c7459ce1fe101d410d75426af7e1d Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 16:47:43 +0100 Subject: [PATCH 105/119] fix(tui): keep a comment that the user edits during a send --- test/comment_test.go | 19 +++++++++++++++++++ test/fake_test.go | 4 +++- tui/model.go | 2 +- tui/send.go | 45 +++++++++++++++++++++++--------------------- 4 files changed, 47 insertions(+), 23 deletions(-) diff --git a/test/comment_test.go b/test/comment_test.go index 7841528..61e50e4 100644 --- a/test/comment_test.go +++ b/test/comment_test.go @@ -1,9 +1,11 @@ package test import ( + "os" "path/filepath" "slices" "strings" + "syscall" "testing" "github.com/rednafi/rexdiff/internal/testgit" @@ -95,6 +97,7 @@ func TestCommentBox(t *testing.T) { // TestSend checks that s pastes the review into the agent and gives it // the focus. S does the same, and so does s in the question before a quit. +// A comment that the user edits during the send stays. func TestSend(t *testing.T) { repo := newRepo(t) rex := newRex(t, repo) @@ -113,6 +116,22 @@ func TestSend(t *testing.T) { `block.event {"block_id":"block:pi","event":{"type":"paste",`+ `"payload":{"text":"a.go:4 (removed)\n-\treturn 1\nhi s"}}}`, `session.focus_block {"block_id":"block:pi"}`) + gate := filepath.Join(rex.dir, "gate") + if err := syscall.Mkfifo(gate, 0o600); err != nil { + t.Fatal(err) + } + comment(tm, "hi") + tm.keys("s") + rex.expectCalls(t, `"payload":{"text":"a.go:4 (removed)\n-\treturn 1\nhi"}`) + tm.keys("l", "e", " ") + tm.typed("edit") + tm.keys("enter") + tm.waitFor("a.go:4 (removed) hi edit") + if err := os.WriteFile(gate, nil, 0o600); err != nil { + t.Fatal(err) + } + tm.keys("esc") + tm.waitFor("sent 1 comment to agent", "💬 hi edit") } // TestSendWithoutAgent checks that s outside Rex tells the user to copy. diff --git a/test/fake_test.go b/test/fake_test.go index 4992d6a..1c4259c 100644 --- a/test/fake_test.go +++ b/test/fake_test.go @@ -61,7 +61,8 @@ func newRepo(t *testing.T) string { // fakeRex is a rex for the session S. rexdiff runs in the block // block:self. The agents run in repo. The fake logs each call and prints // the output of a real rex from testdata/rex, with the values of the test. -// "rex events" prints the lines that the test adds. +// "rex events" prints the lines that the test adds. If the FIFO gate +// exists, a paste waits until the test writes to it. type fakeRex struct { dir string blocks []string // the JSON of each block @@ -79,6 +80,7 @@ case "$*" in "block call -s S -b "*" program_status") cat "$d/status.$6" ;; "block call -s S -b "*" process") cat "$d/process" ;; "block inspect "*) cat "$d/inspect.$3" ;; +"api call -s S block.event "*) if [ -p "$d/gate" ]; then cat "$d/gate" >/dev/null; fi ;; "events -s S --json") touch "$d/events"; exec tail -n +1 -f "$d/events" ;; esac `) diff --git a/tui/model.go b/tui/model.go index bec3029..fb1e6bb 100644 --- a/tui/model.go +++ b/tui/model.go @@ -410,7 +410,7 @@ type ( } sentMsg struct { agent rex.Agent - ids []int // the IDs of the sent comments + sent map[int]string // the texts of the sent comments, by ID err error } grepMsg struct { diff --git a/tui/send.go b/tui/send.go index 8787eeb..d4ad9db 100644 --- a/tui/send.go +++ b/tui/send.go @@ -158,13 +158,13 @@ func (m *model) keepAgents(agents []rex.Agent) { } } -// commentIDs returns the IDs of the comments. -func (m *model) commentIDs() []int { - var ids []int +// commentTexts returns the texts of the comments, by ID. +func (m *model) commentTexts() map[int]string { + texts := map[int]string{} for _, c := range m.comments.All() { - ids = append(ids, c.ID) + texts[c.ID] = c.Text } - return ids + return texts } // reviewText returns the text of the review that a send pastes. @@ -178,7 +178,7 @@ func (m *model) reviewText() string { func (m *model) deliver(a rex.Agent) tea.Cmd { m.sends++ c, ctx := m.rex, m.ctx - text, ids := m.reviewText(), m.commentIDs() + text, sent := m.reviewText(), m.commentTexts() focus := m.cfg.focusesAgent() return func() tea.Msg { ctx, cancel := context.WithCancelCause(ctx) @@ -204,22 +204,21 @@ func (m *model) deliver(a rex.Agent) tea.Cmd { // Ignore the error, because the paste works. _ = c.Focus(ctx, a.Block) } - return sentMsg{agent: a, ids: ids} + return sentMsg{agent: a, sent: sent} } } // onSent removes the sent comments if the send worked. The comments that -// the user adds or changes during the send stay. A saved edit gives a -// comment a new ID, and msg does not have that ID. +// the user adds or changes during the send stay. func (m *model) onSent(msg sentMsg) { m.sends-- if msg.err != nil { m.flashCopy(msg.err.Error()) return } - m.clearComments(msg.ids) + m.clearComments(msg.sent) m.lastSent = msg.agent.Block - sent := plural(len(msg.ids), "comment") + sent := plural(len(msg.sent), "comment") m.flash(fmt.Sprintf("sent %s to %s", sent, msg.agent.Name)) } @@ -251,20 +250,20 @@ func (m *model) copyComments() { m.flash("no comments yet") return } - ids := m.commentIDs() - m.copyText(m.reviewText(), "copied "+plural(len(ids), "comment"), ids) + texts := m.commentTexts() + m.copyText(m.reviewText(), "copied "+plural(len(texts), "comment"), texts) } // copyTimeout is the longest time of a copy. const copyTimeout = 2 * time.Second // copyText writes text to the clipboard. If the copy works, it removes -// the comments ids and shows done. As in herdr-reviewr, the copy runs +// the comments texts and shows done. As in herdr-reviewr, the copy runs // before the next frame, so two copies keep their order. A clipboard tool // that does not answer fails after copyTimeout. As in herdr-reviewr, the // message of a failure names only the fix that the user can make. The log // has the error. -func (m *model) copyText(text, done string, ids []int) { +func (m *model) copyText(text, done string, texts map[int]string) { ctx, cancel := context.WithCancelCause(m.ctx) ctx, cancelTimeout := context.WithTimeoutCause(ctx, copyTimeout, fmt.Errorf("copy: %v timeout: %w", copyTimeout, context.DeadlineExceeded)) @@ -278,7 +277,7 @@ func (m *model) copyText(text, done string, ids []int) { m.log.Warn("copy failed", "err", err) m.flash("copy failed") default: - m.clearComments(ids) + m.clearComments(texts) m.flash(done) } } @@ -288,11 +287,15 @@ func (m *model) inCommentList() bool { return m.mode == modeOverlay && m.overlay != nil && m.overlay.kind == overlayComments } -// clearComments removes the comments ids after a send or a copy. An open -// comment list shows the rest, or closes if no comment stays. -func (m *model) clearComments(ids []int) { - for _, id := range ids { - m.comments.Remove(id) +// clearComments removes the comments of texts after a send or a copy. A +// comment whose text is not the text in texts stays, because the user +// edits it during the send. An open comment list shows the rest, or +// closes if no comment stays. +func (m *model) clearComments(texts map[int]string) { + for id, text := range texts { + if c := m.comments.Find(id); c != nil && c.Text == text { + m.comments.Remove(id) + } } if m.inCommentList() { if m.comments.Len() == 0 { From f549f889f1e4aabe4290a3cb768ba7096a6cd8cc Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 16:47:44 +0100 Subject: [PATCH 106/119] fix(tui): copy and step through comments by the rendered markdown lines --- test/files_test.go | 24 +++++++++++++++++++----- tui/mouse.go | 12 +++++++++++- tui/nav.go | 10 ++++++++-- 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/test/files_test.go b/test/files_test.go index af476c4..b2fb3ea 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -31,10 +31,12 @@ func TestFilesTab(t *testing.T) { // TestMarkdownSetting checks that markdown_view shows rendered markdown // at the start. As in herdr-reviewr, a changed block of rendered markdown -// has the bar, and a comment on it is on all the lines of the block. +// has the bar, and a comment on it is on all the lines of the block. A +// drag copies the rendered text. n goes to a comment that starts in a +// block. func TestMarkdownSetting(t *testing.T) { repo := newRepo(t) - testgit.WriteFile(t, repo, "README.md", "# Title\n\nSome text.\n\nNew text\non two lines.\n") + testgit.WriteFile(t, repo, "README.md", "# Title\n\nSome text.\n\nNew text\non\nthree lines.\n") bin := clipboard(t) tm := start(t, repo, opts{path: bin, env: clipEnv, args: []string{ "-config", `{"markdown_view": "rendered"}`, @@ -45,18 +47,30 @@ func TestMarkdownSetting(t *testing.T) { tm.keys("1", "tab") tm.waitFor("Some text.") tm.waitUntil(func(s string) bool { - return sameLine(s, "▌", "New text on two lines.") && !sameLine(s, "▌", "Some text.") + return sameLine(s, "▌", "New text on three lines.") && !sameLine(s, "▌", "Some text.") }, "mark the changed block") tm.keys(":", "6", "enter") - tm.waitCursor("New text on two lines.") + tm.waitCursor("New text on three lines.") tm.keys("c") tm.typed("hi") tm.keys("enter") tm.waitFor("💬 hi") tm.keys("y") waitFile(t, filepath.Join(bin, "clip"), func(s string) bool { - return s == "README.md:5-6\n+New text\n+on two lines.\nhi" + return s == "README.md:5-7\n+New text\n+on\n+three lines.\nhi" }) + tm.drag("Some", "text.") + waitFile(t, filepath.Join(bin, "clip"), func(s string) bool { return s == "Some t" }) + tm.keys("m", ":", "6", "enter") + tm.waitCursor("on") + tm.keys("c") + tm.typed("x") + tm.keys("enter") + tm.waitFor("💬 x") + tm.keys("m", ":", "0", "enter") + tm.waitCursor("Title") + tm.keys("n") + tm.waitCursor("New text on three lines.") } // TestSearch checks that / finds files by name and lines by code, shows a diff --git a/tui/mouse.go b/tui/mouse.go index 8823c6d..541cb02 100644 --- a/tui/mouse.go +++ b/tui/mouse.go @@ -287,6 +287,9 @@ func (m *model) onMouseUp() tea.Cmd { func (m *model) dragText(d dragState) string { p := m.cur() a, b := p.head(d.row), p.head(d.toRow) + if p.src != nil { + a, b = d.row, d.toRow // rendered markdown gives the text on the screen + } _, ca, _ := m.textAt(d.row, d.x) _, cb, _ := m.textAt(d.toRow, d.toX) if a > b || a == b && ca > cb { @@ -295,7 +298,14 @@ func (m *model) dragText(d dragState) string { if a == b && ca == cb { return "" } - lines := m.sourceLines(a, p.end(b), d.pref) + var lines []string + if p.src != nil { + for _, l := range p.lines[a : b+1] { + lines = append(lines, strings.TrimRight(ansi.Strip(l), " ")) + } + } else { + lines = m.sourceLines(a, p.end(b), d.pref) + } if len(lines) == 0 { return "" } diff --git a/tui/nav.go b/tui/nav.go index 6f8ddbd..fd2752b 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -651,9 +651,15 @@ func cursorToLine(p *pane, s diff.Side, line int) { } } -// rowOf returns the first row of p that shows line on side s, or -1. +// rowOf returns the first row of p that shows line on side s, or -1. In +// rendered markdown, a line in a block is on the first row of the block, +// as in gotoLine. func (p *pane) rowOf(s diff.Side, line int) int { - return slices.IndexFunc(p.rows, func(r diff.Row) bool { return r.Line(s) == line }) + i := slices.IndexFunc(p.rows, func(r diff.Row) bool { return r.Line(s) == line }) + if i < 0 && p.src != nil && slices.ContainsFunc(p.src, func(r diff.Row) bool { return r.Line(s) == line }) { + return p.head(lineRow(p.rows, s, line)) + } + return i } // gotoLine moves the cursor to the line in text, as herdr-reviewr does. From 37f1d71a55e552eddb2fc3c124415b083527f676 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 16:47:49 +0100 Subject: [PATCH 107/119] fix(tui): time-limit the branch list, and keep the default base from the start --- tui/basepick.go | 15 +++++++++++++-- tui/model.go | 5 ++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/tui/basepick.go b/tui/basepick.go index 183392c..3316d8b 100644 --- a/tui/basepick.go +++ b/tui/basepick.go @@ -3,12 +3,18 @@ package tui // The base picker picks the base of the branch scope. import ( + "context" + "fmt" "slices" "strings" + "time" "github.com/rednafi/rexdiff/vcs" ) +// branchTimeout is the longest time of the branch list. +const branchTimeout = 5 * time.Second + // openBasePicker lets the user pick the base of the branch scope. The // current base has a tag. As in herdr-reviewr, the base of an open pull // request and the default branch come first, with a tag. The picker does @@ -18,7 +24,12 @@ func (m *model) openBasePicker() { return } ov := newOverlay(overlayBase, "base branch for the branch scope (or type any ref)") - branches, err := m.repo.Branches(m.ctx) + ctx, cancel := context.WithCancelCause(m.ctx) + ctx, cancelTimeout := context.WithTimeoutCause(ctx, branchTimeout, + fmt.Errorf("branch list: %v timeout: %w", branchTimeout, context.DeadlineExceeded)) + defer cancelTimeout() + defer cancel(fmt.Errorf("branch list: done: %w", context.Canceled)) + branches, err := m.repo.Branches(ctx) if err != nil { m.flash("branch list failed: " + err.Error()) return @@ -27,7 +38,7 @@ func (m *model) openBasePicker() { if pr := m.pr.pr; pr != nil && pr.State == vcs.PROpen { prBase = pr.Base } - defaultBase := strings.TrimPrefix(m.repo.DefaultBase(m.ctx), "origin/") + defaultBase := strings.TrimPrefix(m.defaultBase, "origin/") // groups has the PR base, then the default branch, then the others. // Each group keeps the newest first. var groups [3][]pickItem diff --git a/tui/model.go b/tui/model.go index fb1e6bb..07d3a16 100644 --- a/tui/model.go +++ b/tui/model.go @@ -242,6 +242,8 @@ type model struct { // folds has the folds that the user expands in the Changes tab, by path. folds map[string]*openFolds base string + // defaultBase is the default branch at the start, for the base picker. + defaultBase string // baseFlag is true if the base comes from the flag. Then the user // cannot pick another. baseFlag bool @@ -371,8 +373,9 @@ func newModel(ctx context.Context, o Options, cfg config) model { } } } + m.defaultBase = o.Repo.DefaultBase(ctx) if m.base == "" { - m.base = o.Repo.DefaultBase(ctx) + m.base = m.defaultBase } if tree := o.Repo.SavedTurn(ctx); tree != "" { m.turn = &turnState{tree: tree} From df07d6c0fd0468235c9b1cc921e9f6ecd9d322cf Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 16:47:50 +0100 Subject: [PATCH 108/119] fix(tui): name a missing URL opener, and rewrap stale comments --- cmd/rexdiff/rexdiff_toggle.lua | 9 +++++---- tui/editor.go | 18 +++++++++++------- tui/model.go | 2 +- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/cmd/rexdiff/rexdiff_toggle.lua b/cmd/rexdiff/rexdiff_toggle.lua index f887c77..020ad5f 100644 --- a/cmd/rexdiff/rexdiff_toggle.lua +++ b/cmd/rexdiff/rexdiff_toggle.lua @@ -53,8 +53,9 @@ local function check(config) end -- open_rexdiff opens rexdiff at placement, beside the agent in ctx, with --- the settings in config. A split opens in direction, right or down. rexdiff starts in the current directory of the --- agent. The rex package of rexdiff finds the directory the same way. +-- the settings in config. A split opens in direction, right or down. +-- rexdiff starts in the current directory of the agent. The rex package +-- of rexdiff finds the directory the same way. -- rexdiff starts through the login shell of the user, so that it gets the -- login environment of the user, for example EDITOR and PATH. local function open_rexdiff(ctx, placement, direction, config) @@ -94,8 +95,8 @@ end -- The function gets the settings of rexdiff.lua, and adds the action -- and its key. return function(settings) - -- The key, the placement, and the direction are for Rex. rexdiff gets the other settings - -- as JSON. + -- The key, the placement, and the direction are for Rex. rexdiff gets + -- the other settings as JSON. if type(settings) ~= "table" then error("config: settings must be a table, as in: local settings = { }", 0) end diff --git a/tui/editor.go b/tui/editor.go index a7a7ba6..6dbd3eb 100644 --- a/tui/editor.go +++ b/tui/editor.go @@ -144,21 +144,25 @@ func (m *model) onEditorDone(msg editorDoneMsg) { // openURL opens url with the URL opener of the settings, else with // the opener of the system. As in herdr-reviewr, it opens only an http or // an https URL. The opener runs with the environment env, and with no -// shell. The command waits for the opener. +// shell. A missing opener gives the error of [proc.NotInstalled]. The +// command waits for the opener. func openURL(env []string, cfg config, url string) (tea.Cmd, error) { url = strings.TrimSpace(url) if !isWebURL(url) { return nil, errors.New("unsupported link scheme") } + name, args := "xdg-open", []string{url} + if runtime.GOOS == "darwin" { + name = "open" + } if cfg.URLOpener != "" { - args := openerArgs(cfg.URLOpener, url) - return detach(env, "open", args[0], args[1:]...) + w := openerArgs(cfg.URLOpener, url) + name, args = w[0], w[1:] } - opener := "xdg-open" - if runtime.GOOS == "darwin" { - opener = "open" + if _, err := proc.LookPath(env, name); err != nil { + return nil, proc.NotInstalled(name) } - return detach(env, "open", opener, url) + return detach(env, "open", name, args...) } // isWebURL reports whether url is http or https with text after the diff --git a/tui/model.go b/tui/model.go index 07d3a16..2edefe4 100644 --- a/tui/model.go +++ b/tui/model.go @@ -282,7 +282,7 @@ type model struct { allSel int allTree fileListTree // viewed and viewedPath are the content and the path in the Files - // tab, to notice edits. The path of the pane is "" for Markdown. + // tab, to notice edits. viewed string viewedPath string readErr string // the last error of the read, which the log has From 8d8d1960392de2826230ab6996dceba1a589c7df Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 16:58:55 +0100 Subject: [PATCH 109/119] docs: fix the settings link, and map the setting names to herdr-reviewr --- .doc/user.md | 13 ++++++++++--- cmd/rexdiff/rexdiff.lua | 4 ++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.doc/user.md b/.doc/user.md index 45e429c..15a4eee 100644 --- a/.doc/user.md +++ b/.doc/user.md @@ -105,9 +105,16 @@ local settings = { } ``` -Most other settings are as in -[herdr-reviewr](https://github.com/persiyanov/herdr-reviewr), but `file_list` is its -`navigator_position`. After a change, run `rex config reload`. +The other settings are as in +[herdr-reviewr](https://github.com/persiyanov/herdr-reviewr), with these changes: + +- `layout`, `placement`, and `direction` are its `diff_view`, `toggle_placement`, + and `toggle_direction`. +- `file_list` is its `navigator_position`. +- rexdiff adds `file_list_width`, `diff_signs`, and `focus_agent_after_send`. +- rexdiff has no `theme` and no `auto_open`. + +After a change, run `rex config reload`. Press `?` to see all the keys. diff --git a/cmd/rexdiff/rexdiff.lua b/cmd/rexdiff/rexdiff.lua index aabde78..d01bad6 100644 --- a/cmd/rexdiff/rexdiff.lua +++ b/cmd/rexdiff/rexdiff.lua @@ -1,7 +1,7 @@ -- "rexdiff install" wrote this file. To remove it, run "rexdiff uninstall". -- --- These are your settings of rexdiff. The user guide lists them: --- https://github.com/rednafi/rexdiff/blob/master/.doc/user.md#settings +-- These are your settings of rexdiff. For help, see the user guide: +-- https://github.com/rednafi/rexdiff/blob/master/.doc/user.md#12-change-the-settings -- To change a setting, edit it, then run "rex config reload". -- rexdiff does not change this file. The action is in rexdiff_toggle.lua. local settings = { From 236c4e27a5faa0017acb10a63572801fca8db2a1 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 16:58:57 +0100 Subject: [PATCH 110/119] test: drop duplicate tests, test r on the PR tab, and keep PATH and builds hermetic --- .doc/test.md | 4 ++++ test/changes_test.go | 31 +++++++++++++------------- test/comment_test.go | 52 +++++++++++++++++++------------------------- test/files_test.go | 31 ++++++++++---------------- test/rexdiff_test.go | 16 +++++++------- test/update_test.go | 20 ++++++----------- test/upgrade_test.go | 2 +- 7 files changed, 70 insertions(+), 86 deletions(-) diff --git a/.doc/test.md b/.doc/test.md index 23f6f0c..a934a15 100644 --- a/.doc/test.md +++ b/.doc/test.md @@ -17,6 +17,10 @@ rexdiff has library tests and black-box tests. - `tui` has no unit tests. The tests in `test/` build the binary and use it as you do. - Each test types keys and clicks through a terminal emulator, and reads the screen. - A test waits for the screen or for a file, never for a fixed time. +- One test waits for the log: `TestLastTurn` waits for the line `msg="turn start"` in + the debug log. +- The scripts in `test/testdata/script` test the commands, for example `install`, with + testscript. - Shell scripts stand in for rex, gh, the clipboard, and the editors. The fake rex prints output recorded from a real Rex. - `TestRealRex` runs rexdiff in a real Rex, to find a fake that no longer matches Rex. diff --git a/test/changes_test.go b/test/changes_test.go index a717c51..0e2e025 100644 --- a/test/changes_test.go +++ b/test/changes_test.go @@ -82,17 +82,25 @@ func TestScopes(t *testing.T) { tm.waitFor("vs feat", "Changes (2)") } -// TestFlags checks that -scope, -base, and -layout set the start, and that -// -log writes a log. +// TestFlags checks that -scope, -base, -layout, and -wrap set the start, +// and that -log writes a log. As in herdr-reviewr, -wrap off cuts a long +// line at the start. func TestFlags(t *testing.T) { + repo := newRepo(t) + long := "var long = \"" + strings.Repeat("ab", 100) + "end\"\n" + testgit.WriteFile(t, repo, "b.go", "package a\n\n"+long) log := filepath.Join(t.TempDir(), "log") - tm := start(t, newRepo(t), opts{width: 220, args: []string{ - "-scope", "branch", "-base", "main", "-layout", "split", "-log", log, + tm := start(t, repo, opts{width: 220, args: []string{ + "-scope", "branch", "-base", "main", "-layout", "split", "-wrap", "off", "-log", log, }}) s := tm.waitFor("vs main", "Changes (3)") if !sameLine(s, "return 1", "x := 2") { t.Errorf("the screen does not show return 1 beside x := 2. It shows:\n%s", s) } + tm.keys("f") + if s := tm.waitFor("var long"); strings.Contains(s, "end\"") { + t.Errorf("-wrap off wraps the long line. The screen shows:\n%s", s) + } tm.keys("q") if err := tm.exited(); err != nil { t.Fatal(err) @@ -116,8 +124,7 @@ func TestSplit(t *testing.T) { } // TestWrap checks that rexdiff wraps a long line, that w cuts it, and -// that → scrolls to its end. As in herdr-reviewr, -wrap off cuts it at -// the start. +// that → scrolls to its end. func TestWrap(t *testing.T) { repo := newRepo(t) long := "var long = \"" + strings.Repeat("ab", 60) + "end\"\n" @@ -131,14 +138,6 @@ func TestWrap(t *testing.T) { // keep its start in the view. tm.keys(slices.Repeat([]string{"right"}, 12)...) tm.waitFor("end\"") - - repo = newRepo(t) - testgit.WriteFile(t, repo, "b.go", "package a\n\n"+long) - tm = start(t, repo, opts{width: 120, args: []string{"-wrap", "off"}}) - tm.keys("f") - if s := tm.waitFor("var long"); strings.Contains(s, "end\"") { - t.Errorf("-wrap off wraps the long line. The screen shows:\n%s", s) - } } // column returns the column of text in the first line of s that has it, @@ -185,7 +184,9 @@ func TestFind(t *testing.T) { tm := start(t, newRepo(t), opts{}) tm.keys("f", "ctrl+f") tm.typed("line 3") - tm.waitFor("find line 3", " 11") // line 3, and line 30 to line 39 + // line 3, and line 30 to line 39 + tm.waitUntil(func(s string) bool { return sameLine(s, "find line 3", " 11") }, + "count 11 lines") tm.keys("enter") tm.waitCursor("line 3") } diff --git a/test/comment_test.go b/test/comment_test.go index 61e50e4..263999a 100644 --- a/test/comment_test.go +++ b/test/comment_test.go @@ -175,16 +175,19 @@ func TestAgentElsewhere(t *testing.T) { // TestCopy checks that y and Y copy the review and clear the comments. y // in the question before a quit does the same. func TestCopy(t *testing.T) { + bin := clipboard(t) + clip := filepath.Join(bin, "clip") + tm := start(t, newRepo(t), opts{path: bin, env: clipEnv}) for _, keys := range [][]string{{"y"}, {"Y"}, {"q", "y"}} { - t.Run(strings.Join(keys, ""), func(t *testing.T) { - bin := clipboard(t) - tm := start(t, newRepo(t), opts{path: bin, env: clipEnv}) - comment(tm, "hi") - tm.keys(keys...) - tm.waitFor("copied 1 comment") - tm.waitGone("💬") - waitFile(t, filepath.Join(bin, "clip"), func(s string) bool { return s == review }) - }) + comment(tm, "hi") + tm.waitGone("copied 1 comment") + if err := os.WriteFile(clip, nil, 0o600); err != nil { + t.Fatal(err) + } + tm.keys(keys...) + tm.waitFor("copied 1 comment") + tm.waitGone("💬") + waitFile(t, clip, func(s string) bool { return s == review }) } } @@ -221,16 +224,9 @@ func TestMouse(t *testing.T) { tm.waitGone(" first") } -// TestQuit checks that q quits at once with no comment, and that with a -// comment it asks first. +// TestQuit checks that q with a comment asks first. func TestQuit(t *testing.T) { tm := start(t, newRepo(t), opts{}) - tm.keys("q") - if err := tm.exited(); err != nil { - t.Errorf("q exits with %v, want no error", err) - } - - tm = start(t, newRepo(t), opts{}) comment(tm, "hi") tm.keys("Q", "q") // Q does nothing outside the prompt tm.waitFor("1 unsent comment will be lost", @@ -268,20 +264,16 @@ func TestCommentStays(t *testing.T) { } // TestEditorInPane checks that e opens a terminal editor at the line, in -// a new Rex pane. An editor that rexdiff does not know also opens there. +// a new Rex pane. func TestEditorInPane(t *testing.T) { - for _, editor := range []string{"nvim", "myed"} { - t.Run(editor, func(t *testing.T) { - repo := newRepo(t) - rex := newRex(t, repo) - bin := tools(t, map[string]string{editor: ""}) - tm := start(t, repo, opts{rex: rex, path: bin, env: []string{"EDITOR=" + editor}}) - tm.keys("]", "j", "e") - rex.expectCalls(t, "split -s S -b block:self --cwd "+repo+" -- sh -c "+ - editor+" +4 '"+filepath.Join(repo, "a.go")+"'") - tm.waitFor("opened a.go") - }) - } + repo := newRepo(t) + rex := newRex(t, repo) + bin := tools(t, map[string]string{"nvim": ""}) + tm := start(t, repo, opts{rex: rex, path: bin, env: []string{"EDITOR=nvim"}}) + tm.keys("]", "j", "e") + rex.expectCalls(t, "split -s S -b block:self --cwd "+repo+" -- sh -c nvim +4 '"+ + filepath.Join(repo, "a.go")+"'") + tm.waitFor("opened a.go") } // TestWindowEditor checks that e starts a window editor at the line, and diff --git a/test/files_test.go b/test/files_test.go index b2fb3ea..9249a62 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -2,7 +2,6 @@ package test import ( "os" - "os/exec" "path/filepath" "strings" "testing" @@ -94,8 +93,8 @@ func TestSearch(t *testing.T) { tm.waitCursor("line 7") } -// TestLiveReload checks that the Changes tab shows an edit and a new file -// without a key, and that r reloads. +// TestLiveReload checks that the Changes tab shows an edit, a new file, +// and a removed file without a key. func TestLiveReload(t *testing.T) { repo := newRepo(t) tm := start(t, repo, opts{}) @@ -107,7 +106,6 @@ func TestLiveReload(t *testing.T) { if err := os.Remove(filepath.Join(repo, "new", "c.go")); err != nil { t.Fatal(err) } - tm.keys("r") tm.waitFor("Changes (2)") } @@ -148,14 +146,14 @@ func TestTurnRaced(t *testing.T) { // checks that o opens it, as in herdr-reviewr. Without {url}, the URL goes // at the end of the opener command. o does not open a URL that is not // http or https. The keys of the scopes and of the base picker do nothing -// on the PR tab. +// on the PR tab, and r reads the pull request again. func TestPR(t *testing.T) { repo := newRepo(t) testgit.Git(t, repo, "remote", "add", "origin", "https://github.com/o/r.git") created := time.Now().Add(-3 * time.Hour).UTC().Format(time.RFC3339) bin := tools(t, map[string]string{ "gh": `cat </dev/null)", "state": "OPEN", "isDraft": false, "url": "${PR_URL:-https://github.com/o/r/pull/7}", "body": "The body of the PR. See [the docs](https://example.com/docs).", "author": {"login": "ann"}, "headRefName": "feat", "baseRefName": "main", "comments": [{"author": {"login": "bob"}, "body": "Looks good.\n\n
      The logs\n\nA hidden line.\n\n
      Inner\n\nDeep.\n\n
      \n\nAfter inner.\n\n
      ", @@ -169,11 +167,10 @@ EOF config := []string{"-config", `{"url_opener": "opener"}`} tm := start(t, repo, opts{path: bin, args: config}) tm.keys("3") - tm.waitFor("Add b #7", "● open", "feat → main", "by ann", + s := tm.waitFor("Add b #7", "● open", "feat → main", "by ann", "checks: ✓ 1 ✗ 1", "✗ lint", "The body of the PR.", "bob 3h", "Looks good.", "▸ The logs") - if s := tm.waitFor("▸ The logs"); strings.Contains(s, "A hidden line.") || - strings.Contains(s, "After inner.") { + if strings.Contains(s, "A hidden line.") || strings.Contains(s, "After inner.") { t.Errorf("a closed details block shows its body. The screen shows:\n%s", s) } tm.keys("right") @@ -201,6 +198,11 @@ EOF tm.waitFor("Add b #7") tm.keys("o") tm.waitFor("open failed: unsupported link scheme") + if err := os.WriteFile(filepath.Join(bin, "suffix"), []byte(" again"), 0o600); err != nil { + t.Fatal(err) + } + tm.keys("r") + tm.waitFor("Add b again #7") } // TestNoPR checks that the PR tab tells why it has no pull request. The @@ -212,16 +214,7 @@ func TestNoPR(t *testing.T) { repo := newRepo(t) testgit.Git(t, repo, "remote", "add", "origin", "https://github.com/o/r.git") - // PATH has only git, so it has no gh. - git, err := exec.LookPath("git") - if err != nil { - t.Fatal(err) - } - bin := t.TempDir() - if err := os.Symlink(git, filepath.Join(bin, "git")); err != nil { - t.Fatal(err) - } - tm = start(t, repo, opts{env: []string{"PATH=" + bin}}) + tm = start(t, repo, opts{}) tm.keys("3") tm.waitFor("gh is not installed") } diff --git a/test/rexdiff_test.go b/test/rexdiff_test.go index da1b5b7..6e8e3e3 100644 --- a/test/rexdiff_test.go +++ b/test/rexdiff_test.go @@ -46,10 +46,11 @@ func binary(t *testing.T) string { // build builds rexdiff with the version into dir, and returns its path. // A run with the race detector builds a rexdiff with it. The build stops -// when ctx is done. +// when ctx is done. -buildvcs=false keeps the version of a git tag out, +// so a build with no version does not look for updates. func build(ctx context.Context, dir, version string) (string, error) { bin := filepath.Join(dir, "rexdiff") - args := []string{"build", "-o", bin, "-ldflags", "-X main.version=" + version} + args := []string{"build", "-buildvcs=false", "-o", bin, "-ldflags", "-X main.version=" + version} if raceOn { args = append(args, "-race") } @@ -125,14 +126,13 @@ func start(t *testing.T, repo string, o opts) *term { // A stop lets rexdiff remove its files before it exits. cmd.Cancel = func() error { return cmd.Process.Signal(syscall.SIGTERM) } cmd.WaitDelay = 2 * time.Second - path := "/usr/bin:/bin:/usr/sbin:/sbin" - if git, err := exec.LookPath("git"); err == nil { - path = filepath.Dir(git) + string(os.PathListSeparator) + path - } + var dirs []string if o.path != "" { - path = o.path + string(os.PathListSeparator) + path + dirs = append(dirs, o.path) } - cmd.Env = append(cleanEnv(), "PATH="+path, "TERM=xterm-256color") + // The PATH of ToolEnv has git, but no other tool of the user. + cmd.Env = append(cleanEnv(), "TERM=xterm-256color") + cmd.Env = append(cmd.Env, testgit.ToolEnv(t, dirs...)...) if o.rex != nil { cmd.Env = append(cmd.Env, "REX_SESSION=S", "REX_BLOCK=block:self", "REX_BIN_DIR="+o.rex.dir) diff --git a/test/update_test.go b/test/update_test.go index 539be72..426078a 100644 --- a/test/update_test.go +++ b/test/update_test.go @@ -15,6 +15,7 @@ import ( "strings" "sync" "testing" + "testing/fstest" ) // release serves the latest release tag with the binary at bin, as GitHub @@ -44,22 +45,15 @@ func release(t *testing.T, tag, bin string) string { name := "rexdiff-" + tag + "-" + runtime.GOOS + "-" + runtime.GOARCH + ".tar.gz" archive := b.Bytes() sum := sha256.Sum256(archive) - files := map[string][]byte{ - "/" + name: archive, - "/sha256sums.txt": []byte(hex.EncodeToString(sum[:]) + " " + name + "\n"), + files := fstest.MapFS{ + name: {Data: archive}, + "sha256sums.txt": {Data: []byte(hex.EncodeToString(sum[:]) + " " + name + "\n")}, } - srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - b, ok := files[r.URL.Path] - if !ok { - http.NotFound(w, r) - return - } - _, _ = w.Write(b) - })) + srv := httptest.NewServer(http.FileServerFS(files)) t.Cleanup(srv.Close) - files["/latest"] = []byte(`{"tag_name": "` + tag + `", "assets": [` + + files["latest"] = &fstest.MapFile{Data: []byte(`{"tag_name": "` + tag + `", "assets": [` + `{"name": "` + name + `", "browser_download_url": "` + srv.URL + "/" + name + `"},` + - `{"name": "sha256sums.txt", "browser_download_url": "` + srv.URL + `/sha256sums.txt"}]}`) + `{"name": "sha256sums.txt", "browser_download_url": "` + srv.URL + `/sha256sums.txt"}]}`)} return srv.URL + "/latest" } diff --git a/test/upgrade_test.go b/test/upgrade_test.go index deddded..3081861 100644 --- a/test/upgrade_test.go +++ b/test/upgrade_test.go @@ -108,7 +108,7 @@ func TestUpgradeFrom027(t *testing.T) { } if bin := os.Getenv("REXDIFF_REX"); bin != "" { check := exec.CommandContext(t.Context(), bin, "config", "check") - check.Env = append(os.Environ(), "REX_CONFIG="+config) + check.Env = append(cleanEnv(), "REX_CONFIG="+config) out, err := check.CombinedOutput() if err != nil || !strings.Contains(string(out), "actions: 1") { t.Errorf("rex config check after the upgrade: %v\n%s", err, out) From 26f789e6eb437c24d39dc295491b788f5be7c7c1 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 16:59:00 +0100 Subject: [PATCH 111/119] ci: shuffle the library tests, lint their parallel tests, and pin govulncheck --- .doc/dev.md | 2 +- .github/workflows/ci.yml | 2 ++ .golangci.yml | 10 ++++++---- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.doc/dev.md b/.doc/dev.md index 7726702..b766706 100644 --- a/.doc/dev.md +++ b/.doc/dev.md @@ -26,7 +26,7 @@ go test -race -count=1 ./... golangci-lint run go fix -diff ./... go mod tidy -diff -go run golang.org/x/vuln/cmd/govulncheck@latest ./... +go run golang.org/x/vuln/cmd/govulncheck@v1.9.0 ./... ``` To run the tests against a real Rex too: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8694376..b0bd620 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,6 +28,8 @@ jobs: go-version-file: go.mod - run: go vet ./... - run: go test -race -count=1 ./... + # A second run in a random order finds a test that depends on another. + - run: go test -count=2 -shuffle=on ./diff/ ./vcs/ ./rex/ ./update/ ./internal/... lint: runs-on: ubuntu-latest diff --git a/.golangci.yml b/.golangci.yml index d1aa276..fdd7427 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -30,6 +30,8 @@ linters: - nolintlint - gosec - unparam + - paralleltest + - tparallel settings: staticcheck: checks: @@ -46,10 +48,6 @@ linters: - fmt.Fprint - fmt.Fprintf - fmt.Fprintln - dupword: - # The Lua code in cmd/rexdiff/install.go ends two blocks with "end end". - ignore: - - end misspell: # No locale: the comments use British spelling, for example "colour". ignore-rules: @@ -73,6 +71,10 @@ linters: linters: [forcetypeassert, unparam] - linters: [revive] text: redefines-builtin-id + # The tests in test/ run one at a time. The tests of the libraries + # run in parallel. + - path: ^test/ + linters: [paralleltest, tparallel] formatters: enable: From 21e2766e3c34ef191ef1cee0421d2acb6cc6838f Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 17:13:10 +0100 Subject: [PATCH 112/119] refactor: flatten the mouse-up and drag code, skip a needless CR copy, and tidy comments --- internal/diffview/view.go | 16 ++++++---------- tui/model.go | 2 +- tui/mouse.go | 12 +++++------- tui/pr.go | 6 +++--- tui/render.go | 4 ++-- vcs/refs.go | 4 ++-- 6 files changed, 19 insertions(+), 25 deletions(-) diff --git a/internal/diffview/view.go b/internal/diffview/view.go index 3806fb8..e2af0ec 100644 --- a/internal/diffview/view.go +++ b/internal/diffview/view.go @@ -164,8 +164,8 @@ const crMark = "^M" // markEndings removes the CR of each line ending, so that it does not // show. In a block of changes, the deleted lines and the inserted lines // pair up in their order. As in herdr-reviewr, a line of a pair that -// differs from the other line only in a CR gets crMark. Thus a change of -// only the line ending shows. +// differs from the other line only in a CR gets crMark. A change of only +// the line ending shows. func (v *View) markEndings() { for _, h := range v.hunks { ls := h.Lines @@ -206,15 +206,11 @@ func markPair(old, new *udiff.Line) { // reports whether line has that CR. The last line of a file can have a CR // and no LF. func cutCR(line, mark string) (string, bool) { - body, lf := strings.CutSuffix(line, "\n") - body, cr := strings.CutSuffix(body, "\r") - if cr { - body += mark + body, cr := strings.CutSuffix(strings.TrimSuffix(line, "\n"), "\r") + if !cr { + return line, false } - if lf { - body += "\n" - } - return body, cr + return body + mark + line[len(body)+1:], true } // replaceTabs replaces the tabs in the lines of the diff with spaces. It runs diff --git a/tui/model.go b/tui/model.go index 2edefe4..a188b3d 100644 --- a/tui/model.go +++ b/tui/model.go @@ -291,7 +291,7 @@ type model struct { pr prState prf prFetch prPlace *resumePane // prPane's place after a restart - prDetails bool // the
      blocks of the PR tab are open + prDetails bool // the PR
      blocks are open split bool // show the diff side by side wrap bool diff --git a/tui/mouse.go b/tui/mouse.go index 541cb02..6f54cf0 100644 --- a/tui/mouse.go +++ b/tui/mouse.go @@ -268,15 +268,13 @@ func (m *model) onMouseUp() tea.Cmd { if !d.active || d.start >= len(p.rows) { return nil } - switch { - case d.gutter: // a drag on the line numbers opens the comment box + if d.gutter { // a drag on the line numbers opens the comment box if d.moved { p.anchor = d.start } return m.startComment(d.pref) - default: - m.copyChars(m.dragText(d)) } + m.copyChars(m.dragText(d)) return nil } @@ -286,9 +284,9 @@ func (m *model) onMouseUp() tea.Cmd { // rune is a click, and gives "". func (m *model) dragText(d dragState) string { p := m.cur() - a, b := p.head(d.row), p.head(d.toRow) - if p.src != nil { - a, b = d.row, d.toRow // rendered markdown gives the text on the screen + a, b := d.row, d.toRow // rendered markdown gives the text on the screen + if p.src == nil { + a, b = p.head(a), p.head(b) } _, ca, _ := m.textAt(d.row, d.x) _, cb, _ := m.textAt(d.toRow, d.toX) diff --git a/tui/pr.go b/tui/pr.go index 2e65036..e43ee61 100644 --- a/tui/pr.go +++ b/tui/pr.go @@ -179,15 +179,15 @@ var ( // details returns src with each
      block as its summary line, as // herdr-reviewr shows it. The line starts with ▸ for a closed block, and // with ▾ for an open block. The body of an open block follows the line. -// The last block is done first. Thus an inner block is done before the +// The last block is done first, so an inner block is done before the // block that holds it. func (m *model) details(src string) string { for _, o := range slices.Backward(detailsOpenRE.FindAllStringIndex(src, -1)) { - sub := detailsRE.FindStringSubmatchIndex(src[o[0]:]) + b := src[o[0]:] + sub := detailsRE.FindStringSubmatchIndex(b) if sub == nil { continue } - b := src[o[0]:] summary := strings.Join(strings.Fields(b[sub[2]:sub[3]]), " ") block := "\n\n▸ " + summary + "\n\n" if m.prDetails { diff --git a/tui/render.go b/tui/render.go index 0ff8071..7b8bf1a 100644 --- a/tui/render.go +++ b/tui/render.go @@ -375,8 +375,8 @@ func (m *model) rendersNothing(src string) bool { // herdr-reviewr does. rows are the source rows that the view stands for, // with src as their new side. If rows is nil, no line of src changes. // Each rendered line shows the first source line of its block. The blank -// line after a block shows its last source line. Thus a comment on a -// block covers all its lines. A block with a change has the bar. +// line after a block shows its last source line. A comment on a block +// covers all its lines. A block with a change has the bar. func (m *model) setMarkdown(p *pane, src string, rows []diff.Row) { lines := diff.Lines(src) if rows == nil { diff --git a/vcs/refs.go b/vcs/refs.go index c77a5d0..45790d7 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -101,8 +101,8 @@ func (r *Repo) Branches(ctx context.Context) ([]string, error) { } // DefaultBase returns the default branch of the repository. This is the -// target of origin/HEAD if it exists, or the first that exists of main, master, trunk, -// origin/main, and origin/master. If there is none, it returns "HEAD". +// target of origin/HEAD if it exists, or the first that exists of main, +// master, trunk, origin/main, and origin/master. If there is none, it returns "HEAD". func (r *Repo) DefaultBase(ctx context.Context) string { if ref, err := r.run(ctx, nil, "symbolic-ref", "--short", "refs/remotes/origin/HEAD"); err == nil { // fetch --prune can leave the symbolic ref without a target. From b2e40796aa4551846b14ea468fbab1cabba832af Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 17:43:13 +0100 Subject: [PATCH 113/119] fix(tui): mark rendered markdown blocks that render nothing or are removed, and keep reference links --- test/files_test.go | 17 ++++--- tui/render.go | 109 ++++++++++++++++++++++++++++++++++++--------- 2 files changed, 99 insertions(+), 27 deletions(-) diff --git a/test/files_test.go b/test/files_test.go index 9249a62..144d664 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -35,7 +35,10 @@ func TestFilesTab(t *testing.T) { // block. func TestMarkdownSetting(t *testing.T) { repo := newRepo(t) - testgit.WriteFile(t, repo, "README.md", "# Title\n\nSome text.\n\nNew text\non\nthree lines.\n") + testgit.WriteFile(t, repo, "README.md", "# Title\n\nGone.\n\nSome text.\n\n\n") + testgit.Git(t, repo, "commit", "-qam", "readme") + testgit.WriteFile(t, repo, "README.md", + "# Title\n\nSome text.\n\n\n\nNew text\non\nthree lines.\n") bin := clipboard(t) tm := start(t, repo, opts{path: bin, env: clipEnv, args: []string{ "-config", `{"markdown_view": "rendered"}`, @@ -46,9 +49,11 @@ func TestMarkdownSetting(t *testing.T) { tm.keys("1", "tab") tm.waitFor("Some text.") tm.waitUntil(func(s string) bool { - return sameLine(s, "▌", "New text on three lines.") && !sameLine(s, "▌", "Some text.") - }, "mark the changed block") - tm.keys(":", "6", "enter") + return sameLine(s, "▌", "New text on three lines.") && !sameLine(s, "▌", "Some text.") && + sameLine(s, "▌", "− 1 line removed") && + sameLine(s, "▌", "⚠ 1 changed line doesn't render · m to see") + }, "mark the changed blocks, the removed block, and the changed comment") + tm.keys(":", "8", "enter") tm.waitCursor("New text on three lines.") tm.keys("c") tm.typed("hi") @@ -56,11 +61,11 @@ func TestMarkdownSetting(t *testing.T) { tm.waitFor("💬 hi") tm.keys("y") waitFile(t, filepath.Join(bin, "clip"), func(s string) bool { - return s == "README.md:5-7\n+New text\n+on\n+three lines.\nhi" + return s == "README.md:7-9\n+New text\n+on\n+three lines.\nhi" }) tm.drag("Some", "text.") waitFile(t, filepath.Join(bin, "clip"), func(s string) bool { return s == "Some t" }) - tm.keys("m", ":", "6", "enter") + tm.keys("m", ":", "8", "enter") tm.waitCursor("on") tm.keys("c") tm.typed("x") diff --git a/tui/render.go b/tui/render.go index 7b8bf1a..02cec37 100644 --- a/tui/render.go +++ b/tui/render.go @@ -6,7 +6,9 @@ package tui import ( "cmp" "errors" + "fmt" "iter" + "regexp" "slices" "strings" @@ -233,7 +235,7 @@ func (m *model) renderChanges() { case m.isRendered(f): all := func(diff.Fold) bool { return true } d := diff.Render(f.Path, f.Old, f.New, diff.Options{Expanded: all, Cache: &m.cache}) - m.setMarkdown(p, f.New, d.Rows) + m.setMarkdown(p, f.Old, f.New, d.Rows) default: if o := m.folds[f.Path]; o != nil && o.Old != f.oldHash { delete(m.folds, f.Path) @@ -295,7 +297,7 @@ func (m *model) refreshViewer() { p.path = "" p.set([]string{dimStyle.Render(" could not read this file")}, nil) case m.rendered && isMarkdown(path): - m.setMarkdown(p, content, nil) + m.setMarkdown(p, "", content, nil) default: p.setDiff(diff.RenderFile(path, content, m.diffOptions(p.xoff))) } @@ -373,33 +375,64 @@ func (m *model) rendersNothing(src string) bool { // setMarkdown shows src as rendered markdown, block by block, as // herdr-reviewr does. rows are the source rows that the view stands for, -// with src as their new side. If rows is nil, no line of src changes. -// Each rendered line shows the first source line of its block. The blank -// line after a block shows its last source line. A comment on a block -// covers all its lines. A block with a change has the bar. -func (m *model) setMarkdown(p *pane, src string, rows []diff.Row) { - lines := diff.Lines(src) +// with old as their old side and src as their new side. If rows is nil, +// no line of src changes. Each rendered line shows the first source line +// of its block. The blank line after a block shows its last source line. +// A comment on a block covers all its lines. A block with a change has +// the bar. A changed block that renders nothing, and the lines of a +// removed block, show as one dim marker row. +func (m *model) setMarkdown(p *pane, old, src string, rows []diff.Row) { + lines, oldLines := diff.Lines(src), diff.Lines(old) if rows == nil { for n := range lines { rows = append(rows, diff.Row{Kind: diff.KindEqual, New: n + 1}) } } + // Each block gets the link reference definitions of all the blocks. + var defs []string + for _, l := range lines { + if linkDef.MatchString(l) { + defs = append(defs, l) + } + } + refs := "\n\n" + strings.Join(defs, "\n") r := m.markdown(m.codeWidth() - 2) var out []string var outRows []diff.Row blank := func(l string) bool { return strings.TrimSpace(ansi.Strip(l)) == "" } + // removed adds a marker row for the deleted lines after the new line + // at, from lo to hi. + removed := func(lo, hi int) { + if n := removedLines(rows, oldLines, lo, hi); n > 0 { + row := diff.Row{Kind: diff.KindEqual, New: max(lo, 1), Continued: true} + text := fmt.Sprintf(" − %s removed", plural(n, "line")) + out = append(out, delStyle.Render("▌")+dimStyle.Render(text), "") + outRows = append(outRows, row, row) + } + } + see := m.keys.Rendered.Help().Key + prev := 0 // the last line of the block before for first, last := range markdownBlocks(lines) { - block := renderMarkdown(r, termtext.Plain(strings.Join(lines[first-1:last], "\n"))) + removed(prev, first) + prev = last + block := renderMarkdown(r, termtext.Plain(strings.Join(lines[first-1:last], "\n")+refs)) for len(block) > 0 && blank(block[0]) { block = block[1:] } for len(block) > 0 && blank(block[len(block)-1]) { block = block[:len(block)-1] } - if len(block) == 0 { + bar, n := changeBar(rows, first, last) + switch { + case len(block) > 0: + case n == 1: + block = []string{dimStyle.Render(" ⚠ 1 changed line doesn't render · " + see + " to see")} + case n > 1: + block = []string{dimStyle.Render(fmt.Sprintf( + " ⚠ %d changed lines don't render · %s to see", n, see))} + default: continue } - bar := changeBar(rows, first, last) for i, l := range block { if bar != "" { l = bar + ansi.TruncateLeft(l, 1, "") @@ -410,10 +443,37 @@ func (m *model) setMarkdown(p *pane, src string, rows []diff.Row) { out = append(out, "") outRows = append(outRows, diff.Row{Kind: diff.KindEqual, New: last, Continued: true}) } + removed(prev, len(lines)+1) p.set(out, outRows) p.src = rows } +// linkDef matches the first line of a link reference definition. +var linkDef = regexp.MustCompile(`^\s{0,3}\[[^\]]+\]:`) + +// removedLines returns the number of deleted lines of old, not blank, +// that rows put after a new line from lo to hi, hi not included. A +// deletion right before a new line is a change of that line, not a +// removal. +func removedLines(rows []diff.Row, old []string, lo, hi int) int { + n, run, at := 0, 0, 0 // at is the last new line before the row + for _, r := range rows { + switch { + case r.Continued: + case r.Kind == diff.KindDelete: + if at >= lo && at < hi && r.Old <= len(old) && strings.TrimSpace(old[r.Old-1]) != "" { + run++ + } + default: + if r.Kind == diff.KindEqual { + n += run + } + run, at = 0, r.New + } + } + return n + run +} + // markdownBlocks yields the first and the last line of each block of // markdown lines, from 1. A blank line outside a code fence ends a block, // unless the next line is indented, as in a list item. @@ -453,21 +513,27 @@ func markdownBlocks(lines []string) iter.Seq2[int, int] { // changeBar returns the bar for the source lines first to last, or "" if // rows do not change them. The bar is green if rows only add lines there. -// It is yellow if rows also change or delete a line there. -func changeBar(rows []diff.Row, first, last int) string { - added, changed, deleted := false, false, false - at := 0 // the last new line before the row +// It is yellow if rows also change or delete a line there. n is the +// number of the changed lines there, as herdr-reviewr counts them: the +// new lines, or else the deleted lines. +func changeBar(rows []diff.Row, first, last int) (bar string, n int) { + added, changed, deleted := 0, false, false + gone := 0 // the deleted lines there + at := 0 // the last new line before the row for _, r := range rows { if r.Continued { continue } if r.Kind == diff.KindDelete { deleted = true - changed = changed || (at >= first && at < last) + if at >= first && at < last { + changed = true + gone++ + } continue } if r.New >= first && r.New <= last && r.Kind != diff.KindEqual { - added = true + added++ changed = changed || deleted || r.Kind == diff.KindChange } deleted, at = false, r.New @@ -475,11 +541,12 @@ func changeBar(rows []diff.Row, first, last int) string { break } } + n = cmp.Or(added, gone) switch { case changed: - return noteStyle.Render("▌") - case added: - return addStyle.Render("▌") + return noteStyle.Render("▌"), n + case added > 0: + return addStyle.Render("▌"), n } - return "" + return "", 0 } From ef35e569b9c84df33fd74e1894b0960e0b95cc5c Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 17:43:23 +0100 Subject: [PATCH 114/119] fix(tui): open a link on a release on its cell, and keep a drag in range after a reload --- tui/model.go | 3 ++- tui/mouse.go | 20 ++++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/tui/model.go b/tui/model.go index a188b3d..f71ef7d 100644 --- a/tui/model.go +++ b/tui/model.go @@ -162,6 +162,7 @@ type dragState struct { pref diff.Side // the side of the line numbers or the code at the start // The screen line and the code column of the press and of the pointer. row, x, toRow, toX int + link string // the URL under the press, or "" } // draft is the comment that the user writes. It is a new comment, or an @@ -843,7 +844,7 @@ func (m *model) handleMsg(msg tea.Msg) tea.Cmd { case tea.MouseMotionMsg: m.onDrag(msg.Mouse()) case tea.MouseReleaseMsg: - cmd = m.onMouseUp() // the comment box can open below the screen + cmd = m.onMouseUp(msg.Mouse()) // the comment box can open below the screen case tea.MouseWheelMsg: m.onWheel(msg.Mouse()) case tea.PasteMsg: diff --git a/tui/mouse.go b/tui/mouse.go index 6f54cf0..ea2d547 100644 --- a/tui/mouse.go +++ b/tui/mouse.go @@ -85,9 +85,10 @@ func (m *model) clickMain(mouse tea.Mouse) tea.Cmd { } } m.focusList = false + link := "" if p.diff == nil { // a markdown view or the PR tab if url := linkAt(p.lines[rowAt[y]], x); isWebURL(url) { - return m.browse(url, "link") + link = url } } p.cur, p.anchor = p.head(rowAt[y]), -1 @@ -105,6 +106,7 @@ func (m *model) clickMain(mouse tea.Mouse) tea.Cmd { x: x, toRow: rowAt[y], toX: x, + link: link, } return nil } @@ -258,11 +260,16 @@ func (m *model) copyChars(text string) { } } -// onMouseUp ends a drag. A drag on the line numbers opens the comment -// box. A drag on the code copies the text from the press to the pointer. -func (m *model) onMouseUp() tea.Cmd { +// onMouseUp ends a drag at mouse. As in herdr-reviewr, a release on the +// cell of the press opens the link there. A drag on the line numbers +// opens the comment box. A drag on the code copies the text from the +// press to the pointer. +func (m *model) onMouseUp(mouse tea.Mouse) tea.Cmd { d := m.drag m.drag.active = false + if d.active && d.link != "" && m.click.x == mouse.X && m.click.y == mouse.Y { + return m.browse(d.link, "link") + } p := m.cur() // A reload during the drag can make the pane shorter than the start. if !d.active || d.start >= len(p.rows) { @@ -293,7 +300,8 @@ func (m *model) dragText(d dragState) string { if a > b || a == b && ca > cb { a, b, ca, cb = b, a, cb, ca } - if a == b && ca == cb { + // A reload during the drag can make the pane shorter than the drag. + if a == b && ca == cb || b >= len(p.lines) { return "" } var lines []string @@ -418,7 +426,7 @@ func (m *model) clickHeader(a headerAction) tea.Cmd { m.setScope(s) } case a == headerBase: - m.openBasePicker() + return m.openBasePicker() case a == headerCommits: m.openCommitPicker() case a == headerAgent: From 4019fdb55d0ba7ae2ce5400dac9afa9c8d11cbf3 Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 17:43:26 +0100 Subject: [PATCH 115/119] fix(tui): list the branches of the base picker in a command, and tag the current base of origin --- test/changes_test.go | 9 +++++++-- tui/basepick.go | 46 +++++++++++++++++++++++++++++++------------- tui/model.go | 2 ++ tui/nav.go | 2 +- 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/test/changes_test.go b/test/changes_test.go index 0e2e025..49ebc43 100644 --- a/test/changes_test.go +++ b/test/changes_test.go @@ -59,7 +59,10 @@ func TestMove(t *testing.T) { // TestScopes checks that each scope shows its changes, and the pickers of // the commits and the base. func TestScopes(t *testing.T) { - tm := start(t, newRepo(t), opts{}) + repo := newRepo(t) + // origin/main hides main in the base picker. + testgit.Git(t, repo, "update-ref", "refs/remotes/origin/main", "main") + tm := start(t, repo, opts{}) tm.keys("b") tm.waitFor("vs main", "Changes (3)", "A b.go") tm.keys("u") @@ -76,7 +79,9 @@ func TestScopes(t *testing.T) { tm.keys("esc") tm.waitGone("commits · 1 over main") tm.keys("u", "B") - tm.waitFor("base branch for the branch scope") + if s := tm.waitFor("base branch for the branch scope", "origin/main"); len(lines(s, "default current")) != 1 { + t.Errorf("the base picker has no current tag on origin/main. It shows:\n%s", s) + } tm.typed("feat") tm.keys("enter") tm.waitFor("vs feat", "Changes (2)") diff --git a/tui/basepick.go b/tui/basepick.go index 3316d8b..158cbf0 100644 --- a/tui/basepick.go +++ b/tui/basepick.go @@ -9,40 +9,60 @@ import ( "strings" "time" + tea "charm.land/bubbletea/v2" + "github.com/rednafi/rexdiff/vcs" ) // branchTimeout is the longest time of the branch list. const branchTimeout = 5 * time.Second -// openBasePicker lets the user pick the base of the branch scope. The -// current base has a tag. As in herdr-reviewr, the base of an open pull -// request and the default branch come first, with a tag. The picker does +// branchesMsg has the branch list of the base picker. +type branchesMsg struct { + branches []string + err error +} + +// openBasePicker lists the branches for the base picker. The list does // nothing on the PR tab, or if the base comes from the flag. -func (m *model) openBasePicker() { +func (m *model) openBasePicker() tea.Cmd { if m.baseFlag || m.tab == tabPR { - return + return nil } - ov := newOverlay(overlayBase, "base branch for the branch scope (or type any ref)") ctx, cancel := context.WithCancelCause(m.ctx) ctx, cancelTimeout := context.WithTimeoutCause(ctx, branchTimeout, fmt.Errorf("branch list: %v timeout: %w", branchTimeout, context.DeadlineExceeded)) - defer cancelTimeout() - defer cancel(fmt.Errorf("branch list: done: %w", context.Canceled)) - branches, err := m.repo.Branches(ctx) - if err != nil { - m.flash("branch list failed: " + err.Error()) + repo := m.repo + return func() tea.Msg { + defer cancelTimeout() + defer cancel(fmt.Errorf("branch list: done: %w", context.Canceled)) + branches, err := repo.Branches(ctx) + return branchesMsg{branches: branches, err: err} + } +} + +// onBranches opens the base picker with the branch list of msg. The +// current base has a tag. As in herdr-reviewr, the base of an open pull +// request and the default branch come first, with a tag. +func (m *model) onBranches(msg branchesMsg) { + if msg.err != nil { + m.flash("branch list failed: " + msg.err.Error()) return } + if m.overlay != nil || m.tab == tabPR { + return + } + ov := newOverlay(overlayBase, "base branch for the branch scope (or type any ref)") prBase := "" if pr := m.pr.pr; pr != nil && pr.State == vcs.PROpen { prBase = pr.Base } defaultBase := strings.TrimPrefix(m.defaultBase, "origin/") + current := strings.TrimPrefix(m.base, "origin/") // groups has the PR base, then the default branch, then the others. // Each group keeps the newest first. var groups [3][]pickItem - for _, b := range branches { + for _, b := range msg.branches { var tags []string name, g := strings.TrimPrefix(b, "origin/"), 2 if name == prBase { @@ -51,7 +71,7 @@ func (m *model) openBasePicker() { if name == defaultBase { tags, g = append(tags, "default"), min(g, 1) } - if b == m.base { + if name == current { tags = append(tags, "current") } groups[g] = append(groups[g], pickItem{label: b, id: b, tag: strings.Join(tags, " ")}) diff --git a/tui/model.go b/tui/model.go index f71ef7d..8a766b8 100644 --- a/tui/model.go +++ b/tui/model.go @@ -826,6 +826,8 @@ func (m *model) handleMsg(msg tea.Msg) tea.Cmd { cmd = m.onPR(msg) case grepMsg: m.onGrep(msg) + case branchesMsg: + m.onBranches(msg) case releaseMsg: m.release = &msg.release case updatedMsg: diff --git a/tui/nav.go b/tui/nav.go index fd2752b..b29f82b 100644 --- a/tui/nav.go +++ b/tui/nav.go @@ -105,7 +105,7 @@ func (m *model) scopeKey(msg tea.KeyPressMsg) (tea.Cmd, bool) { case key.Matches(msg, k.ScopeCommits): m.setScope(scopeCommits) case key.Matches(msg, k.BasePick): - m.openBasePicker() + return m.openBasePicker(), true case key.Matches(msg, k.CommitPick): m.openCommitPicker() default: From f07319618de23757ad4d0cbc3f03e6262077087d Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 17:43:28 +0100 Subject: [PATCH 116/119] fix(vcs): give the last write up to a time, so a later write does not hide a turn race --- tui/turn.go | 3 ++- vcs/watch.go | 15 ++++++++------- vcs/watch_test.go | 10 +++++++--- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/tui/turn.go b/tui/turn.go index 209a8cf..e6b1b85 100644 --- a/tui/turn.go +++ b/tui/turn.go @@ -197,7 +197,8 @@ func (m *model) onTurnStart(msg turnStartMsg) tea.Cmd { } a := msg.agent if m.watch != nil { - w := m.watch.LastWrite() + // A write after the snapshot does not hide a write before it. + w := m.watch.LastWrite(msg.snapped) if !w.Before(a.since.Add(-raceBefore)) && !w.After(msg.snapped) { m.log.Debug("turn raced", "block", a.block, "write", w) return m.dropTurn() diff --git a/vcs/watch.go b/vcs/watch.go index 4c75141..5fb2fdf 100644 --- a/vcs/watch.go +++ b/vcs/watch.go @@ -145,15 +145,16 @@ func (w *Watcher) Changed(ctx context.Context) (Change, error) { return ch, nil } -// LastWrite returns the newest modification time of the listed files and -// of their directories, as they are now. A new or a removed file changes -// the time of its directory. LastWrite returns the zero time if no such -// time is after the start of the watch. It does not change what the next -// call to Changed reports. -func (w *Watcher) LastWrite() time.Time { +// LastWrite returns the newest modification time, not after until, of the +// listed files and of their directories, as they are now. A new or a +// removed file changes the time of its directory. LastWrite returns the +// zero time if no such time is after the start of the watch. It does not +// change what the next call to Changed reports. +func (w *Watcher) LastWrite(until time.Time) time.Time { var last time.Time for _, p := range slices.Concat(w.files, w.dirs) { - if fi, err := os.Lstat(p); err == nil && fi.ModTime().After(last) { + fi, err := os.Lstat(p) + if err == nil && fi.ModTime().After(last) && !fi.ModTime().After(until) { last = fi.ModTime() } } diff --git a/vcs/watch_test.go b/vcs/watch_test.go index 262ca36..c2fa8d5 100644 --- a/vcs/watch_test.go +++ b/vcs/watch_test.go @@ -102,12 +102,13 @@ func TestWatcher(t *testing.T) { } // TestWatcherLastWrite checks that LastWrite sees a new file after the -// start of the watch, and that the change still shows in Changed. +// start of the watch, but not after its limit, and that the change still +// shows in Changed. func TestWatcherLastWrite(t *testing.T) { t.Parallel() r, dir := newRepo(t) w := newWatcher(t, r) - if got := w.LastWrite(); !got.IsZero() { + if got := w.LastWrite(time.Now()); !got.IsZero() { t.Errorf("LastWrite before a write = %v, want zero", got) } testgit.WriteFile(t, dir, "c.txt", "c\n") @@ -120,9 +121,12 @@ func TestWatcherLastWrite(t *testing.T) { t.Fatal(err) } } - if w.LastWrite().IsZero() { + if w.LastWrite(later).IsZero() { t.Error("LastWrite after a write is zero") } + if got := w.LastWrite(later.Add(-time.Minute)); !got.IsZero() { + t.Errorf("LastWrite before the write = %v, want zero", got) + } if got := changed(t, w); !got.Files { t.Errorf("Changed after LastWrite: %+v, want Files", got) } From a74d9d1fdbd9f82b9ae62df9a03130db8314197e Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 17:43:31 +0100 Subject: [PATCH 117/119] chore: wrap a comment, guard a test message, give TestNoPR a git-only PATH, and list key and focus --- .doc/user.md | 3 ++- test/files_test.go | 5 ++++- vcs/pr_test.go | 4 ++-- vcs/refs.go | 3 ++- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.doc/user.md b/.doc/user.md index 15a4eee..d14a0ec 100644 --- a/.doc/user.md +++ b/.doc/user.md @@ -111,7 +111,8 @@ The other settings are as in - `layout`, `placement`, and `direction` are its `diff_view`, `toggle_placement`, and `toggle_direction`. - `file_list` is its `navigator_position`. -- rexdiff adds `file_list_width`, `diff_signs`, and `focus_agent_after_send`. +- rexdiff adds `key`, `file_list_width`, `diff_signs`, and `focus_agent_after_send`. +- rexdiff adds the `focus` key action. - rexdiff has no `theme` and no `auto_open`. After a change, run `rex config reload`. diff --git a/test/files_test.go b/test/files_test.go index 144d664..ece0849 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -219,7 +219,10 @@ func TestNoPR(t *testing.T) { repo := newRepo(t) testgit.Git(t, repo, "remote", "add", "origin", "https://github.com/o/r.git") - tm = start(t, repo, opts{}) + // The PATH has only git, as /usr/bin can have gh. + bin := t.TempDir() + testgit.LinkGit(t, bin) + tm = start(t, repo, opts{env: []string{"PATH=" + bin}}) tm.keys("3") tm.waitFor("gh is not installed") } diff --git a/vcs/pr_test.go b/vcs/pr_test.go index 9b87a48..5b33a94 100644 --- a/vcs/pr_test.go +++ b/vcs/pr_test.go @@ -292,8 +292,8 @@ func TestPullRequestCheckLimit(t *testing.T) { t.Fatal(err) } if n := len(pr.Checks); n != 100 || pr.Checks[99].Name != "c99" { - t.Errorf("PullRequest has %d checks, the last %+v, want 100, the last c99", - n, pr.Checks[n-1]) + t.Errorf("PullRequest has %d checks %+v, want 100, the last c99", + n, pr.Checks[max(n-3, 0):]) } } diff --git a/vcs/refs.go b/vcs/refs.go index 45790d7..488f2da 100644 --- a/vcs/refs.go +++ b/vcs/refs.go @@ -102,7 +102,8 @@ func (r *Repo) Branches(ctx context.Context) ([]string, error) { // DefaultBase returns the default branch of the repository. This is the // target of origin/HEAD if it exists, or the first that exists of main, -// master, trunk, origin/main, and origin/master. If there is none, it returns "HEAD". +// master, trunk, origin/main, and origin/master. If there is none, it +// returns "HEAD". func (r *Repo) DefaultBase(ctx context.Context) string { if ref, err := r.run(ctx, nil, "symbolic-ref", "--short", "refs/remotes/origin/HEAD"); err == nil { // fetch --prune can leave the symbolic ref without a target. From e060f8bd0beef4c27f6644925da29ea5499cd5fd Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 17:44:26 +0100 Subject: [PATCH 118/119] docs(user): add the new keys and the mouse to the steps --- .doc/user.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.doc/user.md b/.doc/user.md index d14a0ec..ad77c51 100644 --- a/.doc/user.md +++ b/.doc/user.md @@ -29,6 +29,9 @@ The diff is on the left. The changed files are on the right. - `]` and `[` go to the next or previous change. - `f` and `F` go to the next or previous file. - The right arrow key on a folded row shows the unchanged lines. +- `:` goes to a line number. Ctrl+F finds text in the file. +- `m` shows a Markdown file as rendered text. You can comment there too. +- Drag over the code with the mouse to copy it. Click a link to open it. rexdiff reloads when a file changes. @@ -39,6 +42,8 @@ rexdiff reloads when a file changes. - `t`: the last turn of the agent - `g`: the commits that you pick +Press `B` to pick the base branch, and `G` to pick the commits. + ## 5. See both sides Press `|` to see the old and the new code side by side. Press `z` to hide the file list @@ -68,6 +73,8 @@ The comment shows under its code. ## 8. Send the review Press `s`. rexdiff pastes the review into the input box of the agent. You press Enter. +If there are two or more agents, pick one with the arrow keys or a digit, then press +Enter. ![The review in the agent](../.asset/sent.png) @@ -90,6 +97,10 @@ Press `/` to find a file. Press Tab to find code. Press `3` to see the pull request of the branch, with its checks and comments. This needs gh, glab, or az. +- `o` opens the pull request in the browser. +- The right arrow key opens the folded `
      ` blocks. The left arrow key closes + them. + ## 12. Change the settings The settings are in `~/.config/rex/rexdiff.lua`: From 38b76c291eda71c42b939aac3b70ffcb634987bb Mon Sep 17 00:00:00 2001 From: Redowan Delowar Date: Mon, 26 Oct 2026 18:05:13 +0100 Subject: [PATCH 119/119] docs(asset): take the changes and split shots again --- .asset/changes.png | Bin 166264 -> 166047 bytes .asset/split.png | Bin 159668 -> 158821 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/.asset/changes.png b/.asset/changes.png index c2450943ed1f17d8bf09eb51be9a5f3e30e35cec..079c660fea8f88b9aefad50be7ceede7fea073bc 100644 GIT binary patch literal 166047 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
      Whq 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 c?>o~83f%#x5fKmX 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 u!H<|L;iN8Jki!8KD0f=W`v*n%>SqDyl> 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

      Y!*Wr&u;zS? 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

      J>)0B8veu0nw$=Ye`} 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¥=8=EG1NV`>tkc)zbb~2NiD|oc<8Uwd_F+* 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 z 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�i%%TG$Y6D``TPx~z{nPXD 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

      Y!*Wr&u;zS? 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 u!H<|L;iN8Jki!8KD0f=W`v*n%>SqDyl> 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