Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lOA6f-0002bG-Cw for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Mar 2021 02:15:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lOA6e-00012o-B8 for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Mar 2021 02:15:48 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lOA6d-00012h-VS for pgsql-hackers@lists.postgresql.org; Mon, 22 Mar 2021 02:15:48 +0000 Received: from [66.111.4.29] (helo=out5-smtp.messagingengine.com) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lOA6Z-0008Ag-CY for pgsql-hackers@lists.postgresql.org; Mon, 22 Mar 2021 02:15:47 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.nyi.internal (Postfix) with ESMTP id F10005C00FD; Sun, 21 Mar 2021 22:15:31 -0400 (EDT) Received: from imap21 ([10.202.2.71]) by compute2.internal (MEProxy); Sun, 21 Mar 2021 22:15:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eulerto.com; h= mime-version:message-id:in-reply-to:references:date:from:to:cc :subject:content-type; s=fm1; bh=/FOm69C0RzFtdIZePh6NMIQ27o339L4 OlJf4GAyMgTs=; b=JqHIdO2foQbSjYIIpa7YGbMXUn/91dGlistK+btmZsTngCH dLzWXC2dbHlWrYKXqKuCTGuNKmPeiKNuFNweX5jLWXSQpIl3DTCzs50vW7d9wvHf aLw/u2NMijxho8175QNVaXY2cfDgvjhKmRRB+RjPS6ftXfhurDYwRen9SYGPEAUy ONOiFyHKDV57n7M6GL7wyiOMSsoTsOARW3GZ//ZghrDLLUCIBgNr+g0Aq7rBNNmd kSLPb7oftBY7Gqkj90qSUrcqdAXzvmXE3StSSBCjzSIzIrgVfI1g8uPetgaDJneC K5b0SJpMRyQaz4cxZI0sEFITLQOuMT2X9beklfg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=/FOm69 C0RzFtdIZePh6NMIQ27o339L4OlJf4GAyMgTs=; b=feavG1gCmY5Cgz8t2MgQFD T70gZzWzD6rwMKW9KscfzVAL4jIWL8sfJx7jjJcM0dGrRWvYIje2ihItHvyTjFH1 ZepHi0mv1ouvpJLJHGssY3yoLEUiuEBB3rt2sV2rK68E5R2FOlRplzBIl9ohtkHn TFRO5coQSLIqvpZdW7m6uY4qSFl3NHHLSvpTlOSUEja+1ln7fBqYuWkRKPozRBsX sMXlXBItQMdiTKU3o/VMecGE8i9Hc8IwPGcTFsly8GprBPwU1rcrj5wBo6vVR6CN jXywlYhXvM3ODGEy1FVDqiTCwI47kH9A9euzzeWcbHnH/JdmLw8RAnTCAM+0Bysg == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrudegfedggeehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepofgfggfkjghffffhvffutgesmhdtreerreertdenucfhrhhomhepfdfguhhl vghrucfvrghvvghirhgrfdcuoegvuhhlvghrsegvuhhlvghrthhordgtohhmqeenucggtf frrghtthgvrhhnpefhvdelgfekvdetjeejtefhudejfeeileetjeeufeetffegjedtvdeu kedtgeffgeenucffohhmrghinhepvghnthgvrhhprhhishgvuggsrdgtohhmnecuvehluh hsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepvghulhgvrhesvghu lhgvrhhtohdrtghomh X-ME-Proxy: Received: by mailuser.nyi.internal (Postfix, from userid 501) id 114D651C005E; Sun, 21 Mar 2021 22:15:31 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.5.0-alpha0-206-g078a48fda5-fm-20210226.001-g078a48fd Mime-Version: 1.0 Message-Id: <7e4b5c48-a3d3-4b7e-b455-2d50c60a0ab7@www.fastmail.com> In-Reply-To: References: <20191128023201.GH237562@paquier.xyz> <20200116215730.vq6ark7uycmvwxtx@development> <2963266d-07b5-aed3-7cbe-2d5f2bc0b453@pgmasters.net> <8cf1ea71-b609-00e8-b8f0-c85ba61b7312@pgmasters.net> <4dbad191-9b40-4bb6-8940-d18f2e93c3ce@www.fastmail.com> <5b9fceed-8f91-467f-a64e-2134c5c3f496@www.fastmail.com> <52edc9d2-8e52-4cde-9a15-991961b78387@www.fastmail.com> <9d5ef845-391a-4c66-b298-0f594d9e6828@www.fastmail.com> Date: Sun, 21 Mar 2021 23:15:10 -0300 From: "Euler Taveira" To: "Rahila Syed" Cc: =?UTF-8?Q?=C3=96nder_Kalac=C4=B1?= , japin , "Michael Paquier" , "David Steele" , "Craig Ringer" , "Tomas Vondra" , "Amit Langote" , "PostgreSQL Hackers" Subject: Re: row filtering for logical replication Content-Type: multipart/mixed; boundary=678463cfc81e4a6da50c45e196abfd52 X-Host-Lookup-Failed: Reverse DNS lookup failed for 66.111.4.29 (deferred) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --678463cfc81e4a6da50c45e196abfd52 Content-Type: multipart/alternative; boundary=9ec129c7e50f4649bb44258752316d86 --9ec129c7e50f4649bb44258752316d86 Content-Type: text/plain On Thu, Mar 18, 2021, at 7:51 AM, Rahila Syed wrote: > 1. > I think the docs are being incorrectly updated to add a column to pg_partitioned_table > instead of pg_publication_rel. Good catch. > 2. +typedef struct PublicationRelationQual > +{ > + Oid relid; > + Relation relation; > + Node *whereClause; > +} PublicationRelationQual; > > Can this be given a more generic name like PublicationRelationInfo, so that the same struct > can be used to store additional relation information in future, for ex. column names, if column filtering is introduced. Good idea. I rename it and it'll be in this next patch set. > 3. Also, in the above structure, it seems that we can do with storing just relid and derive relation information from it > using table_open when needed. Am I missing something? We need the Relation. See OpenTableList(). The way this code is organized, it opens all publication tables and append each Relation to a list. This list is used in PublicationAddTables() to update the catalog. I tried to minimize the number of refactors while introducing this feature. We could probably revise this code in the future (someone said in a previous discussion that it is weird to open relations in one source code file -- publicationcmds.c -- and use it into another one -- pg_publication.c). > 4. Currently in logical replication, I noticed that an UPDATE is being applied on the subscriber even if the column values > are unchanged. Can row-filtering feature be used to change it such that, when all the OLD.columns = NEW.columns, filter out > the row from being sent to the subscriber. I understand this would need REPLICA IDENTITY FULL to work, but would be an > improvement from the existing state. This is how Postgres works. postgres=# create table foo (a integer, b integer); CREATE TABLE postgres=# insert into foo values(1, 100); INSERT 0 1 postgres=# select ctid, xmin, xmax, a, b from foo; ctid | xmin | xmax | a | b -------+--------+------+---+----- (0,1) | 488920 | 0 | 1 | 100 (1 row) postgres=# update foo set b = 101 where a = 1; UPDATE 1 postgres=# select ctid, xmin, xmax, a, b from foo; ctid | xmin | xmax | a | b -------+--------+------+---+----- (0,2) | 488921 | 0 | 1 | 101 (1 row) postgres=# update foo set b = 101 where a = 1; UPDATE 1 postgres=# select ctid, xmin, xmax, a, b from foo; ctid | xmin | xmax | a | b -------+--------+------+---+----- (0,3) | 488922 | 0 | 1 | 101 (1 row) You could probably abuse this feature and skip some UPDATEs when old tuple is identical to new tuple. The question is: why would someone issue the same command multiple times? A broken application? I would say: don't do it. Besides that, this feature could impose an overhead into a code path that already consume substantial CPU time. I've seen some tables with RIF and dozens of columns that would certainly contribute to increase the replication lag. > 5. Currently, any existing rows that were not replicated, when updated to match the publication quals > using UPDATE tab SET pub_qual_column = 'not_filtered' where a = 1; won't be applied, as row > does not exist on the subscriber. It would be good if ALTER SUBSCRIBER REFRESH PUBLICATION > would help fetch such existing rows from publishers that match the qual now(either because the row changed > or the qual changed) I see. This should be addressed by a resynchronize feature. Such option is useful when you have to change the row filter. It should certainly be implement as an ALTER SUBSCRIPTION subcommand. I attached a new patch set that addresses: * fix documentation; * rename PublicationRelationQual to PublicationRelationInfo; * remove the memset that was leftover from a previous patch set; * add new tests to improve coverage (INSERT/UPDATE/DELETE to exercise the row filter code). -- Euler Taveira EDB https://www.enterprisedb.com/ --9ec129c7e50f4649bb44258752316d86 Content-Type: text/html Content-Transfer-Encoding: quoted-printable
On Thu, Mar 18,= 2021, at 7:51 AM, Rahila Syed wrote:
1. 
I think the docs are being incorrectly updated to add a column to = pg_partitioned_table
instead of pg_publication_rel.
Good catch.

2. = ;  +typedef struct PublicationRelationQual
 +{
+       Oid         &nbs= p;           relid;
+   &nbs= p;   Relation        relation;
+       Node       *whereClause;
+} PublicationRelationQual;

Can thi= s be given a more generic name like PublicationRelationInfo, so that the= same struct 
can be used to store additional relatio= n information in future, for ex. column names, if column filtering is in= troduced.
Good idea. I rename it = and it'll be in this next patch set.

3. Also, = in the above structure, it seems that we can do with storing just relid = and derive relation information from it
using t= able_open when needed. Am I missing something?
We need the Relation. See OpenTableList(). The way this co= de is organized, it
opens all publication tables and appen= d each Relation to a list. This list is
used in Publicatio= nAddTables() to update the catalog. I tried to minimize the
number of refactors while introducing this feature. We could probably = revise
this code in the future (someone said in a previous= discussion that it is weird
to open relations in one sour= ce code file -- publicationcmds.c -- and use it
into anoth= er one -- pg_publication.c).

4.  Currentl= y in logical replication, I noticed that an UPDATE is being applied on t= he subscriber even if the column values
 are unchanged. Can row-filtering feature be used to change it s= uch that, when all the OLD.columns =3D NEW.columns, filter out 
=
the row from being sent to the subscriber. I understand this = would need REPLICA IDENTITY FULL to work, but would be an
= improvement from the existing state.
<= div>This is how Postgres works.

postgres=3D= # create table foo (a integer, b integer);
CREATE TABLE
postgres=3D# insert into foo values(1, 100);
I= NSERT 0 1
postgres=3D# select ctid, xmin, xmax, a, b from = foo;
ctid  |  xmin  | xmax | a |  b&nb= sp;
-------+--------+------+---+-----
(0,1) = | 488920 |    0 | 1 | 100
(1 row)
=

postgres=3D# update foo set b =3D 101 where a =3D 1;=
UPDATE 1
postgres=3D# select ctid, xmin, xm= ax, a, b from foo;
ctid  |  xmin  | xmax | = a |  b 
-------+--------+------+---+-----
(0,2) | 488921 |    0 | 1 | 101
(1 = row)

postgres=3D# update foo set b =3D 101 = where a =3D 1;
UPDATE 1
postgres=3D# select = ctid, xmin, xmax, a, b from foo;
ctid  |  xmin&n= bsp; | xmax | a |  b 
-------+--------+------+--= -+-----
(0,3) | 488922 |    0 | 1 | 101
=
(1 row)

You could probably abuse= this feature and skip some UPDATEs when old tuple is
iden= tical to new tuple. The question is: why would someone issue the same
command multiple times? A broken application? I would say: d= on't do it. Besides
that, this feature could impose an ove= rhead into a code path that already
consume substantial CP= U time. I've seen some tables with RIF and dozens of
colum= ns that would certainly contribute to increase the replication lag.
<= /div>

5. Currently, any existing rows that were not repl= icated, when updated to match the publication quals
using = UPDATE tab SET pub_qual_column =3D 'not_filtered' where a =3D 1; won't b= e applied, as row 
does not exist on the subscriber.&= nbsp; It would be good if ALTER SUBSCRIBER REFRESH PUBLICATION
=
would help fetch such existing rows from publishers that match the = qual now(either because the row changed
or the qual change= d)
I see. This should be addresse= d by a resynchronize feature. Such option is
useful when y= ou have to change the row filter. It should certainly be implement
as an ALTER SUBSCRIPTION subcommand.

I attached a new patch set that addresses:

* fix documentation;
* rename PublicationRelationQual t= o PublicationRelationInfo;
* remove the memset that was le= ftover from a previous patch set;
* add new tests to impro= ve coverage (INSERT/UPDATE/DELETE to exercise the row
&nbs= p; filter code).


--
E= uler Taveira

