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 1rxLEH-007nlH-AG for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Apr 2024 06:26:41 +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 1rxLEF-001FAh-Si for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Apr 2024 06:26:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rxLEF-001FAZ-F0 for pgsql-hackers@lists.postgresql.org; Thu, 18 Apr 2024 06:26:39 +0000 Received: from mail-yb1-xb2e.google.com ([2607:f8b0:4864:20::b2e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rxLEC-001aA4-Ej for pgsql-hackers@lists.postgresql.org; Thu, 18 Apr 2024 06:26:38 +0000 Received: by mail-yb1-xb2e.google.com with SMTP id 3f1490d57ef6-dc23bf7e5aaso577464276.0 for ; Wed, 17 Apr 2024 23:26:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713421594; x=1714026394; 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=m/kjihiimKak7pJ3qZQ4Svxows3QNcg+KRkNsNtNlS8=; b=NZc3gQqs5orZMfL+XcmCp3LRyyfhRZzzoWAKheIO30SWfqW40Hvig2c8d92ZDN5QOi dwZhhlSLZakBSQxQaa4W/+OTt4bEAtB0qnrA6SWb80RwbawXN7iqZBqZeW9Pmntt6+fM P9W/HyNmkSI7MYl6tzcw6QQC9YT5QYFmFV+h1X52Y9OQ5PZBOBZzjDOQFr39QinojEja QH8VZxmKIXcuLF7shgzo5QfQuYNa9V249+PdXzflIviz4hb6pUntvtauYic6Dv3JhES0 ce1rwl1NmcTGOiuZmVx55UVngPm1xjqO48aXqO1HSWN77WN8kkEK2Uab8MGoGhn0chrm 3lJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713421594; x=1714026394; 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=m/kjihiimKak7pJ3qZQ4Svxows3QNcg+KRkNsNtNlS8=; b=SK2f8kxLlgYSD15OPPYOzj/MvHqhO9+g90sGpz9YGbK56/sj89lBuBhO31aj0xrMsS aCMgNr5MvoULuB4Xzf2e86Pii/TJ1OFK3F+cDjXe3diA3vCNzKS/6tKtyfA+XEzXILCL IlWbhhUNUBYjkrAg2AdtKThkEUJGD4V1KX8yB9XI1BoC/Obha/hUdE+2xOx7nPMNB7xt PNes6DH9ys0b/ghG9e5oi8W0RS50PfrUVxoeg4vu/hZKirto+fV5gPTAM3R/7/SQt3ak TdMKIR8Ns2nxIOrN6BVrVJqUNodS061A1aZKJCZc3X+gl4pJ1XziXAGzD4WFPPTvgEL+ Uu6w== X-Forwarded-Encrypted: i=1; AJvYcCVs3hqYX/niebmGtSB9ewQunvkUC4MNd1m5NFhg/6NKBdY8Yra8Wi943kitKhqT9iDYq4bIX92kaeV3Uyqj4hCOgTW/aJcugzYs4PyCyF8vDvaA X-Gm-Message-State: AOJu0Yzm9kVC7qb8fD9uC8lN4cAp8Q/RWIKNZxUgw3jVbGTYXThqyhtW t5BdpZyr/7o86wfE+soYiPm5zs7537XHiphPRiTg4sZDhT3wvngX8tDKsUMM8ziWv2y1v2vXnqV D93uH5/TYKNyp3DJuHkUVEjFCfUQ= X-Google-Smtp-Source: AGHT+IFS+Av7AqWuCyoS4BH1MjWI18KZDIjMloDsVvpm52nsPNUSMCwRTYGb7etzcALR/ZGQcOATIKXJ5O2tjWhd22Q= X-Received: by 2002:a25:ac5c:0:b0:dcc:84ae:9469 with SMTP id r28-20020a25ac5c000000b00dcc84ae9469mr1536379ybd.64.1713421594192; Wed, 17 Apr 2024 23:26:34 -0700 (PDT) MIME-Version: 1.0 References: <8fab8-65d74c80-1-2f28e880@39088166> <99df2-65d8d200-1-63c26880@172687752> In-Reply-To: From: Ajin Cherian Date: Thu, 18 Apr 2024 16:26:22 +1000 Message-ID: Subject: Re: Slow catchup of 2PC (twophase) transactions on replica in LR To: Amit Kapila Cc: "Hayato Kuroda (Fujitsu)" , =?UTF-8?B?0JTQsNCy0YvQtNC+0LIg0JLQuNGC0LDQu9C40Lk=?= , Heikki Linnakangas , "pgsql-hackers@lists.postgresql.org" Content-Type: multipart/mixed; boundary="000000000000791d870616590d85" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000791d870616590d85 Content-Type: multipart/alternative; boundary="000000000000791d810616590d83" --000000000000791d810616590d83 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Apr 16, 2024 at 4:25=E2=80=AFPM Amit Kapila wrote: > > > > > Can you please once consider the idea shared by me at [1] (One naive > idea is that on the publisher .....) to solve this problem? > > [1] - > https://www.postgresql.org/message-id/CAA4eK1K1fSkeK%3Dkc26G5cq87vQG4%3D1= qs_b%2Bno4%2Bep654SeBy1w%40mail.gmail.com > > > Expanding on Amit's idea, we found out that there is already a mechanism in code to fully decode prepared transactions prior to a defined LSN where two_phase is enabled using the "two_phase_at" LSN in the slot. Look at ReorderBufferFinishPrepared() on how this is done. This code was not working as expected in our patch because we were setting two_phase on the slot to true as soon as the alter command was received. This was not the correct way, initially when two_phase is enabled, the two_phase changes to pending state and two_phase option on the slot should only be set to true when two_phase moves from pending to enabled. This will happen once the replication is restarted with two_phase option. Look at code in CreateDecodingContext() on how "two_phase_at" is set in the slot when done this way. So we changed the code to not remotely alter two_phase when toggling from false to true. With this change, now even if there are pending transactions on the publisher when toggling two_phase from false to true, these pending transactions will be fully decoded and sent once the commit prepared is decoded as the pending prepared transactions are prior to the "two_phase_at" LSN. With this patch, now we are able to handle both pending prepared transactions when altering two_phase from true to false as well as false to true. Attaching the patch for your review and comments. Big thanks to Kuroda-san for also working on the patch. regards, Ajin Cherian Fujitsu Australia. --000000000000791d810616590d83 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


=
On Tue, Apr 16, 2024 at 4:25=E2=80=AF= PM Amit Kapila <amit.kapila16= @gmail.com> wrote:

>

Can you please once consider the idea shared by me at [1] (One naive
idea is that on the publisher .....) to solve this problem?

[1] - https://www.postgresql.org/message-id/CAA4eK1K1fSkeK%3D= kc26G5cq87vQG4%3D1qs_b%2Bno4%2Bep654SeBy1w%40mail.gmail.com



Expanding on Amit's idea, we f= ound out that there is already a mechanism in code to fully decode prepared= transactions prior to a defined LSN where two_phase is enabled using the &= quot;two_phase_at" LSN in the slot. Look at=20 ReorderBufferFinishPrepared() on how this is done. This code was not working as expected in our= patch because
we were setting two_phase on the slot to true as s= oon as the alter command was received. This was not the correct way, initia= lly when two_phase is enabled, the two_phase changes to pending state and t= wo_phase option on the slot should only be set to true when two_phase moves= from pending to enabled. This will happen once the replication is restarte= d with two_phase option. Look at code in=C2=A0 CreateDecodingContext() on how "two_phase_at" is set in the slot when done this way. = So we changed the code to not remotely alter two_phase when toggling from f= alse to true. With this change, now even if there are pending transactions = on the publisher when toggling two_phase from false to true, these pending = transactions will be fully decoded and sent once the commit prepared is dec= oded as the pending prepared transactions are prior to the "two_phase_= at" LSN. With this patch, now we are able to handle both pending prepa= red transactions when altering two_phase from true to false as well as fals= e to true.

Attaching the patch for your review and= comments. Big thanks to Kuroda-san for also working on the patch.

regards,
Ajin Cherian
Fujitsu Aust= ralia.
--000000000000791d810616590d83-- --000000000000791d870616590d85 Content-Type: application/octet-stream; name="v4-0002-Alter-slot-option-two_phase-only-when-altering-tr.patch" Content-Disposition: attachment; filename="v4-0002-Alter-slot-option-two_phase-only-when-altering-tr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lv4uwyee1 RnJvbSA1ZTRlNzlhNTA1NmJhZTM3NDkxMWQ5NmVlZjZjNGQ5NDVlMjM5MDNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBXZWQsIDE3IEFwciAyMDI0IDA2OjE4OjIzICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NCAyLzNdIEFsdGVyIHNsb3Qgb3B0aW9uIHR3b19waGFzZSBvbmx5IHdoZW4gYWx0ZXJpbmcg dHJ1ZSB0bwogZmFsc2UKCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5jICAgICAgIHwgMjEgKysrKystCiAuLi4vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2Vp dmVyLmMgICAgICAgfCAyMSArKysrLS0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2Vp dmVyLmggICAgICAgICB8ICA4ICstLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxk ICAgICAgICAgICAgIHwgIDEgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDk5X3R3b3BoYXNl X2FkZGVkLnBsIHwgNzIgKysrKysrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxMTEg aW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDk5X3R3b3BoYXNlX2FkZGVkLnBsCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDMyOTlhNjBmZmYuLjBkODBkNmUxMTAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTg1MCw3ICs4NTAsNyBAQCBD cmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25T dG10ICpzdG10LAogCQkJZWxzZSBpZiAob3B0cy5zbG90X25hbWUgJiYKIAkJCQkJIChvcHRzLmZh aWxvdmVyIHx8IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbih3cmNvbm4pID49IDE3MDAwMCkpCiAJCQl7 Ci0JCQkJd2FscmN2X2FsdGVyX3Nsb3Qod3Jjb25uLCBvcHRzLnNsb3RfbmFtZSwgb3B0cy50d29w aGFzZSwgb3B0cy5mYWlsb3Zlcik7CisJCQkJd2FscmN2X2FsdGVyX3Nsb3Qod3Jjb25uLCBvcHRz LnNsb3RfbmFtZSwgTlVMTCwgJm9wdHMuZmFpbG92ZXIpOwogCQkJfQogCQl9CiAJCVBHX0ZJTkFM TFkoKTsKQEAgLTE1NjQsNiArMTU2NCw4IEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQlib29sCQltdXN0X3VzZV9w YXNzd29yZDsKIAkJY2hhcgkgICAqZXJyOwogCQlXYWxSZWNlaXZlckNvbm4gKndyY29ubjsKKwkJ Ym9vbAkJdHdvX3BoYXNlX25lZWRzX3RvX2JlX3VwZGF0ZWQ7CisJCWJvb2wJCWZhaWxvdmVyX25l ZWRzX3RvX2JlX3VwZGF0ZWQ7CiAKIAkJLyogTG9hZCB0aGUgbGlicmFyeSBwcm92aWRpbmcgdXMg bGlicHEgY2FsbHMuICovCiAJCWxvYWRfZmlsZSgibGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsK QEAgLTE1NzcsOSArMTU3OSwyNCBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9D T05ORUNUSU9OX0ZBSUxVUkUpLAogCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgY29ubmVjdCB0byB0 aGUgcHVibGlzaGVyOiAlcyIsIGVycikpKTsKIAorCQkvKgorCQkgKiBDb25zaWRlciB3aGljaCBz bG90IG9wdGlvbiBtdXN0IGJlIGFsdGVyZWQuCisJCSAqCisJCSAqIFdlIG11c3QgYWx0ZXIgdGhl IGZhaWxvdmVyIG9wdGlvbiB3aGVuZXZlciBzdWJmYWlsb3ZlciBpcyB1cGRhdGVkLgorCQkgKiBU d29fcGhhc2UsIGhvd2V2ZXIsIGlzIGFsdGVyZWQgb25seSB3aGVuIGNoYW5naW5nIHRydWUgdG8g ZmFsc2UuCisJCSAqLworCQl0d29fcGhhc2VfbmVlZHNfdG9fYmVfdXBkYXRlZCA9CisJCQkJCQko cmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VidHdvcGhhc2VzdGF0ZSAtIDFdICYmCisJ CQkJCQkgIW9wdHMudHdvcGhhc2UpOworCQlmYWlsb3Zlcl9uZWVkc190b19iZV91cGRhdGVkID0K KwkJCQkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZmFpbG92ZXIgLSAxXTsK KwogCQlQR19UUlkoKTsKIAkJewotCQkJd2FscmN2X2FsdGVyX3Nsb3Qod3Jjb25uLCBzdWItPnNs b3RuYW1lLCBvcHRzLnR3b3BoYXNlLCBvcHRzLmZhaWxvdmVyKTsKKwkJCWlmICh0d29fcGhhc2Vf bmVlZHNfdG9fYmVfdXBkYXRlZCB8fCBmYWlsb3Zlcl9uZWVkc190b19iZV91cGRhdGVkKQorCQkJ CXdhbHJjdl9hbHRlcl9zbG90KHdyY29ubiwgc3ViLT5zbG90bmFtZSwKKwkJCQkJCQkJICB0d29f cGhhc2VfbmVlZHNfdG9fYmVfdXBkYXRlZCA/ICZvcHRzLnR3b3BoYXNlIDogTlVMTCwKKwkJCQkJ CQkJICBmYWlsb3Zlcl9uZWVkc190b19iZV91cGRhdGVkID8gJm9wdHMuZmFpbG92ZXIgOiBOVUxM KTsKIAkJfQogCQlQR19GSU5BTExZKCk7CiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKaW5kZXgg YmFlZjNiZGVjMC4uNTQ2YjU5OTg0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKQEAgLTgwLDcg KzgwLDcgQEAgc3RhdGljIGNoYXIgKmxpYnBxcmN2X2NyZWF0ZV9zbG90KFdhbFJlY2VpdmVyQ29u biAqY29ubiwKIAkJCQkJCQkJICBDUlNTbmFwc2hvdEFjdGlvbiBzbmFwc2hvdF9hY3Rpb24sCiAJ CQkJCQkJCSAgWExvZ1JlY1B0ciAqbHNuKTsKIHN0YXRpYyB2b2lkIGxpYnBxcmN2X2FsdGVyX3Ns b3QoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBjb25zdCBjaGFyICpzbG90bmFtZSwKLQkJCQkJCQkJ Ym9vbCB0d29fcGhhc2UsIGJvb2wgZmFpbG92ZXIpOworCQkJCQkJCQljb25zdCBib29sICp0d29f cGhhc2UsIGNvbnN0IGJvb2wgKmZhaWxvdmVyKTsKIHN0YXRpYyBwaWRfdCBsaWJwcXJjdl9nZXRf YmFja2VuZF9waWQoV2FsUmVjZWl2ZXJDb25uICpjb25uKTsKIHN0YXRpYyBXYWxSY3ZFeGVjUmVz dWx0ICpsaWJwcXJjdl9leGVjKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwKIAkJCQkJCQkJCSAgIGNv bnN0IGNoYXIgKnF1ZXJ5LApAQCAtMTEyMSwxNiArMTEyMSwyNSBAQCBsaWJwcXJjdl9jcmVhdGVf c2xvdChXYWxSZWNlaXZlckNvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnNsb3RuYW1lLAogICovCiBz dGF0aWMgdm9pZAogbGlicHFyY3ZfYWx0ZXJfc2xvdChXYWxSZWNlaXZlckNvbm4gKmNvbm4sIGNv bnN0IGNoYXIgKnNsb3RuYW1lLAotCQkJCQlib29sIHR3b19waGFzZSwgYm9vbCBmYWlsb3ZlcikK KwkJCQkJY29uc3QgYm9vbCAqdHdvX3BoYXNlLCBjb25zdCBib29sICpmYWlsb3ZlcikKIHsKIAlT dHJpbmdJbmZvRGF0YSBjbWQ7CiAJUEdyZXN1bHQgICAqcmVzOwogCiAJaW5pdFN0cmluZ0luZm8o JmNtZCk7Ci0JYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiQUxURVJfUkVQTElDQVRJT05fU0xPVCAl cyAoIFRXT19QSEFTRSAlcywgRkFJTE9WRVIgJXMgKSIsCi0JCQkJCSBxdW90ZV9pZGVudGlmaWVy KHNsb3RuYW1lKSwKLQkJCQkJIHR3b19waGFzZSA/ICJ0cnVlIiA6ICJmYWxzZSIsCi0JCQkJCSBm YWlsb3ZlciA/ICJ0cnVlIiA6ICJmYWxzZSIpOworCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIkFM VEVSX1JFUExJQ0FUSU9OX1NMT1QgJXMgKCAiLAorCQkJCQkgcXVvdGVfaWRlbnRpZmllcihzbG90 bmFtZSkpOworCisJaWYgKHR3b19waGFzZSkKKwkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiVFdP X1BIQVNFICVzJXMgIiwKKwkJCQkJCSAoKnR3b19waGFzZSkgPyAidHJ1ZSIgOiAiZmFsc2UiLAor CQkJCQkJIGZhaWxvdmVyID8gIiwgIiA6ICIiKTsKKworCWlmIChmYWlsb3ZlcikKKwkJYXBwZW5k U3RyaW5nSW5mbygmY21kLCAiRkFJTE9WRVIgJXMgIiwKKwkJCQkJCSAoKmZhaWxvdmVyKSA/ICJ0 cnVlIiA6ICJmYWxzZSIpOworCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiKTsiKTsK IAogCXJlcyA9IGxpYnBxcmN2X1BRZXhlYyhjb25uLT5zdHJlYW1Db25uLCBjbWQuZGF0YSk7CiAJ cGZyZWUoY21kLmRhdGEpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fs cmVjZWl2ZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKaW5kZXgg YTQ0M2Y0MDJmNS4uZjMwNjM3YWE0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd2FscmVjZWl2ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZl ci5oCkBAIC0zNzIsMTMgKzM3MiwxMyBAQCB0eXBlZGVmIGNoYXIgKigqd2FscmN2X2NyZWF0ZV9z bG90X2ZuKSAoV2FsUmVjZWl2ZXJDb25uICpjb25uLAogLyoKICAqIHdhbHJjdl9hbHRlcl9zbG90 X2ZuCiAgKgotICogQ2hhbmdlIHRoZSBkZWZpbml0aW9uIG9mIGEgcmVwbGljYXRpb24gc2xvdC4g Q3VycmVudGx5LCBpdCBvbmx5IHN1cHBvcnRzCi0gKiBjaGFuZ2luZyB0aGUgZmFpbG92ZXIgcHJv cGVydHkgb2YgdGhlIHNsb3QuCisgKiBDaGFuZ2UgdGhlIGRlZmluaXRpb24gb2YgYSByZXBsaWNh dGlvbiBzbG90LiBDdXJyZW50bHksIGl0IHN1cHBvcnRzCisgKiBjaGFuZ2luZyB0aGUgdHdvX3Bo YXNlIGFuZCB0aGUgZmFpbG92ZXIgcHJvcGVydHkgb2YgdGhlIHNsb3QuCiAgKi8KIHR5cGVkZWYg dm9pZCAoKndhbHJjdl9hbHRlcl9zbG90X2ZuKSAoV2FsUmVjZWl2ZXJDb25uICpjb25uLAogCQkJ CQkJCQkJICBjb25zdCBjaGFyICpzbG90bmFtZSwKLQkJCQkJCQkJCSAgYm9vbCB0d29fcGhhc2Us Ci0JCQkJCQkJCQkgIGJvb2wgZmFpbG92ZXIpOworCQkJCQkJCQkJICBjb25zdCBib29sICp0d29f cGhhc2UsCisJCQkJCQkJCQkgIGNvbnN0IGJvb2wgKmZhaWxvdmVyKTsKIAogLyoKICAqIHdhbHJj dl9nZXRfYmFja2VuZF9waWRfZm4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9t ZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCBjNTkx Y2Q3ZDYxLi5iNGJkNTIyYzNkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVz b24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC00MCw2 ICs0MCw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAzMV9jb2x1bW5fbGlzdC5wbCcsCiAgICAg ICAndC8wMzJfc3Vic2NyaWJlX3VzZV9pbmRleC5wbCcsCiAgICAgICAndC8wMzNfcnVuX2FzX3Rh YmxlX293bmVyLnBsJywKKyAgICAgICd0LzA5OV90d29waGFzZV9hZGRlZC5wbCcsCiAgICAgICAn dC8xMDBfYnVncy5wbCcsCiAgICAgXSwKICAgfSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzA5OV90d29waGFzZV9hZGRlZC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzA5OV90d29waGFzZV9hZGRlZC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi5jMTNhMzc2NzVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDk5X3R3b3BoYXNlX2FkZGVkLnBsCkBAIC0wLDAgKzEsNzIgQEAKKyMgQ29weXJpZ2h0IChj KSAyMDIxLTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgQWRk aXRpb25hbCB0ZXN0cyBmb3IgYWx0ZXJpbmcgdHdvX3BoYXNlIG9wdGlvbgordXNlIHN0cmljdDsK K3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMg SW5pdGlhbGl6ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxKG1heF9wcmVwYXJlZF90cmFuc2FjdGlvbnMg PSAxMCkpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2NyaWJlciBu b2RlCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3 KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJl ci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXEobWF4X3ByZXBhcmVkX3RyYW5z YWN0aW9ucyA9IDEwKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworIyBEZWZpbmUgcHJl LWV4aXN0aW5nIHRhYmxlcyBvbiBib3RoIG5vZGVzCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorICAgICJDUkVBVEUgVEFCTEUgdGFiX2Z1bGwgKGEgaW50IFBSSU1BUlkg S0VZKTsiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVB VEUgVEFCTEUgdGFiX2Z1bGwgKGEgaW50IFBSSU1BUlkgS0VZKSIpOworCisjIFNldHVwIGxvZ2lj YWwgcmVwbGljYXRpb24sIHdpdGggdHdvX3BoYXNlID0gb2ZmCitteSAkcHVibGlzaGVyX2Nvbm5z dHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04g cHViIEZPUiBBTEwgVEFCTEVTIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkn cG9zdGdyZXMnLCAiCisJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIKKwlDT05ORUNUSU9OICckcHVi bGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHB1YgorCVdJVEggKHR3b19waGFzZSA9IG9mZiwg Y29weV9kYXRhID0gb2ZmKSIpOworCisjIyMjIyMKKyMgQ2hlY2sgdGhlIGNhc2UgdGhhdCBwcmVw YXJlZCB0cmFuc2FjdGlvbnMgZXhpc3Qgb24gcHVibGlzaGVyIG5vZGUKKyMjIyMjIworCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCAiCisJQkVHSU47CisJSU5TRVJU IElOVE8gdGFiX2Z1bGwgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMSwgNSkpOworCVBSRVBBUkUg VFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiX2Z1bGwnOyIpOworCiskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YicpOworCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworaXMoJHJlc3VsdCwgcSgwKSwgInRyYW5zYWN0aW9uIGlzIG5v dCBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgKKyAgICAncG9zdGdyZXMnLCAiCisgICAgQUxURVIgU1VCU0NSSVBUSU9OIHN1YiBESVNBQkxF OworICAgIEFMVEVSIFNVQlNDUklQVElPTiBzdWIgU0VUICh0d29fcGhhc2UgPSBvbik7CisgICAg QUxURVIgU1VCU0NSSVBUSU9OIHN1YiBFTkFCTEU7Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCAncG9zdGdyZXMnLAorICAgICJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRf dGFiX2Z1bGwnOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWInKTsK KworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAg ICJTRUxFQ1QgY291bnQoKikgRlJPTSB0YWJfZnVsbDsiKTsKK2lzKCRyZXN1bHQsIHEoNSksCisg ICAicHJlcGFyZWQgdHJhbnNhY3Rpb25zIGRvbmUgYmVmb3JlIGFsdGVyaW5nIGNhbiBiZSByZXBs aWNhdGVkIik7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi40My4wCgo= --000000000000791d870616590d85 Content-Type: application/octet-stream; name="v4-0003-Abort-prepared-transactions-while-altering-two_ph.patch" Content-Disposition: attachment; filename="v4-0003-Abort-prepared-transactions-while-altering-two_ph.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lv4uwyen2 RnJvbSAzNWQ2YTJhNGYzZmZlNDJhZWViYjU2ZjIxOWNkNzAwNDc3N2JhZjEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBNb24sIDggQXByIDIwMjQgMTI6Mzk6MTIgKzAwMDAKU3ViamVjdDogW1BBVENI IHY0IDMvM10gQWJvcnQgcHJlcGFyZWQgdHJhbnNhY3Rpb25zIHdoaWxlIGFsdGVyaW5nIHR3b19w aGFzZQogdG8gZmFsc2UKCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24u c2dtbCAgICAgIHwgMTAgKysrKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFz ZS5jICAgICAgICAgfCAxOSArKysrKy0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmMgICAgICAgfCAyNyArKysrKysrKysrKy0tLQogc3JjL2luY2x1ZGUvYWNjZXNz L3R3b3BoYXNlLmggICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzA5OV90d29waGFzZV9hZGRlZC5wbCB8IDM1ICsrKysrKysrKysrKysrKysrKysKIDUgZmls ZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggMjBiNDVlMzZlMC4uY2ZkMmExOGUy YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yMzEsNyAr MjMxLDYgQEAgQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICAgIDxsaW5rIGxpbmtlbmQ9InNx bC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtZmFpbG92ZXIiPjxsaXRlcmFsPmZhaWxv dmVyPC9saXRlcmFsPjwvbGluaz4sIGFuZAogICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0 ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC10d28tcGhhc2UiPjxsaXRlcmFsPnR3b19waGFzZTwv bGl0ZXJhbD48L2xpbms+LgogICAgICAgT25seSBhIHN1cGVydXNlciBjYW4gc2V0IDxsaXRlcmFs PnBhc3N3b3JkX3JlcXVpcmVkID0gZmFsc2U8L2xpdGVyYWw+LgotICAgICAgPGxpdGVyYWw+dHdv X3BoYXNlPC9saXRlcmFsPiBjYW4gYmUgYWx0ZXJlZCBvbmx5IGZvciBkaXNhYmxlZCBzdWJzY3Jp cHRpb24uCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4KQEAgLTI1Myw2ICsyNTIsMTUgQEAg QUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9y ZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVz dWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtZmFpbG92ZXIiPjxsaXRlcmFsPmZhaWxvdmVyPC9saXRl cmFsPjwvbGluaz4KICAgICAgIG9wdGlvbiBpcyBlbmFibGVkLgogICAgICA8L3BhcmE+CisKKyAg ICAgPHBhcmE+CisgICAgICA8bGl0ZXJhbD50d29fcGhhc2U8L2xpdGVyYWw+IGNhbiBiZSBhbHRl cmVkIG9ubHkgZm9yIGRpc2FibGVkCisgICAgICBzdWJzY3JpcHRpb25zLiBXaGVuIGFsdGVyaW5n IHRoZSBwYXJhbWV0ZXIgZnJvbSA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPgorICAgICAgdG8gPGxp dGVyYWw+ZmFsc2U8L2xpdGVyYWw+LCAgdGhlIGJhY2tlbmQgcHJvY2VzcyBjaGVja3MgcHJlcGFy ZWQKKyAgICAgIHRyYW5zYWN0aW9ucyBkb25lIGJ5IHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdv cmtlciBhbmQgYWJvcnRzIHRoZW0uIElmCisgICAgICBwcmVwYXJlZCB0cmFuc2FjdGlvbnMgYXJl IGZvdW5kLCB0aGUgcGFyYW1ldGVyIGNhbm5vdCBiZSBhbHRlcmVkIHRvCisgICAgICA8bGl0ZXJh bD5mYWxzZTwvbGl0ZXJhbD4gaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2suCisgICAgIDwvcGFy YT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS90d29waGFzZS5jCmluZGV4IDQ5NWY5OWEzNTcuLjkxMjExOTU3MjUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYwpAQCAtMjcwMiwxMyArMjcwMiwxMyBAQCBjaGVj a0dpZChjaGFyICpnaWQsIE9pZCBzdWJpZCkKIH0KIAogLyoKLSAqIExvb2t1cEdYYWN0QnlTdWJp ZAotICoJCUNoZWNrIGlmIHRoZSBwcmVwYXJlZCB0cmFuc2FjdGlvbiBkb25lIGJ5IGFwcGx5IHdv cmtlciBleGlzdHMuCisgKiBHZXRHaWRMaXN0QnlTdWJpZAorICogICAgICBHZXQgYSBsaXN0IG9m IEdJRHMgd2hpY2ggaXMgUFJFUEFSRSdkIGJ5IHRoZSBnaXZlbiBzdWJzY3JpcHRpb24uCiAgKi8K LWJvb2wKLUxvb2t1cEdYYWN0QnlTdWJpZChPaWQgc3ViaWQpCitMaXN0ICoKK0dldEdpZExpc3RC eVN1YmlkKE9pZCBzdWJpZCkKIHsKLQlib29sCQlmb3VuZCA9IGZhbHNlOworCUxpc3QgKmxpc3Qg PSBOSUw7CiAKIAlMV0xvY2tBY3F1aXJlKFR3b1BoYXNlU3RhdGVMb2NrLCBMV19TSEFSRUQpOwog CWZvciAoaW50IGkgPSAwOyBpIDwgVHdvUGhhc2VTdGF0ZS0+bnVtUHJlcFhhY3RzOyBpKyspCkBA IC0yNzE3LDExICsyNzE3LDEwIEBAIExvb2t1cEdYYWN0QnlTdWJpZChPaWQgc3ViaWQpCiAKIAkJ LyogSWdub3JlIG5vdC15ZXQtdmFsaWQgR0lEcy4gKi8KIAkJaWYgKGd4YWN0LT52YWxpZCAmJiBj aGVja0dpZChneGFjdC0+Z2lkLCBzdWJpZCkpCi0JCXsKLQkJCWZvdW5kID0gdHJ1ZTsKLQkJCWJy ZWFrOwotCQl9CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBwc3RyZHVwKGd4YWN0LT5naWQpKTsK KwogCX0KIAlMV0xvY2tSZWxlYXNlKFR3b1BoYXNlU3RhdGVMb2NrKTsKLQlyZXR1cm4gZm91bmQ7 CisKKwlyZXR1cm4gbGlzdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMu YwppbmRleCAwZDgwZDZlMTEwLi5jZjNlNWM2NGIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jCkBAIC0xMTc4LDYgKzExNzgsOCBAQCBBbHRlclN1YnNjcmlwdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkvKiBY WFggKi8KIAkJCQlpZiAoSXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX1RXT1BIQVNF X0NPTU1JVCkpCiAJCQkJeworCQkJCQlMaXN0ICpwcmVwYXJlZF94YWN0cyA9IE5JTDsKKwogCQkJ CQkvKgogCQkJCQkgKiB0d29fcGhhc2UgY2FuIGJlIG9ubHkgY2hhbmdlZCBmb3IgZGlzYWJsZWQK IAkJCQkJICogc3Vic2NyaXB0aW9ucwpAQCAtMTE5NCwxMyArMTE5NiwyOCBAQCBBbHRlclN1YnNj cmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwK IAkJCQkJICovCiAJCQkJCWxvZ2ljYWxyZXBfd29ya2Vyc19zdG9wKHN1YmlkKTsKIAotCQkJCQkv KiBDaGVjayB3aGV0aGVyIHRoZSBudW1iZXIgb2YgcHJlcGFyZWQgdHJhbnNhY3Rpb25zICovCisJ CQkJCS8qCisJCQkJCSAqIElmIHR3byBwaGFzZSB3YXMgZW5hYmxlZCwgdGhlcmUgaXMgYSBwb3Nz aWJpbGl0eSB0aGUKKwkJCQkJICogdHJhbnNhY3Rpb25zIGhhcyBhbHJlYWR5IGJlZW4gUFJFUEFS RSdkLgorCQkJCQkgKi8KIAkJCQkJaWYgKCFvcHRzLnR3b3BoYXNlICYmCiAJCQkJCQlmb3JtLT5z dWJ0d29waGFzZXN0YXRlID09IExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfRU5BQkxFRCAmJgot CQkJCQkJTG9va3VwR1hhY3RCeVN1YmlkKHN1YmlkKSkKLQkJCQkJCWVyZXBvcnQoRVJST1IsCi0J CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAotCQkJCQkJCQkgZXJybXNnKCJjYW5ub3QgZGlzYWJsZSB0d29fcGhhc2Ugd2hlbiB1bmNvbW1p dHRlZCBwcmVwYXJlZCB0cmFuc2FjdGlvbnMgcHJlc2VudCIpKSk7CisJCQkJCQkocHJlcGFyZWRf eGFjdHMgPSBHZXRHaWRMaXN0QnlTdWJpZChzdWJpZCkpICE9IE5JTCkKKwkJCQkJeworCQkJCQkJ TGlzdENlbGwJKmNlbGw7CisKKwkJCQkJCS8qIE11c3Qgbm90IGJlIGluIHRoZSB0cmFuc2FjdGlv biAqLworCQkJCQkJUHJldmVudEluVHJhbnNhY3Rpb25CbG9jayhpc1RvcExldmVsLAorCQkJCQkJ CQkJCQkJICAiQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBTRVQgKHR3b19waGFzZSA9IC4uLikiKTsK KworCQkJCQkJLyogQWJvcnQgYWxsIGxpc3RlZCB0cmFuc2FjdGlvbnMgKi8KKwkJCQkJCWZvcmVh Y2goY2VsbCwgcHJlcGFyZWRfeGFjdHMpCisJCQkJCQl7CisJCQkJCQkJRmluaXNoUHJlcGFyZWRU cmFuc2FjdGlvbigoY2hhciAqKSBsZmlyc3QoY2VsbCksCisJCQkJCQkJCQkJCQkJICBmYWxzZSk7 CisJCQkJCQkJcHJlcGFyZWRfeGFjdHMgPSBsaXN0X2RlbGV0ZV9jZWxsKHByZXBhcmVkX3hhY3Rz LCBjZWxsKTsKKwkJCQkJCX0KKwkJCQkJfQogCiAJCQkJCS8qIENoYW5nZSBzeXN0ZW0gY2F0YWxv ZyBhY29vcmRpbmdseSAqLwogCQkJCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VidHdv cGhhc2VzdGF0ZSAtIDFdID0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90d29waGFz ZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3R3b3BoYXNlLmgKaW5kZXggZDQ5M2VkMjRjNS4uOTU3 NzBiYmQ2OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3R3b3BoYXNlLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3R3b3BoYXNlLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRl ICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKICNp bmNsdWRlICJzdG9yYWdlL2xvY2suaCIKKyNpbmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCiAKIC8q CiAgKiBHbG9iYWxUcmFuc2FjdGlvbkRhdGEgaXMgZGVmaW5lZCBpbiB0d29waGFzZS5jOyBvdGhl ciBwbGFjZXMgaGF2ZSBubwpAQCAtNjMsNiArNjQsNiBAQCBleHRlcm4gdm9pZCByZXN0b3JlVHdv UGhhc2VEYXRhKHZvaWQpOwogZXh0ZXJuIGJvb2wgTG9va3VwR1hhY3QoY29uc3QgY2hhciAqZ2lk LCBYTG9nUmVjUHRyIHByZXBhcmVfZW5kX2xzbiwKIAkJCQkJCVRpbWVzdGFtcFR6IG9yaWdpbl9w cmVwYXJlX3RpbWVzdGFtcCk7CiAKLWV4dGVybiBib29sIExvb2t1cEdYYWN0QnlTdWJpZChPaWQg c3ViaWQpOworZXh0ZXJuIExpc3QgKkdldEdpZExpc3RCeVN1YmlkKE9pZCBzdWJpZCk7CiAKICNl bmRpZgkJCQkJCQkvKiBUV09QSEFTRV9IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wOTlfdHdvcGhhc2VfYWRkZWQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w OTlfdHdvcGhhc2VfYWRkZWQucGwKaW5kZXggYzEzYTM3Njc1YS4uYTgxMzViNjcxYyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDk5X3R3b3BoYXNlX2FkZGVkLnBsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA5OV90d29waGFzZV9hZGRlZC5wbApAQCAtNjksNCAr NjksMzkgQEAgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogaXMoJHJlc3VsdCwgcSg1KSwKICAgICJwcmVwYXJlZCB0cmFuc2FjdGlvbnMgZG9uZSBiZWZv cmUgYWx0ZXJpbmcgY2FuIGJlIHJlcGxpY2F0ZWQiKTsKIAorIyMjIyMjCisjIENoZWNrIHRoZSBj YXNlIHRoYXQgcHJlcGFyZWQgdHJhbnNhY3Rpb25zIGV4aXN0IG9uIHN1YnNjcmliZXIgbm9kZQor IyMjIyMjCisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsICIKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0YWJfZnVsbCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcyg2LCAx MCkpOworCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiX2Z1bGwnOyIpOwor Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YicpOworCiskcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworaXMoJHJlc3VsdCwgcSgxKSwgInRyYW5z YWN0aW9uIGhhcyBiZWVuIHByZXBhcmVkIG9uIHN1YnNjcmliZXIiKTsKKworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKAorICAgICdwb3N0Z3JlcycsICIKKyAgICBBTFRFUiBTVUJTQ1JJUFRJ T04gc3ViIERJU0FCTEU7CisgICAgQUxURVIgU1VCU0NSSVBUSU9OIHN1YiBTRVQgKHR3b19waGFz ZSA9IG9mZik7CisgICAgQUxURVIgU1VCU0NSSVBUSU9OIHN1YiBFTkFCTEU7Iik7CisKKyRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAiU0VMRUNU IGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CitpcygkcmVzdWx0LCBxKDApLCAi cHJlcGFyZWQgdHJhbnNhY3Rpb24gZG9uZSBieSB3b3JrZXIgaXMgYWJvcnRlZCIpOworCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCggJ3Bvc3RncmVzJywKKyAgICAiQ09NTUlUIFBSRVBBUkVE ICd0ZXN0X3ByZXBhcmVkX3RhYl9mdWxsJzsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgnc3ViJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKyAgICAiU0VMRUNUIGNvdW50KDEwKSBGUk9NIHRhYl9mdWxsOyIpOworaXMo JHJlc3VsdCwgcSgxMCksCisgICAicHJlcGFyZWQgdHJhbnNhY3Rpb25zIG9uIHB1Ymxpc2hlciBj YW4gYmUgcmVwbGljYXRlZCIpOworCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDMuMAoK --000000000000791d870616590d85 Content-Type: application/octet-stream; name="v4-0001-Allow-altering-of-two_phase-option-of-a-SUBSCRIPT.patch" Content-Disposition: attachment; filename="v4-0001-Allow-altering-of-two_phase-option-of-a-SUBSCRIPT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lv4uwydb0 RnJvbSA4Mjk1NTQwNjk2ZTk2OTlhYzgxOTFmMWMyYjBlMDliNmI2ODRjYjUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGFqaW5jQGZhc3QuYXUuZnVqaXRzdS5j b20+CkRhdGU6IEZyaSwgNSBBcHIgMjAyNCAwNjo0NzoxOCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg djQgMS8zXSBBbGxvdyBhbHRlcmluZyBvZiB0d29fcGhhc2Ugb3B0aW9uIG9mIGEgU1VCU0NSSVBU SU9OCgpUaGlzIHBhdGNoIGFsbG93cyB1c2VyIHRvIGFsdGVyIHR3b19waGFzZSBvcHRpb24gb2Yg YSBzdWJzY3JpYmVyIHByb3ZpZGVkIG5vIHVuY29tbWl0dGVkCnByZXBhcmVkIHRyYW5zYWN0aW9u cyBhcmUgcGVuZGluZyBvbiB0aGF0IHN1YnNjcmlwdGlvbi4KCkF1dGhvcjogQ2hlcmlhbiBBamlu LCBIYXlhdG8gS3Vyb2RhCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24u c2dtbCAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMg ICAgICAgICB8IDQzICsrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5jICAgICAgIHwgNTggKysrKysrKysrKystLS0tLQogLi4uL2xpYnBxd2FscmVjZWl2 ZXIvbGlicHF3YWxyZWNlaXZlci5jICAgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8IDIxICsrKysrKwogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYyAgICAgICAgICAgICAgICB8IDE5ICsrKysrLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMgICAgICAgICAgIHwgMjAgKysrKy0tCiBzcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNz L3R3b3BoYXNlLmggICAgICAgICAgICAgICAgIHwgIDMgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vc2xvdC5oICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dhbHJlY2VpdmVyLmggICAgICAgICB8ICA1ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1 YnNjcmlwdGlvbi5vdXQgICAgfCAgNSArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0 aW9uLnNxbCAgICAgICAgIHwgIDUgKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMV90d29w aGFzZS5wbCAgICAgICB8IDY3ICsrKysrKysrKysrKysrKysrKy0KIDE2IGZpbGVzIGNoYW5nZWQs IDIyNyBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl9zdWJzY3JpcHRpb24uc2dtbAppbmRleCA0MTNjZTY4Y2UyLi4yMGI0NWUzNmUwIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIyNyw5ICsyMjcsMTEgQEAg QUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9y ZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVz dWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtZGlzYWJsZS1vbi1lcnJvciI+PGxpdGVyYWw+ZGlzYWJs ZV9vbl9lcnJvcjwvbGl0ZXJhbD48L2xpbms+LAogICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNy ZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1wYXNzd29yZC1yZXF1aXJlZCI+PGxpdGVyYWw+ cGFzc3dvcmRfcmVxdWlyZWQ8L2xpdGVyYWw+PC9saW5rPiwKICAgICAgIDxsaW5rIGxpbmtlbmQ9 InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtcnVuLWFzLW93bmVyIj48bGl0ZXJh bD5ydW5fYXNfb3duZXI8L2xpdGVyYWw+PC9saW5rPiwKLSAgICAgIDxsaW5rIGxpbmtlbmQ9InNx bC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtb3JpZ2luIj48bGl0ZXJhbD5vcmlnaW48 L2xpdGVyYWw+PC9saW5rPiwgYW5kCi0gICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vi c2NyaXB0aW9uLXBhcmFtcy13aXRoLWZhaWxvdmVyIj48bGl0ZXJhbD5mYWlsb3ZlcjwvbGl0ZXJh bD48L2xpbms+LgorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1w YXJhbXMtd2l0aC1vcmlnaW4iPjxsaXRlcmFsPm9yaWdpbjwvbGl0ZXJhbD48L2xpbms+LAorICAg ICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1mYWls b3ZlciI+PGxpdGVyYWw+ZmFpbG92ZXI8L2xpdGVyYWw+PC9saW5rPiwgYW5kCisgICAgICA8bGlu ayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLXR3by1waGFzZSI+ PGxpdGVyYWw+dHdvX3BoYXNlPC9saXRlcmFsPjwvbGluaz4uCiAgICAgICBPbmx5IGEgc3VwZXJ1 c2VyIGNhbiBzZXQgPGxpdGVyYWw+cGFzc3dvcmRfcmVxdWlyZWQgPSBmYWxzZTwvbGl0ZXJhbD4u CisgICAgICA8bGl0ZXJhbD50d29fcGhhc2U8L2xpdGVyYWw+IGNhbiBiZSBhbHRlcmVkIG9ubHkg Zm9yIGRpc2FibGVkIHN1YnNjcmlwdGlvbi4KICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKaW5kZXggODA5MGFjOWZjMS4uNDk1Zjk5 YTM1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCkBAIC0yNjgyLDMgKzI2 ODIsNDYgQEAgTG9va3VwR1hhY3QoY29uc3QgY2hhciAqZ2lkLCBYTG9nUmVjUHRyIHByZXBhcmVf ZW5kX2xzbiwKIAlMV0xvY2tSZWxlYXNlKFR3b1BoYXNlU3RhdGVMb2NrKTsKIAlyZXR1cm4gZm91 bmQ7CiB9CisKKy8qCisgKiBjaGVja0dpZAorICovCitzdGF0aWMgYm9vbAorY2hlY2tHaWQoY2hh ciAqZ2lkLCBPaWQgc3ViaWQpCit7CisJaW50CQkJcmV0OworCU9pZAkJCXN1YmlkX3dyaXR0ZW4s CisJCQkJeGlkOworCisJcmV0ID0gc3NjYW5mKGdpZCwgInBnX2dpZF8ldV8ldSIsICZzdWJpZF93 cml0dGVuLCAmeGlkKTsKKworCWlmIChyZXQgIT0gMiB8fCBzdWJpZCAhPSBzdWJpZF93cml0dGVu KQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIExvb2t1cEdY YWN0QnlTdWJpZAorICoJCUNoZWNrIGlmIHRoZSBwcmVwYXJlZCB0cmFuc2FjdGlvbiBkb25lIGJ5 IGFwcGx5IHdvcmtlciBleGlzdHMuCisgKi8KK2Jvb2wKK0xvb2t1cEdYYWN0QnlTdWJpZChPaWQg c3ViaWQpCit7CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKKworCUxXTG9ja0FjcXVpcmUoVHdvUGhh c2VTdGF0ZUxvY2ssIExXX1NIQVJFRCk7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBUd29QaGFzZVN0 YXRlLT5udW1QcmVwWGFjdHM7IGkrKykKKwl7CisJCUdsb2JhbFRyYW5zYWN0aW9uIGd4YWN0ID0g VHdvUGhhc2VTdGF0ZS0+cHJlcFhhY3RzW2ldOworCisJCS8qIElnbm9yZSBub3QteWV0LXZhbGlk IEdJRHMuICovCisJCWlmIChneGFjdC0+dmFsaWQgJiYgY2hlY2tHaWQoZ3hhY3QtPmdpZCwgc3Vi aWQpKQorCQl7CisJCQlmb3VuZCA9IHRydWU7CisJCQlicmVhazsKKwkJfQorCX0KKwlMV0xvY2tS ZWxlYXNlKFR3b1BoYXNlU3RhdGVMb2NrKTsKKwlyZXR1cm4gZm91bmQ7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggNWE0N2ZhOTg0ZC4uMzI5OWE2MGZmZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtMTYsNiArMTYsNyBA QAogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy90 YWJsZS5oIgorI2luY2x1ZGUgImFjY2Vzcy90d29waGFzZS5oIgogI2luY2x1ZGUgImFjY2Vzcy94 YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9k ZXBlbmRlbmN5LmgiCkBAIC04NDksNyArODUwLDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCWVsc2UgaWYg KG9wdHMuc2xvdF9uYW1lICYmCiAJCQkJCSAob3B0cy5mYWlsb3ZlciB8fCB3YWxyY3Zfc2VydmVy X3ZlcnNpb24od3Jjb25uKSA+PSAxNzAwMDApKQogCQkJewotCQkJCXdhbHJjdl9hbHRlcl9zbG90 KHdyY29ubiwgb3B0cy5zbG90X25hbWUsIG9wdHMuZmFpbG92ZXIpOworCQkJCXdhbHJjdl9hbHRl cl9zbG90KHdyY29ubiwgb3B0cy5zbG90X25hbWUsIG9wdHMudHdvcGhhc2UsIG9wdHMuZmFpbG92 ZXIpOwogCQkJfQogCQl9CiAJCVBHX0ZJTkFMTFkoKTsKQEAgLTExNjUsNyArMTE2Niw4IEBAIEFs dGVyU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10 ICpzdG10LAogCQkJewogCQkJCXN1cHBvcnRlZF9vcHRzID0gKFNVQk9QVF9TTE9UX05BTUUgfAog CQkJCQkJCQkgIFNVQk9QVF9TWU5DSFJPTk9VU19DT01NSVQgfCBTVUJPUFRfQklOQVJZIHwKLQkJ CQkJCQkJICBTVUJPUFRfU1RSRUFNSU5HIHwgU1VCT1BUX0RJU0FCTEVfT05fRVJSIHwKKwkJCQkJ CQkJICBTVUJPUFRfU1RSRUFNSU5HIHwgU1VCT1BUX1RXT1BIQVNFX0NPTU1JVCB8CisJCQkJCQkJ CSAgU1VCT1BUX0RJU0FCTEVfT05fRVJSIHwKIAkJCQkJCQkJICBTVUJPUFRfUEFTU1dPUkRfUkVR VUlSRUQgfAogCQkJCQkJCQkgIFNVQk9QVF9SVU5fQVNfT1dORVIgfCBTVUJPUFRfRkFJTE9WRVIg fAogCQkJCQkJCQkgIFNVQk9QVF9PUklHSU4pOwpAQCAtMTE3Myw2ICsxMTc1LDQxIEBAIEFsdGVy U3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpz dG10LAogCQkJCXBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKHBzdGF0ZSwgc3RtdC0+b3B0aW9u cywKIAkJCQkJCQkJCQkgICBzdXBwb3J0ZWRfb3B0cywgJm9wdHMpOwogCisJCQkJLyogWFhYICov CisJCQkJaWYgKElzU2V0KG9wdHMuc3BlY2lmaWVkX29wdHMsIFNVQk9QVF9UV09QSEFTRV9DT01N SVQpKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogdHdvX3BoYXNlIGNhbiBiZSBvbmx5IGNoYW5n ZWQgZm9yIGRpc2FibGVkCisJCQkJCSAqIHN1YnNjcmlwdGlvbnMKKwkJCQkJICovCisJCQkJCWlm IChmb3JtLT5zdWJlbmFibGVkKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkJCSBl cnJtc2coImNhbm5vdCBzZXQgJXMgZm9yIGVuYWJsZWQgc3Vic2NyaXB0aW9uIiwKKwkJCQkJCQkJ CQkidHdvX3BoYXNlIikpKTsKKworCQkJCQkvKgorCQkJCQkgKiBTdG9wIGFsbCB0aGUgc3Vic2Ny aXB0aW9uIHdvcmtlcnMsIGp1c3QgaW4gY2FzZS4gV29ya2VycworCQkJCQkgKiBtYXkgc3RpbGwg c3Vydml2ZSBldmVuIGlmIHRoZSBzdWJzY3JpcHRpb24gaXMgZGlzYWJsZWQuCisJCQkJCSAqLwor CQkJCQlsb2dpY2FscmVwX3dvcmtlcnNfc3RvcChzdWJpZCk7CisKKwkJCQkJLyogQ2hlY2sgd2hl dGhlciB0aGUgbnVtYmVyIG9mIHByZXBhcmVkIHRyYW5zYWN0aW9ucyAqLworCQkJCQlpZiAoIW9w dHMudHdvcGhhc2UgJiYKKwkJCQkJCWZvcm0tPnN1YnR3b3BoYXNlc3RhdGUgPT0gTE9HSUNBTFJF UF9UV09QSEFTRV9TVEFURV9FTkFCTEVEICYmCisJCQkJCQlMb29rdXBHWGFjdEJ5U3ViaWQoc3Vi aWQpKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkJCSBlcnJtc2coImNhbm5vdCBk aXNhYmxlIHR3b19waGFzZSB3aGVuIHVuY29tbWl0dGVkIHByZXBhcmVkIHRyYW5zYWN0aW9ucyBw cmVzZW50IikpKTsKKworCQkJCQkvKiBDaGFuZ2Ugc3lzdGVtIGNhdGFsb2cgYWNvb3JkaW5nbHkg Ki8KKwkJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3RhdGUgLSAx XSA9CisJCQkJCQlDaGFyR2V0RGF0dW0ob3B0cy50d29waGFzZSA/CisJCQkJCQkJCQkgTE9HSUNB TFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKKwkJCQkJCQkJCSBMT0dJQ0FMUkVQX1RXT1BI QVNFX1NUQVRFX0RJU0FCTEVEKTsKKwkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3VidHdvcGhhc2VzdGF0ZSAtIDFdID0gdHJ1ZTsKKwkJCQl9CisKIAkJCQlpZiAoSXNTZXQob3B0 cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX1NMT1RfTkFNRSkpCiAJCQkJewogCQkJCQkvKgpAQCAt MTUyMSw3ICsxNTU4LDggQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBB bHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJICogZG9pbmcgdGhlIGRhdGFiYXNlIG9wZXJh dGlvbnMgd2Ugd29uJ3QgYmUgYWJsZSB0byByb2xsYmFjayBhbHRlcmVkCiAJICogc2xvdC4KIAkg Ki8KLQlpZiAocmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZmFpbG92ZXIgLSAxXSkK KwlpZiAocmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VidHdvcGhhc2VzdGF0ZSAtIDFd IHx8CisJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmZhaWxvdmVyIC0gMV0pCiAJ ewogCQlib29sCQltdXN0X3VzZV9wYXNzd29yZDsKIAkJY2hhcgkgICAqZXJyOwpAQCAtMTU0MSw3 ICsxNTc5LDcgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1 YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAKIAkJUEdfVFJZKCk7CiAJCXsKLQkJCXdhbHJjdl9hbHRl cl9zbG90KHdyY29ubiwgc3ViLT5zbG90bmFtZSwgb3B0cy5mYWlsb3Zlcik7CisJCQl3YWxyY3Zf YWx0ZXJfc2xvdCh3cmNvbm4sIHN1Yi0+c2xvdG5hbWUsIG9wdHMudHdvcGhhc2UsIG9wdHMuZmFp bG92ZXIpOwogCQl9CiAJCVBHX0ZJTkFMTFkoKTsKIAkJewpAQCAtMTU3OCw3ICsxNjE2LDYgQEAg RHJvcFN1YnNjcmlwdGlvbihEcm9wU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExl dmVsKQogCWNoYXIJICAgKnN1Ym5hbWU7CiAJY2hhcgkgICAqY29ubmluZm87CiAJY2hhcgkgICAq c2xvdG5hbWU7Ci0JTGlzdAkgICAqc3Vid29ya2VyczsKIAlMaXN0Q2VsbCAgICpsYzsKIAljaGFy CQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKIAljaGFyCSAgICplcnIgPSBOVUxMOwpAQCAtMTY4 OCwxNiArMTcyNSw3IEBAIERyb3BTdWJzY3JpcHRpb24oRHJvcFN1YnNjcmlwdGlvblN0bXQgKnN0 bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAkgKiBOZXcgd29ya2VycyB3b24ndCBiZSBzdGFydGVkIGJl Y2F1c2Ugd2UgaG9sZCBhbiBleGNsdXNpdmUgbG9jayBvbiB0aGUKIAkgKiBzdWJzY3JpcHRpb24g dGlsbCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbi4KIAkgKi8KLQlMV0xvY2tBY3F1aXJlKExv Z2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwotCXN1YndvcmtlcnMgPSBsb2dpY2FscmVw X3dvcmtlcnNfZmluZChzdWJpZCwgZmFsc2UpOwotCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdv cmtlckxvY2spOwotCWZvcmVhY2gobGMsIHN1YndvcmtlcnMpCi0JewotCQlMb2dpY2FsUmVwV29y a2VyICp3ID0gKExvZ2ljYWxSZXBXb3JrZXIgKikgbGZpcnN0KGxjKTsKLQotCQlsb2dpY2FscmVw X3dvcmtlcl9zdG9wKHctPnN1YmlkLCB3LT5yZWxpZCk7Ci0JfQotCWxpc3RfZnJlZShzdWJ3b3Jr ZXJzKTsKKwlsb2dpY2FscmVwX3dvcmtlcnNfc3RvcChzdWJpZCk7CiAKIAkvKgogCSAqIFJlbW92 ZSB0aGUgbm8tbG9uZ2VyLXVzZWZ1bCBlbnRyeSBpbiB0aGUgbGF1bmNoZXIncyB0YWJsZSBvZiBh cHBseQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZl ci9saWJwcXdhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJl Y2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwppbmRleCAzYzJiMWJiNDk2Li5iYWVmM2JkZWMwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBx d2FscmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2Vp dmVyL2xpYnBxd2FscmVjZWl2ZXIuYwpAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgY2hhciAqbGli cHFyY3ZfY3JlYXRlX3Nsb3QoV2FsUmVjZWl2ZXJDb25uICpjb25uLAogCQkJCQkJCQkgIENSU1Nu YXBzaG90QWN0aW9uIHNuYXBzaG90X2FjdGlvbiwKIAkJCQkJCQkJICBYTG9nUmVjUHRyICpsc24p Owogc3RhdGljIHZvaWQgbGlicHFyY3ZfYWx0ZXJfc2xvdChXYWxSZWNlaXZlckNvbm4gKmNvbm4s IGNvbnN0IGNoYXIgKnNsb3RuYW1lLAotCQkJCQkJCQlib29sIGZhaWxvdmVyKTsKKwkJCQkJCQkJ Ym9vbCB0d29fcGhhc2UsIGJvb2wgZmFpbG92ZXIpOwogc3RhdGljIHBpZF90IGxpYnBxcmN2X2dl dF9iYWNrZW5kX3BpZChXYWxSZWNlaXZlckNvbm4gKmNvbm4pOwogc3RhdGljIFdhbFJjdkV4ZWNS ZXN1bHQgKmxpYnBxcmN2X2V4ZWMoV2FsUmVjZWl2ZXJDb25uICpjb25uLAogCQkJCQkJCQkJICAg Y29uc3QgY2hhciAqcXVlcnksCkBAIC0xMTIxLDE0ICsxMTIxLDE1IEBAIGxpYnBxcmN2X2NyZWF0 ZV9zbG90KFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgY29uc3QgY2hhciAqc2xvdG5hbWUsCiAgKi8K IHN0YXRpYyB2b2lkCiBsaWJwcXJjdl9hbHRlcl9zbG90KFdhbFJlY2VpdmVyQ29ubiAqY29ubiwg Y29uc3QgY2hhciAqc2xvdG5hbWUsCi0JCQkJCWJvb2wgZmFpbG92ZXIpCisJCQkJCWJvb2wgdHdv X3BoYXNlLCBib29sIGZhaWxvdmVyKQogewogCVN0cmluZ0luZm9EYXRhIGNtZDsKIAlQR3Jlc3Vs dCAgICpyZXM7CiAKIAlpbml0U3RyaW5nSW5mbygmY21kKTsKLQlhcHBlbmRTdHJpbmdJbmZvKCZj bWQsICJBTFRFUl9SRVBMSUNBVElPTl9TTE9UICVzICggRkFJTE9WRVIgJXMgKSIsCisJYXBwZW5k U3RyaW5nSW5mbygmY21kLCAiQUxURVJfUkVQTElDQVRJT05fU0xPVCAlcyAoIFRXT19QSEFTRSAl cywgRkFJTE9WRVIgJXMgKSIsCiAJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHNsb3RuYW1lKSwKKwkJ CQkJIHR3b19waGFzZSA/ICJ0cnVlIiA6ICJmYWxzZSIsCiAJCQkJCSBmYWlsb3ZlciA/ICJ0cnVl IiA6ICJmYWxzZSIpOwogCiAJcmVzID0gbGlicHFyY3ZfUFFleGVjKGNvbm4tPnN0cmVhbUNvbm4s IGNtZC5kYXRhKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv bGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpp bmRleCA2NjA3MGU5MTMxLi45NGI3M2YzMDg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sYXVuY2hlci5jCkBAIC02MjMsNiArNjIzLDI3IEBAIGxvZ2ljYWxyZXBfd29ya2Vy X3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29y a2VyTG9jayk7CiB9CiAKKy8qCisgKiBTdG9wIGFsbCB0aGUgc3Vic2NyaXB0aW9uIHdvcmtlcnMu CisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfd29ya2Vyc19zdG9wKE9pZCBzdWJpZCkKK3sKKwlMaXN0 CSAgICpzdWJ3b3JrZXJzOworCUxpc3RDZWxsICAgKmxjOworCisJTFdMb2NrQWNxdWlyZShMb2dp Y2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKwlzdWJ3b3JrZXJzID0gbG9naWNhbHJlcF93 b3JrZXJzX2ZpbmQoc3ViaWQsIGZhbHNlKTsKKwlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrKTsKKwlmb3JlYWNoKGxjLCBzdWJ3b3JrZXJzKQorCXsKKwkJTG9naWNhbFJlcFdvcmtl ciAqdyA9IChMb2dpY2FsUmVwV29ya2VyICopIGxmaXJzdChsYyk7CisKKwkJbG9naWNhbHJlcF93 b3JrZXJfc3RvcCh3LT5zdWJpZCwgdy0+cmVsaWQpOworCX0KKwlsaXN0X2ZyZWUoc3Vid29ya2Vy cyk7Cit9CisKIC8qCiAgKiBTdG9wIHRoZSBnaXZlbiBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFs bGVsIGFwcGx5IHdvcmtlci4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYwppbmRleCBiNWE4MGZlM2U4Li4zNzRhYTIyMDkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM5MTEsNyArMzkxMSw3IEBAIG1heWJlX3JlcmVhZF9z dWJzY3JpcHRpb24odm9pZCkKIAkvKiAhc2xvdG5hbWUgc2hvdWxkIG5ldmVyIGhhcHBlbiB3aGVu IGVuYWJsZWQgaXMgdHJ1ZS4gKi8KIAlBc3NlcnQobmV3c3ViLT5zbG90bmFtZSk7CiAKLQkvKiB0 d28tcGhhc2Ugc2hvdWxkIG5vdCBiZSBhbHRlcmVkICovCisJLyogdHdvLXBoYXNlIHNob3VsZCBu b3QgYmUgYWx0ZXJlZCB3aGlsZSB0aGUgd29ya2VyIGV4aXN0cyAqLwogCUFzc2VydChuZXdzdWIt PnR3b3BoYXNlc3RhdGUgPT0gTXlTdWJzY3JpcHRpb24tPnR3b3BoYXNlc3RhdGUpOwogCiAJLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCBjZWJmNDRiYjBmLi42MjFmMzVhYjFlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc2xvdC5jCkBAIC04MDAsOCArODAwLDEwIEBAIFJlcGxpY2F0aW9uU2xvdERyb3Ao Y29uc3QgY2hhciAqbmFtZSwgYm9vbCBub3dhaXQpCiAgKiBDaGFuZ2UgdGhlIGRlZmluaXRpb24g b2YgdGhlIHNsb3QgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVkIG5hbWUuCiAgKi8KIHZvaWQK LVJlcGxpY2F0aW9uU2xvdEFsdGVyKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgZmFpbG92ZXIpCitS ZXBsaWNhdGlvblNsb3RBbHRlcihjb25zdCBjaGFyICpuYW1lLCBib29sIHR3b19waGFzZSwgYm9v bCBmYWlsb3ZlcikKIHsKKwlib29sCQl1cGRhdGVfc2xvdCA9IGZhbHNlOworCiAJQXNzZXJ0KE15 UmVwbGljYXRpb25TbG90ID09IE5VTEwpOwogCiAJUmVwbGljYXRpb25TbG90QWNxdWlyZShuYW1l LCBmYWxzZSk7CkBAIC04NDQsMTIgKzg0NiwyNyBAQCBSZXBsaWNhdGlvblNsb3RBbHRlcihjb25z dCBjaGFyICpuYW1lLCBib29sIGZhaWxvdmVyKQogCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAogCQkJCWVycm1zZygiY2Fubm90IGVuYWJsZSBmYWlsb3ZlciBmb3Ig YSB0ZW1wb3JhcnkgcmVwbGljYXRpb24gc2xvdCIpKTsKIAorCWlmIChNeVJlcGxpY2F0aW9uU2xv dC0+ZGF0YS50d29fcGhhc2UgIT0gdHdvX3BoYXNlKQorCXsKKwkJU3BpbkxvY2tBY3F1aXJlKCZN eVJlcGxpY2F0aW9uU2xvdC0+bXV0ZXgpOworCQlNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS50d29f cGhhc2UgPSB0d29fcGhhc2U7CisJCVNwaW5Mb2NrUmVsZWFzZSgmTXlSZXBsaWNhdGlvblNsb3Qt Pm11dGV4KTsKKworCQl1cGRhdGVfc2xvdCA9IHRydWU7CisJfQorCisKIAlpZiAoTXlSZXBsaWNh dGlvblNsb3QtPmRhdGEuZmFpbG92ZXIgIT0gZmFpbG92ZXIpCiAJewogCQlTcGluTG9ja0FjcXVp cmUoJk15UmVwbGljYXRpb25TbG90LT5tdXRleCk7CiAJCU15UmVwbGljYXRpb25TbG90LT5kYXRh LmZhaWxvdmVyID0gZmFpbG92ZXI7CiAJCVNwaW5Mb2NrUmVsZWFzZSgmTXlSZXBsaWNhdGlvblNs b3QtPm11dGV4KTsKIAorCQl1cGRhdGVfc2xvdCA9IHRydWU7CisJfQorCisJaWYgKHVwZGF0ZV9z bG90KQorCXsKIAkJUmVwbGljYXRpb25TbG90TWFya0RpcnR5KCk7CiAJCVJlcGxpY2F0aW9uU2xv dFNhdmUoKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5k ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IGJjNDBjNDU0 ZGUuLmJlMTU1MDY3Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNl bmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC0xNDEx LDE0ICsxNDExLDI1IEBAIERyb3BSZXBsaWNhdGlvblNsb3QoRHJvcFJlcGxpY2F0aW9uU2xvdENt ZCAqY21kKQogICogUHJvY2VzcyBleHRyYSBvcHRpb25zIGdpdmVuIHRvIEFMVEVSX1JFUExJQ0FU SU9OX1NMT1QuCiAgKi8KIHN0YXRpYyB2b2lkCi1QYXJzZUFsdGVyUmVwbFNsb3RPcHRpb25zKEFs dGVyUmVwbGljYXRpb25TbG90Q21kICpjbWQsIGJvb2wgKmZhaWxvdmVyKQorUGFyc2VBbHRlclJl cGxTbG90T3B0aW9ucyhBbHRlclJlcGxpY2F0aW9uU2xvdENtZCAqY21kLAorCQkJCQkJICBib29s ICp0d29fcGhhc2UsIGJvb2wgKmZhaWxvdmVyKQogeworCWJvb2wJCXR3b19waGFzZV9naXZlbiA9 IGZhbHNlOwogCWJvb2wJCWZhaWxvdmVyX2dpdmVuID0gZmFsc2U7CiAKIAkvKiBQYXJzZSBvcHRp b25zICovCiAJZm9yZWFjaF9wdHIoRGVmRWxlbSwgZGVmZWwsIGNtZC0+b3B0aW9ucykKIAl7Ci0J CWlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJmYWlsb3ZlciIpID09IDApCisJCWlmIChzdHJj bXAoZGVmZWwtPmRlZm5hbWUsICJ0d29fcGhhc2UiKSA9PSAwKQorCQl7CisJCQlpZiAodHdvX3Bo YXNlX2dpdmVuKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0 aW9ucyIpKSk7CisJCQl0d29fcGhhc2VfZ2l2ZW4gPSB0cnVlOworCQkJKnR3b19waGFzZSA9IGRl ZkdldEJvb2xlYW4oZGVmZWwpOworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFt ZSwgImZhaWxvdmVyIikgPT0gMCkKIAkJewogCQkJaWYgKGZhaWxvdmVyX2dpdmVuKQogCQkJCWVy ZXBvcnQoRVJST1IsCkBAIC0xNDM4LDEwICsxNDQ5LDExIEBAIFBhcnNlQWx0ZXJSZXBsU2xvdE9w dGlvbnMoQWx0ZXJSZXBsaWNhdGlvblNsb3RDbWQgKmNtZCwgYm9vbCAqZmFpbG92ZXIpCiBzdGF0 aWMgdm9pZAogQWx0ZXJSZXBsaWNhdGlvblNsb3QoQWx0ZXJSZXBsaWNhdGlvblNsb3RDbWQgKmNt ZCkKIHsKKwlib29sCQl0d29fcGhhc2UgPSBmYWxzZTsKIAlib29sCQlmYWlsb3ZlciA9IGZhbHNl OwogCi0JUGFyc2VBbHRlclJlcGxTbG90T3B0aW9ucyhjbWQsICZmYWlsb3Zlcik7Ci0JUmVwbGlj YXRpb25TbG90QWx0ZXIoY21kLT5zbG90bmFtZSwgZmFpbG92ZXIpOworCVBhcnNlQWx0ZXJSZXBs U2xvdE9wdGlvbnMoY21kLCAmdHdvX3BoYXNlLCAmZmFpbG92ZXIpOworCVJlcGxpY2F0aW9uU2xv dEFsdGVyKGNtZC0+c2xvdG5hbWUsIHR3b19waGFzZSwgZmFpbG92ZXIpOwogfQogCiAvKgpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5jCmluZGV4IDZmZWUzMTYwZjAuLjVmZjg0MzAxY2QgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMK QEAgLTE5NDgsNyArMTk0OCw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBp bnQgc3RhcnQsIGludCBlbmQpCiAJZWxzZSBpZiAoSGVhZE1hdGNoZXMoIkFMVEVSIiwgIlNVQlND UklQVElPTiIsIE1hdGNoQW55KSAmJiBUYWlsTWF0Y2hlcygiU0VUIiwgIigiKSkKIAkJQ09NUExF VEVfV0lUSCgiYmluYXJ5IiwgImRpc2FibGVfb25fZXJyb3IiLCAiZmFpbG92ZXIiLCAib3JpZ2lu IiwKIAkJCQkJICAicGFzc3dvcmRfcmVxdWlyZWQiLCAicnVuX2FzX293bmVyIiwgInNsb3RfbmFt ZSIsCi0JCQkJCSAgInN0cmVhbWluZyIsICJzeW5jaHJvbm91c19jb21taXQiKTsKKwkJCQkJICAi c3RyZWFtaW5nIiwgInN5bmNocm9ub3VzX2NvbW1pdCIsICJ0d29fcGhhc2UiKTsKIAkvKiBBTFRF UiBTVUJTQ1JJUFRJT04gPG5hbWU+IFNLSVAgKCAqLwogCWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJB TFRFUiIsICJTVUJTQ1JJUFRJT04iLCBNYXRjaEFueSkgJiYgVGFpbE1hdGNoZXMoIlNLSVAiLCAi KCIpKQogCQlDT01QTEVURV9XSVRIKCJsc24iKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy90d29waGFzZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3R3b3BoYXNlLmgKaW5kZXggNTYy NDhjMDAwNi4uZDQ5M2VkMjRjNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3R3b3Bo YXNlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3R3b3BoYXNlLmgKQEAgLTYyLDQgKzYyLDcg QEAgZXh0ZXJuIHZvaWQgUHJlcGFyZVJlZG9SZW1vdmUoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wg Z2l2ZVdhcm5pbmcpOwogZXh0ZXJuIHZvaWQgcmVzdG9yZVR3b1BoYXNlRGF0YSh2b2lkKTsKIGV4 dGVybiBib29sIExvb2t1cEdYYWN0KGNvbnN0IGNoYXIgKmdpZCwgWExvZ1JlY1B0ciBwcmVwYXJl X2VuZF9sc24sCiAJCQkJCQlUaW1lc3RhbXBUeiBvcmlnaW5fcHJlcGFyZV90aW1lc3RhbXApOwor CitleHRlcm4gYm9vbCBMb29rdXBHWGFjdEJ5U3ViaWQoT2lkIHN1YmlkKTsKKwogI2VuZGlmCQkJ CQkJCS8qIFRXT1BIQVNFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCA3YjkzN2QxYTBj Li4yZmNiMTE0MThmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC0yNDMsNyArMjQzLDggQEAg ZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90Q3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wg ZGJfc3BlY2lmaWMsCiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RQZXJzaXN0KHZvaWQpOwog ZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90RHJvcChjb25zdCBjaGFyICpuYW1lLCBib29sIG5v d2FpdCk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3REcm9wQWNxdWlyZWQodm9pZCk7Ci1l eHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RBbHRlcihjb25zdCBjaGFyICpuYW1lLCBib29sIGZh aWxvdmVyKTsKK2V4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdEFsdGVyKGNvbnN0IGNoYXIgKm5h bWUsIGJvb2wgdHdvX3BoYXNlLAorCQkJCQkJCQkgYm9vbCBmYWlsb3Zlcik7CiAKIGV4dGVybiB2 b2lkIFJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBub3dhaXQp OwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90UmVsZWFzZSh2b2lkKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93YWxyZWNlaXZlci5oCmluZGV4IDEyZjcxZmE5OWIuLmE0NDNmNDAyZjUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaApAQCAtMzc3LDYgKzM3Nyw3IEBAIHR5cGVk ZWYgY2hhciAqKCp3YWxyY3ZfY3JlYXRlX3Nsb3RfZm4pIChXYWxSZWNlaXZlckNvbm4gKmNvbm4s CiAgKi8KIHR5cGVkZWYgdm9pZCAoKndhbHJjdl9hbHRlcl9zbG90X2ZuKSAoV2FsUmVjZWl2ZXJD b25uICpjb25uLAogCQkJCQkJCQkJICBjb25zdCBjaGFyICpzbG90bmFtZSwKKwkJCQkJCQkJCSAg Ym9vbCB0d29fcGhhc2UsCiAJCQkJCQkJCQkgIGJvb2wgZmFpbG92ZXIpOwogCiAvKgpAQCAtNDU1 LDggKzQ1Niw4IEBAIGV4dGVybiBQR0RMTElNUE9SVCBXYWxSZWNlaXZlckZ1bmN0aW9uc1R5cGUg KldhbFJlY2VpdmVyRnVuY3Rpb25zOwogCVdhbFJlY2VpdmVyRnVuY3Rpb25zLT53YWxyY3Zfc2Vu ZChjb25uLCBidWZmZXIsIG5ieXRlcykKICNkZWZpbmUgd2FscmN2X2NyZWF0ZV9zbG90KGNvbm4s IHNsb3RuYW1lLCB0ZW1wb3JhcnksIHR3b19waGFzZSwgZmFpbG92ZXIsIHNuYXBzaG90X2FjdGlv biwgbHNuKSBcCiAJV2FsUmVjZWl2ZXJGdW5jdGlvbnMtPndhbHJjdl9jcmVhdGVfc2xvdChjb25u LCBzbG90bmFtZSwgdGVtcG9yYXJ5LCB0d29fcGhhc2UsIGZhaWxvdmVyLCBzbmFwc2hvdF9hY3Rp b24sIGxzbikKLSNkZWZpbmUgd2FscmN2X2FsdGVyX3Nsb3QoY29ubiwgc2xvdG5hbWUsIGZhaWxv dmVyKSBcCi0JV2FsUmVjZWl2ZXJGdW5jdGlvbnMtPndhbHJjdl9hbHRlcl9zbG90KGNvbm4sIHNs b3RuYW1lLCBmYWlsb3ZlcikKKyNkZWZpbmUgd2FscmN2X2FsdGVyX3Nsb3QoY29ubiwgc2xvdG5h bWUsIHR3b19waGFzZSwgZmFpbG92ZXIpIFwKKwlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2 X2FsdGVyX3Nsb3QoY29ubiwgc2xvdG5hbWUsIHR3b19waGFzZSwgZmFpbG92ZXIpCiAjZGVmaW5l IHdhbHJjdl9nZXRfYmFja2VuZF9waWQoY29ubikgXAogCVdhbFJlY2VpdmVyRnVuY3Rpb25zLT53 YWxyY3ZfZ2V0X2JhY2tlbmRfcGlkKGNvbm4pCiAjZGVmaW5lIHdhbHJjdl9leGVjKGNvbm4sIGV4 ZWMsIG5SZXRUeXBlcywgcmV0VHlwZXMpIFwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2Vy X2ludGVybmFsLmgKaW5kZXggNTE1YWVmZDUxOS4uZDU0MjgyNjNjMSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTI0Niw2ICsyNDYsNyBAQCBleHRlcm4g Ym9vbCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goTG9naWNhbFJlcFdvcmtlclR5cGUgd3R5cGUs CiAJCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJIGRzbV9oYW5kbGUg c3Vid29ya2VyX2RzbSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBz dWJpZCwgT2lkIHJlbGlkKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2Vyc19zdG9wKE9p ZCBzdWJpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9wKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93 YWtldXAoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3Jr ZXJfd2FrZXVwX3B0cihMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CmluZGV4IDFlZWU2YjE3YjguLjliYmE2NTZlMDAg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAgLTM3OSwx MCArMzc5LDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51 YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICByZWdyZXNzX3Rlc3RzdWIgfCBy ZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAg IHwgb2ZmICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93 KQogCi0tLWZhaWwgLSBhbHRlciBvZiB0d29fcGhhc2Ugb3B0aW9uIG5vdCBzdXBwb3J0ZWQuCi1B TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAodHdvX3BoYXNlID0gZmFsc2Up OwotRVJST1I6ICB1bnJlY29nbml6ZWQgc3Vic2NyaXB0aW9uIHBhcmFtZXRlcjogInR3b19waGFz ZSIKLS0tIGJ1dCBjYW4gYWx0ZXIgc3RyZWFtaW5nIHdoZW4gdHdvX3BoYXNlIGVuYWJsZWQKKy0t IFdlIGNhbiBhbHRlciBzdHJlYW1pbmcgd2hlbiB0d29fcGhhc2UgZW5hYmxlZAogQUxURVIgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHRydWUpOwogXGRScysK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1 YnNjcmlwdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCmlu ZGV4IDFiMmEyM2JhN2IuLjlmZjE1MWY4MDYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3N1YnNjcmlwdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0 aW9uLnNxbApAQCAtMjU3LDEwICsyNTcsNyBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogQ1JF QVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxz ZSwgdHdvX3BoYXNlID0gdHJ1ZSk7CiAKIFxkUnMrCi0tLWZhaWwgLSBhbHRlciBvZiB0d29fcGhh c2Ugb3B0aW9uIG5vdCBzdXBwb3J0ZWQuCi1BTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNFVCAodHdvX3BoYXNlID0gZmFsc2UpOwotCi0tLSBidXQgY2FuIGFsdGVyIHN0cmVhbWlu ZyB3aGVuIHR3b19waGFzZSBlbmFibGVkCistLSBXZSBjYW4gYWx0ZXIgc3RyZWFtaW5nIHdoZW4g dHdvX3BoYXNlIGVuYWJsZWQKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VU IChzdHJlYW1pbmcgPSB0cnVlKTsKIAogXGRScysKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAyMV90d29waGFzZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMV90 d29waGFzZS5wbAppbmRleCA5NDM3Y2Q0YzNiLi5lNzEwZjNjNGMwIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMjFfdHdvcGhhc2UucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDIxX3R3b3BoYXNlLnBsCkBAIC0zNjcsNiArMzY3LDcxIEBAICRyZXN1bHQgPQog ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRhYl9jb3B5OyIpOwogaXMoJHJlc3VsdCwgcXEoMiksICdyZXBsaWNhdGVkIGRhdGEg aW4gc3Vic2NyaWJlciB0YWJsZScpOwogCisjIERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBhbmQg YWx0ZXIgaXQgdG8gdHdvX3BoYXNlID0gZmFsc2UsCisjIHZlcmlmeSB0aGF0IHRoZSBhbHRlcmVk IHN1YnNjcmlwdGlvbiByZWZsZWN0cyB0aGUgdHdvX3BoYXNlIG9wdGlvbi4KKworIyBBbHRlciBz dWJzY3JpcHRpb24gdHdvX3BoYXNlIHRvIGZhbHNlCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfY29weSBESVNBQkxF Iik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWJfY29weSBTRVQgKHR3b19waGFzZSA9IGZhbHNlKSIpOworJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0 YXBfc3ViX2NvcHkgRU5BQkxFIik7CisKKyMgV2FpdCBmb3Igc3Vic2NyaXB0aW9uIHN0YXJ0dXAK KyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxp c2hlciwgJGFwcG5hbWVfY29weSk7CisKKyMgTWFrZSBzdXJlIHRoYXQgdGhlIHR3by1waGFzZSBp cyBkaXNhYmxlZCBvbiB0aGUgc3Vic2NyaWJlcgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorICAgICAgICJTRUxFQ1Qgc3VidHdvcGhhc2VzdGF0ZSBG Uk9NIHBnX3N1YnNjcmlwdGlvbiBXSEVSRSBzdWJuYW1lID0gJ3RhcF9zdWJfY29weSc7IgorKTsK K2lzKCRyZXN1bHQsIHFxKGQpLCAndHdvLXBoYXNlIGlzIGRpc2FibGVkJyk7CisKKyMgTm93IGRv IGEgcHJlcGFyZSBvbiBwdWJsaXNoZXIgYW5kIG1ha2Ugc3VyZSB0aGF0IGl0IGlzIG5vdCByZXBs aWNhdGVkLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFNV QlNDUklQVElPTiB0YXBfc3ViIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKyAgICAg ICAncG9zdGdyZXMnLCBxcXsKKyAgICBCRUdJTjsKKyAgICBJTlNFUlQgSU5UTyB0YWJfY29weSBW QUxVRVMgKDEwMCk7CisgICAgUFJFUEFSRSBUUkFOU0FDVElPTiAnbmV3Z2lkJzsKKwl9KTsKKwor IyBXYWl0IGZvciB0aGUgc3Vic2NyaWJlciB0byBjYXRjaHVwCiskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfY29weSk7CisKKyMgTWFrZSBzdXJlIHRoYXQgdGhlcmUg aXMgMCBwcmVwYXJlZCB0cmFuc2FjdGlvbiBvbiB0aGUgc3Vic2NyaWJlcgorJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisjIE5vdyBjb21taXQgdGhlIGluc2Vy dCBhbmQgdmVyaWZ5IHRoYXQgaXQgSVMgcmVwbGljYXRlZAorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAnbmV3Z2lkJzsiKTsKKworIyBXYWl0 IGZvciB0aGUgc3Vic2NyaWJlciB0byBjYXRjaHVwCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWVfY29weSk7CisKKyMgTWFkZSBzdXJlIHRoYXQgdGhlIGNvbW1pdGVk IHRyYW5zYWN0aW9uIGlzIHJlcGxpY2F0ZWQuCiskcmVzdWx0ID0KKwkkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRhYl9jb3B5OyIp OworaXMoJHJlc3VsdCwgcXEoMyksICdyZXBsaWNhdGVkIGRhdGEgaW4gc3Vic2NyaWJlciB0YWJs ZScpOworCisjIEFsdGVyIHN1YnNjcmlwdGlvbiB0d29fcGhhc2UgdG8gdHJ1ZQorJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBf c3ViX2NvcHkgRElTQUJMRSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX2NvcHkgU0VUICh0d29fcGhhc2UgPSB0 cnVlKSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViX2NvcHkgRU5BQkxFIik7CisKKyMgV2FpdCBmb3Igc3Vic2Ny aXB0aW9uIHN0YXJ0dXAKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9z eW5jKCRub2RlX3B1Ymxpc2hlciwgJGFwcG5hbWVfY29weSk7CisKKyMgTWFrZSBzdXJlIHRoYXQg dGhlIHR3by1waGFzZSBpcyBlbmFibGVkIG9uIHRoZSBzdWJzY3JpYmVyCiskcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBzdWJ0d29waGFz ZXN0YXRlIEZST00gcGdfc3Vic2NyaXB0aW9uIFdIRVJFIHN1Ym5hbWUgPSAndGFwX3N1Yl9jb3B5 JzsiCispOworaXMoJHJlc3VsdCwgcXEoZSksICd0d28tcGhhc2UgaXMgZGlzYWJsZWQnKTsKKwog JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFNVQlNDUklQVElP TiB0YXBfc3ViX2NvcHk7Iik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX2NvcHk7Iik7CiAKQEAgLTM3NCw4ICs0MzksNiBA QCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBQVUJMSUNBVElP TiB0YXBfcHViX2NvcHk7Iik7CiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cAogIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWIiKTsKLQogJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19zdWJzY3JpcHRpb24iKTsKIGlzKCRyZXN1bHQsIHFxKDApLCAnY2hlY2sgc3Vic2NyaXB0aW9u IHdhcyBkcm9wcGVkIG9uIHN1YnNjcmliZXInKTsKLS0gCjIuNDMuMAoK --000000000000791d870616590d85--