GStreamer 1.29.1 unstable development snapshot release

Tim-Philipp Müller via gstreamer-devel <[email protected]> Sun, 22 Mar 2026 16:49:29 +0000
Newsgroups gmane.comp.video.gstreamer.devel
Message-ID <[email protected]>
--=-jjkvx9Zxi+HL3g79qX/x
Content-Type: multipart/mixed; boundary="=-/g0KJfW87CDUt5J34x0m"

--=-/g0KJfW87CDUt5J34x0m
Content-Type: multipart/alternative; boundary="=-g5wPzXkSueyXrbJ0IRks"

--=-g5wPzXkSueyXrbJ0IRks
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

The GStreamer team is pleased to announce the first development release
in the API/ABI-unstable 1.29 release series.

The API/ABI-unstable 1.29 release series is for testing and development
purposes in the lead-up to the stable 1.28 series which is scheduled
for release in late 2026.

Any newly-added API can still change until that point.

This development release is primarily for developers and early
adopters.

Minimal=C2=A0release notes=C2=A0with details about changes and fixed bugs c=
an be
found at:

   https://gstreamer.freedesktop.org/releases/1.29/#1.29.1


Highlights:

* ac4parse: New basic AC-4 parser element, plus AC-4 typefinding
* analytics: New GstAnalyticsMtd derivative to represent grouping of
Mtd's and Keypoint
* analytics: Added a hand tracking tensor decoder element
* Parse HDR10+ metadata out of H.265 and AV1 bitstreams
* Matroska demuxer: Can build a dynamic seek index now if needed
* New h264seiinserter and h265seiinserter elements that support both
closed captions and unregistered user data SEIs
* Add HLS WebVTT sink element to the hlssink3 plugin
* New DASH sink element that uses CMAF muxer without splitmuxsink
* New plugin for general purpose compress/decompress
* New udpsrc2 element with better performance for high bitrate streams
* New VA-API overlay compositor
* Opus audio support for F32 and S24_32 samples and 96kHz sample rate
* Playbin3 subtitle switching fixes
* Bump ranks of the new Rust RTP (de)payloaders to PRIMARY and default
to mtu 1200 for payloaders
* rtspsrc2 authentication support
* GstPlay track selection notification improvements
* QML6 GL Source now supports navigation events
* QuickTime demuxer gained Bayer support
* Splitmuxsink now includes the start and end timecodes in fragment-
opened and closed messages
* srtpdec gained a way to invalidate keys for a specific SSRC
* The APE tag demuxer can extract cover art tags now
* translationbin can control the textaccumulate latency now via a new
property
* Allow device providers rank override using GST_PLUGIN_FEATURE_RANK
* cerbero gained support for Android on RISC-V64
* Countless bug fixes, build fixes, memory leak fixes, and other
stability and reliability improvements

Binaries for Android, iOS, Mac OS X and Windows should be available
soon.

As always, please let us know of any issues you run into by filing an
issue or Merge Request in=C2=A0GitLab [1]:

Thanks!


[1] GitLab https://gitlab.freedesktop.org/gstreamer/gstreamer/

--=-g5wPzXkSueyXrbJ0IRks
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

<html><head><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style><style>pre,code,address {
  margin: 0px;
}
h1,h2,h3,h4,h5,h6 {
  margin-top: 0.2em;
  margin-bottom: 0.2em;
}
ol,ul {
  margin-top: 0em;
  margin-bottom: 0em;
}
blockquote {
  margin-top: 0em;
  margin-bottom: 0em;
}
</style></head><body style=3D"overflow-wrap: break-word; -webkit-nbsp-mode:=
 space; line-break: after-white-space;"><p></p><div>The GStreamer team is p=
