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 1wV6OU-001gke-2f for pgsql-bugs@arkaria.postgresql.org; Thu, 04 Jun 2026 11:37:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wV6OT-006KfL-0P for pgsql-bugs@arkaria.postgresql.org; Thu, 04 Jun 2026 11:37:49 +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 1wV6OS-006KfB-1z for pgsql-bugs@lists.postgresql.org; Thu, 04 Jun 2026 11:37:48 +0000 Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wV6OQ-0000000140I-36zN for pgsql-bugs@lists.postgresql.org; Thu, 04 Jun 2026 11:37:47 +0000 Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-5aa68d9d56fso638402e87.2 for ; Thu, 04 Jun 2026 04:37:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780573064; cv=none; d=google.com; s=arc-20240605; b=UB3eHlaqrRcBHee8USKMMH8ev4jpGPhpwQ4JwtngPgoSTEHRiWnOa760/XR3WVct3e DT3UPNchbcqSjd4p48VoSqK4CWfZUm4GlV3TwcjwFMFNvLiVywuFHWiK8+BZnijGb580 6WL+2PDcjpankaYuIB3qS3FqTJS12cz+jplzpR1H8q1TcscKByizeYnapKyoXVYzfOzF Cug0Ft1VYH7UQHbfcWX+Svl9KH8MJaMRm8UP+FALTSS5rf2tvvt91rpWHRcOKRaTZxRj 0IMo0GLYsUKoIew9wXLm0Ht1di+oJcU386m09Z597nUaa909ReA2dKzcl3N06iKC2lf4 pEdw== 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=A4PWSk4Jt19g7NMEM44Aq0o0MWEh8R/fJvOHGqErv5Q=; fh=jkMjWV6rDZo7VTQVpY4gc1R1v/ZwNyu3VBR5DjuEgDA=; b=FGP4hkDtbrY8Bf4BM8hrG8GHyxWYbIPbgWORWiGgfPRxFz/jNzZrdva0oIFz6E2zsi GIWG87dOD+zIUyXgQ8FxQWKlOVrLL71ojEhbRZDJov3GSkNRUm8T1btdneT80Wy8TG2o 5NCW6cHJFQJTEmB65lqOQeXAX/mYP4aNq4DWQc8EchhdPkim+pb5j6a4xDRCSiOBNjZV /5/oWSx5q5Kimpg4vaknGhhe7r3vC7kn53dIUDsC5l1AKm05VJgJL7LR7ot12KDtXnXL GsRDs/yA9dca81eCW8zNm7GWyPZihpwWk9EEISNCE0HE0wmgXiMznbNDQhkghhIW9Rvl b7rQ==; 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=gmail.com; s=20251104; t=1780573064; x=1781177864; 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=A4PWSk4Jt19g7NMEM44Aq0o0MWEh8R/fJvOHGqErv5Q=; b=lNveA5LbAXucATMeURuEPrVgrTYywV3gNJ6lh0V4DLqsPintyN2zt8BRLSGOa6LsXP 0DejLWdQrOAo//fwx3cW17UMjmzMkEubB9dblhbmdq+gllW9gn/PH7wy3TZdatEseu+M lgkE+CxHn5JUJIHbVtKZ3OKizUG9/ABd1MZyPyzQT9x37B5J+mdHpLIs6KnJjbEnPt0L 1XqoCE4/LU+J6ZhbuuNh5RWT5+/Oxr6JvyLGZ1+93utnqlSSDncplILNR4n1Zpd6Utie MX5BrAL9trQTH1eeBNFnHHKrSrUopT5nre+5cK0zOYrE1+dHQwwmxfKxzqYC/qLsDUbd UOZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780573064; x=1781177864; 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=A4PWSk4Jt19g7NMEM44Aq0o0MWEh8R/fJvOHGqErv5Q=; b=s/tssIPG9Wg8ZSeajPlQz6cXGva2OEQTzV3l7vJflo7ElJAsJUo+BjX6s1mxr2Tcz+ YPF3qFfWrEEedMGJZ7cUQZ17N9IecrzsgrCLdOg3QzjnESNZPZXoJd6m6qHGT/92vZ3G lZbtTO3QihzoQqr1dEwsLfocEQM+Yf080X2pRe3GDommM4MFZQsuYHO5hPXxCgYQEO0v BdwSkmwSlMKY+yQQQZ3RM9+gcXF3wzO8ppww9trirtt7KIm/I0iPv9TAAk3WIQUjNxfL N8/1NEzxU2cWymGBVO5V1kqoT668OXL7PSzoWJHukJIIULjiJsqDb3iynl81zRlbV9b0 rCJw== X-Forwarded-Encrypted: i=1; AFNElJ9jAhnYFx6Edx9gtfEPj0Y9jSCE3YESuwQFdTJvBpgkOvVrUQ3fNRxzoks9ID8AWIrEa2BZLjBWrg8+@lists.postgresql.org X-Gm-Message-State: AOJu0YzVr0hWITekIOKyIFh4MBsgi929HqokSQFNV4E1L8Zu/lCjVXix 9BUxxG3otySz3CLwsDEvr0z7f4OWe/kKsRboRuD+E3orjePKVEPiIlF1DaoXJlx/6foKhUe5kSe GV3S4Gks3wJ5TR88YnGch1NCx8IILYAA= X-Gm-Gg: Acq92OH3Q1qIsRlXKhesWTHpTkQF99qyuCA2pg5KaFXZNdg/iK20mO+VdWW6bMwhJOJ NOIsGKBqrRpM7aJLMB8VwdYbGqIayzz4TErUZg9zcBp839W+WA+HWCqHb0AXkaKkB5roV6iqgyr s/HmDqsmNbscAHOl0Sewauz6ELvRzHCinyNPpChP3kQCsjg5D8sZTrvsRcWSXAPRz3u2lyMb8RA lD+rW3v8kk1NTBee7GoKz9q2TJUrLaz4blbgB4z62fq5lmy6H86Gwt3QFtpQy0depAR2u+e5bhS BimsL9m/TTKSSzFsehVWpm1il5MECXGQlYjdB8+DSi+biXz4NMlEdJBzosOUZnk3sy1/qXw0bm+ k5RiBizrsuyg9k8es X-Received: by 2002:a05:6512:63db:10b0:5aa:6c1f:d2ef with SMTP id 2adb3069b0e04-5aa7c09aa18mr2096757e87.19.1780573063556; Thu, 04 Jun 2026 04:37:43 -0700 (PDT) MIME-Version: 1.0 References: <19360-1952ab7afd799f70@postgresql.org> In-Reply-To: From: Ajin Cherian Date: Thu, 4 Jun 2026 21:37:30 +1000 X-Gm-Features: AVHnY4I21xA7s6iTbKCAsXXEem8-5uWkb_POaO-eID8cBIEopSe_hH5znrF2w0U Message-ID: Subject: Re: BUG #19360: Bug Report: Logical Replication initial sync fails with "conflict=update_origin_differs" PG12 toPG18 To: "Zhijie Hou (Fujitsu)" Cc: Amit Kapila , vignesh C , "mostafaa.hasanzadeh@gmail.com" , "pgsql-bugs@lists.postgresql.org" , Masahiko Sawada , Dilip Kumar Content-Type: multipart/mixed; boundary="000000000000f354b606536bf842" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f354b606536bf842 Content-Type: multipart/alternative; boundary="000000000000f354b506536bf840" --000000000000f354b506536bf840 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jun 4, 2026 at 6:04=E2=80=AFPM Zhijie Hou (Fujitsu) wrote: > The remaining idea: storing the origin ID in pg_subscription_rel and > teaching > the apply worker to skip reporting origin_differs if the origin of the > update > matches the one stored in pg_subscription_rel, seems worth considering, i= f > we > cannot find an easier solution. There was a concern about performance, bu= t > since > we could cache those tablesync origins in a local hash table and consult = it > during conflict detection, the performance impact might not be significan= t. > > That said, I may have missed some points. I will continue to think about > this > and try to update the patch later. > > Best Regards, > Hou zj > I have implemented this solution in the attached patch. The patch adds a new field to pg_subscription_rel, srtablesyncoriginid, which stores the tablesync worker's origin ID for each relation. These origin IDs are loaded into a per-subscription hash table after the tablesync COPY completes, and also when the apply worker starts, thereby avoiding repeated catalog lookups. During conflict detection, the apply worker checks this hash table to determine whether the conflict origin ID matches one of the saved tablesync origin IDs for the subscription. If a match is found, the conflict is treated as originating from the initial table synchronization and logging is suppressed. I have not included documentation updates in this patch. If this approach is considered acceptable, I can prepare the corresponding documentation changes as well. regards, Ajin Cherian Fujitsu Australia --000000000000f354b506536bf840 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Thu, Jun 4, = 2026 at 6:04=E2=80=AFPM Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com> wrote:
The remaining idea: storing the origin ID in pg_subscription_rel and teachi= ng
the apply worker to skip reporting origin_differs if the origin of the upda= te
matches the one stored in pg_subscription_rel, seems worth considering, if = we
cannot find an easier solution. There was a concern about performance, but = since
we could cache those tablesync origins in a local hash table and consult it=
during conflict detection, the performance impact might not be significant.=

