From 97e531ed958ea337d45c10b91f347f7363dfe58a Mon Sep 17 00:00:00 2001 From: "P. Taylor Goetz" Date: Tue, 10 Sep 2024 02:22:50 -0400 Subject: [PATCH] Implement `0.3.0` features. Add download links to README.md Remove `--dry-run` as an option since defaults do the same thing. Implement GPG integration. Update README.md to reflect latest features, use `printColorOpts()` to colorize ouput so it can be turned off. add 'config' command. refactor git operations Show branch name in git pre-flight. Check to see if tag already exists. Bail out if so. Add 'show' command Initial implementation of show command. Refactor main.go --- README.md | 269 +++++++++++++++++++++------ assets/versionbump_gopher-250.png | Bin 0 -> 99788 bytes assets/versionbump_gopher-500.png | Bin 0 -> 99788 bytes cmd/versionbump/main.go | 191 +++++++++++++++---- internal/config/config.go | 13 +- internal/git/git.go | 216 +++++++++------------ internal/git/git_test.go | 4 +- internal/utils/utils.go | 10 + internal/version/version.go | 37 ++-- internal/version/version_test.go | 4 +- internal/versionbump.go | 299 +++++++++++++++++++++--------- internal/versionbump_test.go | 20 +- versionbump.yaml | 4 + 13 files changed, 720 insertions(+), 347 deletions(-) create mode 100644 assets/versionbump_gopher-250.png create mode 100644 assets/versionbump_gopher-500.png diff --git a/README.md b/README.md index 4fe9333..e03a137 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ -# go-versionbump +# VersionBump -**Latest Version:** v0.2.0 +![VersionBump Gopher](assets//versionbump_gopher-250.png) + +**Latest Version:** v0.2.0 ([Download Binary](https://github.com/ptgoetz/go-versionbump/releases/tag/v0.2.0)) VersionBump is a powerful command-line tool designed to streamline the process of version management in your projects. By automating version bumping, VersionBump ensures that your project’s version numbers are always up-to-date across all @@ -8,14 +10,15 @@ relevant files, reducing the risk of human error and saving you valuable time. ## Key Features -- **Automated Version Bumping**: Automatically updates version numbers in specified files, ensuring consistency and accuracy. +- **Automated Version Bumping**: Automatically updates version numbers in specified files, ensuring consistency and + accuracy. - **Git Integration**: Seamlessly integrates with Git to commit and tag changes, making version control effortless. -- **Dry Run Mode**: Preview changes without making any modifications, giving you full control over the process. -- **User Confirmation**: Prompts for user confirmation before making changes, with options to disable prompts for a fully automated experience. +- **GPG Integration**: Supports GPG signing of git commits and tags for enhanced security and authenticity. +- **Interactive Mode**: Prompts for user confirmation before making changes, with options to disable prompts for a fully + automated experience. - **Verbose Logging**: Detailed logging for debugging and verification, with options to enable or disable as needed. - **Customizable Configuration**: Flexible configuration options to tailor VersionBump to your specific needs. - ## Rationale Any project that relies on version strings embedded in code and/or configuration files can get unwieldy pretty quickly if you have to manually update those version strings. VersionBump is designed to automate this process so you can focus @@ -30,41 +33,74 @@ With VersionBump you'll never have to switch between virtual environments, insta compatibility issues. It is a simple, lightweight tool that gets the job done without any fuss, and will work with any project that uses version strings in code or configuration files. +#### Existing Projects with Similar Functionality + +The following Python projects drove and inspired the development of VersionBump. +- **[bumpversion](https://github.com/peritus/bumpversion)**: No longer maintained. Requires Python. +- **[bump2version](https://github.com/c4urself/bump2version)**: No longer maintained. Requires Python. +- **[bump-my-version](https://github.com/callowayproject/bump-my-version)**: This is the closest to VersionBump in terms + of intended functionality. Requires Python. + +**Why Not Use Python Tools?** + +The problem at hand is essentially a text-based search and replace operation, with some extra external tool calls for git +integration. Dealing with Python dependencies, virtual environments, and compatibility issues is overkill for this +problem, especially when a tool's dependencies require switching between virtual environments so as not to conflict with +your prject's dependencies. + ### Do No Harm By default VersionBump will do its best to not not make any changes to your project unless you approve them. You will -be prompted to confirm the changes before they are made. You can also run VersionBump in `--dry-run` mode to see what -changes would be made without actually making them. To make VersionBump truly silent and prompt-less, you have use the -`--no-prompt` and `--silent` flags. +be prompted to confirm the changes before they are made. By default VersionBump will run in "interactive" and will +prompt you to approve all changes and extensively log what actions it's performing. To make VersionBump truly silent +and prompt-less, you have use the `--no-prompt` and `--silent` flags. If anything goes wrong, VersionBump will not make any changes to your project and will exit with a non-zero error code. ## Installation -When installed with `go install`, it provides a `versionbump` binary that can be run from the command line. In the -future we will also provide pre-built binaries for common platforms and CPU architectures. +When installed with `go install`, it provides a `versionbump` binary that can be run from the command line. ```shell go install github.com/ptgoetz/go-versionbump/cmd/versionbump ``` -## Usage -Run VersionBump with the desired options: - -```sh -# Bump the version -./versionbump [--config path/to/versionbump.yaml][--dry-run] [--no-prompt] [--quiet] bump-part +If you don't have Go installed and just want the binary executable, you can download a prebuilt binaries from +[here]([Download Binary](https://github.com/ptgoetz/go-versionbump/releases/tag/v0.2.0). -# Reset the version in all tracked files -./versionbump [--config path/to/versionbump.yaml] --reset version +## Usage +Run VersionBump without any arguments to see the available flags and commands: + +```console +$ versionbump + +VersionBump is a command-line tool designed to automate version string management in projects. + +Usage: + versionbump [flags] + versionbump [command] + +Available Commands: + completion Generate the autocompletion script for the specified shell + config Show the effective configuration of the project. + help Help about any command + major Bump the major version number (e.g. 1.2.3 -> 2.0.0). + minor Bump the minor version number (e.g. 1.2.3 -> 1.3.0). + patch Bump the patch version number (e.g. 1.2.3 -> 1.2.4). + reset Reset the project version to the specified value. + show Show potential versioning paths for the project version or a specific version. + +Flags: + -h, --help help for versionbump + -V, --version Show the version of Config and exit. + +Use "versionbump [command] --help" for more information about a command. ``` -- `bump-part`: The part of the version number to bump (`major`, `minor`, or `patch`). -- `--V`: Print the VersionBump version and exit. + +- `--version`: Print the VersionBump version and exit. - `--config`: Path to the configuration file (default: `./versionbump.yaml`). -- `--dry-run`: Perform a dry run without making any changes. - `--no-prompt`: Do not prompt the user for confirmation before making changes. - `--no-git`: Do not commit or tag the changes in a Git repository. - `--no-color`: Disable colorized output. - `--quiet`: Disable verbose logging. -- `--reset [version]`: Reset the version number to the specified value. ## Configuration The configuration file (**Default:** `versionbump.yaml`) defines the version bump settings: @@ -72,9 +108,10 @@ The configuration file (**Default:** `versionbump.yaml`) defines the version bum ```yaml version: "0.0.0" # (REQUIRED) The current version of the project. -# Git settings are optional. All default too `false`. +# Git settings are optional. All default to `false`. git-commit: false # Whether to create a git commit for the version bump. git-tag: false # Whether to create a git tag for the version bump. +git-sign: false # Whether to sign the git commit/tag. files: # The files to update with the new version. - path: "version.go" # The path to the file to update. @@ -88,12 +125,14 @@ files: # The files to update with the new version. `major.minor.patch` string. - `git-commit`: (Optional) Whether to `git commit` the changes. - `git-tag`: (Optional) Whether to tag the commit (implies `git-commit`). +- `git-sign`: (Optional) Whether to sign the commit/tag with GPG. - `files`: (Required) A list of files to update with the new version number. - `path`: The path to the file. **Note**: Relative file paths are relative to the config file parent directory. Absolute paths are used as-is. - `replace`: The string to replace with the new version number. Use `{version}` as a placeholder. **Important Note:** + The specified or default configuration file is implicitly included as a file that will undergo version replacement. It serves as the source of truth for the version number. VersionBump will always include it as a file to update with the new version number. @@ -112,15 +151,16 @@ The following placeholders can be used in the templates: - `{old}`: The old semantic version number. - `{new}`: The new semantic version number. -## Sample Ouput +## Examples ### Configuration File ```yaml -version: "0.1.7" # The current version of the project. +version: "0.1.9" # The current version of the project. git-commit: true # Whether to create a git commit for the version bump. git-tag: true # Whether to create a git tag for the version bump. +git-sign: true # Whether to sign the git commit/tag. -files: # The files to update with the new version. +files: # The files to update with the new version (i.e. "Tracked files"). - path: "main.go" # The path to the file to update. replace: "v{version}" # The search string to replace in the file. @@ -129,64 +169,189 @@ files: # The files to update with the new version. ``` ### Default (Verbose) Output with Prompts -```text +In the following scenario, the project is not a git repository but git features are enabled, so VersionBump will +offer to initialize a git repository in the project directory. VersionBump will add tracked files to the git repository +and perform an initial commit before continuing. + +```console $ versionbump patch -VersionBump v0.0.0 -Config path: versionbump.yaml +VersionBump v0.3.0 +Configuration file: versionbump.yaml +Project root directory: /Users/tgoetz/Projects/ptgoetz/test-project +Checking git configuration... Git version: 2.39.3 (Apple Git-146) -Project root: /Users/tgoetz/Projects/ptgoetz/test-project -Current Version: 0.1.6 +The project directory is not a git repository. +Do you want to initialize a git repository in the project directory? [y/N]: y +Initialized Git repository. +Adding tracked files... +Tracked Files: + - main.go + - README.md + - versionbump.yaml +Performing initial commit. +Current branch: main +Checking for existing tag... +GPG signing of git commits is enabled. Checking configuration... +Git commits will be signed with GPG key: ACEFE18DD2322E1E84587A148DE03962E80B8FFD Tracked Files: - main.go - README.md - versionbump.yaml Bumping version part: patch -Will bump version 0.1.6 --> 0.1.7 +Will bump version 0.1.10 --> 0.1.11 main.go - Find: "v0.1.6" - Replace: "v0.1.7" + Find: "v0.1.10" + Replace: "v0.1.11" Found 1 replacement(s) README.md - Find: "**Current Version:** v0.1.6" - Replace: "**Current Version:** v0.1.7" + Find: "**Current Version:** v0.1.10" + Replace: "**Current Version:** v0.1.11" Found 1 replacement(s) versionbump.yaml - Find: "version: "0.1.6"" - Replace: "version: "0.1.7"" + Find: "version: "0.1.10"" + Replace: "version: "0.1.11"" Found 1 replacement(s) -The following files will be updated: - - main.go - - README.md - - versionbump.yaml -Do you want to proceed with the changes? [y/N]: y +Proceed with the changes? [y/N]: y Updated file: main.go Updated file: README.md Updated file: versionbump.yaml +Commit Message: Bump version 0.1.10 --> 0.1.11 +Tag Message: Release version 0.1.11 +Tag Name: v0.1.11 Do you want to commit the changes to the git repository? [y/N]: y Committing changes... -Commit message: 'Bump version 0.1.6 --> 0.1.7' +Committed changes with message: Bump version 0.1.10 --> 0.1.11 Tagging changes... -Tag 'v0.1.7' created with message: 'Release 0.1.7' +Tag 'v0.1.11' created with message: Release version 0.1.11 + ``` ### Suppressing Prompts and Verbose Output -```shell +```consdole $ versionbump --no-prompt --quiet patch # No output $ echo $? 0 # Success -$ git log --name-status HEAD^..HEAD # Show last commit -commit c78b938150ab0e1c70178bf9e6c5a82f6c762830 (HEAD -> main, tag: v0.1.8) +$ git log --show-signature --name-status HEAD^..HEAD # Show last commit +commit e695bb7aaa8d4f7b6c821eb13d15fe4c658a929f (HEAD -> main, tag: v0.1.12) +gpg: Signature made Fri Sep 13 19:08:11 2024 EDT +gpg: using RSA key ACEFE18DD2322E1E84587A148DE03962E80B8FFD +gpg: Good signature from "P. Taylor Goetz " [ultimate] +gpg: aka "P. Taylor Goetz " [ultimate] Author: P. Taylor Goetz -Date: Sat Aug 24 14:15:24 2024 -0400 - Bump version 0.1.7 --> 0.1.8 +Date: Fri Sep 13 19:08:11 2024 -0400 + + Bump version 0.1.11 --> 0.1.12 M README.md M main.go M versionbump.yaml + +``` + +### Show Command +Without parameters, the `show` command will display the potential versioning paths for the project version: +```console +$ versionbump show +Potential versioning paths for project version: 0.1.7 +0.1.7 ── bump ─┬─ major ─ 1.0.0 + ├─ minor ─ 0.2.0 + ╰─ patch ─ 0.1.8 ``` -## Development +You can also specify any version identifier to see the potential versioning paths: +```console +versionbump show 1.2.3 +Potential versioning paths for version: 1.2.3 +1.2.3 ── bump ─┬─ major ─ 2.0.0 + ├─ minor ─ 1.3.0 + ╰─ patch ─ 1.2.4 +``` + +### Config Command + +The `config` command will display the effective configuration of the project. This will show default values for any +configuration settings that are not explicitly set in the configuration file. + +```console +$ versionbump config +Config file: versionbump.yaml +Project root: /Users/tgoetz/Projects/ptgoetz/test-project +Effective Configuration YAML: +version: 0.1.7 +git-commit: true +git-commit-template: Bump version {old} --> {new} +git-sign: true +git-tag: true +git-tag-template: v{new} +git-tag-message-template: Release version {new} +files: + - path: main.go + replace: v{version} + - path: README.md + replace: '**Current Version:** v{version}' + - path: versionbump.yaml + replace: 'version: "{version}"' + +Potential versioning paths for project version: 0.1.7 +0.1.7 ── bump ─┬─ major ─ 1.0.0 + ├─ minor ─ 0.2.0 + ╰─ patch ─ 0.1.8 +``` + +## Failure Modes and Errors +VersionBump does its best to prevent leaving your project in an inconsistent state. Before making any changes, it will +perform a series of "pre-flight" checks to ensure that the version bump can be completed successfully. If any errors are +detected, VersionBump will exit with a non-zero error code and will not make any changes to your project. + +If VersionBump is run in `--no-prompt` mode, it will exit with an error if any of the pre-flight checks fail. If it is +run in interactive mode (default), it will prompt the user to confirm whether to proceed with the version bump. + +If git integration is enabled in the VersionBump configuration, VersionBump will also exit with an error if it detects +that any git operations (e.g., committing or tagging) will fail (e.g. the project directory is not a git repository). +When running in interactive mode, VersionBump will prompt the user to correct git issues it can fix (e.g. initializing +a git repository). + + +### Standard Pre-Flight Checks + +- **Configuration File**: VersionBump will check that the configuration file exists and is read/write. If the file is + missing or cannot be read or written, VersionBump will exit with an error. +- **Version Number**: VersionBump will check that the version number in the configuration file is a valid semantic + version number. If the version number is invalid, VersionBump will exit with an error. Note that VersionBump will + normalize the version strings to a semantic version number before proceeding. For example the string `"1.2.003"` will + be normalized to `1.2.3`. +- **Tracked Files**: VersionBump will check that all tracked files in the configuration file exist and are read/write. + If any files are missing or cannot be read, VersionBump will exit with an error. +- **At Least One Replacement**: VersionBump will check that at least one replacement will be made in each tracked file. + If no replacements would be made, VersionBump will exit with an error. + +### Git Pre-Flight Checks + +- **Git Installed**: VersionBump will check that the `git` command is available in the system path. If the `git` command + is not available, VersionBump will exit with an error. +- **Git Repository**: If git integration is enabled, VersionBump will check that the project directory is a git + repository. If the project directory is not a git repository, VersionBump will exit with an error. + + In interactive mode, VersionBump will prompt the user to initialize a git repository in the project directory. It will + also add all tracked files to the git repository and commit them with the message "Initial commit". +- **Git Clean**: VersionBump will check that the git repository is clean (i.e., no uncommitted changes). If the git + repository is not clean, VersionBump will exit with an error. +- **Git Tagging**: If git tagging is enabled, VersionBump will check that the tag name does not already exist in the git + repository. If the tag name already exists, VersionBump will exit with an error. + +### GPG Pre-Flight Checks + +If signing of git commits and tags is enabled, either in the VersionBump or git configuration, VersionBump will perform +the following additional checks: + +- **GPG Signing Key**: VersionBump will check that a GPG signing key is available in the git configuration + (`git config --get user.signingkey`). If no GPG signing key is available, VersionBump will exit with an error. +- **Sign/Don't Sign Conflict**: If signing is disabled in the VersionBump configuration, but enabled in the git + configuration, VersionBump will log a warning message and continue. VersionBump will not override the git + configuration for signing. + +## Contributing If you want to hack and/or contribute to VersionBump, look at the [DEVELOPER.md](DEVELOPER.md) file for more information. diff --git a/assets/versionbump_gopher-250.png b/assets/versionbump_gopher-250.png new file mode 100644 index 0000000000000000000000000000000000000000..50ee290625bd64011023fc8e348a230946c80b80 GIT binary patch literal 99788 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%0DqZ=b@X#ixjAF+{g=xofe7v+SbEwU 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 literal 0 HcmV?d00001 diff --git a/assets/versionbump_gopher-500.png b/assets/versionbump_gopher-500.png new file mode 100644 index 0000000000000000000000000000000000000000..50ee290625bd64011023fc8e348a230946c80b80 GIT binary patch literal 99788 zcmb5VW0>YZw>H`~rfpAq`f1y?ZQItgZQGc(ZA{y?{j_a;^X|RR{?7S%Dp#deR_=AL zsw8z)s-(ztH0SS3sBx$_j#j)W^Yp7()I# zCN`E(k_7?rq5uK$5B_hwKM(}Ol>r3g%m4(0D;)#`%OSf%k>?*a*i=K(OjZ_z=AR4$ z0tt!=0{%||{kMUD;)48#?Vki91&a5-vJxoO|6ssCK*B6RApQrV^{@O-lK7YZWAoo7 zcs}U=Wy}ZrU-Vl(`2UsvW2PtP|F3=^unrQM&LAN0X#dHeAeq_N|JXDwRWw{QWM#OF z?QH>uCiX_A01sP-|5$?3}qgcuD^Y!Szr6kD8v8_`e`7*1V(| zvI@k)_D-h6YybuT11TRIF)=ZZlZhFZl8D&5xVWZd)qkw z3iA2n{|pxILw@-F8c3^0Ti*EGQr>i)0k5aLgCAyRWsj{YtHN2GH#@Ce!r9-@W)1MF zMnOtT>P)*m5(($T()>&`WP$p-=kWLFuI~y&F30NRN%{BMOJqa5VA%u#x_)Xpw&D*Q z97mU%zOJq3P3HqiyAQi_(C%MsU&llN*D?M?z#Y6;ztbpx?R8B7-HwaM{wZ78Mr$jp zVO71{ilW4&Lly^?bvx5UAO&8 zI0~+&VDT7p%F5c;Slrjs0wE~>?DylzH?Kdvu9v2cw)DbXp|WYzuhdwS7&KtwSJ zs4x;HE~p4goOEt`!bCLVZcOR4*7|}i?|qYmXBESCHvV1(?-wBTA|^)t^HFY7cJhaz zaG2j#?{|Fbchi1q&{pdq^hfWPjrV7+Z~k{$oCeD=tqHv-Np0JHN!NlZ#tQzbpNX%q zvM|1;HALnl3@l^2s~5q8S9dCXj9g_%zlFfun3qiMHWu1&Z17s~Ks}kbg8E9NzrO^` z@Oh?|!-ohhsW8~=;*fM(2wL6!(Qx&%Ufg-@JExJcaPqEwbLZUbYUsLFRBKDilD4Ma z0Ucewgu#9|0IU zt3mbN4r`0$P*HXH+?NbQZI&@+xsog^nB?`4YyciH~1AqF!)~h9))`=`{Uj zoL62@)bW5b9ZCt0xCFOOL!+ZZI*h>yHzW%!)R%)23IZRqw>E6taO`Nop^TEMKj}jm zq@>)x&|OIkVs%P&ycxxDQ&UD=gUE^WP0scx++o7dLW{Ik(xOZ#N+J;j~B zb4ZVs<2_BJUeo0){!AA+{N?=??B{#_Mb~W$@geX%BCi5cL$%AgvYEKLsNi>RsCYMrF}I4=(JdhCjr0iJW8#! z_Vl8A2QFE#>@*@|U;2N?>2ZVc-dC(_@A@4KqaSH^do|k~fyeD^E*-U1*ID@S#QUfC zb&OTdc{OpnUo2c~=!#U>iZ}#^3Sfa}q+PV(q^P=%PD~8#i=OP8>`7j%bz>D6?!h3y z43;Nhw0#F?JAS=J6;M8=sVS+(5OBL6^!0;VSlNgv88K1F;l^EZyBXa-@k+=@pkxr` zs9cGPi0+@!(vReStuZ)L&yQ(|yyk|VWUv5TI_nL|;x^p=a+_U1$P0csZjE=Qk}`YS z$zJtUar5iGFK#%=Hr)Q5t_+dsdDp%s`qy21eTJDZ1F@f*92c1IHa7G*Gkg6SYsdkqTMfAwAH zd43PP6{10=bFp5xb6>T6r+VHuTuRrgv_e^bRCVEYZ+}xPo>T4w|FvCf5M9;02BH+D zu{5*zX*ldlTm^cRD`(#O6Qj9!)q6OUzyBfjhwG`4h7uk-d&2EYO2H*4Lk{SxU}PbKZ0X zbJypk%PdYP)Nz`CajC2W74o0{iFL3dD;6SEES(yqTzm2e#%dNW)sbjNHAZCL)DAet_rw zv2x9JY!M{o4{BP_wOf~VoFMsNnE9GtFE_UT!{3bJ(pV%TsoKJ zW?qQ%z5va(<4EV*b8Y$|^0Y66gOO+fFxE%G04Na=5rfMPMBoA?TuSMAe0;or{Ok`G z7gt5?>)rNj9WfEfk&*E<8|$+&mCd2kapg?s%!a4bP&yYq=5?UWWIB^-)qNQQz_K^2(GTU)z~U~v{w2jy>T;OV zZ($$0Sge$UDfaw58D=GBrE($|g{#J8IXtThYejwc&=C(5EG$uSJ#Hid4%j5QxR|UJ z!|AHEb)1FLPCc*JEtpni=c`T51$TVThT6o^=OEn}r|aMMmQG$L-Jc7csBQ!*B8qJC ztL?TMZ{X1GhmPhe<$uw*T1ToSWu^;{z2Kn^qeX39xwq82VUQw33=CjWjO>82c8e$` z;7-s6$I)x6Ek1a$7}*e?vnjNdFq2J&x5;;RkvTb01Fc)INN|EMroY)iubx(6&C*a| z3x#A?+l|wd%EqpyY;!akpPT{2qRD&Bv-e$5STm*N)1Zyp;SGs!zrV(~G_<(pBsSi! zuiBAUbRE$sVhAHna(^S)RYH@6A^!;%FfADKzln$WxSe?>rlwQ-e$$?5gS&GdBIHr| zTnoYavSOhhSu%B!`^^1`r1|}I^<^c-<9Mu;D($&{n7;QfyY|!m zt@wBN--D5agzUfGl8293DNy_rG$97PMAVkIZzuY`11Wws_KOh*M?^c$@8CfJbbuYw zGQg4FxhUC95?BY-rq{(tn*P&-daK)oNDkBZ5!n%*zKqlI&Wk>$eG4RtF5 z6olgP((Dyo2@8R&DF$nGI;%Hkq_o`Jmk)Y9M0#VE?sW#94%*^vp=&7(!3cbm#72ar z)o{@0lfKIy>cxg@_Ak~gvmp^N;WRnpT|%wN98a{GZg27m>vM;z7n`a#6J%M}4Rk+) z{hEC_ZE?6OH?JQk_z||+tp@{3l?=|yzXl&*508GPLz!ISm9Z290`9s;E|upczePL! zuCM)sX$51y>c#V12{_**Hw%h}tXFDxa(+hT6J1!ncr9h!r1GaMJJ)WnF`M&$9);4^ zp2T#Dnm!NJ+I7Ltbl)JnJrW3Vu7c&nqG#kI#37Z=)A?VtLYvX-L`qkjA~3_F z>?OSHPaq}-Nsi%oQphq?&q_oBL~^Vcl{~-+th1#uo}SL>=Xo$|Fd+#*zbITm()7I$ z%_cL;lil2)ZTEPFM?(bUewuOA_iI<@z##5@)%Nt=r>iz?Twm!%98gN9ki{z2mg4sy z9}WG{5P1D6ic8T)kW?!pawEjZi6vC%g6 z9xrQO4L8p4$9!>mawu;II-q3hv9CP}WX=aBTUYkyn+r(74@VP%EqUMkD|H)y`aA4>~F94;8#^nu^;`*94hC&=43XV9acb_3S%q!a^CC2pu z$HL(no%Iy!x;#6}0_H2nz5Bk?z73k+va@5jM>~;ie7$8^11-?RQv3tt*!f}o zcZHFS6t1Wimt0Uy9sp$ISO!s?(i#p4jhAkesA$FvzdZj_7kk zKBRErtJ<5D|NEwx`>Jcgb;EY$RGx9ytG~GTC(7Y%@P)G?U`wPQ^A5!L6mKpmdY>NYMmc0=`4<^ zZr?Rp&k@Qgj8ie9Efovo+MmC8hy>{^dR|xI?GE!c1C7=w<+6KzZ?weNm;6Dvx!CR% zL>sK4?|pe)(r7#e?+8IEqUS{8g^8OM(+W#Zr=l4w16}b-KbR86WJ+$~Xm+(l|?$X&ORJV+y(?nn4FopDji zv$L@5^#ufJ2*(p~Iiap)lU4U|g2=pb zsE}bU^urZWu48MNA$$3(YL~CacRIT#dKoI}c{c$q^Dwxtrv0Asr2A!mfzq=4M!eI< z{HI^E-;-AUb6vKzzAj$RT}JQ4MyH?p@>_4s{bUZW_WJ|#%-%4b-QT{iA_aZv)STU< za=^9;Xn4K5;J$Wh4y_ z2wG9st_ZySY2B`hBL=QjtebwyrqG$mA>vG73=d>Eb$KN1>_YwUcsPf4TFT;vm=EZd z$=H>4I|EF}b-u*>lBuw`Ii6fDSKxw6b#s%|rksXr5Htm^JB#17YnMN&-?ZN7_eh)_ zgcsfH>rZsnUYA#lUcZCtG(Y#LX7%B>0MXSi9&ctV=S zzbNQ3sTmheVa-ue9bXSL%*wRB_<|&YQWUA0^ae|jziSfte@hRULcyE^RI>d9$w)zG zE(y6P;uq2CrM#rlz zf|asa-Jca2y(5Z4g_AWH|C;yWTf%yzcn`;kA#zfA{x_Yullhq5lvBxo{n1@FKh<1N zkZ|!qLO53ztL@g0k8JdBe1r$??<7VmX(1${C1xA|;BOsowZL+met$ObZ+#x- zU1@rvts!bQdn|lC72yTw!8~9e#UN*vY1b5(9ipl$KJ@Tq4>GKx@s>f(H}#`C>HJ+meLc{|blMG0rtQUJ{vX@!;4EF}+QK*%d-A7vi%*)3i3|L!?F9)jAX+zdJst2RvDt)xxsM)%>Lotl7JMNjo+>Vn}zg zjBWdr6jk%`x{U*sUoBoehg%pnZMF6VH@uIzLjpaI3ihw)YI$%@M-$T~vyt9)iM#;n z>U<$Uo;M{E72qk5vM z>-gZzl?~m`RPVEcmlLh2DE5qHUz>G9=2N`Yp95#-#j-rzzFF)brn5N*BJ5TA*ij+& z+X{>DuSugW6dTw<3;Sx^zQgRnoCtJP9$h*}YN+^I4Zj5qr|=le7F~3FUQx$4GByb% zhBByT))i+)SqkQ-Y!S;!vS{E%8GbgG0)!C?(`}e&ZB1IubHhQpFbW!zyLnkU=M-~% zk_+YU$b2B$enqHfZr>cmA zg`(JaF3#TvLo|xCGYUsbvF**HPD4}`r($VD+4T#320<(J$~L`xi^5Cpk(!70ED4Hc zXK>!G>bqs1Ji7H2;-n`%P6rHZu-~u~6s;ecbZlAaa!F z`+vms`oX{-(;K<0YHfbMk7TI2vRrHe`hMu?@pt)u;nzOP3GL znBseeOR+fee4`VnTMVC{33#ef_pCYkzo*<|$RoE?WiClH!)n56p+wT^Ks3(YX4>Nl?BzJM*aaZ`73FwM^t zzs6+L=BbFPWThd9Xd&{PNG~le>@2w$R|^f66r(Abz3jp3=JCU0r&$%z?X?r!0cXZv zss?j%G46YFsDbq;%9N9TN4w^dyQeJvyjv=}{(-}@wYC)%9kRrq-kG^y^Rz8rWrCuh z0lKhkMC5hHj5DW5MQSla+umKOOg5{eIQr#{Axa23Y;!=IJctT-LE*C?;{y5M#cC|U zg7TR|{|?ltxBd()&5%Xa9~DL>eny=MA>Dg$1+LaX{_*p|uodZ2pBZhr`H?`u=Iu;f7T@ePuL6){kr>w?@Sxzr^+f zu61b!qfwbdB*JNn28;C)ORyrp_9Ptb8J0!Ejog6?TgVx#i0ot&h=}1lr>-!Nw1?Th zvD_B$t%;HDZNMQlpN|V?rsuqf(JmC2sZ(fgD;k+wpV@xVL1Ef})D{QCHG5=cIgiuc z8dJaKLoE@plS?Jv6B?0_{M1@vr5A@-C~}9z-ZnTcm?|XarN{{qc<1rW=Uh zNmi5L9;iiCs~c@`#|f>blOqL6c4B}U=T0UrUdmtDK!rhawN*D>=bFdMl{h5oMYWAi zi45VfWoaYvhBFr9Id!$Mn@88?#YG|`@)T-p4s*Vuk#xjVBsz>Ca$uculI+_1EQzCL zwWy2;|8P`XXaIQ@@Npb6WC8-i@Gl9>_pC|dUnN%|JJII8FXta@X1@@GLxs|kz$wzg zVqh8Z%>aOl-q`$OsbTMeksK;SQM{3BHYJN1oIrTv{eB;O8OhD`JA;7%`D@Z4_UKAA4*U)y}1U3iC) zAc{n?%jtvZQ{#tmpi<}6JYz6C^8$bJlUx+MGPjxDko*^hyRHHPOistn7TSjeXI179 z)YY885(Mkhd5=(`h6YjEagPmZLlz}#DJpd}s6bYT`6x0r!7vOUise{#KU6W30po9% zIwH8Vk?0cu-bidNv;gH3Qio9ni#M};GE#g3lY#0*BrC~R#0&TM4VZZci_@H|)O*Fv zx=ve|e9b8;rtTMD|Y$O0BEU>_GNnpF$>`cTyL}S~8PX5zZRN`6DO-OT7iF>_TCVv%Ktf410mL_j< znqUZmd`(9*;>3ZADhUt9NfLEzDDVWB4{!T*i{?UGEzmo8J30;=k*Vfd@5q>m@wYYr z9R~juGH3-q8aY!~X-TXD1t5H|bX5A~pj>WN#8i_aN|HG-lq(0m>z^TE-2TUZv!B7t zv>;+h;}?sgCX8QY>|(}~BeZYWfA@{9Od0s4pE1}q6K$lK;m5vSRi+lbO z5|JB?g^^brtI%MfWSVNqfE@7Hc4m{W#5BF=e>(-oT?0U{;A;QqY?|2)j2`wwG^92(g?KLic53IL zHPt(~DtyIcS53%!Jbbjas#H|z!ZSQ(iN@xMO5zV>`pr$-2*klz4nU)XpIujs9vl@6 zmy;lqo-%H3(w#68W?0wIE5B7?Bv9B`Ooqwx27UX*OJoPN$?-l|AWP)`FTzHS01G>i zBb=hygRY$2eqazwUR>aQ$YpN4Mc%e6g?}AJdXG&=(mN>K;jhmfhg|h1gzU^_WsUQD z?Nxueqp~F>vgx570iWhKB;V(aa`vxhM?Ndcp6d1q#koD3O6&bVc>6<1hh|0Oh9^R^j)1WLy zMnaR>K^Nqt+?>d2S8gw2DM~_`4$a5y3IRUXW`WHMyqUjDjpV0fZe7MA3Mhk+)l7{j`3%i{%-{KS{G=G>O5Hb94e8}f^FyPpw`X=*y8XV#M-_;2Nc z^^+YQGdjQV1I|~!|7c{#w~TBS&mT}lZut|QkcHiJ!o2ru?GA5TYT`(^{v56;@(5E; zCHn~5oA8%utaQfGqfv3Gxxve^@tEhW>?dK7}}IcvWSzRBgaheavT@| zP*x<_(R$85^4+`^oA(8(3C2*M1{oJ!*UNZ*ZhfOq;xcDeW;)RHqF(nrLb?%s$49CC zxSue0awwB=cM>TBb-^VlD|mGngrO){)STNC{Xp$;vukByO;IxzA|volOkyfC4tIlw z4xv8yjKm1$)c<-KAPCq7abfM)e|o!{xQ-0K+e0aU=#W-rO1MU{${zCi|&Vv$(JdCTFC{C>3M>$G0|SMs&$?g@{{^?jI~TwV)Ht~W z4X@C+@3e>h|T3H=RjyXdu3?7Q^WZQ%Wy6r|iUJKdF3DKZwrUQQ+ z6mH5}=4$yWiBv*fKK_BpV?bt{NCg!REh6W_oqFJl`pGI+pX5_ZO8^wJcDu2i})1oMhSzvEO1mV2X*C*kk zcy33_A))IZi^Q!$#bm3Jl_rY&7_dk*x-aUf_jeiivzUB@WL(tuevD}m7a~d9!oIP8 zZe6gt69}VWd+Y+P1=QMDpCf+vd=m+?bcK4(Z_K&*z6~M_AmW|%7Hcgmq^T%upyMDj z{z=WXW?v#}#X-inHCH^(6a(4B=hnUd0J`aQ5(MP8;K0R`H-3v|1fo5fW13(K$adyP zgFTZA6iYT~!mq8ZYmFajddjF7itFhCOl`S)w(kIm#?A#vQh?1ZLD>$DVd>P=jtVEj zt=Qs9HR5ooDkw~83km}xU~{6@Mo9jGs>O#Hyj9*yvred4`#s|)eQg7h7tdrgjb#;Y zOiX91@p(`8sO5x>iln;u_fj^MZ1v-=-5%e!?wa2#zg9z$xES{dfX7UeJx4)-Se(NZ4_A&< z5{bHkM(sH1DG@JCkyaz;cnBxvgv&gFj-Fq3$Z-etJd}KUP-pSQWb@@k^oA&-oNJkQ zuqBw$p1xOH@5AINN1r5OR)MZ?zT7Qi`z1kBF^ZZbVO3UkFR|%CX*+``%0MnBwn?}0 zm(Le$TnK??OIVBca@E_d;AZPtqI;)Aoy*~=XWiJ2wub;nC3tRWo@HqKEUQoJ$b+0tv$a zS?Ig)&Y|Fo;7pk}fq(C#*;RnQ2bzG7HNN+^`^Obm5U!M2x@@6d;MKqTgX)x&wj3^3 z(g{}a8d>Zb$mY4euD!AG?r{54IA3npIAc-u)1JQxT>_U;VpwpF=Oc+E4& zdLzH+=pw6Gfne#!Ym){^CRLvvtV2Ox*%y=Va*?G+gRP2Ud<%1M;$*T`C%W(pL;T{* zXe?YX<87fxz*wyOi!Jwn%WETz@3C~ZBe<0HjD32V3VGxET-#{7jp8>Plx$JX4D!s= zS2eLl^_}d1hmBGRK}wubr@cqckv1TLvbuBV$l+fh#NTPv0q2?!Pxu`E#Ov(~SMRL9 zs;Y4NR^91RLYwny0*ATKk~Ew@tK**g3}QnEj`8sHb-Iy(pe&`5tXPUtaP_J6XBWw$ z%9%f>6-0FJhMYw{FGm=_x{n1D%HnzENU{X5ma?L9&8i>SI?_=s;VM|N5(v^NO5dM+ zM3FY88b&$Gs;zgcSPj0vj5!>;;?Wt!E-Aw}EYE99DVB?0L|ho6nc3a_rJxM!lV`zM zbvTDCEQZnO8!+GM;YX9`yI=!W^aAdpf2NF*BrG=HEpI5geF{Ze)(khVe8q~AVLBSZ z_92xxd`*%0^&8V~)d~<|WyB;?IsIg@Kh3^ibJd%FPG98^Yjb5H5#i>&?MM$?ABGI| zy@?j0t>%&~&sB47L?Wn~Mjd6?AXeI*l|(DZV?#@k;a^Hfh~Z1qA9hwGP;i1^T#HtL zmkx}u!KZ)Aiskk>&37x~UVfp;weX$ zjj2EcbN}yw0R`gnTvh2~T?3r=S@C%V_VeI@tQH5nL_ASI%zpTmSSM$WNf!W3S1n6H z(J8sl#0{V3l`CZH*yyLPquH?^`~hPo2(76-*WIio)qWv-c@}<<{EprfBqO%vsi%dJ z6%B^nv~+V5XM8e>Gy$}x`*5dsS7LF{pWJX@rd7hsDY^Jv{#l8rbx1h1H zF~2XH17BvXg|s)Rx^efbDE7#oHvgdvD=oh|0E z7g@71EP-i{;{9cTpQp_tNan<^m)*-!PcYuKdmX3<82{|--O2M|A8jBwQBu4FvBIe+ zour z57`irOEh(@Q6!b36;3w-`H^RE=reJEls8Fsh2$QzrB{R!8D8zCNBQ$zyfmZ2?aI2! zNcAIvI7U?OLr${x+pyn$q;>v6^kHC;I*&*S<}5p`vacT=T#dHWNv`mr9;t$^Uf%?x zK5vepMpuMs;XqqpyC-jh@I_@?9~TZ_LyVHp^4R~!Vs<$e*xnQ#p9wC1X-H_;hK`;) zA68)up!D*5c{x@X;x}6Bs|n~@Mt&Od7vLhO_me(Opca%%Sa$0m%B5aCRwufhDXO)FcO?T|h0PrD3&qwTj?|DT3d5)(n{XYRG+WCYAgwI8<+VoGjA~jQj(hpfrT`Ftk=;&ty~6jlEP)<>%! zoVg7bu2~1XlP0#&C&%|xqS@vQz>aLW5#Ou&RLd6r1D_NJZDio5iXPORU%}Y;TajI2 znSx!ud>$}1zR%!2qXSd5Kx9M{bJ#`7z$IP9;M9^Y9&N(p5>lpzE;+)q`}#5U(BHqJg+ZsK>k_WE1jRKb3*bgj zb41;!qDMpMX!DXd&X!?zmpwflgU{QCUe$|rBZEUsn7O`B5S-3@WmU`ot5;FA+Vb+E zUT!SLr6I9pXY)dM0L*;DLK1OoM`#?o(RG!f$LI8s%TxV+$40HFmsdrV>0$-9W`9Z* z*Tz`lZxeE}{fS8IIz!;?D~IK&kja2f|D>o z_JXN6A_Q}-{|Ippe3TvRW^D`t6WnH$88;=UMomV4*5uVcJ>HQS%QTQrj*fi8ppg!qJcU zqgT{w>fLasJu5!u5qWQ)vA4o8te z%gKFbRZ!l!00yU#RN6KC-8-Nc0j@?kFo_XVt~-=jP*TL^Mkta|7I|znK8QsHL?x?Y z5}b<5C&@4t-bj_u=~eux@bJ)#F5@<+!BSlkbwMyxLAOfg+z6?gg=v~M6kiWN^bnc# z`+7V|Gq~;2H+s5wW8e0Jmgl=GTQ5Di{2<3NTu(l2`wG=J8eY7Oc90GTfaAdO zfvd3AytcI_iL68}+hR7;m5j(Ecs;|QSl}rCfI-kvQ9bat5J4t&7aj^Ny#El*q&j+4 z<{0~IzxZm0g}wbFQ~79@Hg$*lOqY7lo|U?paU2K_xT*emR{YiaJqYsw449TI9PYPt zVPmwer1Ib2SYHpvE-JDA?y<^Bh%EoMChIGPs0Yzq!pDlfWgjYB@KFO8=Hr!FZAvP- z(~JPQgkst~S~}+zm;9l`!FjJm1jW8@1|=oBZlJJFx&1PIDHBSwu&akPu6Rv36ulz( z9uF2zf0D}4i)eXuylsuGI>Blm5rfuX|(;Ln-$5%H6bGP zq)su-p{X@|A8Kso28F;QHu^aiNS4lQPJ)DGr@j&$Gj8f2P3!|IROkLpF`3Jb{4ZpX zaRwt&+Sf6GOAI~Ph)bn<276H730lW^gsf@DfMeNDEI&y-5!Zg69!DS2VXe~}R0X=i zd|)FHMa9oqA;dmWzX`{y=#{;n>(UjVeIl-lv_bpfn8p>P?^r5!&HwsTWWL3T9f^=w z!HqphN<|j6KE318#4lb}Px|M_#m4{zv~wd^$9SBaP1$ETLXrdk8N)?Rsg+QdQFG?% z{)YH0%|*p%EO1s3IStV88k)@*-hRgyyz`r2^JG$7mcJyA^nGg>U17bz(c65QJ15%u`q2HH!+i?qCJPJxcKt0OKVUasFQLlc$@0Xi$Yz~L)!cnbAFmg&MPe|sH zscb=aErVB6X{s#sgQ3!$-D^N}&!^#GcMlG%Jumdu6#EY#+8heL@TrIhDdWhTXBeBC z{{5r+r;l6J%-38ua;L;oE`5#0VSNfOl(0_S2G1@yL&xorVYB1)Z7I zPkx^#sQd{Ks#tCY;(Vc=_Phk1i@w+@>Cl%1-N`Ky*ufdojdA(D{M8q z7ZwU-NUlpUlkH|^oTUi}E5$lfuM=Yuq{9deGSk@9+l~k(5d?fllD%C}E%ixrsp$bV z;T)MgLJ6ZRb6T0(T>E83xO_St0b89dr0g+p3~cagJ^GM^&jt6zqGPq?gpM4Cz^5G*4g{%E}q{CqPxYP#HBV)#O;p1$N?MsGAJUGCAHk% zlXKA`Njz2kcY3^Z5-(6XQMhbpkzFeV0?0(9Ii6m^+T9cxjhiz{m>EdSb)nE@ilRybHAcu?hBvFUps%br_@%9= zsvdrNK&A>YMPOaDmjvM%Flp?%zq2=bj2N9n&$}$j|J#&Khce@ zW&ii%PX^jjJQX<^fm^ZaQjS_))v(Mpr&;=~RzHmmg9SGD42Lg4<%~oT`b@%ofF=vH zP|cs(9*RPVnVl{Eu`q-iJ>hFMMXvLDz)?OkdTl$Fb_Ml zzUPY9aql;M>u#&v$pDfjW6{07FETDJTMuF2IHy&U!YmwxZ?XYG!;l~QYfnyewuDK- z5%~xAmbhg5&tsnK{Mzd30$yH0UhFmb%+be&Ub(Joi^i)8ehA7SbubvWII0s4ck+m$ z92z@j>OTM`h@W{5F-1gNoH1eg-eKDwni>qJq{%Co#L*dMWi2HKv1$EYn?g| zq_^pt+*QtYbsVCWAC0wyIUjV!@87G35DoLAyNQmoq8U@i?+XhH&vSvd&YbMEdkeGg zYo0i*oJPASjl89Wm#S%0^aDEW&43>%Lx>s<*@es%KEnn)e3#Q zp0$DOyJ$&DZ~FGFrS1f{sJmHOc%&T5!)y7K>H*_8{@4^`-soswAJ1BZ9dgkcYPx~a z>#F{9dY-@l_g)BDD=6pTTOFOIO&yrQTh-yIF)o*Rp;H>`-A}(-#~(fitGsK+<4+wUI~aal3;ZdXH|CzHkq?XYGI>j+OmHd;&_JuP#Tzv*>4pXcpzM{UX%wH6%3 zr}r`Y{tWi1WDS=!N?bElZq9kKXuIz060Ez9ggMgiKPS~nfxLlMs^Q57;h_z@^6t4msG%zsU+=7PI zGx*|-S5ev`GCHtm$yNB%BahK{7m&P7?Ic%k5Kz20Qj>&Xh9aV7pjBGqae>zU#yorMkdR?40T)fAR;3Zfj3-@ppQO7XU$H$_~J@L#|%d9pd9+dGrKHRe4R`hQN$YQ zg(s?b4&_$@?Sv&5JNFJ$ZrO@YK6nu+nemvr;2b0*$1$^Qu*z5~(QGYDtdUO;uYT_% ze7gEcb)T1Cb~9dm?Qz=BgD`&LNQ{~?jInN9w8G5TxMeSa&fO^Ech=xWQq{w9)?T5#3s`}fDmc4_=j6`|zGP_dd5 z7-(GQa@d}2vvl4~khcrixtrgAUX9k@zx5`dD;DqJhgalJ8b5bWMb+_XhYlU~WcSU{ zjU1V$?mU3bB~q0|O&fyPr|A9Geyw&A%GEvTgvF=dHbMeI86w(&qlMM1PEt2sfic;zJ~I>HzELi zCgh>vP$62GiaF-8%Mg-36s}{3&|G#JTQ{!xnW(+_vv@d%bO1FfZ_Q31V#uDAh#Qhtfb zHfr&u>5V>AS)1rKY^6nkKf9RV!X-7{$w3E_^Rbhw(HB>${o|PO3I5gCV6a=NGk@L2*hPFot;I({wWqxKINt5q!x3R zgnS0lL8P9EC2}&xk@ek#+wS}Yrca*BYAh$1t(7&*y9RL$eShsjKMBVj!z- z2qIOdEgtFA_9w-`#98ei#Xh6+z(VbJEGc-@?RR3>oW<~N-i`y0yZ{{9jz0QKqz+EQ zuW$VW#!ncBK|_X++n~RFkOrp;eUH4jq>T5kW%#U~3y_cP789bhc5)GJ2IWX13?{GQ zxGxJ{3oopoa^s^EkFLlCQqaX;NLzM-!jtk{p>Si zhc)!3_jvR=Q{OFJti*d-M(3aZh!CnccbpS z^EU6W;dz?7@46H#AN)PC(uOgWu~pf7ebTtdo-!&vfRi%#;IHNsy*ZTJ8;W3KqDm3% zYKz68Bl#FLY6`X1cVR$wU*?Ys<$g3zG2ByfGNdMDBB$RlCTZLW^WlSVv%GPW!GTbE z*m(&o56x#?)QoF_Ob8y{m)>-V=xlFO4l&$BQGkG=l1s_Il!0CR?x423g&J@dzXE0;_bo#t$VPf8SX|iYu%M-~etch{t zIO?i-$4p5@bDfW~A@{;`(bB}-S1Qwp9oyc_ItKu_0v$Nog$eY2pK+&qCU4_5okGmliHrKbK>Zfniz zb!v8;zhu6;OO=R0CXDEAlvt;J{@$CKV|-Ko?-Wo4{6Unpn_BCbKt_Wdte%n(pNvr> zCS%W@ojjH{dTO<`;>yZzK`gK^q+gCYXWRb$2xiVT9pwNCf6!}haKB?JvvcO^& zTm)DUZRRExRMa!4oi{21HhR)o_Jz9lgV5>zK)7gtCj~UJaKz zrtAPI9=NQwc&$E3Z)7>i{T%ju~E%D~%4Z`);-i%Wv`w$c&G3E07dv0INwr>v? zmX&izY|lbf+#aT5B9KD@64BOihJNFvI75Zh&z3I3F{W~AZfR157v%&xQeR2Ilo%g} z_~^c<{o)%0)Yl_|=X7;*3p$DpIte%-(4}gOgFv=ASTKR0RXO8GxkVW$RF%`!w(vCiQqB?VJrDYOJ^Lwr>5T&*Gf4B+d#~;sGA#ECd6)+e9N}y* zWBDb_>Bc5S12tr!eUU1E4|3lEAe4omCAd7)sB^MV@kWyqsd{E=0N#IV9Sa>KVcO(b z*tUJA!k}oLIS+ZbmvX%sIRpFg%PIaZpk|wnCNfE71tIILp;=CfC@3#80-7^c{wvDm z`y>Q}>5#i&AH=m(`k=g41n}}V|7*nwh9I$$rMJe$Bm3G5ux0aCs5n(h2uR;~64kh~ zG(tkKR8!kRPJ!|_f6`J8m*${XoHUQ*#b*vF8}CIH2t6HUG#mrl!5wHoIhJ316P<)I zc%0}Q)FJ=ko7~KIo3QKjFCb`Tf$X$6SmydLo?yPcOP61XnKKq*_RM+s*##HkzI*?O zuQzOCFppG@k;TAA<;8+7*zKg931w1dwZM2<8qVFqwc#`{;B=l8-Xs* zP))y-)RYJLxA&Q+SLs??TD_xb`ug>qcj9Ex0Vbsg;RGS2_?sqi=VxC6G?_@8h~hw_ zrBW)`6w9#C7M!X&ic_bGu<)GoP;|P0>6ootKunzc61+-46Q!Zu!5__s>CDBvYr=~9 zBxMn%uGg$gx}vOe{2EAzN;q zFjn2sj%|DBm?L_AU*lBgF_I77*Mk;Y8ycL<1y8Vw9iq|FMXLfAB{pwpD1YT5K?&GR z7C>(>(b1%X!gTfYP;@3OWDK6s5(omFGmug})4#RGr(9cIp&gr8q}1vYKkNoGjgd+D*K zy5Jih2?*j4ap=V0=k|t#gxUjSyqUjWb3U!muaL~wd&dJvt}&# za`QKzWBs}fWaEUYU!WeeWRM{@-raoEL0EN}v}ga3H56FLd{&c);53?oP|s3Nks-0z zvSl}-Sj$|e4P;)m5=No1Xhd@x>T1uRsHm9PUVZlFw&Eff1?a+xv!WqmFnK;QynLMn zx=`uvMMgeFJ{HBCfLwI{N{Zk&U*CM)mfp%f!oV8HC3G?!bO&pihmSlLcmM7dRFzjN z_f-)AxC_t0eC#kd2g(XIB0Y5+#*NM6c3KbUK*MFm*O|Y0|31jS-6$NAjI)SBV*S{;;|P|V_eVJvub(8?d-F}p6ZekH8~umUlJXfB zUwVOl=loUuP=duQS zWGGUWU5wU!Yw^XpFVH{pYH=869d#y(pw@rW)?L`S^K0&(iM!@p#pCH}%YR6phe3C| z0L_@uXpc)&T#cMLnv0|E#1U8@dWm}iciixEM8`+ar}m`*+{I5AtuvQtc!6 zLXejfRp4P}x_SPECt(c8P@7iV_b{%#=1NxBX~YN21Gsa?HrPA7NJ&kliF63F-%P`t zSqJeBv*i5xo}2O2mmBfa(~n^Qqw}QNt#C}fCY+NR6g@R{E~C*rCOlmKHS-iKCS^Y* zVCSdLd7%4<-u}@uGQIUaWo7rwnYrlczi#;C`sEj2>VEOXrdHfk_b6JwJt#N&t(7q?fvKZfEXwH#4|$Dz#c-aOGuF31B0heC`4COUvVS zp;&S--A{RN6-ycGol!{p>|I#Xn1F(X7dLuX?L`edh~D?6D9XJfb!8R*2r1&Xpgxnsn0Aw2W@6=>P;5_>cN zRV80B_j?@8eB_9vM^xJRdZ@a|{`l^u``h4Ey#T>W(S|-e2>HxaM+gS#cpUvil(>q90?%1DIM_CMbD8Qd|M6hpey<;FMNH zRu;BUJ~(1tR!y<6xP#Lhj0LkN(HkxUk397|WG4^jE}ZFH}4=ek!iWf$Ez|^w8aZ|q$2m&Pc|Ao zG*s4kD?2+o=Md~C`1eo7v8HD_$w2hFCLrfc>7IIOWkXg@_FdUo190WFztA4qx8Iwd zl|$C{L*`sRiO>i-gD~)fj4~$)VI}{4h~k_Tn91BF_+-Aw@7zIXs}yzYVwDz~n9A6s z#ITF9zcP{WQ}h60|JKm6uAO15UJI+Kk}Hr?s;S2}v8NmPlEjkqw^1)u974DPUQmFd zc9sJaum~l7`g8_dns_c6jJb(@pkgk7i%1|(G#vh>P5f9xQE}z(2sT@ z@{hlRb?O9^a)D{Iy3xWy5VgF3m)d(HLBcfyfdsjk3bKxEyU_IT^9tlkmt2E$=FOF* zP~E%8<^u9>n~W2$D>iu%gVl=(I5?gj#=DDMzpc%J+itsE9kOZL0VJpQ#S;YX!UdNh zK0X_RvF*AR{xI6xyopja)gjRCK1ZR^IPdK7={vOlEc2J1~ZhLchM{x7f~F zdJp~ODOS{FkGKHI*nGG77G63plCtyfl)%8iPg+`9Qu(*?qWkW?z4hq$TGv9W%=zQMMNLPiU25pE;R*6Iy^y zfDw4UMSz<*nQc_Eb+F)|G!+O#((JSE>fjKtyXba1EETP1n&3E;kLZCJ%-9g5I9yp& zblv9@Q!c%Uc;J#=U{5S(@{U;*R?bSw?s(a;Jvm5E)eUO}HY#-7&!zq#{Q z2o9r{o>C}wgIfBcIw*grZpvM-uk4BF8@N%%&dvOII(BgV`t=Mh`i$9bUWG9z8n3;x z9`J}cM)t6qJQ zNiA0CmWy5q7okx>@)a#D}Upz zG)MH}_T449SKg-A>kD$=!%RDUx-MIDH||If@l(JpP4<$YEiJ_i z5@YhF+(L07(7~uX)@yDg=u3kPs4!_!!_rYs`p^e(MhE#mMyX*JSzhTey()bV`P*H4)nC2(=6nzF0(ZNuA;<3O+Lo9YJ9*`w{vz0->6(cX7cRyx zesQ@9MSb|eXOO}IgHF3B-9&B{zi$FbQ6}GHR%|;bwAjd{Cb}^D0j%88+$dS5NiH}E zsm>)Op+7r$>P{{k8YXzuFe#*!*As2CwzUiO`wL*NX+RL=el5W%9&EyX%lUjxExc7Gt;PJ;_!NL8<@$pCN*<%;RPMpSKlf_&>>RBnq z=b#f1Xks0BAJ7?)BzMO1k!17U#2hJOG^zlAv<=@?T)XUsp2|t{(T^ z@c;@d_G10#avgbcGPPwP{HI`Ne7k<`;>8P}m;I$a0GkYJuWY@Rb(e?6CQcG&vo7c@ zmOf5m236O9f$91Uf8B7AjyeJUIfg?|dO7 zlhDN{vXp!B5Z6oth{{j}Y}=&(LR*K6H{ksy9{=b2t=Zl#~>;Zr)iG zr|^MC6L8O9;?>B*uVP z3q1dthIwyYUWq&gj4v!K+{OD>c+X9$K4A6n{!^Z6?%#jP_5AWW+{||C(fK)uyfZWe z;Gn5(|II1VZ=KYp=daw$&m%@W6vQaA-5|P3x7Lmjl$YuY+^;rvl8M zT5af;6^E)zOTpZnBUG@pa^a=zyO*m@d~FvNuL6W34{(c9WtMf9MRi&S6$TPFhv*!< zld0xLaM;y(JIR?}wOPe`Qsj%I4?zVtunEhQJ2NpJsxlgNjK^J|BQ~Qpv;-mmRfuMj z)8+{C!5L@J=@$H|utmvY0u}LU;Mx2XAf!5;pBbHurF=KKtw&&}2vG@+&S>>vm1_ z_8XsS&bMpz?ToiHZOVN8>GsFnY1^L?oPUL65$01eT$1C_gi7(K`=AY!0#9vPj15on zi_x9kbUWkfoI^LOTr2n4I8N{0z)_#r%|46uryD2GC3da0ZX+*%@k^(i5&Pc_EHRG+ z4+sc&2|W4XCK#%T{qHvYs_wz(HcaCPKoXZibaX<1d62osk6dz%+3vQEi6+#t zP#DaE++7vZDk?iOn~LQV00D*qAb=sSv%J)ChkyD1w)Lc8Zeuq6>7b2&V3V0e2qurw5=IAAk6jnl(!%&mU$2^3LJIw3((gbQ~ZVH6w?9 zbNP8_N%%HQ!?9t|+`v0iaJ13gzaT3299^0e<{C^5w>h(O@Gt_q8)gWQwHFs_{}aJ0{^JOp z$utjY1q}dd)BWR3qiAwnp{fFv=H#oqgi1EA zmI@d;N@~|e*|bSAo4CRU32$d$y1y-82oq2%N6=p2&s8CjP7`AWV_G3m;R*(L(U)Tx zCcM>&S5b*lZpk40wu}X93)rrT3J#73A(+Ht*B;sDNW(Fc3aa7&ymJz?;1vDfU@%@* z)dFZGbfPebJz(E16;1wJCr_=>@C(N3wHKbCeR4gO(?r6~%{Yn=>T(Hnt*ch81}55* zPyghTA1FLDKzH4J4KZ@G2$;z!`lx$*7pqQOxCeHcORdR?w;Nmwb>HgSE38@#xM&*% zm_i9OpsUrX zQS~iYUSUo>ld}A?)nm)mgse$bTZ~4U1oIui=Yz|ZpGHgzd^sn(3LzSfW9qIKzlUmJG<0`C z#VB95LD_Fjrnn_d-MS6Zt4}|xCQZmjV}HJstJaL&VAj3z$|U{ugBNtmEf4DsS~SHc z)CFf=YTCSk&N-*AmM#B5k39U6k{ZMl(=JqWOo(EmV@V0#RkIrojq1=Sq*G+Iy>a|L&MS-|4C=MrryNpX<6YV_|^tI+~V=y}Vjq zeX&qsfsK`0yk94dA5&Cx1MP#*4Jn5tTP>wvreCjt8antQfI`01s0&8n8!?m_q_`8R zcG5QN8M5Sa^7wcV0l?=H0t1XsjHjrm049@U8#0H+co}wIY9`$C$*=yJuHe}(wR)&X z^oPHP^|OL?@=eWp`qdBqpl|+T2;JhKOio35`kolVST4niiLwZkeg50i!^fsc8$Oy3 zEt`&!y_TN7jXq{=w0_MjXt6>+P;36cOViaLiUtq`CK<6Q4agn%D1}E5B#%*GXr#)? zek+0qOWaz-nMQu9WrS7v2cfTG14ER4B;(+Nb3|ZB(go5bTh@>hFPxeTFoXmsm(W)y!P1md`o=WHuZzxL-O); zg3?gCpc1r(u%=zKZ_^31l`mYU)DPc&-FEql5vI?l&(`pBhMDo&pA|3>RVQr zsbRwh>*ZJ9)xCG$tYym@(rLB5R;^y4<*V!%(F*Y5elapno*-qo9Tk9?TtWcJF^$2R z|46sqbPGTpm+AVOF4M!?9#+S0?OY_l?up$p$Jlr_eaI>b4a<(1z~M&14`xGTRD_C( zixfdZjSYkA{yhU$%D(L0+ahsn*BdCUw~C5RZ{l7aVhR06B-8xI5IS*CLF|f(N_-0B z)?~Ooek>D>|7_Sor2{H-TSO<+Pd=LFHh$&l$JMN5eTzuT_c)TFTX$9AeKr6V^Ojp8 zM=5GGWl`9gezY@ULkP==)lyoGNXxK+eQ*?2(bd#orhKUvucErGvWx|4F>KOLfindU zjvw<}g^KTFi~HkQerAuOqd4MpRPVOnSY`$o#q!@9k#59o9%fF9&+K!4$HUIkNW&$? z8;x_0w){m3gNWka=1@CrF%0-^@J?*QJ+T zOi6ASa9T%z)vCo_tjrXt%Q4JU@C_&ikm53}UH!9W%$TBiKYhtIU|QB~rzQqj+&z$JqD{uBbrqlIl;bYQ^i=nVV!#S>g8U4{K+S3)Ao4-vvq`Qeho*CNL&wY z97N1bw#d2-%M3KaHfD+k-F;>ZtY-W}M$ZOzCu=rkJJbGHH$L%x0U@vO%|+GU+Gc;- zA#eU@!&br{elR&MyD2+6d$6Bh;7z>enoRt;Y5a%R=g7%aXrkatm#x6_{+fFA7^UGu z2D;xYOHI=~UoBHiLV}L?hAYo6T!jGbtzM+6Q;2f&L!De1Fuu#|+iCgx)PHx_L(|{|DVVD%>y=ei?YtOSEM1n|S_a^P_I4B|(W;>1#Ks(&(4eZ=q z$LaWbnh;@L=T<5i*heMj4wHrq(viauU{BQedi4R?*rQZD>3BUzl!0j>ZoMk~aJq$& zcTl8-KP}Kcz&LR6DKWmadUYACPVKuWE;dHB!NaRpCyDPWaM)$24fu9x$FO^F^7;5B z>*Fa?327GTFHgRyN$Wh+*2&Om+{19Jpz#YSjIFeWdUv&YmiW(LE>v3K;y5g@Wc zoTkn}uyX$9U$FPTe|S-HP*p)B_QIml(iHJ5QeZ1sPly4+MTDwiBNfo7zPxDUP{wbnhzt8+!&(Hm3^SmLZ6nw=EDux{exK!! zt%*ACs1G8v{hMOyhLgygzdhUM?%DQb*W{7RelP=HB)&PftUHUPothR_Ir7deRXNPS%PU#SmMl?x zojN$Z>gZ_d36g~3fTy-nTatW;fv=?n)n`*b)t6s-G$P21+JPk1qXm^e5d&j3UO38X z!65D27cQ8mE3dj9sU8cFdZ}S@lJ@Ueq{T~@QFDHdTDKTLjsNwex2{lKYw28`4{tOD z+X$WeXyFFC561MkEW@y0xoDv-9Ce*`?D9DNf`Q8R47*?d!eDdmxBHR5ug_E2#o3Ek zUk6w#e`po{4^QY!A!14uBSxNkJ9XyWjL4xSb8kD6_@`6MhBl|mmaNc%dEcsM{|nTw zzbACG@lcvRTzyb=P%XhxgqR^pTU*43&33n8QpE@AHMhQRa-u?;;f%wvWuOecpt4v_ zM;Q(@>&{Zl`*701viGJcd&*+Pw5;uVk>`YltAfg`LRM^m0QXZ#YfMgZX07upCH~iM0YCKE_8jiaV9t&21Z102Z5d<7o$-%=aUbmgS zl84@{qpHXq4>+=41?yKSclHc+U~H~t#B1A*W!m=WT0Qsli>gyMTHCkoRJ{iE0m{tL z9O?z$e&aPZ4p7rZT~v@&srDUOsb}vlgyw*W##?#n_$eJedO#;g`;Ccgtb+&F>%@uS zSVSE)<;&%2Qa?5(^0XW68xI%*H!=8ufVd=LX6UV0A z9H|C#b>KjXc9Lxu4V3kc-8*pvHUjCE5FLZd{uhU{*o}9WQwdi)#5d$Ac5vmtxRbMP z^FK79S995l%*@QhK>t7siP(Sv^XCkin_R~}0WwH@DJa6$4+~V!NFOyM?wlAF;$qZA#g*CxLd*9j39Xd}DUN0l z0jEx>@_33)r60vpj%WGAVfjYk(yG;8QAtfzzG<~izWb1BD_O&@xDs3YQl*i(wtDqy zmFAv?Nd)PenX@(ZlgYaC&RbOhD(m{AYqfgq8sML%01nYX`zeGub%1zyquTf$qjcgV zVaSxt`f=_eF60ysUquAg1;5@rAJLlq{a2I>|4AL&)>Y=I(_|Jlpzvj@-g)O0d@WDw zjn}@=oqxJi!NFm?f0)Qf7~!+5GkNtG?+!6|(M^kkFZ4cs%E7A9JzXVj|5k;D_ z)WgS}2H^2maOl4qwmNJoZFY_CSHHE_J}ynp$LEUT{Nl+hs`;!N6sI%DG}T*sesi|} z{X-KvHmTRgX=d~r(%(I=CrM`7y8Vg| zi3329EfKEHROWDA7{vBlF9_09NZ$qt3UAmzr4YPX>%MGANetY^GShGlv26vYFAm1I z1WJtx*2OoB)}_PyYSx$EXu>@=DRUJYMfXyRk>@GAUNaR$#;U@aDzc_ZFfGd1rzOcy zaf9c-NIjDyHM&`CwW$-M`jor|qPm+A$!T(IdrsEgyfVG=@elgy^^c^3mhC1rXf}%P ze3i222lqa(RXdgL+^h0Ap7%FDevj^b=r(~zLEgP|{-`0^x^A65e|wrbv~Q`!Yi4N6 zp8e|8p@mKyJ*g!t4C6fvB2Upx*WX2Gt3E)EU+D*0L6wvob;t1Ws;waZ`fA&{wTtcV z+`XGB-C(63-=+2IR;d%&Y_sMrai6trJ4zcie@BR}1*-j6z4YQIy6^rm+Pi<7o_Xd8 z?D|G9J97lW1v$Tbl9(n>{#1XRJX1?(CB1CrGIz{#&mE4%g~@`%cU<4IOx$<>^$$C; zds{8~U9pd?Ds#hIIv$2mKybiAd@`T+aMv@#Znq6i=IkGTSSLfZG_TCdJJkYAu(#pZ z0T3Q@VWyO$|LVK{%hyb(*?9c5+-fVtxclD6btq-0{_^5GG%6gT3{VbUowZWi(h8l# zC^3(??Sg4_N;GfGiw^3T0-Gc$D7gW|i1tim#+>|?nTBW35uVj#Tjdqx&2POGhDUgD zem+D{phop;Yj}^&8aL(!HEPz*wPo5q>uu#MU9GwSl?oxF%?n9h%O{+;d7$EHr_?_& zSod^E)?Hnjt5@wv)j{PBX3w=qQw_kh2<7-*;KJ?NzC%mCoux^4T|-V!EnW4>l+*5C#5E?)(QJvbfkE)lXLx(f)z=x}Lou(AW{FU!(;f3#yKkx!g z`(PIJ=1-}(2!|*6{D)JHY0auly5f?Nnl@v$zMVNor!up2$9*?b&~l}2zV#*r!6=Op zyTqbjE&mc9(p8%F(Px_R&4<;O&`phdwpUTzD76{bM)zHEzS>2jqBCo@Yva-;PKfTi*ZX&; z>Wx?4*GGSSnolrACQj0&*IlltdeK_IQe3?)MYVAj1_YyRp!*zIxk>Z;k7LU%di0^^ zwPV|QeLZ`oKKNp;IyFyFMb;_hfb~A(i#d9K>Sr7y1gy6vYSb`U)26@gj`7$t)3Dp4 zH09%0wR-6SU3k&8I%oJf`f|osn!oT%oN`@Vjd*e8N%ijB7X}MjE$PAs4jyv%G&^^{ zMvuN5r&|-P-mp!Fj%6vjR;hMx|Av;=eKldi<4SJaSUY#F*XN&2)$(QEy5riPCnvtD zAwz~}+t$sx@s_LI=NmTeR7W%pYl`8rcReik%y0fCfN^^o!*T1yLk2~3)JaQAhw-Or z>*n3y(#_TB?33ECF;$Hl0rFW{TAG)gpX=r8bG%Vf(oZegbbj%pk6uV;=QbT@wPgQ8 z5_(P1L1}40Ct~I+a8w1ty`8S*x#z!_*I&KFE``v|i(Z&tsxf26lgc_x&%N>EM<}k#I6Typ}FZh*3M7XyqW*SgYd& z^OtMVTQhVrZTXoiXxU_t8l%3p@7-O^TO=tgBmln~ppb;l_UzuHTgG1Hw(Ux7_Q1=} zS6_Ou$M8u$*F3qnT&us^pu%~})Zob*RS}Pbh4`~)uhqH>y8)qmxth0XuD9NJRz3Tk zr`yJiRw&N2a^Dct@df($vv(Co23kfnnvUrxZ8{9r#aG^@`3t_%%K20E=O^FNO*f8J z-P*uk?@iO~H{Y!Vi)X5SVmpP0L_6nT5XnPUe}C%KN$o$JqG)pZPo3VYi!QmB+=VWb z{+4RPy7gM}(;Uuxzq_9MNUI$@cnIDyjA}abwrApdm_28<-gv{q*uMJm2LLI6 zt7aa3*nqptSuzi%n)7TA%a1pW&mt7IR+u{N-Iqdg&l*kscrt0c^V~6;Ht9@rj)B^< zJynZWuVPCd^eZcnHM6XWs7a~n#Dt`D?AH9e*|WbfSN~Z}?0-l?XX0F_qrALm8mX>V z0l0wU+sh<;_5F5p^0$% zV=qCfvlgi4DrdPEqDv?M7Wpi=REWC)TEW#({^}DKtTuS=EfAHPovrgV>?B>)iXtsdd-JYD*J_Y|dvPt(hXjqO^=8oxtKCrQZ3B4wsx( z&(|MQMqDk`qEMw^(lqUzc%v?W*nF#s2$Q|72kv-G;dt)rw`{95WVlUw?|DTw9*RC6 zMMu?R$~dxA7hHaqTDIz^XCA#s=U;l4&Koh3_<5Mxwn^sj~{91u)ah;2YmTLOcZ?t>YK4)@Nlv+T?w6{uX zjC{(oiwpc)wMlwq+qR$05$wmhB-zGT(AhWsnVx(0oh@hNL5=aMC@jqFfpophrj?s( zg#X*;Tf@w&zqK$G;ceF$#6G%u{5`~T8#?uO$8r4aC%hC9=c8kMg2m<*jpd>vG%b`) zwp)b!;-Zz~>^fuONEpj>V+nZkStScMH@`r>c&0<6KqbW+hf%>Q@VAw~G9g6dV!~1$ z?@A!_MpTCQ!hoL6DnP{Ms2}gop^B|DkL2#1)ttwuv7>eBtvn#Fjw*v3@`DG{0eCos zD@tJe*GDHYpdEV`g+oRk8YAz z;SR!O2ULV+H2U%fQI<4_%`c&5|IZQ-sc1sxhxW`Sb${T_&RbzlZwUgGLu8u*2)n z2%{E&8^P44o16_$g9g2{f7cE@HsLaL?lK$=;~enXn^QPLjeF~E+5+73w_ks$S>MzU zH>I&%hw6q~$7|4lKB`~8j$`6gOqBUZ%qL!uEPVf><80KR!d~ z#@(^WaI)+>a8ymP|D+Us`u$J3;`~9%BGc^dPv>ju>SN?f`(t|}%_$zQBKB>t%7)8k z5X~_iTFSeAyiP;huCt4kT$*Gj1=E|N3NJjtm2_+|RGP4GN;MN=i zP+=^w#e%gyc-C$I4h0rrVD;*$meN_mhb)swV#k9il4%bxW1Ubx#o}cT!Oo?x0jfU? zYt9InUyJMT5SQOCrw3bo#b$A_1mz3uV>`&}nM%6TEAwkR10-V@Ig* z)P*YS(pJ8ysXBGjpA>oWfYS2Q-K~51rS~-M=BshUEzt-NTmIR&@RB>!yYD$Ou2&CWhypz5ujNAen7} zAo8O2AKZuZ-*)DZ-MSBVx%E46GUE2cJR(D}{HR8c8lxwldr~c%BZ19yvZ*(Y?8uyZ z?aVG1F#FHQ$kN=o3o+L&b^9H0?iIR;W)V%ABybKT+Dt3#B}><8%H*&3{)pSA0nWtS z)8Olw7Kp)b=V__7`DjY$LCj8>cYJKprliL8pX}JN<-Wn4yQf_^?!s*MW6vL>FFPwE zcssHGZ{rU|=ru$RdS{2w(BPFg;cD@jXJ)yDe|qTPdrIe_Y~Oe`xdKX*CCob>2)=1 z)dD6mOIP9mjEd`}yY9S(?6?Ff&w@!v@d0NqLxo+VRnf zq~3oE{pw1A%07N<5Btwos80iR>DN&Wlajb|KD3fb(~k>2cgJ3|a1Ax`T~z{hoe%SC zX~MQF3{<0(@aRtq7K06VH%U5MnfEce`R1E(^wnqIM>Pldt4UMls4nsP0GR5DbaD*n zNuQgEW=1<|hr#FcJzGP}E0AHeV-uBFKZbTtUR67GqE}`VW2hjW654<^dF5LZ6#JM*V?J(c$tk^G5bi}bO z1CI`_FoAmXA@`vfVI``fd5SA7#DvOQ4!B}4*Ry^(XsTW%3a%ZhXi`Sw>clFV#G0xg z%z_EywW)JU1@;^y|0_r66q-r^2|wXOdn)tZM^t>?ISQv~}{#T(;zg@=-;O!9{80SFrb&do;gW}4;|2zSKk15M4C2j z+^mir+iTsr%_=V~QZgaC`|rDxEb=P-<++E!)5}v*qehCUUCTji+x^YS%cf`Da(2$e zF%sij>7r4Ws$rwXFoOtk;(YUv|n_u=z;{<+uGrR!t`g^)eSeoTlO zk*5J-@y2WK=!KV_;2a0(v+2uKw_XDnREnN{_GRG2mVj7gA0Gb)*7RL_^3NrJOzk*gM{4^JHco zO$-Z*+2HFN5XYoed)hsF{7s2&s}q7Tgj8>wV0-o)QuF4m_^=RFZJqk{rT-d>C?3tiXbI5htP}(S*sg&&NdcJ6%Mi(oN#3kA<8!ffCM%>5Rh=xcGO86cV0)1s(klB zg^{UN%y06rk*kWx8@DVrsMpY7yimPEVHo~s2V!4-EEvNt$8Z;>yvt-YO0tD-0>B%> zbamuNDLNZrCushn?{({K*XyE-uh63pKB876 z%9!$LW~r^vG8~8|HBIZN8T2Q~cwc67>q9F;rprd00MrVTsQzGI8(dG^(Y^;@v@+q->!_UV@zICzkD@7<}l z-hE#)KV7Sy{W>cc!p%5-P}{a_L;nI_6>Tb=)w@r&vDw;b<(d=T!7i<=h~=igH+AoyjEZO)4O#rRD^ci-b}htLgx z;hV4L5rP@69=*0#e`||>0EVu{SyTh0)&V+s*G(-jjY7pGbrUsh}JJDUSTbp ziY`TtxZRC|==c(xwlYdqixgXsubfvuR^`ScioT$)ic!}^>^v9WKnVmw03OX74?QX- zofcd^x^F}@uu)O+XYo`JzACriFUPYc5@uW4s32F}3ZjxU54O7g0H>s#a2ONrI(=Ax0jJMuX zOt&67wPuH&n0O1-X`A%vXK(AC2mYdd{dy=A#xZ~4PufM*TJK)Hb;-pSBT3^OxMLAz zrv^)9QZ9yYR?m9#R<@QcnX6gfP3EUz z0EG;sHPg51P3i0FZ@fYby$v4u9coYbvrnIaNbctWrT|(%rN0QFboOf`|8!~@+ESKW zMS{*@=g1UpSHt|P8&}s=*qPZ72>h3+?{sv*ZvZlGfG?pz<_-<43{x#Tr+^SDa9{Xd ze3ASCJj&2oPN4~vlVThj1G;ZOaMj*@yDDdVIfY5g_X_k)0*NPKHRw4HO`ZDAQqOfe z-uZ8l?tchE_b@-NDmr}x3?AI?XFtE7j!0{LejDJMr&Vo1loGY!s)Ais36ZPsV zPw0`yp4Vf58$zf0V$&{-`QUri3$r8{3!%Yut2Hejy0KJHUDR@v002M$NklLTP?uI( z2Jr$&Mu^A=A8Bn^a(0q9>Yy4P_yz(P z>#ASN#vtFOXwSjD>ei{HGV(J?ligsu`_<@%H@rpj#;E0+bYOS7iZD?+bZ$asTLaar zo1odV=0QNGF|BCSSg=ozIbx@YM9M+n^I9nuaEL9N)%$K`sb^n!O!qU-mtB6DR;^pDJ8qh&_=Zi@lxn(TY3ZcYZeiPeh0`r2Dk@G9 zXbu*Q2@AK^2EZ6Y9k1OiMu3xCW>F#QWj0E&gF*R2z0 zQ>7y~H?y+}m6(`hb{&1?c2s;jdoe38jiba?_3hv3?eUjh_UKi&US-`nZ4KL!vd90k z@kb$aC(R2Avd#$#ikM?@OqMh^#T0DM_(z0p-&Wxjw}uRdN$2d|bp%eB^_nwpsm>YN zSH~c-2d2)}v`wib$q;*{?$qJDK};siQIu7QQz^V_I~4|FqcJaLPn&nws@M$5s08Pe zH_k8fq6gCJC@wooK`Ynl@Q0r%Z~sCzj#F6c4ho2`3lK#V#V-c@7y&q9Eho9n1Mgs& zIU4ylPEx`{IB)E6e(eK8@U%|?cACZKUzD%hFTNpjZ7GuX0uo$$>SRW`c0hou)-9D^ z!+r`F0yt&sR`Me;rWV>n)|+ooSC7MqPAOiSw`u>ZPiaTo9!DfK=%>=PdEZiwl%N~0 zze4qrk^#^3RVuaR%T}z`jy>D?&eo)7bm=ryA)yhjJ@l&8_PZKKbAloWn;9Z*G5&+X z;uPI|KNW9v>TB`B723UfyAB;(tcMnCHRj(yb#7z~<`PYcN%Gi!^53#csQ|$<2?9 zi2)I3hQ9xLqq_FAf|-*_IdF*Y%M=?K&7B4++a7*_3Xh5ePAdr90Kh_Up3>NX#2mtL zXjT@fv4kjtq%JJ9a#_GRY+J4~sbMm{gBS(lbFsAMtkW4t_F~nA>BUl@bQrB+BPK<& zrY&(^25Z~)9TkTTrTFYQuoBItZA!BiEpJ$`V7e_3#zY8yqD}YzlkrD!#yM{1=i_&g z5jYYaTm~;NzKqn*(E4xQAR`v*%0i+Vs_8yQlS(zKKlsKcRn(oI5h zuZ_oIg!)3f<^0wM`^-QUk->z*jP%WVCL+$Uy(ojYZKt6AsYC(7|fZ zwzEo>F4m!G-zaxG4nU(9MpQsOg(WAbiZD}oK&*Ul0C|x#QcQYm8H8+j?63}Jr&m>$ zU>e|GuIYl#sgNnqi&Dfrz5MZRE z>riTYf~EeQu+eqO#*yLRk?36TthufP}N89x|naA1;Neer(0 z+>fEbZ6GMk_+_ytTt`k)mUL2lSM#~thI>Db~W&$!n$f4X%Up_9k+bnwVh z?n$)Tx9>@V#wN<*8dt2`Mg^jm7A%x> zAhmJhMu0d{A$TGJojQ?d(-dc8g*I&1pnX-lHDt(8!gozD5x++D4^#Vgt$i>Bsv0+G zQn_%!@`kBL=l|5N*9DI)UHR=()kMxoxMk+9<$v?fSx@NIYI|kD$&>MLTf~$Nx|JJI zn!5WthB=aqRqiIs%tp_it+B^EUgX2+*l3x>N`Tl-(8|cOB@|`+g9THGtsEQ~;cCu3 z3KrbO*iQ9R8R0i`_W5Fu22$M;$g{yi?L+KG)~&0$7hJ9;J^Ksqk@DBCQy%JP*3N~> z0#)_5N3=q`BIO%`j~>*5zpkcDS|h#b2Ah+k4ANFNY}$&tn&XJ0sK{Cxd#PjRE~wr`+Ocz&LO|0g z$A1uDsktz#py)<=_uVJiC$@ZS3y3>XIoULi$g9*(^Vew3_w)7Lx7+mfx64R4+*J0}JQ!z(^VdDN^_mviwDY0<)9DUY2(%8Js zxhLJmxV?Qw1OSOr1K??yb$Hpa&x0JJOiWA!_#%%6lJf}*hH40@y8ZeLV6E-cYcEgI zMWiBMH+HO+FJGoDTi1b?*WByi!6QD`Tyt6Fy7gE~IOO=%~@2|2AL@e|zIz;Y4A(BJ8fU ztG2mMy7a(NMfVk4V%llhXh0*EhgK36Bhv}aZ&+^N$GZ5q0m^xi(rOJ7{NVPLaCie- zv;~1%9>EU_v4z0C?8v2r)a(>O`OcCn(s}KL?G}ayH@rg+l^r>xNeL5`9PFz@ThqvE z-$}OCA$pb}Ay4L#Zka_g%zhS6zB^aX9|+&4J`E!Xo5d3D!3p%;Hy>=_c*AnsBpj_INriVE0sl( zP^%X0ft@-DQ!0eWjX{CV3Seddc=dH+TI=|!?dsOG6V9}JWkck(V-qx)ZaJ$~eWMvO z7i;9GK022+S+!$hsYAbxgr<&YU)iL*b^-GpKLts_A5VTu6CSRw$x~iJB|e~Q$6STi zeT_TscRu_^r@$7t>z)@iWW+daUB3pz*;Lf(XtLU9Vu2~rFewqH6~cs2_KPiE#(YA_ z%pDO8^Xnq*D+&LZkH#3jd1G7;IGa#3Dx2XluFDuh77w%EgYd|QlWyF(OE-6IQ>T4_ z6R<19-X9GpQ7cz2*P;Cf)u&fa5`BCyu}-RE>!w<}e!F-3)}5=;Q*$aeZrOK!-s|to zyLIfu3*VkR@i+(KWd3(0`yYYO?GAIpy)Uq5UUApmv*+pW{{Fox@1c8d=P6FbNn)d2 z+ZH6G&}|fg-bVLOR;CJVLnhiD)b_;!3nrqGH_S*3v7=l%(Tg=;` zt@1hkGWTPay9?2Ik#n1e`j>)(@0uocG`L3-tYN8FSM$eRhy=7OI|4kwIv0V+QbZbU z8LFW>B@XCMqK!YrAfYVMTEHL&U`M_?sk0ur|28#9Zla{522^mZgDBUsS83poE3}AY zk|R48yZ5);`7m8*u2F~9EdZX7X3bheIP3}c-M+os_2To}>0ADwx+BHSKHau$C#{yY z=m#XN{EF4KV*~YUiJco4sYZ>HvF+;V}5+-`&@ zi^15B*4ytquaOs=qc`7tU!P8!hMIj?PdxReGa2r>`8f?dr#;YCWDB0kP*_kLJiHXu zx*o@lapYsz?{=?^PusA0GxN?quuMlAW|uo{%H|b6jb|lPGjq1Lc)sNWl)x;CAo!fz zJcZ(+uU$Ki)ZP9d-t54C)6C!eX!U z&L8YEd-lBYeFu(ruc(+k_pZAp414|cXW-WVyOO>7a^3Zvb$^h~mcw2N=wn0Tm|O6S z!rC37|L*f9L)O_}+bBP6+h!2gn5N}FuO}SSNk=Fqx$L#iwCV(L@PJU#DlJVF4FIlf zFv(R^x%t(OR(PjYDqwPrxGPY}jn~@=RPeo3NqLCge#eLS35~$r3GyAkP;i+gaCqxj zUb<%DrS3sU&j&l#5LD>~2cxjT0z%pKD2`mE`^59?ktI&}plX6c2h+$oovp_oeneB> zd)xiG=FglTmyzApMZ1aRX0c5@%!f8@nvr-Tt=X_uuaVk1eY)p2EnBwGMVDTvRyYca z0IFEGW`o{&cM-etR@?Tq6^hix34wFa&I5l1`2}_GE?+CIcmgt z+OT$&9(nK;Xv7#!Zr7kcLiE>T#?=#75Yr`FZ%U%_gsm&>hS6+({D{ z_Pt>OxVbdZ&wzDv-P{(w|K%{@V72VgXhI1Ii8_5c6K!KVVZ#xsgO-w-dH{_l1ptmV zRLkvCv*zt^=ml!!+KuG-H_}^w{R|tS(zkijxYak^a??3?-#spSVs-AwFOTy-eSNk| zbayv_@Et_ma45CpzY3}Su8XdokJFi%Y@UWx=teeN9rx2raN1Yp;?YJznvG^5E?WRb zPQh6)O$Q)~sqNglotua$Ok3!KM4{a6N#8IIx`h==gV`R2Zb5q>I00|_VWWLbF! z52w%)+K^(gaA6L10fB*Zm_?hINrQ(Lt=e#`40Y|^Q(;lDItrHDefK@5?Hg9;wMn0A z$T@u!9~Y)YG4nNWSReK2f04FtS)^8NllUF}e{ACS-nWXjdW7WKlAJP|C}ODg?b->E zQ*QwDRbA4W}h;e@D#juG_@9PwcPVJ$uV%jw#rC50Tr) zrmfgov3av!8R6UejFXwpTxp1du0zL8`s$lm8ak*ifE`I_EJQMn9sxA79!zxw5rh6} zm=p(SMuzUVag6Vq@4r`mU~g9UDU(0^oPC{VLXKyiY&HGgjkBH59UH|WKezfaxo*$R z{k@l6bBC-|v5l6kk`zUV%SHw^sA!KIP24)mB6g10nLv}YwgG=Eo^9Ul8q#xL*yP&w zwt_vB&LkVr+PZMRrq#&sW=aW=z0Vs`9mLv4sZ^*$@dhRqEZ1j5dHJ{a}d26m;z0cYu2s z=1NIXOq`e64r(^9d8Q8@-tF$4-4iPlwOdk(T^<$MjI`RxJnTqywRF(}-Fe@`+Od5% zL_S@QJUK<-Fs$u+H*jrjG+=N~5Mx(q(2yRw>dKq-{0onh2-8Zlf1IUhpS-Ve*FS=f zV>elK*#J-yiaU8i{$9a&ZUDu z9&CkHXLDl2ZNouC6i5s^ehL9-Bf%I zzyjrt+pV>SO)?-6=6QGX&G(K-`MJAs%z??^>Q!CyBe$?TyPyD*Fw?P;JY5>)r}hyP zwNOD;S*m8|$rJ<3q4CS#uOE zTCiLrhxTPldN+nQ!J~b@s|DY>bqi=M-+<laU3l?8x~9%kv&Q|DLi5We&3cfZeq0%uCop4&VC4px zX=V4ZhG31rjiVY-qN+i3%pf2Vd8D!)J#vz}X}&N|!VE8dF{05D=w**NVyHA$&1OW+ z-r2Qh4vmf2V9zd6a-0;|SUSm??_(_y7h@vLn>5w&^rIx;MB$Gqam6{UTeQ@=ja$^B zMQ4o|I@V{_{Ew>+AM(EYyx|wGojv!<>FmxHtnu^z@i=PH<~W>z zrJUL^jfiYJn^;q~&2Qt`i!CA3GT4lXwC~MUci-_F_j4erhLM;O$%kg|nu%aIvX&xh z&LA6Z!PNZq{J8oZ<^+3lA60*1V%>J*+9Er~#Bn)IEE_z#m>R6p&!>D1=)-8Y?~5-P zt84I3m$CRi`shOl=Nt0qgyt+l|^rwwc-Z!Xirg!}Uwh=&* z=W4^2Iqr2?X()B$JBW9e5VhDvoH_>L2X%++wvzHfN948!Je^#*$JNAWb?Fu(HwJYi zH62WUPb9{68ds++*=#MSmyd@KBix)8APh2294FZ(jdop|+_CLXOjJ|aLB}zb_*IC( zJFUSc$qr?UfrmBAEG45azD{lKbvM_}+0w9+$Rx}m7ov7tf`h6yqHo@;A+Xx3El0rX zc*cmz^_ze4+Oo;_ov~wY-!XaeBs)o4h&Jv2qj5G9y1O9Elb*JKpqc8fs5OMhJ>|nQ z1pQww-$Ot~oTlccR}*?XdEmAv?T(ci)fu0JaL?G-HdCITx?AhTg7rvNwzci}S2NB` zZnZvbKeKObQQJ=ZAj0(WV)dn{qb*@ElsZ?W;h8Qwut@|X49_7wOvFRh7UJ;`KhMSt z>{>a#or^b|#ID-`UZ649z}H2W)j-#~{L>F6>zOAWbf3Tc+M8Xp~tCp6TR*mxH8-2-*OMZ;i<$2Fjn#in;@<_|y7fbw!sXJ)&8^49XG z0!PK+)HKxeNF<|O2LwzgF#t(zwyS4NqD4^k6-dM)k9fP4y_vb=%Xym*#D{QK1yHk* z!8oo8BD8?~_a41ySKW+U^{qQma~o+Ppp+9HdW!uW)hjQ3g!(=j|G){o^vdh{{PVZa zDw<-GTfuJ#CRq~&llW4C*5R}>?w{Qsn+?y5d1j`Bl3(-Jq#rX}`=+{J^et#LU8tk4 z3!%rka#=So#>`;`Hnlc87P>roB$Wi2gIc?0wH8v|d@5@%p7s_B4WqJ+h=D~cY_3dl z+psw*rXO57jU{dVx^(WU^_#XRIEZRE^7qY@sGCp^e1!ev!8e8>L}}mtT^clCpm$DI zcKN>4{SnKTEqRAI@5jD87votfZvX$vpR<|J-Q7Y>>fpI)#?XE}>_(zAIqIqwjGhgc z9s6gWdE@jlX`D&IhmH7XkVyT!U1f1eiA_FRLO5D8ReI~=&o!l2 zU&2Ox^xTslqJ}o&JF@?>!N-B%@x`N}dn+3gD3HbLat!$19C2lo(1wRcllOhpL;Dbb zWhj#8=faicTx2ZSXcI2;U_*+zrp9x!F9V{ddZ>#M*)}kt9lO^sAyoS z;&^=c;cFVuzlUzT>1ubLv2M=m2&zrKXgy?uU64xqNrakn@3&dNX&mg8WIesf&rx3|R1Ub@jMg zwS4J9fH?nx*??ORTs({1)Upy}{u#rwHDH;HWu~HIW|->Vs!e+>UjDOscI!&~9YzQ? ze?U$U6By@-e z8uqHfc8et6*bzFPVV~QA|MfV-==iFJ*d3w#YBLrc$s;y`mGYtOKc?KDkJ6QskKuTnFz!EA=?I2ML6@0>9R z>!j++r}*yRDDzTJ!c1F;(LRUwr#y(K2{7jZ{bQ^F`~EoU3V(E zo_*#iFyM1292v@I08h5-uM!$NR&Z@;hq83Z71!ek>Zuo=c}XAs^*Oe&?S|^${!|ik z%qt$l1%%UlGLINF?Uaz@2E1Sl#vTRaeOnmK4<=befk!3bER$p=F}cgG=)(sIXVHLt zDKHT{;da7S&uvoA*Pjp}YHmLT> zp%Kv1dq__4RdZ5@0|UJ@{>H1+y=QlQ{Qgw>+CSlN_T%d&@oeYGedT^tLgbcAT!ML# z2b}eh)U7~zU!yVCjaP$)4e`kPP%M)M-rV2 zRIAKav9WcuGh-(SKF5*zUC0vr*458nd+BKJDPO#WCKWv4`fKj|;lrtKn3vQorQbZc zfAXRI=&TzvXU=rz#SLo9$tBte{uYtD&y7%wfE;mnD8w})go~R5uAx>d`?TS5nt8S@ zEu7`3#l5p{8J=Aj&BHrclsI(k*e=9Y^R-c8^>%jO?bv7Ra<;MGqN$RQQ=u;Kl|-PR zOl>u%o-I6cT3MaDNoLPKe!#HbIU+X#uYT|&9Dt_c^Ut#G$jq~Y*+MGE6JD5Es`=k8 zIYZ>xdcpFXIqtKU{vYP@UVyxdJLdxLuPl(YCh*K1jSmYQpJsKF##KDeEK z4xv0ltSf`~?K*>;a}K7)eKbqShw8i_q6Oy2GN+y0#|-fGn>TBul}l&qnyYWo3s2pm zw_d%EJJn1H^^=jrIM%qAJE^@tM$W!5J%p{ZqibU)+px^GjErLtIBB^&Or!9sBJGvq z9y@l}5&44?U)F@jXav!=gGxw;UGU>i`qORq>FJ60YSnT}uz|T%kFnR@$-VeWKmD`} zgqjs-JqrNfcv#EZi6?j2&(E(VM1~M_Mvtwd|1zAn7osuZ z_Q+9t&88j^Tthi7L(6__&LF$}cDMXYkA(X}#?YLp)Sl04{@RN62F}P3U~Cn$PCb0V ze$RJi9+-GFwa^~6eNFNVY{sF(Hl<`U#{C!vla$(b90TUkw3W}eaxXKMB0HM;4F+uTn_UU0RZeEex`-MUqmTrx_H$ifSz7^8@? zPdkb^G|j%ZVYXpGK_Rd9>ii2^t6Q&*3J&+ys8Q$X<>#LVCvK?bEMKpC?!8khmMzCi z|BlN{GlI1?#Wox>;vCCih_$H1v+F;Oib`=OJQ6JmDdy_~#5EG$s=Xqjq9Jk|cuc3Y zPckjk?9_1oP#vMNuq}1#AAR(;KKt}LxBqTEDGi2W9!dj*vZM$NrI=dt{bauF(#tQt z1rC1<;la-o8{C@CtN?HX(5;qpsUT0mLeHf@?7wmV-RefSgSP5ANPMwl?Awx(5ZPgoUhZF%FUv`CMER@APW zKnvFpSt4#(>xfr^Yox96nw^NuiGJ-jSk%dyZ@Owu5@{ zFHf=6P7NMXMN+QF%20i9{}fvv)l?;nuDgplzfkPBq#?=aQF@ zS8zyyNNvjmEJBS3cb{Yy>b%iDig9R_dt*C;NLyw(#V`bOo&`k&>gcgk_)$(1wi38* zBX#lUas0l5mdkZHPNlG=oaPEAbnC76>Y;~k2c34F)^1#;xr=7n?NTb=S$kVQ zUrYyxJR>7Tc{wR$oqb7oa1i&RLi6X$(d8HPqT+5Xbpp47{!0D*Nsx5+&qtfM%hk9i zLU1O13jx~*6w=f}@ApIh9VBq_q>YpG7KB+-N)b|XWcj@HH_X9k01wf_Y zUPA_4TyZMrpx5plyYF)s>h@Uu>UTb!b%c(Ta6+8(M|k;kw(DSxo;gpxG{Ucb*j5mN zsl;&0LMAc~FKjWPn{o)phg3;#V44gU z<E9$jxVs8bIdtS!tL5^<0ch}=V=r{g*Q3s##C%>ti;tW#kjR;5LSBX zh@5Z#c1@l$F}ZE8JkL1x0E5f{*<{`7tw_z&$_3wU+6N!dU1b4brOtTNUm$mUg>Jun z99V6`$eTxVLHbs~V4URTei&gI!P!`Y6iR9s59ZqUTC(s%k_sr8iEIL~mhx=}-EqT2 z_2@KM*IhnJE!#DKFme3hbOY{#yM!Z=hd1_c2Io;Pk-BoiVC&az;8Rp-ckhv?6cU+= z9!TQO>7s1FC^B#qZe$^EC9@BkhAT9w9|TNScJ^+E@owh^pFo0+B&I)0na4BL55P*i zn9hGNWy&Yoxamj0CEnM7q5b6_SL*@KM4^!sDk8=Yl$>EOpoO~q*2gt%+B15Y&aW{P>wNU_U)dk%I0aewEXk0?c9khsTkVm#=DJR54Z6GvzqAv#V4GcnGP&{57BzUYDIh(!oCwIhb*l!Cl(%DXv{z@ z%rotUt!<7u+eM{|>vICOZ##%xu;&E;2>vhyFQptlPQUQ|RMvrF!y;HP_Zuyq`-yF> zsZ%GTj_%N{H;toZ@jyTuz^QZlGPA^U4BMSCrUI^~S&N=}>hV9Tcb{Im?8@`ixqCYK z<`FQ#LJ_k?!sJr8Vs?G8T6Y|b6VKx`wEJPV#Ty1$OiFKR>Pd=P+N)8c7FxA(DH8V> z;WD70xSk?_7%cUa9$Aimor(Fcq_+GUT|4#xRPb18=FvdVIwJ61_wL(XtA5_99zDqi*lH%p z3Eltj3+mN>pdonaCnWi^PuxM;??`|uTXT=HAfkOl7#6xiwrD+wVy7lbN@|D}0T>4b zMu$=k62o7p&u6^nwz+Q1of8Tk8UXg`VH;Ai{ut>~~qlyB+BIOVm132n-)8pM*L$z<+QQyz` zp2id-y}EQ5T(NG`Pd*1y_TS2Wey-Wq?|nWS3EhaAwH@4$=g5C_As+6C=avb1_~9oA zbG*W)eWfOKrG1<9gFHk4%mbKWbEz)!ET-ecG_4fTMkHBsv?Bqb+vF@H;Xd|!XQXUW z)`+|mXOkC;6*_UlJ+Yb5C$ib|A%AOLnW~+M0F#@y?4xnRNwVF7DHaLVu5Fw2@jDaw1(j$&E+qBy zq{du*G3xq2*MPu_#%k_bU_dSm$9B&7$2D4JUn%BDorDI|q>t8H@4ui{?V4g&?$X8vta}+h#Qmg>PLP$^#E3EPz;%QftMo9ayPZ0>*J%7q>9neT z>&>SDr07OXJju_tGdD4|g1ksb%Blw8*rK5WhbZm%2^^lKWXQDw>~fRNJ@-7!fd(W5 z9Z|Dp&AlOXnA4Hrcir`1{nuZAK6T>1Q1o)P61pWHG{#Zk3qg};geYMcasO@DYcINP zEOkUa{_#nQxM;LiA3H7o9I(o?2h4f8PJ#5DY zkw8qH1SkPWBbQ*|jr1iHgB@%^p3?GV^LZ-%)I9o1NMS29ZIY_Db!FZ z+bUS(L3|!Su6dGourkw67-7AO~IObH%qlhmOs!thXl8bbq=Sg)Qd#0Vvk z#0DgwL#VB5R_&!=q!L7waL$pEPip5E(3;rB>#x6$?;&12x}A$u?cs>fR8YrpI0t*- z&X4Qc{3!yYW&!^Ni@QmMpTiDn#;D;p4Cnl}j!{6UjK8hy7ip zwk?y?pN5YSWOE%)KTIdnZvjg@L;^^h>l;@|*enmb)~#pbSuE~6kZr_hYwzKzyZPG9$r6&KP2UqK>(7Q3}`-)vnq z<{>)FT#VUK7b1#x4AuZdjaaQW9FAb;tlYAGBT!JSb>D+`k$c}CfJqury!M<{;HZ53 z@%vzIA>7+a7*jG;ePeax-~m1H#Leo}x3@04W~>%3Squ|AOzJC;+oTwidczC=SH_aI zs6`m}(bqo=)jg9m83`{fY8@+C{%cLUGwrw!z+uRvW)PN3^Y z{Z{ghig9U}rOOv+G06>au`RW7`Hwn?RBspF2#h#iwFYPX@Ub+S6rp$9JrrQo~ zw4xI1so<)3dhQ@~9m|2m*mn>+Jiq!E5I66``8b$xQTVR?^#9(V0W)WFew)vn|37{a zr>n+aq5(sOsd?MBAj(KP_8o&DsX;ew0OsP4zhUi)MOwZ5Te`rGF^{aCeeMNzNdXH9 z9fgF@Jj1TRV`8{#u-Ep5^OhU2^9!B~TeErV-cAZz^rDnLY?kC=jTERe ziEgZ2fMBkdXnEujWX>Jcw_nY``L&om^BHyD<@iQ?(L&0Jts9Y&slr*23twKQxP)M| zj%?1a6mtgLJB;ucYSTT#BSG!8#p`W&*t+LD3#+Akoy0`>pN?YDf3M+t=_=d4v$k&E zjNP8*y4qBggSU^*A%P0Pc5R#L+aDI|g7XLHzB?AdKs%~_(?<9=wkWr3m0o&vIt?Ux zf^K_&TJgDxz5a4kXfwtjLY!oVn{S%Q@};Xadc+WH@tbt}9kF0EFQy^zHN|n)>O7dT_!7s`BpBb$IW~%1P=eH*{GTu^ZeS=EJm? z`VjWseS3kU>W0KV2wr_dGUb|SCy>^?d-is90={@D`}FKZiS=yl-IH<-yLgcYi}d%6 zvzgGHUIbCQHTqkZV-om8hN*La8c+sVn0f-YdZ3P@x)$c3>ayNK`t(siLY$(PE?3a0 z!*1Jyhd?DIZX3u#@7_33vo{>VUbo6;b6k0DNfiwd3>=afS5Zcm!dRrfIBBdxiyRn+ zIn<1xKpjEdGX|7MC0zNOrP}{8-dM^oBbr32@7SU0-sNF6N{Ckks5XH>4U=ev50Ocx z!|9Rq;}n-{B_nF9KE-ou4;zizjzW_4P}`mZ=#)ZRCxa;7wOx~*y_5GXbSDU?vw!$r zU(Wo9ML&R~3cT5zj`1HGc0Ts-P`LZVKIP##XLEZPvntL7dmhU2MuM3(P>iW^{9rDP z4k&vC7d^gSyes4=AzG0^;mA+(e*mIs8Qa#Su|Z4n>M;|L#AargnP3dVLW^b0O+{s? z!)J>?(r(+5>Hr!d@Xq^_2^R(`i)YlF6AZQ5QE2*yVaJH}vW@EB_hxd`cRB7+5m2FN zQKImdgh zUeEdO{qDy`Pd~^RajvM0femEyxs19=`}mDYk_-(EEr>V63cGYy0xuX@HI!HvcEJN z26xgPo^=n-w-L@8FYmVU#x;IR;QHOOUa0YoF=2XepU&Ta4X+}OO3FBqR%9iFygGJI zw0^_eQ!Jsm^CM)PJWArp&-5!7aceZf+-MDP^9)#XcA1Caac$Z3aynMCK6Mbed?AXv zi>QmrR^ka)CE3Q9Wj;t*k8{)qt|vyLQ4DZI!{ZCVKLK-Hvvw_O-5o}PIfYlF0;p|F z({A?ud$X~fciZ$^Z>KhY6Tmdb$Wt$;sKqH9ZAI3zOKU<@J!tLpm7ROeEp{Y%F>&<2 zSWAff(2-&OY~Syz;qLKoN> zGPQgtK_nP5o)1Udp{W1OW1Dd;oN{QP`WX|`0&^}Fr(BwQ_S?2^rDS$budu+x+RW_2 zz~bV>$VY7ttKtg&stOd#~S%l9}=e% zQbZ{d?r9=bL?B$qoxkvShDB1$AOQ2gdDS>h@~aB*?gK-R+F#c+(gLPVuu_+t7gN<$)3*`1f6A{uny9uhe+$kvaD2$}jDv4pH{{+C3JN5KPT>LCx71v>@{G4zOwfA_3OM z7JUCJNd_lzkg$Qn0_~DkP3*HRCoCM)R)svHJXq&+gD9omY9m)s7rcf_C?OOzC}DF; z(l>w!1Q1__&LJpXyjO-)tmCD+;QmP2W-gA8765-x@(leUES32l;FyXci3eW3CDsXN z%p|JWj0uad9!()d^$l}lyU z0%$=_uZjMwA6hG^)2FR;)&a%Z*B{4Pg=GU$=}dTRY`2~k*udX1j|1V{y_25oJNbG& z(culRNkz(N*1sLZ-9wwgT)-M2dBbR3)C9+xvegbAJOGPhu=a`>s~^3F^42w=bD*O{ zJlqgE&NFeEXF8{tM_)pPJ(124nH)RBs>|h|ql^~c4WR-K55QV9>rGsKpWSiG`S$oT zA6olXt!zKUUJDbis%*}=4qLCDZD`jVjko-H!jC>cYyV2kwsPw?cmznj2yAn_>ZIh# zf8grFNz1{Z=!>b8SCq$d^K+SIji_J~(IAMmQ@9f5&BB($3`UL}X3sn|$L_oT4y15` zQ^T7yiLnGij(J;iK>B@d!-tQe@A?===xX7lK5ibSD{T(X01jVuh$*Dnk#Yglg;(Lf z2_kQQ;y9IXtoN0vaCd?ur zW}TL+NxB0? zlB6u)v)OR=*DCVta#YW=C>=bYb#r@e?&B6q@yEv=oX#1-P~|enusT9&WJhA+p!Og% zCdW%p+9T23AN9+o=m2kMV`FFQl%Rfl!L%gxM35?~@Y9NU94X0MYb_(2&^+-z?C$`Z^U56ie%Z%J_a@Ha zm;@=>U1{9qv zR(2Lxkj}2|d=Bq5V(*^J%0#nj>Fx^o5SNy6yeCsxK_N+I`(KxcKGO)Dc>|0L z@CjvOo;H@CI{F ziM7^{*F3+b#C`$zb53}LT}A!*oA0@Sa>?2D)|?0Jg*h)%k|`P+ng)bu1&$_kN^u+a zkA88kHs+w;xH>kmP-^LE+19FKf?YUjEcMNskdvKmOFmU8srC9Yqn%xG`B^q>dr9@IGAwF-Qtsr_y^EQ6bf1>WA7SYdA*gnLMSCvz!Ld;B<&FzrbU&3nx!vEJxGK!Y>RPm-W+yY-HjT#vV7X~*dp12Gb-KZWG&N8`z+O~dWQmu9(+EbqMg z6pWzCMvOa$x`2T^8}3Oa4vsj5Vac84^zzZ*hk!AA0aPk1Ai1U~@8Q>w7NSt03U5SX z{yp~OUv26|6Cmy+YfT=01AlMVD_&&~Hf`F3^RADL8#@+4m!HLxU8npAJwJKh^`x3L zYf1^KBQ|8{C>)Httxc=;FpL&B6Vn0YB$Ax7(-IQectwV{u05HP?^97--h(ef=wi74 z_0XO?lZK-LLTAA|ML%axvJ(3FdqW4G!f0&Wt_A(OJdU>OXrOp_+b;X~p{uPyBM?YC zk69=+(*00XYlvS~$F{V_4LaI~Z@r8PoXYb0TFZz~yRAUtHGMymI5&RRUwtR7GpNR(rENoK2Rs5gXbXawT;B5;M^B-Na`&ofmgk!m(- z1vgO5ag{g)%M~eLL)PHrY6RI^K%~t<+B}&|kpvv#ciun4I&_)nuF)Wz`=Dx#pHxUT zr`AU+B!r$apv9!T;66g}Y1<|r$w1!?wzDYQFm(JB4g`O&;2T@?#j}pcBP09UgO9#$ zOMd#??wxh7O*wzOb?(|4)iH<-%bCT*czL6?o&sl3SyyVs)rHonM|XShv6-OYq+)|L zPfvBnM!|$Me7L7-r68qgacCkkD&5Ud#zo8{!4U$OxmLgq(X~ zj}5>(cq0Swinzbcx59-M)ex~^NW8r==T1waZ(M5}StnC-NJFKMTymyu*|yiE#YQy_ zq4wPUHshuT?3+(sv$a1i#srh!K!7NuEDT-JT<2HYYr&@#*O$aEChna<1g4ht^*m2c zeZF$UYtR0@t$X|7wr>48V&Ww{bA>#4jsScXEm%dVt}-wRZTK6fV(vlq7afxeAiRvDf6s>g4bkguEtJwtCr%n=@4WT7yO*0L^tY``SJ>=pFSUv1jkWxo zTq_54R0@jjR0w3$D#0E16X}QWaOVY|+`BDMHS9?R$~kYXuQrm1hkxpKCmv;GkLA+* zpqgfi5dc`KApm@RIONbS&=mt=0DhdqImnQL9uhqLuZZ2v-}ASSaH0b}ze;|oh7+hI zknH?27)CtOeG!uQ&iU`Ppv6eXuh z38z&P0+bda(2OtlLQ5<{YT>j&#x*tZbMX`7q?8~2Z9BbAsT zXPc`E%js9t(f|NJ07*naRPRBm7tK&vDW?))mK4K~tMQua0eH^pS$I`*Rf37$SAR6m z&@rroo(X%Pjy10=_rgYQN8j^DD6O1it>WXU0#jrubg9{UP;I7myEaY{5yAHKlMmW` zGatu6_p)0PKYTd;DiO^y4Fc`g0JF-W6LAWtS9)-$r#nl2Q87+MYUCmL^=g2ray%mw z9Dli8a{0wfEf=EBcVBmhUI zns1Z?FBVKV4{v`Mj@RrgI>}%bs(+i3Z6YEfS)K|N#cbieELrj=Lk$0n8`w-pbRMh6 z1OJbm^q*!bY40I)5#Y7gT!e?%$1c0(0-H1AJR5uUJ=W&3tL+MaD0|6%N+JI`FT2hP z2$SLOwmWZ|ZIdTYVna~Vi`Uit+t~XXPFN&C^*mH>sqR`rNf>Q8=hWgCl~T&uz84R= zj|J1ju#(MIuac{3tC)l5B|?Olxr6$faM}q(EX7YmsUfDI1LPss@%mKeLNUY~1(*K- z7-}o}oJ}Q_^x_Ne2YdY#wpveGu6t~MUCW(|zg;+xzmt-VT8};Enc+9`t=!Vsi`M)TO6l?73Hq#ivE`B?ny*Eg%d1P zZvl@jv-sxz)|kIDGe`mfRToNQ2rW%R;>#N4T(1m55c_Q4k6nxwCk82BinJy5Y%d@@ z*@RL|J*d*Mbw{Ypo%0tuzPxDhl%`5QnFf+B+e$f)Fgg7wbKRIe@{c@p56{Who__wX zuH(w^G2<DAM4YOJvl6K}Rl!GQB(megx*jj3o63t^Lq*dQ>$h73waOZD-g3fC zC8&BLINSz&gMaj--Iw$$=R*?fPiL2MpwNA;4jhMiHZGs>p2z;vW5i{B{#@=w#x`sNeu&&{e=~$65~H zjtyJpalZdJRkygS&tCNgWZ6N_?LbH*Js*rwjG0mvx zOY)T%fl6LgfIRe9i5-StfKN0I&Paa66L5N?>4V=HXC$Gct`nK^sC&Pi^KXe<@9S@Q zL3N9I2(qI^F~i3UvDCxMZNY*iGz^$;OP{@6M-VR`ZY_p%!R8~8g)&QV%{tkA_uK-o zVi57`?$#?I)-LX!XrFJ&u^7S~CzN%jO)4hB5V6XW>kY(H6;J{3#J0VB#$@VADy_i&Jg|2)UflLb(`>uo z^69RQxXN97)1V=M4U3&e=Lo26* zcP7On+T#B?YwUTpWZ6neO0{I&BhWIM(r}ULF%*SVb)H6q^fapEV?mNDU0FL=CY_pA zHUb(fLJvVr&ta`=TayJzD=yU)P-2lvb@@3J-|dmmT(Iw)?&Pdlk9y6T}I-=Ty**Qwq?g2pp-w` zYT&6`7QSMse?LL2`)$O4Yi)nZ4`7U=?Y?OfYv=#@l?#ugSmB8b3j;118cVDm@JlHuIHjtho4IQ^0@rEuSlxs@r*mgz?jmma8{iS{ z14(;brwoS{mVq@z8n4YRww`#xyPVa0!Q zu+Wp1M=W>o_p3=h+2Uf_{;000smD35>}9iAvu*&3-G!QG4FTKquqj~6i;>tncOJAi z-~7PleM`1lVh^YG>)FW;Ubtu#-^|q4Ex@ZKQazCCRY14_sL3gGEy)Em(gcE{)?V8- zHf7Rfws7$$)LQFGPC4w4XDp|b5=7Kg;S_dq6}|*5o1`QQj->bWS1T&021VD&zWjU+ zl6N!v;T~((stpxulI<83a8Ks`V&iCt*r8pVy*zg=nErP5@{12TJALvw=i777-%LWv z)i!+e7#L>_(ms!x_O!Z!s8z|edGk1O$9LiAYyeTCX+X%)(K4I!oG+&t=s#&QQLN9t zz3X7Mg?}e>MJ^hkm1#Hu!um*)3kjy{jn*UB+eJ6DuLJNIR6yVjh!ACG=eQPAB6Dgk z_!bnFc)}O%On>~(8A<5)-_%~rjenNn|LIoXh*GabJ=z2;7i)ms4(FBQT&;S>jTm5K zz>OErywla}%4Guw1P39}8W4A%VH-9trA6>ud*-=^ty6fg&AI9<8$bJVoN9zgSWuOK zk{6qcxDCZ0?%}wqtUMg?7<4KtJaEhkkDsuH5PNXTW)=X(yT%`Ati&2SQN$~+vgYR) z2aY^#OfeF7F87;0(siVg%f81RB}Av5<3-$GCK9VIQY!5!%RmA~5pTcv((_PP8+JSh&b9|AJeiQ#)=uQ*fP(X~A69I%r)SS$t;nha=Gw9S7(!q> z(O|U3Es?4@*xR+39aNz?bkIFVsnALpmIH9dj@{O(M|-rnaLkEn%s!9Ajslv>koMFSWr)_PN(gu-pE&+~VNIX=n(t)Hw~RyCgIx+IuDbO`JY|`7`|W?V`)BU8m`K?0)Yls`v_BBw{ahpkEyBx=97U(k)FnMZfeJe`JTo_{3ti9Tfe>gm6{lky{Uw!b8 zX?bq&kLTebH$Fdon?jj6fCCFAFR9Q?uDA!MbWSjKiOhleSHD4>?4yr7$s$)>bp!IjBf2#L#WRiM_&OOw*U$4 zLvn>iczBQ{9ol8zef>A=wh)U9YEP;u8-bXxk~6%0DqZ=b@X#ixjAF+{g=xofe7v+SbEwU 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 literal 0 HcmV?d00001 diff --git a/cmd/versionbump/main.go b/cmd/versionbump/main.go index dc8eb1e..ee27536 100644 --- a/cmd/versionbump/main.go +++ b/cmd/versionbump/main.go @@ -4,54 +4,165 @@ import ( "fmt" "github.com/ptgoetz/go-versionbump/internal" vbc "github.com/ptgoetz/go-versionbump/internal/config" - vbv "github.com/ptgoetz/go-versionbump/internal/version" + "github.com/ptgoetz/go-versionbump/internal/version" "github.com/spf13/cobra" - "log" + "github.com/spf13/pflag" "os" ) +func main() { + if err := rootCmd.Execute(); err != nil { + os.Exit(1) + } +} + var opts vbc.Options -func main() { - var rootCmd = &cobra.Command{ - Use: "versionbump [bump-part]", - Short: "VersionBump is a tool for managing version bumps", - Long: `VersionBump is a tool for managing version bumps with optional git integration.`, - Args: cobra.MaximumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - if opts.ShowVersion { - fmt.Println(vbv.VersionBumpVersion) - os.Exit(0) - } - - if len(args) > 0 { - opts.BumpPart = args[0] - } - if len(args) == 0 && opts.ResetVersion == "" { - fmt.Println("ERROR: no version part specified.") - cmd.Usage() - os.Exit(1) - } - - vb, err := internal.NewVersionBump(opts) - if err != nil { - log.Fatal(err) - } - vb.Run() - }, +var rootCmd = &cobra.Command{ + Use: "versionbump", + Short: `VersionBump is a command-line tool designed to automate version string management in projects.`, + Long: `VersionBump is a command-line tool designed to automate version string management in projects.`, + RunE: runRootCmd, // Use RunE for better error handling +} + +var majorCmd = &cobra.Command{ + Use: "major", + Short: `Bump the major version number (e.g. 1.2.3 -> 2.0.0).`, + Long: `Bump the major version number (e.g. 1.2.3 -> 2.0.0).`, + RunE: bumpMajor, // Use RunE for better error handling +} + +var minorCmd = &cobra.Command{ + Use: "minor", + Short: `Bump the minor version number (e.g. 1.2.3 -> 1.3.0).`, + Long: `Bump the minor version number (e.g. 1.2.3 -> 1.3.0).`, + RunE: bumpMinor, // Use RunE for better error handling +} + +var patchCmd = &cobra.Command{ + Use: "patch", + Short: `Bump the patch version number (e.g. 1.2.3 -> 1.2.4).`, + Long: `Bump the patch version number (e.g. 1.2.3 -> 1.2.4).`, + RunE: bumpPatch, // Use RunE for better error handling +} + +var configCmd = &cobra.Command{ + Use: "config", + Short: `Show the effective configuration of the project.`, + Long: `Show the effective configuration of the project.`, + RunE: runConfigCmd, // Use RunE for better error handling +} + +var resetCmd = &cobra.Command{ + Use: "reset ", + Short: `Reset the project version to the specified value.`, + Long: `Reset the project version to the specified value. Value can be any valid semantic version string.`, + Args: cobra.ExactArgs(1), + RunE: runResetCmd, // Use RunE for better error handling +} + +var showCmd = &cobra.Command{ + Use: "show [version]", + Short: `Show potential versioning paths for the project version or a specific version.`, + Long: `Show potential versioning paths for the project version or a specific version.`, + Args: cobra.MaximumNArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + vb, err := internal.NewVersionBump(opts) + if err != nil { + return err + } + versionStr := "" + if len(args) > 0 { + versionStr = args[0] + } + + return vb.Show(versionStr) + }, +} + +func init() { + rootCmd.Flags().BoolVarP(&opts.ShowVersion, "version", "V", false, "Show the VersionBump version and exit.") + + commonFlags := pflag.NewFlagSet("common", pflag.ExitOnError) + commonFlags.StringVarP(&opts.ConfigPath, "config", "c", "versionbump.yaml", "The path to the configuration file") + commonFlags.BoolVar(&opts.NoPrompt, "no-prompt", false, "Don't prompt the user for confirmation before making changes.") + commonFlags.BoolVarP(&opts.Quiet, "quiet", "q", false, "Don't print verbose output.") + commonFlags.BoolVar(&opts.NoGit, "no-git", false, "Don't perform any git operations.") + commonFlags.BoolVar(&opts.NoColor, "no-color", false, "Disable color output.") + + configColorFlags := pflag.NewFlagSet("config-color", pflag.ExitOnError) + configColorFlags.StringVarP(&opts.ConfigPath, "config", "c", "versionbump.yaml", "The path to the configuration file") + configColorFlags.BoolVar(&opts.NoColor, "no-color", false, "Disable color output.") + + commonFlags.AddFlagSet(configColorFlags) + + showCmd.Flags().AddFlagSet(configColorFlags) + configCmd.Flags().AddFlagSet(configColorFlags) + + majorCmd.Flags().AddFlagSet(commonFlags) + minorCmd.Flags().AddFlagSet(commonFlags) + patchCmd.Flags().AddFlagSet(commonFlags) + resetCmd.Flags().AddFlagSet(commonFlags) + + rootCmd.AddCommand(majorCmd) + rootCmd.AddCommand(minorCmd) + rootCmd.AddCommand(patchCmd) + rootCmd.AddCommand(resetCmd) + rootCmd.AddCommand(showCmd) + rootCmd.AddCommand(configCmd) + +} + +func runRootCmd(cmd *cobra.Command, args []string) error { + if opts.ShowVersion { + fmt.Println(version.VersionBumpVersion) + return nil } + return cmd.Help() +} - rootCmd.Flags().BoolVarP(&opts.ShowVersion, "version", "V", false, "Show the version of Config and exit.") - rootCmd.Flags().StringVarP(&opts.ConfigPath, "config", "c", "versionbump.yaml", "The path to the configuration file") - rootCmd.Flags().BoolVar(&opts.DryRun, "dry-run", false, "Dry run. Don't change anything, just report what would be changed") - rootCmd.Flags().BoolVar(&opts.NoPrompt, "no-prompt", false, "Don't prompt the user for confirmation before making changes.") - rootCmd.Flags().BoolVarP(&opts.Quiet, "quiet", "q", false, "Don't print verbose output.") - rootCmd.Flags().StringVar(&opts.ResetVersion, "reset", "", "Reset the version to the specified value.") - rootCmd.Flags().BoolVar(&opts.NoGit, "no-git", false, "Don't perform any git operations.") - rootCmd.Flags().BoolVar(&opts.NoColor, "no-color", false, "Disable color output.") +func bumpMajor(cmd *cobra.Command, args []string) error { + return runVersionBump(version.VersionMajorStr) +} - if err := rootCmd.Execute(); err != nil { - fmt.Println(err) - os.Exit(1) +func bumpMinor(cmd *cobra.Command, args []string) error { + return runVersionBump(version.VersionMinorStr) +} + +func bumpPatch(cmd *cobra.Command, args []string) error { + return runVersionBump(version.VersionPatchStr) +} + +func runResetCmd(cmd *cobra.Command, args []string) error { + opts.ResetVersion = args[0] + vb, err := internal.NewVersionBump(opts) + if err != nil { + return err + } + + vb.Run() + return nil +} + +func runConfigCmd(cmd *cobra.Command, args []string) error { + vb, err := internal.NewVersionBump(opts) + if err != nil { + return err } + + return vb.ShowEffectiveConfig() +} + +// runVersionBump contains the logic for executing the version bump process +func runVersionBump(bumpPart string) error { + opts.BumpPart = bumpPart + + vb, err := internal.NewVersionBump(opts) + if err != nil { + return err + } + + // Run the version bump process + vb.Run() + return nil } diff --git a/internal/config/config.go b/internal/config/config.go index 3dcbe16..e40a769 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -3,6 +3,7 @@ package config import ( "fmt" "github.com/ptgoetz/go-versionbump/internal/utils" + "github.com/ptgoetz/go-versionbump/internal/version" "gopkg.in/yaml.v3" "os" "path" @@ -19,6 +20,7 @@ type Config struct { Version string `yaml:"version"` GitCommit bool `yaml:"git-commit"` GitCommitTemplate string `yaml:"git-commit-template"` + GitSign bool `yaml:"git-sign"` GitTag bool `yaml:"git-tag"` GitTagTemplate string `yaml:"git-tag-template"` GitTagMessageTemplate string `yaml:"git-tag-message-template"` @@ -35,7 +37,6 @@ type GitMeta struct { type Options struct { ConfigPath string - DryRun bool Quiet bool NoPrompt bool ShowVersion bool @@ -88,11 +89,21 @@ func LoadConfig(filePath string) (*Config, string, error) { return nil, "", fmt.Errorf("error parsing config file: %w", err) } + // make sure we can resolve the parent directory root, err := utils.ParentDirAbsolutePath(filePath) if err != nil { return nil, "", fmt.Errorf("error getting parent directory: %w", err) } + // validate the version string is not empty + if config.Version == "" { + return nil, "", fmt.Errorf("version string is required") + } + + if !version.ValidateVersion(config.Version) { + return nil, "", fmt.Errorf("invalid version string: %s", config.Version) + } + configPtr := &config // include the config file as a file to update configPtr.Files = append(configPtr.Files, VersionedFile{Path: configFile, Replace: "version: \"{version}\""}) diff --git a/internal/git/git.go b/internal/git/git.go index 812cb13..e4b5a37 100644 --- a/internal/git/git.go +++ b/internal/git/git.go @@ -3,7 +3,7 @@ package git import ( "bytes" "fmt" - "os" + vbc "github.com/ptgoetz/go-versionbump/internal/config" "os/exec" "path/filepath" "strings" @@ -12,180 +12,118 @@ import ( // IsGitAvailable checks if the 'git' command is available on the system and returns the Git version if available. func IsGitAvailable() (bool, string) { // Attempt to run the 'git --version' command - cmd := exec.Command("git", "--version") - - // Capture the output - var out bytes.Buffer - cmd.Stdout = &out - - // Run the command and check if it executes successfully - if err := cmd.Run(); err != nil { + out, _, err := runGitCommand("", "--version") + if err != nil { return false, "" } - - // Return true and the output (which contains the Git version) - return true, out.String() + return true, out } -// IsGitRepository checks if the given directory is a Git repository. -func IsGitRepository(dirPath string) (bool, error) { - // Ensure the path is an absolute path - absPath, err := filepath.Abs(dirPath) - if err != nil { - return false, fmt.Errorf("failed to get absolute path: %w", err) - } - - // Run the 'git rev-parse --is-inside-work-tree' command in the specified directory - cmd := exec.Command("git", "rev-parse", "--is-inside-work-tree") - cmd.Dir = absPath - - // Run the command and capture the output - output, err := cmd.Output() +// IsRepository checks if the given directory is a Git repository. +func IsRepository(dirPath string) (bool, error) { + out, _, err := runGitCommand(dirPath, "rev-parse", "--is-inside-work-tree") if err != nil { - return false, nil // Not a git repository if command fails + return false, nil } - // Check if the output is "true\n" - if string(output) == "true\n" { + if string(out) == "true\n" { return true, nil } - return false, nil } // HasPendingChanges checks if the given directory has pending changes (uncommitted changes) in the Git repository. func HasPendingChanges(dirPath string) (bool, error) { - // Ensure the path is an absolute path - absPath, err := filepath.Abs(dirPath) - if err != nil { - return false, fmt.Errorf("failed to get absolute path: %w", err) - } - - // Run the 'git status --porcelain' command in the specified directory - cmd := exec.Command("git", "status", "--porcelain", "--untracked-files=no") - cmd.Dir = absPath - - // Run the command and capture the output - output, err := cmd.Output() + out, _, err := runGitCommand(dirPath, "status", "--porcelain", "--untracked-files=no") if err != nil { return false, fmt.Errorf("failed to check git status: %w", err) } - // If the output is not empty, there are pending changes - if len(output) > 0 { + if len(out) > 0 { return true, nil } - return false, nil } // InitializeGitRepo initializes a new Git repository in the specified directory path. func InitializeGitRepo(dirPath string) error { - // Ensure the directory path is an absolute path - absPath, err := filepath.Abs(dirPath) + _, _, err := runGitCommand(dirPath, "init") if err != nil { - return fmt.Errorf("failed to get absolute path: %w", err) + return fmt.Errorf("failed to initialize git repository: %w", err) } + return nil +} - // Ensure the directory exists - if _, err := os.Stat(absPath); os.IsNotExist(err) { - if err := os.MkdirAll(absPath, 0755); err != nil { - return fmt.Errorf("failed to create directory: %w", err) +// AddFiles adds the specified files to the staging area of the git repository. +func AddFiles(dirPath string, files ...vbc.VersionedFile) error { + for _, file := range files { + _, _, err := runGitCommand(dirPath, "add", file.Path) + if err != nil { + return fmt.Errorf("failed to add file to git staging area: %w", err) } } + return nil +} - // Run the 'git init' command in the specified directory - cmd := exec.Command("git", "init") - cmd.Dir = absPath - - // Execute the command and check for errors - if err := cmd.Run(); err != nil { - return fmt.Errorf("failed to initialize git repository: %w", err) +// IsSigningEnabled checks if GPG signing is enabled for commits in the git repository. +func IsSigningEnabled(dirPath string) (bool, error) { + out, _, err := runGitCommand(dirPath, "config", "--get", "commit.gpgsign") + if err != nil { + return false, fmt.Errorf("failed to get git config 'commit.gpgsign': %w", err) } + return strings.TrimSpace(out) == "true", nil +} - return nil +// GetSigningKey returns the GPG signing key used for signing commits and tags. +func GetSigningKey(dirPath string) (string, error) { + out, _, err := runGitCommand(dirPath, "config", "--get", "user.signingkey") + if err != nil { + return "", fmt.Errorf("failed to get git signing key: %w", err) + } + return strings.TrimSpace(out), nil } // CommitChanges commits any pending staged changes to the git repository. // It performsa a `git commit -am `. -func CommitChanges(dirPath string, commitMessage string) error { - // Ensure the path is an absolute path - absPath, err := filepath.Abs(dirPath) - if err != nil { - return fmt.Errorf("failed to get absolute path: %w", err) +func CommitChanges(dirPath string, commitMessage string, sign bool) error { + args := []string{"commit", "-am", commitMessage} + if sign { + args = append(args, "-S") } - - cmd := exec.Command("git", "commit", "-am", commitMessage) - cmd.Dir = absPath - - // Capture the output - var stdOut bytes.Buffer - cmd.Stdout = &stdOut - - var stdErr bytes.Buffer - cmd.Stderr = &stdErr - - // Run the command - if err := cmd.Run(); err != nil { - fmt.Println(stdOut.String()) - fmt.Println(stdErr.String()) - return fmt.Errorf("git commit failed: %w", err) + _, _, err := runGitCommand(dirPath, args...) + if err != nil { + return fmt.Errorf("failed to commit changes: %w", err) } - return nil } -func TagChanges(root string, name string, message string) error { - // Ensure the path is an absolute path - absPath, err := filepath.Abs(root) - if err != nil { - return fmt.Errorf("failed to get absolute path: %w", err) +// TagChanges creates a new tag in the git repository with the specified name and message. +func TagChanges(root string, name string, message string, sign bool) error { + args := []string{"tag", "-a", name, "-m", message} + if sign { + args = append(args, "-s") } - - cmd := exec.Command("git", "tag", "-a", name, "-m", message) - cmd.Dir = absPath - - // Capture the output - var stdOut bytes.Buffer - cmd.Stdout = &stdOut - - var stdErr bytes.Buffer - cmd.Stderr = &stdErr - - // Run the command - if err := cmd.Run(); err != nil { - fmt.Println(stdOut.String()) - fmt.Println(stdErr.String()) - return fmt.Errorf("git commit failed: %w", err) + _, _, err := runGitCommand(root, args...) + if err != nil { + return fmt.Errorf("failed to tag changes: %w", err) } - return nil } // GetTags returns a list of git tags for the given project directory -func GetGitTags(projectDir string) ([]string, error) { - // Prepare the git command - cmd := exec.Command("git", "tag") - cmd.Dir = projectDir - - // Capture the output - var out bytes.Buffer - cmd.Stdout = &out - - // Run the command - if err := cmd.Run(); err != nil { - return nil, err +func GetTags(projectDir string) ([]string, error) { + out, _, err := runGitCommand(projectDir, "tag", "--list") + if err != nil { + return nil, fmt.Errorf("failed to get git tags: %w", err) } - // Convert the output to a slice of strings, one per line - tags := strings.Split(strings.TrimSpace(out.String()), "\n") - + tags := strings.Split(strings.TrimSpace(out), "\n") return tags, nil } // TagExists checks if the given tag exists in the git repository of the project directory func TagExists(projectDir string, tagName string) (bool, error) { - tags, err := GetGitTags(projectDir) + tags, err := GetTags(projectDir) if err != nil { return false, err } @@ -199,18 +137,38 @@ func TagExists(projectDir string, tagName string) (bool, error) { // GetCurrentBranch returns the current branch of the git repository in the given project directory func GetCurrentBranch(projectDir string) (string, error) { - // Prepare the git command - cmd := exec.Command("git", "rev-parse", "--abbrev-ref", "HEAD") - cmd.Dir = projectDir + out, _, err := runGitCommand(projectDir, "rev-parse", "--abbrev-ref", "HEAD") + if err != nil { + return "", fmt.Errorf("failed to get current branch: %w", err) + } + return strings.TrimSpace(out), nil +} + +// runGitCommand runs a git command in the specified directory and returns the output and error messages. +func runGitCommand(root string, args ...string) (string, string, error) { + absPath, err := filepath.Abs(root) + if err != nil { + return "", "", fmt.Errorf("failed to get absolute path: %w", err) + } + + cmd := exec.Command("git", args...) + cmd.Dir = absPath + + var stdOut bytes.Buffer + cmd.Stdout = &stdOut + + var stdErr bytes.Buffer + cmd.Stderr = &stdErr - // Capture the output - var out bytes.Buffer - cmd.Stdout = &out + // Some git commends will return a non-zero exit code even if they succeed + // For example `git conig --get user.email` will return 1 if the email is not set + // We don't want to treat this as an error + _ = cmd.Run() // Run the command - if err := cmd.Run(); err != nil { - return "", err + if stdErr.String() != "" { + return "", "", fmt.Errorf("git command failed: %s", stdErr.String()) } - return strings.TrimSpace(out.String()), nil + return stdOut.String(), stdErr.String(), nil } diff --git a/internal/git/git_test.go b/internal/git/git_test.go index c540d12..fbc482e 100644 --- a/internal/git/git_test.go +++ b/internal/git/git_test.go @@ -18,7 +18,7 @@ func TestIsGitAvailable(t *testing.T) { t.Logf("Git is available with version: %s", version) } -// TestIsGitRepository tests the IsGitRepository function +// TestIsGitRepository tests the IsRepository function func TestIsGitRepository(t *testing.T) { // Create a temporary directory dir, err := os.MkdirTemp("", "gitrepo") @@ -34,7 +34,7 @@ func TestIsGitRepository(t *testing.T) { } // Check if the directory is recognized as a Git repository - isRepo, err := IsGitRepository(dir) + isRepo, err := IsRepository(dir) if err != nil { t.Fatalf("Unexpected error: %v", err) } diff --git a/internal/utils/utils.go b/internal/utils/utils.go index 568234b..0fba2e6 100644 --- a/internal/utils/utils.go +++ b/internal/utils/utils.go @@ -84,3 +84,13 @@ func ParentDirAbsolutePath(relativePath string) (string, error) { // Return the absolute path of the parent directory return parentDir, nil } + +func PaddingString(length int, padChar string) string { + if len(padChar) != 1 { + panic("padChar must be a single character") + } + if length <= 0 { + return "" + } + return strings.Repeat(padChar, length) +} diff --git a/internal/version/version.go b/internal/version/version.go index 9e0f229..7d707e9 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -19,15 +19,17 @@ const ( ) type Version struct { - Major int - Minor int - Patch int + major int + minor int + patch int } +// NewVersion creates a new immutable Version instance func NewVersion(major int, minor int, patch int) *Version { - return &Version{Major: major, Minor: minor, Patch: patch} + return &Version{major: major, minor: minor, patch: patch} } +// ParseVersion parses a version string and returns a new Version instance func ParseVersion(version string) (*Version, error) { vals := strings.Split(version, ".") if len(vals) != 3 { @@ -48,30 +50,27 @@ func ParseVersion(version string) (*Version, error) { return NewVersion(major, minor, patch), nil } +// String returns the version string func (v *Version) String() string { - return fmt.Sprintf("%d.%d.%d", v.Major, v.Minor, v.Patch) + return fmt.Sprintf("%d.%d.%d", v.major, v.minor, v.patch) } -func (v *Version) Bump(versionPart int) error { +// Bump returns a new Version instance after incrementing the specified part +func (v *Version) Bump(versionPart int) *Version { switch versionPart { case VersionMajor: - v.Major++ - v.Minor = 0 - v.Patch = 0 - return nil + return NewVersion(v.major+1, 0, 0) case VersionMinor: - v.Minor++ - v.Patch = 0 - return nil + return NewVersion(v.major, v.minor+1, 0) case VersionPatch: - v.Patch++ - return nil + return NewVersion(v.major, v.minor, v.patch+1) default: - return fmt.Errorf("invalid version part: %d", versionPart) + panic(fmt.Sprintf("invalid version part: %d.\n", versionPart)) } } -func (v *Version) StringBump(versionPart string) error { +// StringBump returns a new Version instance after incrementing the specified part (as a string) +func (v *Version) StringBump(versionPart string) *Version { switch versionPart { case VersionMajorStr: return v.Bump(VersionMajor) @@ -80,10 +79,11 @@ func (v *Version) StringBump(versionPart string) error { case VersionPatchStr: return v.Bump(VersionPatch) default: - return fmt.Errorf("invalid version part: %s", versionPart) + panic(fmt.Sprintf("invalid version part: %s. Call `ValidateVersionPart()` to prevent this error.\n", versionPart)) } } +// ValidateVersionPart checks if the provided version part string is valid func ValidateVersionPart(part string) bool { switch part { case VersionMajorStr, VersionMinorStr, VersionPatchStr: @@ -93,6 +93,7 @@ func ValidateVersionPart(part string) bool { } } +// ValidateVersion checks if the provided version string is a valid semantic version func ValidateVersion(version string) bool { _, err := ParseVersion(version) return err == nil diff --git a/internal/version/version_test.go b/internal/version/version_test.go index ca29449..4c2f251 100644 --- a/internal/version/version_test.go +++ b/internal/version/version_test.go @@ -6,7 +6,7 @@ import ( func TestParseVersion(t *testing.T) { version := "1.2.3" - expected := Version{Major: 1, Minor: 2, Patch: 3} + expected := Version{major: 1, minor: 2, patch: 3} actual, _ := ParseVersion(version) if *actual != expected { t.Errorf("Expected %v but got %v", expected, *actual) @@ -14,7 +14,7 @@ func TestParseVersion(t *testing.T) { } func TestVersion_String(t *testing.T) { - version := Version{Major: 1, Minor: 2, Patch: 3} + version := Version{major: 1, minor: 2, patch: 3} expected := "1.2.3" actual := version.String() if actual != expected { diff --git a/internal/versionbump.go b/internal/versionbump.go index 1364dfa..132e45d 100644 --- a/internal/versionbump.go +++ b/internal/versionbump.go @@ -8,66 +8,140 @@ import ( "github.com/ptgoetz/go-versionbump/internal/utils" vbu "github.com/ptgoetz/go-versionbump/internal/utils" vbv "github.com/ptgoetz/go-versionbump/internal/version" + "gopkg.in/yaml.v3" "os" "path" "strings" ) type VersionBump struct { - Config config.Config - Options config.Options - ParentDir string - OldVersion string - NewVersion string + Config config.Config + Options config.Options + ParentDir string } // NewVersionBump creates a new VersionBump instance. -// It loads the configuration file and determines/validates the old and new versions. -// If the reset version option is set, the new version is set to the reset version. func NewVersionBump(options config.Options) (*VersionBump, error) { - // Log the version and configuration path cfg, parentDir, err := config.LoadConfig(options.ConfigPath) if err != nil { return nil, err } - // determine the old and new versions - var oldVersion string - var newVersion string + vb := &VersionBump{ + Config: *cfg, + Options: options, + ParentDir: parentDir, + } - // get the old version from the config - vTemp, err := vbv.ParseVersion(cfg.Version) - if err != nil { - logFatal(options, fmt.Sprintf("Failed to parse semantic version string for old version: %s", err)) + return vb, nil +} + +func (vb *VersionBump) GetOldVersion() string { + if !vbv.ValidateVersion(vb.Config.Version) { + logFatal(vb.Options, fmt.Sprintf("Failed to parse semantic version string for old version: %s", vb.Config.Version)) } - oldVersion = vTemp.String() + oldVersion, _ := vbv.ParseVersion(vb.Config.Version) + return oldVersion.String() +} - // get the new or reset version - if options.IsResetVersion() { - if !vbv.ValidateVersion(options.ResetVersion) { - logFatal(options, fmt.Sprintf("Failed to parse semantic version reset string: %s\n", options.ResetVersion)) +func (vb *VersionBump) GetNewVersion() string { + if vb.Options.IsResetVersion() { + v, err := vbv.ParseVersion(vb.Options.ResetVersion) + if err != nil { + logFatal(vb.Options, fmt.Sprintf("Failed to parse semantic version string for reset version: %s", vb.Options.ResetVersion)) } - // set new version to the reset version - vTemp, _ = vbv.ParseVersion(options.ResetVersion) - newVersion = vTemp.String() + return v.String() + } + oldVersionStr := vb.GetOldVersion() + oldVersion, _ := vbv.ParseVersion(oldVersionStr) + newVersion := oldVersion.StringBump(vb.Options.BumpPart) + return newVersion.String() +} + +func (vb *VersionBump) Run() { + vb.preamble() + vb.gitPreFlight() + vb.logTrackedFiles() + vb.bumpPreflight() + if vb.promptProceedWithChanges() { + vb.makeChanges() + vb.gitCommit() + } +} + +func (vb *VersionBump) Show(versionStr string) error { + var curVersionStr string + isProject := false + if versionStr != "" { + curVersionStr = versionStr } else { - if !vbv.ValidateVersionPart(options.BumpPart) { - logFatal(options, fmt.Sprintf("Invalid version part: %s", options.BumpPart)) - } - _ = vTemp.StringBump(options.BumpPart) - newVersion = vTemp.String() + curVersionStr = vb.Config.Version + isProject = true + } + curVersion, err := vbv.ParseVersion(curVersionStr) + if err != nil { + return err } - vb := &VersionBump{ - Config: *cfg, - Options: options, - ParentDir: parentDir, - OldVersion: oldVersion, - NewVersion: newVersion, + if !isProject { + logVerbose(vb.Options, fmt.Sprintf("Potential versioning paths for version: %s", + curVersion.String())) + } else { + logVerbose(vb.Options, fmt.Sprintf("Potential versioning paths for project version: %s", + curVersion.String())) } + // we now know we have a valid version + majorVersion := curVersion.StringBump(vbv.VersionMajorStr) + minorVersion := curVersion.StringBump(vbv.VersionMinorStr) + patchVersion := curVersion.StringBump(vbv.VersionPatchStr) + + padLen := len(curVersion.String()) - 2 + padding := utils.PaddingString(padLen, " ") + + tree := fmt.Sprintf( + `%s ── bump ─┬─ major ─ %s + %s ├─ minor ─ %s + %s ╰─ patch ─ %s +`, + curVersion.String(), + majorVersion.String(), + padding, + minorVersion.String(), + padding, + patchVersion.String()) + + printColorOpts(vb.Options, tree, ColorBlue) + return nil +} - return vb, nil +func (vb *VersionBump) ShowEffectiveConfig() error { + logVerbose(vb.Options, fmt.Sprintf("Config file: %s", vb.Options.ConfigPath)) + logVerbose(vb.Options, fmt.Sprintf("Project root: %s", vb.ParentDir)) + logVerbose(vb.Options, "Effective Configuration YAML:") + + conf := &vb.Config + + // set defaults if not overridden + if conf.GitCommitTemplate == "" { + conf.GitCommitTemplate = config.DefaultGitCommitTemplate + } + if conf.GitTagTemplate == "" { + conf.GitTagTemplate = config.DefaultGitTagTemplate + } + if conf.GitTagMessageTemplate == "" { + conf.GitTagMessageTemplate = config.DefaultGitTagMessageTemplate + } + + b, err := yaml.Marshal(conf) + if err != nil { + return err + } + printColorOpts(vb.Options, string(b), ColorBlue) + fmt.Println() + + err = vb.Show("") + return err } func (vb *VersionBump) GitMetadata() (*config.GitMeta, error) { @@ -77,8 +151,8 @@ func (vb *VersionBump) GitMetadata() (*config.GitMeta, error) { } else { commitMessageTemplate = config.DefaultGitCommitTemplate } - commitMessage := utils.ReplaceInString(commitMessageTemplate, "{old}", vb.OldVersion) - commitMessage = utils.ReplaceInString(commitMessage, "{new}", vb.NewVersion) + commitMessage := utils.ReplaceInString(commitMessageTemplate, "{old}", vb.GetOldVersion()) + commitMessage = utils.ReplaceInString(commitMessage, "{new}", vb.GetNewVersion()) var tagTemplate string if vb.Config.GitTagTemplate != "" { @@ -86,8 +160,8 @@ func (vb *VersionBump) GitMetadata() (*config.GitMeta, error) { } else { tagTemplate = config.DefaultGitTagTemplate } - tagName := utils.ReplaceInString(tagTemplate, "{old}", vb.OldVersion) - tagName = utils.ReplaceInString(tagName, "{new}", vb.NewVersion) + tagName := utils.ReplaceInString(tagTemplate, "{old}", vb.GetOldVersion()) + tagName = utils.ReplaceInString(tagName, "{new}", vb.GetNewVersion()) var tagMessageTemplate string if vb.Config.GitTagMessageTemplate != "" { @@ -95,8 +169,8 @@ func (vb *VersionBump) GitMetadata() (*config.GitMeta, error) { } else { tagMessageTemplate = config.DefaultGitTagMessageTemplate } - tagMessage := utils.ReplaceInString(tagMessageTemplate, "{old}", vb.OldVersion) - tagMessage = utils.ReplaceInString(tagMessage, "{new}", vb.NewVersion) + tagMessage := utils.ReplaceInString(tagMessageTemplate, "{old}", vb.GetOldVersion()) + tagMessage = utils.ReplaceInString(tagMessage, "{new}", vb.GetNewVersion()) return &config.GitMeta{ CommitMessage: commitMessage, @@ -105,26 +179,13 @@ func (vb *VersionBump) GitMetadata() (*config.GitMeta, error) { }, nil } -// ------------------------- - -// ------------------------- - -func (vb *VersionBump) Run() { - vb.preamble() - vb.gitPreFlight() - vb.logTrackedFiles() - vb.bumpPreflight() - if vb.promptProceedWithChanges() { - vb.makeChanges() - vb.gitCommit() - } -} - func (vb *VersionBump) gitPreFlight() { if vb.Options.NoGit { return } + logVerbose(vb.Options, "Checking git configuration...") + // make sure the `git` command is available if vb.Config.IsGitRequired() { isGitAvalable, version := git.IsGitAvailable() @@ -138,7 +199,7 @@ func (vb *VersionBump) gitPreFlight() { } // check if the parent directory is a Git repository - isGitRepo, err := git.IsGitRepository(vb.ParentDir) + isGitRepo, err := git.IsRepository(vb.ParentDir) if err != nil { logFatal(vb.Options, fmt.Sprintf("Error checking for git repository: %v\n", err)) } @@ -148,11 +209,47 @@ func (vb *VersionBump) gitPreFlight() { logFatal(vb.Options, "The project root is not a Git repository, but Git options are enabled in the "+ "configuration file.") } - if promptUserConfirmation("Do you want to initialize a Git repository in this directory?") { + if promptUserConfirmation("The project directory is not a git repository.\nDo you want to initialize a git repository in the project directory?") { err := git.InitializeGitRepo(vb.ParentDir) if err != nil { logFatal(vb.Options, fmt.Sprintf("Unable to initialize Git repository: %v\n", err)) } + logVerbose(vb.Options, "Initialized Git repository.\nAdding tracked files...") + vb.logTrackedFiles() + err = git.AddFiles(vb.ParentDir, vb.Config.Files...) + if err != nil { + logFatal(vb.Options, fmt.Sprintf("Error adding files to the Git staging area: %v\n", err)) + } + logVerbose(vb.Options, "Performing initial commit.") + err = git.CommitChanges(vb.ParentDir, "Initial commit", vb.Config.GitSign) + if err != nil { + logFatal(vb.Options, fmt.Sprintf("Error committing initial changes: %v\n", err)) + } + } else { + os.Exit(0) + } + } + + branch, err := git.GetCurrentBranch(vb.ParentDir) + if err != nil { + logFatal(vb.Options, fmt.Sprintf("Error getting current branch: %v\n", err)) + } + logVerbose(vb.Options, fmt.Sprintf("Current branch: %s", branch)) + + if vb.Config.GitTag { + // check to see if the tag already exists + logVerbose(vb.Options, "Checking for existing tag...") + gitMeta, err := vb.GitMetadata() + if err != nil { + logFatal(vb.Options, fmt.Sprintf("Unable to get Git metadata: %v\n", err)) + } + tagExists, err := git.TagExists(vb.ParentDir, gitMeta.TagName) + if err != nil { + logFatal(vb.Options, fmt.Sprintf("Error checking for existing tag: %v\n", err)) + } + if tagExists { + logFatal(vb.Options, fmt.Sprintf("Tag '%s' already exists in the git repository. "+ + "Please bump to a different version or remove the existing tag.\n", gitMeta.TagName)) } } @@ -161,9 +258,35 @@ func (vb *VersionBump) gitPreFlight() { if isDirty { logFatal(vb.Options, "The Git repository has pending changes. Please commit or stash them before proceeding.") } + + // check if GPG signing is enabled for commits + signKey, err := git.GetSigningKey(vb.ParentDir) + if err != nil { + logFatal(vb.Options, fmt.Sprintf("Error checking for GPG signing key: %v\n", err)) + } + signByDefault, err := git.IsSigningEnabled(vb.ParentDir) + if err != nil { + logFatal(vb.Options, fmt.Sprintf("Error checking if GPG signing is enabled: %v\n", err)) + } + if signByDefault || vb.Config.GitSign { + logVerbose(vb.Options, "GPG signing of git commits is enabled. Checking configuration...") + } + // sanity check signing key + if (signByDefault || vb.Config.GitSign) && signKey == "" { + logFatal(vb.Options, "GPG signing of git commits is enabled but no signing key is configured. "+ + "Please configure a signing key in git.") + } + if signByDefault && !vb.Config.GitSign { + logWarning(vb.Options, "GPG signing of git commits is enabled by default in the git configuration. "+ + "Consider enabling GPG signing in the VersionBump configuration.") + } + if signByDefault || vb.Config.GitSign { + logVerbose(vb.Options, fmt.Sprintf("Git commits will be signed with GPG key: %s", signKey)) + } + } -// gitPreFlight performs a pre-flight check for Git operations. +// preamble prints the version bump preamble. func (vb *VersionBump) preamble() { logVerbose(vb.Options, vbv.VersionBumpVersion) logVerbose(vb.Options, fmt.Sprintf("Configuration file: %s", vb.Options.ConfigPath)) @@ -202,7 +325,7 @@ func (vb *VersionBump) gitCommit() { // commit changes if vb.Config.GitCommit { logVerbose(vb.Options, "Committing changes...") - err := git.CommitChanges(vb.ParentDir, gitMeta.CommitMessage) + err := git.CommitChanges(vb.ParentDir, gitMeta.CommitMessage, vb.Config.GitSign) if err != nil { fmt.Printf("Error committing changes: %v\n", err) os.Exit(1) @@ -211,14 +334,14 @@ func (vb *VersionBump) gitCommit() { } if vb.Config.GitTag { logVerbose(vb.Options, "Tagging changes...") - err := git.TagChanges(vb.ParentDir, gitMeta.TagName, gitMeta.TagMessage) + err := git.TagChanges(vb.ParentDir, gitMeta.TagName, gitMeta.TagMessage, vb.Config.GitSign) if err != nil { fmt.Printf("Error tagging changes: %v\n", err) os.Exit(1) } logVerbose(vb.Options, fmt.Sprintf( - "Tagged '%s' created with message: %s", + "Tag '%s' created with message: %s", gitMeta.TagName, gitMeta.TagMessage)) } @@ -226,17 +349,17 @@ func (vb *VersionBump) gitCommit() { // bumpPreflight performs a pre-flight check for the version bump operation. func (vb *VersionBump) bumpPreflight() { - if vb.Options.ResetVersion == "" { + if !vb.Options.IsResetVersion() { logVerbose(vb.Options, fmt.Sprintf("Bumping version part: %s", vb.Options.BumpPart)) } else { - logVerbose(vb.Options, fmt.Sprintf("Resetting version to: %s", vb.NewVersion)) + logVerbose(vb.Options, fmt.Sprintf("Resetting version to: %s", vb.GetNewVersion())) } - logVerbose(vb.Options, fmt.Sprintf("Will bump version %s --> %s", vb.OldVersion, vb.NewVersion)) + logVerbose(vb.Options, fmt.Sprintf("Will bump version %s --> %s", vb.GetOldVersion(), vb.GetNewVersion())) // log what changes will be made to each file for _, file := range vb.Config.Files { - find := vbu.ReplaceInString(file.Replace, "{version}", vb.OldVersion) - replace := vbu.ReplaceInString(file.Replace, "{version}", vb.NewVersion) + find := vbu.ReplaceInString(file.Replace, "{version}", vb.GetOldVersion()) + replace := vbu.ReplaceInString(file.Replace, "{version}", vb.GetNewVersion()) logVerbose(vb.Options, file.Path) logVerbose(vb.Options, fmt.Sprintf(" Find: \"%s\"", find)) @@ -249,8 +372,7 @@ func (vb *VersionBump) bumpPreflight() { if count > 0 { logVerbose(vb.Options, fmt.Sprintf(" Found %d replacement(s)", count)) } else { - fmt.Println("ERROR: No replacements found in file: ", file.Path) - os.Exit(1) + logFatal(vb.Options, fmt.Sprintf("No replacements found in file: %s\n", file.Path)) } } } @@ -259,31 +381,29 @@ func (vb *VersionBump) bumpPreflight() { func (vb *VersionBump) makeChanges() { // at this point we have already checked the config and there are no errors for _, file := range vb.Config.Files { - find := vbu.ReplaceInString(file.Replace, "{version}", vb.OldVersion) - replace := vbu.ReplaceInString(file.Replace, "{version}", vb.NewVersion) - - if !vb.Options.DryRun { - var resolvedPath string - if path.IsAbs(file.Path) { - resolvedPath = file.Path - } else { - resolvedPath = path.Join(vb.ParentDir, file.Path) - } - err := vbu.ReplaceInFile(resolvedPath, find, replace) - if err != nil { - fmt.Println(fmt.Errorf("error updating file %s: a%v", file.Path, err)) - os.Exit(1) - } - logVerbose(vb.Options, fmt.Sprintf("Updated file: %s", file.Path)) + find := vbu.ReplaceInString(file.Replace, "{version}", vb.GetOldVersion()) + replace := vbu.ReplaceInString(file.Replace, "{version}", vb.GetNewVersion()) + + var resolvedPath string + if path.IsAbs(file.Path) { + resolvedPath = file.Path + } else { + resolvedPath = path.Join(vb.ParentDir, file.Path) } + err := vbu.ReplaceInFile(resolvedPath, find, replace) + if err != nil { + fmt.Println(fmt.Errorf("error updating file %s: a%v", file.Path, err)) + os.Exit(1) + } + logVerbose(vb.Options, fmt.Sprintf("Updated file: %s", file.Path)) } + } // promptProceedWithChanges prompts the user to proceed with the changes. func (vb *VersionBump) promptProceedWithChanges() bool { if !vb.Options.NoPrompt { if !promptUserConfirmation("Proceed with the changes?") { - logWarning(vb.Options, "Cancelled by user.") os.Exit(0) } } @@ -314,6 +434,7 @@ func promptUserConfirmation(prompt string) bool { if input == "y" { return true } else if input == "n" { + logVerbose(config.Options{}, "Operation canceled by user.") return false } else { printColor("Invalid input. Please enter 'y' or 'n'.", ColorYellow) @@ -322,16 +443,16 @@ func promptUserConfirmation(prompt string) bool { } func logWarning(opts config.Options, msg string) { - printColorOpts(opts, fmt.Sprintf("WARNING: %s", msg), ColorYellow) + printColorOpts(opts, fmt.Sprintf("WARNING: %s\n", msg), ColorYellow) } func logFatal(opts config.Options, msg string) { - printColorOpts(opts, fmt.Sprintf("ERROR: %s", msg), ColorRed) + printColorOpts(opts, fmt.Sprintf("ERROR: %s\n", msg), ColorRed) os.Exit(1) } func logVerbose(opts config.Options, msg string) { - if opts.DryRun || !opts.Quiet { + if !opts.Quiet { printColorOpts(opts, fmt.Sprintf("%s\n", msg), ColorLightGray) } } diff --git a/internal/versionbump_test.go b/internal/versionbump_test.go index 99c0e74..36ded76 100644 --- a/internal/versionbump_test.go +++ b/internal/versionbump_test.go @@ -40,20 +40,22 @@ func TestNewVersionBump(t *testing.T) { vb, err := NewVersionBump(options) assert.NoError(t, err) - assert.Equal(t, "1.0.0", vb.OldVersion) - assert.Equal(t, "1.0.1", vb.NewVersion) + assert.Equal(t, "1.0.0", vb.GetOldVersion()) + assert.Equal(t, "1.0.1", vb.GetNewVersion()) assert.Equal(t, dir, vb.ParentDir) } func TestGitMetadata(t *testing.T) { vb := &VersionBump{ Config: config.Config{ + Version: "1.0.0", GitCommitTemplate: "Commit {old} to {new}", GitTagTemplate: "v{new}", GitTagMessageTemplate: "Tagging version {new}", }, - OldVersion: "1.0.0", - NewVersion: "1.0.1", + Options: config.Options{ + BumpPart: "patch", + }, } gitMeta, err := vb.GitMetadata() @@ -62,13 +64,3 @@ func TestGitMetadata(t *testing.T) { assert.Equal(t, "v1.0.1", gitMeta.TagName) assert.Equal(t, "Tagging version 1.0.1", gitMeta.TagMessage) } - -//func verifyFileContent(t *testing.T, filePath, expectedContent string) { -// content, err := os.ReadFile(filePath) -// if err != nil { -// t.Fatalf("Failed to read file %s: %v", filePath, err) -// } -// if string(content) != expectedContent { -// t.Errorf("Expected content '%s', but got '%s'", expectedContent, string(content)) -// } -//} diff --git a/versionbump.yaml b/versionbump.yaml index 6156928..3dffa6a 100644 --- a/versionbump.yaml +++ b/versionbump.yaml @@ -10,5 +10,9 @@ files: # The files to update with the new version. - path: "README.md" replace: "**Latest Version:** v{version}" + # Rewrite download URLs in the README to point to the new version. + - path: "README.md" + replace: "/v{version}" + - path: "Makefile" replace: "VERSION := \"v{version}\""