leased to announce the first development release in the API/ABI-unstable 1.=
29 release series.</div><div><br></div><div>The API/ABI-unstable 1.29 relea=
se series is for testing and development purposes in the lead-up to the sta=
ble 1.28 series which is scheduled for release in late 2026.</div><div><br>=
</div><div>Any newly-added API can still change until that point.</div><div=
><br></div><div>This development release is primarily for developers and ea=
rly adopters.</div><div><br></div><div style=3D"caret-color: rgb(46, 52, 54=
); color: rgb(46, 52, 54); font-family: Cantarell; font-size: 14.666667px; =
font-style: normal; font-variant-caps: normal; letter-spacing: normal; text=
-align: start; text-indent: 0px; text-transform: none; white-space: normal;=
 word-spacing: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.4); -webki=
t-text-stroke-width: 0px; text-decoration: none;">Minimal&nbsp;<b>release n=
otes</b><span style=3D"font-weight: 400;"><span class=3D"Apple-converted-sp=
ace">&nbsp;</span>with details about changes and fixed bugs can be found at=
:</span></div><div style=3D"caret-color: rgb(46, 52, 54); color: rgb(46, 52=
, 54); font-family: Cantarell; font-size: 14.666667px; font-style: normal; =
font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphan=
s: auto; text-align: start; text-indent: 0px; text-transform: none; white-s=
pace: normal; widows: auto; word-spacing: 0px; -webkit-tap-highlight-color:=
 rgba(0, 0, 0, 0.4); -webkit-text-stroke-width: 0px; text-decoration: none;=
"><br></div><div style=3D"caret-color: rgb(46, 52, 54); color: rgb(46, 52, =
54); font-family: Cantarell; font-size: 14.666667px; font-style: normal; fo=
nt-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans:=
 auto; text-align: start; text-indent: 0px; text-transform: none; white-spa=
ce: normal; widows: auto; word-spacing: 0px; -webkit-tap-highlight-color: r=
gba(0, 0, 0, 0.4); -webkit-text-stroke-width: 0px; text-decoration: none; m=
argin-left: 3ch;"><a href=3D"https://gstreamer.freedesktop.org/releases/1.2=
9/#1.29.1" style=3D"color: rgb(46, 52, 54);">https://gstreamer.freedesktop.=
org/releases/1.29/#1.29.1</a></div><div><br></div><div><br></div><div><b>Hi=
ghlights:</b></div><div><b><br></b></div><div><ul><li>ac4parse: New basic A=
C-4 parser element, plus AC-4 typefinding</li><li>analytics: New GstAnalyti=
csMtd derivative to represent grouping of Mtd's and Keypoint</li><li>analyt=
ics: Added a hand tracking tensor decoder element</li><li>Parse HDR10+ meta=
data out of H.265 and AV1 bitstreams</li><li>Matroska demuxer: Can build a =
dynamic seek index now if needed</li><li>New h264seiinserter and h265seiins=
erter elements that support both closed captions and unregistered user data=
 SEIs</li><li>Add HLS WebVTT sink element to the hlssink3 plugin</li><li>Ne=
w DASH sink element that uses CMAF muxer without splitmuxsink</li><li>New p=
lugin for general purpose compress/decompress</li><li>New udpsrc2 element w=
ith better performance for high bitrate streams</li><li>New VA-API overlay =
compositor</li><li>Opus audio support for F32 and S24_32 samples and 96kHz =
sample rate</li><li>Playbin3 subtitle switching fixes</li><li>Bump ranks of=
 the new Rust RTP (de)payloaders to PRIMARY and default to mtu 1200 for pay=
