Node v5.0.0 (Current)

By Rod Vagg,

Say hello to Node.js v5! It's true that we only recently released Node.js v4.0.0, however this new release doesn't mean that v4 is going away. In fact, v4 is going to live for a lot longer than v5.

According to our new LTS (Long-term Support) plan, Node.js v4 Argon will continue to be supported for 30 months, ending in April 2018. This new version of Node.js, however, will only be supported for 8 months, with a new major version, v6, being released in April 2016. Node.js v6 will eventually turn into a new LTS version that will have a similar support timeline to v4. In this way, we will have a new Stable version of Node.js every 6 months with every second one of these turning into an LTS line. If our LTS plan is new to you, read more about how it's going to work so you can make a properly informed decision regarding what version of Node.js to adopt.

The general rule for deciding which version of Node.js to use is:

  • Stay on or upgrade to Node.js v4.2.x if you need stability and have a complex production environment, e.g. you are a medium or large enterprise.
  • Upgrade to Node.js v5.x if you have the ability to upgrade versions quickly and easily without distributing your environment and want to play with the latest features as they arrive.

The release notes below are annotated with the main breaking changes that warrant the jump to v5. Note that because this new version of Node.js is shipping with a new version of V8, you will need to recompile any native add-ons you have already installed or you will receive a runtime error when trying to load them. Use npm rebuild or simply remove your node_modules directory and npm install from scratch.

