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 1uvYW8-00FMjm-K4 for pgpool-hackers@arkaria.postgresql.org; Mon, 08 Sep 2025 09:50:33 +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 1uvYW7-003ZQn-Px for pgpool-hackers@arkaria.postgresql.org; Mon, 08 Sep 2025 09:50:32 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uvYW7-003ZOG-5D for pgpool-hackers@lists.postgresql.org; Mon, 08 Sep 2025 09:50:32 +0000 Received: from mail-yx1-xb12f.google.com ([2607:f8b0:4864:20::b12f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uvYW5-0018QJ-1j for pgpool-hackers@lists.postgresql.org; Mon, 08 Sep 2025 09:50:30 +0000 Received: by mail-yx1-xb12f.google.com with SMTP id 956f58d0204a3-6045eb3848eso688323d50.0 for ; Mon, 08 Sep 2025 02:50:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tailorbrands.com; s=google; t=1757325029; x=1757929829; 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=WoEDKMq4GDfPR7x10P8VlH+3MHO0VDd5y6khidiQmd4=; b=b1aNqR5TvEHCEfapCxCs01Mq3LRmIUN3bZvNbZfZbennHKD0J9xK1BfqpPAYizwl07 1sEpyqC3AOaQ5DFB+Hnk7FiaHXP4NtHVVmCGPEJzPO8B/U3rVTqBaL1cmbYBi0EKrjJU Wf73m7duMUKZ8TFmtvgJ1RGX06p1Hq37hhpSJTaRL95fP9WVDCMfgNLFAd554FA4RAdA meSkAxUFXkp+z6ntOLklqf4TOZPv1fKoSx60nbcZi11MliDCLKrs9BZvIMbQVeWsnFBI PbcwGcFfqzPLhSdmhhgQb8kww11aEQOuCTkqwsZklIhgdXAqlcJjDLB2Vm6S3Sp0YxY9 3tjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757325029; x=1757929829; 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=WoEDKMq4GDfPR7x10P8VlH+3MHO0VDd5y6khidiQmd4=; b=AUd+L/Q09X9SilOk6qI99bZFu5RkcEziWtMzfr6vfTw2A9avWIbj9oQrx/to/NqJjC zXZZFbKKjuA+hLwEiPo7fVphMj8nSF8XphD1LoQHwsKEYFCY4YvMv41xZSS0bave7ctR Wxug9hUaC8DOBrL9FSPzh1L0dw+6ZpF5jkeGTWiOPzhAdWqs5JajAlfCDnNCyOKYUeb5 RpOpbF4URs71rtA9O+8LoyYbrTPOMPedODCI14K4U1B+SOFTCVzG03l+Y1xG1hRuoay5 poNmpM396cixk0VaLo9938I3vDpH9yXkO3Mp1QUiibnAR8DWWxHJc5E5nKqM8Dwe67HS lpTQ== X-Gm-Message-State: AOJu0Yz46p5mWpiWssWpvDI6IHWMHsyE9ZPIF8OfB5fQh+4ZEpZcAHqI 50+X16vIsfrJ/ZBwVlRP2AmURJVIw68pUAdpQvpgsaz0eLPbL9/PABoN6TR/CCDGksMDXEVchK2 xyC8LvYy902wdOZDF5ePkdl0aeKEdLHpko4zZETJeQ+2vv/CddZFQr44hVw== X-Gm-Gg: ASbGncvUjwV+8Coc1JNC17GiGWIbmlVYEQHFVGFzGODZxYptUI9V2vMfSndb+zjMGTG v/uNAInK1Yom98MnNa5nj+ji9YJWM0GTwAzLPT7wfx/xNLaFcA1WKEMQkW1oBjD8mnzAJOL7qOC AgegDm1zzsaOJZ826+vPvjvaoKYHX8CxcHfp+uHrOUINlTzq4LoJC8lwLUFP3Wrl0f/54xu057P X/o0eFwO8Zgcx9u X-Google-Smtp-Source: AGHT+IHlEgqSGZaLiyz7zN7aWmzYREuuyOtRYNW9kMQpfRpS/AKho8F6/IASBezdbcJkra2OcjEdUZeckbkBN4Q+cwA= X-Received: by 2002:a05:690c:620d:b0:723:9ba7:7f9e with SMTP id 00721157ae682-727f4d614famr73914957b3.25.1757325028593; Mon, 08 Sep 2025 02:50:28 -0700 (PDT) MIME-Version: 1.0 References: <20250904.083615.1569744760401897215.ishii@postgresql.org> <20250908.092628.942175382089863152.ishii@postgresql.org> In-Reply-To: <20250908.092628.942175382089863152.ishii@postgresql.org> From: Nadav Shatz Date: Mon, 8 Sep 2025 12:50:16 +0300 X-Gm-Features: Ac12FXwAjselinyz2W2w109gjehYTidzVvmo72PIQmhYQvN_KTJlA1S8Oxf1cMI Message-ID: Subject: Re: Proposal: recent access based routing for primary-replica setups To: Tatsuo Ishii Cc: pgpool-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000160ba3063e471e38" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000160ba3063e471e38 Content-Type: multipart/alternative; boundary="000000000000160ba2063e471e36" --000000000000160ba2063e471e36 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Tatsuo, Please find attached the 3 patch files (implementation, tests, docs) with the updates we discussed. What do you think? Best, On Mon, Sep 8, 2025 at 3:26=E2=80=AFAM Tatsuo Ishii = wrote: > Hi Nadav, > > > Hi Tatsuo, > > > > Thanks for getting back to me. Let me clarify the ordering concern and > > provide an example to make it clearer: > > > > Currently, replication_delay_source_cmd executes without awareness of t= he > > replica list or the order in which Pgpool loads them. For Aurora, since > > we=E2=80=99re bypassing the internal DB tables and fetching lag data di= rectly via > > the AWS CloudWatch API, we need to ensure the returned lag values are > > mapped to the correct instances. > > > > For example, assume Pgpool has the following configuration: > > > > primary: db-primary > > replicas: db-replica-a, db-replica-b, db-replica-c > > > > If the command retrieves lag values [15, 120, 60] from CloudWatch, we > need > > to guarantee these are consistently mapped as: > > > > > > - > > > > db-replica-a =E2=86=92 15ms > > - > > > > db-replica-b =E2=86=92 120ms > > - > > > > db-replica-c =E2=86=92 60ms > > > > Without explicitly passing the instance identifiers and their order to > the > > command, there=E2=80=99s a risk that mismatched ordering will cause Pgp= ool to > make > > incorrect routing decisions. > > > > To address this, I suggest extending replication_delay_source_cmd to > accept > > an ordered list of instance identifiers as arguments. This way, the > command > > can fetch the metrics in the same sequence Pgpool expects, ensuring > > alignment between configuration and returned data. > > Thanks for the clarification. Previously I misunderstood that Aurora > only provides "reader endpoint", which made me think your proposal to > be impossible. But after some research , I found that Aurora also > provides "cluster endpoint" which refers to each replica instance. So > let me check if my understanding is > correct. replication_delay_source_cmd will be invoked as: > > replication_delay_source_cmd db-replica-a db-replica-b db-replica-c > > > Would you agree this approach makes sense? > > Yes. > > > If so, I can provide an updated > > patch to demonstrate how the command would handle ordered instance > mapping. > > Thanks. That would be good. > > BTW, There are minor points regarding your previous patch. In the patch > > 083.external_replication_delay/ > > is the test directory. This does not fit in with our test > infrastructure tradition. Tests for new features should be added > between 001 and 049. 050 and greater are reserved for tests for bug > fixes. So at this point, 041 is appropreate (if other test for a new > feature is added before your patch is committed, you need to adjust > the number of course). > > You need to include a patch for documentation. You don't need to write > Japanese doc (doc.ja). We will create it from the English document > later on. > > Best regards, > -- > Tatsuo Ishii > SRA OSS K.K. > English: http://www.sraoss.co.jp/index_en/ > Japanese:http://www.sraoss.co.jp > --=20 Nadav Shatz Tailor Brands | CTO --000000000000160ba2063e471e36 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi=C2=A0Tatsuo,

Please find attached th= e 3 patch files (implementation, tests, docs) with the updates we discussed= .

What do you think?

Best= ,

On Mon, Sep 8, 2025 at 3:26=E2=80=AFAM Tatsuo= Ishii <ishii@postgresql.org= > wrote:
Hi N= adav,

> Hi Tatsuo,
>
> Thanks for getting back to me. Let me clarify the ordering concern and=
> provide an example to make it clearer:
>
> Currently, replication_delay_source_cmd executes without awareness of = the
> replica list or the order in which Pgpool loads them. For Aurora, sinc= e
> we=E2=80=99re bypassing the internal DB tables and fetching lag data d= irectly via
> the AWS CloudWatch API, we need to ensure the returned lag values are<= br> > mapped to the correct instances.
>
> For example, assume Pgpool has the following configuration:
>
> primary: db-primary
> replicas: db-replica-a, db-replica-b, db-replica-c
>
> If the command retrieves lag values [15, 120, 60] from CloudWatch, we = need
> to guarantee these are consistently mapped as:
>
>
>=C2=A0 =C2=A0 -
>
>=C2=A0 =C2=A0 db-replica-a =E2=86=92 15ms
>=C2=A0 =C2=A0 -
>
>=C2=A0 =C2=A0 db-replica-b =E2=86=92 120ms
>=C2=A0 =C2=A0 -
>
>=C2=A0 =C2=A0 db-replica-c =E2=86=92 60ms
>
> Without explicitly passing the instance identifiers and their order to= the
> command, there=E2=80=99s a risk that mismatched ordering will cause Pg= pool to make
> incorrect routing decisions.
>
> To address this, I suggest extending replication_delay_source_cmd to a= ccept
> an ordered list of instance identifiers as arguments. This way, the co= mmand
> can fetch the metrics in the same sequence Pgpool expects, ensuring > alignment between configuration and returned data.

Thanks for the clarification. Previously I misunderstood that Aurora
only provides "reader endpoint", which made me think your proposa= l to
be impossible. But after some research , I found that Aurora also
provides "cluster endpoint" which refers to each replica instance= .=C2=A0 So
let me check if my understanding is
correct. replication_delay_source_cmd will be invoked as:

replication_delay_source_cmd db-replica-a db-replica-b db-replica-c

> Would you agree this approach makes sense?

Yes.

> If so, I can provide an updated
> patch to demonstrate how the command would handle ordered instance map= ping.

Thanks. That would be good.

BTW, There are minor points regarding your previous patch. In the patch

083.external_replication_delay/

is the test directory. This does not fit in with our test
infrastructure tradition. Tests for new features should be added
between 001 and 049. 050 and greater are reserved for tests for bug
fixes. So at this point, 041 is appropreate (if other test for a new
feature is added before your patch is committed, you need to adjust
the number of course).

You need to include a patch for documentation. You don't need to write<= br> Japanese doc (doc.ja). We will create it from the English document
later on.

Best regards,
--
Tatsuo Ishii
SRA OSS K.K.
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp


--
Nadav Shatz
<= font color=3D"#000000">Tailor Brands=C2=A0| CTO
--000000000000160ba2063e471e36-- --000000000000160ba3063e471e38 Content-Type: application/octet-stream; name="0001-feat-add-external-command-replication-delay-source-f.patch" Content-Disposition: attachment; filename="0001-feat-add-external-command-replication-delay-source-f.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfaxxuab0 RnJvbSAwM2MyNzc0MzIxOTI0MGVhOTA1MGY2MDRmNWU3ZmNhZTc0OTkyYzJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYWRhdiBTaGF0eiA8bmFkYXZAdGFpbG9yYnJhbmRzLmNvbT4K RGF0ZTogTW9uLCA4IFNlcCAyMDI1IDEwOjMzOjQ5ICswMzAwClN1YmplY3Q6IFtQQVRDSCAxLzNd IGZlYXQ6IGFkZCBleHRlcm5hbCBjb21tYW5kIHJlcGxpY2F0aW9uIGRlbGF5IHNvdXJjZQogZmVh dHVyZQoKLSBBZGQgcmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCBjb25maWd1cmF0aW9uIG9w dGlvbgotIFN1cHBvcnQgZXh0ZXJuYWwgY29tbWFuZHMgZm9yIHJlcGxpY2F0aW9uIGRlbGF5IGRl dGVjdGlvbgotIFBhc3Mgb3JkZXJlZCBpbnN0YW5jZSBpZGVudGlmaWVycyB0byBleHRlcm5hbCBj b21tYW5kcwotIFVwZGF0ZSBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBzYW1wbGVzCi0tLQogc3Jj L2NvbmZpZy9wb29sX2NvbmZpZ192YXJpYWJsZXMuYyAgICAgICAgICAgIHwgIDM4ICsrCiBzcmMv aW5jbHVkZS9wb29sX2NvbmZpZy5oICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKwogc3JjL3Nh bXBsZS9wZ3Bvb2wuY29uZi5zYW1wbGUtc3RyZWFtICAgICAgICAgIHwgIDE2ICsKIHNyYy9zdHJl YW1pbmdfcmVwbGljYXRpb24vcG9vbF93b3JrZXJfY2hpbGQuYyB8IDM2MyArKysrKysrKysrKysr KysrKy0KIDQgZmlsZXMgY2hhbmdlZCwgNDI0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2NvbmZpZy9wb29sX2NvbmZpZ192YXJpYWJsZXMuYyBiL3NyYy9j b25maWcvcG9vbF9jb25maWdfdmFyaWFibGVzLmMKaW5kZXggNWJiZTQ2ZDNhLi5kMmJlNDM0ZTAg MTAwNjQ0Ci0tLSBhL3NyYy9jb25maWcvcG9vbF9jb25maWdfdmFyaWFibGVzLmMKKysrIGIvc3Jj L2NvbmZpZy9wb29sX2NvbmZpZ192YXJpYWJsZXMuYwpAQCAtMzEwLDYgKzMxMCwxMiBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19lbnVtX2VudHJ5IGNoZWNrX3RlbXBfdGFibGVfb3B0aW9u c1tdID0gewogCXtOVUxMLCAwLCBmYWxzZX0KIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29u ZmlnX2VudW1fZW50cnkgcmVwbGljYXRpb25fZGVsYXlfc291cmNlX29wdGlvbnNbXSA9IHsKKwl7 ImJ1aWx0aW4iLCBSRVBMSUNBVElPTl9ERUxBWV9CVUlMVElOLCBmYWxzZX0sCisJeyJjbWQiLCBS RVBMSUNBVElPTl9ERUxBWV9DTUQsIGZhbHNlfSwKKwl7TlVMTCwgMCwgZmFsc2V9Cit9OworCiBz dGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19lbnVtX2VudHJ5IGxvZ19iYWNrZW5kX21lc3NhZ2Vz X29wdGlvbnNbXSA9IHsKIAl7Im5vbmUiLCBCR01TR19OT05FLCBmYWxzZX0sCS8qIHR1cm4gb2Zm IGxvZ2dpbmcgKi8KIAl7InRlcnNlIiwgQkdNU0dfVEVSU0UsIGZhbHNlfSwJLyogdGVyc2UgbG9n Z2luZyAocmVwZWF0ZWQgbWVzc2FnZXMgYXJlCkBAIC05ODAsNiArOTg2LDE2IEBAIHN0YXRpYyBz dHJ1Y3QgY29uZmlnX3N0cmluZyBDb25maWd1cmVOYW1lc1N0cmluZ1tdID0KIAkJTlVMTCwgTlVM TCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsicmVwbGljYXRpb25fZGVsYXlfc291cmNlX2Nt ZCIsIENGR0NYVF9SRUxPQUQsIFNUUkVBTUlOR19SRVBMSUNBVElPTl9DT05GSUcsCisJCQkiRXh0 ZXJuYWwgY29tbWFuZCB0byByZXRyaWV2ZSByZXBsaWNhdGlvbiBkZWxheSBpbmZvcm1hdGlvbi4i LAorCQkJQ09ORklHX1ZBUl9UWVBFX1NUUklORywgZmFsc2UsIDAKKwkJfSwKKwkJJmdfcG9vbF9j b25maWcucmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCwKKwkJIiIsCisJCU5VTEwsIE5VTEws IE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7ImZhaWxiYWNrX2NvbW1hbmQiLCBDRkdDWFRfUkVM T0FELCBGQUlMT1ZFUl9DT05GSUcsCiAJCQkiQ29tbWFuZCB0byBleGVjdXRlIHdoZW4gYmFja2Vu ZCBub2RlIGlzIGF0dGFjaGVkLiIsCkBAIC0yMzIzLDYgKzIzMzksMTcgQEAgc3RhdGljIHN0cnVj dCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJ fSwKIAorCXsKKwkJeyJyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfdGltZW91dCIsIENGR0NYVF9S RUxPQUQsIFNUUkVBTUlOR19SRVBMSUNBVElPTl9DT05GSUcsCisJCQkiVGltZW91dCBmb3IgZXh0 ZXJuYWwgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCBleGVjdXRpb24gaW4gc2Vjb25kcy4iLAor CQkJQ09ORklHX1ZBUl9UWVBFX0lOVCwgZmFsc2UsIDAKKwkJfSwKKwkJJmdfcG9vbF9jb25maWcu cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQsCisJCTEwLAorCQkxLCAzNjAwLAorCQlO VUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCS8qIEVuZC1vZi1saXN0IG1hcmtlciAqLwogCUVNUFRZ X0NPTkZJR19JTlQKIH07CkBAIC0yNDg1LDYgKzI1MTIsMTcgQEAgc3RhdGljIHN0cnVjdCBjb25m aWdfZW51bSBDb25maWd1cmVOYW1lc0VudW1bXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwsIE5VTEwK IAl9LAogCisJeworCQl7InJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZSIsIENGR0NYVF9SRUxPQUQs IFNUUkVBTUlOR19SRVBMSUNBVElPTl9DT05GSUcsCisJCQkiU291cmNlIG9mIHJlcGxpY2F0aW9u IGRlbGF5IGluZm9ybWF0aW9uLiIsCisJCQlDT05GSUdfVkFSX1RZUEVfRU5VTSwgZmFsc2UsIDAK KwkJfSwKKwkJKGludCAqKSAmZ19wb29sX2NvbmZpZy5yZXBsaWNhdGlvbl9kZWxheV9zb3VyY2Us CisJCVJFUExJQ0FUSU9OX0RFTEFZX0JVSUxUSU4sCisJCXJlcGxpY2F0aW9uX2RlbGF5X3NvdXJj ZV9vcHRpb25zLAorCQlOVUxMLCBOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCS8qIEVuZC1vZi1s aXN0IG1hcmtlciAqLwogCUVNUFRZX0NPTkZJR19FTlVNCiB9OwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcG9vbF9jb25maWcuaCBiL3NyYy9pbmNsdWRlL3Bvb2xfY29uZmlnLmgKaW5kZXggYmU4 Mjc1MGU1Li4xYTgyNjJkZDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvb2xfY29uZmlnLmgK KysrIGIvc3JjL2luY2x1ZGUvcG9vbF9jb25maWcuaApAQCAtOTQsNiArOTQsMTIgQEAgdHlwZWRl ZiBlbnVtIExvZ1N0YW5kYnlEZWxheU1vZGVzCiAJTFNEX05PTkUKIH0gTG9nU3RhbmRieURlbGF5 TW9kZXM7CiAKK3R5cGVkZWYgZW51bSBSZXBsaWNhdGlvbkRlbGF5U291cmNlTW9kZXMKK3sKKwlS RVBMSUNBVElPTl9ERUxBWV9CVUlMVElOID0gMSwKKwlSRVBMSUNBVElPTl9ERUxBWV9DTUQKK30g UmVwbGljYXRpb25EZWxheVNvdXJjZU1vZGVzOworCiAKIHR5cGVkZWYgZW51bSBNZW1DYWNoZU1l dGhvZAogewpAQCAtMzcxLDYgKzM3Nyw5IEBAIHR5cGVkZWYgc3RydWN0CiAJY2hhcgkgICAqc3Jf Y2hlY2tfcGFzc3dvcmQ7CS8qIHBhc3N3b3JkIGZvciBzcl9jaGVja191c2VyICovCiAJY2hhcgkg ICAqc3JfY2hlY2tfZGF0YWJhc2U7CS8qIFBvc3RncmVTUUwgZGF0YWJhc2UgbmFtZSBmb3Igc3Ry ZWFtaW5nCiAJCQkJCQkJCQkgKiByZXBsaWNhdGlvbiBjaGVjayAqLworCWludAkJCXJlcGxpY2F0 aW9uX2RlbGF5X3NvdXJjZTsJLyogcmVwbGljYXRpb24gZGVsYXkgc291cmNlOiBidWlsdGluIG9y IGNtZCAqLworCWNoYXIJICAgKnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQ7CS8qIGV4dGVy bmFsIGNvbW1hbmQgZm9yIHJlcGxpY2F0aW9uIGRlbGF5ICovCisJaW50CQkJcmVwbGljYXRpb25f ZGVsYXlfc291cmNlX3RpbWVvdXQ7CS8qIHRpbWVvdXQgZm9yIGV4dGVybmFsIGNvbW1hbmQgaW4g c2Vjb25kcyAqLwogCWNoYXIJICAgKmZhaWxvdmVyX2NvbW1hbmQ7CS8qIGV4ZWN1dGUgY29tbWFu ZCB3aGVuIGZhaWxvdmVyIGhhcHBlbnMgKi8KIAljaGFyCSAgICpmb2xsb3dfcHJpbWFyeV9jb21t YW5kOyAvKiBleGVjdXRlIGNvbW1hbmQgd2hlbiBmYWlsb3ZlciBpcwogCQkJCQkJCQkJCSAqIGVu ZGVkICovCmRpZmYgLS1naXQgYS9zcmMvc2FtcGxlL3BncG9vbC5jb25mLnNhbXBsZS1zdHJlYW0g Yi9zcmMvc2FtcGxlL3BncG9vbC5jb25mLnNhbXBsZS1zdHJlYW0KaW5kZXggYTdlYjU5NGM5Li42 NjJlNzY3YTYgMTAwNjQ0Ci0tLSBhL3NyYy9zYW1wbGUvcGdwb29sLmNvbmYuc2FtcGxlLXN0cmVh bQorKysgYi9zcmMvc2FtcGxlL3BncG9vbC5jb25mLnNhbXBsZS1zdHJlYW0KQEAgLTUxOSw2ICs1 MTksMjIgQEAgYmFja2VuZF9jbHVzdGVyaW5nX21vZGUgPSBzdHJlYW1pbmdfcmVwbGljYXRpb24K IAogI3NyX2NoZWNrX2RhdGFiYXNlID0gJ3Bvc3RncmVzJwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjIERhdGFiYXNlIG5hbWUgZm9yIHN0cmVhbWluZyByZXBsaWNhdGlvbiBj aGVjaworCisjcmVwbGljYXRpb25fZGVsYXlfc291cmNlID0gJ2J1aWx0aW4nCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgU291cmNlIG9mIHJlcGxpY2F0aW9uIGRlbGF5IGlu Zm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ2J1aWx0aW4n OiB1c2UgYnVpbHQtaW4gZGF0YWJhc2UgcXVlcmllcyAoZGVmYXVsdCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyAnY21kJzogdXNlIGV4dGVybmFsIGNvbW1hbmQKKyNyZXBs aWNhdGlvbl9kZWxheV9zb3VyY2VfY21kID0gJycKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBFeHRlcm5hbCBjb21tYW5kIHRvIHJldHJpZXZlIHJlcGxpY2F0aW9uIGRlbGF5 IGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT25seSB1 c2VkIHdoZW4gcmVwbGljYXRpb25fZGVsYXlfc291cmNlID0gJ2NtZCcKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBDb21tYW5kIHNob3VsZCBvdXRwdXQgZGVsYXkgdmFsdWVz IGluIG1pbGxpc2Vjb25kcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZv cm1hdDogIjAgMjAgMTAiIChub2RlMCBub2RlMSBub2RlMiBkZWxheXMpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgQ29tbWFuZCBydW5zIGFzIHRoZSBwZ3Bvb2wgcHJvY2Vz cyB1c2VyCisjcmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQgPSAxMAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRpbWVvdXQgZm9yIGV4dGVybmFsIGNvbW1hbmQg ZXhlY3V0aW9uIGluIHNlY29uZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBPbmx5IHVzZWQgd2hlbiByZXBsaWNhdGlvbl9kZWxheV9zb3VyY2UgPSAnY21kJworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFJhbmdlOiAxLTM2MDAgc2Vjb25kcyAoZGVm YXVsdDogMTApCisKICNkZWxheV90aHJlc2hvbGQgPSAwCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMgVGhyZXNob2xkIGJlZm9yZSBub3QgZGlzcGF0Y2hpbmcgcXVlcnkgdG8g c3RhbmRieSBub2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVW5pdCBp cyBpbiBieXRlcwpkaWZmIC0tZ2l0IGEvc3JjL3N0cmVhbWluZ19yZXBsaWNhdGlvbi9wb29sX3dv cmtlcl9jaGlsZC5jIGIvc3JjL3N0cmVhbWluZ19yZXBsaWNhdGlvbi9wb29sX3dvcmtlcl9jaGls ZC5jCmluZGV4IDRmOGY4MjNhMy4uZDE5YmIxNzczIDEwMDY0NAotLS0gYS9zcmMvc3RyZWFtaW5n X3JlcGxpY2F0aW9uL3Bvb2xfd29ya2VyX2NoaWxkLmMKKysrIGIvc3JjL3N0cmVhbWluZ19yZXBs aWNhdGlvbi9wb29sX3dvcmtlcl9jaGlsZC5jCkBAIC03Niw2ICs3Niw5IEBAIHN0YXRpYyB2b2xh dGlsZSBzaWdfYXRvbWljX3QgcmVzdGFydF9yZXF1ZXN0ID0gMDsKIHN0YXRpYyB2b2lkIGVzdGFi bGlzaF9wZXJzaXN0ZW50X2Nvbm5lY3Rpb24odm9pZCk7CiBzdGF0aWMgdm9pZCBkaXNjYXJkX3Bl cnNpc3RlbnRfY29ubmVjdGlvbih2b2lkKTsKIHN0YXRpYyB2b2lkIGNoZWNrX3JlcGxpY2F0aW9u X3RpbWVfbGFnKHZvaWQpOworc3RhdGljIHZvaWQgY2hlY2tfcmVwbGljYXRpb25fdGltZV9sYWdf d2l0aF9jbWQodm9pZCk7CitzdGF0aWMgY2hhciAqc2hlbGxfc2luZ2xlX3F1b3RlKGNvbnN0IGNo YXIgKnNyYyk7CitzdGF0aWMgY2hhciAqZ2V0X2luc3RhbmNlX2lkZW50aWZpZXJfZm9yX25vZGUo aW50IG5vZGVfaWQpOwogc3RhdGljIHZvaWQgQ2hlY2tSZXBsaWNhdGlvblRpbWVMYWdFcnJvckNi KHZvaWQgKmFyZyk7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGludCB0ZXh0X3RvX2xzbihj aGFyICp0ZXh0KTsKIHN0YXRpYyBSRVRTSUdUWVBFIG15X3NpZ25hbF9oYW5kbGVyKGludCBzaWcp OwpAQCAtMjU5LDcgKzI2MiwxMCBAQCBkb193b3JrZXJfY2hpbGQodm9pZCkKIAkJCQkJUE9PTF9O T0RFX1NUQVRVUyAqbm9kZV9zdGF0dXM7CiAJCQkJCWludAkJCWk7CiAKLQkJCQkJLyogRG8gcmVw bGljYXRpb24gdGltZSBsYWcgY2hlY2tpbmcgKi8KKwkJCQkvKiBEbyByZXBsaWNhdGlvbiB0aW1l IGxhZyBjaGVja2luZyAqLworCQkJCWlmIChwb29sX2NvbmZpZy0+cmVwbGljYXRpb25fZGVsYXlf c291cmNlID09IFJFUExJQ0FUSU9OX0RFTEFZX0NNRCkKKwkJCQkJY2hlY2tfcmVwbGljYXRpb25f dGltZV9sYWdfd2l0aF9jbWQoKTsKKwkJCQllbHNlCiAJCQkJCWNoZWNrX3JlcGxpY2F0aW9uX3Rp bWVfbGFnKCk7CiAKIAkJCQkJLyogQ2hlY2sgbm9kZSBzdGF0dXMgKi8KQEAgLTY1OSwxMCArNjY1 LDM2MyBAQCBjaGVja19yZXBsaWNhdGlvbl90aW1lX2xhZyh2b2lkKQogCWVycm9yX2NvbnRleHRf c3RhY2sgPSBjYWxsYmFjay5wcmV2aW91czsKIH0KIAorI2RlZmluZSBNQVhfQ01EX09VVFBVVCA0 MDk2CisjZGVmaW5lIE1BWF9SRUFTT05BQkxFX0RFTEFZX01TIDM2MDAwMDAuMCAgLyogMSBob3Vy IGluIG1pbGxpc2Vjb25kcyAqLworCisvKiBHbG9iYWwgdmFyaWFibGUgdG8gdHJhY2sgY29tbWFu ZCB0aW1lb3V0ICovCitzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGNvbW1hbmRfdGltZW91 dF9vY2N1cnJlZCA9IDA7CisKKy8qCisgKiBTaWduYWwgaGFuZGxlciBmb3IgY29tbWFuZCB0aW1l b3UKKyAqLworc3RhdGljIHZvaWQKK2NvbW1hbmRfdGltZW91dF9oYW5kbGVyKGludCBzaWcpCit7 CisJY29tbWFuZF90aW1lb3V0X29jY3VycmVkID0gMTsKK30KKworCisKKy8qCisgKiBDaGVjayBy ZXBsaWNhdGlvbiB0aW1lIGxhZyB1c2luZyBleHRlcm5hbCBjb21tYW5kCisgKi8KK3N0YXRpYyB2 b2lkCitjaGVja19yZXBsaWNhdGlvbl90aW1lX2xhZ193aXRoX2NtZCh2b2lkKQoreworCUZJTEUJ CSAgICpmcDsKKwljaGFyCQkgICAqY29tbWFuZDsKKwljaGFyCQkgICAqbGluZTsKKwljaGFyCQkg ICAqdG9rZW47CisJY2hhcgkJICAgKnNhdmVwdHI7CisJaW50CQkJCW5vZGVfaWQ7CisJZG91Ymxl CQkJZGVsYXlfbXM7CisJdWludDY0CQkJZGVsYXk7CisJaW50CQkJCXRva2VuX2NvdW50ID0gMDsK KwlCYWNrZW5kSW5mbwkgICAqYmtpbmZvOworCUVycm9yQ29udGV4dENhbGxiYWNrIGNhbGxiYWNr OworCisJaWYgKE5VTV9CQUNLRU5EUyA8PSAxKQorCXsKKwkJLyogSWYgdGhlcmUncyBvbmx5IG9u ZSBub2RlLCB0aGVyZSdzIG5vIHBvaW50IHRvIGRvIGNoZWNraW5nICovCisJCXJldHVybjsKKwl9 CisKKwlpZiAoUkVBTF9QUklNQVJZX05PREVfSUQgPCAwKQorCXsKKwkJLyogTm8gbmVlZCB0byBj aGVjayBpZiB0aGVyZSdzIG5vIHByaW1hcnkgKi8KKwkJcmV0dXJuOworCX0KKworCWlmICghVkFM SURfQkFDS0VORChSRUFMX1BSSU1BUllfTk9ERV9JRCkpCisJeworCQkvKiBObyBuZWVkIHRvIGNo ZWNrIHJlcGxpY2F0aW9uIGRlbGF5IGlmIHByaW1hcnkgaXMgZG93biAqLworCQlyZXR1cm47CisJ fQorCisJaWYgKCFwb29sX2NvbmZpZy0+cmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCB8fAor CQlzdHJsZW4ocG9vbF9jb25maWctPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQpID09IDAp CisJeworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycm1zZygicmVwbGljYXRpb25fZGVsYXlf c291cmNlIGlzIHNldCB0byAnY21kJyBidXQgcmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCBp cyBub3QgY29uZmlndXJlZCIpLAorCQkJCSBlcnJoaW50KCJTZXQgcmVwbGljYXRpb25fZGVsYXlf c291cmNlX2NtZCBvciBjaGFuZ2UgcmVwbGljYXRpb25fZGVsYXlfc291cmNlIHRvICdidWlsdGlu JyIpKSk7CisJCS8qIEZhbGwgYmFjayB0byBidWlsdGluIG1ldGhvZCAqLworCQljaGVja19yZXBs aWNhdGlvbl90aW1lX2xhZygpOworCQlyZXR1cm47CisJfQorCisJLyogQWxsb2NhdGUgYnVmZmVy IGZvciBjb21tYW5kIG91dHB1dCAqLworCWxpbmUgPSBwYWxsb2MoTUFYX0NNRF9PVVRQVVQpOwor CisJLyoKKwkgKiBSZWdpc3RlciBhIGVycm9yIGNvbnRleHQgY2FsbGJhY2sgdG8gdGhyb3cgcHJv cGVyIGNvbnRleHQgbWVzc2FnZQorCSAqLworCWNhbGxiYWNrLmNhbGxiYWNrID0gQ2hlY2tSZXBs aWNhdGlvblRpbWVMYWdFcnJvckNiOworCWNhbGxiYWNrLmFyZyA9IE5VTEw7CisJY2FsbGJhY2su cHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRfc3RhY2sgPSAm Y2FsbGJhY2s7CisKKwkvKiBFeGVjdXRlIGNvbW1hbmQgYXMgY3VycmVudCBwcm9jZXNzIHVzZXIg Ki8KKwkJUEdfVFJZKCk7CisJCXsKKwkJCWNvbnN0IGNoYXIgKmJhc2VfY29tbWFuZCA9IHBvb2xf Y29uZmlnLT5yZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kOworCisJCQkvKiBCdWlsZCBjb21t YW5kIHdpdGggb3JkZXJlZCBpbnN0YW5jZSBpZGVudGlmaWVycyBhcyBhcmd1bWVudHMgKi8KKwkJ CXNpemVfdCB0b3RhbF9sZW4gPSBzdHJsZW4oYmFzZV9jb21tYW5kKSArIDE7IC8qICsxIGZvciBO VUwgKi8KKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgTlVNX0JBQ0tFTkRTOyBpKyspCisJCQl7CisJ CQkJY2hhciAqaWRlbnQgPSBnZXRfaW5zdGFuY2VfaWRlbnRpZmllcl9mb3Jfbm9kZShpKTsKKwkJ CQljaGFyICpxID0gc2hlbGxfc2luZ2xlX3F1b3RlKGlkZW50KTsKKwkJCQl0b3RhbF9sZW4gKz0g MSAvKiBzcGFjZSAqLyArIHN0cmxlbihxKTsKKwkJCQlwZnJlZShpZGVudCk7CisJCQkJcGZyZWUo cSk7CisJCQl9CisKKwkJCWNvbW1hbmQgPSBwYWxsb2ModG90YWxfbGVuKTsKKwkJCWNvbW1hbmRb MF0gPSAnXDAnOworCQkJc3RybGNweShjb21tYW5kLCBiYXNlX2NvbW1hbmQsIHRvdGFsX2xlbik7 CisJCQlmb3IgKGludCBpID0gMDsgaSA8IE5VTV9CQUNLRU5EUzsgaSsrKQorCQkJeworCQkJCWNo YXIgKmlkZW50ID0gZ2V0X2luc3RhbmNlX2lkZW50aWZpZXJfZm9yX25vZGUoaSk7CisJCQkJY2hh ciAqcSA9IHNoZWxsX3NpbmdsZV9xdW90ZShpZGVudCk7CisJCQkJc3RybGNhdChjb21tYW5kLCAi ICIsIHRvdGFsX2xlbik7CisJCQkJc3RybGNhdChjb21tYW5kLCBxLCB0b3RhbF9sZW4pOworCQkJ CXBmcmVlKGlkZW50KTsKKwkJCQlwZnJlZShxKTsKKwkJCX0KKworCQkJZXJlcG9ydChERUJVRzEs CisJCQkJCShlcnJtc2coImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kOiAlcyIs IGNvbW1hbmQpKSk7CisKKwkJLyogU2V0IHVwIHRpbWVvdXQgZm9yIGNvbW1hbmQgZXhlY3V0aW9u ICovCisJCWNvbW1hbmRfdGltZW91dF9vY2N1cnJlZCA9IDA7CisJCXNpZ25hbChTSUdBTFJNLCBj b21tYW5kX3RpbWVvdXRfaGFuZGxlcik7CisJCWFsYXJtKHBvb2xfY29uZmlnLT5yZXBsaWNhdGlv bl9kZWxheV9zb3VyY2VfdGltZW91dCk7CisKKwkJZnAgPSBwb3Blbihjb21tYW5kLCAiciIpOwor CQlpZiAoZnAgPT0gTlVMTCkKKwkJeworCQkJYWxhcm0oMCk7IC8qIENhbmNlbCBhbGFybSAqLwor CQkJc2lnbmFsKFNJR0FMUk0sIFNJR19ERkwpOworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cm1zZygiZmFpbGVkIHRvIGV4ZWN1dGUgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZDogJXMiLCBj b21tYW5kKSwKKwkJCQkJIGVycmRldGFpbCgicG9wZW4gZmFpbGVkOiAlbSIpKSk7CisJCX0KKwor CQlpZiAoZmdldHMobGluZSwgTUFYX0NNRF9PVVRQVVQsIGZwKSA9PSBOVUxMKQorCQl7CisJCQlp bnQgcGNsb3NlX3Jlc3VsdCA9IHBjbG9zZShmcCk7CisJCQlmcCA9IE5VTEw7CisJCQlhbGFybSgw KTsgLyogQ2FuY2VsIGFsYXJtICovCisJCQlzaWduYWwoU0lHQUxSTSwgU0lHX0RGTCk7CisKKwkJ CWlmIChjb21tYW5kX3RpbWVvdXRfb2NjdXJyZWQpCisJCQl7CisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJtc2coInJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgdGltZWQgb3V0IGFmdGVy ICVkIHNlY29uZHM6ICVzIiwKKwkJCQkJCQkJcG9vbF9jb25maWctPnJlcGxpY2F0aW9uX2RlbGF5 X3NvdXJjZV90aW1lb3V0LCBjb21tYW5kKSwKKwkJCQkJCSBlcnJoaW50KCJDb25zaWRlciBpbmNy ZWFzaW5nIHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0IG9yIG9wdGltaXppbmcgdGhl IGNvbW1hbmQiKSkpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkoZXJybXNnKCJmYWlsZWQgdG8gcmVhZCBvdXRwdXQgZnJvbSByZXBsaWNhdGlvbiBkZWxh eSBjb21tYW5kOiAlcyIsIGNvbW1hbmQpLAorCQkJCQkJIGVycmRldGFpbCgiY29tbWFuZCBleGl0 IHN0YXR1czogJWQiLCBwY2xvc2VfcmVzdWx0KSkpOworCQkJfQorCQl9CisKKwkJYWxhcm0oMCk7 IC8qIENhbmNlbCBhbGFybSAqLworCQlzaWduYWwoU0lHQUxSTSwgU0lHX0RGTCk7CisKKwkJLyog Q2hlY2sgaWYgb3V0cHV0IHdhcyB0cnVuY2F0ZWQgKi8KKwkJaWYgKHN0cmxlbihsaW5lKSA9PSBN QVhfQ01EX09VVFBVVCAtIDEgJiYgbGluZVtNQVhfQ01EX09VVFBVVCAtIDJdICE9ICdcbicpCisJ CXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJKGVycm1zZygicmVwbGljYXRpb24gZGVsYXkg Y29tbWFuZCBvdXRwdXQgbWF5IGhhdmUgYmVlbiB0cnVuY2F0ZWQiKSkpOworCQl9CisKKwkJcGNs b3NlKGZwKTsKKwkJZnAgPSBOVUxMOworCisJCS8qIFBhcnNlIHRoZSBvdXRwdXQgZm9ybWF0ICIw IDIwIDEwIiB3aGVyZSBlYWNoIG51bWJlciBpcyBkZWxheSBpbiBtaWxsaXNlY29uZHMgZm9yIG5v ZGVzIDAsIDEsIDIgZXRjICovCisJCS8qIENvdW50IHRva2VucyBmaXJzdCBmb3IgdmFsaWRhdGlv biAqLworCQljaGFyICpsaW5lX2NvcHkgPSBwc3RyZHVwKGxpbmUpOworCQljaGFyICp0ZW1wX3Rv a2VuID0gc3RydG9rKGxpbmVfY29weSwgIiBcdFxuIik7CisJCXdoaWxlICh0ZW1wX3Rva2VuICE9 IE5VTEwpCisJCXsKKwkJCXRva2VuX2NvdW50Kys7CisJCQl0ZW1wX3Rva2VuID0gc3RydG9rKE5V TEwsICIgXHRcbiIpOworCQl9CisJCXBmcmVlKGxpbmVfY29weSk7CisKKwkJLyogTm93IHBhcnNl IHRoZSBhY3R1YWwgdG9rZW5zICovCisJCXRva2VuID0gc3RydG9rX3IobGluZSwgIiBcdFxuIiwg JnNhdmVwdHIpOworCQlub2RlX2lkID0gMDsKKworCQlpZiAodG9rZW5fY291bnQgIT0gTlVNX0JB Q0tFTkRTKQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCShlcnJtc2coInJlcGxpY2F0 aW9uIGRlbGF5IGNvbW1hbmQgcmV0dXJuZWQgJWQgdmFsdWVzLCBleHBlY3RlZCAlZCIsCisJCQkJ CQkJdG9rZW5fY291bnQsIE5VTV9CQUNLRU5EUyksCisJCQkJCSBlcnJoaW50KCJDb21tYW5kIHNo b3VsZCBvdXRwdXQgb25lIGRlbGF5IHZhbHVlIHBlciBiYWNrZW5kIG5vZGUiKSkpOworCQl9CisK KwkJd2hpbGUgKHRva2VuICE9IE5VTEwgJiYgbm9kZV9pZCA8IE5VTV9CQUNLRU5EUykKKwkJewor CQkJaWYgKCFWQUxJRF9CQUNLRU5EKG5vZGVfaWQpKQorCQkJeworCQkJCW5vZGVfaWQrKzsKKwkJ CQl0b2tlbiA9IHN0cnRva19yKE5VTEwsICIgXHRcbiIsICZzYXZlcHRyKTsKKwkJCQljb250aW51 ZTsKKwkJCX0KKworCQkJY2hhciAqZW5kcHRyOworCQkJZGVsYXlfbXMgPSBzdHJ0b2QodG9rZW4s ICZlbmRwdHIpOworCisJCQkvKiBWYWxpZGF0ZSB0aGUgY29udmVyc2lvbiAqLworCQkJaWYgKCpl bmRwdHIgIT0gJ1wwJykKKwkJCXsKKwkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQkoZXJybXNn KCJpbnZhbGlkIGRlbGF5IHZhbHVlICclcycgZm9yIG5vZGUgJWQsIHRyZWF0aW5nIGFzIDAiLAor CQkJCQkJCQl0b2tlbiwgbm9kZV9pZCkpKTsKKwkJCQlkZWxheV9tcyA9IDA7CisJCQl9CisKKwkJ CS8qIFZhbGlkYXRlIGRlbGF5IHZhbHVlIHJhbmdlICovCisJCQlpZiAoZGVsYXlfbXMgPCAwKQor CQkJeworCQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJCShlcnJtc2coIm5lZ2F0aXZlIGRlbGF5 IHZhbHVlICUuM2YgZm9yIG5vZGUgJWQsIHRyZWF0aW5nIGFzIDAiLAorCQkJCQkJCQlkZWxheV9t cywgbm9kZV9pZCkpKTsKKwkJCQlkZWxheV9tcyA9IDA7CisJCQl9CisJCQllbHNlIGlmIChkZWxh eV9tcyA+IE1BWF9SRUFTT05BQkxFX0RFTEFZX01TKQorCQkJeworCQkJCWVyZXBvcnQoV0FSTklO RywKKwkJCQkJCShlcnJtc2coImV4dHJlbWVseSBsYXJnZSBkZWxheSB2YWx1ZSAlLjNmIGZvciBu b2RlICVkIiwKKwkJCQkJCQkJZGVsYXlfbXMsIG5vZGVfaWQpKSk7CisJCQl9CisKKwkJCWJraW5m byA9IHBvb2xfZ2V0X25vZGVfaW5mbyhub2RlX2lkKTsKKworCQkJaWYgKFBSSU1BUllfTk9ERV9J RCA9PSBub2RlX2lkKQorCQkJeworCQkJCS8qIFByaW1hcnkgbm9kZSBzaG91bGQgYWx3YXlzIGhh dmUgMCBkZWxheSAqLworCQkJCWJraW5mby0+c3RhbmRieV9kZWxheSA9IDA7CisJCQkJaWYgKGRl bGF5X21zID4gMCkKKwkJCQl7CisJCQkJCWVyZXBvcnQoREVCVUcxLAorCQkJCQkJCShlcnJtc2co InByaW1hcnkgbm9kZSAlZCByZXBvcnRlZCBub24temVybyBkZWxheSAlLjNmLCBzZXR0aW5nIHRv IDAiLAorCQkJCQkJCQkJbm9kZV9pZCwgZGVsYXlfbXMpKSk7CisJCQkJfQorCQkJfQorCQkJZWxz ZQorCQkJeworCQkJCS8qIENvbnZlcnQgZGVsYXkgZnJvbSBtaWxsaXNlY29uZHMgdG8gbWljcm9z ZWNvbmRzIGZvciBpbnRlcm5hbCBzdG9yYWdlICovCisJCQkJZGVsYXkgPSAodWludDY0KShkZWxh eV9tcyAqIDEwMDApOworCQkJCWJraW5mby0+c3RhbmRieV9kZWxheSA9IGRlbGF5OworCQkJCWJr aW5mby0+c3RhbmRieV9kZWxheV9ieV90aW1lID0gdHJ1ZTsKKworCQkJCS8qIExvZyBkZWxheSBp ZiBuZWNlc3NhcnkgKi8KKwkJCQl1aW50NjQgZGVsYXlfdGhyZXNob2xkX2J5X3RpbWUgPSBwb29s X2NvbmZpZy0+ZGVsYXlfdGhyZXNob2xkX2J5X3RpbWUgKiAxMDAwOyAvKiB0aHJlc2hvbGQgaXMg aW4gbWlsbGlzZWNvbmRzLCBjb252ZXJ0IHRvIG1pY3Jvc2Vjb25kcyAqLworCisJCQkJaWYgKChw b29sX2NvbmZpZy0+bG9nX3N0YW5kYnlfZGVsYXkgPT0gTFNEX0FMV0FZUyAmJiBkZWxheV9tcyA+ IDApIHx8CisJCQkJCShwb29sX2NvbmZpZy0+bG9nX3N0YW5kYnlfZGVsYXkgPT0gTFNEX09WRVJf VEhSRVNIT0xEICYmCisJCQkJCSBia2luZm8tPnN0YW5kYnlfZGVsYXkgPiBkZWxheV90aHJlc2hv bGRfYnlfdGltZSkpCisJCQkJeworCQkJCQllcmVwb3J0KExPRywKKwkJCQkJCQkoZXJybXNnKCJS ZXBsaWNhdGlvbiBvZiBub2RlOiAlZCBpcyBiZWhpbmQgJS4zZiBzZWNvbmQocykgZnJvbSB0aGUg cHJpbWFyeSBzZXJ2ZXIgKG5vZGU6ICVkKSBbZXh0ZXJuYWwgY29tbWFuZF0iLAorCQkJCQkJCQkJ bm9kZV9pZCwgZGVsYXlfbXMgLyAxMDAwLCBQUklNQVJZX05PREVfSUQpKSk7CisJCQkJfQorCQkJ fQorCisJCQlub2RlX2lkKys7CisJCQl0b2tlbiA9IHN0cnRva19yKE5VTEwsICIgXHRcbiIsICZz YXZlcHRyKTsKKwkJfQorCisJfQorCVBHX0NBVENIKCk7CisJeworCQkvKiBDbGVhbnVwIGluIGNh c2Ugb2YgZXJyb3IgKi8KKwkJYWxhcm0oMCk7IC8qIENhbmNlbCBhbnkgcGVuZGluZyBhbGFybSAq LworCQlzaWduYWwoU0lHQUxSTSwgU0lHX0RGTCk7CisJCWlmIChmcCkKKwkJeworCQkJcGNsb3Nl KGZwKTsKKwkJCWZwID0gTlVMTDsKKwkJfQorCQlpZiAobGluZSkKKwkJCXBmcmVlKGxpbmUpOwor CQlpZiAoY29tbWFuZCkKKwkJCXBmcmVlKGNvbW1hbmQpOworCQllcnJvcl9jb250ZXh0X3N0YWNr ID0gY2FsbGJhY2sucHJldmlvdXM7CisJCVBHX1JFX1RIUk9XKCk7CisJfQorCVBHX0VORF9UUlko KTsKKworCS8qIE5vcm1hbCBjbGVhbnVwICovCisJaWYgKGxpbmUpCisJCXBmcmVlKGxpbmUpOwor CWlmIChjb21tYW5kKQorCQlwZnJlZShjb21tYW5kKTsKKworCWVycm9yX2NvbnRleHRfc3RhY2sg PSBjYWxsYmFjay5wcmV2aW91czsKK30KKworLyoKKyAqIHNoZWxsX3NpbmdsZV9xdW90ZQorICog IFJldHVybiBhIG5ld2x5IHBhbGxvYydkIHNoZWxsLXNhZmUgc2luZ2xlLXF1b3RlZCBzdHJpbmcg Zm9yIHNyYy4KKyAqICBBbnkgc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgaW4gc3JjIGFyZSBzYWZl bHkgZXNjYXBlZCB1c2luZyB0aGUKKyAqICBzdGFuZGFyZCBwYXR0ZXJuOiAnXCcnIChjbG9zZSwg YmFja3NsYXNoLXF1b3RlLCByZW9wZW4pLgorICovCitzdGF0aWMgY2hhciAqCitzaGVsbF9zaW5n bGVfcXVvdGUoY29uc3QgY2hhciAqc3JjKQoreworICAgIHNpemVfdCBsZW4gPSBzdHJsZW4oc3Jj KTsKKyAgICBzaXplX3Qgc3F1b3RlcyA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs ZW47IGkrKykKKyAgICAgICAgaWYgKHNyY1tpXSA9PSAnXCcnKQorICAgICAgICAgICAgc3F1b3Rl cysrOworCisgICAgLyogRWFjaCBzaW5nbGUgcXVvdGUgYmVjb21lcyA0IGNoYXJhY3RlcnM6ICdc Jycgd2hpY2ggYWRkcyArMyAqLworICAgIHNpemVfdCBvdXRfbGVuID0gMiArIGxlbiArIChzcXVv dGVzICogMykgKyAxOyAvKiBzdXJyb3VuZGluZyBxdW90ZXMgKyBOVUwgKi8KKyAgICBjaGFyICpv dXQgPSBwYWxsb2Mob3V0X2xlbik7CisgICAgY2hhciAqcCA9IG91dDsKKyAgICAqcCsrID0gJ1wn JzsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgIHsKKyAgICAgICAg aWYgKHNyY1tpXSA9PSAnXCcnKQorICAgICAgICB7CisgICAgICAgICAgICAqcCsrID0gJ1wnJzsg KnArKyA9ICdcXCc7ICpwKysgPSAnXCcnOyAqcCsrID0gJ1wnJzsKKyAgICAgICAgfQorICAgICAg ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgICpwKysgPSBzcmNbaV07CisgICAgICAgIH0K KyAgICB9CisgICAgKnArKyA9ICdcJyc7CisgICAgKnAgPSAnXDAnOworICAgIHJldHVybiBvdXQ7 Cit9CisKKy8qCisgKiBnZXRfaW5zdGFuY2VfaWRlbnRpZmllcl9mb3Jfbm9kZQorICogIEJ1aWxk IGFuIGlkZW50aWZpZXIgc3RyaW5nIGZvciBhIGJhY2tlbmQgbm9kZSBzdWl0YWJsZSBmb3IgcGFz c2luZworICogIHRvIGV4dGVybmFsIHNjcmlwdHMuIFByZWZlcmVuY2Ugb3JkZXI6CisgKiAgIC0g YmFja2VuZF9hcHBsaWNhdGlvbl9uYW1lIGlmIHByZXNlbnQKKyAqICAgLSAiPGhvc3RuYW1lPjo8 cG9ydD4iCisgKiAgIC0gIm5vZGU8aWQ+IgorICovCitzdGF0aWMgY2hhciAqCitnZXRfaW5zdGFu Y2VfaWRlbnRpZmllcl9mb3Jfbm9kZShpbnQgbm9kZV9pZCkKK3sKKyAgICBCYWNrZW5kSW5mbyAq YmkgPSBwb29sX2dldF9ub2RlX2luZm8obm9kZV9pZCk7CisgICAgLyogVXNlIGFwcGxpY2F0aW9u X25hbWUgaWYgYXZhaWxhYmxlICovCisgICAgaWYgKGJpICYmIGJpLT5iYWNrZW5kX2FwcGxpY2F0 aW9uX25hbWVbMF0gIT0gJ1wwJykKKyAgICB7CisgICAgICAgIHJldHVybiBwc3RyZHVwKGJpLT5i YWNrZW5kX2FwcGxpY2F0aW9uX25hbWUpOworICAgIH0KKworICAgIC8qIE90aGVyd2lzZSB1c2Ug aG9zdG5hbWU6cG9ydCBpZiBob3N0bmFtZSBpcyBzZXQgKi8KKyAgICBpZiAoYmkgJiYgYmktPmJh Y2tlbmRfaG9zdG5hbWVbMF0gIT0gJ1wwJyAmJiBiaS0+YmFja2VuZF9wb3J0ID4gMCkKKyAgICB7 CisgICAgICAgIHNpemVfdCBobGVuID0gc3RybGVuKGJpLT5iYWNrZW5kX2hvc3RuYW1lKTsKKyAg ICAgICAgLyogbWF4IHBvcnQgY2hhcnMgfjUsIHBsdXMgY29sb24gYW5kIE5VTCAqLworICAgICAg ICBzaXplX3Qgb3V0X2xlbiA9IGhsZW4gKyAxICsgNSArIDE7CisgICAgICAgIGNoYXIgKm91dCA9 IHBhbGxvYyhvdXRfbGVuKTsKKyAgICAgICAgc25wcmludGYob3V0LCBvdXRfbGVuLCAiJXM6JWQi LCBiaS0+YmFja2VuZF9ob3N0bmFtZSwgYmktPmJhY2tlbmRfcG9ydCk7CisgICAgICAgIHJldHVy biBvdXQ7CisgICAgfQorCisgICAgLyogRmFsbGJhY2sgdG8gbm9kZTxpZD4gKi8KKyAgICBjaGFy ICpvdXQgPSBwYWxsb2MoMTYpOworICAgIHNucHJpbnRmKG91dCwgMTYsICJub2RlJWQiLCBub2Rl X2lkKTsKKyAgICByZXR1cm4gb3V0OworfQorCiBzdGF0aWMgdm9pZAogQ2hlY2tSZXBsaWNhdGlv blRpbWVMYWdFcnJvckNiKHZvaWQgKmFyZykKIHsKLQllcnJjb250ZXh0KCJ3aGlsZSBjaGVja2lu ZyByZXBsaWNhdGlvbiB0aW1lIGxhZyIpOworICAgIGVycmNvbnRleHQoIndoaWxlIGNoZWNraW5n IHJlcGxpY2F0aW9uIHRpbWUgbGFnIik7CiB9CiAKIC8qCi0tIAoyLjUxLjAKCg== --000000000000160ba3063e471e38 Content-Type: application/octet-stream; name="0002-test-add-comprehensive-test-suite-for-external-repli.patch" Content-Disposition: attachment; filename="0002-test-add-comprehensive-test-suite-for-external-repli.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfaxxuae1 RnJvbSBhN2Y4MGFlNjk5Y2U4NWUyOTU4YzA2MGQwYjk2ODM5YjkyNjk2NTRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYWRhdiBTaGF0eiA8bmFkYXZAdGFpbG9yYnJhbmRzLmNvbT4K RGF0ZTogTW9uLCA4IFNlcCAyMDI1IDEwOjM0OjI1ICswMzAwClN1YmplY3Q6IFtQQVRDSCAyLzNd IHRlc3Q6IGFkZCBjb21wcmVoZW5zaXZlIHRlc3Qgc3VpdGUgZm9yIGV4dGVybmFsCiByZXBsaWNh dGlvbiBkZWxheQoKLSBBZGQgdGVzdCBzdWl0ZSBmb3IgZXh0ZXJuYWwgcmVwbGljYXRpb24gZGVs YXkgZmVhdHVyZQotIEluY2x1ZGUgcGFyc2luZywgdmFsaWRhdGlvbiwgYW5kIGludGVncmF0aW9u IHRlc3RzCi0gTW92ZSB0ZXN0cyB0byAwNDEuKiBudW1iZXJpbmcgZm9yIHByb3BlciBvcmRlcmlu ZwotIFVwZGF0ZSB0ZXN0IGRvY3VtZW50YXRpb24gYW5kIHNjcmlwdHMKLS0tCiBzcmMvc3RyZWFt aW5nX3JlcGxpY2F0aW9uL3Bvb2xfd29ya2VyX2NoaWxkLmMgfCAxMTMgKy0tLS0tCiAuLi4vMDQx LmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L1JFQURNRSAgICAgfCAgNDQgKysrCiAuLi4vMDQx LmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L3Rlc3Quc2ggICAgfCAzNTIgKysrKysrKysrKysr KysrKysrCiAuLi4vdGVzdF9wYXJzaW5nLnNoICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg NTUgKysrCiAuLi4vdGVzdF92YWxpZGF0aW9uLnNoICAgICAgICAgICAgICAgICAgICAgICAgfCAy ODYgKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgNzQzIGluc2VydGlvbnMoKyksIDEw NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzaW9uL3Rl c3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS9SRUFETUUKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9k ZWxheS90ZXN0LnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0 cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvdGVzdF9wYXJzaW5nLnNoCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGlj YXRpb25fZGVsYXkvdGVzdF92YWxpZGF0aW9uLnNoCgpkaWZmIC0tZ2l0IGEvc3JjL3N0cmVhbWlu Z19yZXBsaWNhdGlvbi9wb29sX3dvcmtlcl9jaGlsZC5jIGIvc3JjL3N0cmVhbWluZ19yZXBsaWNh dGlvbi9wb29sX3dvcmtlcl9jaGlsZC5jCmluZGV4IGQxOWJiMTc3My4uMjYwOTg5ZjI3IDEwMDY0 NAotLS0gYS9zcmMvc3RyZWFtaW5nX3JlcGxpY2F0aW9uL3Bvb2xfd29ya2VyX2NoaWxkLmMKKysr IGIvc3JjL3N0cmVhbWluZ19yZXBsaWNhdGlvbi9wb29sX3dvcmtlcl9jaGlsZC5jCkBAIC03Nyw4 ICs3Nyw2IEBAIHN0YXRpYyB2b2lkIGVzdGFibGlzaF9wZXJzaXN0ZW50X2Nvbm5lY3Rpb24odm9p ZCk7CiBzdGF0aWMgdm9pZCBkaXNjYXJkX3BlcnNpc3RlbnRfY29ubmVjdGlvbih2b2lkKTsKIHN0 YXRpYyB2b2lkIGNoZWNrX3JlcGxpY2F0aW9uX3RpbWVfbGFnKHZvaWQpOwogc3RhdGljIHZvaWQg Y2hlY2tfcmVwbGljYXRpb25fdGltZV9sYWdfd2l0aF9jbWQodm9pZCk7Ci1zdGF0aWMgY2hhciAq c2hlbGxfc2luZ2xlX3F1b3RlKGNvbnN0IGNoYXIgKnNyYyk7Ci1zdGF0aWMgY2hhciAqZ2V0X2lu c3RhbmNlX2lkZW50aWZpZXJfZm9yX25vZGUoaW50IG5vZGVfaWQpOwogc3RhdGljIHZvaWQgQ2hl Y2tSZXBsaWNhdGlvblRpbWVMYWdFcnJvckNiKHZvaWQgKmFyZyk7CiBzdGF0aWMgdW5zaWduZWQg bG9uZyBsb25nIGludCB0ZXh0X3RvX2xzbihjaGFyICp0ZXh0KTsKIHN0YXRpYyBSRVRTSUdUWVBF IG15X3NpZ25hbF9oYW5kbGVyKGludCBzaWcpOwpAQCAtNzQxLDM2ICs3MzksMTIgQEAgY2hlY2tf cmVwbGljYXRpb25fdGltZV9sYWdfd2l0aF9jbWQodm9pZCkKIAllcnJvcl9jb250ZXh0X3N0YWNr ID0gJmNhbGxiYWNrOwogCiAJLyogRXhlY3V0ZSBjb21tYW5kIGFzIGN1cnJlbnQgcHJvY2VzcyB1 c2VyICovCi0JCVBHX1RSWSgpOwotCQl7Ci0JCQljb25zdCBjaGFyICpiYXNlX2NvbW1hbmQgPSBw b29sX2NvbmZpZy0+cmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZDsKKwlQR19UUlkoKTsKKwl7 CisJCWNvbW1hbmQgPSBwb29sX2NvbmZpZy0+cmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZDsK IAotCQkJLyogQnVpbGQgY29tbWFuZCB3aXRoIG9yZGVyZWQgaW5zdGFuY2UgaWRlbnRpZmllcnMg YXMgYXJndW1lbnRzICovCi0JCQlzaXplX3QgdG90YWxfbGVuID0gc3RybGVuKGJhc2VfY29tbWFu ZCkgKyAxOyAvKiArMSBmb3IgTlVMICovCi0JCQlmb3IgKGludCBpID0gMDsgaSA8IE5VTV9CQUNL RU5EUzsgaSsrKQotCQkJewotCQkJCWNoYXIgKmlkZW50ID0gZ2V0X2luc3RhbmNlX2lkZW50aWZp ZXJfZm9yX25vZGUoaSk7Ci0JCQkJY2hhciAqcSA9IHNoZWxsX3NpbmdsZV9xdW90ZShpZGVudCk7 Ci0JCQkJdG90YWxfbGVuICs9IDEgLyogc3BhY2UgKi8gKyBzdHJsZW4ocSk7Ci0JCQkJcGZyZWUo aWRlbnQpOwotCQkJCXBmcmVlKHEpOwotCQkJfQotCi0JCQljb21tYW5kID0gcGFsbG9jKHRvdGFs X2xlbik7Ci0JCQljb21tYW5kWzBdID0gJ1wwJzsKLQkJCXN0cmxjcHkoY29tbWFuZCwgYmFzZV9j b21tYW5kLCB0b3RhbF9sZW4pOwotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fQkFDS0VORFM7 IGkrKykKLQkJCXsKLQkJCQljaGFyICppZGVudCA9IGdldF9pbnN0YW5jZV9pZGVudGlmaWVyX2Zv cl9ub2RlKGkpOwotCQkJCWNoYXIgKnEgPSBzaGVsbF9zaW5nbGVfcXVvdGUoaWRlbnQpOwotCQkJ CXN0cmxjYXQoY29tbWFuZCwgIiAiLCB0b3RhbF9sZW4pOwotCQkJCXN0cmxjYXQoY29tbWFuZCwg cSwgdG90YWxfbGVuKTsKLQkJCQlwZnJlZShpZGVudCk7Ci0JCQkJcGZyZWUocSk7Ci0JCQl9Ci0K LQkJCWVyZXBvcnQoREVCVUcxLAotCQkJCQkoZXJybXNnKCJleGVjdXRpbmcgcmVwbGljYXRpb24g ZGVsYXkgY29tbWFuZDogJXMiLCBjb21tYW5kKSkpOworCQllcmVwb3J0KERFQlVHMSwKKwkJCQko ZXJybXNnKCJleGVjdXRpbmcgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZDogJXMiLCBjb21tYW5k KSkpOwogCiAJCS8qIFNldCB1cCB0aW1lb3V0IGZvciBjb21tYW5kIGV4ZWN1dGlvbiAqLwogCQlj b21tYW5kX3RpbWVvdXRfb2NjdXJyZWQgPSAwOwpAQCAtOTMxLDggKzkwNSw2IEBAIGNoZWNrX3Jl cGxpY2F0aW9uX3RpbWVfbGFnX3dpdGhfY21kKHZvaWQpCiAJCX0KIAkJaWYgKGxpbmUpCiAJCQlw ZnJlZShsaW5lKTsKLQkJaWYgKGNvbW1hbmQpCi0JCQlwZnJlZShjb21tYW5kKTsKIAkJZXJyb3Jf Y29udGV4dF9zdGFjayA9IGNhbGxiYWNrLnByZXZpb3VzOwogCQlQR19SRV9USFJPVygpOwogCX0K QEAgLTk0MSw4NyArOTEzLDE0IEBAIGNoZWNrX3JlcGxpY2F0aW9uX3RpbWVfbGFnX3dpdGhfY21k KHZvaWQpCiAJLyogTm9ybWFsIGNsZWFudXAgKi8KIAlpZiAobGluZSkKIAkJcGZyZWUobGluZSk7 Ci0JaWYgKGNvbW1hbmQpCi0JCXBmcmVlKGNvbW1hbmQpOwogCiAJZXJyb3JfY29udGV4dF9zdGFj ayA9IGNhbGxiYWNrLnByZXZpb3VzOwogfQogCi0vKgotICogc2hlbGxfc2luZ2xlX3F1b3RlCi0g KiAgUmV0dXJuIGEgbmV3bHkgcGFsbG9jJ2Qgc2hlbGwtc2FmZSBzaW5nbGUtcXVvdGVkIHN0cmlu ZyBmb3Igc3JjLgotICogIEFueSBzaW5nbGUgcXVvdGUgY2hhcmFjdGVycyBpbiBzcmMgYXJlIHNh ZmVseSBlc2NhcGVkIHVzaW5nIHRoZQotICogIHN0YW5kYXJkIHBhdHRlcm46ICdcJycgKGNsb3Nl LCBiYWNrc2xhc2gtcXVvdGUsIHJlb3BlbikuCi0gKi8KLXN0YXRpYyBjaGFyICoKLXNoZWxsX3Np bmdsZV9xdW90ZShjb25zdCBjaGFyICpzcmMpCi17Ci0gICAgc2l6ZV90IGxlbiA9IHN0cmxlbihz cmMpOwotICAgIHNpemVfdCBzcXVvdGVzID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8 IGxlbjsgaSsrKQotICAgICAgICBpZiAoc3JjW2ldID09ICdcJycpCi0gICAgICAgICAgICBzcXVv dGVzKys7Ci0KLSAgICAvKiBFYWNoIHNpbmdsZSBxdW90ZSBiZWNvbWVzIDQgY2hhcmFjdGVyczog J1wnJyB3aGljaCBhZGRzICszICovCi0gICAgc2l6ZV90IG91dF9sZW4gPSAyICsgbGVuICsgKHNx dW90ZXMgKiAzKSArIDE7IC8qIHN1cnJvdW5kaW5nIHF1b3RlcyArIE5VTCAqLwotICAgIGNoYXIg Km91dCA9IHBhbGxvYyhvdXRfbGVuKTsKLSAgICBjaGFyICpwID0gb3V0OwotICAgICpwKysgPSAn XCcnOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuOyBpKyspCi0gICAgewotICAgICAg ICBpZiAoc3JjW2ldID09ICdcJycpCi0gICAgICAgIHsKLSAgICAgICAgICAgICpwKysgPSAnXCcn OyAqcCsrID0gJ1xcJzsgKnArKyA9ICdcJyc7ICpwKysgPSAnXCcnOwotICAgICAgICB9Ci0gICAg ICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgKnArKyA9IHNyY1tpXTsKLSAgICAgICAg fQotICAgIH0KLSAgICAqcCsrID0gJ1wnJzsKLSAgICAqcCA9ICdcMCc7Ci0gICAgcmV0dXJuIG91 dDsKLX0KLQotLyoKLSAqIGdldF9pbnN0YW5jZV9pZGVudGlmaWVyX2Zvcl9ub2RlCi0gKiAgQnVp bGQgYW4gaWRlbnRpZmllciBzdHJpbmcgZm9yIGEgYmFja2VuZCBub2RlIHN1aXRhYmxlIGZvciBw YXNzaW5nCi0gKiAgdG8gZXh0ZXJuYWwgc2NyaXB0cy4gUHJlZmVyZW5jZSBvcmRlcjoKLSAqICAg LSBiYWNrZW5kX2FwcGxpY2F0aW9uX25hbWUgaWYgcHJlc2VudAotICogICAtICI8aG9zdG5hbWU+ Ojxwb3J0PiIKLSAqICAgLSAibm9kZTxpZD4iCi0gKi8KLXN0YXRpYyBjaGFyICoKLWdldF9pbnN0 YW5jZV9pZGVudGlmaWVyX2Zvcl9ub2RlKGludCBub2RlX2lkKQotewotICAgIEJhY2tlbmRJbmZv ICpiaSA9IHBvb2xfZ2V0X25vZGVfaW5mbyhub2RlX2lkKTsKLSAgICAvKiBVc2UgYXBwbGljYXRp b25fbmFtZSBpZiBhdmFpbGFibGUgKi8KLSAgICBpZiAoYmkgJiYgYmktPmJhY2tlbmRfYXBwbGlj YXRpb25fbmFtZVswXSAhPSAnXDAnKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHBzdHJkdXAoYmkt PmJhY2tlbmRfYXBwbGljYXRpb25fbmFtZSk7Ci0gICAgfQotCi0gICAgLyogT3RoZXJ3aXNlIHVz ZSBob3N0bmFtZTpwb3J0IGlmIGhvc3RuYW1lIGlzIHNldCAqLwotICAgIGlmIChiaSAmJiBiaS0+ YmFja2VuZF9ob3N0bmFtZVswXSAhPSAnXDAnICYmIGJpLT5iYWNrZW5kX3BvcnQgPiAwKQotICAg IHsKLSAgICAgICAgc2l6ZV90IGhsZW4gPSBzdHJsZW4oYmktPmJhY2tlbmRfaG9zdG5hbWUpOwot ICAgICAgICAvKiBtYXggcG9ydCBjaGFycyB+NSwgcGx1cyBjb2xvbiBhbmQgTlVMICovCi0gICAg ICAgIHNpemVfdCBvdXRfbGVuID0gaGxlbiArIDEgKyA1ICsgMTsKLSAgICAgICAgY2hhciAqb3V0 ID0gcGFsbG9jKG91dF9sZW4pOwotICAgICAgICBzbnByaW50ZihvdXQsIG91dF9sZW4sICIlczol ZCIsIGJpLT5iYWNrZW5kX2hvc3RuYW1lLCBiaS0+YmFja2VuZF9wb3J0KTsKLSAgICAgICAgcmV0 dXJuIG91dDsKLSAgICB9Ci0KLSAgICAvKiBGYWxsYmFjayB0byBub2RlPGlkPiAqLwotICAgIGNo YXIgKm91dCA9IHBhbGxvYygxNik7Ci0gICAgc25wcmludGYob3V0LCAxNiwgIm5vZGUlZCIsIG5v ZGVfaWQpOwotICAgIHJldHVybiBvdXQ7Ci19Ci0KIHN0YXRpYyB2b2lkCiBDaGVja1JlcGxpY2F0 aW9uVGltZUxhZ0Vycm9yQ2Iodm9pZCAqYXJnKQogewotICAgIGVycmNvbnRleHQoIndoaWxlIGNo ZWNraW5nIHJlcGxpY2F0aW9uIHRpbWUgbGFnIik7CisJZXJyY29udGV4dCgid2hpbGUgY2hlY2tp bmcgcmVwbGljYXRpb24gdGltZSBsYWciKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L1JFQURNRSBi L3NyYy90ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5 L1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjIzNzU5N2U3Mwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFs X3JlcGxpY2F0aW9uX2RlbGF5L1JFQURNRQpAQCAtMCwwICsxLDQ0IEBACitFeHRlcm5hbCBSZXBs aWNhdGlvbiBEZWxheSBDb21tYW5kIFRlc3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKworVGhpcyB0ZXN0IHZlcmlmaWVzIHRoZSBleHRlcm5hbCBjb21tYW5kIHJl cGxpY2F0aW9uIGRlbGF5IHNvdXJjZSBmZWF0dXJlLgorCitUZXN0IENvdmVyYWdlOgorLSBCYXNp YyBleHRlcm5hbCBjb21tYW5kIGV4ZWN1dGlvbiB3aXRoIGludGVnZXIgbWlsbGlzZWNvbmQgdmFs dWVzCistIEZsb2F0aW5nLXBvaW50IG1pbGxpc2Vjb25kIHZhbHVlIHBhcnNpbmcKKy0gRGVsYXkg dGhyZXNob2xkIGZ1bmN0aW9uYWxpdHkgd2l0aCBleHRlcm5hbCBjb21tYW5kcworLSBDb21tYW5k IGV4ZWN1dGlvbiBhcyBwZ3Bvb2wgcHJvY2VzcyB1c2VyIChubyBzdSB3cmFwcGVyKQorLSBFcnJv ciBoYW5kbGluZyBmb3IgbWlzc2luZy9pbnZhbGlkIGNvbW1hbmRzCistIENvbW1hbmQgZXhlY3V0 aW9uIGZhaWx1cmUgc2NlbmFyaW9zCistIENvbW1hbmQgdGltZW91dCBoYW5kbGluZyB3aXRoIGNv bmZpZ3VyYWJsZSB0aW1lb3V0IHZhbHVlcworLSBJbnB1dCB2YWxpZGF0aW9uIGZvciBpbnZhbGlk LCBuZWdhdGl2ZSwgYW5kIGV4dHJlbWVseSBsYXJnZSBkZWxheSB2YWx1ZXMKKy0gSGFuZGxpbmcg b2Ygd3JvbmcgbnVtYmVyIG9mIG91dHB1dCB2YWx1ZXMKKy0gUHJpbWFyeSBub2RlIGRlbGF5IGNv cnJlY3Rpb24KKy0gT3V0cHV0IHRydW5jYXRpb24gZGV0ZWN0aW9uCistIFRpbWVvdXQgYmVoYXZp b3Igd2l0aCBib3RoIHNob3J0IGFuZCBsb25nIHRpbWVvdXQgdmFsdWVzCisKK0ZpbGVzOgorLSB0 ZXN0LnNoOiBNYWluIHRlc3Qgc2NyaXB0CistIHRlc3RfcGFyc2luZy5zaDogVW5pdCB0ZXN0IGZv ciBwYXJzaW5nIGxvZ2ljCistIHRlc3RfdmFsaWRhdGlvbi5zaDogVmFsaWRhdGlvbiBhbmQgZWRn ZSBjYXNlIHRlc3RpbmcKKy0gUkVBRE1FOiBUaGlzIGRvY3VtZW50YXRpb24KKworVGhlIHRlc3Qg Y3JlYXRlcyB0ZW1wb3JhcnkgY29tbWFuZCBzY3JpcHRzIHRoYXQgb3V0cHV0IGRlbGF5IHZhbHVl cyBpbiB0aGUgZm9ybWF0OgorIm5vZGUwX2RlbGF5IG5vZGUxX2RlbGF5IG5vZGUyX2RlbGF5Igor CitXaGVyZSBkZWxheXMgYXJlIGluIG1pbGxpc2Vjb25kcyBhbmQgY2FuIGJlIGludGVnZXIgb3Ig ZmxvYXRpbmctcG9pbnQgdmFsdWVzLgorCitUZXN0IEVudmlyb25tZW50OgorLSBVc2VzIHN0cmVh bWluZyByZXBsaWNhdGlvbiBtb2RlIHdpdGggMyBub2RlcworLSBDb25maWd1cmVzIHNyX2NoZWNr X3BlcmlvZCA9IDEgc2Vjb25kIGZvciBmYXN0ZXIgdGVzdGluZworLSBUZXN0cyB2YXJpb3VzIGRl bGF5IHNjZW5hcmlvcyBhbmQgdGhyZXNob2xkIGJlaGF2aW9ycworCitFeHBlY3RlZCBCZWhhdmlv cjoKKy0gRXh0ZXJuYWwgY29tbWFuZHMgc2hvdWxkIGJlIGV4ZWN1dGVkIGFzIGNvbmZpZ3VyZWQK Ky0gRGVsYXkgdmFsdWVzIHNob3VsZCBiZSBwYXJzZWQgY29ycmVjdGx5IChib3RoIGludCBhbmQg ZmxvYXQpCistIFRocmVzaG9sZCBjb21wYXJpc29ucyBzaG91bGQgd29yayBwcm9wZXJseQorLSBF cnJvciBjb25kaXRpb25zIHNob3VsZCBiZSBoYW5kbGVkIGdyYWNlZnVsbHkKKy0gQ29tbWFuZHMg c2hvdWxkIHRpbWVvdXQgYXBwcm9wcmlhdGVseSBiYXNlZCBvbiBjb25maWd1cmF0aW9uCistIFRp bWVvdXQgZXJyb3JzIHNob3VsZCBwcm92aWRlIGhlbHBmdWwgbWVzc2FnZXMgYW5kIGhpbnRzCist IFRlc3RzIHNob3VsZCBiZSByZWxpYWJsZSB3aXRoIHByb3BlciB3YWl0IG1lY2hhbmlzbXMgaW5z dGVhZCBvZiBmaXhlZCBzbGVlcHMKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzc2lvbi90 ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvdGVzdC5zaCBiL3NyYy90ZXN0L3Jl Z3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L3Rlc3Quc2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi41ZGMwMTA0OTQKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlv bl9kZWxheS90ZXN0LnNoCkBAIC0wLDAgKzEsMzUyIEBACisjIS91c3IvYmluL2VudiBiYXNoCisj LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIyB0ZXN0IHNjcmlwdCBmb3IgZXh0ZXJuYWwgY29tbWFuZCByZXBsaWNhdGlv biBkZWxheSBzb3VyY2UKKyMKK3NvdXJjZSAkVEVTVExJQlMKK1RFU1RESVI9dGVzdGRpcgorUEdf Q1RMPSRQR0JJTi9wZ19jdGwKK1BTUUw9IiRQR0JJTi9wc3FsIC1YICIKKworcm0gLWZyICRURVNU RElSCitta2RpciAkVEVTVERJUgorY2QgJFRFU1RESVIKKworIyBjcmVhdGUgdGVzdCBlbnZpcm9u bWVuCitlY2hvIC1uICJjcmVhdGluZyB0ZXN0IGVudmlyb25tZW50Li4uIgorJFBHUE9PTF9TRVRV UCAtbSBzIC1uIDMgfHwgZXhpdCAxCitlY2hvICJkb25lLiIKK3NvdXJjZSAuL2Jhc2hyYy5wb3J0 cworZXhwb3J0IFBHUE9SVD0kUEdQT09MX1BPUlQKKworIyBDcmVhdGUgZXh0ZXJuYWwgY29tbWFu ZCBzY3JpcHRzIGZvciB0ZXN0aW5nCitjYXQgPiBkZWxheV9jbWRfc3RhdGljLnNoIDw8ICdFT0Yn CisjIS9iaW4vYmFzaAorIyBTdGF0aWMgZGVsYXkgdmFsdWVzOiBub2RlMD0wbXMsIG5vZGUxPTI1 bXMsIG5vZGUyPTUwbXMKK2VjaG8gIjAgMjUgNTAiCitFT0YKK2NobW9kICt4IGRlbGF5X2NtZF9z dGF0aWMuc2gKKworY2F0ID4gZGVsYXlfY21kX2Zsb2F0LnNoIDw8ICdFT0YnCisjIS9iaW4vYmFz aAorIyBGbG9hdCBkZWxheSB2YWx1ZXM6IG5vZGUwPTBtcywgbm9kZTE9MjUuNW1zLCBub2RlMj0x MDAuNzVtcworZWNobyAiMCAyNS41IDEwMC43NSIKK0VPRgorY2htb2QgK3ggZGVsYXlfY21kX2Zs b2F0LnNoCisKK2NhdCA+IGRlbGF5X2NtZF9oaWdoLnNoIDw8ICdFT0YnCisjIS9iaW4vYmFzaAor IyBIaWdoIGRlbGF5IHZhbHVlcyB0byB0ZXN0IHRocmVzaG9sZDogbm9kZTA9MG1zLCBub2RlMT0y MDAwbXMsIG5vZGUyPTMwMDBtcworZWNobyAiMCAyMDAwIDMwMDAiCitFT0YKK2NobW9kICt4IGRl bGF5X2NtZF9oaWdoLnNoCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNo byA9PT0gVGVzdDA6IEV4dGVybmFsIGNvbW1hbmQgcmVjZWl2ZXMgb3JkZXJlZCBpbnN0YW5jZSBp ZGVudGlmaWVycyA9PT0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb21t YW5kIHRoYXQgY2FwdHVyZXMgaXRzIGFyZ3VtZW50cyBhbmQgb3V0cHV0cyB2YWxpZCBkZWxheXMK K2NhdCA+IGRlbGF5X2NtZF9hcmdzLnNoIDw8ICdFT0YnCisjIS9iaW4vYmFzaAorcHJpbnRmICIl cyAiICIkQCIgPiBhcmdzLnR4dAorZWNobyAiMCAyNSA1MCIKK0VPRgorY2htb2QgK3ggZGVsYXlf Y21kX2FyZ3Muc2gKKworZWNobyAicmVwbGljYXRpb25fZGVsYXlfc291cmNlID0gJ2NtZCciID4+ IGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAicmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCA9ICcu L2RlbGF5X2NtZF9hcmdzLnNoJyIgPj4gZXRjL3BncG9vbC5jb25mCitlY2hvICJzcl9jaGVja19w ZXJpb2QgPSAxIiA+PiBldGMvcGdwb29sLmNvbmYKK2VjaG8gImxvZ19taW5fbWVzc2FnZXMgPSAn REVCVUcxJyIgPj4gZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9v bF9zdGFydHVwCisKK2VjaG8gIldhaXRpbmcgZm9yIHNyX2NoZWNrIHRvIHBhc3MgYXJncy4uLiIK K2ZvciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgWyAtZiBhcmdzLnR4dCBdOyB0aGVuCisgICAg ICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKK2lmIFsgISAtZiBhcmdzLnR4 dCBdOyB0aGVuCisgICAgZWNobyBmYWlsOiBkaWQgbm90IGNhcHR1cmUgY29tbWFuZCBhcmd1bWVu dHMKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitBUkdTX0NPTlRFTlQ9JChj YXQgYXJncy50eHQgfCBzZWQgJ3MvW1s6c3BhY2U6XV0qJC8vJykKK2lmIFsgIiRBUkdTX0NPTlRF TlQiICE9ICJzZXJ2ZXIwIHNlcnZlcjEgc2VydmVyMiIgXTsgdGhlbgorICAgIGVjaG8gImZhaWw6 IHVuZXhwZWN0ZWQgY29tbWFuZCBhcmd1bWVudHM6ICckQVJHU19DT05URU5UJyIKKyAgICAuL3No dXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBhcmd1bWVudCBvcmRlciBhbmQg dmFsdWVzIGFyZSBjb3JyZWN0CisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorZWNobyA9PT0gVGVzdDE6IEJhc2ljIGV4dGVybmFsIGNvbW1hbmQgd2l0 aCBpbnRlZ2VyIG1pbGxpc2Vjb25kIHZhbHVlcyA9PT0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorZWNobyAicmVwbGljYXRpb25fZGVsYXlfc291cmNlID0gJ2NtZCciID4+IGV0 Yy9wZ3Bvb2wuY29uZgorZWNobyAicmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCA9ICcuL2Rl bGF5X2NtZF9zdGF0aWMuc2gnIiA+PiBldGMvcGdwb29sLmNvbmYKK2VjaG8gInNyX2NoZWNrX3Bl cmlvZCA9IDEiID4+IGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAibG9nX3N0YW5kYnlfZGVsYXkgPSAn YWx3YXlzJyIgPj4gZXRjL3BncG9vbC5jb25mCitlY2hvICJsb2dfbWluX21lc3NhZ2VzID0gJ0RF QlVHMSciID4+IGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xf c3RhcnR1cAorCiskUFNRTCB0ZXN0IDw8RU9GCitDUkVBVEUgVEFCTEUgdDEoaSBJTlRFR0VSKTsK K0VPRgorCisjIFdhaXQgZm9yIHNyX2NoZWNrIHRvIHJ1biBhbmQgcG9wdWxhdGUgZGVsYXkgdmFs dWVzCisjIHNyX2NoZWNrX3BlcmlvZCBpcyAxIHNlY29uZCwgc28gd2FpdCBhIGJpdCBsb25nZXIg dG8gZW5zdXJlIGl0IHJ1bnMKK2VjaG8gIldhaXRpbmcgZm9yIHNyX2NoZWNrIHRvIHJ1bi4uLiIK K2ZvciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgZ3JlcCAtcSAiZXhlY3V0aW5nIHJlcGxpY2F0 aW9uIGRlbGF5IGNvbW1hbmQiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAg ICAgIGVjaG8gIkNvbW1hbmQgZXhlY3V0ZWQgYWZ0ZXIgJHtpfSBzZWNvbmRzIgorICAgICAgICBi cmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCiskUFNRTCB0ZXN0IDw8RU9GCitTSE9X IFBPT0xfTk9ERVM7CitFT0YKKworIyBDaGVjayB0aGF0IGRlbGF5IHZhbHVlcyBhcmUgcG9wdWxh dGVkIGluIHRoZSBsb2cKK2dyZXAgImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5k IiBsb2cvcGdwb29sLmxvZyA+L2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gIT0gMCBdO3RoZW4KKyAg ICBlY2hvIGZhaWw6IGV4dGVybmFsIGNvbW1hbmQgd2FzIG5vdCBleGVjdXRlZAorICAgIGVjaG8g IkxvZyBjb250ZW50czoiCisgICAgdGFpbCAtMjAgbG9nL3BncG9vbC5sb2cKKyAgICAuL3NodXRk b3duYWxsCisgICAgZXhpdCAxCitmaQorCisjIFZlcmlmeSBhY3R1YWwgZGVsYXkgdmFsdWVzIHdl cmUgcGFyc2VkCitpZiAhICRQU1FMIC10IC1jICJTSE9XIFBPT0xfTk9ERVMiIHRlc3QgfCBncmVw IC1FICJbMC05XStcLlswLTldKyIgPi9kZXYvbnVsbDsgdGhlbgorICAgIGVjaG8gIldhcm5pbmc6 IE5vIGRlbGF5IHZhbHVlcyBmb3VuZCBpbiBQT09MX05PREVTIG91dHB1dCIKK2ZpCisKKyMgQ2hl Y2sgZm9yIGRlbGF5IGxvZyBtZXNzYWdlcworZ3JlcCAiUmVwbGljYXRpb24gb2Ygbm9kZS4qZXh0 ZXJuYWwgY29tbWFuZCIgbG9nL3BncG9vbC5sb2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9 IDAgXTt0aGVuCisgICAgZWNobyBmYWlsOiBleHRlcm5hbCBjb21tYW5kIGRlbGF5IGxvZ2dpbmcg bm90IGZvdW5kCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKworZWNobyBvazog YmFzaWMgZXh0ZXJuYWwgY29tbWFuZCB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0ZG93bmFsbAorCisj IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gPT09IFRlc3QyOiBFeHRlcm5h bCBjb21tYW5kIHdpdGggZmxvYXRpbmctcG9pbnQgbWlsbGlzZWNvbmQgdmFsdWVzID09PQorIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFVwZGF0ZSBjb25maWd1cmF0aW9uIHRv IHVzZSBmbG9hdCBjb21tYW5kCitzZWQgLWkuYmFrICJzfGRlbGF5X2NtZF9zdGF0aWMuc2h8ZGVs YXlfY21kX2Zsb2F0LnNofCIgZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9y X3BncG9vbF9zdGFydHVwCisKKyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcnVuIHdpdGggZmxvYXQg dmFsdWVzCitlY2hvICJXYWl0aW5nIGZvciBzcl9jaGVjayB3aXRoIGZsb2F0IHZhbHVlcy4uLiIK K2ZvciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgZ3JlcCAtcSAiZXhlY3V0aW5nIHJlcGxpY2F0 aW9uIGRlbGF5IGNvbW1hbmQuKmRlbGF5X2NtZF9mbG9hdC5zaCIgbG9nL3BncG9vbC5sb2cgMj4v ZGV2L251bGw7IHRoZW4KKyAgICAgICAgZWNobyAiRmxvYXQgY29tbWFuZCBleGVjdXRlZCBhZnRl ciAke2l9IHNlY29uZHMiCisgICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25l CisKKyRQU1FMIHRlc3QgPDxFT0YKK1NIT1cgUE9PTF9OT0RFUzsKK0VPRgorCisjIENoZWNrIHRo YXQgZmxvYXQgdmFsdWVzIGFyZSBoYW5kbGVkIGNvcnJlY3RseQorZ3JlcCAiZXhlY3V0aW5nIHJl cGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQuKmRlbGF5X2NtZF9mbG9hdC5zaCIgbG9nL3BncG9vbC5s b2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0aGVuCisgICAgZWNobyBmYWlsOiBm bG9hdCBjb21tYW5kIHdhcyBub3QgZXhlY3V0ZWQKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhp dCAxCitmaQorCitlY2hvIG9rOiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgdGVzdCBzdWNjZWVkZWQK Ky4vc2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hv ID09PSBUZXN0MzogRXh0ZXJuYWwgY29tbWFuZCB3aXRoIGRlbGF5IHRocmVzaG9sZCA9PT0KKyMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBVcGRhdGUgY29uZmlndXJhdGlvbiB0 byB1c2UgaGlnaCBkZWxheSBjb21tYW5kIGFuZCBzZXQgdGhyZXNob2xkCitzZWQgLWkuYmFrICJz fGRlbGF5X2NtZF9mbG9hdC5zaHxkZWxheV9jbWRfaGlnaC5zaHwiIGV0Yy9wZ3Bvb2wuY29uZgor ZWNobyAiZGVsYXlfdGhyZXNob2xkX2J5X3RpbWUgPSAxMDAwIiA+PiBldGMvcGdwb29sLmNvbmYK K2VjaG8gImJhY2tlbmRfd2VpZ2h0MCA9IDAiID4+IGV0Yy9wZ3Bvb2wuY29uZiAgIyBGb3JjZSBx dWVyaWVzIHRvIHN0YW5kYnkgbm9ybWFsbHkKK2VjaG8gImJhY2tlbmRfd2VpZ2h0MiA9IDAiID4+ IGV0Yy9wZ3Bvb2wuY29uZiAgIyBPbmx5IHVzZSBub2RlIDEgYXMgc3RhbmRieQorCisuL3N0YXJ0 YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHNyX2NoZWNrIHRvIHJ1 biBhbmQgZGV0ZWN0IGhpZ2ggZGVsYXlzCitlY2hvICJXYWl0aW5nIGZvciBzcl9jaGVjayB3aXRo IGhpZ2ggZGVsYXkgdmFsdWVzLi4uIgorZm9yIGkgaW4gezEuLjEwfTsgZG8KKyAgICBpZiBncmVw IC1xICJleGVjdXRpbmcgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZC4qZGVsYXlfY21kX2hpZ2gu c2giIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVjaG8gIkhpZ2gg ZGVsYXkgY29tbWFuZCBleGVjdXRlZCBhZnRlciAke2l9IHNlY29uZHMiCisgICAgICAgIGJyZWFr CisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyRQU1FMIHRlc3QgPDxFT0YKK1NFTEVDVCAq IEZST00gdDEgTElNSVQgMTsKK0VPRgorCisjIFdpdGggaGlnaCBkZWxheXMgKDIwMDBtcyA+IDEw MDBtcyB0aHJlc2hvbGQpLCBxdWVyeSBzaG91bGQgZ28gdG8gcHJpbWFyeSAobm9kZSAwKQorZ3Jl cCAiU0VMRUNUIFwqIEZST00gdDEgTElNSVQgMS4qREIgbm9kZSBpZDogMCIgbG9nL3BncG9vbC5s b2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0aGVuCisgICAgZWNobyBmYWlsOiBx dWVyeSB3YXMgbm90IHNlbnQgdG8gcHJpbWFyeSBub2RlIGRlc3BpdGUgaGlnaCBkZWxheQorICAg IC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IGRlbGF5IHRocmVzaG9s ZCB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0ZG93bmFsbAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK2VjaG8gPT09IFRlc3Q0OiBFeHRlcm5hbCBjb21tYW5kIGV4ZWN1dGlvbiBh cyBwcm9jZXNzIHVzZXIgPT09CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg VGVzdCB0aGF0IGNvbW1hbmQgcnVucyBhcyB0aGUgY3VycmVudCBwZ3Bvb2wgcHJvY2VzcyB1c2Vy CitzZWQgLWkuYmFrICJzfGRlbGF5X2NtZF9oaWdoLnNofGRlbGF5X2NtZF9zdGF0aWMuc2h8IiBl dGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKwor IyBXYWl0IGZvciBzcl9jaGVjayB0byBydW4KK2VjaG8gIldhaXRpbmcgZm9yIHNyX2NoZWNrIHRv IHJ1biBhcyBwcm9jZXNzIHVzZXIuLi4iCitmb3IgaSBpbiB7MS4uMTB9OyBkbworICAgIGlmIGdy ZXAgLXEgImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kLipkZWxheV9jbWRfc3Rh dGljLnNoIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBlY2hvICJD b21tYW5kIGV4ZWN1dGVkIGFzIHByb2Nlc3MgdXNlciBhZnRlciAke2l9IHNlY29uZHMiCisgICAg ICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyMgQ2hlY2sgdGhhdCBjb21t YW5kIHdhcyBleGVjdXRlZCAod2l0aG91dCBzdSB3cmFwcGVyKQorZ3JlcCAiZXhlY3V0aW5nIHJl cGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQuKmRlbGF5X2NtZF9zdGF0aWMuc2giIGxvZy9wZ3Bvb2wu bG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDog Y29tbWFuZCB3YXMgbm90IGV4ZWN1dGVkIGFzIHByb2Nlc3MgdXNlcgorICAgIC4vc2h1dGRvd25h bGwKKyAgICBleGl0IDEKK2ZpCisKKyMgVmVyaWZ5IG5vIHN1IGNvbW1hbmQgd2FzIHVzZWQKK2lm IGdyZXAgLXEgImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kLipzdS4qIiBsb2cv cGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgIGVjaG8gZmFpbDogY29tbWFuZCBzaG91 bGQgbm90IHVzZSBzdSB3cmFwcGVyCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkK KworZWNobyBvazogcHJvY2VzcyB1c2VyIGV4ZWN1dGlvbiB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0 ZG93bmFsbAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gPT09IFRl c3Q1OiBFcnJvciBoYW5kbGluZyAtIG1pc3NpbmcgY29tbWFuZCA9PT0KKyMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IGVycm9yIGhhbmRsaW5nIHdoZW4gY29tbWFuZCBp cyBub3QgY29uZmlndXJlZAorc2VkIC1pLmJhayAic3xyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2Vf Y21kID0gJy4vZGVsYXlfY21kX3N0YXRpYy5zaCd8cmVwbGljYXRpb25fZGVsYXlfc291cmNlX2Nt ZCA9ICcnfCIgZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9z dGFydHVwCisKKyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcnVuIHdpdGggbWlzc2luZyBjb21tYW5k CitlY2hvICJXYWl0aW5nIGZvciBzcl9jaGVjayB3aXRoIG1pc3NpbmcgY29tbWFuZC4uLiIKK2Zv ciBpIGluIHsxLi41fTsgZG8KKyAgICBpZiBncmVwIC1xICJyZXBsaWNhdGlvbl9kZWxheV9zb3Vy Y2VfY21kIGlzIG5vdCBjb25maWd1cmVkIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhl bgorICAgICAgICBlY2hvICJNaXNzaW5nIGNvbW1hbmQgZXJyb3IgZGV0ZWN0ZWQgYWZ0ZXIgJHtp fSBzZWNvbmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisj IENoZWNrIGZvciBlcnJvciBtZXNzYWdlIGFib3V0IG1pc3NpbmcgY29tbWFuZAorZ3JlcCAicmVw bGljYXRpb25fZGVsYXlfc291cmNlX2NtZCBpcyBub3QgY29uZmlndXJlZCIgbG9nL3BncG9vbC5s b2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0aGVuCisgICAgZWNobyBmYWlsOiBt aXNzaW5nIGNvbW1hbmQgZXJyb3Igbm90IGRldGVjdGVkCisgICAgLi9zaHV0ZG93bmFsbAorICAg IGV4aXQgMQorZmkKKworZWNobyBvazogZXJyb3IgaGFuZGxpbmcgdGVzdCBzdWNjZWVkZWQKKy4v c2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvID09 PSBUZXN0NjogRXJyb3IgaGFuZGxpbmcgLSBjb21tYW5kIGV4ZWN1dGlvbiBmYWlsdXJlID09PQor IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3QgZXJyb3IgaGFuZGxpbmcg d2hlbiBjb21tYW5kIGZhaWxzCitlY2hvICJyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kID0g Jy4vbm9uZXhpc3RlbnRfY29tbWFuZC5zaCciID4+IGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0 YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHNyX2NoZWNrIHRvIHJ1 biB3aXRoIGZhaWxpbmcgY29tbWFuZAorZWNobyAiV2FpdGluZyBmb3Igc3JfY2hlY2sgd2l0aCBm YWlsaW5nIGNvbW1hbmQuLi4iCitmb3IgaSBpbiB7MS4uNX07IGRvCisgICAgaWYgZ3JlcCAtcSAi ZmFpbGVkIHRvIGV4ZWN1dGUgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCIgbG9nL3BncG9vbC5s b2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgZWNobyAiQ29tbWFuZCBmYWlsdXJlIGRldGVj dGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAgYnJlYWsKKyAgICBmaQorICAgIHNsZWVw IDEKK2RvbmUKKworIyBDaGVjayBmb3IgZXJyb3IgbWVzc2FnZSBhYm91dCBjb21tYW5kIGV4ZWN1 dGlvbiBmYWlsdXJlCitncmVwICJmYWlsZWQgdG8gZXhlY3V0ZSByZXBsaWNhdGlvbiBkZWxheSBj b21tYW5kIiBsb2cvcGdwb29sLmxvZyA+L2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gIT0gMCBdO3Ro ZW4KKyAgICBlY2hvIGZhaWw6IGNvbW1hbmQgZXhlY3V0aW9uIGZhaWx1cmUgbm90IGRldGVjdGVk CisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKworZWNobyBvazogY29tbWFuZCBm YWlsdXJlIHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorZWNobyA9PT0gVGVzdDc6IENvbW1hbmQgdGltZW91dCBoYW5kbGlu ZyA9PT0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDcmVhdGUgYSBjb21t YW5kIHRoYXQgdGFrZXMgbG9uZ2VyIHRoYW4gdGhlIHRpbWVvdQorY2F0ID4gZGVsYXlfY21kX3Ns b3cuc2ggPDwgJ0VPRicKKyMhL2Jpbi9iYXNoCisjIFNsb3cgY29tbWFuZCB0aGF0IHRha2VzIDE1 IHNlY29uZHMgKGxvbmdlciB0aGFuIGRlZmF1bHQgMTBzIHRpbWVvdXQpCitzbGVlcCAxNQorZWNo byAiMCAyNSA1MCIKK0VPRgorY2htb2QgK3ggZGVsYXlfY21kX3Nsb3cuc2gKKworIyBTZXQgYSBz aG9ydCB0aW1lb3V0IGFuZCB1c2UgdGhlIHNsb3cgY29tbWFuZAorc2VkIC1pLmJhayAic3xyZXBs aWNhdGlvbl9kZWxheV9zb3VyY2VfY21kID0gJy4vbm9uZXhpc3RlbnRfY29tbWFuZC5zaCd8cmVw bGljYXRpb25fZGVsYXlfc291cmNlX2NtZCA9ICcuL2RlbGF5X2NtZF9zbG93LnNoJ3wiIGV0Yy9w Z3Bvb2wuY29uZgorZWNobyAicmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQgPSAzIiA+ PiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAK KworIyBXYWl0IGZvciBzcl9jaGVjayB0byBydW4gYW5kIHRpbWVvdQorZWNobyAiV2FpdGluZyBm b3IgY29tbWFuZCB0aW1lb3V0Li4uIgorZm9yIGkgaW4gezEuLjE1fTsgZG8KKyAgICBpZiBncmVw IC1xICJyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIHRpbWVkIG91dCIgbG9nL3BncG9vbC5sb2cg Mj4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgZWNobyAiQ29tbWFuZCB0aW1lb3V0IGRldGVjdGVk IGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAgYnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEK K2RvbmUKKworIyBDaGVjayBmb3IgdGltZW91dCBlcnJvciBtZXNzYWdlCitncmVwICJyZXBsaWNh dGlvbiBkZWxheSBjb21tYW5kIHRpbWVkIG91dCBhZnRlciAzIHNlY29uZHMiIGxvZy9wZ3Bvb2wu bG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDog Y29tbWFuZCB0aW1lb3V0IG5vdCBkZXRlY3RlZAorICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0 IDEKK2ZpCisKK2VjaG8gb2s6IGNvbW1hbmQgdGltZW91dCB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0 ZG93bmFsbAorCitlY2hvICJBbGwgZXh0ZXJuYWwgcmVwbGljYXRpb24gZGVsYXkgdGVzdHMgcGFz c2VkISIKK2V4aXQgMApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0cy8wNDEu ZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvdGVzdF9wYXJzaW5nLnNoIGIvc3JjL3Rlc3QvcmVn cmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvdGVzdF9wYXJzaW5n LnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZDAyNGNlNTU5Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVw bGljYXRpb25fZGVsYXkvdGVzdF9wYXJzaW5nLnNoCkBAIC0wLDAgKzEsNTUgQEAKKyMhL2Jpbi9i YXNoCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIyBVbml0IHRlc3QgZm9yIGV4dGVybmFsIGNvbW1hbmQgcGFyc2lu ZyBsb2dpYworIyBUaGlzIHRlc3RzIHRoZSBwYXJzaW5nIHdpdGhvdXQgbmVlZGluZyBhIGZ1bGwg cGdwb29sIHNldHVwCisjCisKK2VjaG8gIj09PSBUZXN0aW5nIGV4dGVybmFsIGNvbW1hbmQgb3V0 cHV0IHBhcnNpbmcgPT09IgorCisjIFRlc3QgMTogSW50ZWdlciB2YWx1ZXMKK2VjaG8gIlRlc3Qg MTogSW50ZWdlciBtaWxsaXNlY29uZCB2YWx1ZXMiCitlY2hvICIwIDI1IDUwIiA+IHRlc3Rfb3V0 cHV0LnR4dAorZWNobyAiRXhwZWN0ZWQ6IDBtcywgMjVtcywgNTBtcyIKK2VjaG8gIk91dHB1dDog JChjYXQgdGVzdF9vdXRwdXQudHh0KSIKK2VjaG8gIiIKKworIyBUZXN0IDI6IEZsb2F0IHZhbHVl cworZWNobyAiVGVzdCAyOiBGbG9hdGluZy1wb2ludCBtaWxsaXNlY29uZCB2YWx1ZXMiCitlY2hv ICIwIDI1LjUgMTAwLjc1IiA+IHRlc3Rfb3V0cHV0X2Zsb2F0LnR4dAorZWNobyAiRXhwZWN0ZWQ6 IDBtcywgMjUuNW1zLCAxMDAuNzVtcyIKK2VjaG8gIk91dHB1dDogJChjYXQgdGVzdF9vdXRwdXRf ZmxvYXQudHh0KSIKK2VjaG8gIiIKKworIyBUZXN0IDM6IEhpZ2ggcHJlY2lzaW9uIGZsb2F0IHZh bHVlcworZWNobyAiVGVzdCAzOiBIaWdoIHByZWNpc2lvbiB2YWx1ZXMiCitlY2hvICIwIDAuMDAx IDk5OS45OTkiID4gdGVzdF9vdXRwdXRfcHJlY2lzaW9uLnR4dAorZWNobyAiRXhwZWN0ZWQ6IDBt cywgMC4wMDFtcywgOTk5Ljk5OW1zIgorZWNobyAiT3V0cHV0OiAkKGNhdCB0ZXN0X291dHB1dF9w cmVjaXNpb24udHh0KSIKK2VjaG8gIiIKKworIyBUZXN0IDQ6IEVkZ2UgY2FzZSAtIHplcm8gdmFs dWVzCitlY2hvICJUZXN0IDQ6IEFsbCB6ZXJvIHZhbHVlcyIKK2VjaG8gIjAgMCAwIiA+IHRlc3Rf b3V0cHV0X3plcm9zLnR4dAorZWNobyAiRXhwZWN0ZWQ6IDBtcywgMG1zLCAwbXMiCitlY2hvICJP dXRwdXQ6ICQoY2F0IHRlc3Rfb3V0cHV0X3plcm9zLnR4dCkiCitlY2hvICIiCisKKyMgVGVzdCA1 OiBFZGdlIGNhc2UgLSBsYXJnZSB2YWx1ZXMKK2VjaG8gIlRlc3QgNTogTGFyZ2UgZGVsYXkgdmFs dWVzIgorZWNobyAiMCA1MDAwIDEwMDAwIiA+IHRlc3Rfb3V0cHV0X2xhcmdlLnR4dAorZWNobyAi RXhwZWN0ZWQ6IDBtcywgNTAwMG1zLCAxMDAwMG1zIgorZWNobyAiT3V0cHV0OiAkKGNhdCB0ZXN0 X291dHB1dF9sYXJnZS50eHQpIgorZWNobyAiIgorCisjIFRlc3QgNjogTWl4ZWQgaW50ZWdlciBh bmQgZmxvYXQgdmFsdWVzCitlY2hvICJUZXN0IDY6IE1peGVkIGludGVnZXIgYW5kIGZsb2F0IHZh bHVlcyIKK2VjaG8gIjAgMjUgNTAuNSIgPiB0ZXN0X291dHB1dF9taXhlZC50eHQKK2VjaG8gIkV4 cGVjdGVkOiAwbXMsIDI1bXMsIDUwLjVtcyIKK2VjaG8gIk91dHB1dDogJChjYXQgdGVzdF9vdXRw dXRfbWl4ZWQudHh0KSIKK2VjaG8gIiIKKworIyBDbGVhbnVwCitybSAtZiB0ZXN0X291dHB1dF8q LnR4dAorCitlY2hvICJBbGwgcGFyc2luZyB0ZXN0cyBjb21wbGV0ZWQuIFRoZXNlIG91dHB1dHMg c2hvdWxkIGJlIHBhcnNlYWJsZSBieSB0aGUgZXh0ZXJuYWwgY29tbWFuZCBmZWF0dXJlLiIKKwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGlj YXRpb25fZGVsYXkvdGVzdF92YWxpZGF0aW9uLnNoIGIvc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0 cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvdGVzdF92YWxpZGF0aW9uLnNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMmVhOGUzMmI4Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25f ZGVsYXkvdGVzdF92YWxpZGF0aW9uLnNoCkBAIC0wLDAgKzEsMjg2IEBACisjIS91c3IvYmluL2Vu diBiYXNoCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIyB0ZXN0IHNjcmlwdCBmb3IgZXh0ZXJuYWwgY29tbWFuZCB2 YWxpZGF0aW9uIGFuZCBlZGdlIGNhc2VzCisjCitzb3VyY2UgJFRFU1RMSUJTCitURVNURElSPXRl c3RkaXJfdmFsaWRhdGlvbgorUEdfQ1RMPSRQR0JJTi9wZ19jdGwKK1BTUUw9IiRQR0JJTi9wc3Fs IC1YICIKKworcm0gLWZyICRURVNURElSCitta2RpciAkVEVTVERJUgorY2QgJFRFU1RESVIKKwor IyBjcmVhdGUgdGVzdCBlbnZpcm9ubWVuCitlY2hvIC1uICJjcmVhdGluZyB0ZXN0IGVudmlyb25t ZW50Li4uIgorJFBHUE9PTF9TRVRVUCAtbSBzIC1uIDMgfHwgZXhpdCAxCitlY2hvICJkb25lLiIK K3NvdXJjZSAuL2Jhc2hyYy5wb3J0cworZXhwb3J0IFBHUE9SVD0kUEdQT09MX1BPUlQKKworIyBD cmVhdGUgdGVzdCBjb21tYW5kIHNjcmlwdHMKK2NhdCA+IGRlbGF5X2NtZF92YWxpZGF0aW9uLnNo IDw8ICdFT0YnCisjIS9iaW4vYmFzaAorIyBUZXN0IHZhbGlkYXRpb246IG91dHB1dCB3aXRoIGlu dmFsaWQgdmFsdWVzCitlY2hvICIwIGludmFsaWRfdmFsdWUgNTAuNSIKK0VPRgorY2htb2QgK3gg ZGVsYXlfY21kX3ZhbGlkYXRpb24uc2gKKworY2F0ID4gZGVsYXlfY21kX25lZ2F0aXZlLnNoIDw8 ICdFT0YnCisjIS9iaW4vYmFzaAorIyBUZXN0IG5lZ2F0aXZlIHZhbHVlcworZWNobyAiMCAtMjUg NTAiCitFT0YKK2NobW9kICt4IGRlbGF5X2NtZF9uZWdhdGl2ZS5zaAorCitjYXQgPiBkZWxheV9j bWRfbGFyZ2Uuc2ggPDwgJ0VPRicKKyMhL2Jpbi9iYXNoCisjIFRlc3QgZXh0cmVtZWx5IGxhcmdl IHZhbHVlcworZWNobyAiMCA5OTk5OTk5IDUwIgorRU9GCitjaG1vZCAreCBkZWxheV9jbWRfbGFy Z2Uuc2gKKworY2F0ID4gZGVsYXlfY21kX3dyb25nX2NvdW50LnNoIDw8ICdFT0YnCisjIS9iaW4v YmFzaAorIyBUZXN0IHdyb25nIG51bWJlciBvZiB2YWx1ZXMgKG9ubHkgMiBpbnN0ZWFkIG9mIDMp CitlY2hvICIwIDI1IgorRU9GCitjaG1vZCAreCBkZWxheV9jbWRfd3JvbmdfY291bnQuc2gKKwor Y2F0ID4gZGVsYXlfY21kX3RydW5jYXRlZC5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgVGVz dCBvdXRwdXQgdGhhdCBtaWdodCBiZSB0cnVuY2F0ZWQgKHZlcnkgbG9uZyBsaW5lKQorcHJpbnRm ICIwIDI1ICIKK2ZvciBpIGluIHsxLi4xMDAwfTsgZG8gcHJpbnRmICJ2ZXJ5X2xvbmdfb3V0cHV0 XyI7IGRvbmUKK2VjaG8gIjUwIgorRU9GCitjaG1vZCAreCBkZWxheV9jbWRfdHJ1bmNhdGVkLnNo CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyA9PT0gVGVzdDE6IFZh bGlkYXRpb24gb2YgaW52YWxpZCBkZWxheSB2YWx1ZXMgPT09CisjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK2VjaG8gInJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZSA9ICdjbWQnIiA+ PiBldGMvcGdwb29sLmNvbmYKK2VjaG8gInJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQgPSAn Li9kZWxheV9jbWRfdmFsaWRhdGlvbi5zaCciID4+IGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAic3Jf Y2hlY2tfcGVyaW9kID0gMSIgPj4gZXRjL3BncG9vbC5jb25mCitlY2hvICJsb2dfc3RhbmRieV9k ZWxheSA9ICdhbHdheXMnIiA+PiBldGMvcGdwb29sLmNvbmYKK2VjaG8gImxvZ19taW5fbWVzc2Fn ZXMgPSAnREVCVUcxJyIgPj4gZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9y X3BncG9vbF9zdGFydHVwCisKKyRQU1FMIHRlc3QgPDxFT0YKK0NSRUFURSBUQUJMRSB0MShpIElO VEVHRVIpOworRU9GCisKKyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcnVuCitlY2hvICJXYWl0aW5n IGZvciB2YWxpZGF0aW9uIHRlc3QuLi4iCitmb3IgaSBpbiB7MS4uMTB9OyBkbworICAgIGlmIGdy ZXAgLXEgImludmFsaWQgZGVsYXkgdmFsdWUiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0 aGVuCisgICAgICAgIGVjaG8gIlZhbGlkYXRpb24gZXJyb3IgZGV0ZWN0ZWQgYWZ0ZXIgJHtpfSBz ZWNvbmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisjIENo ZWNrIGZvciB2YWxpZGF0aW9uIHdhcm5pbmcKK2dyZXAgImludmFsaWQgZGVsYXkgdmFsdWUgJ2lu dmFsaWRfdmFsdWUnIGZvciBub2RlIiBsb2cvcGdwb29sLmxvZyA+L2Rldi9udWxsIDI+JjEKK2lm IFsgJD8gIT0gMCBdO3RoZW4KKyAgICBlY2hvIGZhaWw6IHZhbGlkYXRpb24gd2FybmluZyBub3Qg Zm91bmQKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBpbnZh bGlkIHZhbHVlIHZhbGlkYXRpb24gdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKworIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvID09PSBUZXN0MjogTmVnYXRpdmUg ZGVsYXkgdmFsdWVzID09PQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzZWQg LWkuYmFrICJzfGRlbGF5X2NtZF92YWxpZGF0aW9uLnNofGRlbGF5X2NtZF9uZWdhdGl2ZS5zaHwi IGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAor CisjIFdhaXQgZm9yIHNyX2NoZWNrIHRvIHJ1bgorZWNobyAiV2FpdGluZyBmb3IgbmVnYXRpdmUg dmFsdWUgdGVzdC4uLiIKK2ZvciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgZ3JlcCAtcSAibmVn YXRpdmUgZGVsYXkgdmFsdWUiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAg ICAgIGVjaG8gIk5lZ2F0aXZlIHZhbHVlIHdhcm5pbmcgZGV0ZWN0ZWQgYWZ0ZXIgJHtpfSBzZWNv bmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisjIENoZWNr IGZvciBuZWdhdGl2ZSB2YWx1ZSB3YXJuaW5nCitncmVwICJuZWdhdGl2ZSBkZWxheSB2YWx1ZS4q Zm9yIG5vZGUiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07 dGhlbgorICAgIGVjaG8gZmFpbDogbmVnYXRpdmUgdmFsdWUgd2FybmluZyBub3QgZm91bmQKKyAg ICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBuZWdhdGl2ZSB2YWx1 ZSB2YWxpZGF0aW9uIHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyA9PT0gVGVzdDM6IEV4dHJlbWVseSBsYXJnZSBk ZWxheSB2YWx1ZXMgPT09CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3NlZCAt aS5iYWsgInN8ZGVsYXlfY21kX25lZ2F0aXZlLnNofGRlbGF5X2NtZF9sYXJnZS5zaHwiIGV0Yy9w Z3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdh aXQgZm9yIHNyX2NoZWNrIHRvIHJ1bgorZWNobyAiV2FpdGluZyBmb3IgbGFyZ2UgdmFsdWUgdGVz dC4uLiIKK2ZvciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgZ3JlcCAtcSAiZXh0cmVtZWx5IGxh cmdlIGRlbGF5IHZhbHVlIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAg ICBlY2hvICJMYXJnZSB2YWx1ZSB3YXJuaW5nIGRldGVjdGVkIGFmdGVyICR7aX0gc2Vjb25kcyIK KyAgICAgICAgYnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVjayBmb3Ig bGFyZ2UgdmFsdWUgd2FybmluZworZ3JlcCAiZXh0cmVtZWx5IGxhcmdlIGRlbGF5IHZhbHVlLipm b3Igbm9kZSIgbG9nL3BncG9vbC5sb2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0 aGVuCisgICAgZWNobyBmYWlsOiBsYXJnZSB2YWx1ZSB3YXJuaW5nIG5vdCBmb3VuZAorICAgIC4v c2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IGxhcmdlIHZhbHVlIHZhbGlk YXRpb24gdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitlY2hvID09PSBUZXN0NDogV3JvbmcgbnVtYmVyIG9mIG91dHB1dCB2 YWx1ZXMgPT09CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3NlZCAtaS5iYWsg InN8ZGVsYXlfY21kX2xhcmdlLnNofGRlbGF5X2NtZF93cm9uZ19jb3VudC5zaHwiIGV0Yy9wZ3Bv b2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQg Zm9yIHNyX2NoZWNrIHRvIHJ1bgorZWNobyAiV2FpdGluZyBmb3Igd3JvbmcgY291bnQgdGVzdC4u LiIKK2ZvciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgZ3JlcCAtcSAicmV0dXJuZWQuKnZhbHVl cywgZXhwZWN0ZWQiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVj aG8gIldyb25nIGNvdW50IHdhcm5pbmcgZGV0ZWN0ZWQgYWZ0ZXIgJHtpfSBzZWNvbmRzIgorICAg ICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisjIENoZWNrIGZvciB3cm9u ZyBjb3VudCB3YXJuaW5nCitncmVwICJyZXR1cm5lZC4qdmFsdWVzLCBleHBlY3RlZC4qQ29tbWFu ZCBzaG91bGQgb3V0cHV0IG9uZSBkZWxheSB2YWx1ZSBwZXIgYmFja2VuZCBub2RlIiBsb2cvcGdw b29sLmxvZyA+L2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gIT0gMCBdO3RoZW4KKyAgICBlY2hvIGZh aWw6IHdyb25nIGNvdW50IHZhbGlkYXRpb24gdGVzdCBub3QgZm91bmQKKyAgICAuL3NodXRkb3du YWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiB3cm9uZyBjb3VudCB2YWxpZGF0aW9uIHRl c3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorZWNobyA9PT0gVGVzdDU6IFByaW1hcnkgbm9kZSBub24temVybyBkZWxheSBoYW5k bGluZyA9PT0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorY2F0ID4gZGVsYXlf Y21kX3ByaW1hcnlfbm9uemVyby5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgVGVzdCBwcmlt YXJ5IG5vZGUgd2l0aCBub24temVybyBkZWxheSAoc2hvdWxkIGJlIGNvcnJlY3RlZCB0byAwKQor ZWNobyAiMTAwIDI1IDUwIgorRU9GCitjaG1vZCAreCBkZWxheV9jbWRfcHJpbWFyeV9ub256ZXJv LnNoCisKK3NlZCAtaS5iYWsgInN8ZGVsYXlfY21kX3dyb25nX2NvdW50LnNofGRlbGF5X2NtZF9w cmltYXJ5X25vbnplcm8uc2h8IiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9m b3JfcGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBzcl9jaGVjayB0byBydW4KK2VjaG8gIldh aXRpbmcgZm9yIHByaW1hcnkgbm9uLXplcm8gZGVsYXkgdGVzdC4uLiIKK2ZvciBpIGluIHsxLi4x MH07IGRvCisgICAgaWYgZ3JlcCAtcSAicHJpbWFyeSBub2RlLipyZXBvcnRlZCBub24temVybyBk ZWxheSIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgZWNobyAiUHJp bWFyeSBub24temVybyBkZWxheSBkZXRlY3RlZCBhZnRlciAke2l9IHNlY29uZHMiCisgICAgICAg IGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyMgQ2hlY2sgZm9yIHByaW1hcnkg bm9kZSBjb3JyZWN0aW9uCitncmVwICJwcmltYXJ5IG5vZGUuKnJlcG9ydGVkIG5vbi16ZXJvIGRl bGF5LipzZXR0aW5nIHRvIDAiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAk PyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDogcHJpbWFyeSBub2RlIGRlbGF5IGNvcnJlY3Rp b24gbm90IGZvdW5kCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKworZWNobyBv azogcHJpbWFyeSBub2RlIGRlbGF5IGNvcnJlY3Rpb24gdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRv d25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvID09PSBUZXN0 NjogQ29tbWFuZCB0aW1lb3V0IHdpdGggZGlmZmVyZW50IHRpbWVvdXQgdmFsdWVzID09PQorIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitjYXQgPiBkZWxheV9jbWRfdGltZW91dC5z aCA8PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgQ29tbWFuZCB0aGF0IHRha2VzIDUgc2Vjb25kcwor c2xlZXAgNQorZWNobyAiMCAyNSA1MCIKK0VPRgorY2htb2QgK3ggZGVsYXlfY21kX3RpbWVvdXQu c2gKKworIyBUZXN0IHdpdGggdGltZW91dCBzaG9ydGVyIHRoYW4gY29tbWFuZCBkdXJhdGlvbgor c2VkIC1pLmJhayAic3xkZWxheV9jbWRfcHJpbWFyeV9ub256ZXJvLnNofGRlbGF5X2NtZF90aW1l b3V0LnNofCIgZXRjL3BncG9vbC5jb25mCitlY2hvICJyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2Vf dGltZW91dCA9IDIiID4+IGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9w Z3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHRpbWVvdQorZWNobyAiV2FpdGluZyBmb3IgdGlt ZW91dCB0ZXN0ICgycyB0aW1lb3V0LCA1cyBjb21tYW5kKS4uLiIKK2ZvciBpIGluIHsxLi4xMH07 IGRvCisgICAgaWYgZ3JlcCAtcSAicmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCB0aW1lZCBvdXQg YWZ0ZXIgMiBzZWNvbmRzIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAg ICBlY2hvICJUaW1lb3V0IGRldGVjdGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAgYnJl YWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVjayBmb3IgdGltZW91dCBtZXNz YWdlCitncmVwICJyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIHRpbWVkIG91dCBhZnRlciAyIHNl Y29uZHMiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhl bgorICAgIGVjaG8gZmFpbDogdGltZW91dCBub3QgZGV0ZWN0ZWQKKyAgICAuL3NodXRkb3duYWxs CisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiB0aW1lb3V0IHRlc3Qgc3VjY2VlZGVkCisuL3No dXRkb3duYWxsCisKKyMgVGVzdCB3aXRoIHRpbWVvdXQgbG9uZ2VyIHRoYW4gY29tbWFuZCBkdXJh dGlvbgorc2VkIC1pLmJhayAic3xyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfdGltZW91dCA9IDJ8 cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQgPSAxMHwiIGV0Yy9wZ3Bvb2wuY29uZgor CisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHN1Y2Nl c3NmdWwgZXhlY3V0aW9uCitlY2hvICJXYWl0aW5nIGZvciBzdWNjZXNzZnVsIGV4ZWN1dGlvbiAo MTBzIHRpbWVvdXQsIDVzIGNvbW1hbmQpLi4uIgorZm9yIGkgaW4gezEuLjE1fTsgZG8KKyAgICBp ZiBncmVwIC1xICJleGVjdXRpbmcgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZC4qZGVsYXlfY21k X3RpbWVvdXQuc2giIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVj aG8gIkNvbW1hbmQgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5IGFmdGVyICR7aX0gc2Vjb25kcyIKKyAg ICAgICAgYnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBTaG91bGQgbm90IHRp bWVvdXQgdGhpcyB0aW1lCitpZiBncmVwIC1xICJyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIHRp bWVkIG91dCIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICBlY2hvIGZhaWw6 IGNvbW1hbmQgc2hvdWxkIG5vdCBoYXZlIHRpbWVkIG91dCB3aXRoIDEwcyB0aW1lb3UKKyAgICAu L3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBleHRlbmRlZCB0aW1lb3V0 IHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKK2VjaG8gIkFsbCB2YWxpZGF0aW9uIHRl c3RzIHBhc3NlZCEiCitleGl0IDAKKwotLSAKMi41MS4wCgo= --000000000000160ba3063e471e38 Content-Type: application/octet-stream; name="0003-doc-document-external-replication-delay-command-and-.patch" Content-Disposition: attachment; filename="0003-doc-document-external-replication-delay-command-and-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfaxxuaf2 RnJvbSA5YjgwOTE1Nzk2N2UxNDk4ZWE2OTBlNTBjYjRhOWEzOWZmNGEwN2E4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYWRhdiBTaGF0eiA8bmFkYXZAdGFpbG9yYnJhbmRzLmNvbT4K RGF0ZTogTW9uLCA4IFNlcCAyMDI1IDA5OjU4OjMxICswMzAwClN1YmplY3Q6IFtQQVRDSCAzLzNd IGRvYzogZG9jdW1lbnQgZXh0ZXJuYWwgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCBhbmQKIGFy Z3VtZW50cwoKQWRkIEVuZ2xpc2ggZG9jdW1lbnRhdGlvbiBmb3IgcmVwbGljYXRpb25fZGVsYXlf c291cmNlICgnYnVpbHRpbid8J2NtZCcpLApyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kIGlu Y2x1ZGluZyBwb3NpdGlvbmFsIGluc3RhbmNlIGlkZW50aWZpZXIgYXJndW1lbnRzCnBhc3NlZCBp biBQZ3Bvb2wgYmFja2VuZCBvcmRlciwgYW5kIHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1l b3V0LgotLS0KIGRvYy9zcmMvc2dtbC9zdHJlYW0tY2hlY2suc2dtbCB8IDkwICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N0cmVhbS1jaGVjay5zZ21sIGIvZG9jL3NyYy9z Z21sL3N0cmVhbS1jaGVjay5zZ21sCmluZGV4IGQyY2EzY2E0OS4uMTJlNzQ1ZTc2IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvc3RyZWFtLWNoZWNrLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N0 cmVhbS1jaGVjay5zZ21sCkBAIC0zMDksNiArMzA5LDk2IEBAIEdSQU5UIHBnX21vbml0b3IgVE8g c3JfY2hlY2tfdXNlcjsKICAgICA8L2xpc3RpdGVtPgogICA8L3Zhcmxpc3RlbnRyeT4KIAorICA8 dmFybGlzdGVudHJ5IGlkPSJndWMtcmVwbGljYXRpb24tZGVsYXktc291cmNlIiB4cmVmbGFiZWw9 InJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZSI+CisgICA8dGVybT48dmFybmFtZT5yZXBsaWNhdGlv bl9kZWxheV9zb3VyY2U8L3Zhcm5hbWU+ICg8dHlwZT5lbnVtPC90eXBlPikKKyAgICA8aW5kZXh0 ZXJtPgorICAgICA8cHJpbWFyeT48dmFybmFtZT5yZXBsaWNhdGlvbl9kZWxheV9zb3VyY2U8L3Zh cm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgIDwvaW5kZXh0ZXJt PgorICAgPC90ZXJtPgorICAgPGxpc3RpdGVtPgorICAgIDxwYXJhPgorICAgICBTcGVjaWZpZXMg dGhlIHNvdXJjZSBvZiByZXBsaWNhdGlvbiBkZWxheSBpbmZvcm1hdGlvbiB1c2VkIGJ5IHRoZQor ICAgICBzdHJlYW1pbmcgcmVwbGljYXRpb24gZGVsYXkgY2hlY2sgd29ya2VyLiBWYWxpZCB2YWx1 ZXMgYXJlOgorICAgIDwvcGFyYT4KKyAgICA8aXRlbWl6ZWRsaXN0PgorICAgICA8bGlzdGl0ZW0+ CisgICAgICA8cGFyYT48bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPiDigJQgcXVlcnkgdGhlIHBy aW1hcnkgYW5kIHN0YW5kYnlzIHRvIGNvbXB1dGUgZGVsYXkuPC9wYXJhPgorICAgICA8L2xpc3Rp dGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT48bGl0ZXJhbD5jbWQ8L2xpdGVyYWw+ IOKAlCBydW4gYW4gZXh0ZXJuYWwgY29tbWFuZCB0byBvYnRhaW4gZGVsYXlzIGZvciBlYWNoIGJh Y2tlbmQuPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorICAg IDxwYXJhPgorICAgICBXaGVuIHNldCB0byA8bGl0ZXJhbD5jbWQ8L2xpdGVyYWw+LCA8eHJlZiBs aW5rZW5kPSJndWMtcmVwbGljYXRpb24tZGVsYXktc291cmNlLWNtZCI+IG11c3QgYmUgc2V0Cisg ICAgIHRvIHRoZSBjb21tYW5kIHRvIGV4ZWN1dGUsIGFuZCA8eHJlZiBsaW5rZW5kPSJndWMtcmVw bGljYXRpb24tZGVsYXktc291cmNlLXRpbWVvdXQiPiBjb250cm9scworICAgICBpdHMgdGltZW91 dC4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBj aGFuZ2VkIGJ5IHJlbG9hZGluZyB0aGUgPHByb2R1Y3RuYW1lPlBncG9vbC1JSTwvPiBjb25maWd1 cmF0aW9ucy4KKyAgICA8L3BhcmE+CisgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3RlbnRyeT4K KworICA8dmFybGlzdGVudHJ5IGlkPSJndWMtcmVwbGljYXRpb24tZGVsYXktc291cmNlLWNtZCIg eHJlZmxhYmVsPSJyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kIj4KKyAgIDx0ZXJtPjx2YXJu YW1lPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQ8L3Zhcm5hbWU+ICg8dHlwZT5zdHJpbmc8 L3R5cGU+KQorICAgIDxpbmRleHRlcm0+CisgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPnJlcGxpY2F0 aW9uX2RlbGF5X3NvdXJjZV9jbWQ8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9w cmltYXJ5PgorICAgIDwvaW5kZXh0ZXJtPgorICAgPC90ZXJtPgorICAgPGxpc3RpdGVtPgorICAg IDxwYXJhPgorICAgICBTcGVjaWZpZXMgdGhlIGV4dGVybmFsIGNvbW1hbmQgdG8gZXhlY3V0ZSB3 aGVuIDx4cmVmIGxpbmtlbmQ9Imd1Yy1yZXBsaWNhdGlvbi1kZWxheS1zb3VyY2UiPgorICAgICBp cyBzZXQgdG8gPGxpdGVyYWw+Y21kPC9saXRlcmFsPi4gVGhlIGNvbW1hbmQgaXMgZXhlY3V0ZWQg YXMgdGhlCisgICAgIDxwcm9kdWN0bmFtZT5QZ3Bvb2wtSUk8L3Byb2R1Y3RuYW1lPiBwcm9jZXNz IHVzZXIuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGUgY29tbWFuZCByZWNlaXZl cyBhbiBvcmRlcmVkIGxpc3Qgb2YgaW5zdGFuY2UgaWRlbnRpZmllcnMgYXMgcG9zaXRpb25hbAor ICAgICBhcmd1bWVudHMgY29ycmVzcG9uZGluZyB0byBQZ3Bvb2wgYmFja2VuZCBub2RlIGluZGV4 ZXMgKDAuLk4tMSkuIFRoZSBvcmRlcgorICAgICBtYXRjaGVzIFBncG9vbCdzIGJhY2tlbmQgb3Jk ZXIgc28gdGhlIHNjcmlwdCBjYW4gbWFwIG1ldHJpY3MgKGZvciBleGFtcGxlCisgICAgIGZyb20g QVdTIENsb3VkV2F0Y2ggZm9yIEF1cm9yYSkgYmFjayB0byB0aGUgY29ycmVjdCBub2RlLiBFYWNo IGlkZW50aWZpZXIgaXMKKyAgICAgb25lIG9mOgorICAgIDwvcGFyYT4KKyAgICA8aXRlbWl6ZWRs aXN0PgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT48bGl0ZXJhbD5iYWNrZW5kX2FwcGxp Y2F0aW9uX25hbWU8L2xpdGVyYWw+IChpZiBjb25maWd1cmVkKTwvcGFyYT4KKyAgICAgPC9saXN0 aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+PGxpdGVyYWw+Jmx0O2hvc3RuYW1l Jmd0OzombHQ7cG9ydCZndDs8L2xpdGVyYWw+IChpZiBhcHBsaWNhdGlvbiBuYW1lIGlzIGVtcHR5 KTwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+ PGxpdGVyYWw+bm9kZSZsdDtpJmd0OzwvbGl0ZXJhbD4gKGZhbGxiYWNrKTwvcGFyYT4KKyAgICAg PC9saXN0aXRlbT4KKyAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8cGFyYT4KKyAgICAgVGhlIGNv bW1hbmQgbXVzdCB3cml0ZSBhIHNpbmdsZSBsaW5lIHRvIHN0ZG91dCBjb250YWluaW5nIG9uZSB3 aGl0ZXNwYWNlLXNlcGFyYXRlZAorICAgICBkZWxheSB2YWx1ZSBwZXIgYmFja2VuZCwgaW4gbWls bGlzZWNvbmRzLCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgYXJndW1lbnRzLgorICAgICBGb3Ig ZXhhbXBsZTogPGxpdGVyYWw+IjAgMjUuNSAxMDAiPC9saXRlcmFsPiBmb3IgYSAzLW5vZGUgY2x1 c3Rlci4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBi ZSBjaGFuZ2VkIGJ5IHJlbG9hZGluZyB0aGUgPHByb2R1Y3RuYW1lPlBncG9vbC1JSTwvPiBjb25m aWd1cmF0aW9ucy4KKyAgICA8L3BhcmE+CisgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3RlbnRy eT4KKworICA8dmFybGlzdGVudHJ5IGlkPSJndWMtcmVwbGljYXRpb24tZGVsYXktc291cmNlLXRp bWVvdXQiIHhyZWZsYWJlbD0icmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQiPgorICAg PHRlcm0+PHZhcm5hbWU+cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQ8L3Zhcm5hbWU+ ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICA8aW5kZXh0ZXJtPgorICAgICA8cHJpbWFyeT48 dmFybmFtZT5yZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfdGltZW91dDwvdmFybmFtZT4gY29uZmln dXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgPC9pbmRleHRlcm0+CisgICA8L3Rlcm0+ CisgICA8bGlzdGl0ZW0+CisgICAgPHBhcmE+CisgICAgIFNwZWNpZmllcyB0aGUgdGltZW91dCBp biBzZWNvbmRzIGZvciB0aGUgZXh0ZXJuYWwgY29tbWFuZCBleGVjdXRlZCB3aGVuCisgICAgIDx4 cmVmIGxpbmtlbmQ9Imd1Yy1yZXBsaWNhdGlvbi1kZWxheS1zb3VyY2UiPiBpcyBzZXQgdG8gPGxp dGVyYWw+Y21kPC9saXRlcmFsPi4KKyAgICAgSWYgdGhlIGNvbW1hbmQgZG9lcyBub3QgZmluaXNo IHdpdGhpbiB0aGUgdGltZW91dCwgUGdwb29sIGxvZ3MgYW4gZXJyb3IgYW5kCisgICAgIGNvbnRp bnVlcy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBi ZSBjaGFuZ2VkIGJ5IHJlbG9hZGluZyB0aGUgPHByb2R1Y3RuYW1lPlBncG9vbC1JSTwvPiBjb25m aWd1cmF0aW9ucy4KKyAgICA8L3BhcmE+CisgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3RlbnRy eT4KKwogICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbG9nLXN0YW5kYnktZGVsYXkiIHhyZWZsYWJl bD0ibG9nX3N0YW5kYnlfZGVsYXkiPgogICAgPHRlcm0+PHZhcm5hbWU+bG9nX3N0YW5kYnlfZGVs YXk8L3Zhcm5hbWU+ICg8dHlwZT5lbnVtPC90eXBlPikKICAgICA8aW5kZXh0ZXJtPgotLSAKMi41 MS4wCgo= --000000000000160ba3063e471e38--