Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vBv05-006qMR-3O for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Oct 2025 13:05:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vBv04-008gBV-2J for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Oct 2025 13:05:03 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vBv03-008gBN-M4 for pgsql-hackers@lists.postgresql.org; Thu, 23 Oct 2025 13:05:02 +0000 Received: from mail-ed1-x52f.google.com ([2a00:1450:4864:20::52f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vBv00-003o71-09 for pgsql-hackers@lists.postgresql.org; Thu, 23 Oct 2025 13:05:02 +0000 Received: by mail-ed1-x52f.google.com with SMTP id 4fb4d7f45d1cf-63c3d7e2217so1565086a12.3 for ; Thu, 23 Oct 2025 06:04:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1761224698; x=1761829498; darn=lists.postgresql.org; h=mime-version:to:subject:cc:from:message-id:date:from:to:cc:subject :date:message-id:reply-to; bh=5uMqil2KqJBqVm3cT0UCUhUJGT82CpgRmBwUvWuT81U=; b=JUCcZ+zJbryasvYZnkzSwFM0JtIwKPXSb547V3GZX5fT/NbQ46pnRfLYYc2+fh4aCu cGibDRY9p3s180vP+swGUHhFG8gEkwGGBsIOQSatXazA47Z8L3R2qDb43rm1DVh9Av06 Mat0KxHSAwAG1KdgNv72B1GJwJ9pxH6MnZHNTSAVNv0UPnSHAbm/mJgJAi+8oRbmKNDh 3dxjE2Oxqq7j91whoLzScmM5dcRO/lTFEwm5DSeSR5yCLsY9kqQJbIh7ZXRYatX/PFtG iPLik+axI7bpbm/mBWjsCoS81w6M2x+gr5tPmq2DroEvgXBviaDlJ5q1er0JpzahX1Qm ZTlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761224698; x=1761829498; h=mime-version:to:subject:cc:from:message-id:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=5uMqil2KqJBqVm3cT0UCUhUJGT82CpgRmBwUvWuT81U=; b=h+BP6CVtYz0XQAQio16DTzX9S/ZjYsCkm4fm8PgUKtFgTBBmlkTsMXmjcmZJCIzzWs b+ULKCzddYLpgUicQwiMZi9qnwn1H7QgATeExGVTHFDivKVfHMWEQ7hgZ6OSyG2JiXl8 PPKPDCwYvzd1fUhIcsJrjxZxoNlkP8Yd2GWwMgaH6nurH/NppKJeZVJMP9GMTiqmSSPz B4mVNs4WRwOLH44IGCbJJbwMvbAhylxuBY+NLRsfus+xBwpxkxgfZipxA4RyvRqTsHcA b995UgJFSd/ikZzQRb1tH1pdphsf5TgGP7wkW7uLVj48mFYViJTC2NCvSML+VQFx7DHn Zoag== X-Gm-Message-State: AOJu0YwNJaNYpzHCxKIaz4E0J++72TzFLYl7frQBoGaTYDcWZuZL9ILG X4dHvv+QhGV2GaPL/iy77vBS/7MBM8/5HhJWZlJZF8QBtVDswwNfxsYnrhrl8qSEACrgU2HG5MF rfUodA38= X-Gm-Gg: ASbGncsKe+MyNRTIE1E+tDU4Y2EbTdcUcyUD25sGIwmoyem1Wx4DWl0Sn4uWm5cmCwI U/jw7W1oISHjxadTB9NUxh9hCqNM+6OoL4TeH5AsuA4+sjpT0eyX54QcNYbdE0aeiujPnxndMBy Es/qaNbR8SRUuDwCFf3mAnEgFc0hEJagi8g80/ftD6LsjO5aWqZpR30RaPGdLZJfiB7n6TOqmTu 7CB/csNvs0om8o+OJ4BOaygZRSmAjRfurM9o5GnyIrApPVLAbW1nHiBSANlbCGxLFkexYESY6RI jt8LJGGVwd0t0wsz2ya3YsmOGcru3VkYWERBNov49DE2+hHALRSSassITrJ4FSApXSFLfkLjTHM HXDE32emZIKlu1iA6HAGxy/hXEEIZM5akAIMilCnBenFOMrkscK05o+Ep1cMhuwG/A9+lGdqr/Z chm4O6rS++DP5nv6JR4hpTZ36x2/m0QYTgoKoTxZX0DJsScdDP X-Google-Smtp-Source: AGHT+IHAWwrlMaXB8V+Napv52CgKcr59D/CTiu9ZMV/Y3i8zgFIX/QCV5swbEY5rwEP+cjxmNf0KPA== X-Received: by 2002:a05:6402:358e:b0:634:bdb3:e63f with SMTP id 4fb4d7f45d1cf-63c1f6b1f03mr24731721a12.20.1761224698101; Thu, 23 Oct 2025 06:04:58 -0700 (PDT) Received: from localhost (037153217001.static.ipv4.heldenvannu.net. [37.153.217.1]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-63e3f322cf3sm1615545a12.29.2025.10.23.06.04.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 23 Oct 2025 06:04:56 -0700 (PDT) Content-Type: multipart/mixed; boundary=d94909237685c4fec1267c35e407a64b3fd813c511656e523f7dbbe4552d Date: Thu, 23 Oct 2025 15:04:56 +0200 Message-Id: From: "Jelte Fennema-Nio" Cc: "Dave Cramer" , "Jacob Champion" , "Heikki Linnakangas" Subject: Add GoAway protocol message for graceful but fast server shutdown/switchover To: "PostgreSQL Hackers" MIME-Version: 1.0 X-TUID: /zSp9bEjTnid List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --d94909237685c4fec1267c35e407a64b3fd813c511656e523f7dbbe4552d Content-Type: multipart/alternative; boundary=78b9c42d1fd5a5e5b07c9900201803264571aa46702f54ff434e2034f6f2 --78b9c42d1fd5a5e5b07c9900201803264571aa46702f54ff434e2034f6f2 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed This change introduces a new GoAway backend-to-frontend protocol message (byte 'g') that the server can send to the client to politely request that client to disconnect/reconnect when convenient. This message i= s advisory only - the connection remains fully functional and clients may continue executing queries and starting new transactions. "When convenient" is obviously not very well defined, but the primary target clients are clients that maintain a connection pool. Such clients should disconnect/reconnect a connection in the pool when there's no user of that connection. This is similar to how such clients often currently remove a connection from the pool after the connection hits a maximum lifetime of e.g. 1 hour. This new message is used by Postgres during the already existing "smart" shutdown procedure (i.e. when postmaster receives SIGTERM). When Postgres is in "smart" shutdown mode existing clients can continue to run queries as usual but new connection attempts are rejected. This mode is primarily useful when triggering a switchover of a read replica. A load balancer can route new connections only to the new read replica, while the old load balancer keeps serving the existing connections until they disconnect. The problem is that this draining of connections could often take a long time. Even when clients only run very short queries/transactions because the session can be kept open much longer (many connection pools use 1 hour max lifetime of a connection by default). With the introduction of the GoAway message Postgres now sends this message to all connected clients when it enters smart shutdown mode. If these clients respond to the message by reconnecting/disconnecting earlier than their maximum connection lifetime the draining can complete much quicker. Similar benefits to switchover duration can be achieved for other applications or proxies implementing the Postgres protocol, like when switching over a cluster of PgBouncer machines to a newer version. Applications/clients that use libpq can periodically check the result of the new PQgoAwayReceived() function to find out whether they have been asked to reconnect. --78b9c42d1fd5a5e5b07c9900201803264571aa46702f54ff434e2034f6f2-- --d94909237685c4fec1267c35e407a64b3fd813c511656e523f7dbbe4552d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=nocfbot.v1-0003-Add-pytest-based-tests-for-GoAway-message.patch Content-Type: text/x-patch; charset=utf-8; name=nocfbot.v1-0003-Add-pytest-based-tests-for-GoAway-message.patch RnJvbSBjOGUwZDA1OTY4NjY3OGM5ZjgyMDUxOTkzNDhlYjA4NDJlNWYwZGNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDIzIE9jdCAyMDI1IDE0OjMxOjUyICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MSAzLzNdIEFkZCBweXRlc3QgYmFzZWQgdGVzdHMgZm9yIEdvQXdheSBtZXNzYWdlCgpJIHVzZWQg dGhpcyBwYXRjaHNldCBhcyBhIHRyaWFsIGZvciB0aGUgbmV3IHB5dGVzdCBzdWl0ZSB0aGF0IEph Y29iIGlzCnRyeWluZyB0byBpbnRyb2R1Y2UuIEZlZWwgZnJlZSB0byBsb29rIGF0IGl0LCBidXQg SSdkIHNheSBkb24ndCByZXZpZXcKdGhpcyB0ZXN0IGluIGRldGFpbCB1bnRpbCB3ZSBoYXZlIHRo ZSBweXRlc3QgY2hhbmdlcyBtZXJnZWQgb3IgYXQgbGVhc3QKaW4gYSBtb3JlIGFncmVlZCB1cG9u IHN0YXRlLiBUaGlzIHBhdGNoIGlzIGJ1aWx0IG9uIHRvcCBvZiB0aGF0IHYzCnBhdGNoc2V0LiBU aGlzIHRlc3QgaXMgbm90IGFwcGxpZWQgYnkgY2Zib3QuCgpUZXN0aW5nIHRoaXMgYW55IG90aGVy IHdheSBpcyBhY3R1YWxseSBxdWl0ZSBkaWZmaWN1bHQgd2l0aCB0aGUKaW5mcmFzdHJ1Y3R1cmUg d2UgY3VycmVudGx5IGhhdmUgKG9mIGNvdXJzZSBJIGNvdWxkIGNoYW5nZSB0aGF0LCBidXQgSSdk Cm11Y2ggcmF0aGVyIHNwZW5kIHRoYXQgZW5lcmd5L3RpbWUgb24gbWFraW5nIHRoZSBweXRlc3Qg dGVzdCBzdWl0ZSBhCnRoaW5nKToKLSBwZ3JlZ3Jlc3MgYW5kIHBlcmwgdGVzdHMgZG9uJ3Qgd29y ayBiZWNhdXNlIHdlIG5lZWQgdG8gY2FsbCBhIG5ldwogIGxpYnBxIGZ1bmN0aW9uIHRoYXQgaXMg bm90IGV4cG9zZWQgaW4gcHNxbCAoSSBndWVzcyBJIGNvdWxkIGV4cG9zZSBpdAogIHdpdGggc29t ZSBcZ29hd2F5cmVjZWl2ZWQgY29tbWFuZCwgYnV0IGl0IGRvZXNuJ3Qgc2VlbSB2ZXJ5IHVzZWZ1 bCkuCi0gbGlicHFfcGlwZWxpbmUgY2Fubm90IHRlc3QgdGhpcyBiZWNhdXNlIGl0IHdvdWxkIG5l ZWQgdG8gcmVzdGFydAogIHRoZSBQb3N0Z3JlcyBzZXJ2ZXIgYW5kIGFsbCBpdCBoYXMKLS0tCiBz cmMvdGVzdC9weXRlc3QvbGlicHEucHkgICAgICAgICB8IDE4ICsrKysrKysrKysrKwogc3JjL3Rl c3QvcHl0ZXN0L21lc29uLmJ1aWxkICAgICAgfCAgMSArCiBzcmMvdGVzdC9weXRlc3QvcHlwZy9m aXh0dXJlcy5weSB8IDMzICsrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcHl0ZXN0L3B5 cGcvc2VydmVyLnB5ICAgfCA1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBm aWxlcyBjaGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5 dGVzdC9saWJwcS5weSBiL3NyYy90ZXN0L3B5dGVzdC9saWJwcS5weQppbmRleCBiODUxYTExN2I2 Ni4uNTUzNmI2MDVjMTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3B5dGVzdC9saWJwcS5weQorKysg Yi9zcmMvdGVzdC9weXRlc3QvbGlicHEucHkKQEAgLTEzMyw2ICsxMzMsMTIgQEAgZGVmIGxvYWRf bGlicHFfaGFuZGxlKGxpYmRpcik6CiAgICAgbGliLlBRZnR5cGUucmVzdHlwZSA9IGN0eXBlcy5j X3VpbnQKICAgICBsaWIuUFFmdHlwZS5hcmd0eXBlcyA9IFtfUEdyZXN1bHRfcCwgY3R5cGVzLmNf aW50XQogCisgICAgbGliLlBRZ29Bd2F5UmVjZWl2ZWQucmVzdHlwZSA9IGN0eXBlcy5jX2ludAor ICAgIGxpYi5QUWdvQXdheVJlY2VpdmVkLmFyZ3R5cGVzID0gW19QR2Nvbm5fcF0KKworICAgIGxp Yi5QUWNvbnN1bWVJbnB1dC5yZXN0eXBlID0gY3R5cGVzLmNfaW50CisgICAgbGliLlBRY29uc3Vt ZUlucHV0LmFyZ3R5cGVzID0gW19QR2Nvbm5fcF0KKwogICAgIHJldHVybiBsaWIKIAogCkBAIC0z NDAsNiArMzQ2LDE4IEBAIGNsYXNzIFBHY29ubihjb250ZXh0bGliLkFic3RyYWN0Q29udGV4dE1h bmFnZXIpOgogICAgICAgICAgICAgZXJyb3JfbXNnID0gcmVzLmVycm9yX21lc3NhZ2UoKSBvciBm IlVuZXhwZWN0ZWQgc3RhdHVzOiB7c3RhdHVzfSIKICAgICAgICAgICAgIHJhaXNlIExpYnBxRXJy b3IoZiJRdWVyeSBmYWlsZWQ6IHtlcnJvcl9tc2d9XG5RdWVyeToge3F1ZXJ5fSIpCiAKKyAgICBk ZWYgY29uc3VtZV9pbnB1dChzZWxmKSAtPiBib29sOgorICAgICAgICAiIiIKKyAgICAgICAgQ29u c3VtZXMgYW55IGF2YWlsYWJsZSBpbnB1dCBmcm9tIHRoZSBzZXJ2ZXIuIFJldHVybnMgVHJ1ZSBv biBzdWNjZXNzLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fbGliLlBR Y29uc3VtZUlucHV0KHNlbGYuX2hhbmRsZSkpCisKKyAgICBkZWYgZ29hd2F5X3JlY2VpdmVkKHNl bGYpIC0+IGJvb2w6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIFRydWUgaWYgYSBHb0F3 YXkgbWVzc2FnZSB3YXMgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLgorICAgICAgICAiIiIKKyAg ICAgICAgcmV0dXJuIGJvb2woc2VsZi5fbGliLlBRZ29Bd2F5UmVjZWl2ZWQoc2VsZi5faGFuZGxl KSkKKwogCiBkZWYgY29ubnN0cihvcHRzOiBEaWN0W3N0ciwgQW55XSkgLT4gc3RyOgogICAgICIi IgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcHl0 ZXN0L21lc29uLmJ1aWxkCmluZGV4IGY1MzE5M2U4Njg2Li4zYzg1MTgyNDNkOSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9tZXNv bi5idWlsZApAQCAtMTIsNiArMTIsNyBAQCB0ZXN0cyArPSB7CiAgICAgJ3Rlc3RzJzogWwogICAg ICAgJ3B5dC90ZXN0X3NvbWV0aGluZy5weScsCiAgICAgICAncHl0L3Rlc3RfbGlicHEucHknLAor ICAgICAgJ3B5dC90ZXN0X2dvYXdheS5weScsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3B5dGVzdC9weXBnL2ZpeHR1cmVzLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcv Zml4dHVyZXMucHkKaW5kZXggY2YyMmM4ZWM0MzYuLmJhNDZmMDQ4YmViIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9weXRlc3QvcHlwZy9maXh0dXJlcy5weQorKysgYi9zcmMvdGVzdC9weXRlc3QvcHlw Zy9maXh0dXJlcy5weQpAQCAtMzAsNiArMzAsMzAgQEAgZGVmIHJlbWFpbmluZ190aW1lb3V0KCk6 CiAgICAgcmV0dXJuIGxhbWJkYTogbWF4KGRlYWRsaW5lIC0gdGltZS5tb25vdG9uaWMoKSwgMCkK IAogCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiB3YWl0X3VudGlsKHJlbWFpbmluZ190aW1lb3V0KToK KyAgICBkZWYgd2FpdF91bnRpbChlcnJvcl9tZXNzYWdlPSJEaWQgbm90IGNvbXBsZXRlIGluIHRp bWUiLCB0aW1lb3V0PU5vbmUsIGludGVydmFsPTEpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9v cCB1bnRpbCB0aGUgdGltZW91dCBpcyByZWFjaGVkLiBJZiB0aGUgdGltZW91dCBpcyByZWFjaGVk LCByYWlzZSBhbgorICAgICAgICBleGNlcHRpb24gd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgbWVzc2Fn ZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAg IHRpbWVvdXQgPSByZW1haW5pbmdfdGltZW91dCgpCisKKyAgICAgICAgZW5kID0gdGltZS50aW1l KCkgKyB0aW1lb3V0CisgICAgICAgIHByaW50X3Byb2dyZXNzID0gdGltZW91dCAvIDEwID4gNAor ICAgICAgICBsYXN0X3ByaW50ZWRfcHJvZ3Jlc3MgPSAwCisgICAgICAgIHdoaWxlIHRpbWUudGlt ZSgpIDwgZW5kOgorICAgICAgICAgICAgaWYgcHJpbnRfcHJvZ3Jlc3MgYW5kIHRpbWUudGltZSgp IC0gbGFzdF9wcmludGVkX3Byb2dyZXNzID4gNDoKKyAgICAgICAgICAgICAgICBsYXN0X3ByaW50 ZWRfcHJvZ3Jlc3MgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgICAgIHByaW50KGYie2Vycm9y X21lc3NhZ2V9IC0gd2lsbCByZXRyeSIpCisgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAg dGltZS5zbGVlcChpbnRlcnZhbCkKKyAgICAgICAgcmFpc2UgVGltZW91dEVycm9yKGVycm9yX21l c3NhZ2UpCisKKyAgICByZXR1cm4gd2FpdF91bnRpbAorCisKIEBweXRlc3QuZml4dHVyZShzY29w ZT0ic2Vzc2lvbiIpCiBkZWYgbGlicHFfaGFuZGxlKGxpYmRpcik6CiAgICAgIiIiCkBAIC0xNDks NiArMTczLDE1IEBAIGRlZiBwZ19zZXJ2ZXJfbW9kdWxlKHBnX3NlcnZlcl9nbG9iYWwpOgogICAg ICAgICB5aWVsZCBzCiAKIAorQHB5dGVzdC5maXh0dXJlKGF1dG91c2U9VHJ1ZSwgc2NvcGU9ImZ1 bmN0aW9uIikKK2RlZiBlbnN1cmVfc2VydmVyX3J1bm5pbmcocGdfc2VydmVyX2dsb2JhbCk6Cisg ICAgIiIiCisgICAgQXV0b3VzZSBmaXh0dXJlIHRoYXQgZW5zdXJlcyB0aGUgc2VydmVyIGlzIHJ1 bm5pbmcgYmVmb3JlIGVhY2ggdGVzdC4KKyAgICBJZiBhIHRlc3Qgc2h1dHMgZG93biB0aGUgc2Vy dmVyLCB0aGlzIHdpbGwgcmVzdGFydCBpdCBmb3IgdGhlIG5leHQgdGVzdC4KKyAgICAiIiIKKyAg ICBwZ19zZXJ2ZXJfZ2xvYmFsLmVuc3VyZV9ydW5uaW5nKCkKKworCiBAcHl0ZXN0LmZpeHR1cmUK IGRlZiBwZyhwZ19zZXJ2ZXJfbW9kdWxlLCByZW1haW5pbmdfdGltZW91dCk6CiAgICAgIiIiCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHlwZy9zZXJ2ZXIucHkgYi9zcmMvdGVzdC9weXRl c3QvcHlwZy9zZXJ2ZXIucHkKaW5kZXggZDY2NzVjZGU5M2QuLmYwOTY1MWMwODllIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9weXRlc3QvcHlwZy9zZXJ2ZXIucHkKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0 L3B5cGcvc2VydmVyLnB5CkBAIC0zMzIsNiArMzMyLDU2IEBAIGNsYXNzIFBvc3RncmVzU2VydmVy OgogICAgICAgICAgICAgIyBTZXJ2ZXIgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHN0b3BwZWQKICAg ICAgICAgICAgIHBhc3MKIAorICAgIGRlZiBlbnN1cmVfcnVubmluZyhzZWxmKToKKyAgICAgICAg IiIiCisgICAgICAgIEVuc3VyZSB0aGF0IHRoZSBQb3N0Z3JlU1FMIHNlcnZlciBpcyBydW5uaW5n IGFuZCBhY2NlcHRpbmcgY29ubmVjdGlvbnMuCisKKyAgICAgICAgSWYgdGhlIHNlcnZlciBpcyBu b3QgcnVubmluZywgaXQgd2lsbCBiZSByZXN0YXJ0ZWQuIFRoaXMgbWV0aG9kIHdhaXRzCisgICAg ICAgIGZvciBhbnkgaW4tcHJvZ3Jlc3Mgc2h1dGRvd24gdG8gY29tcGxldGUgYmVmb3JlIGF0dGVt cHRpbmcgdG8gcmVzdGFydC4KKyAgICAgICAgIiIiCisgICAgICAgIHBpZF9maWxlID0gb3MucGF0 aC5qb2luKHNlbGYuZGF0YWRpciwgInBvc3RtYXN0ZXIucGlkIikKKworICAgICAgICAjIFdhaXQg Zm9yIGFueSBpbi1wcm9ncmVzcyBzaHV0ZG93biB0byBjb21wbGV0ZQorICAgICAgICBzb2NrZXRf cGF0dGVybiA9IG9zLnBhdGguam9pbihzZWxmLnNvY2tkaXIsIGYiLnMuUEdTUUwue3NlbGYucG9y dH0qIikKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoMTAwKTogICMgV2FpdCB1cCB0byAxMCBzZWNv bmRzCisgICAgICAgICAgICAjIFNlcnZlciBpcyBmdWxseSBkb3duIHdoZW4gYm90aCBQSUQgZmls ZSBhbmQgc29ja2V0cyBhcmUgZ29uZQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3Rz KHBpZF9maWxlKSBhbmQgbGVuKGdsb2IuZ2xvYihzb2NrZXRfcGF0dGVybikpID09IDA6CisgICAg ICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICMgU2VydmVyIGlzIHJ1bm5pbmcgaWYgUElE IGV4aXN0cyBhbmQgd2UgY2FuIGNvbm5lY3QKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3Rz KHBpZF9maWxlKToKKyAgICAgICAgICAgICAgICAjIFVzZSBwZ19pc3JlYWR5IHRvIGNoZWNrIGlm IHNlcnZlciBpcyBhY2NlcHRpbmcgY29ubmVjdGlvbnMKKyAgICAgICAgICAgICAgICB0cnk6Cisg ICAgICAgICAgICAgICAgICAgIHBnX2lzcmVhZHkgPSBvcy5wYXRoLmpvaW4oc2VsZi5fYmluZGly LCAicGdfaXNyZWFkeSIpCisgICAgICAgICAgICAgICAgICAgIHJ1bigKKyAgICAgICAgICAgICAg ICAgICAgICAgIHBnX2lzcmVhZHksCisgICAgICAgICAgICAgICAgICAgICAgICAiLWgiLAorICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZGlyLAorICAgICAgICAgICAgICAgICAgICAg ICAgIi1wIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucG9ydCwKKyAgICAgICAgICAg ICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsCisgICAgICAgICAgICAgICAg ICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLAorICAgICAgICAgICAgICAgICAgICAg ICAgdGltZW91dD0xLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAg ICMgU2VydmVyIGlzIHVwIGFuZCByZWFkeQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAg ICAgICAgICAgICAgIGV4Y2VwdCAoc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IsIHN1YnBy b2Nlc3MuVGltZW91dEV4cGlyZWQpOgorICAgICAgICAgICAgICAgICAgICAjIFNlcnZlciBpcyBu b3QgcmVhZHkgeWV0LCBrZWVwIHdhaXRpbmcKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAg ICAgICAgICAgdGltZS5zbGVlcCgwLjEpCisKKyAgICAgICAgIyBOb3cgY2hlY2sgaWYgc2VydmVy IG5lZWRzIHRvIGJlIHN0YXJ0ZWQKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBpZF9m aWxlKToKKyAgICAgICAgICAgICMgUmVzdGFydCB0aGUgc2VydmVyIGFuZCB3YWl0IGZvciBpdCB0 byBiZSByZWFkeQorICAgICAgICAgICAgcnVuKAorICAgICAgICAgICAgICAgIHNlbGYuX3BnX2N0 bCwKKyAgICAgICAgICAgICAgICAiLUQiLAorICAgICAgICAgICAgICAgIHNlbGYuZGF0YWRpciwK KyAgICAgICAgICAgICAgICAiLWwiLAorICAgICAgICAgICAgICAgIHNlbGYuX2xvZywKKyAgICAg ICAgICAgICAgICAiLXciLAorICAgICAgICAgICAgICAgICJzdGFydCIsCisgICAgICAgICAgICAp CisKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgIiIiUnVuIGFsbCByZWdpc3RlcmVk IGNsZWFudXAgY2FsbGJhY2tzLiIiIgogICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrLmNsb3Nl KCkKLS0gCjIuNTEuMQoK --d94909237685c4fec1267c35e407a64b3fd813c511656e523f7dbbe4552d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v1-0001-Bump-protocol-version-to-3.3.patch Content-Type: text/x-patch; charset=utf-8; name=v1-0001-Bump-protocol-version-to-3.3.patch RnJvbSBiMzI5ZWI3NDI2ZDQ3NTYxYzMwZDVmYWJhOGJkZjBiMGJmOTgzOGFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTdW4sIDE5IE9jdCAyMDI1IDAwOjMwOjQ4ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MSAxLzNdIEJ1bXAgcHJvdG9jb2wgdmVyc2lvbiB0byAzLjMKClRoaXMgY29tbWl0IGluY3JlbWVu dHMgdGhlIFBvc3RncmVTUUwgZnJvbnRlbmQvYmFja2VuZCBwcm90b2NvbCB2ZXJzaW9uCmZyb20g My4yIHRvIDMuMyBhbmQgZG9lcyB0aGUgcmVxdWlyZWQgYm9pbGVycGxhdGUgY2hhbmdlcy4gVGhl IG5leHQKY29tbWl0IHdpbGwgaW50cm9kdWNlIGFuIGFjdHVhbCBwcm90b2NvbCBjaGFuZ2UuCi0t LQogZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgIDQgKyst LQogc3JjL2luY2x1ZGUvbGlicHEvcHFjb21tLmggICAgICAgICAgICAgICAgICAgIHwgIDIgKy0K IHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyAgICAgICAgICAgICB8IDEyICsrKysr KysrKysKIC4uLi9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL2xpYnBxX3BpcGVsaW5lLmMgICB8IDIy ICsrKysrKysrKysrKysrKystLS0KIDQgZmlsZXMgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwg NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCBi L2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCmluZGV4IDlkNzU1MjMyODczLi44MjM0MDc5ZGVi YSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3Byb3RvY29sLnNnbWwKQEAgLTE4LDggKzE4LDggQEAKICA8L3BhcmE+CiAKICA8cGFyYT4K LSAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdmVyc2lvbiAzLjIgb2YgdGhlIHByb3RvY29sLCBp bnRyb2R1Y2VkIGluCi0gIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gdmVy c2lvbiAxOC4gVGhlIHNlcnZlciBhbmQgdGhlIGxpYnBxCisgIFRoaXMgZG9jdW1lbnQgZGVzY3Jp YmVzIHZlcnNpb24gMy4zIG9mIHRoZSBwcm90b2NvbCwgaW50cm9kdWNlZCBpbgorICA8cHJvZHVj dG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IHZlcnNpb24gMTkuIFRoZSBzZXJ2ZXIgYW5k IHRoZSBsaWJwcQogICBjbGllbnQgbGlicmFyeSBhcmUgYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0 aCBwcm90b2NvbCB2ZXJzaW9uIDMuMCwKICAgaW1wbGVtZW50ZWQgaW4gPHByb2R1Y3RuYW1lPlBv c3RncmVTUUw8L3Byb2R1Y3RuYW1lPiA3LjQgYW5kIGxhdGVyLgogIDwvcGFyYT4KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2xpYnBxL3BxY29tbS5oIGIvc3JjL2luY2x1ZGUvbGlicHEvcHFjb21t LmgKaW5kZXggZjA0Y2ExMzU2NTMuLjI0MjMzOTRiMzQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9saWJwcS9wcWNvbW0uaAorKysgYi9zcmMvaW5jbHVkZS9saWJwcS9wcWNvbW0uaApAQCAtOTQs NyArOTQsNyBAQCBpc191bml4c29ja19wYXRoKGNvbnN0IGNoYXIgKnBhdGgpCiAgKi8KIAogI2Rl ZmluZSBQR19QUk9UT0NPTF9FQVJMSUVTVAlQR19QUk9UT0NPTCgzLDApCi0jZGVmaW5lIFBHX1BS T1RPQ09MX0xBVEVTVAkJUEdfUFJPVE9DT0woMywyKQorI2RlZmluZSBQR19QUk9UT0NPTF9MQVRF U1QJCVBHX1BST1RPQ09MKDMsMykKIAogdHlwZWRlZiB1aW50MzIgUHJvdG9jb2xWZXJzaW9uOyAv KiBGRS9CRSBwcm90b2NvbCB2ZXJzaW9uIG51bWJlciAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25u ZWN0LmMKaW5kZXggYTNkMTI5MzFmZmYuLjc2ZjljZTNhMjNlIDEwMDY0NAotLS0gYS9zcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt Y29ubmVjdC5jCkBAIC04MzAxLDYgKzgzMDEsMTggQEAgcHFQYXJzZVByb3RvY29sVmVyc2lvbihj b25zdCBjaGFyICp2YWx1ZSwgUHJvdG9jb2xWZXJzaW9uICpyZXN1bHQsIFBHY29ubiAqY29ubiwK IAkJcmV0dXJuIHRydWU7CiAJfQogCisJaWYgKHN0cmNtcCh2YWx1ZSwgIjMuMyIpID09IDApCisJ eworCQkqcmVzdWx0ID0gUEdfUFJPVE9DT0woMywgMyk7CisJCXJldHVybiB0cnVlOworCX0KKwor CWlmIChzdHJjbXAodmFsdWUsICJsYXRlc3QiKSA9PSAwKQorCXsKKwkJKnJlc3VsdCA9IFBHX1BS T1RPQ09MX0xBVEVTVDsKKwkJcmV0dXJuIHRydWU7CisJfQorCiAJbGlicHFfYXBwZW5kX2Nvbm5f ZXJyb3IoY29ubiwgImludmFsaWQgJXMgdmFsdWU6IFwiJXNcIiIsCiAJCQkJCQkJY29udGV4dCwg dmFsdWUpOwogCXJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbGli cHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYyBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlw ZWxpbmUvbGlicHFfcGlwZWxpbmUuYwppbmRleCBiM2FmNzBmYTA5Yi4uMGIxMTNiMjcxZWEgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUu YworKysgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL2xpYnBxX3BpcGVsaW5lLmMK QEAgLTE0MDUsNyArMTQwNSwyMyBAQCB0ZXN0X3Byb3RvY29sX3ZlcnNpb24oUEdjb25uICpjb25u KQogCVBRZmluaXNoKGNvbm4pOwogCiAJLyoKLQkgKiBUZXN0IG1heF9wcm90b2NvbF92ZXJzaW9u PWxhdGVzdC4gJ2xhdGVzdCcgY3VycmVudGx5IG1lYW5zICczLjInLgorCSAqIFRlc3QgbWF4X3By b3RvY29sX3ZlcnNpb249My4zCisJICovCisJdmFsc1ttYXhfcHJvdG9jb2xfdmVyc2lvbl9pbmRl eF0gPSAiMy4zIjsKKwljb25uID0gUFFjb25uZWN0ZGJQYXJhbXMoa2V5d29yZHMsIHZhbHMsIGZh bHNlKTsKKworCWlmIChQUXN0YXR1cyhjb25uKSAhPSBDT05ORUNUSU9OX09LKQorCQlwZ19mYXRh bCgiQ29ubmVjdGlvbiB0byBkYXRhYmFzZSBmYWlsZWQ6ICVzIiwKKwkJCQkgUFFlcnJvck1lc3Nh Z2UoY29ubikpOworCisJcHJvdG9jb2xfdmVyc2lvbiA9IFBRZnVsbFByb3RvY29sVmVyc2lvbihj b25uKTsKKwlpZiAocHJvdG9jb2xfdmVyc2lvbiAhPSAzMDAwMykKKwkJcGdfZmF0YWwoImV4cGVj dGVkIDMwMDAzLCBnb3QgJWQiLCBwcm90b2NvbF92ZXJzaW9uKTsKKworCVBRZmluaXNoKGNvbm4p OworCisJLyoKKwkgKiBUZXN0IG1heF9wcm90b2NvbF92ZXJzaW9uPWxhdGVzdC4gJ2xhdGVzdCcg Y3VycmVudGx5IG1lYW5zICczLjMnLgogCSAqLwogCXZhbHNbbWF4X3Byb3RvY29sX3ZlcnNpb25f aW5kZXhdID0gImxhdGVzdCI7CiAJY29ubiA9IFBRY29ubmVjdGRiUGFyYW1zKGtleXdvcmRzLCB2 YWxzLCBmYWxzZSk7CkBAIC0xNDE1LDggKzE0MzEsOCBAQCB0ZXN0X3Byb3RvY29sX3ZlcnNpb24o UEdjb25uICpjb25uKQogCQkJCSBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAKIAlwcm90b2NvbF92 ZXJzaW9uID0gUFFmdWxsUHJvdG9jb2xWZXJzaW9uKGNvbm4pOwotCWlmIChwcm90b2NvbF92ZXJz aW9uICE9IDMwMDAyKQotCQlwZ19mYXRhbCgiZXhwZWN0ZWQgMzAwMDIsIGdvdCAlZCIsIHByb3Rv Y29sX3ZlcnNpb24pOworCWlmIChwcm90b2NvbF92ZXJzaW9uICE9IDMwMDAzKQorCQlwZ19mYXRh bCgiZXhwZWN0ZWQgMzAwMDMsIGdvdCAlZCIsIHByb3RvY29sX3ZlcnNpb24pOwogCiAJUFFmaW5p c2goY29ubik7CiAKLS0gCjIuNTEuMQoK --d94909237685c4fec1267c35e407a64b3fd813c511656e523f7dbbe4552d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v1-0002-Add-GoAway-protocol-message-for-graceful-but-fast.patch Content-Type: text/x-patch; charset=utf-8; name=v1-0002-Add-GoAway-protocol-message-for-graceful-but-fast.patch RnJvbSA5Yzc2YzI4ZmQzNjllMTc2ZGJhZGRlMTMxMzRiZmFkMDcxZTA0YTMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTdW4sIDE5IE9jdCAyMDI1IDAwOjM2OjMwICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MSAyLzNdIEFkZCBHb0F3YXkgcHJvdG9jb2wgbWVzc2FnZSBmb3IgZ3JhY2VmdWwgYnV0IGZhc3QK IHNlcnZlciBzaHV0ZG93bi9zd2l0Y2hvdmVyCgpUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIGEgbmV3 IEdvQXdheSBiYWNrZW5kLXRvLWZyb250ZW5kIHByb3RvY29sCm1lc3NhZ2UgKGJ5dGUgJ2cnKSB0 aGF0IHRoZSBzZXJ2ZXIgY2FuIHNlbmQgdG8gdGhlIGNsaWVudCB0byBwb2xpdGVseQpyZXF1ZXN0 IHRoYXQgY2xpZW50IHRvIGRpc2Nvbm5lY3QvcmVjb25uZWN0IHdoZW4gY29udmVuaWVudC4gVGhp cyBtZXNzYWdlIGlzCmFkdmlzb3J5IG9ubHkgLSB0aGUgY29ubmVjdGlvbiByZW1haW5zIGZ1bGx5 IGZ1bmN0aW9uYWwgYW5kIGNsaWVudHMgbWF5CmNvbnRpbnVlIGV4ZWN1dGluZyBxdWVyaWVzIGFu ZCBzdGFydGluZyBuZXcgdHJhbnNhY3Rpb25zLiAiV2hlbgpjb252ZW5pZW50IiBpcyBvYnZpb3Vz bHkgbm90IHZlcnkgd2VsbCBkZWZpbmVkLCBidXQgdGhlIHByaW1hcnkgdGFyZ2V0CmNsaWVudHMg YXJlIGNsaWVudHMgdGhhdCBtYWludGFpbiBhIGNvbm5lY3Rpb24gcG9vbC4gU3VjaCBjbGllbnRz IHNob3VsZApkaXNjb25uZWN0L3JlY29ubmVjdCBhIGNvbm5lY3Rpb24gaW4gdGhlIHBvb2wgd2hl biB0aGVyZSdzIG5vIHVzZXIgb2YKdGhhdCBjb25uZWN0aW9uLiBUaGlzIGlzIHNpbWlsYXIgdG8g aG93IHN1Y2ggY2xpZW50cyBvZnRlbiBjdXJyZW50bHkKcmVtb3ZlIGEgY29ubmVjdGlvbiBmcm9t IHRoZSBwb29sIGFmdGVyIHRoZSBjb25uZWN0aW9uIGhpdHMgYSBtYXhpbXVtCmxpZmV0aW1lIG9m IGUuZy4gMSBob3VyLgoKVGhpcyBuZXcgbWVzc2FnZSBpcyB1c2VkIGJ5IFBvc3RncmVzIGR1cmlu ZyB0aGUgYWxyZWFkeSBleGlzdGluZyAic21hcnQiCnNodXRkb3duIHByb2NlZHVyZSAoaS5lLiB3 aGVuIHBvc3RtYXN0ZXIgcmVjZWl2ZXMgU0lHVEVSTSkuIFdoZW4KUG9zdGdyZXMgaXMgaW4gInNt YXJ0IiBzaHV0ZG93biBtb2RlIGV4aXN0aW5nIGNsaWVudHMgY2FuIGNvbnRpbnVlIHRvCnJ1biBx dWVyaWVzIGFzIHVzdWFsIGJ1dCBuZXcgY29ubmVjdGlvbiBhdHRlbXB0cyBhcmUgcmVqZWN0ZWQu IFRoaXMgbW9kZQppcyBwcmltYXJpbHkgdXNlZnVsIHdoZW4gdHJpZ2dlcmluZyBhIHN3aXRjaG92 ZXIgb2YgYSByZWFkIHJlcGxpY2EuIEEKbG9hZCBiYWxhbmNlciBjYW4gcm91dGUgbmV3IGNvbm5l Y3Rpb25zIG9ubHkgdG8gdGhlIG5ldyByZWFkIHJlcGxpY2EsCndoaWxlIHRoZSBvbGQgbG9hZCBi YWxhbmNlciBrZWVwcyBzZXJ2aW5nIHRoZSBleGlzdGluZyBjb25uZWN0aW9ucyB1bnRpbAp0aGV5 IGRpc2Nvbm5lY3QuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhpcyBkcmFpbmluZyBvZiBjb25uZWN0 aW9ucyBjb3VsZApvZnRlbiB0YWtlIGEgbG9uZyB0aW1lLiBFdmVuIHdoZW4gY2xpZW50cyBvbmx5 IHJ1biB2ZXJ5IHNob3J0CnF1ZXJpZXMvdHJhbnNhY3Rpb25zIGJlY2F1c2UgdGhlIHNlc3Npb24g Y2FuIGJlIGtlcHQgb3BlbiBtdWNoIGxvbmdlcgoobWFueSBjb25uZWN0aW9uIHBvb2xzIHVzZSAx IGhvdXIgbWF4IGxpZmV0aW1lIG9mIGEgY29ubmVjdGlvbiBieSBkZWZhdWx0KS4KV2l0aCB0aGUg aW50cm9kdWN0aW9uIG9mIHRoZSBHb0F3YXkgbWVzc2FnZSBQb3N0Z3JlcyBub3cgc2VuZHMgdGhp cwptZXNzYWdlIHRvIGFsbCBjb25uZWN0ZWQgY2xpZW50cyB3aGVuIGl0IGVudGVycyBzbWFydCBz aHV0ZG93biBtb2RlLgpJZiB0aGVzZSBjbGllbnRzIHJlc3BvbmQgdG8gdGhlIG1lc3NhZ2UgYnkg cmVjb25uZWN0aW5nL2Rpc2Nvbm5lY3RpbmcKZWFybGllciB0aGFuIHRoZWlyIG1heGltdW0gY29u bmVjdGlvbiBsaWZldGltZSB0aGUgZHJhaW5pbmcgY2FuIGNvbXBsZXRlCm11Y2ggcXVpY2tlci4g U2ltaWxhciBiZW5lZml0cyB0byBzd2l0Y2hvdmVyIGR1cmF0aW9uIGNhbiBiZSBhY2hpZXZlZApm b3Igb3RoZXIgYXBwbGljYXRpb25zIG9yIHByb3hpZXMgaW1wbGVtZW50aW5nIHRoZSBQb3N0Z3Jl cyBwcm90b2NvbCwKbGlrZSB3aGVuIHN3aXRjaGluZyBvdmVyIGEgY2x1c3RlciBvZiBQZ0JvdW5j ZXIgbWFjaGluZXMgdG8gYSBuZXdlcgp2ZXJzaW9uLgoKQXBwbGljYXRpb25zL2NsaWVudHMgdGhh dCB1c2UgbGlicHEgY2FuIHBlcmlvZGljYWxseSBjaGVjayB0aGUgcmVzdWx0IG9mClBRZ29Bd2F5 UmVjZWl2ZWQoKSBhdCBhbiBpbmFjdGl2ZSB0aW1lIHRvIHNlZSB3aGV0aGVyIHRoZXkgYXJlIGFz a2VkIHRvCnJlY29ubmVjdC4KLS0tCiBkb2Mvc3JjL3NnbWwvbGlicHEuc2dtbCAgICAgICAgICAg ICAgfCAyOSArKysrKysrKysrKysrKysrKysrKwogZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwg ICAgICAgICAgIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgIHwgMjQgKysrKysrKysrKysrKysrKwogc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIHwgIDMgKysKIHNyYy9iYWNrZW5kL3Rjb3AvcG9z dGdyZXMuYyAgICAgICAgICB8IDM3ICsrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNs dWRlL2xpYnBxL3Byb3RvY29sLmggICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uv cHJvY3NpZ25hbC5oICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCAgICAg ICAgICB8ICAxICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0ICAgICB8ICAxICsK IHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyAgICB8ICAxICsKIHNyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWV4ZWMuYyAgICAgICB8IDI3ICsrKysrKysrKysrKysrKysrKwogc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMgIHwgMTEgKysrKysrKy0KIHNyYy9pbnRlcmZh Y2VzL2xpYnBxL2xpYnBxLWZlLmggICAgICB8ICA1ICsrKysKIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2xpYnBxLWludC5oICAgICB8ICAxICsKIDE0IGZpbGVzIGNoYW5nZWQsIDE4MiBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbAppbmRleCA1YmY1OWExOTg1NS4uNzU1NGQ1MGE2YzMg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9s aWJwcS5zZ21sCkBAIC0yOTkyLDYgKzI5OTIsMzUgQEAgaW50IFBRc2VydmVyVmVyc2lvbihjb25z dCBQR2Nvbm4gKmNvbm4pOwogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5Pgog CisgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtUFFnb0F3YXlSZWNlaXZlZCI+CisgICAgIDx0 ZXJtPjxmdW5jdGlvbj5QUWdvQXdheVJlY2VpdmVkPC9mdW5jdGlvbj48aW5kZXh0ZXJtPjxwcmlt YXJ5PlBRZ29Bd2F5UmVjZWl2ZWQ8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorICAgICA8 bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBSZXR1cm5zIHRydWUgaWYgdGhlIHNlcnZl ciBoYXMgc2VudCBhIDxsaXRlcmFsPkdvQXdheTwvbGl0ZXJhbD4gbWVzc2FnZSwKKyAgICAgICBy ZXF1ZXN0aW5nIHRoZSBjbGllbnQgdG8gZGlzY29ubmVjdCB3aGVuIGNvbnZlbmllbnQuCisKKzxz eW5vcHNpcz4KK2ludCBQUWdvQXdheVJlY2VpdmVkKGNvbnN0IFBHY29ubiAqY29ubik7Cis8L3N5 bm9wc2lzPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgPGxpdGVy YWw+R29Bd2F5PC9saXRlcmFsPiBtZXNzYWdlIGlzIHNlbnQgYnkgdGhlIHNlcnZlciBkdXJpbmcg YQorICAgICAgIHNtYXJ0IHNodXRkb3duIHRvIHBvbGl0ZWx5IHJlcXVlc3QgdGhhdCBjbGllbnRz IGRpc2Nvbm5lY3QuIFRoaXMgaXMKKyAgICAgICBhZHZpc29yeSBvbmx5IC0gdGhlIGNvbm5lY3Rp b24gcmVtYWlucyBmdWxseSBmdW5jdGlvbmFsIGFuZCBxdWVyaWVzCisgICAgICAgY2FuIGNvbnRp bnVlIHRvIGJlIGV4ZWN1dGVkLiBBcHBsaWNhdGlvbnMgc2hvdWxkIGNoZWNrIHRoaXMgZmxhZwor ICAgICAgIHBlcmlvZGljYWxseSBhbmQgZGlzY29ubmVjdCBncmFjZWZ1bGx5IHdoZW4gcG9zc2li bGUsIHN1Y2ggYXMgYWZ0ZXIKKyAgICAgICBjb21wbGV0aW5nIHRoZSBjdXJyZW50IHRyYW5zYWN0 aW9uIG9yIHVuaXQgb2Ygd29yay4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAg ICAgVGhpcyBtZXNzYWdlIGlzIG9ubHkgc2VudCB0byBjbGllbnRzIHVzaW5nIHByb3RvY29sIHZl cnNpb24gMy4zIG9yCisgICAgICAgbGF0ZXIuIFRoZSBmdW5jdGlvbiByZXR1cm5zIDEgaWYgdGhl IDxsaXRlcmFsPkdvQXdheTwvbGl0ZXJhbD4gbWVzc2FnZQorICAgICAgIHdhcyByZWNlaXZlZCwg MCBvdGhlcndpc2UuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJs aXN0ZW50cnk+CisKICAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUWVycm9yTWVzc2FnZSI+ CiAgICAgIDx0ZXJtPgogICAgICAgPGZ1bmN0aW9uPlBRZXJyb3JNZXNzYWdlPC9mdW5jdGlvbj48 aW5kZXh0ZXJtPjxwcmltYXJ5PlBRZXJyb3JNZXNzYWdlPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcHJv dG9jb2wuc2dtbAppbmRleCA4MjM0MDc5ZGViYS4uMzQwNTE0ZGIwMDcgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21s CkBAIC01MjQwLDYgKzUyNDAsNDcgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9u PWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICA8L2xpc3RpdGVtPgogICAgPC92 YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InByb3RvY29sLW1lc3NhZ2UtZm9y bWF0cy1Hb0F3YXkiPgorICAgIDx0ZXJtPkdvQXdheSAoQik8L3Rlcm0+CisgICAgPGxpc3RpdGVt PgorICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVy bT5CeXRlMSgnZycpPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+Cisg ICAgICAgICBJZGVudGlmaWVzIHRoZSBtZXNzYWdlIGFzIGEgcG9saXRlIHNodXRkb3duIHJlcXVl c3QuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50MzIoNCk8L3Rl cm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIExlbmd0aCBv ZiBtZXNzYWdlIGNvbnRlbnRzIGluIGJ5dGVzLCBpbmNsdWRpbmcgc2VsZi4KKyAgICAgICAgPC9w YXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgPC92 YXJpYWJsZWxpc3Q+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgc2VydmVyIHNlbmRzIHRoaXMg bWVzc2FnZSBkdXJpbmcgYSBzbWFydCBzaHV0ZG93biB0byBwb2xpdGVseQorICAgICAgcmVxdWVz dCB0aGF0IHRoZSBjbGllbnQgZGlzY29ubmVjdCB3aGVuIGNvbnZlbmllbnQuIFRoaXMgbWVzc2Fn ZSBpcworICAgICAgYWR2aXNvcnkgb25seSAtIHRoZSBjb25uZWN0aW9uIHJlbWFpbnMgZnVsbHkg ZnVuY3Rpb25hbCBhbmQgdGhlIGNsaWVudAorICAgICAgbWF5IGNvbnRpbnVlIHRvIGV4ZWN1dGUg cXVlcmllcy4gQXBwbGljYXRpb25zIHNob3VsZCBjaGVjayBmb3IgdGhpcworICAgICAgbWVzc2Fn ZSB1c2luZyA8ZnVuY3Rpb24+UFFnb0F3YXlSZWNlaXZlZCgpPC9mdW5jdGlvbj4gYW5kIGRpc2Nv bm5lY3QKKyAgICAgIGdyYWNlZnVsbHkgd2hlbiBwb3NzaWJsZSwgc3VjaCBhcyBhZnRlciBjb21w bGV0aW5nIHRoZSBjdXJyZW50CisgICAgICB0cmFuc2FjdGlvbi4KKyAgICAgPC9wYXJhPgorCisg ICAgIDxwYXJhPgorICAgICAgVGhpcyBtZXNzYWdlIGlzIG9ubHkgc2VudCB0byBjbGllbnRzIHVz aW5nIHByb3RvY29sIHZlcnNpb24gMy4zIG9yIGxhdGVyLgorICAgICAgVGhlIHNlcnZlciB3aWxs IHdhaXQgZm9yIGNsaWVudHMgdG8gZGlzY29ubmVjdCBkdXJpbmcgYSBzbWFydCBzaHV0ZG93biwK KyAgICAgIGJ1dCBtYXkgZXZlbnR1YWxseSBmb3JjZSB0ZXJtaW5hdGlvbiBpZiBzaHV0ZG93biB0 YWtlcyB0b28gbG9uZy4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0icHJvdG9jb2wtbWVzc2FnZS1mb3JtYXRz LUdTU0VOQ1JlcXVlc3QiPgogICAgIDx0ZXJtPkdTU0VOQ1JlcXVlc3QgKEYpPC90ZXJtPgogICAg IDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rl ci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKaW5kZXggZTFkNjQzYjAx M2QuLjc5ZjExNmE1YTVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3Rt YXN0ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtMjEy Niw3ICsyMTI2LDMxIEBAIHByb2Nlc3NfcG1fc2h1dGRvd25fcmVxdWVzdCh2b2lkKQogCQkJICog bGF0ZXIgc3RhdGUsIGRvIG5vdCBjaGFuZ2UgaXQuCiAJCQkgKi8KIAkJCWlmIChwbVN0YXRlID09 IFBNX1JVTiB8fCBwbVN0YXRlID09IFBNX0hPVF9TVEFOREJZKQorCQkJeworCQkJCWRsaXN0X2l0 ZXIJaXRlcjsKKwogCQkJCWNvbm5zQWxsb3dlZCA9IGZhbHNlOworCisJCQkJLyoKKwkJCQkgKiBT aWduYWwgYWxsIGJhY2tlbmRzIHRvIHNlbmQgYSBHb0F3YXkgbWVzc2FnZSB0byB0aGVpcgorCQkJ CSAqIGNsaWVudHMsIHRvIHBvbGl0ZWx5IHJlcXVlc3QgdGhhdCB0aGV5IGRpc2Nvbm5lY3QuCisJ CQkJICovCisJCQkJZGxpc3RfZm9yZWFjaChpdGVyLCAmQWN0aXZlQ2hpbGRMaXN0KQorCQkJCXsK KwkJCQkJUE1DaGlsZCAgICAqYnAgPSBkbGlzdF9jb250YWluZXIoUE1DaGlsZCwgZWxlbSwgaXRl ci5jdXIpOworCisJCQkJCS8qCisJCQkJCSAqIE9ubHkgc2lnbmFsIHJlZ3VsYXIgYmFja2VuZHMg YW5kIHdhbHNlbmRlcnMuIFNraXAKKwkJCQkJICogYXV4aWxpYXJ5IHByb2Nlc3NlcyBhbmQgZGVh ZC1lbmQgYmFja2VuZHMuCisJCQkJCSAqLworCQkJCQlpZiAoYnAtPmJrZW5kX3R5cGUgPT0gQl9C QUNLRU5EIHx8CisJCQkJCQlicC0+YmtlbmRfdHlwZSA9PSBCX1dBTF9TRU5ERVIpCisJCQkJCXsK KwkJCQkJCVNlbmRQcm9jU2lnbmFsKGJwLT5waWQsIFBST0NTSUdfU01BUlRfU0hVVERPV04sCisJ CQkJCQkJCQkgICBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KIAkJ CWVsc2UgaWYgKHBtU3RhdGUgPT0gUE1fU1RBUlRVUCB8fCBwbVN0YXRlID09IFBNX1JFQ09WRVJZ KQogCQkJewogCQkJCS8qIFRoZXJlIHNob3VsZCBiZSBubyBjbGllbnRzLCBzbyBwcm9jZWVkIHRv IHN0b3AgY2hpbGRyZW4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3By b2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCAw ODc4MjEzMTFjYy4uNjAxMWMzMGQ1MjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFs LmMKQEAgLTY5MSw2ICs2OTEsOSBAQCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxf QVJHUykKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhUKSkK IAkJSGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogCisJaWYgKENoZWNrUHJvY1Np Z25hbChQUk9DU0lHX1NNQVJUX1NIVVRET1dOKSkKKwkJSGFuZGxlU21hcnRTaHV0ZG93bkludGVy cnVwdCgpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01F U1NBR0UpKQogCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCgpOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKaW5kZXggN2RkNzVhNDkwYWEuLmFkMDBkODY1MTE5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j CkBAIC00Miw4ICs0MiwxMCBAQAogI2luY2x1ZGUgImNvbW1vbi9wZ19wcm5nLmgiCiAjaW5jbHVk ZSAiaml0L2ppdC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCisjaW5jbHVkZSAibGlicHEv cHFjb21tLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJwcS9w cXNpZ25hbC5oIgorI2luY2x1ZGUgImxpYnBxL3Byb3RvY29sLmgiCiAjaW5jbHVkZSAibWIvcGdf d2NoYXIuaCIKICNpbmNsdWRlICJtYi9zdHJpbmdpbmZvX21iLmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCkBAIC05MSw2ICs5MywxNCBAQCBjb25zdCBjaGFyICpkZWJ1Z19xdWVyeV9zdHJpbmc7 IC8qIGNsaWVudC1zdXBwbGllZCBxdWVyeSBzdHJpbmcgKi8KIC8qIE5vdGU6IHdoZXJlVG9TZW5k T3V0cHV0IGlzIGluaXRpYWxpemVkIGZvciB0aGUgYm9vdHN0cmFwL3N0YW5kYWxvbmUgY2FzZSAq LwogQ29tbWFuZERlc3Qgd2hlcmVUb1NlbmRPdXRwdXQgPSBEZXN0RGVidWc7CiAKKy8qCisgKiBU cmFjayB3aGV0aGVyIHdlJ3ZlIGJlZW4gbm90aWZpZWQgb2Ygc21hcnQgc2h1dGRvd24gYW5kIHNl bnQgR29Bd2F5LgorICogU21hcnRTaHV0ZG93blBlbmRpbmcgaXMgc2V0IGJ5IHRoZSBQUk9DU0lH X1NNQVJUX1NIVVRET1dOIHNpZ25hbCBoYW5kbGVyLgorICogR29Bd2F5U2VudCB0cmFja3Mgd2hl dGhlciB3ZSd2ZSBhbHJlYWR5IHNlbnQgdGhlIEdvQXdheSBtZXNzYWdlLgorICovCitzdGF0aWMg dm9sYXRpbGUgc2lnX2F0b21pY190IFNtYXJ0U2h1dGRvd25QZW5kaW5nID0gZmFsc2U7CitzdGF0 aWMgYm9vbCBHb0F3YXlTZW50ID0gZmFsc2U7CisKIC8qIGZsYWcgZm9yIGxvZ2dpbmcgZW5kIG9m IHNlc3Npb24gKi8KIGJvb2wJCUxvZ19kaXNjb25uZWN0aW9ucyA9IGZhbHNlOwogCkBAIC01MDgs NiArNTE4LDIwIEBAIFByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KGJvb2wgYmxvY2tlZCkKIAkJ LyogQ2hlY2sgZm9yIGdlbmVyYWwgaW50ZXJydXB0cyB0aGF0IGFycml2ZWQgYmVmb3JlL3doaWxl IHJlYWRpbmcgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAorCQkvKiBTZW5kIEdvQXdh eSBtZXNzYWdlIGlmIHNtYXJ0IHNodXRkb3duIGlzIHBlbmRpbmcgKi8KKwkJaWYgKFNtYXJ0U2h1 dGRvd25QZW5kaW5nICYmICFHb0F3YXlTZW50ICYmCisJCQl3aGVyZVRvU2VuZE91dHB1dCA9PSBE ZXN0UmVtb3RlICYmCisJCQlNeVByb2NQb3J0ICYmIE15UHJvY1BvcnQtPnByb3RvID49IFBHX1BS T1RPQ09MKDMsIDMpKQorCQl7CisJCQlTdHJpbmdJbmZvRGF0YSBidWY7CisKKwkJCXBxX2JlZ2lu bWVzc2FnZSgmYnVmLCBQcU1zZ19Hb0F3YXkpOworCQkJcHFfZW5kbWVzc2FnZSgmYnVmKTsKKwkJ CXBxX2ZsdXNoKCk7CisKKwkJCUdvQXdheVNlbnQgPSB0cnVlOworCQl9CisKIAkJLyogUHJvY2Vz cyBzaW52YWwgY2F0Y2h1cCBpbnRlcnJ1cHRzLCBpZiBhbnkgKi8KIAkJaWYgKGNhdGNodXBJbnRl cnJ1cHRQZW5kaW5nKQogCQkJUHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQoKTsKQEAgLTMwODcsNiAr MzExMSwxOCBAQCBGbG9hdEV4Y2VwdGlvbkhhbmRsZXIoU0lHTkFMX0FSR1MpCiAJCQkJCSAgICJp bnZhbGlkIG9wZXJhdGlvbiwgc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvLiIpKSk7CiB9CiAKKy8q CisgKiBUZWxsIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgb3IgbWFpbiBsb29wIGl0 ZXJhdGlvbiB0byBzZW5kIGEKKyAqIEdvQXdheSBtZXNzYWdlIHRvIHRoZSBjbGllbnQuICBSdW5z IGluIGEgU0lHVVNSMSBoYW5kbGVyLgorICovCit2b2lkCitIYW5kbGVTbWFydFNodXRkb3duSW50 ZXJydXB0KHZvaWQpCit7CisJU21hcnRTaHV0ZG93blBlbmRpbmcgPSB0cnVlOworCUludGVycnVw dFBlbmRpbmcgPSB0cnVlOworCS8qIGxhdGNoIHdpbGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2ln dXNyMV9oYW5kbGVyICovCit9CisKIC8qCiAgKiBUZWxsIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkgdG8gY2hlY2sgZm9yIGEgcGFydGljdWxhciB0eXBlIG9mCiAgKiByZWNvdmVyeSBj b25mbGljdC4gIFJ1bnMgaW4gYSBTSUdVU1IxIGhhbmRsZXIuCkBAIC0zMzEzLDYgKzMzNDksNyBA QCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCQlQcm9jRGllUGVuZGluZyA9IGZhbHNlOwogCQlR dWVyeUNhbmNlbFBlbmRpbmcgPSBmYWxzZTsgLyogUHJvY0RpZSB0cnVtcHMgUXVlcnlDYW5jZWwg Ki8KIAkJTG9ja0Vycm9yQ2xlYW51cCgpOworCiAJCS8qIEFzIGluIHF1aWNrZGllLCBkb24ndCBy aXNrIHNlbmRpbmcgdG8gY2xpZW50IGR1cmluZyBhdXRoICovCiAJCWlmIChDbGllbnRBdXRoSW5Q cm9ncmVzcyAmJiB3aGVyZVRvU2VuZE91dHB1dCA9PSBEZXN0UmVtb3RlKQogCQkJd2hlcmVUb1Nl bmRPdXRwdXQgPSBEZXN0Tm9uZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL3Byb3Rv Y29sLmggYi9zcmMvaW5jbHVkZS9saWJwcS9wcm90b2NvbC5oCmluZGV4IDdiZjkwMDUzYmNiLi4y NGZiYzlmMjYxMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGlicHEvcHJvdG9jb2wuaAorKysg Yi9zcmMvaW5jbHVkZS9saWJwcS9wcm90b2NvbC5oCkBAIC01Myw2ICs1Myw3IEBACiAjZGVmaW5l IFBxTXNnX0Z1bmN0aW9uQ2FsbFJlc3BvbnNlCSdWJwogI2RlZmluZSBQcU1zZ19Db3B5Qm90aFJl c3BvbnNlCQknVycKICNkZWZpbmUgUHFNc2dfUmVhZHlGb3JRdWVyeQkJCSdaJworI2RlZmluZSBQ cU1zZ19Hb0F3YXkJCQkJJ2cnCiAjZGVmaW5lIFBxTXNnX05vRGF0YQkJCQknbicKICNkZWZpbmUg UHFNc2dfUG9ydGFsU3VzcGVuZGVkCQkncycKICNkZWZpbmUgUHFNc2dfUGFyYW1ldGVyRGVzY3Jp cHRpb24JJ3QnCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IGFmZWViMWNhMDE5Li5iNjI5 MzQxYTRhZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM2LDYgKzM2LDcgQEAgdHlw ZWRlZiBlbnVtCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVw dCAgKi8KIAlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9n IHRoZSBtZW1vcnkgY29udGV4dHMgKi8KIAlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0Us IC8qIE1lc3NhZ2UgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCisJUFJPQ1NJR19TTUFS VF9TSFVURE9XTiwJCS8qIG5vdGlmeSBiYWNrZW5kIG9mIHNtYXJ0IHNodXRkb3duICovCiAKIAkv KiBSZWNvdmVyeSBjb25mbGljdCByZWFzb25zICovCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9GSVJTVCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCBiL3NyYy9p bmNsdWRlL3Rjb3AvdGNvcHByb3QuaAppbmRleCBjMWJjZmRlYzY3My4uYjdmZDIyYzQzYmIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaAorKysgYi9zcmMvaW5jbHVkZS90 Y29wL3Rjb3Bwcm90LmgKQEAgLTc0LDYgKzc0LDcgQEAgZXh0ZXJuIHZvaWQgZGllKFNJR05BTF9B UkdTKTsKIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIHF1aWNrZGllKFNJR05BTF9BUkdTKTsKIGV4 dGVybiB2b2lkIFN0YXRlbWVudENhbmNlbEhhbmRsZXIoU0lHTkFMX0FSR1MpOwogcGdfbm9yZXR1 cm4gZXh0ZXJuIHZvaWQgRmxvYXRFeGNlcHRpb25IYW5kbGVyKFNJR05BTF9BUkdTKTsKK2V4dGVy biB2b2lkIEhhbmRsZVNtYXJ0U2h1dGRvd25JbnRlcnJ1cHQodm9pZCk7CiBleHRlcm4gdm9pZCBI YW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFByb2NTaWduYWxSZWFzb24gcmVhc29uKTsK IGV4dGVybiB2b2lkIFByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KGJvb2wgYmxvY2tlZCk7CiBl eHRlcm4gdm9pZCBQcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0IGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvZXhwb3J0cy50eHQKaW5kZXggZGJiYWU2NDJkNzYuLjMzODVlNjVjMzg5IDEwMDY0 NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4dAorKysgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9leHBvcnRzLnR4dApAQCAtMjEwLDMgKzIxMCw0IEBAIFBRZ2V0QXV0aERhdGFI b29rICAgICAgICAgMjA3CiBQUWRlZmF1bHRBdXRoRGF0YUhvb2sgICAgIDIwOAogUFFmdWxsUHJv dG9jb2xWZXJzaW9uICAgICAyMDkKIGFwcGVuZFBRRXhwQnVmZmVyVkEgICAgICAgMjEwCitQUWdv QXdheVJlY2VpdmVkICAgICAgICAgIDIxMQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtY29ubmVjdC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCmluZGV4 IDc2ZjljZTNhMjNlLi41NGM3OWU1ZDIxNCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtY29ubmVjdC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYwpA QCAtNjk4LDYgKzY5OCw3IEBAIHBxRHJvcFNlcnZlckRhdGEoUEdjb25uICpjb25uKQogCWNvbm4t PnBhc3N3b3JkX25lZWRlZCA9IGZhbHNlOwogCWNvbm4tPmdzc2FwaV91c2VkID0gZmFsc2U7CiAJ Y29ubi0+d3JpdGVfZmFpbGVkID0gZmFsc2U7CisJY29ubi0+Z29hd2F5X3JlY2VpdmVkID0gZmFs c2U7CiAJZnJlZShjb25uLT53cml0ZV9lcnJfbXNnKTsKIAljb25uLT53cml0ZV9lcnJfbXNnID0g TlVMTDsKIAljb25uLT5vYXV0aF93YW50X3JldHJ5ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVj LmMKaW5kZXggMGIxZTM3ZWMzMGIuLjE2YmYxMDI4MGU1IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1leGVjLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5j CkBAIC0yNjk2LDYgKzI2OTYsMzMgQEAgUFFub3RpZmllcyhQR2Nvbm4gKmNvbm4pCiAJcmV0dXJu IGV2ZW50OwogfQogCisvKgorICogUFFnb0F3YXlSZWNlaXZlZAorICoJICByZXR1cm5zIDEgaWYg YSBHb0F3YXkgbWVzc2FnZSBoYXMgYmVlbiByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIKKyAqCSAg cmV0dXJucyAwIGlmIG5vdAorICoKKyAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90 IHJlYWQgYW55IG5ldyBkYXRhIGZyb20gdGhlIHNvY2tldDsKKyAqIGNhbGxlciBzaG91bGQgY2Fs bCBQUWNvbnN1bWVJbnB1dCgpIGZpcnN0IGlmIHRoZXkgd2FudCB0byBlbnN1cmUKKyAqIGFsbCBh dmFpbGFibGUgZGF0YSBoYXMgYmVlbiByZWFkLgorICovCitpbnQKK1BRZ29Bd2F5UmVjZWl2ZWQo UEdjb25uICpjb25uKQoreworCWlmICghY29ubikKKwkJcmV0dXJuIDA7CisKKwlpZiAoY29ubi0+ Z29hd2F5X3JlY2VpdmVkKQorCQlyZXR1cm4gMTsKKworCS8qCisJICogUGFyc2UgYW55IGF2YWls YWJsZSBkYXRhIHRvIHNlZSBpZiBhIEdvQXdheSBtZXNzYWdlIGhhcyBhcnJpdmVkLgorCSAqLwor CXBxUGFyc2VJbnB1dDMoY29ubik7CisKKwlyZXR1cm4gY29ubi0+Z29hd2F5X3JlY2VpdmVkID8g MSA6IDA7Cit9CisKKwogLyoKICAqIFBRcHV0Q29weURhdGEgLSBzZW5kIHNvbWUgZGF0YSB0byB0 aGUgYmFja2VuZCBkdXJpbmcgQ09QWSBJTiBvciBDT1BZIEJPVEgKICAqCmRpZmYgLS1naXQgYS9z cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLXByb3RvY29sMy5jCmluZGV4IGRhN2E4ZGI2OGM4Li45ZTU0ZTNmZjAzZCAxMDA2NDQKLS0t IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMKKysrIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMKQEAgLTE1Nyw2ICsxNTcsMTUgQEAgcHFQYXJzZUlucHV0 MyhQR2Nvbm4gKmNvbm4pCiAJCQlpZiAocHFHZXRFcnJvck5vdGljZTMoY29ubiwgZmFsc2UpKQog CQkJCXJldHVybjsKIAkJfQorCQllbHNlIGlmIChpZCA9PSBQcU1zZ19Hb0F3YXkpCisJCXsKKwkJ CS8qCisJCQkgKiBHb0F3YXkgaXMgYW4gYXN5bmNocm9ub3VzIG1lc3NhZ2Ugc2VudCBkdXJpbmcg c21hcnQgc2h1dGRvd24uCisJCQkgKiBQcm9jZXNzIGl0IGltbWVkaWF0ZWx5IHJlZ2FyZGxlc3Mg b2YgY29ubmVjdGlvbiBzdGF0ZS4KKwkJCSAqLworCQkJY29ubi0+Z29hd2F5X3JlY2VpdmVkID0g dHJ1ZTsKKwkJCWNvbm4tPmluQ3Vyc29yICs9IG1zZ0xlbmd0aDsKKwkJfQogCQllbHNlIGlmIChj b25uLT5hc3luY1N0YXR1cyAhPSBQR0FTWU5DX0JVU1kpCiAJCXsKIAkJCS8qIElmIG5vdCBJRExF IHN0YXRlLCBqdXN0IHdhaXQgLi4uICovCkBAIC0xNjgsNyArMTc3LDcgQEAgcHFQYXJzZUlucHV0 MyhQR2Nvbm4gKmNvbm4pCiAJCQkgKiBFUlJPUiBtZXNzYWdlcyBhcmUgaGFuZGxlZCB1c2luZyB0 aGUgbm90aWNlIHByb2Nlc3NvcjsKIAkJCSAqIFBhcmFtZXRlclN0YXR1cyBpcyBoYW5kbGVkIG5v cm1hbGx5OyBhbnl0aGluZyBlbHNlIGlzIGp1c3QKIAkJCSAqIGRyb3BwZWQgb24gdGhlIGZsb29y IGFmdGVyIGRpc3BsYXlpbmcgYSBzdWl0YWJsZSB3YXJuaW5nCi0JCQkgKiBub3RpY2UuICAoQW4g RVJST1IgaXMgdmVyeSBwb3NzaWJseSB0aGUgYmFja2VuZCB0ZWxsaW5nIHVzIHdoeQorCQkJICog bm90aWNlLiAoQW4gRVJST1IgaXMgdmVyeSBwb3NzaWJseSB0aGUgYmFja2VuZCB0ZWxsaW5nIHVz IHdoeQogCQkJICogaXQgaXMgYWJvdXQgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24sIHNvIHdlIGRv bid0IHdhbnQgdG8ganVzdAogCQkJICogZGlzY2FyZCBpdC4uLikKIAkJCSAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2xpYnBxLWZlLmgKaW5kZXggMDg1MjU4NGVkYWUuLjFmM2JkNjcxYTRiIDEwMDY0NAotLS0gYS9z cmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2xpYnBxLWZlLmgKQEAgLTYzLDYgKzYzLDEwIEBAIGV4dGVybiAiQyIKIC8qIEluZGljYXRlcyBw cmVzZW5jZSBvZiB0aGUgUFFBVVRIREFUQV9QUk9NUFRfT0FVVEhfREVWSUNFIGF1dGhkYXRhIGhv b2sgKi8KICNkZWZpbmUgTElCUFFfSEFTX1BST01QVF9PQVVUSF9ERVZJQ0UgMQogCisvKiBGZWF0 dXJlcyBhZGRlZCBpbiBQb3N0Z3JlU1FMIHYxOTogKi8KKy8qIEluZGljYXRlcyBwcmVzZW5jZSBv ZiBQUWdvQXdheVJlY2VpdmVkICovCisjZGVmaW5lIExJQlBRX0hBU19HT0FXQVkgMQorCiAvKgog ICogT3B0aW9uIGZsYWdzIGZvciBQUWNvcHlSZXN1bHQKICAqLwpAQCAtNDExLDYgKzQxNSw3IEBA IGV4dGVybiBjb25zdCBjaGFyICpQUXBhcmFtZXRlclN0YXR1cyhjb25zdCBQR2Nvbm4gKmNvbm4s CiBleHRlcm4gaW50CVBRcHJvdG9jb2xWZXJzaW9uKGNvbnN0IFBHY29ubiAqY29ubik7CiBleHRl cm4gaW50CVBRZnVsbFByb3RvY29sVmVyc2lvbihjb25zdCBQR2Nvbm4gKmNvbm4pOwogZXh0ZXJu IGludAlQUXNlcnZlclZlcnNpb24oY29uc3QgUEdjb25uICpjb25uKTsKK2V4dGVybiBpbnQJUFFn b0F3YXlSZWNlaXZlZChQR2Nvbm4gKmNvbm4pOwogZXh0ZXJuIGNoYXIgKlBRZXJyb3JNZXNzYWdl KGNvbnN0IFBHY29ubiAqY29ubik7CiBleHRlcm4gaW50CVBRc29ja2V0KGNvbnN0IFBHY29ubiAq Y29ubik7CiBleHRlcm4gaW50CVBRYmFja2VuZFBJRChjb25zdCBQR2Nvbm4gKmNvbm4pOwpkaWZm IC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggYi9zcmMvaW50ZXJmYWNl cy9saWJwcS9saWJwcS1pbnQuaAppbmRleCAwMmMxMTRmMTQwNS4uN2RjNmU4NThhMTYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCisrKyBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2xpYnBxLWludC5oCkBAIC01MTEsNiArNTExLDcgQEAgc3RydWN0IHBnX2Nvbm4K IAlib29sCQlzaWdwaXBlX2ZsYWc7CS8qIGNhbiB3ZSBtYXNrIFNJR1BJUEUgdmlhIE1TR19OT1NJ R05BTD8gKi8KIAlib29sCQl3cml0ZV9mYWlsZWQ7CS8qIGhhdmUgd2UgaGFkIGEgd3JpdGUgZmFp bHVyZSBvbiBzb2NrPyAqLwogCWNoYXIJICAgKndyaXRlX2Vycl9tc2c7CS8qIHdyaXRlIGVycm9y IG1lc3NhZ2UsIG9yIE5VTEwgaWYgT09NICovCisJYm9vbAkJZ29hd2F5X3JlY2VpdmVkOwkvKiB0 cnVlIGlmIHNlcnZlciBzZW50IEdvQXdheSBtZXNzYWdlICovCiAKIAlib29sCQlhdXRoX3JlcXVp cmVkOwkvKiByZXF1aXJlIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBmcm9tCiAJCQkJCQkJ CSAqIHRoZSBzZXJ2ZXI/ICovCi0tIAoyLjUxLjEKCg== --d94909237685c4fec1267c35e407a64b3fd813c511656e523f7dbbe4552d--