loaders</li><li>rtspsrc2 authentication support</li><li>GstPlay track selec=
tion notification improvements</li><li>QML6 GL Source now supports navigati=
on events</li><li>QuickTime demuxer gained Bayer support</li><li>Splitmuxsi=
nk now includes the start and end timecodes in fragment-opened and closed m=
essages</li><li>srtpdec gained a way to invalidate keys for a specific SSRC=
</li><li>The APE tag demuxer can extract cover art tags now</li><li>transla=
tionbin can control the textaccumulate latency now via a new property</li><=
li>Allow device providers rank override using GST_PLUGIN_FEATURE_RANK</li><=
li>cerbero gained support for Android on RISC-V64</li><li>Countless bug fix=
es, build fixes, memory leak fixes, and other stability and reliability imp=
rovements</li></ul></div><div><b><br></b></div><div><b>Binaries</b> for And=
roid, iOS, Mac OS X and Windows should be available soon.</div><div><br></d=
iv><div>As always, please let us know of any issues you run into by filing =
an issue or Merge Request in&nbsp;<a href=3D"https://gitlab.freedesktop.org=
/gstreamer/gstreamer/">GitLab</a>:</div><div><br></div><div>Thanks!</div><d=
iv><span></span></div><div><br></div><div><span></span></div></body></html>

--=-g5wPzXkSueyXrbJ0IRks--

--=-/g0KJfW87CDUt5J34x0m
Content-Disposition: attachment; filename="GStreamer-1.29.1.txt"
Content-Type: text/plain; name="GStreamer-1.29.1.txt"; charset="UTF-8"
Content-Transfer-Encoding: base64

aHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3RyZWFtZXIvZ3N0cmVhbWVy
LTEuMjkuMS50YXIueHoKYzI5MDY5ZjFmM2FlMGIwZDk1YWU5NjQyNjIyMmQxOGZmZmQxOTQyNDZm
MDUxMzYxY2Y5NmVmNjc3ZjAwZGJlMgoKaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3Jn
L3NyYy9nc3QtcGx1Z2lucy1iYXNlL2dzdC1wbHVnaW5zLWJhc2UtMS4yOS4xLnRhci54egpiMDM4
ZWE5ZGFlNzEyNzRkMmMyODUzZDUxODIzMTg3OTcyZWJkOWU0YTQzMWE0Njk2OTQyZmUwZTM1NmRk
ZjQwCgpodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWdv
b2QvZ3N0LXBsdWdpbnMtZ29vZC0xLjI5LjEudGFyLnh6CjY1ZmI2NTQ0OWY0ZDlhNGNjMDUxMzg0
MjQwY2Q1ZmNhNjAxYzQ1NGMzYTc4OTJjOTdiNzRiOGE0ODA1NWFiZWUKCmh0dHBzOi8vZ3N0cmVh
bWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtdWdseS9nc3QtcGx1Z2lucy11Z2x5
LTEuMjkuMS50YXIueHoKMzc1MWIyNjM0NTU3N2VmMGUxNDhmZjhlOThlNzFhZjFhMDUxYzBmYTll
M2NhNjAwMDk3ZmQ4MGNlNmUxYzhlNQoKaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3Jn
L3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLTEuMjkuMS50YXIueHoKNjI5ZDcw
Y2RmNzVmYWNhNzA4MDVkYmQ1ZmE0ZGI4MTlmMzBjMWY3NzViNTk5ZjJkNTc4ZDA0ZWViNjI2YWRl
NQoKaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxp
YmF2LTEuMjkuMS50YXIueHoKYmMzM2Y0ZGJlYjFiYzY2OGNkYzUzMTlhNTZiMTE3NjdiMGNkNjU2
OTAzYWE4Nzc3ZTg3Mjg3MWM4NmIyN2I2NgoKaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Au
b3JnL3NyYy9nc3QtcnRzcC1zZXJ2ZXIvZ3N0LXJ0c3Atc2VydmVyLTEuMjkuMS50YXIueHoKNWQ3
ZmQ5MTI2YjQ2Zjc4OGZiYzlmMTIyNzY0MmI1YmI2ODBiYTJlNDJlY2Q2YzEwZmQ5OWMyNDJlMzU1
NzRkMAoKaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtZWRpdGluZy1z
ZXJ2aWNlcy9nc3QtZWRpdGluZy1zZXJ2aWNlcy0xLjI5LjEudGFyLnh6CmQyMDNjYTFmZmU3ZWJj
NGY3MjJmMTcxNTY0ZmY1ZGIwYTdmZWViYjQzYWU1ODRlNDE3YjVlMjg2YzgyMjkzYTkKCmh0dHBz
Oi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXB5dGhvbi9nc3QtcHl0aG9uLTEu
MjkuMS50YXIueHoKNDc2NDk5ZTE3ZmQyMTdhY2VjY2YzYmQ2MzU3Njg5NWQyNDdlODZhOWI4ZTRh
YTdkZGQxMzM4OWFiYzUyMWIwMQoKaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3Ny
Yy9nc3QtZGV2dG9vbHMvZ3N0LWRldnRvb2xzLTEuMjkuMS50YXIueHoKOGJmMjZkNWI3YTJlNmVh
Yjc1OGRlOTE5MDA5MTMxM2I3NDYzODBhMTMxYWIyMjZiYzExNDAyNjg1MDY0MDRiNQoKaHR0cHM6
Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3RyZWFtZXItc2hhcnAvZ3N0cmVhbWVy
LXNoYXJwLTEuMjkuMS50YXIueHoKODYwMDY0NTdkZjliZTBmZTE0ZmVlYTRjMjExYmY2MGI1NDlk
ZDQ1NDYwMjI0MTc2MDg1ZmUxMzE1ZDE4ODhlYQoKaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0
b3Aub3JnL3NyYy9nc3RyZWFtZXItZG9jcy9nc3RyZWFtZXItZG9jcy0xLjI5LjEudGFyLnh6CmI4
YTU3ZmVkZTBiYWZmMWI4NGU0Y2I2Y2U1YTA1NGQ5MTcxNjhhZjlkYjkwOGVlYTBjNjA3NmZiOTA4
ODg0NGIKCg==