That said, I may have missed some points. I will continue to think about th= is
and try to update the patch later.

Best Regards,
Hou zj

I have implemented this solution in the attached patch. The patch=20 adds a new field to pg_subscription_rel, srtablesyncoriginid, which=20 stores the tablesync worker's origin ID for each relation. These origin= =20 IDs are loaded into a per-subscription hash table after the tablesync=20 COPY completes, and also when the apply worker starts, thereby avoiding=20 repeated catalog lookups. During conflict detection, the apply worker=20 checks this hash table to determine whether the conflict origin ID=20 matches one of the saved tablesync origin IDs for the subscription. If a match is found, the conflict is treated as originating from the initial table synchronization and logging is suppressed. I have not included=20 documentation updates in this patch. If this approach is considered=20 acceptable, I can prepare the corresponding documentation changes as=20 well.

regards,
Ajin Cherian
Fu= jitsu Australia
=C2=A0
--000000000000f354b506536bf840-- --000000000000f354b606536bf842 Content-Type: application/octet-stream; name="v1-0001-Avoid-spurious-update_origin_differs-conflicts.patch" Content-Disposition: attachment; filename="v1-0001-Avoid-spurious-update_origin_differs-conflicts.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpzf7c5l0 RnJvbSA3OWVmYjkyNWJkOTMxMzU4ODExNjg5YjIzZWM4YWFjNjMxNDE4NDIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBUaHUsIDQgSnVuIDIwMjYgMTg6MDU6NDcgKzEwMDAKU3ViamVjdDogW1BBVENIIHYxXSBBdm9p ZCBzcHVyaW91cyB1cGRhdGVfb3JpZ2luX2RpZmZlcnMgY29uZmxpY3RzCgpDb25mbGljdHMgc3Vj aCBhcyBjb25mbGljdD11cGRhdGVfb3JpZ2luX2RpZmZlcnMgY2FuIG9jY3VyIG9uIHRoZQpzdWJz Y3JpYmVyIHdoZW4gcm93cyBhcmUgbW9kaWZpZWQgYWZ0ZXIgYmVpbmcgaW5pdGlhbGx5IGNvcGll ZCBkdXJpbmcKdGFibGUgc3luY2hyb25pc2F0aW9uLiBSb3dzIGluc2VydGVkIGJ5IHRoZSB0YWJs ZXN5bmMgd29ya2VyIGNhcnJ5IGl0cwpvcmlnaW4gSUQuIEhvd2V2ZXIsIHRoaXMgb3JpZ2luIGlz IGRyb3BwZWQgb25jZSB0aGUgdGFibGVzeW5jIHdvcmtlcgpleGl0cy4gQXMgYSByZXN1bHQsIHdo ZW4gdGhlIGFwcGx5IHdvcmtlciBsYXRlciBwcm9jZXNzZXMgYW4gdXBkYXRlIG9yCmRlbGV0ZSBm b3Igc3VjaCByb3dzLCB0aGUgbWlzc2luZyBvcmlnaW4gY2FuIGxlYWQgdG8gc3B1cmlvdXMKdXBk YXRlX29yaWdpbl9kaWZmZXJzIG9yIGRlbGV0ZV9vcmlnaW5fZGlmZmVycyBjb25mbGljdHMuCgpU byBhZGRyZXNzIHRoaXMsIHJldGFpbiB0YWJsZXN5bmMgb3JpZ2luIElEcyBmb3IgdGhlIHN1YnNj cmlwdGlvbiBhbmQKdXNlIHRoZW0gZHVyaW5nIGNvbmZsaWN0IGRldGVjdGlvbi4gVGhlIHBnX3N1 YnNjcmlwdGlvbl9yZWwgY2F0YWxvZyBpcwpleHRlbmRlZCB3aXRoIGEgbmV3IGZpZWxkLCBzcnRh Ymxlc3luY29yaWdpbmlkLCB3aGljaCBzdG9yZXMgdGhlCnRhYmxlc3luYyB3b3JrZXIgb3JpZ2lu IElEIGZvciBlYWNoIHJlbGF0aW9uLiBUaGVzZSBvcmlnaW4gSURzIGFyZQpsb2FkZWQgaW50byBh IHBlci1zdWJzY3JpcHRpb24gaGFzaCB0YWJsZSBhZnRlciB0aGUgdGFibGVzeW5jIENPUFkKY29t cGxldGVzLCBhdm9pZGluZyByZXBlYXRlZCBjYXRhbG9nIGxvb2t1cHMuCgpXaGVuIHRoZSBhcHBs eSB3b3JrZXIgZW5jb3VudGVycyBhbiB1cGRhdGVfb3JpZ2luX2RpZmZlcnMgb3IKZGVsZXRlX29y aWdpbl9kaWZmZXJzIGNvbmZsaWN0LCBpdCBub3cgc3VwcHJlc3NlcyBsb2dnaW5nIGlmIHRoZQpv cmlnaW5hbCBvcmlnaW4gSUQgbWF0Y2hlcyBvbmUgb2YgdGhlIHByZXNlcnZlZCB0YWJsZXN5bmMg b3JpZ2lucy4KCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAgICAg ICAgIHwgIDQwICsrKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMu YyAgICAgICB8ICAgMiArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMg ICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3lu Yy5jICAgfCAgMjIgKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YyAgICAgIHwgMTExICsrKysrKysrKysrKysrKysrLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb25fcmVsLmggICAgIHwgICA3ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgIDIgKwogNyBmaWxlcyBjaGFuZ2VkLCAxNzIgaW5zZXJ0 aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCiBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uYwppbmRleCAxZjFmZGM3NWFmNi4uYmEwNTc5NjhhODQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg ImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImZvcmVpZ24vZm9yZWlnbi5oIgogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgogI2luY2x1ZGUg InV0aWxzL2FjbC5oIgpAQCAtMzI3LDYgKzMyOCwxNiBAQCBBZGRTdWJzY3JpcHRpb25SZWxTdGF0 ZShPaWQgc3ViaWQsIE9pZCByZWxpZCwgY2hhciBzdGF0ZSwKIAl2YWx1ZXNbQW51bV9wZ19zdWJz Y3JpcHRpb25fcmVsX3Nyc3ViaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oc3ViaWQpOwogCXZh bHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9yZWxfc3JyZWxpZCAtIDFdID0gT2JqZWN0SWRHZXRE YXR1bShyZWxpZCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3JlbF9zcnN1YnN0YXRl IC0gMV0gPSBDaGFyR2V0RGF0dW0oc3RhdGUpOworCisJLyoKKwkgKiBObyB0YWJsZXN5bmMgb3Jp Z2luIGlzIGtub3duIGF0IHN0YXJ0IC0gdGhlIG9yaWdpbiBpZCBpcyB3cml0dGVuCisJICogbGF0 ZXIgYnkgVXBkYXRlU3Vic2NyaXB0aW9uUmVsU3RhdGUoKSB3aGVuIHRoZSB0YWJsZXN5bmMgd29y a2VyCisJICogdHJhbnNpdGlvbnMgdGhlIHJlbGF0aW9uIHRvIFNVQlJFTF9TVEFURV9GSU5JU0hF RENPUFkuCisJICovCisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3JlbF9zcnRhYmxlc3lu Y29yaWdpbmlkIC0gMV0gPQorCQlJbnQxNkdldERhdHVtKChpbnQxNikgSW52YWxpZFJlcGxPcmln aW5JZCk7CisJbnVsbHNbQW51bV9wZ19zdWJzY3JpcHRpb25fcmVsX3NydGFibGVzeW5jb3JpZ2lu aWQgLSAxXSA9IGZhbHNlOworCiAJaWYgKFhMb2dSZWNQdHJJc1ZhbGlkKHN1YmxzbikpCiAJCXZh bHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9yZWxfc3JzdWJsc24gLSAxXSA9IExTTkdldERhdHVt KHN1Ymxzbik7CiAJZWxzZQpAQCAtMzU2LDcgKzM2Nyw4IEBAIEFkZFN1YnNjcmlwdGlvblJlbFN0 YXRlKE9pZCBzdWJpZCwgT2lkIHJlbGlkLCBjaGFyIHN0YXRlLAogICovCiB2b2lkCiBVcGRhdGVT dWJzY3JpcHRpb25SZWxTdGF0ZShPaWQgc3ViaWQsIE9pZCByZWxpZCwgY2hhciBzdGF0ZSwKLQkJ CQkJCSAgIFhMb2dSZWNQdHIgc3VibHNuLCBib29sIGFscmVhZHlfbG9ja2VkKQorCQkJCQkJICAg WExvZ1JlY1B0ciBzdWJsc24sIGJvb2wgYWxyZWFkeV9sb2NrZWQsCisJCQkJCQkgICBSZXBsT3Jp Z2luSWQgb3JpZ2luaWQpCiB7CiAJUmVsYXRpb24JcmVsOwogCUhlYXBUdXBsZQl0dXA7CkBAIC00 MDUsNiArNDE3LDMwIEBAIFVwZGF0ZVN1YnNjcmlwdGlvblJlbFN0YXRlKE9pZCBzdWJpZCwgT2lk IHJlbGlkLCBjaGFyIHN0YXRlLAogCWVsc2UKIAkJbnVsbHNbQW51bV9wZ19zdWJzY3JpcHRpb25f cmVsX3Nyc3VibHNuIC0gMV0gPSB0cnVlOwogCisKKworCS8qCisJICogU3RvcmUgdGhlIHRhYmxl c3luYyBvcmlnaW4gSUQgdXNlZCBkdXJpbmcgdGhlIGluaXRpYWwgQ09QWSBwaGFzZSBzbworCSAq IHRoYXQgdGhlIGFwcGx5IHdvcmtlciBjYW4gc3VwcHJlc3MgZmFsc2UgdXBkYXRlX29yaWdpbl9k aWZmZXJzIGNvbmZsaWN0cworCSAqIG9uIHJvd3Mgc3RhbXBlZCB3aXRoIHRoaXMgb3JpZ2luIGFm dGVyIGNyYXNoIHJlY292ZXJ5LiAgSWYgdGhlIGNhbGxlcgorCSAqIHBhc3NlcyBJbnZhbGlkUmVw bE9yaWdpbklkLCBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgdmFsdWU7IGFsbCBzdGF0ZQorCSAqIHRy YW5zaXRpb25zIGFmdGVyIEZJTklTSEVEQ09QWSBoYXZlIG5vIG9yaWdpbiB0byBjb250cmlidXRl IGFuZCBwYXNzCisJICogaW4gSW52YWxpZFJlcGxPcmlnaW5JZCBhbmQgdGhhdCBzaG91bGQgbm90 IG92ZXJ3cml0ZSB0aGUgb25lIHJlY29yZGVkCisJICogZHVyaW5nIENPUFkuCisJICovCisKKwlp ZiAob3JpZ2luaWQgPT0gSW52YWxpZFJlcGxPcmlnaW5JZCkKKwl7CisJCXJlcGxhY2VzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3JlbF9zcnRhYmxlc3luY29yaWdpbmlkIC0gMV0gPSBmYWxzZTsKKwl9 CisJZWxzZQorCXsKKwkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3JlbF9zcnRhYmxlc3lu Y29yaWdpbmlkIC0gMV0gPQorCQkJSW50MTZHZXREYXR1bSgoaW50MTYpIG9yaWdpbmlkKTsKKwkJ cmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fcmVsX3NydGFibGVzeW5jb3JpZ2luaWQgLSAx XSA9IHRydWU7CisJCW51bGxzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3JlbF9zcnRhYmxlc3luY29y aWdpbmlkIC0gMV0gPSBmYWxzZTsKKwl9CisKIAl0dXAgPSBoZWFwX21vZGlmeV90dXBsZSh0dXAs IFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscywKIAkJCQkJCQlyZXBsYWNlcyk7 CiAKQEAgLTY1NSw2ICs2OTEsOCBAQCBHZXRTdWJzY3JpcHRpb25SZWxhdGlvbnMoT2lkIHN1Ymlk LCBib29sIHRhYmxlcywgYm9vbCBzZXF1ZW5jZXMsCiAJCXJlbHN0YXRlID0gcGFsbG9jX29iamVj dChTdWJzY3JpcHRpb25SZWxTdGF0ZSk7CiAJCXJlbHN0YXRlLT5yZWxpZCA9IHN1YnJlbC0+c3Jy ZWxpZDsKIAkJcmVsc3RhdGUtPnN0YXRlID0gc3VicmVsLT5zcnN1YnN0YXRlOworCQlyZWxzdGF0 ZS0+b3JpZ2luaWQgPSBzdWJyZWwtPnNydGFibGVzeW5jb3JpZ2luaWQ7CisKIAkJZCA9IFN5c0Nh Y2hlR2V0QXR0cihTVUJTQ1JJUFRJT05SRUxNQVAsIHR1cCwKIAkJCQkJCQlBbnVtX3BnX3N1YnNj cmlwdGlvbl9yZWxfc3JzdWJsc24sICZpc251bGwpOwogCQlpZiAoaXNudWxsKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDUyMzk1OWJhMGNlLi44ZTVkYmQ3ZGVm YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtMTMwMCw3ICsx MzAwLDcgQEAgQWx0ZXJTdWJzY3JpcHRpb25fcmVmcmVzaF9zZXEoU3Vic2NyaXB0aW9uICpzdWIp CiAJCQlPaWQJCQlyZWxpZCA9IHN1YnJlbC0+cmVsaWQ7CiAKIAkJCVVwZGF0ZVN1YnNjcmlwdGlv blJlbFN0YXRlKHN1Yi0+b2lkLCByZWxpZCwgU1VCUkVMX1NUQVRFX0lOSVQsCi0JCQkJCQkJCQkg ICBJbnZhbGlkWExvZ1JlY1B0ciwgZmFsc2UpOworCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQ dHIsIGZhbHNlLCBJbnZhbGlkUmVwbE9yaWdpbklkKTsKIAkJCWVyZXBvcnQoREVCVUcxLAogCQkJ CQllcnJtc2dfaW50ZXJuYWwoInNlcXVlbmNlIFwiJXMuJXNcIiBvZiBzdWJzY3JpcHRpb24gXCIl c1wiIHNldCB0byBJTklUIHN0YXRlIiwKIAkJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRf cmVsX25hbWVzcGFjZShyZWxpZCkpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvc2VxdWVuY2VzeW5jLmMKaW5kZXggZTJmZjhkNzdiMTYuLmQ4M2IxMDZhODM1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKQEAgLTU5LDYg KzU5LDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKKyNpbmNsdWRl ICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50 ZXJuYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1ZGUgInV0aWxzL2Fj bC5oIgpAQCAtMzcyLDcgKzM3Myw3IEBAIGNvcHlfc2VxdWVuY2UoTG9naWNhbFJlcFNlcXVlbmNl SW5mbyAqc2VxaW5mbywgT2lkIHNlcW93bmVyKQogCSAqIHNlcXVlbmNlIGFzIFJFQURZLgogCSAq LwogCVVwZGF0ZVN1YnNjcmlwdGlvblJlbFN0YXRlKE15U3Vic2NyaXB0aW9uLT5vaWQsIHNlcW9p ZCwgU1VCUkVMX1NUQVRFX1JFQURZLAotCQkJCQkJCSAgIHNlcWluZm8tPnBhZ2VfbHNuLCBmYWxz ZSk7CisJCQkJCQkJICAgc2VxaW5mby0+cGFnZV9sc24sIGZhbHNlLCBJbnZhbGlkUmVwbE9yaWdp bklkKTsKIAogCXJldHVybiBDT1BZU0VRX1NVQ0NFU1M7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCBhMDRiODRlYmMxZC4uYWIyZDU0ZDU4MjUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtMjY5 LDcgKzI2OSw4IEBAIFByb2Nlc3NTeW5jaW5nVGFibGVzRm9yU3luYyhYTG9nUmVjUHRyIGN1cnJl bnRfbHNuKQogCQkJCQkJCQkgICBNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkLAogCQkJCQkJCQkg ICBNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbHN0YXRlLAogCQkJCQkJCQkgICBNeUxvZ2ljYWxSZXBX b3JrZXItPnJlbHN0YXRlX2xzbiwKLQkJCQkJCQkJICAgZmFsc2UpOworCQkJCQkJCQkgICBmYWxz ZSwKKwkJCQkJCQkJICAgSW52YWxpZFJlcGxPcmlnaW5JZCk7CiAKIAkJLyoKIAkJICogRW5kIHN0 cmVhbWluZyBzbyB0aGF0IExvZ1JlcFdvcmtlcldhbFJjdkNvbm4gY2FuIGJlIHVzZWQgdG8gZHJv cApAQCAtNDY5LDcgKzQ3MCwxNyBAQCBQcm9jZXNzU3luY2luZ1RhYmxlc0ZvckFwcGx5KFhMb2dS ZWNQdHIgY3VycmVudF9sc24pCiAJCQkJICovCiAJCQkJVXBkYXRlU3Vic2NyaXB0aW9uUmVsU3Rh dGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwKIAkJCQkJCQkJCQkgICByc3RhdGUtPnJlbGlk LCByc3RhdGUtPnN0YXRlLAotCQkJCQkJCQkJCSAgIHJzdGF0ZS0+bHNuLCB0cnVlKTsKKwkJCQkJ CQkJCQkgICByc3RhdGUtPmxzbiwgdHJ1ZSwKKwkJCQkJCQkJCQkgICBJbnZhbGlkUmVwbE9yaWdp bklkKTsKKworCQkJCS8qCisJCQkJICogUmVidWlsZCB0aGUgdGFibGVzeW5jIG9yaWdpbnMgY2Fj aGUgbm93IHRoYXQgdGhpcyByZWxhdGlvbgorCQkJCSAqIGhhcyB0cmFuc2l0aW9uZWQgdG8gUkVB RFkuIFRoZSBzcnRhYmxlc3luY29yaWdpbmlkIHdyaXR0ZW4KKwkJCQkgKiBhdCBGSU5JU0hFRENP UFkgaXMgbm93IHN0YWJsZSBhbmQgbmVlZHMgdG8gYmUgbG9hZGVkIGludG8KKwkJCQkgKiB0aGUg Y2FjaGUgYmVmb3JlIHRoZSBhcHBseSB3b3JrZXIgc3RhcnRzIHByb2Nlc3NpbmcgV0FMCisJCQkJ ICogY2hhbmdlcyBmb3IgdGhpcyByZWxhdGlvbi4KKwkJCQkgKi8KKwkJCQlyZWJ1aWxkX3RhYmxl c3luY19vcmlnaW5zX2NhY2hlKCk7CiAJCQl9CiAJCX0KIAkJZWxzZQpAQCAtMTM3NSw3ICsxMzg2 LDggQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBv cykKIAkJCQkJCQkgICBNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkLAogCQkJCQkJCSAgIE15TG9n aWNhbFJlcFdvcmtlci0+cmVsc3RhdGUsCiAJCQkJCQkJICAgTXlMb2dpY2FsUmVwV29ya2VyLT5y ZWxzdGF0ZV9sc24sCi0JCQkJCQkJICAgZmFsc2UpOworCQkJCQkJCSAgIGZhbHNlLAorCQkJCQkJ CSAgIEludmFsaWRSZXBsT3JpZ2luSWQpOwogCiAJLyoKIAkgKiBDcmVhdGUgdGhlIHJlcGxpY2F0 aW9uIG9yaWdpbiBpbiBhIHNlcGFyYXRlIHRyYW5zYWN0aW9uIGZyb20gdGhlIG9uZQpAQCAtMTUw NCw4ICsxNTE2LDggQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdp bl9zdGFydHBvcykKIAkJCQkJCQkgICBNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkLAogCQkJCQkJ CSAgIFNVQlJFTF9TVEFURV9GSU5JU0hFRENPUFksCiAJCQkJCQkJICAgTXlMb2dpY2FsUmVwV29y a2VyLT5yZWxzdGF0ZV9sc24sCi0JCQkJCQkJICAgZmFsc2UpOwotCisJCQkJCQkJICAgZmFsc2Us CisJCQkJCQkJICAgb3JpZ2luaWQpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCiBj b3B5X3RhYmxlX2RvbmU6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpv bGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGEzZjI0MDZlZDgzLi43MDYyZDg5 YTViMQotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTI5MCw2ICsyOTAs NyBAQAogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIK ICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5j bHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNDg0LDYgKzQ4NSwyMSBAQCBXYWxSZWNlaXZlckNv bm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPSBOVUxMOwogU3Vic2NyaXB0aW9uICpNeVN1YnNj cmlwdGlvbiA9IE5VTEw7CiBzdGF0aWMgYm9vbCBNeVN1YnNjcmlwdGlvblZhbGlkID0gZmFsc2U7 CiAKKy8qCisgKiBIYXNoIHRhYmxlIG1hcHBpbmcgUmVwbE9yaWdpbklkIC0+IGJvb2wgZm9yIG9y aWdpbnMgdXNlZCBieSB0YWJsZXN5bmMKKyAqIHdvcmtlcnMgZHVyaW5nIGluaXRpYWwgQ09QWS4g IEJ1aWx0IGZyb20gcGdfc3Vic2NyaXB0aW9uX3JlbCBhdCBhcHBseQorICogd29ya2VyIHN0YXJ0 dXAgYW5kIHJlZnJlc2hlZCB3aGVuZXZlciBhIHJlbGF0aW9uIHRyYW5zaXRpb25zIHRvIFJFQURZ LgorICogTGV0cyB0aGUgYXBwbHkgd29ya2VyIHN1cHByZXNzIGZhbHNlIHVwZGF0ZS9kZWxldGVf b3JpZ2luX2RpZmZlcnMKKyAqIGNvbmZsaWN0cyBvbiByb3dzIHRoYXQgd2VyZSByZS1zdGFtcGVk IHdpdGggdGhlIHRhYmxlc3luYyBvcmlnaW4gSUQKKyAqIGR1cmluZyBXQUwgcmVwbGF5IGFmdGVy IGEgY3Jhc2guCisgKi8KK3R5cGVkZWYgc3RydWN0IFRhYmxlc3luY09yaWdpbkVudHJ5Cit7CisJ UmVwbE9yaWdpbklkIG9yaWdpbmlkOwkJLyogaGFzaCBrZXkg4oCUIG11c3QgYmUgZmlyc3QgKi8K K30gVGFibGVzeW5jT3JpZ2luRW50cnk7CisKK3N0YXRpYyBIVEFCICp0YWJsZXN5bmNfb3JpZ2lu cyA9IE5VTEw7CisKIHN0YXRpYyBMaXN0ICpvbl9jb21taXRfd2FrZXVwX3dvcmtlcnNfc3ViaWRz ID0gTklMOwogCiBib29sCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKQEAgLTcyMiw2 ICs3MzgsNzUgQEAgc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbChMb2dpY2FsUmVwUmVsTWFw RW50cnkgKnJlbCkKIAlyZXR1cm4gZmFsc2U7CQkJCS8qIGR1bW15IGZvciBjb21waWxlciAqLwog fQogCisvKgorICogUmVidWlsZCB0aGUgaW4tbWVtb3J5IGhhc2ggdGFibGUgb2YgdGFibGVzeW5j IG9yaWdpbiBJRHMgZnJvbQorICogcGdfc3Vic2NyaXB0aW9uX3JlbC4gIENhbGxlZCBhdCBhcHBs eSB3b3JrZXIgc3RhcnR1cCBhbmQgd2hlbmV2ZXIgYQorICogcmVsYXRpb24gdHJhbnNpdGlvbnMg dG8gU1VCUkVMX1NUQVRFX1JFQURZLCBzbyBuZXdseSBmaW5pc2hlZCB0YWJsZXN5bmMKKyAqIHdv cmtlcnMgYXJlIGFsd2F5cyByZWZsZWN0ZWQgaW4gdGhlIGNhY2hlLgorICovCit2b2lkCityZWJ1 aWxkX3RhYmxlc3luY19vcmlnaW5zX2NhY2hlKHZvaWQpCit7CisJTGlzdAkgICAqc3VicmVsczsK KwlMaXN0Q2VsbCAgICpsYzsKKwlIQVNIQ1RMCQljdGw7CisKKwkvKiBEZXN0cm95IHRoZSBvbGQg dGFibGUgaWYgaXQgZXhpc3RzICovCisJaWYgKHRhYmxlc3luY19vcmlnaW5zICE9IE5VTEwpCisJ eworCQloYXNoX2Rlc3Ryb3kodGFibGVzeW5jX29yaWdpbnMpOworCQl0YWJsZXN5bmNfb3JpZ2lu cyA9IE5VTEw7CisJfQorCisJLyoKKwkgKiBDYWxsIEdldFN1YnNjcmlwdGlvblJlbGF0aW9ucyB0 byBnZXQgYWxsIHRhYmxlcyBmb3IgdGhpcyBzdWJzY3JpcHRpb24gZnJvbQorCSAqIHBnX3N1YnNj cmlwdGlvbl9yZWwuCisJICoKKwkgKi8KKwlzdWJyZWxzID0gR2V0U3Vic2NyaXB0aW9uUmVsYXRp b25zKE15U3Vic2NyaXB0aW9uLT5vaWQsIHRydWUsIGZhbHNlLCBmYWxzZSk7CisKKwlmb3JlYWNo KGxjLCBzdWJyZWxzKQorCXsKKwkJU3Vic2NyaXB0aW9uUmVsU3RhdGUgKnJlbHN0YXRlID0gKFN1 YnNjcmlwdGlvblJlbFN0YXRlICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHJlbHN0YXRlLT5vcmln aW5pZCA9PSBJbnZhbGlkUmVwbE9yaWdpbklkKQorCQkJY29udGludWU7CisKKwkJaWYgKHRhYmxl c3luY19vcmlnaW5zID09IE5VTEwpCisJCXsKKwkJCW1lbXNldCgmY3RsLCAwLCBzaXplb2YoY3Rs KSk7CisJCQljdGwua2V5c2l6ZSA9IHNpemVvZihSZXBsT3JpZ2luSWQpOworCQkJY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihUYWJsZXN5bmNPcmlnaW5FbnRyeSk7CisJCQljdGwuaGN4dCA9IEFwcGx5 Q29udGV4dDsKKwkJCXRhYmxlc3luY19vcmlnaW5zID0gaGFzaF9jcmVhdGUoInRhYmxlc3luYyBv cmlnaW5zIiwKKwkJCQkJCQkJCQkJMTYsCisJCQkJCQkJCQkJCSZjdGwsCisJCQkJCQkJCQkJCUhB U0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQl9CisKKwkJaGFzaF9zZWFy Y2godGFibGVzeW5jX29yaWdpbnMsICZyZWxzdGF0ZS0+b3JpZ2luaWQsIEhBU0hfRU5URVIsIE5V TEwpOworCX0KKworCWxpc3RfZnJlZV9kZWVwKHN1YnJlbHMpOworfQorCisvKgorICogaXNfdGFi bGVzeW5jX29yaWdpbgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gb3JpZ2luIElE IGlzIHJlY29yZGVkIGluIHBnX3N1YnNjcmlwdGlvbl9yZWwKKyAqIGFzIHRoZSB0YWJsZXN5bmMg b3JpZ2luIGZvciBhbnkgcmVsYXRpb24gaW4gdGhpcyBzdWJzY3JpcHRpb24uICBVc2VkIHRvCisg KiBzdXBwcmVzcyBmYWxzZSB1cGRhdGUvZGVsZXRlX29yaWdpbl9kaWZmZXJzIGNvbmZsaWN0cyBv biByb3dzIHRoYXQgd2VyZQorICogc3RhbXBlZCB3aXRoIHRoZSB0YWJsZXN5bmMgb3JpZ2luIElE IGR1cmluZyBXQUwgcmVwbGF5IGFmdGVyIGEgY3Jhc2guCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9v bAoraXNfdGFibGVzeW5jX29yaWdpbihSZXBsT3JpZ2luSWQgb3JpZ2luaWQpCit7CisJaWYgKHRh Ymxlc3luY19vcmlnaW5zID09IE5VTEwgfHwgb3JpZ2luaWQgPT0gSW52YWxpZFJlcGxPcmlnaW5J ZCkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIGhhc2hfc2VhcmNoKHRhYmxlc3luY19vcmln aW5zLCAmb3JpZ2luaWQsIEhBU0hfRklORCwgTlVMTCkgIT0gTlVMTDsKK30KKwogLyoKICAqIEJl Z2luIG9uZSBzdGVwIChvbmUgSU5TRVJULCBVUERBVEUsIGV0Yykgb2YgYSByZXBsaWNhdGlvbiB0 cmFuc2FjdGlvbi4KICAqCkBAIC0yOTU4LDExICszMDQzLDEzIEBAIGFwcGx5X2hhbmRsZV91cGRh dGVfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAl7CiAJCS8qCiAJCSAqIFJl cG9ydCB0aGUgY29uZmxpY3QgaWYgdGhlIHR1cGxlIHdhcyBtb2RpZmllZCBieSBhIGRpZmZlcmVu dAotCQkgKiBvcmlnaW4uCisJCSAqIG9yaWdpbi4gU2tpcCBpZiB0aGUgb3JpZ2luIGlzIHJlY29y ZGVkIGluIHBnX3N1YnNjcmlwdGlvbl9yZWwKKwkJICogYXMgYSBrbm93biB0YWJsZXN5bmMgb3Jp Z2luIGZvciB0aGlzIHN1YnNjcmlwdGlvbi4KIAkJICovCiAJCWlmIChHZXRUdXBsZVRyYW5zYWN0 aW9uSW5mbyhsb2NhbHNsb3QsICZjb25mbGljdHR1cGxlLnhtaW4sCiAJCQkJCQkJCQkmY29uZmxp Y3R0dXBsZS5vcmlnaW4sICZjb25mbGljdHR1cGxlLnRzKSAmJgotCQkJY29uZmxpY3R0dXBsZS5v cmlnaW4gIT0gcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbikKKwkJCWNvbmZsaWN0dHVwbGUu b3JpZ2luICE9IHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4gJiYKKwkJCSFpc190YWJsZXN5 bmNfb3JpZ2luKGNvbmZsaWN0dHVwbGUub3JpZ2luKSkKIAkJewogCQkJVHVwbGVUYWJsZVNsb3Qg Km5ld3Nsb3Q7CiAKQEAgLTI5NzEsNyArMzA1OCw2IEBAIGFwcGx5X2hhbmRsZV91cGRhdGVfaW50 ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAkJCXNsb3Rfc3RvcmVfZGF0YShuZXdz bG90LCByZWxtYXBlbnRyeSwgbmV3dHVwKTsKIAogCQkJY29uZmxpY3R0dXBsZS5zbG90ID0gbG9j YWxzbG90OwotCiAJCQlSZXBvcnRBcHBseUNvbmZsaWN0KGVzdGF0ZSwgcmVsaW5mbywgTE9HLCBD VF9VUERBVEVfT1JJR0lOX0RJRkZFUlMsCiAJCQkJCQkJCXJlbW90ZXNsb3QsIG5ld3Nsb3QsCiAJ CQkJCQkJCWxpc3RfbWFrZTEoJmNvbmZsaWN0dHVwbGUpKTsKQEAgLTMxNTMsMTEgKzMyMzksMTMg QEAgYXBwbHlfaGFuZGxlX2RlbGV0ZV9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRh LAogCXsKIAkJLyoKIAkJICogUmVwb3J0IHRoZSBjb25mbGljdCBpZiB0aGUgdHVwbGUgd2FzIG1v ZGlmaWVkIGJ5IGEgZGlmZmVyZW50Ci0JCSAqIG9yaWdpbi4KKwkJICogb3JpZ2luLiBTa2lwIGlm IHRoZSBvcmlnaW4gaXMgcmVjb3JkZWQgaW4gcGdfc3Vic2NyaXB0aW9uX3JlbAorCQkgKiBhcyBh IGtub3duIHRhYmxlc3luYyBvcmlnaW4uCiAJCSAqLwogCQlpZiAoR2V0VHVwbGVUcmFuc2FjdGlv bkluZm8obG9jYWxzbG90LCAmY29uZmxpY3R0dXBsZS54bWluLAogCQkJCQkJCQkJJmNvbmZsaWN0 dHVwbGUub3JpZ2luLCAmY29uZmxpY3R0dXBsZS50cykgJiYKLQkJCWNvbmZsaWN0dHVwbGUub3Jp Z2luICE9IHJlcGxvcmlnaW5feGFjdF9zdGF0ZS5vcmlnaW4pCisJCQljb25mbGljdHR1cGxlLm9y aWdpbiAhPSByZXBsb3JpZ2luX3hhY3Rfc3RhdGUub3JpZ2luICYmCisJCQkhaXNfdGFibGVzeW5j X29yaWdpbihjb25mbGljdHR1cGxlLm9yaWdpbikpCiAJCXsKIAkJCWNvbmZsaWN0dHVwbGUuc2xv dCA9IGxvY2Fsc2xvdDsKIAkJCVJlcG9ydEFwcGx5Q29uZmxpY3QoZXN0YXRlLCByZWxpbmZvLCBM T0csIENUX0RFTEVURV9PUklHSU5fRElGRkVSUywKQEAgLTM1MjUsNyArMzYxMyw4IEBAIGFwcGx5 X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCQkJaWYg KEdldFR1cGxlVHJhbnNhY3Rpb25JbmZvKGxvY2Fsc2xvdCwgJmNvbmZsaWN0dHVwbGUueG1pbiwK IAkJCQkJCQkJCQkJJmNvbmZsaWN0dHVwbGUub3JpZ2luLAogCQkJCQkJCQkJCQkmY29uZmxpY3R0 dXBsZS50cykgJiYKLQkJCQkJY29uZmxpY3R0dXBsZS5vcmlnaW4gIT0gcmVwbG9yaWdpbl94YWN0 X3N0YXRlLm9yaWdpbikKKwkJCQkJY29uZmxpY3R0dXBsZS5vcmlnaW4gIT0gcmVwbG9yaWdpbl94 YWN0X3N0YXRlLm9yaWdpbiAmJgorCQkJCQkhaXNfdGFibGVzeW5jX29yaWdpbihjb25mbGljdHR1 cGxlLm9yaWdpbikpCiAJCQkJewogCQkJCQlUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdDsKIApAQCAt NTcxNCw2ICs1ODAzLDE2IEBAIHJ1bl9hcHBseV93b3JrZXIodm9pZCkKIAlvcmlnaW5fc3RhcnRw b3MgPSByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNlKTsKIAlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKIAorCS8qCisJICogQnVpbGQgdGhlIHRhYmxlc3luYyBvcmlnaW5z IGNhY2hlIGZyb20gcGdfc3Vic2NyaXB0aW9uX3JlbC4gIFRoaXMKKwkgKiBsZXRzIHRoZSBhcHBs eSB3b3JrZXIgcmVjb2duaXNlIHJvd3MgdGhhdCB3ZXJlIHN0YW1wZWQgd2l0aCBhIChub3cKKwkg KiBkcm9wcGVkKSB0YWJsZXN5bmMgb3JpZ2luIElEIHdoaWxlIGFwcGx5aW5nIHVwZGF0ZXMgYW5k IGRlbGV0ZXMsIGFuZAorCSAqIHN1cHByZXNzIGZhbHNlIHVwZGF0ZS9kZWxldGVfb3JpZ2luX2Rp ZmZlcnMgY29uZmxpY3RzIGZvciB0aGVtLgorCSAqLworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisJcmVidWlsZF90YWJsZXN5bmNfb3JpZ2luc19jYWNoZSgpOworCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCiAJLyogSXMgdGhlIHVzZSBvZiBhIHBhc3N3b3JkIG1hbmRhdG9yeT8g Ki8KIAltdXN0X3VzZV9wYXNzd29yZCA9IE15U3Vic2NyaXB0aW9uLT5wYXNzd29yZHJlcXVpcmVk ICYmCiAJCSFNeVN1YnNjcmlwdGlvbi0+b3duZXJzdXBlcnVzZXI7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oCmluZGV4IDUwMjY0MGQzMDE4Li44MTYyMWViZTQ2NCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgKQEAgLTM1LDYgKzM1 LDggQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb25fcmVsLDYxMDIsU3Vic2NyaXB0aW9uUmVsUmVs YXRpb25JZCkKIAlPaWQJCQlzcnN1YmlkIEJLSV9MT09LVVAocGdfc3Vic2NyaXB0aW9uKTsJLyog T2lkIG9mIHN1YnNjcmlwdGlvbiAqLwogCU9pZAkJCXNycmVsaWQgQktJX0xPT0tVUChwZ19jbGFz cyk7CS8qIE9pZCBvZiByZWxhdGlvbiAqLwogCWNoYXIJCXNyc3Vic3RhdGU7CQkvKiBzdGF0ZSBv ZiB0aGUgcmVsYXRpb24gaW4gc3Vic2NyaXB0aW9uICovCisJaW50MTYJCXNydGFibGVzeW5jb3Jp Z2luaWQ7IC8qIHRhYmxlc3luYyBvcmlnaW4gdXNlZCBkdXJpbmcgQ09QWSwKKwkJCQkJCQkJKiBJ bnZhbGlkUmVwbE9yaWdpbklkIGlmIG5vdCBhcHBsaWNhYmxlICovCiAKIAkvKgogCSAqIEFsdGhv dWdoIHNyc3VibHNuIGlzIGEgZml4ZWQtd2lkdGggdHlwZSwgaXQgaXMgYWxsb3dlZCB0byBiZSBO VUxMLCBzbwpAQCAtODQsNiArODYsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb25SZWxT dGF0ZQogCU9pZAkJCXJlbGlkOwogCVhMb2dSZWNQdHIJbHNuOwogCWNoYXIJCXN0YXRlOworCVJl cGxPcmlnaW5JZCBvcmlnaW5pZDsgLyogdGFibGVzeW5jIG9yaWdpbiBmcm9tIHNydGFibGVzeW5j b3JpZ2luaWQsCisJCQkJCQkJKiBJbnZhbGlkUmVwbE9yaWdpbklkIGlmIG5vdCBzZXQgKi8KIH0g U3Vic2NyaXB0aW9uUmVsU3RhdGU7CiAKIC8qCkBAIC0xMTIsNyArMTE2LDggQEAgdHlwZWRlZiBz dHJ1Y3QgTG9naWNhbFJlcFNlcXVlbmNlSW5mbwogZXh0ZXJuIHZvaWQgQWRkU3Vic2NyaXB0aW9u UmVsU3RhdGUoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGNoYXIgc3RhdGUsCiAJCQkJCQkJCQlYTG9n UmVjUHRyIHN1YmxzbiwgYm9vbCByZXRhaW5fbG9jayk7CiBleHRlcm4gdm9pZCBVcGRhdGVTdWJz Y3JpcHRpb25SZWxTdGF0ZShPaWQgc3ViaWQsIE9pZCByZWxpZCwgY2hhciBzdGF0ZSwKLQkJCQkJ CQkJCSAgIFhMb2dSZWNQdHIgc3VibHNuLCBib29sIGFscmVhZHlfbG9ja2VkKTsKKwkJCQkJCQkJ CSAgIFhMb2dSZWNQdHIgc3VibHNuLCBib29sIGFscmVhZHlfbG9ja2VkLAorCQkJCQkJCQkJICAg UmVwbE9yaWdpbklkIG9yaWdpbmlkKTsKIGV4dGVybiBjaGFyIEdldFN1YnNjcmlwdGlvblJlbFN0 YXRlKE9pZCBzdWJpZCwgT2lkIHJlbGlkLCBYTG9nUmVjUHRyICpzdWJsc24pOwogZXh0ZXJuIHZv aWQgUmVtb3ZlU3Vic2NyaXB0aW9uUmVsKE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCA3NDViN2Q5ZTk2OS4uNmI5 MjMzYzdlMDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBA IC0zMDUsNiArMzA1LDggQEAgZXh0ZXJuIHZvaWQgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhGaWxl U2V0ICpzdHJlYW1fZmlsZXNldCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAKIGV4dGVybiB2b2lkIGFw cGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcyk7CiAKK2V4dGVybiB2b2lkIHJlYnVpbGRfdGFibGVz eW5jX29yaWdpbnNfY2FjaGUodm9pZCk7CisKIGV4dGVybiB2b2lkIG1heWJlX3JlcmVhZF9zdWJz Y3JpcHRpb24odm9pZCk7CiAKIGV4dGVybiB2b2lkIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBz dWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOwotLSAKMi40Ny4zCgo= --000000000000f354b606536bf842--