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.96) (envelope-from ) id 1wVAMD-001kGy-2F for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Jun 2026 15:51:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wVAMC-007WWg-1Z for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Jun 2026 15:51:44 +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.96) (envelope-from ) id 1wV5zB-006GHO-3A for pgsql-hackers@lists.postgresql.org; Thu, 04 Jun 2026 11:11:42 +0000 Received: from mail-dl1-x1234.google.com ([2607:f8b0:4864:20::1234]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wV5z6-000000013pL-3YVf for pgsql-hackers@lists.postgresql.org; Thu, 04 Jun 2026 11:11:37 +0000 Received: by mail-dl1-x1234.google.com with SMTP id a92af1059eb24-137ec563a95so578367c88.0 for ; Thu, 04 Jun 2026 04:11:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780571495; cv=none; d=google.com; s=arc-20240605; b=Vq4gR78H4+V50UTqVNz1REB1AYVgmuHs8N2CAXER6JI0HvBTrvgOLlcN4aSyT40A7G FevSheWVY76Y3SdD1nCuJ2FNwp4frN+FbhIZdeAs1aseNZbGax1IDcT5+2GY7O7QnJtA J5TQGDBTXlo3MhA7e3CA3doaEvgbqajLSXCJpXepsuk7fYGkivtpWO3+kNtwax/KRNjB 5I3kp1z6lgaocuGs53Qfr9/yNv73Lxjf+tIqzkIWdB1LkEpFDl+nfo4NiyNjVWjwIinT wNfHU4XprO27Ta0XsvCiuAgC0MePC2RaiAlabmiXAtM3mwCw5CRH7XUhpdNHT38WCQKx i32g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=W5UEq7FT9qcntArnBv1M16CShxT9VBk34a7E0x/aov8=; fh=lPOISbR+UnbU+cKT6rGuyrek5qVpDurVPNS4b2aRefE=; b=Mugiv8qtpRM6KMAVeIV3+V+59I8I2j6sJ8NL6CbfO+Zheg0uDH54k4+g2Qsp7u4yRc exD7C84gUN5TuC4RJkDY6+nherNT1hnHhibvOYbv5N9aQ8U3bCP3dnhkFo3baaOkkJu1 87M0b/uoBLi9rPq5oe/JuU0X3dS/IWn4HZmPD8vdMCeVpxRBDGz5QCb3zkym92RWqvSW Pw5xy2rmWBCnhqs4TwMoGY0X55eF8god9I/1jSsjRKc4qCps91Wm1BF9a7LavrcQX++E wXwkEHUf0zMwoRua8ghgw3fScZSA1MrgrHtrE32czQ4vuXZabTZjQ5fQ22F8VHuF+G9D TUow==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1780571495; x=1781176295; 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=W5UEq7FT9qcntArnBv1M16CShxT9VBk34a7E0x/aov8=; b=EaJcJF5/uIpmyRZRBvC8YiVepUxtAGtLobUtoR0nsTqXp9Q+dvPUqpX0I3nyoX8wUC +PHQuHBfNmo98+8GhcUe5dhw4K0QN46Y9e7nthwIotfXhR0/C58EJde/MFkZeeHPY7OP NVHr4NFjo6DqH9qnPCbuW7BfbKB18G8fC+cjrlGpEm693sG88XYrVpHZA0jEwzbniiAM 8DhMjPogAjzcfhzKYCuXFU0itaIYiwjm0dvXqLw27qwXgiDUAtEmqrOwP78YXXMY4fG0 Tkt/NYgmIIb7chwUuFOa8TPF6v85YNTV8OamojMcptgoHdL7I9pArFzMtj3PGEqV7uXa PcMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780571495; x=1781176295; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=W5UEq7FT9qcntArnBv1M16CShxT9VBk34a7E0x/aov8=; b=M5VIUEBI5YOBpQFDK7B5wdixijsAFZ7ZRDLDqJGy07GoBgZX/QdbrDpWTw9+VbE73n xFD1/yiD4FoOQisUFZTkwQC6yWkXRiD/9vkEHvjMZ9s2vCTrqroZ0SDkqkSk+6ejIuEA 7tZMLQEi2VylTUSH71QXzbWXxfH66kEMx6p7/ha6WLJaKDoTtUBwgK2zCqAGhdzxQRoC hVIEnlj8nB5uzfenpgKvzYitK4mBHfyKuU3WoCAHx0AjOZdvvlhxkDfVKn7OmaQ9u10Y GUAaz63Q0cowWdIXWZgfV+Za7/JllvqDjpom84ySbBoDJrxR0HJ10hU8j7TJV3dhLTWe 4cRQ== X-Gm-Message-State: AOJu0YyBpxZBlefNq8/Ikf72UYiMoN8WtCyS8C1tOyLlt+uigt5xs+HI tk8E6nsIWzIgcqjZbrRyLD/QejTzXx/X2vssFzilvcRM/WvvFu/y0+f1bGtR/LwFLZf/NOcJ8NM aGZlGe0sj1mrWqhBgUWSdz1T30X/h7ESP5JbYEBNnLqf1qySkrlb2Udgo X-Gm-Gg: Acq92OHFtvdzFkPd7vvaaaVzn6FmLv/Wqf50HJKS+Gy9GYeeoIPbcv/3AJ09PK10Dig Fc9bSd4HiYlH+b/LzYzK8q/ibmucrZHVOha85oGXqFCVa0Upvb8/4yBReu/+3CQFmTXBYEbm7ha uXdiJCnpx6VOcABIAaCnQHze/nBgNulwacLhOSZAlrU1SSKTIiJLk6dOekTWazwYUG7uZww0QKj nqQDMTQeWEotZ0PWAceyBP57Hafe2b0J0MU/yZoLIsCQq8fVRo6sgDYctMgB7SwS/4tfRdU/Y6t bNOYWxjRv7/imwHdOwUdZEfEdT270GI= X-Received: by 2002:a05:7022:43a2:b0:137:fc94:9758 with SMTP id a92af1059eb24-137fc949bafmr1839171c88.19.1780571494696; Thu, 04 Jun 2026 04:11:34 -0700 (PDT) MIME-Version: 1.0 References: <20260604085717.12549-1-markoog@gmail.com> In-Reply-To: <20260604085717.12549-1-markoog@gmail.com> From: Marko Grujic Date: Thu, 4 Jun 2026 13:11:22 +0200 X-Gm-Features: AVHnY4I8_4NppKJ49v5FKUijrkXVHX_duXrzS7lUodu_CAaAh5P_JtHiKzpZgTc Message-ID: Subject: Re: [PATCH v1] [BUG #19507] Prevent constraint name conflicts in partition trees spanning multiple schemas To: pgsql-hackers@lists.postgresql.org Cc: Marko Grujic Content-Type: multipart/mixed; boundary="00000000000070e36006536b9bf7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000070e36006536b9bf7 Content-Type: multipart/alternative; boundary="00000000000070e35e06536b9bf5" --00000000000070e35e06536b9bf5 Content-Type: text/plain; charset="UTF-8" Updating the patch with some minor refinements: - remove redundant list_free(inheritors) - use foreach_oid in place of foreach - explain input args to the new ChooseConstraintNameForRelation function Also reporting that I'm seeing this bug manifest all the way back to PG14 (haven't looked further since versions older than that are EOLd). Importantly, besides latest master, the current patch applies cleanly to PG18 (plain git apply). In addition, it also applies without any conflicts to PG17, PG16 and PG15 (git apply --3way). It doesn't apply cleanly to PG14 (missing src/test/regress/{sql, expected}/constraints.{sql, out} files), but since its EOL is a couple of months away I don't think back-porting this to it is that important anyway. Thanks, Marko --00000000000070e35e06536b9bf5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Updating the patch with some minor refinements:
=
- remove redundant=C2=A0list_free(inheritors)
- use=C2=A0for= each_oid in place of foreach
- explain input args=C2=A0to the new= =C2=A0ChooseConstraintNameForRelation function

Als= o reporting that I'm seeing this bug manifest all the way back to PG14= =C2=A0
(haven't looked further since versions older than that= are EOLd).

Importantly, besides latest master, th= e current patch applies cleanly to PG18 (plain=C2=A0git apply).
I= n addition, it also applies without any conflicts to PG17, PG16 and PG15 (g= it apply --3way).

It doesn't apply cleanly to = PG14 (missing=C2=A0src/test/regress/{sql, expected}/constraints.{sql, out} = files),
but since its EOL is a couple of months away I don't = think back-porting this to it is that important anyway.

Thanks,
Marko

--00000000000070e35e06536b9bf5-- --00000000000070e36006536b9bf7 Content-Type: application/octet-stream; name="0001-Prevent-constraint-name-conflicts-in-partition-trees.patch" Content-Disposition: attachment; filename="0001-Prevent-constraint-name-conflicts-in-partition-trees.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpzdtiw80 RnJvbSA3YTc2NGQ5NWYxYTcxZWE0MzRkMzY4ZmRiZjZkZjEwOGViN2M4ZjI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrbyBHcnVqaWMgPG1hcmtvb2dAZ21haWwuY29tPgpEYXRl OiBUaHUsIDQgSnVuIDIwMjYgMTA6MzA6MzEgKzAyMDAKU3ViamVjdDogW1BBVENIIHYyXSBbQlVH ICMxOTUwN10gUHJldmVudCBjb25zdHJhaW50IG5hbWUgY29uZmxpY3RzIGluCiBwYXJ0aXRpb24g dHJlZXMgc3Bhbm5pbmcgbXVsdGlwbGUgc2NoZW1hcwoKQ2hvb3NlQ29uc3RyYWludE5hbWUgcGlj a3MgYSBjb25zdHJhaW50IG5hbWUgdW5pcXVlIHdpdGhpbiBhIGdpdmVuCnJlbGF0aW9uJ3MgbmFt ZXNwYWNlLiBXaGVuIGl0IGlzIGludm9rZWQgZm9yIGEgcGFydGl0aW9uIHJvb3QsIHRoZQpjaG9z ZW4gbmFtZSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSB1bmlxdWUgZm9yIGFueSBwYXJ0aXRpb24g aW4gYQpkaWZmZXJlbnQgc2NoZW1hLgoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIENob29zZUNvbnN0 cmFpbnROYW1lRm9yUmVsYXRpb24oT2lkIHJlbGlkLCAuLi4pLAp3aGljaCB3cmFwcyBDaG9vc2VD b25zdHJhaW50TmFtZSwgYnV0IGFsc28gZXhjbHVkZXMgYWxsIHByZS1leGlzdGluZwpjb25zdHJh aW50cyBhY3Jvc3MgdGhlIGVudGlyZSBwYXJ0aXRpb24gaGllcmFyY2h5LiBXaGVuIHRoZSByZWxh dGlvbgpoYXMgbm8gZGVzY2VuZGFudHMgdGhlaXIgYmVoYXZpb3IgaXMgaWRlbnRpY2FsLgoKSW4g YWRkaXRpb24gc2V2ZXJhbCB0ZXN0IGNhc2VzIGFyZSBhZGRlZCB3aGljaCBleGVyY2lzZSB0aGUg cGF0dGVybnMKdnVsbmVyYWJsZSB0byB0aGlzIGJ1Zy4gTmFtZWx5LCBpbnZva2luZyBBTFRFUiBD T0xVTU4gLi4uIFNFVCBOT1QgTlVMTCwKQUREIE5PVCBOVUxMLCBhbmQgQUREIENIRUNLIG9uIGEg cGFydGl0aW9uZWQgcm9vdCwgd2hlbiBhIHBhcnRpdGlvbgppbiBhbm90aGVyIHNjaGVtYSBoYXMg YSBwcmUtZXhpc3RpbmcgY29uc3RyYWludC4KCkF1dGhvcjogTWFya28gR3J1amljIDxtYXJrb29n QGdtYWlsLmNvbT4KQnVnOiAjMTk1MDcKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8y MDI2MDYwNDA4NTcxNy4xMjU0OS0xLW1hcmtvb2dAZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQv Y2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAgICAgfCAxOCArKy0tLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19jb25zdHJhaW50LmMgICAgICAgfCA4MSArKysrKysrKysrKysrKysrKysrCiBzcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICB8ICA3ICstCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCAgICAgICB8ICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29uc3RyYWludHMub3V0IHwgOTUgKysrKysrKysrKysrKysrKysrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0cmFpbnRzLnNxbCAgICAgIHwgNjUgKysrKysrKysrKysr KysrKwogNiBmaWxlcyBjaGFuZ2VkLCAyNTQgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2hlYXAuYwppbmRleCA4ODA4NzY1NGRlOS4uYWYyOWQ3ZjhmNjQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVh cC5jCkBAIC0yNTkyLDExICsyNTkyLDEwIEBAIEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMoUmVs YXRpb24gcmVsLAogCQkJCWVsc2UKIAkJCQkJY29sbmFtZSA9IE5VTEw7CiAKLQkJCQljY25hbWUg PSBDaG9vc2VDb25zdHJhaW50TmFtZShSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLAotCQkJ CQkJCQkJCQkgIGNvbG5hbWUsCi0JCQkJCQkJCQkJCSAgImNoZWNrIiwKLQkJCQkJCQkJCQkJICBS ZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpLAotCQkJCQkJCQkJCQkgIGNoZWNrbmFtZXMpOworCQkJ CWNjbmFtZSA9IENob29zZUNvbnN0cmFpbnROYW1lRm9yUmVsYXRpb24oUmVsYXRpb25HZXRSZWxp ZChyZWwpLAorCQkJCQkJCQkJCQkJCQkgY29sbmFtZSwKKwkJCQkJCQkJCQkJCQkJICJjaGVjayIs CisJCQkJCQkJCQkJCQkJCSBjaGVja25hbWVzKTsKIAogCQkJCS8qIHNhdmUgbmFtZSBmb3IgZnV0 dXJlIGNoZWNrcyAqLwogCQkJCWNoZWNrbmFtZXMgPSBsYXBwZW5kKGNoZWNrbmFtZXMsIGNjbmFt ZSk7CkBAIC0yNjc2LDExICsyNjc1LDEwIEBAIEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMoUmVs YXRpb24gcmVsLAogCQkJCW5ubmFtZSA9IGNkZWYtPmNvbm5hbWU7CiAJCQl9CiAJCQllbHNlCi0J CQkJbm5uYW1lID0gQ2hvb3NlQ29uc3RyYWludE5hbWUoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSwKLQkJCQkJCQkJCQkJICBzdHJWYWwobGluaXRpYWwoY2RlZi0+a2V5cykpLAotCQkJCQkJ CQkJCQkgICJub3RfbnVsbCIsCi0JCQkJCQkJCQkJCSAgUmVsYXRpb25HZXROYW1lc3BhY2UocmVs KSwKLQkJCQkJCQkJCQkJICBubm5hbWVzKTsKKwkJCQlubm5hbWUgPSBDaG9vc2VDb25zdHJhaW50 TmFtZUZvclJlbGF0aW9uKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKKwkJCQkJCQkJCQkJCQkJIHN0 clZhbChsaW5pdGlhbChjZGVmLT5rZXlzKSksCisJCQkJCQkJCQkJCQkJCSAibm90X251bGwiLAor CQkJCQkJCQkJCQkJCQkgbm5uYW1lcyk7CiAJCQlubm5hbWVzID0gbGFwcGVuZChubm5hbWVzLCBu bm5hbWUpOwogCiAJCQljb25zdHJPaWQgPQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19jb25zdHJhaW50LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYwpp bmRleCBiMTI3NjVhZTY5MS4uNjc1OWM5ODUyNTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3Ry YWludC5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgog I2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWNjZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19j b25zdHJhaW50LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19pbmhlcml0cy5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNp bmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKQEAgLTU3OSw2ICs1ODAsODYgQEAgQ2hvb3NlQ29u c3RyYWludE5hbWUoY29uc3QgY2hhciAqbmFtZTEsIGNvbnN0IGNoYXIgKm5hbWUyLAogCXJldHVy biBjb25uYW1lOwogfQogCisvKgorICogQ2hvb3NlIGEgY29uc3RyYWludCBuYW1lIGZvciBhIHJl bGF0aW9uLgorICoKKyAqIHJlbGlkIGlzIHRoZSBPaWQgZm9yIHRoZSByZWxhdGlvbiB0byB3aGlj aCB3ZSB3YW50IHRvIGFkZCB0aGUgY29uc3RyYWludC4KKyAqIG5hbWUyIGlzIHRoZSBhY3R1YWwg Y29sdW1uIG5hbWUgd2hpY2ggaXMgYWZmZWN0ZWQgYnkgdGhlIGNvbnN0cmFpbnQsIGFuZAorICog dWx0aW1hdGVseSBpdCBtYXRjaGVzIHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgbWFrZU9iamVjdE5h bWUuCisgKiBsYWJlbCBpcyB0aGUgc3RhdGljIHN1ZmZpeCBmb3IgdGhlIGNvbnN0cmFpbnQgbmFt ZSwgd2hpbGUgJ290aGVycycgaXMgdGhlCisgKiBleGNsdWRlLWxpc3Qgb2YgZm9yYmlkZGVuIGNv bnN0cmFpbnQgbmFtZXMuCisgKgorICogTGlrZSBDaG9vc2VDb25zdHJhaW50TmFtZSwgYnV0IHVz ZXMgdGhlIHJlbGF0aW9uJ3MgT0lEIHRvIGRlcml2ZSBpdHMKKyAqIG5hbWUgYW5kIG5hbWVzcGFj ZS4KKyAqCisgKiBJbiBhZGRpdGlvbiwgaXQgcnVsZXMgb3V0IG5hbWVzIGFscmVhZHkgaW4gdXNl IGJ5IGFueSBjb25zdHJhaW50IG9uCisgKiBhbnkgZGVzY2VuZGFudCBvZiB0aGUgcmVsYXRpb24g KGUuZy4gcGFydGl0aW9ucykuCisgKgorICogVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBjb25zdHJh aW50LW5hbWUgdW5pcXVlbmVzcyBpcyBlbmZvcmNlZAorICogcGVyLXJlbGF0aW9uIChjb25yZWxp ZCwgY29ubmFtZSksIHdoaWxlIENob29zZUNvbnN0cmFpbnROYW1lJ3Mgb3duCisgKiB1bmlxdWVu ZXNzIHNjYW4gaXMgcGVyLW5hbWVzcGFjZSAoY29ubmFtZXNwYWNlLCBjb25uYW1lKS4gIFdoZW4g YQorICogcGFydGl0aW9uIHRyZWUgc3BhbnMgbXVsdGlwbGUgc2NoZW1hcywgYSBuYW1lIHRoYXQg bG9va3MgZnJlZSBhdCB0aGUKKyAqIHJvb3QncyBuYW1lc3BhY2UgY2FuIHN0aWxsIGNvbGxpZGUg d2l0aCBhbiB1bnJlbGF0ZWQgY29uc3RyYWludCBvbiBhCisgKiBsZWFmIGluIGEgZGlmZmVyZW50 IHNjaGVtYSwgY2F1c2luZyB0aGUgcmVjdXJzaXZlIGRlc2NlbnQgaW50byB0aGF0CisgKiBsZWFm IHRvIGZhaWwuICBHYXRoZXJpbmcgZGVzY2VuZGFudCBjb25zdHJhaW50IG5hbWVzIGludG8gdGhl CisgKiBleGNsdXNpb24gc2V0IHVwLWZyb250IGxldHMgdGhlIHBpY2tlciBsYW5kIG9uIGEgY2Fu ZGlkYXRlIHRoYXQgaXMKKyAqIHVzYWJsZSB0aHJvdWdob3V0IHRoZSBzdWJ0cmVlLgorICoKKyAq IElmIHRoZSByZWxhdGlvbiBoYXMgbm8gZGVzY2VuZGFudHMsIHRoZSBiZWhhdmlvciBpcyBpZGVu dGljYWwgdG8KKyAqIENob29zZUNvbnN0cmFpbnROYW1lLgorICoKKyAqIFJldHVybnMgYSBwYWxs b2MnZCBzdHJpbmcuCisgKi8KK2NoYXIgKgorQ2hvb3NlQ29uc3RyYWludE5hbWVGb3JSZWxhdGlv bihPaWQgcmVsaWQsIGNvbnN0IGNoYXIgKm5hbWUyLAorCQkJCQkJCQljb25zdCBjaGFyICpsYWJl bCwgTGlzdCAqb3RoZXJzKQoreworCWNoYXIJICAgKnJlbG5hbWUgPSBnZXRfcmVsX25hbWUocmVs aWQpOworCU9pZAkJCXJlbG5hbWVzcGFjZSA9IGdldF9yZWxfbmFtZXNwYWNlKHJlbGlkKTsKKwlM aXN0CSAgICppbmhlcml0b3JzOworCUxpc3QJICAgKmV4Y2x1ZGU7CisJUmVsYXRpb24JY29ucmVs OworCisJaW5oZXJpdG9ycyA9IGZpbmRfYWxsX2luaGVyaXRvcnMocmVsaWQsIE5vTG9jaywgTlVM TCk7CisKKwkvKiBDb21tb24gY2FzZTogbm8gZGVzY2VuZGFudHMgLT4gaWRlbnRpY2FsIHRvIENo b29zZUNvbnN0cmFpbnROYW1lLiAqLworCWlmIChsaXN0X2xlbmd0aChpbmhlcml0b3JzKSA8PSAx KQorCQlyZXR1cm4gQ2hvb3NlQ29uc3RyYWludE5hbWUocmVsbmFtZSwgbmFtZTIsIGxhYmVsLCBy ZWxuYW1lc3BhY2UsIG90aGVycyk7CisKKwlleGNsdWRlID0gbGlzdF9jb3B5KG90aGVycyk7CisJ Y29ucmVsID0gdGFibGVfb3BlbihDb25zdHJhaW50UmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2Nr KTsKKworCWZvcmVhY2hfb2lkKGRlc2NvaWQsIGluaGVyaXRvcnMpCisJeworCQlTY2FuS2V5RGF0 YSBza2V5OworCQlTeXNTY2FuRGVzYyBzc2NhbjsKKwkJSGVhcFR1cGxlCXR1cDsKKworCQkvKiBU aGUgcGlja2VyIGFscmVhZHkgc2NhbnMgdGhlIHJvb3QncyBvd24gbmFtZXNwYWNlLiAqLworCQlp ZiAoZGVzY29pZCA9PSByZWxpZCkKKwkJCWNvbnRpbnVlOworCisJCVNjYW5LZXlJbml0KCZza2V5 LAorCQkJCQlBbnVtX3BnX2NvbnN0cmFpbnRfY29ucmVsaWQsCisJCQkJCUJURXF1YWxTdHJhdGVn eU51bWJlciwgRl9PSURFUSwKKwkJCQkJT2JqZWN0SWRHZXREYXR1bShkZXNjb2lkKSk7CisJCXNz Y2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKGNvbnJlbCwKKwkJCQkJCQkJICAgQ29uc3RyYWludFJl bGlkVHlwaWROYW1lSW5kZXhJZCwKKwkJCQkJCQkJICAgdHJ1ZSwgTlVMTCwgMSwgJnNrZXkpOwor CQl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNzY2FuKSkp CisJCXsKKwkJCUZvcm1fcGdfY29uc3RyYWludCBjb25mb3JtID0gKEZvcm1fcGdfY29uc3RyYWlu dCkgR0VUU1RSVUNUKHR1cCk7CisKKwkJCWV4Y2x1ZGUgPSBsYXBwZW5kKGV4Y2x1ZGUsIHBzdHJk dXAoTmFtZVN0cihjb25mb3JtLT5jb25uYW1lKSkpOworCQl9CisJCXN5c3RhYmxlX2VuZHNjYW4o c3NjYW4pOworCX0KKworCXRhYmxlX2Nsb3NlKGNvbnJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwor CXJldHVybiBDaG9vc2VDb25zdHJhaW50TmFtZShyZWxuYW1lLCBuYW1lMiwgbGFiZWwsIHJlbG5h bWVzcGFjZSwgZXhjbHVkZSk7Cit9CisKIC8qCiAgKiBGaW5kIGFuZCByZXR1cm4gYSBjb3B5IG9m IHRoZSBwZ19jb25zdHJhaW50IHR1cGxlIHRoYXQgaW1wbGVtZW50cyBhCiAgKiAocG9zc2libHkg bm90IHZhbGlkKSBub3QtbnVsbCBjb25zdHJhaW50IGZvciB0aGUgZ2l2ZW4gY29sdW1uIG9mIHRo ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBhMTg0NTI0MGE5OC4uZWQwYmRjMDE3ZTMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC04MTQ5LDEwICs4MTQ5LDkgQEAgQVRFeGVj U2V0Tm90TnVsbChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIGNoYXIgKmNvbk5hbWUsIGNo YXIgKmNvbE5hbWUsCiAJaWYgKCFyZWN1cnNpbmcpCiAJewogCQlBc3NlcnQoY29uTmFtZSA9PSBO VUxMKTsKLQkJY29uTmFtZSA9IENob29zZUNvbnN0cmFpbnROYW1lKFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbCksCi0JCQkJCQkJCQkgICBjb2xOYW1lLCAibm90X251bGwiLAotCQkJCQkJCQkJ ICAgUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSwKLQkJCQkJCQkJCSAgIE5JTCk7CisJCWNvbk5h bWUgPSBDaG9vc2VDb25zdHJhaW50TmFtZUZvclJlbGF0aW9uKFJlbGF0aW9uR2V0UmVsaWQocmVs KSwKKwkJCQkJCQkJCQkJCSAgY29sTmFtZSwgIm5vdF9udWxsIiwKKwkJCQkJCQkJCQkJCSAgTklM KTsKIAl9CiAKIAljb25zdHJhaW50ID0gbWFrZU5vdE51bGxDb25zdHJhaW50KG1ha2VTdHJpbmco Y29sTmFtZSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50 LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaAppbmRleCAxYjdmZWRmMTc1 MC4uYmNlNWRkMDE3ZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3Ry YWludC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCkBAIC0yNjIs NiArMjYyLDggQEAgZXh0ZXJuIGJvb2wgQ29uc3RyYWludE5hbWVFeGlzdHMoY29uc3QgY2hhciAq Y29ubmFtZSwgT2lkIG5hbWVzcGFjZWlkKTsKIGV4dGVybiBjaGFyICpDaG9vc2VDb25zdHJhaW50 TmFtZShjb25zdCBjaGFyICpuYW1lMSwgY29uc3QgY2hhciAqbmFtZTIsCiAJCQkJCQkJCSAgY29u c3QgY2hhciAqbGFiZWwsIE9pZCBuYW1lc3BhY2VpZCwKIAkJCQkJCQkJICBMaXN0ICpvdGhlcnMp OworZXh0ZXJuIGNoYXIgKkNob29zZUNvbnN0cmFpbnROYW1lRm9yUmVsYXRpb24oT2lkIHJlbGlk LCBjb25zdCBjaGFyICpuYW1lMiwKKwkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmxhYmVsLCBMaXN0 ICpvdGhlcnMpOwogCiBleHRlcm4gSGVhcFR1cGxlIGZpbmROb3ROdWxsQ29uc3RyYWludEF0dG51 bShPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtKTsKIGV4dGVybiBIZWFwVHVwbGUgZmluZE5v dE51bGxDb25zdHJhaW50KE9pZCByZWxpZCwgY29uc3QgY2hhciAqY29sbmFtZSk7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0CmluZGV4IGU1NGZlYzdmYjU3Li42NGY5 OGQ4MDg3NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50 cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQKQEAg LTE3MDgsNiArMTcwOCwxMDEgQEAgRVJST1I6ICBjYW5ub3QgY3JlYXRlIHByaW1hcnkga2V5IG9u IGNvbHVtbiAiYSIKIERFVEFJTDogIFRoZSBjb25zdHJhaW50ICJubiIgb24gY29sdW1uICJhIiBv ZiB0YWJsZSAicHBfbm5fMSIsIG1hcmtlZCBOTyBJTkhFUklULCBpcyBpbmNvbXBhdGlibGUgd2l0 aCBhIHByaW1hcnkga2V5LgogSElOVDogIFlvdSBtaWdodCBuZWVkIHRvIG1ha2UgdGhlIGV4aXN0 aW5nIGNvbnN0cmFpbnQgaW5oZXJpdGFibGUgdXNpbmcgQUxURVIgVEFCTEUgLi4uIEFMVEVSIENP TlNUUkFJTlQgLi4uIElOSEVSSVQuCiBEUk9QIFRBQkxFIHBwX25uOworLS0gQ29uc3RyYWludCBu YW1lIHBpY2tpbmcgb24gYSBwYXJ0aXRpb25lZCByb290IG11c3QgY29uc2lkZXIgbmFtZXMKKy0t IGFscmVhZHkgaW4gdXNlIG9uIGRlc2NlbmRhbnRzIGluIGFueSBzY2hlbWEsIG90aGVyd2lzZSB0 aGUgYXV0by1waWNrZWQKKy0tIG5hbWUgY29sbGlkZXMgd2l0aCB0aGUgbGVhZidzIGV4aXN0aW5n IGNvbnN0cmFpbnQgZHVyaW5nIHJlY3Vyc2lvbi4KK0NSRUFURSBTQ0hFTUEgb3RoZXJfc2NoZW1h OworLS0gU0VUIE5PVCBOVUxMOiBhdXRvLW5hbWVkCitDUkVBVEUgVEFCTEUgcHBfbm4gKGEgaW50 KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEpOworQ1JFQVRFIFRBQkxFIG90aGVyX3NjaGVtYS5wcF9u bl8xCisgICAgUEFSVElUSU9OIE9GIHBwX25uIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsK K0FMVEVSIFRBQkxFIG90aGVyX3NjaGVtYS5wcF9ubl8xCisgICAgQUREIENPTlNUUkFJTlQgcHBf bm5fYV9ub3RfbnVsbCBDSEVDSyAoYSBJUyBOT1QgTlVMTCk7CitBTFRFUiBUQUJMRSBwcF9ubiBB TFRFUiBDT0xVTU4gYSBTRVQgTk9UIE5VTEw7CitFWEVDVVRFIGdldF9ubmNvbnN0cmFpbnRfaW5m bygne3BwX25uLCBvdGhlcl9zY2hlbWEucHBfbm5fMX0nKTsKKyAgICAgICB0YWJuYW1lICAgICAg ICB8ICAgICAgY29ubmFtZSAgICAgIHwgY29udmFsaWRhdGVkIHwgY29uaXNsb2NhbCB8IGNvbmlu aGNvdW50IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgb3RoZXJfc2NoZW1hLnBwX25u XzEgfCBwcF9ubl9hX25vdF9udWxsICB8IHQgICAgICAgICAgICB8IHQgICAgICAgICAgfCAgICAg ICAgICAgMAorIG90aGVyX3NjaGVtYS5wcF9ubl8xIHwgcHBfbm5fYV9ub3RfbnVsbDEgfCB0ICAg ICAgICAgICAgfCBmICAgICAgICAgIHwgICAgICAgICAgIDEKKyBwcF9ubiAgICAgICAgICAgICAg ICB8IHBwX25uX2Ffbm90X251bGwxIHwgdCAgICAgICAgICAgIHwgdCAgICAgICAgICB8ICAgICAg ICAgICAwCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHBwX25uOworLS0gQUREIE5PVCBOVUxMIChj b25zdHJhaW50IHN5bnRheCk6IGF1dG8tbmFtZWQKK0NSRUFURSBUQUJMRSBwcF9ubiAoYSBpbnQp IFBBUlRJVElPTiBCWSBSQU5HRSAoYSk7CitDUkVBVEUgVEFCTEUgb3RoZXJfc2NoZW1hLnBwX25u XzEKKyAgICBQQVJUSVRJT04gT0YgcHBfbm4gRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOwor QUxURVIgVEFCTEUgb3RoZXJfc2NoZW1hLnBwX25uXzEKKyAgICBBREQgQ09OU1RSQUlOVCBwcF9u bl9hX25vdF9udWxsIENIRUNLIChhIElTIE5PVCBOVUxMKTsKK0FMVEVSIFRBQkxFIHBwX25uIEFE RCBOT1QgTlVMTCBhOworRVhFQ1VURSBnZXRfbm5jb25zdHJhaW50X2luZm8oJ3twcF9ubiwgb3Ro ZXJfc2NoZW1hLnBwX25uXzF9Jyk7CisgICAgICAgdGFibmFtZSAgICAgICAgfCAgICAgIGNvbm5h bWUgICAgICB8IGNvbnZhbGlkYXRlZCB8IGNvbmlzbG9jYWwgfCBjb25pbmhjb3VudCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIG90aGVyX3NjaGVtYS5wcF9ubl8xIHwgcHBfbm5fYV9u b3RfbnVsbCAgfCB0ICAgICAgICAgICAgfCB0ICAgICAgICAgIHwgICAgICAgICAgIDAKKyBvdGhl cl9zY2hlbWEucHBfbm5fMSB8IHBwX25uX2Ffbm90X251bGwxIHwgdCAgICAgICAgICAgIHwgZiAg ICAgICAgICB8ICAgICAgICAgICAxCisgcHBfbm4gICAgICAgICAgICAgICAgfCBwcF9ubl9hX25v dF9udWxsMSB8IHQgICAgICAgICAgICB8IHQgICAgICAgICAgfCAgICAgICAgICAgMAorKDMgcm93 cykKKworRFJPUCBUQUJMRSBwcF9ubjsKKy0tIEFERCBDSEVDSzogYXV0by1uYW1lZAorQ1JFQVRF IFRBQkxFIHBwX25uIChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKK0NSRUFURSBUQUJM RSBvdGhlcl9zY2hlbWEucHBfbm5fMQorICAgIFBBUlRJVElPTiBPRiBwcF9ubiBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgxMCk7CitBTFRFUiBUQUJMRSBvdGhlcl9zY2hlbWEucHBfbm5fMSBBREQg Q09OU1RSQUlOVCBwcF9ubl9hX2NoZWNrIENIRUNLIChhID4gLTEpOworQUxURVIgVEFCTEUgcHBf bm4gQUREIENIRUNLIChhID4gMCk7CitTRUxFQ1QgY29ucmVsaWQ6OnJlZ2NsYXNzLCBjb25uYW1l LCBjb250eXBlIEZST00gcGdfY29uc3RyYWludAorV0hFUkUgY29ucmVsaWQgSU4gKCdwcF9ubic6 OnJlZ2NsYXNzLCAnb3RoZXJfc2NoZW1hLnBwX25uXzEnOjpyZWdjbGFzcykKKyAgQU5EIGNvbnR5 cGUgPSAnYycKK09SREVSIEJZIDEsIDI7CisgICAgICAgY29ucmVsaWQgICAgICAgfCAgICBjb25u YW1lICAgICB8IGNvbnR5cGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tCisgcHBfbm4gICAgICAgICAgICAgICAgfCBwcF9ubl9hX2NoZWNrMSB8IGMK KyBvdGhlcl9zY2hlbWEucHBfbm5fMSB8IHBwX25uX2FfY2hlY2sgIHwgYworIG90aGVyX3NjaGVt YS5wcF9ubl8xIHwgcHBfbm5fYV9jaGVjazEgfCBjCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHBw X25uOworLS0gQm90aCBBTFRFUnMgYXV0by1uYW1lZDogYSBwYXJ0aXRpb24gdGhhdCBzaGFyZXMg aXRzIHJvb3QncyByZWxuYW1lLAorLS0gZXZlbiB0aG91Z2ggaXQgbGl2ZXMgaW4gYSBkaWZmZXJl bnQgc2NoZW1hLCBtYWtlcyBlYWNoIGF1dG8tbmFtZQorLS0gcGljayB0aGUgc2FtZSBuYW1lCitD UkVBVEUgVEFCTEUgcHBfbm5fZHVwIChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKK0NS RUFURSBUQUJMRSBvdGhlcl9zY2hlbWEucHBfbm5fZHVwCisgICAgUEFSVElUSU9OIE9GIHBwX25u X2R1cCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitBTFRFUiBUQUJMRSBvdGhlcl9zY2hl bWEucHBfbm5fZHVwIEFERCBDSEVDSyAoYSA+IDEwMCk7CitBTFRFUiBUQUJMRSBwcF9ubl9kdXAg QUREIENIRUNLIChhID4gMCk7CitTRUxFQ1QgY29ucmVsaWQ6OnJlZ2NsYXNzLCBjb25uYW1lIEZS T00gcGdfY29uc3RyYWludAorV0hFUkUgY29ucmVsaWQgSU4gKCdwcF9ubl9kdXAnOjpyZWdjbGFz cywgJ290aGVyX3NjaGVtYS5wcF9ubl9kdXAnOjpyZWdjbGFzcykKKyAgQU5EIGNvbnR5cGUgPSAn YycKK09SREVSIEJZIDEsIDI7CisgICAgICAgIGNvbnJlbGlkICAgICAgICB8ICAgICAgY29ubmFt ZSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLQor IHBwX25uX2R1cCAgICAgICAgICAgICAgfCBwcF9ubl9kdXBfYV9jaGVjazEKKyBvdGhlcl9zY2hl bWEucHBfbm5fZHVwIHwgcHBfbm5fZHVwX2FfY2hlY2sKKyBvdGhlcl9zY2hlbWEucHBfbm5fZHVw IHwgcHBfbm5fZHVwX2FfY2hlY2sxCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHBwX25uX2R1cDsK Ky0tIE11bHRpLWxldmVsIHBhcnRpdGlvbiB0cmVlOiB0aGUgY29sbGlzaW9uIGlzIG9uIGEgZ3Jh bmRjaGlsZCBpbiBhCistLSBkaWZmZXJlbnQgc2NoZW1hIChtaWQtbGV2ZWwgcGFydGl0aW9uIGxp dmVzIGluIHRoZSByb290J3Mgc2NoZW1hKQorQ1JFQVRFIFRBQkxFIHBwX25uIChhIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChhKTsKK0NSRUFURSBUQUJMRSBwcF9ubl9taWQgUEFSVElUSU9OIE9G IHBwX25uCisgICAgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApIFBBUlRJVElPTiBCWSBSQU5H RSAoYSk7CitDUkVBVEUgVEFCTEUgb3RoZXJfc2NoZW1hLnBwX25uX2xlYWYKKyAgICBQQVJUSVRJ T04gT0YgcHBfbm5fbWlkIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDUpOworQUxURVIgVEFCTEUg b3RoZXJfc2NoZW1hLnBwX25uX2xlYWYKKyAgICBBREQgQ09OU1RSQUlOVCBwcF9ubl9hX25vdF9u dWxsIENIRUNLIChhIElTIE5PVCBOVUxMKTsKK0FMVEVSIFRBQkxFIHBwX25uIEFMVEVSIENPTFVN TiBhIFNFVCBOT1QgTlVMTDsKK0VYRUNVVEUgZ2V0X25uY29uc3RyYWludF9pbmZvKCd7cHBfbm4s IHBwX25uX21pZCwgb3RoZXJfc2NoZW1hLnBwX25uX2xlYWZ9Jyk7CisgICAgICAgICB0YWJuYW1l ICAgICAgICAgfCAgICAgIGNvbm5hbWUgICAgICB8IGNvbnZhbGlkYXRlZCB8IGNvbmlzbG9jYWwg fCBjb25pbmhjb3VudCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIG90aGVyX3Nj aGVtYS5wcF9ubl9sZWFmIHwgcHBfbm5fYV9ub3RfbnVsbCAgfCB0ICAgICAgICAgICAgfCB0ICAg ICAgICAgIHwgICAgICAgICAgIDAKKyBvdGhlcl9zY2hlbWEucHBfbm5fbGVhZiB8IHBwX25uX2Ff bm90X251bGwxIHwgdCAgICAgICAgICAgIHwgZiAgICAgICAgICB8ICAgICAgICAgICAxCisgcHBf bm4gICAgICAgICAgICAgICAgICAgfCBwcF9ubl9hX25vdF9udWxsMSB8IHQgICAgICAgICAgICB8 IHQgICAgICAgICAgfCAgICAgICAgICAgMAorIHBwX25uX21pZCAgICAgICAgICAgICAgIHwgcHBf bm5fYV9ub3RfbnVsbDEgfCB0ICAgICAgICAgICAgfCBmICAgICAgICAgIHwgICAgICAgICAgIDEK Kyg0IHJvd3MpCisKK0RST1AgVEFCTEUgcHBfbm47CitEUk9QIFNDSEVNQSBvdGhlcl9zY2hlbWE7 CiAtLSBDcmVhdGUgdGFibGUgd2l0aCBOT1QgTlVMTCBJTlZBTElEIGNvbnN0cmFpbnQsIGZvciBw Z191cGdyYWRlLgogQ1JFQVRFIFRBQkxFIG5vdG51bGxfdGJsMV91cGcgKGEgaW50LCBiIGludCk7 CiBJTlNFUlQgSU5UTyBub3RudWxsX3RibDFfdXBnIFZBTFVFUyAoTlVMTCwgMSksIChOVUxMLCAy KSwgKDMwMCwgMyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50 cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwKaW5kZXggZGMxMzNi MTI0YmIuLmRjNDE1MGZhYTFlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25z dHJhaW50cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29uc3RyYWludHMuc3FsCkBA IC0xMDIwLDYgKzEwMjAsNzEgQEAgQUxURVIgVEFCTEUgcHBfbm5fMSBBREQgQ09OU1RSQUlOVCBu biBOT1QgTlVMTCBhIE5PIElOSEVSSVQ7CiBBTFRFUiBUQUJMRSBPTkxZIHBwX25uIEFERCBQUklN QVJZIEtFWSAoYSk7CiBEUk9QIFRBQkxFIHBwX25uOwogCistLSBDb25zdHJhaW50IG5hbWUgcGlj a2luZyBvbiBhIHBhcnRpdGlvbmVkIHJvb3QgbXVzdCBjb25zaWRlciBuYW1lcworLS0gYWxyZWFk eSBpbiB1c2Ugb24gZGVzY2VuZGFudHMgaW4gYW55IHNjaGVtYSwgb3RoZXJ3aXNlIHRoZSBhdXRv LXBpY2tlZAorLS0gbmFtZSBjb2xsaWRlcyB3aXRoIHRoZSBsZWFmJ3MgZXhpc3RpbmcgY29uc3Ry YWludCBkdXJpbmcgcmVjdXJzaW9uLgorQ1JFQVRFIFNDSEVNQSBvdGhlcl9zY2hlbWE7CisKKy0t IFNFVCBOT1QgTlVMTDogYXV0by1uYW1lZAorQ1JFQVRFIFRBQkxFIHBwX25uIChhIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChhKTsKK0NSRUFURSBUQUJMRSBvdGhlcl9zY2hlbWEucHBfbm5fMQor ICAgIFBBUlRJVElPTiBPRiBwcF9ubiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitBTFRF UiBUQUJMRSBvdGhlcl9zY2hlbWEucHBfbm5fMQorICAgIEFERCBDT05TVFJBSU5UIHBwX25uX2Ff bm90X251bGwgQ0hFQ0sgKGEgSVMgTk9UIE5VTEwpOworQUxURVIgVEFCTEUgcHBfbm4gQUxURVIg Q09MVU1OIGEgU0VUIE5PVCBOVUxMOworRVhFQ1VURSBnZXRfbm5jb25zdHJhaW50X2luZm8oJ3tw cF9ubiwgb3RoZXJfc2NoZW1hLnBwX25uXzF9Jyk7CitEUk9QIFRBQkxFIHBwX25uOworCistLSBB REQgTk9UIE5VTEwgKGNvbnN0cmFpbnQgc3ludGF4KTogYXV0by1uYW1lZAorQ1JFQVRFIFRBQkxF IHBwX25uIChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKK0NSRUFURSBUQUJMRSBvdGhl cl9zY2hlbWEucHBfbm5fMQorICAgIFBBUlRJVElPTiBPRiBwcF9ubiBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgxMCk7CitBTFRFUiBUQUJMRSBvdGhlcl9zY2hlbWEucHBfbm5fMQorICAgIEFERCBD T05TVFJBSU5UIHBwX25uX2Ffbm90X251bGwgQ0hFQ0sgKGEgSVMgTk9UIE5VTEwpOworQUxURVIg VEFCTEUgcHBfbm4gQUREIE5PVCBOVUxMIGE7CitFWEVDVVRFIGdldF9ubmNvbnN0cmFpbnRfaW5m bygne3BwX25uLCBvdGhlcl9zY2hlbWEucHBfbm5fMX0nKTsKK0RST1AgVEFCTEUgcHBfbm47CisK Ky0tIEFERCBDSEVDSzogYXV0by1uYW1lZAorQ1JFQVRFIFRBQkxFIHBwX25uIChhIGludCkgUEFS VElUSU9OIEJZIFJBTkdFIChhKTsKK0NSRUFURSBUQUJMRSBvdGhlcl9zY2hlbWEucHBfbm5fMQor ICAgIFBBUlRJVElPTiBPRiBwcF9ubiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitBTFRF UiBUQUJMRSBvdGhlcl9zY2hlbWEucHBfbm5fMSBBREQgQ09OU1RSQUlOVCBwcF9ubl9hX2NoZWNr IENIRUNLIChhID4gLTEpOworQUxURVIgVEFCTEUgcHBfbm4gQUREIENIRUNLIChhID4gMCk7CitT RUxFQ1QgY29ucmVsaWQ6OnJlZ2NsYXNzLCBjb25uYW1lLCBjb250eXBlIEZST00gcGdfY29uc3Ry YWludAorV0hFUkUgY29ucmVsaWQgSU4gKCdwcF9ubic6OnJlZ2NsYXNzLCAnb3RoZXJfc2NoZW1h LnBwX25uXzEnOjpyZWdjbGFzcykKKyAgQU5EIGNvbnR5cGUgPSAnYycKK09SREVSIEJZIDEsIDI7 CitEUk9QIFRBQkxFIHBwX25uOworCistLSBCb3RoIEFMVEVScyBhdXRvLW5hbWVkOiBhIHBhcnRp dGlvbiB0aGF0IHNoYXJlcyBpdHMgcm9vdCdzIHJlbG5hbWUsCistLSBldmVuIHRob3VnaCBpdCBs aXZlcyBpbiBhIGRpZmZlcmVudCBzY2hlbWEsIG1ha2VzIGVhY2ggYXV0by1uYW1lCistLSBwaWNr IHRoZSBzYW1lIG5hbWUKK0NSRUFURSBUQUJMRSBwcF9ubl9kdXAgKGEgaW50KSBQQVJUSVRJT04g QlkgUkFOR0UgKGEpOworQ1JFQVRFIFRBQkxFIG90aGVyX3NjaGVtYS5wcF9ubl9kdXAKKyAgICBQ QVJUSVRJT04gT0YgcHBfbm5fZHVwIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0FMVEVS IFRBQkxFIG90aGVyX3NjaGVtYS5wcF9ubl9kdXAgQUREIENIRUNLIChhID4gMTAwKTsKK0FMVEVS IFRBQkxFIHBwX25uX2R1cCBBREQgQ0hFQ0sgKGEgPiAwKTsKK1NFTEVDVCBjb25yZWxpZDo6cmVn Y2xhc3MsIGNvbm5hbWUgRlJPTSBwZ19jb25zdHJhaW50CitXSEVSRSBjb25yZWxpZCBJTiAoJ3Bw X25uX2R1cCc6OnJlZ2NsYXNzLCAnb3RoZXJfc2NoZW1hLnBwX25uX2R1cCc6OnJlZ2NsYXNzKQor ICBBTkQgY29udHlwZSA9ICdjJworT1JERVIgQlkgMSwgMjsKK0RST1AgVEFCTEUgcHBfbm5fZHVw OworCistLSBNdWx0aS1sZXZlbCBwYXJ0aXRpb24gdHJlZTogdGhlIGNvbGxpc2lvbiBpcyBvbiBh IGdyYW5kY2hpbGQgaW4gYQorLS0gZGlmZmVyZW50IHNjaGVtYSAobWlkLWxldmVsIHBhcnRpdGlv biBsaXZlcyBpbiB0aGUgcm9vdCdzIHNjaGVtYSkKK0NSRUFURSBUQUJMRSBwcF9ubiAoYSBpbnQp IFBBUlRJVElPTiBCWSBSQU5HRSAoYSk7CitDUkVBVEUgVEFCTEUgcHBfbm5fbWlkIFBBUlRJVElP TiBPRiBwcF9ubgorICAgIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKSBQQVJUSVRJT04gQlkg UkFOR0UgKGEpOworQ1JFQVRFIFRBQkxFIG90aGVyX3NjaGVtYS5wcF9ubl9sZWFmCisgICAgUEFS VElUSU9OIE9GIHBwX25uX21pZCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICg1KTsKK0FMVEVSIFRB QkxFIG90aGVyX3NjaGVtYS5wcF9ubl9sZWFmCisgICAgQUREIENPTlNUUkFJTlQgcHBfbm5fYV9u b3RfbnVsbCBDSEVDSyAoYSBJUyBOT1QgTlVMTCk7CitBTFRFUiBUQUJMRSBwcF9ubiBBTFRFUiBD T0xVTU4gYSBTRVQgTk9UIE5VTEw7CitFWEVDVVRFIGdldF9ubmNvbnN0cmFpbnRfaW5mbygne3Bw X25uLCBwcF9ubl9taWQsIG90aGVyX3NjaGVtYS5wcF9ubl9sZWFmfScpOworRFJPUCBUQUJMRSBw cF9ubjsKK0RST1AgU0NIRU1BIG90aGVyX3NjaGVtYTsKKwogLS0gQ3JlYXRlIHRhYmxlIHdpdGgg Tk9UIE5VTEwgSU5WQUxJRCBjb25zdHJhaW50LCBmb3IgcGdfdXBncmFkZS4KIENSRUFURSBUQUJM RSBub3RudWxsX3RibDFfdXBnIChhIGludCwgYiBpbnQpOwogSU5TRVJUIElOVE8gbm90bnVsbF90 YmwxX3VwZyBWQUxVRVMgKE5VTEwsIDEpLCAoTlVMTCwgMiksICgzMDAsIDMpOwoKYmFzZS1jb21t aXQ6IGYwYWVkYzdjYjBlZDgyZDRjY2E0ODMzMmRjMDg1MmM3Njc1MTQ1NTgKLS0gCjIuMzkuNSAo QXBwbGUgR2l0LTE1NCkKCg== --00000000000070e36006536b9bf7--