--=-/g0KJfW87CDUt5J34x0m--

--=-jjkvx9Zxi+HL3g79qX/x
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEE1jcDLkW4xlhblFZWXS7ub280nXwFAmnAHZkACgkQXS7ub280
nXwffg/+IwhsZkleWzREvDXAqm0QzWQt6/Ynd3uQoN7DkeszIr/muHU2bTBZDvkI
VJr+NbqNsB84m15kTJnvuD8YMaqeXmUA/IGMi75mRrD3yk0hClceHP7+v9fVdWzT
vy/rEIDnJRLq3bJKhOm1rQbMDcboNoEsYaBsh+NU5ob1FCEmyjhyRLraYn0sDfm1
29E6lQ4Nw41W7J7mD7LoEh2EYlrU6Fdv38GQPdK/UZnz3nl4vnVnkdImydfAX5of
KW7TTUR02f+4mSu4Gs3IrgrCGTaqSOKxIcWdgDGaVbfacNBvyv9c991NJgK7zMxU
8wA/FGVtZpT94jvVnWi9o8/IoTrL4T+8PGSFWKLdO0z5Yaz/FANEVxxPFtc/S38q
rAntjeyChfIJ9zjaB71Fz1dxpkdpmNqioeQ70SBAwrwfKa26IYXUF532KPhnqn9e
Ap3OqDdCSaBLsPq7yTCCRfcmNTrhjQ8MHGugHlSNHjWsZCnQ3BwiOE3PSgeRn8qV
sCTRO9Ef9NVVK977gUEWfopc3zZZKON1bBDXhoB/FgyeT/6/Is2RJoV8u/0UTILf
RtS63IB+D0G2iu3+FaxeLgGLCSVZVKb8PUaksh85koBlQVAYx3Uujokmu3YCWJoK
pEJLy8MH7C0r0+paPN8d4/4iPCp0hX5hVg/suQ1F0w7OSfLayew=
=Ru4t
-----END PGP SIGNATURE-----

--=-jjkvx9Zxi+HL3g79qX/x--