Notable Changes

  • buffer: (Breaking) Removed both 'raw' and 'raws' encoding types from Buffer, these have been deprecated for a long time (Sakthipriyan Vairamani) #2859.
  • console: (Breaking) Values reported by console.time() now have 3 decimals of accuracy added (Michaël Zasso) #3166.
  • fs:
    • fs.readFile*(), fs.writeFile*(), and fs.appendFile*() now also accept a file descriptor as their first argument (Johannes Wüller) #3163.
    • (Breaking) In fs.readFile(), if an encoding is specified and the internal toString() fails the error is no longer thrown but is passed to the callback (Evan Lucas) #3485.
    • (Breaking) In fs.read() (using the fs.read(fd, length, position, encoding, callback) form), if the internal toString() fails the error is no longer thrown but is passed to the callback (Evan Lucas) #3503.
  • http:
    • Fixed a bug where pipelined http requests would stall (Fedor Indutny) #3342.
    • (Breaking) When parsing HTTP, don't add duplicates of the following headers: Retry-After, ETag, Last-Modified, Server, Age, Expires. This is in addition to the following headers which already block duplicates: Content-Type, Content-Length, User-Agent, Referer, Host, Authorization, Proxy-Authorization, If-Modified-Since, If-Unmodified-Since, From, Location, Max-Forwards (James M Snell) #3090.
    • (Breaking) The callback argument to OutgoingMessage#setTimeout() must be a function or a TypeError is thrown (James M Snell) #3090.
    • (Breaking) HTTP methods and header names must now conform to the RFC 2616 "token" rule, a list of allowed characters that excludes control characters and a number of separator characters. Specifically, methods and header names must now match /^[a-zA-Z0-9_!#$%&'*+.^`|~-]+$/ or a TypeError will be thrown (James M Snell) #2526.
  • node:
    • (Breaking) Deprecated the _linklist module (Rich Trott) #3078.
    • (Breaking) Removed require.paths and require.registerExtension(), both had been previously set to throw Error when accessed (Sakthipriyan Vairamani) #2922.
  • npm: Upgraded to version 3.3.6 from 2.14.7, see https://github.com/npm/npm/releases/tag/v3.3.6 for more details. This is a major version bump for npm and it has seen a significant amount of change. Please see the original npm v3.0.0 release notes for a list of major changes (Rebecca Turner) #3310.
  • src: (Breaking) Bumped NODE_MODULE_VERSION to 47 from 46, this is necessary due to the V8 upgrade. Native add-ons will need to be recompiled (Rod Vagg) #3400.
  • timers: Attempt to reuse the timer handle for setTimeout().unref(). This fixes a long-standing known issue where unrefed timers would perviously hold beforeExit open (Fedor Indutny) #3407.
  • tls:
    • Added ALPN Support (Shigeki Ohtsu) #2564.
    • TLS options can now be passed in an object to createSecurePair() (Коренберг Марк) #2441.
    • (Breaking) The default minimum DH key size for tls.connect() is now 1024 bits and a warning is shown when DH key size is less than 2048 bits. This a security consideration to prevent "logjam" attacks. A new minDHSize TLS option can be used to override the default. (Shigeki Ohtsu) #1831.
  • util:
    • (Breaking) util.p() was deprecated for years, and has now been removed (Wyatt Preul) #3432.
    • (Breaking) util.inherits() can now work with ES6 classes. This is considered a breaking change because of potential subtle side-effects caused by a change from directly reassigning the prototype of the constructor using ctor.prototype = Object.create(superCtor.prototype, { constructor: { ... } }) to using Object.setPrototypeOf(ctor.prototype, superCtor.prototype) (Michaël Zasso) #3455.
  • v8: (Breaking) Upgraded to 4.6.85.25 from 4.5.103.35 (Ali Ijaz Sheikh) #3351.
  • zlib: Decompression now throws on truncated input (e.g. unexpected end of file) (Yuval Brik) #2595.

Known issues

  • Surrogate pair in REPL can freeze terminal. #690
  • Calling dns.setServers() while a DNS query is in progress can cause the process to crash on a failed assertion. #894
  • url.resolve may transfer the auth portion of the url when resolving between two full hosts, see #1435.
  • Unicode characters in filesystem paths are not handled consistently across platforms or Node.js APIs. See #2088, #3401 and #3519.

Commits

  • [6a04cc0a43] - buffer: fix value check for writeUInt{B,L}E (Trevor Norris) #3500
  • [1a41feb559] - buffer: don't CHECK on zero-sized realloc (Ben Noordhuis) #3499
  • [5f6579d366] - (SEMVER-MAJOR) buffer: remove raw & raws encoding (Sakthipriyan Vairamani) #2859
  • [70fca2a81e] - build: Updates for AIX npm support - part 1 (Michael Dawson) #3114
  • [b36b4f385a] - build: rectify --link-module help text (P.S.V.R) #3379
  • [a89eeca590] - console: rename argument of time and timeEnd (Michaël Zasso) #3166
  • [870108aaa8] - (SEMVER-MAJOR) console: sub-millisecond accuracy for console.time (Michaël Zasso) #3166
  • [0a43697ce8] - deps: backport 010897c from V8 upstream (Ali Ijaz Sheikh) #3520
  • [8c0318ce8d] - deps: backport 8d6a228 from the v8's upstream (Fedor Indutny) #3549
  • [2974debc6e] - deps: update V8 to 4.6.85.28 (Michaël Zasso) #3484
  • [f76af49b13] - deps: fix upgrade to npm 3.3.6 (Rebecca Turner) #3494
  • [32b51c97ec] - deps: upgrade npm to 3.3.6 (Rebecca Turner) #3310
  • [770cd229f9] - deps: upgrade V8 to 4.6.85.25 (Ali Ijaz Sheikh) #3351
  • [972a0c8515] - deps: backport 0d01728 from v8's upstream (Fedor Indutny) #3351
  • [1fdec65203] - deps: improve ArrayBuffer performance in v8 (Fedor Indutny) #3351
  • [5cd1fd836a] - deps: backport 56a0a79 from V8 upstream (Julien Gilli) #3351
  • [7fb128d8df] - deps: cherry-pick backports to V8 (Michaël Zasso) #3351
  • [d8011d1683] - (SEMVER-MAJOR) deps: upgrade V8 to 4.6.85.23 (Michaël Zasso) #3351
  • [a334ddc467] - Revert "deps: backport 03ef3cd from V8 upstream" (Ali Ijaz Sheikh) #3237
  • [6fff47ffac] - deps: backport 03ef3cd from V8 upstream (Ali Ijaz Sheikh) #3165
  • [680dda8023] - dns: remove nonexistant exports.ADNAME (Roman Reiss) #3051
  • [239ad899a3] - doc: add LTS info to COLLABORATOR_GUIDE.md (Myles Borins) #3442
  • [5e76587fdf] - doc: createServer's key option can be an array (Sakthipriyan Vairamani) #3123
  • [0317c880da] - doc: add TSC meeting minutes 2015-10-21 (Rod Vagg) #3480
  • [cd245b12e0] - doc: clarify API buffer.concat (Martii) #3255
  • [ff9ef893fd] - doc: add TSC meeting minutes 2015-10-14 (Rod Vagg) #3463
  • [605c5a7754] - doc: clarify the use of option.detached (Kyle Smith) #3250
  • [cf75a175e5] - doc: more use-cases for promise events (Domenic Denicola) #3438
  • [1b75d4bda3] - doc: update WORKING_GROUPS.md - add missing groups (Michael Dawson) #3450
  • [c658de2f99] - doc: add TSC meeting minutes 2015-09-30 (Rod Vagg) #3235
  • [d0b8c5d3a4] - doc: add TSC meeting minutes 2015-10-07 (Rod Vagg) #3364
  • [b483afcb20] - doc: binary encoding is not deprecated (Trevor Norris) #3441
  • [b607366a1c] - doc: add information about Assert behavior and maintenance (Rich Trott) #3330
  • [086103b32e] - doc: show keylen in pbkdf2 as a byte length (calebboyd) #3334
  • [f6ebc8277b] - doc: reword description of console.time (Michaël Zasso) #3166
  • [503f279527] - doc: fix indent in tls resumption example (Roman Reiss) #3372
  • [dae9fae0fe] - doc: label v4.2.1 as LTS in changelog heading (Phillip Johnsen) #3360
  • [4fc638804c] - doc: update V8 options in man page (Michaël Zasso) #3351
  • [a441aa6e1d] - doc: update WORKING_GROUPS.md to include Intl (Steven R. Loomis) #3251
  • [81503e597b] - doc: fix typo in changelog (Timothy Gu) #3353
  • [3ef2e4acf3] - doc: fix typos in changelog (reggi) #3291
  • [b9279aa193] - doc: remove old note, 'cluster' is marked stable (Balázs Galambosi) #3314
  • [cdfa271164] - doc: update AUTHORS list (Rod Vagg)
  • [47b06f6bb1] - docs: add missing shell option to execSync (fansworld-claudio) #3440
  • [4c9abbd1bb] - fs: reduced duplicate code in fs.write() (ronkorving) #2947
  • [2bb147535e] - (SEMVER-MAJOR) fs: don't throw in read if buffer too big (Evan Lucas) #3503
  • [7added3b39] - (SEMVER-MAJOR) fs: pass err to callback if buffer is too big (Evan Lucas) #3485
  • [5e0759f6fd] - (SEMVER-MINOR) fs: add file descriptor support to *File() funcs (Johannes Wüller) #3163
  • [d1a2e5357e] - gitignore: don't ignore debug source directory in V8 (Michaël Zasso) #3351
  • [ab03635fb1] - http: fix stalled pipeline bug (Fedor Indutny) #3342
  • [e655a437b3] - (SEMVER-MAJOR) http: do not allow multiple instances of certain response headers (James M Snell) #3090
  • [0094a8dad7] - (SEMVER-MAJOR) http: add callback is function check (James M Snell) #3090
  • [6192c9892f] - (SEMVER-MAJOR) http: add checkIsHttpToken check for header fields (James M Snell) #2526
  • [c9786bb680] - (SEMVER-MAJOR) http{s}: don't connect to localhost on invalid URL (Sakthipriyan Vairamani) #2967
  • [1929d5be73] - lib: fix cluster handle leak (Rich Trott) #3510
  • [97d081709e] - lib: avoid REPL exit on completion error (Rich Trott) #3358
  • [f236b3a904] - (SEMVER-MINOR) lib,doc: return boolean from child.send() (Rich Trott) #3516
  • [6e887cc630] - lib,test: update let to const where applicable (Sakthipriyan Vairamani) #3152
  • [47befffc53] - (SEMVER-MAJOR) lib,test: deprecate _linklist (Rich Trott) #3078
  • [d5ce53458e] - lttng: update flags for gc tracing (Glen Keane) #3388
  • [6ad458b752] - (SEMVER-MAJOR) module: remove unnecessary property and method (Sakthipriyan Vairamani) #2922
  • [ae196175f4] - node: improve GetActiveRequests performance (Trevor Norris) #3375
  • [bd4311bc9c] - repl: handle comments properly (Sakthipriyan Vairamani) #3515
  • [ce391ed849] - (SEMVER-MAJOR) repl: event ordering: delay 'close' until 'flushHistory' (Jeremiah Senkpiel) #3435
  • [4c80c02ac7] - repl: limit persistent history correctly on load (Jeremiah Senkpiel) #2356
  • [134a60c785] - src: fix race condition in debug signal on exit (Ben Noordhuis) #3528
  • [bf7c3dabb4] - (SEMVER-MAJOR) src: bump NODE_MODULE_VERSION To 47 (Rod Vagg) #3400
  • [2d3560767e] - src: fix exception message encoding on Windows (Brian White) #3288
  • [ff877e93e1] - src: fix stuck debugger process (Liang-Chi Hsieh) #2778
  • [8854183fe5] - stream: avoid unnecessary concat of a single buffer. (Calvin Metcalf) #3300
  • [85b74de9de] - stream: fix signature of _write() in a comment (Fábio Santos) #3248
  • [b8cea49c88] - test: fix heap-profiler link error LNK1194 on win (Junliang Yan) #3572
  • [4a5dbeab43] - test: fix missing unistd.h on windows (Junliang Yan) #3532
  • [74e2328b3a] - test: split independent tests into separate files (Rich Trott) #3548
  • [8c6c0f915a] - test: use port number from env in tls socket test (Stefan Budeanu) #3557
  • [1a968e67a5] - test: improve tests for util.inherits (Michaël Zasso) #3507
  • [9d8d752456] - test: print helpful err msg on test-dns-ipv6.js (Junliang Yan) #3501
  • [60de9f8d7b] - test: wrap assert.fail when passed to callback (Myles Borins) #3453
  • [cd83f7ed7f] - test: add node::MakeCallback() test coverage (Ben Noordhuis) #3478
  • [08da5c2a06] - test: disable test-tick-processor - aix and be ppc (Michael Dawson) #3491
  • [7c35fbcb14] - test: harden test-child-process-fork-regr-gh-2847 (Michael Dawson) #3459
  • [ad2b272417] - test: fix test-net-keepalive for AIX (Imran Iqbal) #3458
  • [04fb14cc35] - test: fix flaky test-child-process-emfile (Rich Trott) #3430
  • [eef0f0cd63] - test: remove flaky status from eval_messages test (Rich Trott) #3420
  • [bbbd81eab2] - test: skip test-dns-ipv6.js if ipv6 is unavailable (Junliang Yan) #3444
  • [f78c8e7426] - test: fix flaky test for symlinks (Rich Trott) #3418
  • [28e9a4f41b] - test: repl-persistent-history is no longer flaky (Jeremiah Senkpiel) #3437
  • [9e981556e5] - test: cleanup, improve repl-persistent-history (Jeremiah Senkpiel) #2356
  • [ee2e641e0a] - test: add Symbol test for assert.deepEqual() (Rich Trott) #3327
  • [e2b8393ee8] - test: port domains regression test from v0.10 (Jonas Dohse) #3356
  • [676e61872f] - test: apply correct assert.fail() arguments (Rich Trott) #3378
  • [bbdbef9274] - test: fix tests after V8 upgrade (Michaël Zasso) #3351
  • [6c032a8333] - test: replace util with backtick strings (Myles Borins) #3359
  • [f45c315763] - test: fix domain with abort-on-uncaught on PPC (Julien Gilli) #3354
  • [e3d9d25083] - test: add test-child-process-emfile fail message (Rich Trott) #3335
  • [6f14b3a7db] - test: remove util from common (Rich Trott) #3324
  • [7d94611ac9] - test: split up buffer tests for reliability (Rich Trott) #3323
  • [3202456baa] - test: remove util properties from common (Rich Trott) #3304
  • [31c971d641] - test: parallelize long-running test (Rich Trott) #3287
  • [5bbc6df7de] - test: change call to deprecated util.isError() (Rich Trott) #3084
  • [522e3d3cd3] - timers: reuse timer in setTimeout().unref() (Fedor Indutny) #3407
  • [b64ce5960f] - tls: remove util and calls to util.format (Myles Borins) #3456
  • [c64af7d99e] - tls: TLSSocket options default isServer false (Yuval Brik) #2614
  • [2296a4fc0f] - (SEMVER-MINOR) tls: add options argument to createSecurePair (Коренберг Марк) #2441
  • [0140e1b5e3] - tls: output warning of setDHParam to console.trace (Shigeki Ohtsu) #1831
  • [f72e178a78] - (SEMVER-MAJOR) tls: add minDHSize option to tls.connect() (Shigeki Ohtsu) #1831
  • [6d92ebac11] - tls: add TLSSocket.getEphemeralKeyInfo() (Shigeki Ohtsu) #1831
  • [62ad1d0113] - (SEMVER-MINOR) tls, crypto: add ALPN Support (Shigeki Ohtsu) #2564
  • [5029f41b2f] - (SEMVER-MINOR) tls,crypto: move NPN protcol data to hidden value (Shigeki Ohtsu) #2564
  • [701e38c25f] - tools: enable prefer-const eslint rule (Sakthipriyan Vairamani) #3152
  • [6e78382605] - tools: ensure npm always uses the local node (Jeremiah Senkpiel) #3489
  • [3c3435d017] - tools: update test-npm to work with npm 3 (Rebecca Turner) #3489
  • [b4f4c24539] - tools: use absolute paths in test-npm (Rebecca Turner) #3309
  • [80573153b8] - (SEMVER-MAJOR) util: make inherits work with classes (Michaël Zasso) #3455
  • [412252ca04] - (SEMVER-MAJOR) util: Remove p, has been deprecated for years (Wyatt Preul) #3432
  • [718c304a4f] - v8: pull fix for builtin code size on PPC (Michael Dawson) #3474
  • [6936468de2] - vm: remove Watchdog dependency on Environment (Ido Ben-Yair) #3274
  • [80169b1f0a] - (SEMVER-MAJOR) zlib: decompression throw on truncated input (Yuval Brik) #2595

Windows 32-bit Installer: https://nodejs.org/dist/v5.0.0/node-v5.0.0-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v5.0.0/node-v5.0.0-x64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v5.0.0/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v5.0.0/win-x64/node.exe
Mac OS X 64-bit Installer: https://nodejs.org/dist/v5.0.0/node-v5.0.0.pkg
Mac OS X 64-bit Binary: https://nodejs.org/dist/v5.0.0/node-v5.0.0-darwin-x64.tar.gz
Linux 32-bit Binary: https://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-x86.tar.gz
Linux 64-bit Binary: https://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-x64.tar.gz
SmartOS 32-bit Binary: https://nodejs.org/dist/v5.0.0/node-v5.0.0-sunos-x86.tar.gz
SmartOS 64-bit Binary: https://nodejs.org/dist/v5.0.0/node-v5.0.0-sunos-x64.tar.gz
ARMv6 32-bit Binary: https://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-armv6l.tar.gz
ARMv7 32-bit Binary: https://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-armv7l.tar.gz
ARMv8 64-bit Binary: https://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-arm64.tar.gz
Source Code: https://nodejs.org/dist/v5.0.0/node-v5.0.0.tar.gz
Other release files: https://nodejs.org/dist/v5.0.0/
Documentation: https://nodejs.org/docs/v5.0.0/api/

Shasums (GPG signing hash: SHA512, file hash: SHA256):

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

26f3e42df814b9b42f0b0045901c84eb79233d8196d0dcdf77a6a3c975c6f25d  node-v5.0.0-darwin-x64.tar.gz
060d4bdf5872047ef74f3b1f3daaa466c2506e34ad916128f4b9279d005bc205  node-v5.0.0-darwin-x64.tar.xz
5133b6145df7083133e272e1b8c96b59c58a19d004d5aacdec80ea78e58c7e46  node-v5.0.0-headers.tar.gz
47dc88a17c416285de6c517ea6107322b65920618e8f59e1c49a83c6dd423f31  node-v5.0.0-headers.tar.xz
2c4517d3fdefc29b5c61aa6ea3386a0dafca831357d3bcd30fc14e97b49139d1  node-v5.0.0-linux-arm64.tar.gz
5fd1939b15406d537bf17828a707898f2d710c3c9ddf243b6070353fd13f5880  node-v5.0.0-linux-arm64.tar.xz
96629e271e34d14bdb7be93067a8770cb5326977b9168cf2344c80a721040784  node-v5.0.0-linux-armv6l.tar.gz
82178863010dba66076fdda215e5ad505c1b83571df1d018dce2060d24f260d7  node-v5.0.0-linux-armv6l.tar.xz
6bf5f19cac9f01cb31b7088685d9d6df6d24c9c2a4531ace839387763b8a28ec  node-v5.0.0-linux-armv7l.tar.gz
97575c7ec3f042acf85f9b6de3ec6db027b0ef4a828eaa5e0f66504c72884bd9  node-v5.0.0-linux-armv7l.tar.xz
ef73b59048a0ed11d01633f0061627b7a9879257deb9add2255e4d0808f8b671  node-v5.0.0-linux-x64.tar.gz
1c3e8e7df3320e648f748d721115e6018e0701a206232a6a7332970d211e3706  node-v5.0.0-linux-x64.tar.xz
6484c4cac1724f2818354e3f2a8ede66308617b648cd3db624596b8cd58b5f6b  node-v5.0.0-linux-x86.tar.gz
46a56d8c00a791f46666dd9d2401b7c26ee7ac8455762fbb106c1497867c9c4b  node-v5.0.0-linux-x86.tar.xz
f23ca05d3d7e642ab9b0c8090b0b88fb29dec987b07d67f307bf3aef81e95b14  node-v5.0.0.pkg
7cfbed6e6658d8304f8593eae9dd28f8f83b57e7a6345b32f4d5e9830b80203f  node-v5.0.0-sunos-x64.tar.gz
047bd9fbb25fc6a3349781bddf5210966943b06fa62c6e275d1221613c9f3423  node-v5.0.0-sunos-x64.tar.xz
2e9d65dff65843ebfa5c9d623c5b930bd0af7252101cc9c69c55aa8c880fa9eb  node-v5.0.0-sunos-x86.tar.gz
c7038764010eba883b5fa638123b7b94e82b86960a0792a7b10123451d978e9a  node-v5.0.0-sunos-x86.tar.xz
698d9662067ae6a20a2586e5c09659735fc0050769a0d8f76f979189ceaccdf4  node-v5.0.0.tar.gz
cf4f261618e19517c8cbf2fdde00d0b5160e271760abee00f387b11a0b3ca834  node-v5.0.0.tar.xz
8a066f8cf38f4dd979366c223d90d6242076d2446f48856abb091b2becc939ef  node-v5.0.0-x64.msi
07826a6b60702a0ce9a77240103bf20091a06ee740e646e9f7d6ca760c64e45a  node-v5.0.0-x86.msi
27c819be0958fdb4b63be29fb032525965e997da8e0f6b4a6e9123350b7b22e0  win-x64/node.exe
27992ac24ab67099d243e76fc52382b42caf4bf75b4b792d647359221dfa5d0f  win-x64/node.lib
b2a5caab041d6e0a3fefc3a0b557df71ce9174c9ca344e5a690b9accb9f76d84  win-x86/node.exe
f79d9545ad99221d090c30e415af74431eae15c729e820a96385b051be3837f2  win-x86/node.lib
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJWMom1AAoJEMJzeS99g1RdsxAIAKcA3B14sgCa6qZ1LZfXN5Qj
hogNS6r1L6Mb15E4Gvknjej2n2At2PpdSmxPKIex2uhwGJHcidyakn3NzPwzhdJQ
VtgQKL7G7ZhsXYrKD78kS6GdGql1u4MroTbHSACthmZv+OdDhGEmL1UIN8+PU45V
gBDwg+JPRPYeSGzXcqOwmUHkqgvCaFvyGZfu0j18GT8TjaXkj5M8J9emtmtRBX15
Sp9jbOMRrt9gGHmIqcx/AzCIfqGyi4Lb/CwdyD5hXWfHFfeWspsOx+RFFh965JLy
F6Z13Zr5Oph2fdobiuXYN1WSmrHX2kfy1B2WAt80vwwVzEiIQcSUhEU9qu8z9Qg=
=v3xU
-----END PGP SIGNATURE-----