Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u0d8E-004kI6-BB for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Apr 2025 09:14:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u0d8D-00FqEQ-1b for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Apr 2025 09:14:33 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u0d8C-00FqEH-Bc for pgsql-hackers@lists.postgresql.org; Fri, 04 Apr 2025 09:14:32 +0000 Received: from mail-yw1-x1130.google.com ([2607:f8b0:4864:20::1130]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u0d8A-002tFM-24 for pgsql-hackers@lists.postgresql.org; Fri, 04 Apr 2025 09:14:31 +0000 Received: by mail-yw1-x1130.google.com with SMTP id 00721157ae682-6ff37565154so17709937b3.3 for ; Fri, 04 Apr 2025 02:14:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743758069; x=1744362869; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=F9eIxiNgXM0tSzjU5xWVqSxdcrLgNGRRsWXZJ6SPd2k=; b=mx3PGG8ucS9jAplw+l1PYJvJOgopg09JcvdpJf7AvInGJf8/N4b1kSwvUbl3tG/HDz lDA6uRhdH9Y4dJvLKn9U8mmC9NNKwdo/bKjusCl/2shD3y1MET3gRBuS3CXKASE2S8IX DsNlBgj1v1RMS9l9oIX1avKMaP5Df0WopR/ol/HowxSXneVD9Mf19x8Fh+XNYVCbu++B F8vyP5zfH2o5ACWWPIFIaJ0dNiXi1IWHRPc+DZhHYiALtPXHhY2DkKq1EIS3vW5pA+SB x3UDYb5zuvmaZ2IePFGj1ovUVKSyPKm18StDwgmdX3jYOh/cmCbjL/bdllB19ShH3W+R UwAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743758069; x=1744362869; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=F9eIxiNgXM0tSzjU5xWVqSxdcrLgNGRRsWXZJ6SPd2k=; b=J5zdQpzDP0q+3/dE8pCJed14if8ono7lQE6Of79c8eRfFuQH8cqTqFTj5Q2SlAADUa YiLR38l/M3tIrd3Dx5MYHwSbEJ8LgK6mv0Zmh7+wskygDif+6ny2A6rC9sib2vrcHvoz wBvmGVeaf4DwvWBCfvrfc12zznrbB+GgiFjpLJFCGxYpkEZftr4z2qWMl5/mRyWYSO5J U0BWDAb1Jt2ajQgT6baVdERcz4w7nQbowq3b6rp7mW6fq4IcbJ7zNXDLNE1EiCzlgCrx +/YscHJha0ksQGF/1XeUxVov7Ke7z/Hdtq8C6Yq6gJtRWZrToF74ixOJlA2z/oJrSXKi f4+w== X-Forwarded-Encrypted: i=1; AJvYcCVy3DWtcN7RrczDOMURSMC7XYs/uLxT9Mts346HltzJjFgpACRX7i91Oh1XoZ4a8o+w+oUzrXr8H/99UsG5@lists.postgresql.org X-Gm-Message-State: AOJu0Yy8O9ct91xKlbdhNqKtu29klJ2lK8qUHJxYw+lMKqhVYTSFwfa7 oLvTE4rdXU4UhNjPhVFsQ/i6vi5/U1LfoniicCe3HK0iQ7pD2EY0GUNbzA3c/77KX8ZmEFx11iN JNzSQKGOZ/FpIEssFZfkmX2fx8Jw= X-Gm-Gg: ASbGnctlnHafmP1He4Hhy3ciFDeA63bfpk2GBuhfQhCOy3fa+1B04+7u7CKphsJsXs0 vxGYYs0N+0/miUDUahMtDBoN+jvlbbC3ipFAmjdGQGE6GSNKuyaYtEIkQh89OuKFk3AfL0N/vgL NfOl3JgfBYZbZKwj3YQjIEh+dwD4w5WFPFigIspw== X-Google-Smtp-Source: AGHT+IEvpze3c8gqnhUPxfzvtcXHct6on4ZRsJOADQVU++8pVRHKu1SAhN6yKD+cL8e7NAGsXkOtsjaesxhLHRinBDE= X-Received: by 2002:a05:690c:67c6:b0:6fb:b524:48bc with SMTP id 00721157ae682-703e162b9c6mr46131077b3.35.1743758069444; Fri, 04 Apr 2025 02:14:29 -0700 (PDT) MIME-Version: 1.0 References: <202503281104.t47zhqlep54q@alvherre.pgsql> In-Reply-To: From: Shlok Kyal Date: Fri, 4 Apr 2025 14:44:17 +0530 X-Gm-Features: ATxdqUHGMtBsuZa6n9eHv5ZcfnYLQ-IrfqXHjm7wycrfJtrZHtm9wztAiIDENWw Message-ID: Subject: Re: Restrict publishing of partitioned table with a foreign table as partition To: Sergey Tatarintsev Cc: =?UTF-8?Q?=C3=81lvaro_Herrera?= , vignesh C , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000004e38be0631f050fa" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004e38be0631f050fa Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 4 Apr 2025 at 10:36, Sergey Tatarintsev wrote: > > 01.04.2025 21:48, Shlok Kyal =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > > On Fri, 28 Mar 2025 at 16:35, =C3=81lvaro Herrera wrote: > >> On 2025-Mar-28, Shlok Kyal wrote: > >> > >>> On Mon, 24 Mar 2025 at 21:17, =C3=81lvaro Herrera wrote: > >>>> Also, surely we should document this restriction in the SGML docs > >>>> somewhere. > >>> I have added comment in create_publication.sgml > >> Hmm, okay, but "We cannot" is not the style used in the documentation. > >> In addition, I think this mechanism should be mentioned in > >> logical-replication.sgml; currently there's a note in the Restrictions > >> section about foreign tables, which should be expanded to explain this= . > >> > > I have modified the comment in create_publication.sgml and also added > > comment in the restrictions section of logical-replication.sgml. > > I have also added a more detailed explanation in comment of > > 'check_foreign_tables' > > > > I have attached the updated v11 patch. > > > > > > Thanks and Regards, > > Shlok Kyal > > Hi! > > I looked at the latest version of the patch, and think that we should > free puboids list here: > > diff --git a/src/backend/commands/tablecmds.c > b/src/backend/commands/tablecmds.c > index 6a128f7bd4e..4254654cc24 100644 > --- a/src/backend/commands/tablecmds.c > +++ b/src/backend/commands/tablecmds.c > @@ -20122,6 +20122,7 @@ ATExecAttachPartition(List **wqueue, Relation > rel, PartitionCmd *cmd, > relname))); > } > } > + list_free(puboids); > } > > /* > Hi Sergey, Thanks for reviewing the patch. I have fixed the comment. I also found other places where we should free the relids, schemaoids, and puboids list. I have added changes for those as well. I have attached the updated patch. Thanks and Regards, Shlok Kyal --0000000000004e38be0631f050fa Content-Type: application/octet-stream; name="v12-0001-Restrict-publishing-of-partitioned-table-with-fo.patch" Content-Disposition: attachment; filename="v12-0001-Restrict-publishing-of-partitioned-table-with-fo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m92kgjxz0 RnJvbSA3ZWY0YjMwOTVjOWEwYjMwODE5Mjg5ODMwMmU4NDE1YmEyN2Q2MGU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjggTWFyIDIwMjUgMTE6MTU6MDkgKzA1MzAKU3ViamVjdDogW1BBVENIIHYx Ml0gUmVzdHJpY3QgcHVibGlzaGluZyBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIGZvcmVpZ24K IHBhcnRpdGlvbgoKTG9naWNhbCByZXBsaWNhdGlvbiBvZiBmb3JlaWduIHRhYmxlIGlzIG5vdCBz dXBwb3J0ZWQgYW5kIHdlIHRocm93IGFuCmVycm9yIGluIHRoaXMgY2FzZS4gQnV0IHdoZW4gY3Jl YXRlIGEgcHVibGljYXRpb24gb24gYSBwYXJ0aXRpb25lZAp0YWJsZSB0aGF0IGhhcyBhIGZvcmVp Z24gcGFydGl0aW9uLCB0aGUgaW5pdGlhbCBzeW5jIG9mIHN1Y2ggdGFibGUgaXMKc3VjY2Vzc2Z1 bCBhbmQgd2Ugc2hvdWxkIGF2b2lkIHN1Y2ggY2FzZXMuCgpDdXJyZW50IEJlaGF2aW91ciBpbiBI RUFELCB3aGVuIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQ6CjEuIHdpdGggcHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QgPSB0cnVlClJvb3QgdGFibGUgaXMgcHVibGlzaGVkIGFuZCB0aGUgaW5pdGlh bCBkYXRhIG9mIGZvcmVpZ24gcGFydGl0aW9ucwphcmUgcmVwbGljYXRlZC4KCjIuIHdpdGggcHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSBhbmQgRk9SIEFMTCBUQUJMRVMKQWxsIGxl YWYgdGFibGVzIGV4Y2VwdCBmb3JlaWduIHBhcnRpdGlvbnMgYXJlIHB1Ymxpc2hlZC4KCjMuIHdp dGggcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSBhbmQKRk9SIFRBQkxFLyBGT1Ig VEFCTEVTIElOIFNDSEVNQQpBbGwgbGVhZiB0YWJsZXMgYXJlIHB1Ymxpc2hlZC4gSW5pdGlhbCBk YXRhIG9mIGZvcmVpZ24gcGFydGl0aW9ucyBhcmUKcmVwbGljYXRlZC4KCldpdGggdGhpcyBwYXRj aCB3ZSBoYXZlIGZvbGxvd2luZyBiZWhhdmlvdXI6CjEuIHdpdGggcHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QgPSB0cnVlCldlIHRocm93IGFuIGVycm9yIHdoZW4gd2UgdHJ5IHRvIHB1Ymxpc2gg YSBmb3JlaWduIHBhcnRpdGl0b24uIEVycm9yCmlzIHRocm93biB3aGVuIHdlIHRyeSB0byBjcmVh dGUgYSBwdWJsaWNhdGlvbiBvbiAob3IgYWRkIHRvIGV4aXN0aW5nCnB1YmxpY2F0aW9uKSBhIHBh cnRpdGlvbmVkIHRhYmxlIHdpdGggZm9yZWlnbiBwYXJ0aXRpb24sIHdoZW4gdHJ5IHRvCmNyZWF0 ZSBhIGZvcmVpZ24gcGFydGl0aW9uIGFuZCB3aGVuIHdlIHRyeSB0byBhdHRhY2ggZm9yZWlnbiB0 YWJsZSAob3IKYSB0YWJsZSB3aXRoIGZvcmVpZ24gcGFydGl0aW9uKSB0byBleGlzdGluZyBwdWJs aXNoZWQgdGFibGVzLgoKMi4gd2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNl CldlIHNraXAgcHVibGlzaGluZyBmb3JlaWduIHBhcnRpdGlvbiB3aGljaCBhcmUgcGFydCBvZiB0 aGUgcHVibGljYXRpb24uClRoaXMgaXMgZG9uZSBieSBhdm9pZCBhZGRpbmcgZm9yZWlnbiBwYXJ0 aXRpb25zIGluIHBnX3N1YnNjcmlwdGlvbl9yZWwKY2F0YWxvZyB0YWJsZS4KCldlIGhhdmUgaW50 cm9kdWNlZCB0d28gZnVuY3Rpb25zICdjaGVja19wYXJ0cmVsX2hhc19mb3JlaWduX3RhYmxlJyBh bmQKJ2NoZWNrX2ZvcmVpZ25fdGFibGVzJy4gSW4gJ2NoZWNrX3BhcnRyZWxfaGFzX2ZvcmVpZ25f dGFibGUnIHdlIGdvCnRocm91Z2ggdGhlIGNoaWxkIG5vZGVzIG9mIGEgcGFydGl0aW9uIGFuZCBj aGVjayBpZiBpdCBoYXMgYSBmb3JlaWduCnRhYmxlLiBXaGlsZSBkb2luZyBzbywgd2UgdGFrZSBh IEFjY2Vzc1NoYXJlTG9jayBvbiBlYWNoIHBhcnRpdGlvbiB0YWJsZQp0byBhdm9pZCBjcmVhdGlv biBvZiBmb3JlaWduIHBhcnRpdGlvbiBjb25jdXJyZW50bHkuCkluICdjaGVja19mb3JlaWduX3Rh YmxlcycgaWYgc2NoZW1hIGlkIGlzIHByb3ZpZGVkIHdlIGNoZWNrIGZvciBlYWNoCnBhcnRpdGlv bmVkIHRhYmxlIGluIHRoYXQgc2NoZW1hIGlmIGl0IGhhcyBhIGZvcmVpZ24gcGFydGl0aW9uLCBv ciBpZgpzY2hlbWEgaWQgaXMgbm90IHByb3ZpZGVkIHdlIGNoZWNrIGZvciBlYWNoIHBhcnRpdGlv bmVkIHRhYmxlIGluIHRoZQpkYXRhYmFzZSBpZiBpdCBoYXMgYSBmb3JlaWduIHBhcnRpdGlvbi4g V2hpbGUgZG9pbmcgc28gd2UgdGFrZSBhClNoYXJlTG9jayBvbiBwZ19wYXJ0aXRpb25lZF90YWJs ZSBzbyBubyBwYXJ0aXRpb24gdGFibGUgaXMgY3JlYXRlZApjb25jdXJyZW50bHkgYWZ0ZXIgdGhp cyBjaGVjay4KLS0tCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICB8 ICAxMCArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCAgfCAgIDUg Kwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAxNjYgKysrKysr KysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZm9yZWlnbmNtZHMuYyAgICAg ICAgfCAgNTAgKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMg ICAgfCAgNDcgKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAg ICB8ICA1OSArKysrKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAg ICAgfCAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgfCAg ODkgKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAg ICB8ICA4MSArKysrKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCA0OTQgaW5zZXJ0aW9ucygrKSwg MTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGlj YXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXgg ZjI4OGMwNDlhNWMuLmNlNjBhMWIzOTFjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwKQEAgLTIxNTQsNyArMjE1NCwxNSBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUg ZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogCiAg ICA8bGlzdGl0ZW0+CiAgICAgPHBhcmE+Ci0gICAgIFJlcGxpY2F0aW9uIGlzIG9ubHkgc3VwcG9y dGVkIGJ5IHRhYmxlcywgaW5jbHVkaW5nIHBhcnRpdGlvbmVkIHRhYmxlcy4KKyAgICAgUmVwbGlj YXRpb24gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHRhYmxlcywgaW5jbHVkaW5nIHBhcnRpdGlvbmVk IHRhYmxlcywKKyAgICAgZXhjZXB0IHdoZW4gdGhleSBjb250YWluIGZvcmVpZ24gcGFydGl0aW9u cy4gSWYKKyAgICAgPGxpdGVyYWw+cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q8L2xpdGVyYWw+ IGlzIHNldCB0bworICAgICA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPiBmb3IgYSBwdWJsaWNhdGlv biB0YWJsZSB3aXRoIGZvcmVpZ24gcGFydGl0aW9ucywgb3IKKyAgICAgaWYgYW4gYXR0ZW1wdCBp cyBtYWRlIHRvIHJlcGxpY2F0ZSBzdWNoIGEgdGFibGUsIGFuIGVycm9yIGlzIHRocm93bi4KKyAg ICAgQWRkaXRpb25hbGx5LCB3aGVuIHJlcGxpY2F0aW5nIGEgcGFydGl0aW9uZWQgdGFibGUgd2hl cmUKKyAgICAgPGxpdGVyYWw+cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q8L2xpdGVyYWw+IGlz IHNldCB0bworICAgICA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4gYW5kIGZvcmVpZ24gcGFydGl0 aW9ucyBhcmUgcHJlc2VudCwgYWxsIHBhcnRpdGlvbnMKKyAgICAgYXJlIHJlcGxpY2F0ZWQgZXhj ZXB0IHRoZSBmb3JlaWduIHBhcnRpdGlvbnMuCiAgICAgIEF0dGVtcHRzIHRvIHJlcGxpY2F0ZSBv dGhlciB0eXBlcyBvZiByZWxhdGlvbnMsIHN1Y2ggYXMgdmlld3MsIG1hdGVyaWFsaXplZAogICAg ICB2aWV3cywgb3IgZm9yZWlnbiB0YWJsZXMsIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLgogICAg IDwvcGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9u LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IDcz ZjBjOGQ4OWZiLi40NzIxNmZjNDc4OSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNh dGlvbi5zZ21sCkBAIC0yNTcsNiArMjU3LDExIEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgSWYg dGhpcyBpcyBlbmFibGVkLCA8bGl0ZXJhbD5UUlVOQ0FURTwvbGl0ZXJhbD4gb3BlcmF0aW9ucyBw ZXJmb3JtZWQKICAgICAgICAgICBkaXJlY3RseSBvbiBwYXJ0aXRpb25zIGFyZSBub3QgcmVwbGlj YXRlZC4KICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYg dGhpcyBpcyBlbmFibGVkLCBhIGZvcmVpZ24gdGFibGUgb3IgYSBwYXJ0aXRpb25lZCB0YWJsZSB3 aXRoIGEKKyAgICAgICAgICBmb3JlaWduIHBhcnRpdGlvbiBpcyBub3QgYWxsb3dlZCBpbiB0aGUg cHVibGljYXRpb24uCisgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAg ICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICA8L3ZhcmlhYmxlbGlzdD48L3BhcmE+CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggZDZmOTRkYjVkOTkuLjc3Mjk5Yjc1Y2RlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC0yNiwxMiArMjYsMTQgQEAKICNp bmNsdWRlICJjYXRhbG9nL3BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfaW5oZXJp dHMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfcGFydGl0aW9uZWRfdGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1 ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlc2MuaCIKICNpbmNs dWRlICJ1dGlscy9hcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVk ZSAidXRpbHMvY2F0Y2FjaGUuaCIKQEAgLTUzLDcgKzU1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKICAq IGVycm9yIGlmIG5vdC4KICAqLwogc3RhdGljIHZvaWQKLWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9y ZWxhdGlvbihSZWxhdGlvbiB0YXJnZXRyZWwpCitjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRp b24oUmVsYXRpb24gdGFyZ2V0cmVsLCBQdWJsaWNhdGlvbiAqcHViKQogewogCS8qIE11c3QgYmUg YSByZWd1bGFyIG9yIHBhcnRpdGlvbmVkIHRhYmxlICovCiAJaWYgKFJlbGF0aW9uR2V0Rm9ybSh0 YXJnZXRyZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKQEAgLTY0LDYgKzY2LDE4 IEBAIGNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihSZWxhdGlvbiB0YXJnZXRyZWwpCiAJ CQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKIAkJCQkgZXJyZGV0YWls X3JlbGtpbmRfbm90X3N1cHBvcnRlZChSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2lu ZCkpKTsKIAorCS8qCisJICogcHVibGlzaF92aWFfcm9vdF9wYXJ0aXRpb24gY2Fubm90IGJlIHRy dWUgaWYgaXQgaXMgYSBwYXJ0aXRpb25lZCB0YWJsZQorCSAqIGFuZCBoYXMgYW55IGZvcmVpZ24g cGFydGl0aW9uLiBTZWUgY2hlY2tfZm9yZWlnbl90YWJsZXMgZm9yIGRldGFpbHMuCisJICovCisJ aWYgKHB1Yi0+cHVidmlhcm9vdCAmJiBjaGVja19wYXJ0cmVsX2hhc19mb3JlaWduX3RhYmxlKHRh cmdldHJlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiY2Fubm90IHNldCBwYXJhbWV0ZXIgXCIl c1wiIHRvIHRydWUgZm9yIHB1YmxpY2F0aW9uIFwiJXNcIiIsCisJCQkJCQkicHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QiLCBwdWItPm5hbWUpLAorCQkJCSBlcnJkZXRhaWwoInBhcnRpdGlvbiB0 YWJsZSBcIiVzXCIgaW4gcHVibGljYXRpb24gY29udGFpbnMgYSBmb3JlaWduIHBhcnRpdGlvbiIs CisJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSkpOworCiAJLyog Q2FuJ3QgYmUgc3lzdGVtIHRhYmxlICovCiAJaWYgKElzQ2F0YWxvZ1JlbGF0aW9uKHRhcmdldHJl bCkpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0zMDQsNyArMzE4LDcgQEAgY2hlY2tfYW5kX2ZldGNo X2NvbHVtbl9saXN0KFB1YmxpY2F0aW9uICpwdWIsIE9pZCByZWxpZCwgTWVtb3J5Q29udGV4dCBt Y3h0LAogCiAvKgogICogR2V0cyB0aGUgcmVsYXRpb25zIGJhc2VkIG9uIHRoZSBwdWJsaWNhdGlv biBwYXJ0aXRpb24gb3B0aW9uIGZvciBhIHNwZWNpZmllZAotICogcmVsYXRpb24uCisgKiByZWxh dGlvbi4gRm9yZWlnbiB0YWJsZXMgYXJlIG5vdCBpbmNsdWRlZC4KICAqLwogTGlzdCAqCiBHZXRQ dWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMoTGlzdCAqcmVzdWx0LCBQdWJsaWNhdGlvblBhcnRP cHQgcHViX3BhcnRvcHQsCkBAIC0zMTMsMjUgKzMyNywyMSBAQCBHZXRQdWJQYXJ0aXRpb25PcHRp b25SZWxhdGlvbnMoTGlzdCAqcmVzdWx0LCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQs CiAJaWYgKGdldF9yZWxfcmVsa2luZChyZWxpZCkgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJM RSAmJgogCQlwdWJfcGFydG9wdCAhPSBQVUJMSUNBVElPTl9QQVJUX1JPT1QpCiAJewotCQlMaXN0 CSAgICphbGxfcGFydHMgPSBmaW5kX2FsbF9pbmhlcml0b3JzKHJlbGlkLCBOb0xvY2ssCi0JCQkJ CQkJCQkJCQkJTlVMTCk7CisJCUxpc3QJICAgKmFsbF9wYXJ0cyA9IGZpbmRfYWxsX2luaGVyaXRv cnMocmVsaWQsIE5vTG9jaywgTlVMTCk7CiAKLQkJaWYgKHB1Yl9wYXJ0b3B0ID09IFBVQkxJQ0FU SU9OX1BBUlRfQUxMKQotCQkJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBhbGxfcGFydHMp OwotCQllbHNlIGlmIChwdWJfcGFydG9wdCA9PSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpCisJCWZv cmVhY2hfb2lkKHBhcnRPaWQsIGFsbF9wYXJ0cykKIAkJewotCQkJTGlzdENlbGwgICAqbGM7CisJ CQljaGFyCQlyZWxraW5kID0gZ2V0X3JlbF9yZWxraW5kKHBhcnRPaWQpOwogCi0JCQlmb3JlYWNo KGxjLCBhbGxfcGFydHMpCi0JCQl7Ci0JCQkJT2lkCQkJcGFydE9pZCA9IGxmaXJzdF9vaWQobGMp OworCQkJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFKQorCQkJCWNvbnRpbnVl OwogCi0JCQkJaWYgKGdldF9yZWxfcmVsa2luZChwYXJ0T2lkKSAhPSBSRUxLSU5EX1BBUlRJVElP TkVEX1RBQkxFKQotCQkJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHBhcnRPaWQpOwot CQkJfQorCQkJaWYgKHB1Yl9wYXJ0b3B0ID09IFBVQkxJQ0FUSU9OX1BBUlRfTEVBRiAmJgorCQkJ CXJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJCQljb250aW51ZTsKKwor CQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwYXJ0T2lkKTsKIAkJfQotCQllbHNlCi0J CQlBc3NlcnQoZmFsc2UpOwogCX0KIAllbHNlCiAJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3Vs dCwgcmVsaWQpOwpAQCAtNDYzLDcgKzQ3Myw3IEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihP aWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCQkJCQkJUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUodGFyZ2V0cmVsKSwgcHViLT5uYW1lKSkpOwogCX0KIAotCWNoZWNrX3B1YmxpY2F0 aW9uX2FkZF9yZWxhdGlvbih0YXJnZXRyZWwpOworCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxh dGlvbih0YXJnZXRyZWwsIHB1Yik7CiAKIAkvKiBWYWxpZGF0ZSBhbmQgdHJhbnNsYXRlIGNvbHVt biBuYW1lcyBpbnRvIGEgQml0bWFwc2V0IG9mIGF0dG51bXMuICovCiAJYXR0bnVtcyA9IHB1Yl9j b2xsaXN0X3ZhbGlkYXRlKHByaS0+cmVsYXRpb24sIHByaS0+Y29sdW1ucyk7CkBAIC03MDMsNiAr NzEzLDEzIEBAIHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQs IGJvb2wgaWZfbm90X2V4aXN0cykKIAogCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9zY2hlbWEoc2No ZW1haWQpOwogCisJLyoKKwkgKiBJZiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBpcyB0cnVl LCBjaGVjayBpZiBzY2hlbWEgaGFzIGFueSBmb3JlaWduCisJICogcGFydGl0aW9uCisJICovCisJ aWYgKHB1Yi0+cHVidmlhcm9vdCkKKwkJY2hlY2tfZm9yZWlnbl90YWJsZXMoc2NoZW1haWQsIHB1 Yi0+bmFtZSk7CisKIAkvKiBGb3JtIGEgdHVwbGUgKi8KIAltZW1zZXQodmFsdWVzLCAwLCBzaXpl b2YodmFsdWVzKSk7CiAJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CkBAIC0x MzMyLDMgKzEzNDksMTE4IEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05f QVJHUykKIAogCVNSRl9SRVRVUk5fRE9ORShmdW5jY3R4KTsKIH0KKworLyogQ2hlY2sgaWYgYSBw YXJ0aXRpb25lZCB0YWJsZSBoYXMgYSBmb3JlaWduIHBhcnRpdGlvbiAqLworYm9vbAorY2hlY2tf cGFydHJlbF9oYXNfZm9yZWlnbl90YWJsZShSZWxhdGlvbiByZWwpCit7CisJYm9vbAkJaGFzX2Zv cmVpZ25fdGJsID0gZmFsc2U7CisKKwlpZiAoUmVsYXRpb25HZXRGb3JtKHJlbCktPnJlbGtpbmQg PT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwl7CisJCVBhcnRpdGlvbkRlc2MgcGQgPSBS ZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocmVsLCB0cnVlKTsKKworCQlmb3IgKGludCBpID0gMDsg aSA8IHBkLT5ucGFydHM7IGkrKykKKwkJeworCQkJUmVsYXRpb24JY2hpbGRyZWwgPSB0YWJsZV9v cGVuKHBkLT5vaWRzW2ldLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQlpZiAoUmVsYXRpb25HZXRG b3JtKGNoaWxkcmVsKS0+cmVsa2luZCA9PSBSRUxLSU5EX0ZPUkVJR05fVEFCTEUpCisJCQkJaGFz X2ZvcmVpZ25fdGJsID0gdHJ1ZTsKKwkJCWVsc2UKKwkJCQloYXNfZm9yZWlnbl90YmwgPSBjaGVj a19wYXJ0cmVsX2hhc19mb3JlaWduX3RhYmxlKGNoaWxkcmVsKTsKKworCQkJdGFibGVfY2xvc2Uo Y2hpbGRyZWwsIE5vTG9jayk7CisKKwkJCWlmIChoYXNfZm9yZWlnbl90YmwpCisJCQkJYnJlYWs7 CisJCX0KKwl9CisKKwlyZXR1cm4gaGFzX2ZvcmVpZ25fdGJsOworfQorCisvKgorICogUHJvdGVj dCBhZ2FpbnN0IGluY2x1ZGluZyBmb3JlaWduIHRhYmxlcyB0aGF0IGFyZSBwYXJ0aXRpb25zIG9m IHBhcnRpdGlvbmVkCisgKiB0YWJsZXMgcHVibGlzaGVkIGJ5IHRoZSBnaXZlbiBwdWJsaWNhdGlv biB3aGVuIHB1Ymxpc2hfdmlhX3Jvb3RfcGFydGl0aW9uIGlzCisgKiB0cnVlLiBUaGlzIHdpbGwg bm90IHdvcmsgY29ycmVjdGx5IGFzIHRoZSBpbml0aWFsIGRhdGEgZnJvbSB0aGUgZm9yZWlnbgor ICogdGFibGUgY2FuIGJlIHJlcGxpY2F0ZWQgYnkgdGhlIHRhYmxlc3luYyB3b3JrZXIgZXZlbiB0 aG91Z2ggcmVwbGljYXRpb24gb2YKKyAqIGZvcmVpZ24gdGFibGUgaXMgbm90IHN1cHBvcnRlZCBi ZWNhdXNlIHdoZW4gcHVibGlzaF92aWFfcm9vdF9wYXJ0aXRpb24gaXMKKyAqIHRydWUsIHRoZSBy b290IHRhYmxlIGlzIGluY2x1ZGVkIGluIHBnX3N1YnNjcmlwdGlvbl9yZWwgY2F0YWxvZyB0YWJs ZSBhbmQKKyAqIHRhYmxlc3luYyB3b3JrZXIgY2Fubm90IGRpc3Rpbmd1aXNoIGRhdGEgZnJvbSBm b3JlaWduIHBhcnRpdGlvbi4gU28gd2UKKyAqIGRpc2FsbG93IHRoZSBjYXNlIGhlcmUgYW5kIGlu IGFsbCBEREwgY29tbWFuZHMgdGhhdCB3b3VsZCBlbmQgdXAgY3JlYXRpbmcKKyAqIHN1Y2ggYSBj YXNlIGluZGlyZWN0bHkuCisgKgorICogV2hlbiBwdWJsaXNoX3ZpYV9yb290X3BhcnRpdGlvbiBp cyBzZXQgdG8gZmFsc2UsIGxlYWYgcGFydGl0aW9ucyBhcmUgaW5jbHVkZWQKKyAqIGluIHBnX3N1 YnNjcmlwdGlvbl9yZWwgY2F0YWxvZyB0YWJsZS4gU28sIHdoZW4gd2UgaW5jbHVkZSBhIHBhcnRp dGlvbiB0YWJsZQorICogd2l0aCBmb3JlaWduIHBhcnRpdGlvbiBpbiBhIHB1YmxpY2F0aW9uLCB3 ZSBza2lwIGluY2x1ZGluZyBmb3JlaWduIHBhcnRpdGlvbnMKKyAqIHRvIHBnX3N1YnNjcmlwdGlv bl9yZWwgY2F0YWxvZyB0YWJsZS4gU28sIHRoZSBmb3JlaWduIHBhcnRpdGlvbnMgYXJlIG5vdAor ICogcmVwbGljYXRlZC4KKyAqCisgKgorICogY2hlY2tfZm9yZWlnbl90YWJsZXMKKyAqCisgKiBJ ZiB2YWxpZCBzY2hlbWFpZCBwcm92aWRlZCwgY2hlY2sgaWYgdGhlIHNjaGVtYSBoYXMgYSBwYXJ0 aXRpb24gdGFibGUgd2hpY2gKKyAqIGhhcyBhIGZvcmVpZ24gcGFydGl0aW9uLiBUaGUgcGFydGl0 aW9uIHRhYmxlcyBpbiBhIHNjaGVtYSBjYW4gaGF2ZSBwYXJ0aXRpb25zCisgKiBpbiBvdGhlciBz Y2hlbWEuIFdlIGFsc28gbmVlZCB0byBjaGVjayBpZiBzdWNoIHBhcnRpdGlvbnMgYXJlIGZvcmVp Z24KKyAqIHBhcnRpdGlvbi4KKyAqCisgKiBJZiB2YWxpZCBzY2hlbWFpZCBpcyBub3QgcHJvdmlk ZWQsIHdlIGdldCBhbGwgcGFydGl0aW9uIHRhYmxlcyBhbmQgY2hlY2sgaWYKKyAqIGl0IGhhcyBh bnkgZm9yZWlnbiBwYXJ0aXRpb24uIFdlIHRha2UgYSBsb2NrIG9uIHBhcnRpdGlvbiB0YWJsZXMg c28gbm8gbmV3CisgKiBmb3JlaWduIHBhcnRpdGlvbnMgYXJlIGFkZGVkIGNvbmN1cnJlbnRseS4K KyAqCisgKiBXZSB0YWtlIGEgU2hhcmVMb2NrIG9uIHBnX3BhcnRpdGlvbmVkX3RhYmxlIHRvIHJl c3RyaWN0IGFkZGl0aW9uIG9mIG5ldworICogcGFydGl0aW9uZWQgdGFibGUgd2hpY2ggbWF5IGNv bnRhaW4gYSBmb3JlaWduIHBhcnRpdGlvbiB3aGlsZSBwdWJsaWNhdGlvbiBpcworICogYmVpbmcg Y3JlYXRlZC4KKyAqLwordm9pZAorY2hlY2tfZm9yZWlnbl90YWJsZXMoT2lkIHNjaGVtYWlkLCBj aGFyICpwdWJuYW1lKQoreworCVJlbGF0aW9uCWNsYXNzUmVsOworCVJlbGF0aW9uCXBhcnRSZWw7 CisJU2NhbktleURhdGEga2V5WzNdOworCWludAkJCWtleWNvdW50ID0gMDsKKwlUYWJsZVNjYW5E ZXNjIHNjYW47CisJSGVhcFR1cGxlCXR1cGxlOworCisJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJl bGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlwYXJ0UmVsID0gdGFibGVfb3Bl bihQYXJ0aXRpb25lZFJlbGF0aW9uSWQsIFNoYXJlTG9jayk7CisKKwkvKiBHZXQgdGhlIHJvb3Qg bm9kZXMgb2YgcGFydGl0aW9uZWQgdGFibGUgKi8KKwlTY2FuS2V5SW5pdCgma2V5W2tleWNvdW50 KytdLAorCQkJCUFudW1fcGdfY2xhc3NfcmVsa2luZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIsIEZfQ0hBUkVRLAorCQkJCUNoYXJHZXREYXR1bShSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF KSk7CisKKwlTY2FuS2V5SW5pdCgma2V5W2tleWNvdW50KytdLAorCQkJCUFudW1fcGdfY2xhc3Nf cmVsaXNwYXJ0aXRpb24sCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX0JPT0xFUSwKKwkJ CQlCb29sR2V0RGF0dW0oZmFsc2UpKTsKKworCS8qIElmIHNjaGVtYSBpZCBpcyBwcm92aWRlZCBj aGVjayBwYXJ0aXRpb25lZCB0YWJsZSBpbiB0aGF0IHNjaGVtYSAqLworCWlmIChPaWRJc1ZhbGlk KHNjaGVtYWlkKSkKKwkJU2NhbktleUluaXQoJmtleVtrZXljb3VudCsrXSwKKwkJCQkJQW51bV9w Z19jbGFzc19yZWxuYW1lc3BhY2UsCisJCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURF USwKKwkJCQkJc2NoZW1haWQpOworCisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9nKGNs YXNzUmVsLCBrZXljb3VudCwga2V5KTsKKwl3aGlsZSAoKHR1cGxlID0gaGVhcF9nZXRuZXh0KHNj YW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkKKwl7CisJCUZvcm1fcGdfY2xhc3Mg cmVsRm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVwbGUpOworCQlSZWxhdGlvbglw dWJyZWwgPSB0YWJsZV9vcGVuKHJlbEZvcm0tPm9pZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQlp ZiAoY2hlY2tfcGFydHJlbF9oYXNfZm9yZWlnbl90YWJsZShwdWJyZWwpKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJ CQkJCSBlcnJtc2coImNhbm5vdCBzZXQgcGFyYW1ldGVyIFwiJXNcIiB0byB0cnVlIGZvciBwdWJs aWNhdGlvbiBcIiVzXCIiLAorCQkJCQkJCSJwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCIsIHB1 Ym5hbWUpLAorCQkJCQkgZXJyZGV0YWlsKCJwYXJ0aXRpb24gdGFibGUgXCIlc1wiIGluIHB1Ymxp Y2F0aW9uIGNvbnRhaW5zIGEgZm9yZWlnbiBwYXJ0aXRpb24iLAorCQkJCQkJCSAgIGdldF9yZWxf bmFtZShyZWxGb3JtLT5vaWQpKSkpOworCisJCXRhYmxlX2Nsb3NlKHB1YnJlbCwgTm9Mb2NrKTsK Kwl9CisKKwl0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKGNsYXNzUmVsLCBBY2Nl c3NTaGFyZUxvY2spOworCXRhYmxlX2Nsb3NlKHBhcnRSZWwsIE5vTG9jayk7Cit9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9mb3JlaWduY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZm9yZWlnbmNtZHMuYwppbmRleCBjMTRlMDM4ZDU0Zi4uOThjMWM4MmRiNjEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2ZvcmVpZ25jbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZm9yZWlnbmNtZHMuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvZGVwZW5kZW5jeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKICNpbmNs dWRlICJjYXRhbG9nL29iamVjdGFjY2Vzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGFydGl0aW9u LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19mb3JlaWduX2RhdGFfd3JhcHBlci5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfZm9yZWlnbl9zZXJ2ZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Zv cmVpZ25fdGFibGUuaCIKQEAgLTE0MjMsNiArMTQyNCw1NSBAQCBDcmVhdGVGb3JlaWduVGFibGUo Q3JlYXRlRm9yZWlnblRhYmxlU3RtdCAqc3RtdCwgT2lkIHJlbGlkKQogCiAJZnRyZWwgPSB0YWJs ZV9vcGVuKEZvcmVpZ25UYWJsZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCisJLyoK KwkgKiBDaGVjayBpZiBpdCBpcyBhIGZvcmVpZ24gcGFydGl0aW9uIGFuZCB0aGUgcGFydGl0aW9u ZWQgdGFibGUgaXMgbm90CisJICogcHVibGlzaGVkIG9yIHB1Ymxpc2hlZCB3aXRoIHB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290IG9wdGlvbiBhcyBmYWxzZS4KKwkgKiBTZWUgY2hlY2tfZm9yZWln bl90YWJsZXMgZm9yIGRldGFpbHMuCisJICovCisJaWYgKHN0bXQtPmJhc2UucGFydGJvdW5kICE9 IE5VTEwpCisJeworCQlSYW5nZVZhciAgICpyb290ID0gbGluaXRpYWxfbm9kZShSYW5nZVZhciwg c3RtdC0+YmFzZS5pbmhSZWxhdGlvbnMpOworCQlSZWxhdGlvbglyb290cmVsID0gdGFibGVfb3Bl bnJ2KHJvb3QsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJaWYgKFJlbGF0aW9uR2V0Rm9ybShyb290 cmVsKS0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQl7CisJCQlPaWQJ CQlzY2hlbWFpZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJvb3RyZWwpOworCQkJTGlzdAkgICAq cHVib2lkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJvb3RyZWwtPnJkX2lkKTsKKwkJCUxp c3QJICAgKmFuY2VzdG9yczsKKworCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQo cHVib2lkcywgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKCkpOworCQkJcHVib2lkcyA9IGxpc3Rf Y29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlk KSk7CisJCQlhbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyb290cmVsLT5yZF9p ZCk7CisKKwkJCWZvcmVhY2hfb2lkKGFuY2VzdG9yLCBhbmNlc3RvcnMpCisJCQl7CisJCQkJcHVi b2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKKwkJCQkJCQkJCQkJCSBHZXRS ZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvcikpOworCQkJCXNjaGVtYWlkID0gZ2V0X3JlbF9u YW1lc3BhY2UoYW5jZXN0b3IpOworCQkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lk KHB1Ym9pZHMsCisJCQkJCQkJCQkJCQkgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7 CisJCQl9CisJCQlsaXN0X2ZyZWUoYW5jZXN0b3JzKTsKKworCQkJZm9yZWFjaF9vaWQocHVib2lk LCBwdWJvaWRzKQorCQkJeworCQkJCVB1YmxpY2F0aW9uICpwdWIgPSBHZXRQdWJsaWNhdGlvbihw dWJvaWQpOworCisJCQkJaWYgKHB1Yi0+cHVidmlhcm9vdCkKKwkJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJCQkgZXJy bXNnKCJjYW5ub3QgY3JlYXRlIHRhYmxlIGZvcmVpZ24gcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJ CQkJCQlnZXRfcmVsX25hbWUocmVsaWQpKSwKKwkJCQkJCQkgZXJyZGV0YWlsKCJwYXJ0aXRpb24g dGFibGUgXCIlc1wiIGlzIHB1Ymxpc2hlZCB3aXRoIG9wdGlvbiBwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCIsCisJCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyb290cmVsKSkp KTsKKwkJCX0KKworCQkJbGlzdF9mcmVlKHB1Ym9pZHMpOworCQl9CisKKwkJdGFibGVfY2xvc2Uo cm9vdHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwl9CisKIAkvKgogCSAqIEZvciBub3cgdGhlIG93 bmVyIGNhbm5vdCBiZSBzcGVjaWZpZWQgb24gY3JlYXRlLiBVc2UgZWZmZWN0aXZlIHVzZXIgSUQu CiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IDBiMjNkOTRj MzhlLi5iMDY5NjBlOGUyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGlj YXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMK QEAgLTkxNSw2ICs5MTUsMTAgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJLyogQXNzb2NpYXRlIG9iamVjdHMgd2l0 aCB0aGUgcHVibGljYXRpb24uICovCiAJaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVzKQogCXsKKwkJ LyogQ2hlY2sgaWYgYW55IHBhcnRpdGlvbmVkIHRhYmxlIGhhcyBmb3JlaWduIHBhcnRpdGlvbiAq LworCQlpZiAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpCisJCQljaGVja19mb3JlaWduX3Rh YmxlcyhJbnZhbGlkT2lkLCBzdG10LT5wdWJuYW1lKTsKKwogCQkvKiBJbnZhbGlkYXRlIHJlbGNh Y2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LiAqLwogCQlDYWNoZUludmFs aWRhdGVSZWxjYWNoZUFsbCgpOwogCX0KQEAgLTEwODAsNiArMTA4NCw0OSBAQCBBbHRlclB1Ymxp Y2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpz dG10LAogCQl9CiAJfQogCisJLyoKKwkgKiBJZiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBp cyBzZXQgdG8gdHJ1ZSwgY2hlY2sgaWYgdGhlIHB1YmxpY2F0aW9uCisJICogYWxyZWFkeSBoYXZl IGFueSBmb3JlaWduIHBhcnRpdGlvbi4gU2VlIGNoZWNrX2ZvcmVpZ25fdGFibGVzIGZvciBkZXRh aWxzLgorCSAqLworCWlmIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbiAmJiBwdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCkKKwl7CisJCUxpc3QJICAgKnNjaGVtYW9pZHMgPSBOSUw7 CisJCUxpc3QJICAgKnJlbGlkcyA9IE5JTDsKKworCQljaGFyCSAgICpwdWJuYW1lID0gc3RtdC0+ cHVibmFtZTsKKworCQlpZiAocHViZm9ybS0+cHViYWxsdGFibGVzKQorCQkJY2hlY2tfZm9yZWln bl90YWJsZXMoSW52YWxpZE9pZCwgcHVibmFtZSk7CisKKwkJc2NoZW1hb2lkcyA9IEdldFB1Ymxp Y2F0aW9uU2NoZW1hcyhwdWJmb3JtLT5vaWQpOworCisJCWZvcmVhY2hfb2lkKHNjaGVtYW9pZCwg c2NoZW1hb2lkcykKKwkJCWNoZWNrX2ZvcmVpZ25fdGFibGVzKHNjaGVtYW9pZCwgcHVibmFtZSk7 CisKKwkJbGlzdF9mcmVlKHNjaGVtYW9pZHMpOworCisJCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9u UmVsYXRpb25zKHB1YmZvcm0tPm9pZCwgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKworCQlmb3Jl YWNoX29pZChyZWxpZCwgcmVsaWRzKQorCQl7CisJCQlSZWxhdGlvbglwdWJyZWwgPSB0YWJsZV9v cGVuKHJlbGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQlpZiAoY2hlY2tfcGFydHJlbF9oYXNf Zm9yZWlnbl90YWJsZShwdWJyZWwpKQorCQkJeworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCSBlcnJtc2co ImNhbm5vdCBzZXQgcGFyYW1ldGVyIFwiJXNcIiB0byB0cnVlIGZvciBwdWJsaWNhdGlvbiBcIiVz XCIiLAorCQkJCQkJCQkicHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QiLCBwdWJuYW1lKSwKKwkJ CQkJCSBlcnJkZXRhaWwoInBhcnRpdGlvbiB0YWJsZSBcIiVzXCIgaW4gcHVibGljYXRpb24gY29u dGFpbnMgYSBmb3JlaWduIHBhcnRpdGlvbiIsCisJCQkJCQkJCSAgIGdldF9yZWxfbmFtZShyZWxp ZCkpKSk7CisJCQl9CisKKwkJCXRhYmxlX2Nsb3NlKHB1YnJlbCwgTm9Mb2NrKTsKKwkJfQorCisJ CWxpc3RfZnJlZShyZWxpZHMpOworCX0KKwogCS8qIEV2ZXJ5dGhpbmcgb2ssIGZvcm0gYSBuZXcg dHVwbGUuICovCiAJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOwogCW1lbXNldChu dWxscywgZmFsc2UsIHNpemVvZihudWxscykpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRl eCAxMWZjYjUxYTE2NS4uNWM0MDA3ZGJlZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBA IC0xOTkyMyw2ICsxOTkyMywxMCBAQCBRdWV1ZVBhcnRpdGlvbkNvbnN0cmFpbnRWYWxpZGF0aW9u KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHNjYW5yZWwsCiAgKiBBTFRFUiBUQUJMRSA8bmFtZT4g QVRUQUNIIFBBUlRJVElPTiA8cGFydGl0aW9uLW5hbWU+IEZPUiBWQUxVRVMKICAqCiAgKiBSZXR1 cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIG5ld2x5IGF0dGFjaGVkIHBhcnRpdGlvbi4KKyAqCisgKiBJ ZiB0aGUgd291bGQtYmUgcGFydGl0aW9uIGlzIGEgZm9yZWlnbiB0YWJsZSBvciBhIHBhcnRpdGlv bmVkIHRhYmxlIHdpdGgKKyAqIGZvcmVpZ24gcGFydGl0aW9uLCB2ZXJpZnkgdGhhdCB0aGUgcGFy dGl0aW9uZWQgdGFibGUgaXMgbm90IGluIGEgcHVibGljYXRpb24KKyAqIHdpdGggcHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3Q9dHJ1ZS4gU2VlIGNoZWNrX2ZvcmVpZ25fdGFibGVzIGZvciBkZXRh aWxzLgogICovCiBzdGF0aWMgT2JqZWN0QWRkcmVzcwogQVRFeGVjQXR0YWNoUGFydGl0aW9uKExp c3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCkBAIC0yMDA2Nyw2 ICsyMDA3MSw2MSBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRp b24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09C SkVDVF9UWVBFKSwKIAkJCQkgZXJybXNnKCJjYW5ub3QgYXR0YWNoIHRlbXBvcmFyeSByZWxhdGlv biBvZiBhbm90aGVyIHNlc3Npb24gYXMgcGFydGl0aW9uIikpKTsKIAorCS8qCisJICogQ2hlY2sg aWYgYXR0YWNocmVsIGlzIGEgZm9yZWlnbiB0YWJsZSBvciBhIHBhcnRpdGlvbmVkIHRhYmxlIHdp dGgKKwkgKiBmb3JlaWduIHBhcnRpdGlvbiBhbmQgcmVsIGlzIG5vdCBwYXJ0IG9mIHB1YmxpY2F0 aW9uIHdpdGggb3B0aW9uCisJICogcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgYXMgdHJ1ZS4K KwkgKi8KKwlpZiAoYXR0YWNocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9GT1JFSUdO X1RBQkxFIHx8CisJCWNoZWNrX3BhcnRyZWxfaGFzX2ZvcmVpZ25fdGFibGUoYXR0YWNocmVsKSkK Kwl7CisJCU9pZAkJCXNjaGVtYWlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKTsKKwkJTGlz dAkgICAqcHVib2lkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbC0+cmRfaWQpOworCQlM aXN0CSAgICphbmNlc3RvcnM7CisJCWNoYXIJICAgKnJlbG5hbWUgPSBnZXRfcmVsX25hbWUocmVs LT5yZF9pZCk7CisJCWNoYXIJICAgKmF0dGFjaHJlbG5hbWUgPSBnZXRfcmVsX25hbWUoYXR0YWNo cmVsLT5yZF9pZCk7CisKKwkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lk cywgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKCkpOworCQlwdWJvaWRzID0gbGlzdF9jb25jYXRf dW5pcXVlX29pZChwdWJvaWRzLCBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKKwkJ YW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsLT5yZF9pZCk7CisKKwkJZm9y ZWFjaF9vaWQoYW5jZXN0b3IsIGFuY2VzdG9ycykKKwkJeworCQkJcHVib2lkcyA9IGxpc3RfY29u Y2F0X3VuaXF1ZV9vaWQocHVib2lkcywKKwkJCQkJCQkJCQkJIEdldFJlbGF0aW9uUHVibGljYXRp b25zKGFuY2VzdG9yKSk7CisJCQlzY2hlbWFpZCA9IGdldF9yZWxfbmFtZXNwYWNlKGFuY2VzdG9y KTsKKwkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCisJCQkJCQkJ CQkJCSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKKwkJfQorCisJCWxpc3RfZnJl ZShhbmNlc3RvcnMpOworCisJCWZvcmVhY2hfb2lkKHB1Ym9pZCwgcHVib2lkcykKKwkJeworCQkJ UHVibGljYXRpb24gKnB1YiA9IEdldFB1YmxpY2F0aW9uKHB1Ym9pZCk7CisKKwkJCWlmIChwdWIt PnB1YnZpYXJvb3QpCisJCQl7CisJCQkJaWYgKGF0dGFjaHJlbC0+cmRfcmVsLT5yZWxraW5kID09 IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJy Y29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJCQkgZXJybXNnKCJjYW5ub3Qg YXR0YWNoIGZvcmVpZ24gdGFibGUgXCIlc1wiIHRvIHBhcnRpdGlvbiB0YWJsZSBcIiVzXCIiLAor CQkJCQkJCQkJYXR0YWNocmVsbmFtZSwgcmVsbmFtZSksCisJCQkJCQkJIGVycmRldGFpbCgicGFy dGl0aW9uIHRhYmxlIFwiJXNcIiBpcyBwdWJsaXNoZWQgd2l0aCBvcHRpb24gcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QiLAorCQkJCQkJCQkJICAgcmVsbmFtZSkpKTsKKwkJCQllbHNlCisJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQ RSksCisJCQkJCQkJIGVycm1zZygiY2Fubm90IGF0dGFjaCB0YWJsZSBcIiVzXCIgd2l0aCBmb3Jl aWduIHBhcnRpdGlvbiB0byBwYXJ0aXRpb24gdGFibGUgXCIlc1wiIiwKKwkJCQkJCQkJCWF0dGFj aHJlbG5hbWUsIHJlbG5hbWUpLAorCQkJCQkJCSBlcnJkZXRhaWwoInBhcnRpdGlvbiB0YWJsZSBc IiVzXCIgaXMgcHVibGlzaGVkIHdpdGggb3B0aW9uIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 IiwKKwkJCQkJCQkJCSAgIHJlbG5hbWUpKSk7CisJCQl9CisJCX0KKworCQlsaXN0X2ZyZWUocHVi b2lkcyk7CisJfQorCiAJLyoKIAkgKiBDaGVjayBpZiBhdHRhY2hyZWwgaGFzIGFueSBpZGVudGl0 eSBjb2x1bW5zIG9yIGFueSBjb2x1bW5zIHRoYXQgYXJlbid0CiAJICogaW4gdGhlIHBhcmVudC4K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCA0OGM3ZDFhODYxNS4uZTI5MTlk YTI1NDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE5LDYgKzE5LDcg QEAKIAogI2luY2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmpl Y3RhZGRyZXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzcy5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfcHVibGljYXRpb25fZC5oIgkvKiBJV1lVIHByYWdtYTogZXhwb3J0ICovCiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0KQEAgLTE5MSw0ICsxOTIsOCBAQCBleHRlcm4gQml0bWFwc2V0ICpw dWJfY29sbGlzdF90b19iaXRtYXBzZXQoQml0bWFwc2V0ICpjb2x1bW5zLCBEYXR1bSBwdWJjb2xz LAogZXh0ZXJuIEJpdG1hcHNldCAqcHViX2Zvcm1fY29sc19tYXAoUmVsYXRpb24gcmVsYXRpb24s CiAJCQkJCQkJCQlQdWJsaXNoR2VuY29sc1R5cGUgaW5jbHVkZV9nZW5jb2xzX3R5cGUpOwogCitl eHRlcm4gYm9vbCBjaGVja19wYXJ0cmVsX2hhc19mb3JlaWduX3RhYmxlKFJlbGF0aW9uIHJlbCk7 CisKK2V4dGVybiB2b2lkIGNoZWNrX2ZvcmVpZ25fdGFibGVzKE9pZCBzY2hlbWFpZCwgY2hhciAq cHVibmFtZSk7CisKICNlbmRpZgkJCQkJCQkvKiBQR19QVUJMSUNBVElPTl9IICovCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDRkZTk2YzA0ZjlkLi42YTBj MjQ1YmQ2MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlv bi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAg LTE5MjQsNiArMTkyNCw5NSBAQCBEUk9QIFBVQkxJQ0FUSU9OIHB1YjE7CiBEUk9QIFBVQkxJQ0FU SU9OIHB1YjI7CiBEUk9QIFRBQkxFIGdlbmNvbHM7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBUZXN0IHdoZW4gZm9yZWlnbiB0YWJsZSBpcyBhIHBhcnRpdGlvbiBvZiBhIHBhcnRp dGlvbmVkIHRhYmxlIG9uIHdoaWNoCistLSBwdWJsaWNhdGlvbiBpcyBjcmVhdGVkCitTRVQgY2xp ZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgRk9SRUlHTiBEQVRBIFdSQVBQRVIg dGVzdF9mZHc7CitDUkVBVEUgU0VSVkVSIGZkd19zZXJ2ZXIgRk9SRUlHTiBEQVRBIFdSQVBQRVIg dGVzdF9mZHc7CitDUkVBVEUgU0NIRU1BIHNjaDM7CitDUkVBVEUgVEFCTEUgc2NoMy50bWFpbihp ZCBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShpZCk7CitDUkVBVEUgVEFCTEUgc2NoMy5wYXJ0MSBQ QVJUSVRJT04gT0Ygc2NoMy50bWFpbiBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsKK0NSRUFU RSBUQUJMRSBzY2gzLnBhcnQyKGlkIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGlkKTsKK0NSRUFU RSBGT1JFSUdOIFRBQkxFIHNjaDMucGFydDJfMSBQQVJUSVRJT04gT0Ygc2NoMy5wYXJ0MiBGT1Ig VkFMVUVTIEZST00gKDUpIFRPICgxMCkgU0VSVkVSIGZkd19zZXJ2ZXI7CitBTFRFUiBUQUJMRSBz Y2gzLnRtYWluIEFUVEFDSCBQQVJUSVRJT04gc2NoMy5wYXJ0MiBGT1IgVkFMVUVTIEZST00gKDUp IFRPICgxMCk7CistLSBDYW4ndCBjcmVhdGUgcHVibGljYXRpb25zIHdpdGggcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QgPSB0cnVlLCBpZiB0YWJsZQorLS0gaGFzIGEgZm9yZWlnbiBwYXJ0aXRp b24KK0NSRUFURSBQVUJMSUNBVElPTiBwdWIxIEZPUiBUQUJMRSBzY2gzLnRtYWluIFdJVEggKHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKK0VSUk9SOiAgY2Fubm90IHNldCBwYXJhbWV0ZXIg InB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IiB0byB0cnVlIGZvciBwdWJsaWNhdGlvbiAicHVi MSIKK0RFVEFJTDogIHBhcnRpdGlvbiB0YWJsZSAidG1haW4iIGluIHB1YmxpY2F0aW9uIGNvbnRh aW5zIGEgZm9yZWlnbiBwYXJ0aXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiBwdWIxIEZPUiBUQUJM RVMgSU4gU0NIRU1BIHNjaDMgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOworRVJS T1I6ICBjYW5ub3Qgc2V0IHBhcmFtZXRlciAicHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QiIHRv IHRydWUgZm9yIHB1YmxpY2F0aW9uICJwdWIxIgorREVUQUlMOiAgcGFydGl0aW9uIHRhYmxlICJ0 bWFpbiIgaW4gcHVibGljYXRpb24gY29udGFpbnMgYSBmb3JlaWduIHBhcnRpdGlvbgorQ1JFQVRF IFBVQkxJQ0FUSU9OIHB1YjEgRk9SIEFMTCBUQUJMRVMgV0lUSCAocHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QpOworRVJST1I6ICBjYW5ub3Qgc2V0IHBhcmFtZXRlciAicHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QiIHRvIHRydWUgZm9yIHB1YmxpY2F0aW9uICJwdWIxIgorREVUQUlMOiAgcGFy dGl0aW9uIHRhYmxlICJ0bWFpbiIgaW4gcHVibGljYXRpb24gY29udGFpbnMgYSBmb3JlaWduIHBh cnRpdGlvbgorLS0gVGVzdCB3aGVuIGEgcGFydGl0aW9uZWQgdGFibGUgd2l0aCBmb3JlaWduIHRh YmxlIGFzIGEgcGFydGl0aW9uIGlzIGF0dGFjaGVkCistLSB0byBwYXJ0aXRpb25lZCB0YWJsZSB3 aGljaCBpcyBhbHJlYWR5IHB1Ymxpc2hlZAorQUxURVIgVEFCTEUgc2NoMy50bWFpbiBERVRBQ0gg UEFSVElUSU9OIHNjaDMucGFydDI7CitDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgVEFCTEUg c2NoMy50bWFpbiBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CitBTFRFUiBUQUJM RSBzY2gzLnRtYWluIEFUVEFDSCBQQVJUSVRJT04gc2NoMy5wYXJ0MiBGT1IgVkFMVUVTIEZST00g KDUpIFRPICgxMCk7CitFUlJPUjogIGNhbm5vdCBhdHRhY2ggdGFibGUgInBhcnQyIiB3aXRoIGZv cmVpZ24gcGFydGl0aW9uIHRvIHBhcnRpdGlvbiB0YWJsZSAidG1haW4iCitERVRBSUw6ICBwYXJ0 aXRpb24gdGFibGUgInRtYWluIiBpcyBwdWJsaXNoZWQgd2l0aCBvcHRpb24gcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QKKy0tIENhbid0IGNyZWF0ZSBmb3JlaWduIHBhcnRpdGlvbiBvZiBwdWJs aXNoZWQgdGFibGUgd2l0aAorLS0gcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlCitD UkVBVEUgRk9SRUlHTiBUQUJMRSBzY2gzLnBhcnQzXzEgUEFSVElUSU9OIE9GIHNjaDMudG1haW4g Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSBTRVJWRVIgZmR3X3NlcnZlcjsKK0VSUk9SOiAg Y2Fubm90IGNyZWF0ZSB0YWJsZSBmb3JlaWduIHBhcnRpdGlvbiAicGFydDNfMSIKK0RFVEFJTDog IHBhcnRpdGlvbiB0YWJsZSAidG1haW4iIGlzIHB1Ymxpc2hlZCB3aXRoIG9wdGlvbiBwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdAorLS0gQ2FuJ3QgYXR0YWNoIGZvcmVpZ24gcGFydGl0aW9uIHRv IHB1Ymxpc2hlZCB0YWJsZSB3aXRoCistLSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRy dWUKK0NSRUFURSBGT1JFSUdOIFRBQkxFIHNjaDMucGFydDNfMihpZCBpbnQpIFNFUlZFUiBmZHdf c2VydmVyOworQUxURVIgVEFCTEUgc2NoMy50bWFpbiBBVFRBQ0ggUEFSVElUSU9OIHNjaDMucGFy dDNfMiBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApOworRVJST1I6ICBjYW5ub3QgYXR0YWNo IGZvcmVpZ24gdGFibGUgInBhcnQzXzIiIHRvIHBhcnRpdGlvbiB0YWJsZSAidG1haW4iCitERVRB SUw6ICBwYXJ0aXRpb24gdGFibGUgInRtYWluIiBpcyBwdWJsaXNoZWQgd2l0aCBvcHRpb24gcHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3QKK0NSRUFURSBTQ0hFTUEgc2NoNDsKK0NSRUFURSBUQUJM RSBzY2g0LnRtYWluKGlkIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGlkKTsKKy0tIHB1YmxpY2F0 aW9uIGNyZWF0ZWQgd2l0aCBGT1IgVEFCTEVTIElOIFNDSEVNQQorRFJPUCBQVUJMSUNBVElPTiBw dWIxOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgc2NoNCBX SVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CistLSBDYW4ndCBjcmVhdGUgZm9yZWln biBwYXJ0aXRpb24gb2YgcHVibGlzaGVkIHRhYmxlIHdpdGgKKy0tIHB1Ymxpc2hfdmlhX3BhcnRp dGlvbl9yb290ID0gdHJ1ZQorQ1JFQVRFIEZPUkVJR04gVEFCTEUgc2NoMy5wYXJ0M18xIFBBUlRJ VElPTiBPRiBzY2g0LnRtYWluIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSkgU0VSVkVSIGZk d19zZXJ2ZXI7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgdGFibGUgZm9yZWlnbiBwYXJ0aXRpb24g InBhcnQzXzEiCitERVRBSUw6ICBwYXJ0aXRpb24gdGFibGUgInRtYWluIiBpcyBwdWJsaXNoZWQg d2l0aCBvcHRpb24gcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QKKy0tIENhbid0IGF0dGFjaCBm b3JlaWduIHBhcnRpdGlvbiB0byBwdWJsaXNoZWQgdGFibGUgd2l0aAorLS0gcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QgPSB0cnVlCitBTFRFUiBUQUJMRSBzY2g0LnRtYWluIEFUVEFDSCBQQVJU SVRJT04gc2NoMy5wYXJ0M18yIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCk7CitFUlJPUjog IGNhbm5vdCBhdHRhY2ggZm9yZWlnbiB0YWJsZSAicGFydDNfMiIgdG8gcGFydGl0aW9uIHRhYmxl ICJ0bWFpbiIKK0RFVEFJTDogIHBhcnRpdGlvbiB0YWJsZSAidG1haW4iIGlzIHB1Ymxpc2hlZCB3 aXRoIG9wdGlvbiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdAorRFJPUCBQVUJMSUNBVElPTiBw dWIxOworLS0gVGVzdCB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UKKy0t IEZvcmVpZ24gcGFydGl0aW9ucyBhcmUgc2tpcHBlZCBieSBkZWZhdWx0CitDUkVBVEUgUFVCTElD QVRJT04gcHViMSBGT1IgVEFCTEUgc2NoMy50bWFpbjsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWIy IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHNjaDM7CitDUkVBVEUgUFVCTElDQVRJT04gcHViMyBGT1Ig QUxMIFRBQkxFUzsKKy0tIENyZWF0ZSBmb3JlaWduIHBhcnRpdGlvbiBvZiBwdWJsaXNoZWQgdGFi bGUgd2l0aAorLS0gcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZQorQ1JFQVRFIEZP UkVJR04gVEFCTEUgc2NoMy5wYXJ0M18xIFBBUlRJVElPTiBPRiBzY2gzLnRtYWluIEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICgxNSkgU0VSVkVSIGZkd19zZXJ2ZXI7CistLSBBdHRhY2ggZm9yZWln biBwYXJ0aXRpb24gdG8gcHVibGlzaGVkIHRhYmxlCistLSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCA9IGZhbHNlCitBTFRFUiBUQUJMRSBzY2gzLnRtYWluIEFUVEFDSCBQQVJUSVRJT04gc2No My5wYXJ0M18yIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCk7CistLSBDaGVjayB0aGUgcHVi bGlzaGVkIHRhYmxlcworU0VMRUNUIHB1Ym5hbWUsIHRhYmxlbmFtZSBGUk9NIHBnX3B1YmxpY2F0 aW9uX3RhYmxlcyBXSEVSRSBzY2hlbWFuYW1lIGluICgnc2NoMycsICdzY2g0JykgT1JERVIgQlkg cHVibmFtZSwgdGFibGVuYW1lOworIHB1Ym5hbWUgfCB0YWJsZW5hbWUgCistLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyBwdWIxICAgIHwgcGFydDEKKyBwdWIyICAgIHwgcGFydDEKKyBwdWIzICAgIHwg cGFydDEKKygzIHJvd3MpCisKKy0tIENhbid0IGFsdGVyIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290IHRvIHRydWUsIGlmIHB1YmxpY2F0aW9uIGFscmVhZHkgaGF2ZQorLS0gZm9yZWlnbiBwYXJ0 aXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHB1YjEgU0VUIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCk7CitFUlJPUjogIGNhbm5vdCBzZXQgcGFyYW1ldGVyICJwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCIgdG8gdHJ1ZSBmb3IgcHVibGljYXRpb24gInB1YjEiCitERVRBSUw6ICBwYXJ0aXRp b24gdGFibGUgInRtYWluIiBpbiBwdWJsaWNhdGlvbiBjb250YWlucyBhIGZvcmVpZ24gcGFydGl0 aW9uCitEUk9QIFBVQkxJQ0FUSU9OIHB1YjE7CitEUk9QIFBVQkxJQ0FUSU9OIHB1YjI7CitEUk9Q IFBVQkxJQ0FUSU9OIHB1YjM7CitEUk9QIFNDSEVNQSBzY2gzIENBU0NBREU7CitEUk9QIFNDSEVN QSBzY2g0IENBU0NBREU7CitEUk9QIFNFUlZFUiBmZHdfc2VydmVyOworRFJPUCBGT1JFSUdOIERB VEEgV1JBUFBFUiB0ZXN0X2ZkdzsKIFJFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKIERST1Ag Uk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIsIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7 CiBEUk9QIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyX2R1bW15OwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHVibGljYXRpb24uc3FsCmluZGV4IDY4MDAxZGU0MDAwLi40OWM5ZDk4YjY2OCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMTIyMyw2ICsxMjIzLDg3IEBAIERST1Ag UFVCTElDQVRJT04gcHViMjsKIERST1AgVEFCTEUgZ2VuY29sczsKIAogUkVTRVQgY2xpZW50X21p bl9tZXNzYWdlczsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorCistLSBUZXN0IHdoZW4gZm9yZWlnbiB0YWJsZSBpcyBhIHBhcnRpdGlv biBvZiBhIHBhcnRpdGlvbmVkIHRhYmxlIG9uIHdoaWNoCistLSBwdWJsaWNhdGlvbiBpcyBjcmVh dGVkCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgRk9SRUlHTiBE QVRBIFdSQVBQRVIgdGVzdF9mZHc7CitDUkVBVEUgU0VSVkVSIGZkd19zZXJ2ZXIgRk9SRUlHTiBE QVRBIFdSQVBQRVIgdGVzdF9mZHc7CisKK0NSRUFURSBTQ0hFTUEgc2NoMzsKK0NSRUFURSBUQUJM RSBzY2gzLnRtYWluKGlkIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGlkKTsKK0NSRUFURSBUQUJM RSBzY2gzLnBhcnQxIFBBUlRJVElPTiBPRiBzY2gzLnRtYWluIEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDUpOworQ1JFQVRFIFRBQkxFIHNjaDMucGFydDIoaWQgaW50KSBQQVJUSVRJT04gQlkgUkFO R0UoaWQpOworQ1JFQVRFIEZPUkVJR04gVEFCTEUgc2NoMy5wYXJ0Ml8xIFBBUlRJVElPTiBPRiBz Y2gzLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoNSkgVE8gKDEwKSBTRVJWRVIgZmR3X3NlcnZlcjsK K0FMVEVSIFRBQkxFIHNjaDMudG1haW4gQVRUQUNIIFBBUlRJVElPTiBzY2gzLnBhcnQyIEZPUiBW QUxVRVMgRlJPTSAoNSkgVE8gKDEwKTsKKworLS0gQ2FuJ3QgY3JlYXRlIHB1YmxpY2F0aW9ucyB3 aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSwgaWYgdGFibGUKKy0tIGhhcyBh IGZvcmVpZ24gcGFydGl0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgVEFCTEUgc2No My50bWFpbiBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CitDUkVBVEUgUFVCTElD QVRJT04gcHViMSBGT1IgVEFCTEVTIElOIFNDSEVNQSBzY2gzIFdJVEggKHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290KTsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWIxIEZPUiBBTEwgVEFCTEVTIFdJ VEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKworLS0gVGVzdCB3aGVuIGEgcGFydGl0 aW9uZWQgdGFibGUgd2l0aCBmb3JlaWduIHRhYmxlIGFzIGEgcGFydGl0aW9uIGlzIGF0dGFjaGVk CistLSB0byBwYXJ0aXRpb25lZCB0YWJsZSB3aGljaCBpcyBhbHJlYWR5IHB1Ymxpc2hlZAorQUxU RVIgVEFCTEUgc2NoMy50bWFpbiBERVRBQ0ggUEFSVElUSU9OIHNjaDMucGFydDI7CitDUkVBVEUg UFVCTElDQVRJT04gcHViMSBGT1IgVEFCTEUgc2NoMy50bWFpbiBXSVRIIChwdWJsaXNoX3ZpYV9w YXJ0aXRpb25fcm9vdCk7CitBTFRFUiBUQUJMRSBzY2gzLnRtYWluIEFUVEFDSCBQQVJUSVRJT04g c2NoMy5wYXJ0MiBGT1IgVkFMVUVTIEZST00gKDUpIFRPICgxMCk7CisKKy0tIENhbid0IGNyZWF0 ZSBmb3JlaWduIHBhcnRpdGlvbiBvZiBwdWJsaXNoZWQgdGFibGUgd2l0aAorLS0gcHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlCitDUkVBVEUgRk9SRUlHTiBUQUJMRSBzY2gzLnBhcnQz XzEgUEFSVElUSU9OIE9GIHNjaDMudG1haW4gRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSBT RVJWRVIgZmR3X3NlcnZlcjsKKworLS0gQ2FuJ3QgYXR0YWNoIGZvcmVpZ24gcGFydGl0aW9uIHRv IHB1Ymxpc2hlZCB0YWJsZSB3aXRoCistLSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRy dWUKK0NSRUFURSBGT1JFSUdOIFRBQkxFIHNjaDMucGFydDNfMihpZCBpbnQpIFNFUlZFUiBmZHdf c2VydmVyOworQUxURVIgVEFCTEUgc2NoMy50bWFpbiBBVFRBQ0ggUEFSVElUSU9OIHNjaDMucGFy dDNfMiBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApOworCitDUkVBVEUgU0NIRU1BIHNjaDQ7 CitDUkVBVEUgVEFCTEUgc2NoNC50bWFpbihpZCBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShpZCk7 CisKKy0tIHB1YmxpY2F0aW9uIGNyZWF0ZWQgd2l0aCBGT1IgVEFCTEVTIElOIFNDSEVNQQorRFJP UCBQVUJMSUNBVElPTiBwdWIxOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEgRk9SIFRBQkxFUyBJ TiBTQ0hFTUEgc2NoNCBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CisKKy0tIENh bid0IGNyZWF0ZSBmb3JlaWduIHBhcnRpdGlvbiBvZiBwdWJsaXNoZWQgdGFibGUgd2l0aAorLS0g cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlCitDUkVBVEUgRk9SRUlHTiBUQUJMRSBz Y2gzLnBhcnQzXzEgUEFSVElUSU9OIE9GIHNjaDQudG1haW4gRk9SIFZBTFVFUyBGUk9NICgxMCkg VE8gKDE1KSBTRVJWRVIgZmR3X3NlcnZlcjsKKworLS0gQ2FuJ3QgYXR0YWNoIGZvcmVpZ24gcGFy dGl0aW9uIHRvIHB1Ymxpc2hlZCB0YWJsZSB3aXRoCistLSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCA9IHRydWUKK0FMVEVSIFRBQkxFIHNjaDQudG1haW4gQVRUQUNIIFBBUlRJVElPTiBzY2gz LnBhcnQzXzIgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKTsKK0RST1AgUFVCTElDQVRJT04g cHViMTsKKworLS0gVGVzdCB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UK Ky0tIEZvcmVpZ24gcGFydGl0aW9ucyBhcmUgc2tpcHBlZCBieSBkZWZhdWx0CitDUkVBVEUgUFVC TElDQVRJT04gcHViMSBGT1IgVEFCTEUgc2NoMy50bWFpbjsKK0NSRUFURSBQVUJMSUNBVElPTiBw dWIyIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHNjaDM7CitDUkVBVEUgUFVCTElDQVRJT04gcHViMyBG T1IgQUxMIFRBQkxFUzsKKworLS0gQ3JlYXRlIGZvcmVpZ24gcGFydGl0aW9uIG9mIHB1Ymxpc2hl ZCB0YWJsZSB3aXRoCistLSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlCitDUkVB VEUgRk9SRUlHTiBUQUJMRSBzY2gzLnBhcnQzXzEgUEFSVElUSU9OIE9GIHNjaDMudG1haW4gRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSBTRVJWRVIgZmR3X3NlcnZlcjsKKworLS0gQXR0YWNo IGZvcmVpZ24gcGFydGl0aW9uIHRvIHB1Ymxpc2hlZCB0YWJsZQorLS0gcHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QgPSBmYWxzZQorQUxURVIgVEFCTEUgc2NoMy50bWFpbiBBVFRBQ0ggUEFSVElU SU9OIHNjaDMucGFydDNfMiBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApOworCistLSBDaGVj ayB0aGUgcHVibGlzaGVkIHRhYmxlcworU0VMRUNUIHB1Ym5hbWUsIHRhYmxlbmFtZSBGUk9NIHBn X3B1YmxpY2F0aW9uX3RhYmxlcyBXSEVSRSBzY2hlbWFuYW1lIGluICgnc2NoMycsICdzY2g0Jykg T1JERVIgQlkgcHVibmFtZSwgdGFibGVuYW1lOworCistLSBDYW4ndCBhbHRlciBwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCB0byB0cnVlLCBpZiBwdWJsaWNhdGlvbiBhbHJlYWR5IGhhdmUKKy0t IGZvcmVpZ24gcGFydGl0aW9uCitBTFRFUiBQVUJMSUNBVElPTiBwdWIxIFNFVCAocHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3QpOworCitEUk9QIFBVQkxJQ0FUSU9OIHB1YjE7CitEUk9QIFBVQkxJ Q0FUSU9OIHB1YjI7CitEUk9QIFBVQkxJQ0FUSU9OIHB1YjM7CitEUk9QIFNDSEVNQSBzY2gzIENB U0NBREU7CitEUk9QIFNDSEVNQSBzY2g0IENBU0NBREU7CitEUk9QIFNFUlZFUiBmZHdfc2VydmVy OworRFJPUCBGT1JFSUdOIERBVEEgV1JBUFBFUiB0ZXN0X2ZkdzsKKwogUkVTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OOwogRFJPUCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciwgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyMjsKIERST1AgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXJf ZHVtbXk7Ci0tIAoyLjM0LjEKCg== --0000000000004e38be0631f050fa--