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 1nrULr-00023h-Vg for pgsql-hackers@arkaria.postgresql.org; Thu, 19 May 2022 00:49:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nrULp-0004S9-Le for pgsql-hackers@arkaria.postgresql.org; Thu, 19 May 2022 00:49:13 +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 1nrULp-0004Rz-7W for pgsql-hackers@lists.postgresql.org; Thu, 19 May 2022 00:49:13 +0000 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nrULm-0003T6-Of for pgsql-hackers@postgresql.org; Thu, 19 May 2022 00:49:12 +0000 Received: by mail-wm1-x32a.google.com with SMTP id r6-20020a1c2b06000000b00396fee5ebc9so1915923wmr.1 for ; Wed, 18 May 2022 17:49:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Av9PunRPqGz8FlzZ74P3ZY+M/XjD7P6jj5c+ozwo9pA=; b=qP7NeXN4da3GzPW5i3UYN5+i1KpEWuREm56fjonCQBAPxFm6d003d7T/7sygl4sWBj v35s/AdO04an+a4O/0lweoPn9oOOP2NVcwCoO19WD8JAPi6XV/u77s2WTYCWmZYVEkAx T1Rbj7bDiUKenKder381HESnJb1AxUKrGYKqaZJWxCMe9n9yJGi0e8q1WqYxUBDctPd6 652pyrdnQStDj4/UWTp21rYiMuSl90rjnJzxM/X6r6X5IDXRgJr+ulhtqs8ZUB+M7EOe XD6pA4hpmOgY3B53dG/1O/ke7haW0hspKK9F4Ie0gVcOSuJSnf6kg5F5ujg3I80nYuJj MR+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Av9PunRPqGz8FlzZ74P3ZY+M/XjD7P6jj5c+ozwo9pA=; b=MdRgGMxB2Vk88bzgeVYLVCgfWixmGi7NUMWSrUunXFprZNDTKCSCVxLCQWckYGkQVl acM7htJcRnFRakQ4uZ8r+BLcbZE7CWdR+b+ETsvCfekfJ32m1f9VvjDXnYDqg9ByaLHD JITbgNm/NdOLkTXyn1is8+qEp0YsK1LPbQuVDp91dfK5EFmqkYs7m/hAbgD2YnYYwi99 rjodt1v1MG5/HqqhF2tp4Q6bbOzjzUB3zAD/UsUh0x/s0r1M3ZXVh8FneQFnx0o8pTjs McywFrWgjrVs7wxhqOPTJUO6jeTCjqTV1//Ejac3MaCSAc6nQFDoVxZI7cgIko2aB9Lk oDLw== X-Gm-Message-State: AOAM531qAm91IlQoeSC9BY2f8VEpkI2PzjrFZK1iyEX4uG4pufj3+Nhw l96jn7QWbT5Vjsife/QcElkio11QN/zaRFNZarA= X-Google-Smtp-Source: ABdhPJyiS8gZGPz1DYSfs14gUVVV0Vsn/DzfZRCr/onKmysUokaje+6bJ7GDxZqu0igmpkGYxDIrA+nYooG5B3bOxQI= X-Received: by 2002:a05:600c:204b:b0:394:4028:b0f9 with SMTP id p11-20020a05600c204b00b003944028b0f9mr1538262wmg.114.1652921348611; Wed, 18 May 2022 17:49:08 -0700 (PDT) MIME-Version: 1.0 References: <20220518231414.GN19626@telsasoft.com> In-Reply-To: <20220518231414.GN19626@telsasoft.com> From: Soumyadeep Chakraborty Date: Wed, 18 May 2022 17:48:45 -0700 Message-ID: Subject: Re: ALTER TABLE SET ACCESS METHOD on partitioned tables To: Justin Pryzby Cc: pgsql-hackers , Michael Paquier , Ashwin Agrawal , vanjared@vmware.com Content-Type: multipart/mixed; boundary="000000000000d379aa05df52bdb9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d379aa05df52bdb9 Content-Type: multipart/alternative; boundary="000000000000d379a905df52bdb7" --000000000000d379a905df52bdb7 Content-Type: text/plain; charset="UTF-8" On Wed, May 18, 2022 at 4:14 PM Justin Pryzby wrote: > I didn't look closely yet, but this comment is wrong: > > + * Since these have no storage the tablespace can be updated with a simple > + * metadata only operation to update the tablespace. Good catch. Fixed. > It'd be convenient if AMs worked the same way (and a bit odd that they don't). > Note that in v15, pg_dump/restore now allow --no-table-am, an exact parallel to > --no-tablespace. I agree that ATSET AM should behave in a similar fashion to ATSET tablespaces. However, the way that ATSET tablespace currently behaves is not consistent with the ONLY clause. On a given partition root: ALTER TABLE ONLY am_partitioned SET TABLESPACE ts; has the same effect as: ALTER TABLE am_partitioned SET TABLESPACE ts; We are missing out on the feature to set the AM/tablespace throughout the partition hierarchy, with one command. Regards, Soumyadeep (VMware) --000000000000d379a905df52bdb7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Wed, May 18, 2022 at 4:14 PM Justin Pr= yzby <pryzby@telsasoft.com&g= t; wrote:

> I didn't look closely yet, but this comm= ent is wrong:
>
> + * Since these have no storage the tablespa= ce can be updated with a simple =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
> + * metadata only operat= ion to update the tablespace. =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0

Good catch. Fixed.
> It'd be convenient if AMs worked the same way (and a bit odd that= they don't).
> Note that in v15, pg_dump/restore now allow --no-= table-am, an exact parallel to
> --no-tablespace.

I agree that= ATSET AM should behave in a similar fashion to ATSET tablespaces.
Howev= er, the way that ATSET tablespace currently behaves is not consistent with<= br>the ONLY clause.

On a giv= en partition root:
ALTER TABLE ONLY am_partitioned SET TABLESPACE ts;has the same effect as:
ALTER TABLE am_partitioned SET TABLESPACE ts;
We are missing out on the feature to set the AM/tablespace throughout= the
partition hierarchy, with one command.

Regards,
Soumyadeep (VMware)