--9ec129c7e50f4649bb44258752316d86-- --678463cfc81e4a6da50c45e196abfd52 Content-Disposition: attachment;filename="v12-0001-Rename-a-WHERE-node.patch" Content-Type: text/x-patch; name="v12-0001-Rename-a-WHERE-node.patch" Content-Transfer-Encoding: BASE64 RnJvbSBhNmQ4OTNiZTAwOTFiYzhjZDg1NjlhYzM4MGU2ZjYyODI2M2QzMWMwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IE1vbiwgMTggSmFuIDIwMjEgMTE6NTM6MzQgLTAzMDAK U3ViamVjdDogW1BBVENIIHYxMiAxLzVdIFJlbmFtZSBhIFdIRVJFIG5vZGUKCkEgV0hFUkUg Y2xhdXNlIHdpbGwgYmUgdXNlZCBmb3Igcm93IGZpbHRlcmluZyBpbiBsb2dpY2FsIHJlcGxp Y2F0aW9uLiBXZQphbHJlYWR5IGhhdmUgYSBzaW1pbGFyIG5vZGU6ICdXSEVSRSAoY29uZGl0 aW9uIGhlcmUpJy4gTGV0J3MgcmVuYW1lIHRoZQpub2RlIHRvIGEgZ2VuZXJpYyBuYW1lIGFu ZCB1c2UgaXQgZm9yIHJvdyBmaWx0ZXJpbmcgdG9vLgotLS0KIHNyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwg MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBiYzQzNjQxZmZlLi4yMmJiYjI3 MDQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTQ5NSw3ICs0OTUsNyBAQCBzdGF0aWMgTm9kZSAq bWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywg Tm9kZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CWRlZl9hcmcgY29sdW1uRWxlbSB3aGVyZV9j bGF1c2Ugd2hlcmVfb3JfY3VycmVudF9jbGF1c2UKIAkJCQlhX2V4cHIgYl9leHByIGNfZXhw ciBBZXhwckNvbnN0IGluZGlyZWN0aW9uX2VsIG9wdF9zbGljZV9ib3VuZAogCQkJCWNvbHVt bnJlZiBpbl9leHByIGhhdmluZ19jbGF1c2UgZnVuY190YWJsZSB4bWx0YWJsZSBhcnJheV9l eHByCi0JCQkJRXhjbHVzaW9uV2hlcmVDbGF1c2Ugb3BlcmF0b3JfZGVmX2FyZworCQkJCU9w dFdoZXJlQ2xhdXNlIG9wZXJhdG9yX2RlZl9hcmcKICV0eXBlIDxsaXN0Pglyb3dzZnJvbV9p dGVtIHJvd3Nmcm9tX2xpc3Qgb3B0X2NvbF9kZWZfbGlzdAogJXR5cGUgPGJvb2xlYW4+IG9w dF9vcmRpbmFsaXR5CiAldHlwZSA8bGlzdD4JRXhjbHVzaW9uQ29uc3RyYWludExpc3QgRXhj bHVzaW9uQ29uc3RyYWludEVsZW0KQEAgLTM4MzcsNyArMzgzNyw3IEBAIENvbnN0cmFpbnRF bGVtOgogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9CiAJCQl8IEVYQ0xVREUgYWNjZXNz X21ldGhvZF9jbGF1c2UgJygnIEV4Y2x1c2lvbkNvbnN0cmFpbnRMaXN0ICcpJwotCQkJCW9w dF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24gT3B0Q29uc1RhYmxlU3BhY2UgIEV4Y2x1c2lv bldoZXJlQ2xhdXNlCisJCQkJb3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25z VGFibGVTcGFjZSAgT3B0V2hlcmVDbGF1c2UKIAkJCQlDb25zdHJhaW50QXR0cmlidXRlU3Bl YwogCQkJCXsKIAkJCQkJQ29uc3RyYWludCAqbiA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOwpA QCAtMzkzOSw3ICszOTM5LDcgQEAgRXhjbHVzaW9uQ29uc3RyYWludEVsZW06IGluZGV4X2Vs ZW0gV0lUSCBhbnlfb3BlcmF0b3IKIAkJCX0KIAkJOwogCi1FeGNsdXNpb25XaGVyZUNsYXVz ZToKK09wdFdoZXJlQ2xhdXNlOgogCQkJV0hFUkUgJygnIGFfZXhwciAnKScJCQkJCXsgJCQg PSAkMzsgfQogCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBOVUxMOyB9CiAJCTsKLS0g CjIuMjAuMQoK --678463cfc81e4a6da50c45e196abfd52 Content-Disposition: attachment;filename="v12-0002-Row-filter-for-logical-replication.patch" Content-Type: text/x-patch; name="v12-0002-Row-filter-for-logical-replication.patch" Content-Transfer-Encoding: BASE64 RnJvbSAyYjUwZThlZjRjZTczNjI0MjZmNmZkMzA1ZmMzYWI5NWE2ZDdlNDQ4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IE1vbiwgMTggSmFuIDIwMjEgMTI6MDc6NTEgLTAzMDAK U3ViamVjdDogW1BBVENIIHYxMiAyLzVdIFJvdyBmaWx0ZXIgZm9yIGxvZ2ljYWwgcmVwbGlj YXRpb24KClRoaXMgZmVhdHVyZSBhZGRzIHJvdyBmaWx0ZXIgZm9yIHB1YmxpY2F0aW9uIHRh Ymxlcy4gV2hlbiB5b3UgZGVmaW5lIG9yIG1vZGlmeQphIHB1YmxpY2F0aW9uIHlvdSBjYW4g b3B0aW9uYWxseSBmaWx0ZXIgcm93cyB0aGF0IGRvZXMgbm90IHNhdGlzZnkgYSBXSEVSRQpj b25kaXRpb24uIEl0IGFsbG93cyB5b3UgdG8gcGFydGlhbGx5IHJlcGxpY2F0ZSBhIGRhdGFi YXNlIG9yIHNldCBvZiB0YWJsZXMuClRoZSByb3cgZmlsdGVyIGlzIHBlciB0YWJsZSB3aGlj aCBtZWFucyB0aGF0IHlvdSBjYW4gZGVmaW5lIGRpZmZlcmVudCByb3cKZmlsdGVycyBmb3Ig ZGlmZmVyZW50IHRhYmxlcy4gQSBuZXcgcm93IGZpbHRlciBjYW4gYmUgYWRkZWQgc2ltcGx5 IGJ5CmluZm9ybWluZyB0aGUgV0hFUkUgY2xhdXNlIGFmdGVyIHRoZSB0YWJsZSBuYW1lLiBU aGUgV0hFUkUgZXhwcmVzc2lvbiBtdXN0IGJlCmVuY2xvc2VkIGJ5IHBhcmVudGhlc2VzLgoK VGhlIFdIRVJFIGNsYXVzZSBzaG91bGQgcHJvYmFibHkgY29udGFpbiBvbmx5IGNvbHVtbnMg dGhhdCBhcmUgcGFydCBvZiB0aGUKcHJpbWFyeSBrZXkgb3IgdGhhdCBhcmUgY292ZXJlZCBi eSBSRVBMSUNBIElERU5USVRZLiBPdGhlcndpc2UsIGFuZCBERUxFVEVzCndvbid0IGJlIHJl cGxpY2F0ZWQuIERFTEVURSB1c2VzIHRoZSBvbGQgcm93IHZlcnNpb24gKHRoYXQgaXMgbGlt aXRlZCB0bwpwcmltYXJ5IGtleSBvciBSRVBMSUNBIElERU5USVRZKSB0byBldmFsdWF0ZSB0 aGUgcm93IGZpbHRlci4gSU5TRVJUIGFuZCBVUERBVEUKdXNlIHRoZSBuZXcgcm93IHZlcnNp b24gdG8gZXZhbHVhdGUgdGhlIHJvdyBmaWx0ZXIsIGhlbmNlLCB5b3UgY2FuIHVzZSBhbnkK Y29sdW1uLiBJZiB0aGUgcm93IGZpbHRlciBldmFsdWF0ZXMgdG8gTlVMTCwgaXQgcmV0dXJu cyBmYWxzZS4gRm9yIHNpbXBsaWNpdHksCmZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQ7IGl0 IGNvdWxkIHBvc3NpYmx5IGJlIGFkZHJlc3NlZCBpbiBhIGZ1dHVyZSBwYXRjaC4KCklmIHlv dSBjaG9vc2UgdG8gZG8gdGhlIGluaXRpYWwgdGFibGUgc3luY2hyb25pemF0aW9uLCBvbmx5 IGRhdGEgdGhhdCBzYXRpc2ZpZXMKdGhlIHJvdyBmaWx0ZXJzIGlzIHNlbnQuIElmIHRoZSBz dWJzY3JpcHRpb24gaGFzIHNldmVyYWwgcHVibGljYXRpb25zIGluIHdoaWNoCmEgdGFibGUg aGFzIGJlZW4gcHVibGlzaGVkIHdpdGggZGlmZmVyZW50IFdIRVJFIGNsYXVzZXMsIHJvd3Mg bXVzdCBzYXRpc2Z5IGFsbApleHByZXNzaW9ucyB0byBiZSBjb3BpZWQuCgpJZiB5b3VyIHB1 YmxpY2F0aW9uIGNvbnRhaW5zIHBhcnRpdGlvbmVkIHRhYmxlLCB0aGUgcGFyYW1ldGVyCnB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IGRldGVybWluZXMgaWYgaXQgdXNlcyB0aGUgcGFy dGl0aW9uIHJvdyBmaWx0ZXIgKGlmCnRoZSBwYXJhbWV0ZXIgaXMgZmFsc2UgLS0gZGVmYXVs dCkgb3IgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIHJvdyBmaWx0ZXIuCi0tLQogZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICB8ICAgOCArCiBkb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwgICAgIHwgIDExICstCiBkb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sICAgIHwgIDM4ICsrKy0KIGRvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgfCAgIDggKy0KIHNyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAgfCAgNTIgKysrKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgfCAgOTggKysrKystLS0t CiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgIHwgIDI4ICsr LQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAgICAgICAgICAgICB8ICAxMCAr CiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgIHwgIDEzICsr CiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jICAgICAgICAgICAgIHwgICAzICsK IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgfCAgOTEgKysr KysrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgfCAg MTQgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgfCAy MTIgKysrKysrKysrKysrKysrKystLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5oICAgICAgICB8ICAgOSArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbl9yZWwuaCAgICB8ICAgNiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oICAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAg ICAgICAgICAgICAgfCAgMTEgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJl bGF0aW9uLmggICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0 aW9uLm91dCAgIHwgIDMyICsrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24u c3FsICAgICAgICB8ICAyMyArKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIwX3Jvd19m aWx0ZXIucGwgICB8IDIyMSArKysrKysrKysrKysrKysrKysrKwogMjIgZmlsZXMgY2hhbmdl ZCwgODA1IGluc2VydGlvbnMoKyksIDg3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMF9yb3dfZmlsdGVyLnBsCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbAppbmRleCA2OGQxOTYwNjk4Li44M2M4ZDMzMTg2IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bApAQCAtNjIwMyw2ICs2MjAzLDE0IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZs dDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAg ICAgICAgUmVmZXJlbmNlIHRvIHJlbGF0aW9uCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICA8c3Ry dWN0ZmllbGQ+cHJxdWFsPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+cGdfbm9kZV90cmVlPC90eXBl PgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+RXhwcmVzc2lvbiB0cmVlIChpbiA8ZnVu Y3Rpb24+bm9kZVRvU3RyaW5nKCk8L2Z1bmN0aW9uPgorICAgICAgcmVwcmVzZW50YXRpb24p IGZvciB0aGUgcmVsYXRpb24ncyBxdWFsaWZ5aW5nIGNvbmRpdGlvbjwvcGFyYT48L2VudHJ5 PgorICAgICA8L3Jvdz4KICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggZmFhMTE0 YjJjNi4uY2EwOTFhYWUzMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9w dWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRp b24uc2dtbApAQCAtMjEsOCArMjEsOCBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAog IDxyZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4KLUFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gQUREIFRBQkxF IFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9y ZXBsYWNlYWJsZT4gWyAqIF0gWywgLi4uXQotQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBTRVQgVEFCTEUgWyBP TkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxh Y2VhYmxlPiBbICogXSBbLCAuLi5dCitBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IEFERCBUQUJMRSBbIE9OTFkg XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFi bGU+IFsgKiBdIFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhw cmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXSBbLCAuLi5dCitBTFRFUiBQVUJMSUNBVElPTiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFNFVCBU QUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFt ZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXSBbLCAuLi5dCiBBTFRFUiBQ VUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFj ZWFibGU+IERST1AgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbLCAuLi5dCiBBTFRFUiBQVUJM SUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+IFNFVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9w YXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKQogQUxURVIgUFVCTElDQVRJT04g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBPV05F UiBUTyB7IDxyZXBsYWNlYWJsZT5uZXdfb3duZXI8L3JlcGxhY2VhYmxlPiB8IENVUlJFTlRf Uk9MRSB8IENVUlJFTlRfVVNFUiB8IFNFU1NJT05fVVNFUiB9CkBAIC05Miw3ICs5MiwxMiBA QCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICAgICAgdGFibGUgbmFtZSwgb25seSB0 aGF0IHRhYmxlIGlzIGFmZmVjdGVkLiAgSWYgPGxpdGVyYWw+T05MWTwvbGl0ZXJhbD4gaXMg bm90CiAgICAgICBzcGVjaWZpZWQsIHRoZSB0YWJsZSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50 IHRhYmxlcyAoaWYgYW55KSBhcmUKICAgICAgIGFmZmVjdGVkLiAgT3B0aW9uYWxseSwgPGxp dGVyYWw+KjwvbGl0ZXJhbD4gY2FuIGJlIHNwZWNpZmllZCBhZnRlciB0aGUgdGFibGUKLSAg ICAgIG5hbWUgdG8gZXhwbGljaXRseSBpbmRpY2F0ZSB0aGF0IGRlc2NlbmRhbnQgdGFibGVz IGFyZSBpbmNsdWRlZC4KKyAgICAgIG5hbWUgdG8gZXhwbGljaXRseSBpbmRpY2F0ZSB0aGF0 IGRlc2NlbmRhbnQgdGFibGVzIGFyZSBpbmNsdWRlZC4gSWYgdGhlCisgICAgICBvcHRpb25h bCA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlIGlzIHNwZWNpZmllZCwgcm93cyB0 aGF0IGRvIG5vdAorICAgICAgc2F0aXNmeSB0aGUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB3aWxsCisgICAgICBub3QgYmUgcHVi bGlzaGVkLiBOb3RlIHRoYXQgcGFyZW50aGVzZXMgYXJlIHJlcXVpcmVkIGFyb3VuZCB0aGUK KyAgICAgIGV4cHJlc3Npb24uIFRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+CisgICAgICBpcyBleGVjdXRlZCB3aXRoIHRoZSBy b2xlIHVzZWQgZm9yIHRoZSByZXBsaWNhdGlvbiBjb25uZWN0aW9uLgogICAgICA8L3BhcmE+ CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggZmY4MmZiY2E1NS4uNzE1YzM3ZjJi YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCkBAIC0y Miw3ICsyMiw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogIDxyZWZzeW5vcHNpc2Rp dj4KIDxzeW5vcHNpcz4KIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgWyBGT1IgVEFCTEUgWyBPTkxZ IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2Vh YmxlPiBbICogXSBbLCAuLi5dCisgICAgWyBGT1IgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBb IFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3Jl cGxhY2VhYmxlPiApIF0gWywgLi4uXQogICAgICAgfCBGT1IgQUxMIFRBQkxFUyBdCiAgICAg WyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3Bh cmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApIF0KIDwvc3lub3BzaXM+CkBAIC03 MSw2ICs3MSwxMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgICAgVGhpcyBkb2VzIG5vdCBhcHBs eSB0byBhIHBhcnRpdGlvbmVkIHRhYmxlLCBob3dldmVyLiAgVGhlIHBhcnRpdGlvbnMgb2YK ICAgICAgIGEgcGFydGl0aW9uZWQgdGFibGUgYXJlIGFsd2F5cyBpbXBsaWNpdGx5IGNvbnNp ZGVyZWQgcGFydCBvZiB0aGUKICAgICAgIHB1YmxpY2F0aW9uLCBzbyB0aGV5IGFyZSBuZXZl ciBleHBsaWNpdGx5IGFkZGVkIHRvIHRoZSBwdWJsaWNhdGlvbi4KKyAgICAgIElmIHRoZSBv cHRpb25hbCA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlIGlzIHNwZWNpZmllZCwg cm93cyB0aGF0IGRvIAorICAgICAgbm90IHNhdGlzZnkgdGhlIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gCisgICAgICB3aWxsIG5v dCBiZSBwdWJsaXNoZWQuIE5vdGUgdGhhdCBwYXJlbnRoZXNlcyBhcmUgcmVxdWlyZWQgYXJv dW5kIHRoZSAKKyAgICAgIGV4cHJlc3Npb24uCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFy YT4KQEAgLTEzMSw5ICsxMzUsMTUgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICBvbiBp dHMgcGFydGl0aW9ucykgY29udGFpbmVkIGluIHRoZSBwdWJsaWNhdGlvbiB3aWxsIGJlIHB1 Ymxpc2hlZAogICAgICAgICAgIHVzaW5nIHRoZSBpZGVudGl0eSBhbmQgc2NoZW1hIG9mIHRo ZSBwYXJ0aXRpb25lZCB0YWJsZSByYXRoZXIgdGhhbgogICAgICAgICAgIHRoYXQgb2YgdGhl IGluZGl2aWR1YWwgcGFydGl0aW9ucyB0aGF0IGFyZSBhY3R1YWxseSBjaGFuZ2VkOyB0aGUK LSAgICAgICAgICBsYXR0ZXIgaXMgdGhlIGRlZmF1bHQuICBFbmFibGluZyB0aGlzIGFsbG93 cyB0aGUgY2hhbmdlcyB0byBiZQotICAgICAgICAgIHJlcGxpY2F0ZWQgaW50byBhIG5vbi1w YXJ0aXRpb25lZCB0YWJsZSBvciBhIHBhcnRpdGlvbmVkIHRhYmxlCi0gICAgICAgICAgY29u c2lzdGluZyBvZiBhIGRpZmZlcmVudCBzZXQgb2YgcGFydGl0aW9ucy4KKyAgICAgICAgICBs YXR0ZXIgaXMgdGhlIGRlZmF1bHQgKDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPikuICBFbmFi bGluZyB0aGlzCisgICAgICAgICAgYWxsb3dzIHRoZSBjaGFuZ2VzIHRvIGJlIHJlcGxpY2F0 ZWQgaW50byBhIG5vbi1wYXJ0aXRpb25lZCB0YWJsZSBvciBhCisgICAgICAgICAgcGFydGl0 aW9uZWQgdGFibGUgY29uc2lzdGluZyBvZiBhIGRpZmZlcmVudCBzZXQgb2YgcGFydGl0aW9u cy4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYg dGhpcyBwYXJhbWV0ZXIgaXMgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LCBpdCB1c2VzIHRo ZQorICAgICAgICAgIDxsaXRlcmFsPldIRVJFPC9saXRlcmFsPiBjbGF1c2UgZnJvbSB0aGUg cGFydGl0aW9uOyBvdGhlcndpc2UsIHRoZQorICAgICAgICAgIDxsaXRlcmFsPldIRVJFPC9s aXRlcmFsPiBjbGF1c2UgZnJvbSB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXMgdXNlZC4KICAg ICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgPHBhcmE+CkBAIC0xODIsNiArMTkyLDE0IEBA IENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+CiAgICBkaXNhbGxvd2VkIG9uIHRob3NlIHRhYmxlcy4KICAgPC9w YXJhPgogCisgIDxwYXJhPgorICAgVGhlIDxsaXRlcmFsPldIRVJFPC9saXRlcmFsPiBjbGF1 c2Ugc2hvdWxkIHByb2JhYmx5IGNvbnRhaW4gb25seSBjb2x1bW5zCisgICB0aGF0IGFyZSBw YXJ0IG9mIHRoZSBwcmltYXJ5IGtleSBvciBiZSBjb3ZlcmVkICBieSA8bGl0ZXJhbD5SRVBM SUNBCisgICBJREVOVElUWTwvbGl0ZXJhbD4gb3RoZXJ3aXNlLCA8Y29tbWFuZD5ERUxFVEU8 L2NvbW1hbmQ+IG9wZXJhdGlvbnMgd2lsbCBub3QKKyAgIGJlIHJlcGxpY2F0ZWQuIEZvciA8 Y29tbWFuZD5JTlNFUlQ8L2NvbW1hbmQ+IGFuZCA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+ CisgICBvcGVyYXRpb25zLCBhbnkgY29sdW1uIGNhbiBiZSB1c2VkIGluIHRoZSA8bGl0ZXJh bD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBG b3IgYW4gPGNvbW1hbmQ+SU5TRVJUIC4uLiBPTiBDT05GTElDVDwvY29tbWFuZD4gY29tbWFu ZCwgdGhlIHB1YmxpY2F0aW9uIHdpbGwKICAgIHB1Ymxpc2ggdGhlIG9wZXJhdGlvbiB0aGF0 IGFjdHVhbGx5IHJlc3VsdHMgZnJvbSB0aGUgY29tbWFuZC4gIFNvIGRlcGVuZGluZwpAQCAt MTk3LDYgKzIxNSwxMSBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICA8cGFyYT4KICAgIDxhY3Jvbnlt PkRETDwvYWNyb255bT4gb3BlcmF0aW9ucyBhcmUgbm90IHB1Ymxpc2hlZC4KICAgPC9wYXJh PgorCisgIDxwYXJhPgorICAgVGhlIDxsaXRlcmFsPldIRVJFPC9saXRlcmFsPiBjbGF1c2Ug ZXhwcmVzc2lvbiBpcyBleGVjdXRlZCB3aXRoIHRoZSByb2xlIHVzZWQKKyAgIGZvciB0aGUg cmVwbGljYXRpb24gY29ubmVjdGlvbi4KKyAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CiAKICA8 cmVmc2VjdDE+CkBAIC0yMDksNiArMjMyLDEzIEBAIENSRUFURSBQVUJMSUNBVElPTiBteXB1 YmxpY2F0aW9uIEZPUiBUQUJMRSB1c2VycywgZGVwYXJ0bWVudHM7CiA8L3Byb2dyYW1saXN0 aW5nPgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBDcmVhdGUgYSBwdWJsaWNhdGlvbiB0 aGF0IHB1Ymxpc2hlcyBhbGwgY2hhbmdlcyBmcm9tIGFjdGl2ZSBkZXBhcnRtZW50czoKKzxw cm9ncmFtbGlzdGluZz4KK0NSRUFURSBQVUJMSUNBVElPTiBhY3RpdmVfZGVwYXJ0bWVudHMg Rk9SIFRBQkxFIGRlcGFydG1lbnRzIFdIRVJFIChhY3RpdmUgSVMgVFJVRSk7Cis8L3Byb2dy YW1saXN0aW5nPgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBDcmVhdGUgYSBwdWJsaWNh dGlvbiB0aGF0IHB1Ymxpc2hlcyBhbGwgY2hhbmdlcyBpbiBhbGwgdGFibGVzOgogPHByb2dy YW1saXN0aW5nPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2Ny aXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dt bAppbmRleCBlODEyYmVlZTM3Li5iOGY0ZWE1NjAzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMTAyLDcgKzEwMiwxMyBAQCBDUkVBVEUg U1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRp b25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgU3BlY2lm aWVzIHdoZXRoZXIgdGhlIGV4aXN0aW5nIGRhdGEgaW4gdGhlIHB1YmxpY2F0aW9ucyB0aGF0 IGFyZQogICAgICAgICAgIGJlaW5nIHN1YnNjcmliZWQgdG8gc2hvdWxkIGJlIGNvcGllZCBv bmNlIHRoZSByZXBsaWNhdGlvbiBzdGFydHMuCi0gICAgICAgICAgVGhlIGRlZmF1bHQgaXMg PGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4uCisgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxp dGVyYWw+dHJ1ZTwvbGl0ZXJhbD4uIElmIGFueSB0YWJsZSBpbiB0aGUKKyAgICAgICAgICBw dWJsaWNhdGlvbnMgaGFzIGEgPGxpdGVyYWw+V0hFUkU8L2xpdGVyYWw+IGNsYXVzZSwgcm93 cyB0aGF0IGRvIG5vdAorICAgICAgICAgIHNhdGlzZnkgdGhlIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICB3aWxs IG5vdCBiZSBjb3BpZWQuIElmIHRoZSBzdWJzY3JpcHRpb24gaGFzIHNldmVyYWwgcHVibGlj YXRpb25zIGluCisgICAgICAgICAgd2hpY2ggYSB0YWJsZSBoYXMgYmVlbiBwdWJsaXNoZWQg d2l0aCBkaWZmZXJlbnQKKyAgICAgICAgICA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xh dXNlcywgcm93cyBtdXN0IHNhdGlzZnkgYWxsIGV4cHJlc3Npb25zCisgICAgICAgICAgdG8g YmUgY29waWVkLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAg ICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5j CmluZGV4IDg0ZDJlZmNmZDIuLmFiYzNmYjY0MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmMKQEAgLTMzLDYgKzMzLDExIEBACiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgorI2luY2x1ZGUgInBhcnNl ci9wYXJzZV9jb2xsYXRlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgi CisKICNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCiAjaW5jbHVkZSAidXRpbHMvY2F0Y2FjaGUuaCIKQEAgLTE0MSwxOCArMTQ2LDIwIEBA IHBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKFBHX0ZVTkNUSU9OX0FSR1MpCiAgKiBJbnNl cnQgbmV3IHB1YmxpY2F0aW9uIC8gcmVsYXRpb24gbWFwcGluZy4KICAqLwogT2JqZWN0QWRk cmVzcwotcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUmVsYXRpb24gdGFy Z2V0cmVsLAorcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRp b25SZWxhdGlvbkluZm8gKnRhcmdldHJlbCwKIAkJCQkJCSBib29sIGlmX25vdF9leGlzdHMp CiB7CiAJUmVsYXRpb24JcmVsOwogCUhlYXBUdXBsZQl0dXA7CiAJRGF0dW0JCXZhbHVlc1tO YXR0c19wZ19wdWJsaWNhdGlvbl9yZWxdOwogCWJvb2wJCW51bGxzW05hdHRzX3BnX3B1Ymxp Y2F0aW9uX3JlbF07Ci0JT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHRhcmdldHJl bCk7CiAJT2lkCQkJcHJyZWxpZDsKIAlQdWJsaWNhdGlvbiAqcHViID0gR2V0UHVibGljYXRp b24ocHViaWQpOwogCU9iamVjdEFkZHJlc3MgbXlzZWxmLAogCQkJCXJlZmVyZW5jZWQ7CisJ UGFyc2VTdGF0ZSAqcHN0YXRlOworCVBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtOworCU5v ZGUJICAgKndoZXJlY2xhdXNlOwogCiAJcmVsID0gdGFibGVfb3BlbihQdWJsaWNhdGlvblJl bFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCkBAIC0xNjEsNyArMTY4LDcgQEAg cHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUmVsYXRpb24gdGFyZ2V0cmVs LAogCSAqIGR1cGxpY2F0ZXMsIGl0J3MgaGVyZSBqdXN0IHRvIHByb3ZpZGUgbmljZXIgZXJy b3IgbWVzc2FnZSBpbiBjb21tb24KIAkgKiBjYXNlLiBUaGUgcmVhbCBwcm90ZWN0aW9uIGlz IHRoZSB1bmlxdWUga2V5IG9uIHRoZSBjYXRhbG9nLgogCSAqLwotCWlmIChTZWFyY2hTeXND YWNoZUV4aXN0czIoUFVCTElDQVRJT05SRUxNQVAsIE9iamVjdElkR2V0RGF0dW0ocmVsaWQp LAorCWlmIChTZWFyY2hTeXNDYWNoZUV4aXN0czIoUFVCTElDQVRJT05SRUxNQVAsIE9iamVj dElkR2V0RGF0dW0odGFyZ2V0cmVsLT5yZWxpZCksCiAJCQkJCQkJICBPYmplY3RJZEdldERh dHVtKHB1YmlkKSkpCiAJewogCQl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2sp OwpAQCAtMTcyLDEwICsxNzksMjcgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBw dWJpZCwgUmVsYXRpb24gdGFyZ2V0cmVsLAogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJj b2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCiAJCQkJIGVycm1zZygicmVsYXRpb24g XCIlc1wiIGlzIGFscmVhZHkgbWVtYmVyIG9mIHB1YmxpY2F0aW9uIFwiJXNcIiIsCi0JCQkJ CQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpLCBwdWItPm5hbWUpKSk7CisJ CQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwtPnJlbGF0aW9uKSwgcHVi LT5uYW1lKSkpOwogCX0KIAotCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbih0YXJn ZXRyZWwpOworCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbih0YXJnZXRyZWwtPnJl bGF0aW9uKTsKKworCS8qIFNldCB1cCBhIHBzdGF0ZSB0byBwYXJzZSB3aXRoICovCisJcHN0 YXRlID0gbWFrZV9wYXJzZXN0YXRlKE5VTEwpOworCXBzdGF0ZS0+cF9zb3VyY2V0ZXh0ID0g bm9kZVRvU3RyaW5nKHRhcmdldHJlbC0+d2hlcmVDbGF1c2UpOworCisJbnNpdGVtID0gYWRk UmFuZ2VUYWJsZUVudHJ5Rm9yUmVsYXRpb24ocHN0YXRlLCB0YXJnZXRyZWwtPnJlbGF0aW9u LAorCQkJCQkJCQkJCSAgIEFjY2Vzc1NoYXJlTG9jaywKKwkJCQkJCQkJCQkgICBOVUxMLCBm YWxzZSwgZmFsc2UpOworCWFkZE5TSXRlbVRvUXVlcnkocHN0YXRlLCBuc2l0ZW0sIGZhbHNl LCB0cnVlLCB0cnVlKTsKKworCXdoZXJlY2xhdXNlID0gdHJhbnNmb3JtV2hlcmVDbGF1c2Uo cHN0YXRlLAorCQkJCQkJCQkJICAgY29weU9iamVjdCh0YXJnZXRyZWwtPndoZXJlQ2xhdXNl KSwKKwkJCQkJCQkJCSAgIEVYUFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRSwKKwkJCQkJCQkJ CSAgICJQVUJMSUNBVElPTiIpOworCisJLyogRml4IHVwIGNvbGxhdGlvbiBpbmZvcm1hdGlv biAqLworCWFzc2lnbl9leHByX2NvbGxhdGlvbnMocHN0YXRlLCB3aGVyZWNsYXVzZSk7CiAK IAkvKiBGb3JtIGEgdHVwbGUuICovCiAJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVl cykpOwpAQCAtMTg3LDcgKzIxMSwxMyBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lk IHB1YmlkLCBSZWxhdGlvbiB0YXJnZXRyZWwsCiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRp b25fcmVsX3BycHViaWQgLSAxXSA9CiAJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpOwogCXZh bHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnJlbGlkIC0gMV0gPQotCQlPYmplY3RJ ZEdldERhdHVtKHJlbGlkKTsKKwkJT2JqZWN0SWRHZXREYXR1bSh0YXJnZXRyZWwtPnJlbGlk KTsKKworCS8qIEFkZCBxdWFsaWZpY2F0aW9ucywgaWYgYXZhaWxhYmxlICovCisJaWYgKHdo ZXJlY2xhdXNlKQorCQl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJxdWFsIC0g MV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKG5vZGVUb1N0cmluZyh3aGVyZWNsYXVzZSkpOwor CWVsc2UKKwkJbnVsbHNbQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJxdWFsIC0gMV0gPSB0 cnVlOwogCiAJdHVwID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVzY3IocmVsKSwg dmFsdWVzLCBudWxscyk7CiAKQEAgLTIwMiwxNCArMjMyLDIwIEBAIHB1YmxpY2F0aW9uX2Fk ZF9yZWxhdGlvbihPaWQgcHViaWQsIFJlbGF0aW9uIHRhcmdldHJlbCwKIAlyZWNvcmREZXBl bmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfQVVUTyk7CiAKIAkv KiBBZGQgZGVwZW5kZW5jeSBvbiB0aGUgcmVsYXRpb24gKi8KLQlPYmplY3RBZGRyZXNzU2V0 KHJlZmVyZW5jZWQsIFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsaWQpOworCU9iamVjdEFkZHJl c3NTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCB0YXJnZXRyZWwtPnJlbGlk KTsKIAlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVO Q1lfQVVUTyk7CiAKKwkvKiBBZGQgZGVwZW5kZW5jeSBvbiB0aGUgb2JqZWN0cyBtZW50aW9u ZWQgaW4gdGhlIHF1YWxpZmljYXRpb25zICovCisJaWYgKHdoZXJlY2xhdXNlKQorCQlyZWNv cmREZXBlbmRlbmN5T25FeHByKCZteXNlbGYsIHdoZXJlY2xhdXNlLCBwc3RhdGUtPnBfcnRh YmxlLCBERVBFTkRFTkNZX05PUk1BTCk7CisKKwlmcmVlX3BhcnNlc3RhdGUocHN0YXRlKTsK KwogCS8qIENsb3NlIHRoZSB0YWJsZS4gKi8KIAl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1 c2l2ZUxvY2spOwogCiAJLyogSW52YWxpZGF0ZSByZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0 aW9uIGluZm8gaXMgcmVidWlsdC4gKi8KLQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZSh0YXJn ZXRyZWwpOworCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hlKHRhcmdldHJlbC0+cmVsYXRpb24p OwogCiAJcmV0dXJuIG15c2VsZjsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRp b25jbWRzLmMKaW5kZXggOTVjMjUzYzhlMC4uZTM1MmM2NmQ5YyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTM3Miw2ICszNzIsMjggQEAgQWx0ZXJQ dWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgUmVsYXRpb24g cmVsLAogCiAJQXNzZXJ0KGxpc3RfbGVuZ3RoKHN0bXQtPnRhYmxlcykgPiAwKTsKIAorCS8q CisJICogQWx0aG91Z2ggQUxURVIgUFVCTElDQVRJT04gZ3JhbW1hciBhbGxvd3MgV0hFUkUg Y2xhdXNlIHRvIGJlIHNwZWNpZmllZAorCSAqIGZvciBEUk9QIFRBQkxFIGFjdGlvbiwgaXQg ZG9lc24ndCBtYWtlIHNlbnNlIHRvIGFsbG93IGl0LiBXZSBpbXBsZW1lbnQKKwkgKiB0aGlz IHJlc3RyaWN0aW9uIGhlcmUsIGluc3RlYWQgb2YgY29tcGxpY2F0aW5nIHRoZSBncmFtbWFy IHRvIGVuZm9yY2UKKwkgKiBpdC4KKwkgKi8KKwlpZiAoc3RtdC0+dGFibGVBY3Rpb24gPT0g REVGRUxFTV9EUk9QKQorCXsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJZm9yZWFjaChsYywg c3RtdC0+dGFibGVzKQorCQl7CisJCQlQdWJsaWNhdGlvblRhYmxlICp0ID0gbGZpcnN0KGxj KTsKKworCQkJaWYgKHQtPndoZXJlQ2xhdXNlKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK KwkJCQkJCSBlcnJtc2coImNhbm5vdCB1c2UgYSBXSEVSRSBjbGF1c2Ugd2hlbiByZW1vdmlu ZyB0YWJsZSBmcm9tIHB1YmxpY2F0aW9uIFwiJXNcIiIsCisJCQkJCQkJCU5hbWVTdHIocHVi Zm9ybS0+cHVibmFtZSkpKSk7CisJCX0KKwl9CisKIAlyZWxzID0gT3BlblRhYmxlTGlzdChz dG10LT50YWJsZXMpOwogCiAJaWYgKHN0bXQtPnRhYmxlQWN0aW9uID09IERFRkVMRU1fQURE KQpAQCAtMzg1LDMxICs0MDcsMjQgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1 YmxpY2F0aW9uU3RtdCAqc3RtdCwgUmVsYXRpb24gcmVsLAogCQlMaXN0CSAgICpkZWxyZWxz ID0gTklMOwogCQlMaXN0Q2VsbCAgICpvbGRsYzsKIAotCQkvKiBDYWxjdWxhdGUgd2hpY2gg cmVsYXRpb25zIHRvIGRyb3AuICovCisJCS8qCisJCSAqIFJlbW92ZSBhbGwgcHVibGljYXRp b24tdGFibGUgbWFwcGluZ3MuICBXZSBjb3VsZCBwb3NzaWJseSByZW1vdmUgKGkpCisJCSAq IHRhYmxlcyB0aGF0IGFyZSBub3QgZm91bmQgaW4gdGhlIG5ldyB0YWJsZSBsaXN0IGFuZCAo aWkpIHRhYmxlcyB0aGF0CisJCSAqIGFyZSBiZWluZyByZS1hZGRlZCB3aXRoIGEgZGlmZmVy ZW50IHF1YWwgZXhwcmVzc2lvbi4gRm9yIChpaSksCisJCSAqIHNpbXBseSB1cGRhdGluZyB0 aGUgZXhpc3RpbmcgdHVwbGUgaXMgbm90IGVub3VnaCwgYmVjYXVzZSBvZiBxdWFsCisJCSAq IGV4cHJlc3Npb24gZGVwZW5kZW5jaWVzLgorCQkgKi8KIAkJZm9yZWFjaChvbGRsYywgb2xk cmVsaWRzKQogCQl7CiAJCQlPaWQJCQlvbGRyZWxpZCA9IGxmaXJzdF9vaWQob2xkbGMpOwot CQkJTGlzdENlbGwgICAqbmV3bGM7Ci0JCQlib29sCQlmb3VuZCA9IGZhbHNlOworCQkJUHVi bGljYXRpb25SZWxhdGlvbkluZm8gKm9sZHJlbDsKIAotCQkJZm9yZWFjaChuZXdsYywgcmVs cykKLQkJCXsKLQkJCQlSZWxhdGlvbgluZXdyZWwgPSAoUmVsYXRpb24pIGxmaXJzdChuZXds Yyk7Ci0KLQkJCQlpZiAoUmVsYXRpb25HZXRSZWxpZChuZXdyZWwpID09IG9sZHJlbGlkKQot CQkJCXsKLQkJCQkJZm91bmQgPSB0cnVlOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0K LQkJCWlmICghZm91bmQpCi0JCQl7Ci0JCQkJUmVsYXRpb24Jb2xkcmVsID0gdGFibGVfb3Bl bihvbGRyZWxpZCwKLQkJCQkJCQkJCQkJCVNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7Ci0K LQkJCQlkZWxyZWxzID0gbGFwcGVuZChkZWxyZWxzLCBvbGRyZWwpOwotCQkJfQorCQkJb2xk cmVsID0gcGFsbG9jKHNpemVvZihQdWJsaWNhdGlvblJlbGF0aW9uSW5mbykpOworCQkJb2xk cmVsLT5yZWxpZCA9IG9sZHJlbGlkOworCQkJb2xkcmVsLT53aGVyZUNsYXVzZSA9IE5VTEw7 CisJCQlvbGRyZWwtPnJlbGF0aW9uID0gdGFibGVfb3BlbihvbGRyZWwtPnJlbGlkLAorCQkJ CQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJCWRlbHJlbHMgPSBsYXBw ZW5kKGRlbHJlbHMsIG9sZHJlbCk7CiAJCX0KIAogCQkvKiBBbmQgZHJvcCB0aGVtLiAqLwpA QCAtNTA5LDEzICs1MjQsMTUgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJTGlz dAkgICAqcmVsaWRzID0gTklMOwogCUxpc3QJICAgKnJlbHMgPSBOSUw7CiAJTGlzdENlbGwg ICAqbGM7CisJUHVibGljYXRpb25SZWxhdGlvbkluZm8gKnByaTsKIAogCS8qCiAJICogT3Bl biwgc2hhcmUtbG9jaywgYW5kIGNoZWNrIGFsbCB0aGUgZXhwbGljaXRseS1zcGVjaWZpZWQg cmVsYXRpb25zCiAJICovCiAJZm9yZWFjaChsYywgdGFibGVzKQogCXsKLQkJUmFuZ2VWYXIg ICAqcnYgPSBjYXN0Tm9kZShSYW5nZVZhciwgbGZpcnN0KGxjKSk7CisJCVB1YmxpY2F0aW9u VGFibGUgKnQgPSBsZmlyc3QobGMpOworCQlSYW5nZVZhciAgICpydiA9IGNhc3ROb2RlKFJh bmdlVmFyLCB0LT5yZWxhdGlvbik7CiAJCWJvb2wJCXJlY3Vyc2UgPSBydi0+aW5oOwogCQlS ZWxhdGlvbglyZWw7CiAJCU9pZAkJCW15cmVsaWQ7CkBAIC01MzgsOCArNTU1LDExIEBAIE9w ZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCQkJdGFibGVfY2xvc2UocmVsLCBTaGFyZVVw ZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCQkJY29udGludWU7CiAJCX0KLQotCQlyZWxzID0gbGFw cGVuZChyZWxzLCByZWwpOworCQlwcmkgPSBwYWxsb2Moc2l6ZW9mKFB1YmxpY2F0aW9uUmVs YXRpb25JbmZvKSk7CisJCXByaS0+cmVsaWQgPSBteXJlbGlkOworCQlwcmktPnJlbGF0aW9u ID0gcmVsOworCQlwcmktPndoZXJlQ2xhdXNlID0gdC0+d2hlcmVDbGF1c2U7CisJCXJlbHMg PSBsYXBwZW5kKHJlbHMsIHByaSk7CiAJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJlbGlkcywg bXlyZWxpZCk7CiAKIAkJLyoKQEAgLTU3Miw3ICs1OTIsMTIgQEAgT3BlblRhYmxlTGlzdChM aXN0ICp0YWJsZXMpCiAKIAkJCQkvKiBmaW5kX2FsbF9pbmhlcml0b3JzIGFscmVhZHkgZ290 IGxvY2sgKi8KIAkJCQlyZWwgPSB0YWJsZV9vcGVuKGNoaWxkcmVsaWQsIE5vTG9jayk7Ci0J CQkJcmVscyA9IGxhcHBlbmQocmVscywgcmVsKTsKKwkJCQlwcmkgPSBwYWxsb2Moc2l6ZW9m KFB1YmxpY2F0aW9uUmVsYXRpb25JbmZvKSk7CisJCQkJcHJpLT5yZWxpZCA9IGNoaWxkcmVs aWQ7CisJCQkJcHJpLT5yZWxhdGlvbiA9IHJlbDsKKwkJCQkvKiBjaGlsZCBpbmhlcml0cyBX SEVSRSBjbGF1c2UgZnJvbSBwYXJlbnQgKi8KKwkJCQlwcmktPndoZXJlQ2xhdXNlID0gdC0+ d2hlcmVDbGF1c2U7CisJCQkJcmVscyA9IGxhcHBlbmQocmVscywgcHJpKTsKIAkJCQlyZWxp ZHMgPSBsYXBwZW5kX29pZChyZWxpZHMsIGNoaWxkcmVsaWQpOwogCQkJfQogCQl9CkBAIC01 OTMsMTAgKzYxOCwxMiBAQCBDbG9zZVRhYmxlTGlzdChMaXN0ICpyZWxzKQogCiAJZm9yZWFj aChsYywgcmVscykKIAl7Ci0JCVJlbGF0aW9uCXJlbCA9IChSZWxhdGlvbikgbGZpcnN0KGxj KTsKKwkJUHVibGljYXRpb25SZWxhdGlvbkluZm8gKnByaSA9IChQdWJsaWNhdGlvblJlbGF0 aW9uSW5mbyAqKSBsZmlyc3QobGMpOwogCi0JCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsK KwkJdGFibGVfY2xvc2UocHJpLT5yZWxhdGlvbiwgTm9Mb2NrKTsKIAl9CisKKwlsaXN0X2Zy ZWVfZGVlcChyZWxzKTsKIH0KIAogLyoKQEAgLTYxMiwxNSArNjM5LDE1IEBAIFB1YmxpY2F0 aW9uQWRkVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3Rz LAogCiAJZm9yZWFjaChsYywgcmVscykKIAl7Ci0JCVJlbGF0aW9uCXJlbCA9IChSZWxhdGlv bikgbGZpcnN0KGxjKTsKKwkJUHVibGljYXRpb25SZWxhdGlvbkluZm8gKnByaSA9IChQdWJs aWNhdGlvblJlbGF0aW9uSW5mbyAqKSBsZmlyc3QobGMpOwogCQlPYmplY3RBZGRyZXNzIG9i ajsKIAogCQkvKiBNdXN0IGJlIG93bmVyIG9mIHRoZSB0YWJsZSBvciBzdXBlcnVzZXIuICov Ci0JCWlmICghcGdfY2xhc3Nfb3duZXJjaGVjayhSZWxhdGlvbkdldFJlbGlkKHJlbCksIEdl dFVzZXJJZCgpKSkKLQkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0 X3JlbGtpbmRfb2JqdHlwZShyZWwtPnJkX3JlbC0+cmVsa2luZCksCi0JCQkJCQkgICBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKTsKKwkJaWYgKCFwZ19jbGFzc19vd25lcmNoZWNr KHByaS0+cmVsaWQsIEdldFVzZXJJZCgpKSkKKwkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNL X05PVF9PV05FUiwgZ2V0X3JlbGtpbmRfb2JqdHlwZShwcmktPnJlbGF0aW9uLT5yZF9yZWwt PnJlbGtpbmQpLAorCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocHJpLT5yZWxh dGlvbikpOwogCi0JCW9iaiA9IHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihwdWJpZCwgcmVs LCBpZl9ub3RfZXhpc3RzKTsKKwkJb2JqID0gcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKHB1 YmlkLCBwcmksIGlmX25vdF9leGlzdHMpOwogCQlpZiAoc3RtdCkKIAkJewogCQkJRXZlbnRU cmlnZ2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQob2JqLCBJbnZhbGlkT2JqZWN0QWRkcmVzcywK QEAgLTY0NCwxMSArNjcxLDEwIEBAIFB1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQs IExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vaykKIAogCWZvcmVhY2gobGMsIHJlbHMpCiAJ ewotCQlSZWxhdGlvbglyZWwgPSAoUmVsYXRpb24pIGxmaXJzdChsYyk7Ci0JCU9pZAkJCXJl bGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOworCQlQdWJsaWNhdGlvblJlbGF0aW9uSW5m byAqcHJpID0gKFB1YmxpY2F0aW9uUmVsYXRpb25JbmZvICopIGxmaXJzdChsYyk7CiAKIAkJ cHJpZCA9IEdldFN5c0NhY2hlT2lkMihQVUJMSUNBVElPTlJFTE1BUCwgQW51bV9wZ19wdWJs aWNhdGlvbl9yZWxfb2lkLAotCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAor CQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocHJpLT5yZWxpZCksCiAJCQkJCQkJICAgT2Jq ZWN0SWRHZXREYXR1bShwdWJpZCkpOwogCQlpZiAoIU9pZElzVmFsaWQocHJpZCkpCiAJCXsK QEAgLTY1OCw3ICs2ODQsNyBAQCBQdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBM aXN0ICpyZWxzLCBib29sIG1pc3Npbmdfb2spCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQko ZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAogCQkJCQkgZXJybXNnKCJyZWxh dGlvbiBcIiVzXCIgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uIiwKLQkJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHByaS0+cmVsYXRpb24pKSkpOwogCQl9CiAKIAkJT2JqZWN0QWRkcmVzc1Nl dChvYmosIFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgcHJpZCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpp bmRleCAyMmJiYjI3MDQxLi4yYTkzMWVmYjQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTQyNSwx MyArNDI1LDEzIEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJdHJhbnNmb3Jt X2VsZW1lbnRfbGlzdCB0cmFuc2Zvcm1fdHlwZV9saXN0CiAJCQkJVHJpZ2dlclRyYW5zaXRp b25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9wdF92 YWN1dW1fcmVsYXRpb25fbGlzdAotCQkJCWRyb3Bfb3B0aW9uX2xpc3QKKwkJCQlkcm9wX29w dGlvbl9saXN0IHB1YmxpY2F0aW9uX3RhYmxlX2xpc3QKIAogJXR5cGUgPGdyb3VwY2xhdXNl PiBncm91cF9jbGF1c2UKICV0eXBlIDxsaXN0Pglncm91cF9ieV9saXN0CiAldHlwZSA8bm9k ZT4JZ3JvdXBfYnlfaXRlbSBlbXB0eV9ncm91cGluZ19zZXQgcm9sbHVwX2NsYXVzZSBjdWJl X2NsYXVzZQogJXR5cGUgPG5vZGU+CWdyb3VwaW5nX3NldHNfY2xhdXNlCi0ldHlwZSA8bm9k ZT4Jb3B0X3B1YmxpY2F0aW9uX2Zvcl90YWJsZXMgcHVibGljYXRpb25fZm9yX3RhYmxlcwor JXR5cGUgPG5vZGU+CW9wdF9wdWJsaWNhdGlvbl9mb3JfdGFibGVzIHB1YmxpY2F0aW9uX2Zv cl90YWJsZXMgcHVibGljYXRpb25fdGFibGVfZWxlbQogCiAldHlwZSA8bGlzdD4Jb3B0X2Zk d19vcHRpb25zIGZkd19vcHRpb25zCiAldHlwZSA8ZGVmZWx0PglmZHdfb3B0aW9uCkBAIC0z ODM3LDcgKzM4MzcsNyBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJJCQgPSAoTm9kZSAqKW47 CiAJCQkJfQogCQkJfCBFWENMVURFIGFjY2Vzc19tZXRob2RfY2xhdXNlICcoJyBFeGNsdXNp b25Db25zdHJhaW50TGlzdCAnKScKLQkJCQlvcHRfY19pbmNsdWRlIG9wdF9kZWZpbml0aW9u IE9wdENvbnNUYWJsZVNwYWNlICBPcHRXaGVyZUNsYXVzZQorCQkJCW9wdF9jX2luY2x1ZGUg b3B0X2RlZmluaXRpb24gT3B0Q29uc1RhYmxlU3BhY2UgT3B0V2hlcmVDbGF1c2UKIAkJCQlD b25zdHJhaW50QXR0cmlidXRlU3BlYwogCQkJCXsKIAkJCQkJQ29uc3RyYWludCAqbiA9IG1h a2VOb2RlKENvbnN0cmFpbnQpOwpAQCAtOTUzMCw3ICs5NTMwLDcgQEAgb3B0X3B1YmxpY2F0 aW9uX2Zvcl90YWJsZXM6CiAJCTsKIAogcHVibGljYXRpb25fZm9yX3RhYmxlczoKLQkJCUZP UiBUQUJMRSByZWxhdGlvbl9leHByX2xpc3QKKwkJCUZPUiBUQUJMRSBwdWJsaWNhdGlvbl90 YWJsZV9saXN0CiAJCQkJewogCQkJCQkkJCA9IChOb2RlICopICQzOwogCQkJCX0KQEAgLTk1 NjEsNyArOTU2MSw3IEBAIEFsdGVyUHVibGljYXRpb25TdG10OgogCQkJCQluLT5vcHRpb25z ID0gJDU7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgQUxURVIgUFVCTElD QVRJT04gbmFtZSBBRERfUCBUQUJMRSByZWxhdGlvbl9leHByX2xpc3QKKwkJCXwgQUxURVIg UFVCTElDQVRJT04gbmFtZSBBRERfUCBUQUJMRSBwdWJsaWNhdGlvbl90YWJsZV9saXN0CiAJ CQkJewogCQkJCQlBbHRlclB1YmxpY2F0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyUHVi bGljYXRpb25TdG10KTsKIAkJCQkJbi0+cHVibmFtZSA9ICQzOwpAQCAtOTU2OSw3ICs5NTY5 LDcgQEAgQWx0ZXJQdWJsaWNhdGlvblN0bXQ6CiAJCQkJCW4tPnRhYmxlQWN0aW9uID0gREVG RUxFTV9BREQ7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgQUxURVIgUFVC TElDQVRJT04gbmFtZSBTRVQgVEFCTEUgcmVsYXRpb25fZXhwcl9saXN0CisJCQl8IEFMVEVS IFBVQkxJQ0FUSU9OIG5hbWUgU0VUIFRBQkxFIHB1YmxpY2F0aW9uX3RhYmxlX2xpc3QKIAkJ CQl7CiAJCQkJCUFsdGVyUHVibGljYXRpb25TdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJQdWJs aWNhdGlvblN0bXQpOwogCQkJCQluLT5wdWJuYW1lID0gJDM7CkBAIC05NTc3LDcgKzk1Nzcs NyBAQCBBbHRlclB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJbi0+dGFibGVBY3Rpb24gPSBERUZF TEVNX1NFVDsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBBTFRFUiBQVUJM SUNBVElPTiBuYW1lIERST1AgVEFCTEUgcmVsYXRpb25fZXhwcl9saXN0CisJCQl8IEFMVEVS IFBVQkxJQ0FUSU9OIG5hbWUgRFJPUCBUQUJMRSBwdWJsaWNhdGlvbl90YWJsZV9saXN0CiAJ CQkJewogCQkJCQlBbHRlclB1YmxpY2F0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyUHVi bGljYXRpb25TdG10KTsKIAkJCQkJbi0+cHVibmFtZSA9ICQzOwpAQCAtOTU4Nyw2ICs5NTg3 LDIwIEBAIEFsdGVyUHVibGljYXRpb25TdG10OgogCQkJCX0KIAkJOwogCitwdWJsaWNhdGlv bl90YWJsZV9saXN0OgorCQkJcHVibGljYXRpb25fdGFibGVfZWxlbQkJCQkJCQkJCXsgJCQg PSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwdWJsaWNhdGlvbl90YWJsZV9saXN0ICcsJyBw dWJsaWNhdGlvbl90YWJsZV9lbGVtCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsK KworcHVibGljYXRpb25fdGFibGVfZWxlbTogcmVsYXRpb25fZXhwciBPcHRXaGVyZUNsYXVz ZQorCQkJCXsKKwkJCQkJUHVibGljYXRpb25UYWJsZSAqbiA9IG1ha2VOb2RlKFB1YmxpY2F0 aW9uVGFibGUpOworCQkJCQluLT5yZWxhdGlvbiA9ICQxOworCQkJCQluLT53aGVyZUNsYXVz ZSA9ICQyOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgogICoKICAqIENSRUFURSBTVUJTQ1JJUFRJT04gbmFtZSAuLi4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwppbmRleCA3YzNlMDFhYTIyLi41NDRmZjU1YTYzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC01NDQsNiArNTQ0LDEzIEBAIGNoZWNrX2Fn Z2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHBy KQogCQkJCWVyciA9IF8oImdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGlu IENPUFkgRlJPTSBXSEVSRSBjb25kaXRpb25zIik7CiAKIAkJCWJyZWFrOworCQljYXNlIEVY UFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRToKKwkJCWlmIChpc0FnZykKKwkJCQllcnIgPSBf KCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBwdWJsaWNhdGlvbiBX SEVSRSBleHByZXNzaW9ucyIpOworCQkJZWxzZQorCQkJCWVyciA9IF8oImdyb3VwaW5nIG9w ZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Np b25zIik7CisKKwkJCWJyZWFrOwogCiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJ CQllcnJraW5kID0gdHJ1ZTsKQEAgLTk0MCw2ICs5NDcsOSBAQCB0cmFuc2Zvcm1XaW5kb3dG dW5jQ2FsbChQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5jLAogCQljYXNl IEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJya2luZCA9IHRydWU7CiAJCQlicmVhazsK KwkJY2FzZSBFWFBSX0tJTkRfUFVCTElDQVRJT05fV0hFUkU6CisJCQllcnIgPSBfKCJ3aW5k b3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBwdWJsaWNhdGlvbiBXSEVSRSBleHBy ZXNzaW9ucyIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRp b25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZXhwci5jCmluZGV4IGY4NjllMTU5ZDYuLjhlY2VhYzI0MWUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYwpAQCAtMTE5LDYgKzExOSwxMyBAQCB0cmFuc2Zvcm1FeHByUmVj dXJzZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJLyogR3VhcmQgYWdhaW5z dCBzdGFjayBvdmVyZmxvdyBkdWUgdG8gb3Zlcmx5IGNvbXBsZXggZXhwcmVzc2lvbnMgKi8K IAljaGVja19zdGFja19kZXB0aCgpOwogCisJLyogRnVuY3Rpb25zIGFyZSBub3QgYWxsb3dl ZCBpbiBwdWJsaWNhdGlvbiBXSEVSRSBjbGF1c2VzICovCisJaWYgKHBzdGF0ZS0+cF9leHBy X2tpbmQgPT0gRVhQUl9LSU5EX1BVQkxJQ0FUSU9OX1dIRVJFICYmIG5vZGVUYWcoZXhwcikg PT0gVF9GdW5jQ2FsbCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiZnVuY3Rpb25zIGFyZSBu b3QgYWxsb3dlZCBpbiBwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9ucyIpLAorCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oZXhwcikpKSk7CisKIAlz d2l0Y2ggKG5vZGVUYWcoZXhwcikpCiAJewogCQljYXNlIFRfQ29sdW1uUmVmOgpAQCAtNTA4 LDYgKzUxNSw3IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENv bHVtblJlZiAqY3JlZikKIAkJY2FzZSBFWFBSX0tJTkRfQ09QWV9XSEVSRToKIAkJY2FzZSBF WFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFS SzoKKwkJY2FzZSBFWFBSX0tJTkRfUFVCTElDQVRJT05fV0hFUkU6CiAJCQkvKiBva2F5ICov CiAJCQlicmVhazsKIApAQCAtMTc2NSw2ICsxNzczLDkgQEAgdHJhbnNmb3JtU3ViTGluayhQ YXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5E X0dFTkVSQVRFRF9DT0xVTU46CiAJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGlu IGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb24iKTsKIAkJCWJyZWFrOworCQljYXNlIEVY UFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRToKKwkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3Vi cXVlcnkgaW4gcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbiIpOworCQkJYnJlYWs7CiAK IAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2Ug aGVyZSwgc28gdGhhdCB0aGUKQEAgLTMwNDgsNiArMzA1OSw4IEBAIFBhcnNlRXhwcktpbmRO YW1lKFBhcnNlRXhwcktpbmQgZXhwcktpbmQpCiAJCQlyZXR1cm4gIkdFTkVSQVRFRCBBUyI7 CiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQlyZXR1cm4gIkNZQ0xFIjsKKwkJ Y2FzZSBFWFBSX0tJTkRfUFVCTElDQVRJT05fV0hFUkU6CisJCQlyZXR1cm4gInB1YmxpY2F0 aW9uIGV4cHJlc3Npb24iOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxs eSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2Z1bmMuYwppbmRleCAzN2NlYmM3ZDgyLi5iZjkwOWQ2ZWQ1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9mdW5jLmMKQEAgLTI1MzAsNiArMjUzMCw5IEBAIGNoZWNrX3NyZl9jYWxsX3BsYWNl bWVudChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxhc3Rfc3JmLCBpbnQgbG9jYXRpb24p CiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJ CWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRToKKwkJCWVyciA9 IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBwdWJsaWNh dGlvbiBXSEVSRSBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBU aGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0 aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVz eW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmlu ZGV4IDZlZDMxODEyYWIuLmQ0N2UwNGYzNWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtNjg4LDE5ICs2ODgsMjMgQEAgY29weV9y ZWFkX2RhdGEodm9pZCAqb3V0YnVmLCBpbnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAKIC8q CiAgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgcmVtb3RlIHJlbGF0aW9uIGluIHNpbWlsYXIg ZmFzaGlvbiB0aGUgUkVMQVRJT04KLSAqIG1lc3NhZ2UgcHJvdmlkZXMgZHVyaW5nIHJlcGxp Y2F0aW9uLgorICogbWVzc2FnZSBwcm92aWRlcyBkdXJpbmcgcmVwbGljYXRpb24uIFRoaXMg ZnVuY3Rpb24gYWxzbyByZXR1cm5zIHRoZSByZWxhdGlvbgorICogcXVhbGlmaWNhdGlvbnMg dG8gYmUgdXNlZCBpbiBDT1BZIGNvbW1hbmQuCiAgKi8KIHN0YXRpYyB2b2lkCiBmZXRjaF9y ZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLAotCQkJCQkJ TG9naWNhbFJlcFJlbGF0aW9uICpscmVsKQorCQkJCQkJTG9naWNhbFJlcFJlbGF0aW9uICps cmVsLCBMaXN0ICoqcXVhbCkKIHsKIAlXYWxSY3ZFeGVjUmVzdWx0ICpyZXM7CiAJU3RyaW5n SW5mb0RhdGEgY21kOwogCVR1cGxlVGFibGVTbG90ICpzbG90OwogCU9pZAkJCXRhYmxlUm93 W10gPSB7T0lET0lELCBDSEFST0lELCBDSEFST0lEfTsKIAlPaWQJCQlhdHRyUm93W10gPSB7 VEVYVE9JRCwgT0lET0lELCBCT09MT0lEfTsKKwlPaWQJCQlxdWFsUm93W10gPSB7VEVYVE9J RH07CiAJYm9vbAkJaXNudWxsOwogCWludAkJCW5hdHQ7CisJTGlzdENlbGwgICAqbGM7CisJ Ym9vbAkJZmlyc3Q7CiAKIAlscmVsLT5uc3BuYW1lID0gbnNwbmFtZTsKIAlscmVsLT5yZWxu YW1lID0gcmVsbmFtZTsKQEAgLTc4OSw2ICs3OTMsNTEgQEAgZmV0Y2hfcmVtb3RlX3RhYmxl X2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwKIAogCWxyZWwtPm5hdHRzID0g bmF0dDsKIAorCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKKworCS8qIEdldCByZWxhdGlv biBxdWFsICovCisJcmVzZXRTdHJpbmdJbmZvKCZjbWQpOworCWFwcGVuZFN0cmluZ0luZm8o JmNtZCwKKwkJCQkJICJTRUxFQ1QgcGdfZ2V0X2V4cHIocHJxdWFsLCBwcnJlbGlkKSAiCisJ CQkJCSAiICBGUk9NIHBnX3B1YmxpY2F0aW9uIHAgIgorCQkJCQkgIiAgSU5ORVIgSk9JTiBw Z19wdWJsaWNhdGlvbl9yZWwgcHIgIgorCQkJCQkgIiAgICAgICBPTiAocC5vaWQgPSBwci5w cnB1YmlkKSAiCisJCQkJCSAiIFdIRVJFIHByLnBycmVsaWQgPSAldSAiCisJCQkJCSAiICAg QU5EIHAucHVibmFtZSBJTiAoIiwgbHJlbC0+cmVtb3RlaWQpOworCisJZmlyc3QgPSB0cnVl OworCWZvcmVhY2gobGMsIE15U3Vic2NyaXB0aW9uLT5wdWJsaWNhdGlvbnMpCisJeworCQlj aGFyCSAgICpwdWJuYW1lID0gc3RyVmFsKGxmaXJzdChsYykpOworCisJCWlmIChmaXJzdCkK KwkJCWZpcnN0ID0gZmFsc2U7CisJCWVsc2UKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JmNtZCwgIiwgIik7CisKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCBxdW90ZV9s aXRlcmFsX2NzdHIocHVibmFtZSkpOworCX0KKwlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmY21k LCAnKScpOworCisJcmVzID0gd2FscmN2X2V4ZWMod3Jjb25uLCBjbWQuZGF0YSwgMSwgcXVh bFJvdyk7CisKKwlpZiAocmVzLT5zdGF0dXMgIT0gV0FMUkNWX09LX1RVUExFUykKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjb3VsZCBub3QgZmV0Y2ggcmVsYXRpb24gcXVh bGlmaWNhdGlvbnMgZm9yIHRhYmxlIFwiJXMuJXNcIiBmcm9tIHB1Ymxpc2hlcjogJXMiLAor CQkJCQkJbnNwbmFtZSwgcmVsbmFtZSwgcmVzLT5lcnIpKSk7CisKKwlzbG90ID0gTWFrZVNp bmdsZVR1cGxlVGFibGVTbG90KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3BzTWluaW1hbFR1cGxl KTsKKwl3aGlsZSAodHVwbGVzdG9yZV9nZXR0dXBsZXNsb3QocmVzLT50dXBsZXN0b3JlLCB0 cnVlLCBmYWxzZSwgc2xvdCkpCisJeworCQlEYXR1bQkJcmYgPSBzbG90X2dldGF0dHIoc2xv dCwgMSwgJmlzbnVsbCk7CisKKwkJaWYgKCFpc251bGwpCisJCQkqcXVhbCA9IGxhcHBlbmQo KnF1YWwsIG1ha2VTdHJpbmcoVGV4dERhdHVtR2V0Q1N0cmluZyhyZikpKTsKKworCQlFeGVj Q2xlYXJUdXBsZShzbG90KTsKKwl9CisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChz bG90KTsKKwogCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKIAlwZnJlZShjbWQuZGF0YSk7 CiB9CkBAIC04MDMsNiArODUyLDcgQEAgY29weV90YWJsZShSZWxhdGlvbiByZWwpCiB7CiAJ TG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWxtYXBlbnRyeTsKIAlMb2dpY2FsUmVwUmVsYXRp b24gbHJlbDsKKwlMaXN0CSAgICpxdWFsID0gTklMOwogCVdhbFJjdkV4ZWNSZXN1bHQgKnJl czsKIAlTdHJpbmdJbmZvRGF0YSBjbWQ7CiAJQ29weUZyb21TdGF0ZSBjc3RhdGU7CkBAIC04 MTEsNyArODYxLDcgQEAgY29weV90YWJsZShSZWxhdGlvbiByZWwpCiAKIAkvKiBHZXQgdGhl IHB1Ymxpc2hlciByZWxhdGlvbiBpbmZvLiAqLwogCWZldGNoX3JlbW90ZV90YWJsZV9pbmZv KGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpKSwKLQkJCQkJ CQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCAmbHJlbCk7CisJCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsKSwgJmxyZWwsICZxdWFsKTsKIAogCS8qIFB1dCB0aGUg cmVsYXRpb24gaW50byByZWxtYXAuICovCiAJbG9naWNhbHJlcF9yZWxtYXBfdXBkYXRlKCZs cmVsKTsKQEAgLTgyMCwxNiArODcwLDIzIEBAIGNvcHlfdGFibGUoUmVsYXRpb24gcmVsKQog CXJlbG1hcGVudHJ5ID0gbG9naWNhbHJlcF9yZWxfb3BlbihscmVsLnJlbW90ZWlkLCBOb0xv Y2spOwogCUFzc2VydChyZWwgPT0gcmVsbWFwZW50cnktPmxvY2FscmVsKTsKIAorCS8qIExp c3Qgb2YgY29sdW1ucyBmb3IgQ09QWSAqLworCWF0dG5hbWVsaXN0ID0gbWFrZV9jb3B5X2F0 dG5hbWVsaXN0KHJlbG1hcGVudHJ5KTsKKwogCS8qIFN0YXJ0IGNvcHkgb24gdGhlIHB1Ymxp c2hlci4gKi8KIAlpbml0U3RyaW5nSW5mbygmY21kKTsKLQlpZiAobHJlbC5yZWxraW5kID09 IFJFTEtJTkRfUkVMQVRJT04pCisKKwkvKiBSZWd1bGFyIHRhYmxlIHdpdGggbm8gcm93IGZp bHRlciAqLworCWlmIChscmVsLnJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTiAmJiBsaXN0 X2xlbmd0aChxdWFsKSA9PSAwKQogCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJDT1BZICVz IFRPIFNURE9VVCIsCiAJCQkJCQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIobHJlbC5u c3BuYW1lLCBscmVsLnJlbG5hbWUpKTsKIAllbHNlCiAJewogCQkvKgogCQkgKiBGb3Igbm9u LXRhYmxlcywgd2UgbmVlZCB0byBkbyBDT1BZIChTRUxFQ1QgLi4uKSwgYnV0IHdlIGNhbid0 IGp1c3QKLQkJICogZG8gU0VMRUNUICogYmVjYXVzZSB3ZSBuZWVkIHRvIG5vdCBjb3B5IGdl bmVyYXRlZCBjb2x1bW5zLgorCQkgKiBkbyBTRUxFQ1QgKiBiZWNhdXNlIHdlIG5lZWQgdG8g bm90IGNvcHkgZ2VuZXJhdGVkIGNvbHVtbnMuIEZvcgorCQkgKiB0YWJsZXMgd2l0aCBhbnkg cm93IGZpbHRlcnMsIGJ1aWxkIGEgU0VMRUNUIHF1ZXJ5IHdpdGggQU5EJ2VkIHJvdworCQkg KiBmaWx0ZXJzIGZvciBDT1BZLgogCQkgKi8KIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm Y21kLCAiQ09QWSAoU0VMRUNUICIpOwogCQlmb3IgKGludCBpID0gMDsgaSA8IGxyZWwubmF0 dHM7IGkrKykKQEAgLTgzOCw5ICs4OTUsMzEgQEAgY29weV90YWJsZShSZWxhdGlvbiByZWwp CiAJCQlpZiAoaSA8IGxyZWwubmF0dHMgLSAxKQogCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoJmNtZCwgIiwgIik7CiAJCX0KLQkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiIEZST00g JXMpIFRPIFNURE9VVCIsCisJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIiBGUk9NICVzIiwK IAkJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihscmVsLm5zcG5hbWUsIGxyZWwu cmVsbmFtZSkpOworCQkvKiBsaXN0IG9mIEFORCdlZCBmaWx0ZXJzICovCisJCWlmIChsaXN0 X2xlbmd0aChxdWFsKSA+IDApCisJCXsKKwkJCUxpc3RDZWxsICAgKmxjOworCQkJYm9vbAkJ Zmlyc3QgPSB0cnVlOworCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICIgV0hF UkUgIik7CisJCQlmb3JlYWNoKGxjLCBxdWFsKQorCQkJeworCQkJCWNoYXIJICAgKnEgPSBz dHJWYWwobGZpcnN0KGxjKSk7CisKKwkJCQlpZiAoZmlyc3QpCisJCQkJCWZpcnN0ID0gZmFs c2U7CisJCQkJZWxzZQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICIgQU5E ICIpOworCQkJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIiVzIiwgcSk7CisJCQl9CisJCQls aXN0X2ZyZWVfZGVlcChxdWFsKTsKKwkJfQorCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JmNtZCwgIikgVE8gU1RET1VUIik7CiAJfQorCiAJcmVzID0gd2FscmN2X2V4ZWMod3Jjb25u LCBjbWQuZGF0YSwgMCwgTlVMTCk7CiAJcGZyZWUoY21kLmRhdGEpOwogCWlmIChyZXMtPnN0 YXR1cyAhPSBXQUxSQ1ZfT0tfQ09QWV9PVVQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwppbmRleCAyMWQzMDRhNjRjLi4wMDRkMGQ0NmMzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM0MCw4ICszNDAs OCBAQCBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0 aW9uLCBTdHJpbmdJbmZvIHMpCiAgKgogICogVGhpcyBpcyBiYXNlZCBvbiBzaW1pbGFyIGNv ZGUgaW4gY29weS5jCiAgKi8KLXN0YXRpYyBFU3RhdGUgKgotY3JlYXRlX2VzdGF0ZV9mb3Jf cmVsYXRpb24oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCitFU3RhdGUgKgorY3JlYXRl X2VzdGF0ZV9mb3JfcmVsYXRpb24oUmVsYXRpb24gcmVsKQogewogCUVTdGF0ZQkgICAqZXN0 YXRlOwogCVJhbmdlVGJsRW50cnkgKnJ0ZTsKQEAgLTM1MCw4ICszNTAsOCBAQCBjcmVhdGVf ZXN0YXRlX2Zvcl9yZWxhdGlvbihMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKIAogCXJ0 ZSA9IG1ha2VOb2RlKFJhbmdlVGJsRW50cnkpOwogCXJ0ZS0+cnRla2luZCA9IFJURV9SRUxB VElPTjsKLQlydGUtPnJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWwtPmxvY2FscmVsKTsK LQlydGUtPnJlbGtpbmQgPSByZWwtPmxvY2FscmVsLT5yZF9yZWwtPnJlbGtpbmQ7CisJcnRl LT5yZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKKwlydGUtPnJlbGtpbmQgPSByZWwt PnJkX3JlbC0+cmVsa2luZDsKIAlydGUtPnJlbGxvY2ttb2RlID0gQWNjZXNzU2hhcmVMb2Nr OwogCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIGxpc3RfbWFrZTEocnRlKSk7CiAKQEAg LTExNjgsNyArMTE2OCw3IEBAIGFwcGx5X2hhbmRsZV9pbnNlcnQoU3RyaW5nSW5mbyBzKQog CX0KIAogCS8qIEluaXRpYWxpemUgdGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwotCWVzdGF0ZSA9 IGNyZWF0ZV9lc3RhdGVfZm9yX3JlbGF0aW9uKHJlbCk7CisJZXN0YXRlID0gY3JlYXRlX2Vz dGF0ZV9mb3JfcmVsYXRpb24ocmVsLT5sb2NhbHJlbCk7CiAJcmVtb3Rlc2xvdCA9IEV4ZWNJ bml0RXh0cmFUdXBsZVNsb3QoZXN0YXRlLAogCQkJCQkJCQkJCVJlbGF0aW9uR2V0RGVzY3Io cmVsLT5sb2NhbHJlbCksCiAJCQkJCQkJCQkJJlRUU09wc1ZpcnR1YWwpOwpAQCAtMTI5Myw3 ICsxMjkzLDcgQEAgYXBwbHlfaGFuZGxlX3VwZGF0ZShTdHJpbmdJbmZvIHMpCiAJY2hlY2tf cmVsYXRpb25fdXBkYXRhYmxlKHJlbCk7CiAKIAkvKiBJbml0aWFsaXplIHRoZSBleGVjdXRv ciBzdGF0ZS4gKi8KLQllc3RhdGUgPSBjcmVhdGVfZXN0YXRlX2Zvcl9yZWxhdGlvbihyZWwp OworCWVzdGF0ZSA9IGNyZWF0ZV9lc3RhdGVfZm9yX3JlbGF0aW9uKHJlbC0+bG9jYWxyZWwp OwogCXJlbW90ZXNsb3QgPSBFeGVjSW5pdEV4dHJhVHVwbGVTbG90KGVzdGF0ZSwKIAkJCQkJ CQkJCQlSZWxhdGlvbkdldERlc2NyKHJlbC0+bG9jYWxyZWwpLAogCQkJCQkJCQkJCSZUVFNP cHNWaXJ0dWFsKTsKQEAgLTE0NTAsNyArMTQ1MCw3IEBAIGFwcGx5X2hhbmRsZV9kZWxldGUo U3RyaW5nSW5mbyBzKQogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShyZWwpOwogCiAJLyog SW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCi0JZXN0YXRlID0gY3JlYXRlX2Vz dGF0ZV9mb3JfcmVsYXRpb24ocmVsKTsKKwllc3RhdGUgPSBjcmVhdGVfZXN0YXRlX2Zvcl9y ZWxhdGlvbihyZWwtPmxvY2FscmVsKTsKIAlyZW1vdGVzbG90ID0gRXhlY0luaXRFeHRyYVR1 cGxlU2xvdChlc3RhdGUsCiAJCQkJCQkJCQkJUmVsYXRpb25HZXREZXNjcihyZWwtPmxvY2Fs cmVsKSwKIAkJCQkJCQkJCQkmVFRTT3BzVmlydHVhbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCAxYjk5M2ZiMDMyLi5jZTZkYThk ZTE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0 LmMKQEAgLTE1LDEyICsxNSwyMiBAQAogI2luY2x1ZGUgImFjY2Vzcy90dXBjb252ZXJ0Lmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9k ZWZyZW0uaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImZt Z3IuaCIKKyNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKKyNpbmNsdWRlICJub2Rlcy9u b2RlRnVuY3MuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbm5lci5oIgorI2luY2x1ZGUg Im9wdGltaXplci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNl LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2xvZ2ljYWxwcm90by5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxy ZWxhdGlvbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3Bnb3V0cHV0LmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK ICNpbmNsdWRlICJ1dGlscy9pbnQ4LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKICNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKQEAgLTU3LDYgKzY3LDEwIEBAIHN0YXRpYyB2 b2lkIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LAogc3RhdGljIHZvaWQgcGdvdXRwdXRfc3RyZWFtX2NvbW1pdChzdHJ1Y3QgTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkgICBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sCiAJCQkJCQkJCSAgIFhMb2dSZWNQdHIgY29tbWl0X2xzbik7CitzdGF0aWMgRXhw clN0YXRlICpwZ291dHB1dF9yb3dfZmlsdGVyX3ByZXBhcmVfZXhwcihOb2RlICpyZm5vZGUs IEVTdGF0ZSAqZXN0YXRlKTsKK3N0YXRpYyBpbmxpbmUgYm9vbCBwZ291dHB1dF9yb3dfZmls dGVyX2V4ZWNfZXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQp Oworc3RhdGljIGJvb2wgcGdvdXRwdXRfcm93X2ZpbHRlcihSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIG9sZHR1cGxlLAorCQkJCQkJCQlIZWFwVHVwbGUgbmV3dHVwbGUsIExpc3Qg KnJvd2ZpbHRlcik7CiAKIHN0YXRpYyBib29sIHB1YmxpY2F0aW9uc192YWxpZDsKIHN0YXRp YyBib29sIGluX3N0cmVhbWluZzsKQEAgLTk4LDYgKzExMiw3IEBAIHR5cGVkZWYgc3RydWN0 IFJlbGF0aW9uU3luY0VudHJ5CiAKIAlib29sCQlyZXBsaWNhdGVfdmFsaWQ7CiAJUHVibGlj YXRpb25BY3Rpb25zIHB1YmFjdGlvbnM7CisJTGlzdAkgICAqcXVhbDsKIAogCS8qCiAJICog T0lEIG9mIHRoZSByZWxhdGlvbiB0byBwdWJsaXNoIGNoYW5nZXMgYXMuICBGb3IgYSBwYXJ0 aXRpb24sIHRoaXMgbWF5CkBAIC0xMjEsNyArMTM2LDcgQEAgc3RhdGljIEhUQUIgKlJlbGF0 aW9uU3luY0NhY2hlID0gTlVMTDsKIAogc3RhdGljIHZvaWQgaW5pdF9yZWxfc3luY19jYWNo ZShNZW1vcnlDb250ZXh0IGRlY29kaW5nX2NvbnRleHQpOwogc3RhdGljIHZvaWQgY2xlYW51 cF9yZWxfc3luY19jYWNoZShUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBpc19jb21taXQpOwot c3RhdGljIFJlbGF0aW9uU3luY0VudHJ5ICpnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXRE YXRhICpkYXRhLCBPaWQgcmVsaWQpOworc3RhdGljIFJlbGF0aW9uU3luY0VudHJ5ICpnZXRf cmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWwpOwogc3Rh dGljIHZvaWQgcmVsX3N5bmNfY2FjaGVfcmVsYXRpb25fY2IoRGF0dW0gYXJnLCBPaWQgcmVs aWQpOwogc3RhdGljIHZvaWQgcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2IoRGF0dW0g YXJnLCBpbnQgY2FjaGVpZCwKIAkJCQkJCQkJCQkgIHVpbnQzMiBoYXNodmFsdWUpOwpAQCAt NDkxLDYgKzUwNiwxMzAgQEAgc2VuZF9yZWxhdGlvbl9hbmRfYXR0cnMoUmVsYXRpb24gcmVs YXRpb24sIFRyYW5zYWN0aW9uSWQgeGlkLAogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgZmFs c2UpOwogfQogCitzdGF0aWMgRXhwclN0YXRlICoKK3Bnb3V0cHV0X3Jvd19maWx0ZXJfcHJl cGFyZV9leHByKE5vZGUgKnJmbm9kZSwgRVN0YXRlICplc3RhdGUpCit7CisJRXhwclN0YXRl ICAqZXhwcnN0YXRlOworCU9pZAkJCWV4cHJ0eXBlOworCUV4cHIJICAgKmV4cHI7CisKKwkv KiBQcmVwYXJlIGV4cHJlc3Npb24gZm9yIGV4ZWN1dGlvbiAqLworCWV4cHJ0eXBlID0gZXhw clR5cGUocmZub2RlKTsKKwlleHByID0gKEV4cHIgKikgY29lcmNlX3RvX3RhcmdldF90eXBl KE5VTEwsIHJmbm9kZSwgZXhwcnR5cGUsIEJPT0xPSUQsIC0xLCBDT0VSQ0lPTl9BU1NJR05N RU5ULCBDT0VSQ0VfSU1QTElDSVRfQ0FTVCwgLTEpOworCisJaWYgKGV4cHIgPT0gTlVMTCkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0NBTk5PVF9DT0VSQ0Up LAorCQkJCSBlcnJtc2coInJvdyBmaWx0ZXIgcmV0dXJucyB0eXBlICVzIHRoYXQgY2Fubm90 IGJlIGNvZXJjZWQgdG8gdGhlIGV4cGVjdGVkIHR5cGUgJXMiLAorCQkJCQkJZm9ybWF0X3R5 cGVfYmUoZXhwcnR5cGUpLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUoQk9PTE9JRCkpLAorCQkJ CSBlcnJoaW50KCJZb3Ugd2lsbCBuZWVkIHRvIHJld3JpdGUgdGhlIHJvdyBmaWx0ZXIuIikp KTsKKworCWV4cHJzdGF0ZSA9IEV4ZWNQcmVwYXJlRXhwcihleHByLCBlc3RhdGUpOworCisJ cmV0dXJuIGV4cHJzdGF0ZTsKK30KKworLyoKKyAqIEV2YWx1YXRlcyByb3cgZmlsdGVyLgor ICoKKyAqIElmIHRoZSByb3cgZmlsdGVyIGV2YWx1YXRlcyB0byBOVUxMLCBpdCBpcyB0YWtl biBhcyBmYWxzZSBpLmUuIHRoZSBjaGFuZ2UKKyAqIGlzbid0IHJlcGxpY2F0ZWQuCisgKi8K K3N0YXRpYyBpbmxpbmUgYm9vbAorcGdvdXRwdXRfcm93X2ZpbHRlcl9leGVjX2V4cHIoRXhw clN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0KQoreworCURhdHVtCQlyZXQ7 CisJYm9vbAkJaXNudWxsOworCisJQXNzZXJ0KHN0YXRlICE9IE5VTEwpOworCisJcmV0ID0g RXhlY0V2YWxFeHByU3dpdGNoQ29udGV4dChzdGF0ZSwgZWNvbnRleHQsICZpc251bGwpOwor CisJZWxvZyhERUJVRzMsICJyb3cgZmlsdGVyIGV2YWx1YXRlcyB0byAlcyAoaXNudWxsOiAl cykiLAorCQkgRGF0dW1HZXRCb29sKHJldCkgPyAidHJ1ZSIgOiAiZmFsc2UiLAorCQkgaXNu dWxsID8gInRydWUiIDogImZhbHNlIik7CisKKwlpZiAoaXNudWxsKQorCQlyZXR1cm4gZmFs c2U7CisKKwlyZXR1cm4gRGF0dW1HZXRCb29sKHJldCk7Cit9CisKKy8qCisgKiBDaGFuZ2Ug aXMgY2hlY2tlZCBhZ2FpbnN0IHRoZSByb3cgZmlsdGVyLCBpZiBhbnkuCisgKgorICogSWYg aXQgcmV0dXJucyB0cnVlLCB0aGUgY2hhbmdlIGlzIHJlcGxpY2F0ZWQsIG90aGVyd2lzZSwg aXQgaXMgbm90LgorICovCitzdGF0aWMgYm9vbAorcGdvdXRwdXRfcm93X2ZpbHRlcihSZWxh dGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIG9sZHR1cGxlLCBIZWFwVHVwbGUgbmV3dHVwbGUs IExpc3QgKnJvd2ZpbHRlcikKK3sKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlFU3RhdGUJICAg KmVzdGF0ZTsKKwlFeHByQ29udGV4dCAqZWN4dDsKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsK KwlMaXN0Q2VsbCAgICpsYzsKKwlib29sCQlyZXN1bHQgPSB0cnVlOworCisJLyogQmFpbCBv dXQgaWYgdGhlcmUgaXMgbm8gcm93IGZpbHRlciAqLworCWlmIChsaXN0X2xlbmd0aChyb3dm aWx0ZXIpID09IDApCisJCXJldHVybiB0cnVlOworCisJZWxvZyhERUJVRzMsICJ0YWJsZSBc IiVzLiVzXCIgaGFzIHJvdyBmaWx0ZXIiLAorCQkgZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9y ZWxfbmFtZXNwYWNlKFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pKSksCisJCSBnZXRfcmVs X25hbWUocmVsYXRpb24tPnJkX2lkKSk7CisKKwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNj cihyZWxhdGlvbik7CisKKwllc3RhdGUgPSBjcmVhdGVfZXN0YXRlX2Zvcl9yZWxhdGlvbihy ZWxhdGlvbik7CisKKwkvKiBQcmVwYXJlIGNvbnRleHQgcGVyIHR1cGxlICovCisJZWN4dCA9 IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKwlvbGRjeHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCWVjeHQtPmVjeHRfc2NhbnR1 cGxlID0gRXhlY0luaXRFeHRyYVR1cGxlU2xvdChlc3RhdGUsIHR1cGRlc2MsICZUVFNPcHNI ZWFwVHVwbGUpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCisJRXhlY1N0 b3JlSGVhcFR1cGxlKG5ld3R1cGxlID8gbmV3dHVwbGUgOiBvbGR0dXBsZSwgZWN4dC0+ZWN4 dF9zY2FudHVwbGUsIGZhbHNlKTsKKworCS8qCisJICogSWYgdGhlIHN1YnNjcmlwdGlvbiBo YXMgbXVsdGlwbGUgcHVibGljYXRpb25zIGFuZCB0aGUgc2FtZSB0YWJsZSBoYXMgYQorCSAq IGRpZmZlcmVudCByb3cgZmlsdGVyIGluIHRoZXNlIHB1YmxpY2F0aW9ucywgYWxsIHJvdyBm aWx0ZXJzIG11c3QgYmUKKwkgKiBtYXRjaGVkIGluIG9yZGVyIHRvIHJlcGxpY2F0ZSB0aGlz IGNoYW5nZS4KKwkgKi8KKwlmb3JlYWNoKGxjLCByb3dmaWx0ZXIpCisJeworCQlOb2RlCSAg ICpyZm5vZGUgPSAoTm9kZSAqKSBsZmlyc3QobGMpOworCQlFeHByU3RhdGUgICpleHByc3Rh dGU7CisKKwkJLyogUHJlcGFyZSBmb3IgZXhwcmVzc2lvbiBleGVjdXRpb24gKi8KKwkJZXhw cnN0YXRlID0gcGdvdXRwdXRfcm93X2ZpbHRlcl9wcmVwYXJlX2V4cHIocmZub2RlLCBlc3Rh dGUpOworCisJCS8qIEV2YWx1YXRlcyByb3cgZmlsdGVyICovCisJCXJlc3VsdCA9IHBnb3V0 cHV0X3Jvd19maWx0ZXJfZXhlY19leHByKGV4cHJzdGF0ZSwgZWN4dCk7CisKKwkJaWYgKG1l c3NhZ2VfbGV2ZWxfaXNfaW50ZXJlc3RpbmcoREVCVUczKSkKKwkJeworCQkJY2hhcgkgICAq cyA9IE5VTEw7CisKKwkJCXMgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9u Q2FsbDIocGdfZ2V0X2V4cHIsIENTdHJpbmdHZXRUZXh0RGF0dW0obm9kZVRvU3RyaW5nKHJm bm9kZSkpLCBPYmplY3RJZEdldERhdHVtKHJlbGF0aW9uLT5yZF9pZCkpKTsKKwkJCWlmIChy ZXN1bHQpCisJCQkJZWxvZyhERUJVRzMsICJyb3cgZmlsdGVyIFwiJXNcIiBtYXRjaGVkIiwg cyk7CisJCQllbHNlCisJCQkJZWxvZyhERUJVRzMsICJyb3cgZmlsdGVyIFwiJXNcIiBub3Qg bWF0Y2hlZCIsIHMpOworCQkJcGZyZWUocyk7CisJCX0KKworCQkvKiBJZiB0aGUgdHVwbGUg ZG9lcyBub3QgbWF0Y2ggb25lIG9mIHRoZSByb3cgZmlsdGVycywgYmFpbCBvdXQgKi8KKwkJ aWYgKCFyZXN1bHQpCisJCQlicmVhazsKKwl9CisKKwlSZXNldEV4cHJDb250ZXh0KGVjeHQp OworCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisKKwlyZXR1cm4gcmVzdWx0OworfQor CiAvKgogICogU2VuZHMgdGhlIGRlY29kZWQgRE1MIG92ZXIgd2lyZS4KICAqCkBAIC01MTgs NyArNjU3LDcgQEAgcGdvdXRwdXRfY2hhbmdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCWlmIChpbl9zdHJlYW1pbmcpCiAJCXhpZCA9 IGNoYW5nZS0+dHhuLT54aWQ7CiAKLQlyZWxlbnRyeSA9IGdldF9yZWxfc3luY19lbnRyeShk YXRhLCBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSk7CisJcmVsZW50cnkgPSBnZXRfcmVs X3N5bmNfZW50cnkoZGF0YSwgcmVsYXRpb24pOwogCiAJLyogRmlyc3QgY2hlY2sgdGhlIHRh YmxlIGZpbHRlciAqLwogCXN3aXRjaCAoY2hhbmdlLT5hY3Rpb24pCkBAIC01NjIsNiArNzAx LDEwIEBAIHBnb3V0cHV0X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJCXR1cGxlID0gZXhlY3V0ZV9hdHRyX21hcF90 dXBsZSh0dXBsZSwgcmVsZW50cnktPm1hcCk7CiAJCQkJfQogCisJCQkJLyogQ2hlY2sgcm93 IGZpbHRlci4gKi8KKwkJCQlpZiAoIXBnb3V0cHV0X3Jvd19maWx0ZXIocmVsYXRpb24sIE5V TEwsIHR1cGxlLCByZWxlbnRyeS0+cXVhbCkpCisJCQkJCXJldHVybjsKKwogCQkJCU91dHB1 dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwogCQkJCWxvZ2ljYWxyZXBfd3JpdGVf aW5zZXJ0KGN0eC0+b3V0LCB4aWQsIHJlbGF0aW9uLCB0dXBsZSwKIAkJCQkJCQkJCQlkYXRh LT5iaW5hcnkpOwpAQCAtNTg4LDYgKzczMSwxMCBAQCBwZ291dHB1dF9jaGFuZ2UoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCX0K IAkJCQl9CiAKKwkJCQkvKiBDaGVjayByb3cgZmlsdGVyLiAqLworCQkJCWlmICghcGdvdXRw dXRfcm93X2ZpbHRlcihyZWxhdGlvbiwgb2xkdHVwbGUsIG5ld3R1cGxlLCByZWxlbnRyeS0+ cXVhbCkpCisJCQkJCXJldHVybjsKKwogCQkJCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShj dHgsIHRydWUpOwogCQkJCWxvZ2ljYWxyZXBfd3JpdGVfdXBkYXRlKGN0eC0+b3V0LCB4aWQs IHJlbGF0aW9uLCBvbGR0dXBsZSwKIAkJCQkJCQkJCQluZXd0dXBsZSwgZGF0YS0+YmluYXJ5 KTsKQEAgLTYxMCw2ICs3NTcsMTAgQEAgcGdvdXRwdXRfY2hhbmdlKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJb2xkdHVwbGUg PSBleGVjdXRlX2F0dHJfbWFwX3R1cGxlKG9sZHR1cGxlLCByZWxlbnRyeS0+bWFwKTsKIAkJ CQl9CiAKKwkJCQkvKiBDaGVjayByb3cgZmlsdGVyLiAqLworCQkJCWlmICghcGdvdXRwdXRf cm93X2ZpbHRlcihyZWxhdGlvbiwgb2xkdHVwbGUsIE5VTEwsIHJlbGVudHJ5LT5xdWFsKSkK KwkJCQkJcmV0dXJuOworCiAJCQkJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1 ZSk7CiAJCQkJbG9naWNhbHJlcF93cml0ZV9kZWxldGUoY3R4LT5vdXQsIHhpZCwgcmVsYXRp b24sIG9sZHR1cGxlLAogCQkJCQkJCQkJCWRhdGEtPmJpbmFyeSk7CkBAIC02NTcsMTIgKzgw OCwxMSBAQCBwZ291dHB1dF90cnVuY2F0ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgs IFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAlmb3IgKGkgPSAwOyBpIDwgbnJlbGF0aW9uczsg aSsrKQogCXsKIAkJUmVsYXRpb24JcmVsYXRpb24gPSByZWxhdGlvbnNbaV07Ci0JCU9pZAkJ CXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CiAKIAkJaWYgKCFpc19wdWJs aXNoYWJsZV9yZWxhdGlvbihyZWxhdGlvbikpCiAJCQljb250aW51ZTsKIAotCQlyZWxlbnRy eSA9IGdldF9yZWxfc3luY19lbnRyeShkYXRhLCByZWxpZCk7CisJCXJlbGVudHJ5ID0gZ2V0 X3JlbF9zeW5jX2VudHJ5KGRhdGEsIHJlbGF0aW9uKTsKIAogCQlpZiAoIXJlbGVudHJ5LT5w dWJhY3Rpb25zLnB1YnRydW5jYXRlKQogCQkJY29udGludWU7CkBAIC02NzIsMTAgKzgyMiwx MCBAQCBwZ291dHB1dF90cnVuY2F0ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJICogcm9vdCB0YWJsZXMgdGhyb3VnaCBpdC4KIAkJ ICovCiAJCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbiAmJgotCQkJcmVs ZW50cnktPnB1Ymxpc2hfYXNfcmVsaWQgIT0gcmVsaWQpCisJCQlyZWxlbnRyeS0+cHVibGlz aF9hc19yZWxpZCAhPSByZWxlbnRyeS0+cmVsaWQpCiAJCQljb250aW51ZTsKIAotCQlyZWxp ZHNbbnJlbGlkcysrXSA9IHJlbGlkOworCQlyZWxpZHNbbnJlbGlkcysrXSA9IHJlbGVudHJ5 LT5yZWxpZDsKIAkJbWF5YmVfc2VuZF9zY2hlbWEoY3R4LCB0eG4sIGNoYW5nZSwgcmVsYXRp b24sIHJlbGVudHJ5KTsKIAl9CiAKQEAgLTk0NCwxNiArMTA5NCwyMSBAQCBzZXRfc2NoZW1h X3NlbnRfaW5fc3RyZWFtZWRfdHhuKFJlbGF0aW9uU3luY0VudHJ5ICplbnRyeSwgVHJhbnNh Y3Rpb25JZCB4aWQpCiAgKiB3aGVuIHB1Ymxpc2hpbmcuCiAgKi8KIHN0YXRpYyBSZWxhdGlv blN5bmNFbnRyeSAqCi1nZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBP aWQgcmVsaWQpCitnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxh dGlvbiByZWwpCiB7CiAJUmVsYXRpb25TeW5jRW50cnkgKmVudHJ5OwotCWJvb2wJCWFtX3Bh cnRpdGlvbiA9IGdldF9yZWxfcmVsaXNwYXJ0aXRpb24ocmVsaWQpOwotCWNoYXIJCXJlbGtp bmQgPSBnZXRfcmVsX3JlbGtpbmQocmVsaWQpOworCU9pZAkJCXJlbGlkOworCWJvb2wJCWFt X3BhcnRpdGlvbjsKKwljaGFyCQlyZWxraW5kOwogCWJvb2wJCWZvdW5kOwogCU1lbW9yeUNv bnRleHQgb2xkY3R4OwogCiAJQXNzZXJ0KFJlbGF0aW9uU3luY0NhY2hlICE9IE5VTEwpOwog CisJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7CisJYW1fcGFydGl0aW9uID0gZ2V0 X3JlbF9yZWxpc3BhcnRpdGlvbihyZWxpZCk7CisJcmVsa2luZCA9IGdldF9yZWxfcmVsa2lu ZChyZWxpZCk7CisKIAkvKiBGaW5kIGNhY2hlZCByZWxhdGlvbiBpbmZvLCBjcmVhdGluZyBp ZiBub3QgZm91bmQgKi8KIAllbnRyeSA9IChSZWxhdGlvblN5bmNFbnRyeSAqKSBoYXNoX3Nl YXJjaChSZWxhdGlvblN5bmNDYWNoZSwKIAkJCQkJCQkJCQkJICAodm9pZCAqKSAmcmVsaWQs CkBAIC05NjksNiArMTEyNCw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEg KmRhdGEsIE9pZCByZWxpZCkKIAkJZW50cnktPnJlcGxpY2F0ZV92YWxpZCA9IGZhbHNlOwog CQllbnRyeS0+cHViYWN0aW9ucy5wdWJpbnNlcnQgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ1 cGRhdGUgPQogCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlID0gZW50cnktPnB1YmFj dGlvbnMucHVidHJ1bmNhdGUgPSBmYWxzZTsKKwkJZW50cnktPnF1YWwgPSBOSUw7CiAJCWVu dHJ5LT5wdWJsaXNoX2FzX3JlbGlkID0gSW52YWxpZE9pZDsKIAl9CiAKQEAgLTEwMDAsNiAr MTE1Niw5IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIE9pZCBy ZWxpZCkKIAkJewogCQkJUHVibGljYXRpb24gKnB1YiA9IGxmaXJzdChsYyk7CiAJCQlib29s CQlwdWJsaXNoID0gZmFsc2U7CisJCQlIZWFwVHVwbGUJcmZ0dXBsZTsKKwkJCURhdHVtCQly ZmRhdHVtOworCQkJYm9vbAkJcmZpc251bGw7CiAKIAkJCWlmIChwdWItPmFsbHRhYmxlcykK IAkJCXsKQEAgLTEwNTksOSArMTIxOCwyOSBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRw dXREYXRhICpkYXRhLCBPaWQgcmVsaWQpCiAJCQkJZW50cnktPnB1YmFjdGlvbnMucHVidHJ1 bmNhdGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlOwogCQkJfQogCi0JCQlpZiAo ZW50cnktPnB1YmFjdGlvbnMucHViaW5zZXJ0ICYmIGVudHJ5LT5wdWJhY3Rpb25zLnB1YnVw ZGF0ZSAmJgotCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSAmJiBlbnRyeS0+cHVi YWN0aW9ucy5wdWJ0cnVuY2F0ZSkKLQkJCQlicmVhazsKKwkJCS8qCisJCQkgKiBDYWNoZSBy b3cgZmlsdGVyLCBpZiBhdmFpbGFibGUuIEFsbCBwdWJsaWNhdGlvbi10YWJsZSBtYXBwaW5n cworCQkJICogbXVzdCBiZSBjaGVja2VkLiBJZiBpdCBpcyBhIHBhcnRpdGlvbiBhbmQgcHVi dmlhcm9vdCBpcyB0cnVlLAorCQkJICogdXNlIHRoZSByb3cgZmlsdGVyIG9mIHRoZSB0b3Bt b3N0IHBhcnRpdGlvbmVkIHRhYmxlIGluc3RlYWQgb2YKKwkJCSAqIHRoZSByb3cgZmlsdGVy IG9mIGl0cyBvd24gcGFydGl0aW9uLgorCQkJICovCisJCQlyZnR1cGxlID0gU2VhcmNoU3lz Q2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLCBPYmplY3RJZEdldERhdHVtKHB1Ymxpc2hfYXNf cmVsaWQpLCBPYmplY3RJZEdldERhdHVtKHB1Yi0+b2lkKSk7CisJCQlpZiAoSGVhcFR1cGxl SXNWYWxpZChyZnR1cGxlKSkKKwkJCXsKKwkJCQlyZmRhdHVtID0gU3lzQ2FjaGVHZXRBdHRy KFBVQkxJQ0FUSU9OUkVMTUFQLCByZnR1cGxlLCBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9w cnF1YWwsICZyZmlzbnVsbCk7CisKKwkJCQlpZiAoIXJmaXNudWxsKQorCQkJCXsKKwkJCQkJ Tm9kZQkgICAqcmZub2RlOworCisJCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhDYWNoZU1lbW9yeUNvbnRleHQpOworCQkJCQlyZm5vZGUgPSBzdHJpbmdUb05vZGUoVGV4 dERhdHVtR2V0Q1N0cmluZyhyZmRhdHVtKSk7CisJCQkJCWVudHJ5LT5xdWFsID0gbGFwcGVu ZChlbnRyeS0+cXVhbCwgcmZub2RlKTsKKwkJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGN0eCk7CisJCQkJfQorCisJCQkJUmVsZWFzZVN5c0NhY2hlKHJmdHVwbGUpOworCQkJfQog CQl9CiAKIAkJbGlzdF9mcmVlKHB1Ymlkcyk7CkBAIC0xMTY3LDYgKzEzNDYsNyBAQCByZWxf c3luY19jYWNoZV9wdWJsaWNhdGlvbl9jYihEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50 MzIgaGFzaHZhbHVlKQogewogCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CiAJUmVsYXRpb25T eW5jRW50cnkgKmVudHJ5OworCU1lbW9yeUNvbnRleHQgb2xkY3R4OwogCiAJLyoKIAkgKiBX ZSBjYW4gZ2V0IGhlcmUgaWYgdGhlIHBsdWdpbiB3YXMgdXNlZCBpbiBTUUwgaW50ZXJmYWNl IGFzIHRoZQpAQCAtMTE3Niw2ICsxMzU2LDggQEAgcmVsX3N5bmNfY2FjaGVfcHVibGljYXRp b25fY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIAlpZiAo UmVsYXRpb25TeW5jQ2FjaGUgPT0gTlVMTCkKIAkJcmV0dXJuOwogCisJb2xkY3R4ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKENhY2hlTWVtb3J5Q29udGV4dCk7CisKIAkvKgogCSAqIFRo ZXJlIGlzIG5vIHdheSB0byBmaW5kIHdoaWNoIGVudHJ5IGluIG91ciBjYWNoZSB0aGUgaGFz aCBiZWxvbmdzIHRvIHNvCiAJICogbWFyayB0aGUgd2hvbGUgY2FjaGUgYXMgaW52YWxpZC4K QEAgLTExOTMsNSArMTM3NSwxMSBAQCByZWxfc3luY19jYWNoZV9wdWJsaWNhdGlvbl9jYihE YXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogCQllbnRyeS0+cHVi YWN0aW9ucy5wdWJ1cGRhdGUgPSBmYWxzZTsKIAkJZW50cnktPnB1YmFjdGlvbnMucHViZGVs ZXRlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0gZmFsc2U7 CisKKwkJaWYgKGxpc3RfbGVuZ3RoKGVudHJ5LT5xdWFsKSA+IDApCisJCQlsaXN0X2ZyZWVf ZGVlcChlbnRyeS0+cXVhbCk7CisJCWVudHJ5LT5xdWFsID0gTklMOwogCX0KKworCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5oCmluZGV4IDFiMzFmZWU5ZTMuLjlhNjAyMTEyNTkgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTg1LDYgKzg1LDEzIEBAIHR5cGVkZWYgc3Ry dWN0IFB1YmxpY2F0aW9uCiAJUHVibGljYXRpb25BY3Rpb25zIHB1YmFjdGlvbnM7CiB9IFB1 YmxpY2F0aW9uOwogCit0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJlbGF0aW9uSW5mbwor eworCU9pZAkJCXJlbGlkOworCVJlbGF0aW9uCXJlbGF0aW9uOworCU5vZGUJICAgKndoZXJl Q2xhdXNlOworfSBQdWJsaWNhdGlvblJlbGF0aW9uSW5mbzsKKwogZXh0ZXJuIFB1YmxpY2F0 aW9uICpHZXRQdWJsaWNhdGlvbihPaWQgcHViaWQpOwogZXh0ZXJuIFB1YmxpY2F0aW9uICpH ZXRQdWJsaWNhdGlvbkJ5TmFtZShjb25zdCBjaGFyICpwdWJuYW1lLCBib29sIG1pc3Npbmdf b2spOwogZXh0ZXJuIExpc3QgKkdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCk7 CkBAIC0xMTAsNyArMTE3LDcgQEAgZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0 aW9ucyh2b2lkKTsKIGV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0 aW9ucyhib29sIHB1YnZpYXJvb3QpOwogCiBleHRlcm4gYm9vbCBpc19wdWJsaXNoYWJsZV9y ZWxhdGlvbihSZWxhdGlvbiByZWwpOwotZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRp b25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUmVsYXRpb24gdGFyZ2V0cmVsLAorZXh0ZXJu IE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVi bGljYXRpb25SZWxhdGlvbkluZm8gKnRhcmdldHJlbCwKIAkJCQkJCQkJCQkJICBib29sIGlm X25vdF9leGlzdHMpOwogCiBleHRlcm4gT2lkCWdldF9wdWJsaWNhdGlvbl9vaWQoY29uc3Qg Y2hhciAqcHVibmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uX3JlbC5oCmluZGV4IGFlY2Y1M2IzYjMuLmUyYmVjYjEyZWIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaApAQCAtMzEsNiAr MzEsMTAgQEAgQ0FUQUxPRyhwZ19wdWJsaWNhdGlvbl9yZWwsNjEwNixQdWJsaWNhdGlvblJl bFJlbGF0aW9uSWQpCiAJT2lkCQkJb2lkOwkJCS8qIG9pZCAqLwogCU9pZAkJCXBycHViaWQg QktJX0xPT0tVUChwZ19wdWJsaWNhdGlvbik7IC8qIE9pZCBvZiB0aGUgcHVibGljYXRpb24g Ki8KIAlPaWQJCQlwcnJlbGlkIEJLSV9MT09LVVAocGdfY2xhc3MpOwkvKiBPaWQgb2YgdGhl IHJlbGF0aW9uICovCisKKyNpZmRlZglDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxl bmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLworCXBnX25vZGVfdHJlZSBwcnF1YWw7CQkvKiBx dWFsaWZpY2F0aW9ucyAqLworI2VuZGlmCiB9IEZvcm1EYXRhX3BnX3B1YmxpY2F0aW9uX3Jl bDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDAsNiArNDQsOCBAQCBDQVRBTE9HKHBn X3B1YmxpY2F0aW9uX3JlbCw2MTA2LFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCkKICAqLwog dHlwZWRlZiBGb3JtRGF0YV9wZ19wdWJsaWNhdGlvbl9yZWwgKkZvcm1fcGdfcHVibGljYXRp b25fcmVsOwogCitERUNMQVJFX1RPQVNUKHBnX3B1YmxpY2F0aW9uX3JlbCwgODI4NywgODI4 OCk7CisKIERFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdfcHVibGljYXRpb25fcmVsX29p ZF9pbmRleCwgNjExMiwgb24gcGdfcHVibGljYXRpb25fcmVsIHVzaW5nIGJ0cmVlKG9pZCBv aWRfb3BzKSk7CiAjZGVmaW5lIFB1YmxpY2F0aW9uUmVsT2JqZWN0SW5kZXhJZCA2MTEyCiBE RUNMQVJFX1VOSVFVRV9JTkRFWChwZ19wdWJsaWNhdGlvbl9yZWxfcHJyZWxpZF9wcnB1Ymlk X2luZGV4LCA2MTEzLCBvbiBwZ19wdWJsaWNhdGlvbl9yZWwgdXNpbmcgYnRyZWUocHJyZWxp ZCBvaWRfb3BzLCBwcnB1YmlkIG9pZF9vcHMpKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCmluZGV4IGUyMmRm ODkwZWYuLjFjOWY0ZmU3NjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAtNDg1LDYgKzQ4NSw3IEBA IHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9QYXJ0aXRpb25SYW5nZURhdHVtLAogCVRfUGFy dGl0aW9uQ21kLAogCVRfVmFjdXVtUmVsYXRpb24sCisJVF9QdWJsaWNhdGlvblRhYmxlLAog CiAJLyoKIAkgKiBUQUdTIEZPUiBSRVBMSUNBVElPTiBHUkFNTUFSIFBBUlNFIE5PREVTIChy ZXBsbm9kZXMuaCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA2ODQyNWViMmMwLi43 NTcwYzNiYzE5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zNTU2LDEyICszNTU2 LDE5IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyVFNDb25maWd1cmF0aW9uU3RtdAogfSBBbHRl clRTQ29uZmlndXJhdGlvblN0bXQ7CiAKIAordHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25U YWJsZQoreworCU5vZGVUYWcJCXR5cGU7CisJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiBy ZWxhdGlvbiB0byBiZSBwdWJsaXNoZWQgKi8KKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyog cXVhbGlmaWNhdGlvbnMgKi8KK30gUHVibGljYXRpb25UYWJsZTsKKwogdHlwZWRlZiBzdHJ1 Y3QgQ3JlYXRlUHVibGljYXRpb25TdG10CiB7CiAJTm9kZVRhZwkJdHlwZTsKIAljaGFyCSAg ICpwdWJuYW1lOwkJLyogTmFtZSBvZiB0aGUgcHVibGljYXRpb24gKi8KIAlMaXN0CSAgICpv cHRpb25zOwkJLyogTGlzdCBvZiBEZWZFbGVtIG5vZGVzICovCi0JTGlzdAkgICAqdGFibGVz OwkJCS8qIE9wdGlvbmFsIGxpc3Qgb2YgdGFibGVzIHRvIGFkZCAqLworCUxpc3QJICAgKnRh YmxlczsJCQkvKiBPcHRpb25hbCBsaXN0IG9mIFB1YmxpY2F0aW9uVGFibGUgdG8gYWRkICov CiAJYm9vbAkJZm9yX2FsbF90YWJsZXM7IC8qIFNwZWNpYWwgcHVibGljYXRpb24gZm9yIGFs bCB0YWJsZXMgaW4gZGIgKi8KIH0gQ3JlYXRlUHVibGljYXRpb25TdG10OwogCkBAIC0zNTc0 LDcgKzM1ODEsNyBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclB1YmxpY2F0aW9uU3RtdAogCUxp c3QJICAgKm9wdGlvbnM7CQkvKiBMaXN0IG9mIERlZkVsZW0gbm9kZXMgKi8KIAogCS8qIHBh cmFtZXRlcnMgdXNlZCBmb3IgQUxURVIgUFVCTElDQVRJT04gLi4uIEFERC9EUk9QIFRBQkxF ICovCi0JTGlzdAkgICAqdGFibGVzOwkJCS8qIExpc3Qgb2YgdGFibGVzIHRvIGFkZC9kcm9w ICovCisJTGlzdAkgICAqdGFibGVzOwkJCS8qIExpc3Qgb2YgUHVibGljYXRpb25UYWJsZSB0 byBhZGQvZHJvcCAqLwogCWJvb2wJCWZvcl9hbGxfdGFibGVzOyAvKiBTcGVjaWFsIHB1Ymxp Y2F0aW9uIGZvciBhbGwgdGFibGVzIGluIGRiICovCiAJRGVmRWxlbUFjdGlvbiB0YWJsZUFj dGlvbjsJLyogV2hhdCBhY3Rpb24gdG8gcGVyZm9ybSB3aXRoIHRoZSB0YWJsZXMgKi8KIH0g QWx0ZXJQdWJsaWNhdGlvblN0bXQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCAx NzZiOWYzN2MxLi5lZGI4MGZiZTVkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKQEAg LTc5LDYgKzc5LDcgQEAgdHlwZWRlZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlFWFBSX0tJTkRf Q09QWV9XSEVSRSwJCS8qIFdIRVJFIGNvbmRpdGlvbiBpbiBDT1BZIEZST00gKi8KIAlFWFBS X0tJTkRfR0VORVJBVEVEX0NPTFVNTiwgLyogZ2VuZXJhdGlvbiBleHByZXNzaW9uIGZvciBh IGNvbHVtbiAqLwogCUVYUFJfS0lORF9DWUNMRV9NQVJLLAkJLyogY3ljbGUgbWFyayB2YWx1 ZSAqLworCUVYUFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRSAvKiBXSEVSRSBjb25kaXRpb24g Zm9yIGEgdGFibGUgaW4gUFVCTElDQVRJT04gKi8KIH0gUGFyc2VFeHByS2luZDsKIAogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCmluZGV4IDNmMGIz ZGVlZmIuLmE1OWFkMmM5YzggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWxyZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxyZWxhdGlvbi5oCkBAIC00OSw0ICs0OSw2IEBAIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBf cmVsX2Nsb3NlKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsLAogZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF90eXBtYXBfdXBkYXRlKExvZ2ljYWxSZXBUeXAgKnJlbW90ZXR5cCk7CiBleHRl cm4gY2hhciAqbG9naWNhbHJlcF90eXBtYXBfZ2V0dHlwbmFtZShPaWQgcmVtb3RlaWQpOwog CitleHRlcm4gRVN0YXRlICpjcmVhdGVfZXN0YXRlX2Zvcl9yZWxhdGlvbihSZWxhdGlvbiBy ZWwpOworCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTFJFTEFUSU9OX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggNjNkNmFiN2E0ZS4u YzhjZjFiNjg1ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJs aWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlv bi5vdXQKQEAgLTE1Niw2ICsxNTYsMzggQEAgVGFibGVzOgogCiBEUk9QIFRBQkxFIHRlc3Rw dWJfcGFydGVkMTsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQsIHRlc3Rw dWJfZm9ycGFydGVkMTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3JmX3RibDEgKGEgaW50ZWdl ciwgYiB0ZXh0KTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3JmX3RibDIgKGMgdGV4dCwgZCBp bnRlZ2VyKTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3JmX3RibDMgKGUgaW50ZWdlcik7CitD UkVBVEUgVEFCTEUgdGVzdHB1Yl9yZl90Ymw0IChnIHRleHQpOworU0VUIGNsaWVudF9taW5f bWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEZPUiBU QUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfdGJsMiBXSEVSRSAoYyA8PiAndGVz dCcgQU5EIGQgPCA1KTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViNSBBREQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4g MTAwMCBBTkQgZSA8IDIwMDApOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgRFJPUCBU QUJMRSB0ZXN0cHViX3JmX3RibDI7CistLSByZW1vdmUgdGVzdHB1Yl9yZl90YmwxIGFuZCBh ZGQgdGVzdHB1Yl9yZl90YmwzIGFnYWluIChhbm90aGVyIFdIRVJFIGV4cHJlc3Npb24pCitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdI RVJFIChlID4gMzAwIEFORCBlIDwgNTAwKTsKKy0tIGZhaWwgLSBmdW5jdGlvbnMgZGlzYWxs b3dlZAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgQUREIFRBQkxFIHRlc3RwdWJfcmZf dGJsNCBXSEVSRSAobGVuZ3RoKGcpIDwgNik7CitFUlJPUjogIGZ1bmN0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbnMKK0xJTkUgMTogLi4u SUNBVElPTiB0ZXN0cHViNSBBREQgVEFCTEUgdGVzdHB1Yl9yZl90Ymw0IFdIRVJFIChsZW5n dGgoZykgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gZmFpbCAtIFdIRVJFIG5vdCBhbGxvd2VkIGluIERS T1AKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IERST1AgVEFCTEUgdGVzdHB1Yl9yZl90 YmwzIFdIRVJFIChlIDwgMjcpOworRVJST1I6ICBjYW5ub3QgdXNlIGEgV0hFUkUgY2xhdXNl IHdoZW4gcmVtb3ZpbmcgdGFibGUgZnJvbSBwdWJsaWNhdGlvbiAidGVzdHB1YjUiCitcZFJw KyB0ZXN0cHViNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBmCitUYWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3JmX3Ri bDMiICBXSEVSRSAoKGUgPiAzMDApIEFORCAoZSA8IDUwMCkpCisKK0RST1AgVEFCTEUgdGVz dHB1Yl9yZl90YmwxOworRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3RibDI7CitEUk9QIFRBQkxF IHRlc3RwdWJfcmZfdGJsMzsKK0RST1AgVEFCTEUgdGVzdHB1Yl9yZl90Ymw0OworRFJPUCBQ VUJMSUNBVElPTiB0ZXN0cHViNTsKIC0tIGZhaWwgLSB2aWV3CiBDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3J0YmwgRk9SIFRBQkxFIHRlc3RwdWJfdmlldzsKIEVSUk9SOiAgInRl c3RwdWJfdmlldyIgaXMgbm90IGEgdGFibGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0 aW9uLnNxbAppbmRleCBkODQ0MDc1MzY4Li4zNTIxMWM1NmY2IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC05Myw2ICs5MywyOSBAQCBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2ZvcnBhcnRlZCBTRVQgKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 ID0gdHJ1ZSk7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcGFydGVkMTsKIERST1AgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JwYXJ0ZWQsIHRlc3RwdWJfZm9ycGFydGVkMTsKIAorQ1JFQVRFIFRB QkxFIHRlc3RwdWJfcmZfdGJsMSAoYSBpbnRlZ2VyLCBiIHRleHQpOworQ1JFQVRFIFRBQkxF IHRlc3RwdWJfcmZfdGJsMiAoYyB0ZXh0LCBkIGludGVnZXIpOworQ1JFQVRFIFRBQkxFIHRl c3RwdWJfcmZfdGJsMyAoZSBpbnRlZ2VyKTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3JmX3Ri bDQgKGcgdGV4dCk7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwgdGVz dHB1Yl9yZl90YmwyIFdIRVJFIChjIDw+ICd0ZXN0JyBBTkQgZCA8IDUpOworUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEFERCBUQUJM RSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPiAxMDAwIEFORCBlIDwgMjAwMCk7CitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViNSBEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMjsKKy0t IHJlbW92ZSB0ZXN0cHViX3JmX3RibDEgYW5kIGFkZCB0ZXN0cHViX3JmX3RibDMgYWdhaW4g KGFub3RoZXIgV0hFUkUgZXhwcmVzc2lvbikKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1 IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPiAzMDAgQU5EIGUgPCA1MDAp OworLS0gZmFpbCAtIGZ1bmN0aW9ucyBkaXNhbGxvd2VkCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViNSBBREQgVEFCTEUgdGVzdHB1Yl9yZl90Ymw0IFdIRVJFIChsZW5ndGgoZykgPCA2 KTsKKy0tIGZhaWwgLSBXSEVSRSBub3QgYWxsb3dlZCBpbiBEUk9QCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViNSBEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA8IDI3 KTsKK1xkUnArIHRlc3RwdWI1CisKK0RST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwxOworRFJP UCBUQUJMRSB0ZXN0cHViX3JmX3RibDI7CitEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMzsK K0RST1AgVEFCTEUgdGVzdHB1Yl9yZl90Ymw0OworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHVi NTsKKwogLS0gZmFpbCAtIHZpZXcKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRi bCBGT1IgVEFCTEUgdGVzdHB1Yl92aWV3OwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAn RVJST1InOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIwX3Jvd19m aWx0ZXIucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjBfcm93X2ZpbHRlci5wbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zNWE0MTc0MWQzCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIwX3Jvd19maWx0ZXIu cGwKQEAgLTAsMCArMSwyMjEgQEAKKyMgVGVzdCBsb2dpY2FsIHJlcGxpY2F0aW9uIGJlaGF2 aW9yIHdpdGggcm93IGZpbHRlcmluZwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3Vz ZSBQb3N0Z3Jlc05vZGU7Cit1c2UgVGVzdExpYjsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+ IDc7CisKKyMgY3JlYXRlIHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBn ZXRfbmV3X25vZGUoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93 c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisK KyMgY3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IGdldF9u ZXdfbm9kZSgnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nf c3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKwor IyBzZXR1cCBzdHJ1Y3R1cmUgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl8xIChhIGlu dCBwcmltYXJ5IGtleSwgYiB0ZXh0KSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJfMiAoYyBpbnQgcHJp bWFyeSBrZXkpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl8zIChhIGludCBwcmltYXJ5IGtleSwgYiBi b29sZWFuKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJfcGFydGl0aW9uZWQgKGEgaW50IHByaW1hcnkg a2V5LCBiIGludGVnZXIpIFBBUlRJVElPTiBCWSBSQU5HRShhKSIKKyk7Ciskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2Zp bHRlcl9sZXNzXzEwayAoTElLRSB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkKSIpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGFi X3Jvd2ZpbHRlcl9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRhYl9yb3dmaWx0ZXJf bGVzc18xMGsgRk9SIFZBTFVFUyBGUk9NIChNSU5WQUxVRSkgVE8gKDEwMDAwKSIKKyk7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUg dGFiX3Jvd2ZpbHRlcl9ncmVhdGVyXzEwayAoTElLRSB0YWJfcm93ZmlsdGVyX3BhcnRpdGlv bmVkKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJB TFRFUiBUQUJMRSB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04g dGFiX3Jvd2ZpbHRlcl9ncmVhdGVyXzEwayBGT1IgVkFMVUVTIEZST00gKDEwMDAwKSBUTyAo TUFYVkFMVUUpIgorKTsKKworIyBzZXR1cCBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlcgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0 YWJfcm93ZmlsdGVyXzEgKGEgaW50IHByaW1hcnkga2V5LCBiIHRleHQpIik7Ciskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRhYl9y b3dmaWx0ZXJfMiAoYyBpbnQgcHJpbWFyeSBrZXkpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJfMyAo YSBpbnQgcHJpbWFyeSBrZXksIGIgYm9vbGVhbikiKTsKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9wYXJ0 aXRpb25lZCAoYSBpbnQgcHJpbWFyeSBrZXksIGIgaW50ZWdlcikgUEFSVElUSU9OIEJZIFJB TkdFKGEpIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9sZXNzXzEwayAoTElLRSB0YWJfcm93Zmls dGVyX3BhcnRpdGlvbmVkKSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRhYl9yb3dmaWx0ZXJfcGFydGl0aW9uZWQgQVRUQUNI IFBBUlRJVElPTiB0YWJfcm93ZmlsdGVyX2xlc3NfMTBrIEZPUiBWQUxVRVMgRlJPTSAoTUlO VkFMVUUpIFRPICgxMDAwMCkiCispOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YWJfcm93ZmlsdGVyX2dyZWF0ZXJfMTBrIChM SUtFIHRhYl9yb3dmaWx0ZXJfcGFydGl0aW9uZWQpIgorKTsKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0YWJfcm93ZmlsdGVyX3Bh cnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGFiX3Jvd2ZpbHRlcl9ncmVhdGVyXzEwayBG T1IgVkFMVUVTIEZST00gKDEwMDAwKSBUTyAoTUFYVkFMVUUpIgorKTsKKworIyBzZXR1cCBs b2dpY2FsIHJlcGxpY2F0aW9uCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl8xIEZPUiBUQUJMRSB0YWJfcm93 ZmlsdGVyXzEgV0hFUkUgKGEgPiAxMDAwIEFORCBiIDw+ICdmaWx0ZXJlZCcpIgorKTsKKwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgUFVCTElD QVRJT04gdGFwX3B1Yl8xIEFERCBUQUJMRSB0YWJfcm93ZmlsdGVyXzIgV0hFUkUgKGMgJSA3 ID0gMCkiCispOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJBTFRFUiBQVUJMSUNBVElPTiB0YXBfcHViXzEgU0VUIFRBQkxFIHRhYl9yb3dmaWx0ZXJf MSBXSEVSRSAoYSA+IDEwMDAgQU5EIGIgPD4gJ2ZpbHRlcmVkJyksIHRhYl9yb3dmaWx0ZXJf MiBXSEVSRSAoYyAlIDIgPSAwKSwgdGFiX3Jvd2ZpbHRlcl8zIgorKTsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRh cF9wdWJfMiBGT1IgVEFCTEUgdGFiX3Jvd2ZpbHRlcl8yIFdIRVJFIChjICUgMyA9IDApIgor KTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFBVQkxJQ0FUSU9OIHRhcF9wdWJfMyBGT1IgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9wYXJ0aXRp b25lZCBXSEVSRSAoYSA8IDUwMDApIgorKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkFMVEVSIFBVQkxJQ0FUSU9OIHRhcF9wdWJfMyBBREQgVEFCTEUg dGFiX3Jvd2ZpbHRlcl9sZXNzXzEwayBXSEVSRSAoYSA8IDYwMDApIgorKTsKKworIyB0ZXN0 IHJvdyBmaWx0ZXJpbmcKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJfMSAoYSwgYikgVkFMVUVTICgxLCAnbm90 IHJlcGxpY2F0ZWQnKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiSU5TRVJUIElOVE8gdGFiX3Jvd2ZpbHRlcl8xIChhLCBiKSBWQUxVRVMgKDE1MDAs ICdmaWx0ZXJlZCcpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJJTlNFUlQgSU5UTyB0YWJfcm93ZmlsdGVyXzEgKGEsIGIpIFZBTFVFUyAoMTk4MCwg J25vdCBmaWx0ZXJlZCcpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfcm93ZmlsdGVyXzEgKGEsIGIpIFNFTEVDVCB4LCAn dGVzdCAnIHx8IHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTkwLDEwMDIpIHgiCispOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFi X3Jvd2ZpbHRlcl8yIChjKSBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSIpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFi X3Jvd2ZpbHRlcl8zIChhLCBiKSBTRUxFQ1QgeCwgKHggJSAzID0gMCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMTApIHgiCispOworIyB1c2UgcGFydGl0aW9uIHJvdyBmaWx0ZXI6Cisj IC0gcmVwbGljYXRlICgxLCAxMDApIGJlY2F1c2UgMSA8IDYwMDAgaXMgdHJ1ZQorIyAtIGRv bid0IHJlcGxpY2F0ZSAoODAwMCwgMTAxKSBiZWNhdXNlIDgwMDAgPCA2MDAwIGlzIGZhbHNl CisjIC0gcmVwbGljYXRlICgxNTAwMCwgMTAyKSBiZWNhdXNlIHBhcnRpdGlvbiB0YWJfcm93 ZmlsdGVyX2dyZWF0ZXJfMTBrIGRvZXNuJ3QgaGF2ZSByb3cgZmlsdGVyCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfcm93Zmls dGVyX3BhcnRpdGlvbmVkIChhLCBiKSBWQUxVRVMoMSwgMTAwKSwoODAwMCwgMTAxKSwoMTUw MDAsIDEwMikiCispOworIyBpbnNlcnQgZGlyZWN0bHkgaW50byBwYXJ0aXRpb24KKyMgdXNl IHBhcnRpdGlvbiByb3cgZmlsdGVyOiByZXBsaWNhdGUgKDIsIDIwMCkgYmVjYXVzZSAyIDwg NjAwMCBpcyB0cnVlCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJJTlNFUlQgSU5UTyB0YWJfcm93ZmlsdGVyX2xlc3NfMTBrIChhLCBiKSBWQUxVRVMoMiwg MjAwKSIpOworIyB1c2UgcGFydGl0aW9uIHJvdyBmaWx0ZXI6IHJlcGxpY2F0ZSAoNTUwMCwg MzAwKSBiZWNhdXNlIDU1MDAgPCA2MDAwIGlzIHRydWUKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJfcGFydGl0 aW9uZWQgKGEsIGIpIFZBTFVFUyg1NTAwLCAzMDApIik7CisKK215ICRwdWJsaXNoZXJfY29u bnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsK K215ICRhcHBuYW1lICAgICAgICAgICA9ICd0YXBfc3ViJzsKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIg Q09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5h bWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWJfMSwgdGFwX3B1Yl8yLCB0YXBfcHViXzMiCispOwor Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIHdh aXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5pc2gKK215ICRzeW5jZWRfcXVlcnkg PQorICAiU0VMRUNUIGNvdW50KDEpID0gMCBGUk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwgV0hF UkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdyJywgJ3MnKTsiOworJG5vZGVfc3Vic2NyaWJlci0+ cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQorICBvciBkaWUg IlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXpl IGRhdGEiOworCitteSAkcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBhLCBiIEZST00gdGFiX3Jvd2ZpbHRlcl8xIE9SREVS IEJZIDEsIDIiKTsKK2lzKCAkcmVzdWx0LCBxcSgxMDAxfHRlc3QgMTAwMQorMTAwMnx0ZXN0 IDEwMDIKKzE5ODB8bm90IGZpbHRlcmVkKSwgJ2NoZWNrIGZpbHRlcmVkIGRhdGEgd2FzIGNv cGllZCB0byBzdWJzY3JpYmVyJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KGMpLCBtaW4oYyksIG1h eChjKSBGUk9NIHRhYl9yb3dmaWx0ZXJfMiIpOworaXMoJHJlc3VsdCwgcXEoM3w2fDE4KSwg J2NoZWNrIGZpbHRlcmVkIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKyRy ZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki U0VMRUNUIGNvdW50KGEpIEZST00gdGFiX3Jvd2ZpbHRlcl8zIik7CitpcygkcmVzdWx0LCBx cSgxMCksICdjaGVjayBmaWx0ZXJlZCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicp OworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCBhLCBiIEZST00gdGFiX3Jvd2ZpbHRlcl9sZXNzXzEwayBPUkRFUiBC WSAxLCAyIik7CitpcygkcmVzdWx0LCBxcSgxfDEwMAorMnwyMDAKKzU1MDB8MzAwKSwgJ2No ZWNrIGZpbHRlcmVkIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKyRyZXN1 bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIGEsIGIgRlJPTSB0YWJfcm93ZmlsdGVyX2dyZWF0ZXJfMTBrIE9SREVSIEJZIDEsIDIi KTsKK2lzKCRyZXN1bHQsIHFxKDE1MDAwfDEwMiksICdjaGVjayBmaWx0ZXJlZCBkYXRhIHdh cyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOworCisjIHRlc3Qgcm93IGZpbHRlciAoSU5TRVJU LCBVUERBVEUsIERFTEVURSkKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJfMSAoYSwgYikgVkFMVUVTICg4MDAs ICd0ZXN0IDgwMCcpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJJTlNFUlQgSU5UTyB0YWJfcm93ZmlsdGVyXzEgKGEsIGIpIFZBTFVFUyAoMTYwMCwg J3Rlc3QgMTYwMCcpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJJTlNFUlQgSU5UTyB0YWJfcm93ZmlsdGVyXzEgKGEsIGIpIFZBTFVFUyAoMTYwMSwg J3Rlc3QgMTYwMScpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJJTlNFUlQgSU5UTyB0YWJfcm93ZmlsdGVyXzEgKGEsIGIpIFZBTFVFUyAoMTcwMCwg J3Rlc3QgMTcwMCcpIik7CisjIFVQREFURSBpcyBub3QgcmVwbGljYXRlZCA7IHJvdyBmaWx0 ZXIgZXZhbHVhdGVzIHRvIGZhbHNlIHdoZW4gYiA9IE5VTEwKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlVQREFURSB0YWJfcm93ZmlsdGVyXzEgU0VUIGIg PSBOVUxMIFdIRVJFIGEgPSAxNjAwIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJVUERBVEUgdGFiX3Jvd2ZpbHRlcl8xIFNFVCBiID0gJ3Rlc3QgMTYw MSB1cGRhdGVkJyBXSEVSRSBhID0gMTYwMSIpOworIyBERUxFVEUgaXMgbm90IHJlcGxpY2F0 ZWQgOyBiIGlzIG5vdCBwYXJ0IG9mIHRoZSBQSyBvciByZXBsaWNhIGlkZW50aXR5IGFuZAor IyBvbGQgdHVwbGUgY29udGFpbnMgYiA9IE5VTEwsIGhlbmNlLCByb3cgZmlsdGVyIGV2YWx1 YXRlcyB0byBmYWxzZQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiREVMRVRFIEZST00gdGFiX3Jvd2ZpbHRlcl8xIFdIRVJFIGEgPSAxNzAwIik7CisKKyRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQg PQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IGEsIGIgRlJPTSB0YWJfcm93ZmlsdGVyXzEgT1JERVIgQlkgMSwgMiIpOworaXMoJHJlc3Vs dCwgcXEoMTAwMXx0ZXN0IDEwMDEKKzEwMDJ8dGVzdCAxMDAyCisxNjAwfHRlc3QgMTYwMAor MTYwMXx0ZXN0IDE2MDEgdXBkYXRlZAorMTcwMHx0ZXN0IDE3MDAKKzE5ODB8bm90IGZpbHRl cmVkKSwgJ2NoZWNrIGZpbHRlcmVkIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7 CisKKyMgcHVibGlzaCB1c2luZyBwYXJ0aXRpb25lZCB0YWJsZQorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgUFVCTElDQVRJT04gdGFwX3B1Yl8z IFNFVCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKSIpOworJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlRSVU5DQVRFIFRBQkxFIHRhYl9y b3dmaWx0ZXJfcGFydGl0aW9uZWQiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBSRUZSRVNIIFBVQkxJ Q0FUSU9OIFdJVEggKGNvcHlfZGF0YSA9IHRydWUpIik7CisjIHVzZSBwYXJ0aXRpb25lZCB0 YWJsZSByb3cgZmlsdGVyOiByZXBsaWNhdGUsIDQwMDAgPCA1MDAwIGlzIHRydWUKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9y b3dmaWx0ZXJfcGFydGl0aW9uZWQgKGEsIGIpIFZBTFVFUyg0MDAwLCA0MDApIik7CisjIHVz ZSBwYXJ0aXRpb25lZCB0YWJsZSByb3cgZmlsdGVyOiByZXBsaWNhdGUsIDQ1MDAgPCA1MDAw IGlzIHRydWUKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklO U0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJfbGVzc18xMGsgKGEsIGIpIFZBTFVFUyg0NTAwLCA0 NTApIik7CisjIHVzZSBwYXJ0aXRpb25lZCB0YWJsZSByb3cgZmlsdGVyOiBkb24ndCByZXBs aWNhdGUsIDU2MDAgPCA1MDAwIGlzIGZhbHNlCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfcm93ZmlsdGVyX2xlc3NfMTBrIChh LCBiKSBWQUxVRVMoNTYwMCwgMTIzKSIpOworIyB1c2UgcGFydGl0aW9uZWQgdGFibGUgcm93 IGZpbHRlcjogZG9uJ3QgcmVwbGljYXRlLCAxNjAwMCA8IDUwMDAgaXMgZmFsc2UKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9y b3dmaWx0ZXJfZ3JlYXRlcl8xMGsgKGEsIGIpIFZBTFVFUygxNjAwMCwgMTk1MCkiKTsKKwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3Vs dCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgYSwgYiBGUk9NIHRhYl9yb3dmaWx0ZXJfcGFydGl0aW9uZWQgT1JERVIgQlkgMSwgMiIp OworaXMoICRyZXN1bHQsIHFxKDF8MTAwCisyfDIwMAorNDAwMHw0MDAKKzQ1MDB8NDUwKSwg J2NoZWNrIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IGJlaGF2aW9yJyk7CisKKyRub2Rl X3N1YnNjcmliZXItPnN0b3AoJ2Zhc3QnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RvcCgnZmFz dCcpOwotLSAKMi4yMC4xCgo= --678463cfc81e4a6da50c45e196abfd52 Content-Disposition: attachment;filename="v12-0003-Print-publication-WHERE-condition-in-psql.patch" Content-Type: text/x-patch; name="v12-0003-Print-publication-WHERE-condition-in-psql.patch" Content-Transfer-Encoding: BASE64 RnJvbSBjMGMxYjY5YjQ5MjRkNjRjZTVkZjRiYzdjOGEyMjljYzczYThiNmM1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IE1vbiwgMTggSmFuIDIwMjEgMTI6MDk6MTkgLTAzMDAK U3ViamVjdDogW1BBVENIIHYxMiAzLzVdIFByaW50IHB1YmxpY2F0aW9uIFdIRVJFIGNvbmRp dGlvbiBpbiBwc3FsCgotLS0KIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jIHwgNyArKysrKyst CiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuYwppbmRleCBlZWFjMGVmYzRmLi45ODNiYTUxMmY3IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNjAz OCw3ICs2MDM4LDggQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVy bikKIAkJaWYgKCFwdWJhbGx0YWJsZXMpCiAJCXsKIAkJCXByaW50ZlBRRXhwQnVmZmVyKCZi dWYsCi0JCQkJCQkJICAiU0VMRUNUIG4ubnNwbmFtZSwgYy5yZWxuYW1lXG4iCisJCQkJCQkJ ICAiU0VMRUNUIG4ubnNwbmFtZSwgYy5yZWxuYW1lLFxuIgorCQkJCQkJCSAgIiAgcGdfZ2V0 X2V4cHIocHIucHJxdWFsLCBjLm9pZClcbiIKIAkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cu cGdfY2xhc3MgYyxcbiIKIAkJCQkJCQkgICIgICAgIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNl IG4sXG4iCiAJCQkJCQkJICAiICAgICBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBw clxuIgpAQCAtNjA2OCw2ICs2MDY5LDEwIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0 IGNoYXIgKnBhdHRlcm4pCiAJCQkJCQkJCSAgUFFnZXR2YWx1ZSh0YWJyZXMsIGosIDApLAog CQkJCQkJCQkgIFBRZ2V0dmFsdWUodGFicmVzLCBqLCAxKSk7CiAKKwkJCQlpZiAoIVBRZ2V0 aXNudWxsKHRhYnJlcywgaiwgMikpCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICIg IFdIRVJFICVzIiwKKwkJCQkJCQkJCSAgUFFnZXR2YWx1ZSh0YWJyZXMsIGosIDIpKTsKKwog CQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIGJ1Zi5kYXRhKTsKIAkJCX0KIAkJCVBR Y2xlYXIodGFicmVzKTsKLS0gCjIuMjAuMQoK --678463cfc81e4a6da50c45e196abfd52 Content-Disposition: attachment;filename="v12-0004-Publication-WHERE-condition-support-for-pg_dump.patch" Content-Type: text/x-patch; name="v12-0004-Publication-WHERE-condition-support-for-pg_dump.patch" Content-Transfer-Encoding: BASE64 RnJvbSA4YzExODQzZmE0NzEyNmQzNzEyMWZjMTZhNTJmZmI4MmQ5MTAxNDQzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IE1vbiwgMTggSmFuIDIwMjEgMTQ6Mjk6NTkgLTAzMDAK U3ViamVjdDogW1BBVENIIHYxMiA0LzVdIFB1YmxpY2F0aW9uIFdIRVJFIGNvbmRpdGlvbiBz dXBwb3J0IGZvciBwZ19kdW1wCgotLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgfCAx NCArKysrKysrKysrKystLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCB8ICAxICsKIDIg ZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYwppbmRleCBkYTZjYzA1NGIwLi43MmQ4N2YyMWM4IDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMK QEAgLTQxMzAsNiArNDEzMCw3IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZv dXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJaW50CQkJaV9vaWQ7 CiAJaW50CQkJaV9wcnB1YmlkOwogCWludAkJCWlfcHJyZWxpZDsKKwlpbnQJCQlpX3BycmVs cXVhbDsKIAlpbnQJCQlpLAogCQkJCWosCiAJCQkJbnR1cHM7CkBAIC00MTQxLDcgKzQxNDIs OCBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJs aW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCiAJLyogQ29sbGVjdCBhbGwgcHVibGljYXRpb24g bWVtYmVyc2hpcCBpbmZvLiAqLwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJ CQkJICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgcHJwdWJpZCwgcHJyZWxpZCAiCisJCQkJCQkg IlNFTEVDVCB0YWJsZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAiCisJCQkJCQkgInBn X2NhdGFsb2cucGdfZ2V0X2V4cHIocHJxdWFsLCBwcnJlbGlkKSBBUyBwcnJlbHF1YWwgIgog CQkJCQkJICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIik7CiAJcmVzID0g RXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwog CkBAIC00MTUxLDYgKzQxNTMsNyBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpm b3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCWlfb2lkID0gUFFm bnVtYmVyKHJlcywgIm9pZCIpOwogCWlfcHJwdWJpZCA9IFBRZm51bWJlcihyZXMsICJwcnB1 YmlkIik7CiAJaV9wcnJlbGlkID0gUFFmbnVtYmVyKHJlcywgInBycmVsaWQiKTsKKwlpX3By cmVscXVhbCA9IFBRZm51bWJlcihyZXMsICJwcnJlbHF1YWwiKTsKIAogCS8qIHRoaXMgYWxs b2NhdGlvbiBtYXkgYmUgbW9yZSB0aGFuIHdlIG5lZWQgKi8KIAlwdWJyaW5mbyA9IHBnX21h bGxvYyhudHVwcyAqIHNpemVvZihQdWJsaWNhdGlvblJlbEluZm8pKTsKQEAgLTQxOTEsNiAr NDE5NCwxMCBAQCBnZXRQdWJsaWNhdGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQlwdWJyaW5mb1tqXS5kb2JqLm5hbWUg PSB0YmluZm8tPmRvYmoubmFtZTsKIAkJcHVicmluZm9bal0ucHVibGljYXRpb24gPSBwdWJp bmZvOwogCQlwdWJyaW5mb1tqXS5wdWJ0YWJsZSA9IHRiaW5mbzsKKwkJaWYgKFBRZ2V0aXNu dWxsKHJlcywgaSwgaV9wcnJlbHF1YWwpKQorCQkJcHVicmluZm9bal0ucHVicmVscXVhbCA9 IE5VTEw7CisJCWVsc2UKKwkJCXB1YnJpbmZvW2pdLnB1YnJlbHF1YWwgPSBwZ19zdHJkdXAo UFFnZXR2YWx1ZShyZXMsIGksIGlfcHJyZWxxdWFsKSk7CiAKIAkJLyogRGVjaWRlIHdoZXRo ZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlUHVibGljYXRpb25U YWJsZSgmKHB1YnJpbmZvW2pdLmRvYmopLCBmb3V0KTsKQEAgLTQyMjMsOCArNDIzMCwxMSBA QCBkdW1wUHVibGljYXRpb25UYWJsZShBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlv blJlbEluZm8gKnB1YnJpbmZvKQogCiAJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBTFRF UiBQVUJMSUNBVElPTiAlcyBBREQgVEFCTEUgT05MWSIsCiAJCQkJCSAgZm10SWQocHViaW5m by0+ZG9iai5uYW1lKSk7Ci0JYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIgJXM7XG4iLAor CWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiICVzIiwKIAkJCQkJICBmbXRRdWFsaWZpZWRE dW1wYWJsZSh0YmluZm8pKTsKKwlpZiAocHVicmluZm8tPnB1YnJlbHF1YWwpCisJCWFwcGVu ZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiIFdIRVJFICVzIiwgcHVicmluZm8tPnB1YnJlbHF1YWwp OworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiO1xuIik7CiAKIAkvKgogCSAqIFRo ZXJlIGlzIG5vIHBvaW50IGluIGNyZWF0aW5nIGEgZHJvcCBxdWVyeSBhcyB0aGUgZHJvcCBp cyBkb25lIGJ5IHRhYmxlCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5o IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA1MzQwODQzMDgxLi4xNTVmYzJl YmI1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTYyNiw2ICs2MjYsNyBAQCB0eXBlZGVmIHN0cnVj dCBfUHVibGljYXRpb25SZWxJbmZvCiAJRHVtcGFibGVPYmplY3QgZG9iajsKIAlQdWJsaWNh dGlvbkluZm8gKnB1YmxpY2F0aW9uOwogCVRhYmxlSW5mbyAgKnB1YnRhYmxlOworCWNoYXIJ ICAgKnB1YnJlbHF1YWw7CiB9IFB1YmxpY2F0aW9uUmVsSW5mbzsKIAogLyoKLS0gCjIuMjAu MQoK --678463cfc81e4a6da50c45e196abfd52 Content-Disposition: attachment;filename="v12-0005-Measure-row-filter-overhead.patch" Content-Type: text/x-patch; name="v12-0005-Measure-row-filter-overhead.patch" Content-Transfer-Encoding: BASE64 RnJvbSAyYTFkNTYwMDM2Yjc3N2M3ODIzODA1MDUyYzA5NDcwNGY1MWI0MzI0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IFN1biwgMzEgSmFuIDIwMjEgMjA6NDg6NDMgLTAzMDAK U3ViamVjdDogW1BBVENIIHYxMiA1LzVdIE1lYXN1cmUgcm93IGZpbHRlciBvdmVyaGVhZAoK LS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIHwgOSAr KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCBjZTZkYThkZTE5 Li5lNjAzYTE1ZmZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMKQEAgLTU3MCw2ICs1NzAsOCBAQCBwZ291dHB1dF9yb3dfZmlsdGVyKFJl bGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xkdHVwbGUsIEhlYXBUdXBsZSBuZXd0dXBs ZSwgTAogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCUxpc3RDZWxsICAgKmxjOwogCWJvb2wJ CXJlc3VsdCA9IHRydWU7CisJaW5zdHJfdGltZQlzdGFydF90aW1lOworCWluc3RyX3RpbWUJ ZW5kX3RpbWU7CiAKIAkvKiBCYWlsIG91dCBpZiB0aGVyZSBpcyBubyByb3cgZmlsdGVyICov CiAJaWYgKGxpc3RfbGVuZ3RoKHJvd2ZpbHRlcikgPT0gMCkKQEAgLTU3OSw2ICs1ODEsOCBA QCBwZ291dHB1dF9yb3dfZmlsdGVyKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xk dHVwbGUsIEhlYXBUdXBsZSBuZXd0dXBsZSwgTAogCQkgZ2V0X25hbWVzcGFjZV9uYW1lKGdl dF9yZWxfbmFtZXNwYWNlKFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pKSksCiAJCSBnZXRf cmVsX25hbWUocmVsYXRpb24tPnJkX2lkKSk7CiAKKwlJTlNUUl9USU1FX1NFVF9DVVJSRU5U KHN0YXJ0X3RpbWUpOworCiAJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24p OwogCiAJZXN0YXRlID0gY3JlYXRlX2VzdGF0ZV9mb3JfcmVsYXRpb24ocmVsYXRpb24pOwpA QCAtNjI3LDYgKzYzMSwxMSBAQCBwZ291dHB1dF9yb3dfZmlsdGVyKFJlbGF0aW9uIHJlbGF0 aW9uLCBIZWFwVHVwbGUgb2xkdHVwbGUsIEhlYXBUdXBsZSBuZXd0dXBsZSwgTAogCVJlc2V0 RXhwckNvbnRleHQoZWN4dCk7CiAJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKIAorCUlO U1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5kX3RpbWUpOworCUlOU1RSX1RJTUVfU1VCVFJBQ1Qo ZW5kX3RpbWUsIHN0YXJ0X3RpbWUpOworCisJZWxvZyhERUJVRzIsICJyb3cgZmlsdGVyIHRp bWU6ICUwLjNmIHVzIiwgSU5TVFJfVElNRV9HRVRfRE9VQkxFKGVuZF90aW1lKSAqIDFlNik7 CisKIAlyZXR1cm4gcmVzdWx0OwogfQogCi0tIAoyLjIwLjEKCg== --678463cfc81e4a6da50c45e196abfd52--