Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pkeEq-0005lL-43 for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Apr 2023 05:02:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pkeEo-00076J-Jd for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Apr 2023 05:02:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pkeEo-00076A-3v for pgsql-hackers@lists.postgresql.org; Fri, 07 Apr 2023 05:02:14 +0000 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1pkeEi-001NVs-Gm for pgsql-hackers@postgresql.org; Fri, 07 Apr 2023 05:02:13 +0000 Received: by mail-wr1-x42e.google.com with SMTP id y14so41422488wrq.4 for ; Thu, 06 Apr 2023 22:02:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680843727; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=ZdvUspuenBmiZnggTpxLRGYKvn62SfGN+vo5Sh5FC/M=; b=MTh7SMteZLl5O39/B8s/qFKDd+UGPcl641+qNBwM/LBrymsY7ioy+QV9B7ysp3nBuZ cqgfEltEbUk3mtHFewNaAtRFS18RH/a3y2/nsbZXIOdpD03WaLvhw0SkhNjPshDKMLJ/ Fj3c4WKngo0SVkwbjCOpO5pNSdhVu//Z3onTBfNKjEroUL6ammHYTVBvLFCk+nLKi6Ds SbswBF8aS6mHB1Xz31+PwP/oTG4PDCjSpMMSTP2R7eQtXnvGGKI6Kr0MLgWI86STM/EA lzyBQHLe1AXvgqS6trAN1+kqy7k7RQEgHpE6UcuPUNTbakvHl46PLa1qqnpQiLmLyaCV KXrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680843727; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ZdvUspuenBmiZnggTpxLRGYKvn62SfGN+vo5Sh5FC/M=; b=AjHpXI7YQrfBVAdX0cj2gwn7pqAuniXi058zw8TCg0AYgeHf32TMm9zEoJPWXoovrd HeIS/u8LRJ1+9pwV9XhipnDWlfKuPSN32coI0wrNeTfHOusPyyMlxsgBkmlqSJZl0Ykj ycqphTYTy9/Vd+9Uj8dpI1YoZXFCyr081AYZx9lq+iO12JIDN4S5iQewWLobCupxGv+o UZzz5Kf+2TPE24IHl5wT88A5EYOeD9vefZ+vbyuu5arrVe4We7hqUFNXfKDfIlLIe1PC ktQDdIdwWUd+s9hkYUlTcqMisU7TVssNvRZmD1Y5L0ABA3Fe1KdseQ/e6nTt4+38tgMy sHAg== X-Gm-Message-State: AAQBX9ekj0hcqrReQxwOLqbAQjmz879lDo/l3Nd1WLSDn28YylQWBcUo SqX91s4ouujo+LJe+X1U4G8= X-Google-Smtp-Source: AKy350bHbowA7ax/rLY8kRclG1K4HA1iCoHSaYslmKl8gHwaSrVg4JHRJJczgE8DTV4No1tcgvh3Sw== X-Received: by 2002:adf:f446:0:b0:2ce:da65:12d9 with SMTP id f6-20020adff446000000b002ceda6512d9mr394262wrp.15.1680843727196; Thu, 06 Apr 2023 22:02:07 -0700 (PDT) Received: from [192.168.26.244] ([54.239.6.185]) by smtp.gmail.com with ESMTPSA id e18-20020adfe392000000b002c56013c07fsm3428796wrm.109.2023.04.06.22.02.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 06 Apr 2023 22:02:06 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------9IFCIzDt0tUi9n0JUWtvR6ZK" Message-ID: <3c9d4998-a338-081f-a5f6-d038ead75384@gmail.com> Date: Fri, 7 Apr 2023 07:02:04 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: Minimal logical decoding on standbys From: "Drouvot, Bertrand" To: Amit Kapila Cc: Alvaro Herrera , Jeff Davis , Andres Freund , Robert Haas , Thomas Munro , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers References: <20230330095449.47yz2q4mn27t6xgl@alvherre.pgsql> <68a47e4c-f4bb-45ae-28be-938af60b203c@gmail.com> <8c6e7670-3914-35d1-7977-34f60e598477@gmail.com> <1903ca9b-1dc9-20a6-404a-d4c460c7bdcc@gmail.com> <2b002763-f39f-0814-e98e-c48989ddc3c3@gmail.com> Content-Language: en-US In-Reply-To: <2b002763-f39f-0814-e98e-c48989ddc3c3@gmail.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------9IFCIzDt0tUi9n0JUWtvR6ZK Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, On 4/6/23 4:20 PM, Drouvot, Bertrand wrote: > Hi, > > On 4/6/23 3:39 PM, Amit Kapila wrote: >> On Thu, Apr 6, 2023 at 6:32 PM Drouvot, Bertrand >> wrote: >>> >>> >>> I don't think it could be possible to create logical walsenders on a standby if >>> AllowCascadeReplication() is not true, or am I missing something? >>> >> >> Right, so why to even traverse walsenders for that case? What I was >> imagining a code is like: >> if (AllowCascadeReplication()) >>      WalSndWakeup(switchedTLI, true); >> >> Do you see any problem with this change? > > Not at all, it looks good to me. > >> Done in V63 attached and did change the associated comment a bit. >> Few more minor comments on 0005 >> ============================= >> 0005 >> 1. >> +       >> +        Take a snapshot of running transactions and write this to WAL without >> +        having to wait bgwriter or checkpointer to log one. >> >> /wait bgwriter/wait for bgwriter >> >> 2. >> +use Test::More tests => 67; >> >> We no more use the number of tests. Please refer to other similar tests. >> > > Thanks! Will update 0005. > Done in V63. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------9IFCIzDt0tUi9n0JUWtvR6ZK Content-Type: text/plain; charset=UTF-8; name="v63-0006-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v63-0006-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiNWZmMzVkOGFjZTFlNDI5YzZhMTVkNTMyMDNiMDAzMDRhM2ZmMWY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDE0OjA4OjExICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NjMgNi82XSBEb2MgY2hhbmdlcyBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgbG9naWNh bAogZGVjb2RpbmcuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNp b24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVy dHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRl IFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sIHwg MjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjcgaW5z ZXJ0aW9ucygrKQogMTAwLjAlIGRvYy9zcmMvc2dtbC8KCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29k aW5nLnNnbWwKaW5kZXggNGU5MTJiNGJkNC4uODY1MTAyNGI4YSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dp Y2FsZGVjb2Rpbmcuc2dtbApAQCAtMzE2LDYgKzMxNiwzMyBAQCBwb3N0Z3Jlcz0jIHNlbGVj dCAqIGZyb20gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3Qn LCBOVUxMLCBOVQogICAgICBtYXkgY29uc3VtZSBjaGFuZ2VzIGZyb20gYSBzbG90IGF0IGFu eSBnaXZlbiB0aW1lLgogICAgIDwvcGFyYT4KIAorICAgIDxwYXJhPgorICAgICBBIGxvZ2lj YWwgcmVwbGljYXRpb24gc2xvdCBjYW4gYWxzbyBiZSBjcmVhdGVkIG9uIGEgaG90IHN0YW5k YnkuIFRvIHByZXZlbnQKKyAgICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBmcm9tIHJl bW92aW5nIHJlcXVpcmVkIHJvd3MgZnJvbSB0aGUgc3lzdGVtCisgICAgIGNhdGFsb2dzLCA8 dmFybmFtZT5ob3Rfc3RhbmRieV9mZWVkYmFjazwvdmFybmFtZT4gc2hvdWxkIGJlIHNldCBv biB0aGUKKyAgICAgc3RhbmRieS4gSW4gc3BpdGUgb2YgdGhhdCwgaWYgYW55IHJlcXVpcmVk IHJvd3MgZ2V0IHJlbW92ZWQsIHRoZSBzbG90IGdldHMKKyAgICAgaW52YWxpZGF0ZWQuIEl0 J3MgaGlnaGx5IHJlY29tbWVuZGVkIHRvIHVzZSBhIHBoeXNpY2FsIHNsb3QgYmV0d2VlbiB0 aGUgcHJpbWFyeQorICAgICBhbmQgdGhlIHN0YW5kYnkuIE90aGVyd2lzZSwgaG90X3N0YW5k YnlfZmVlZGJhY2sgd2lsbCB3b3JrLCBidXQgb25seSB3aGlsZSB0aGUKKyAgICAgY29ubmVj dGlvbiBpcyBhbGl2ZSAoZm9yIGV4YW1wbGUgYSBub2RlIHJlc3RhcnQgd291bGQgYnJlYWsg aXQpLiBUaGVuLCB0aGUKKyAgICAgcHJpbWFyeSBtYXkgZGVsZXRlIHN5c3RlbSBjYXRhbG9n IHJvd3MgdGhhdCBjb3VsZCBiZSBuZWVkZWQgYnkgdGhlIGxvZ2ljYWwKKyAgICAgZGVjb2Rp bmcgb24gdGhlIHN0YW5kYnkgKGFzIGl0IGRvZXMgbm90IGtub3cgYWJvdXQgdGhlIGNhdGFs b2dfeG1pbiBvbiB0aGUKKyAgICAgc3RhbmRieSkuIEV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMg b24gc3RhbmRieSBhbHNvIGdldCBpbnZhbGlkYXRlZCBpZiB3YWxfbGV2ZWwKKyAgICAgb24g cHJpbWFyeSBpcyByZWR1Y2VkIHRvIGxlc3MgdGhhbiAnbG9naWNhbCcuIFRoaXMgaXMgZG9u ZSBhcyBzb29uIGFzIHRoZQorICAgICBzdGFuZGJ5IGRldGVjdHMgc3VjaCBhIGNoYW5nZSBp biB0aGUgV0FMIHN0cmVhbS4gSXQgbWVhbnMsIHRoYXQgZm9yIHdhbHNlbmRlcnMKKyAgICAg dGhhdCBhcmUgbGFnZ2luZyAoaWYgYW55KSwgc29tZSBXQUwgcmVjb3JkcyB1cCB0byB0aGUg d2FsX2xldmVsIHBhcmFtZXRlciBjaGFuZ2UKKyAgICAgb24gdGhlIHByaW1hcnkgd29uJ3Qg YmUgZGVjb2RlZC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgRm9yIGEgbG9n aWNhbCBzbG90IHRvIGJlIGNyZWF0ZWQsIGl0IGJ1aWxkcyBhIGhpc3RvcmljIHNuYXBzaG90 LCBmb3Igd2hpY2gKKyAgICAgaW5mb3JtYXRpb24gb2YgYWxsIHRoZSBjdXJyZW50bHkgcnVu bmluZyB0cmFuc2FjdGlvbnMgaXMgZXNzZW50aWFsLiBPbgorICAgICBwcmltYXJ5LCB0aGlz IGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgYnV0IG9uIHN0YW5kYnksIHRoaXMgaW5mb3Jt YXRpb24KKyAgICAgaGFzIHRvIGJlIG9idGFpbmVkIGZyb20gcHJpbWFyeS4gU28sIHNsb3Qg Y3JlYXRpb24gbWF5IHdhaXQgZm9yIHNvbWUKKyAgICAgYWN0aXZpdHkgdG8gaGFwcGVuIG9u IHRoZSBwcmltYXJ5LiBJZiB0aGUgcHJpbWFyeSBpcyBpZGxlLCBjcmVhdGluZyBhCisgICAg IGxvZ2ljYWwgc2xvdCBvbiBzdGFuZGJ5IG1heSB0YWtlIGEgbm90aWNlYWJsZSB0aW1lLiBP bmUgb3B0aW9uIHRvIHNwZWVkIGl0CisgICAgIGlzIHRvIGNhbGwgdGhlIDxmdW5jdGlvbj5w Z19sb2dfc3RhbmRieV9zbmFwc2hvdDwvZnVuY3Rpb24+IG9uIHRoZSBwcmltYXJ5LgorICAg IDwvcGFyYT4KKwogICAgIDxjYXV0aW9uPgogICAgICA8cGFyYT4KICAgICAgIFJlcGxpY2F0 aW9uIHNsb3RzIHBlcnNpc3QgYWNyb3NzIGNyYXNoZXMgYW5kIGtub3cgbm90aGluZyBhYm91 dCB0aGUgc3RhdGUKLS0gCjIuMzQuMQoK --------------9IFCIzDt0tUi9n0JUWtvR6ZK Content-Type: text/plain; charset=UTF-8; name="v63-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v63-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSBlZTM1ZWE2NTVkZTZkMzE3OGExZWMxYjdiNzAzNDVlMmY0YWRjY2I1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA5OjA0OjEyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NjMgNS82XSBOZXcgVEFQIHRlc3QgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRi eS4KCkluIGFkZGl0aW9uIHRvIHRoZSBuZXcgVEFQIHRlc3QsIHRoaXMgY29tbWl0IGludHJv ZHVjZXMgYSBuZXcgcGdfbG9nX3N0YW5kYnlfc25hcHNob3QoKQpmdW5jdGlvbi4KClRoZSBp ZGVhIGlzIHRvIGJlIGFibGUgdG8gdGFrZSBhIHNuYXBzaG90IG9mIHJ1bm5pbmcgdHJhbnNh Y3Rpb25zIGFuZCB3cml0ZSB0aGlzCnRvIFdBTCB3aXRob3V0IHJlcXVlc3RpbmcgZm9yIGEg KGNvc3RseSkgY2hlY2twb2ludC4KCkF1dGhvcjogQ3JhaWcgUmluZ2VyIChpbiBhbiBvbGRl ciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJy aXppbyBkZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxNSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nZnVuY3MuYyAgICAgICAgfCAgMzIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f ZnVuY3Rpb25zLnNxbCAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv VGVzdC9DbHVzdGVyLnBtICAgICAgfCAgMzcgKwogc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24u YnVpbGQgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi90LzAzNV9zdGFuZGJ5X2xvZ2lj YWxfZGVjb2RpbmcucGwgICAgICAgICB8IDcwNiArKysrKysrKysrKysrKysrKysKIDcgZmls ZXMgY2hhbmdlZCwgNzk2IGluc2VydGlvbnMoKykKICAgMy4xJSBzcmMvYmFja2VuZC8KICAg NC4wJSBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC8KICA4OS42JSBzcmMvdGVzdC9y ZWNvdmVyeS90LwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IGRjNDRhNzRlYjIuLjkyNTNjZDFjMTggMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMu c2dtbApAQCAtMjcwMzIsNiArMjcwMzIsMjEgQEAgcG9zdGdyZXM9IyBTRUxFQ1QgJzAvMCc6 OnBnX2xzbiArIHBkLnNlZ21lbnRfbnVtYmVyICogcHMuc2V0dGluZzo6aW50ICsgOm9mZnNl dAogICAgICAgICBwcmVwYXJlZCB3aXRoIDx4cmVmIGxpbmtlbmQ9InNxbC1wcmVwYXJlLXRy YW5zYWN0aW9uIi8+LgogICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAgPC9yb3c+Cisg ICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAg ICA8cHJpbWFyeT5wZ19sb2dfc3RhbmRieV9zbmFwc2hvdDwvcHJpbWFyeT4KKyAgICAgICAg PC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19sb2dfc3RhbmRieV9zbmFwc2hv dDwvZnVuY3Rpb24+ICgpCisgICAgICAgIDxyZXR1cm52YWx1ZT5wZ19sc248L3JldHVybnZh bHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGFrZSBhIHNu YXBzaG90IG9mIHJ1bm5pbmcgdHJhbnNhY3Rpb25zIGFuZCB3cml0ZSB0aGlzIHRvIFdBTCB3 aXRob3V0CisgICAgICAgIGhhdmluZyB0byB3YWl0IGJnd3JpdGVyIG9yIGNoZWNrcG9pbnRl ciB0byBsb2cgb25lLiBUaGlzIG9uZSBpcyB1c2VmdWwgZm9yCisgICAgICAgIGxvZ2ljYWwg ZGVjb2Rpbmcgb24gc3RhbmRieSBmb3Igd2hpY2ggbG9naWNhbCBzbG90IGNyZWF0aW9uIGlz IGhhbmdpbmcKKyAgICAgICAgdW50aWwgc3VjaCBhIHJlY29yZCBpcyByZXBsYXllZCBvbiB0 aGUgc3RhbmRieS4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93PgogICAg ICA8L3Rib2R5PgogICAgIDwvdGdyb3VwPgogICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggYzA3ZGFhODc0Zi4uMzZhMzA5YjU0YyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKQEAgLTMxLDYgKzMx LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMu aCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N0YW5k YnkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1 Yy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC0xOTYsNiArMTk3LDM3IEBA IHBnX3N3aXRjaF93YWwoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fTFNOKHN3aXRj aHBvaW50KTsKIH0KIAorLyoKKyAqIHBnX2xvZ19zdGFuZGJ5X3NuYXBzaG90OiBjYWxsIExv Z1N0YW5kYnlTbmFwc2hvdCgpCisgKgorICogUGVybWlzc2lvbiBjaGVja2luZyBmb3IgdGhp cyBmdW5jdGlvbiBpcyBtYW5hZ2VkIHRocm91Z2ggdGhlIG5vcm1hbAorICogR1JBTlQgc3lz dGVtLgorICovCitEYXR1bQorcGdfbG9nX3N0YW5kYnlfc25hcHNob3QoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlYTG9nUmVjUHRyCXJlY3B0cjsKKworCWlmIChSZWNvdmVyeUluUHJvZ3Jl c3MoKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJyZWNvdmVyeSBpcyBp biBwcm9ncmVzcyIpLAorCQkJCSBlcnJoaW50KCJwZ19sb2dfc3RhbmRieV9zbmFwc2hvdCgp IGNhbm5vdCBiZSBleGVjdXRlZCBkdXJpbmcgcmVjb3ZlcnkuIikpKTsKKworCWlmICghWExv Z1N0YW5kYnlJbmZvQWN0aXZlKCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1z Zygid2FsX2xldmVsIGlzIG5vdCBpbiBkZXNpcmVkIHN0YXRlIiksCisJCQkJIGVycmhpbnQo IndhbF9sZXZlbCBoYXMgdG8gYmUgPj0gV0FMX0xFVkVMX1JFUExJQ0EuIikpKTsKKworCXJl Y3B0ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgpOworCisJLyoKKwkgKiBBcyBhIGNvbnZlbmll bmNlLCByZXR1cm4gdGhlIFdBTCBsb2NhdGlvbiBvZiB0aGUgbGFzdCBpbnNlcnRlZCByZWNv cmQKKwkgKi8KKwlQR19SRVRVUk5fTFNOKHJlY3B0cik7Cit9CisKIC8qCiAgKiBwZ19jcmVh dGVfcmVzdG9yZV9wb2ludDogYSBuYW1lZCBwb2ludCBmb3IgcmVzdG9yZQogICoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCmluZGV4IDgzY2E4OTM0NDQu LmI3YzY1ZWEzN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1 bmN0aW9ucy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25z LnNxbApAQCAtNjQ0LDYgKzY0NCw4IEBAIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBn X2NyZWF0ZV9yZXN0b3JlX3BvaW50KHRleHQpIEZST00gcHVibGljOwogCiBSRVZPS0UgRVhF Q1VURSBPTiBGVU5DVElPTiBwZ19zd2l0Y2hfd2FsKCkgRlJPTSBwdWJsaWM7CiAKK1JFVk9L RSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19zdGFuZGJ5X3NuYXBzaG90KCkgRlJPTSBw dWJsaWM7CisKIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX3dhbF9yZXBsYXlfcGF1 c2UoKSBGUk9NIHB1YmxpYzsKIAogUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfd2Fs X3JlcGxheV9yZXN1bWUoKSBGUk9NIHB1YmxpYzsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CmluZGV4IGJjYmFlOTAzNmQuLjI4NDEzODcyN2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdApAQCAtNjQyNiw2ICs2NDI2LDkgQEAKIHsgb2lkID0+ICcyODQ4JywgZGVzY3IgPT4g J3N3aXRjaCB0byBuZXcgd2FsIGZpbGUnLAogICBwcm9uYW1lID0+ICdwZ19zd2l0Y2hfd2Fs JywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICdwZ19sc24nLAogICBwcm9h cmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdwZ19zd2l0Y2hfd2FsJyB9LAoreyBvaWQgPT4g Jzk2NTgnLCBkZXNjciA9PiAnbG9nIGRldGFpbHMgb2YgdGhlIGN1cnJlbnQgc25hcHNob3Qg dG8gV0FMJywKKyAgcHJvbmFtZSA9PiAncGdfbG9nX3N0YW5kYnlfc25hcHNob3QnLCBwcm92 b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3BnX2xzbicsCisgIHByb2FyZ3R5cGVz ID0+ICcnLCBwcm9zcmMgPT4gJ3BnX2xvZ19zdGFuZGJ5X3NuYXBzaG90JyB9LAogeyBvaWQg PT4gJzMwOTgnLCBkZXNjciA9PiAnY3JlYXRlIGEgbmFtZWQgcmVzdG9yZSBwb2ludCcsCiAg IHByb25hbWUgPT4gJ3BnX2NyZWF0ZV9yZXN0b3JlX3BvaW50JywgcHJvdm9sYXRpbGUgPT4g J3YnLAogICBwcm9yZXR0eXBlID0+ICdwZ19sc24nLCBwcm9hcmd0eXBlcyA9PiAndGV4dCcs CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBt IGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQppbmRleCBhM2Fl ZjhiNWU5Li42MjM3NmRlNjAyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVT UUwvVGVzdC9DbHVzdGVyLnBtCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0 L0NsdXN0ZXIucG0KQEAgLTMwNzYsNiArMzA3Niw0MyBAQCAkU0lHe1RFUk19ID0gJFNJR3tJ TlR9ID0gc3ViIHsKIAogPXBvZAogCis9aXRlbSAkbm9kZS0+Y3JlYXRlX2xvZ2ljYWxfc2xv dF9vbl9zdGFuZGJ5KHNlbGYsIHByaW1hcnksIHNsb3RfbmFtZSwgZGJuYW1lKQorCitDcmVh dGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IG9uIGdpdmVuIHN0YW5kYnkKKworPWN1dAor CitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5Cit7CisJbXkgKCRzZWxmLCAk cHJpbWFyeSwgJHNsb3RfbmFtZSwgJGRibmFtZSkgPSBAXzsKKwlteSAoJHN0ZG91dCwgJHN0 ZGVycik7CisKKwlteSAkaGFuZGxlOworCisJJGhhbmRsZSA9IElQQzo6UnVuOjpzdGFydChb J3BnX3JlY3Zsb2dpY2FsJywgJy1kJywgJHNlbGYtPmNvbm5zdHIoJGRibmFtZSksICctUCcs ICd0ZXN0X2RlY29kaW5nJywgJy1TJywgJHNsb3RfbmFtZSwgJy0tY3JlYXRlLXNsb3QnXSwg Jz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIpOworCisJIyBPbmNlIHNsb3QgcmVzdGFy dF9sc24gaXMgY3JlYXRlZCwgdGhlIHN0YW5kYnkgbG9va3MgZm9yIHhsX3J1bm5pbmdfeGFj dHMKKwkjIFdBTCByZWNvcmQgZnJvbSB0aGUgcmVzdGFydF9sc24gb253YXJkcy4gU28gZmly c3RseSwgd2FpdCB1bnRpbCB0aGUgc2xvdAorCSMgcmVzdGFydF9sc24gaXMgZXZhbHVhdGVk LgorCisJJHNlbGYtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlT RUxFQ1QgcmVzdGFydF9sc24gSVMgTk9UIE5VTEwKKwkJRlJPTSBwZ19jYXRhbG9nLnBnX3Jl cGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICckc2xvdF9uYW1lJworCV0pIG9y IGRpZSAidGltZWQgb3V0IHdhaXRpbmcgZm9yIGxvZ2ljYWwgc2xvdCB0byBjYWxjdWxhdGUg aXRzIHJlc3RhcnRfbHNuIjsKKworCSMgTm93IGFycmFuZ2UgZm9yIHRoZSB4bF9ydW5uaW5n X3hhY3RzIHJlY29yZCBmb3Igd2hpY2ggcGdfcmVjdmxvZ2ljYWwKKwkjIGlzIHdhaXRpbmcu CisJJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIHBnX2xvZ19zdGFu ZGJ5X3NuYXBzaG90KCknKTsKKworCSRoYW5kbGUtPmZpbmlzaCgpOworCisJaXMoJHNlbGYt PnNsb3QoJHNsb3RfbmFtZSktPnsnc2xvdF90eXBlJ30sICdsb2dpY2FsJywgJHNsb3RfbmFt ZSAuICcgb24gc3RhbmRieSBjcmVhdGVkJykKKwkJb3IgZGllICJjb3VsZCBub3QgY3JlYXRl IHNsb3QiIC4gJHNsb3RfbmFtZTsKK30KKworPXBvZAorCiA9YmFjawogCiA9Y3V0CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3JlY292 ZXJ5L21lc29uLmJ1aWxkCmluZGV4IDU5NDY1Yjk3ZjMuLmU4MzRhZDVlMGQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3JlY292 ZXJ5L21lc29uLmJ1aWxkCkBAIC00MCw2ICs0MCw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0 LzAzMl9yZWxmaWxlbm9kZV9yZXVzZS5wbCcsCiAgICAgICAndC8wMzNfcmVwbGF5X3RzcF9k cm9wcy5wbCcsCiAgICAgICAndC8wMzRfY3JlYXRlX2RhdGFiYXNlLnBsJywKKyAgICAgICd0 LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwnLAogICAgIF0sCiAgIH0sCiB9CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVj b2RpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVj b2RpbmcucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWI2ZDE5 ZDM3OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5k YnlfbG9naWNhbF9kZWNvZGluZy5wbApAQCAtMCwwICsxLDcwNiBAQAorIyBsb2dpY2FsIGRl Y29kaW5nIG9uIHN0YW5kYnkgOiB0ZXN0IGxvZ2ljYWwgZGVjb2RpbmcsCisjIHJlY292ZXJ5 IGNvbmZsaWN0IGFuZCBzdGFuZGJ5IHByb21vdGlvbi4KKwordXNlIHN0cmljdDsKK3VzZSB3 YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworbXkgKCRzdGRpbiwgJHN0 ZG91dCwgJHN0ZGVyciwgJGNhc2NhZGluZ19zdGRvdXQsICRjYXNjYWRpbmdfc3RkZXJyLCAk cmV0LCAkaGFuZGxlLCAkc2xvdCk7CisKK215ICRub2RlX3ByaW1hcnkgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnknKTsKK215ICRub2RlX3N0YW5kYnkgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnknKTsKK215ICRub2RlX2Nh c2NhZGluZ19zdGFuZGJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdjYXNj YWRpbmdfc3RhbmRieScpOworbXkgJGRlZmF1bHRfdGltZW91dCA9ICRQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0OworbXkgJHJlczsKKworIyBOYW1lIGZvciB0 aGUgcGh5c2ljYWwgc2xvdCBvbiBwcmltYXJ5CitteSAkcHJpbWFyeV9zbG90bmFtZSA9ICdw cmltYXJ5X3BoeXNpY2FsJzsKK215ICRzdGFuZGJ5X3BoeXNpY2FsX3Nsb3RuYW1lID0gJ3N0 YW5kYnlfcGh5c2ljYWwnOworCisjIGZpbmQgJHBhdCBpbiBsb2dmaWxlIG9mICRub2RlIGFm dGVyICRvZmYtdGggYnl0ZQorc3ViIGZpbmRfaW5fbG9nCit7CisJbXkgKCRub2RlLCAkcGF0 LCAkb2ZmKSA9IEBfOworCisJJG9mZiA9IDAgdW5sZXNzIGRlZmluZWQgJG9mZjsKKwlteSAk bG9nID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnNsdXJwX2ZpbGUoJG5vZGUtPmxvZ2Zp bGUpOworCXJldHVybiAwIGlmIChsZW5ndGgoJGxvZykgPD0gJG9mZik7CisKKwkkbG9nID0g c3Vic3RyKCRsb2csICRvZmYpOworCisJcmV0dXJuICRsb2cgPX4gbS8kcGF0LzsKK30KKwor IyBGZXRjaCB4bWluIGNvbHVtbnMgZnJvbSBzbG90J3MgcGdfcmVwbGljYXRpb25fc2xvdHMg cm93LCBhZnRlciB3YWl0aW5nIGZvcgorIyBnaXZlbiBib29sZWFuIGNvbmRpdGlvbiB0byBi ZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSByZWFjaGVkIGEgcXVpZXNjZW50IHN0YXRlLgorc3Vi IHdhaXRfZm9yX3htaW5zCit7CisJbXkgKCRub2RlLCAkc2xvdG5hbWUsICRjaGVja19leHBy KSA9IEBfOworCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFx WworCQlTRUxFQ1QgJGNoZWNrX2V4cHIKKwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0 aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICckc2xvdG5hbWUnOworCV0pIG9yIGRp ZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNsb3QgeG1pbnMgdG8gYWR2YW5jZSI7Cit9CisK KyMgQ3JlYXRlIHRoZSByZXF1aXJlZCBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkuCitzdWIg Y3JlYXRlX2xvZ2ljYWxfc2xvdHMKK3sKKwlteSAoJG5vZGUpID0gQF87CisJJG5vZGUtPmNy ZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieSgkbm9kZV9wcmltYXJ5LCAnaW5hY3RpdmVz bG90JywgJ3Rlc3RkYicpOworCSRub2RlLT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5k YnkoJG5vZGVfcHJpbWFyeSwgJ2FjdGl2ZXNsb3QnLCAndGVzdGRiJyk7Cit9CisKKyMgRHJv cCB0aGUgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5Lgorc3ViIGRyb3BfbG9naWNhbF9zbG90 cworeworCSRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJv cF9yZXBsaWNhdGlvbl9zbG90KCdpbmFjdGl2ZXNsb3QnKV0pOworCSRub2RlX3N0YW5kYnkt PnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdh Y3RpdmVzbG90JyldKTsKK30KKworIyBBY3F1aXJlIG9uZSBvZiB0aGUgc3RhbmRieSBsb2dp Y2FsIHNsb3RzIGNyZWF0ZWQgYnkgY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKS4KKyMgSW4gY2Fz ZSB3YWl0IGlzIHRydWUgd2UgYXJlIHdhaXRpbmcgZm9yIGFuIGFjdGl2ZSBwaWQgb24gdGhl ICdhY3RpdmVzbG90JyBzbG90LgorIyBJZiB3YWl0IGlzIG5vdCB0cnVlIGl0IG1lYW5zIHdl IGFyZSB0ZXN0aW5nIGEga25vd24gZmFpbHVyZSBzY2VuYXJpby4KK3N1YiBtYWtlX3Nsb3Rf YWN0aXZlCit7CisJbXkgKCRub2RlLCAkd2FpdCwgJHRvX3N0ZG91dCwgJHRvX3N0ZGVycikg PSBAXzsKKwlteSAkc2xvdF91c2VyX2hhbmRsZTsKKworCSRzbG90X3VzZXJfaGFuZGxlID0g SVBDOjpSdW46OnN0YXJ0KFsncGdfcmVjdmxvZ2ljYWwnLCAnLWQnLCAkbm9kZS0+Y29ubnN0 cigndGVzdGRiJyksICctUycsICdhY3RpdmVzbG90JywgJy1vJywgJ2luY2x1ZGUteGlkcz0w JywgJy1vJywgJ3NraXAtZW1wdHkteGFjdHM9MScsICctLW5vLWxvb3AnLCAnLS1zdGFydCcs ICctZicsICctJ10sICc+JywgJHRvX3N0ZG91dCwgJzI+JywgJHRvX3N0ZGVycik7CisKKwlp ZiAoJHdhaXQpCisJeworCQkjIG1ha2Ugc3VyZSBhY3RpdmVzbG90IGlzIGluIHVzZQorCQkk bm9kZS0+cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkJCSJTRUxFQ1QgRVhJU1RTIChT RUxFQ1QgMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdh Y3RpdmVzbG90JyBBTkQgYWN0aXZlX3BpZCBJUyBOT1QgTlVMTCkiCisJCSkgb3IgZGllICJz bG90IG5ldmVyIGJlY2FtZSBhY3RpdmUiOworCX0KKwlyZXR1cm4gJHNsb3RfdXNlcl9oYW5k bGU7Cit9CisKKyMgQ2hlY2sgcGdfcmVjdmxvZ2ljYWwgc3RkZXJyCitzdWIgY2hlY2tfcGdf cmVjdmxvZ2ljYWxfc3RkZXJyCit7CisJbXkgKCRzbG90X3VzZXJfaGFuZGxlLCAkY2hlY2tf c3RkZXJyKSA9IEBfOworCW15ICRyZXR1cm47CisKKwkjIG91ciBjbGllbnQgc2hvdWxkJ3Zl IHRlcm1pbmF0ZWQgaW4gcmVzcG9uc2UgdG8gdGhlIHdhbHNlbmRlciBlcnJvcgorCSRzbG90 X3VzZXJfaGFuZGxlLT5maW5pc2g7CisJJHJldHVybiA9ICQ/OworCWNtcF9vaygkcmV0dXJu LCAiIT0iLCAwLCAicGdfcmVjdmxvZ2ljYWwgZXhpdGVkIG5vbi16ZXJvIik7CisJaWYgKCRy ZXR1cm4pIHsKKwkJbGlrZSgkc3RkZXJyLCBxci8kY2hlY2tfc3RkZXJyLywgJ3Nsb3QgaGFz IGJlZW4gaW52YWxpZGF0ZWQnKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworIyBDaGVjayBp ZiBhbGwgdGhlIHNsb3RzIG9uIHN0YW5kYnkgYXJlIGRyb3BwZWQuIFRoZXNlIGluY2x1ZGUg dGhlICdhY3RpdmVzbG90JworIyB0aGF0IHdhcyBhY3F1aXJlZCBieSBtYWtlX3Nsb3RfYWN0 aXZlKCksIGFuZCB0aGUgbm9uLWFjdGl2ZSAnaW5hY3RpdmVzbG90Jy4KK3N1YiBjaGVja19z bG90c19kcm9wcGVkCit7CisJbXkgKCRzbG90X3VzZXJfaGFuZGxlKSA9IEBfOworCisJaXMo JG5vZGVfc3RhbmRieS0+c2xvdCgnaW5hY3RpdmVzbG90JyktPnsnc2xvdF90eXBlJ30sICcn LCAnaW5hY3RpdmVzbG90IG9uIHN0YW5kYnkgZHJvcHBlZCcpOworCWlzKCRub2RlX3N0YW5k YnktPnNsb3QoJ2FjdGl2ZXNsb3QnKS0+eydzbG90X3R5cGUnfSwgJycsICdhY3RpdmVzbG90 IG9uIHN0YW5kYnkgZHJvcHBlZCcpOworCisJY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJy KCRzbG90X3VzZXJfaGFuZGxlLCAiY29uZmxpY3Qgd2l0aCByZWNvdmVyeSIpOworfQorCisj IENoYW5nZSBob3Rfc3RhbmRieV9mZWVkYmFjayBhbmQgY2hlY2sgeG1pbiBhbmQgY2F0YWxv Z194bWluIHZhbHVlcy4KK3N1YiBjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dh aXRfZm9yX3htaW5zCit7CisJbXkgKCRoc2YsICRpbnZhbGlkYXRlZCkgPSBAXzsKKworCSRu b2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFxWworCWhvdF9z dGFuZGJ5X2ZlZWRiYWNrID0gJGhzZgorCV0pOworCisJJG5vZGVfc3RhbmRieS0+cmVsb2Fk OworCisJaWYgKCRoc2YgJiYgJGludmFsaWRhdGVkKQorCXsKKwkJIyBXaXRoIGhvdF9zdGFu ZGJ5X2ZlZWRiYWNrIG9uLCB4bWluIHNob3VsZCBhZHZhbmNlLAorCQkjIGJ1dCBjYXRhbG9n X3htaW4gc2hvdWxkIHN0aWxsIHJlbWFpbiBOVUxMIHNpbmNlIHRoZXJlIGlzIG5vIGxvZ2lj YWwgc2xvdC4KKwkJd2FpdF9mb3JfeG1pbnMoJG5vZGVfcHJpbWFyeSwgJHByaW1hcnlfc2xv dG5hbWUsCisJCQkgICAieG1pbiBJUyBOT1QgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5V TEwiKTsKKwl9CisJZWxzaWYgKCRoc2YpCisJeworCQkjIFdpdGggaG90X3N0YW5kYnlfZmVl ZGJhY2sgb24sIHhtaW4gYW5kIGNhdGFsb2dfeG1pbiBzaG91bGQgYWR2YW5jZS4KKwkJd2Fp dF9mb3JfeG1pbnMoJG5vZGVfcHJpbWFyeSwgJHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAi eG1pbiBJUyBOT1QgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5PVCBOVUxMIik7CisJfQor CWVsc2UKKwl7CisJCSMgQm90aCBzaG91bGQgYmUgTlVMTCBzaW5jZSBoc19mZWVkYmFjayBp cyBvZmYKKwkJd2FpdF9mb3JfeG1pbnMoJG5vZGVfcHJpbWFyeSwgJHByaW1hcnlfc2xvdG5h bWUsCisJCQkgICAieG1pbiBJUyBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTlVMTCIpOwor CisJfQorfQorCisjIENoZWNrIGNvbmZsaWN0aW5nIHN0YXR1cyBpbiBwZ19yZXBsaWNhdGlv bl9zbG90cy4KK3N1YiBjaGVja19zbG90c19jb25mbGljdGluZ19zdGF0dXMKK3sKKwlteSAo JGNvbmZsaWN0aW5nKSA9IEBfOworCisJaWYgKCRjb25mbGljdGluZykKKwl7CisJCSRyZXMg PSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoCisJCQkJJ3Bvc3RncmVzJywgcXEoCisJCQkJ IHNlbGVjdCBib29sX2FuZChjb25mbGljdGluZykgZnJvbSBwZ19yZXBsaWNhdGlvbl9zbG90 czspKTsKKworCQlpcygkcmVzLCAndCcsCisJCQkiTG9naWNhbCBzbG90cyBhcmUgcmVwb3J0 ZWQgYXMgY29uZmxpY3RpbmciKTsKKwl9CisJZWxzZQorCXsKKwkJJHJlcyA9ICRub2RlX3N0 YW5kYnktPnNhZmVfcHNxbCgKKwkJCQkncG9zdGdyZXMnLCBxcSgKKwkJCQlzZWxlY3QgYm9v bF9vcihjb25mbGljdGluZykgZnJvbSBwZ19yZXBsaWNhdGlvbl9zbG90czspKTsKKworCQlp cygkcmVzLCAnZicsCisJCQkiTG9naWNhbCBzbG90cyBhcmUgcmVwb3J0ZWQgYXMgbm9uIGNv bmZsaWN0aW5nIik7CisJfQorfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSW5p dGlhbGl6ZSBwcmltYXJ5IG5vZGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiskbm9k ZV9wcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSwgaGFzX2FyY2hpdmluZyA9 PiAxKTsKKyRub2RlX3ByaW1hcnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBx eword2FsX2xldmVsID0gJ2xvZ2ljYWwnCittYXhfcmVwbGljYXRpb25fc2xvdHMgPSA0Citt YXhfd2FsX3NlbmRlcnMgPSA0Citsb2dfbWluX21lc3NhZ2VzID0gJ2RlYnVnMicKK2xvZ19l cnJvcl92ZXJib3NpdHkgPSB2ZXJib3NlCit9KTsKKyRub2RlX3ByaW1hcnktPmR1bXBfaW5m bzsKKyRub2RlX3ByaW1hcnktPnN0YXJ0OworCiskbm9kZV9wcmltYXJ5LT5wc3FsKCdwb3N0 Z3JlcycsIHFbQ1JFQVRFIERBVEFCQVNFIHRlc3RkYl0pOworCiskbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1NFTEVDVCAqIEZST00gcGdfY3JlYXRlX3BoeXNpY2Fs X3JlcGxpY2F0aW9uX3Nsb3QoJyRwcmltYXJ5X3Nsb3RuYW1lJyk7XSk7CisKKyMgQ2hlY2sg Y29uZmxpY3RpbmcgaXMgTlVMTCBmb3IgcGh5c2ljYWwgc2xvdAorJHJlcyA9ICRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCSBTRUxFQ1QgY29uZmxp Y3RpbmcgaXMgbnVsbCBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIHdoZXJlIHNsb3RfbmFt ZSA9ICckcHJpbWFyeV9zbG90bmFtZSc7XSk7CisKK2lzKCRyZXMsICd0JywKKwkiUGh5c2lj YWwgc2xvdCByZXBvcnRzIGNvbmZsaWN0aW5nIGFzIE5VTEwiKTsKKworbXkgJGJhY2t1cF9u YW1lID0gJ2IxJzsKKyRub2RlX3ByaW1hcnktPmJhY2t1cCgkYmFja3VwX25hbWUpOworCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbml0aWFsaXplIHN0YW5kYnkgbm9kZQorIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1 cCgKKwkkbm9kZV9wcmltYXJ5LCAkYmFja3VwX25hbWUsCisJaGFzX3N0cmVhbWluZyA9PiAx LAorCWhhc19yZXN0b3JpbmcgPT4gMSk7Ciskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwlxcVtwcmltYXJ5X3Nsb3RfbmFtZSA9ICckcHJpbWFyeV9z bG90bmFtZSddKTsKKyRub2RlX3N0YW5kYnktPnN0YXJ0OworJG5vZGVfcHJpbWFyeS0+d2Fp dF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7Ciskbm9kZV9zdGFuZGJ5LT5z YWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1NFTEVDVCAqIEZST00gcGdfY3JlYXRlX3BoeXNpY2Fs X3JlcGxpY2F0aW9uX3Nsb3QoJyRzdGFuZGJ5X3BoeXNpY2FsX3Nsb3RuYW1lJyk7XSk7CisK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEluaXRpYWxpemUgY2FzY2FkaW5nIHN0YW5k Ynkgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyRub2RlX3N0YW5kYnktPmJhY2t1 cCgkYmFja3VwX25hbWUpOworJG5vZGVfY2FzY2FkaW5nX3N0YW5kYnktPmluaXRfZnJvbV9i YWNrdXAoCisJJG5vZGVfc3RhbmRieSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcg PT4gMSwKKwloYXNfcmVzdG9yaW5nID0+IDEpOworJG5vZGVfY2FzY2FkaW5nX3N0YW5kYnkt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxW3ByaW1hcnlfc2xvdF9uYW1l ID0gJyRzdGFuZGJ5X3BoeXNpY2FsX3Nsb3RuYW1lJ10pOworJG5vZGVfY2FzY2FkaW5nX3N0 YW5kYnktPnN0YXJ0OworJG5vZGVfc3RhbmRieS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAo JG5vZGVfY2FzY2FkaW5nX3N0YW5kYnksICRub2RlX3ByaW1hcnkpOworCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHRoYXQg bG9naWNhbCBkZWNvZGluZyBvbiB0aGUgc3RhbmRieQorIyBiZWhhdmVzIGNvcnJlY3RseS4K KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygkbm9k ZV9zdGFuZGJ5KTsKKworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtD UkVBVEUgVEFCTEUgZGVjb2RpbmdfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7XSk7Ciskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0lOU0VSVCBJTlRPIGRlY29kaW5n X3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEw KSBzO10pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9k ZV9zdGFuZGJ5KTsKKworbXkgJHJlc3VsdCA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgn dGVzdGRiJywKKwlxcVtTRUxFQ1QgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdhY3Rp dmVzbG90JywgTlVMTCwgTlVMTCk7XSk7CisKKyMgdGVzdCBpZiBiYXNpYyBkZWNvZGluZyB3 b3JrcworaXMoc2NhbGFyKG15IEBmb29iYXIgPSBzcGxpdCAvXi9tLCAkcmVzdWx0KSwKKwkx NCwgJ0RlY29kaW5nIHByb2R1Y2VkIDE0IHJvd3MgKDIgQkVHSU4vQ09NTUlUIGFuZCAxMCBy b3dzKScpOworCisjIEluc2VydCBzb21lIHJvd3MgYW5kIHZlcmlmeSB0aGF0IHdlIGdldCB0 aGUgc2FtZSByZXN1bHRzIGZyb20gcGdfcmVjdmxvZ2ljYWwKKyMgYW5kIHRoZSBTUUwgaW50 ZXJmYWNlLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW0lOU0VS VCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVy YXRlX3NlcmllcygxLDQpIHM7XQorKTsKKworbXkgJGV4cGVjdGVkID0gcXtCRUdJTgordGFi bGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToxIHlbdGV4dF06 JzEnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjIg eVt0ZXh0XTonMicKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50 ZWdlcl06MyB5W3RleHRdOiczJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VS VDogeFtpbnRlZ2VyXTo0IHlbdGV4dF06JzQnCitDT01NSVR9OworCiskbm9kZV9wcmltYXJ5 LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKKworbXkgJHN0ZG91 dF9zcWwgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNU IGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3RpdmVzbG90Jywg TlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAn MScpO10KKyk7CisKK2lzKCRzdGRvdXRfc3FsLCAkZXhwZWN0ZWQsICdnb3QgZXhwZWN0ZWQg b3V0cHV0IGZyb20gU1FMIGRlY29kaW5nIHNlc3Npb24nKTsKKworbXkgJGVuZHBvcyA9ICRu b2RlX3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwkiU0VMRUNUIGxzbiBGUk9NIHBn X2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMKSBP UkRFUiBCWSBsc24gREVTQyBMSU1JVCAxOyIKKyk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBh ZnRlciAkZW5kcG9zLCB3aGljaCB3ZSB3b24ndCByZWFkLgorJG5vZGVfcHJpbWFyeS0+c2Fm ZV9wc3FsKCd0ZXN0ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBT RUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LDUwKSBzO10KKyk7CisK KyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSk7CisKK215 ICRzdGRvdXRfcmVjdiA9ICRub2RlX3N0YW5kYnktPnBnX3JlY3Zsb2dpY2FsX3VwdG8oCisg ICAgJ3Rlc3RkYicsICdhY3RpdmVzbG90JywgJGVuZHBvcywgJGRlZmF1bHRfdGltZW91dCwK KyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4gJzAnLAorICAgICdza2lwLWVtcHR5LXhhY3Rz JyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9yZWN2KTsKK2lzKCRzdGRvdXRfcmVjdiwgJGV4 cGVjdGVkLAorICAgICdnb3Qgc2FtZSBleHBlY3RlZCBvdXRwdXQgZnJvbSBwZ19yZWN2bG9n aWNhbCBkZWNvZGluZyBzZXNzaW9uJyk7CisKKyRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlf dW50aWwoJ3Rlc3RkYicsCisJIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdfcmVw bGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2FjdGl2ZXNsb3QnIEFORCBhY3Rp dmVfcGlkIElTIE5VTEwpIgorKSBvciBkaWUgInNsb3QgbmV2ZXIgYmVjYW1lIGluYWN0aXZl IjsKKworJHN0ZG91dF9yZWN2ID0gJG5vZGVfc3RhbmRieS0+cGdfcmVjdmxvZ2ljYWxfdXB0 bygKKyAgICAndGVzdGRiJywgJ2FjdGl2ZXNsb3QnLCAkZW5kcG9zLCAkZGVmYXVsdF90aW1l b3V0LAorICAgICdpbmNsdWRlLXhpZHMnICAgICA9PiAnMCcsCisgICAgJ3NraXAtZW1wdHkt eGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rkb3V0X3JlY3YpOworaXMoJHN0ZG91dF9yZWN2 LCAnJywgJ3BnX3JlY3Zsb2dpY2FsIGFja25vd2xlZGdlZCBjaGFuZ2VzJyk7CisKKyRub2Rl X3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIERBVEFCQVNFIG90aGVy ZGInKTsKKworaXMoICRub2RlX3ByaW1hcnktPnBzcWwoCisgICAgICAgICdvdGhlcmRiJywK KyAgICAgICAgIlNFTEVDVCBsc24gRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2Vz KCdhY3RpdmVzbG90JywgTlVMTCwgTlVMTCkgT1JERVIgQlkgbHNuIERFU0MgTElNSVQgMTsi CisgICAgKSwKKyAgICAzLAorICAgICdyZXBsYXlpbmcgbG9naWNhbCBzbG90IGZyb20gYW5v dGhlciBkYXRhYmFzZSBmYWlscycpOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ry b3BfbG9naWNhbF9zbG90cygpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25mbGljdDogSW52YWxpZGF0ZSBj b25mbGljdGluZyBzbG90cywgaW5jbHVkaW5nIGluLXVzZSBzbG90cworIyBTY2VuYXJpbyAx OiBob3Rfc3RhbmRieV9mZWVkYmFjayBvZmYgYW5kIHZhY3V1bSBGVUxMCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGNyZWF0ZSB0 aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7 CisKKyMgT25lIHdheSB0byBwcm9kdWNlIHJlY292ZXJ5IGNvbmZsaWN0IGlzIHRvIGNyZWF0 ZS9kcm9wIGEgcmVsYXRpb24gYW5kCisjIGxhdW5jaCBhIHZhY3V1bSBmdWxsIG9uIHBnX2Ns YXNzIHdpdGggaG90X3N0YW5kYnlfZmVlZGJhY2sgdHVybmVkIG9mZiBvbgorIyB0aGUgc3Rh bmRieS4KK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMo MCwxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgMSwg XCRzdGRvdXQsIFwkc3RkZXJyKTsKKworIyBUaGlzIHNob3VsZCB0cmlnZ2VyIHRoZSBjb25m bGljdAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUgVEFC TEUgY29uZmxpY3RfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7XSk7Ciskbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0RST1AgVEFCTEUgY29uZmxpY3RfdGVzdDtdKTsK KyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgJ1ZBQ1VVTSBmdWxsIHBnX2Ns YXNzOycpOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9k ZV9zdGFuZGJ5KTsKKworIyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29rKCBmaW5kX2lu X2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgb2Jzb2xldGUgcmVw bGljYXRpb24gc2xvdCBcImluYWN0aXZlc2xvdFwiIiksCisgICdpbmFjdGl2ZXNsb3Qgc2xv dCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIHdpdGggdmFjdXVtIEZVTEwgb24gcGdfY2xhc3Mn KTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRh dGluZyBvYnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIiksCisgICdh Y3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxM IG9uIHBnX2NsYXNzJyk7CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25m bGljdHMuY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKK29rKCAk bm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVj dCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMSkgZnJvbSBwZ19zdGF0X2RhdGFiYXNl X2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9h Y3RpdmVfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcg Y29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCisjIFZlcmlmeSBz bG90cyBhcmUgcmVwb3J0ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xv dHMKK2NoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cygxKTsKKworJGhhbmRsZSA9IG1h a2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgMCwgXCRzdGRvdXQsIFwkc3RkZXJyKTsK KworIyBXZSBhcmUgbm90IGFibGUgdG8gcmVhZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhhcyBi ZWVuIGludmFsaWRhdGVkCitjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwg ImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xv dFwiIik7CisKKyMgVHVybiBob3Rfc3RhbmRieV9mZWVkYmFjayBiYWNrIG9uCitjaGFuZ2Vf aG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDEsMSk7CisKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292 ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcg aW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDI6IGNvbmZsaWN0IGR1ZSB0byByb3cgcmVtb3Zh bCB3aXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9mZi4KKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0 byBzZWFyY2ggZnJvbSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCitteSAkbG9nc3RhcnQgPSAt cyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMK K2Ryb3BfbG9naWNhbF9zbG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cwor Y3JlYXRlX2xvZ2ljYWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMgT25lIHdheSB0byBw cm9kdWNlIHJlY292ZXJ5IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEgcmVsYXRpb24g YW5kCisjIGxhdW5jaCBhIHZhY3V1bSBvbiBwZ19jbGFzcyB3aXRoIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHR1cm5lZCBvZmYgb24gdGhlIHN0YW5kYnkuCitjaGFuZ2VfaG90X3N0YW5kYnlf ZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDAsMSk7CisKKyRoYW5kbGUgPSBtYWtlX3Ns b3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKyMg VGhpcyBzaG91bGQgdHJpZ2dlciB0aGUgY29uZmxpY3QKKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGNvbmZsaWN0X3Rlc3QoeCBpbnRlZ2Vy LCB5IHRleHQpO10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtE Uk9QIFRBQkxFIGNvbmZsaWN0X3Rlc3Q7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsICdWQUNVVU0gcGdfY2xhc3M7Jyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRf Zm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOworCisjIG1lc3NhZ2Ugc2hvdWxk IGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImlu dmFsaWRhdGluZyBvYnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90IFwiaW5hY3RpdmVzbG90XCIi LCAkbG9nc3RhcnQpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxv Z2dlZCB3aXRoIHZhY3V1bSBvbiBwZ19jbGFzcycpOworCitvayggZmluZF9pbl9sb2coCisg ICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0aW5nIG9ic29sZXRlIHJlcGxpY2F0aW9u IHNsb3QgXCJhY3RpdmVzbG90XCIiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90 IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCB2YWN1dW0gb24gcGdfY2xhc3MnKTsKKwor IyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cy5jb25mbF9hY3RpdmVf bG9naWNhbHNsb3QgaGFzIGJlZW4gdXBkYXRlZAorIyB3ZSBub3cgZXhwZWN0IDIgY29uZmxp Y3RzIHJlcG9ydGVkIGFzIHRoZSBjb3VudGVyIHBlcnNpc3QgYWNyb3NzIHJlbG9hZHMKK29r KCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNl bGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMikgZnJvbSBwZ19zdGF0X2RhdGFi YXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25m bF9hY3RpdmVfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRp bmcgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCisjIFZlcmlm eSBzbG90cyBhcmUgcmVwb3J0ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25f c2xvdHMKK2NoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cygxKTsKKworJGhhbmRsZSA9 IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgMCwgXCRzdGRvdXQsIFwkc3RkZXJy KTsKKworIyBXZSBhcmUgbm90IGFibGUgdG8gcmVhZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhh cyBiZWVuIGludmFsaWRhdGVkCitjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRs ZSwgImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZl c2xvdFwiIik7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBTYW1lIGFzIFNjZW5hcmlvIDIgYnV0 IG9uIGEgbm9uIGNhdGFsb2cgdGFibGUKKyMgU2NlbmFyaW8gMzogTm8gY29uZmxpY3QgZXhw ZWN0ZWQuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCisjIGdldCB0aGUgcG9zaXRpb24gdG8gc2VhcmNoIGZyb20gaW4gdGhlIHN0YW5k YnkgbG9nZmlsZQorJGxvZ3N0YXJ0ID0gLXMgJG5vZGVfc3RhbmRieS0+bG9nZmlsZTsKKwor IyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCitkcm9wX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBj cmVhdGUgdGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCRub2RlX3N0 YW5kYnkpOworCisjIHB1dCBob3Qgc3RhbmRieSBmZWVkYmFjayB0byBvZmYKK2NoYW5nZV9o b3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMoMCwxKTsKKworJGhhbmRs ZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgMSwgXCRzdGRvdXQsIFwkc3Rk ZXJyKTsKKworIyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0Ciskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBjb25mbGljdF90 ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn dGVzdGRiJywgcXFbSU5TRVJUIElOVE8gY29uZmxpY3RfdGVzdCh4LHkpIFNFTEVDVCBzLCBz Ojp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdKTsKKyRub2RlX3ByaW1hcnkt PnNhZmVfcHNxbCgndGVzdGRiJywgcXFbVVBEQVRFIGNvbmZsaWN0X3Rlc3Qgc2V0IHg9MSwg eT0xO10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCAnVkFDVVVNIGNv bmZsaWN0X3Rlc3Q7Jyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRj aHVwKCRub2RlX3N0YW5kYnkpOworCisjIG1lc3NhZ2Ugc2hvdWxkIG5vdCBiZSBpc3N1ZWQK K29rKCAhZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0aW5n IG9ic29sZXRlIHNsb3QgXCJpbmFjdGl2ZXNsb3RcIiIsICRsb2dzdGFydCksCisgICdpbmFj dGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbm90IGxvZ2dlZCB3aXRoIHZhY3V1bSBv biBjb25mbGljdF90ZXN0Jyk7CisKK29rKCAhZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFu ZGJ5LAorICAiaW52YWxpZGF0aW5nIG9ic29sZXRlIHNsb3QgXCJhY3RpdmVzbG90XCIiLCAk bG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBub3QgbG9n Z2VkIHdpdGggdmFjdXVtIG9uIGNvbmZsaWN0X3Rlc3QnKTsKKworIyBWZXJpZnkgdGhhdCBw Z19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cy5jb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgaGFz IG5vdCBiZWVuIHVwZGF0ZWQKKyMgd2Ugbm93IHN0aWxsIGV4cGVjdCAyIGNvbmZsaWN0cyBy ZXBvcnRlZCBhcyB0aGUgY291bnRlciBwZXJzaXN0IGFjcm9zcyByZWxvYWRzCitvayggJG5v ZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMnLAorCSJzZWxlY3Qg KGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCA9IDIpIGZyb20gcGdfc3RhdF9kYXRhYmFzZV9j b25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwgJ3QnKSwKKwknY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IG5vdCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBvdXQgd2FpdGlu ZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyMgVmVyaWZ5 IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBub24gY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRp b25fc2xvdHMKK2NoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cygwKTsKKworIyBUdXJu IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVk YmFja19hbmRfd2FpdF9mb3JfeG1pbnMoMSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJ bnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisj IFNjZW5hcmlvIDQ6IGNvbmZsaWN0IGR1ZSB0byBvbi1hY2Nlc3MgcHJ1bmluZy4KKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0 IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJvbSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCisk bG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxv Z2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9zbG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9n aWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMg T25lIHdheSB0byBwcm9kdWNlIHJlY292ZXJ5IGNvbmZsaWN0IGlzIHRvIHRyaWdnZXIgYW4g b24tYWNjZXNzIHBydW5pbmcKKyMgb24gYSByZWxhdGlvbiBtYXJrZWQgYXMgdXNlcl9jYXRh bG9nX3RhYmxlLgorY2hhbmdlX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0X2Zvcl94 bWlucygwLDApOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFuZGJ5 LCAxLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworCisjIFRoaXMgc2hvdWxkIHRyaWdnZXIgdGhl IGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFU RSBUQUJMRSBwcnVuKGlkIGludGVnZXIsIHMgY2hhcigyMDAwKSkgV0lUSCAoZmlsbGZhY3Rv ciA9IDc1LCB1c2VyX2NhdGFsb2dfdGFibGUgPSB0cnVlKTtdKTsKKyRub2RlX3ByaW1hcnkt PnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5TRVJUIElOVE8gcHJ1biBWQUxVRVMgKDEsICdB Jyk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1VQREFURSBw cnVuIFNFVCBzID0gJ0InO10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGIn LCBxcVtVUERBVEUgcHJ1biBTRVQgcyA9ICdDJztdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgndGVzdGRiJywgcXFbVVBEQVRFIHBydW4gU0VUIHMgPSAnRCc7XSk7Ciskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1VQREFURSBwcnVuIFNFVCBzID0gJ0Un O10pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9z dGFuZGJ5KTsKKworIyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29rKCBmaW5kX2luX2xv ZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgb2Jzb2xldGUgcmVwbGlj YXRpb24gc2xvdCBcImluYWN0aXZlc2xvdFwiIiwgJGxvZ3N0YXJ0KSwKKyAgJ2luYWN0aXZl c2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCBvbi1hY2Nlc3MgcHJ1bmlu ZycpOworCitvayggZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxp ZGF0aW5nIG9ic29sZXRlIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiLCAkbG9n c3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0 aCBvbi1hY2Nlc3MgcHJ1bmluZycpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJh c2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVk CisjIHdlIG5vdyBleHBlY3QgMyBjb25mbGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIg cGVyc2lzdCBhY3Jvc3MgcmVsb2Fkcworb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlf dW50aWwoCisJJ3Bvc3RncmVzJywKKwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNs b3QgPSAzKSBmcm9tIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUg PSAndGVzdGRiJyIsICd0JyksCisJJ2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVk Jykgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3Qg dG8gYmUgdXBkYXRlZCI7CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25m bGljdGluZyBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rp bmdfc3RhdHVzKDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFu ZGJ5LCAwLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworCisjIFdlIGFyZSBub3QgYWJsZSB0byBy ZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKK2NoZWNrX3Bn X3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLCAiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2Fs IHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiKTsKKworIyBUdXJuIGhvdF9zdGFu ZGJ5X2ZlZWRiYWNrIGJhY2sgb24KK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRf d2FpdF9mb3JfeG1pbnMoMSwgMSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRl IGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlv IDU6IGluY29ycmVjdCB3YWxfbGV2ZWwgb24gcHJpbWFyeS4KKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlv biB0byBzZWFyY2ggZnJvbSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCiskbG9nc3RhcnQgPSAt cyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMK K2Ryb3BfbG9naWNhbF9zbG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cwor Y3JlYXRlX2xvZ2ljYWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyRoYW5kbGUgPSBtYWtl X3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisK KyMgTWFrZSBwcmltYXJ5IHdhbF9sZXZlbCByZXBsaWNhLiBUaGlzIHdpbGwgdHJpZ2dlciBz bG90IGNvbmZsaWN0LgorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicscVsKK3dhbF9sZXZlbCA9ICdyZXBsaWNhJworXSk7Ciskbm9kZV9wcmltYXJ5LT5y ZXN0YXJ0OworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9k ZV9zdGFuZGJ5KTsKKworIyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29rKCBmaW5kX2lu X2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgb2Jzb2xldGUgcmVw bGljYXRpb24gc2xvdCBcImluYWN0aXZlc2xvdFwiIiwgJGxvZ3N0YXJ0KSwKKyAgJ2luYWN0 aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgZHVlIHRvIHdhbF9sZXZlbCcp OworCitvayggZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0 aW5nIG9ic29sZXRlIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiLCAkbG9nc3Rh cnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgZHVlIHRv IHdhbF9sZXZlbCcpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxp Y3RzLmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5v dyBleHBlY3QgNCBjb25mbGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBh Y3Jvc3MgcmVsb2Fkcworb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJ J3Bvc3RncmVzJywKKwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSA0KSBm cm9tIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRi JyIsICd0JyksCisJJ2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGll ICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBk YXRlZCI7CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBp biBwZ19yZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVz KDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFuZGJ5LCAwLCBc JHN0ZG91dCwgXCRzdGRlcnIpOworIyBXZSBhcmUgbm90IGFibGUgdG8gcmVhZCBmcm9tIHRo ZSBzbG90IGFzIGl0IHJlcXVpcmVzIHdhbF9sZXZlbCBhdCBsZWFzdCBsb2dpY2FsIG9uIHRo ZSBwcmltYXJ5IHNlcnZlcgorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUs ICJsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsIHRvIGJl IGF0IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyIik7CisKKyMgUmVzdG9y ZSBwcmltYXJ5IHdhbF9sZXZlbAorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicscVsKK3dhbF9sZXZlbCA9ICdsb2dpY2FsJworXSk7Ciskbm9kZV9wcmlt YXJ5LT5yZXN0YXJ0OworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAo JG5vZGVfc3RhbmRieSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0 YW5kYnksIDAsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisjIGFzIHRoZSBzbG90IGhhcyBiZWVu IGludmFsaWRhdGVkIHdlIHNob3VsZCBub3QgYmUgYWJsZSB0byByZWFkCitjaGVja19wZ19y ZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwgImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCBy ZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIik7CisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIERST1AgREFUQUJBU0Ugc2hv dWxkIGRyb3BzIGl0J3Mgc2xvdHMsIGluY2x1ZGluZyBhY3RpdmUgc2xvdHMuCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGRyb3Ag dGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9zbG90cygpOworCisjIGNyZWF0ZSB0 aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7 CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDEsIFwkc3Rk b3V0LCBcJHN0ZGVycik7CisjIENyZWF0ZSBhIHNsb3Qgb24gYSBkYXRhYmFzZSB0aGF0IHdv dWxkIG5vdCBiZSBkcm9wcGVkLiBUaGlzIHNsb3Qgc2hvdWxkIG5vdAorIyBnZXQgZHJvcHBl ZC4KKyRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieSgkbm9k ZV9wcmltYXJ5LCAnb3RoZXJzbG90JywgJ3Bvc3RncmVzJyk7CisKKyMgZHJvcGRiIG9uIHRo ZSBwcmltYXJ5IHRvIHZlcmlmeSBzbG90cyBhcmUgZHJvcHBlZCBvbiBzdGFuZGJ5Ciskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcVtEUk9QIERBVEFCQVNFIHRlc3Rk Yl0pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9z dGFuZGJ5KTsKKworaXMoJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ cVtTRUxFQ1QgRVhJU1RTKFNFTEVDVCAxIEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFt ZSA9ICd0ZXN0ZGInKV0pLCAnZicsCisJJ2RhdGFiYXNlIGRyb3BwZWQgb24gc3RhbmRieScp OworCitjaGVja19zbG90c19kcm9wcGVkKCRoYW5kbGUpOworCitpcygkbm9kZV9zdGFuZGJ5 LT5zbG90KCdvdGhlcnNsb3QnKS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwnLAorCSdvdGhl cnNsb3Qgb24gc3RhbmRieSBub3QgZHJvcHBlZCcpOworCisjIENsZWFudXAgOiBtYW51YWxs eSBkcm9wIHRoZSBzbG90IHRoYXQgd2FzIG5vdCBkcm9wcGVkLgorJG5vZGVfc3RhbmRieS0+ cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ290 aGVyc2xvdCcpXSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFRlc3Qgc3RhbmRieSBwcm9tb3Rpb24gYW5kIGxvZ2ljYWwgZGVj b2RpbmcgYmVoYXZpb3IKKyMgYWZ0ZXIgdGhlIHN0YW5kYnkgZ2V0cyBwcm9tb3RlZC4KKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRu b2RlX3N0YW5kYnktPnJlbG9hZDsKKworJG5vZGVfcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMn LCBxW0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNx bCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGRlY29kaW5nX3Rlc3QoeCBpbnRlZ2VyLCB5 IHRleHQpO10pOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2lj YWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3Rz IG9uIHRoZSBjYXNjYWRpbmcgc3RhbmRieSB0b28KK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCRu b2RlX2Nhc2NhZGluZ19zdGFuZGJ5KTsKKworIyBNYWtlIHNsb3RzIGFjdGl2ZXMKKyRoYW5k bGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0 ZGVycik7CitteSAkY2FzY2FkaW5nX2hhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVf Y2FzY2FkaW5nX3N0YW5kYnksIDEsIFwkY2FzY2FkaW5nX3N0ZG91dCwgXCRjYXNjYWRpbmdf c3RkZXJyKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGJlZm9yZSB0aGUgcHJvbW90aW9uCisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVj b2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsNCkgcztdCispOworCisjIFdhaXQgZm9yIGJvdGggc3RhbmRieXMgdG8gY2F0Y2h1cAor JG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7 Ciskbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9jYXNjYWRp bmdfc3RhbmRieSwgJG5vZGVfcHJpbWFyeSk7CisKKyMgcHJvbW90ZQorJG5vZGVfc3RhbmRi eS0+cHJvbW90ZTsKKworIyBpbnNlcnQgc29tZSByb3dzIG9uIHByb21vdGVkIHN0YW5kYnkK KyRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtJTlNFUlQgSU5UTyBk ZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNSw3KSBzO10KKyk7CisKKyMgV2FpdCBmb3IgdGhlIGNhc2NhZGluZyBzdGFuZGJ5IHRv IGNhdGNodXAKKyRub2RlX3N0YW5kYnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2Rl X2Nhc2NhZGluZ19zdGFuZGJ5KTsKKworJGV4cGVjdGVkID0gcXtCRUdJTgordGFibGUgcHVi bGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToxIHlbdGV4dF06JzEnCit0 YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjIgeVt0ZXh0 XTonMicKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06 MyB5W3RleHRdOiczJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtp bnRlZ2VyXTo0IHlbdGV4dF06JzQnCitDT01NSVQKK0JFR0lOCit0YWJsZSBwdWJsaWMuZGVj b2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjUgeVt0ZXh0XTonNScKK3RhYmxlIHB1 YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NiB5W3RleHRdOic2Jwor dGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo3IHlbdGV4 dF06JzcnCitDT01NSVR9OworCisjIGNoZWNrIHRoYXQgd2UgYXJlIGRlY29kaW5nIHByZSBh bmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0ZWQgcm93cworJHN0ZG91dF9zcWwgPSAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19s b2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdpbmFjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAn aW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKwor aXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBT UUwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBwcm9tb3RlZCBzdGFuZGJ5Jyk7CisKKyMgY2hlY2sg dGhhdCB3ZSBhcmUgZGVjb2RpbmcgcHJlIGFuZCBwb3N0IHByb21vdGlvbiBpbnNlcnRlZCBy b3dzCisjIHdpdGggcGdfcmVjdmxvZ2ljYWwgdGhhdCBoYXMgc3RhcnRlZCBiZWZvcmUgdGhl IHByb21vdGlvbgorbXkgJHB1bXBfdGltZW91dCA9IElQQzo6UnVuOjp0aW1lcigkUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisKK29rKCBwdW1wX3VudGls KAorICAgICAgICAkaGFuZGxlLCAkcHVtcF90aW1lb3V0LCBcJHN0ZG91dCwgcXIvXi4qQ09N TUlULipDT01NSVQkL3MpLAorICAgICdnb3QgMiBDT01NSVQgZnJvbSBwZ19yZWN2bG9naWNh bCBvdXRwdXQnKTsKKworY2hvbXAoJHN0ZG91dCk7Citpcygkc3Rkb3V0LCAkZXhwZWN0ZWQs CisgICAgJ2dvdCBzYW1lIGV4cGVjdGVkIG91dHB1dCBmcm9tIHBnX3JlY3Zsb2dpY2FsIGRl Y29kaW5nIHNlc3Npb24nKTsKKworIyBjaGVjayB0aGF0IHdlIGFyZSBkZWNvZGluZyBwcmUg YW5kIHBvc3QgcHJvbW90aW9uIGluc2VydGVkIHJvd3Mgb24gdGhlIGNhc2NhZGluZyBzdGFu ZGJ5Ciskc3Rkb3V0X3NxbCA9ICRub2RlX2Nhc2NhZGluZ19zdGFuZGJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19j aGFuZ2VzKCdpbmFjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAn LCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9zcWwsICRl eHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lv biBvbiBjYXNjYWRpbmcgc3RhbmRieScpOworCisjIGNoZWNrIHRoYXQgd2UgYXJlIGRlY29k aW5nIHByZSBhbmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0ZWQgcm93cworIyB3aXRoIHBnX3Jl Y3Zsb2dpY2FsIHRoYXQgaGFzIHN0YXJ0ZWQgYmVmb3JlIHRoZSBwcm9tb3Rpb24gb24gdGhl IGNhc2NhZGluZyBzdGFuZGJ5CitvayggcHVtcF91bnRpbCgKKyAgICAgICAgJGNhc2NhZGlu Z19oYW5kbGUsICRwdW1wX3RpbWVvdXQsIFwkY2FzY2FkaW5nX3N0ZG91dCwgcXIvXi4qQ09N TUlULipDT01NSVQkL3MpLAorICAgICdnb3QgMiBDT01NSVQgZnJvbSBwZ19yZWN2bG9naWNh bCBvdXRwdXQnKTsKKworY2hvbXAoJGNhc2NhZGluZ19zdGRvdXQpOworaXMoJGNhc2NhZGlu Z19zdGRvdXQsICRleHBlY3RlZCwKKyAgICAnZ290IHNhbWUgZXhwZWN0ZWQgb3V0cHV0IGZy b20gcGdfcmVjdmxvZ2ljYWwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBjYXNjYWRpbmcgc3RhbmRi eScpOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuMzQuMQoK --------------9IFCIzDt0tUi9n0JUWtvR6ZK Content-Type: text/plain; charset=UTF-8; name="v63-0004-For-cascading-replication-wake-up-physical-walse.patch" Content-Disposition: attachment; filename*0="v63-0004-For-cascading-replication-wake-up-physical-walse.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjOGNjNzI1Yjk2N2E3MDVmNDYyNjA4OWYwODNkNTYxOTBkNWM1ZDQ0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJ0cmFuZCBEcm91dm90IDxiZXJ0cmFuZGRyb3V2 b3QucGdAZ21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMTY6NDY6MDkgKzAwMDAK U3ViamVjdDogW1BBVENIIHY2MyA0LzZdIEZvciBjYXNjYWRpbmcgcmVwbGljYXRpb24sIHdh a2UgdXAgcGh5c2ljYWwKIHdhbHNlbmRlcnMgc2VwYXJhdGVseSBmcm9tIGxvZ2ljYWwgd2Fs c2VuZGVycy4KClBoeXNpY2FsIHdhbHNlbmRlcnMgY2FuJ3Qgc2VuZCBkYXRhIHVudGlsIGl0 J3MgYmVlbiBmbHVzaGVkOyBsb2dpY2FsCndhbHNlbmRlcnMgY2FuJ3QgZGVjb2RlIGFuZCBz ZW5kIGRhdGEgdW50aWwgaXQncyBiZWVuIGFwcGxpZWQuIE9uIHRoZQpzdGFuZGJ5LCB0aGUg V0FMIGlzIGZsdXNoZWQgZmlyc3QsIHdoaWNoIHdpbGwgb25seSB3YWtlIHVwIHBoeXNpY2Fs CndhbHNlbmRlcnM7IGFuZCB0aGVuIGFwcGxpZWQsIHdoaWNoIHdpbGwgb25seSB3YWtlIHVw IGxvZ2ljYWwKd2Fsc2VuZGVycy4KClByZXZpb3VzbHksIGFsbCB3YWxzZW5kZXJzIHdlcmUg YXdha2VuZWQgd2hlbiB0aGUgV0FMIHdhcyBmbHVzaGVkLiBUaGF0CndhcyBmaW5lIGZvciBs b2dpY2FsIHdhbHNlbmRlcnMgb24gdGhlIHByaW1hcnk7IGJ1dCBvbiB0aGUgc3RhbmRieSB0 aGUKZmx1c2hlZCBXQUwgd291bGQgaGF2ZSBiZWVuIG5vdCBhcHBsaWVkIHlldCwgc28gbG9n aWNhbCB3YWxzZW5kZXJzIHdlcmUKYXdha2VuZWQgdG9vIGVhcmx5LgoKQXV0aG9yOiBCZXJ0 cmFuZCBEcm91dm90IHBlciBpZGVhIGZyb20gSmVmZiBEYXZpcyBhbmQgQW1pdCBLYXBpbGEu ClJldmlld2VkLUJ5OiBTYXdhZGEgTWFzYWhpa28sIFJvYmVydCBIYWFzLgotLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICAgICAgfCAgNiArLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dhcmNoaXZlLmMgICAgfCAgMiArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgICB8IDMwICsrKysrKysrKysr LS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgICAgfCA0MyAr KysrKysrKysrKysrKysrKy0tLS0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5oICAgICAgICAgfCAyMiArKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d2Fsc2VuZGVyX3ByaXZhdGUuaCB8ICAzICsrCiA3IGZpbGVzIGNoYW5nZWQsIDc5IGluc2Vy dGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQogIDM1LjYlIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtLwogIDQ3LjglIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uLwogIDE2LjUlIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uLwoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRl eCA2OGRmYjAzNDRjLi5jYWVmZmM1ODYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Zy5jCkBAIC0yNjQ1LDcgKzI2NDUsNyBAQCBYTG9nRmx1c2goWExvZ1JlY1B0ciByZWNvcmQp CiAJRU5EX0NSSVRfU0VDVElPTigpOwogCiAJLyogd2FrZSB1cCB3YWxzZW5kZXJzIG5vdyB0 aGF0IHdlJ3ZlIHJlbGVhc2VkIGhlYXZpbHkgY29udGVuZGVkIGxvY2tzICovCi0JV2FsU25k V2FrZXVwUHJvY2Vzc1JlcXVlc3RzKCk7CisJV2FsU25kV2FrZXVwUHJvY2Vzc1JlcXVlc3Rz KHRydWUsICFSZWNvdmVyeUluUHJvZ3Jlc3MoKSk7CiAKIAkvKgogCSAqIElmIHdlIHN0aWxs IGhhdmVuJ3QgZmx1c2hlZCB0byB0aGUgcmVxdWVzdCBwb2ludCB0aGVuIHdlIGhhdmUgYQpA QCAtMjgxNiw3ICsyODE2LDcgQEAgWExvZ0JhY2tncm91bmRGbHVzaCh2b2lkKQogCUVORF9D UklUX1NFQ1RJT04oKTsKIAogCS8qIHdha2UgdXAgd2Fsc2VuZGVycyBub3cgdGhhdCB3ZSd2 ZSByZWxlYXNlZCBoZWF2aWx5IGNvbnRlbmRlZCBsb2NrcyAqLwotCVdhbFNuZFdha2V1cFBy b2Nlc3NSZXF1ZXN0cygpOworCVdhbFNuZFdha2V1cFByb2Nlc3NSZXF1ZXN0cyh0cnVlLCAh UmVjb3ZlcnlJblByb2dyZXNzKCkpOwogCiAJLyoKIAkgKiBHcmVhdCwgZG9uZS4gVG8gdGFr ZSBzb21lIHdvcmsgb2ZmIHRoZSBjcml0aWNhbCBwYXRoLCB0cnkgdG8gaW5pdGlhbGl6ZQpA QCAtNTc3Myw3ICs1NzczLDcgQEAgU3RhcnR1cFhMT0codm9pZCkKIAkgKiBJZiB0aGVyZSB3 ZXJlIGNhc2NhZGluZyBzdGFuZGJ5IHNlcnZlcnMgY29ubmVjdGVkIHRvIHVzLCBudWRnZSBh bnkgd2FsCiAJICogc2VuZGVyIHByb2Nlc3NlcyB0byBub3RpY2UgdGhhdCB3ZSd2ZSBiZWVu IHByb21vdGVkLgogCSAqLwotCVdhbFNuZFdha2V1cCgpOworCVdhbFNuZFdha2V1cCh0cnVl LCB0cnVlKTsKIAogCS8qCiAJICogSWYgdGhpcyB3YXMgYSBwcm9tb3Rpb24sIHJlcXVlc3Qg YW4gKG9ubGluZSkgY2hlY2twb2ludCBub3cuIFRoaXMgaXNuJ3QKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dhcmNoaXZlLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nYXJjaGl2ZS5jCmluZGV4IGEwZjVhYTI0YjUuLmYzZmI5MmM4 ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dhcmNoaXZl LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2FyY2hpdmUuYwpAQCAt NDIxLDcgKzQyMSw3IEBAIEtlZXBGaWxlUmVzdG9yZWRGcm9tQXJjaGl2ZShjb25zdCBjaGFy ICpwYXRoLCBjb25zdCBjaGFyICp4bG9nZm5hbWUpCiAJICogaWYgd2UgcmVzdG9yZWQgc29t ZXRoaW5nIG90aGVyIHRoYW4gYSBXQUwgc2VnbWVudCwgYnV0IGl0IGRvZXMgbm8gaGFybQog CSAqIGVpdGhlci4KIAkgKi8KLQlXYWxTbmRXYWtldXAoKTsKKwlXYWxTbmRXYWtldXAodHJ1 ZSwgZmFsc2UpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n cmVjb3ZlcnkuYwppbmRleCBkYmU5Mzk0NzYyLi5lNjQyN2M1NGM1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAtMTkzNSw2ICsxOTM1LDMw IEBAIEFwcGx5V2FsUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqeGxvZ3JlYWRlciwgWExvZ1Jl Y29yZCAqcmVjb3JkLCBUaW1lTGluZUlEICpyZXBsCiAJWExvZ1JlY292ZXJ5Q3RsLT5sYXN0 UmVwbGF5ZWRUTEkgPSAqcmVwbGF5VExJOwogCVNwaW5Mb2NrUmVsZWFzZSgmWExvZ1JlY292 ZXJ5Q3RsLT5pbmZvX2xjayk7CiAKKwkvKgorCSAqIFdha2V1cCB3YWxzZW5kZXJzOgorCSAq CisJICogT24gdGhlIHN0YW5kYnksIHRoZSBXQUwgaXMgZmx1c2hlZCBmaXJzdCAod2hpY2gg d2lsbCBvbmx5IHdha2UgdXAKKwkgKiBwaHlzaWNhbCB3YWxzZW5kZXJzKSBhbmQgdGhlbiBh cHBsaWVkLCB3aGljaCB3aWxsIG9ubHkgd2FrZSB1cCBsb2dpY2FsCisJICogd2Fsc2VuZGVy cy4KKwkgKgorCSAqIEluZGVlZCwgbG9naWNhbCB3YWxzZW5kZXJzIG9uIHN0YW5kYnkgY2Fu J3QgZGVjb2RlIGFuZCBzZW5kIGRhdGEgdW50aWwKKwkgKiBpdCdzIGJlZW4gYXBwbGllZC4K KwkgKgorCSAqIFBoeXNpY2FsIHdhbHNlbmRlcnMgZG9uJ3QgbmVlZCB0byBiZSB3b2tlbiB1 cCBkdXJpbmcgcmVwbGF5IHVubGVzcworCSAqIGNhc2NhZGluZyByZXBsaWNhdGlvbiBpcyBh bGxvd2VkIGFuZCB0aW1lIGxpbmUgY2hhbmdlIG9jY3VyZWQgKHNvIHRoYXQKKwkgKiB0aGV5 IGNhbiBub3RpY2UgdGhhdCB0aGV5IGFyZSBvbiBhIG5ldyB0aW1lIGxpbmUpLgorCSAqCisJ ICogVGhhdCdzIHdoeSB0aGUgd2FrZSB1cCBjb25kaXRpb25zIGFyZSBmb3I6CisJICoKKwkg KiAgLSBwaHlzaWNhbCB3YWxzZW5kZXJzIGluIGNhc2Ugb2YgbmV3IHRpbWUgbGluZSBhbmQg Y2FzY2FkZQorCSAqICByZXBsaWNhdGlvbiBpcyBhbGxvd2VkLgorCSAqICAtIGxvZ2ljYWwg d2Fsc2VuZGVycyBpbiBjYXNlIGNhc2NhZGUgcmVwbGljYXRpb24gaXMgYWxsb3dlZCAoY291 bGQgbm90CisJICogIGJlIGNyZWF0ZWQgb3RoZXJ3aXNlKS4KKwkgKi8KKwlpZiAoQWxsb3dD YXNjYWRlUmVwbGljYXRpb24oKSkKKwkJV2FsU25kV2FrZXVwKHN3aXRjaGVkVExJLCB0cnVl KTsKKwogCS8qCiAJICogSWYgcm1fcmVkbyBjYWxsZWQgWExvZ1JlcXVlc3RXYWxSZWNlaXZl clJlcGx5LCB0aGVuIHdlIHdha2UgdXAgdGhlCiAJICogcmVjZWl2ZXIgc28gdGhhdCBpdCBu b3RpY2VzIHRoZSB1cGRhdGVkIGxhc3RSZXBsYXllZEVuZFJlY1B0ciBhbmQgc2VuZHMKQEAg LTE5NTgsMTIgKzE5ODIsNiBAQCBBcHBseVdhbFJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnhs b2dyZWFkZXIsIFhMb2dSZWNvcmQgKnJlY29yZCwgVGltZUxpbmVJRCAqcmVwbAogCQkgKi8K IAkJUmVtb3ZlTm9uUGFyZW50WGxvZ0ZpbGVzKHhsb2dyZWFkZXItPkVuZFJlY1B0ciwgKnJl cGxheVRMSSk7CiAKLQkJLyoKLQkJICogV2FrZSB1cCBhbnkgd2Fsc2VuZGVycyB0byBub3Rp Y2UgdGhhdCB3ZSBhcmUgb24gYSBuZXcgdGltZWxpbmUuCi0JCSAqLwotCQlpZiAoQWxsb3dD YXNjYWRlUmVwbGljYXRpb24oKSkKLQkJCVdhbFNuZFdha2V1cCgpOwotCiAJCS8qIFJlc2V0 IHRoZSBwcmVmZXRjaGVyLiAqLwogCQlYTG9nUHJlZmV0Y2hSZWNvbmZpZ3VyZSgpOwogCX0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCmluZGV4IDY4NWFmNTFkNWQu LmZlZmY3MDk0MzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwpA QCAtMTAxMCw3ICsxMDEwLDcgQEAgWExvZ1dhbFJjdkZsdXNoKGJvb2wgZHlpbmcsIFRpbWVM aW5lSUQgdGxpKQogCQkvKiBTaWduYWwgdGhlIHN0YXJ0dXAgcHJvY2VzcyBhbmQgd2Fsc2Vu ZGVyIHRoYXQgbmV3IFdBTCBoYXMgYXJyaXZlZCAqLwogCQlXYWtldXBSZWNvdmVyeSgpOwog CQlpZiAoQWxsb3dDYXNjYWRlUmVwbGljYXRpb24oKSkKLQkJCVdhbFNuZFdha2V1cCgpOwor CQkJV2FsU25kV2FrZXVwKHRydWUsIGZhbHNlKTsKIAogCQkvKiBSZXBvcnQgWExPRyBzdHJl YW1pbmcgcHJvZ3Jlc3MgaW4gUFMgZGlzcGxheSAqLwogCQlpZiAodXBkYXRlX3Byb2Nlc3Nf dGl0bGUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IDJkOTA4ZDFk ZTIuLjk3OTkwZTE4MjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBA IC0yNjI4LDYgKzI2MjgsMjMgQEAgSW5pdFdhbFNlbmRlclNsb3Qodm9pZCkKIAkJCXdhbHNu ZC0+c3luY19zdGFuZGJ5X3ByaW9yaXR5ID0gMDsKIAkJCXdhbHNuZC0+bGF0Y2ggPSAmTXlQ cm9jLT5wcm9jTGF0Y2g7CiAJCQl3YWxzbmQtPnJlcGx5VGltZSA9IDA7CisKKwkJCS8qCisJ CQkgKiBUaGUga2luZCBhc3NpZ25tZW50IGlzIGRvbmUgaGVyZSBhbmQgbm90IGluIFN0YXJ0 UmVwbGljYXRpb24oKQorCQkJICogYW5kIFN0YXJ0TG9naWNhbFJlcGxpY2F0aW9uKCkuIElu ZGVlZCwgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVyCisJCQkgKiBuZWVkcyB0byByZWFkIFdBTCBy ZWNvcmRzIChsaWtlIHNuYXBzaG90IG9mIHJ1bm5pbmcKKwkJCSAqIHRyYW5zYWN0aW9ucykg ZHVyaW5nIHRoZSBzbG90IGNyZWF0aW9uLiBTbyBpdCBuZWVkcyB0byBiZSB3b2tlbgorCQkJ ICogdXAgYmFzZWQgb24gaXRzIGtpbmQuCisJCQkgKgorCQkJICogVGhlIGtpbmQgYXNzaWdu bWVudCBjb3VsZCBhbHNvIGJlIGRvbmUgaW4gU3RhcnRSZXBsaWNhdGlvbigpLAorCQkJICog U3RhcnRMb2dpY2FsUmVwbGljYXRpb24oKSBhbmQgQ1JFQVRFX1JFUExJQ0FUSU9OX1NMT1Qg YnV0IGl0CisJCQkgKiBzZWVtcyBiZXR0ZXIgdG8gc2V0IGl0IG9uIG9uZSBwbGFjZS4KKwkJ CSAqLworCQkJaWYgKE15RGF0YWJhc2VJZCA9PSBJbnZhbGlkT2lkKQorCQkJCXdhbHNuZC0+ a2luZCA9IFJFUExJQ0FUSU9OX0tJTkRfUEhZU0lDQUw7CisJCQllbHNlCisJCQkJd2Fsc25k LT5raW5kID0gUkVQTElDQVRJT05fS0lORF9MT0dJQ0FMOworCiAJCQlTcGluTG9ja1JlbGVh c2UoJndhbHNuZC0+bXV0ZXgpOwogCQkJLyogZG9uJ3QgbmVlZCB0aGUgbG9jayBhbnltb3Jl ICovCiAJCQlNeVdhbFNuZCA9IChXYWxTbmQgKikgd2Fsc25kOwpAQCAtMzMxMCwzMCArMzMy Nyw0MiBAQCBXYWxTbmRTaG1lbUluaXQodm9pZCkKIH0KIAogLyoKLSAqIFdha2UgdXAgYWxs IHdhbHNlbmRlcnMKKyAqIFdha2UgdXAgcGh5c2ljYWwsIGxvZ2ljYWwgb3IgYm90aCB3YWxz ZW5kZXJzIGtpbmQKKyAqCisgKiBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiBwaHlzaWNhbCBh bmQgbG9naWNhbCB3YWxzZW5kZXJzIGlzIGRvbmUsIGJlY2F1c2U6CisgKiAtIHBoeXNpY2Fs IHdhbHNlbmRlcnMgY2FuJ3Qgc2VuZCBkYXRhIHVudGlsIGl0J3MgYmVlbiBmbHVzaGVkCisg KiAtIGxvZ2ljYWwgd2Fsc2VuZGVycyBvbiBzdGFuZGJ5IGNhbid0IGRlY29kZSBhbmQgc2Vu ZCBkYXRhIHVudGlsIGl0J3MgYmVlbgorICogYXBwbGllZAorICoKKyAqIEZvciBjYXNjYWRp bmcgcmVwbGljYXRpb24gd2UgbmVlZCB0byB3YWtlIHVwIHBoeXNpY2FsCisgKiB3YWxzZW5k ZXJzIHNlcGFyYXRlbHkgZnJvbSBsb2dpY2FsIHdhbHNlbmRlcnMgKHNlZSB0aGUgY29tbWVu dCBiZWZvcmUgY2FsbGluZworICogV2FsU25kV2FrZXVwKCkgaW4gQXBwbHlXYWxSZWNvcmQo KSBmb3IgbW9yZSBkZXRhaWxzKS4KICAqCiAgKiBUaGlzIHdpbGwgYmUgY2FsbGVkIGluc2lk ZSBjcml0aWNhbCBzZWN0aW9ucywgc28gdGhyb3dpbmcgYW4gZXJyb3IgaXMgbm90CiAgKiBh ZHZpc2FibGUuCiAgKi8KIHZvaWQKLVdhbFNuZFdha2V1cCh2b2lkKQorV2FsU25kV2FrZXVw KGJvb2wgcGh5c2ljYWwsIGJvb2wgbG9naWNhbCkKIHsKIAlpbnQJCQlpOwogCiAJZm9yIChp ID0gMDsgaSA8IG1heF93YWxfc2VuZGVyczsgaSsrKQogCXsKIAkJTGF0Y2gJICAgKmxhdGNo OworCQlSZXBsaWNhdGlvbktpbmQga2luZDsKIAkJV2FsU25kCSAgICp3YWxzbmQgPSAmV2Fs U25kQ3RsLT53YWxzbmRzW2ldOwogCi0JCS8qCi0JCSAqIEdldCBsYXRjaCBwb2ludGVyIHdp dGggc3BpbmxvY2sgaGVsZCwgZm9yIHRoZSB1bmxpa2VseSBjYXNlIHRoYXQKLQkJICogcG9p bnRlciByZWFkcyBhcmVuJ3QgYXRvbWljIChhcyB0aGV5J3JlIDggYnl0ZXMpLgotCQkgKi8K KwkJLyogZ2V0IGxhdGNoIHBvaW50ZXIgYW5kIGtpbmQgd2l0aCBzcGlubG9jayBoZWxkcyAq LwogCQlTcGluTG9ja0FjcXVpcmUoJndhbHNuZC0+bXV0ZXgpOwogCQlsYXRjaCA9IHdhbHNu ZC0+bGF0Y2g7CisJCWtpbmQgPSB3YWxzbmQtPmtpbmQ7CiAJCVNwaW5Mb2NrUmVsZWFzZSgm d2Fsc25kLT5tdXRleCk7CiAKLQkJaWYgKGxhdGNoICE9IE5VTEwpCisJCWlmIChsYXRjaCA9 PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJaWYgKChwaHlzaWNhbCAmJiBraW5kID09IFJF UExJQ0FUSU9OX0tJTkRfUEhZU0lDQUwpIHx8CisJCQkobG9naWNhbCAmJiBraW5kID09IFJF UExJQ0FUSU9OX0tJTkRfTE9HSUNBTCkpCiAJCQlTZXRMYXRjaChsYXRjaCk7CiAJfQogfQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaAppbmRleCA1MmJiM2UyYWFlLi45ZGY3 ZTUwZjk0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIu aAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaApAQCAtNDIsNyAr NDIsNyBAQCBleHRlcm4gdm9pZCBXYWxTbmRSZXNvdXJjZUNsZWFudXAoYm9vbCBpc0NvbW1p dCk7CiBleHRlcm4gdm9pZCBXYWxTbmRTaWduYWxzKHZvaWQpOwogZXh0ZXJuIFNpemUgV2Fs U25kU2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQgV2FsU25kU2htZW1Jbml0KHZvaWQp OwotZXh0ZXJuIHZvaWQgV2FsU25kV2FrZXVwKHZvaWQpOworZXh0ZXJuIHZvaWQgV2FsU25k V2FrZXVwKGJvb2wgcGh5c2ljYWwsIGJvb2wgbG9naWNhbCk7CiBleHRlcm4gdm9pZCBXYWxT bmRJbml0U3RvcHBpbmcodm9pZCk7CiBleHRlcm4gdm9pZCBXYWxTbmRXYWl0U3RvcHBpbmco dm9pZCk7CiBleHRlcm4gdm9pZCBIYW5kbGVXYWxTbmRJbml0U3RvcHBpbmcodm9pZCk7CkBA IC02MCwxNSArNjAsMTUgQEAgZXh0ZXJuIHZvaWQgV2FsU25kUnFzdEZpbGVSZWxvYWQodm9p ZCk7CiAvKgogICogd2FrZXVwIHdhbHNlbmRlcnMgaWYgdGhlcmUgaXMgd29yayB0byBiZSBk b25lCiAgKi8KLSNkZWZpbmUgV2FsU25kV2FrZXVwUHJvY2Vzc1JlcXVlc3RzKCkJCVwKLQlk bwkJCQkJCQkJCQlcCi0JewkJCQkJCQkJCQlcCi0JCWlmICh3YWtlX3dhbF9zZW5kZXJzKQkJ CQlcCi0JCXsJCQkJCQkJCQlcCi0JCQl3YWtlX3dhbF9zZW5kZXJzID0gZmFsc2U7CQlcCi0J CQlpZiAobWF4X3dhbF9zZW5kZXJzID4gMCkJCVwKLQkJCQlXYWxTbmRXYWtldXAoKTsJCQkJ XAotCQl9CQkJCQkJCQkJXAotCX0gd2hpbGUgKDApCitzdGF0aWMgaW5saW5lIHZvaWQKK1dh bFNuZFdha2V1cFByb2Nlc3NSZXF1ZXN0cyhib29sIHBoeXNpY2FsLCBib29sIGxvZ2ljYWwp Cit7CisJaWYgKHdha2Vfd2FsX3NlbmRlcnMpCisJeworCQl3YWtlX3dhbF9zZW5kZXJzID0g ZmFsc2U7CisJCWlmIChtYXhfd2FsX3NlbmRlcnMgPiAwKQorCQkJV2FsU25kV2FrZXVwKHBo eXNpY2FsLCBsb2dpY2FsKTsKKwl9Cit9CiAKICNlbmRpZgkJCQkJCQkvKiBfV0FMU0VOREVS X0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlcl9w cml2YXRlLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5o CmluZGV4IDUzMTBlMDU0YzQuLmZmMjVhYTcwYTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd2Fsc2VuZGVyX3ByaXZhdGUuaApAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1 ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAi bm9kZXMvbm9kZXMuaCIKKyNpbmNsdWRlICJub2Rlcy9yZXBsbm9kZXMuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9zeW5jcmVwLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgog I2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKQEAgLTc5LDYgKzgwLDggQEAgdHlwZWRlZiBz dHJ1Y3QgV2FsU25kCiAJICogVGltZXN0YW1wIG9mIHRoZSBsYXN0IG1lc3NhZ2UgcmVjZWl2 ZWQgZnJvbSBzdGFuZGJ5LgogCSAqLwogCVRpbWVzdGFtcFR6IHJlcGx5VGltZTsKKworCVJl cGxpY2F0aW9uS2luZCBraW5kOwogfSBXYWxTbmQ7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBX YWxTbmQgKk15V2FsU25kOwotLSAKMi4zNC4xCgo= --------------9IFCIzDt0tUi9n0JUWtvR6ZK Content-Type: text/plain; charset=UTF-8; name="v63-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v63-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAzZWE2ZDFkYTM3ZTRjNDhlZWU1MThhMGZmMWU3MjIyNWRmNmEwYmVkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJ0cmFuZCBEcm91dm90IDxiZXJ0cmFuZGRyb3V2 b3QucGdAZ21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMTI6NDU6MjAgKzAwMDAK U3ViamVjdDogW1BBVENIIHY2MyAzLzZdIEFsbG93IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3Rh bmRieS4KCkFsbG93IGEgbG9naWNhbCBzbG90IHRvIGJlIGNyZWF0ZWQgb24gc3RhbmRieS4g UmVzdHJpY3QgaXRzIHVzYWdlCm9yIGl0cyBjcmVhdGlvbiBpZiB3YWxfbGV2ZWwgb24gcHJp bWFyeSBpcyBsZXNzIHRoYW4gbG9naWNhbC4KRHVyaW5nIHNsb3QgY3JlYXRpb24sIGl0J3Mg cmVzdGFydF9sc24gaXMgc2V0IHRvIHRoZSBsYXN0IHJlcGxheWVkCkxTTi4gRWZmZWN0aXZl bHksIGEgbG9naWNhbCBzbG90IGNyZWF0aW9uIG9uIHN0YW5kYnkgd2FpdHMgZm9yIGFuCnhs X3J1bm5pbmdfeGFjdCByZWNvcmQgdG8gYXJyaXZlIGZyb20gcHJpbWFyeS4KCkF1dGhvcjog QW5kcmVzIEZyZXVuZCAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQgS2hhbmRla2FyLCBC ZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMg RnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVsbG8KLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICAgICAgICB8IDExICsrKysrCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICB8IDMwICsrKysrKysrKysr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgfCAzNiArKysr KysrLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAg fCA1OCArKysrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v d2Fsc2VuZGVyLmMgICAgICAgfCA0OCArKysrKysrKysrKystLS0tLS0tCiBzcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZy5oICAgICAgICAgICAgICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdl ZCwgMTIzIGluc2VydGlvbnMoKyksIDYxIGRlbGV0aW9ucygtKQogICA0LjMlIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtLwogIDM4LjklIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvCiAgNTUuOSUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jCmluZGV4IDcxM2I2MWE5YmYuLjY4ZGZiMDM0NGMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTQ0NjYsNiArNDQ2NiwxNyBAQCBMb2NhbFBy b2Nlc3NDb250cm9sRmlsZShib29sIHJlc2V0KQogCVJlYWRDb250cm9sRmlsZSgpOwogfQog CisvKgorICogR2V0IHRoZSB3YWxfbGV2ZWwgZnJvbSB0aGUgY29udHJvbCBmaWxlLiBGb3Ig YSBzdGFuZGJ5LCB0aGlzIHZhbHVlIHNob3VsZCBiZQorICogY29uc2lkZXJlZCBhcyBpdHMg YWN0aXZlIHdhbF9sZXZlbCwgYmVjYXVzZSBpdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gd2hh dAorICogd2FzIG9yaWdpbmFsbHkgY29uZmlndXJlZCBvbiBzdGFuZGJ5LgorICovCitXYWxM ZXZlbAorR2V0QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnkodm9pZCkKK3sKKwlyZXR1cm4gQ29u dHJvbEZpbGUtPndhbF9sZXZlbDsKK30KKwogLyoKICAqIEluaXRpYWxpemF0aW9uIG9mIHNo YXJlZCBtZW1vcnkgZm9yIFhMT0cKICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvZGVjb2RlLmMKaW5kZXggOGZlN2JiNjVmMS4uODM1MmRiZjVkZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC0xNTIsMTEgKzE1Miwz OSBAQCB4bG9nX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNv cmRCdWZmZXIgKmJ1ZikKIAkJCSAqIGNhbiByZXN0YXJ0IGZyb20gdGhlcmUuCiAJCQkgKi8K IAkJCWJyZWFrOworCQljYXNlIFhMT0dfUEFSQU1FVEVSX0NIQU5HRToKKwkJCXsKKwkJCQl4 bF9wYXJhbWV0ZXJfY2hhbmdlICp4bHJlYyA9CisJCQkJKHhsX3BhcmFtZXRlcl9jaGFuZ2Ug KikgWExvZ1JlY0dldERhdGEoYnVmLT5yZWNvcmQpOworCisJCQkJLyoKKwkJCQkgKiBJZiB3 YWxfbGV2ZWwgb24gcHJpbWFyeSBpcyByZWR1Y2VkIHRvIGxlc3MgdGhhbiBsb2dpY2FsLAor CQkJCSAqIHRoZW4gd2Ugd2FudCB0byBwcmV2ZW50IGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMg ZnJvbSBiZWluZworCQkJCSAqIHVzZWQuIEV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgb24gc3Rh bmRieSBnZXQgaW52YWxpZGF0ZWQKKwkJCQkgKiB3aGVuIHRoaXMgV0FMIHJlY29yZCBpcyBy ZXBsYXllZDsgYW5kIGZ1cnRoZXIsIHNsb3QKKwkJCQkgKiBjcmVhdGlvbiBmYWlscyB3aGVu IHRoZSB3YWwgbGV2ZWwgaXMgbm90IHN1ZmZpY2llbnQ7IGJ1dAorCQkJCSAqIGFsbCB0aGVz ZSBvcGVyYXRpb25zIGFyZSBub3Qgc3luY2hyb25pemVkLCBzbyBhIGxvZ2ljYWwKKwkJCQkg KiBzbG90IG1heSBjcmVlcCBpbiB3aGlsZSB0aGUgd2FsX2xldmVsIGlzIGJlaW5nIHJlZHVj ZWQuCisJCQkJICogSGVuY2UgdGhpcyBleHRyYSBjaGVjay4KKwkJCQkgKi8KKwkJCQlpZiAo eGxyZWMtPndhbF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMKQorCQkJCXsKKwkJCQkJLyoK KwkJCQkJICogVGhpcyBjYW4gb2NjdXIgb25seSBvbiBhIHN0YW5kYnksIGFzIGEgcHJpbWFy eSB3b3VsZAorCQkJCQkgKiBub3QgYWxsb3cgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyB3 YWxfbGV2ZWwgPCBsb2dpY2FsCisJCQkJCSAqIGlmIHRoZXJlIGlzIHByZS1leGlzdGluZyBs b2dpY2FsIHNsb3QuCisJCQkJCSAqLworCQkJCQlBc3NlcnQoUmVjb3ZlcnlJblByb2dyZXNz KCkpOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJCSBlcnJtc2coImxvZ2lj YWwgZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgdG8gYmUgYXQgbGVh c3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSkpOworCQkJCX0KKwkJCQlicmVh azsKKwkJCX0KIAkJY2FzZSBYTE9HX05PT1A6CiAJCWNhc2UgWExPR19ORVhUT0lEOgogCQlj YXNlIFhMT0dfU1dJVENIOgogCQljYXNlIFhMT0dfQkFDS1VQX0VORDoKLQkJY2FzZSBYTE9H X1BBUkFNRVRFUl9DSEFOR0U6CiAJCWNhc2UgWExPR19SRVNUT1JFX1BPSU5UOgogCQljYXNl IFhMT0dfRlBXX0NIQU5HRToKIAkJY2FzZSBYTE9HX0ZQSV9GT1JfSElOVDoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKaW5kZXggYzNlYzk3YTBhNi4u NjBhNTAwOGI2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9sb2dpY2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsLmMKQEAgLTEyNCwyMyArMTI0LDIxIEBAIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWly ZW1lbnRzKHZvaWQpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCiAJCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyByZXF1aXJl cyBhIGRhdGFiYXNlIGNvbm5lY3Rpb24iKSkpOwogCi0JLyogLS0tLQotCSAqIFRPRE86IFdl IGdvdCB0byBjaGFuZ2UgdGhhdCBzb21lZGF5IHNvb24uLi4KLQkgKgotCSAqIFRoZXJlJ3Mg YmFzaWNhbGx5IHRocmVlIHRoaW5ncyBtaXNzaW5nIHRvIGFsbG93IHRoaXM6Ci0JICogMSkg V2UgbmVlZCB0byBiZSBhYmxlIHRvIGNvcnJlY3RseSBhbmQgcXVpY2tseSBpZGVudGlmeSB0 aGUgdGltZWxpbmUgYQotCSAqCSAgTFNOIGJlbG9uZ3MgdG8KLQkgKiAyKSBXZSBuZWVkIHRv IGZvcmNlIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHRvIGJlIGVuYWJsZWQgYXQgYWxsIHRpbWVz IHNvCi0JICoJICB0aGUgcHJpbWFyeSBjYW5ub3QgcmVtb3ZlIHJvd3Mgd2UgbmVlZC4KLQkg KiAzKSBzdXBwb3J0IGRyb3BwaW5nIHJlcGxpY2F0aW9uIHNsb3RzIHJlZmVycmluZyB0byBh IGRhdGFiYXNlLCBpbgotCSAqCSAgZGJhc2VfcmVkby4gVGhlcmUgY2FuJ3QgYmUgYW55IGFj dGl2ZSBvbmVzIGR1ZSB0byBIUyByZWNvdmVyeQotCSAqCSAgY29uZmxpY3RzLCBzbyB0aGF0 IHNob3VsZCBiZSByZWxhdGl2ZWx5IGVhc3kuCi0JICogLS0tLQotCSAqLwogCWlmIChSZWNv dmVyeUluUHJvZ3Jlc3MoKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygibG9naWNhbCBkZWNv ZGluZyBjYW5ub3QgYmUgdXNlZCB3aGlsZSBpbiByZWNvdmVyeSIpKSk7CisJeworCQkvKgor CQkgKiBUaGlzIGNoZWNrIG1heSBoYXZlIHJhY2UgY29uZGl0aW9ucywgYnV0IHdoZW5ldmVy CisJCSAqIFhMT0dfUEFSQU1FVEVSX0NIQU5HRSBpbmRpY2F0ZXMgdGhhdCB3YWxfbGV2ZWwg aGFzIGNoYW5nZWQsIHdlCisJCSAqIHZlcmlmeSB0aGF0IHRoZXJlIGFyZSBubyBleGlzdGlu ZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3RzLiBBbmQgdG8KKwkJICogYXZvaWQgcmFjZXMg YXJvdW5kIGNyZWF0aW5nIGEgbmV3IHNsb3QsCisJCSAqIENoZWNrTG9naWNhbERlY29kaW5n UmVxdWlyZW1lbnRzKCkgaXMgY2FsbGVkIG9uY2UgYmVmb3JlIGNyZWF0aW5nCisJCSAqIHRo ZSBzbG90LCBhbmQgb25jZSB3aGVuIGxvZ2ljYWwgZGVjb2RpbmcgaXMgaW5pdGlhbGx5IHN0 YXJ0aW5nIHVwLgorCQkgKi8KKwkJaWYgKEdldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KCkg PCBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJy bXNnKCJsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsIHRv IGJlIGF0IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyIikpKTsKKwl9CiB9 CiAKIC8qCkBAIC0zNDIsNiArMzQwLDEyIEBAIENyZWF0ZUluaXREZWNvZGluZ0NvbnRleHQo Y29uc3QgY2hhciAqcGx1Z2luLAogCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eDsKIAlN ZW1vcnlDb250ZXh0IG9sZF9jb250ZXh0OwogCisJLyoKKwkgKiBPbiBzdGFuZGJ5LCB0aGlz IGNoZWNrIGlzIGFsc28gcmVxdWlyZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHNsb3QuIENoZWNr CisJICogdGhlIGNvbW1lbnRzIGluIHRoaXMgZnVuY3Rpb24uCisJICovCisJQ2hlY2tMb2dp Y2FsRGVjb2RpbmdSZXF1aXJlbWVudHMoKTsKKwogCS8qIHNob3J0ZXIgbGluZXMuLi4gKi8K IAlzbG90ID0gTXlSZXBsaWNhdGlvblNsb3Q7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpp bmRleCAzNzZkNDUzMzc0Li5iOWIxNmI5MTkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5j CkBAIC00MSw2ICs0MSw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2lu Y2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dy ZWNvdmVyeS5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAi Y29tbW9uL3N0cmluZy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpAQCAtMTE4MywzNyAr MTE4NCwyOCBAQCBSZXBsaWNhdGlvblNsb3RSZXNlcnZlV2FsKHZvaWQpCiAJCS8qCiAJCSAq IEZvciBsb2dpY2FsIHNsb3RzIGxvZyBhIHN0YW5kYnkgc25hcHNob3QgYW5kIHN0YXJ0IGxv Z2ljYWwgZGVjb2RpbmcKIAkJICogYXQgZXhhY3RseSB0aGF0IHBvc2l0aW9uLiBUaGF0IGFs bG93cyB0aGUgc2xvdCB0byBzdGFydCB1cCBtb3JlCi0JCSAqIHF1aWNrbHkuCisJCSAqIHF1 aWNrbHkuIEJ1dCBvbiBhIHN0YW5kYnkgd2UgY2Fubm90IGRvIFdBTCB3cml0ZXMsIHNvIGp1 c3QgdXNlIHRoZQorCQkgKiByZXBsYXkgcG9pbnRlcjsgZWZmZWN0aXZlbHksIGFuIGF0dGVt cHQgdG8gY3JlYXRlIGEgbG9naWNhbCBzbG90IG9uCisJCSAqIHN0YW5kYnkgd2lsbCBjYXVz ZSBpdCB0byB3YWl0IGZvciBhbiB4bF9ydW5uaW5nX3hhY3QgcmVjb3JkIHRvIGJlCisJCSAq IGxvZ2dlZCBpbmRlcGVuZGVudGx5IG9uIHRoZSBwcmltYXJ5LCBzbyB0aGF0IGEgc25hcHNo b3QgY2FuIGJlCisJCSAqIGJ1aWx0IHVzaW5nIHRoZSByZWNvcmQuCiAJCSAqCi0JCSAqIFRo YXQncyBub3QgbmVlZGVkIChvciBpbmRlZWQgaGVscGZ1bCkgZm9yIHBoeXNpY2FsIHNsb3Rz IGFzIHRoZXknbGwKLQkJICogc3RhcnQgcmVwbGF5IGF0IHRoZSBsYXN0IGxvZ2dlZCBjaGVj a3BvaW50IGFueXdheS4gSW5zdGVhZCByZXR1cm4KLQkJICogdGhlIGxvY2F0aW9uIG9mIHRo ZSBsYXN0IHJlZG8gTFNOLiBXaGlsZSB0aGF0IHNsaWdodGx5IGluY3JlYXNlcwotCQkgKiB0 aGUgY2hhbmNlIHRoYXQgd2UgaGF2ZSB0byByZXRyeSwgaXQncyB3aGVyZSBhIGJhc2UgYmFj a3VwIGhhcyB0bwotCQkgKiBzdGFydCByZXBsYXkgYXQuCisJCSAqIE5vbmUgb2YgdGhpcyBp cyBuZWVkZWQgKG9yIGluZGVlZCBoZWxwZnVsKSBmb3IgcGh5c2ljYWwgc2xvdHMgYXMKKwkJ ICogdGhleSdsbCBzdGFydCByZXBsYXkgYXQgdGhlIGxhc3QgbG9nZ2VkIGNoZWNrcG9pbnQg YW55d2F5LiBJbnN0ZWFkCisJCSAqIHJldHVybiB0aGUgbG9jYXRpb24gb2YgdGhlIGxhc3Qg cmVkbyBMU04uIFdoaWxlIHRoYXQgc2xpZ2h0bHkKKwkJICogaW5jcmVhc2VzIHRoZSBjaGFu Y2UgdGhhdCB3ZSBoYXZlIHRvIHJldHJ5LCBpdCdzIHdoZXJlIGEgYmFzZQorCQkgKiBiYWNr dXAgaGFzIHRvIHN0YXJ0IHJlcGxheSBhdC4KIAkJICovCi0JCWlmICghUmVjb3ZlcnlJblBy b2dyZXNzKCkgJiYgU2xvdElzTG9naWNhbChzbG90KSkKLQkJewotCQkJWExvZ1JlY1B0cglm bHVzaHB0cjsKLQotCQkJLyogc3RhcnQgYXQgY3VycmVudCBpbnNlcnQgcG9zaXRpb24gKi8K KwkJaWYgKFNsb3RJc1BoeXNpY2FsKHNsb3QpKQorCQkJcmVzdGFydF9sc24gPSBHZXRSZWRv UmVjUHRyKCk7CisJCWVsc2UgaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQkJcmVzdGFy dF9sc24gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQllbHNlCiAJCQlyZXN0YXJ0 X2xzbiA9IEdldFhMb2dJbnNlcnRSZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNxdWlyZSgmc2xv dC0+bXV0ZXgpOwotCQkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOwot CQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7Ci0KLQkJCS8qIG1ha2Ugc3VyZSB3 ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBzdGFydCAqLwotCQkJZmx1c2hwdHIgPSBM b2dTdGFuZGJ5U25hcHNob3QoKTsKIAotCQkJLyogYW5kIG1ha2Ugc3VyZSBpdCdzIGZzeW5j ZWQgdG8gZGlzayAqLwotCQkJWExvZ0ZsdXNoKGZsdXNocHRyKTsKLQkJfQotCQllbHNlCi0J CXsKLQkJCXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0cigpOwotCQkJU3BpbkxvY2tBY3F1 aXJlKCZzbG90LT5tdXRleCk7Ci0JCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVzdGFy dF9sc247Ci0JCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKLQkJfQorCQlTcGlu TG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKKwkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9 IHJlc3RhcnRfbHNuOworCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKIAogCQkv KiBwcmV2ZW50IFdBTCByZW1vdmFsIGFzIGZhc3QgYXMgcG9zc2libGUgKi8KIAkJUmVwbGlj YXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwpAQCAtMTIyOSw4ICsxMjIxLDE4IEBA IFJlcGxpY2F0aW9uU2xvdFJlc2VydmVXYWwodm9pZCkKIAkJaWYgKFhMb2dHZXRMYXN0UmVt b3ZlZFNlZ25vKCkgPCBzZWdubykKIAkJCWJyZWFrOwogCX0KLX0KIAorCWlmICghUmVjb3Zl cnlJblByb2dyZXNzKCkgJiYgU2xvdElzTG9naWNhbChzbG90KSkKKwl7CisJCVhMb2dSZWNQ dHIJZmx1c2hwdHI7CisKKwkJLyogbWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0 aW9uIHRvIHN0YXJ0ICovCisJCWZsdXNocHRyID0gTG9nU3RhbmRieVNuYXBzaG90KCk7CisK KwkJLyogYW5kIG1ha2Ugc3VyZSBpdCdzIGZzeW5jZWQgdG8gZGlzayAqLworCQlYTG9nRmx1 c2goZmx1c2hwdHIpOworCX0KK30KIAogLyoKICAqIFJlcG9ydCB0ZXJtaW5hdGluZyBvciBj b25mbGljdGluZyBtZXNzYWdlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpp bmRleCBiNjg2NjkxY2EyLi4yZDkwOGQxZGUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYwpAQCAtOTA2LDIzICs5MDYsMzQgQEAgbG9naWNhbF9yZWFkX3hsb2dfcGFn ZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsIGlu dCByZXEKIAlpbnQJCQljb3VudDsKIAlXQUxSZWFkRXJyb3IgZXJyaW5mbzsKIAlYTG9nU2Vn Tm8Jc2Vnbm87Ci0JVGltZUxpbmVJRAljdXJyVExJID0gR2V0V0FMSW5zZXJ0aW9uVGltZUxp bmUoKTsKKwlUaW1lTGluZUlECWN1cnJUTEk7CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB3ZSBo YXZlIGVub3VnaCBXQUwgYXZhaWxhYmxlIGJlZm9yZSByZXRyaWV2aW5nIHRoZSBjdXJyZW50 CisJICogdGltZWxpbmUuIFRoaXMgaXMgbmVlZGVkIHRvIGRldGVybWluZSBhbV9jYXNjYWRp bmdfd2Fsc2VuZGVyIGFjY3VyYXRlbHkKKwkgKiB3aGljaCBpcyBuZWVkZWQgdG8gZGV0ZXJt aW5lIHRoZSBjdXJyZW50IHRpbWVsaW5lLgorCSAqLworCWZsdXNocHRyID0gV2FsU25kV2Fp dEZvcldhbCh0YXJnZXRQYWdlUHRyICsgcmVxTGVuKTsKIAogCS8qCi0JICogU2luY2UgbG9n aWNhbCBkZWNvZGluZyBpcyBvbmx5IHBlcm1pdHRlZCBvbiBhIHByaW1hcnkgc2VydmVyLCB3 ZSBrbm93Ci0JICogdGhhdCB0aGUgY3VycmVudCB0aW1lbGluZSBJRCBjYW4ndCBiZSBjaGFu Z2luZyBhbnkgbW9yZS4gSWYgd2UgZGlkIHRoaXMKLQkgKiBvbiBhIHN0YW5kYnksIHdlJ2Qg aGF2ZSB0byB3b3JyeSBhYm91dCB0aGUgdmFsdWVzIHdlIGNvbXB1dGUgaGVyZQotCSAqIGJl Y29taW5nIGludmFsaWQgZHVlIHRvIGEgcHJvbW90aW9uIG9yIHRpbWVsaW5lIGNoYW5nZS4K KwkgKiBTaW5jZSBsb2dpY2FsIGRlY29kaW5nIGlzIGFsc28gcGVybWl0dGVkIG9uIGEgc3Rh bmRieSBzZXJ2ZXIsIHdlIG5lZWQKKwkgKiB0byBjaGVjayBpZiB0aGUgc2VydmVyIGlzIGlu IHJlY292ZXJ5IHRvIGRlY2lkZSBob3cgdG8gZ2V0IHRoZSBjdXJyZW50CisJICogdGltZWxp bmUgSUQgKHNvIHRoYXQgaXQgYWxzbyBjb3ZlciB0aGUgcHJvbW90aW9uIG9yIHRpbWVsaW5l IGNoYW5nZQorCSAqIGNhc2VzKS4KIAkgKi8KKwlhbV9jYXNjYWRpbmdfd2Fsc2VuZGVyID0g UmVjb3ZlcnlJblByb2dyZXNzKCk7CisKKwlpZiAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlcikK KwkJR2V0WExvZ1JlcGxheVJlY1B0cigmY3VyclRMSSk7CisJZWxzZQorCQljdXJyVExJID0g R2V0V0FMSW5zZXJ0aW9uVGltZUxpbmUoKTsKKwogCVhMb2dSZWFkRGV0ZXJtaW5lVGltZWxp bmUoc3RhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbiwgY3VyclRMSSk7CiAJc2VuZFRpbWVM aW5lSXNIaXN0b3JpYyA9IChzdGF0ZS0+Y3VyclRMSSAhPSBjdXJyVExJKTsKIAlzZW5kVGlt ZUxpbmUgPSBzdGF0ZS0+Y3VyclRMSTsKIAlzZW5kVGltZUxpbmVWYWxpZFVwdG8gPSBzdGF0 ZS0+Y3VyclRMSVZhbGlkVW50aWw7CiAJc2VuZFRpbWVMaW5lTmV4dFRMSSA9IHN0YXRlLT5u ZXh0VExJOwogCi0JLyogbWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIFdBTCBhdmFpbGFibGUg Ki8KLQlmbHVzaHB0ciA9IFdhbFNuZFdhaXRGb3JXYWwodGFyZ2V0UGFnZVB0ciArIHJlcUxl bik7Ci0KIAkvKiBmYWlsIGlmIG5vdCAoaW1wbGllcyB3ZSBhcmUgZ29pbmcgdG8gc2h1dCBk b3duKSAqLwogCWlmIChmbHVzaHB0ciA8IHRhcmdldFBhZ2VQdHIgKyByZXFMZW4pCiAJCXJl dHVybiAtMTsKQEAgLTkzNyw5ICs5NDgsOSBAQCBsb2dpY2FsX3JlYWRfeGxvZ19wYWdlKFhM b2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJl cQogCQkJCSBjdXJfcGFnZSwKIAkJCQkgdGFyZ2V0UGFnZVB0ciwKIAkJCQkgWExPR19CTENL U1osCi0JCQkJIHN0YXRlLT5zZWcud3NfdGxpLCAvKiBQYXNzIHRoZSBjdXJyZW50IFRMSSBi ZWNhdXNlIG9ubHkKLQkJCQkJCQkJCSAqIFdhbFNuZFNlZ21lbnRPcGVuIGNvbnRyb2xzIHdo ZXRoZXIgbmV3Ci0JCQkJCQkJCQkgKiBUTEkgaXMgbmVlZGVkLiAqLworCQkJCSBjdXJyVExJ LAkJLyogUGFzcyB0aGUgY3VycmVudCBUTEkgYmVjYXVzZSBvbmx5CisJCQkJCQkJCSAqIFdh bFNuZFNlZ21lbnRPcGVuIGNvbnRyb2xzIHdoZXRoZXIgbmV3IFRMSQorCQkJCQkJCQkgKiBp cyBuZWVkZWQuICovCiAJCQkJICZlcnJpbmZvKSkKIAkJV0FMUmVhZFJhaXNlRXJyb3IoJmVy cmluZm8pOwogCkBAIC0zMDczLDEwICszMDg0LDE0IEBAIFhMb2dTZW5kTG9naWNhbCh2b2lk KQogCSAqIElmIGZpcnN0IHRpbWUgdGhyb3VnaCBpbiB0aGlzIHNlc3Npb24sIGluaXRpYWxp emUgZmx1c2hQdHIuICBPdGhlcndpc2UsCiAJICogd2Ugb25seSBuZWVkIHRvIHVwZGF0ZSBm bHVzaFB0ciBpZiBFbmRSZWNQdHIgaXMgcGFzdCBpdC4KIAkgKi8KLQlpZiAoZmx1c2hQdHIg PT0gSW52YWxpZFhMb2dSZWNQdHIpCi0JCWZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIoTlVM TCk7Ci0JZWxzZSBpZiAobG9naWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVjUHRy ID49IGZsdXNoUHRyKQotCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwpOworCWlm IChmbHVzaFB0ciA9PSBJbnZhbGlkWExvZ1JlY1B0ciB8fAorCQlsb2dpY2FsX2RlY29kaW5n X2N0eC0+cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCisJeworCQlpZiAoYW1fY2Fz Y2FkaW5nX3dhbHNlbmRlcikKKwkJCWZsdXNoUHRyID0gR2V0U3RhbmRieUZsdXNoUmVjUHRy KE5VTEwpOworCQllbHNlCisJCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwpOwor CX0KIAogCS8qIElmIEVuZFJlY1B0ciBpcyBzdGlsbCBwYXN0IG91ciBmbHVzaFB0ciwgaXQg bWVhbnMgd2UgY2F1Z2h0IHVwLiAqLwogCWlmIChsb2dpY2FsX2RlY29kaW5nX2N0eC0+cmVh ZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCkBAIC0zMTY3LDcgKzMxODIsOCBAQCBHZXRT dGFuZGJ5Rmx1c2hSZWNQdHIoVGltZUxpbmVJRCAqdGxpKQogCXJlY2VpdmVQdHIgPSBHZXRX YWxSY3ZGbHVzaFJlY1B0cihOVUxMLCAmcmVjZWl2ZVRMSSk7CiAJcmVwbGF5UHRyID0gR2V0 WExvZ1JlcGxheVJlY1B0cigmcmVwbGF5VExJKTsKIAotCSp0bGkgPSByZXBsYXlUTEk7CisJ aWYgKHRsaSkKKwkJKnRsaSA9IHJlcGxheVRMSTsKIAogCXJlc3VsdCA9IHJlcGxheVB0cjsK IAlpZiAocmVjZWl2ZVRMSSA9PSByZXBsYXlUTEkgJiYgcmVjZWl2ZVB0ciA+IHJlcGxheVB0 cikKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZy5oCmluZGV4IGNmZTU0MDk3MzguLjQ4Y2E4NTIzODEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3hsb2cuaApAQCAtMjMwLDYgKzIzMCw3IEBAIGV4dGVybiB2b2lkIFhMT0dTaG1lbUluaXQo dm9pZCk7CiBleHRlcm4gdm9pZCBCb290U3RyYXBYTE9HKHZvaWQpOwogZXh0ZXJuIHZvaWQg SW5pdGlhbGl6ZVdhbENvbnNpc3RlbmN5Q2hlY2tpbmcodm9pZCk7CiBleHRlcm4gdm9pZCBM b2NhbFByb2Nlc3NDb250cm9sRmlsZShib29sIHJlc2V0KTsKK2V4dGVybiBXYWxMZXZlbCBH ZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSh2b2lkKTsKIGV4dGVybiB2b2lkIFN0YXJ0dXBY TE9HKHZvaWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25YTE9HKGludCBjb2RlLCBEYXR1bSBh cmcpOwogZXh0ZXJuIHZvaWQgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3MpOwotLSAKMi4z NC4xCgo= --------------9IFCIzDt0tUi9n0JUWtvR6ZK Content-Type: text/plain; charset=UTF-8; name="v63-0002-Arrange-for-a-new-pg_stat_database_conflicts-and.patch" Content-Disposition: attachment; filename*0="v63-0002-Arrange-for-a-new-pg_stat_database_conflicts-and.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3OWU4OWVlYmJlN2Q2OWJiNWMxODgzMWU2ZDA1YjNjZTM5MWVlYzQyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJ0cmFuZCBEcm91dm90IDxiZXJ0cmFuZGRyb3V2 b3QucGdAZ21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMTE6Mjg6MzAgKzAwMDAK U3ViamVjdDogW1BBVENIIHY2MyAyLzZdIEFycmFuZ2UgZm9yIGEgbmV3IHBnX3N0YXRfZGF0 YWJhc2VfY29uZmxpY3RzIGFuZAogcGdfcmVwbGljYXRpb25fc2xvdHMgZmllbGQKCkFzIHdl IGhhbmRsZWQgbG9naWNhbCBzbG90IGNvbmZsaWN0cyBvbiBzdGFuZGJ5IG9uIHRoZSBwcmV2 aW91cyBjb21taXQsIHdlCmNhbiBleHBvc2UgdGhlIGNvbmZsaWN0IGluIHBnX3N0YXRfZGF0 YWJhc2VfY29uZmxpY3RzIGFuZCBwZ19yZXBsaWNhdGlvbl9zbG90cy4KCkFkZGluZzoKCi0g Y29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IGluIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3Rz Ci0gY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKCnRvIGRvIHNvLgotLS0K IGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgIHwgMTEgKysr KysrKysrKysKIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAgICAgICAg IHwgMTAgKysrKysrKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs ICAgICAgICAgfCAgNiArKysrLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5j cy5jICAgICAgICAgIHwgMTIgKysrKysrKysrKystCiBzcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXRfZGF0YWJhc2UuYyB8ICA0ICsrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9wZ3N0YXRmdW5jcy5jICAgICAgICAgIHwgIDMgKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0ICAgICAgICAgICAgICB8IDExICsrKysrKysrLS0tCiBzcmMvaW5jbHVk ZS9wZ3N0YXQuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICAgIHwgIDggKysrKystLS0KIDkgZmls ZXMgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKICAzMy43JSBk b2Mvc3JjL3NnbWwvCiAgIDguMSUgc3JjL2JhY2tlbmQvY2F0YWxvZy8KICAxMy4xJSBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi8KICAgNS45JSBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS8KICAgNS42JSBzcmMvYmFja2VuZC91dGlscy9hZHQvCiAgMjQuNiUgc3JjL2luY2x1ZGUv Y2F0YWxvZy8KICAgNi45JSBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkLwoKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRv cmluZy5zZ21sCmluZGV4IGJjZTlhZTQ2NjEuLmZhM2IwZjgxMGMgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jp bmcuc2dtbApAQCAtNDY3NCw2ICs0Njc0LDE3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRf dHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVu dCBpCiAgICAgICAgZGVhZGxvY2tzCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9y b3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZp ZWxkPmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2lu dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBv ZiBhY3RpdmUgbG9naWNhbCBzbG90cyBpbiB0aGlzIGRhdGFiYXNlIHRoYXQgaGF2ZSBiZWVu CisgICAgICAgaW52YWxpZGF0ZWQgYmVjYXVzZSB0aGV5IGNvbmZsaWN0IHdpdGggcmVjb3Zl cnkgKG5vdGUgdGhhdCBpbmFjdGl2ZSBvbmVzCisgICAgICAgYXJlIGFsc28gaW52YWxpZGF0 ZWQgYnV0IGRvIG5vdCBpbmNyZW1lbnQgdGhpcyBjb3VudGVyKQorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90 YWJsZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCBiL2Rv Yy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCBiYjFhNDE4NDUwLi41N2IyMjgw NzZlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC0yNTE3LDYgKzI1MTcsMTYgQEAg U0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMg cHB4CiAgICAgICAgZmFsc2UgZm9yIHBoeXNpY2FsIHNsb3RzLgogICAgICAgPC9wYXJhPjwv ZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5jb25mbGljdGluZzwvc3RydWN0ZmllbGQ+IDx0eXBlPmJv b2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUcnVlIGlm IHRoaXMgbG9naWNhbCBzbG90IGNvbmZsaWN0ZWQgd2l0aCByZWNvdmVyeSAoYW5kIHNvIGlz IG5vdworICAgICAgIGludmFsaWRhdGVkKS4gQWx3YXlzIE5VTEwgZm9yIHBoeXNpY2FsIHNs b3RzLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+ CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3Zp ZXdzLnNxbAppbmRleCA2YjA5ODIzNGY4Li5jMjUwNjdkMDZkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC05OTksNyArOTk5LDggQEAgQ1JFQVRFIFZJRVcg cGdfcmVwbGljYXRpb25fc2xvdHMgQVMKICAgICAgICAgICAgIEwuY29uZmlybWVkX2ZsdXNo X2xzbiwKICAgICAgICAgICAgIEwud2FsX3N0YXR1cywKICAgICAgICAgICAgIEwuc2FmZV93 YWxfc2l6ZSwKLSAgICAgICAgICAgIEwudHdvX3BoYXNlCisgICAgICAgICAgICBMLnR3b19w aGFzZSwKKyAgICAgICAgICAgIEwuY29uZmxpY3RpbmcKICAgICBGUk9NIHBnX2dldF9yZXBs aWNhdGlvbl9zbG90cygpIEFTIEwKICAgICAgICAgICAgIExFRlQgSk9JTiBwZ19kYXRhYmFz ZSBEIE9OIChMLmRhdG9pZCA9IEQub2lkKTsKIApAQCAtMTA2Nyw3ICsxMDY4LDggQEAgQ1JF QVRFIFZJRVcgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMgQVMKICAgICAgICAgICAgIHBn X3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvY2soRC5vaWQpIEFTIGNvbmZsX2xvY2ssCiAgICAg ICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdChELm9pZCkgQVMgY29u Zmxfc25hcHNob3QsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZm ZXJwaW4oRC5vaWQpIEFTIGNvbmZsX2J1ZmZlcnBpbiwKLSAgICAgICAgICAgIHBnX3N0YXRf Z2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2soRC5vaWQpIEFTIGNvbmZsX2RlYWRs b2NrCisgICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVwX2RlYWRs b2NrKEQub2lkKSBBUyBjb25mbF9kZWFkbG9jaywKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0 X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90KEQub2lkKSBBUyBjb25mbF9hY3RpdmVfbG9naWNh bHNsb3QKICAgICBGUk9NIHBnX2RhdGFiYXNlIEQ7CiAKIENSRUFURSBWSUVXIHBnX3N0YXRf dXNlcl9mdW5jdGlvbnMgQVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3RmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKaW5k ZXggMDE1ZDI3NmZkOS4uNjQ3M2M3M2VjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc2xvdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dGZ1bmNzLmMKQEAgLTIzMiw3ICsyMzIsNyBAQCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3Qo UEdfRlVOQ1RJT05fQVJHUykKIERhdHVtCiBwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMoUEdf RlVOQ1RJT05fQVJHUykKIHsKLSNkZWZpbmUgUEdfR0VUX1JFUExJQ0FUSU9OX1NMT1RTX0NP TFMgMTQKKyNkZWZpbmUgUEdfR0VUX1JFUExJQ0FUSU9OX1NMT1RTX0NPTFMgMTUKIAlSZXR1 cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGlu Zm87CiAJWExvZ1JlY1B0cgljdXJybHNuOwogCWludAkJCXNsb3RubzsKQEAgLTQwMyw2ICs0 MDMsMTYgQEAgcGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKFBHX0ZVTkNUSU9OX0FSR1MpCiAK IAkJdmFsdWVzW2krK10gPSBCb29sR2V0RGF0dW0oc2xvdF9jb250ZW50cy5kYXRhLnR3b19w aGFzZSk7CiAKKwkJaWYgKHNsb3RfY29udGVudHMuZGF0YS5kYXRhYmFzZSA9PSBJbnZhbGlk T2lkKQorCQkJbnVsbHNbaSsrXSA9IHRydWU7CisJCWVsc2UKKwkJeworCQkJaWYgKExvZ2lj YWxSZXBsaWNhdGlvblNsb3RJc0ludmFsaWQoc2xvdCkpCisJCQkJdmFsdWVzW2krK10gPSBC b29sR2V0RGF0dW0odHJ1ZSk7CisJCQllbHNlCisJCQkJdmFsdWVzW2krK10gPSBCb29sR2V0 RGF0dW0oZmFsc2UpOworCQl9CisKIAkJQXNzZXJ0KGkgPT0gUEdfR0VUX1JFUExJQ0FUSU9O X1NMT1RTX0NPTFMpOwogCiAJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVz dWx0LCByc2luZm8tPnNldERlc2MsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS9wZ3N0YXRfZGF0YWJhc2UuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L3Bnc3RhdF9kYXRhYmFzZS5jCmluZGV4IDZlNjUwY2VhYWQuLjcxNDlmMjJmNzIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCkBAIC0x MDksNiArMTA5LDkgQEAgcGdzdGF0X3JlcG9ydF9yZWNvdmVyeV9jb25mbGljdChpbnQgcmVh c29uKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOOgogCQkJ ZGJlbnRyeS0+Y29uZmxpY3RfYnVmZmVycGluKys7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZGJlbnRyeS0+Y29uZmxp Y3RfbG9naWNhbHNsb3QrKzsKKwkJCWJyZWFrOwogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllf Q09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSzoKIAkJCWRiZW50cnktPmNvbmZsaWN0X3N0YXJ0 dXBfZGVhZGxvY2srKzsKIAkJCWJyZWFrOwpAQCAtMzg3LDYgKzM5MCw3IEBAIHBnc3RhdF9k YXRhYmFzZV9mbHVzaF9jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dh aXQpCiAJUEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3RfdGFibGVzcGFjZSk7CiAJUEdT VEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3RfbG9jayk7CiAJUEdTVEFUX0FDQ1VNX0RCQ09V TlQoY29uZmxpY3Rfc25hcHNob3QpOworCVBHU1RBVF9BQ0NVTV9EQkNPVU5UKGNvbmZsaWN0 X2xvZ2ljYWxzbG90KTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9idWZmZXJw aW4pOwogCVBHU1RBVF9BQ0NVTV9EQkNPVU5UKGNvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2sp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmluZGV4IGVlYzlmM2NmOWIu LjRkZTYwZDhhYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC0x MDY2LDYgKzEwNjYsOCBAQCBQR19TVEFUX0dFVF9EQkVOVFJZX0lOVDY0KHhhY3RfY29tbWl0 KQogLyogcGdfc3RhdF9nZXRfZGJfeGFjdF9yb2xsYmFjayAqLwogUEdfU1RBVF9HRVRfREJF TlRSWV9JTlQ2NCh4YWN0X3JvbGxiYWNrKQogCisvKiBwZ19zdGF0X2dldF9kYl9jb25mbGlj dF9sb2dpY2Fsc2xvdCAqLworUEdfU1RBVF9HRVRfREJFTlRSWV9JTlQ2NChjb25mbGljdF9s b2dpY2Fsc2xvdCkKIAogRGF0dW0KIHBnX3N0YXRfZ2V0X2RiX3N0YXRfcmVzZXRfdGltZShQ R19GVU5DVElPTl9BUkdTKQpAQCAtMTA5OSw2ICsxMTAxLDcgQEAgcGdfc3RhdF9nZXRfZGJf Y29uZmxpY3RfYWxsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXJlc3VsdCA9IChpbnQ2NCkgKGRi ZW50cnktPmNvbmZsaWN0X3RhYmxlc3BhY2UgKwogCQkJCQkJICBkYmVudHJ5LT5jb25mbGlj dF9sb2NrICsKIAkJCQkJCSAgZGJlbnRyeS0+Y29uZmxpY3Rfc25hcHNob3QgKworCQkJCQkJ ICBkYmVudHJ5LT5jb25mbGljdF9sb2dpY2Fsc2xvdCArCiAJCQkJCQkgIGRiZW50cnktPmNv bmZsaWN0X2J1ZmZlcnBpbiArCiAJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X3N0YXJ0dXBf ZGVhZGxvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBmOWYyNjQyMjAx Li5iY2JhZTkwMzZkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTU2MDUsNiAr NTYwNSwxMSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFw c2hvdCcsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9y ZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAn cGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3QnIH0sCit7IG9pZCA9PiAnOTkwMScs CisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiByZWNvdmVyeSBjb25mbGljdHMgaW4gZGF0YWJh c2UgY2F1c2VkIGJ5IGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcsCisgIHByb25hbWUgPT4g J3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90JywgcHJvdm9sYXRpbGUgPT4g J3MnLAorICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9h cmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGlj dF9sb2dpY2Fsc2xvdCcgfSwKIHsgb2lkID0+ICczMDY4JywKICAgZGVzY3IgPT4gJ3N0YXRp c3RpY3M6IHJlY292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgc2hhcmVk IGJ1ZmZlciBwaW4nLAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9i dWZmZXJwaW4nLCBwcm92b2xhdGlsZSA9PiAncycsCkBAIC0xMTA3MSw5ICsxMTA3Niw5IEBA CiAgIHByb25hbWUgPT4gJ3BnX2dldF9yZXBsaWNhdGlvbl9zbG90cycsIHByb3Jvd3MgPT4g JzEwJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm9yZXRzZXQgPT4gJ3QnLCBwcm92b2xh dGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsCiAgIHByb2FyZ3R5cGVzID0+ ICcnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAne25hbWUsbmFtZSx0ZXh0LG9pZCxib29sLGJv b2wsaW50NCx4aWQseGlkLHBnX2xzbixwZ19sc24sdGV4dCxpbnQ4LGJvb2x9JywKLSAgcHJv YXJnbW9kZXMgPT4gJ3tvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG99JywKLSAgcHJvYXJn bmFtZXMgPT4gJ3tzbG90X25hbWUscGx1Z2luLHNsb3RfdHlwZSxkYXRvaWQsdGVtcG9yYXJ5 LGFjdGl2ZSxhY3RpdmVfcGlkLHhtaW4sY2F0YWxvZ194bWluLHJlc3RhcnRfbHNuLGNvbmZp cm1lZF9mbHVzaF9sc24sd2FsX3N0YXR1cyxzYWZlX3dhbF9zaXplLHR3b19waGFzZX0nLAor ICBwcm9hbGxhcmd0eXBlcyA9PiAne25hbWUsbmFtZSx0ZXh0LG9pZCxib29sLGJvb2wsaW50 NCx4aWQseGlkLHBnX2xzbixwZ19sc24sdGV4dCxpbnQ4LGJvb2wsYm9vbH0nLAorICBwcm9h cmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvfScsCisgIHByb2Fy Z25hbWVzID0+ICd7c2xvdF9uYW1lLHBsdWdpbixzbG90X3R5cGUsZGF0b2lkLHRlbXBvcmFy eSxhY3RpdmUsYWN0aXZlX3BpZCx4bWluLGNhdGFsb2dfeG1pbixyZXN0YXJ0X2xzbixjb25m aXJtZWRfZmx1c2hfbHNuLHdhbF9zdGF0dXMsc2FmZV93YWxfc2l6ZSx0d29fcGhhc2UsY29u ZmxpY3Rpbmd9JywKICAgcHJvc3JjID0+ICdwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMnIH0s CiB7IG9pZCA9PiAnMzc4NicsIGRlc2NyID0+ICdzZXQgdXAgYSBsb2dpY2FsIHJlcGxpY2F0 aW9uIHNsb3QnLAogICBwcm9uYW1lID0+ICdwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlv bl9zbG90JywgcHJvdm9sYXRpbGUgPT4gJ3YnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaAppbmRleCBlNzliOGEzNGViLi41ZThi MDRkMjFiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5j bHVkZS9wZ3N0YXQuaApAQCAtMzMxLDYgKzMzMSw3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3Rh dF9TdGF0REJFbnRyeQogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X3RhYmxlc3BhY2U7CiAJ UGdTdGF0X0NvdW50ZXIgY29uZmxpY3RfbG9jazsKIAlQZ1N0YXRfQ291bnRlciBjb25mbGlj dF9zbmFwc2hvdDsKKwlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9sb2dpY2Fsc2xvdDsKIAlQ Z1N0YXRfQ291bnRlciBjb25mbGljdF9idWZmZXJwaW47CiAJUGdTdGF0X0NvdW50ZXIgY29u ZmxpY3Rfc3RhcnR1cF9kZWFkbG9jazsKIAlQZ1N0YXRfQ291bnRlciB0ZW1wX2ZpbGVzOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBhYjFhZWJmZGU0Li4wNmQz ZjFmNWQzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTQ3Miw4 ICsxNDcyLDkgQEAgcGdfcmVwbGljYXRpb25fc2xvdHN8IFNFTEVDVCBsLnNsb3RfbmFtZSwK ICAgICBsLmNvbmZpcm1lZF9mbHVzaF9sc24sCiAgICAgbC53YWxfc3RhdHVzLAogICAgIGwu c2FmZV93YWxfc2l6ZSwKLSAgICBsLnR3b19waGFzZQotICAgRlJPTSAocGdfZ2V0X3JlcGxp Y2F0aW9uX3Nsb3RzKCkgbChzbG90X25hbWUsIHBsdWdpbiwgc2xvdF90eXBlLCBkYXRvaWQs IHRlbXBvcmFyeSwgYWN0aXZlLCBhY3RpdmVfcGlkLCB4bWluLCBjYXRhbG9nX3htaW4sIHJl c3RhcnRfbHNuLCBjb25maXJtZWRfZmx1c2hfbHNuLCB3YWxfc3RhdHVzLCBzYWZlX3dhbF9z aXplLCB0d29fcGhhc2UpCisgICAgbC50d29fcGhhc2UsCisgICAgbC5jb25mbGljdGluZwor ICAgRlJPTSAocGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKCkgbChzbG90X25hbWUsIHBsdWdp biwgc2xvdF90eXBlLCBkYXRvaWQsIHRlbXBvcmFyeSwgYWN0aXZlLCBhY3RpdmVfcGlkLCB4 bWluLCBjYXRhbG9nX3htaW4sIHJlc3RhcnRfbHNuLCBjb25maXJtZWRfZmx1c2hfbHNuLCB3 YWxfc3RhdHVzLCBzYWZlX3dhbF9zaXplLCB0d29fcGhhc2UsIGNvbmZsaWN0aW5nKQogICAg ICBMRUZUIEpPSU4gcGdfZGF0YWJhc2UgZCBPTiAoKGwuZGF0b2lkID0gZC5vaWQpKSk7CiBw Z19yb2xlc3wgU0VMRUNUIHBnX2F1dGhpZC5yb2xuYW1lLAogICAgIHBnX2F1dGhpZC5yb2xz dXBlciwKQEAgLTE4NjksNyArMTg3MCw4IEBAIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3Rz fCBTRUxFQ1Qgb2lkIEFTIGRhdGlkLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xv Y2sob2lkKSBBUyBjb25mbF9sb2NrLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3Nu YXBzaG90KG9pZCkgQVMgY29uZmxfc25hcHNob3QsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29u ZmxpY3RfYnVmZmVycGluKG9pZCkgQVMgY29uZmxfYnVmZmVycGluLAotICAgIHBnX3N0YXRf Z2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2sob2lkKSBBUyBjb25mbF9kZWFkbG9j aworICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2sob2lkKSBB UyBjb25mbF9kZWFkbG9jaywKKyAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fs c2xvdChvaWQpIEFTIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdAogICAgRlJPTSBwZ19kYXRh YmFzZSBkOwogcGdfc3RhdF9nc3NhcGl8IFNFTEVDVCBwaWQsCiAgICAgZ3NzX2F1dGggQVMg Z3NzX2F1dGhlbnRpY2F0ZWQsCi0tIAoyLjM0LjEKCg== --------------9IFCIzDt0tUi9n0JUWtvR6ZK Content-Type: text/plain; charset=UTF-8; name="v63-0001-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v63-0001-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA2N2NlNDU1MzdmOTc2NmRhOTNkZTgyOGE0MGJiNDZkZWU3NWRkODQ2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU3OjU2ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NjMgMS82XSBIYW5kbGUgbG9naWNhbCBzbG90IGNvbmZsaWN0cyBvbiBzdGFuZGJ5LgpN SU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRG LTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKRHVyaW5nIFdBTCByZXBsYXkg b24gc3RhbmRieSwgd2hlbiBzbG90IGNvbmZsaWN0IGlzIGlkZW50aWZpZWQsCmludmFsaWRh dGUgc3VjaCBzbG90cy4gQWxzbyBkbyB0aGUgc2FtZSB0aGluZyBpZiB3YWxfbGV2ZWwgb24g dGhlIHByaW1hcnkgc2VydmVyCmlzIHJlZHVjZWQgdG8gYmVsb3cgbG9naWNhbCBhbmQgdGhl cmUgYXJlIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMKb24gc3RhbmRieS4gSW50cm9kdWNlIGEg bmV3IFByb2NTaWduYWxSZWFzb24gdmFsdWUgZm9yIHNsb3QKY29uZmxpY3QgcmVjb3Zlcnku CgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEto YW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZv dCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxv LApCaGFyYXRoIFJ1cGlyZWRkeSwgQW1pdCBLYXBpbGEsIMOBbHZhcm8gSGVycmVyYQotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgICAgICAgICAgICB8ICAgMiAr CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYyAgICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgICAz ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jICAgICAgICAgICB8ICAg MiArCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYyAgICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgICAgICAgIHwg IDIwICsrLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAgICAg IHwgIDEzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAg ICAgfCAxNzAgKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90ZnVuY3MuYyAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jICAgICAgICAgICB8ICAgNyArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jc2lnbmFsLmMgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgMTggKysKIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Nsb3QuaCAgICAgICAgICAgICAgICB8ICA2MSArKysrKystCiBzcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1 ZGUvc3RvcmFnZS9zdGFuZGJ5LmggICAgICAgICAgICAgICAgIHwgICAyICsKIDE2IGZpbGVz IGNoYW5nZWQsIDI3MCBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkKICAgNy41JSBz cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8KICAgNS42JSBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsLwogIDU4LjclIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uLwogICA1LjIl IHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjLwogICA0LjglIHNyYy9iYWNrZW5kL3Rjb3AvCiAg MTQuMiUgc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vCiAgIDMuNSUgc3JjLwoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0eGxvZy5jCmluZGV4IGI3Njc4ZjNjMTQuLjlhODZmYjNmZWYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtMTk3LDYgKzE5Nyw3IEBAIGdp c3RSZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlYTG9nUmVj R2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwpOwogCiAJCVJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+c25hcHNob3RDb25m bGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+aXNDYXRhbG9nUmVsLAogCQkJCQkJ CQkJCQlybG9jYXRvcik7CiAJfQogCkBAIC0zOTAsNiArMzkxLDcgQEAgZ2lzdFJlZG9QYWdl UmV1c2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYgKEluSG90U3RhbmRi eSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKHhscmVj LT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCSAgIHhscmVjLT5pc0Nh dGFsb2dSZWwsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bG9jYXRvcik7CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggZjJkZDliZThkMy4uZThlMDZjNjJh OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTEwMDMsNiArMTAw Myw3IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxM LCBOVUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRh LT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0NhdGFs b2dSZWwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMKaW5kZXggOGIxM2UzZjg5Mi4uZjM4OWNlZWUxZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMKQEAgLTg3NjksNiArODc2OSw3IEBAIGhlYXBfeGxvZ19wcnVuZShY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5KQogCQlS ZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25m bGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJ CQkJCXJsb2NhdG9yKTsKIAogCS8qCkBAIC04OTQwLDYgKzg5NDEsNyBAQCBoZWFwX3hsb2df dmlzaWJsZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFu ZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25h cHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5mbGFncyAmIFZJU0lC SUxJVFlNQVBfWExPR19DQVRBTE9HX1JFTCwKIAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCiAJ LyoKQEAgLTkwNjEsNiArOTA2Myw3IEBAIGhlYXBfeGxvZ19mcmVlemVfcGFnZShYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAm cmxvY2F0b3IsIE5VTEwsIE5VTEwpOwogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhT bmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhs cmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKaW5kZXggNDE0Y2E0ZjZkZS4uYzg3ZTQ2ZWQ2 NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKQEAgLTY2OSw2ICs2Njks NyBAQCBidHJlZV94bG9nX2RlbGV0ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJWExv Z1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBOVUxMKTsKIAog CQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RD b25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJ CQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKQEAgLTEwMDcsNiArMTAwOCw3IEBAIGJ0cmVlX3hs b2dfcmV1c2VfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCWlmIChJbkhvdFN0 YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZCh4 bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCQkgICB4bHJlYy0+ aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQkJICAgeGxyZWMtPmxvY2F0b3IpOwogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jCmluZGV4IGIwNzFiNTljOGEuLjQ1OWFj OTI5YmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jCkBAIC04NzksNiAr ODc5LDcgQEAgc3BnUmVkb1ZhY3V1bVJlZGlyZWN0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KQogCiAJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZsb2NhdG9yLCBOVUxMLCBO VUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0NhdGFsb2dS ZWwsCiAJCQkJCQkJCQkJCWxvY2F0b3IpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZy5jCmluZGV4IDQ2ODIxYWQ2MDUuLjcxM2I2MWE5YmYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMKQEAgLTY4MDYsNyArNjgwNiw4IEBAIENyZWF0ZUNoZWNrUG9pbnQo aW50IGZsYWdzKQogCSAqLwogCVhMQnl0ZVRvU2VnKFJlZG9SZWNQdHIsIF9sb2dTZWdObywg d2FsX3NlZ21lbnRfc2l6ZSk7CiAJS2VlcExvZ1NlZyhyZWNwdHIsICZfbG9nU2VnTm8pOwot CWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKF9sb2dTZWdObykpCisJ aWYgKEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoX2xvZ1NlZ05vLCBJbnZh bGlkT2lkLAorCQkJCQkJCQkJCSAgIEludmFsaWRUcmFuc2FjdGlvbklkLCBmYWxzZSkpCiAJ ewogCQkvKgogCQkgKiBTb21lIHNsb3RzIGhhdmUgYmVlbiBpbnZhbGlkYXRlZDsgcmVjYWxj dWxhdGUgdGhlIG9sZC1zZWdtZW50CkBAIC03MjUwLDcgKzcyNTEsOCBAQCBDcmVhdGVSZXN0 YXJ0UG9pbnQoaW50IGZsYWdzKQogCXJlcGxheVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIo JnJlcGxheVRMSSk7CiAJZW5kcHRyID0gKHJlY2VpdmVQdHIgPCByZXBsYXlQdHIpID8gcmVw bGF5UHRyIDogcmVjZWl2ZVB0cjsKIAlLZWVwTG9nU2VnKGVuZHB0ciwgJl9sb2dTZWdObyk7 Ci0JaWYgKEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoX2xvZ1NlZ05vKSkK KwlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhfbG9nU2VnTm8sIElu dmFsaWRPaWQsCisJCQkJCQkJCQkJICAgSW52YWxpZFRyYW5zYWN0aW9uSWQsIGZhbHNlKSkK IAl7CiAJCS8qCiAJCSAqIFNvbWUgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRhdGVkOyByZWNh bGN1bGF0ZSB0aGUgb2xkLXNlZ21lbnQKQEAgLTc5NjMsNiArNzk2NSwyMCBAQCB4bG9nX3Jl ZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCS8qIFVwZGF0ZSBvdXIgY29weSBvZiB0 aGUgcGFyYW1ldGVycyBpbiBwZ19jb250cm9sICovCiAJCW1lbWNweSgmeGxyZWMsIFhMb2dS ZWNHZXREYXRhKHJlY29yZCksIHNpemVvZih4bF9wYXJhbWV0ZXJfY2hhbmdlKSk7CiAKKwkJ LyoKKwkJICogSW52YWxpZGF0ZSBsb2dpY2FsIHNsb3RzIGlmIHdlIGFyZSBpbiBob3Qgc3Rh bmRieSBhbmQgdGhlIHByaW1hcnkKKwkJICogZG9lcyBub3QgaGF2ZSBhIFdBTCBsZXZlbCBz dWZmaWNpZW50IGZvciBsb2dpY2FsIGRlY29kaW5nLiBObyBuZWVkCisJCSAqIHRvIHNlYXJj aCBmb3IgcG90ZW50aWFsbHkgY29uZmxpY3RpbmcgbG9naWNhbGx5IHNsb3RzIGlmIHN0YW5k YnkgaXMKKwkJICogcnVubmluZyB3aXRoIHdhbF9sZXZlbCBsb3dlciB0aGFuIGxvZ2ljYWws IGJlY2F1c2UgaW4gdGhhdCBjYXNlLCB3ZQorCQkgKiB3b3VsZCBoYXZlIGVpdGhlciBkaXNh bGxvd2VkIGNyZWF0aW9uIG9mIGxvZ2ljYWwgc2xvdHMgb3IKKwkJICogaW52YWxpZGF0ZWQg ZXhpc3Rpbmcgb25lcy4KKwkJICovCisJCWlmIChJblJlY292ZXJ5ICYmIEluSG90U3RhbmRi eSAmJgorCQkJeGxyZWMud2FsX2xldmVsIDwgV0FMX0xFVkVMX0xPR0lDQUwgJiYKKwkJCXdh bF9sZXZlbCA+PSBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJCUludmFsaWRhdGVPYnNvbGV0ZVJl cGxpY2F0aW9uU2xvdHMoMCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJICAgSW52YWxpZFRy YW5zYWN0aW9uSWQsIHRydWUpOworCiAJCUxXTG9ja0FjcXVpcmUoQ29udHJvbEZpbGVMb2Nr LCBMV19FWENMVVNJVkUpOwogCQlDb250cm9sRmlsZS0+TWF4Q29ubmVjdGlvbnMgPSB4bHJl Yy5NYXhDb25uZWN0aW9uczsKIAkJQ29udHJvbEZpbGUtPm1heF93b3JrZXJfcHJvY2Vzc2Vz ID0geGxyZWMubWF4X3dvcmtlcl9wcm9jZXNzZXM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwppbmRleCBmYTFiNjQxYTJiLi41NzVh MDQ3ZTUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbGZ1bmNzLmMKQEAgLTIxNiw5ICsyMTYsOSBAQCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2No YW5nZXNfZ3V0cyhGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBjb25maXJtLCBib29s IGJpbgogCiAJCS8qCiAJCSAqIEFmdGVyIHRoZSBzYW5pdHkgY2hlY2tzIGluIENyZWF0ZURl Y29kaW5nQ29udGV4dCwgbWFrZSBzdXJlIHRoZQotCQkgKiByZXN0YXJ0X2xzbiBpcyB2YWxp ZC4gIEF2b2lkICJjYW5ub3QgZ2V0IGNoYW5nZXMiIHdvcmRpbmcgaW4gdGhpcwotCQkgKiBl cnJtc2cgYmVjYXVzZSB0aGF0J2QgYmUgY29uZnVzaW5nbHkgYW1iaWd1b3VzIGFib3V0IG5v IGNoYW5nZXMKLQkJICogYmVpbmcgYXZhaWxhYmxlLgorCQkgKiByZXN0YXJ0X2xzbiBpcyB2 YWxpZCBvciBib3RoIGVmZmVjdGl2ZV94bWluIGFuZCBjYXRhbG9nX3htaW4gYXJlCisJCSAq IHZhbGlkLiBBdm9pZCAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMgZXJy bXNnIGJlY2F1c2UKKwkJICogdGhhdCdkIGJlIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91 dCBubyBjaGFuZ2VzIGJlaW5nIGF2YWlsYWJsZS4KIAkJICovCiAJCWlmIChYTG9nUmVjUHRy SXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnJlc3RhcnRfbHNuKSkKIAkJCWVy ZXBvcnQoRVJST1IsCkBAIC0yMjcsNiArMjI3LDEzIEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRf Y2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJv b2wgYmluCiAJCQkJCQkJTmFtZVN0cigqbmFtZSkpLAogCQkJCQkgZXJyZGV0YWlsKCJUaGlz IHNsb3QgaGFzIG5ldmVyIHByZXZpb3VzbHkgcmVzZXJ2ZWQgV0FMLCBvciBpdCBoYXMgYmVl biBpbnZhbGlkYXRlZC4iKSkpOwogCisJCWlmIChMb2dpY2FsUmVwbGljYXRpb25TbG90SXNJ bnZhbGlkKE15UmVwbGljYXRpb25TbG90KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJ CQkgZXJybXNnKCJjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBc IiVzXCIiLAorCQkJCQkJCU5hbWVTdHIoKm5hbWUpKSwKKwkJCQkJIGVycmRldGFpbCgiVGhp cyBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIGJlY2F1c2UgaXQgd2FzIGNvbmZsaWN0aW5n IHdpdGggcmVjb3ZlcnkuIikpKTsKKwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCAyMjkzYzBjNmZj Li4zNzZkNDUzMzc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC0xMTAsNiArMTEw LDEzIEBAIHN0YXRpYyB2b2lkIFJlc3RvcmVTbG90RnJvbURpc2soY29uc3QgY2hhciAqbmFt ZSk7CiBzdGF0aWMgdm9pZCBDcmVhdGVTbG90T25EaXNrKFJlcGxpY2F0aW9uU2xvdCAqc2xv dCk7CiBzdGF0aWMgdm9pZCBTYXZlU2xvdFRvUGF0aChSZXBsaWNhdGlvblNsb3QgKnNsb3Qs IGNvbnN0IGNoYXIgKmRpciwgaW50IGVsZXZlbCk7CiAKKy8qIHRvIHJlcG9ydCB0ZXJtaW5h dGlvbi9pbnZhbGlkYXRpb24gKi8KK3N0YXRpYyB2b2lkIFJlcG9ydFRlcm1pbmF0aW9uSW52 YWxpZGF0aW9uKGJvb2wgdGVybWluYXRpbmcsIGJvb2wgY2hlY2tfb25feGlkLAorCQkJCQkJ CQkJCSAgaW50IHBpZCwgTmFtZURhdGEgc2xvdG5hbWUsCisJCQkJCQkJCQkJICBUcmFuc2Fj dGlvbklkIHhpZCwKKwkJCQkJCQkJCQkgIFhMb2dSZWNQdHIgcmVzdGFydF9sc24sCisJCQkJ CQkJCQkJICBYTG9nUmVjUHRyIG9sZGVzdExTTik7CisKIC8qCiAgKiBSZXBvcnQgc2hhcmVk LW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgUmVwbGljYXRpb25TbG90c1NobWVtSW5pdC4KICAq LwpAQCAtODU1LDggKzg2Miw3IEBAIFJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRY bWluKGJvb2wgYWxyZWFkeV9sb2NrZWQpCiAJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgp OwogCQllZmZlY3RpdmVfeG1pbiA9IHMtPmVmZmVjdGl2ZV94bWluOwogCQllZmZlY3RpdmVf Y2F0YWxvZ194bWluID0gcy0+ZWZmZWN0aXZlX2NhdGFsb2dfeG1pbjsKLQkJaW52YWxpZGF0 ZWQgPSAoIVhMb2dSZWNQdHJJc0ludmFsaWQocy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCkgJiYK LQkJCQkJICAgWExvZ1JlY1B0cklzSW52YWxpZChzLT5kYXRhLnJlc3RhcnRfbHNuKSk7CisJ CWludmFsaWRhdGVkID0gT2Jzb2xldGVTbG90SXNJbnZhbGlkKHMsIHRydWUpIHx8IExvZ2lj YWxSZXBsaWNhdGlvblNsb3RJc0ludmFsaWQocyk7CiAJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+ bXV0ZXgpOwogCiAJCS8qIGludmFsaWRhdGVkIHNsb3RzIG5lZWQgbm90IGFwcGx5ICovCkBA IC0xMjI1LDI4ICsxMjMxLDg1IEBAIFJlcGxpY2F0aW9uU2xvdFJlc2VydmVXYWwodm9pZCkK IAl9CiB9CiAKKworLyoKKyAqIFJlcG9ydCB0ZXJtaW5hdGluZyBvciBjb25mbGljdGluZyBt ZXNzYWdlLgorICoKKyAqIEZvciBib3RoLCBsb2dpY2FsIGNvbmZsaWN0IG9uIHN0YW5kYnkg YW5kIG9ic29sZXRlIHNsb3QgYXJlIGhhbmRsZWQuCisgKi8KK3N0YXRpYyB2b2lkCitSZXBv cnRUZXJtaW5hdGlvbkludmFsaWRhdGlvbihib29sIHRlcm1pbmF0aW5nLCBib29sIGNoZWNr X29uX3hpZCwgaW50IHBpZCwKKwkJCQkJCQkgIE5hbWVEYXRhIHNsb3RuYW1lLCBUcmFuc2Fj dGlvbklkIHhpZCwKKwkJCQkJCQkgIFhMb2dSZWNQdHIgcmVzdGFydF9sc24sIFhMb2dSZWNQ dHIgb2xkZXN0TFNOKQoreworCVN0cmluZ0luZm9EYXRhIGVycl9kZXRhaWw7CisJYm9vbAkJ aGludCA9IGZhbHNlOworCisJaW5pdFN0cmluZ0luZm8oJmVycl9kZXRhaWwpOworCisJaWYg KGNoZWNrX29uX3hpZCkKKwl7CisJCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQor CQkJYXBwZW5kU3RyaW5nSW5mbygmZXJyX2RldGFpbCwgXygiVGhlIHNsb3QgY29uZmxpY3Rl ZCB3aXRoIHhpZCBob3Jpem9uICV1LiIpLCB4aWQpOworCQllbHNlCisJCQlhcHBlbmRTdHJp bmdJbmZvKCZlcnJfZGV0YWlsLCBfKCJMb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVx dWlyZXMgd2FsX2xldmVsIHRvIGJlIGF0IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkg c2VydmVyIikpOworCX0KKwllbHNlCisJeworCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJfZGV0 YWlsLCBfKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGV4Y2VlZHMgdGhlIGxpbWl0 IGJ5ICVsbHUgYnl0ZXMuIiksCisJCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHJlc3RhcnRfbHNu KSwKKwkJCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSAob2xkZXN0TFNOIC0gcmVzdGFydF9s c24pKTsKKworCQloaW50ID0gdHJ1ZTsKKwl9CisKKwllcmVwb3J0KExPRywKKwkJCXRlcm1p bmF0aW5nID8gZXJybXNnKCJ0ZXJtaW5hdGluZyBwcm9jZXNzICVkIHRvIHJlbGVhc2UgcmVw bGljYXRpb24gc2xvdCBcIiVzXCIiLCBwaWQsIE5hbWVTdHIoc2xvdG5hbWUpKSA6CisJCQll cnJtc2coImludmFsaWRhdGluZyBvYnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIs IE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJCWVycmRldGFpbF9pbnRlcm5hbCgiJXMiLCBlcnJf ZGV0YWlsLmRhdGEpLAorCQkJaGludCA/IGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGlu Y3JlYXNlIG1heF9zbG90X3dhbF9rZWVwX3NpemUuIikgOiAwKTsKKworCXBmcmVlKGVycl9k ZXRhaWwuZGF0YSk7Cit9CisKIC8qCi0gKiBIZWxwZXIgZm9yIEludmFsaWRhdGVPYnNvbGV0 ZVJlcGxpY2F0aW9uU2xvdHMgLS0gYWNxdWlyZXMgdGhlIGdpdmVuIHNsb3QKLSAqIGFuZCBt YXJrIGl0IGludmFsaWQsIGlmIG5lY2Vzc2FyeSBhbmQgcG9zc2libGUuCisgKiBIZWxwZXIg Zm9yIEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMKKyAqCisgKiBBY3F1aXJl cyB0aGUgZ2l2ZW4gc2xvdCBhbmQgbWFyayBpdCBpbnZhbGlkLCBpZiBuZWNlc3NhcnkgYW5k IHBvc3NpYmxlLgogICoKICAqIFJldHVybnMgd2hldGhlciBSZXBsaWNhdGlvblNsb3RDb250 cm9sTG9jayB3YXMgcmVsZWFzZWQgaW4gdGhlIGludGVyaW0gKGFuZAogICogaW4gdGhhdCBj YXNlIHdlJ3JlIG5vdCBob2xkaW5nIHRoZSBsb2NrIGF0IHJldHVybiwgb3RoZXJ3aXNlIHdl IGFyZSkuCiAgKgotICogU2V0cyAqaW52YWxpZGF0ZWQgdHJ1ZSBpZiB0aGUgc2xvdCB3YXMg aW52YWxpZGF0ZWQuIChVbnRvdWNoZWQgb3RoZXJ3aXNlLikKKyAqIFNldHMgKmludmFsaWRh dGVkIHRydWUgaWYgYW4gb2Jzb2xldGUgc2xvdCB3YXMgaW52YWxpZGF0ZWQuIChVbnRvdWNo ZWQgb3RoZXJ3aXNlLikKICAqCiAgKiBUaGlzIGlzIGluaGVyZW50bHkgcmFjeSwgYmVjYXVz ZSB3ZSByZWxlYXNlIHRoZSBMV0xvY2sKICAqIGZvciBzeXNjYWxscywgc28gY2FsbGVyIG11 c3QgcmVzdGFydCBpZiB3ZSByZXR1cm4gdHJ1ZS4KICAqLwogc3RhdGljIGJvb2wKIEludmFs aWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQ dHIgb2xkZXN0TFNOLAotCQkJCQkJCSAgIGJvb2wgKmludmFsaWRhdGVkKQorCQkJCQkJCSAg IE9pZCBkYm9pZCwgYm9vbCAqaW52YWxpZGF0ZWQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJ CQkJCSAgIGJvb2wgY2hlY2tfb25feGlkKQogewogCWludAkJCWxhc3Rfc2lnbmFsZWRfcGlk ID0gMDsKIAlib29sCQlyZWxlYXNlZF9sb2NrID0gZmFsc2U7CiAKKwlpZiAoY2hlY2tfb25f eGlkKQorCXsKKwkJLyogd2UgYXJlIG9ubHkgZGVhbGluZyB3aXRoICpsb2dpY2FsKiBzbG90 IGNvbmZsaWN0cyAqLworCQlpZiAoIVNsb3RJc0xvZ2ljYWwocykpCisJCQlyZXR1cm4gZmFs c2U7CisKKwkJLyoKKwkJICogbm90IHRoZSBkYXRhYmFzZSBvZiBpbnRlcmVzdCBhbmQgd2Ug ZG9uJ3Qgd2FudCBhbGwgdGhlCisJCSAqIGRhdGFiYXNlLCBza2lwCisJCSAqLworCQlpZiAo cy0+ZGF0YS5kYXRhYmFzZSAhPSBkYm9pZCAmJiBUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQp KQorCQkJcmV0dXJuIGZhbHNlOworCX0KIAlmb3IgKDs7KQogCXsKIAkJWExvZ1JlY1B0cgly ZXN0YXJ0X2xzbjsKKwogCQlOYW1lRGF0YQlzbG90bmFtZTsKIAkJaW50CQkJYWN0aXZlX3Bp ZCA9IDA7CiAKQEAgLTEyNjMsMTkgKzEzMjYsMjAgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jz b2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0ciBvbGRlc3RMU04sCiAJ CSAqIENoZWNrIGlmIHRoZSBzbG90IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkLiBJZiBpdCBu ZWVkcyB0byBiZQogCQkgKiBpbnZhbGlkYXRlZCwgYW5kIGlzIG5vdCBjdXJyZW50bHkgYWNx dWlyZWQsIGFjcXVpcmUgaXQgYW5kIG1hcmsgaXQKIAkJICogYXMgaGF2aW5nIGJlZW4gaW52 YWxpZGF0ZWQuICBXZSBkbyB0aGlzIHdpdGggdGhlIHNwaW5sb2NrIGhlbGQgdG8KLQkJICog YXZvaWQgcmFjZSBjb25kaXRpb25zIC0tIGZvciBleGFtcGxlIHRoZSByZXN0YXJ0X2xzbiBj b3VsZCBtb3ZlCi0JCSAqIGZvcndhcmQsIG9yIHRoZSBzbG90IGNvdWxkIGJlIGRyb3BwZWQu CisJCSAqIGF2b2lkIHJhY2UgY29uZGl0aW9ucyAtLSBmb3IgZXhhbXBsZSB0aGUgcmVzdGFy dF9sc24gKG9yIHRoZQorCQkgKiB4bWluKHMpIGNvdWxkKSBtb3ZlIGZvcndhcmQgb3IgdGhl IHNsb3QgY291bGQgYmUgZHJvcHBlZC4KIAkJICovCiAJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+ bXV0ZXgpOwogCiAJCXJlc3RhcnRfbHNuID0gcy0+ZGF0YS5yZXN0YXJ0X2xzbjsKIAogCQkv KgotCQkgKiBJZiB0aGUgc2xvdCBpcyBhbHJlYWR5IGludmFsaWQgb3IgaXMgZnJlc2ggZW5v dWdoLCB3ZSBkb24ndCBuZWVkIHRvCi0JCSAqIGRvIGFueXRoaW5nLgorCQkgKiBJZiB0aGUg c2xvdCBpcyBhbHJlYWR5IGludmFsaWQgb3IgaXMgYSBub24gY29uZmxpY3Rpbmcgc2xvdCwg d2UKKwkJICogZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZy4KIAkJICovCi0JCWlmIChYTG9n UmVjUHRySXNJbnZhbGlkKHJlc3RhcnRfbHNuKSB8fCByZXN0YXJ0X2xzbiA+PSBvbGRlc3RM U04pCisJCWlmIChEb05vdEludmFsaWRhdGVTbG90KHMsIHhpZCwgb2xkZXN0TFNOLCBjaGVj a19vbl94aWQpKQogCQl7CisJCQkvKiB0aGVuLCB3ZSBhcmUgbm90IGZvcmNpbmcgZm9yIGlu dmFsaWRhdGlvbiAqLwogCQkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7CiAJCQlpZiAo cmVsZWFzZWRfbG9jaykKIAkJCQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRy b2xMb2NrKTsKQEAgLTEyOTQsOSArMTM1OCwxNiBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNv bGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAkJ ewogCQkJTXlSZXBsaWNhdGlvblNsb3QgPSBzOwogCQkJcy0+YWN0aXZlX3BpZCA9IE15UHJv Y1BpZDsKLQkJCXMtPmRhdGEuaW52YWxpZGF0ZWRfYXQgPSByZXN0YXJ0X2xzbjsKLQkJCXMt PmRhdGEucmVzdGFydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKLQorCQkJaWYgKGNoZWNr X29uX3hpZCkKKwkJCXsKKwkJCQlzLT5lZmZlY3RpdmVfeG1pbiA9IEludmFsaWRUcmFuc2Fj dGlvbklkOworCQkJCXMtPmRhdGEuY2F0YWxvZ194bWluID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCA9 IHJlc3RhcnRfbHNuOworCQkJCXMtPmRhdGEucmVzdGFydF9sc24gPSBJbnZhbGlkWExvZ1Jl Y1B0cjsKKwkJCX0KIAkJCS8qIExldCBjYWxsZXIga25vdyAqLwogCQkJKmludmFsaWRhdGVk ID0gdHJ1ZTsKIAkJfQpAQCAtMTMyOSwxNSArMTQwMCwxNSBAQCBJbnZhbGlkYXRlUG9zc2li bHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExT TiwKIAkJCSAqLwogCQkJaWYgKGxhc3Rfc2lnbmFsZWRfcGlkICE9IGFjdGl2ZV9waWQpCiAJ CQl7Ci0JCQkJZXJlcG9ydChMT0csCi0JCQkJCQllcnJtc2coInRlcm1pbmF0aW5nIHByb2Nl c3MgJWQgdG8gcmVsZWFzZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsCi0JCQkJCQkJICAg YWN0aXZlX3BpZCwgTmFtZVN0cihzbG90bmFtZSkpLAotCQkJCQkJZXJyZGV0YWlsKCJUaGUg c2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGV4Y2VlZHMgdGhlIGxpbWl0IGJ5ICVsbHUgYnl0 ZXMuIiwKLQkJCQkJCQkJICBMU05fRk9STUFUX0FSR1MocmVzdGFydF9sc24pLAotCQkJCQkJ CQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIChvbGRlc3RMU04gLSByZXN0YXJ0X2xzbikpLAot CQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3Nsb3Rfd2Fs X2tlZXBfc2l6ZS4iKSk7Ci0KLQkJCQkodm9pZCkga2lsbChhY3RpdmVfcGlkLCBTSUdURVJN KTsKKwkJCQlSZXBvcnRUZXJtaW5hdGlvbkludmFsaWRhdGlvbih0cnVlLCBjaGVja19vbl94 aWQsIGFjdGl2ZV9waWQsCisJCQkJCQkJCQkJCSAgc2xvdG5hbWUsIHhpZCwgcmVzdGFydF9s c24sCisJCQkJCQkJCQkJCSAgb2xkZXN0TFNOKTsKKworCQkJCWlmIChjaGVja19vbl94aWQp CisJCQkJCSh2b2lkKSBTZW5kUHJvY1NpZ25hbChhY3RpdmVfcGlkLCBQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9ULCBJbnZhbGlkQmFja2VuZElkKTsKKwkJCQllbHNl CisJCQkJCSh2b2lkKSBraWxsKGFjdGl2ZV9waWQsIFNJR1RFUk0pOworCiAJCQkJbGFzdF9z aWduYWxlZF9waWQgPSBhY3RpdmVfcGlkOwogCQkJfQogCkBAIC0xMzcwLDE0ICsxNDQxLDEx IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMs IFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkJUmVwbGljYXRpb25TbG90TWFya0RpcnR5KCk7 CiAJCQlSZXBsaWNhdGlvblNsb3RTYXZlKCk7CiAJCQlSZXBsaWNhdGlvblNsb3RSZWxlYXNl KCk7CisJCQlwZ3N0YXRfZHJvcF9yZXBsc2xvdChzKTsKIAotCQkJZXJlcG9ydChMT0csCi0J CQkJCWVycm1zZygiaW52YWxpZGF0aW5nIG9ic29sZXRlIHJlcGxpY2F0aW9uIHNsb3QgXCIl c1wiIiwKLQkJCQkJCSAgIE5hbWVTdHIoc2xvdG5hbWUpKSwKLQkJCQkJZXJyZGV0YWlsKCJU aGUgc2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGV4Y2VlZHMgdGhlIGxpbWl0IGJ5ICVsbHUg Ynl0ZXMuIiwKLQkJCQkJCQkgIExTTl9GT1JNQVRfQVJHUyhyZXN0YXJ0X2xzbiksCi0JCQkJ CQkJICAodW5zaWduZWQgbG9uZyBsb25nKSAob2xkZXN0TFNOIC0gcmVzdGFydF9sc24pKSwK LQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3Nsb3Rfd2Fs X2tlZXBfc2l6ZS4iKSk7CisJCQlSZXBvcnRUZXJtaW5hdGlvbkludmFsaWRhdGlvbihmYWxz ZSwgY2hlY2tfb25feGlkLCBhY3RpdmVfcGlkLAorCQkJCQkJCQkJCSAgc2xvdG5hbWUsIHhp ZCwgcmVzdGFydF9sc24sCisJCQkJCQkJCQkJICBvbGRlc3RMU04pOwogCiAJCQkvKiBkb25l IHdpdGggdGhpcyBzbG90IGZvciBub3cgKi8KIAkJCWJyZWFrOwpAQCAtMTM5MCwyMCArMTQ1 OCwzOSBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90 ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIH0KIAogLyoKLSAqIE1hcmsgYW55IHNsb3Qg dGhhdCBwb2ludHMgdG8gYW4gTFNOIG9sZGVyIHRoYW4gdGhlIGdpdmVuIHNlZ21lbnQKLSAq IGFzIGludmFsaWQ7IGl0IHJlcXVpcmVzIFdBTCB0aGF0J3MgYWJvdXQgdG8gYmUgcmVtb3Zl ZC4KKyAqIEludmFsaWRhdGUgT2Jzb2xldGUgc2xvdHMuCisgKgorICogV0FMIGNhc2UgKGFr YSBjaGVja19vbl94aWQgaXMgZmFsc2UpOgorICoKKyAqCSBNYXJrIGFueSBzbG90IHRoYXQg cG9pbnRzIHRvIGFuIExTTiBvbGRlciB0aGFuIHRoZSBnaXZlbiBzZWdtZW50CisgKgkgYXMg aW52YWxpZDsgaXQgcmVxdWlyZXMgV0FMIHRoYXQncyBhYm91dCB0byBiZSByZW1vdmVkLgor ICoJIGludmFsaWRhdGVkIGlzIHNldCB0byB0cnVlIHdoZW4gYW55IHNsb3QgaGF2ZSBnb3Qg aW52YWxpZGF0ZWQuCiAgKgotICogUmV0dXJucyB0cnVlIHdoZW4gYW55IHNsb3QgaGF2ZSBn b3QgaW52YWxpZGF0ZWQuCisgKiBYaWQgY2FzZSAoYWthIGNoZWNrX29uX3hpZCBpcyB0cnVl KToKKyAqCisgKgkgV2hlbiB4aWQgaXMgdmFsaWQsIGl0IG1lYW5zIHRoYXQgd2UgYXJlIGFi b3V0IHRvIHJlbW92ZSByb3dzIG9sZGVyIHRoYW4geGlkLgorICoJIFRoZXJlZm9yZSB3ZSBu ZWVkIHRvIGludmFsaWRhdGUgc2xvdHMgdGhhdCBkZXBlbmQgb24gc2VlaW5nIHRob3NlIHJv d3MuCisgKgkgV2hlbiB4aWQgaXMgaW52YWxpZCwgaW52YWxpZGF0ZSBhbGwgbG9naWNhbCBz bG90cy4gVGhpcyBpcyByZXF1aXJlZCB3aGVuIHRoZQorICoJIG1hc3RlciB3YWxfbGV2ZWwg aXMgc2V0IGJhY2sgdG8gcmVwbGljYSwgc28gZXhpc3RpbmcgbG9naWNhbCBzbG90cyBuZWVk IHRvCisgKgkgYmUgaW52YWxpZGF0ZWQuIE5vdGUgdGhhdCBXYWl0RXhjZWVkc01heFN0YW5k YnlEZWxheSgpIGlzIG5vdCB0YWtlbiBpbnRvCisgKgkgYWNjb3VudCBoZXJlIChhcyBvcHBv c2VkIHRvIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZpcnR1YWxYSURzKCkpOiBYWFhY CiAgKgotICogTkIgLSB0aGlzIHJ1bnMgYXMgcGFydCBvZiBjaGVja3BvaW50LCBzbyBhdm9p ZCByYWlzaW5nIGVycm9ycyBpZiBwb3NzaWJsZS4KICAqLwogYm9vbAotSW52YWxpZGF0ZU9i c29sZXRlUmVwbGljYXRpb25TbG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vnbm8pCitJbnZhbGlk YXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdubywgT2lk IGRib2lkLAorCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBjaGVja19vbl94 aWQpCiB7Ci0JWExvZ1JlY1B0cglvbGRlc3RMU047CisKKwlYTG9nUmVjUHRyCW9sZGVzdExT TiA9IEludmFsaWRYTG9nUmVjUHRyOwogCWJvb2wJCWludmFsaWRhdGVkID0gZmFsc2U7CiAK LQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihvbGRlc3RTZWdubywgMCwgd2FsX3NlZ21lbnRf c2l6ZSwgb2xkZXN0TFNOKTsKKwlBc3NlcnQobWF4X3JlcGxpY2F0aW9uX3Nsb3RzID49IDAp OworCisJaWYgKG1heF9yZXBsaWNhdGlvbl9zbG90cyA9PSAwKQorCQlyZXR1cm4gaW52YWxp ZGF0ZWQ7CisKKwlpZiAoIWNoZWNrX29uX3hpZCkKKwkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQ dHIob2xkZXN0U2Vnbm8sIDAsIHdhbF9zZWdtZW50X3NpemUsIG9sZGVzdExTTik7CiAKIHJl c3RhcnQ6CiAJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdf U0hBUkVEKTsKQEAgLTE0MTQsMTYgKzE1MDEsMTUgQEAgcmVzdGFydDoKIAkJaWYgKCFzLT5p bl91c2UpCiAJCQljb250aW51ZTsKIAotCQlpZiAoSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xl dGVTbG90KHMsIG9sZGVzdExTTiwgJmludmFsaWRhdGVkKSkKLQkJewotCQkJLyogaWYgdGhl IGxvY2sgd2FzIHJlbGVhc2VkLCBzdGFydCBmcm9tIHNjcmF0Y2ggKi8KKwkJaWYgKEludmFs aWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChzLCBvbGRlc3RMU04sIGRib2lkLCAmaW52YWxp ZGF0ZWQsIHhpZCwgY2hlY2tfb25feGlkKSkKIAkJCWdvdG8gcmVzdGFydDsKLQkJfQogCX0K KwogCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOwogCiAJLyoK LQkgKiBJZiBhbnkgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRhdGVkLCByZWNhbGN1bGF0ZSB0 aGUgcmVzb3VyY2UgbGltaXRzLgorCSAqIElmIGFueSBzbG90cyBoYXZlIGJlZW4gaW52YWxp ZGF0ZWQsIHJlY2FsY3VsYXRlIHRoZSByZXF1aXJlZCB4bWluIGFuZAorCSAqIHRoZSByZXF1 aXJlZCBsc24gKGlmIGFwcHJvcHJpYXRlKS4KIAkgKi8KIAlpZiAoaW52YWxpZGF0ZWQpCiAJ ewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwppbmRleCAyZjNjOTY0ODI0Li4w MTVkMjc2ZmQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwpAQCAtMzE5 LDggKzMxOSw3IEBAIHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cyhQR19GVU5DVElPTl9BUkdT KQogCQkgKiBjZXJ0YWluIHRoYXQgdGhlIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQuICBP dGhlcndpc2UsIHRlc3QKIAkJICogYXZhaWxhYmlsaXR5IGZyb20gcmVzdGFydF9sc24uCiAJ CSAqLwotCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChzbG90X2NvbnRlbnRzLmRhdGEucmVz dGFydF9sc24pICYmCi0JCQkhWExvZ1JlY1B0cklzSW52YWxpZChzbG90X2NvbnRlbnRzLmRh dGEuaW52YWxpZGF0ZWRfYXQpKQorCQlpZiAoT2Jzb2xldGVTbG90SXNJbnZhbGlkKHNsb3Qs IHRydWUpKQogCQkJd2Fsc3RhdGUgPSBXQUxBVkFJTF9SRU1PVkVEOwogCQllbHNlCiAJCQl3 YWxzdGF0ZSA9IEdldFdBTEF2YWlsYWJpbGl0eShzbG90X2NvbnRlbnRzLmRhdGEucmVzdGFy dF9sc24pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCA3NWU4MzYz ZTI0Li5iNjg2NjkxY2EyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpA QCAtMTI1Myw2ICsxMjUzLDEzIEBAIFN0YXJ0TG9naWNhbFJlcGxpY2F0aW9uKFN0YXJ0UmVw bGljYXRpb25DbWQgKmNtZCkKIAogCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY21kLT5zbG90 bmFtZSwgdHJ1ZSk7CiAKKwlpZiAoTG9naWNhbFJlcGxpY2F0aW9uU2xvdElzSW52YWxpZChN eVJlcGxpY2F0aW9uU2xvdCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygi Y2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJ CQkJCWNtZC0+c2xvdG5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIlRoaXMgc2xvdCBoYXMgYmVl biBpbnZhbGlkYXRlZCBiZWNhdXNlIGl0IHdhcyBjb25mbGljdGluZyB3aXRoIHJlY292ZXJ5 LiIpKSk7CisKIAlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ ZGF0YS5yZXN0YXJ0X2xzbikpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggMzk1YjJjZjY5MC4uYzg1Y2I1Y2MxOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtNjczLDYgKzY3Myw5IEBA IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1By b2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCkpCiAJCVJlY292 ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hP VCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf TE9HSUNBTFNMT1QpKQorCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0spKQogCQlSZWNvdmVy eUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9E RUFETE9DSyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5k YnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCA5ZjU2YjRl OTVjLi5hMjMyMjBjYWU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z dGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC0y NCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtNDY2LDYgKzQ2 Nyw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxU cmFuc2FjdGlvbklkICp3YWl0bGlzdCwKICAqLwogdm9pZAogUmVzb2x2ZVJlY292ZXJ5Q29u ZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpv biwKKwkJCQkJCQkJCWJvb2wgaXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJUmVsRmlsZUxvY2F0 b3IgbG9jYXRvcikKIHsKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqYmFja2VuZHM7CkBAIC00 OTEsNiArNDkzLDEwIEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRy YW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAJCQkJCQkJCQkJICAgUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCwKIAkJCQkJCQkJCQkgICBXQUlUX0VW RU5UX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9ULAogCQkJCQkJCQkJCSAgIHRydWUpOwor CisJaWYgKHdhbF9sZXZlbCA+PSBXQUxfTEVWRUxfTE9HSUNBTCAmJiBpc0NhdGFsb2dSZWwp CisJCUludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoMCwgbG9jYXRvci5kYk9p ZCwKKwkJCQkJCQkJCQkgICBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgdHJ1ZSk7CiB9CiAK IC8qCkBAIC00OTksNiArNTA1LDcgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKICAqLwogdm9p ZAogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKEZ1bGxUcmFu c2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCSAgIGJvb2wg aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCSAgIFJlbEZpbGVMb2NhdG9yIGxvY2F0b3IpCiB7 CiAJLyoKQEAgLTUxNyw3ICs1MjQsOSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhT bmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcgog CQlUcmFuc2FjdGlvbklkIHRydW5jYXRlZDsKIAogCQl0cnVuY2F0ZWQgPSBYaWRGcm9tRnVs bFRyYW5zYWN0aW9uSWQoc25hcHNob3RDb25mbGljdEhvcml6b24pOwotCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh0cnVuY2F0ZWQsIGxvY2F0b3IpOworCQlSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh0cnVuY2F0ZWQsCisJCQkJCQkJCQkJ CWlzQ2F0YWxvZ1JlbCwKKwkJCQkJCQkJCQkJbG9jYXRvcik7CiAJfQogfQogCkBAIC0xNDc4 LDYgKzE0ODcsOSBAQCBnZXRfcmVjb3ZlcnlfY29uZmxpY3RfZGVzYyhQcm9jU2lnbmFsUmVh c29uIHJlYXNvbikKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9U OgogCQkJcmVhc29uRGVzYyA9IF8oInJlY292ZXJ5IGNvbmZsaWN0IG9uIHNuYXBzaG90Iik7 CiAJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxT TE9UOgorCQkJcmVhc29uRGVzYyA9IF8oInJlY292ZXJ5IGNvbmZsaWN0IG9uIHJlcGxpY2F0 aW9uIHNsb3QiKTsKKwkJCWJyZWFrOwogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJ Q1RfU1RBUlRVUF9ERUFETE9DSzoKIAkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25m bGljdCBvbiBidWZmZXIgZGVhZGxvY2siKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j CmluZGV4IGExMGVjYmFmNTAuLjRlYzY0YjBhNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAg LTI1MjYsNiArMjUyNiw5IEBAIGVycmRldGFpbF9yZWNvdmVyeV9jb25mbGljdCh2b2lkKQog CQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1Q6CiAJCQllcnJkZXRh aWwoIlVzZXIgcXVlcnkgbWlnaHQgaGF2ZSBuZWVkZWQgdG8gc2VlIHJvdyB2ZXJzaW9ucyB0 aGF0IG11c3QgYmUgcmVtb3ZlZC4iKTsKIAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisJCQllcnJkZXRhaWwoIlVzZXIgd2FzIHVz aW5nIHRoZSBsb2dpY2FsIHNsb3QgdGhhdCBtdXN0IGJlIGRyb3BwZWQuIik7CisJCQlicmVh azsKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0s6 CiAJCQllcnJkZXRhaWwoIlVzZXIgdHJhbnNhY3Rpb24gY2F1c2VkIGJ1ZmZlciBkZWFkbG9j ayB3aXRoIHJlY292ZXJ5LiIpOwogCQkJYnJlYWs7CkBAIC0zMTQzLDYgKzMxNDYsMjEgQEAg UmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbikKIAkJ CQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJCS8qIFRoaXMgc2lnbmFs IGlzIG9ubHkgdXNlZCBmb3IgbG9naWNhbCBzbG90aSwgc2FuaXR5IGNoZWNrICovCisJCQkJ QXNzZXJ0KE15UmVwbGljYXRpb25TbG90ICYmIFNsb3RJc0xvZ2ljYWwoTXlSZXBsaWNhdGlv blNsb3QpKTsKKwkJCQlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IHRydWU7CisJCQkJUXVl cnlDYW5jZWxQZW5kaW5nID0gdHJ1ZTsKKwkJCQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsK KworCQkJCS8qCisJCQkJICogTm9ybWFsIGJhY2tlbmRzIHNob3VsZCBleGl0LCBzbyB0aGF0 IHRoZSBzdGFydHVwIHByb2Nlc3MKKwkJCQkgKiBjYW4gbWFyayB0aGUgc2xvdCBpbnZhbGlk LgorCQkJCSAqLworCQkJCWlmICghYW1fY2FzY2FkaW5nX3dhbHNlbmRlcikKKwkJCQkJUHJv Y0RpZVBlbmRpbmcgPSB0cnVlOworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0OgogCQkJCWVs b2coRkFUQUwsICJ1bnJlY29nbml6ZWQgY29uZmxpY3QgbW9kZTogJWQiLAogCQkJCQkgKGlu dCkgcmVhc29uKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3Qu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCA4ODcyYzgwY2RmLi5m MjgzODAyMmU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC0xNjgsNiArMTY4LDY0 IEBAIHR5cGVkZWYgc3RydWN0IFJlcGxpY2F0aW9uU2xvdAogI2RlZmluZSBTbG90SXNQaHlz aWNhbChzbG90KSAoKHNsb3QpLT5kYXRhLmRhdGFiYXNlID09IEludmFsaWRPaWQpCiAjZGVm aW5lIFNsb3RJc0xvZ2ljYWwoc2xvdCkgKChzbG90KS0+ZGF0YS5kYXRhYmFzZSAhPSBJbnZh bGlkT2lkKQogCitzdGF0aWMgaW5saW5lIGJvb2wKK09ic29sZXRlU2xvdElzSW52YWxpZChS ZXBsaWNhdGlvblNsb3QgKnMsIGJvb2wgY2hlY2tfaW52YWxpZGF0ZWRfYXQpCit7CisJaWYg KGNoZWNrX2ludmFsaWRhdGVkX2F0KQorCQlyZXR1cm4gKCFYTG9nUmVjUHRySXNJbnZhbGlk KHMtPmRhdGEuaW52YWxpZGF0ZWRfYXQpICYmCisJCQkJWExvZ1JlY1B0cklzSW52YWxpZChz LT5kYXRhLnJlc3RhcnRfbHNuKSk7CisJZWxzZQorCQlyZXR1cm4gKFhMb2dSZWNQdHJJc0lu dmFsaWQocy0+ZGF0YS5yZXN0YXJ0X2xzbikpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wK K0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RJc0ludmFsaWQoUmVwbGljYXRpb25TbG90ICpzKQor eworCXJldHVybiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmVmZmVjdGl2ZV94bWluKSAm JgorCQkJIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEuY2F0YWxvZ194bWluKSk7Cit9 CisKK3N0YXRpYyBpbmxpbmUgYm9vbAorVHJhbnNhY3Rpb25JZElzVmFsaWRQcmVjZWRlc09y RXF1YWxzKFRyYW5zYWN0aW9uSWQgeGlkMSwgVHJhbnNhY3Rpb25JZCB4aWQyKQoreworCXJl dHVybiAoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkMSkgJiYgVHJhbnNhY3Rpb25JZFByZWNl ZGVzT3JFcXVhbHMoeGlkMSwgeGlkMikpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wKK0xv Z2ljYWxSZXBsaWNhdGlvblNsb3RYaWRzQ29uZmxpY3QoUmVwbGljYXRpb25TbG90ICpzLCBU cmFuc2FjdGlvbklkIHhpZCkKK3sKKwlUcmFuc2FjdGlvbklkIHNsb3RfZWZmZWN0aXZlX3ht aW47CisJVHJhbnNhY3Rpb25JZCBzbG90X2NhdGFsb2dfeG1pbjsKKworCXNsb3RfZWZmZWN0 aXZlX3htaW4gPSBzLT5lZmZlY3RpdmVfeG1pbjsKKwlzbG90X2NhdGFsb2dfeG1pbiA9IHMt PmRhdGEuY2F0YWxvZ194bWluOworCisJcmV0dXJuIChUcmFuc2FjdGlvbklkSXNWYWxpZFBy ZWNlZGVzT3JFcXVhbHMoc2xvdF9lZmZlY3RpdmVfeG1pbiwgeGlkKSB8fAorCQkJVHJhbnNh Y3Rpb25JZElzVmFsaWRQcmVjZWRlc09yRXF1YWxzKHNsb3RfY2F0YWxvZ194bWluLCB4aWQp KTsKK30KKworc3RhdGljIGlubGluZSBib29sCitTbG90SXNGcmVzaEVub3VnaChSZXBsaWNh dGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOKQoreworCXJldHVybiAocy0+ZGF0 YS5yZXN0YXJ0X2xzbiA+PSBvbGRlc3RMU04pOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wK K0xvZ2ljYWxTbG90SXNOb3RDb25mbGljdGluZyhSZXBsaWNhdGlvblNsb3QgKnMsIFRyYW5z YWN0aW9uSWQgeGlkKQoreworCXJldHVybiAoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSAm JiAhTG9naWNhbFJlcGxpY2F0aW9uU2xvdFhpZHNDb25mbGljdChzLCB4aWQpKTsKK30KKwor c3RhdGljIGlubGluZSBib29sCitEb05vdEludmFsaWRhdGVTbG90KFJlcGxpY2F0aW9uU2xv dCAqcywgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLCBib29sIGNo ZWNrX29uX3hpZCkKK3sKKwlpZiAoY2hlY2tfb25feGlkKQorCQlyZXR1cm4gKExvZ2ljYWxS ZXBsaWNhdGlvblNsb3RJc0ludmFsaWQocykgfHwgTG9naWNhbFNsb3RJc05vdENvbmZsaWN0 aW5nKHMsIHhpZCkpOworCWVsc2UKKwkJcmV0dXJuIChPYnNvbGV0ZVNsb3RJc0ludmFsaWQo cywgZmFsc2UpIHx8IFNsb3RJc0ZyZXNoRW5vdWdoKHMsIG9sZGVzdExTTikpOworCit9CisK IC8qCiAgKiBTaGFyZWQgbWVtb3J5IGNvbnRyb2wgYXJlYSBmb3IgYWxsIG9mIHJlcGxpY2F0 aW9uIHNsb3RzLgogICovCkBAIC0yMTUsNyArMjczLDggQEAgZXh0ZXJuIHZvaWQgUmVwbGlj YXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTih2b2lkKTsKIGV4dGVybiBYTG9nUmVjUHRy IFJlcGxpY2F0aW9uU2xvdHNDb21wdXRlTG9naWNhbFJlc3RhcnRMU04odm9pZCk7CiBleHRl cm4gYm9vbCBSZXBsaWNhdGlvblNsb3RzQ291bnREQlNsb3RzKE9pZCBkYm9pZCwgaW50ICpu c2xvdHMsIGludCAqbmFjdGl2ZSk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RzRHJv cERCU2xvdHMoT2lkIGRib2lkKTsKLWV4dGVybiBib29sIEludmFsaWRhdGVPYnNvbGV0ZVJl cGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNlZ25vKTsKK2V4dGVybiBib29sIElu dmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNlZ25v LCBPaWQgZGJvaWQsCisJCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGNo ZWNrX29uX3hpZCk7CiBleHRlcm4gUmVwbGljYXRpb25TbG90ICpTZWFyY2hOYW1lZFJlcGxp Y2F0aW9uU2xvdChjb25zdCBjaGFyICpuYW1lLCBib29sIG5lZWRfbG9jayk7CiBleHRlcm4g aW50CVJlcGxpY2F0aW9uU2xvdEluZGV4KFJlcGxpY2F0aW9uU2xvdCAqc2xvdCk7CiBleHRl cm4gYm9vbCBSZXBsaWNhdGlvblNsb3ROYW1lKGludCBpbmRleCwgTmFtZSBuYW1lKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggOTA1YWYyMjMxYi4uMmY1MjEwMGIwMCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTQyLDYgKzQyLDcgQEAgdHlwZWRl ZiBlbnVtCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFLAogCVBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSywKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X1NOQVBTSE9ULAorCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QsCiAJ UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4sCiAJUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLLAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3N0YW5kYnkuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oCmlu ZGV4IDJlZmZkZWExMjYuLjQxZjRkYzM3MmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc3RhbmRieS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oCkBA IC0zMCw4ICszMCwxMCBAQCBleHRlcm4gdm9pZCBJbml0UmVjb3ZlcnlUcmFuc2FjdGlvbkVu dmlyb25tZW50KHZvaWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25SZWNvdmVyeVRyYW5zYWN0 aW9uRW52aXJvbm1lbnQodm9pZCk7CiAKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6 b24sCisJCQkJCQkJCQkJCQlib29sIGlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCVJlbEZp bGVMb2NhdG9yIGxvY2F0b3IpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJCSAgIGJvb2wgaXNDYXRhbG9nUmVsLAogCQkJCQkJ CQkJCQkJCSAgIFJlbEZpbGVMb2NhdG9yIGxvY2F0b3IpOwogZXh0ZXJuIHZvaWQgUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVGFibGVzcGFjZShPaWQgdHNpZCk7CiBleHRlcm4gdm9p ZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhEYXRhYmFzZShPaWQgZGJpZCk7Ci0tIAoy LjM0LjEKCg== --------------9IFCIzDt0tUi9n0JUWtvR6ZK--