=
--000000000000d379a905df52bdb7-- --000000000000d379aa05df52bdb9 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0002-Make-ATSETAM-recurse-by-default.patch" Content-Disposition: attachment; filename="v2-0002-Make-ATSETAM-recurse-by-default.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l3cail110 RnJvbSAzYTRhNzhkNDZmYzc0YmIzZTliN2FjOWFlZmM2ODlkMjUwZTFlY2Y0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTb3VteWFkZWVwIENoYWtyYWJvcnR5IDxzb3VteWFkZWVwMjAw N0BnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMTcgTWF5IDIwMjIgMTU6MjI6NDggLTA3MDAKU3ViamVj dDogW1BBVENIIHYyIDIvMl0gTWFrZSBBVFNFVEFNIHJlY3Vyc2UgYnkgZGVmYXVsdAoKQVRTRVRB TSBub3cgcmVjdXJzZXMgdG8gcGFydGl0aW9uIGNoaWxkcmVuIGJ5IGRlZmF1bHQuIFRvIHByZXZl bnQKcmVjdXJzaW9uLCBhbmQgaGF2ZSB0aGUgbmV3IGFtIGFwcGx5IHRvIGZ1dHVyZSBjaGlsZHJl biBvbmx5LCB1c2VycyBtdXN0CnNwZWNpZnkgdGhlIE9OTFkgY2xhdXNlLgotLS0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICB8ICAyICsrCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NyZWF0ZV9hbS5vdXQgfCAxMyArKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9jcmVhdGVfYW0uc3FsICAgICAgfCAgNSArKysrLQogMyBmaWxlcyBjaGFuZ2VkLCAx OCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK aW5kZXggNWZlYmQ4MzRkNWIuLmM1YmJiNzFjNjZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwpAQCAtNDcxMSw2ICs0NzExLDggQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9u IHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAogCQkJCQkJIGVycm1zZygiY2Fubm90IGhhdmUgbXVsdGlwbGUgU0VU IEFDQ0VTUyBNRVRIT0Qgc3ViY29tbWFuZHMiKSkpOwogCisJCQlpZiAocmVsLT5yZF9yZWwtPnJl bGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJCQlBVFNpbXBsZVJlY3Vyc2lv bih3cXVldWUsIHJlbCwgY21kLCByZWN1cnNlLCBsb2NrbW9kZSwgY29udGV4dCk7CiAJCQlBVFBy ZXBTZXRBY2Nlc3NNZXRob2QodGFiLCByZWwsIGNtZC0+bmFtZSk7CiAJCQlwYXNzID0gQVRfUEFT U19NSVNDOwkvKiBkb2VzIG5vdCBtYXR0ZXI7IG5vIHdvcmsgaW4gUGhhc2UgMiAqLwogCQkJYnJl YWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9hbS5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9hbS5vdXQKaW5kZXggYTQ4MTk5ZGY5 YTIuLmU5OWRlMWFjOTEyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Ny ZWF0ZV9hbS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfYW0ub3V0 CkBAIC0yODQsNyArMjg0LDcgQEAgQ1JFQVRFIFRBQkxFIGFtX3BhcnRpdGlvbmVkKHggSU5ULCB5 IElOVCkKIENSRUFURSBUQUJMRSBhbV9wYXJ0aXRpb25lZF8xIFBBUlRJVElPTiBPRiBhbV9wYXJ0 aXRpb25lZCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMyxSRU1BSU5ERVIgMCk7CiBDUkVBVEUg VEFCTEUgYW1fcGFydGl0aW9uZWRfMiBQQVJUSVRJT04gT0YgYW1fcGFydGl0aW9uZWQgRk9SIFZB TFVFUyBXSVRIIChNT0RVTFVTIDMsUkVNQUlOREVSIDEpOwogQUxURVIgVEFCTEUgYW1fcGFydGl0 aW9uZWRfMSBTRVQgQUNDRVNTIE1FVEhPRCBoZWFwMjsKLUFMVEVSIFRBQkxFIGFtX3BhcnRpdGlv bmVkIFNFVCBBQ0NFU1MgTUVUSE9EIGhlYXAyOworQUxURVIgVEFCTEUgT05MWSBhbV9wYXJ0aXRp b25lZCBTRVQgQUNDRVNTIE1FVEhPRCBoZWFwMjsKIENSRUFURSBUQUJMRSBhbV9wYXJ0aXRpb25l ZF8zIFBBUlRJVElPTiBPRiBhbV9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMg MyxSRU1BSU5ERVIgMik7CiBTRUxFQ1QgcmVsbmFtZSwgYW1uYW1lIEZST00gcGdfY2xhc3MgYywg cGdfYW0gYW0KICAgV0hFUkUgYy5yZWxhbSA9IGFtLm9pZCBBTkQgYy5yZWxuYW1lIExJS0UgJ2Ft X3BhcnRpdGlvbmVkJScgT1JERVIgQlkgMTsKQEAgLTI5Niw2ICsyOTYsMTcgQEAgU0VMRUNUIHJl bG5hbWUsIGFtbmFtZSBGUk9NIHBnX2NsYXNzIGMsIHBnX2FtIGFtCiAgYW1fcGFydGl0aW9uZWRf MyB8IGhlYXAyCiAoNCByb3dzKQogCitBTFRFUiBUQUJMRSBhbV9wYXJ0aXRpb25lZCBTRVQgQUND RVNTIE1FVEhPRCBoZWFwOworU0VMRUNUIHJlbG5hbWUsIGFtbmFtZSBGUk9NIHBnX2NsYXNzIGMs IHBnX2FtIGFtCitXSEVSRSBjLnJlbGFtID0gYW0ub2lkIEFORCBjLnJlbG5hbWUgTElLRSAnYW1f cGFydGl0aW9uZWQlJyBPUkRFUiBCWSAxOworICAgICByZWxuYW1lICAgICAgfCBhbW5hbWUgCist LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBhbV9wYXJ0aXRpb25lZCAgIHwgaGVhcAorIGFt X3BhcnRpdGlvbmVkXzEgfCBoZWFwCisgYW1fcGFydGl0aW9uZWRfMiB8IGhlYXAKKyBhbV9wYXJ0 aXRpb25lZF8zIHwgaGVhcAorKDQgcm93cykKKwogRFJPUCBUQUJMRSBhbV9wYXJ0aXRpb25lZDsK IC0tIFNlY29uZCwgY3JlYXRlIG9iamVjdHMgaW4gdGhlIG5ldyBBTSBieSBjaGFuZ2luZyB0aGUg ZGVmYXVsdCBBTQogQkVHSU47CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVh dGVfYW0uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2FtLnNxbAppbmRleCA4ZjNk YjAzYmJhMi4uZjRlMjI2ODQ3ODIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Ny ZWF0ZV9hbS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2FtLnNxbApAQCAt MTg0LDEwICsxODQsMTMgQEAgQ1JFQVRFIFRBQkxFIGFtX3BhcnRpdGlvbmVkKHggSU5ULCB5IElO VCkKIENSRUFURSBUQUJMRSBhbV9wYXJ0aXRpb25lZF8xIFBBUlRJVElPTiBPRiBhbV9wYXJ0aXRp b25lZCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMyxSRU1BSU5ERVIgMCk7CiBDUkVBVEUgVEFC TEUgYW1fcGFydGl0aW9uZWRfMiBQQVJUSVRJT04gT0YgYW1fcGFydGl0aW9uZWQgRk9SIFZBTFVF UyBXSVRIIChNT0RVTFVTIDMsUkVNQUlOREVSIDEpOwogQUxURVIgVEFCTEUgYW1fcGFydGl0aW9u ZWRfMSBTRVQgQUNDRVNTIE1FVEhPRCBoZWFwMjsKLUFMVEVSIFRBQkxFIGFtX3BhcnRpdGlvbmVk IFNFVCBBQ0NFU1MgTUVUSE9EIGhlYXAyOworQUxURVIgVEFCTEUgT05MWSBhbV9wYXJ0aXRpb25l ZCBTRVQgQUNDRVNTIE1FVEhPRCBoZWFwMjsKIENSRUFURSBUQUJMRSBhbV9wYXJ0aXRpb25lZF8z IFBBUlRJVElPTiBPRiBhbV9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMyxS RU1BSU5ERVIgMik7CiBTRUxFQ1QgcmVsbmFtZSwgYW1uYW1lIEZST00gcGdfY2xhc3MgYywgcGdf YW0gYW0KICAgV0hFUkUgYy5yZWxhbSA9IGFtLm9pZCBBTkQgYy5yZWxuYW1lIExJS0UgJ2FtX3Bh cnRpdGlvbmVkJScgT1JERVIgQlkgMTsKK0FMVEVSIFRBQkxFIGFtX3BhcnRpdGlvbmVkIFNFVCBB Q0NFU1MgTUVUSE9EIGhlYXA7CitTRUxFQ1QgcmVsbmFtZSwgYW1uYW1lIEZST00gcGdfY2xhc3Mg YywgcGdfYW0gYW0KK1dIRVJFIGMucmVsYW0gPSBhbS5vaWQgQU5EIGMucmVsbmFtZSBMSUtFICdh bV9wYXJ0aXRpb25lZCUnIE9SREVSIEJZIDE7CiBEUk9QIFRBQkxFIGFtX3BhcnRpdGlvbmVkOwog CiAtLSBTZWNvbmQsIGNyZWF0ZSBvYmplY3RzIGluIHRoZSBuZXcgQU0gYnkgY2hhbmdpbmcgdGhl IGRlZmF1bHQgQU0KLS0gCjIuMjUuMQoK --000000000000d379aa05df52bdb9 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-Allow-ATSETAM-on-partition-roots.patch" Content-Disposition: attachment; filename="v2-0001-Allow-ATSETAM-on-partition-roots.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l3cail191 RnJvbSA2ZWRjZTE0YjViZWNiMzBjYTdjMTIyMjRhY2FhYmVhNjJhNGQ5OTlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTb3VteWFkZWVwIENoYWtyYWJvcnR5IDxzb3VteWFkZWVwMjAw N0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTYgTWF5IDIwMjIgMTQ6NDY6MjAgLTA3MDAKU3ViamVj dDogW1BBVENIIHYyIDEvMl0gQWxsb3cgQVRTRVRBTSBvbiBwYXJ0aXRpb24gcm9vdHMKClNldHRp bmcgdGhlIGFjY2VzcyBtZXRob2Qgb24gcGFydGl0aW9uIHJvb3RzIHdhcyBkaXNhbGxvd2VkLiBU aGlzIGNvbW1pdApyZWxheGVzIHRoYXQgcmVzdHJpY3Rpb24uCgpTdW1tYXJ5IG9mIGNoYW5nZXMg b3ZlciBvcmlnaW5hbCBwYXRjaDoKCiogUmViYXNlZAoqIE1pbm9yIGNvbW1lbnQgdXBkYXRlcwoq IEFkZCBtb3JlIHRlc3QgY292ZXJhZ2UKCkF1dGhvcnM6IEp1c3RpbiBQcnl6YnkgPHByeXpieWpA dGVsc2Fzb2Z0LmNvbT4sIFNvdW15YWRlZXAgQ2hha3JhYm9ydHkKPHNvdW15YWRlZXAyMDA3QGdt YWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyAgICAgICAgICAgICAgfCAg IDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICB8IDEwMyArKysr KysrKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMg ICAgICB8ICAgNCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9hbS5vdXQgfCAg NTAgKysrKysrKy0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfYW0uc3FsICAgICAg fCAgMjMgKysrLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDEyOSBpbnNlcnRpb25zKCspLCA1NCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDE4MDMxOTRkYjk0Li40NTYxZjNiOGM5OCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9oZWFwLmMKQEAgLTE0NDksNyArMTQ0OSw4IEBAIGhlYXBfY3JlYXRlX3dpdGhfY2F0YWxv Zyhjb25zdCBjaGFyICpyZWxuYW1lLAogCQkgKiBObyBuZWVkIHRvIGFkZCBhbiBleHBsaWNpdCBk ZXBlbmRlbmN5IGZvciB0aGUgdG9hc3QgdGFibGUsIGFzIHRoZQogCQkgKiBtYWluIHRhYmxlIGRl cGVuZHMgb24gaXQuCiAJCSAqLwotCQlpZiAoUkVMS0lORF9IQVNfVEFCTEVfQU0ocmVsa2luZCkg JiYgcmVsa2luZCAhPSBSRUxLSU5EX1RPQVNUVkFMVUUpCisJCWlmICgoUkVMS0lORF9IQVNfVEFC TEVfQU0ocmVsa2luZCkgJiYgcmVsa2luZCAhPSBSRUxLSU5EX1RPQVNUVkFMVUUpIHx8CisJCQly ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCiAJCXsKIAkJCU9iamVjdEFkZHJl c3NTZXQocmVmZXJlbmNlZCwgQWNjZXNzTWV0aG9kUmVsYXRpb25JZCwgYWNjZXNzbXRkKTsKIAkJ CWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmcmVmZXJlbmNlZCwgYWRkcnMpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwppbmRleCAyZGUwZWJhY2VjMy4uNWZlYmQ4MzRkNWIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jCkBAIC01NzAsNiArNTcwLDcgQEAgc3RhdGljIE9iamVjdEFkZHJlc3Mg QVRFeGVjQ2x1c3Rlck9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqaW5kZXhOYW1lLAogCQkJ CQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyB2b2lkIEFURXhlY0Ryb3BDbHVzdGVy KFJlbGF0aW9uIHJlbCwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIHZvaWQgQVRQcmVwU2V0 QWNjZXNzTWV0aG9kKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLCBjb25zdCBj aGFyICphbW5hbWUpOworc3RhdGljIHZvaWQgQVRFeGVjU2V0QWNjZXNzTWV0aG9kTm9TdG9yYWdl KFJlbGF0aW9uIHJlbCwgT2lkIG5ld0FjY2Vzc01ldGhvZCk7CiBzdGF0aWMgYm9vbCBBVFByZXBD aGFuZ2VQZXJzaXN0ZW5jZShSZWxhdGlvbiByZWwsIGJvb2wgdG9Mb2dnZWQpOwogc3RhdGljIHZv aWQgQVRQcmVwU2V0VGFibGVTcGFjZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJl bCwKIAkJCQkJCQkJY29uc3QgY2hhciAqdGFibGVzcGFjZW5hbWUsIExPQ0tNT0RFIGxvY2ttb2Rl KTsKQEAgLTY3Niw3ICs2NzcsNiBAQCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBj aGFyIHJlbGtpbmQsIE9pZCBvd25lcklkLAogCU9pZAkJCW9mVHlwZUlkOwogCU9iamVjdEFkZHJl c3MgYWRkcmVzczsKIAlMT0NLTU9ERQlwYXJlbnRMb2NrbW9kZTsKLQljb25zdCBjaGFyICphY2Nl c3NNZXRob2QgPSBOVUxMOwogCU9pZAkJCWFjY2Vzc01ldGhvZElkID0gSW52YWxpZE9pZDsKIAog CS8qCkBAIC05MzgsMjAgKzkzOCwzMiBAQCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10 LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25lcklkLAogCSAqIGEgdHlwZSBvZiByZWxhdGlvbiB0aGF0 IG5lZWRzIG9uZSwgdXNlIHRoZSBkZWZhdWx0LgogCSAqLwogCWlmIChzdG10LT5hY2Nlc3NNZXRo b2QgIT0gTlVMTCkKKwkJYWNjZXNzTWV0aG9kSWQgPSBnZXRfdGFibGVfYW1fb2lkKHN0bXQtPmFj Y2Vzc01ldGhvZCwgZmFsc2UpOworCWVsc2UgaWYgKHN0bXQtPnBhcnRib3VuZCAmJiByZWxraW5k ID09IFJFTEtJTkRfUkVMQVRJT04pCiAJewotCQlhY2Nlc3NNZXRob2QgPSBzdG10LT5hY2Nlc3NN ZXRob2Q7CisJCUhlYXBUdXBsZSAgICAgICB0dXA7CisJCU9pZAkJCQlyZWxpZDsKIAotCQlpZiAo cGFydGl0aW9uZWQpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCSBlcnJtc2coInNwZWNpZnlpbmcgYSB0YWJsZSBh Y2Nlc3MgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgb24gYSBwYXJ0aXRpb25lZCB0YWJsZSIpKSk7 Ci0JfQotCWVsc2UgaWYgKFJFTEtJTkRfSEFTX1RBQkxFX0FNKHJlbGtpbmQpKQotCQlhY2Nlc3NN ZXRob2QgPSBkZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2Q7CisJCS8qCisJCSAqIEZvciBwYXJ0 aXRpb25lZCB0YWJsZXMsIHdoZW4gbm8gYWNjZXNzIG1ldGhvZCBpcyBzcGVjaWZpZWQsIHdlCisJ CSAqIGRlZmF1bHQgdG8gdGhlIHBhcmVudCB0YWJsZSdzIEFNLgorCQkgKi8KKwkJQXNzZXJ0KGxp c3RfbGVuZ3RoKGluaGVyaXRPaWRzKSA9PSAxKTsKKwkJLyogWFhYOiBzaG91bGQgaW1wbGVtZW50 IGdldF9yZWxfcmVsYW0/ICovCisJCXJlbGlkID0gbGluaXRpYWxfb2lkKGluaGVyaXRPaWRzKTsK KwkJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShyZWxpZCkp OworCQlhY2Nlc3NNZXRob2RJZCA9ICgoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cCkpLT5y ZWxhbTsKIAotCS8qIGxvb2sgdXAgdGhlIGFjY2VzcyBtZXRob2QsIHZlcmlmeSBpdCBpcyBmb3Ig YSB0YWJsZSAqLwotCWlmIChhY2Nlc3NNZXRob2QgIT0gTlVMTCkKLQkJYWNjZXNzTWV0aG9kSWQg PSBnZXRfdGFibGVfYW1fb2lkKGFjY2Vzc01ldGhvZCwgZmFsc2UpOworCQlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQodHVwKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBy ZWxhdGlvbiAldSIsIHJlbGlkKTsKKworCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKworCQlpZiAo IU9pZElzVmFsaWQoYWNjZXNzTWV0aG9kSWQpKQorCQkJYWNjZXNzTWV0aG9kSWQgPSBnZXRfdGFi bGVfYW1fb2lkKGRlZmF1bHRfdGFibGVfYWNjZXNzX21ldGhvZCwgZmFsc2UpOworCX0KKwllbHNl IGlmIChSRUxLSU5EX0hBU19UQUJMRV9BTShyZWxraW5kKSB8fCByZWxraW5kID09IFJFTEtJTkRf UEFSVElUSU9ORURfVEFCTEUpCisJCWFjY2Vzc01ldGhvZElkID0gZ2V0X3RhYmxlX2FtX29pZChk ZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2QsIGZhbHNlKTsKIAogCS8qCiAJICogQ3JlYXRlIHRo ZSByZWxhdGlvbi4gIEluaGVyaXRlZCBkZWZhdWx0cyBhbmQgY29uc3RyYWludHMgYXJlIHBhc3Nl ZCBpbgpAQCAtNDY5MywxMyArNDcwNSw2IEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxh dGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCWJyZWFrOwogCQljYXNlIEFUX1NldEFj Y2Vzc01ldGhvZDoJLyogU0VUIEFDQ0VTUyBNRVRIT0QgKi8KIAkJCUFUU2ltcGxlUGVybWlzc2lv bnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJMRSB8IEFUVF9NQVRWSUVXKTsKLQotCQkJLyog cGFydGl0aW9uZWQgdGFibGVzIGRvbid0IGhhdmUgYW4gYWNjZXNzIG1ldGhvZCAqLwotCQkJaWYg KHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCi0JCQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAotCQkJCQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSBhY2Nlc3MgbWV0aG9kIG9mIGEgcGFydGl0 aW9uZWQgdGFibGUiKSkpOwotCiAJCQkvKiBjaGVjayBpZiBhbm90aGVyIGFjY2VzcyBtZXRob2Qg Y2hhbmdlIHdhcyBhbHJlYWR5IHJlcXVlc3RlZCAqLwogCQkJaWYgKE9pZElzVmFsaWQodGFiLT5u ZXdBY2Nlc3NNZXRob2QpKQogCQkJCWVyZXBvcnQoRVJST1IsCkBAIC01MDg1LDcgKzUwOTAsMTMg QEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJCS8q IG5vdGhpbmcgdG8gZG8gaGVyZSwgb2lkIGNvbHVtbnMgZG9uJ3QgZXhpc3QgYW55bW9yZSAqLwog CQkJYnJlYWs7CiAJCWNhc2UgQVRfU2V0QWNjZXNzTWV0aG9kOgkvKiBTRVQgQUNDRVNTIE1FVEhP RCAqLwotCQkJLyogaGFuZGxlZCBzcGVjaWFsbHkgaW4gUGhhc2UgMyAqLworCQkJLyoKKwkJCSAq IE9ubHkgZG8gdGhpcyBmb3IgcGFydGl0aW9uZWQgdGFibGVzLCBmb3Igd2hpY2ggdGhpcyBpcyBq dXN0IGEKKwkJCSAqIGNhdGFsb2cgY2hhbmdlLiBPdGhlciByZWxhdGlvbiB0eXBlcyB3aGljaCBo YXZlIHN0b3JhZ2UgYXJlCisJCQkgKiBoYW5kbGVkIGJ5IFBoYXNlIDMuCisJCQkgKi8KKwkJCWlm IChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQkJ CUFURXhlY1NldEFjY2Vzc01ldGhvZE5vU3RvcmFnZShyZWwsIHRhYi0+bmV3QWNjZXNzTWV0aG9k KTsKIAkJCWJyZWFrOwogCQljYXNlIEFUX1NldFRhYmxlU3BhY2U6CS8qIFNFVCBUQUJMRVNQQUNF ICovCiAKQEAgLTE0NDIxLDYgKzE0NDMyLDU4IEBAIEFURXhlY1NldFRhYmxlU3BhY2UoT2lkIHRh YmxlT2lkLCBPaWQgbmV3VGFibGVTcGFjZSwgTE9DS01PREUgbG9ja21vZGUpCiAJbGlzdF9mcmVl KHJlbHRvYXN0aWR4aWRzKTsKIH0KIAorLyoKKyAqIFNwZWNpYWwgaGFuZGxpbmcgb2YgQUxURVIg VEFCTEUgU0VUIEFDQ0VTUyBNRVRIT0QgZm9yIHJlbGF0aW9ucyB3aXRoIG5vCisgKiBzdG9yYWdl IHRoYXQgaGF2ZSBhbiBpbnRlcmVzdCBpbiBwcmVzZXJ2aW5nIEFNLgorICoKKyAqIFNpbmNlIHRo ZXNlIHJlbGF0aW9ucyBoYXZlIG5vIHN0b3JhZ2UgdGhlIGFjY2VzcyBtZXRob2QgY2FuIGJlIHVw ZGF0ZWQgd2l0aCBhCisgKiBzaW1wbGUgbWV0YWRhdGEgb25seSBvcGVyYXRpb24uCisgKi8KK3N0 YXRpYyB2b2lkCitBVEV4ZWNTZXRBY2Nlc3NNZXRob2ROb1N0b3JhZ2UoUmVsYXRpb24gcmVsLCBP aWQgbmV3QWNjZXNzTWV0aG9kKQoreworCVJlbGF0aW9uCXBnX2NsYXNzOworCU9pZAkJCXJlbGlk OworCU9pZAkJCW9sZHJlbGFtOworCUhlYXBUdXBsZQl0dXBsZTsKKworCS8qCisJICogU2hvdWxk bid0IGJlIGNhbGxlZCBvbiByZWxhdGlvbnMgaGF2aW5nIHN0b3JhZ2U7IHRoZXNlIGFyZSBwcm9j ZXNzZWQgaW4KKwkgKiBwaGFzZSAzLgorCSAqLworCUFzc2VydCghUkVMS0lORF9IQVNfU1RPUkFH RShyZWwtPnJkX3JlbC0+cmVsa2luZCkpOworCisJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJl bCk7CisKKwkvKiBQdWxsIHRoZSByZWNvcmQgZm9yIHRoaXMgcmVsYXRpb24gYW5kIHVwZGF0ZSBp dCAqLworCXBnX2NsYXNzID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1 c2l2ZUxvY2spOworCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFJFTE9JRCwgT2JqZWN0 SWRHZXREYXR1bShyZWxpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJ ZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uICV1IiwgcmVsaWQp OworCisJb2xkcmVsYW0gPSAoKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSkpLT5yZWxh bTsKKwkoKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSkpLT5yZWxhbSA9IG5ld0FjY2Vz c01ldGhvZDsKKwlDYXRhbG9nVHVwbGVVcGRhdGUocGdfY2xhc3MsICZ0dXBsZS0+dF9zZWxmLCB0 dXBsZSk7CisKKwkvKgorCSAqIFJlY29yZCBkZXBlbmRlbmN5IG9uIEFNLiAgVGhpcyBpcyBvbmx5 IHJlcXVpcmVkIGZvciByZWxhdGlvbnMKKwkgKiB0aGF0IGhhdmUgbm8gcGh5c2ljYWwgc3RvcmFn ZS4KKwkgKi8KKwljaGFuZ2VEZXBlbmRlbmN5Rm9yKFJlbGF0aW9uUmVsYXRpb25JZCwgUmVsYXRp b25HZXRSZWxpZChyZWwpLAorCQkJQWNjZXNzTWV0aG9kUmVsYXRpb25JZCwgb2xkcmVsYW0sCisJ CQluZXdBY2Nlc3NNZXRob2QpOworCisJSW52b2tlT2JqZWN0UG9zdEFsdGVySG9vayhSZWxhdGlv blJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgMCk7CisKKwloZWFwX2ZyZWV0dXBs ZSh0dXBsZSk7CisJdGFibGVfY2xvc2UocGdfY2xhc3MsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJ LyogTWFrZSBzdXJlIHRoZSByZWxhbSBjaGFuZ2UgaXMgdmlzaWJsZSAqLworCUNvbW1hbmRDb3Vu dGVySW5jcmVtZW50KCk7Cit9CisKIC8qCiAgKiBTcGVjaWFsIGhhbmRsaW5nIG9mIEFMVEVSIFRB QkxFIFNFVCBUQUJMRVNQQUNFIGZvciByZWxhdGlvbnMgd2l0aCBubwogICogc3RvcmFnZSB0aGF0 IGhhdmUgYW4gaW50ZXJlc3QgaW4gcHJlc2VydmluZyB0YWJsZXNwYWNlLgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3JlbGNhY2hlLmMKaW5kZXggNjBlNzJmOWU4YmYuLjdlOTU1YzQ0MTczIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTEyMDYsNiArMTIwNiwxMCBAQCByZXRyeToKIAllbHNl IGlmIChSRUxLSU5EX0hBU19UQUJMRV9BTShyZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kKSB8fAog CQkJIHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkKIAkJUmVs YXRpb25Jbml0VGFibGVBY2Nlc3NNZXRob2QocmVsYXRpb24pOworCWVsc2UgaWYgKHJlbGF0aW9u LT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwl7CisJCS8q IERvIG5vdGhpbmc6IHRoZSBhbSBpcyBhIGNhdGFsb2cgc2V0dGluZyBmb3IgcGFydGl0aW9ucyB0 byBpbmhlcml0ICovCisJfQogCWVsc2UKIAkJQXNzZXJ0KHJlbGF0aW9uLT5yZF9yZWwtPnJlbGFt ID09IEludmFsaWRPaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NyZWF0ZV9hbS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9hbS5vdXQK aW5kZXggZTlhOTI4M2Q3YWIuLmE0ODE5OWRmOWEyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NyZWF0ZV9hbS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jcmVhdGVfYW0ub3V0CkBAIC0xNzYsMTkgKzE3NiwxMiBAQCBTRUxFQ1QgZjEgRlJPTSB0YWJs ZWFtX3RibG12X2hlYXAyIE9SREVSIEJZIGYxOwogICAxCiAoMSByb3cpCiAKLS0tIENSRUFURSBU QUJMRSAuLiAgUEFSVElUSU9OIEJZIGRvZXNuJ3Qgbm90IHN1cHBvcnQgVVNJTkcKKy0tIENSRUFU RSBUQUJMRSAuLiAgUEFSVElUSU9OIEJZIHN1cHBvcnRzIFVTSU5HCistLSBuZXcgcGFydGl0aW9u cyB3aWxsIGluaGVyaXQgZnJvbSB0aGUgcGFydGl0aW9uIHJvb3QKIENSRUFURSBUQUJMRSB0YWJs ZWFtX3BhcnRlZF9oZWFwMiAoYSB0ZXh0LCBiIGludCkgUEFSVElUSU9OIEJZIGxpc3QgKGEpIFVT SU5HIGhlYXAyOwotRVJST1I6ICBzcGVjaWZ5aW5nIGEgdGFibGUgYWNjZXNzIG1ldGhvZCBpcyBu b3Qgc3VwcG9ydGVkIG9uIGEgcGFydGl0aW9uZWQgdGFibGUKLUNSRUFURSBUQUJMRSB0YWJsZWFt X3BhcnRlZF9oZWFwMiAoYSB0ZXh0LCBiIGludCkgUEFSVElUSU9OIEJZIGxpc3QgKGEpOwotLS0g bmV3IHBhcnRpdGlvbnMgd2lsbCBpbmhlcml0IGZyb20gdGhlIGN1cnJlbnQgZGVmYXVsdCwgcmF0 aGVyIHRoZSBwYXJ0aXRpb24gcm9vdAotU0VUIGRlZmF1bHRfdGFibGVfYWNjZXNzX21ldGhvZCA9 ICdoZWFwJzsKIENSRUFURSBUQUJMRSB0YWJsZWFtX3BhcnRlZF9hX2hlYXAyIFBBUlRJVElPTiBP RiB0YWJsZWFtX3BhcnRlZF9oZWFwMiBGT1IgVkFMVUVTIElOICgnYScpOwotU0VUIGRlZmF1bHRf dGFibGVfYWNjZXNzX21ldGhvZCA9ICdoZWFwMic7Ci1DUkVBVEUgVEFCTEUgdGFibGVhbV9wYXJ0 ZWRfYl9oZWFwMiBQQVJUSVRJT04gT0YgdGFibGVhbV9wYXJ0ZWRfaGVhcDIgRk9SIFZBTFVFUyBJ TiAoJ2InKTsKLVJFU0VUIGRlZmF1bHRfdGFibGVfYWNjZXNzX21ldGhvZDsKIC0tIGJ1dCB0aGUg bWV0aG9kIGNhbiBiZSBleHBsaWNpdGx5IHNwZWNpZmllZAotQ1JFQVRFIFRBQkxFIHRhYmxlYW1f cGFydGVkX2NfaGVhcDIgUEFSVElUSU9OIE9GIHRhYmxlYW1fcGFydGVkX2hlYXAyIEZPUiBWQUxV RVMgSU4gKCdjJykgVVNJTkcgaGVhcDsKLUNSRUFURSBUQUJMRSB0YWJsZWFtX3BhcnRlZF9kX2hl YXAyIFBBUlRJVElPTiBPRiB0YWJsZWFtX3BhcnRlZF9oZWFwMiBGT1IgVkFMVUVTIElOICgnZCcp IFVTSU5HIGhlYXAyOworQ1JFQVRFIFRBQkxFIHRhYmxlYW1fcGFydGVkX2JfaGVhcDIgUEFSVElU SU9OIE9GIHRhYmxlYW1fcGFydGVkX2hlYXAyIEZPUiBWQUxVRVMgSU4gKCdiJykgVVNJTkcgaGVh cDsKIC0tIExpc3QgYWxsIG9iamVjdHMgaW4gQU0KIFNFTEVDVAogICAgIHBjLnJlbGtpbmQsCkBA IC0yMDUsMTQgKzE5OCwxMyBAQCBXSEVSRSBwYS5vaWQgPSBwYy5yZWxhbQogT1JERVIgQlkgMywg MSwgMjsKICByZWxraW5kIHwgYW1uYW1lIHwgICAgICAgICAgICAgcmVsbmFtZSAgICAgICAgICAg ICAgCiAtLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotIHIgICAgICAgfCBoZWFwMiAgfCB0YWJsZWFtX3BhcnRlZF9iX2hlYXAyCi0gciAgICAgICB8 IGhlYXAyICB8IHRhYmxlYW1fcGFydGVkX2RfaGVhcDIKKyByICAgICAgIHwgaGVhcDIgIHwgdGFi bGVhbV9wYXJ0ZWRfYV9oZWFwMgorIHAgICAgICAgfCBoZWFwMiAgfCB0YWJsZWFtX3BhcnRlZF9o ZWFwMgogIHIgICAgICAgfCBoZWFwMiAgfCB0YWJsZWFtX3RibF9oZWFwMgogIHIgICAgICAgfCBo ZWFwMiAgfCB0YWJsZWFtX3RibGFzX2hlYXAyCiAgbSAgICAgICB8IGhlYXAyICB8IHRhYmxlYW1f dGJsbXZfaGVhcDIKLSB0ICAgICAgIHwgaGVhcDIgIHwgdG9hc3QgZm9yIHRhYmxlYW1fcGFydGVk X2JfaGVhcDIKLSB0ICAgICAgIHwgaGVhcDIgIHwgdG9hc3QgZm9yIHRhYmxlYW1fcGFydGVkX2Rf aGVhcDIKLSg3IHJvd3MpCisgdCAgICAgICB8IGhlYXAyICB8IHRvYXN0IGZvciB0YWJsZWFtX3Bh cnRlZF9hX2hlYXAyCisoNiByb3dzKQogCiAtLSBTaG93IGRlcGVuZGVuY2llcyBvbnRvIEFNIC0g dGhlcmUgc2hvdWxkbid0IGJlIGFueSBmb3IgdG9hc3QKIFNFTEVDVCBwZ19kZXNjcmliZV9vYmpl Y3QoY2xhc3NpZCxvYmppZCxvYmpzdWJpZCkgQVMgb2JqCkBAIC0yMjYsOCArMjE4LDggQEAgT1JE RVIgQlkgY2xhc3NpZCwgb2JqaWQsIG9ianN1YmlkOwogIHRhYmxlIHRhYmxlYW1fdGJsX2hlYXAy CiAgdGFibGUgdGFibGVhbV90Ymxhc19oZWFwMgogIG1hdGVyaWFsaXplZCB2aWV3IHRhYmxlYW1f dGJsbXZfaGVhcDIKLSB0YWJsZSB0YWJsZWFtX3BhcnRlZF9iX2hlYXAyCi0gdGFibGUgdGFibGVh bV9wYXJ0ZWRfZF9oZWFwMgorIHRhYmxlIHRhYmxlYW1fcGFydGVkX2hlYXAyCisgdGFibGUgdGFi bGVhbV9wYXJ0ZWRfYV9oZWFwMgogKDUgcm93cykKIAogLS0gQUxURVIgVEFCTEUgU0VUIEFDQ0VT UyBNRVRIT0QKQEAgLTI4NCwxMSArMjc2LDI2IEBAIEFMVEVSIE1BVEVSSUFMSVpFRCBWSUVXIGhl YXBtdiBTRVQgQUNDRVNTIE1FVEhPRCBoZWFwLCBTRVQgQUNDRVNTIE1FVEhPRCBoZWFwMjsKIEVS Uk9SOiAgY2Fubm90IGhhdmUgbXVsdGlwbGUgU0VUIEFDQ0VTUyBNRVRIT0Qgc3ViY29tbWFuZHMK IERST1AgTUFURVJJQUxJWkVEIFZJRVcgaGVhcG12OwogRFJPUCBUQUJMRSBoZWFwdGFibGU7Ci0t LSBObyBzdXBwb3J0IGZvciBwYXJ0aXRpb25lZCB0YWJsZXMuCistLSBwYXJ0aXRpb24gaGllcmFy Y2hpZXMKKy0tIHVwb24gQUxURVIsIG5ldyBjaGlsZHJlbiB3aWxsIGluaGVyaXQgdGhlIG5ldyBh bSwgd2hlcmVhcyB0aGUgZXhpc3RpbmcKKy0tIGNoaWxkcmVuIHdpbGwgcmVtYWluIHVudG91Y2hl ZAogQ1JFQVRFIFRBQkxFIGFtX3BhcnRpdGlvbmVkKHggSU5ULCB5IElOVCkKICAgUEFSVElUSU9O IEJZIGhhc2ggKHgpOworQ1JFQVRFIFRBQkxFIGFtX3BhcnRpdGlvbmVkXzEgUEFSVElUSU9OIE9G IGFtX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAzLFJFTUFJTkRFUiAwKTsK K0NSRUFURSBUQUJMRSBhbV9wYXJ0aXRpb25lZF8yIFBBUlRJVElPTiBPRiBhbV9wYXJ0aXRpb25l ZCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMyxSRU1BSU5ERVIgMSk7CitBTFRFUiBUQUJMRSBh bV9wYXJ0aXRpb25lZF8xIFNFVCBBQ0NFU1MgTUVUSE9EIGhlYXAyOwogQUxURVIgVEFCTEUgYW1f cGFydGl0aW9uZWQgU0VUIEFDQ0VTUyBNRVRIT0QgaGVhcDI7Ci1FUlJPUjogIGNhbm5vdCBjaGFu Z2UgYWNjZXNzIG1ldGhvZCBvZiBhIHBhcnRpdGlvbmVkIHRhYmxlCitDUkVBVEUgVEFCTEUgYW1f cGFydGl0aW9uZWRfMyBQQVJUSVRJT04gT0YgYW1fcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBXSVRI IChNT0RVTFVTIDMsUkVNQUlOREVSIDIpOworU0VMRUNUIHJlbG5hbWUsIGFtbmFtZSBGUk9NIHBn X2NsYXNzIGMsIHBnX2FtIGFtCisgIFdIRVJFIGMucmVsYW0gPSBhbS5vaWQgQU5EIGMucmVsbmFt ZSBMSUtFICdhbV9wYXJ0aXRpb25lZCUnIE9SREVSIEJZIDE7CisgICAgIHJlbG5hbWUgICAgICB8 IGFtbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIGFtX3BhcnRpdGlvbmVkICAg fCBoZWFwMgorIGFtX3BhcnRpdGlvbmVkXzEgfCBoZWFwMgorIGFtX3BhcnRpdGlvbmVkXzIgfCBo ZWFwCisgYW1fcGFydGl0aW9uZWRfMyB8IGhlYXAyCisoNCByb3dzKQorCiBEUk9QIFRBQkxFIGFt X3BhcnRpdGlvbmVkOwogLS0gU2Vjb25kLCBjcmVhdGUgb2JqZWN0cyBpbiB0aGUgbmV3IEFNIGJ5 IGNoYW5naW5nIHRoZSBkZWZhdWx0IEFNCiBCRUdJTjsKQEAgLTMyNiw3ICszMzMsNyBAQCBPUkRF UiBCWSAzLCAxLCAyOwogIGYgICAgICAgfCAgICAgICAgfCB0YWJsZWFtX2Zkd19oZWFweAogIHIg ICAgICAgfCBoZWFwMiAgfCB0YWJsZWFtX3BhcnRlZF8xX2hlYXB4CiAgciAgICAgICB8IGhlYXAg ICB8IHRhYmxlYW1fcGFydGVkXzJfaGVhcHgKLSBwICAgICAgIHwgICAgICAgIHwgdGFibGVhbV9w YXJ0ZWRfaGVhcHgKKyBwICAgICAgIHwgaGVhcDIgIHwgdGFibGVhbV9wYXJ0ZWRfaGVhcHgKICBT ICAgICAgIHwgICAgICAgIHwgdGFibGVhbV9zZXFfaGVhcHgKICByICAgICAgIHwgaGVhcDIgIHwg dGFibGVhbV90YmxfaGVhcHgKICByICAgICAgIHwgaGVhcDIgIHwgdGFibGVhbV90Ymxhc19oZWFw eApAQCAtMzU1LDcgKzM2Miw2IEBAIEVSUk9SOiAgY2Fubm90IGRyb3AgYWNjZXNzIG1ldGhvZCBo ZWFwMiBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CiBERVRBSUw6ICB0YWJsZSB0 YWJsZWFtX3RibF9oZWFwMiBkZXBlbmRzIG9uIGFjY2VzcyBtZXRob2QgaGVhcDIKIHRhYmxlIHRh YmxlYW1fdGJsYXNfaGVhcDIgZGVwZW5kcyBvbiBhY2Nlc3MgbWV0aG9kIGhlYXAyCiBtYXRlcmlh bGl6ZWQgdmlldyB0YWJsZWFtX3RibG12X2hlYXAyIGRlcGVuZHMgb24gYWNjZXNzIG1ldGhvZCBo ZWFwMgotdGFibGUgdGFibGVhbV9wYXJ0ZWRfYl9oZWFwMiBkZXBlbmRzIG9uIGFjY2VzcyBtZXRo b2QgaGVhcDIKLXRhYmxlIHRhYmxlYW1fcGFydGVkX2RfaGVhcDIgZGVwZW5kcyBvbiBhY2Nlc3Mg bWV0aG9kIGhlYXAyCit0YWJsZSB0YWJsZWFtX3BhcnRlZF9oZWFwMiBkZXBlbmRzIG9uIGFjY2Vz cyBtZXRob2QgaGVhcDIKIEhJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBk ZXBlbmRlbnQgb2JqZWN0cyB0b28uCiAtLSB3ZSBpbnRlbnRpb25hbGx5IGxlYXZlIHRoZSBvYmpl Y3RzIGNyZWF0ZWQgYWJvdmUgYWxpdmUsIHRvIHZlcmlmeSBwZ19kdW1wIHN1cHBvcnQKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9hbS5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jcmVhdGVfYW0uc3FsCmluZGV4IDI1Njg4NGM5NTkyLi44ZjNkYjAzYmJhMiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2FtLnNxbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9jcmVhdGVfYW0uc3FsCkBAIC0xMjQsMTkgKzEyNCwxMiBAQCBDUkVBVEUg U0VRVUVOQ0UgdGFibGVhbV9zZXFfaGVhcDIgVVNJTkcgaGVhcDI7CiBDUkVBVEUgTUFURVJJQUxJ WkVEIFZJRVcgdGFibGVhbV90Ymxtdl9oZWFwMiBVU0lORyBoZWFwMiBBUyBTRUxFQ1QgKiBGUk9N IHRhYmxlYW1fdGJsX2hlYXAyOwogU0VMRUNUIGYxIEZST00gdGFibGVhbV90Ymxtdl9oZWFwMiBP UkRFUiBCWSBmMTsKIAotLS0gQ1JFQVRFIFRBQkxFIC4uICBQQVJUSVRJT04gQlkgZG9lc24ndCBu b3Qgc3VwcG9ydCBVU0lORworLS0gQ1JFQVRFIFRBQkxFIC4uICBQQVJUSVRJT04gQlkgc3VwcG9y dHMgVVNJTkcKKy0tIG5ldyBwYXJ0aXRpb25zIHdpbGwgaW5oZXJpdCBmcm9tIHRoZSBwYXJ0aXRp b24gcm9vdAogQ1JFQVRFIFRBQkxFIHRhYmxlYW1fcGFydGVkX2hlYXAyIChhIHRleHQsIGIgaW50 KSBQQVJUSVRJT04gQlkgbGlzdCAoYSkgVVNJTkcgaGVhcDI7Ci0KLUNSRUFURSBUQUJMRSB0YWJs ZWFtX3BhcnRlZF9oZWFwMiAoYSB0ZXh0LCBiIGludCkgUEFSVElUSU9OIEJZIGxpc3QgKGEpOwot LS0gbmV3IHBhcnRpdGlvbnMgd2lsbCBpbmhlcml0IGZyb20gdGhlIGN1cnJlbnQgZGVmYXVsdCwg cmF0aGVyIHRoZSBwYXJ0aXRpb24gcm9vdAotU0VUIGRlZmF1bHRfdGFibGVfYWNjZXNzX21ldGhv ZCA9ICdoZWFwJzsKIENSRUFURSBUQUJMRSB0YWJsZWFtX3BhcnRlZF9hX2hlYXAyIFBBUlRJVElP TiBPRiB0YWJsZWFtX3BhcnRlZF9oZWFwMiBGT1IgVkFMVUVTIElOICgnYScpOwotU0VUIGRlZmF1 bHRfdGFibGVfYWNjZXNzX21ldGhvZCA9ICdoZWFwMic7Ci1DUkVBVEUgVEFCTEUgdGFibGVhbV9w YXJ0ZWRfYl9oZWFwMiBQQVJUSVRJT04gT0YgdGFibGVhbV9wYXJ0ZWRfaGVhcDIgRk9SIFZBTFVF UyBJTiAoJ2InKTsKLVJFU0VUIGRlZmF1bHRfdGFibGVfYWNjZXNzX21ldGhvZDsKIC0tIGJ1dCB0 aGUgbWV0aG9kIGNhbiBiZSBleHBsaWNpdGx5IHNwZWNpZmllZAotQ1JFQVRFIFRBQkxFIHRhYmxl YW1fcGFydGVkX2NfaGVhcDIgUEFSVElUSU9OIE9GIHRhYmxlYW1fcGFydGVkX2hlYXAyIEZPUiBW QUxVRVMgSU4gKCdjJykgVVNJTkcgaGVhcDsKLUNSRUFURSBUQUJMRSB0YWJsZWFtX3BhcnRlZF9k X2hlYXAyIFBBUlRJVElPTiBPRiB0YWJsZWFtX3BhcnRlZF9oZWFwMiBGT1IgVkFMVUVTIElOICgn ZCcpIFVTSU5HIGhlYXAyOworQ1JFQVRFIFRBQkxFIHRhYmxlYW1fcGFydGVkX2JfaGVhcDIgUEFS VElUSU9OIE9GIHRhYmxlYW1fcGFydGVkX2hlYXAyIEZPUiBWQUxVRVMgSU4gKCdiJykgVVNJTkcg aGVhcDsKIAogLS0gTGlzdCBhbGwgb2JqZWN0cyBpbiBBTQogU0VMRUNUCkBAIC0xODMsMTAgKzE3 NiwxOCBAQCBBTFRFUiBUQUJMRSBoZWFwdGFibGUgU0VUIEFDQ0VTUyBNRVRIT0QgaGVhcCwgU0VU IEFDQ0VTUyBNRVRIT0QgaGVhcDI7CiBBTFRFUiBNQVRFUklBTElaRUQgVklFVyBoZWFwbXYgU0VU IEFDQ0VTUyBNRVRIT0QgaGVhcCwgU0VUIEFDQ0VTUyBNRVRIT0QgaGVhcDI7CiBEUk9QIE1BVEVS SUFMSVpFRCBWSUVXIGhlYXBtdjsKIERST1AgVEFCTEUgaGVhcHRhYmxlOwotLS0gTm8gc3VwcG9y dCBmb3IgcGFydGl0aW9uZWQgdGFibGVzLgorLS0gcGFydGl0aW9uIGhpZXJhcmNoaWVzCistLSB1 cG9uIEFMVEVSLCBuZXcgY2hpbGRyZW4gd2lsbCBpbmhlcml0IHRoZSBuZXcgYW0sIHdoZXJlYXMg dGhlIGV4aXN0aW5nCistLSBjaGlsZHJlbiB3aWxsIHJlbWFpbiB1bnRvdWNoZWQKIENSRUFURSBU QUJMRSBhbV9wYXJ0aXRpb25lZCh4IElOVCwgeSBJTlQpCiAgIFBBUlRJVElPTiBCWSBoYXNoICh4 KTsKK0NSRUFURSBUQUJMRSBhbV9wYXJ0aXRpb25lZF8xIFBBUlRJVElPTiBPRiBhbV9wYXJ0aXRp b25lZCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMyxSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFC TEUgYW1fcGFydGl0aW9uZWRfMiBQQVJUSVRJT04gT0YgYW1fcGFydGl0aW9uZWQgRk9SIFZBTFVF UyBXSVRIIChNT0RVTFVTIDMsUkVNQUlOREVSIDEpOworQUxURVIgVEFCTEUgYW1fcGFydGl0aW9u ZWRfMSBTRVQgQUNDRVNTIE1FVEhPRCBoZWFwMjsKIEFMVEVSIFRBQkxFIGFtX3BhcnRpdGlvbmVk IFNFVCBBQ0NFU1MgTUVUSE9EIGhlYXAyOworQ1JFQVRFIFRBQkxFIGFtX3BhcnRpdGlvbmVkXzMg UEFSVElUSU9OIE9GIGFtX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAzLFJF TUFJTkRFUiAyKTsKK1NFTEVDVCByZWxuYW1lLCBhbW5hbWUgRlJPTSBwZ19jbGFzcyBjLCBwZ19h bSBhbQorICBXSEVSRSBjLnJlbGFtID0gYW0ub2lkIEFORCBjLnJlbG5hbWUgTElLRSAnYW1fcGFy dGl0aW9uZWQlJyBPUkRFUiBCWSAxOwogRFJPUCBUQUJMRSBhbV9wYXJ0aXRpb25lZDsKIAogLS0g U2Vjb25kLCBjcmVhdGUgb2JqZWN0cyBpbiB0aGUgbmV3IEFNIGJ5IGNoYW5naW5nIHRoZSBkZWZh dWx0IEFNCi0tIAoyLjI1LjEKCg== --000000000000d379aa05df52bdb9--