Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qlmML-004Khw-2r for pgsql-hackers@arkaria.postgresql.org; Thu, 28 Sep 2023 08:26:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qlmMI-00ALR3-NJ for pgsql-hackers@arkaria.postgresql.org; Thu, 28 Sep 2023 08:26:55 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qlmMI-00ALQp-2E for pgsql-hackers@lists.postgresql.org; Thu, 28 Sep 2023 08:26:54 +0000 Received: from mail-yw1-x1129.google.com ([2607:f8b0:4864:20::1129]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qlmMA-0083MD-8F for pgsql-hackers@postgresql.org; Thu, 28 Sep 2023 08:26:53 +0000 Received: by mail-yw1-x1129.google.com with SMTP id 00721157ae682-5a229ac185aso2912217b3.1 for ; Thu, 28 Sep 2023 01:26:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695889604; x=1696494404; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ZX89elB/g2WrsWdcL4NIiC0lVTmaSQMMdxGfJyh6JfU=; b=HvTD7S0zPl/INNO48QymRZjq8y51Et5VB6K/Y00sxn6w2S8JgRk8R3r4hQV1Jwrulg P2mIpqNmLfZHSzk+AwSz/rDcFzNuZGzpmlEkshdgQ0kWZJqeyRy59oq9eWXiPtA5I+L2 sWCPU7+eJRWpEFReKSrrfMCXgpMW9rHoiA0Qfm+tyP2jVzw5pS1H9ZBUuirUjmptV/Ak 720yLXogxj2oXC+yaaW5Bg9kCpKrkCK3bRJtFNsIPsrLReBGP7jO3zBoSMeFf7vn6xcc IMboQrDoezN51uLoejdR6fyIIFnqZMYZ6vOgREBgYWs3WkKcny2M0IPe8SNgPop3EgZj BRVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695889604; x=1696494404; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ZX89elB/g2WrsWdcL4NIiC0lVTmaSQMMdxGfJyh6JfU=; b=dWKx7Yv8B5UH1L8W+He8nnLaIihnudljYcBYd3gpekYqy0vuiD+UdWUCy6tERrO5MN CfMh1n32K9AGz3DOZZDA/iGkkmDrk90M7ERCBX/fB0RR7MEhRi9Cxnol5wN7ah4cnIne BwakfD1Ehk7pP596XzvyogOEx4ErbezfmaPrrYgYRVWRm5rwYxQl2g+jMKpJ5vOweH6K JBDxTxl4IelETXOeudB03l2E9a9eQXpzlvR2aj6e673AAoqe9a92IhHa4IrFeZ2dqd2n Hngkg/MRMGEnxRl+E5T/BTL2SRHC/a9uwukjHS0ADsYhYYPmlmuRMBAwn/lkhB0rfZvA XWxQ== X-Gm-Message-State: AOJu0YzZNxutMjlBe9mfrE2fYy7SM5GeS9pb+acoajhH/RHg7zavhGqE zDfNf7wT4a2+gV8APkDS6MKrrM9c42TUkizshBw= X-Google-Smtp-Source: AGHT+IF8/DLw3uWMDTqKKn9gaRSBvjWDIoWPTRnoOhpd6cre1w4zpnj7c9ZqmeD+m4GE4TNhYEhCr44x7SyA9jNok5Q= X-Received: by 2002:a0d:d650:0:b0:59f:72a6:da12 with SMTP id y77-20020a0dd650000000b0059f72a6da12mr542286ywd.23.1695889603885; Thu, 28 Sep 2023 01:26:43 -0700 (PDT) MIME-Version: 1.0 References: <20221221101846.7zsi7lscnm5ediik@alvherre.pgsql> <1350682.1671635927@sss.pgh.pa.us> <4191508.1674157166@sss.pgh.pa.us> <349124.1674185509@sss.pgh.pa.us> <20230207180855.xy5m4puwh5gzd7xy@awork3.anarazel.de> <1274885.1680558101@sss.pgh.pa.us> <9D23D8BB-83EE-451E-95C1-CF42ADB76869@yesql.se> In-Reply-To: From: Amit Langote Date: Thu, 28 Sep 2023 17:26:27 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Robert Haas Cc: Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , Jacob Champion , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="0000000000006c6975060667113b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006c6975060667113b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Sep 26, 2023 at 10:06=E2=80=AFPM Amit Langote wrote: > On Mon, Sep 25, 2023 at 9:57=E2=80=AFPM Amit Langote wrote: > > On Wed, Sep 6, 2023 at 11:20=E2=80=AFPM Robert Haas wrote: > > > - Is there any point to all of these early exit cases? For example, i= n > > > ExecInitBitmapAnd, why exit early if initialization fails? Why not > > > just plunge ahead and if initialization failed the caller will notice > > > that and when we ExecEndNode some of the child node pointers will be > > > NULL but who cares? The obvious disadvantage of this approach is that > > > we're doing a bunch of unnecessary initialization, but we're also > > > speeding up the common case where we don't need to abort by avoiding = a > > > branch that will rarely be taken. I'm not quite sure what the right > > > thing to do is here. > > I thought about this some and figured that adding the > > is-CachedPlan-still-valid tests in the following places should suffice > > after all: > > > > 1. In InitPlan() right after the top-level ExecInitNode() calls > > 2. In ExecInit*() functions of Scan nodes, right after > > ExecOpenScanRelation() calls > > After sleeping on this, I think we do need the checks after all the > ExecInitNode() calls too, because we have many instances of the code > like the following one: > > outerPlanState(gatherstate) =3D ExecInitNode(outerNode, estate, eflag= s); > tupDesc =3D ExecGetResultType(outerPlanState(gatherstate)); > > > If outerNode is a SeqScan and ExecInitSeqScan() returned early because > ExecOpenScanRelation() detected that plan was invalidated, then > tupDesc would be NULL in this case, causing the code to crash. > > Now one might say that perhaps we should only add the > is-CachedPlan-valid test in the instances where there is an actual > risk of such misbehavior, but that could lead to confusion, now or > later. It seems better to add them after every ExecInitNode() call > while we're inventing the notion, because doing so relieves the > authors of future enhancements of the ExecInit*() routines from > worrying about any of this. > > Attached 0003 should show how that turned out. > > Updated 0002 as mentioned in the previous reply -- setting pointers to > NULL after freeing them more consistently across various ExecEnd*() > routines and using the `if (pointer !=3D NULL)` style over the `if > (pointer)` more consistently. > > Updated 0001's commit message to remove the mention of its relation to > any future commits. I intend to push it tomorrow. Pushed that one. Here are the rebased patches. 0001 seems ready to me, but I'll wait a couple more days for others to weigh in. Just to highlight a kind of change that others may have differing opinions on, consider this hunk from the patch: - MemoryContextDelete(node->aggcontext); + if (node->aggcontext !=3D NULL) + { + MemoryContextDelete(node->aggcontext); + node->aggcontext =3D NULL; + } ... + ExecEndNode(outerPlanState(node)); + outerPlanState(node) =3D NULL; So the patch wants to enhance the consistency of setting the pointer to NULL after freeing part. Robert mentioned his preference for doing it in the patch, which I agree with. --=20 Thanks, Amit Langote EDB: http://www.enterprisedb.com --0000000000006c6975060667113b Content-Type: application/octet-stream; name="v48-0007-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Disposition: attachment; filename="v48-0007-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln2wv9t01 RnJvbSA4YzBmZjkyNDg5MGQxNzNkZGQ5YzZjMDg3YTcyNWFlYWNjZDIxMGEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDoxNSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4 IDcvOF0gRGVsYXkgbG9ja2luZyBvZiBjaGlsZCB0YWJsZXMgaW4gY2FjaGVkIHBsYW5zIHVudGls CiBFeGVjdXRvclN0YXJ0KCkKCkN1cnJlbnRseSwgR2V0Q2FjaGVkUGxhbigpIHRha2VzIGEgbG9j ayBvbiBhbGwgcmVsYXRpb25zIGNvbnRhaW5lZCBpbgphIGNhY2hlZCBwbGFuIGJlZm9yZSByZXR1 cm5pbmcgaXQgYXMgYSB2YWxpZCBwbGFuIHRvIGl0cyBjYWxsZXJzIGZvcgpleGVjdXRpb24uICBP bmUgZGlzYWR2YW50YWdlIGlzIHRoYXQgaWYgdGhlIHBsYW4gY29udGFpbnMgcGFydGl0aW9ucwp0 aGF0IGFyZSBwcnVuYWJsZSB3aXRoIGNvbmRpdGlvbnMgaW52b2x2aW5nIEVYVEVSTiBwYXJhbWV0 ZXJzIGFuZApvdGhlciBzdGFibGUgZXhwcmVzc2lvbnMgKGtub3duIGFzICJpbml0aWFsIHBydW5p bmciKSwgbWFueSBvZiB0aGVtCndvdWxkIGJlIGxvY2tlZCB1bm5lY2Vzc2FyaWx5LCBiZWNhdXNl IG9ubHkgdGhvc2UgdGhhdCBzdXJ2aXZlCmluaXRpYWwgcHJ1bmluZyBuZWVkIHRvIGhhdmUgYmVl biBsb2NrZWQuICBMb2NraW5nIGFsbCBwYXJ0aXRpb25zIHRoaXMKd2F5IGNhdXNlcyBzaWduaWZp Y2FudCBkZWxheSB3aGVuIHRoZXJlIGFyZSBtYW55IHBhcnRpdGlvbnMuICBOb3RlCnRoYXQgaW5p dGlhbCBwcnVuaW5nIG9jY3VycyBkdXJpbmcgZXhlY3V0b3IncyBpbml0aWFsaXphdGlvbiBvZiB0 aGUKcGxhbiwgdGhhdCBpcywgRXhlY0luaXROb2RlKCkuCgpQcmV2aW91cyBjb21taXRzIGhhdmUg bWFkZSBhbGwgdGhlIG5lY2Vzc2FyeSBhZGp1c3RtZW50IHRvIG1ha2UgdGhlCmV4ZWN1dG9yIGxv Y2sgY2hpbGQgdGFibGVzLCB0byBkZXRlY3QgaW52YWxpZGF0aW9uIG9mIHRoZSBDYWNoZWRQbGFu CnJlc3VsdGluZyBmcm9tIHRoYXQsIGFuZCB0byByZXRyeSB0aGUgZXhlY3V0aW9uIHdpdGggYSBu ZXcgQ2FjaGVQbGFuLgpTbywgdGhpcyBjb21taXQgc2ltcGx5IHJlbW92ZXMgdGhlIGNvZGUgaW4g cGxhbmNhY2hlLmMgdGhhdCBkb2VzIHRoZQoiZm9yIGV4ZWN1dGlvbiIgbG9ja2luZywgYWthIEFj cXVpcmVFeGVjdXRvckxvY2tzKCkuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NB K0hpd3FGR2tNU2dlNlRnQzlLUXpkZTBvaHBBeWNMUXVWN29vaXRFRXBiS0IwT19tZ0BtYWlsLmdt YWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAgICAg ICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAg IHwgICA2ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAgICAgICAgICAg fCAxNTQgKysrKysrKy0tLS0tLS0tLS0KIHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9u L01ha2VmaWxlICAgICB8ICAgMyArLQogLi4uL21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5 X2V4ZWN1dGlvbi5jIHwgIDY3ICsrKysrKystCiAuLi4vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVw bGFuLm91dCAgICAgICAgICAgfCAxNTggKysrKysrKysrKysrKysrKysrCiAuLi4vc3BlY3MvY2Fj aGVkLXBsYW4tcmVwbGFuLnNwZWMgICAgICAgICAgICAgfCAgNjEgKysrKysrKwogNyBmaWxlcyBj aGFuZ2VkLCAzNDMgaW5zZXJ0aW9ucygrKSwgMTA4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1w bGFuLXJlcGxhbi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5 X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYwoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5k ZXggODE0ZmYxMzkwZi4uOWM0ZWQ3NDI0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTI2ODAsNyArMjY4 MCw3IEBAIHJlcGxhbjoKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAogCQkJCXFkZXNj ID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCi0JCQkJCQkJCQkJTlVMTCwKKwkJCQkJCQkJCQljcGxh biwKIAkJCQkJCQkJCQlwbGFuc291cmNlLT5xdWVyeV9zdHJpbmcsCiAJCQkJCQkJCQkJc25hcCwg Y3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJCQkJCQlkZXN0LApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggZmNm OTkyNWVkNC4uOGQwNzcyYWUyOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnku YworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC00MTIsNyArNDEyLDcgQEAgUG9y dGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJICogc2V0 IHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyks Ci0JCQkJCQkJCQkJCU5VTEwsCisJCQkJCQkJCQkJCXBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJCQkJ CXBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJ CQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LApAQCAtNDQzLDYgKzQ0Myw3IEBAIFBvcnRhbFN0YXJ0 KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqLwogCQkJCWlmICgh RXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKSkKIAkJCQl7CisJCQkJCUFzc2VydChx dWVyeURlc2MtPmNwbGFuKTsKIAkJCQkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKIAkJCQkJRnJl ZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOwogCQkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwpAQCAtNTQy LDcgKzU0Myw3IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFy YW1zLAogCQkJCQkJICogUG9ydGFsUnVuTXVsdGkoKSBiZWZvcmUgY2FsbGluZyBFeGVjdXRvclJ1 bigpLgogCQkJCQkJICovCiAJCQkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwK LQkJCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkJCXBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJ CQkJCQkJcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCQkJCQkJCSFpc191dGlsaXR5ID8KIAkJ CQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpIDoKQEAgLTU2Niw2ICs1NjcsNyBAQCBQb3J0 YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCWlmICgh RXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKSkKIAkJCQkJCXsKIAkJCQkJCQlQb3BB Y3RpdmVTbmFwc2hvdCgpOworCQkJCQkJCUFzc2VydChxdWVyeURlc2MtPmNwbGFuKTsKIAkJCQkJ CQlFeGVjdXRvckVuZChxdWVyeURlc2MpOwogCQkJCQkJCUZyZWVRdWVyeURlc2MocXVlcnlEZXNj KTsKIAkJCQkJCQlwbGFuX3ZhbGlkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNo ZS5jCmluZGV4IDdkNDE2OGY4MmYuLjM1ZDkwM2NiOTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Bs YW5jYWNoZS5jCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCBzdGF0aWMgdm9pZCBSZWxlYXNlR2VuZXJp Y1BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlzdCAqUmV2YWxp ZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSAg IFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIHN0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKK3N0YXRpYyBib29sIEdlbmVyaWNQbGFu SXNWYWxpZChDYWNoZWRQbGFuICpjcGxhbik7CiBzdGF0aWMgQ2FjaGVkUGxhbiAqQnVpbGRDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCQkJCQkJ CQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu dik7CiBzdGF0aWMgYm9vbCBjaG9vc2VfY3VzdG9tX3BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxh bnNvdXJjZSwKIAkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKTsKIHN0YXRpYyBk b3VibGUgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxh bm5lcik7CiBzdGF0aWMgUXVlcnkgKlF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRz KTsKLXN0YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9v bCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVyTG9ja3MoTGlzdCAqc3RtdF9s aXN0LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkg KnBhcnNldHJlZSwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29sIFNjYW5RdWVyeVdhbGtlcihO b2RlICpub2RlLCBib29sICphY3F1aXJlKTsKQEAgLTc5Miw4ICs3OTIsMTMgQEAgUmV2YWxpZGF0 ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKiBDYWxsZXIgbXVz dCBoYXZlIGFscmVhZHkgY2FsbGVkIFJldmFsaWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJpZnkgdGhh dCB0aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0byBkYXRlLgogICoKLSAqIE9uIGEgInRydWUiIHJl dHVybiwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1biB0aGUgcGxhbi4K LSAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2UtY29u ZGl0aW9uLWZyZWUuKQorICogSWYgdGhlIHBsYW4gaW5jbHVkZXMgY2hpbGQgcmVsYXRpb25zIGlu dHJvZHVjZWQgYnkgdGhlIHBsYW5uZXIsIHRoZXkKKyAqIHdvdWxkbid0IGJlIGxvY2tlZCB5ZXQu IFRoaXMgaXMgYmVjYXVzZSBBY3F1aXJlUGxhbm5lckxvY2tzKCkgb25seSBsb2NrcworICogcmVs YXRpb25zIHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIHF1ZXJ5J3MgcmFuZ2UgdGFibGUgKGJlZm9y ZSBwbGFubmVyCisgKiBlbnRyeSkuIEhlbmNlLCB0aGUgcGxhbiBtaWdodCBiZWNvbWUgc3RhbGUg aWYgY2hpbGQgcmVsYXRpb25zIGFyZSBtb2RpZmllZAorICogY29uY3VycmVudGx5LiBEdXJpbmcg dGhlIHBsYW4gaW5pdGlhbGl6YXRpb24sIHRoZSBleGVjdXRvciBtdXN0IGVuc3VyZSB0aGUKKyAq IHBsYW4gKENhY2hlZFBsYW4pIHJlbWFpbnMgdmFsaWQgYWZ0ZXIgbG9ja2luZyBlYWNoIGNoaWxk IHRhYmxlLiBJZiBmb3VuZAorICogaW52YWxpZCwgdGhlIGNhbGxlciBzaG91bGQgYmUgcHJvbXB0 ZWQgdG8gcmVjcmVhdGUgdGhlIHBsYW4uCiAgKi8KIHN0YXRpYyBib29sCiBDaGVja0NhY2hlZFBs YW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKQEAgLTgwNyw2MCArODEyLDU2IEBAIENo ZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCWlmICghcGxhbikK IAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHBsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFH SUMpOwotCS8qIEdlbmVyaWMgcGxhbnMgYXJlIG5ldmVyIG9uZS1zaG90ICovCi0JQXNzZXJ0KCFw bGFuLT5pc19vbmVzaG90KTsKKwlpZiAoR2VuZXJpY1BsYW5Jc1ZhbGlkKHBsYW4pKQorCQlyZXR1 cm4gdHJ1ZTsKIAogCS8qCi0JICogSWYgcGxhbiBpc24ndCB2YWxpZCBmb3IgY3VycmVudCByb2xl LCB3ZSBjYW4ndCB1c2UgaXQuCisJICogUGxhbiBoYXMgYmVlbiBpbnZhbGlkYXRlZCwgc28gdW5s aW5rIGl0IGZyb20gdGhlIHBhcmVudCBhbmQgcmVsZWFzZSBpdC4KIAkgKi8KLQlpZiAocGxhbi0+ aXNfdmFsaWQgJiYgcGxhbi0+ZGVwZW5kc09uUm9sZSAmJgotCQlwbGFuLT5wbGFuUm9sZUlkICE9 IEdldFVzZXJJZCgpKQotCQlwbGFuLT5pc192YWxpZCA9IGZhbHNlOworCVJlbGVhc2VHZW5lcmlj UGxhbihwbGFuc291cmNlKTsKIAotCS8qCi0JICogSWYgaXQgYXBwZWFycyB2YWxpZCwgYWNxdWly ZSBsb2NrcyBhbmQgcmVjaGVjazsgdGhpcyBpcyBtdWNoIHRoZSBzYW1lCi0JICogbG9naWMgYXMg aW4gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5LCBidXQgZm9yIGEgcGxhbi4KLQkgKi8KLQlpZiAocGxh bi0+aXNfdmFsaWQpCisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogR2VuZXJpY1BsYW5Jc1Zh bGlkCisgKgkJSXMgYSBnZW5lcmljIHBsYW4gc3RpbGwgdmFsaWQ/CisgKgorICogSXQgbWF5IGhh dmUgZ29uZSBzdGFsZSBkdWUgdG8gY29uY3VycmVudCBzY2hlbWEgbW9kaWZpY2F0aW9ucyBvZiBy ZWxhdGlvbnMKKyAqIG1lbnRpb25lZCBpbiB0aGUgcGxhbiBvciBhIGNvdXBsZSBvZiBvdGhlciB0 aGluZ3MgbWVudGlvbmVkIGJlbG93LgorICovCitzdGF0aWMgYm9vbAorR2VuZXJpY1BsYW5Jc1Zh bGlkKENhY2hlZFBsYW4gKmNwbGFuKQoreworCUFzc2VydChjcGxhbiAhPSBOVUxMKTsKKwlBc3Nl cnQoY3BsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOworCS8qIEdlbmVyaWMgcGxhbnMg YXJlIG5ldmVyIG9uZS1zaG90ICovCisJQXNzZXJ0KCFjcGxhbi0+aXNfb25lc2hvdCk7CisKKwlp ZiAoY3BsYW4tPmlzX3ZhbGlkKQogCXsKIAkJLyoKIAkJICogUGxhbiBtdXN0IGhhdmUgcG9zaXRp dmUgcmVmY291bnQgYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJCSAqIHBsYW5zb3VyY2U7 IHNvIG5vIG5lZWQgdG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVzIGhlcmUuCiAJCSAqLwot CQlBc3NlcnQocGxhbi0+cmVmY291bnQgPiAwKTsKLQotCQlBY3F1aXJlRXhlY3V0b3JMb2Nrcyhw bGFuLT5zdG10X2xpc3QsIHRydWUpOworCQlBc3NlcnQoY3BsYW4tPnJlZmNvdW50ID4gMCk7CiAK IAkJLyoKLQkJICogSWYgcGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJhbnNh Y3Rpb25YbWluIGhhcwotCQkgKiBhZHZhbmNlZCwgYW5kIGlmIHNvIGludmFsaWRhdGUgaXQuCisJ CSAqIElmIHBsYW4gaXNuJ3QgdmFsaWQgZm9yIGN1cnJlbnQgcm9sZSwgd2UgY2FuJ3QgdXNlIGl0 LgogCQkgKi8KLQkJaWYgKHBsYW4tPmlzX3ZhbGlkICYmCi0JCQlUcmFuc2FjdGlvbklkSXNWYWxp ZChwbGFuLT5zYXZlZF94bWluKSAmJgotCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMocGxhbi0+c2F2 ZWRfeG1pbiwgVHJhbnNhY3Rpb25YbWluKSkKLQkJCXBsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CisJ CWlmIChjcGxhbi0+ZGVwZW5kc09uUm9sZSAmJiBjcGxhbi0+cGxhblJvbGVJZCAhPSBHZXRVc2Vy SWQoKSkKKwkJCWNwbGFuLT5pc192YWxpZCA9IGZhbHNlOwogCiAJCS8qCi0JCSAqIEJ5IG5vdywg aWYgYW55IGludmFsaWRhdGlvbiBoYXMgaGFwcGVuZWQsIHRoZSBpbnZhbCBjYWxsYmFjawotCQkg KiBmdW5jdGlvbnMgd2lsbCBoYXZlIG1hcmtlZCB0aGUgcGxhbiBpbnZhbGlkLgorCQkgKiBJZiBw bGFuIHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCisJ CSAqIGFkdmFuY2VkLCBhbmQgaWYgc28gaW52YWxpZGF0ZSBpdC4KIAkJICovCi0JCWlmIChwbGFu LT5pc192YWxpZCkKLQkJewotCQkJLyogU3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFuZCBsb2Nr ZWQgdGhlIHF1ZXJ5LiAqLwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQkvKiBPb3BzLCB0aGUg cmFjZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFzZSB1c2VsZXNzIGxvY2tzLiAqLwotCQlBY3F1aXJl RXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKwkJaWYgKFRyYW5zYWN0aW9u SWRJc1ZhbGlkKGNwbGFuLT5zYXZlZF94bWluKSAmJgorCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMo Y3BsYW4tPnNhdmVkX3htaW4sIFRyYW5zYWN0aW9uWG1pbikpCisJCQljcGxhbi0+aXNfdmFsaWQg PSBmYWxzZTsKIAl9CiAKLQkvKgotCSAqIFBsYW4gaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHNvIHVu bGluayBpdCBmcm9tIHRoZSBwYXJlbnQgYW5kIHJlbGVhc2UgaXQuCi0JICovCi0JUmVsZWFzZUdl bmVyaWNQbGFuKHBsYW5zb3VyY2UpOwotCi0JcmV0dXJuIGZhbHNlOworCXJldHVybiBjcGxhbi0+ aXNfdmFsaWQ7CiB9CiAKIC8qCkBAIC0xMTMwLDggKzExMzEsMTYgQEAgY2FjaGVkX3BsYW5fY29z dChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBj dXN0b20gcGxhbiBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qg a25vdwogICogd2hpY2ggaXQgd2lsbCBnZXQuCiAgKgotICogT24gcmV0dXJuLCB0aGUgcGxhbiBp cyB2YWxpZCBhbmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2luCi0gKiBleGVjdXRp b24uCisgKiBUeXBpY2FsbHksIHRoZSBwbGFuIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMg dmFsaWQuIEhvd2V2ZXIsIGEgY2F2ZWF0CisgKiBhcmlzZXMgd2l0aCBpbmhlcml0YW5jZS9wYXJ0 aXRpb24gY2hpbGQgdGFibGVzLiBUaGVzZSBhcmVuJ3QgbG9ja2VkIGJ5CisgKiB0aGlzIGZ1bmN0 aW9uLCBhcyB3ZSBvbmx5IGxvY2sgdGFibGVzIGRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUgb3Jp Z2luYWwKKyAqIHF1ZXJ5IGhlcmUuICBUaGUgdGFzayBvZiBsb2NraW5nIHRoZXNlIGNoaWxkIHRh YmxlcyBmYWxscyB0byB0aGUgZXhlY3V0b3IKKyAqIGR1cmluZyBwbGFuIHRyZWUgc2V0dXAuIElm IGFjcXVpcmluZyB0aGVzZSBsb2NrcyBpbnZhbGlkYXRlcyB0aGUgcGxhbiwgdGhlCisgKiBleGVj dXRvciBzaG91bGQgaW5mb3JtIHRoZSBjYWxsZXIgdG8gcmVnZW5lcmF0ZSB0aGUgcGxhbiBieSBp bnZva2luZyB0aGlzCisgKiBmdW5jdGlvbiBhZ2Fpbi4gIFRoZSByZWFzb24gZm9yIHRoaXMgZGVm ZXJyZWQgY2hpbGQgdGFibGUgbG9ja2luZyBtZWNoYW5pc20KKyAqIGlzIGVmZmljaWVuY3k6IG5v dCBhbGwgbWlnaHQgbmVlZCB0byBiZSBsb2NrZWQuIFNvbWUgY291bGQgYmUgcHJ1bmVkIGR1cmlu ZworICogZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24sIGVzcGVjaWFsbHkgaWYgdGhlaXIgY29ycmVz cG9uZGluZyBwbGFuIG5vZGVzCisgKiBmYWNpbGl0YXRlIHBhcnRpdGlvbiBwcnVuaW5nLgogICoK ICAqIE9uIHJldHVybiwgdGhlIHJlZmNvdW50IG9mIHRoZSBwbGFuIGhhcyBiZWVuIGluY3JlbWVu dGVkOyBhIGxhdGVyCiAgKiBSZWxlYXNlQ2FjaGVkUGxhbigpIGNhbGwgaXMgZXhwZWN0ZWQuICBJ ZiAib3duZXIiIGlzIG5vdCBOVUxMIHRoZW4KQEAgLTExNjYsNyArMTE3NSwxMCBAQCBHZXRDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQ YXJhbXMsCiAJewogCQlpZiAoQ2hlY2tDYWNoZWRQbGFuKHBsYW5zb3VyY2UpKQogCQl7Ci0JCQkv KiBXZSB3YW50IGEgZ2VuZXJpYyBwbGFuLCBhbmQgd2UgYWxyZWFkeSBoYXZlIGEgdmFsaWQgb25l ICovCisJCQkvKgorCQkJICogV2Ugd2FudCBhIGdlbmVyaWMgcGxhbiwgYW5kIHdlIGFscmVhZHkg aGF2ZSBhIHZhbGlkIG9uZSwgdGhvdWdoCisJCQkgKiBzZWUgdGhlIGhlYWRlciBjb21tZW50Lgor CQkJICovCiAJCQlwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CiAJCQlBc3NlcnQocGxhbi0+bWFn aWMgPT0gQ0FDSEVEUExBTl9NQUdJQyk7CiAJCX0KQEAgLTEzNjQsOCArMTM3Niw4IEBAIENhY2hl ZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3Vy Y2UsCiAJfQogCiAJLyoKLQkgKiBSZWplY3QgaWYgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mgd291bGQg aGF2ZSBhbnl0aGluZyB0byBkby4gIFRoaXMgaXMKLQkgKiBwcm9iYWJseSB1bm5lY2Vzc2FyeSBn aXZlbiB0aGUgcHJldmlvdXMgY2hlY2ssIGJ1dCBsZXQncyBiZSBzYWZlLgorCSAqIFJlamVjdCBp ZiB0aGUgZXhlY3V0b3Igd291bGQgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgbG9ja3MsIHRoYXQg aXMsIGluCisJICogYWRkaXRpb24gdG8gdGhvc2UgdGFrZW4gYnkgQWNxdWlyZVBsYW5uZXJMb2Nr cygpIG9uIGEgZ2l2ZW4gcXVlcnkuCiAJICovCiAJZm9yZWFjaChsYywgcGxhbi0+c3RtdF9saXN0 KQogCXsKQEAgLTE3NDEsNTggKzE3NTMsNiBAQCBRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0 ICpzdG10cykKIAlyZXR1cm4gTlVMTDsKIH0KIAotLyoKLSAqIEFjcXVpcmVFeGVjdXRvckxvY2tz OiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBmb3IgZXhlY3V0aW9uIG9mIGEgY2FjaGVkIHBsYW47Ci0g KiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBpcyBmYWxzZS4KLSAqLwotc3RhdGljIHZvaWQK LUFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQotewot CUxpc3RDZWxsICAgKmxjMTsKLQotCWZvcmVhY2gobGMxLCBzdG10X2xpc3QpCi0JewotCQlQbGFu bmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMxKTsKLQkJ TGlzdENlbGwgICAqbGMyOwotCi0JCWlmIChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01E X1VUSUxJVFkpCi0JCXsKLQkJCS8qCi0JCQkgKiBJZ25vcmUgdXRpbGl0eSBzdGF0ZW1lbnRzLCBl eGNlcHQgdGhvc2UgKHN1Y2ggYXMgRVhQTEFJTikgdGhhdAotCQkJICogY29udGFpbiBhIHBhcnNl ZC1idXQtbm90LXBsYW5uZWQgcXVlcnkuICBOb3RlOiBpdCdzIG9rYXkgdG8gdXNlCi0JCQkgKiBT Y2FuUXVlcnlGb3JMb2NrcywgZXZlbiB0aG91Z2ggdGhlIHF1ZXJ5IGhhc24ndCBiZWVuIHRocm91 Z2gKLQkJCSAqIHJ1bGUgcmV3cml0aW5nLCBiZWNhdXNlIHJld3JpdGluZyBkb2Vzbid0IGNoYW5n ZSB0aGUgcXVlcnkKLQkJCSAqIHJlcHJlc2VudGF0aW9uLgotCQkJICovCi0JCQlRdWVyeQkgICAq cXVlcnkgPSBVdGlsaXR5Q29udGFpbnNRdWVyeShwbGFubmVkc3RtdC0+dXRpbGl0eVN0bXQpOwot Ci0JCQlpZiAocXVlcnkpCi0JCQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIGFjcXVpcmUpOwot CQkJY29udGludWU7Ci0JCX0KLQotCQlmb3JlYWNoKGxjMiwgcGxhbm5lZHN0bXQtPnJ0YWJsZSkK LQkJewotCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gKFJhbmdlVGJsRW50cnkgKikgbGZpcnN0KGxj Mik7Ci0KLQkJCWlmICghKHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gfHwKLQkJCQkgIChy dGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQocnRlLT5yZWxpZCkpKSkK LQkJCQljb250aW51ZTsKLQotCQkJLyoKLQkJCSAqIEFjcXVpcmUgdGhlIGFwcHJvcHJpYXRlIHR5 cGUgb2YgbG9jayBvbiBlYWNoIHJlbGF0aW9uIE9JRC4gTm90ZQotCQkJICogdGhhdCB3ZSBkb24n dCBhY3R1YWxseSB0cnkgdG8gb3BlbiB0aGUgcmVsLCBhbmQgaGVuY2Ugd2lsbCBub3QKLQkJCSAq IGZhaWwgaWYgaXQncyBiZWVuIGRyb3BwZWQgZW50aXJlbHkgLS0tIHdlJ2xsIGp1c3QgdHJhbnNp ZW50bHkKLQkJCSAqIGFjcXVpcmUgYSBub24tY29uZmxpY3RpbmcgbG9jay4KLQkJCSAqLwotCQkJ aWYgKGFjcXVpcmUpCi0JCQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9j a21vZGUpOwotCQkJZWxzZQotCQkJCVVubG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+ cmVsbG9ja21vZGUpOwotCQl9Ci0JfQotfQotCiAvKgogICogQWNxdWlyZVBsYW5uZXJMb2Nrczog YWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIHBsYW5uaW5nIG9mIGEgcXVlcnl0cmVlIGxpc3Q7CiAg KiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBpcyBmYWxzZS4KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vTWFrZWZpbGUKaW5kZXggNzBmMjRlODQ2ZC4uMmZjYTg0ZDAyNyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKQEAgLTgsNyArOCw4IEBA IE9CSlMgPSBcCiAJZGVsYXlfZXhlY3V0aW9uLm8KIAogSVNPTEFUSU9OID0gcGFydGl0aW9uLWFk ZGl0aW9uIFwKLQkgICAgcGFydGl0aW9uLXJlbW92YWwtMQorCSAgICBwYXJ0aXRpb24tcmVtb3Zh bC0xIFwKKwkJY2FjaGVkLXBsYW4tcmVwbGFuCiAKIGlmZGVmIFVTRV9QR1hTCiBQR19DT05GSUcg PSBwZ19jb25maWcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9u L2RlbGF5X2V4ZWN1dGlvbi5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVs YXlfZXhlY3V0aW9uLmMKaW5kZXggN2NkNzZlYjM0Yi4uY2UxODkxNTZhZCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMKQEAgLTEs MTQgKzEsMTggQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIGRlbGF5X2V4ZWN1dGlvbi5j Ci0gKgkJVGVzdCBtb2R1bGUgdG8gYWxsb3cgZGVsYXkgYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVj dXRpb24gb2YgYSBxdWVyeS4KKyAqCQlUZXN0IG1vZHVsZSB0byBpbnRyb2R1Y2UgZGVsYXkgYXQg dmFyaW91cyBwb2ludHMgZHVyaW5nIGV4ZWN1dGlvbiBvZiBhCisgKgkJcXVlcnkgdG8gdGVzdCB0 aGF0IGV4ZWN1dGlvbiBwcm9jZWVkcyBzYWZlbHkgaW4gbGlnaHQgb2YgY29uY3VycmVudAorICoJ CWNoYW5nZXMuCiAgKgogICogVGhlIGRlbGF5IGlzIGltcGxlbWVudGVkIGJ5IHRha2luZyBhbmQg aW1tZWRpYXRlbHkgcmVsZWFzaW5nIGEgc3BlY2lmaWVkCiAgKiBhZHZpc29yeSBsb2NrLiAgSWYg YW5vdGhlciBwcm9jZXNzIGhhcyBwcmV2aW91c2x5IHRha2VuIHRoYXQgbG9jaywgdGhlCiAgKiBj dXJyZW50IHByb2Nlc3Mgd2lsbCBiZSBibG9ja2VkIHVudGlsIHRoZSBsb2NrIGlzIHJlbGVhc2Vk OyBvdGhlcndpc2UsCiAgKiB0aGVyZSdzIG5vIGVmZmVjdC4gIFRoaXMgYWxsb3dzIGFuIGlzb2xh dGlvbnRlc3RlciBzY3JpcHQgdG8gcmVsaWFibHkKLSAqIHRlc3QgYmVoYXZpb3JzIHdoZXJlIHNv bWUgc3BlY2lmaWVkIGFjdGlvbiBoYXBwZW5zIGluIGFub3RoZXIgYmFja2VuZAotICogYmV0d2Vl biBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkuCisgKiB0ZXN0IGJl aGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90aGVyIGJh Y2tlbmQgaW4KKyAqIGEgY291cGxlIG9mIGNhc2VzOiAxKSBiZXR3ZWVuIHBhcnNpbmcgYW5kIGV4 ZWN1dGlvbiBvZiBhbnkgZGVzaXJlZCBxdWVyeQorICogd2hlbiB1c2luZyB0aGUgcGxhbm5lcl9o b29rLCAyKSBiZXR3ZWVuIFJldmFsaWRhdGVDYWNoZWRRdWVyeSgpIGFuZAorICogRXhlY3V0b3JT dGFydCgpIHdoZW4gdXNpbmcgdGhlIEV4ZWN1dG9yU3RhcnRfaG9vay4KICAqCiAgKiBDb3B5cmln aHQgKGMpIDIwMjAtMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAq CkBAIC0yMiw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAorI2luY2x1ZGUgImV4 ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMzIsOSAr MzcsMTEgQEAgUEdfTU9EVUxFX01BR0lDOwogCiAvKiBHVUM6IGFkdmlzb3J5IGxvY2sgSUQgdG8g dXNlLiAgWmVybyBkaXNhYmxlcyB0aGUgZmVhdHVyZS4gKi8KIHN0YXRpYyBpbnQJcG9zdF9wbGFu bmluZ19sb2NrX2lkID0gMDsKK3N0YXRpYyBpbnQJZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDA7 CiAKLS8qIFNhdmUgcHJldmlvdXMgcGxhbm5lciBob29rIHVzZXIgdG8gYmUgYSBnb29kIGNpdGl6 ZW4gKi8KKy8qIFNhdmUgcHJldmlvdXMgaG9vayB1c2VycyB0byBiZSBhIGdvb2QgY2l0aXplbiAq Lwogc3RhdGljIHBsYW5uZXJfaG9va190eXBlIHByZXZfcGxhbm5lcl9ob29rID0gTlVMTDsKK3N0 YXRpYyBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayA9IE5V TEw7CiAKIAogLyogcGxhbm5lcl9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRlc2lyZWQg ZGVsYXkgKi8KQEAgLTcwLDExICs3Nyw0NSBAQCBkZWxheV9leGVjdXRpb25fcGxhbm5lcihRdWVy eSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAlyZXR1cm4gcmVzdWx0OwogfQog CisvKiBFeGVjdXRvclN0YXJ0X2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVzaXJlZCBk ZWxheSAqLworc3RhdGljIGJvb2wKK2RlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQoreworCWJvb2wJcGxhbl92YWxpZDsKKworCS8q IElmIGVuYWJsZWQsIGRlbGF5IGJ5IHRha2luZyBhbmQgcmVsZWFzaW5nIHRoZSBzcGVjaWZpZWQg bG9jayAqLworCWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJeworCQlEaXJlY3RG dW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X2xvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVt KChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkpOworCQlEaXJlY3RGdW5jdGlvbkNhbGwx KHBnX2Fkdmlzb3J5X3VubG9ja19pbnQ4LAorCQkJCQkJCUludDY0R2V0RGF0dW0oKGludDY0KSBl eGVjdXRvcl9zdGFydF9sb2NrX2lkKSk7CisKKwkJLyoKKwkJICogRW5zdXJlIHRoYXQgd2Ugbm90 aWNlIGFueSBwZW5kaW5nIGludmFsaWRhdGlvbnMsIHNpbmNlIHRoZSBhZHZpc29yeQorCQkgKiBs b2NrIGZ1bmN0aW9ucyBkb24ndCBkbyB0aGlzLgorCQkgKi8KKwkJQWNjZXB0SW52YWxpZGF0aW9u TWVzc2FnZXMoKTsKKwl9CisKKwkvKiBOb3cgc3RhcnQgdGhlIGV4ZWN1dG9yLCBwb3NzaWJseSB2 aWEgYSBwcmV2aW91cyBob29rIHVzZXIgKi8KKwlpZiAocHJldl9FeGVjdXRvclN0YXJ0X2hvb2sp CisJCXBsYW5fdmFsaWQgPSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayhxdWVyeURlc2MsIGVmbGFn cyk7CisJZWxzZQorCQlwbGFuX3ZhbGlkID0gc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURl c2MsIGVmbGFncyk7CisKKwlpZiAoZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCAhPSAwKQorCQllbG9n KE5PVElDRSwgIkZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyAlcyIsCisJ CQkgcGxhbl92YWxpZCA/ICJ2YWxpZCIgOiAibm90IHZhbGlkIik7CisKKwlyZXR1cm4gcGxhbl92 YWxpZDsKK30KKwogLyogTW9kdWxlIGxvYWQgZnVuY3Rpb24gKi8KIHZvaWQKIF9QR19pbml0KHZv aWQpCiB7Ci0JLyogU2V0IHVwIHRoZSBHVUMgdG8gY29udHJvbCB3aGljaCBsb2NrIGlzIHVzZWQg Ki8KKwkvKiBTZXQgdXAgR1VDcyB0byBjb250cm9sIHdoaWNoIGxvY2sgaXMgdXNlZCAqLwogCURl ZmluZUN1c3RvbUludFZhcmlhYmxlKCJkZWxheV9leGVjdXRpb24ucG9zdF9wbGFubmluZ19sb2Nr X2lkIiwKIAkJCQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5s b2NrZWQgYWZ0ZXIgcGxhbm5pbmcuIiwKIAkJCQkJCQkiWmVybyBkaXNhYmxlcyB0aGUgZGVsYXku IiwKQEAgLTg2LDEwICsxMjcsMjIgQEAgX1BHX2luaXQodm9pZCkKIAkJCQkJCQlOVUxMLAogCQkJ CQkJCU5VTEwsCiAJCQkJCQkJTlVMTCk7Ci0KKwlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgiZGVs YXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQiLAorCQkJCQkJCSJTZXRzIHRoZSBh ZHZpc29yeSBsb2NrIElEIHRvIGJlIGxvY2tlZC91bmxvY2tlZCBiZWZvcmUgc3RhcnRpbmcgZXhl Y3V0aW9uLiIsCisJCQkJCQkJIlplcm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIsCisJCQkJCQkJJmV4 ZWN1dG9yX3N0YXJ0X2xvY2tfaWQsCisJCQkJCQkJMCwKKwkJCQkJCQkwLCBJTlRfTUFYLAorCQkJ CQkJCVBHQ19VU0VSU0VULAorCQkJCQkJCTAsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMLAor CQkJCQkJCU5VTEwpOwogCU1hcmtHVUNQcmVmaXhSZXNlcnZlZCgiZGVsYXlfZXhlY3V0aW9uIik7 CiAKLQkvKiBJbnN0YWxsIG91ciBob29rICovCisJLyogSW5zdGFsbCBvdXIgaG9va3MuICovCiAJ cHJldl9wbGFubmVyX2hvb2sgPSBwbGFubmVyX2hvb2s7CiAJcGxhbm5lcl9ob29rID0gZGVsYXlf ZXhlY3V0aW9uX3BsYW5uZXI7CisJcHJldl9FeGVjdXRvclN0YXJ0X2hvb2sgPSBFeGVjdXRvclN0 YXJ0X2hvb2s7CisJRXhlY3V0b3JTdGFydF9ob29rID0gZGVsYXlfZXhlY3V0aW9uX0V4ZWN1dG9y U3RhcnQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9l eHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9l eGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi4xMjJkODFmMmVlCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFu Lm91dApAQCAtMCwwICsxLDE1OCBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMK Kworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcCBzMmxvY2sgczFleGVjIHMyZHJvcGkgczJ1 bmxvY2sKK3N0ZXAgczFwcmVwOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19w bGFuOworCQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQxIEZP UiBVUERBVEU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOworUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTG9ja1Jvd3MgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMSBmb29fMSAgIAorICAg ICAgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gJDEpICAgICAgICAgIAorICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTFfYQorICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoYSA9ICQxKSAgICAgIAorKDcgcm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVD VCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWM6IExPQUQgJ2Rl bGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9s b2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTFfYTsKK3N0ZXAgczJ1 bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5s b2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitz dGVwIHMxZXhlYzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0 b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVk IEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitM b2NrUm93cyAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgCisgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMSBmb29fMQorICAgICAgICAgICAgICBGaWx0ZXI6IChh ID0gJDEpICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDIg czJsb2NrIHMxZXhlYzIgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXAyOiBTRVQgcGxhbl9j YWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTIgQVMgU0VMRUNU ICogRlJPTSBmb292IFdIRVJFIGEgPSAxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VU RSBxMjsKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4g aXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0JpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTEgZm9vICAg ICAKKyAgUmVjaGVjayBDb25kOiAoYSA9IDEpICAgICAgICAgICAKKyAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIGZvbzExX2EKKyAgICAgICAgSW5kZXggQ29uZDogKGEgPSAxKSAgICAgICAKKyg0 IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7Citw Z19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCisoMSBy b3cpCisKK3N0ZXAgczFleGVjMjogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVs YXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlO IChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJP UCBJTkRFWCBmb28xMV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9j aygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAg ICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogPC4uLiBjb21wbGV0ZWQ+Citz MTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2 YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBp cyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Nl cSBTY2FuIG9uIGZvbzExIGZvbworICBGaWx0ZXI6IChhID0gMSkgICAgCisoMiByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAzIHMybG9jayBzMWV4ZWMzIHMyZHJvcGkgczJ1 bmxvY2sKK3N0ZXAgczFwcmVwMzogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNf cGxhbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRlID0gb247CisJCSAg U0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gPSBvbjsKKwkJICBQUkVQQVJFIHEzIEFTIFNF TEVDVCB0MS5hLCBjb3VudCh0Mi5iKSBGUk9NIGZvbyB0MSwgZm9vIHQyIFdIRVJFIHQxLmEgPSB0 Mi5hIEdST1VQIEJZIDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOworczE6 IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAor UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAtPiAgR3JvdXBBZ2dyZWdhdGUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDEuYSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1lcmdlIEpvaW4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25kOiAo dDEuYSA9IHQyLmEpICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBJbmRl eCBPbmx5IFNjYW4gdXNpbmcgZm9vMTFfYSBvbiBmb28xMSB0MSAKKyAgICAgICAgICAgICAgLT4g IE1hdGVyaWFsaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg ICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBmb28xMV9hIG9uIGZvbzExIHQyCisgIC0+ICBH cm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgR3JvdXAgS2V5OiB0MV8xLmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAtPiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0MV8xLmEgPSB0Ml8xLmEpICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDFfMS5hICAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBmb28yIHQxXzEgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0 IEtleTogdDJfMS5hICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBmb28yIHQyXzEgICAgICAgICAgICAgICAKKygxOCByb3dzKQorCitz dGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlf bG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVw IHMxZXhlYzM6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlv bi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZG KSBFWEVDVVRFIHEzOyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9v MTFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOwor cGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAg IAorKDEgcm93KQorCitzdGVwIHMxZXhlYzM6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTog IEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBO T1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEdyb3VwQWdncmVnYXRlICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICBHcm91cCBLZXk6IHQxLmEgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2luICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgICAgICAgTWVyZ2UgQ29uZDogKHQxLmEgPSB0Mi5hKSAgICAgIAorICAgICAgICAgICAgICAt PiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQg S2V5OiB0MS5hICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IGZvbzExIHQxIAorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi5hICAgICAgICAgICAKKyAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzExIHQyIAorICAtPiAgR3JvdXBBZ2dyZWdh dGUgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDFfMS5hICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1lcmdlIEpvaW4gICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25kOiAodDFfMS5hID0gdDJfMS5hKSAgCisg ICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgU29ydCBLZXk6IHQxXzEuYSAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gZm9vMiB0MV8xCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyXzEuYSAgICAg ICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMiB0Ml8xCisoMjEg cm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3Bl Y3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1 dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi4yZDA2MDdiMTc2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMKQEAg LTAsMCArMSw2MSBAQAorIyBUZXN0IHRvIGNoZWNrIHRoYXQgaW52YWxpZGF0aW9uIG9mIGNhY2hl ZCBnZW5lcmljIHBsYW5zIGR1cmluZyBFeGVjdXRvclN0YXJ0CisjIGNvcnJlY3RseSB0cmlnZ2Vy cyByZXBsYW5uaW5nIGFuZCByZS1leGVjdXRpb24uCisKK3NldHVwCit7CisgIENSRUFURSBUQUJM RSBmb28gKGEgaW50LCBiIHRleHQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOworICBDUkVBVEUgVEFC TEUgZm9vMSBQQVJUSVRJT04gT0YgZm9vIEZPUiBWQUxVRVMgSU4gKDEpIFBBUlRJVElPTiBCWSBM SVNUIChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzExIFBBUlRJVElPTiBPRiBmb28xIEZPUiBWQUxV RVMgSU4gKDEpOworICBDUkVBVEUgSU5ERVggZm9vMTFfYSBPTiBmb28xMSAoYSk7CisgIENSRUFU RSBUQUJMRSBmb28yIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVFUyBJTiAoMik7CisgIENSRUFU RSBWSUVXIGZvb3YgQVMgU0VMRUNUICogRlJPTSBmb287Cit9CisKK3RlYXJkb3duCit7CisgIERS T1AgVklFVyBmb292OworICBEUk9QIFRBQkxFIGZvbzsKK30KKworc2Vzc2lvbiAiczEiCisjIEFw cGVuZCB3aXRoIHJ1bi10aW1lIHBydW5pbmcKK3N0ZXAgInMxcHJlcCIgICB7IFNFVCBwbGFuX2Nh Y2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVDVCAq IEZST00gZm9vdiBXSEVSRSBhID0gJDEgRk9SIFVQREFURTsKKwkJICBFWFBMQUlOIChDT1NUUyBP RkYpIEVYRUNVVEUgcSAoMSk7IH0KKworIyBubyBBcHBlbmQgY2FzZSAob25seSBvbmUgcGFydGl0 aW9uIHNlbGVjdGVkIGJ5IHRoZSBwbGFubmVyKQorc3RlcCAiczFwcmVwMiIgICB7IFNFVCBwbGFu X2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxMiBBUyBTRUxF Q1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVD VVRFIHEyOyB9CisKKyMgQXBwZW5kIHdpdGggcGFydGl0aW9uLXdpc2Ugam9pbiBhZ2dyZWdhdGUg YW5kIGpvaW4gcGxhbnMgYXMgY2hpbGQgc3VicGxhbnMKK3N0ZXAgInMxcHJlcDMiICAgeyBTRVQg cGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFNFVCBlbmFibGVfcGFy dGl0aW9ud2lzZV9hZ2dyZWdhdGUgPSBvbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vf am9pbiA9IG9uOworCQkgIFBSRVBBUkUgcTMgQVMgU0VMRUNUIHQxLmEsIGNvdW50KHQyLmIpIEZS T00gZm9vIHQxLCBmb28gdDIgV0hFUkUgdDEuYSA9IHQyLmEgR1JPVVAgQlkgMTsKKwkJICBFWFBM QUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IH0KKworIyBFeGVjdXRlcyBhIGdlbmVyaWMgcGxh bgorc3RlcCAiczFleGVjIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5 X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAo Q09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyB9CitzdGVwICJzMWV4ZWMyIgl7IExPQUQgJ2RlbGF5 X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2Nr X2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyB9CitzdGVw ICJzMWV4ZWMzIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1 dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMg T0ZGKSBFWEVDVVRFIHEzOyB9CisKK3Nlc3Npb24gInMyIgorc3RlcCAiczJsb2NrIgl7IFNFTEVD VCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJ1bmxvY2siCXsgU0VMRUNUIHBn X2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7IH0KK3N0ZXAgInMyZHJvcGkiCXsgRFJPUCBJTkRFWCBm b28xMV9hOyB9CisKKyMgV2hpbGUgInMxZXhlYyIsIGV0Yy4gd2FpdCB0byBhY3F1aXJlIHRoZSBh ZHZpc29yeSBsb2NrLCAiczJkcm9wIiBpcyBhYmxlIHRvCisjIGRyb3AgdGhlIGluZGV4IGJlaW5n IHVzZWQgaW4gdGhlIGNhY2hlZCBwbGFuLiAgV2hlbiAiczFleGVjIiBpcyB0aGVuCisjIHVuYmxv Y2tlZCBhbmQgaW5pdGlhbGl6ZXMgdGhlIGNhY2hlZCBwbGFuIGZvciBleGVjdXRpb24sIGl0IGRl dGVjdHMgdGhlCisjIGNvbmN1cnJlbnQgaW5kZXggZHJvcCBhbmQgY2F1c2VzIHRoZSBjYWNoZWQg cGxhbiB0byBiZSBkaXNjYXJkZWQgYW5kCisjIHJlY3JlYXRlZCB3aXRob3V0IHRoZSBpbmRleC4K K3Blcm11dGF0aW9uICJzMXByZXAiICJzMmxvY2siICJzMWV4ZWMiICJzMmRyb3BpIiAiczJ1bmxv Y2siCitwZXJtdXRhdGlvbiAiczFwcmVwMiIgInMybG9jayIgInMxZXhlYzIiICJzMmRyb3BpIiAi czJ1bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVwMyIgInMybG9jayIgInMxZXhlYzMiICJzMmRy b3BpIiAiczJ1bmxvY2siCi0tIAoyLjM1LjMKCg== --0000000000006c6975060667113b Content-Type: application/octet-stream; name="v48-0006-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Disposition: attachment; filename="v48-0006-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln2wv9t22 RnJvbSBiZjVmMTM2YjZjNmVhZjI3OGYyYWVmZGU1MjUwNzRhZmJlZjM5NThmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDowMiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4 IDYvOF0gQWRkIGZpZWxkIHRvIHN0b3JlIHBhcmVudCByZWxpZHMgdG8KIEFwcGVuZC9NZXJnZUFw cGVuZAoKVGhlcmUncyBubyB3YXkgY3VycmVudGx5IGluIHRoZSBleGVjdXRvciB0byB0ZWxsIGlm IHRoZSBjaGlsZApzdWJwbGFucyBvZiBBcHBlbmQvTWVyZ2VBcHBlbmQgYXJlIHNjYW5uaW5nIHBh cnRpdGlvbnMsIGFuZCBpZgp0aGV5IGluZGVlZCBkbywgd2hhdCB0aGUgUlQgaW5kZXhlcyBvZiB0 aGVpciBwYXJlbnQvYW5jZXN0b3IgdGFibGVzCmFyZS4gIEV4ZWN1dG9yIGRvZXNuJ3QgbmVlZCB0 byBzZWUgdGhlaXIgUlQgaW5kZXhlcyBleGNlcHQgZm9yCnJ1bi10aW1lIHBydW5pbmcsIGluIHdo aWNoIGNhc2UgdGhleSBjYW4gY2FuIGJlIGZvdW5kIGluIHRoZQpQYXJ0aXRpb25QcnVuZUluZm8u ICBBIGZ1dHVyZSBjb21taXQgd2lsbCBjcmVhdGUgYSBuZWVkIGZvciB0aGVtIHRvCmJlIGF2YWls YWJsZSBhdCBhbGwgdGltZXMgZm9yIHRoZSBwdXJwb3NlIG9mIGxvY2tpbmcgdGhvc2UKcGFyZW50 L2FuY2VzdG9yIHRhYmxlcyB3aGVuIGV4ZWN1dGluZyBhIGNhY2hlZCBwbGFuLCBzbyBhZGQgYQpm aWVsZCBjYWxsZWQgYWxscGFydHJlbGlkcyB0byBBcHBlbmQvTWVyZ2VBcHBlbmQgdG8gc3RvcmUg dGhvc2UKUlQgaW5kZXhlcy4gIFRoaXMgYWxzbyBhZGRzIGEgZnVuY3Rpb24gY2FsbGVkCkV4ZWNM b2NrQXBwZW5kTm9uTGVhZlRhYmxlcygpIHRvIGxvY2sgdGhvc2UgdGFibGVzLgoKVGhlIGNvZGUg dG8gbG9vayB1cCBwYXJ0aXRpb25lZCBwYXJlbnQgcmVsaWRzIGZvciBhIGdpdmVuIGxpc3Qgb2YK cGFydGl0aW9uIHNjYW4gc3VicGF0aHMgb2YgYW4gQXBwZW5kL01lcmdlQXBwZW5kIGlzIGFscmVh ZHkgcHJlc2VudAppbiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKSBidXQgaXQncyBsb2NhbCB0 byBwYXJ0cHJ1bmUuYy4gIFRoaXMKY29tbWl0IHJlZmFjdG9ycyB0aGF0IGNvZGUgaW50byBpdHMg b3duIGZ1bmN0aW9uIGNhbGxlZAphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcygpIGRlZmlu ZWQgaW4gYXBwZW5kaW5mby5jIGFuZApnZW5lcmFsaXplcyBpdCB0byBjb25zaWRlciBjaGlsZCBq b2luIGFuZCBhZ2dyZWdhdGUgcGF0aHMuICBUbwpmYWNpbGl0YXRlIGxvb2tpbmcgdXAgb2YgcGFy ZW50IHJlbHMgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyBpbgphZGRfYXBwZW5kX3N1YnBhdGhfcGFy dHJlbGlkcygpLCBwYXJlbnQgbGlua3MgYXJlIG5vdyBhbHNvIHNldCBpbgp0aGUgUmVsT3B0SW5m b3Mgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyB0b28sIGxpa2UgdGhleSBhcmUgaW4KdGhvc2Ugb2Yg Y2hpbGQgYmFzZSBhbmQgam9pbiByZWxzLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMv bS9DQStIaXdxRkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFp bC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAg fCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICB8ICAzMyAr KysrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICB8ICAxNCArKysK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICB8ICAxNCArKysKIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8ICA0MSArKysrKystLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3NldHJlZnMuYyAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9hcHBlbmRpbmZvLmMgfCAxMzQgKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFj a2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgICAgfCAxMjQgKysrLS0tLS0tLS0tLS0tLS0t LS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgIHwgICAxICsKIHNy Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICB8ICAxNCArKysKIHNyYy9pbmNs dWRlL29wdGltaXplci9hcHBlbmRpbmZvLmggICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmggICAgfCAgIDMgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDI2NiBp bnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5k ZXggZmZjNjJlMzc5YS4uMjgwNGVjNzBmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0x NDc1LDcgKzE0NzUsNyBAQCBFeGVjR2V0QW5jZXN0b3JSZXN1bHRSZWxzKEVTdGF0ZSAqZXN0YXRl LCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvKQogCiAJCQkvKgogCQkJICogQWxsIGFuY2Vz dG9ycyB1cCB0byB0aGUgcm9vdCB0YXJnZXQgcmVsYXRpb24gbXVzdCBoYXZlIGJlZW4KLQkJCSAq IGxvY2tlZCBieSB0aGUgcGxhbm5lciBvciBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgorCQkJICog bG9ja2VkIGJ5IHRoZSBwbGFubmVyIG9yIEV4ZWNMb2NrQXBwZW5kTm9uTGVhZlBhcnRpdGlvbnMo KS4KIAkJCSAqLwogCQkJYW5jUmVsID0gdGFibGVfb3BlbihhbmNPaWQsIE5vTG9jayk7CiAJCQly SW5mbyA9IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpp bmRleCAxMTc3NzM3MDZhLi4yYjdhMDhjOWJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpA QCAtODI3LDYgKzgyNywzOSBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0 YXRlLCBJbmRleCBydGkpCiAJcmV0dXJuIHJlbDsKIH0KIAorLyoKKyAqIEV4ZWNMb2NrQXBwZW5k Tm9uTGVhZlBhcnRpdGlvbnMKKyAqCQlMb2NrIG5vbi1sZWFmIHBhcnRpdGlvbnMgd2hvc2UgY2hp bGQgcGFydGl0aW9ucyBhcmUgc2Nhbm5lZCBieSBhIGdpdmVuCisgKgkJQXBwZW5kL01lcmdlQXBw ZW5kIG5vZGUKKyAqLwordm9pZAorRXhlY0xvY2tBcHBlbmROb25MZWFmUGFydGl0aW9ucyhFU3Rh dGUgKmVzdGF0ZSwgTGlzdCAqYWxscGFydHJlbGlkcykKK3sKKwlMaXN0Q2VsbCAqbDsKKworCS8q IFRoaXMgc2hvdWxkIGdldCBjYWxsZWQgb25seSB3aGVuIGV4ZWN1dGluZyBjYWNoZWQgcGxhbnMu ICovCisJQXNzZXJ0KGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiAhPSBOVUxMKTsKKwlmb3JlYWNoKGws IGFsbHBhcnRyZWxpZHMpCisJeworCQlCaXRtYXBzZXQgKnBhcnRyZWxpZHMgPSBsZmlyc3Rfbm9k ZShCaXRtYXBzZXQsIGwpOworCQlpbnQJCWkgPSAtMTsKKworCQl3aGlsZSAoKGkgPSBibXNfbmV4 dF9tZW1iZXIocGFydHJlbGlkcywgaSkpID4gMCkKKwkJeworCQkJUmFuZ2VUYmxFbnRyeSAqcnRl ID0gZXhlY19ydF9mZXRjaChpLCBlc3RhdGUpOworCisJCQkvKgorCQkJICogRG9uJ3QgbG9jayB0 aGUgcm9vdCBwYXJlbnQgbWVudGlvbmVkIGluIHRoZSBxdWVyeSwgYmVjYXVzZSBpdAorCQkJICog c2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGxvY2tlZCBiZWZvcmUgZW50ZXJpbmcgdGhlIGV4ZWN1 dG9yLgorCQkJICovCisJCQlpZiAoIXJ0ZS0+aW5Gcm9tQ2wpCisJCQkJTG9ja1JlbGF0aW9uT2lk KHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJZWxzZQorCQkJCUFzc2VydChDaGVj a1JlbExvY2tlZEJ5TWUocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSwgdHJ1ZSkpOworCQl9 CisJfQorfQorCiAvKgogICogRXhlY0luaXRSZXN1bHRSZWxhdGlvbgogICoJCU9wZW4gcmVsYXRp b24gZ2l2ZW4gYnkgdGhlIHBhc3NlZC1pbiBSVCBpbmRleCBhbmQgZmlsbCBpdHMKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVBcHBlbmQuYwppbmRleCA1M2NhOWRjODVkLi40NzU5NTExZjg3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xMzMsNiArMTMzLDIwIEBAIEV4ZWNJbml0QXBwZW5kKEFw cGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJYXBwZW5kc3RhdGUtPmFz X3N5bmNkb25lID0gZmFsc2U7CiAJYXBwZW5kc3RhdGUtPmFzX2JlZ3VuID0gZmFsc2U7CiAKKwkv KgorCSAqIExvY2sgbm9uLWxlYWYgcGFydGl0aW9ucyB3aG9zZSBsZWFmIGNoaWxkcmVuIGFyZSBw cmVzZW50IGluCisJICogbm9kZS0+YXBwZW5kcGxhbnMuICBPbmx5IG5lZWQgdG8gZG8gc28gaWYg ZXhlY3V0aW5nIGEgY2FjaGVkCisJICogcGxhbiwgYmVjYXVzZSBjaGlsZCB0YWJsZXMgcHJlc2Vu dCBpbiBjYWNoZWQgcGxhbnMgYXJlIG5vdAorCSAqIGxvY2tlZCBiZWZvcmUgZXhlY3V0aW9uLgor CSAqCisJICogWFhYIC0gc29tZSBvZiB0aGUgbm9uLWxlYWYgcGFydGl0aW9ucyBtYXkgYWxzbyBi ZSBtZW50aW9uZWQgaW4KKwkgKiBwYXJ0X3BydW5lX2luZm8sIHdoaWNoIGlmIHRoZXkgYXJlIHdv dWxkIGdldCBsb2NrZWQgYWdhaW4gaW4KKwkgKiBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKSBi ZWNhdXNlIGl0IGNhbGxzCisJICogRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbigpIHdoaWNoIGxv Y2tzIGNoaWxkIHRhYmxlcy4KKwkgKi8KKwlpZiAoZXN0YXRlLT5lc19jYWNoZWRwbGFuKQorCQlF eGVjTG9ja0FwcGVuZE5vbkxlYWZQYXJ0aXRpb25zKGVzdGF0ZSwgbm9kZS0+YWxscGFydHJlbGlk cyk7CisKIAkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVu IHNldCB0aGF0IHVwIG5vdyAqLwogCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8gIT0gTlVMTCkK IAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IDUyYzNlZGYyNzgu LjE1ODIxMGFhYzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFw cGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC04 MSw2ICs4MSwyMCBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAltZXJnZXN0YXRlLT5wcy5zdGF0ZSA9IGVzdGF0ZTsK IAltZXJnZXN0YXRlLT5wcy5FeGVjUHJvY05vZGUgPSBFeGVjTWVyZ2VBcHBlbmQ7CiAKKwkvKgor CSAqIExvY2sgbm9uLWxlYWYgcGFydGl0aW9ucyB3aG9zZSBsZWFmIGNoaWxkcmVuIGFyZSBwcmVz ZW50IGluCisJICogbm9kZS0+bWVyZ2VwbGFucy4gIE9ubHkgbmVlZCB0byBkbyBzbyBpZiBleGVj dXRpbmcgYSBjYWNoZWQKKwkgKiBwbGFuLCBiZWNhdXNlIGNoaWxkIHRhYmxlcyBwcmVzZW50IGlu IGNhY2hlZCBwbGFucyBhcmUgbm90CisJICogbG9ja2VkIGJlZm9yZSBleGVjdXRpb24uCisJICoK KwkgKiBYWFggLSBzb21lIG9mIHRoZSBub24tbGVhZiBwYXJ0aXRpb25zIG1heSBhbHNvIGJlIG1l bnRpb25lZCBpbgorCSAqIHBhcnRfcHJ1bmVfaW5mbywgd2hpY2ggaWYgdGhleSBhcmUgd291bGQg Z2V0IGxvY2tlZCBhZ2FpbiBpbgorCSAqIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygpIGJlY2F1 c2UgaXQgY2FsbHMKKwkgKiBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgd2hpY2ggbG9ja3Mg Y2hpbGQgdGFibGVzLgorCSAqLworCWlmIChlc3RhdGUtPmVzX2NhY2hlZHBsYW4pCisJCUV4ZWNM b2NrQXBwZW5kTm9uTGVhZlBhcnRpdGlvbnMoZXN0YXRlLCBub2RlLT5hbGxwYXJ0cmVsaWRzKTsK KwogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0 IHRoYXQgdXAgbm93ICovCiAJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5mbyAhPSBOVUxMKQogCXsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCAzNGNhNmQ0YWMyLi5k MWY0ZjYwNmJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVw bGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0y NSw2ICsyNSw3IEBACiAjaW5jbHVkZSAibm9kZXMvZXh0ZW5zaWJsZS5oIgogI2luY2x1ZGUgIm5v ZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUg Im9wdGltaXplci9hcHBlbmRpbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2NsYXVzZXMuaCIK ICNpbmNsdWRlICJvcHRpbWl6ZXIvY29zdC5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6 ZXIuaCIKQEAgLTEyMjksNiArMTIzMCw3IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5m byAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJT2lkCQkgICAqbm9k ZUNvbGxhdGlvbnMgPSBOVUxMOwogCWJvb2wJICAgKm5vZGVOdWxsc0ZpcnN0ID0gTlVMTDsKIAli b29sCQljb25zaWRlcl9hc3luYyA9IGZhbHNlOworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHMgPSBO SUw7CiAKIAkvKgogCSAqIFRoZSBzdWJwYXRocyBsaXN0IGNvdWxkIGJlIGVtcHR5LCBpZiBldmVy eSBjaGlsZCB3YXMgcHJvdmVuIGVtcHR5IGJ5CkBAIC0xMzcwLDE1ICsxMzcyLDIzIEBAIGNyZWF0 ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBp bnQgZmxhZ3MpCiAJCQkrK25hc3luY3BsYW5zOwogCQl9CiAKKwkJLyoKKwkJICogRmluZCBwYXJ0 aXRpb25lZCBwYXJlbnQgcmVsKHMpIG9mIHRoZSBzdWJwYXRoJ3MgcmVsKHMpLgorCQkgKi8KKwkJ YWxscGFydHJlbGlkcyA9IGFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKHJvb3QsIHN1YnBh dGgsIHJlbCwKKwkJCQkJCQkJCQkJCQkgIGFsbHBhcnRyZWxpZHMpOworCiAJCXN1YnBsYW5zID0g bGFwcGVuZChzdWJwbGFucywgc3VicGxhbik7CiAJfQogCisJcGxhbi0+YWxscGFydHJlbGlkcyA9 IGFsbHBhcnRyZWxpZHM7CisKIAkvKgotCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkg YmUgdXNlZnVsIHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KLQkgKiBwcnVuaW5nIGR1cmlu ZyBleGVjdXRpb24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0 bwotCSAqIGRvIHBhcnRpdGlvbiBwcnVuaW5nLgorCSAqIElmIHNjYW5uaW5nIHBhcnRpdGlvbnMs IGNoZWNrIGlmIHRoZXJlIGFyZSBxdWFscyB0aGF0IG1heSBiZSB1c2VmdWwgdG8KKwkgKiBwZXJm b3JtIGZ1cnRoZXIgcGFydGl0aW9uIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBp bmZvcm1hdGlvbgorCSAqIG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8gZG8gcGFydGl0aW9uIHBy dW5pbmcuCiAJICovCi0JaWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZykKKwlpZiAoZW5hYmxl X3BhcnRpdGlvbl9wcnVuaW5nICYmIGFsbHBhcnRyZWxpZHMgIT0gTklMKQogCXsKIAkJTGlzdAkg ICAqcHJ1bmVxdWFsOwogCkBAIC0xMzk5LDcgKzE0MDksOCBAQCBjcmVhdGVfYXBwZW5kX3BsYW4o UGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCQkJ cGFydHBydW5laW5mbyA9CiAJCQkJbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwK IAkJCQkJCQkJCQkgYmVzdF9wYXRoLT5zdWJwYXRocywKLQkJCQkJCQkJCQkgcHJ1bmVxdWFsKTsK KwkJCQkJCQkJCQkgcHJ1bmVxdWFsLAorCQkJCQkJCQkJCSBhbGxwYXJ0cmVsaWRzKTsKIAl9CiAK IAlwbGFuLT5hcHBlbmRwbGFucyA9IHN1YnBsYW5zOwpAQCAtMTQ0NSw2ICsxNDU2LDcgQEAgY3Jl YXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGgg KmJlc3RfcGF0aCwKIAlMaXN0Q2VsbCAgICpzdWJwYXRoczsKIAlSZWxPcHRJbmZvICpyZWwgPSBi ZXN0X3BhdGgtPnBhdGgucGFyZW50OwogCVBhcnRpdGlvblBydW5lSW5mbyAqcGFydHBydW5laW5m byA9IE5VTEw7CisJTGlzdAkgICAqYWxscGFydHJlbGlkcyA9IE5JTDsKIAogCS8qCiAJICogV2Ug ZG9uJ3QgaGF2ZSB0aGUgYWN0dWFsIGNyZWF0aW9uIG9mIHRoZSBNZXJnZUFwcGVuZCBub2RlIHNw bGl0IG91dApAQCAtMTUzNCwxNSArMTU0NiwyMyBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4o UGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQkJc3VicGxh biA9IChQbGFuICopIHNvcnQ7CiAJCX0KIAorCQkvKgorCQkgKiBGaW5kIHBhcnRpdGlvbmVkIHBh cmVudCByZWwocykgb2YgdGhlIHN1YnBhdGgncyByZWwocykuCisJCSAqLworCQlhbGxwYXJ0cmVs aWRzID0gYWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMocm9vdCwgc3VicGF0aCwgcmVsLAor CQkJCQkJCQkJCQkJCSAgYWxscGFydHJlbGlkcyk7CisKIAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1 YnBsYW5zLCBzdWJwbGFuKTsKIAl9CiAKKwlub2RlLT5hbGxwYXJ0cmVsaWRzID0gYWxscGFydHJl bGlkczsKKwogCS8qCi0JICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2VmdWwg dG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgotCSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlv bi4gIEdhdGhlciBpbmZvcm1hdGlvbiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvCi0JICogZG8g cGFydGl0aW9uIHBydW5pbmcuCisJICogSWYgc2Nhbm5pbmcgcGFydGl0aW9ucywgY2hlY2sgaWYg dGhlcmUgYXJlIHF1YWxzIHRoYXQgbWF5IGJlIHVzZWZ1bCB0bworCSAqIHBlcmZvcm0gZnVydGhl ciBwYXJ0aXRpb24gcHJ1bmluZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9u CisJICogbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0byBkbyBwYXJ0aXRpb24gcHJ1bmluZy4KIAkg Ki8KLQlpZiAoZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nKQorCWlmIChlbmFibGVfcGFydGl0aW9u X3BydW5pbmcgJiYgYWxscGFydHJlbGlkcyAhPSBOSUwpCiAJewogCQlMaXN0CSAgICpwcnVuZXF1 YWw7CiAKQEAgLTE1NTQsNyArMTU3NCw4IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFu bmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCWlmIChwcnVuZXF1 YWwgIT0gTklMKQogCQkJcGFydHBydW5laW5mbyA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhy b290LCByZWwsCiAJCQkJCQkJCQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJ CQkJIHBydW5lcXVhbCk7CisJCQkJCQkJCQkJCQkJIHBydW5lcXVhbCwKKwkJCQkJCQkJCQkJCQkg YWxscGFydHJlbGlkcyk7CiAJfQogCiAJbm9kZS0+bWVyZ2VwbGFucyA9IHN1YnBsYW5zOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDQ0ZWZiMWY0ZWIuLmY5N2JjMDkxMTMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTc4NTUsOCArNzg1NSwxMSBA QCBjcmVhdGVfcGFydGl0aW9ud2lzZV9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwK IAkJCQkJCQkJCSAgIGFnZ19jb3N0cywgZ2QsICZjaGlsZF9leHRyYSwKIAkJCQkJCQkJCSAgICZj aGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwogCisJCS8qIE1hcmsgYXMgY2hpbGQgb2YgZ3Jv dXBlZF9yZWwuICovCisJCWNoaWxkX2dyb3VwZWRfcmVsLT5wYXJlbnQgPSBncm91cGVkX3JlbDsK IAkJaWYgKGNoaWxkX3BhcnRpYWxseV9ncm91cGVkX3JlbCkKIAkJeworCQkJY2hpbGRfcGFydGlh bGx5X2dyb3VwZWRfcmVsLT5wYXJlbnQgPSBncm91cGVkX3JlbDsKIAkJCXBhcnRpYWxseV9ncm91 cGVkX2xpdmVfY2hpbGRyZW4gPQogCQkJCWxhcHBlbmQocGFydGlhbGx5X2dyb3VwZWRfbGl2ZV9j aGlsZHJlbiwKIAkJCQkJCWNoaWxkX3BhcnRpYWxseV9ncm91cGVkX3JlbCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggNzk2MjIwMDg4NS4uOGUyNTZkZDc3OSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMTc2Niw2ICsxNzY2LDggQEAgc2V0X2Fw cGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCXNldF9kdW1teV90bGlzdF9yZWZl cmVuY2VzKChQbGFuICopIGFwbGFuLCBydG9mZnNldCk7CiAKIAlhcGxhbi0+YXBwcmVsaWRzID0g b2Zmc2V0X3JlbGlkX3NldChhcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCk7CisJZm9yZWFjaChs LCBhcGxhbi0+YWxscGFydHJlbGlkcykKKwkJbGZpcnN0KGwpID0gb2Zmc2V0X3JlbGlkX3NldCgo UmVsaWRzKSBsZmlyc3QobCksIHJ0b2Zmc2V0KTsKIAogCWlmIChhcGxhbi0+cGFydF9wcnVuZV9p bmZvKQogCXsKQEAgLTE4NDIsNiArMTg0NCw4IEBAIHNldF9tZXJnZWFwcGVuZF9yZWZlcmVuY2Vz KFBsYW5uZXJJbmZvICpyb290LAogCXNldF9kdW1teV90bGlzdF9yZWZlcmVuY2VzKChQbGFuICop IG1wbGFuLCBydG9mZnNldCk7CiAKIAltcGxhbi0+YXBwcmVsaWRzID0gb2Zmc2V0X3JlbGlkX3Nl dChtcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNldCk7CisJZm9yZWFjaChsLCBtcGxhbi0+YWxscGFy dHJlbGlkcykKKwkJbGZpcnN0KGwpID0gb2Zmc2V0X3JlbGlkX3NldCgoUmVsaWRzKSBsZmlyc3Qo bCksIHJ0b2Zmc2V0KTsKIAogCWlmIChtcGxhbi0+cGFydF9wcnVuZV9pbmZvKQogCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwppbmRleCBmNDU2YjNiMGE0Li41YmQ4ZTgy YjliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jCkBAIC00MSw2ICs0 MSw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfaW5oX3RyYW5zbGF0aW9uX2xpc3QoUmVsYXRpb24gb2xk cmVsYXRpb24sCiAJCQkJCQkJCQkgIEFwcGVuZFJlbEluZm8gKmFwcGluZm8pOwogc3RhdGljIE5v ZGUgKmFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCQkJCQkJ CQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX2NvbnRleHQgKmNvbnRleHQpOworc3RhdGljIExpc3Qg KmFkZF9wYXJ0X3JlbGlkcyhMaXN0ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxp ZHMpOwogCiAKIC8qCkBAIC0xMDM1LDMgKzEwMzYsMTM2IEBAIGRpc3RyaWJ1dGVfcm93X2lkZW50 aXR5X3ZhcnMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0KIAl9CiB9CisKKy8qCisgKiBhZGRfYXBw ZW5kX3N1YnBhdGhfcGFydHJlbGlkcworICoJCUxvb2sgdXAgYSBjaGlsZCBzdWJwYXRoJ3MgcmVs J3MgcGFydGl0aW9uZWQgcGFyZW50IHJlbGlkcyB1cCB0bworICoJCXBhcmVudHJlbCBhbmQgYWRk IHRoZSBiaXRtYXBzZXQgY29udGFpbmluZyB0aG9zZSBpbnRvCisgKgkJJ2FsbHBhcnRyZWxpZHMn CisgKi8KK0xpc3QgKgorYWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMoUGxhbm5lckluZm8g KnJvb3QsIFBhdGggKnN1YnBhdGgsCisJCQkJCQkJICBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCisJ CQkJCQkJICBMaXN0ICphbGxwYXJ0cmVsaWRzKQoreworCVJlbE9wdEluZm8gKnByZWwgPSBzdWJw YXRoLT5wYXJlbnQ7CisJUmVsaWRzCQlwYXJ0cmVsaWRzID0gTlVMTDsKKworCS8qIE5vdGhpbmcg dG8gZG8gaWYgdGhlcmUncyBubyBwYXJlbnQgdG8gYmVnaW4gd2l0aC4gKi8KKwlpZiAoIUlTX09U SEVSX1JFTChwcmVsKSkKKwkJcmV0dXJuIGFsbHBhcnRyZWxpZHM7CisKKwkvKgorCSAqIFRyYXZl cnNlIHVwIHRvIHRoZSBwYXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQsIGNvbGxl Y3RpbmcKKwkgKiBwYXJlbnQgcmVsaWRzIGFzIHdlIGdvOyBidXQgc3RvcCBpZiB3ZSByZWFjaCBw YXJlbnRyZWwuICAoTm9ybWFsbHksIGEKKwkgKiBwYXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25l ZCBwYXJlbnQgaXMgZWl0aGVyIHBhcmVudHJlbCBvciBhIFVOSU9OIEFMTAorCSAqIGFwcGVuZHJl bCBjaGlsZCBvZiBwYXJlbnRyZWwuICBCdXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpv aW5zIG9mCisJICogbXVsdGktbGV2ZWwgcGFydGl0aW9uaW5nIHRyZWVzLCB3ZSBjYW4gc2VlIGFu IGFwcGVuZCBwYXRoIHdob3NlCisJICogcGFyZW50cmVsIGlzIGFuIGludGVybWVkaWF0ZSBwYXJ0 aXRpb25lZCB0YWJsZS4pCisJICovCisJZG8KKwl7CisJCVJlbGlkcwlwYXJlbnRfcmVsaWRzID0g TlVMTDsKKworCQkvKgorCQkgKiBGb3Igc2ltcGxlIGNoaWxkIHJlbHMsIHdlIGNhbiBzaW1wbHkg c2V0IHRoZSBwYXJlbnRfcmVsaWRzIHRvCisJCSAqIHByZWwtPnBhcmVudC0+cmVsaWRzLiAgQnV0 IGZvciBwYXJ0aXRpb253aXNlIGpvaW4gYW5kIGFnZ3JlZ2F0ZQorCQkgKiBjaGlsZCByZWxzLCB3 aGlsZSB3ZSBjYW4gdXNlIHByZWwtPnBhcmVudCB0byBtb3ZlIHVwIHRoZSB0cmVlLAorCQkgKiBw YXJlbnRfcmVsaWRzIG11c3QgYmUgZm91bmQgdGhlIGhhcmQgd2F5IHRocm91Z2ggQXBwZW5kSW5m b0luZm9zLAorCQkgKiBiZWNhdXNlIDEpIGEgam9pbnJlbCdzIHJlbGlkcyBtYXkgcG9pbnQgdG8g UlRFX0pPSU4gZW50cmllcywKKwkJICogMikgdG9wbW9zdCBwYXJlbnQgZ3JvdXBpbmcgcmVsJ3Mg cmVsaWRzIGZpZWxkIGlzIE5VTEwuCisJCSAqLworCQlpZiAoSVNfU0lNUExFX1JFTChwcmVsKSkK KwkJeworCQkJcHJlbCA9IHByZWwtPnBhcmVudDsKKwkJCS8qIFN0b3Agb25jZSB3ZSByZWFjaCB0 aGUgcm9vdCBwYXJ0aXRpb25lZCByZWwuICovCisJCQlpZiAoIUlTX1BBUlRJVElPTkVEX1JFTChw cmVsKSkKKwkJCQlicmVhazsKKwkJCXBhcmVudF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcnMocGFy ZW50X3JlbGlkcywgcHJlbC0+cmVsaWRzKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUFwcGVuZFJl bEluZm8gKiphcHBpbmZvczsKKwkJCWludAkJbmFwcGluZm9zLAorCQkJCQlpOworCisJCQlhcHBp bmZvcyA9IGZpbmRfYXBwaW5mb3NfYnlfcmVsaWRzKHJvb3QsIHByZWwtPnJlbGlkcywKKwkJCQkJ CQkJCQkJICAgJm5hcHBpbmZvcyk7CisJCQlmb3IgKGkgPSAwOyBpIDwgbmFwcGluZm9zOyBpKysp CisJCQl7CisJCQkJQXBwZW5kUmVsSW5mbyAqYXBwaW5mbyA9IGFwcGluZm9zW2ldOworCisJCQkJ cGFyZW50X3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKHBhcmVudF9yZWxpZHMsCisJCQkJCQkJCQkJ CSAgIGFwcGluZm8tPnBhcmVudF9yZWxpZCk7CisJCQl9CisJCQlwZnJlZShhcHBpbmZvcyk7CisJ CQlwcmVsID0gcHJlbC0+cGFyZW50OworCQl9CisJCS8qIGFjY2VwdCB0aGlzIGxldmVsIGFzIGFu IGludGVyZXN0aW5nIHBhcmVudCAqLworCQlwYXJ0cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKHBh cnRyZWxpZHMsIHBhcmVudF9yZWxpZHMpOworCQlpZiAocHJlbCA9PSBwYXJlbnRyZWwpCisJCQli cmVhazsJCS8qIGRvbid0IHRyYXZlcnNlIGFib3ZlIHBhcmVudHJlbCAqLworCX0gd2hpbGUgKElT X09USEVSX1JFTChwcmVsKSk7CisKKwlpZiAocGFydHJlbGlkcyA9PSBOVUxMKQorCQlyZXR1cm4g YWxscGFydHJlbGlkczsKKworCXJldHVybiBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlkcywg cGFydHJlbGlkcyk7Cit9CisKKy8qCisgKiBhZGRfcGFydF9yZWxpZHMKKyAqCQlBZGQgbmV3IGlu Zm8gdG8gYSBsaXN0IG9mIEJpdG1hcHNldHMgb2YgcGFydGl0aW9uZWQgcmVsaWRzLgorICoKKyAq IFdpdGhpbiAnYWxscGFydHJlbGlkcycsIHRoZXJlIGlzIG9uZSBCaXRtYXBzZXQgZm9yIGVhY2gg dG9wbW9zdCBwYXJlbnQKKyAqIHBhcnRpdGlvbmVkIHJlbC4gIEVhY2ggQml0bWFwc2V0IGNvbnRh aW5zIHRoZSBSVCBpbmRleGVzIG9mIHRoZSB0b3Btb3N0CisgKiBwYXJlbnQgYXMgd2VsbCBhcyBp dHMgcmVsZXZhbnQgbm9uLWxlYWYgY2hpbGQgcGFydGl0aW9ucy4gIFNpbmNlIChieQorICogY29u c3RydWN0aW9uIG9mIHRoZSByYW5nZXRhYmxlIGxpc3QpIHBhcmVudCBwYXJ0aXRpb25zIG11c3Qg aGF2ZSBsb3dlcgorICogUlQgaW5kZXhlcyB0aGFuIHRoZWlyIGNoaWxkcmVuLCB3ZSBjYW4gZGlz dGluZ3Vpc2ggdGhlIHRvcG1vc3QgcGFyZW50CisgKiBhcyBiZWluZyB0aGUgbG93ZXN0IHNldCBi aXQgaW4gdGhlIEJpdG1hcHNldC4KKyAqCisgKiAncGFydHJlbGlkcycgY29udGFpbnMgdGhlIFJU IGluZGV4ZXMgb2YgYSBwYXJlbnQgcGFydGl0aW9uZWQgcmVsLCBhbmQKKyAqIHBvc3NpYmx5IHNv bWUgbm9uLWxlYWYgY2hpbGRyZW4sIHRoYXQgYXJlIG5ld2x5IGlkZW50aWZpZWQgYXMgcGFyZW50 cyBvZgorICogc29tZSBzdWJwYXRoIHJlbCBwYXNzZWQgdG8gbWFrZV9wYXJ0aXRpb25fcHJ1bmVp bmZvKCkuICBUaGVzZSBhcmUgYWRkZWQKKyAqIHRvIGFuIGFwcHJvcHJpYXRlIG1lbWJlciBvZiAn YWxscGFydHJlbGlkcycuCisgKgorICogTm90ZSB0aGF0IHRoZSBsaXN0IGNvbnRhaW5zIG9ubHkg UlQgaW5kZXhlcyBvZiBwYXJ0aXRpb25lZCB0YWJsZXMgdGhhdAorICogYXJlIHBhcmVudHMgb2Yg c29tZSBzY2FuLWxldmVsIHJlbGF0aW9uIGFwcGVhcmluZyBpbiB0aGUgJ3N1YnBhdGhzJyB0aGF0 CisgKiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKSBpcyBkZWFsaW5nIHdpdGguICBBbHNvLCAi dG9wbW9zdCIgcGFyZW50cyBhcmUKKyAqIG5vdCBhbGxvd2VkIHRvIGJlIGhpZ2hlciB0aGFuIHRo ZSAncGFyZW50cmVsJyBhc3NvY2lhdGVkIHdpdGggdGhlIGFwcGVuZAorICogcGF0aC4gIEluIHRo aXMgd2F5LCB3ZSBhdm9pZCBleHBlbmRpbmcgY3ljbGVzIG9uIHBhcnRpdGlvbmVkIHJlbHMgdGhh dAorICogY2FuJ3QgY29udHJpYnV0ZSB1c2VmdWwgcHJ1bmluZyBpbmZvcm1hdGlvbiBmb3IgdGhl IHByb2JsZW0gYXQgaGFuZC4KKyAqIChJdCBpcyBwb3NzaWJsZSBmb3IgJ3BhcmVudHJlbCcgdG8g YmUgYSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJsZSwgYW5kIGl0CisgKiBpcyBhbHNvIHBvc3NpYmxl IGZvciBzY2FuLWxldmVsIHJlbGF0aW9ucyB0byBiZSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJsZXMK KyAqIHJhdGhlciB0aGFuIGxlYWYgcGFydGl0aW9ucy4gIEhlbmNlIHdlIG11c3QgY29uc3RydWN0 IHRoaXMgcmVsYXRpb24gc2V0CisgKiB3aXRoIHJlZmVyZW5jZSB0byB0aGUgcGFydGljdWxhciBh cHBlbmQgcGF0aCB3ZSdyZSBkZWFsaW5nIHdpdGgsIHJhdGhlcgorICogdGhhbiBsb29raW5nIGF0 IHRoZSBmdWxsIHBhcnRpdGlvbmluZyBzdHJ1Y3R1cmUgcmVwcmVzZW50ZWQgaW4gdGhlCisgKiBS ZWxPcHRJbmZvcy4pCisgKi8KK3N0YXRpYyBMaXN0ICoKK2FkZF9wYXJ0X3JlbGlkcyhMaXN0ICph bGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpCit7CisJSW5kZXgJCXRhcmdldHBh cnQ7CisJTGlzdENlbGwgICAqbGM7CisKKwkvKiBXZSBjYW4gZWFzaWx5IGdldCB0aGUgbG93ZXN0 IHNldCBiaXQgdGhpcyB3YXk6ICovCisJdGFyZ2V0cGFydCA9IGJtc19uZXh0X21lbWJlcihwYXJ0 cmVsaWRzLCAtMSk7CisJQXNzZXJ0KHRhcmdldHBhcnQgPiAwKTsKKworCS8qIExvb2sgZm9yIGEg bWF0Y2hpbmcgdG9wbW9zdCBwYXJlbnQgKi8KKwlmb3JlYWNoKGxjLCBhbGxwYXJ0cmVsaWRzKQor CXsKKwkJQml0bWFwc2V0ICAqY3VycnBhcnRyZWxpZHMgPSAoQml0bWFwc2V0ICopIGxmaXJzdChs Yyk7CisJCUluZGV4CQljdXJydGFyZ2V0ID0gYm1zX25leHRfbWVtYmVyKGN1cnJwYXJ0cmVsaWRz LCAtMSk7CisKKwkJaWYgKHRhcmdldHBhcnQgPT0gY3VycnRhcmdldCkKKwkJeworCQkJLyogRm91 bmQgYSBtYXRjaCwgc28gYWRkIGFueSBuZXcgUlQgaW5kZXhlcyB0byB0aGlzIGhpZXJhcmNoeSAq LworCQkJY3VycnBhcnRyZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoY3VycnBhcnRyZWxpZHMsIHBh cnRyZWxpZHMpOworCQkJbGZpcnN0KGxjKSA9IGN1cnJwYXJ0cmVsaWRzOworCQkJcmV0dXJuIGFs bHBhcnRyZWxpZHM7CisJCX0KKwl9CisJLyogTm8gbWF0Y2gsIHNvIGFkZCB0aGUgbmV3IHBhcnRp dGlvbiBoaWVyYXJjaHkgdG8gdGhlIGxpc3QgKi8KKwlyZXR1cm4gbGFwcGVuZChhbGxwYXJ0cmVs aWRzLCBwYXJ0cmVsaWRzKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRl eCA3MTc5YjIyYTA1Li4yMTM1MTJhNWY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRp b25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVu ZS5jCkBAIC0xMzgsNyArMTM4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVTdGVwUmVzdWx0CiB9 IFBydW5lU3RlcFJlc3VsdDsKIAogCi1zdGF0aWMgTGlzdCAqYWRkX3BhcnRfcmVsaWRzKExpc3Qg KmFsbHBhcnRyZWxpZHMsIEJpdG1hcHNldCAqcGFydHJlbGlkcyk7CiBzdGF0aWMgTGlzdCAqbWFr ZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJ ICAgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJCQkJCSAgIExpc3QgKnBydW5lcXVhbCwK QEAgLTIxOCwzMyArMjE3LDMyIEBAIHN0YXRpYyB2b2lkIHBhcnRrZXlfZGF0dW1fZnJvbV9leHBy KFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKICAqIG9mIHNjYW4gcGF0aHMgZm9yIGl0 cyBjaGlsZCByZWxzLgogICogJ3BydW5lcXVhbCcgaXMgYSBsaXN0IG9mIHBvdGVudGlhbCBwcnVu aW5nIHF1YWxzIChpLmUuLCByZXN0cmljdGlvbgogICogY2xhdXNlcyB0aGF0IGFyZSBhcHBsaWNh YmxlIHRvIHRoZSBhcHBlbmRyZWwpLgorICogJ2FsbHBhcnRyZWxpZHMnIGNvbnRhaW5zIEJpdG1h cHNldHMgb2YgUlQgaW5kZXhlcyBvZiBwYXJ0aXRpb25lZCBwYXJlbnRzCisgKiB3aG9zZSBwYXJ0 aXRpb25zJyBQYXRocyBhcmUgaW4gJ3N1YnBhdGhzJzsgdGhlcmUncyBvbmUgQml0bWFwc2V0IGZv ciBldmVyeQorICogcGFydGl0aW9uIHRyZWUgaW52b2x2ZWQuCiAgKi8KIFBhcnRpdGlvblBydW5l SW5mbyAqCiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCSBMaXN0ICpzdWJwYXRocywKLQkJCQkJCSBMaXN0ICpw cnVuZXF1YWwpCisJCQkJCQkgTGlzdCAqcHJ1bmVxdWFsLAorCQkJCQkJIExpc3QgKmFsbHBhcnRy ZWxpZHMpCiB7CiAJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm87CiAJQml0bWFwc2V0ICAq YWxsbWF0Y2hlZHN1YnBsYW5zID0gTlVMTDsKLQlMaXN0CSAgICphbGxwYXJ0cmVsaWRzOwogCUxp c3QJICAgKnBydW5lcmVsaW5mb3M7CiAJaW50CQkgICAqcmVsaWRfc3VicGxhbl9tYXA7CiAJTGlz dENlbGwgICAqbGM7CiAJaW50CQkJaTsKIAorCUFzc2VydChsaXN0X2xlbmd0aChhbGxwYXJ0cmVs aWRzKSA+IDApOworCiAJLyoKLQkgKiBTY2FuIHRoZSBzdWJwYXRocyB0byBzZWUgd2hpY2ggb25l cyBhcmUgc2NhbnMgb2YgcGFydGl0aW9uIGNoaWxkCi0JICogcmVsYXRpb25zLCBhbmQgaWRlbnRp ZnkgdGhlaXIgcGFyZW50IHBhcnRpdGlvbmVkIHJlbHMuICAoTm90ZTogd2UgbXVzdAotCSAqIHJl c3RyaWN0IHRoZSBwYXJlbnQgcGFydGl0aW9uZWQgcmVscyB0byBiZSBwYXJlbnRyZWwgb3IgY2hp bGRyZW4gb2YKLQkgKiBwYXJlbnRyZWwsIG90aGVyd2lzZSB3ZSBjb3VsZG4ndCB0cmFuc2xhdGUg cHJ1bmVxdWFsIHRvIG1hdGNoLikKLQkgKgotCSAqIEFsc28gY29uc3RydWN0IGEgdGVtcG9yYXJ5 IGFycmF5IHRvIG1hcCBmcm9tIHBhcnRpdGlvbi1jaGlsZC1yZWxhdGlvbgotCSAqIHJlbGlkIHRv IHRoZSBpbmRleCBpbiAnc3VicGF0aHMnIG9mIHRoZSBzY2FuIHBsYW4gZm9yIHRoYXQgcGFydGl0 aW9uLgorCSAqIENvbnN0cnVjdCBhIHRlbXBvcmFyeSBhcnJheSB0byBtYXAgZnJvbSBwYXJ0aXRp b24tY2hpbGQtcmVsYXRpb24gcmVsaWQKKwkgKiB0byB0aGUgaW5kZXggaW4gJ3N1YnBhdGhzJyBv ZiB0aGUgc2NhbiBwbGFuIGZvciB0aGF0IHBhcnRpdGlvbi4KIAkgKiAoVXNlIG9mICJzdWJwbGFu IiByYXRoZXIgdGhhbiAic3VicGF0aCIgaXMgYSBiaXQgb2YgYSBtaXNub21lciwgYnV0CiAJICog d2UnbGwgbGV0IGl0IHN0YW5kLikgIEZvciBjb252ZW5pZW5jZSwgd2UgdXNlIDEtYmFzZWQgaW5k ZXhlcyBoZXJlLCBzbwogCSAqIHRoYXQgemVybyBjYW4gcmVwcmVzZW50IGFuIHVuLWZpbGxlZCBh cnJheSBlbnRyeS4KIAkgKi8KLQlhbGxwYXJ0cmVsaWRzID0gTklMOwogCXJlbGlkX3N1YnBsYW5f bWFwID0gcGFsbG9jMChzaXplb2YoaW50KSAqIHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlfc2l6ZSk7 CiAKIAlpID0gMTsKQEAgLTI1Myw1MCArMjUxLDkgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZv KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCVBhdGgJICAgKnBh dGggPSAoUGF0aCAqKSBsZmlyc3QobGMpOwogCQlSZWxPcHRJbmZvICpwYXRocmVsID0gcGF0aC0+ cGFyZW50OwogCi0JCS8qIFdlIGRvbid0IGNvbnNpZGVyIHBhcnRpdGlvbmVkIGpvaW5zIGhlcmUg Ki8KLQkJaWYgKHBhdGhyZWwtPnJlbG9wdGtpbmQgPT0gUkVMT1BUX09USEVSX01FTUJFUl9SRUwp Ci0JCXsKLQkJCVJlbE9wdEluZm8gKnByZWwgPSBwYXRocmVsOwotCQkJQml0bWFwc2V0ICAqcGFy dHJlbGlkcyA9IE5VTEw7Ci0KLQkJCS8qCi0JCQkgKiBUcmF2ZXJzZSB1cCB0byB0aGUgcGF0aHJl bCdzIHRvcG1vc3QgcGFydGl0aW9uZWQgcGFyZW50LAotCQkJICogY29sbGVjdGluZyBwYXJlbnQg cmVsaWRzIGFzIHdlIGdvOyBidXQgc3RvcCBpZiB3ZSByZWFjaAotCQkJICogcGFyZW50cmVsLiAg KE5vcm1hbGx5LCBhIHBhdGhyZWwncyB0b3Btb3N0IHBhcnRpdGlvbmVkIHBhcmVudAotCQkJICog aXMgZWl0aGVyIHBhcmVudHJlbCBvciBhIFVOSU9OIEFMTCBhcHBlbmRyZWwgY2hpbGQgb2YKLQkJ CSAqIHBhcmVudHJlbC4gIEJ1dCB3aGVuIGhhbmRsaW5nIHBhcnRpdGlvbndpc2Ugam9pbnMgb2YK LQkJCSAqIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyB0cmVlcywgd2UgY2FuIHNlZSBhbiBhcHBl bmQgcGF0aCB3aG9zZQotCQkJICogcGFyZW50cmVsIGlzIGFuIGludGVybWVkaWF0ZSBwYXJ0aXRp b25lZCB0YWJsZS4pCi0JCQkgKi8KLQkJCWRvCi0JCQl7Ci0JCQkJQXBwZW5kUmVsSW5mbyAqYXBw aW5mbzsKLQotCQkJCUFzc2VydChwcmVsLT5yZWxpZCA8IHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlf c2l6ZSk7Ci0JCQkJYXBwaW5mbyA9IHJvb3QtPmFwcGVuZF9yZWxfYXJyYXlbcHJlbC0+cmVsaWRd OwotCQkJCXByZWwgPSBmaW5kX2Jhc2VfcmVsKHJvb3QsIGFwcGluZm8tPnBhcmVudF9yZWxpZCk7 Ci0JCQkJaWYgKCFJU19QQVJUSVRJT05FRF9SRUwocHJlbCkpCi0JCQkJCWJyZWFrOwkJLyogcmVh Y2hlZCBhIG5vbi1wYXJ0aXRpb25lZCBwYXJlbnQgKi8KLQkJCQkvKiBhY2NlcHQgdGhpcyBsZXZl bCBhcyBhbiBpbnRlcmVzdGluZyBwYXJlbnQgKi8KLQkJCQlwYXJ0cmVsaWRzID0gYm1zX2FkZF9t ZW1iZXIocGFydHJlbGlkcywgcHJlbC0+cmVsaWQpOwotCQkJCWlmIChwcmVsID09IHBhcmVudHJl bCkKLQkJCQkJYnJlYWs7CQkvKiBkb24ndCB0cmF2ZXJzZSBhYm92ZSBwYXJlbnRyZWwgKi8KLQkJ CX0gd2hpbGUgKHByZWwtPnJlbG9wdGtpbmQgPT0gUkVMT1BUX09USEVSX01FTUJFUl9SRUwpOwot Ci0JCQlpZiAocGFydHJlbGlkcykKLQkJCXsKLQkJCQkvKgotCQkJCSAqIEZvdW5kIHNvbWUgcmVs ZXZhbnQgcGFyZW50IHBhcnRpdGlvbnMsIHdoaWNoIG1heSBvciBtYXkgbm90Ci0JCQkJICogb3Zl cmxhcCB3aXRoIHBhcnRpdGlvbiB0cmVlcyB3ZSBhbHJlYWR5IGZvdW5kLiAgQWRkIG5ldwotCQkJ CSAqIGluZm9ybWF0aW9uIHRvIHRoZSBhbGxwYXJ0cmVsaWRzIGxpc3QuCi0JCQkJICovCi0JCQkJ YWxscGFydHJlbGlkcyA9IGFkZF9wYXJ0X3JlbGlkcyhhbGxwYXJ0cmVsaWRzLCBwYXJ0cmVsaWRz KTsKLQkJCQkvKiBBbHNvIHJlY29yZCB0aGUgc3VicGxhbiBpbiByZWxpZF9zdWJwbGFuX21hcFtd ICovCi0JCQkJLyogTm8gZHVwbGljYXRlcyBwbGVhc2UgKi8KLQkJCQlBc3NlcnQocmVsaWRfc3Vi cGxhbl9tYXBbcGF0aHJlbC0+cmVsaWRdID09IDApOwotCQkJCXJlbGlkX3N1YnBsYW5fbWFwW3Bh dGhyZWwtPnJlbGlkXSA9IGk7Ci0JCQl9Ci0JCX0KKwkJLyogTm8gZHVwbGljYXRlcyBwbGVhc2Ug Ki8KKwkJQXNzZXJ0KHJlbGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9PSAwKTsKKwkJ cmVsaWRfc3VicGxhbl9tYXBbcGF0aHJlbC0+cmVsaWRdID0gaTsKIAkJaSsrOwogCX0KIApAQCAt MzYyLDYzICszMTksNiBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAlyZXR1cm4gcHJ1bmVpbmZvOwogfQogCi0vKgot ICogYWRkX3BhcnRfcmVsaWRzCi0gKgkJQWRkIG5ldyBpbmZvIHRvIGEgbGlzdCBvZiBCaXRtYXBz ZXRzIG9mIHBhcnRpdGlvbmVkIHJlbGlkcy4KLSAqCi0gKiBXaXRoaW4gJ2FsbHBhcnRyZWxpZHMn LCB0aGVyZSBpcyBvbmUgQml0bWFwc2V0IGZvciBlYWNoIHRvcG1vc3QgcGFyZW50Ci0gKiBwYXJ0 aXRpb25lZCByZWwuICBFYWNoIEJpdG1hcHNldCBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiB0 aGUgdG9wbW9zdAotICogcGFyZW50IGFzIHdlbGwgYXMgaXRzIHJlbGV2YW50IG5vbi1sZWFmIGNo aWxkIHBhcnRpdGlvbnMuICBTaW5jZSAoYnkKLSAqIGNvbnN0cnVjdGlvbiBvZiB0aGUgcmFuZ2V0 YWJsZSBsaXN0KSBwYXJlbnQgcGFydGl0aW9ucyBtdXN0IGhhdmUgbG93ZXIKLSAqIFJUIGluZGV4 ZXMgdGhhbiB0aGVpciBjaGlsZHJlbiwgd2UgY2FuIGRpc3Rpbmd1aXNoIHRoZSB0b3Btb3N0IHBh cmVudAotICogYXMgYmVpbmcgdGhlIGxvd2VzdCBzZXQgYml0IGluIHRoZSBCaXRtYXBzZXQuCi0g KgotICogJ3BhcnRyZWxpZHMnIGNvbnRhaW5zIHRoZSBSVCBpbmRleGVzIG9mIGEgcGFyZW50IHBh cnRpdGlvbmVkIHJlbCwgYW5kCi0gKiBwb3NzaWJseSBzb21lIG5vbi1sZWFmIGNoaWxkcmVuLCB0 aGF0IGFyZSBuZXdseSBpZGVudGlmaWVkIGFzIHBhcmVudHMgb2YKLSAqIHNvbWUgc3VicGF0aCBy ZWwgcGFzc2VkIHRvIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbygpLiAgVGhlc2UgYXJlIGFkZGVk Ci0gKiB0byBhbiBhcHByb3ByaWF0ZSBtZW1iZXIgb2YgJ2FsbHBhcnRyZWxpZHMnLgotICoKLSAq IE5vdGUgdGhhdCB0aGUgbGlzdCBjb250YWlucyBvbmx5IFJUIGluZGV4ZXMgb2YgcGFydGl0aW9u ZWQgdGFibGVzIHRoYXQKLSAqIGFyZSBwYXJlbnRzIG9mIHNvbWUgc2Nhbi1sZXZlbCByZWxhdGlv biBhcHBlYXJpbmcgaW4gdGhlICdzdWJwYXRocycgdGhhdAotICogbWFrZV9wYXJ0aXRpb25fcHJ1 bmVpbmZvKCkgaXMgZGVhbGluZyB3aXRoLiAgQWxzbywgInRvcG1vc3QiIHBhcmVudHMgYXJlCi0g KiBub3QgYWxsb3dlZCB0byBiZSBoaWdoZXIgdGhhbiB0aGUgJ3BhcmVudHJlbCcgYXNzb2NpYXRl ZCB3aXRoIHRoZSBhcHBlbmQKLSAqIHBhdGguICBJbiB0aGlzIHdheSwgd2UgYXZvaWQgZXhwZW5k aW5nIGN5Y2xlcyBvbiBwYXJ0aXRpb25lZCByZWxzIHRoYXQKLSAqIGNhbid0IGNvbnRyaWJ1dGUg dXNlZnVsIHBydW5pbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBwcm9ibGVtIGF0IGhhbmQuCi0gKiAo SXQgaXMgcG9zc2libGUgZm9yICdwYXJlbnRyZWwnIHRvIGJlIGEgY2hpbGQgcGFydGl0aW9uZWQg dGFibGUsIGFuZCBpdAotICogaXMgYWxzbyBwb3NzaWJsZSBmb3Igc2Nhbi1sZXZlbCByZWxhdGlv bnMgdG8gYmUgY2hpbGQgcGFydGl0aW9uZWQgdGFibGVzCi0gKiByYXRoZXIgdGhhbiBsZWFmIHBh cnRpdGlvbnMuICBIZW5jZSB3ZSBtdXN0IGNvbnN0cnVjdCB0aGlzIHJlbGF0aW9uIHNldAotICog d2l0aCByZWZlcmVuY2UgdG8gdGhlIHBhcnRpY3VsYXIgYXBwZW5kIHBhdGggd2UncmUgZGVhbGlu ZyB3aXRoLCByYXRoZXIKLSAqIHRoYW4gbG9va2luZyBhdCB0aGUgZnVsbCBwYXJ0aXRpb25pbmcg c3RydWN0dXJlIHJlcHJlc2VudGVkIGluIHRoZQotICogUmVsT3B0SW5mb3MuKQotICovCi1zdGF0 aWMgTGlzdCAqCi1hZGRfcGFydF9yZWxpZHMoTGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0 ICpwYXJ0cmVsaWRzKQotewotCUluZGV4CQl0YXJnZXRwYXJ0OwotCUxpc3RDZWxsICAgKmxjOwot Ci0JLyogV2UgY2FuIGVhc2lseSBnZXQgdGhlIGxvd2VzdCBzZXQgYml0IHRoaXMgd2F5OiAqLwot CXRhcmdldHBhcnQgPSBibXNfbmV4dF9tZW1iZXIocGFydHJlbGlkcywgLTEpOwotCUFzc2VydCh0 YXJnZXRwYXJ0ID4gMCk7Ci0KLQkvKiBMb29rIGZvciBhIG1hdGNoaW5nIHRvcG1vc3QgcGFyZW50 ICovCi0JZm9yZWFjaChsYywgYWxscGFydHJlbGlkcykKLQl7Ci0JCUJpdG1hcHNldCAgKmN1cnJw YXJ0cmVsaWRzID0gKEJpdG1hcHNldCAqKSBsZmlyc3QobGMpOwotCQlJbmRleAkJY3VycnRhcmdl dCA9IGJtc19uZXh0X21lbWJlcihjdXJycGFydHJlbGlkcywgLTEpOwotCi0JCWlmICh0YXJnZXRw YXJ0ID09IGN1cnJ0YXJnZXQpCi0JCXsKLQkJCS8qIEZvdW5kIGEgbWF0Y2gsIHNvIGFkZCBhbnkg bmV3IFJUIGluZGV4ZXMgdG8gdGhpcyBoaWVyYXJjaHkgKi8KLQkJCWN1cnJwYXJ0cmVsaWRzID0g Ym1zX2FkZF9tZW1iZXJzKGN1cnJwYXJ0cmVsaWRzLCBwYXJ0cmVsaWRzKTsKLQkJCWxmaXJzdChs YykgPSBjdXJycGFydHJlbGlkczsKLQkJCXJldHVybiBhbGxwYXJ0cmVsaWRzOwotCQl9Ci0JfQot CS8qIE5vIG1hdGNoLCBzbyBhZGQgdGhlIG5ldyBwYXJ0aXRpb24gaGllcmFyY2h5IHRvIHRoZSBs aXN0ICovCi0JcmV0dXJuIGxhcHBlbmQoYWxscGFydHJlbGlkcywgcGFydHJlbGlkcyk7Ci19Ci0K IC8qCiAgKiBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbwogICoJCUJ1aWxkIGEgTGlzdCBv ZiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mb3MsIG9uZSBmb3IgZWFjaCBpbnRlcmVzdGluZwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggMTBjNWNkYTE2OS4uNzRhNDcxZTNlMyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oCkBAIC02MDEsNiArNjAxLDcgQEAgZXhlY19ydF9mZXRjaChJbmRleCBy dGksIEVTdGF0ZSAqZXN0YXRlKQogZXh0ZXJuIFJlbGF0aW9uIEV4ZWNHZXRSYW5nZVRhYmxlUmVs YXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSk7CiBleHRlcm4gdm9pZCBFeGVjSW5pdFJl c3VsdFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LAogCQkJCQkJCQkgICBJbmRleCBydGkpOworZXh0ZXJuIHZvaWQgRXhlY0xvY2tBcHBlbmROb25M ZWFmUGFydGl0aW9ucyhFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqYWxscGFydHJlbGlkcyk7CiAKIGV4 dGVybiBpbnQJZXhlY3V0b3JfZXJycG9zaXRpb24oRVN0YXRlICplc3RhdGUsIGludCBsb2NhdGlv bik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMWI3ODdmZTAzMS4uN2E1ZjNiYTYyNSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGxhbm5vZGVzLmgKQEAgLTI2Nyw2ICsyNjcsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBw ZW5kCiAJTGlzdAkgICAqYXBwZW5kcGxhbnM7CiAJaW50CQkJbmFzeW5jcGxhbnM7CS8qICMgb2Yg YXN5bmNocm9ub3VzIHBsYW5zICovCiAKKwkvKgorCSAqIFJUSXMgb2YgYWxsIHBhcnRpdGlvbmVk IHRhYmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQorCSAqIGFwcGVuZHBsYW5zLiBU aGUgbGlzdCBjb250YWlucyBhIGJpdG1hcHNldCBmb3IgZXZlcnkgcGFydGl0aW9uIHRyZWUKKwkg KiBjb3ZlcmVkIGJ5IHRoaXMgQXBwZW5kLgorCSAqLworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHM7 CisKIAkvKgogCSAqIEFsbCAnYXBwZW5kcGxhbnMnIHByZWNlZGluZyB0aGlzIGluZGV4IGFyZSBu b24tcGFydGlhbCBwbGFucy4gQWxsCiAJICogJ2FwcGVuZHBsYW5zJyBmcm9tIHRoaXMgaW5kZXgg b253YXJkcyBhcmUgcGFydGlhbCBwbGFucy4KQEAgLTI5MSw2ICsyOTgsMTMgQEAgdHlwZWRlZiBz dHJ1Y3QgTWVyZ2VBcHBlbmQKIAogCUxpc3QJICAgKm1lcmdlcGxhbnM7CiAKKwkvKgorCSAqIFJU SXMgb2YgYWxsIHBhcnRpdGlvbmVkIHRhYmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBi eQorCSAqIG1lcmdlcGxhbnMuIFRoZSBsaXN0IGNvbnRhaW5zIGEgYml0bWFwc2V0IGZvciBldmVy eSBwYXJ0aXRpb24gdHJlZQorCSAqIGNvdmVyZWQgYnkgdGhpcyBNZXJnZUFwcGVuZC4KKwkgKi8K KwlMaXN0CSAgICphbGxwYXJ0cmVsaWRzOworCiAJLyogdGhlc2UgZmllbGRzIGFyZSBqdXN0IGxp a2UgdGhlIHNvcnQta2V5IGluZm8gaW4gc3RydWN0IFNvcnQ6ICovCiAKIAkvKiBudW1iZXIgb2Yg c29ydC1rZXkgY29sdW1ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Fw cGVuZGluZm8uaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZvLmgKaW5kZXggYTA1 ZjkxZjc3ZC4uMTYyMWE3MzE5YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Fw cGVuZGluZm8uaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCkBAIC00 Niw1ICs0Niw4IEBAIGV4dGVybiB2b2lkIGFkZF9yb3dfaWRlbnRpdHlfY29sdW1ucyhQbGFubmVy SW5mbyAqcm9vdCwgSW5kZXggcnRpbmRleCwKIAkJCQkJCQkJCSBSYW5nZVRibEVudHJ5ICp0YXJn ZXRfcnRlLAogCQkJCQkJCQkJIFJlbGF0aW9uIHRhcmdldF9yZWxhdGlvbik7CiBleHRlcm4gdm9p ZCBkaXN0cmlidXRlX3Jvd19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KTsKK2V4dGVy biBMaXN0ICphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhQbGFubmVySW5mbyAqcm9vdCwg UGF0aCAqc3VicGF0aCwKKwkJCQkJCQkgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKKwkJCQkJCQkg IExpc3QgKmFsbHBhcnRyZWxpZHMpOwogCiAjZW5kaWYJCQkJCQkJLyogQVBQRU5ESU5GT19IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggYi9zcmMv aW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKaW5kZXggODYzNmUwNGUzNy4uY2FhNzc0 YTExMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCisr KyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaApAQCAtNzMsNyArNzMsOCBA QCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUNvbnRleHQKIGV4dGVybiBQYXJ0aXRpb25Q cnVuZUluZm8gKm1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJv b3QsCiAJCQkJCQkJCQkJCQkJc3RydWN0IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJ CQkJCQlMaXN0ICpzdWJwYXRocywKLQkJCQkJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworCQkJ CQkJCQkJCQkJCUxpc3QgKnBydW5lcXVhbCwKKwkJCQkJCQkJCQkJCQlMaXN0ICphbGxwYXJ0cmVs aWRzKTsKIGV4dGVybiBCaXRtYXBzZXQgKnBydW5lX2FwcGVuZF9yZWxfcGFydGl0aW9ucyhzdHJ1 Y3QgUmVsT3B0SW5mbyAqcmVsKTsKIGV4dGVybiBCaXRtYXBzZXQgKmdldF9tYXRjaGluZ19wYXJ0 aXRpb25zKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIExpc3Qg KnBydW5pbmdfc3RlcHMpOwotLSAKMi4zNS4zCgo= --0000000000006c6975060667113b Content-Type: application/octet-stream; name="v48-0008-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v48-0008-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln2wv9sq0 RnJvbSBmZWY0NDU3ZTI5NGJjYzZiNDhhOTEwZjE0ODgxNmIyZDE2MzkwNWVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDoxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4 IDgvOF0gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVT dGF0ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVu IHRoZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBm ZXcgYXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1 bmluZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyB0aG91c2FuZHMgb2YgcGFydGl0 aW9uIHN1YnBsYW5zLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdr TVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICB8IDkgKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDMgKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaCAgICB8IDIgKysKIDMgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAyODA0ZWM3MGYxLi5k NTU5YzFkZTYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTE2NDksMTIgKzE2NDksMTMg QEAgRXhlY0Nsb3NlUmVzdWx0UmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKQogdm9pZAogRXhlY0Ns b3NlUmFuZ2VUYWJsZVJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSkKIHsKLQlpbnQJCQlpOworCUxp c3RDZWxsICpsYzsKIAotCWZvciAoaSA9IDA7IGkgPCBlc3RhdGUtPmVzX3JhbmdlX3RhYmxlX3Np emU7IGkrKykKKwlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX29wZW5lZF9yZWxhdGlvbnMpCiAJewot CQlpZiAoZXN0YXRlLT5lc19yZWxhdGlvbnNbaV0pCi0JCQl0YWJsZV9jbG9zZShlc3RhdGUtPmVz X3JlbGF0aW9uc1tpXSwgTm9Mb2NrKTsKKwkJUmVsYXRpb24gcmVsID0gbGZpcnN0KGxjKTsKKwor CQl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCmluZGV4IDJiN2EwOGM5YmEuLjFkZmVmNDQ0OTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCkBAIC04MjIsNiArODIyLDkgQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUg KmVzdGF0ZSwgSW5kZXggcnRpKQogCQl9CiAKIAkJZXN0YXRlLT5lc19yZWxhdGlvbnNbcnRpIC0g MV0gPSByZWw7CisJCWlmIChyZWwgIT0gTlVMTCkKKwkJCWVzdGF0ZS0+ZXNfb3BlbmVkX3JlbGF0 aW9ucyA9IGxhcHBlbmQoZXN0YXRlLT5lc19vcGVuZWRfcmVsYXRpb25zLAorCQkJCQkJCQkJCQkJ ICByZWwpOwogCX0KIAogCXJldHVybiByZWw7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGJiNTcz NGVkYjUuLjhiYmUxZjZiMTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MTksNiArNjE5LDgg QEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJSW5kZXgJCWVzX3JhbmdlX3RhYmxlX3NpemU7CS8q IHNpemUgb2YgdGhlIHJhbmdlIHRhYmxlIGFycmF5cyAqLwogCVJlbGF0aW9uICAgKmVzX3JlbGF0 aW9uczsJLyogQXJyYXkgb2YgcGVyLXJhbmdlLXRhYmxlLWVudHJ5IFJlbGF0aW9uCiAJCQkJCQkJ CSAqIHBvaW50ZXJzLCBvciBOVUxMIGlmIG5vdCB5ZXQgb3BlbmVkICovCisJTGlzdAkgICAqZXNf b3BlbmVkX3JlbGF0aW9uczsgLyogTGlzdCBvZiBub24tTlVMTCBlbnRyaWVzIGluCisJCQkJCQkJ CQkgICogZXNfcmVsYXRpb25zIGluIG5vIHNwZWNpZmljIG9yZGVyICovCiAJc3RydWN0IEV4ZWNS b3dNYXJrICoqZXNfcm93bWFya3M7CS8qIEFycmF5IG9mIHBlci1yYW5nZS10YWJsZS1lbnRyeQog CQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAq ZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICovCi0tIAoyLjM1 LjMKCg== --0000000000006c6975060667113b Content-Type: application/octet-stream; name="v48-0005-Assert-that-relations-needing-their-permissions-.patch" Content-Disposition: attachment; filename="v48-0005-Assert-that-relations-needing-their-permissions-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln2wv9t33 RnJvbSBmZjFkZmJiMGRmNmQ4NmFjYjVkNGQ2ZGFiZWU2MjNkNzRkZjE3YWI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgMjUgU2VwIDIwMjMgMTE6NTI6MDIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 OCA1LzhdIEFzc2VydCB0aGF0IHJlbGF0aW9ucyBuZWVkaW5nIHRoZWlyIHBlcm1pc3Npb25zCiBj aGVja2VkIGFyZSBsb2NrZWQKCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAg ICAgfCAxMSArKysrKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jICAgICB8IDQ1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYyB8IDIxICsrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3Iu aCAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oICAgICAgIHwg IDEgKwogNSBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKaW5kZXggNTc1NTMzNmFiZC4uZmZjNjJlMzc5YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jCkBAIC02MjYsNiArNjI2LDE3IEBAIEV4ZWNDaGVja1Blcm1pc3Npb25zKExpc3QgKnJhbmdl VGFibGUsIExpc3QgKnJ0ZXBlcm1pbmZvcywKIAkJCQkgICAocnRlLT5ydGVraW5kID09IFJURV9T VUJRVUVSWSAmJgogCQkJCQlydGUtPnJlbGtpbmQgPT0gUkVMS0lORF9WSUVXKSk7CiAKKwkJCS8q CisJCQkgKiBSZWxhdGlvbnMgd2hvc2UgcGVybWlzc2lvbnMgbmVlZCB0byBiZSBjaGVja2VkIG11 c3QgYWxyZWFkeQorCQkJICogaGF2ZSBiZWVuIGxvY2tlZCBieSB0aGUgcGFyc2VyIG9yIGJ5IEdl dENhY2hlZFBsYW4oKSBpZiBhCisJCQkgKiBjYWNoZWQgcGxhbiBpcyBiZWluZyBleGVjdXRlZC4K KwkJCSAqCisJCQkgKiBYWFggTWF5YmUgd2Ugc2hvdWxkIHdlIHNraXAgY2FsbGluZyBFeGVjQ2hl Y2tQZXJtaXNzaW9ucyBmcm9tCisJCQkgKiBJbml0UGxhbiBpbiBhIHBhcmFsbGVsIHdvcmtlci4K KwkJCSAqLworCQkJQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIoKSB8fAorCQkJCSAgIENoZWNrUmVs TG9ja2VkQnlNZShydGUtPnJlbGlkLCBBY2Nlc3NTaGFyZUxvY2ssIHRydWUpKTsKKwogCQkJKHZv aWQpIGdldFJURVBlcm1pc3Npb25JbmZvKHJ0ZXBlcm1pbmZvcywgcnRlKTsKIAkJCS8qIE1hbnkt dG8tb25lIG1hcHBpbmcgbm90IGFsbG93ZWQgKi8KIAkJCUFzc2VydCghYm1zX2lzX21lbWJlcihy dGUtPnBlcm1pbmZvaW5kZXgsIGluZGV4c2V0KSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwppbmRl eCBlZTliODlhNjcyLi5jODA3ZTljZGNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvbG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKQEAgLTI3 LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0 b3JhZ2Uvc2ludmFsYWR0LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKIAogCiAvKgpAQCAtMzY0LDYgKzM2NSw1MCBAQCBDaGVja1JlbGF0 aW9uTG9ja2VkQnlNZShSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wg b3JzdHJvbmdlcikKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKgkJQ2hlY2tSZWxMb2NrZWRC eU1lCisgKgorICogUmV0dXJucyB0cnVlIGlmIGN1cnJlbnQgdHJhbnNhY3Rpb24gaG9sZHMgYSBs b2NrIG9uIHRoZSBnaXZlbiByZWxhdGlvbiBvZgorICogbW9kZSAnbG9ja21vZGUnLiAgSWYgJ29y c3Ryb25nZXInIGlzIHRydWUsIGEgc3Ryb25nZXIgbG9ja21vZGUgaXMgYWxzbyBPSy4KKyAqICgi U3Ryb25nZXIiIGlzIGRlZmluZWQgYXMgIm51bWVyaWNhbGx5IGhpZ2hlciIsIHdoaWNoIGlzIGEg Yml0CisgKiBzZW1hbnRpY2FsbHkgZHViaW91cyBidXQgaXMgT0sgZm9yIHRoZSBwdXJwb3NlcyB3 ZSB1c2UgdGhpcyBmb3IuKQorICovCitib29sCitDaGVja1JlbExvY2tlZEJ5TWUoT2lkIHJlbGlk LCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBvcnN0cm9uZ2VyKQoreworCU9pZAkJCWRiSWQgPSBn ZXRfcmVsX3JlbGlzc2hhcmVkKHJlbGlkKSA/IEludmFsaWRPaWQgOiBNeURhdGFiYXNlSWQ7CisJ TE9DS1RBRwkJdGFnOworCisJU0VUX0xPQ0tUQUdfUkVMQVRJT04odGFnLCBkYklkLCByZWxpZCk7 CisKKwlpZiAoTG9ja0hlbGRCeU1lKCZ0YWcsIGxvY2ttb2RlKSkKKwkJcmV0dXJuIHRydWU7CisK KwlpZiAob3JzdHJvbmdlcikKKwl7CisJCUxPQ0tNT0RFCXNsb2NrbW9kZTsKKworCQlmb3IgKHNs b2NrbW9kZSA9IGxvY2ttb2RlICsgMTsKKwkJCSBzbG9ja21vZGUgPD0gTWF4TG9ja01vZGU7CisJ CQkgc2xvY2ttb2RlKyspCisJCXsKKwkJCWlmIChMb2NrSGVsZEJ5TWUoJnRhZywgc2xvY2ttb2Rl KSkKKwkJCXsKKyNpZmRlZiBOT1RfVVNFRAorCQkJCS8qIFNvbWV0aW1lcyB0aGlzIG1pZ2h0IGJl IHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzICovCisJCQkJZWxvZyhXQVJOSU5HLCAibG9j ayBtb2RlICVzIHN1YnN0aXR1dGVkIGZvciAlcyBvbiByZWxhdGlvbiAlcyIsCisJCQkJCSBHZXRM b2NrbW9kZU5hbWUodGFnLmxvY2t0YWdfbG9ja21ldGhvZGlkLCBzbG9ja21vZGUpLAorCQkJCQkg R2V0TG9ja21vZGVOYW1lKHRhZy5sb2NrdGFnX2xvY2ttZXRob2RpZCwgbG9ja21vZGUpLAorCQkJ CQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKKyNlbmRpZgorCQkJCXJldHVy biB0cnVlOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICoJCUxv Y2tIYXNXYWl0ZXJzUmVsYXRpb24KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmlu ZGV4IGZjNmQyNjdlNDQuLjI3MjVkMDIzMTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNo ZS5jCkBAIC0yMDk1LDYgKzIwOTUsMjcgQEAgZ2V0X3JlbF9wZXJzaXN0ZW5jZShPaWQgcmVsaWQp CiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIGdldF9yZWxfcmVsaXNzaGFyZWQKKyAqCisg KgkJUmV0dXJucyBpZiB0aGUgZ2l2ZW4gcmVsYXRpb24gaXMgc2hhcmVkIG9yIG5vdAorICovCiti b29sCitnZXRfcmVsX3JlbGlzc2hhcmVkKE9pZCByZWxpZCkKK3sKKwlIZWFwVHVwbGUJdHA7CisJ Rm9ybV9wZ19jbGFzcyByZWx0dXA7CisJYm9vbAkJcmVzdWx0OworCisJdHAgPSBTZWFyY2hTeXND YWNoZTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7CisJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKHRwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0 aW9uICV1IiwgcmVsaWQpOworCXJlbHR1cCA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHAp OworCXJlc3VsdCA9IHJlbHR1cC0+cmVsaXNzaGFyZWQ7CisJUmVsZWFzZVN5c0NhY2hlKHRwKTsK KworCXJldHVybiByZXN1bHQ7Cit9CiAKIC8qCQkJCS0tLS0tLS0tLS0gVFJBTlNGT1JNIENBQ0hF IC0tLS0tLS0tLS0JCQkJCQkgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9s bWdyLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaAppbmRleCA0ZWU5MWUzY2Y5Li41OThi ZjI2ODhhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaAorKysgYi9zcmMv aW5jbHVkZS9zdG9yYWdlL2xtZ3IuaApAQCAtNDgsNiArNDgsNyBAQCBleHRlcm4gYm9vbCBDb25k aXRpb25hbExvY2tSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUp OwogZXh0ZXJuIHZvaWQgVW5sb2NrUmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RF IGxvY2ttb2RlKTsKIGV4dGVybiBib29sIENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKFJlbGF0aW9u IHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCQkJCQkJCWJvb2wgb3JzdHJvbmdlcik7 CitleHRlcm4gYm9vbCBDaGVja1JlbExvY2tlZEJ5TWUoT2lkIHJlbGlkLCBMT0NLTU9ERSBsb2Nr bW9kZSwgYm9vbCBvcnN0cm9uZ2VyKTsKIGV4dGVybiBib29sIExvY2tIYXNXYWl0ZXJzUmVsYXRp b24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAogZXh0ZXJuIHZvaWQg TG9ja1JlbGF0aW9uSWRGb3JTZXNzaW9uKExvY2tSZWxJZCAqcmVsaWQsIExPQ0tNT0RFIGxvY2tt b2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggZjVmZGJmZTExNi4uYTAyNGU1ZGNkMCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvbHN5c2NhY2hlLmgKQEAgLTE0MCw2ICsxNDAsNyBAQCBleHRlcm4gY2hhciBnZXRfcmVs X3JlbGtpbmQoT2lkIHJlbGlkKTsKIGV4dGVybiBib29sIGdldF9yZWxfcmVsaXNwYXJ0aXRpb24o T2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90YWJsZXNwYWNlKE9pZCByZWxpZCk7CiBl eHRlcm4gY2hhciBnZXRfcmVsX3BlcnNpc3RlbmNlKE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBn ZXRfcmVsX3JlbGlzc2hhcmVkKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1f ZnJvbXNxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBP aWQJZ2V0X3RyYW5zZm9ybV90b3NxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5 cGVzKTsKIGV4dGVybiBib29sIGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlkKTsKLS0gCjIuMzUu MwoK --0000000000006c6975060667113b Content-Type: application/octet-stream; name="v48-0004-Teach-the-executor-to-lock-child-tables-in-some-.patch" Content-Disposition: attachment; filename="v48-0004-Teach-the-executor-to-lock-child-tables-in-some-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln2wv9t54 RnJvbSA0OTc4N2IzYzBlZDJhMTRjYTVhNjhmMzNiNDdlODkyY2Y5MGI5MTNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMjIgU2VwIDIwMjMgMTg6MTc6MTUgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 OCA0LzhdIFRlYWNoIHRoZSBleGVjdXRvciB0byBsb2NrIGNoaWxkIHRhYmxlcyBpbiBzb21lIGNh c2VzCgpBbiB1cGNvbWluZyBjb21taXQgd2lsbCBtb3ZlIHRoZSBsb2NraW5nIG9mIGNoaWxkIHRh YmxlcyByZWZlcmVuY2VkCmluIGEgY2FjaGVkIHBsYW4gdHJlZSBmcm9tIEdldENhY2hlZFBsYW4o KSB0byB0aGUgZXhlY3V0b3IKaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBsYW4gdHJlZSBpbiBFeGVj dXRvclN0YXJ0KCkuICBUaGlzIGNvbW1pdAp0ZWFjaGVzIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRp b24oKSB0byBsb2NrIGNoaWxkIHRhYmxlcyBpZgpFU3RhdGUuZXNfY2FjaGVkcGxhbiBwb2ludHMg dG8gYSBDYWNoZWRQbGFuLgoKVGhlIGV4ZWN1dG9yIG11c3Qgbm93IGRlYWwgd2l0aCB0aGUgY2Fz ZXMgd2hlcmUgYW4gdW5sb2NrZWQgY2hpbGQKdGFibGUgbWlnaHQgaGF2ZSBiZWVuIGNvbmN1cnJl bnRseSBkcm9wcGVkLCBzbyB0aGlzIG1vZGlmaWVzCkV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24o KSB0byB1c2UgdHJ5X3RhYmxlX29wZW4oKS4gIEFsbCBvZiBpdHMKY2FsbGVycyAoYW5kIHRob3Nl IG9mIEV4ZWNPcGVuU2NhblJlbGF0aW9uKCkgdGhhdCBjYWxscyBpdCkgbXVzdApub3cgYWNjb3Vu dCBmb3IgdGhlIGNoaWxkIHRhYmxlIGRpc2FwcGVhcmluZywgd2hpY2ggbWVhbnMgdG8gYWJvcnQK aW5pdGlhbGl6aW5nIHRoZSB0YWJsZSdzIFNjYW4gbm9kZSBpbiB0aGUgbWlkZGxlLgoKRXhlY0dl dFJhbmdlVGFibGVSZWxhdGlvbigpIG5vdyBleGFtaW5lcyBpbkZyb21DbCBmaWVsZCBvZiBhbiBS VEUKdG8gZGV0ZXJtaW5lIHRoYXQgYSBnaXZlbiByYW5nZSB0YWJsZSByZWxhdGlvbiBpcyBhIGNo aWxkIHRhYmxlLCBzbwp0aGlzIGNvbW1pdCBhbHNvIG1ha2VzIHRoZSBwbGFubmVyIHNldCBpbkZy b21DbCB0byBmYWxzZSBpbiB0aGUKY2hpbGQgdGFibGVzJyBSVEVzIHRoYXQgaXQgbWFudWZhY3R1 cmVzLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdrTVNnZTZUZ0M5 S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb21rCi0tLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FICAgICAgICAgIHwgMzYgKysrKysrKysrKysrKysrKysr KysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgfCAgMiArKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAgIHwgNDEgKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jIHwgIDcgKysr KysKIHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgICAgICAgICB8ICA3ICsrLS0tCiBzcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgfCAgOCArKysrLS0KIDYgZmlsZXMgY2hh bmdlZCwgODQgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCmlu ZGV4IDE3Nzc1YTQ5ZTIuLjZkMjI0MDYxMGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKQEAgLTI4MCw2ICsy ODAsMzQgQEAgYXJlIHR5cGljYWxseSByZXNldCB0byBlbXB0eSBvbmNlIHBlciB0dXBsZS4gIFBl ci10dXBsZSBjb250ZXh0cyBhcmUgdXN1YWxseQogYXNzb2NpYXRlZCB3aXRoIEV4cHJDb250ZXh0 cywgYW5kIGNvbW1vbmx5IGVhY2ggUGxhblN0YXRlIG5vZGUgaGFzIGl0cyBvd24KIEV4cHJDb250 ZXh0IHRvIGV2YWx1YXRlIGl0cyBxdWFsIGFuZCB0YXJnZXRsaXN0IGV4cHJlc3Npb25zIGluLgog CitSZWxhdGlvbiBMb2NraW5nCistLS0tLS0tLS0tLS0tLS0tCisKK1R5cGljYWxseSwgd2hlbiB0 aGUgZXhlY3V0b3IgaW5pdGlhbGl6ZXMgYSBwbGFuIHRyZWUgZm9yIGV4ZWN1dGlvbiwgaXQgZG9l c24ndAorbG9jayBub24taW5kZXggcmVsYXRpb25zIGlmIHRoZSBwbGFuIHRyZWUgaXMgZnJlc2hs eSBnZW5lcmF0ZWQgYW5kIG5vdCBkZXJpdmVkCitmcm9tIGEgQ2FjaGVkUGxhbi4gVGhpcyBpcyBi ZWNhdXNlIHN1Y2ggbG9ja3MgaGF2ZSBhbHJlYWR5IGJlZW4gZXN0YWJsaXNoZWQKK2R1cmluZyB0 aGUgcXVlcnkncyBwYXJzaW5nLCByZXdyaXRpbmcsIGFuZCBwbGFubmluZyBwaGFzZXMuIEhvd2V2 ZXIsIHdpdGggYQorY2FjaGVkIHBsYW4gdHJlZSwgdGhlcmUgY2FuIGJlIHJlbGF0aW9ucyB0aGF0 IHJlbWFpbiB1bmxvY2tlZC4gVGhlIGZ1bmN0aW9uCitHZXRDYWNoZWRQbGFuKCkgbG9ja3MgcmVs YXRpb25zIGV4aXN0aW5nIGluIHRoZSBxdWVyeSdzIHJhbmdlIHRhYmxlIHByZS1wbGFubmluZwor YnV0IGRvZXNuJ3QgYWNjb3VudCBmb3IgdGhvc2UgYWRkZWQgZHVyaW5nIHRoZSBwbGFubmluZyBw aGFzZS4gQ29uc2VxdWVudGx5LAoraW5oZXJpdGFuY2UgY2hpbGQgdGFibGVzLCBpbnRyb2R1Y2Vk IHRvIHRoZSBxdWVyeSdzIHJhbmdlIHRhYmxlIGR1cmluZyBwbGFubmluZywKK3dvbid0IGJlIGxv Y2tlZCB3aGVuIHRoZSBjYWNoZWQgcGxhbiByZWFjaGVzIHRoZSBleGVjdXRvci4KKworVGhlIGRl Y2lzaW9uIHRvIGRlZmVyIGxvY2tpbmcgY2hpbGQgdGFibGVzIHdpdGggR2V0Q2FjaGVkUGxhbigp IGFyaXNlcyBmcm9tIHRoZQorZmFjdCB0aGF0IG5vdCBhbGwgbWlnaHQgYmUgYWNjZXNzZWQgZHVy aW5nIHBsYW4gZXhlY3V0aW9uLiBGb3IgaW5zdGFuY2UsIGlmCitjaGlsZCB0YWJsZXMgYXJlIHBh cnRpdGlvbnMsIHNvbWUgbWlnaHQgYmUgb21pdHRlZCBkdWUgdG8gcHJ1bmluZyBhdAorZXhlY3V0 aW9uLWluaXRpYWxpemF0aW9uLXRpbWUuIFRodXMsIHRoZSByZXNwb25zaWJpbGl0eSBvZiBsb2Nr aW5nIHRoZXNlIGNoaWxkCit0YWJsZXMgaXMgcHVzaGVkIHRvIGV4ZWN1dGlvbi1pbml0aWFsaXph dGlvbi10aW1lLCB0YWtpbmcgcGxhY2UgaW4gRXhlY0luaXROb2RlKCkKK2ZvciBwbGFuIG5vZGVz IGVuY29tcGFzc2luZyB0aGVzZSB0YWJsZXMuCisKK1RoaXMgYXBwcm9hY2ggb3BlbnMgYSB3aW5k b3cgd2hlcmUgYSBjYWNoZWQgcGxhbiB0cmVlIHdpdGggY2hpbGQgdGFibGVzIGNvdWxkCitiZWNv bWUgb3V0ZGF0ZWQgaWYgYW5vdGhlciBiYWNrZW5kIG1vZGlmaWVzIHRoZXNlIHRhYmxlcyBiZWZv cmUgRXhlY0luaXROb2RlKCkKK2xvY2tzIHRoZW0uIEdpdmVuIHRoaXMsIHRoZSBleGVjdXRvciBo YXMgdGhlIGFkZGVkIGR1dHkgdG8gY29uZmlybSB0aGUgcGxhbgordHJlZSdzIHZhbGlkaXR5IHdo ZW5ldmVyIGl0IGxvY2tzIGEgY2hpbGQgdGFibGUgcG9zdCBleGVjdXRpb24taW5pdGlhbGl6YXRp b24tCitwcnVuaW5nLiBUaGlzIHZhbGlkYXRpb24gaXMgZG9uZSBieSBjaGVja2luZyB0aGUgQ2Fj aGVkUGxhbi5pc192YWxpZCBhdHRyaWJ1dGUKK29mIHRoZSBDYWNoZWRQbGFuIHByb3ZpZGVkLiBJ ZiB0aGUgcGxhbiB0cmVlIGlzIG91dGRhdGVkIChpc192YWxpZD1mYWxzZSksIHRoZQorZXhlY3V0 b3IgaGFsdHMgYW55IGZ1cnRoZXIgaW5pdGlhbGl6YXRpb24gYW5kIGFsZXJ0cyB0aGUgY2FsbGVy IHRoYXQgdGhleSBzaG91bGQKK3JldHJ5IGV4ZWN1dGlvbiB3aXRoIGFub3RoZXIgZnJlc2hseSBj cmVhdGVkIHBsYW4gdHJlZS4KIAogUXVlcnkgUHJvY2Vzc2luZyBDb250cm9sIEZsb3cKIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMTYsNyArMzQ0LDEzIEBAIFRoaXMgaXMgYSBz a2V0Y2ggb2YgY29udHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKIAlGcmVl UXVlcnlEZXNjCiAKLVBlciBhYm92ZSBjb21tZW50cywgaXQncyBub3QgcmVhbGx5IGNyaXRpY2Fs IGZvciBFeGVjRW5kTm9kZSB0byBmcmVlIGFueQorQXMgbWVudGlvbmVkIGluIHRoZSAiUmVsYXRp b24gTG9ja2luZyIgc2VjdGlvbiwgaWYgdGhlIHBsYW4gdHJlZSBpcyBmb3VuZCB0bworYmUgc3Rh bGUgZHVyaW5nIG9uZSBvZiB0aGUgcmVjdXJzaXZlIGNhbGxzIG9mIEV4ZWNJbml0Tm9kZSgpIGFm dGVyIHRha2luZyBhCitsb2NrIG9uIGEgY2hpbGQgdGFibGUsIHRoZSBjb250cm9sIGlzIGltbW1l ZGlhdGVseSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIG9mCitFeGVjdXRvclN0YXJ0KCksIHdoaWNo IG11c3QgcmVkbyB0aGUgc3RlcHMgZnJvbSBDcmVhdGVRdWVyeURlc2Mgd2l0aCBhIG5ldworcGxh biB0cmVlLgorCitQZXIgYWJvdmUgY29tbWVudHMsIGl0J3Mgbm90IHJlYWxseSBjcml0aWNhbCBm b3IgRXhlY0VuZFBsYW4gdG8gZnJlZSBhbnkKIG1lbW9yeTsgaXQnbGwgYWxsIGdvIGF3YXkgaW4g RnJlZUV4ZWN1dG9yU3RhdGUgYW55d2F5LiAgSG93ZXZlciwgd2UgZG8gbmVlZCB0bwogYmUgY2Fy ZWZ1bCB0byBjbG9zZSByZWxhdGlvbnMsIGRyb3AgYnVmZmVyIHBpbnMsIGV0Yywgc28gd2UgZG8g bmVlZCB0byBzY2FuCiB0aGUgcGxhbiBzdGF0ZSB0cmVlIHRvIGZpbmQgdGhlc2Ugc29ydHMgb2Yg cmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IGViOGE4N2Zk NjMuLjg0OTc4YzU1MjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE5 MjcsNiArMTkyNyw4IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFu c3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJICogZHVyYXRpb24gb2Yg dGhpcyBleGVjdXRvciBydW4uCiAJCQkgKi8KIAkJCXBhcnRyZWwgPSBFeGVjR2V0UmFuZ2VUYWJs ZVJlbGF0aW9uKGVzdGF0ZSwgcGluZm8tPnJ0aW5kZXgpOworCQkJaWYgKHVubGlrZWx5KHBhcnRy ZWwgPT0gTlVMTCkpCisJCQkJcmV0dXJuIE5VTEw7CiAJCQlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQ YXJ0aXRpb25LZXkocGFydHJlbCk7CiAJCQlwYXJ0ZGVzYyA9IFBhcnRpdGlvbkRpcmVjdG9yeUxv b2t1cChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnksCiAJCQkJCQkJCQkJCQlwYXJ0cmVs KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggZjBmNTc0MGMyNi4uMTE3NzczNzA2YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTY5Nyw2ICs2OTcsOCBAQCBFeGVjUmVsYXRp b25Jc1RhcmdldFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBzY2FucmVsaWQpCiAgKgog ICoJCU9wZW4gdGhlIGhlYXAgcmVsYXRpb24gdG8gYmUgc2Nhbm5lZCBieSBhIGJhc2UtbGV2ZWwg c2NhbiBwbGFuIG5vZGUuCiAgKgkJVGhpcyBzaG91bGQgYmUgY2FsbGVkIGR1cmluZyB0aGUgbm9k ZSdzIEV4ZWNJbml0IHJvdXRpbmUuCisgKgorICoJCU5VTEwgaXMgcmV0dXJuZWQgaWYgdGhlIHJl bGF0aW9uIGlzIGZvdW5kIHRvIGhhdmUgYmVlbiBkcm9wcGVkLgogICogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBS ZWxhdGlvbgpAQCAtNzA2LDYgKzcwOCw4IEBAIEV4ZWNPcGVuU2NhblJlbGF0aW9uKEVTdGF0ZSAq ZXN0YXRlLCBJbmRleCBzY2FucmVsaWQsIGludCBlZmxhZ3MpCiAKIAkvKiBPcGVuIHRoZSByZWxh dGlvbi4gKi8KIAlyZWwgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgc2NhbnJl bGlkKTsKKwlpZiAodW5saWtlbHkocmVsID09IE5VTEwpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8q CiAJICogQ29tcGxhaW4gaWYgd2UncmUgYXR0ZW1wdGluZyBhIHNjYW4gb2YgYW4gdW5zY2FubmFi bGUgcmVsYXRpb24sIGV4Y2VwdApAQCAtNzYzLDYgKzc2Nyw5IEBAIEV4ZWNJbml0UmFuZ2VUYWJs ZShFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcGVybUluZm9zKQogICoJ CU9wZW4gdGhlIFJlbGF0aW9uIGZvciBhIHJhbmdlIHRhYmxlIGVudHJ5LCBpZiBub3QgYWxyZWFk eSBkb25lCiAgKgogICogVGhlIFJlbGF0aW9ucyB3aWxsIGJlIGNsb3NlZCBhZ2FpbiBpbiBFeGVj RW5kUGxhbigpLgorICoKKyAqIFJldHVybmVkIHZhbHVlIG1heSBiZSBOVUxMIGlmIHRoZSByZWxh dGlvbiBpcyBhIGNoaWxkIHJlbGF0aW9uIHRoYXQgaXMgbm90CisgKiBhbHJlYWR5IGxvY2tlZC4K ICAqLwogUmVsYXRpb24KIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUs IEluZGV4IHJ0aSkKQEAgLTc3OSw3ICs3ODYsMjggQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlv bihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpKQogCiAJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0g UlRFX1JFTEFUSU9OKTsKIAotCQlpZiAoIUlzUGFyYWxsZWxXb3JrZXIoKSkKKwkJaWYgKElzUGFy YWxsZWxXb3JrZXIoKSB8fAorCQkJKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiAhPSBOVUxMICYmICFy dGUtPmluRnJvbUNsKSkKKwkJeworCQkJLyoKKwkJCSAqIFRha2UgYSBsb2NrIGlmIHdlIGFyZSBh IHBhcmFsbGVsIHdvcmtlciBvciBpZiB0aGlzIGlzIGEgY2hpbGQKKwkJCSAqIHRhYmxlIHJlZmVy ZW5jZWQgaW4gYSBjYWNoZWQgcGxhbi4KKwkJCSAqCisJCQkgKiBQYXJhbGxlbCB3b3JrZXJzIG5l ZWQgdG8gaGF2ZSB0aGVpciBvd24gbG9jYWwgbG9jayBvbiB0aGUKKwkJCSAqIHJlbGF0aW9uLiAg VGhpcyBlbnN1cmVzIHNhbmUgYmVoYXZpb3IgaW4gY2FzZSB0aGUgcGFyZW50IHByb2Nlc3MKKwkJ CSAqIGV4aXRzIGJlZm9yZSB3ZSBkby4KKwkJCSAqCisJCQkgKiBXaGVuIGV4ZWN1dGluZyBhIGNh Y2hlZCBwbGFuLCBjaGlsZCB0YWJsZXMgbXVzdCBiZSBsb2NrZWQKKwkJCSAqIGhlcmUsIGJlY2F1 c2UgcGxhbmNhY2hlLmMgKEdldENhY2hlZFBsYW4oKSkgd291bGQgb25seSBoYXZlCisJCQkgKiBs b2NrZWQgdGFibGVzIG1lbnRpb25lZCBpbiB0aGUgcXVlcnksIHRoYXQgaXMsIHRhYmxlcyB3aG9z ZQorCQkJICogUlRFcycgaW5Gcm9tQ2wgaXMgdHJ1ZS4KKwkJCSAqCisJCQkgKiBOb3RlIHRoYXQg d2UgdXNlIHRyeV90YWJsZV9vcGVuKCkgaGVyZSwgYmVjYXVzZSB3aXRob3V0IGEgbG9jaworCQkJ ICogaGVsZCBvbiB0aGUgcmVsYXRpb24sIGl0IG1heSBoYXZlIGRpc2FwcGVhcmVkIGZyb20gdW5k ZXIgdXMuCisJCQkgKi8KKwkJCXJlbCA9IHRyeV90YWJsZV9vcGVuKHJ0ZS0+cmVsaWQsIHJ0ZS0+ cmVsbG9ja21vZGUpOworCQl9CisJCWVsc2UKIAkJewogCQkJLyoKIAkJCSAqIEluIGEgbm9ybWFs IHF1ZXJ5LCB3ZSBzaG91bGQgYWxyZWFkeSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBsb2NrLApAQCAt NzkyLDE1ICs4MjAsNiBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRl LCBJbmRleCBydGkpCiAJCQlBc3NlcnQocnRlLT5yZWxsb2NrbW9kZSA9PSBBY2Nlc3NTaGFyZUxv Y2sgfHwKIAkJCQkgICBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShyZWwsIHJ0ZS0+cmVsbG9ja21v ZGUsIGZhbHNlKSk7CiAJCX0KLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogSWYgd2UgYXJlIGEg cGFyYWxsZWwgd29ya2VyLCB3ZSBuZWVkIHRvIG9idGFpbiBvdXIgb3duIGxvY2FsCi0JCQkgKiBs b2NrIG9uIHRoZSByZWxhdGlvbi4gIFRoaXMgZW5zdXJlcyBzYW5lIGJlaGF2aW9yIGluIGNhc2Ug dGhlCi0JCQkgKiBwYXJlbnQgcHJvY2VzcyBleGl0cyBiZWZvcmUgd2UgZG8uCi0JCQkgKi8KLQkJ CXJlbCA9IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7Ci0JCX0KIAog CQllc3RhdGUtPmVzX3JlbGF0aW9uc1tydGkgLSAxXSA9IHJlbDsKIAl9CkBAIC04MjMsNiArODQy LDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywKIAlSZWxhdGlvbglyZXN1bHRSZWxhdGlvbkRlc2M7CiAKIAlyZXN1 bHRSZWxhdGlvbkRlc2MgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcnRpKTsK KwlpZiAodW5saWtlbHkocmVzdWx0UmVsYXRpb25EZXNjID09IE5VTEwpKQorCQlyZXR1cm47CiAJ SW5pdFJlc3VsdFJlbEluZm8ocmVzdWx0UmVsSW5mbywKIAkJCQkJICByZXN1bHRSZWxhdGlvbkRl c2MsCiAJCQkJCSAgcnRpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv aW5oZXJpdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jCmluZGV4IDk0 ZGU4NTVhMjIuLjFiMzBjMGZmODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL2luaGVyaXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9pbmhlcml0LmMK QEAgLTQ5Miw2ICs0OTIsMTMgQEAgZXhwYW5kX3NpbmdsZV9pbmhlcml0YW5jZV9jaGlsZChQbGFu bmVySW5mbyAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAqcGFyZW50cnRlLAogCX0KIAllbHNlCiAJCWNo aWxkcnRlLT5pbmggPSBmYWxzZTsKKworCS8qCisJICogRmxhZyBjaGlsZCB0YWJsZXMgYXMgaW5k aXJlY3RseSByZWZlcmVuY2VkIGluIHRoZSBxdWVyeS4gVGhpcyBoZWxwcworCSAqIHRoZSBleGVj dXRvcidzIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oKSByZWNvZ25pemUgdGhlbSBhcworCSAq IGluaGVyaXRhbmNlIGNoaWxkcmVuLgorCSAqLworCWNoaWxkcnRlLT5pbkZyb21DbCA9IGZhbHNl OwogCWNoaWxkcnRlLT5zZWN1cml0eVF1YWxzID0gTklMOwogCiAJLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5j CmluZGV4IDdhMWRmYjYzNjQuLmNmMjY5ZjhjNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAtMzMw NSwxMCArMzMwNSw5IEBAIHRyYW5zZm9ybUxvY2tpbmdDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRl LCBRdWVyeSAqcXJ5LCBMb2NraW5nQ2xhdXNlICpsYywKIAkJLyoKIAkJICogTG9jayBhbGwgcmVn dWxhciB0YWJsZXMgdXNlZCBpbiBxdWVyeSBhbmQgaXRzIHN1YnF1ZXJpZXMuICBXZQogCQkgKiBl eGFtaW5lIGluRnJvbUNsIHRvIGV4Y2x1ZGUgYXV0by1hZGRlZCBSVEVzLCBwYXJ0aWN1bGFybHkg TkVXL09MRAotCQkgKiBpbiBydWxlcy4gIFRoaXMgaXMgYSBiaXQgb2YgYW4gYWJ1c2Ugb2YgYSBt b3N0bHktb2Jzb2xldGUgZmxhZywgYnV0Ci0JCSAqIGl0J3MgY29udmVuaWVudC4gIFdlIGNhbid0 IHJlbHkgb24gdGhlIG5hbWVzcGFjZSBtZWNoYW5pc20gdGhhdCBoYXMKLQkJICogbGFyZ2VseSBy ZXBsYWNlZCBpbkZyb21DbCwgc2luY2UgZm9yIGV4YW1wbGUgd2UgbmVlZCB0byBsb2NrCi0JCSAq IGJhc2UtcmVsYXRpb24gUlRFcyBldmVuIGlmIHRoZXkgYXJlIG1hc2tlZCBieSB1cHBlciBqb2lu cy4KKwkJICogaW4gcnVsZXMuICBXZSBjYW4ndCByZWx5IG9uIHRoZSBuYW1lc3BhY2UgbWVjaGFu aXNtIHNpbmNlIGZvcgorCQkgKiBleGFtcGxlIHdlIG5lZWQgdG8gbG9jayBiYXNlLXJlbGF0aW9u IFJURXMgZXZlbiBpZiB0aGV5IGFyZSBtYXNrZWQKKwkJICogYnkgdXBwZXIgam9pbnMuCiAJCSAq LwogCQlpID0gMDsKIAkJZm9yZWFjaChydCwgcXJ5LT5ydGFibGUpCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKaW5kZXggZjYzNzkzN2NkMi4uYWNmODc1ODBhMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApA QCAtOTk0LDExICs5OTQsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uQ21kCiAgKgogICoJ ICBpbkZyb21DbCBtYXJrcyB0aG9zZSByYW5nZSB2YXJpYWJsZXMgdGhhdCBhcmUgbGlzdGVkIGlu IHRoZSBGUk9NIGNsYXVzZS4KICAqCSAgSXQncyBmYWxzZSBmb3IgUlRFcyB0aGF0IGFyZSBhZGRl ZCB0byBhIHF1ZXJ5IGJlaGluZCB0aGUgc2NlbmVzLCBzdWNoCi0gKgkgIGFzIHRoZSBORVcgYW5k IE9MRCB2YXJpYWJsZXMgZm9yIGEgcnVsZSwgb3IgdGhlIHN1YnF1ZXJpZXMgb2YgYSBVTklPTi4K KyAqCSAgYXMgdGhlIE5FVyBhbmQgT0xEIHZhcmlhYmxlcyBmb3IgYSBydWxlLCBvciB0aGUgc3Vi cXVlcmllcyBvZiBhIFVOSU9OLAorICoJICBvciB0aGUgUlRFcyBvZiBpbmhlcml0YW5jZSBjaGls ZCB0YWJsZXMgdGhhdCBhcmUgYWRkZWQgYnkgdGhlIHBsYW5uZXIuCiAgKgkgIFRoaXMgZmxhZyBp cyBub3QgdXNlZCBkdXJpbmcgcGFyc2luZyAoZXhjZXB0IGluIHRyYW5zZm9ybUxvY2tpbmdDbGF1 c2UsCiAgKgkgIHEudi4pOyB0aGUgcGFyc2VyIG5vdyB1c2VzIGEgc2VwYXJhdGUgIm5hbWVzcGFj ZSIgZGF0YSBzdHJ1Y3R1cmUgdG8KICAqCSAgY29udHJvbCB2aXNpYmlsaXR5LiAgQnV0IGl0IGlz IG5lZWRlZCBieSBydWxldXRpbHMuYyB0byBkZXRlcm1pbmUKLSAqCSAgd2hldGhlciBSVEVzIHNo b3VsZCBiZSBzaG93biBpbiBkZWNvbXBpbGVkIHF1ZXJpZXMuCisgKgkgIHdoZXRoZXIgUlRFcyBz aG91bGQgYmUgc2hvd24gaW4gZGVjb21waWxlZCBxdWVyaWVzLiAgVGhlIGV4ZWN1dG9yIHVzZXMK KyAqCSAgdGhpcyB0byBhc2NlcnRhaW4gaWYgYW4gUlRFX1JFTEFUSU9OIGVudHJ5IGlzIGZvciBh IHRhYmxlIGV4cGxpY2l0bHkKKyAqCSAgbmFtZWQgaW4gdGhlIHF1ZXJ5IG9yIGEgY2hpbGQgdGFi bGUgYWRkZWQgYnkgdGhlIHBsYW5uZXIuICBUaGlzCisgKgkgIGRpc3RpbmN0aW9uIGlzIHZpdGFs IHdoZW4gY2hpbGQgdGFibGVzIGluIGEgcGxhbiBtdXN0IGJlIGxvY2tlZC4KICAqCiAgKgkgIHNl Y3VyaXR5UXVhbHMgaXMgYSBsaXN0IG9mIHNlY3VyaXR5IGJhcnJpZXIgcXVhbHMgKGJvb2xlYW4g ZXhwcmVzc2lvbnMpLAogICoJICB0byBiZSB0ZXN0ZWQgaW4gdGhlIGxpc3RlZCBvcmRlciBiZWZv cmUgcmV0dXJuaW5nIGEgcm93IGZyb20gdGhlCi0tIAoyLjM1LjMKCg== --0000000000006c6975060667113b Content-Type: application/octet-stream; name="v48-0003-Adjustments-to-allow-ExecutorStart-to-sometimes-.patch" Content-Disposition: attachment; filename="v48-0003-Adjustments-to-allow-ExecutorStart-to-sometimes-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln2wv9t65 RnJvbSAzNmViNmUwNDkwN2Q0YWI0NGFkNDI0ZTExZDU0Zjk1ODkzMDlkMGQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1Mzo0NiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4 IDMvOF0gQWRqdXN0bWVudHMgdG8gYWxsb3cgRXhlY3V0b3JTdGFydCgpIHRvIHNvbWV0aW1lcwog ZmFpbAoKVXBvbiBwYXNzaW5nIGEgcGxhbiB0cmVlIGZyb20gYSBDYWNoZWRQbGFuIHRvIHRoZSBl eGVjdXRvciwgdGhlcmUncyBhCnBvc3NpYmlsaXR5IHRoYXQgRXhlY3V0b3JTdGFydCgpIG1pZ2h0 IHJldHVybiBhbiBpbmNvbXBsZXRlbHkgc2V0IHVwCnBsYW5zdGF0ZSB0cmVlLiBUaGlzIGNhbiBo YXBwZW4gaWYgdGhlIENhY2hlZFBsYW4gdW5kZXJnb2VzIGludmFsaWRhdGlvbgpkdXJpbmcgdGhl IEV4ZWNJbml0Tm9kZSgpIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEluIHN1Y2ggY2FzZXMsIHRo ZQpleGVjdXRpb24gc2hvdWxkIGJlIHJlYXR0ZW1wdGVkIHVzaW5nIGEgZnJlc2ggQ2FjaGVkUGxh bi4gQWxzbywgYW55CnBhcnRpYWxseSBpbml0aWFsaXplZCBFU3RhdGUgbXVzdCBiZSBjbGVhbmVk IHVwIGJ5IGludm9raW5nIGJvdGgKRXhlY3V0b3JFbmQoKSBhbmQgRnJlZUV4ZWN1dG9yU3RhdGUo KS4KCkV4ZWN1dG9yU3RhcnQoKSAoYW5kIEV4ZWN1dG9yU3RhcnRfaG9vaygpKSBub3cgcmV0dXJu IGEgQm9vbGVhbiB0ZWxsaW5nCnRoZSBjYWxsZXIgaWYgdGhlIHBsYW4gaW5pdGlhbGl6YXRpb24g ZmFpbGVkLgoKRm9yIHRoZSByZXBsYW4gbG9vcCBpbiB0aGF0IGNvbnRleHQsIGl0IG1ha2VzIG1v cmUgc2Vuc2UgdG8gaGF2ZQpFeGVjdXRvclN0YXJ0KCkgZWl0aGVyIGluIHRoZSBzYW1lIHNjb3Bl IG9yIGNsb3NlciB0byB3aGVyZQpHZXRDYWNoZWRQbGFuKCkgaXMgaW52b2tlZC4gIFNvIHRoaXMg Y29tbWl0IG1vZGlmaWVzIHRoZSBmb2xsb3dpbmcKc2l0ZXM6CgoqIFRoZSBFeGVjdXRvclN0YXJ0 KCkgY2FsbCBpbiBFeHBsYWluT25lUGxhbigpIGlzIG1vdmVkIGludG8gYSBuZXcKICBmdW5jdGlv biBFeHBsYWluUXVlcnlEZXNjKCkgYWxvbmcgd2l0aCBDcmVhdGVRdWVyeURlc2MoKS4gIENhbGxl cnMKICBvZiBFeHBsYWluT25lUGxhbigpIHNob3VsZCBub3cgY2FsbCB0aGUgbmV3IGZ1bmN0aW9u IGZpcnN0LgoKKiBUaGUgRXhlY3V0b3JTdGFydCgpIGNhbGwgaW4gX1NQSV9wcXVlcnkoKSBpcyBt b3ZlZCB0byBpdHMgY2FsbGVyCiAgX1NQSV9leGVjdXRlX3BsYW4oKS4KCiogVGhlIEV4ZWN1dG9y U3RhcnQoKSBjYWxsIGluIFBvcnRhbFJ1bk11bHRpKCkgaXMgbW92ZWQgdG8KICBQb3J0YWxTdGFy dCgpLiAgVGhpcyByZXF1aXJlcyBhIG5ldyBMaXN0IGZpZWxkIGluIFBvcnRhbERhdGEgdG8KICBz dG9yZSB0aGUgUXVlcnlEZXNjcyBjcmVhdGVkIGluIFBvcnRhbFN0YXJ0KCkgYW5kIGEgbmV3IG1l bW9yeQogIGNvbnRleHQgZm9yIHRob3NlLiAgT25lIHVuaW50ZW5kZWQgY29uc2VxdWVuY2UgaXMg dGhhdAogIENvbW1hbmRDb3VudGVySW5jcmVtZW50KCkgYmV0d2VlbiBxdWVyaWVzIGluIHRoZSBQ T1JUQUxfTVVMVElfUVVFUlkKICBjYXNlIGlzIG5vdyBkb25lIGluIHRoZSBsb29wIGluIFBvcnRh bFN0YXJ0KCkgYW5kIG5vdCBpbgogIFBvcnRhbFJ1bk11bHRpKCkuICBUaGF0IHN0aWxsIHdvcmtz IGJlY2F1c2UgdGhlIFNuYXBzaG90IHJlZ2lzdGVyZWQKICBpbiBRdWVyeURlc2MvRVN0YXRlIGlz IHVwZGF0ZWQgdG8gYWNjb3VudCBmb3IgdGhlIENDSSgpLgoKVGhpcyBjb21taXQgYWxzbyBhZGRz IGEgbmV3IGZsYWcgdG8gRVN0YXRlIGNhbGxlZCBlc19jYW5jZWxlZCB0aGF0CmNvbXBsZW1lbnRz IGVzX2ZpbmlzaGVkIHRvIGRlbm90ZSB0aGUgbmV3IHNjZW5hcmlvIHdoZXJlCkV4ZWN1dG9yU3Rh cnQoKSByZXR1cm5zIHdpdGggYSBwYXJ0aWFsbHkgc2V0dXAgcGxhbnN0YXRlIHRyZWUuICBBbHNv LAp0byByZXNldCB0aGUgQUZURVIgdHJpZ2dlciBzdGF0ZSB0aGF0IHdvdWxkIGhhdmUgYmVlbiBz ZXQgdXAgaW4gdGhlCkV4ZWN1dG9yU3RhcnQoKSwgdGhpcyBhZGRzIGEgbmV3IGZ1bmN0aW9uIEFm dGVyVHJpZ2dlckNhbmNlbFF1ZXJ5KCkKd2hpY2ggaXMgY2FsbGVkIGZyb20gRXhlY3V0b3JFbmQo KSAobm90IEV4ZWN1dG9yRmluaXNoKCkpIHdoZW4KZXNfY2FuY2VsZWQgaXMgdHJ1ZS4KCk5vdGUg dGhhdCB0aGlzIGNvbW1pdCBieSBpdHNlbGYgZG9lc24ndCBtYWtlIGFueSBmdW5jdGlvbmFsIGNo YW5nZSwKYmVjYXVzZSB0aGUgQ2FjaGVkUGxhbiBpcyBub3QgcGFzc2VkIGludG8gdGhlIGV4ZWN1 dG9yIHlldC4KLS0tCiBjb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYyAgICAgICAg ICAgfCAgMTIgKy0KIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMg ICB8ICAxMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICAgICAgICAgICAg IHwgICA1ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgICAg fCAgIDkgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8 IDE0NSArKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAgICAgICAg ICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgICAgICAgICAgICAg ICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgICAgICAgICAg ICB8ICAgNiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAg IHwgIDMxICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAgICAg fCAgMTMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwg IDQ0ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgICAgIHwg ICA2ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgICA3 ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAgICAgICAgICAgfCAgNDgg KystCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgMTgg Ky0KIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgICAgICAgICAgICB8IDM0NiAr KysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAg ICAgICAgICB8ICAgOSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgICAg ICAgICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAg ICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAg ICB8ICAgMyArCiBzcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oICAgICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgICAgICAgICAgICB8 ICAgMiArCiAyNCBmaWxlcyBjaGFuZ2VkLCA0NjYgaW5zZXJ0aW9ucygrKSwgMjgyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jIGIv Y29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKaW5kZXggYzNhYzI3YWU5OS4uYTA2 MzBkNzk0NCAxMDA2NDQKLS0tIGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMK KysrIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKQEAgLTc4LDcgKzc4LDcg QEAgc3RhdGljIEV4ZWN1dG9yUnVuX2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yUnVuID0gTlVMTDsK IHN0YXRpYyBFeGVjdXRvckZpbmlzaF9ob29rX3R5cGUgcHJldl9FeGVjdXRvckZpbmlzaCA9IE5V TEw7CiBzdGF0aWMgRXhlY3V0b3JFbmRfaG9va190eXBlIHByZXZfRXhlY3V0b3JFbmQgPSBOVUxM OwogCi1zdGF0aWMgdm9pZCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpOworc3RhdGljIGJvb2wgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRpYyB2b2lkIGV4cGxhaW5fRXhlY3V0 b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQkJCVNjYW5EaXJlY3Rpb24gZGlyZWN0 aW9uLAogCQkJCQkJCQl1aW50NjQgY291bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsKQEAgLTI1OCw5 ICsyNTgsMTEgQEAgX1BHX2luaXQodm9pZCkKIC8qCiAgKiBFeGVjdXRvclN0YXJ0IGhvb2s6IHN0 YXJ0IHVwIGxvZ2dpbmcgaWYgbmVlZGVkCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAog ZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog eworCWJvb2wJcGxhbl92YWxpZDsKKwogCS8qCiAJICogQXQgdGhlIGJlZ2lubmluZyBvZiBlYWNo IHRvcC1sZXZlbCBzdGF0ZW1lbnQsIGRlY2lkZSB3aGV0aGVyIHdlJ2xsCiAJICogc2FtcGxlIHRo aXMgc3RhdGVtZW50LiAgSWYgbmVzdGVkLXN0YXRlbWVudCBleHBsYWluaW5nIGlzIGVuYWJsZWQs CkBAIC0yOTYsOSArMjk4LDkgQEAgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogCX0KIAogCWlmIChwcmV2X0V4ZWN1dG9yU3RhcnQpCi0JCXBy ZXZfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBwcmV2 X0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCWVsc2UKLQkJc3RhbmRhcmRfRXhl Y3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBzdGFuZGFyZF9F eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAogCWlmIChhdXRvX2V4cGxhaW5fZW5h YmxlZCgpKQogCXsKQEAgLTMxNiw2ICszMTgsOCBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3h0KTsKIAkJfQogCX0KKworCXJldHVybiBwbGFuX3ZhbGlkOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9j b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRleCBhNDZm MmRiMzUyLi41OGNiNjJlODcyIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9wZ19zdGF0X3N0YXRlbWVudHMuYworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9w Z19zdGF0X3N0YXRlbWVudHMuYwpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBQbGFubmVkU3Rt dCAqcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIAkJCQkJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5 X3N0cmluZywKIAkJCQkJCQkJIGludCBjdXJzb3JPcHRpb25zLAogCQkJCQkJCQkgUGFyYW1MaXN0 SW5mbyBib3VuZFBhcmFtcyk7Ci1zdGF0aWMgdm9pZCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworc3RhdGljIGJvb2wgcGdzc19FeGVjdXRvclN0 YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRpYyB2b2lkIHBnc3Nf RXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQkJIFNjYW5EaXJlY3Rpb24g ZGlyZWN0aW9uLAogCQkJCQkJCSB1aW50NjQgY291bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsKQEAg LTk2NywxMyArOTY3LDE1IEBAIHBnc3NfcGxhbm5lcihRdWVyeSAqcGFyc2UsCiAvKgogICogRXhl Y3V0b3JTdGFydCBob29rOiBzdGFydCB1cCB0cmFja2luZyBpZiBuZWVkZWQKICAqLwotc3RhdGlj IHZvaWQKK3N0YXRpYyBib29sCiBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpCiB7CisJYm9vbAlwbGFuX3ZhbGlkOworCiAJaWYgKHByZXZfRXhlY3V0 b3JTdGFydCkKLQkJcHJldl9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxh bl92YWxpZCA9IHByZXZfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAJZWxzZQot CQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxp ZCA9IHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCiAJLyoKIAkg KiBJZiBxdWVyeSBoYXMgcXVlcnlJZCB6ZXJvLCBkb24ndCB0cmFjayBpdC4gIFRoaXMgcHJldmVu dHMgZG91YmxlCkBAIC05OTYsNiArOTk4LDggQEAgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4 dCk7CiAJCX0KIAl9CisKKwlyZXR1cm4gcGxhbl92YWxpZDsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eXRvLmMKaW5kZXggMGUzNTQ3YzM1Yi4uZjc3MzBjODcwMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMK QEAgLTU2OCw4ICs1NjgsMTEgQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkg KiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLgog CQkgKgogCQkgKiBFeGVjdXRvclN0YXJ0IGNvbXB1dGVzIGEgcmVzdWx0IHR1cGRlc2MgZm9yIHVz CisJCSAqCisJCSAqIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJl Y29tZSBpbnZhbGlkLAorCQkgKiBiZWNhdXNlIHRoZXJlJ3Mgbm8gQ2FjaGVkUGxhbi4KIAkJICov Ci0JCUV4ZWN1dG9yU3RhcnQoY3N0YXRlLT5xdWVyeURlc2MsIDApOworCQkodm9pZCkgRXhlY3V0 b3JTdGFydChjc3RhdGUtPnF1ZXJ5RGVzYywgMCk7CiAKIAkJdHVwRGVzYyA9IGNzdGF0ZS0+cXVl cnlEZXNjLT50dXBEZXNjOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ny ZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCmluZGV4IDE4YjA3YzAy MDAuLjRhOTUwYzAzZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwpAQCAtMzI5LDggKzMyOSwx MyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNT dG10ICpzdG10LAogCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90 LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CiAKLQkJLyogY2FsbCBFeGVj dXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCQlFeGVjdXRv clN0YXJ0KHF1ZXJ5RGVzYywgR2V0SW50b1JlbEVGbGFncyhpbnRvKSk7CisJCS8qCisJCSAqIGNh bGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KKwkJICoK KwkJICogT0sgdG8gaWdub3JlIHRoZSByZXR1cm4gdmFsdWU7IHBsYW4gY2FuJ3QgYmVjb21lIGlu dmFsaWQsCisJCSAqIGJlY2F1c2UgdGhlcmUncyBubyBDYWNoZWRQbGFuLgorCQkgKi8KKwkJKHZv aWQpIEV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBHZXRJbnRvUmVsRUZsYWdzKGludG8pKTsKIAog CQkvKiBydW4gdGhlIHBsYW4gdG8gY29tcGxldGlvbiAqLwogCQlFeGVjdXRvclJ1bihxdWVyeURl c2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpp bmRleCAyODFjNDdiMmVlLi44ZDFmZTU3MzhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0z OTMsNiArMzkzLDcgQEAgRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9w dGlvbnMsCiAJZWxzZQogCXsKIAkJUGxhbm5lZFN0bXQgKnBsYW47CisJCVF1ZXJ5RGVzYyAgICpx dWVyeURlc2M7CiAJCWluc3RyX3RpbWUJcGxhbnN0YXJ0LAogCQkJCQlwbGFuZHVyYXRpb247CiAJ CUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LApAQCAtNDE1LDEyICs0MTYsOTAgQEAgRXhwbGFp bk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCQlCdWZmZXJVc2Fn ZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwog CQl9CiAKKwkJcXVlcnlEZXNjID0gRXhwbGFpblF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBxdWVyeVN0 cmluZywgaW50bywgZXMsCisJCQkJCQkJCQkgcGFyYW1zLCBxdWVyeUVudik7CisJCUFzc2VydChx dWVyeURlc2MpOworCiAJCS8qIHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQg Ki8KLQkJRXhwbGFpbk9uZVBsYW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMs IHF1ZXJ5RW52LAorCQlFeHBsYWluT25lUGxhbihxdWVyeURlc2MsIGludG8sIGVzLCBxdWVyeVN0 cmluZywgcGFyYW1zLCBxdWVyeUVudiwKIAkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZm ZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOwogCX0KIH0KIAorLyoKKyAqIEV4cGxhaW5RdWVyeURl c2MKKyAqCQlTZXQgdXAgUXVlcnlEZXNjIGZvciBFWFBMQUlOaW5nIGEgZ2l2ZW4gcGxhbgorICoK KyAqIFRoaXMgcmV0dXJucyBOVUxMIGlmIGNwbGFuIGlzIGZvdW5kIHRvIGhhdmUgYmVlbiBpbnZh bGlkYXRlZCBhZnRlcgorICogY2FsbGluZyBFeGVjdXRvclN0YXJ0KCkuCisgKi8KK1F1ZXJ5RGVz YyAqCitFeHBsYWluUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpzdG10LCBDYWNoZWRQbGFuICpjcGxh biwKKwkJCQkgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIEludG9DbGF1c2UgKmludG8sIEV4cGxh aW5TdGF0ZSAqZXMsCisJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50 ICpxdWVyeUVudikKK3sKKwlRdWVyeURlc2MgICpxdWVyeURlc2M7CisJRGVzdFJlY2VpdmVyICpk ZXN0OworCWludAkJCWVmbGFnczsKKwlpbnQJCQlpbnN0cnVtZW50X29wdGlvbiA9IDA7CisKKwkv KgorCSAqIE5vcm1hbGx5IHdlIGRpc2NhcmQgdGhlIHF1ZXJ5J3Mgb3V0cHV0LCBidXQgaWYgZXhw bGFpbmluZyBDUkVBVEUgVEFCTEUKKwkgKiBBUywgd2UnZCBiZXR0ZXIgdXNlIHRoZSBhcHByb3By aWF0ZSB0dXBsZSByZWNlaXZlci4KKwkgKi8KKwlpZiAoaW50bykKKwkJZGVzdCA9IENyZWF0ZUlu dG9SZWxEZXN0UmVjZWl2ZXIoaW50byk7CisJZWxzZQorCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsK KworCWlmIChlcy0+YW5hbHl6ZSAmJiBlcy0+dGltaW5nKQorCQlpbnN0cnVtZW50X29wdGlvbiB8 PSBJTlNUUlVNRU5UX1RJTUVSOworCWVsc2UgaWYgKGVzLT5hbmFseXplKQorCQlpbnN0cnVtZW50 X29wdGlvbiB8PSBJTlNUUlVNRU5UX1JPV1M7CisKKwlpZiAoZXMtPmJ1ZmZlcnMpCisJCWluc3Ry dW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfQlVGRkVSUzsKKwlpZiAoZXMtPndhbCkKKwkJaW5z dHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9XQUw7CisKKwkvKgorCSAqIFVzZSBhIHNuYXBz aG90IHdpdGggYW4gdXBkYXRlZCBjb21tYW5kIElEIHRvIGVuc3VyZSB0aGlzIHF1ZXJ5IHNlZXMK KwkgKiByZXN1bHRzIG9mIGFueSBwcmV2aW91c2x5IGV4ZWN1dGVkIHF1ZXJpZXMuCisJICovCisJ UHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNuYXBzaG90KCkpOworCVVwZGF0ZUFjdGl2ZVNu YXBzaG90Q29tbWFuZElkKCk7CisKKwkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVy eSAqLworCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LCBjcGxhbiwgcXVlcnlTdHJp bmcsCisJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKKwkJCQkJ CQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRpb24pOworCisJLyogU2Vs ZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCisJaWYgKGVzLT5hbmFseXplKQorCQllZmxhZ3MgPSAw OwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCisJZWxzZQorCQllZmxh Z3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOworCWlmIChlcy0+Z2VuZXJpYykKKwkJZWZsYWdz IHw9IEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUM7CisJaWYgKGludG8pCisJCWVmbGFncyB8PSBH ZXRJbnRvUmVsRUZsYWdzKGludG8pOworCisJLyoKKwkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8g cHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLiAgQSBjYWNoZWQgcGxhbgorCSAqIG1heSBn ZXQgaW52YWxpZGF0ZWQgZHVyaW5nIHBsYW4gaW50aWFsaXphdGlvbi4KKwkgKi8KKwlpZiAoIUV4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpKQorCXsKKwkJLyogQ2xlYW4gdXAuICovCisJ CUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisJCUZyZWVRdWVyeURlc2MocXVlcnlEZXNjKTsKKwkJ UG9wQWN0aXZlU25hcHNob3QoKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmV0dXJuIHF1ZXJ5 RGVzYzsKK30KKwogLyoKICAqIEV4cGxhaW5PbmVVdGlsaXR5IC0KICAqCSAgcHJpbnQgb3V0IHRo ZSBleGVjdXRpb24gcGxhbiBmb3Igb25lIHV0aWxpdHkgc3RhdGVtZW50CkBAIC01MjQsMjkgKzYw MywxNiBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAq aW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxh aW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhw bGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAorCQkJ ICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIg KnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkgICBjb25z dCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UpCiB7Ci0JRGVzdFJlY2VpdmVyICpkZXN0OwotCVF1ZXJ5 RGVzYyAgKnF1ZXJ5RGVzYzsKIAlpbnN0cl90aW1lCXN0YXJ0dGltZTsKIAlkb3VibGUJCXRvdGFs dGltZSA9IDA7Ci0JaW50CQkJZWZsYWdzOwotCWludAkJCWluc3RydW1lbnRfb3B0aW9uID0gMDsK LQotCUFzc2VydChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpOwogCi0J aWYgKGVzLT5hbmFseXplICYmIGVzLT50aW1pbmcpCi0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElO U1RSVU1FTlRfVElNRVI7Ci0JZWxzZSBpZiAoZXMtPmFuYWx5emUpCi0JCWluc3RydW1lbnRfb3B0 aW9uIHw9IElOU1RSVU1FTlRfUk9XUzsKLQotCWlmIChlcy0+YnVmZmVycykKLQkJaW5zdHJ1bWVu dF9vcHRpb24gfD0gSU5TVFJVTUVOVF9CVUZGRVJTOwotCWlmIChlcy0+d2FsKQotCQlpbnN0cnVt ZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1dBTDsKKwlBc3NlcnQocXVlcnlEZXNjLT5wbGFubmVk c3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpOwogCiAJLyoKIAkgKiBXZSBhbHdheXMg Y29sbGVjdCB0aW1pbmcgZm9yIHRoZSBlbnRpcmUgc3RhdGVtZW50LCBldmVuIHdoZW4gbm9kZS1s ZXZlbApAQCAtNTU1LDQwICs2MjEsNiBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxh bm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJICovCiAJSU5T VFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydHRpbWUpOwogCi0JLyoKLQkgKiBVc2UgYSBzbmFwc2hv dCB3aXRoIGFuIHVwZGF0ZWQgY29tbWFuZCBJRCB0byBlbnN1cmUgdGhpcyBxdWVyeSBzZWVzCi0J ICogcmVzdWx0cyBvZiBhbnkgcHJldmlvdXNseSBleGVjdXRlZCBxdWVyaWVzLgotCSAqLwotCVB1 c2hDb3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFwc2hvdCgpKTsKLQlVcGRhdGVBY3RpdmVTbmFw c2hvdENvbW1hbmRJZCgpOwotCi0JLyoKLQkgKiBOb3JtYWxseSB3ZSBkaXNjYXJkIHRoZSBxdWVy eSdzIG91dHB1dCwgYnV0IGlmIGV4cGxhaW5pbmcgQ1JFQVRFIFRBQkxFCi0JICogQVMsIHdlJ2Qg YmV0dGVyIHVzZSB0aGUgYXBwcm9wcmlhdGUgdHVwbGUgcmVjZWl2ZXIuCi0JICovCi0JaWYgKGlu dG8pCi0JCWRlc3QgPSBDcmVhdGVJbnRvUmVsRGVzdFJlY2VpdmVyKGludG8pOwotCWVsc2UKLQkJ ZGVzdCA9IE5vbmVfUmVjZWl2ZXI7Ci0KLQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBx dWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVkc3RtdCwgTlVMTCwg cXVlcnlTdHJpbmcsCi0JCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hv dCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRpb24pOwot Ci0JLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCi0JaWYgKGVzLT5hbmFseXplKQotCQll ZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCi0JZWxz ZQotCQllZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOwotCWlmIChlcy0+Z2VuZXJpYykK LQkJZWZsYWdzIHw9IEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUM7Ci0JaWYgKGludG8pCi0JCWVm bGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOwotCi0JLyogY2FsbCBFeGVjdXRvclN0YXJ0 IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBlZmxhZ3MpOwotCiAJLyogRXhlY3V0ZSB0aGUgcGxhbiBmb3Igc3RhdGlzdGljcyBp ZiBhc2tlZCBmb3IgKi8KIAlpZiAoZXMtPmFuYWx5emUpCiAJewpAQCAtNDg3Myw2ICs0OTA1LDE3 IEBAIEV4cGxhaW5EdW1teUdyb3VwKGNvbnN0IGNoYXIgKm9ianR5cGUsIGNvbnN0IGNoYXIgKmxh YmVsbmFtZSwgRXhwbGFpblN0YXRlICplcykKIAl9CiB9CiAKKy8qCisgKiBEaXNjYXJkIG91dHB1 dCBidWZmZXIgZm9yIGEgZnJlc2ggcmVzdGFydC4KKyAqLwordm9pZAorRXhwbGFpblJlc2V0T3V0 cHV0KEV4cGxhaW5TdGF0ZSAqZXMpCit7CisJQXNzZXJ0KGVzLT5zdHIpOworCXJlc2V0U3RyaW5n SW5mbyhlcy0+c3RyKTsKKwlFeHBsYWluQmVnaW5PdXRwdXQoZXMpOworfQorCiAvKgogICogRW1p dCB0aGUgc3RhcnQtb2Ytb3V0cHV0IGJvaWxlcnBsYXRlLgogICoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5z aW9uLmMKaW5kZXggYjI4N2EyZTg0Yy4uMTI3ZDJhM2IwYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5z aW9uLmMKQEAgLTgwMiw3ICs4MDIsMTEgQEAgZXhlY3V0ZV9zcWxfc3RyaW5nKGNvbnN0IGNoYXIg KnNxbCkKIAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRl c3QsIE5VTEwsIE5VTEwsIDApOwogCi0JCQkJRXhlY3V0b3JTdGFydChxZGVzYywgMCk7CisJCQkJ LyoKKwkJCQkgKiBPSyB0byBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZTsgcGxhbiBjYW4ndCBiZWNv bWUgaW52YWxpZCwKKwkJCQkgKiBiZWNhdXNlIHRoZXJlJ3Mgbm8gQ2FjaGVkUGxhbi4KKwkJCQkg Ki8KKwkJCQkodm9pZCkgRXhlY3V0b3JTdGFydChxZGVzYywgMCk7CiAJCQkJRXhlY3V0b3JSdW4o cWRlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKIAkJCQlFeGVjdXRvckZpbmlz aChxZGVzYyk7CiAJCQkJRXhlY3V0b3JFbmQocWRlc2MpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmlu ZGV4IDIyYjhiODIwYzMuLjcwODNmYjIzNTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQx Miw4ICs0MTIsMTMgQEAgcmVmcmVzaF9tYXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVz dCwgUXVlcnkgKnF1ZXJ5LAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25h cHNob3QsCiAJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwogCi0JLyogY2FsbCBFeGVjdXRv clN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCAwKTsKKwkvKgorCSAqIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJl IHRoZSBwbGFuIGZvciBleGVjdXRpb24KKwkgKgorCSAqIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJu IHZhbHVlOyBwbGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLAorCSAqIGJlY2F1c2UgdGhlcmUncyBu byBDYWNoZWRQbGFuLgorCSAqLworCSh2b2lkKSBFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7 CiAKIAkvKiBydW4gdGhlIHBsYW4gKi8KIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRT Y2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwppbmRleCA3 M2VkN2FhMmYwLi5hMWVlNWMwYWNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9w b3J0YWxjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBAIC0x NDIsOSArMTQyLDExIEBAIFBlcmZvcm1DdXJzb3JPcGVuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVj bGFyZUN1cnNvclN0bXQgKmNzdG10LCBQYXJhbUxpc3RJbmZvIHBhCiAKIAkvKgogCSAqIFN0YXJ0 IGV4ZWN1dGlvbiwgaW5zZXJ0aW5nIHBhcmFtZXRlcnMgaWYgYW55LgorCSAqCisJICogT0sgdG8g aWdub3JlIHRoZSByZXR1cm4gdmFsdWU7IHBsYW4gY2FuJ3QgYmVjb21lIGludmFsaWQgaGVyZSwK KwkgKiBiZWNhdXNlIHRoZXJlJ3Mgbm8gQ2FjaGVkUGxhbi4KIAkgKi8KLQlQb3J0YWxTdGFydChw b3J0YWwsIHBhcmFtcywgMCwgR2V0QWN0aXZlU25hcHNob3QoKSk7Ci0KKwkodm9pZCkgUG9ydGFs U3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEdldEFjdGl2ZVNuYXBzaG90KCkpOwogCUFzc2VydChw b3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUKTsKIAogCS8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w cmVwYXJlLmMKaW5kZXggMThmNzAzMTlmYy4uZjhkMGIwZWUyNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYwpAQCAtMTgzLDYgKzE4Myw3IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUs CiAJCXBhcmFtTEkgPSBFdmFsdWF0ZVBhcmFtcyhwc3RhdGUsIGVudHJ5LCBzdG10LT5wYXJhbXMs IGVzdGF0ZSk7CiAJfQogCityZXBsYW46CiAJLyogQ3JlYXRlIGEgbmV3IHBvcnRhbCB0byBydW4g dGhlIHF1ZXJ5IGluICovCiAJcG9ydGFsID0gQ3JlYXRlTmV3UG9ydGFsKCk7CiAJLyogRG9uJ3Qg ZGlzcGxheSB0aGUgcG9ydGFsIGluIHBnX2N1cnNvcnMsIGl0IGlzIGZvciBpbnRlcm5hbCB1c2Ug b25seSAqLwpAQCAtMjUxLDkgKzI1MiwxNSBAQCBFeGVjdXRlUXVlcnkoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCX0KIAogCS8qCi0JICogUnVuIHRoZSBwb3J0YWwgYXMgYXBwcm9wcmlhdGUuCisJICog UnVuIHRoZSBwb3J0YWwgYXMgYXBwcm9wcmlhdGUuIElmIHRoZSBwb3J0YWwgaGFzIGEgY2FjaGVk IHBsYW4gYW5kIAorCSAqIGl0J3MgZm91bmQgdG8gYmUgaW52YWxpZGF0ZWQgZHVyaW5nIHRoZSBp bml0aWFsaXphdGlvbiBvZiBpdHMgcGxhbgorCSAqIHRyZWVzLCB0aGUgcGxhbiBtdXN0IGJlIHJl Z2VuZXJhdGVkLgogCSAqLwotCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgZWZsYWdzLCBH ZXRBY3RpdmVTbmFwc2hvdCgpKTsKKwlpZiAoIVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwg ZWZsYWdzLCBHZXRBY3RpdmVTbmFwc2hvdCgpKSkKKwl7CisJCVBvcnRhbERyb3AocG9ydGFsLCBm YWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0KIAogCSh2b2lkKSBQb3J0YWxSdW4ocG9ydGFsLCBj b3VudCwgZmFsc2UsIHRydWUsIGRlc3QsIGRlc3QsIHFjKTsKIApAQCAtNTc0LDcgKzU4MSw3IEBA IEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICpp bnRvLCBFeHBsYWluU3RhdGUgKmVzLAogewogCVByZXBhcmVkU3RhdGVtZW50ICplbnRyeTsKIAlj b25zdCBjaGFyICpxdWVyeV9zdHJpbmc7Ci0JQ2FjaGVkUGxhbiAqY3BsYW47CisJQ2FjaGVkUGxh biAqY3BsYW4gPSBOVUxMOwogCUxpc3QJICAgKnBsYW5fbGlzdDsKIAlMaXN0Q2VsbCAgICpwOwog CVBhcmFtTGlzdEluZm8gcGFyYW1MSSA9IE5VTEw7CkBAIC02MTgsNiArNjI1LDcgQEAgRXhwbGFp bkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4 cGxhaW5TdGF0ZSAqZXMsCiAJfQogCiAJLyogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGFjcXVpcmUg YSB0cmFuc2llbnQgcmVmY291bnQgKi8KK3JlcGxhbjoKIAljcGxhbiA9IEdldENhY2hlZFBsYW4o ZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksCiAJCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93bmVy LCBxdWVyeUVudik7CiAKQEAgLTYzOSw4ICs2NDcsMjEgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShF eGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMs CiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBwKTsKIAog CQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBs YW4ocHN0bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHF1ZXJ5RW52LAotCQkJ CQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOwor CQl7CisJCQlRdWVyeURlc2MgKnF1ZXJ5RGVzYzsKKworCQkJcXVlcnlEZXNjID0gRXhwbGFpblF1 ZXJ5RGVzYyhwc3RtdCwgY3BsYW4sIHF1ZXJ5U3RyaW5nLAorCQkJCQkJCQkJCSBpbnRvLCBlcywg cGFyYW1MSSwgcXVlcnlFbnYpOworCQkJaWYgKHF1ZXJ5RGVzYyA9PSBOVUxMKQorCQkJeworCQkJ CUV4cGxhaW5SZXNldE91dHB1dChlcyk7CisJCQkJUmVsZWFzZUNhY2hlZFBsYW4oY3BsYW4sIEN1 cnJlbnRSZXNvdXJjZU93bmVyKTsKKwkJCQlnb3RvIHJlcGxhbjsKKwkJCX0KKwkJCUV4cGxhaW5P bmVQbGFuKHF1ZXJ5RGVzYywgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwKKwkJCQkJ CSAgIHF1ZXJ5RW52LCAmcGxhbmR1cmF0aW9uLAorCQkJCQkJICAgKGVzLT5idWZmZXJzID8gJmJ1 ZnVzYWdlIDogTlVMTCkpOworCQl9CiAJCWVsc2UKIAkJCUV4cGxhaW5PbmVVdGlsaXR5KHBzdG10 LT51dGlsaXR5U3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywKIAkJCQkJCQkgIHBhcmFtTEks IHF1ZXJ5RW52KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCA1MjE3Nzc1OWFiLi5kZDEzOTQz MmI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC01MDA5LDYgKzUwMDksMTkgQEAgQWZ0ZXJU cmlnZ2VyQmVnaW5RdWVyeSh2b2lkKQogCWFmdGVyVHJpZ2dlcnMucXVlcnlfZGVwdGgrKzsKIH0K IAorLyogLS0tLS0tLS0tLQorICogQWZ0ZXJUcmlnZ2VyQ2FuY2VsUXVlcnkoKQorICoKKyAqCUNh bGxlZCBmcm9tIEV4ZWN1dG9yRW5kKCkgaWYgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB3YXMgY2FuY2Vs ZWQuCisgKiAtLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0FmdGVyVHJpZ2dlckNhbmNlbFF1ZXJ5KHZv aWQpCit7CisJLyogU2V0IHRvIGEgdmFsdWUgZGVub3RpbmcgdGhhdCBubyBxdWVyeSBpcyBhY3Rp dmUuICovCisJYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9kZXB0aCA9IC0xOworfQorCiAKIC8qIC0tLS0t LS0tLS0KICAqIEFmdGVyVHJpZ2dlckVuZFF1ZXJ5KCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmlu ZGV4IGRlN2JmN2NhNjcuLjU3NTUzMzZhYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAt MTE5LDYgKzExOSwxMyBAQCBzdGF0aWMgdm9pZCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAq ZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKICAqCiAgKiBlZmxhZ3MgY29udGFpbnMgZmxhZyBi aXRzIGFzIGRlc2NyaWJlZCBpbiBleGVjdXRvci5oLgogICoKKyAqIFBsYW4gaW5pdGlhbGl6YXRp b24gbWF5IGZhaWwgaWYgdGhlIGlucHV0IHBsYW4gdHJlZSBpcyBmb3VuZCB0byBoYXZlIGJlZW4K KyAqIGludmFsaWRhdGVkLCB3aGljaCBjYW4gaGFwcGVuIGlmIGl0IGNvbWVzIGZyb20gYSBDYWNo ZWRQbGFuLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBwbGFuIHdhcyBzdWNjZXNzZnVsbHkgaW5p dGlhbGl6ZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4gIElmCisgKiB0aGUgbGF0dGVyLCB0aGUgY2Fs bGVyIG11c3QgY2FsbCBFeGVjdXRvckVuZCgpIG9uICdxdWVyeURlc2MnIHRvIGNsZWFuIHVwCisg KiBhZnRlciBmYWlsZWQgcGxhbiBpbml0aWFsaXphdGlvbi4KKyAqCiAgKiBOQjogdGhlIEN1cnJl bnRNZW1vcnlDb250ZXh0IHdoZW4gdGhpcyBpcyBjYWxsZWQgd2lsbCBiZWNvbWUgdGhlIHBhcmVu dAogICogb2YgdGhlIHBlci1xdWVyeSBjb250ZXh0IHVzZWQgZm9yIHRoaXMgRXhlY3V0b3IgaW52 b2NhdGlvbi4KICAqCkBAIC0xMjgsNyArMTM1LDcgQEAgc3RhdGljIHZvaWQgRXZhbFBsYW5RdWFs U3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSk7CiAgKgogICogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICovCi12b2lkCitib29sCiBFeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBp bnQgZWZsYWdzKQogewogCS8qCkBAIC0xNDAsMTQgKzE0NywxNSBAQCBFeGVjdXRvclN0YXJ0KFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCXBnc3RhdF9yZXBvcnRfcXVlcnlfaWQo cXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+cXVlcnlJZCwgZmFsc2UpOwogCiAJaWYgKEV4ZWN1dG9y U3RhcnRfaG9vaykKLQkJKCpFeGVjdXRvclN0YXJ0X2hvb2spIChxdWVyeURlc2MsIGVmbGFncyk7 Ci0JZWxzZQotCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJ cmV0dXJuICgqRXhlY3V0b3JTdGFydF9ob29rKSAocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJcmV0 dXJuIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogfQogCi12b2lk Citib29sCiBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQogeworCWJvb2wJCXBsYW5fdmFsaWQ7CiAJRVN0YXRlCSAgICplc3RhdGU7CiAJTWVt b3J5Q29udGV4dCBvbGRjb250ZXh0OwogCkBAIC0yNjMsOSArMjcxLDE0IEBAIHN0YW5kYXJkX0V4 ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJLyoKIAkgKiBJ bml0aWFsaXplIHRoZSBwbGFuIHN0YXRlIHRyZWUKIAkgKi8KLQkodm9pZCkgSW5pdFBsYW4ocXVl cnlEZXNjLCBlZmxhZ3MpOworCXBsYW5fdmFsaWQgPSBJbml0UGxhbihxdWVyeURlc2MsIGVmbGFn cyk7CisKKwkvKiBNYXJrIGV4ZWN1dGlvbiBhcyBjYW5jZWxlZCBpZiBwbGFuIHdvbid0IGJlIGV4 ZWN1dGVkLiAqLworCWVzdGF0ZS0+ZXNfY2FuY2VsZWQgPSAhcGxhbl92YWxpZDsKIAogCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiBwbGFuX3ZhbGlkOwogfQog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCkBAIC0zMjUsNiArMzM4LDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVl cnlEZXNjICpxdWVyeURlc2MsCiAJZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7CiAKIAlBc3Nl cnQoZXN0YXRlICE9IE5VTEwpOworCUFzc2VydCghZXN0YXRlLT5lc19jYW5jZWxlZCk7CiAJQXNz ZXJ0KCEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0VYUExBSU5fT05MWSkpOwog CiAJLyoKQEAgLTQyOSw3ICs0NDMsNyBAQCBzdGFuZGFyZF9FeGVjdXRvckZpbmlzaChRdWVyeURl c2MgKnF1ZXJ5RGVzYykKIAlBc3NlcnQoIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZM QUdfRVhQTEFJTl9PTkxZKSk7CiAKIAkvKiBUaGlzIHNob3VsZCBiZSBydW4gb25jZSBhbmQgb25s eSBvbmNlIHBlciBFeGVjdXRvciBpbnN0YW5jZSAqLwotCUFzc2VydCghZXN0YXRlLT5lc19maW5p c2hlZCk7CisJQXNzZXJ0KCFlc3RhdGUtPmVzX2ZpbmlzaGVkICYmICFlc3RhdGUtPmVzX2NhbmNl bGVkKTsKIAogCS8qIFN3aXRjaCBpbnRvIHBlci1xdWVyeSBtZW1vcnkgY29udGV4dCAqLwogCW9s ZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOwpA QCAtNDg4LDExICs1MDIsMTEgQEAgc3RhbmRhcmRfRXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVy eURlc2MpCiAJQXNzZXJ0KGVzdGF0ZSAhPSBOVUxMKTsKIAogCS8qCi0JICogQ2hlY2sgdGhhdCBF eGVjdXRvckZpbmlzaCB3YXMgY2FsbGVkLCB1bmxlc3MgaW4gRVhQTEFJTi1vbmx5IG1vZGUuIFRo aXMKLQkgKiBBc3NlcnQgaXMgbmVlZGVkIGJlY2F1c2UgRXhlY3V0b3JGaW5pc2ggaXMgbmV3IGFz IG9mIDkuMSwgYW5kIGNhbGxlcnMKLQkgKiBtaWdodCBmb3JnZXQgdG8gY2FsbCBpdC4KKwkgKiBD aGVjayB0aGF0IEV4ZWN1dG9yRmluaXNoIHdhcyBjYWxsZWQsIHVubGVzcyBpbiBFWFBMQUlOLW9u bHkgbW9kZSBvciBpZgorCSAqIGV4ZWN1dGlvbiB3YXMgY2FuY2VsZWQuIFRoaXMgQXNzZXJ0IGlz IG5lZWRlZCBiZWNhdXNlIEV4ZWN1dG9yRmluaXNoIGlzCisJICogbmV3IGFzIG9mIDkuMSwgYW5k IGNhbGxlcnMgbWlnaHQgZm9yZ2V0IHRvIGNhbGwgaXQuCiAJICovCi0JQXNzZXJ0KGVzdGF0ZS0+ ZXNfZmluaXNoZWQgfHwKKwlBc3NlcnQoZXN0YXRlLT5lc19maW5pc2hlZCB8fCBlc3RhdGUtPmVz X2NhbmNlbGVkIHx8CiAJCSAgIChlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQ TEFJTl9PTkxZKSk7CiAKIAkvKgpAQCAtNTA2LDYgKzUyMCwxNCBAQCBzdGFuZGFyZF9FeGVjdXRv ckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAlVbnJlZ2lzdGVyU25hcHNob3QoZXN0YXRlLT5l c19zbmFwc2hvdCk7CiAJVW5yZWdpc3RlclNuYXBzaG90KGVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19z bmFwc2hvdCk7CiAKKwkvKgorCSAqIENhbmNlbCB0cmlnZ2VyIGV4ZWN1dGlvbiB0b28gaWYgdGhl IHF1ZXJ5IGV4ZWN1dGlvbiB3YXMgY2FuY2VsZWQuCisJICovCisJaWYgKGVzdGF0ZS0+ZXNfY2Fu Y2VsZWQgJiYKKwkJIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJgorCQkgIChFWEVDX0ZMQUdfU0tJ UF9UUklHR0VSUyB8IEVYRUNfRkxBR19FWFBMQUlOX09OTFkpKSkKKwkJQWZ0ZXJUcmlnZ2VyQ2Fu Y2VsUXVlcnkoKTsKKwogCS8qCiAJICogTXVzdCBzd2l0Y2ggb3V0IG9mIGNvbnRleHQgYmVmb3Jl IGRlc3Ryb3lpbmcgaXQKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXgg NDU3ZWU0NmZhZi4uMTNkMjgyMGE0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMK QEAgLTE0MzcsNyArMTQzNywxMSBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2Vn LCBzaG1fdG9jICp0b2MpCiAKIAkvKiBTdGFydCB1cCB0aGUgZXhlY3V0b3IgKi8KIAlxdWVyeURl c2MtPnBsYW5uZWRzdG10LT5qaXRGbGFncyA9IGZwZXMtPmppdF9mbGFnczsKLQlFeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgZnBlcy0+ZWZsYWdzKTsKKwkvKgorCSAqIE9LIHRvIGlnbm9yZSB0aGUg cmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLAorCSAqIGJlY2F1c2UgdGhl cmUncyBubyBDYWNoZWRQbGFuLgorCSAqLworCSh2b2lkKSBFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVz YywgZnBlcy0+ZWZsYWdzKTsKIAogCS8qIFNwZWNpYWwgZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24g c3RlcHMgZm9yIHBhcmFsbGVsIHdvcmtlcnMgKi8KIAlxdWVyeURlc2MtPnBsYW5zdGF0ZS0+c3Rh dGUtPmVzX3F1ZXJ5X2RzYSA9IGFyZWE7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDE2 NzA0YzBjMmYuLmYwZjU3NDBjMjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xNTEs NiArMTUxLDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0ZS0+ZXNfdG9wX2Vm bGFncyA9IDA7CiAJZXN0YXRlLT5lc19pbnN0cnVtZW50ID0gMDsKIAllc3RhdGUtPmVzX2Zpbmlz aGVkID0gZmFsc2U7CisJZXN0YXRlLT5lc19jYW5jZWxlZCA9IGZhbHNlOwogCiAJZXN0YXRlLT5l c19leHByY29udGV4dHMgPSBOSUw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2Z1bmN0aW9ucy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggN2U0 NTJlZDc0My4uNjA2ZGE3MjUzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVu Y3Rpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTg2Myw3 ICs4NjMsMTIgQEAgcG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rp b25DYWNoZVB0ciBmY2FjaGUpCiAJCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsK IAkJZWxzZQogCQkJZWZsYWdzID0gMDsJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZs YWdzICovCi0JCUV4ZWN1dG9yU3RhcnQoZXMtPnFkLCBlZmxhZ3MpOworCisJCS8qCisJCSAqIE9L IHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLAor CQkgKiBiZWNhdXNlIHRoZXJlJ3Mgbm8gQ2FjaGVkUGxhbi4KKwkJICovCisJCSh2b2lkKSBFeGVj dXRvclN0YXJ0KGVzLT5xZCwgZWZsYWdzKTsKIAl9CiAKIAllcy0+c3RhdHVzID0gRl9FWEVDX1JV TjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivc3BpLmMKaW5kZXggZjJjY2E4MDdlZi4uODE0ZmYxMzkwZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3Bp LmMKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGludAlfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFu UHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogc3RhdGljIFBhcmFt TGlzdEluZm8gX1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQgbmFyZ3MsIE9pZCAqYXJndHlwZXMsCiAJ CQkJCQkJCQkJIERhdHVtICpWYWx1ZXMsIGNvbnN0IGNoYXIgKk51bGxzKTsKIAotc3RhdGljIGlu dAlfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1 aW50NjQgdGNvdW50KTsKK3N0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURl c2MsIHVpbnQ2NCB0Y291bnQpOwogCiBzdGF0aWMgdm9pZCBfU1BJX2Vycm9yX2NhbGxiYWNrKHZv aWQgKmFyZyk7CiAKQEAgLTE1ODIsNiArMTU4Miw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5h bChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJU25hcHNob3QJc25hcHNob3Q7 CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCVBvcnRhbAkJcG9ydGFsOworCWJvb2wJCXBs YW5fdmFsaWQ7CiAJU1BJQ2FsbGJhY2tBcmcgc3BpY2FsbGJhY2thcmc7CiAJRXJyb3JDb250ZXh0 Q2FsbGJhY2sgc3BpZXJyY29udGV4dDsKIApAQCAtMTYyMyw2ICsxNjI0LDcgQEAgU1BJX2N1cnNv cl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAlfU1BJ X2N1cnJlbnQtPnByb2Nlc3NlZCA9IDA7CiAJX1NQSV9jdXJyZW50LT50dXB0YWJsZSA9IE5VTEw7 CiAKK3JlcGxhbjoKIAkvKiBDcmVhdGUgdGhlIHBvcnRhbCAqLwogCWlmIChuYW1lID09IE5VTEwg fHwgbmFtZVswXSA9PSAnXDAnKQogCXsKQEAgLTE3NjYsMTUgKzE3NjgsMjMgQEAgU1BJX2N1cnNv cl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAl9CiAK IAkvKgotCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uCisJICogU3RhcnQgcG9ydGFsIGV4ZWN1 dGlvbi4gIElmIHRoZSBwb3J0YWwgY29udGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQgbXVzdAorCSAq IGJlIHJlY3JlYXRlZCBpZiB0aGUgY2FjaGVkIHBsYW4gd2FzIGZvdW5kIHRvIGhhdmUgYmVlbiBp bnZhbGlkYXRlZCB3aGVuCisJICogaW5pdGlhbGl6aW5nIG9uZSBvZiB0aGUgcGxhbiB0cmVlcyBj b250YWluZWQgaW4gaXQuCiAJICovCi0JUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbUxJLCAwLCBz bmFwc2hvdCk7CisJcGxhbl92YWxpZCA9IFBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgMCwg c25hcHNob3QpOwogCiAJQXNzZXJ0KHBvcnRhbC0+c3RyYXRlZ3kgIT0gUE9SVEFMX01VTFRJX1FV RVJZKTsKIAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVycm9yX2NvbnRl eHRfc3RhY2sgPSBzcGllcnJjb250ZXh0LnByZXZpb3VzOwogCisJaWYgKCFwbGFuX3ZhbGlkKQor CXsKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJZ290byByZXBsYW47CisJfQorCiAJ LyogUG9wIHRoZSBTUEkgc3RhY2sgKi8KIAlfU1BJX2VuZF9jYWxsKHRydWUpOwogCkBAIC0yNTUy LDYgKzI1NjIsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQ SUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkgKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgaW5j cmVtZW50IHBsYW4gcmVmY291bnQuICBJZiBpdCdzIGEgc2F2ZWQKIAkJICogcGxhbiwgdGhlIHJl ZmNvdW50IG11c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293bmVyLgogCQkgKi8KK3JlcGxhbjoK IAkJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIG9wdGlvbnMtPnBhcmFtcywKIAkJ CQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOwogCkBAIC0yNjYxLDYg KzI2NzIsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4 ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJewogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCQkJ CVNuYXBzaG90CXNuYXA7CisJCQkJaW50CQkJZWZsYWdzOwogCiAJCQkJaWYgKEFjdGl2ZVNuYXBz aG90U2V0KCkpCiAJCQkJCXNuYXAgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOwpAQCAtMjY3NSw4ICsy Njg3LDIzIEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhl Y3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJCQkJCQkJb3B0aW9ucy0+cGFyYW1zLAogCQkJCQkJ CQkJCV9TUElfY3VycmVudC0+cXVlcnlFbnYsCiAJCQkJCQkJCQkJMCk7Ci0JCQkJcmVzID0gX1NQ SV9wcXVlcnkocWRlc2MsIGZpcmVfdHJpZ2dlcnMsCi0JCQkJCQkJCSAgY2FuU2V0VGFnID8gb3B0 aW9ucy0+dGNvdW50IDogMCk7CisKKwkJCQkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8K KwkJCQlpZiAoZmlyZV90cmlnZ2VycykKKwkJCQkJZWZsYWdzID0gMDsJCQkJLyogZGVmYXVsdCBy dW4tdG8tY29tcGxldGlvbiBmbGFncyAqLworCQkJCWVsc2UKKwkJCQkJZWZsYWdzID0gRVhFQ19G TEFHX1NLSVBfVFJJR0dFUlM7CisKKwkJCQlpZiAoIUV4ZWN1dG9yU3RhcnQocWRlc2MsIGVmbGFn cykpCisJCQkJeworCQkJCQlFeGVjdXRvckVuZChxZGVzYyk7CisJCQkJCUZyZWVRdWVyeURlc2Mo cWRlc2MpOworCQkJCQlBc3NlcnQoY3BsYW4pOworCQkJCQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxh biwgcGxhbl9vd25lcik7CisJCQkJCWdvdG8gcmVwbGFuOworCQkJCX0KKworCQkJCXJlcyA9IF9T UElfcHF1ZXJ5KHFkZXNjLCBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKIAkJCQlG cmVlUXVlcnlEZXNjKHFkZXNjKTsKIAkJCX0KIAkJCWVsc2UKQEAgLTI4NTEsMTAgKzI4NzgsOSBA QCBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIH0KIAogc3Rh dGljIGludAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmln Z2VycywgdWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCB1 aW50NjQgdGNvdW50KQogewogCWludAkJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3BlcmF0aW9u OwotCWludAkJCWVmbGFnczsKIAlpbnQJCQlyZXM7CiAKIAlzd2l0Y2ggKG9wZXJhdGlvbikKQEAg LTI4OTgsMTQgKzI5MjQsNiBAQCBfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9v bCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQogCQlSZXNldFVzYWdlKCk7CiAjZW5kaWYK IAotCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLwotCWlmIChmaXJlX3RyaWdnZXJzKQot CQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCi0J ZWxzZQotCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsKLQotCUV4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCBlZmxhZ3MpOwotCiAJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJk U2NhbkRpcmVjdGlvbiwgdGNvdW50LCB0cnVlKTsKIAogCV9TUElfY3VycmVudC0+cHJvY2Vzc2Vk ID0gcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAy MWI5NzYzMTgzLi40ZjkyM2JiY2FlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0xMjMwLDcgKzEyMzAs MTIgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQogCQkvKgog CQkgKiBTdGFydCB0aGUgcG9ydGFsLiAgTm8gcGFyYW1ldGVycyBoZXJlLgogCQkgKi8KLQkJUG9y dGFsU3RhcnQocG9ydGFsLCBOVUxMLCAwLCBJbnZhbGlkU25hcHNob3QpOworCQl7CisJCQlib29s CXBsYW5fdmFsaWQgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOworCisJCQlwbGFuX3ZhbGlkID0g UG9ydGFsU3RhcnQocG9ydGFsLCBOVUxMLCAwLCBJbnZhbGlkU25hcHNob3QpOworCQkJQXNzZXJ0 KHBsYW5fdmFsaWQpOworCQl9CiAKIAkJLyoKIAkJICogU2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBv dXRwdXQgZm9ybWF0OiB0ZXh0IHVubGVzcyB3ZSBhcmUgZG9pbmcgYQpAQCAtMTczNSw2ICsxNzQw LDcgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCQkJCQkJ ImNvbW1hbmRzIGlnbm9yZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0aW9uIGJsb2NrIiksCiAJCQkJ IGVycmRldGFpbF9hYm9ydCgpKSk7CiAKK3JlcGxhbjoKIAkvKgogCSAqIENyZWF0ZSB0aGUgcG9y dGFsLiAgQWxsb3cgc2lsZW50IHJlcGxhY2VtZW50IG9mIGFuIGV4aXN0aW5nIHBvcnRhbCBvbmx5 CiAJICogaWYgdGhlIHVubmFtZWQgcG9ydGFsIGlzIHNwZWNpZmllZC4KQEAgLTIwMjYsOSArMjAz MiwxNSBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCVBv cEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkvKgotCSAqIEFuZCB3ZSdyZSByZWFkeSB0byBzdGFydCBw b3J0YWwgZXhlY3V0aW9uLgorCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uICBJZiB0aGUgcG9y dGFsIGNvbnRhaW5zIGEgY2FjaGVkIHBsYW4sIGl0IG11c3QKKwkgKiBiZSByZWNyZWF0ZWQgaWYg dGhlIGNhY2hlZCBwbGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQgd2hlbgor CSAqIGluaXRpYWxpemluZyBvbmUgb2YgdGhlIHBsYW4gdHJlZXMgY29udGFpbmVkIGluIGl0Lgog CSAqLwotCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1zLCAwLCBJbnZhbGlkU25hcHNob3QpOwor CWlmICghUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEludmFsaWRTbmFwc2hvdCkpCisJ eworCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOworCQlnb3RvIHJlcGxhbjsKKwl9CiAKIAkv KgogCSAqIEFwcGx5IHRoZSByZXN1bHQgZm9ybWF0IHJlcXVlc3RzIHRvIHRoZSBwb3J0YWwuCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9w cXVlcnkuYwppbmRleCA0ZWYzNDlkZjhiLi5mY2Y5OTI1ZWQ0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTE5 LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvcHJlcGFyZS5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgiCiAjaW5jbHVkZSAi ZXhlY3V0b3IvdHN0b3JlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJwZ190cmFjZS5oIgpAQCAtMzUsMTIgKzM2LDYgQEAKIFBvcnRhbAkJQWN0aXZlUG9ydGFs ID0gTlVMTDsKIAogCi1zdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4s Ci0JCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKLQkJCQkJCSBQYXJhbUxpc3RJbmZvIHBh cmFtcywKLQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKLQkJCQkJCSBEZXN0UmVj ZWl2ZXIgKmRlc3QsCi0JCQkJCQkgUXVlcnlDb21wbGV0aW9uICpxYyk7CiBzdGF0aWMgdm9pZCBG aWxsUG9ydGFsU3RvcmUoUG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcExldmVsKTsKIHN0YXRpYyB1 aW50NjQgUnVuRnJvbVN0b3JlKFBvcnRhbCBwb3J0YWwsIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9u LCB1aW50NjQgY291bnQsCiAJCQkJCQkgICBEZXN0UmVjZWl2ZXIgKmRlc3QpOwpAQCAtMTE4LDg2 ICsxMTMsNiBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiB9CiAKIAotLyoKLSAq IFByb2Nlc3NRdWVyeQotICoJCUV4ZWN1dGUgYSBzaW5nbGUgcGxhbm5hYmxlIHF1ZXJ5IHdpdGhp biBhIFBPUlRBTF9NVUxUSV9RVUVSWSwKLSAqCQlQT1JUQUxfT05FX1JFVFVSTklORywgb3IgUE9S VEFMX09ORV9NT0RfV0lUSCBwb3J0YWwKLSAqCi0gKglwbGFuOiB0aGUgcGxhbiB0cmVlIGZvciB0 aGUgcXVlcnkKLSAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkKLSAq CXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCi0gKglkZXN0OiB3aGVyZSB0byBzZW5kIHJl c3VsdHMKLSAqCXFjOiB3aGVyZSB0byBzdG9yZSB0aGUgY29tbWFuZCBjb21wbGV0aW9uIHN0YXR1 cyBkYXRhLgotICoKLSAqIHFjIG1heSBiZSBOVUxMIGlmIGNhbGxlciBkb2Vzbid0IHdhbnQgYSBz dGF0dXMgc3RyaW5nLgotICoKLSAqIE11c3QgYmUgY2FsbGVkIGluIGEgbWVtb3J5IGNvbnRleHQg dGhhdCB3aWxsIGJlIHJlc2V0IG9yIGRlbGV0ZWQgb24KLSAqIGVycm9yOyBvdGhlcndpc2UgdGhl IGV4ZWN1dG9yJ3MgbWVtb3J5IHVzYWdlIHdpbGwgYmUgbGVha2VkLgotICovCi1zdGF0aWMgdm9p ZAotUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAotCQkJIGNvbnN0IGNoYXIgKnNvdXJj ZVRleHQsCi0JCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCi0JCQkgUXVlcnlFbnZpcm9ubWVudCAq cXVlcnlFbnYsCi0JCQkgRGVzdFJlY2VpdmVyICpkZXN0LAotCQkJIFF1ZXJ5Q29tcGxldGlvbiAq cWMpCi17Ci0JUXVlcnlEZXNjICAqcXVlcnlEZXNjOwotCi0JLyoKLQkgKiBDcmVhdGUgdGhlIFF1 ZXJ5RGVzYyBvYmplY3QKLQkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwg TlVMTCwgc291cmNlVGV4dCwKLQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNu YXBzaG90LAotCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKLQotCS8qCi0JICog Q2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgotCSAq LwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKLQotCS8qCi0JICogUnVuIHRoZSBwbGFu IHRvIGNvbXBsZXRpb24uCi0JICovCi0JRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2Nh bkRpcmVjdGlvbiwgMCwgdHJ1ZSk7Ci0KLQkvKgotCSAqIEJ1aWxkIGNvbW1hbmQgY29tcGxldGlv biBzdGF0dXMgZGF0YSwgaWYgY2FsbGVyIHdhbnRzIG9uZS4KLQkgKi8KLQlpZiAocWMpCi0Jewot CQlzd2l0Y2ggKHF1ZXJ5RGVzYy0+b3BlcmF0aW9uKQotCQl7Ci0JCQljYXNlIENNRF9TRUxFQ1Q6 Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfU0VMRUNULCBxdWVyeURlc2MtPmVz dGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX0lOU0VSVDoKLQkJ CQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19JTlNFUlQsIHF1ZXJ5RGVzYy0+ZXN0YXRl LT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfVVBEQVRFOgotCQkJCVNl dFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1VQREFURSwgcXVlcnlEZXNjLT5lc3RhdGUtPmVz X3Byb2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIENNRF9ERUxFVEU6Ci0JCQkJU2V0UXVl cnlDb21wbGV0aW9uKHFjLCBDTURUQUdfREVMRVRFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJv Y2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX01FUkdFOgotCQkJCVNldFF1ZXJ5Q29t cGxldGlvbihxYywgQ01EVEFHX01FUkdFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2Vk KTsKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBD TURUQUdfVU5LTk9XTiwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJl YWs7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIE5vdywgd2UgY2xvc2UgZG93biBhbGwgdGhlIHNjYW5z IGFuZCBmcmVlIGFsbG9jYXRlZCByZXNvdXJjZXMuCi0JICovCi0JRXhlY3V0b3JGaW5pc2gocXVl cnlEZXNjKTsKLQlFeGVjdXRvckVuZChxdWVyeURlc2MpOwotCi0JRnJlZVF1ZXJ5RGVzYyhxdWVy eURlc2MpOwotfQotCiAvKgogICogQ2hvb3NlUG9ydGFsU3RyYXRlZ3kKICAqCQlTZWxlY3QgcG9y dGFsIGV4ZWN1dGlvbiBzdHJhdGVneSBnaXZlbiB0aGUgaW50ZW5kZWQgc3RhdGVtZW50IGxpc3Qu CkBAIC00MjgsMTkgKzM0MywyMSBAQCBGZXRjaFN0YXRlbWVudFRhcmdldExpc3QoTm9kZSAqc3Rt dCkKICAqIHByZXNlbnRseSBpZ25vcmVkIGZvciBub24tUE9SVEFMX09ORV9TRUxFQ1QgcG9ydGFs cyAoaXQncyBvbmx5IGludGVuZGVkCiAgKiB0byBiZSB1c2VkIGZvciBjdXJzb3JzKS4KICAqCi0g KiBPbiByZXR1cm4sIHBvcnRhbCBpcyByZWFkeSB0byBhY2NlcHQgUG9ydGFsUnVuKCkgY2FsbHMs IGFuZCB0aGUgcmVzdWx0Ci0gKiB0dXBkZXNjIChpZiBhbnkpIGlzIGtub3duLgorICogVHJ1ZSBp cyByZXR1cm5lZCBpZiBwb3J0YWwgaXMgcmVhZHkgdG8gYWNjZXB0IFBvcnRhbFJ1bigpIGNhbGxz LCBhbmQgdGhlCisgKiByZXN1bHQgdHVwZGVzYyAoaWYgYW55KSBpcyBrbm93bi4gIEZhbHNlIGlm IHRoZSBwbGFuIHRyZWUgaXMgbm8gbG9uZ2VyCisgKiB2YWxpZCwgaW4gd2hpY2ggY2FzZSwgdGhl IGNhbGxlciBtdXN0IHJldHJ5IGFmdGVyIGdlbmVyYXRpbmcgYSBuZXcKKyAqIENhY2hlZFBsYW4u CiAgKi8KLXZvaWQKK2Jvb2wKIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdElu Zm8gcGFyYW1zLAogCQkJaW50IGVmbGFncywgU25hcHNob3Qgc25hcHNob3QpCiB7CiAJUG9ydGFs CQlzYXZlQWN0aXZlUG9ydGFsOwogCVJlc291cmNlT3duZXIgc2F2ZVJlc291cmNlT3duZXI7Ci0J TWVtb3J5Q29udGV4dCBzYXZlUG9ydGFsQ29udGV4dDsKIAlNZW1vcnlDb250ZXh0IG9sZENvbnRl eHQ7CiAJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwotCWludAkJCW15ZWZsYWdzOworCWludAkJCW15 ZWZsYWdzID0gMDsKKwlib29sCQlwbGFuX3ZhbGlkID0gdHJ1ZTsKIAogCUFzc2VydChQb3J0YWxJ c1ZhbGlkKHBvcnRhbCkpOwogCUFzc2VydChwb3J0YWwtPnN0YXR1cyA9PSBQT1JUQUxfREVGSU5F RCk7CkBAIC00NTAsMTUgKzM2NywxMyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJh bUxpc3RJbmZvIHBhcmFtcywKIAkgKi8KIAlzYXZlQWN0aXZlUG9ydGFsID0gQWN0aXZlUG9ydGFs OwogCXNhdmVSZXNvdXJjZU93bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7Ci0Jc2F2ZVBvcnRh bENvbnRleHQgPSBQb3J0YWxDb250ZXh0OwogCVBHX1RSWSgpOwogCXsKIAkJQWN0aXZlUG9ydGFs ID0gcG9ydGFsOwogCQlpZiAocG9ydGFsLT5yZXNvd25lcikKIAkJCUN1cnJlbnRSZXNvdXJjZU93 bmVyID0gcG9ydGFsLT5yZXNvd25lcjsKLQkJUG9ydGFsQ29udGV4dCA9IHBvcnRhbC0+cG9ydGFs Q29udGV4dDsKIAotCQlvbGRDb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFBvcnRhbENv bnRleHQpOworCQlvbGRDb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBvcnRhbC0+cXVl cnlDb250ZXh0KTsKIAogCQkvKiBNdXN0IHJlbWVtYmVyIHBvcnRhbCBwYXJhbSBsaXN0LCBpZiBh bnkgKi8KIAkJcG9ydGFsLT5wb3J0YWxQYXJhbXMgPSBwYXJhbXM7CkBAIC00NzQsNiArMzg5LDgg QEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCXN3 aXRjaCAocG9ydGFsLT5zdHJhdGVneSkKIAkJewogCQkJY2FzZSBQT1JUQUxfT05FX1NFTEVDVDoK KwkJCWNhc2UgUE9SVEFMX09ORV9SRVRVUk5JTkc6CisJCQljYXNlIFBPUlRBTF9PTkVfTU9EX1dJ VEg6CiAKIAkJCQkvKiBNdXN0IHNldCBzbmFwc2hvdCBiZWZvcmUgc3RhcnRpbmcgZXhlY3V0b3Iu ICovCiAJCQkJaWYgKHNuYXBzaG90KQpAQCAtNDkxLDggKzQwOCw4IEBAIFBvcnRhbFN0YXJ0KFBv cnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqLwogCiAJCQkJLyoKLQkJ CQkgKiBDcmVhdGUgUXVlcnlEZXNjIGluIHBvcnRhbCdzIGNvbnRleHQ7IGZvciB0aGUgbW9tZW50 LCBzZXQKLQkJCQkgKiB0aGUgZGVzdGluYXRpb24gdG8gRGVzdE5vbmUuCisJCQkJICogQ3JlYXRl IFF1ZXJ5RGVzYyBpbiBwb3J0YWwtPnF1ZXJ5Q29udGV4dDsgZm9yIHRoZSBtb21lbnQsCisJCQkJ ICogc2V0IHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVyeURl c2MgPSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5z dG10cyksCiAJCQkJCQkJCQkJCU5VTEwsCkBAIC01MDQsMzAgKzQyMSw1MSBAQCBQb3J0YWxTdGFy dChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCQkJCQkJcG9ydGFs LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkJMCk7CiAKKwkJCQkvKiBSZW1lbWJlciBmb3IgUG9ydGFs UnVuTXVsdGkoKS4gKi8KKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1JF VFVSTklORyB8fAorCQkJCQlwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfTU9EX1dJVEgp CisJCQkJCXBvcnRhbC0+cWRlc2NzID0gbGlzdF9tYWtlMShxdWVyeURlc2MpOworCiAJCQkJLyoK IAkJCQkgKiBJZiBpdCdzIGEgc2Nyb2xsYWJsZSBjdXJzb3IsIGV4ZWN1dG9yIG5lZWRzIHRvIHN1 cHBvcnQKIAkJCQkgKiBSRVdJTkQgYW5kIGJhY2t3YXJkcyBzY2FuLCBhcyB3ZWxsIGFzIHdoYXRl dmVyIHRoZSBjYWxsZXIKIAkJCQkgKiBtaWdodCd2ZSBhc2tlZCBmb3IuCiAJCQkJICovCi0JCQkJ aWYgKHBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfU0NST0xMKQorCQkJCWlmIChw b3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUICYmCisJCQkJCShwb3J0YWwtPmN1 cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1NDUk9MTCkpCiAJCQkJCW15ZWZsYWdzID0gZWZsYWdz IHwgRVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FSRDsKIAkJCQllbHNlCiAJCQkJ CW15ZWZsYWdzID0gZWZsYWdzOwogCiAJCQkJLyoKLQkJCQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQg dG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCisJCQkJICogQ2FsbCBFeGVjdXRvclN0 YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gIEEKKwkJCQkgKiBjYWNoZWQg cGxhbiBtYXkgZ2V0IGludmFsaWRhdGVkIGR1cmluZyBwbGFuIGludGlhbGl6YXRpb24uCiAJCQkJ ICovCi0JCQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKTsKKwkJCQlpZiAoIUV4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBteWVmbGFncykpCisJCQkJeworCQkJCQlFeGVjdXRvckVu ZChxdWVyeURlc2MpOworCQkJCQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7CisJCQkJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CisJCQkJCXBsYW5fdmFsaWQgPSBmYWxzZTsKKwkJCQkJZ290byBwbGFu X2luaXRfZmFpbGVkOworCQkJCX0KIAogCQkJCS8qCi0JCQkJICogVGhpcyB0ZWxscyBQb3J0YWxD bGVhbnVwIHRvIHNodXQgZG93biB0aGUgZXhlY3V0b3IKKwkJCQkgKiBUaGlzIHRlbGxzIFBvcnRh bENsZWFudXAgdG8gc2h1dCBkb3duIHRoZSBleGVjdXRvciwgdGhvdWdoCisJCQkJICogbm90IG5l ZWRlZCBmb3IgcXVlcmllcyBoYW5kbGVkIGJ5IFBvcnRhbFJ1bk11bHRpKCkuCiAJCQkJICovCi0J CQkJcG9ydGFsLT5xdWVyeURlc2MgPSBxdWVyeURlc2M7CisJCQkJaWYgKHBvcnRhbC0+c3RyYXRl Z3kgPT0gUE9SVEFMX09ORV9TRUxFQ1QpCisJCQkJCXBvcnRhbC0+cXVlcnlEZXNjID0gcXVlcnlE ZXNjOwogCiAJCQkJLyoKLQkJCQkgKiBSZW1lbWJlciB0dXBsZSBkZXNjcmlwdG9yIChjb21wdXRl ZCBieSBFeGVjdXRvclN0YXJ0KQorCQkJCSAqIFJlbWVtYmVyIHR1cGxlIGRlc2NyaXB0b3IgKGNv bXB1dGVkIGJ5IEV4ZWN1dG9yU3RhcnQpLAorCQkJCSAqIHRob3VnaCBtYWtlIGl0IGluZGVwZW5k ZW50IG9mIFF1ZXJ5RGVzYyBmb3IgcXVlcmllcyBoYW5kbGVkCisJCQkJICogYnkgUG9ydGFsUnVu TXVsdGkoKS4KIAkJCQkgKi8KLQkJCQlwb3J0YWwtPnR1cERlc2MgPSBxdWVyeURlc2MtPnR1cERl c2M7CisJCQkJaWYgKHBvcnRhbC0+c3RyYXRlZ3kgIT0gUE9SVEFMX09ORV9TRUxFQ1QpCisJCQkJ CXBvcnRhbC0+dHVwRGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkocXVlcnlEZXNjLT50dXBEZXNj KTsKKwkJCQllbHNlCisJCQkJCXBvcnRhbC0+dHVwRGVzYyA9IHF1ZXJ5RGVzYy0+dHVwRGVzYzsK IAogCQkJCS8qCiAJCQkJICogUmVzZXQgY3Vyc29yIHBvc2l0aW9uIGRhdGEgdG8gInN0YXJ0IG9m IHF1ZXJ5IgpAQCAtNTM5LDI5ICs0NzcsNiBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQ YXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQkJCWJyZWFr OwogCi0JCQljYXNlIFBPUlRBTF9PTkVfUkVUVVJOSU5HOgotCQkJY2FzZSBQT1JUQUxfT05FX01P RF9XSVRIOgotCi0JCQkJLyoKLQkJCQkgKiBXZSBkb24ndCBzdGFydCB0aGUgZXhlY3V0b3IgdW50 aWwgd2UgYXJlIHRvbGQgdG8gcnVuIHRoZQotCQkJCSAqIHBvcnRhbC4gIFdlIGRvIG5lZWQgdG8g c2V0IHVwIHRoZSByZXN1bHQgdHVwZGVzYy4KLQkJCQkgKi8KLQkJCQl7Ci0JCQkJCVBsYW5uZWRT dG10ICpwc3RtdDsKLQotCQkJCQlwc3RtdCA9IFBvcnRhbEdldFByaW1hcnlTdG10KHBvcnRhbCk7 Ci0JCQkJCXBvcnRhbC0+dHVwRGVzYyA9Ci0JCQkJCQlFeGVjQ2xlYW5UeXBlRnJvbVRMKHBzdG10 LT5wbGFuVHJlZS0+dGFyZ2V0bGlzdCk7Ci0JCQkJfQotCi0JCQkJLyoKLQkJCQkgKiBSZXNldCBj dXJzb3IgcG9zaXRpb24gZGF0YSB0byAic3RhcnQgb2YgcXVlcnkiCi0JCQkJICovCi0JCQkJcG9y dGFsLT5hdFN0YXJ0ID0gdHJ1ZTsKLQkJCQlwb3J0YWwtPmF0RW5kID0gZmFsc2U7CS8qIGFsbG93 IGZldGNoZXMgKi8KLQkJCQlwb3J0YWwtPnBvcnRhbFBvcyA9IDA7Ci0JCQkJYnJlYWs7Ci0KIAkJ CWNhc2UgUE9SVEFMX1VUSUxfU0VMRUNUOgogCiAJCQkJLyoKQEAgLTU4NCw3ICs0OTksODIgQEAg UG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJYnJl YWs7CiAKIAkJCWNhc2UgUE9SVEFMX01VTFRJX1FVRVJZOgotCQkJCS8qIE5lZWQgZG8gbm90aGlu ZyBub3cgKi8KKwkJCQl7CisJCQkJCUxpc3RDZWxsICAgKmxjOworCQkJCQlib29sCQlmaXJzdCA9 IHRydWU7CisKKwkJCQkJbXllZmxhZ3MgPSBlZmxhZ3M7CisJCQkJCWZvcmVhY2gobGMsIHBvcnRh bC0+c3RtdHMpCisJCQkJCXsKKwkJCQkJCVBsYW5uZWRTdG10ICpwbGFuID0gbGZpcnN0X25vZGUo UGxhbm5lZFN0bXQsIGxjKTsKKwkJCQkJCWJvb2wJCWlzX3V0aWxpdHkgPSAocGxhbi0+dXRpbGl0 eVN0bXQgIT0gTlVMTCk7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBQdXNoIHRoZSBzbmFwc2hvdCB0 byBiZSB1c2VkIGJ5IHRoZSBleGVjdXRvci4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFpc191dGls aXR5KQorCQkJCQkJeworCQkJCQkJCS8qCisJCQkJCQkJICogTXVzdCBjb3B5IHRoZSBzbmFwc2hv dCBmb3IgYWxsIHN0YXRlbWVudHMKKwkJCQkJCQkgKiBleGNlcHQgdGhlYyBmaXJzdCBhcyB3ZSds bCBuZWVkIHRvIHVwZGF0ZSBpdHMKKwkJCQkJCQkgKiBjb21tYW5kIElELgorCQkJCQkJCSAqLwor CQkJCQkJCWlmICghZmlyc3QpCisJCQkJCQkJCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOworCQkJCQkJCWVsc2UKKwkJCQkJCQkJUHVzaEFjdGl2ZVNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCQkJCQl9CisKKwkJCQkJCS8qCisJCQkJCQkg KiBGcm9tIHRoZSAybmQgc3RhdGVtZW50IG9ud2FyZHMsIHVwZGF0ZSB0aGUgY29tbWFuZAorCQkJ CQkJICogSUQgYW5kIHRoZSBzbmFwc2hvdCB0byBtYXRjaC4KKwkJCQkJCSAqLworCQkJCQkJaWYg KCFmaXJzdCkKKwkJCQkJCXsKKwkJCQkJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCQkJ CQkJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CisJCQkJCQl9CisKKwkJCQkJCWZp cnN0ID0gZmFsc2U7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYy4g IERlc3RSZWNlaXZlciB3aWxsIGJlIHNldCBpbgorCQkJCQkJICogUG9ydGFsUnVuTXVsdGkoKSBi ZWZvcmUgY2FsbGluZyBFeGVjdXRvclJ1bigpLgorCQkJCQkJICovCisJCQkJCQlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MocGxhbiwKKwkJCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkJ CXBvcnRhbC0+c291cmNlVGV4dCwKKwkJCQkJCQkJCQkJCQkhaXNfdXRpbGl0eSA/CisJCQkJCQkJ CQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSA6CisJCQkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90 LAorCQkJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJCQkJCQlOVUxMLAorCQkJ CQkJCQkJCQkJCXBhcmFtcywKKwkJCQkJCQkJCQkJCQlwb3J0YWwtPnF1ZXJ5RW52LCAwKTsKKwor CQkJCQkJLyogUmVtZW1iZXIgZm9yIFBvcnRhbFJ1bk11bHRpKCkgKi8KKwkJCQkJCXBvcnRhbC0+ cWRlc2NzID0gbGFwcGVuZChwb3J0YWwtPnFkZXNjcywgcXVlcnlEZXNjKTsKKworCQkJCQkJaWYg KGlzX3V0aWxpdHkpCisJCQkJCQkJY29udGludWU7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBDYWxs IEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IKKwkJCQkJCSAqIGV4ZWN1dGlv bi4gIEEgY2FjaGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRlZAorCQkJCQkJICogZHVyaW5nIHBs YW4gaW50aWFsaXphdGlvbi4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFFeGVjdXRvclN0YXJ0KHF1 ZXJ5RGVzYywgbXllZmxhZ3MpKQorCQkJCQkJeworCQkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CisJCQkJCQkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKwkJCQkJCQlGcmVlUXVlcnlEZXNjKHF1 ZXJ5RGVzYyk7CisJCQkJCQkJcGxhbl92YWxpZCA9IGZhbHNlOworCQkJCQkJCWdvdG8gcGxhbl9p bml0X2ZhaWxlZDsKKwkJCQkJCX0KKwkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQkJCX0K KwkJCQl9CisKIAkJCQlwb3J0YWwtPnR1cERlc2MgPSBOVUxMOwogCQkJCWJyZWFrOwogCQl9CkBA IC01OTcsMTkgKzU4NywyMCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJ bmZvIHBhcmFtcywKIAkJLyogUmVzdG9yZSBnbG9iYWwgdmFycyBhbmQgcHJvcGFnYXRlIGVycm9y ICovCiAJCUFjdGl2ZVBvcnRhbCA9IHNhdmVBY3RpdmVQb3J0YWw7CiAJCUN1cnJlbnRSZXNvdXJj ZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JCVBvcnRhbENvbnRleHQgPSBzYXZlUG9ydGFs Q29udGV4dDsKIAogCQlQR19SRV9USFJPVygpOwogCX0KIAlQR19FTkRfVFJZKCk7CiAKKwlwb3J0 YWwtPnN0YXR1cyA9IFBPUlRBTF9SRUFEWTsKKworcGxhbl9pbml0X2ZhaWxlZDoKIAlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkQ29udGV4dCk7CiAKIAlBY3RpdmVQb3J0YWwgPSBzYXZlQWN0aXZl UG9ydGFsOwogCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JUG9y dGFsQ29udGV4dCA9IHNhdmVQb3J0YWxDb250ZXh0OwogCi0JcG9ydGFsLT5zdGF0dXMgPSBQT1JU QUxfUkVBRFk7CisJcmV0dXJuIHBsYW5fdmFsaWQ7CiB9CiAKIC8qCkBAIC0xMTk2LDcgKzExODcs NyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJICAgUXVlcnlDb21wbGV0aW9u ICpxYykKIHsKIAlib29sCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gZmFsc2U7Ci0JTGlzdENlbGwg ICAqc3RtdGxpc3RfaXRlbTsKKwlMaXN0Q2VsbCAgICpxZGVzY19pdGVtOwogCiAJLyoKIAkgKiBJ ZiB0aGUgZGVzdGluYXRpb24gaXMgRGVzdFJlbW90ZUV4ZWN1dGUsIGNoYW5nZSB0byBEZXN0Tm9u ZS4gIFRoZQpAQCAtMTIxNyw5ICsxMjA4LDEwIEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0 YWwsCiAJICogTG9vcCB0byBoYW5kbGUgdGhlIGluZGl2aWR1YWwgcXVlcmllcyBnZW5lcmF0ZWQg ZnJvbSBhIHNpbmdsZSBwYXJzZXRyZWUKIAkgKiBieSBhbmFseXNpcyBhbmQgcmV3cml0ZS4KIAkg Ki8KLQlmb3JlYWNoKHN0bXRsaXN0X2l0ZW0sIHBvcnRhbC0+c3RtdHMpCisJZm9yZWFjaChxZGVz Y19pdGVtLCBwb3J0YWwtPnFkZXNjcykKIAl7Ci0JCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJz dF9ub2RlKFBsYW5uZWRTdG10LCBzdG10bGlzdF9pdGVtKTsKKwkJUXVlcnlEZXNjICpxZGVzYyA9 IChRdWVyeURlc2MgKikgbGZpcnN0KHFkZXNjX2l0ZW0pOworCQlQbGFubmVkU3RtdCAqcHN0bXQg PSBxZGVzYy0+cGxhbm5lZHN0bXQ7CiAKIAkJLyoKIAkJICogSWYgd2UgZ290IGEgY2FuY2VsIHNp Z25hbCBpbiBwcmlvciBjb21tYW5kLCBxdWl0CkBAIC0xMjM2LDMzICsxMjI4LDI2IEBAIFBvcnRh bFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQlpZiAobG9nX2V4ZWN1dG9yX3N0YXRzKQogCQkJ CVJlc2V0VXNhZ2UoKTsKIAotCQkJLyoKLQkJCSAqIE11c3QgYWx3YXlzIGhhdmUgYSBzbmFwc2hv dCBmb3IgcGxhbm5hYmxlIHF1ZXJpZXMuICBGaXJzdCB0aW1lCi0JCQkgKiB0aHJvdWdoLCB0YWtl IGEgbmV3IHNuYXBzaG90OyBmb3Igc3Vic2VxdWVudCBxdWVyaWVzIGluIHRoZQotCQkJICogc2Ft ZSBwb3J0YWwsIGp1c3QgdXBkYXRlIHRoZSBzbmFwc2hvdCdzIGNvcHkgb2YgdGhlIGNvbW1hbmQK LQkJCSAqIGNvdW50ZXIuCi0JCQkgKi8KKwkJCS8qIFB1c2ggdGhlIHNuYXBzaG90IGZvciBwbGFu bmFibGUgcXVlcmllcy4gKi8KIAkJCWlmICghYWN0aXZlX3NuYXBzaG90X3NldCkKIAkJCXsKLQkJ CQlTbmFwc2hvdAlzbmFwc2hvdCA9IEdldFRyYW5zYWN0aW9uU25hcHNob3QoKTsKKwkJCQlTbmFw c2hvdAlzbmFwc2hvdCA9IHFkZXNjLT5zbmFwc2hvdDsKIAotCQkJCS8qIElmIHRvbGQgdG8sIHJl Z2lzdGVyIHRoZSBzbmFwc2hvdCBhbmQgc2F2ZSBpbiBwb3J0YWwgKi8KKwkJCQkvKgorCQkJCSAq IElmIHRvbGQgdG8sIHJlZ2lzdGVyIHRoZSBzbmFwc2hvdCBhbmQgc2F2ZSBpbiBwb3J0YWwKKwkJ CQkgKgorCQkJCSAqIE5vdGUgdGhhdCB0aGUgY29tbWFuZCBJRCBvZiBxZGVzYy0+c25hcHNob3Qg Zm9yIDJuZCBxdWVyeQorCQkJCSAqIG9ud2FyZHMgd291bGQgaGF2ZSBiZWVuIHVwZGF0ZWQgaW4g UG9ydGFsU3RhcnQoKSB0byBhY2NvdW50CisJCQkJICogZm9yIENDSSgpIGRvbmUgYmV0d2VlbiBx dWVyaWVzLCBidXQgaXQncyBPSyB0aGF0IGhlcmUgd2UKKwkJCQkgKiBkb24ndCBsaWtld2lzZSB1 cGRhdGUgaG9sZFNuYXBzaG90J3MgY29tbWFuZCBJRC4KKwkJCQkgKi8KIAkJCQlpZiAoc2V0SG9s ZFNuYXBzaG90KQogCQkJCXsKIAkJCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBz aG90KTsKIAkJCQkJcG9ydGFsLT5ob2xkU25hcHNob3QgPSBzbmFwc2hvdDsKIAkJCQl9CiAKLQkJ CQkvKgotCQkJCSAqIFdlIGNhbid0IGhhdmUgdGhlIGhvbGRTbmFwc2hvdCBhbHNvIGJlIHRoZSBh Y3RpdmUgb25lLAotCQkJCSAqIGJlY2F1c2UgVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQg d291bGQgY29tcGxhaW4uICBTbwotCQkJCSAqIGZvcmNlIGFuIGV4dHJhIHNuYXBzaG90IGNvcHku ICBQbGFpbiBQdXNoQWN0aXZlU25hcHNob3QKLQkJCQkgKiB3b3VsZCBoYXZlIGNvcGllZCB0aGUg dHJhbnNhY3Rpb24gc25hcHNob3QgYW55d2F5LCBzbyB0aGlzCi0JCQkJICogb25seSBhZGRzIGEg Y29weSBzdGVwIHdoZW4gc2V0SG9sZFNuYXBzaG90IGlzIHRydWUuICAoSXQncwotCQkJCSAqIG9r YXkgZm9yIHRoZSBjb21tYW5kIElEIG9mIHRoZSBhY3RpdmUgc25hcHNob3QgdG8gZGl2ZXJnZQot CQkJCSAqIGZyb20gd2hhdCBob2xkU25hcHNob3QgaGFzLikKLQkJCQkgKi8KLQkJCQlQdXNoQ29w aWVkU25hcHNob3Qoc25hcHNob3QpOworCQkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7 CiAKIAkJCQkvKgogCQkJCSAqIEFzIGZvciBQT1JUQUxfT05FX1NFTEVDVCBwb3J0YWxzLCBpdCBk b2VzIG5vdCBzZWVtCkBAIC0xMjcxLDI2ICsxMjU2LDM5IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRh bCBwb3J0YWwsCiAKIAkJCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gdHJ1ZTsKIAkJCX0KLQkJCWVs c2UKLQkJCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCisJCQkvKgorCQkJICog UnVuIHRoZSBwbGFuIHRvIGNvbXBsZXRpb24uCisJCQkgKi8KKwkJCXFkZXNjLT5kZXN0ID0gZGVz dDsKKwkJCUV4ZWN1dG9yUnVuKHFkZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7 CisKKwkJCS8qCisJCQkgKiBCdWlsZCBjb21tYW5kIGNvbXBsZXRpb24gc3RhdHVzIGRhdGEgaWYg bmVlZGVkLgorCQkJICovCiAJCQlpZiAocHN0bXQtPmNhblNldFRhZykKIAkJCXsKLQkJCQkvKiBz dGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAot CQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCi0JCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1z LAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAotCQkJCQkJCSBkZXN0LCBxYyk7Ci0JCQl9Ci0J CQllbHNlCi0JCQl7Ci0JCQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFn ICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAotCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQs Ci0JCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52 LAotCQkJCQkJCSBhbHRkZXN0LCBOVUxMKTsKKwkJCQlzd2l0Y2ggKHFkZXNjLT5vcGVyYXRpb24p CisJCQkJeworCQkJCQljYXNlIENNRF9TRUxFQ1Q6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24o cWMsIENNRFRBR19TRUxFQ1QsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQli cmVhazsKKwkJCQkJY2FzZSBDTURfSU5TRVJUOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFj LCBDTURUQUdfSU5TRVJULCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJl YWs7CisJCQkJCWNhc2UgQ01EX1VQREFURToKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywg Q01EVEFHX1VQREFURSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFr OworCQkJCQljYXNlIENNRF9ERUxFVEU6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENN RFRBR19ERUxFVEUsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsK KwkJCQkJY2FzZSBDTURfTUVSR0U6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRB R19NRVJHRSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJ CQlkZWZhdWx0OgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfVU5LTk9XTiwg cWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCX0KIAkJCX0K IAogCQkJaWYgKGxvZ19leGVjdXRvcl9zdGF0cykKQEAgLTEzNDUsMTIgKzEzNDMsMTIgQEAgUG9y dGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJaWYgKHBvcnRhbC0+c3RtdHMgPT0gTklMKQog CQkJYnJlYWs7CiAKLQkJLyoKLQkJICogSW5jcmVtZW50IGNvbW1hbmQgY291bnRlciBiZXR3ZWVu IHF1ZXJpZXMsIGJ1dCBub3QgYWZ0ZXIgdGhlIGxhc3QKLQkJICogb25lLgotCQkgKi8KLQkJaWYg KGxuZXh0KHBvcnRhbC0+c3RtdHMsIHN0bXRsaXN0X2l0ZW0pICE9IE5VTEwpCi0JCQlDb21tYW5k Q291bnRlckluY3JlbWVudCgpOworCQlpZiAocWRlc2MtPmVzdGF0ZSkKKwkJeworCQkJRXhlY3V0 b3JGaW5pc2gocWRlc2MpOworCQkJRXhlY3V0b3JFbmQocWRlc2MpOworCQl9CisJCUZyZWVRdWVy eURlc2MocWRlc2MpOwogCX0KIAogCS8qIFBvcCB0aGUgc25hcHNob3QgaWYgd2UgcHVzaGVkIG9u ZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9z cmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IDA2ZGZhODVmMDQuLjBjYWQ0 NTBkY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAtMjAxLDYgKzIwMSwxMyBA QCBDcmVhdGVQb3J0YWwoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbGxvd0R1cCwgYm9vbCBkdXBT aWxlbnQpCiAJcG9ydGFsLT5wb3J0YWxDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRv cFBvcnRhbENvbnRleHQsCiAJCQkJCQkJCQkJCQkgICJQb3J0YWxDb250ZXh0IiwKIAkJCQkJCQkJ CQkJCSAgQUxMT0NTRVRfU01BTExfU0laRVMpOworCS8qCisJICogaW5pdGlhbGl6ZSBwb3J0YWwn cyBxdWVyeSBjb250ZXh0IHRvIHN0b3JlIFF1ZXJ5RGVzY3MgY3JlYXRlZCBkdXJpbmcKKwkgKiBQ b3J0YWxTdGFydCgpIGFuZCB0aGVuIHVzZWQgaW4gUG9ydGFsUnVuKCkuCisJICovCisJcG9ydGFs LT5xdWVyeUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wUG9ydGFsQ29udGV4dCwK KwkJCQkJCQkJCQkJCSAiUG9ydGFsUXVlcnlDb250ZXh0IiwKKwkJCQkJCQkJCQkJCSBBTExPQ1NF VF9TTUFMTF9TSVpFUyk7CiAKIAkvKiBjcmVhdGUgYSByZXNvdXJjZSBvd25lciBmb3IgdGhlIHBv cnRhbCAqLwogCXBvcnRhbC0+cmVzb3duZXIgPSBSZXNvdXJjZU93bmVyQ3JlYXRlKEN1clRyYW5z YWN0aW9uUmVzb3VyY2VPd25lciwKQEAgLTIyNCw2ICsyMzEsNyBAQCBDcmVhdGVQb3J0YWwoY29u c3QgY2hhciAqbmFtZSwgYm9vbCBhbGxvd0R1cCwgYm9vbCBkdXBTaWxlbnQpCiAKIAkvKiBmb3Ig bmFtZWQgcG9ydGFscyByZXVzZSBwb3J0YWwtPm5hbWUgY29weSAqLwogCU1lbW9yeUNvbnRleHRT ZXRJZGVudGlmaWVyKHBvcnRhbC0+cG9ydGFsQ29udGV4dCwgcG9ydGFsLT5uYW1lWzBdID8gcG9y dGFsLT5uYW1lIDogIjx1bm5hbWVkPiIpOworCU1lbW9yeUNvbnRleHRTZXRJZGVudGlmaWVyKHBv cnRhbC0+cXVlcnlDb250ZXh0LCBwb3J0YWwtPm5hbWVbMF0gPyBwb3J0YWwtPm5hbWUgOiAiPHVu bmFtZWQ+Iik7CiAKIAlyZXR1cm4gcG9ydGFsOwogfQpAQCAtNTk0LDYgKzYwMiw3IEBAIFBvcnRh bERyb3AoUG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcENvbW1pdCkKIAogCS8qIHJlbGVhc2Ugc3Vi c2lkaWFyeSBzdG9yYWdlICovCiAJTWVtb3J5Q29udGV4dERlbGV0ZShwb3J0YWwtPnBvcnRhbENv bnRleHQpOworCU1lbW9yeUNvbnRleHREZWxldGUocG9ydGFsLT5xdWVyeUNvbnRleHQpOwogCiAJ LyogcmVsZWFzZSBwb3J0YWwgc3RydWN0IChpdCdzIGluIFRvcFBvcnRhbENvbnRleHQpICovCiAJ cGZyZWUocG9ydGFsKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4u aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCAzZDNlNjMyYTBjLi4zOTJh YmI1MTUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC04OCw3ICs4OCwxMSBAQCBleHRlcm4g dm9pZCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50 bywKIAkJCQkJCQkgIEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAog CQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52 KTsKIAotZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 LCBJbnRvQ2xhdXNlICppbnRvLAorZXh0ZXJuIFF1ZXJ5RGVzYyAqRXhwbGFpblF1ZXJ5RGVzYyhQ bGFubmVkU3RtdCAqc3RtdCwgc3RydWN0IENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCSBjb25zdCBj aGFyICpxdWVyeVN0cmluZywgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKKwkJ CQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKK2V4 dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAorCQkJCQkJICAg SW50b0NsYXVzZSAqaW50bywKIAkJCQkJCSAgIEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIg KnF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52LAogCQkJCQkJICAgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9u LApAQCAtMTA0LDYgKzEwOCw3IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5RdWVyeVBhcmFtZXRlcnMo RXhwbGFpblN0YXRlICplcywgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIGludCBtCiAKIGV4dGVybiB2 b2lkIEV4cGxhaW5CZWdpbk91dHB1dChFeHBsYWluU3RhdGUgKmVzKTsKIGV4dGVybiB2b2lkIEV4 cGxhaW5FbmRPdXRwdXQoRXhwbGFpblN0YXRlICplcyk7CitleHRlcm4gdm9pZCBFeHBsYWluUmVz ZXRPdXRwdXQoRXhwbGFpblN0YXRlICplcyk7CiBleHRlcm4gdm9pZCBFeHBsYWluU2VwYXJhdGVQ bGFucyhFeHBsYWluU3RhdGUgKmVzKTsKIAogZXh0ZXJuIHZvaWQgRXhwbGFpblByb3BlcnR5TGlz dChjb25zdCBjaGFyICpxbGFiZWwsIExpc3QgKmRhdGEsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jb21tYW5kcy90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKaW5k ZXggNDMwZTNjYTdkZC4uZDRmN2MyOTMwMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdHJpZ2dlci5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaApAQCAtMjU3 LDYgKzI1Nyw3IEBAIGV4dGVybiB2b2lkIEV4ZWNBU1RydW5jYXRlVHJpZ2dlcnMoRVN0YXRlICpl c3RhdGUsCiAKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luWGFjdCh2b2lkKTsKIGV4dGVy biB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luUXVlcnkodm9pZCk7CitleHRlcm4gdm9pZCBBZnRlclRy aWdnZXJDYW5jZWxRdWVyeSh2b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckVuZFF1ZXJ5 KEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckZpcmVEZWZlcnJlZCh2 b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckVuZFhhY3QoYm9vbCBpc0NvbW1pdCk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCA3MmNiZjEyMGM1Li4xMGM1Y2RhMTY5IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTczLDcgKzczLDcgQEAKIAogCiAvKiBIb29rIGZvciBwbHVn aW5zIHRvIGdldCBjb250cm9sIGluIEV4ZWN1dG9yU3RhcnQoKSAqLwotdHlwZWRlZiB2b2lkICgq RXhlY3V0b3JTdGFydF9ob29rX3R5cGUpIChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFn cyk7Cit0eXBlZGVmIGJvb2wgKCpFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSkgKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiBQR0RMTElNUE9SVCBFeGVjdXRvclN0YXJ0 X2hvb2tfdHlwZSBFeGVjdXRvclN0YXJ0X2hvb2s7CiAKIC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8g Z2V0IGNvbnRyb2wgaW4gRXhlY3V0b3JSdW4oKSAqLwpAQCAtMTk4LDggKzE5OCw4IEBAIEV4ZWNH ZXRKdW5rQXR0cmlidXRlKFR1cGxlVGFibGVTbG90ICpzbG90LCBBdHRyTnVtYmVyIGF0dG5vLCBi b29sICppc051bGwpCiAvKgogICogcHJvdG90eXBlcyBmcm9tIGZ1bmN0aW9ucyBpbiBleGVjTWFp bi5jCiAgKi8KLWV4dGVybiB2b2lkIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2Ms IGludCBlZmxhZ3MpOwotZXh0ZXJuIHZvaWQgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURl c2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CitleHRlcm4gYm9vbCBFeGVjdXRvclN0YXJ0KFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKK2V4dGVybiBib29sIHN0YW5kYXJkX0V4 ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZv aWQgRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQlTY2FuRGlyZWN0aW9u IGRpcmVjdGlvbiwgdWludDY0IGNvdW50LCBib29sIGV4ZWN1dGVfb25jZSk7CiBleHRlcm4gdm9p ZCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKaW5kZXggODQ2ZWIzMmExZC4uYmI1NzM0ZWRiNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK QEAgLTY3MCw2ICs2NzAsOSBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAlpbnQJCQllc190b3Bf ZWZsYWdzOwkvKiBlZmxhZ3MgcGFzc2VkIHRvIEV4ZWN1dG9yU3RhcnQgKi8KIAlpbnQJCQllc19p bnN0cnVtZW50OwkvKiBPUiBvZiBJbnN0cnVtZW50T3B0aW9uIGZsYWdzICovCiAJYm9vbAkJZXNf ZmluaXNoZWQ7CS8qIHRydWUgd2hlbiBFeGVjdXRvckZpbmlzaCBpcyBkb25lICovCisJYm9vbAkJ ZXNfY2FuY2VsZWQ7CS8qIHRydWUgd2hlbiBleGVjdXRpb24gd2FzIGNhbmNlbGVkCisJCQkJCQkJ CSAqIHVwb24gZW5jb3VudGVyaW5nIHRoYXQgcGxhbiB3YXMgaW52YWxpZGVkCisJCQkJCQkJCSAq IGR1cmluZyBFeGVjSW5pdE5vZGUoKSAqLwogCiAJTGlzdAkgICAqZXNfZXhwcmNvbnRleHRzOwkv KiBMaXN0IG9mIEV4cHJDb250ZXh0cyB3aXRoaW4gRVN0YXRlICovCiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5LmggYi9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oCmluZGV4 IGE1ZTY1Yjk4YWEuLjU3N2I4MWE5ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvcHF1 ZXJ5LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9wcXVlcnkuaApAQCAtMjksNyArMjksNyBAQCBl eHRlcm4gTGlzdCAqRmV0Y2hQb3J0YWxUYXJnZXRMaXN0KFBvcnRhbCBwb3J0YWwpOwogCiBleHRl cm4gTGlzdCAqRmV0Y2hTdGF0ZW1lbnRUYXJnZXRMaXN0KE5vZGUgKnN0bXQpOwogCi1leHRlcm4g dm9pZCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKK2V4 dGVybiBib29sIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1z LAogCQkJCQkJaW50IGVmbGFncywgU25hcHNob3Qgc25hcHNob3QpOwogCiBleHRlcm4gdm9pZCBQ b3J0YWxTZXRSZXN1bHRGb3JtYXQoUG9ydGFsIHBvcnRhbCwgaW50IG5Gb3JtYXRzLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0 YWwuaAppbmRleCBhYTA4YjFlMGZjLi5hZjA1OWUzMGY4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaApAQCAtMTM4 LDYgKzEzOCw4IEBAIHR5cGVkZWYgc3RydWN0IFBvcnRhbERhdGEKIAlRdWVyeUNvbXBsZXRpb24g cWM7CQkJLyogY29tbWFuZCBjb21wbGV0aW9uIGRhdGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICovCiAJ TGlzdAkgICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQbGFubmVkU3RtdHMgKi8KIAlDYWNoZWRQbGFu ICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBzdG10cyBhcmUgZnJvbSBvbmUgKi8KKwlMaXN0 CSAgICpxZGVzY3M7CQkJLyogbGlzdCBvZiBRdWVyeURlc2NzICovCisJTWVtb3J5Q29udGV4dCBx dWVyeUNvbnRleHQ7CS8qIG1lbW9yeSBmb3IgUXVlcnlEZXNjcyBhbmQgY2hpbGRyZW4gKi8KIAog CVBhcmFtTGlzdEluZm8gcG9ydGFsUGFyYW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVyeSAq LwogCVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52OyAvKiBlbnZpcm9ubWVudCBmb3IgcXVlcnkg Ki8KLS0gCjIuMzUuMwoK --0000000000006c6975060667113b Content-Type: application/octet-stream; name="v48-0001-Assorted-tightening-in-various-ExecEnd-routines.patch" Content-Disposition: attachment; filename="v48-0001-Assorted-tightening-in-various-ExecEnd-routines.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln2wv9t87 RnJvbSA5Njk4M2M0NTE5ZmUwMThiMTBiMGI4NTE3ZDIwNWNkZWJmY2I5NWEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjggU2VwIDIwMjMgMTY6NTY6MjkgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 OCAxLzhdIEFzc29ydGVkIHRpZ2h0ZW5pbmcgaW4gdmFyaW91cyBFeGVjRW5kKCkqIHJvdXRpbmVz CgpUaGlzIGluY2x1ZGVzIGFkZGluZyBOVUxMbmVzcyBjaGVja3Mgb24gcG9pbnRlcnMgYmVmb3Jl IGNsZWFuaW5nIHRoZW0KaW4gdXAuICBNYW55IEV4ZWNFbmQqKCkgcm91dGluZXMgYWxyZWFkeSBw ZXJmb3JtIHRoaXMgY2hlY2ssIGJ1dCBhIGZldwppbnN0YW5jZXMgcmVtYWluLiAgVGhlc2UgTlVM TG5lc3MgY2hlY2tzIG1pZ2h0IHNlZW0gcmVkdW5kYW50IGFzCnRoaW5ncyBzdGFuZCBzaW5jZSB0 aGUgRXhlY0VuZCooKSByb3V0aW5lcyBvcGVyYXRlIHVuZGVyIHRoZQphc3N1bXB0aW9uIHRoYXQg dGhlaXIgbWF0Y2hpbmcgRXhlY0luaXQqIHJvdXRpbmUgd291bGQgaGF2ZSBmdWxseQpleGVjdXRl ZCwgZW5zdXJpbmcgcG9pbnRlcnMgYXJlIHNldC4gSG93ZXZlciwgYSBmb3J0aGNvbWluZyBwYXRj aCB3aWxsCm1vZGlmeSBFeGVjSW5pdCogcm91dGluZXMgdG8gc29tZXRpbWVzIGV4aXQgZWFybHks IHBvdGVudGlhbGx5IGxlYXZpbmcKc29tZSBwb2ludGVycyBpbiBhbiB1bmRldGVybWluZWQgc3Rh dGUsIHNvIGl0IHdpbGwgYmVjb21lIGNydWNpYWwgdG8KaGF2ZSB0aGVzZSBOVUxMbmVzcyBjaGVj a3MgaW4gcGxhY2UuCgpUaGlzIGFsc28gYWRkcyBhIGd1YXJkIGF0IHRoZSBiZWdpZ2dpbmcgb2Yg RXZhbFBsYW5RdWFsRW5kKCkgdG8gcmV0dXJuCmVhcmx5IGlmIHRoZSBFUFFTdGF0ZSBkb2VzIG5v dCBhcHBlYXIgdG8gaGF2ZSBiZWVuIGluaXRpYWxpemVkLiAgVGhhdApjYXNlIGNhbiBoYXBwZW4g aWYgdGhlIGNvcnJlc3BvbmRpbmcgRXhlY0luaXQqKCkgcm91dGluZSByZXR1cm5lZAplYXJseSB3 aXRob3V0IGNhbGxpbmcgRXZhbFBsYW5RdWFsSW5pdCgpLgoKV2hpbGUgYXQgaXQsIHRoaXMgY29t bWl0IGVuc3VyZXMgdGhhdCBwb2ludGVycyBhcmUgY29uc2lzdGVudGx5IHNldAp0byBOVUxMIGFm dGVyIGNsZWFudXAgaW4gYWxsIEV4ZWNFbmQqKCkgcm91dGluZXMuCgpGaW5hbGx5LCBmb3IgZW5o YW5jZWQgY29uc2lzdGVuY3ksIHRoZSBmb3JtYXQgb2YgTlVMTG5lc3MgY2hlY2tzIGhhcwpiZWVu IHN0YW5kYXJkaXplZCB0byAiaWYgKHBvaW50ZXIgIT0gTlVMTCkiLCByZXBsYWNpbmcgdGhlIHBy ZXZpb3VzCiJpZiAocG9pbnRlcikiIHN0eWxlLgoKUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzCkRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9o cEF5Y0xRdVY3b29pdEVFcGJLQjBPX21nQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgIHwgIDQgKysKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVBZ2cuYyAgICAgICAgICAgICB8IDI3ICsrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICAgICB8ICAzICsrCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwQW5kLmMgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJpdG1hcEhlYXBzY2FuLmMgIHwgNDcgKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jIHwgMjMgKysrKystLS0tLS0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jICAgICAgICB8ICA0ICstCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyAgICAgfCAxNyArKysrLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUdyb3VwLmMgICAgICAgICAgIHwgIDYgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSGFzaC5jICAgICAgICAgICAgfCAgNiArLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVI YXNoam9pbi5jICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVt ZW50YWxTb3J0LmMgfCAxMyArKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9u bHlzY2FuLmMgICB8IDI1ICsrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4c2Nhbi5jICAgICAgIHwgMjMgKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVMaW1pdC5jICAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2Nr Um93cy5jICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5j ICAgICAgICB8ICA1ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyAgICAg ICAgIHwgIDggKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgICAg IHwgIDMgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyAgICAgICB8ICAy ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICB8IDExICsrKyst CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYyAgICAgICAgfCAgMiArCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jICAgICAgfCAgMSArCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYyAgfCAyNCArKysrKysrKystLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYyAgICAgIHwgIDcgKysrLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgIHwgMTYgKysrLS0tLS0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXRPcC5jICAgICAgICAgICB8ICA2ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNvcnQuYyAgICAgICAgICAgIHwgIDUgKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlU3VicXVlcnlzY2FuLmMgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFi bGVGdW5jc2Nhbi5jICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdl c2Nhbi5jICAgIHwgMTIgKysrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5j ICAgICAgICAgfCAgOCArKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgICAg ICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgICAg fCA0MSArKysrKysrKysrKysrKy0tLS0tCiAzNyBmaWxlcyBjaGFuZ2VkLCAyNDggaW5zZXJ0aW9u cygrKSwgMTIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDRjNWE3 YmJmNjIuLmY3ZjE4ZDMwNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMzAxMCw2ICsz MDEwLDEwIEBAIEV2YWxQbGFuUXVhbEVuZChFUFFTdGF0ZSAqZXBxc3RhdGUpCiAJTWVtb3J5Q29u dGV4dCBvbGRjb250ZXh0OwogCUxpc3RDZWxsICAgKmw7CiAKKwkvKiBOb3RoaW5nIHRvIGRvIGlm IG5vIEV2YWxQbGFuUXVhbEluaXQoKSB3YXMgZG9uZSB0byBiZWdpbiB3aXRoLiAqLworCWlmIChl cHFzdGF0ZS0+cGFyZW50ZXN0YXRlID09IE5VTEwpCisJCXJldHVybjsKKwogCXJ0c2l6ZSA9IGVw cXN0YXRlLT5wYXJlbnRlc3RhdGUtPmVzX3JhbmdlX3RhYmxlX3NpemU7CiAKIAkvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUFnZy5jCmluZGV4IGYxNTRmMjg5MDIuLmFmMjJiMTY3NmYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQWdnLmMKQEAgLTQzMDQsNyArNDMwNCw2IEBAIEdldEFnZ0luaXRWYWwoRGF0dW0gdGV4dElu aXRWYWwsIE9pZCB0cmFuc3R5cGUpCiB2b2lkCiBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQog ewotCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKIAlpbnQJCQl0cmFuc25vOwogCWludAkJCW51bUdy b3VwaW5nU2V0cyA9IE1heChub2RlLT5tYXhzZXRzLCAxKTsKIAlpbnQJCQlzZXRubzsKQEAgLTQz MTQsNyArNDMxMyw3IEBAIEV4ZWNFbmRBZ2coQWdnU3RhdGUgKm5vZGUpCiAJICogd29ya2VyIGJh Y2sgaW50byBzaGFyZWQgbWVtb3J5IHNvIHRoYXQgaXQgY2FuIGJlIHBpY2tlZCB1cCBieSB0aGUg bWFpbgogCSAqIHByb2Nlc3MgdG8gcmVwb3J0IGluIEVYUExBSU4gQU5BTFlaRS4KIAkgKi8KLQlp ZiAobm9kZS0+c2hhcmVkX2luZm8gJiYgSXNQYXJhbGxlbFdvcmtlcigpKQorCWlmIChub2RlLT5z aGFyZWRfaW5mbyAhPSBOVUxMICYmIElzUGFyYWxsZWxXb3JrZXIoKSkKIAl7CiAJCUFnZ3JlZ2F0 ZUluc3RydW1lbnRhdGlvbiAqc2k7CiAKQEAgLTQzMjcsMTAgKzQzMjYsMTYgQEAgRXhlY0VuZEFn ZyhBZ2dTdGF0ZSAqbm9kZSkKIAogCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGNsb3NlZCBhbnkgb3Bl biB0dXBsZXNvcnRzICovCiAKLQlpZiAobm9kZS0+c29ydF9pbikKKwlpZiAobm9kZS0+c29ydF9p biAhPSBOVUxMKQorCXsKIAkJdHVwbGVzb3J0X2VuZChub2RlLT5zb3J0X2luKTsKLQlpZiAobm9k ZS0+c29ydF9vdXQpCisJCW5vZGUtPnNvcnRfaW4gPSBOVUxMOworCX0KKwlpZiAobm9kZS0+c29y dF9vdXQgIT0gTlVMTCkKKwl7CiAJCXR1cGxlc29ydF9lbmQobm9kZS0+c29ydF9vdXQpOworCQlu b2RlLT5zb3J0X291dCA9IE5VTEw7CisJfQogCiAJaGFzaGFnZ19yZXNldF9zcGlsbF9zdGF0ZShu b2RlKTsKIApAQCAtNDM0NiwxOSArNDM1MSwyNSBAQCBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2Rl KQogCiAJCWZvciAoc2V0bm8gPSAwOyBzZXRubyA8IG51bUdyb3VwaW5nU2V0czsgc2V0bm8rKykK IAkJewotCQkJaWYgKHBlcnRyYW5zLT5zb3J0c3RhdGVzW3NldG5vXSkKKwkJCWlmIChwZXJ0cmFu cy0+c29ydHN0YXRlc1tzZXRub10gIT0gTlVMTCkKIAkJCQl0dXBsZXNvcnRfZW5kKHBlcnRyYW5z LT5zb3J0c3RhdGVzW3NldG5vXSk7CiAJCX0KIAl9CiAKIAkvKiBBbmQgZW5zdXJlIGFueSBhZ2cg c2h1dGRvd24gY2FsbGJhY2tzIGhhdmUgYmVlbiBjYWxsZWQgKi8KIAlmb3IgKHNldG5vID0gMDsg c2V0bm8gPCBudW1Hcm91cGluZ1NldHM7IHNldG5vKyspCisJewogCQlSZVNjYW5FeHByQ29udGV4 dChub2RlLT5hZ2djb250ZXh0c1tzZXRub10pOwotCWlmIChub2RlLT5oYXNoY29udGV4dCkKKwkJ bm9kZS0+YWdnY29udGV4dHNbc2V0bm9dID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPmhhc2hjb250 ZXh0ICE9IE5VTEwpCisJewogCQlSZVNjYW5FeHByQ29udGV4dChub2RlLT5oYXNoY29udGV4dCk7 CisJCW5vZGUtPmhhc2hjb250ZXh0ID0gTlVMTDsKKwl9CiAKLQlvdXRlclBsYW4gPSBvdXRlclBs YW5TdGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW4pOworCUV4ZWNFbmROb2RlKG91 dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAK IHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCA2MDlkZjZiOWU2Li5hMmFmMjIx ZTA1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0zOTksNyArMzk5LDEwIEBAIEV4 ZWNFbmRBcHBlbmQoQXBwZW5kU3RhdGUgKm5vZGUpCiAJICogc2h1dCBkb3duIGVhY2ggb2YgdGhl IHN1YnNjYW5zCiAJICovCiAJZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQorCXsKIAkJRXhl Y0VuZE5vZGUoYXBwZW5kcGxhbnNbaV0pOworCQlhcHBlbmRwbGFuc1tpXSA9IE5VTEw7CisJfQog fQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5k LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKaW5kZXggNGM1ZWIyYjIz Yi4uNGFiYjA2MDlhMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cEFuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwpAQCAtMTky LDggKzE5Miw4IEBAIEV4ZWNFbmRCaXRtYXBBbmQoQml0bWFwQW5kU3RhdGUgKm5vZGUpCiAJICov CiAJZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQogCXsKLQkJaWYgKGJpdG1hcHBsYW5zW2ld KQotCQkJRXhlY0VuZE5vZGUoYml0bWFwcGxhbnNbaV0pOworCQlFeGVjRW5kTm9kZShiaXRtYXBw bGFuc1tpXSk7CisJCWJpdG1hcHBsYW5zW2ldID0gTlVMTDsKIAl9CiB9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKaW5kZXggMmRiMGFjZmM3Ni4uZDNmNThjMjJm OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTY0OCw0 MCArNjQ4LDU5IEBAIEV4ZWNSZVNjYW5CaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhblN0YXRl ICpub2RlKQogdm9pZAogRXhlY0VuZEJpdG1hcEhlYXBTY2FuKEJpdG1hcEhlYXBTY2FuU3RhdGUg Km5vZGUpCiB7Ci0JVGFibGVTY2FuRGVzYyBzY2FuRGVzYzsKLQotCS8qCi0JICogZXh0cmFjdCBp bmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0JICovCi0Jc2NhbkRlc2MgPSBub2RlLT5zcy5zc19j dXJyZW50U2NhbkRlc2M7Ci0KIAkvKgogCSAqIGNsb3NlIGRvd24gc3VicGxhbnMKIAkgKi8KIAlF eGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkg PSBOVUxMOwogCiAJLyoKIAkgKiByZWxlYXNlIGJpdG1hcHMgYW5kIGJ1ZmZlcnMgaWYgYW55CiAJ ICovCi0JaWYgKG5vZGUtPnRibWl0ZXJhdG9yKQorCWlmIChub2RlLT50Ym1pdGVyYXRvciAhPSBO VUxMKQorCXsKIAkJdGJtX2VuZF9pdGVyYXRlKG5vZGUtPnRibWl0ZXJhdG9yKTsKLQlpZiAobm9k ZS0+cHJlZmV0Y2hfaXRlcmF0b3IpCisJCW5vZGUtPnRibWl0ZXJhdG9yID0gTlVMTDsKKwl9CisJ aWYgKG5vZGUtPnByZWZldGNoX2l0ZXJhdG9yICE9IE5VTEwpCisJewogCQl0Ym1fZW5kX2l0ZXJh dGUobm9kZS0+cHJlZmV0Y2hfaXRlcmF0b3IpOwotCWlmIChub2RlLT50Ym0pCisJCW5vZGUtPnBy ZWZldGNoX2l0ZXJhdG9yID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPnRibSAhPSBOVUxMKQorCXsK IAkJdGJtX2ZyZWUobm9kZS0+dGJtKTsKLQlpZiAobm9kZS0+c2hhcmVkX3RibWl0ZXJhdG9yKQor CQlub2RlLT50Ym0gPSBOVUxMOworCX0KKwlpZiAobm9kZS0+c2hhcmVkX3RibWl0ZXJhdG9yICE9 IE5VTEwpCisJewogCQl0Ym1fZW5kX3NoYXJlZF9pdGVyYXRlKG5vZGUtPnNoYXJlZF90Ym1pdGVy YXRvcik7Ci0JaWYgKG5vZGUtPnNoYXJlZF9wcmVmZXRjaF9pdGVyYXRvcikKKwkJbm9kZS0+c2hh cmVkX3RibWl0ZXJhdG9yID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPnNoYXJlZF9wcmVmZXRjaF9p dGVyYXRvciAhPSBOVUxMKQorCXsKIAkJdGJtX2VuZF9zaGFyZWRfaXRlcmF0ZShub2RlLT5zaGFy ZWRfcHJlZmV0Y2hfaXRlcmF0b3IpOworCQlub2RlLT5zaGFyZWRfcHJlZmV0Y2hfaXRlcmF0b3Ig PSBOVUxMOworCX0KIAlpZiAobm9kZS0+dm1idWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKKwl7CiAJ CVJlbGVhc2VCdWZmZXIobm9kZS0+dm1idWZmZXIpOworCQlub2RlLT52bWJ1ZmZlciA9IEludmFs aWRCdWZmZXI7CisJfQogCWlmIChub2RlLT5wdm1idWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKKwl7 CiAJCVJlbGVhc2VCdWZmZXIobm9kZS0+cHZtYnVmZmVyKTsKKwkJbm9kZS0+cHZtYnVmZmVyID0g SW52YWxpZEJ1ZmZlcjsKKwl9CiAKIAkvKgotCSAqIGNsb3NlIGhlYXAgc2NhbgorCSAqIGNsb3Nl IGhlYXAgc2NhbiAobm8tb3AgaWYgd2UgZGlkbid0IHN0YXJ0IGl0KQogCSAqLwotCXRhYmxlX2Vu ZHNjYW4oc2NhbkRlc2MpOworCWlmIChub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgIT0gTlVM TCkKKwl7CisJCXRhYmxlX2VuZHNjYW4obm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKTsKKwkJ bm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwppbmRleCA3Y2Y4NTMy YmM5Li40ODhmMTFhM2ZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4 c2Nhbi5jCkBAIC0xNzUsMjIgKzE3NSwyMSBAQCBFeGVjUmVTY2FuQml0bWFwSW5kZXhTY2FuKEJp dG1hcEluZGV4U2NhblN0YXRlICpub2RlKQogdm9pZAogRXhlY0VuZEJpdG1hcEluZGV4U2NhbihC aXRtYXBJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIHsKLQlSZWxhdGlvbglpbmRleFJlbGF0aW9uRGVz YzsKLQlJbmRleFNjYW5EZXNjIGluZGV4U2NhbkRlc2M7Ci0KLQkvKgotCSAqIGV4dHJhY3QgaW5m b3JtYXRpb24gZnJvbSB0aGUgbm9kZQotCSAqLwotCWluZGV4UmVsYXRpb25EZXNjID0gbm9kZS0+ Ymlzc19SZWxhdGlvbkRlc2M7Ci0JaW5kZXhTY2FuRGVzYyA9IG5vZGUtPmJpc3NfU2NhbkRlc2M7 CisJLyogY2xvc2UgdGhlIHNjYW4gKG5vLW9wIGlmIHdlIGRpZG4ndCBzdGFydCBpdCkgKi8KKwlp ZiAobm9kZS0+Ymlzc19TY2FuRGVzYyAhPSBOVUxMKQorCXsKKwkJaW5kZXhfZW5kc2Nhbihub2Rl LT5iaXNzX1NjYW5EZXNjKTsKKwkJbm9kZS0+Ymlzc19TY2FuRGVzYyA9IE5VTEw7CisJfQogCiAJ LyoKIAkgKiBjbG9zZSB0aGUgaW5kZXggcmVsYXRpb24gKG5vLW9wIGlmIHdlIGRpZG4ndCBvcGVu IGl0KQogCSAqLwotCWlmIChpbmRleFNjYW5EZXNjKQotCQlpbmRleF9lbmRzY2FuKGluZGV4U2Nh bkRlc2MpOwotCWlmIChpbmRleFJlbGF0aW9uRGVzYykKLQkJaW5kZXhfY2xvc2UoaW5kZXhSZWxh dGlvbkRlc2MsIE5vTG9jayk7CisJaWYgKG5vZGUtPmJpc3NfUmVsYXRpb25EZXNjICE9IE5VTEwp CisJeworCQlpbmRleF9jbG9zZShub2RlLT5iaXNzX1JlbGF0aW9uRGVzYywgTm9Mb2NrKTsKKwkJ bm9kZS0+Ymlzc19SZWxhdGlvbkRlc2MgPSBOVUxMOworCX0KIH0KIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYwppbmRleCAwYmY4YWY5NjUyLi5hY2UxODU5M2FhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYwpAQCAtMjEwLDggKzIxMCw4IEBAIEV4ZWNF bmRCaXRtYXBPcihCaXRtYXBPclN0YXRlICpub2RlKQogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBu cGxhbnM7IGkrKykKIAl7Ci0JCWlmIChiaXRtYXBwbGFuc1tpXSkKLQkJCUV4ZWNFbmROb2RlKGJp dG1hcHBsYW5zW2ldKTsKKwkJRXhlY0VuZE5vZGUoYml0bWFwcGxhbnNbaV0pOworCQliaXRtYXBw bGFuc1tpXSA9IE5VTEw7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlRm9yZWlnbnNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nh bi5jCmluZGV4IDczOTEzZWJiMTguLjNhYmEyODI4NWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVGb3JlaWduc2Nhbi5jCkBAIC0zMDEsMTcgKzMwMSwyMCBAQCBFeGVjRW5kRm9yZWlnblNjYW4o Rm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBz LnN0YXRlOwogCiAJLyogTGV0IHRoZSBGRFcgc2h1dCBkb3duICovCi0JaWYgKHBsYW4tPm9wZXJh dGlvbiAhPSBDTURfU0VMRUNUKQorCWlmIChub2RlLT5mZHdyb3V0aW5lICE9IE5VTEwpCiAJewot CQlpZiAoZXN0YXRlLT5lc19lcHFfYWN0aXZlID09IE5VTEwpCi0JCQlub2RlLT5mZHdyb3V0aW5l LT5FbmREaXJlY3RNb2RpZnkobm9kZSk7CisJCWlmIChwbGFuLT5vcGVyYXRpb24gIT0gQ01EX1NF TEVDVCkKKwkJeworCQkJaWYgKGVzdGF0ZS0+ZXNfZXBxX2FjdGl2ZSA9PSBOVUxMKQorCQkJCW5v ZGUtPmZkd3JvdXRpbmUtPkVuZERpcmVjdE1vZGlmeShub2RlKTsKKwkJfQorCQllbHNlCisJCQlu b2RlLT5mZHdyb3V0aW5lLT5FbmRGb3JlaWduU2Nhbihub2RlKTsKIAl9Ci0JZWxzZQotCQlub2Rl LT5mZHdyb3V0aW5lLT5FbmRGb3JlaWduU2Nhbihub2RlKTsKIAogCS8qIFNodXQgZG93biBhbnkg b3V0ZXIgcGxhbi4gKi8KLQlpZiAob3V0ZXJQbGFuU3RhdGUobm9kZSkpCi0JCUV4ZWNFbmROb2Rl KG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2Rl KSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXggYmIyNTAwYTQ2OS4uMWEzYzhhYmRhZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHYXRoZXIuYwpAQCAtMjQ5LDYgKzI0OSw3IEBAIHZvaWQKIEV4ZWNFbmRH YXRoZXIoR2F0aGVyU3RhdGUgKm5vZGUpCiB7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUo bm9kZSkpOwkvKiBsZXQgY2hpbGRyZW4gY2xlYW4gdXAgZmlyc3QgKi8KKwlvdXRlclBsYW5TdGF0 ZShub2RlKSA9IE5VTEw7CiAJRXhlY1NodXRkb3duR2F0aGVyKG5vZGUpOwogfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCmluZGV4IDdhNzFhNTg1MDkuLmM2ZmI0NWZlZTAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCkBAIC0yODksNiArMjg5LDcg QEAgdm9pZAogRXhlY0VuZEdhdGhlck1lcmdlKEdhdGhlck1lcmdlU3RhdGUgKm5vZGUpCiB7CiAJ RXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwkvKiBsZXQgY2hpbGRyZW4gY2xlYW4g dXAgZmlyc3QgKi8KKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiAJRXhlY1NodXRkb3du R2F0aGVyTWVyZ2Uobm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHcm91cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKaW5kZXggOGM2 NTBmMGU0Ni4uNmRmZTVhMWQyMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdyb3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKQEAgLTIyNiwx MCArMjI2LDggQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiB2b2lkCiBFeGVjRW5kR3JvdXAoR3JvdXBTdGF0ZSAqbm9kZSkKIHsKLQlQbGFu U3RhdGUgICpvdXRlclBsYW47Ci0KLQlvdXRlclBsYW4gPSBvdXRlclBsYW5TdGF0ZShub2RlKTsK LQlFeGVjRW5kTm9kZShvdXRlclBsYW4pOworCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5v ZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIHZvaWQKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSGFzaC5jCmluZGV4IGU3MmYwOTg2YzIuLjg4YmEzMzY4ODIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2guYwpAQCAtNDEzLDEzICs0MTMsMTEgQEAgRXhlY0luaXRIYXNoKEhhc2ggKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhlY0VuZEhhc2goSGFzaFN0YXRl ICpub2RlKQogewotCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKLQogCS8qCiAJICogc2h1dCBkb3du IHRoZSBzdWJwbGFuCiAJICovCi0Jb3V0ZXJQbGFuID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7Ci0J RXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsKKwlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2Rl KSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQogCiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2hqb2luLmMKaW5kZXggYWVhNDRhOWQ1Ni4uNmRjNDNiOWZmMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTg2MSw3ICs4NjEsNyBAQCBFeGVjRW5kSGFzaEpvaW4o SGFzaEpvaW5TdGF0ZSAqbm9kZSkKIAkvKgogCSAqIEZyZWUgaGFzaCB0YWJsZQogCSAqLwotCWlm IChub2RlLT5oal9IYXNoVGFibGUpCisJaWYgKG5vZGUtPmhqX0hhc2hUYWJsZSAhPSBOVUxMKQog CXsKIAkJRXhlY0hhc2hUYWJsZURlc3Ryb3kobm9kZS0+aGpfSGFzaFRhYmxlKTsKIAkJbm9kZS0+ aGpfSGFzaFRhYmxlID0gTlVMTDsKQEAgLTg3MSw3ICs4NzEsOSBAQCBFeGVjRW5kSGFzaEpvaW4o SGFzaEpvaW5TdGF0ZSAqbm9kZSkKIAkgKiBjbGVhbiB1cCBzdWJ0cmVlcwogCSAqLwogCUV4ZWNF bmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5V TEw7CiAJRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkpOworCWlubmVyUGxhblN0YXRl KG5vZGUpID0gTlVMTDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmNyZW1lbnRhbFNvcnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1l bnRhbFNvcnQuYwppbmRleCBjZDA5NGExOTBjLi4yOGEwZTgxY2IzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCkBAIC0xMDc5LDggKzEwNzksMTYgQEAgRXhl Y0VuZEluY3JlbWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnRTdGF0ZSAqbm9kZSkKIHsKIAlTT19w cmludGYoIkV4ZWNFbmRJbmNyZW1lbnRhbFNvcnQ6IHNodXR0aW5nIGRvd24gc29ydCBub2RlXG4i KTsKIAotCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+Z3JvdXBfcGl2b3QpOwot CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+dHJhbnNmZXJfdHVwbGUpOworCWlm IChub2RlLT5ncm91cF9waXZvdCAhPSBOVUxMKQorCXsKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRh YmxlU2xvdChub2RlLT5ncm91cF9waXZvdCk7CisJCW5vZGUtPmdyb3VwX3Bpdm90ID0gTlVMTDsK Kwl9CisJaWYgKG5vZGUtPnRyYW5zZmVyX3R1cGxlICE9IE5VTEwpCisJeworCQlFeGVjRHJvcFNp bmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPnRyYW5zZmVyX3R1cGxlKTsKKwkJbm9kZS0+dHJhbnNm ZXJfdHVwbGUgPSBOVUxMOworCX0KIAogCS8qCiAJICogUmVsZWFzZSB0dXBsZXNvcnQgcmVzb3Vy Y2VzLgpAQCAtMTEwMCw2ICsxMTA4LDcgQEAgRXhlY0VuZEluY3JlbWVudGFsU29ydChJbmNyZW1l bnRhbFNvcnRTdGF0ZSAqbm9kZSkKIAkgKiBTaHV0IGRvd24gdGhlIHN1YnBsYW4uCiAJICovCiAJ RXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUp ID0gTlVMTDsKIAogCVNPX3ByaW50ZigiRXhlY0VuZEluY3JlbWVudGFsU29ydDogc29ydCBub2Rl IHNodXRkb3duXG4iKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5j CmluZGV4IGYxZGIzNTY2NWMuLjFmMzg0M2FiZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4b25seXNjYW4uYwpAQCAtMzY0LDE1ICszNjQsNiBAQCBFeGVjUmVTY2FuSW5kZXhPbmx5 U2NhbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiB2b2lkCiBFeGVjRW5kSW5kZXhPbmx5U2Nh bihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiB7Ci0JUmVsYXRpb24JaW5kZXhSZWxhdGlvbkRl c2M7Ci0JSW5kZXhTY2FuRGVzYyBpbmRleFNjYW5EZXNjOwotCi0JLyoKLQkgKiBleHRyYWN0IGlu Zm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKLQkgKi8KLQlpbmRleFJlbGF0aW9uRGVzYyA9IG5vZGUt Pmlvc3NfUmVsYXRpb25EZXNjOwotCWluZGV4U2NhbkRlc2MgPSBub2RlLT5pb3NzX1NjYW5EZXNj OwotCiAJLyogUmVsZWFzZSBWTSBidWZmZXIgcGluLCBpZiBhbnkuICovCiAJaWYgKG5vZGUtPmlv c3NfVk1CdWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKIAl7CkBAIC0zODAsMTMgKzM3MSwyMSBAQCBF eGVjRW5kSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiAJCW5vZGUtPmlv c3NfVk1CdWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCX0KIAorCS8qIGNsb3NlIHRoZSBzY2FuIChu by1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQpICovCisJaWYgKG5vZGUtPmlvc3NfU2NhbkRlc2Mg IT0gTlVMTCkKKwl7CisJCWluZGV4X2VuZHNjYW4obm9kZS0+aW9zc19TY2FuRGVzYyk7CisJCW5v ZGUtPmlvc3NfU2NhbkRlc2MgPSBOVUxMOworCX0KKwogCS8qCiAJICogY2xvc2UgdGhlIGluZGV4 IHJlbGF0aW9uIChuby1vcCBpZiB3ZSBkaWRuJ3Qgb3BlbiBpdCkKIAkgKi8KLQlpZiAoaW5kZXhT Y2FuRGVzYykKLQkJaW5kZXhfZW5kc2NhbihpbmRleFNjYW5EZXNjKTsKLQlpZiAoaW5kZXhSZWxh dGlvbkRlc2MpCi0JCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb25EZXNjLCBOb0xvY2spOworCWlm IChub2RlLT5pb3NzX1JlbGF0aW9uRGVzYyAhPSBOVUxMKQorCXsKKwkJaW5kZXhfY2xvc2Uobm9k ZS0+aW9zc19SZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJCW5vZGUtPmlvc3NfUmVsYXRpb25EZXNj ID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNj YW4uYwppbmRleCAxNGI5YzAwMjE3Li4zMmUxNzE0ZjE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4c2Nhbi5jCkBAIC03ODUsMjIgKzc4NSwyMSBAQCBFeGVjSW5kZXhBZHZhbmNlQXJyYXlL ZXlzKEluZGV4QXJyYXlLZXlJbmZvICphcnJheUtleXMsIGludCBudW1BcnJheUtleXMpCiB2b2lk CiBFeGVjRW5kSW5kZXhTY2FuKEluZGV4U2NhblN0YXRlICpub2RlKQogewotCVJlbGF0aW9uCWlu ZGV4UmVsYXRpb25EZXNjOwotCUluZGV4U2NhbkRlc2MgaW5kZXhTY2FuRGVzYzsKLQotCS8qCi0J ICogZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0JICovCi0JaW5kZXhSZWxhdGlv bkRlc2MgPSBub2RlLT5pc3NfUmVsYXRpb25EZXNjOwotCWluZGV4U2NhbkRlc2MgPSBub2RlLT5p c3NfU2NhbkRlc2M7CisJLyogY2xvc2UgdGhlIHNjYW4gKG5vLW9wIGlmIHdlIGRpZG4ndCBzdGFy dCBpdCkgKi8KKwlpZiAobm9kZS0+aXNzX1NjYW5EZXNjICE9IE5VTEwpCisJeworCQlpbmRleF9l bmRzY2FuKG5vZGUtPmlzc19TY2FuRGVzYyk7CisJCW5vZGUtPmlzc19TY2FuRGVzYyA9IE5VTEw7 CisJfQogCiAJLyoKIAkgKiBjbG9zZSB0aGUgaW5kZXggcmVsYXRpb24gKG5vLW9wIGlmIHdlIGRp ZG4ndCBvcGVuIGl0KQogCSAqLwotCWlmIChpbmRleFNjYW5EZXNjKQotCQlpbmRleF9lbmRzY2Fu KGluZGV4U2NhbkRlc2MpOwotCWlmIChpbmRleFJlbGF0aW9uRGVzYykKLQkJaW5kZXhfY2xvc2Uo aW5kZXhSZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJaWYgKG5vZGUtPmlzc19SZWxhdGlvbkRlc2Mg IT0gTlVMTCkKKwl7CisJCWluZGV4X2Nsb3NlKG5vZGUtPmlzc19SZWxhdGlvbkRlc2MsIE5vTG9j ayk7CisJCW5vZGUtPmlzc19SZWxhdGlvbkRlc2MgPSBOVUxMOworCX0KIH0KIAogLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCA1NjU0MTU4ZTNlLi5hOTdiYWM5ZjZkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNTM1LDYgKzUzNSw3IEBAIHZvaWQKIEV4ZWNF bmRMaW1pdChMaW1pdFN0YXRlICpub2RlKQogewogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRl KG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTG9ja1Jvd3MuYwppbmRleCBlNDU5OTcxZDMyLi4yNmZiZTk1YzU3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwpAQCAtMzg3LDYgKzM4Nyw3IEBAIEV4ZWNFbmRMb2Nr Um93cyhMb2NrUm93c1N0YXRlICpub2RlKQogCS8qIFdlIG1heSBoYXZlIHNodXQgZG93biBFUFEg YWxyZWFkeSwgYnV0IG5vIGhhcm0gaW4gYW5vdGhlciBjYWxsICovCiAJRXZhbFBsYW5RdWFsRW5k KCZub2RlLT5scl9lcHFzdGF0ZSk7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkp OworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNYXRlcmlhbC5jCmluZGV4IDc1M2VhMjg5MTUuLjAzYzUxNDkwMGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNYXRlcmlhbC5jCkBAIC0yNDMsMTMgKzI0MywxNiBAQCBFeGVjRW5kTWF0ZXJpYWwo TWF0ZXJpYWxTdGF0ZSAqbm9kZSkKIAkgKiBSZWxlYXNlIHR1cGxlc3RvcmUgcmVzb3VyY2VzCiAJ ICovCiAJaWYgKG5vZGUtPnR1cGxlc3RvcmVzdGF0ZSAhPSBOVUxMKQorCXsKIAkJdHVwbGVzdG9y ZV9lbmQobm9kZS0+dHVwbGVzdG9yZXN0YXRlKTsKLQlub2RlLT50dXBsZXN0b3Jlc3RhdGUgPSBO VUxMOworCQlub2RlLT50dXBsZXN0b3Jlc3RhdGUgPSBOVUxMOworCX0KIAogCS8qCiAJICogc2h1 dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9k ZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKaW5kZXggOTRiZjQ3OTI4Ny4uZWU0NzQ5Yzg1MiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCkBAIC0xMDQzLDYgKzEwNDMsNyBAQCBFeGVjRW5k TWVtb2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpCiB7CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lO RwogCS8qIFZhbGlkYXRlIHRoZSBtZW1vcnkgYWNjb3VudGluZyBjb2RlIGlzIGNvcnJlY3QgaW4g YXNzZXJ0IGJ1aWxkcy4gKi8KKwlpZiAobm9kZS0+aGFzaHRhYmxlICE9IE5VTEwpCiAJewogCQlp bnQJCQljb3VudDsKIAkJdWludDY0CQltZW0gPSAwOwpAQCAtMTA4OSwxMiArMTA5MCwxNyBAQCBF eGVjRW5kTWVtb2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpCiAJfQogCiAJLyogUmVtb3ZlIHRoZSBj YWNoZSBjb250ZXh0ICovCi0JTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRleHQp OworCWlmIChub2RlLT50YWJsZUNvbnRleHQgIT0gTlVMTCkKKwl7CisJCU1lbW9yeUNvbnRleHRE ZWxldGUobm9kZS0+dGFibGVDb250ZXh0KTsKKwkJbm9kZS0+dGFibGVDb250ZXh0ID0gTlVMTDsK Kwl9CiAKIAkvKgogCSAqIHNodXQgZG93biB0aGUgc3VicGxhbgogCSAqLwogCUV4ZWNFbmROb2Rl KG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9 CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVu ZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggMjFiNTcy NmU2ZS4uMGE0MmEwNGIxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMK QEAgLTMzMyw3ICszMzMsMTAgQEAgRXhlY0VuZE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kU3RhdGUg Km5vZGUpCiAJICogc2h1dCBkb3duIGVhY2ggb2YgdGhlIHN1YnNjYW5zCiAJICovCiAJZm9yIChp ID0gMDsgaSA8IG5wbGFuczsgaSsrKQorCXsKIAkJRXhlY0VuZE5vZGUobWVyZ2VwbGFuc1tpXSk7 CisJCW1lcmdlcGxhbnNbaV0gPSBOVUxMOworCX0KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlam9pbi5jCmluZGV4IGVkM2ViZTkyZTUuLmM4NGY1M2UwYmQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKQEAgLTE2NDcsNyArMTY0Nyw5IEBAIEV4ZWNFbmRNZXJn ZUpvaW4oTWVyZ2VKb2luU3RhdGUgKm5vZGUpCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFucwog CSAqLwogCUV4ZWNFbmROb2RlKGlubmVyUGxhblN0YXRlKG5vZGUpKTsKKwlpbm5lclBsYW5TdGF0 ZShub2RlKSA9IE5VTEw7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91 dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAogCU1KMV9wcmludGYoIkV4ZWNFbmRNZXJnZUpv aW46ICVzXG4iLAogCQkJICAgIm5vZGUgcHJvY2Vzc2luZyBlbmRlZCIpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCBkMjFhMTc4YWQ1Li5lYTA0M2M1N2MxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNDQzMCw3ICs0NDMwLDkgQEAg RXhlY0VuZE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUpCiAJCWZvciAoaiA9IDA7 IGogPCByZXN1bHRSZWxJbmZvLT5yaV9OdW1TbG90c0luaXRpYWxpemVkOyBqKyspCiAJCXsKIAkJ CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QocmVzdWx0UmVsSW5mby0+cmlfU2xvdHNbal0p OworCQkJcmVzdWx0UmVsSW5mby0+cmlfU2xvdHNbal0gPSBOVUxMOwogCQkJRXhlY0Ryb3BTaW5n bGVUdXBsZVRhYmxlU2xvdChyZXN1bHRSZWxJbmZvLT5yaV9QbGFuU2xvdHNbal0pOworCQkJcmVz dWx0UmVsSW5mby0+cmlfUGxhblNsb3RzW2pdID0gTlVMTDsKIAkJfQogCX0KIApAQCAtNDQzOCwx MiArNDQ0MCwxNiBAQCBFeGVjRW5kTW9kaWZ5VGFibGUoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSkK IAkgKiBDbG9zZSBhbGwgdGhlIHBhcnRpdGlvbmVkIHRhYmxlcywgbGVhZiBwYXJ0aXRpb25zLCBh bmQgdGhlaXIgaW5kaWNlcwogCSAqIGFuZCByZWxlYXNlIHRoZSBzbG90IHVzZWQgZm9yIHR1cGxl IHJvdXRpbmcsIGlmIHNldC4KIAkgKi8KLQlpZiAobm9kZS0+bXRfcGFydGl0aW9uX3R1cGxlX3Jv dXRpbmcpCisJaWYgKG5vZGUtPm10X3BhcnRpdGlvbl90dXBsZV9yb3V0aW5nICE9IE5VTEwpCiAJ ewogCQlFeGVjQ2xlYW51cFR1cGxlUm91dGluZyhub2RlLCBub2RlLT5tdF9wYXJ0aXRpb25fdHVw bGVfcm91dGluZyk7CisJCW5vZGUtPm10X3BhcnRpdGlvbl90dXBsZV9yb3V0aW5nID0gTlVMTDsK IAotCQlpZiAobm9kZS0+bXRfcm9vdF90dXBsZV9zbG90KQorCQlpZiAobm9kZS0+bXRfcm9vdF90 dXBsZV9zbG90ICE9IE5VTEwpCisJCXsKIAkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo bm9kZS0+bXRfcm9vdF90dXBsZV9zbG90KTsKKwkJCW5vZGUtPm10X3Jvb3RfdHVwbGVfc2xvdCA9 IE5VTEw7CisJCX0KIAl9CiAKIAkvKgpAQCAtNDQ1NSw2ICs0NDYxLDcgQEAgRXhlY0VuZE1vZGlm eVRhYmxlKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUpCiAJICogc2h1dCBkb3duIHN1YnBsYW4KIAkg Ki8KIAlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUo bm9kZSkgPSBOVUxMOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTmVzdGxvb3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jCmlu ZGV4IGViZDE0MDY4NDMuLjEyMTFkODcxZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVOZXN0bG9vcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9v cC5jCkBAIC0zNjgsNyArMzY4LDkgQEAgRXhlY0VuZE5lc3RMb29wKE5lc3RMb29wU3RhdGUgKm5v ZGUpCiAJICogY2xvc2UgZG93biBzdWJwbGFucwogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxh blN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiAJRXhlY0VuZE5v ZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkpOworCWlubmVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsK IAogCU5MMV9wcmludGYoIkV4ZWNFbmROZXN0TG9vcDogJXNcbiIsCiAJCQkgICAibm9kZSBwcm9j ZXNzaW5nIGVuZGVkIik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJv amVjdFNldC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYwppbmRleCBi NGJiZGM4OWIxLi5lOWI5NjQxNmQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlUHJvamVjdFNldC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0 LmMKQEAgLTMyNCw2ICszMjQsNyBAQCBFeGVjRW5kUHJvamVjdFNldChQcm9qZWN0U2V0U3RhdGUg Km5vZGUpCiAJICogc2h1dCBkb3duIHN1YnBsYW5zCiAJICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQ bGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogdm9p ZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwppbmRleCBlNzgxMDAz OTM0Li5mNmQ2MGJjZDZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVj dXJzaXZldW5pb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5p b24uYwpAQCAtMjcyLDIwICsyNzIsMzYgQEAgdm9pZAogRXhlY0VuZFJlY3Vyc2l2ZVVuaW9uKFJl Y3Vyc2l2ZVVuaW9uU3RhdGUgKm5vZGUpCiB7CiAJLyogUmVsZWFzZSB0dXBsZXN0b3JlcyAqLwot CXR1cGxlc3RvcmVfZW5kKG5vZGUtPndvcmtpbmdfdGFibGUpOwotCXR1cGxlc3RvcmVfZW5kKG5v ZGUtPmludGVybWVkaWF0ZV90YWJsZSk7CisJaWYgKG5vZGUtPndvcmtpbmdfdGFibGUgIT0gTlVM TCkKKwl7CisJCXR1cGxlc3RvcmVfZW5kKG5vZGUtPndvcmtpbmdfdGFibGUpOworCQlub2RlLT53 b3JraW5nX3RhYmxlID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPmludGVybWVkaWF0ZV90YWJsZSAh PSBOVUxMKQorCXsKKwkJdHVwbGVzdG9yZV9lbmQobm9kZS0+aW50ZXJtZWRpYXRlX3RhYmxlKTsK KwkJbm9kZS0+aW50ZXJtZWRpYXRlX3RhYmxlID0gTlVMTDsKKwl9CiAKIAkvKiBmcmVlIHN1YnNp ZGlhcnkgc3R1ZmYgaW5jbHVkaW5nIGhhc2h0YWJsZSAqLwotCWlmIChub2RlLT50ZW1wQ29udGV4 dCkKKwlpZiAobm9kZS0+dGVtcENvbnRleHQgIT0gTlVMTCkKKwl7CiAJCU1lbW9yeUNvbnRleHRE ZWxldGUobm9kZS0+dGVtcENvbnRleHQpOwotCWlmIChub2RlLT50YWJsZUNvbnRleHQpCisJCW5v ZGUtPnRlbXBDb250ZXh0ID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPnRhYmxlQ29udGV4dCAhPSBO VUxMKQorCXsKIAkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRleHQpOworCQlu b2RlLT50YWJsZUNvbnRleHQgPSBOVUxMOworCX0KIAogCS8qCiAJICogY2xvc2UgZG93biBzdWJw bGFucwogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBs YW5TdGF0ZShub2RlKSA9IE5VTEw7CiAJRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkp OworCWlubmVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVJlc3VsdC5jCmluZGV4IGU5ZjU3MzJmMzMuLmYxNTkwMmU4NDAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlUmVzdWx0LmMKQEAgLTI0NCw2ICsyNDQsNyBAQCBFeGVjRW5kUmVzdWx0KFJl c3VsdFN0YXRlICpub2RlKQogCSAqIHNodXQgZG93biBzdWJwbGFucwogCSAqLwogCUV4ZWNFbmRO b2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7 CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCmluZGV4IDQxYzFl YTM3YWQuLmE2ODEzNTU5ZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVT YW1wbGVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYwpA QCAtMTg1LDE0ICsxODUsMTcgQEAgRXhlY0VuZFNhbXBsZVNjYW4oU2FtcGxlU2NhblN0YXRlICpu b2RlKQogCS8qCiAJICogVGVsbCBzYW1wbGluZyBmdW5jdGlvbiB0aGF0IHdlIGZpbmlzaGVkIHRo ZSBzY2FuLgogCSAqLwotCWlmIChub2RlLT50c21yb3V0aW5lLT5FbmRTYW1wbGVTY2FuKQorCWlm IChub2RlLT50c21yb3V0aW5lICE9IE5VTEwgJiYgbm9kZS0+dHNtcm91dGluZS0+RW5kU2FtcGxl U2NhbikKIAkJbm9kZS0+dHNtcm91dGluZS0+RW5kU2FtcGxlU2Nhbihub2RlKTsKIAogCS8qCi0J ICogY2xvc2UgaGVhcCBzY2FuCisJICogY2xvc2UgaGVhcCBzY2FuIChuby1vcCBpZiB3ZSBkaWRu J3Qgc3RhcnQgaXQpCiAJICovCiAJaWYgKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYykKKwl7 CiAJCXRhYmxlX2VuZHNjYW4obm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKTsKKwkJbm9kZS0+ c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDQ5YTU5MzNhZmYuLjkxMTI2NmRhMDcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtMTgzLDE4ICsxODMsMTQgQEAgRXhlY0luaXRT ZXFTY2FuKFNlcVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAog RXhlY0VuZFNlcVNjYW4oU2VxU2NhblN0YXRlICpub2RlKQogewotCVRhYmxlU2NhbkRlc2Mgc2Nh bkRlc2M7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBmcm9tIG5vZGUKLQkgKi8KLQlzY2Fu RGVzYyA9IG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYzsKLQogCS8qCi0JICogY2xvc2UgaGVh cCBzY2FuCisJICogY2xvc2UgaGVhcCBzY2FuIChuby1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQp CiAJICovCi0JaWYgKHNjYW5EZXNjICE9IE5VTEwpCi0JCXRhYmxlX2VuZHNjYW4oc2NhbkRlc2Mp OworCWlmIChub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgIT0gTlVMTCkKKwl7CisJCXRhYmxl X2VuZHNjYW4obm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKTsKKwkJbm9kZS0+c3Muc3NfY3Vy cmVudFNjYW5EZXNjID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNldE9wLmMKaW5kZXggOThjMWI4NGQ0My4uNWMyODYxZDI0MyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNldE9wLmMKQEAgLTU4MywxMCArNTgzLDE0IEBAIHZvaWQKIEV4ZWNFbmRTZXRPcChTZXRPcFN0 YXRlICpub2RlKQogewogCS8qIGZyZWUgc3Vic2lkaWFyeSBzdHVmZiBpbmNsdWRpbmcgaGFzaHRh YmxlICovCi0JaWYgKG5vZGUtPnRhYmxlQ29udGV4dCkKKwlpZiAobm9kZS0+dGFibGVDb250ZXh0 ICE9IE5VTEwpCisJewogCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRhYmxlQ29udGV4dCk7 CisJCW5vZGUtPnRhYmxlQ29udGV4dCA9IE5VTEw7CisJfQogCiAJRXhlY0VuZE5vZGUob3V0ZXJQ bGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNvcnQuYwppbmRleCBlZWE3ZjJhZTE1Li5jOGEzNWI2NGE4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTb3J0LmMKQEAgLTMwNywxMyArMzA3LDE2IEBAIEV4ZWNFbmRTb3J0KFNvcnRT dGF0ZSAqbm9kZSkKIAkgKiBSZWxlYXNlIHR1cGxlc29ydCByZXNvdXJjZXMKIAkgKi8KIAlpZiAo bm9kZS0+dHVwbGVzb3J0c3RhdGUgIT0gTlVMTCkKKwl7CiAJCXR1cGxlc29ydF9lbmQoKFR1cGxl c29ydHN0YXRlICopIG5vZGUtPnR1cGxlc29ydHN0YXRlKTsKLQlub2RlLT50dXBsZXNvcnRzdGF0 ZSA9IE5VTEw7CisJCW5vZGUtPnR1cGxlc29ydHN0YXRlID0gTlVMTDsKKwl9CiAKIAkvKgogCSAq IHNodXQgZG93biB0aGUgc3VicGxhbgogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRl KG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiAKIAlTTzFfcHJpbnRmKCJF eGVjRW5kU29ydDogJXNcbiIsCiAJCQkgICAic29ydCBub2RlIHNodXRkb3duIik7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKaW5kZXggMWVlNjI5NTY2MC4uOTFkN2FlODJj ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwpAQCAtMTcxLDYgKzE3 MSw3IEBAIEV4ZWNFbmRTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2FuU3RhdGUgKm5vZGUpCiAJICog Y2xvc2UgZG93biBzdWJxdWVyeQogCSAqLwogCUV4ZWNFbmROb2RlKG5vZGUtPnN1YnBsYW4pOwor CW5vZGUtPnN1YnBsYW4gPSBOVUxMOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwppbmRleCBhNjBkY2Q0OTQzLi44MGVkNGIyNmE4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKQEAgLTIxNyw4ICsyMTcsMTAg QEAgRXhlY0VuZFRhYmxlRnVuY1NjYW4oVGFibGVGdW5jU2NhblN0YXRlICpub2RlKQogCSAqIFJl bGVhc2UgdHVwbGVzdG9yZSByZXNvdXJjZXMKIAkgKi8KIAlpZiAobm9kZS0+dHVwc3RvcmUgIT0g TlVMTCkKKwl7CiAJCXR1cGxlc3RvcmVfZW5kKG5vZGUtPnR1cHN0b3JlKTsKLQlub2RlLT50dXBz dG9yZSA9IE5VTEw7CisJCW5vZGUtPnR1cHN0b3JlID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCBkYTYyMmQzZjVm Li45MTQ3ZTRhZmE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFu Z2VzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCkBA IC0zMjcsMTAgKzMyNywxNCBAQCBFeGVjUmVTY2FuVGlkUmFuZ2VTY2FuKFRpZFJhbmdlU2NhblN0 YXRlICpub2RlKQogdm9pZAogRXhlY0VuZFRpZFJhbmdlU2NhbihUaWRSYW5nZVNjYW5TdGF0ZSAq bm9kZSkKIHsKLQlUYWJsZVNjYW5EZXNjIHNjYW4gPSBub2RlLT5zcy5zc19jdXJyZW50U2NhbkRl c2M7Ci0KLQlpZiAoc2NhbiAhPSBOVUxMKQotCQl0YWJsZV9lbmRzY2FuKHNjYW4pOworCS8qCisJ ICogY2xvc2UgaGVhcCBzY2FuIChuby1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQpCisJICovCisJ aWYgKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyAhPSBOVUxMKQorCXsKKwkJdGFibGVfZW5k c2Nhbihub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MpOworCQlub2RlLT5zcy5zc19jdXJyZW50 U2NhbkRlc2MgPSBOVUxMOworCX0KIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVU aWRzY2FuLmMKaW5kZXggMTUwNTUwNzdkMC4uNzRlYzZhZmRjYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlVGlkc2Nhbi5jCkBAIC00NzAsOCArNDcwLDE0IEBAIEV4ZWNSZVNjYW5UaWRTY2FuKFRpZFNj YW5TdGF0ZSAqbm9kZSkKIHZvaWQKIEV4ZWNFbmRUaWRTY2FuKFRpZFNjYW5TdGF0ZSAqbm9kZSkK IHsKLQlpZiAobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQorCS8qCisJICogY2xvc2UgaGVh cCBzY2FuIChuby1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQpCisJICovCisJaWYgKG5vZGUtPnNz LnNzX2N1cnJlbnRTY2FuRGVzYyAhPSBOVUxMKQorCXsKIAkJdGFibGVfZW5kc2Nhbihub2RlLT5z cy5zc19jdXJyZW50U2NhbkRlc2MpOworCQlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBO VUxMOworCX0KIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVVuaXF1ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCmluZGV4 IDAxZjk1MTE5N2MuLjEzYzU1NjMyNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVVbmlxdWUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKQEAg LTE2OSw2ICsxNjksNyBAQCB2b2lkCiBFeGVjRW5kVW5pcXVlKFVuaXF1ZVN0YXRlICpub2RlKQog ewogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShu b2RlKSA9IE5VTEw7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVdpbmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4 IDc3NzI0YTZkYWEuLmM0YzZmMDA5YmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVXaW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdn LmMKQEAgLTEzNTEsMTEgKzEzNTEsMTQgQEAgcmVsZWFzZV9wYXJ0aXRpb24oV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlKQogCSAqIGFueSBhZ2dyZWdhdGUgdGVtcCBkYXRhKS4gIFdlIGRvbid0IHJl bHkgb24gcmV0YWlsIHBmcmVlIGJlY2F1c2Ugc29tZQogCSAqIGFnZ3JlZ2F0ZXMgbWlnaHQgaGF2 ZSBhbGxvY2F0ZWQgZGF0YSB3ZSBkb24ndCBoYXZlIGRpcmVjdCBwb2ludGVycyB0by4KIAkgKi8K LQlNZW1vcnlDb250ZXh0UmVzZXRBbmREZWxldGVDaGlsZHJlbih3aW5zdGF0ZS0+cGFydGNvbnRl eHQpOwotCU1lbW9yeUNvbnRleHRSZXNldEFuZERlbGV0ZUNoaWxkcmVuKHdpbnN0YXRlLT5hZ2dj b250ZXh0KTsKKwlpZiAod2luc3RhdGUtPnBhcnRjb250ZXh0ICE9IE5VTEwpCisJCU1lbW9yeUNv bnRleHRSZXNldEFuZERlbGV0ZUNoaWxkcmVuKHdpbnN0YXRlLT5wYXJ0Y29udGV4dCk7CisJaWYg KHdpbnN0YXRlLT5hZ2djb250ZXh0ICE9IE5VTEwpCisJCU1lbW9yeUNvbnRleHRSZXNldEFuZERl bGV0ZUNoaWxkcmVuKHdpbnN0YXRlLT5hZ2djb250ZXh0KTsKIAlmb3IgKGkgPSAwOyBpIDwgd2lu c3RhdGUtPm51bWFnZ3M7IGkrKykKIAl7Ci0JCWlmICh3aW5zdGF0ZS0+cGVyYWdnW2ldLmFnZ2Nv bnRleHQgIT0gd2luc3RhdGUtPmFnZ2NvbnRleHQpCisJCWlmICh3aW5zdGF0ZS0+cGVyYWdnW2ld LmFnZ2NvbnRleHQgIT0gTlVMTCAmJgorCQkJd2luc3RhdGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0 ICE9IHdpbnN0YXRlLT5hZ2djb250ZXh0KQogCQkJTWVtb3J5Q29udGV4dFJlc2V0QW5kRGVsZXRl Q2hpbGRyZW4od2luc3RhdGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0KTsKIAl9CiAKQEAgLTI2ODEs MjQgKzI2ODQsNDAgQEAgRXhlY0luaXRXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRXaW5kb3dBZ2coV2luZG93QWdnU3Rh dGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICAqb3V0ZXJQbGFuOwogCWludAkJCWk7CiAKIAlyZWxl YXNlX3BhcnRpdGlvbihub2RlKTsKIAogCWZvciAoaSA9IDA7IGkgPCBub2RlLT5udW1hZ2dzOyBp KyspCiAJewotCQlpZiAobm9kZS0+cGVyYWdnW2ldLmFnZ2NvbnRleHQgIT0gbm9kZS0+YWdnY29u dGV4dCkKKwkJaWYgKG5vZGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IE5VTEwgJiYKKwkJCW5v ZGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IG5vZGUtPmFnZ2NvbnRleHQpCiAJCQlNZW1vcnlD b250ZXh0RGVsZXRlKG5vZGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0KTsKIAl9Ci0JTWVtb3J5Q29u dGV4dERlbGV0ZShub2RlLT5wYXJ0Y29udGV4dCk7Ci0JTWVtb3J5Q29udGV4dERlbGV0ZShub2Rl LT5hZ2djb250ZXh0KTsKKwlpZiAobm9kZS0+cGFydGNvbnRleHQgIT0gTlVMTCkKKwl7CisJCU1l bW9yeUNvbnRleHREZWxldGUobm9kZS0+cGFydGNvbnRleHQpOworCQlub2RlLT5wYXJ0Y29udGV4 dCA9IE5VTEw7CisJfQorCWlmIChub2RlLT5hZ2djb250ZXh0ICE9IE5VTEwpCisJeworCQlNZW1v cnlDb250ZXh0RGVsZXRlKG5vZGUtPmFnZ2NvbnRleHQpOworCQlub2RlLT5hZ2djb250ZXh0ID0g TlVMTDsKKwl9CiAKLQlwZnJlZShub2RlLT5wZXJmdW5jKTsKLQlwZnJlZShub2RlLT5wZXJhZ2cp OworCWlmIChub2RlLT5wZXJmdW5jICE9IE5VTEwpCisJeworCQlwZnJlZShub2RlLT5wZXJmdW5j KTsKKwkJbm9kZS0+cGVyZnVuYyA9IE5VTEw7CisJfQorCWlmIChub2RlLT5wZXJhZ2cgIT0gTlVM TCkKKwl7CisJCXBmcmVlKG5vZGUtPnBlcmFnZyk7CisJCW5vZGUtPnBlcmFnZyA9IE5VTEw7CisJ fQogCi0Jb3V0ZXJQbGFuID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7Ci0JRXhlY0VuZE5vZGUob3V0 ZXJQbGFuKTsKKwlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFu U3RhdGUobm9kZSkgPSBOVUxMOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLQotLSAKMi4zNS4z Cgo= --0000000000006c6975060667113b Content-Type: application/octet-stream; name="v48-0002-Prepare-executor-to-support-detecting-CachedPlan.patch" Content-Disposition: attachment; filename="v48-0002-Prepare-executor-to-support-detecting-CachedPlan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln2wv9t76 RnJvbSBhMzJkNzkxNmE0Nzg4ZDk1OGEzZGNkN2U1OWE0OTQ5MTZkNzhkZGNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMjIgU2VwIDIwMjMgMTg6MTI6MDQgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 OCAyLzhdIFByZXBhcmUgZXhlY3V0b3IgdG8gc3VwcG9ydCBkZXRlY3RpbmcgQ2FjaGVkUGxhbgog aW52YWxpZGF0aW9uCgpUaGlzIGFkZHMgY2hlY2tzIGF0IHZhcmlvdXMgcG9pbnRzIGR1cmluZyB0 aGUgZXhlY3V0b3Incwppbml0aWFsaXphdGlvbiBvZiB0aGUgcGxhbiB0cmVlIHRvIGRldGVybWlu ZSB3aGV0aGVyIHRoZSBvcmlnaW5hdGluZwpDYWNoZWRQbGFuIGhhcyBiZWNvbWUgaW52YWxpZCBh cyBhIHJlc3VsdCBvZiB0YWtpbmcgbG9ja3Mgb24gdGhlCnJlbGF0aW9ucyByZWZlcmVuY2VkIGlu IHRoZSBwbGFuLiAgVGhpcyBpbmNsdWRlcyBhZGRkaW5nIHRoZSBjaGVjawphZnRlciBldmVyeSBj YWxsIHRvIEV4ZWNPcGVuU2NhblJlbGF0aW9uKCkgYW5kIHRvIEV4ZWNJbml0Tm9kZSgpLAppbmNs dWRpbmcgdGhlIHJlY3Vyc2l2ZSBvbmVzIHRvIGluaXRpYWxpemUgY2hpbGQgbm9kZXMuCgpJZiBh IGdpdmVuIEV4ZWNJbml0KigpIGZ1bmN0aW9uIGRldGVjdHMgdGhhdCB0aGUgcGxhbiBoYXMgYmVj b21lCmludmFsaWQsIGl0IHNob3VsZCByZXR1cm4gaW1tZWRpYXRlbHkgZXZlbiBpZiB0aGUgUGxh blN0YXRlIG5vZGUKaXQncyBidWlsZGluZyBtYXkgb25seSBiZSBwYXJ0aWFsbHkgdmFsaWQuICBU aGF0IGlzIGNydWNpYWwgZm9yCnR3byByZWFzb25zIGRlcGVuZGluZyBvbiB3aGVyZSB0aGUgY2hl Y2sgaXM6CgogKiBUaGUgY2hlY2tzIGZvbGxvd2luZyBFeGVjT3BlblNjYW5SZWxhdGlvbigpIG1h eSBmaW5kIHRoZSBwbGFuCiAgIGhhdmluZyBiZWNvbWUgaW52YWxpZCBiZWNhdXNlIHRoZSByZXF1 ZXN0ZWQgcmVsYXRpb24gd2FzIGRyb3BwZWQKICAgb3IgaGFkIGl0cyBzY2hlbWEgY2hhbmdlZCBj b25jdXJyZW50bHkgaW4gYSBtYW5uZXIgdGhhdCByaXNrcwogICB1bnNhZmUgb3BlcmF0aW9ucyBp biB0aGUgY29kZSB0aGF0IGZvbGxvd3MuICBGb3IgZXhhbXBsZSwgaXQKICAgbWlnaHQgdHJ5IHRv IGRlcmVmZXJlbmNlIGEgTlVMTCBwb2ludGVyIHdoZW4gdGhlIGNoZWNrIGZhaWxlZAogICBiZWNh dXNlIHRoZSByZWxhdGlvbiB3YXMgZHJvcHBlZC4KCiAqIEZvciB0aGUgY2hlY2tzIGZvbGxvd2lu ZyBFeGVjSW5pdE5vZGUoKSwgdGhlIHJldHVybmVkIGNoaWxkCiAgIFBsYW5TdGF0ZSBub2RlIG1p Z2h0IGJlIG9ubHkgcGFydGlhbGx5IGludmFsaWQuICBUaGUgY29kZSB0aGF0CiAgIGZvbGxvd3Mg bWF5IG1pc2JlaGF2ZSBpZiBpdCBkZXBlbmRzIG9uIGluc3BlY3RpbmcgdGhlIGNoaWxkCiAgIFBs YW5TdGF0ZS4gIE5vdGUgdGhhdCB0aGlzIGNvbW1pdCBhZGRzIHRoZSBjaGVjayBmb2xsb3dpbmcg YWxsCiAgIGNhbGxzIG9mIEV4ZWNJbml0Tm9kZSgpIHRoYXQgZXhpc3QgaW4gdGhlIGNvZGUgYmFz ZSwgZXZlbiBhdAogICBzaXRlcyB3aGVyZSB0aGVyZSBpcyBubyBjb2RlIHRoYXQgbWlnaHQgbWlz YmVoYXZlIHRvZGF5LCBiZWNhdXNlCiAgIGl0IG1pZ2h0IG1pc2JlaGF2ZSBpbiB0aGUgZnV0dXJl LiAgSXQgc2VlbXMgbGlrZSBhIGdvb2QgaWRlYSB0bwogICBwdXQgdGhlIGd1YXJkcyBpbiBwbGFj ZSB0b2RheSByYXRoZXIgdGhhbiBpbiB0aGUgZnV0dXJlIHdoZW4gdGhlCiAgIG5lZWQgYXJpc2Vz LgoKVG8gcGFzcyB0aGUgQ2FjaGVkUGxhbiB0aGF0IHRoZSBleGVjdXRvciB3aWxsIHVzZSBmb3Ig dGhlc2UgY2hlY2tzLAp0aGlzIGFkZHMgYSBuZXcgZmllbGQgdG8gUXVlcnlEZXNjIGFuZCBhIG5l dyBwYXJhbWV0ZXIgdG8KQ3JlYXRlUXVlcnlEZXNjKCkuICBObyBjYWxsZXIgb2YgQ3JlYXRlUXVl cnlEZXNjKCkgaXMgbWFkZSB0byBwYXNzCmFuIGFjdHVhbCBDYWNoZWRQbGFuIHRob3VnaCwgc28g dGhlcmUgaXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMK LS0tCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgfCAxMCArKysr Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgICAgICB8ICAzICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgfCAgMiArLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jICAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2NvbW1h bmRzL21hdHZpZXcuYyAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jICAgICAgICAgICAgfCAzOSArKysrKysrKysrKysrKysrKystLS0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgICAgfCAgOSArKysrLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAgIHwgIDQgKysrCiBzcmMvYmFja2VuZC9l eGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQWdnLmMgICAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFwcGVuZC5jICAgICAgICAgIHwgMTAgKysrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwQW5kLmMgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cEhlYXBzY2FuLmMgIHwgIDQgKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3Iu YyAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jICAgICAg ICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jICAgICB8 ICA0ICsrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAgICAgIHwgIDIg KysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jICAgICB8ICAyICsrCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYyAgICAgICAgICAgfCAgMiArKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYyAgICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jICAgICAgICB8ICA0ICsrKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleG9ubHlzY2FuLmMgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0 LmMgICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5j ICAgICAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYyAgICAg ICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyAgICAgICAgIHwg IDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICAgICB8ICA0ICsr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jICAgICAgIHwgIDQgKysrCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgfCAxMyArKysrKysrKwog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgICAgICAgIHwgIDQgKysrCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jICAgICAgfCAgMiArKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgIHwgIDQgKysrCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlUmVzdWx0LmMgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNhbXBsZXNjYW4uYyAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXFzY2FuLmMgICAgICAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0 T3AuYyAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyAg ICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4u YyAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMgICAg fCAgMiArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyAgICAgICAgIHwgIDIg KysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYyAgICAgICAgICB8ICAyICsrCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgfCAgMiArKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQv dGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgIHwgIDUgKystCiBzcmMvaW5jbHVkZS9leGVj dXRvci9leGVjZGVzYy5oICAgICAgICAgICAgfCAgNCArKysKIHNyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWN1dG9yLmggICAgICAgICAgICB8IDEwICsrKysrKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggICAgICAgICAgICAgIHwgIDIgKysKIHNyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNo ZS5oICAgICAgICAgICAgICB8IDE0ICsrKysrKysrCiA1MSBmaWxlcyBjaGFuZ2VkLCAxOTQgaW5z ZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jl c19mZHcvcG9zdGdyZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcu YwppbmRleCAxMzkzNzE2NTg3Li4wYWY2MDQ2M2MyIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3Rn cmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jl c19mZHcuYwpAQCAtMjEyNiw3ICsyMTI2LDExIEBAIHBvc3RncmVzRW5kRm9yZWlnbk1vZGlmeShF U3RhdGUgKmVzdGF0ZSwKIHsKIAlQZ0Zkd01vZGlmeVN0YXRlICpmbXN0YXRlID0gKFBnRmR3TW9k aWZ5U3RhdGUgKikgcmVzdWx0UmVsSW5mby0+cmlfRmR3U3RhdGU7CiAKLQkvKiBJZiBmbXN0YXRl IGlzIE5VTEwsIHdlIGFyZSBpbiBFWFBMQUlOOyBub3RoaW5nIHRvIGRvICovCisJLyoKKwkgKiBm bXN0YXRlIGNvdWxkIGJlIE5VTEwgdW5kZXIgdHdvIGNvbmRpdGlvbnM6IGR1cmluZyBhbiBFWFBM QUlOCisJICogb3BlcmF0aW9uLCBvciBpZiBCZWdpbkZvcmVpZ25Nb2RpZnkoKSBoYXNuJ3QgYmVl biBpbnZva2VkLgorCSAqIEluIGVpdGhlciBjYXNlLCBubyBhY3Rpb24gaXMgcmVxdWlyZWQuCisJ ICovCiAJaWYgKGZtc3RhdGUgPT0gTlVMTCkKIAkJcmV0dXJuOwogCkBAIC0yNjYwLDcgKzI2NjQs MTEgQEAgcG9zdGdyZXNCZWdpbkRpcmVjdE1vZGlmeShGb3JlaWduU2NhblN0YXRlICpub2RlLCBp bnQgZWZsYWdzKQogCS8qIEdldCBpbmZvIGFib3V0IGZvcmVpZ24gdGFibGUuICovCiAJcnRpbmRl eCA9IG5vZGUtPnJlc3VsdFJlbEluZm8tPnJpX1JhbmdlVGFibGVJbmRleDsKIAlpZiAoZnNwbGFu LT5zY2FuLnNjYW5yZWxpZCA9PSAwKQorCXsKIAkJZG1zdGF0ZS0+cmVsID0gRXhlY09wZW5TY2Fu UmVsYXRpb24oZXN0YXRlLCBydGluZGV4LCBlZmxhZ3MpOworCQlpZiAodW5saWtlbHkoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJCXJldHVybjsKKwl9CiAJZWxzZQogCQlkbXN0YXRl LT5yZWwgPSBub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb247CiAJdGFibGUgPSBHZXRGb3JlaWdu VGFibGUoUmVsYXRpb25HZXRSZWxpZChkbXN0YXRlLT5yZWwpKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMK aW5kZXggZWFhMzE3Mjc5My4uMGUzNTQ3YzM1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTU1 OCw3ICs1NTgsOCBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCSgoRFJfY29w eSAqKSBkZXN0KS0+Y3N0YXRlID0gY3N0YXRlOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBy ZXF1ZXN0aW5nIG5vIG91dHB1dCAqLwotCQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJY3N0YXRlLT5xdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwKKwkJCQkJCQkJCQkJcHN0YXRlLT5wX3NvdXJjZXRl eHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRT bmFwc2hvdCwKIAkJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3Jl YXRlYXMuYwppbmRleCBlOTE5MjBjYTE0Li4xOGIwN2MwMjAwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0 ZWFzLmMKQEAgLTMyNSw3ICszMjUsNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENv bW1hbmRJZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0 IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Mo cGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVz YyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFjdGl2ZVNu YXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlF bnYsIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggMTMyMTc4MDdlZS4uMjgxYzQ3YjJl ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtNTcyLDcgKzU3Miw3IEBAIEV4cGxhaW5PbmVQ bGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0 YXRlICplcywKIAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURl c2MgZm9yIHRoZSBxdWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVk c3RtdCwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRz dG10LCBOVUxMLCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52 YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50 X29wdGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKaW5kZXggNTM1MDcyZDE4MS4uYjI4 N2EyZTg0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTc5Nyw2ICs3OTcsNyBAQCBl eGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hhciAqc3FsKQogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNj OwogCiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJCQlOVUxMLAog CQkJCQkJCQkJCXNxbCwKIAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJ CQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IGFj MmU3NGZhM2YuLjIyYjhiODIwYzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21h dHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQwOCw3ICs0 MDgsNyBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVy eSAqcXVlcnksCiAJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0 ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAq LwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJ CUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVM TCwgTlVMTCwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IGY3ZjE4ZDMwNTQuLmRl N2JmN2NhNjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNzksNyArNzksNyBAQCBFeGVj dXRvckVuZF9ob29rX3R5cGUgRXhlY3V0b3JFbmRfaG9vayA9IE5VTEw7CiBFeGVjdXRvckNoZWNr UGVybXNfaG9va190eXBlIEV4ZWN1dG9yQ2hlY2tQZXJtc19ob29rID0gTlVMTDsKIAogLyogZGVj bHMgZm9yIGxvY2FsIHJvdXRpbmVzIG9ubHkgdXNlZCB3aXRoaW4gdGhpcyBtb2R1bGUgKi8KLXN0 YXRpYyB2b2lkIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKK3N0 YXRpYyBib29sIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0 YXRpYyB2b2lkIENoZWNrVmFsaWRSb3dNYXJrUmVsKFJlbGF0aW9uIHJlbCwgUm93TWFya1R5cGUg bWFya1R5cGUpOwogc3RhdGljIHZvaWQgRXhlY1Bvc3Rwcm9jZXNzUGxhbihFU3RhdGUgKmVzdGF0 ZSk7CiBzdGF0aWMgdm9pZCBFeGVjRW5kUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRl ICplc3RhdGUpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJLyoKIAkgKiBJbml0aWFsaXplIHRoZSBw bGFuIHN0YXRlIHRyZWUKIAkgKi8KLQlJbml0UGxhbihxdWVyeURlc2MsIGVmbGFncyk7CisJKHZv aWQpIEluaXRQbGFuKHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjb250ZXh0KTsKIH0KQEAgLTgyOSw5ICs4MjksMTMgQEAgRXhlY0NoZWNrWGFjdFJlYWRP bmx5KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCkKICAqCiAgKgkJSW5pdGlhbGl6ZXMgdGhlIHF1 ZXJ5IHBsYW46IG9wZW4gZmlsZXMsIGFsbG9jYXRlIHN0b3JhZ2UKICAqCQlhbmQgc3RhcnQgdXAg dGhlIHJ1bGUgbWFuYWdlcgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGxhbiB0cmVlIGlz IHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCBmb3IgZXhlY3V0aW9uLAorICogZmFsc2Ugb3RoZXJ3 aXNlLiAgVGhlIGxhdHRlciBjYXNlIG1heSBvY2N1ciBpZiB0aGUgQ2FjaGVkUGxhbiB0aGF0IHBy b3ZpZGVzCisgKiB0aGUgcGxhbiB0cmVlIChxdWVyeURlc2MtPmNwbGFuKSBnb3QgaW52YWxpZGF0 ZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbi4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwotc3RhdGljIHZv aWQKK3N0YXRpYyBib29sCiBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFn cykKIHsKIAlDbWRUeXBlCQlvcGVyYXRpb24gPSBxdWVyeURlc2MtPm9wZXJhdGlvbjsKQEAgLTgz OSwxMSArODQzLDE0IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdz KQogCVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRyZWU7CiAJTGlzdAkgICAqcmFu Z2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBxdWVy eURlc2MtPmVzdGF0ZTsKLQlQbGFuU3RhdGUgICpwbGFuc3RhdGU7Ci0JVHVwbGVEZXNjCXR1cFR5 cGU7CisJUGxhblN0YXRlICAqcGxhbnN0YXRlID0gTlVMTDsKKwlUdXBsZURlc2MJdHVwVHlwZSA9 IE5VTEw7CiAJTGlzdENlbGwgICAqbDsKIAlpbnQJCQlpOwogCisJQXNzZXJ0KHF1ZXJ5RGVzYy0+ cGxhbnN0YXRlID09IE5VTEwpOworCUFzc2VydChxdWVyeURlc2MtPnR1cERlc2MgPT0gTlVMTCk7 CisKIAkvKgogCSAqIERvIHBlcm1pc3Npb25zIGNoZWNrcwogCSAqLwpAQCAtODU1LDYgKzg2Miw3 IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCUV4ZWNJbml0 UmFuZ2VUYWJsZShlc3RhdGUsIHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MpOwog CiAJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OworCWVzdGF0ZS0+ZXNfY2Fj aGVkcGxhbiA9IHF1ZXJ5RGVzYy0+Y3BsYW47CiAKIAkvKgogCSAqIE5leHQsIGJ1aWxkIHRoZSBF eGVjUm93TWFyayBhcnJheSBmcm9tIHRoZSBQbGFuUm93TWFyayhzKSwgaWYgYW55LgpAQCAtODg2 LDYgKzg5NCw4IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog CQkJCWNhc2UgUk9XX01BUktfS0VZU0hBUkU6CiAJCQkJY2FzZSBST1dfTUFSS19SRUZFUkVOQ0U6 CiAJCQkJCXJlbGF0aW9uID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHJjLT5y dGkpOworCQkJCQlpZiAodW5saWtlbHkocmVsYXRpb24gPT0gTlVMTCkpCisJCQkJCQlyZXR1cm4g ZmFsc2U7CiAJCQkJCWJyZWFrOwogCQkJCWNhc2UgUk9XX01BUktfQ09QWToKIAkJCQkJLyogbm8g cGh5c2ljYWwgdGFibGUgYWNjZXNzIGlzIHJlcXVpcmVkICovCkBAIC05NTYsNiArOTY2LDggQEAg SW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAkJZXN0YXRlLT5l c19zdWJwbGFuc3RhdGVzID0gbGFwcGVuZChlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJ CQkJCQkJICAgc3VicGxhbnN0YXRlKTsKKwkJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkpCisJCQlyZXR1cm4gZmFsc2U7CiAKIAkJaSsrOwogCX0KQEAgLTk2Niw2ICs5 NzgsOCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkgKiBw cm9jZXNzaW5nIHR1cGxlcy4KIAkgKi8KIAlwbGFuc3RhdGUgPSBFeGVjSW5pdE5vZGUocGxhbiwg ZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpKQorCQlyZXR1cm4gZmFsc2U7CiAKIAkvKgogCSAqIEdldCB0aGUgdHVwbGUgZGVzY3JpcHRv ciBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIHR1cGxlcyB0byByZXR1cm4uCkBAIC0xMDA5LDYgKzEw MjMsOCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAogCXF1 ZXJ5RGVzYy0+dHVwRGVzYyA9IHR1cFR5cGU7CiAJcXVlcnlEZXNjLT5wbGFuc3RhdGUgPSBwbGFu c3RhdGU7CisKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogLyoKQEAgLTI4NTgsNyArMjg3NCw4IEBAIEV2 YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJICog Q2hpbGQgRVBRIEVTdGF0ZXMgc2hhcmUgdGhlIHBhcmVudCdzIGNvcHkgb2YgdW5jaGFuZ2luZyBz dGF0ZSBzdWNoIGFzCiAJICogdGhlIHNuYXBzaG90LCByYW5nZXRhYmxlLCBhbmQgZXh0ZXJuYWwg UGFyYW0gaW5mby4gIFRoZXkgbmVlZCB0aGVpciBvd24KIAkgKiBjb3BpZXMgb2YgbG9jYWwgc3Rh dGUsIGluY2x1ZGluZyBhIHR1cGxlIHRhYmxlLCBlc19wYXJhbV9leGVjX3ZhbHMsCi0JICogcmVz dWx0LXJlbCBpbmZvLCBldGMuCisJICogcmVzdWx0LXJlbCBpbmZvLCBldGMuICBBbHNvLCB3ZSBk b24ndCBwYXNzIHRoZSBwYXJlbnQndCBjb3B5IG9mIHRoZQorCSAqIENhY2hlZFBsYW4sIGJlY2F1 c2Ugbm8gbmV3IGxvY2tzIHdpbGwgYmUgdGFrZW4gZm9yIEV2YWxQbGFuUXVhbCgpLgogCSAqLwog CXJjZXN0YXRlLT5lc19kaXJlY3Rpb24gPSBGb3J3YXJkU2NhbkRpcmVjdGlvbjsKIAlyY2VzdGF0 ZS0+ZXNfc25hcHNob3QgPSBwYXJlbnRlc3RhdGUtPmVzX3NuYXBzaG90OwpAQCAtMjk0Nyw2ICsy OTY0LDEzIEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxh blRyZWUpCiAJCXN1YnBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCByY2VzdGF0ZSwg MCk7CiAJCXJjZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzID0gbGFwcGVuZChyY2VzdGF0ZS0+ZXNf c3VicGxhbnN0YXRlcywKIAkJCQkJCQkJCQkJIHN1YnBsYW5zdGF0ZSk7CisKKwkJLyoKKwkJICog QWxsIHRoZSBuZWNlc3NhcnkgbG9ja3MgbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiB0YWtlbiB3aGVu CisJCSAqIGluaXRpYWxpemluZyB0aGUgcGFyZW50J3MgY29weSBvZiBzdWJwbGFuc3RhdGUsIHNv IHRoZSBDYWNoZWRQbGFuLAorCQkgKiBpZiBhbnksIHNob3VsZCBub3QgaGF2ZSBiZWNvbWUgaW52 YWxpZCBkdXJpbmcgRXhlY0luaXROb2RlKCkuCisJCSAqLworCQlBc3NlcnQoRXhlY1BsYW5TdGls bFZhbGlkKHJjZXN0YXRlKSk7CiAJfQogCiAJLyoKQEAgLTI5ODgsNiArMzAxMiw5IEBAIEV2YWxQ bGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJICovCiAJ ZXBxc3RhdGUtPnJlY2hlY2twbGFuc3RhdGUgPSBFeGVjSW5pdE5vZGUocGxhblRyZWUsIHJjZXN0 YXRlLCAwKTsKIAorCS8qIFNlZSB0aGUgY29tbWVudCBhYm92ZS4gKi8KKwlBc3NlcnQoRXhlY1Bs YW5TdGlsbFZhbGlkKHJjZXN0YXRlKSk7CisKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxl bC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggY2MyYjhjY2Fi Ny4uNDU3ZWU0NmZhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFs bGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTEyNDgs OCArMTI0OCwxNSBAQCBFeGVjUGFyYWxsZWxHZXRRdWVyeURlc2Moc2htX3RvYyAqdG9jLCBEZXN0 UmVjZWl2ZXIgKnJlY2VpdmVyLAogCXBhcmFtc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9QQVJBTUxJU1RJTkZPLCBmYWxzZSk7CiAJcGFyYW1MSSA9IFJlc3RvcmVQYXJh bUxpc3QoJnBhcmFtc3BhY2UpOwogCi0JLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVl cnkuICovCisJLyoKKwkgKiBTZXQgdXAgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gV2hpbGUg dGhlIGxlYWRlciBtaWdodCd2ZSBzb3VyY2VkCisJICogdGhlIHBsYW4gdHJlZSBmcm9tIGEgQ2Fj aGVkUGxhbiwgd2UgZG9uJ3QgaGF2ZSBvbmUgaGVyZS4gVGhpcyBpc24ndAorCSAqIGFuIGlzc3Vl IHNpbmNlIHRoZSBsZWFkZXIgZW5zdXJlZCB0aGUgcmVxdWlyZWQgbG9ja3MsIG1ha2luZyBvdXIK KwkgKiBwbGFuIHRyZWUgdmFsaWQuIEV2ZW4gYXMgd2UgZ2V0IG91ciBvd24gbG9jayBjb3BpZXMg aW4KKwkgKiBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCksIHRoZXkncmUgYWxsIGFscmVhZHkg aGVsZCBieSB0aGUgbGVhZGVyLgorCSAqLwogCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQs CisJCQkJCQkgICBOVUxMLAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRBY3Rp dmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFyYW1M SSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2Rl LmMKaW5kZXggYjRiNWM1NjJjMC4uZmViYWExOTRjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1By b2Nub2RlLmMKQEAgLTEzNiw2ICsxMzYsMTAgQEAgc3RhdGljIGJvb2wgRXhlY1NodXRkb3duTm9k ZV93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKICAqCQkgICdlZmxhZ3Mn IGlzIGEgYml0d2lzZSBPUiBvZiBmbGFnIGJpdHMgZGVzY3JpYmVkIGluIGV4ZWN1dG9yLmgKICAq CiAgKgkJUmV0dXJucyBhIFBsYW5TdGF0ZSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVu IFBsYW4gbm9kZS4KKyAqCisgKgkJQ2FsbGVycyBzaG91bGQgY2hlY2sgdXBvbiByZXR1cm5pbmcg dGhhdCBFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKQorICoJCXJldHVybnMgdHJ1ZSBiZWZvcmUg Y29udGludWluZyBmdXJ0aGVyIHdpdGggaXRzIHByb2Nlc3NpbmcsIGJlY2F1c2UgdGhlCisgKgkJ cmV0dXJuZWQgUGxhblN0YXRlIG1pZ2h0IGJlIG9ubHkgcGFydGlhbGx5IHZhbGlkIG90aGVyd2lz ZS4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBQbGFuU3RhdGUgKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5j dGlvbnMuYwppbmRleCBmNTU0MjRlYjVhLi43ZTQ1MmVkNzQzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5j dGlvbnMuYwpAQCAtODM4LDYgKzgzOCw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0 ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQlkZXN0ID0gTm9uZV9SZWNlaXZl cjsKIAogCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwKKwkJCQkJCQkgTlVMTCwJ LyogZm1ncl9zcWwoKSBkb2Vzbid0IHVzZSBDYWNoZWRQbGFucyAqLwogCQkJCQkJCSBmY2FjaGUt PnNyYywKIAkJCQkJCQkgR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkgSW52YWxpZFNuYXBz aG90LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IGFmMjJiMTY3NmYuLjU5N2Q2ODEzOWUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTMzMDQsNiArMzMwNCw4IEBAIEV4ZWNJbml0QWdnKEFn ZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCWVmbGFncyAmPSB+RVhFQ19G TEFHX1JFV0lORDsKIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3Rh dGUoYWdnc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gYWdn c3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgc291cmNlIHR1cGxlIHR5cGUuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQXBwZW5kLmMKaW5kZXggYTJhZjIyMWUwNS4uNTNjYTlkYzg1ZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMTg1LDggKzE4NSwxMCBAQCBFeGVjSW5pdEFwcGVuZChB cHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWFwcGVuZHN0YXRlLT5w cy5yZXN1bHRvcHNzZXQgPSB0cnVlOwogCWFwcGVuZHN0YXRlLT5wcy5yZXN1bHRvcHNmaXhlZCA9 IGZhbHNlOwogCi0JYXBwZW5kcGxhbnN0YXRlcyA9IChQbGFuU3RhdGUgKiopIHBhbGxvYyhucGxh bnMgKgotCQkJCQkJCQkJCQkgc2l6ZW9mKFBsYW5TdGF0ZSAqKSk7CisJYXBwZW5kcGxhbnN0YXRl cyA9IChQbGFuU3RhdGUgKiopIHBhbGxvYzAobnBsYW5zICoKKwkJCQkJCQkJCQkJICBzaXplb2Yo UGxhblN0YXRlICopKTsKKwlhcHBlbmRzdGF0ZS0+YXBwZW5kcGxhbnMgPSBhcHBlbmRwbGFuc3Rh dGVzOworCWFwcGVuZHN0YXRlLT5hc19ucGxhbnMgPSBucGxhbnM7CiAKIAkvKgogCSAqIGNhbGwg RXhlY0luaXROb2RlIG9uIGVhY2ggb2YgdGhlIHZhbGlkIHBsYW5zIHRvIGJlIGV4ZWN1dGVkIGFu ZCBzYXZlCkBAIC0yMjEsMTEgKzIyMywxMSBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJZmlyc3R2YWxpZCA9IGo7CiAKIAkJYXBw ZW5kcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFn cyk7CisJCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQkJcmV0 dXJuIGFwcGVuZHN0YXRlOwogCX0KIAogCWFwcGVuZHN0YXRlLT5hc19maXJzdF9wYXJ0aWFsX3Bs YW4gPSBmaXJzdHZhbGlkOwotCWFwcGVuZHN0YXRlLT5hcHBlbmRwbGFucyA9IGFwcGVuZHBsYW5z dGF0ZXM7Ci0JYXBwZW5kc3RhdGUtPmFzX25wbGFucyA9IG5wbGFuczsKIAogCS8qIEluaXRpYWxp emUgYXN5bmMgc3RhdGUgKi8KIAlhcHBlbmRzdGF0ZS0+YXNfYXN5bmNwbGFucyA9IGFzeW5jcGxh bnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKaW5kZXggNGFiYjA2MDlhMC4uNzU1 NmJlNzEzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwpAQCAtODksNiArODks OCBAQCBFeGVjSW5pdEJpdG1hcEFuZChCaXRtYXBBbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCXsKIAkJaW5pdE5vZGUgPSAoUGxhbiAqKSBsZmlyc3QobCk7CiAJCWJpdG1h cHBsYW5zdGF0ZXNbaV0gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsK KwkJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCQlyZXR1cm4g Yml0bWFwYW5kc3RhdGU7CiAJCWkrKzsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEhlYXBzY2FuLmMKaW5kZXggZDNmNThjMjJmOS4uZjFmOGUxNmIxNyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTc3MCwxMSArNzcwLDE1IEBAIEV4 ZWNJbml0Qml0bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50 UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJl bGlkLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp KQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVz CiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoc2NhbnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBs YW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8qCiAJICogZ2V0IHRoZSBz Y2FuIHR5cGUgZnJvbSB0aGUgcmVsYXRpb24gZGVzY3JpcHRvci4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcE9yLmMKaW5kZXggYWNlMTg1OTNhYS4uN2QyYmY0NWQ5YyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcE9yLmMKQEAgLTkwLDYgKzkwLDggQEAgRXhlY0luaXRCaXRtYXBPcihCaXRt YXBPciAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJewogCQlpbml0Tm9kZSA9 IChQbGFuICopIGxmaXJzdChsKTsKIAkJYml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9k ZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKSkKKwkJCXJldHVybiBiaXRtYXBvcnN0YXRlOwogCQlpKys7CiAJfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKaW5kZXggMjhiNWJiOTM1My4uYTBiZWZiZDBjNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYwpAQCAtNjEsNiArNjEsOCBAQCBFeGVjSW5pdEN1 c3RvbVNjYW4oQ3VzdG9tU2NhbiAqY3NjYW4sIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CWlmIChzY2FucmVsaWQgPiAwKQogCXsKIAkJc2Nhbl9yZWwgPSBFeGVjT3BlblNjYW5SZWxhdGlv bihlc3RhdGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsKKwkJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkpCisJCQlyZXR1cm4gY3NzOwogCQljc3MtPnNzLnNzX2N1cnJlbnRS ZWxhdGlvbiA9IHNjYW5fcmVsOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUZvcmVpZ25zY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNj YW4uYwppbmRleCAzYWJhMjgyODVhLi4zMzZhY2ZmNzE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlRm9yZWlnbnNjYW4uYwpAQCAtMTczLDYgKzE3Myw4IEBAIEV4ZWNJbml0Rm9yZWlnblNjYW4o Rm9yZWlnblNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChzY2Fu cmVsaWQgPiAwKQogCXsKIAkJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24o ZXN0YXRlLCBzY2FucmVsaWQsIGVmbGFncyk7CisJCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpKQorCQkJcmV0dXJuIHNjYW5zdGF0ZTsKIAkJc2NhbnN0YXRlLT5zcy5z c19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJCWZkd3JvdXRpbmUgPSBHZXRG ZHdSb3V0aW5lRm9yUmVsYXRpb24oY3VycmVudFJlbGF0aW9uLCB0cnVlKTsKIAl9CkBAIC0yNjQs NiArMjY2LDggQEAgRXhlY0luaXRGb3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKG91dGVyUGxhbihub2RlKSkKIAkJb3V0ZXJQbGFu U3RhdGUoc2NhbnN0YXRlKSA9CiAJCQlFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkp CisJCXJldHVybiBzY2Fuc3RhdGU7CiAKIAkvKgogCSAqIFRlbGwgdGhlIEZEVyB0byBpbml0aWFs aXplIHRoZSBzY2FuLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhl ci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IDFhM2M4YWJkYWQu LmM1MjQwMjJjMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKQEAgLTg5LDYgKzg5LDgg QEAgRXhlY0luaXRHYXRoZXIoR2F0aGVyICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkgKi8KIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUo Z2F0aGVyc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gZ2F0 aGVyc3RhdGU7CiAJdHVwRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKGdh dGhlcnN0YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdhdGhlck1lcmdlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwpp bmRleCBjNmZiNDVmZWUwLi42NzZmYWFiZWY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlR2F0aGVyTWVyZ2UuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0 aGVyTWVyZ2UuYwpAQCAtMTA4LDYgKzEwOCw4IEBAIEV4ZWNJbml0R2F0aGVyTWVyZ2UoR2F0aGVy TWVyZ2UgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyTm9k ZSA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShnbV9zdGF0ZSkgPSBFeGVjSW5p dE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBnbV9zdGF0ZTsKIAogCS8qCiAJICogTGVh ZGVyIG1heSBhY2Nlc3MgRXhlY1Byb2NOb2RlIHJlc3VsdCBkaXJlY3RseSAoaWYKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUdyb3VwLmMKaW5kZXggNmRmZTVhMWQyMy4uZWZhMWM0NGFiNCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUdyb3VwLmMKQEAgLTE4NSw2ICsxODUsOCBAQCBFeGVjSW5pdEdyb3VwKEdyb3VwICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5v ZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoZ3Jwc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy UGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gZ3Jwc3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxp emUgc2NhbiBzbG90IGFuZCB0eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2guYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKaW5kZXggODhiYTMz Njg4Mi4uMWE0YmQ1NTA0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhh c2guYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCkBAIC0zODYsNiArMzg2 LDggQEAgRXhlY0luaXRIYXNoKEhhc2ggKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShoYXNo c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gaGFz aHN0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIG91ciByZXN1bHQgc2xvdCBhbmQgdHlwZS4g Tm8gbmVlZCB0byBidWlsZCBwcm9qZWN0aW9uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSGFzaGpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5j CmluZGV4IDZkYzQzYjlmZjIuLmMwOTE5MDc0YjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVIYXNoam9pbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNo am9pbi5jCkBAIC03NTIsOCArNzUyLDEyIEBAIEV4ZWNJbml0SGFzaEpvaW4oSGFzaEpvaW4gKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWhhc2hOb2RlID0gKEhhc2ggKikgaW5u ZXJQbGFuKG5vZGUpOwogCiAJb3V0ZXJQbGFuU3RhdGUoaGpzdGF0ZSkgPSBFeGVjSW5pdE5vZGUo b3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBoanN0YXRlOwogCW91dGVyRGVzYyA9IEV4ZWNHZXRS ZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKGhqc3RhdGUpKTsKIAlpbm5lclBsYW5TdGF0ZShoanN0 YXRlKSA9IEV4ZWNJbml0Tm9kZSgoUGxhbiAqKSBoYXNoTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gaGpz dGF0ZTsKIAlpbm5lckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZShoanN0 YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3Jl bWVudGFsU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5j CmluZGV4IDI4YTBlODFjYjMuLjYyMWZmYWZlMDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5jcmVtZW50YWxTb3J0LmMKQEAgLTEwNDEsNiArMTA0MSw4IEBAIEV4ZWNJbml0SW5jcmVt ZW50YWxTb3J0KEluY3JlbWVudGFsU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICogbm9kZXMgbWF5IGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIG1vcmUgdXNlZnVsLgog CSAqLwogCW91dGVyUGxhblN0YXRlKGluY3Jzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy UGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gaW5jcnNvcnRzdGF0ZTsKIAogCS8qCiAJICogSW5p dGlhbGl6ZSBzY2FuIHNsb3QgYW5kIHR5cGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4 b25seXNjYW4uYwppbmRleCAxZjM4NDNhYmU5Li5jNTU1YzE0ODg4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKQEAgLTQ5NSw2ICs0OTUsOCBAQCBFeGVjSW5pdElu ZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9 IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFn cyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVy biBpbmRleHN0YXRlOwogCiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3Vy cmVudFJlbGF0aW9uOwogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7 CS8qIG5vIGhlYXAgc2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMK aW5kZXggMzJlMTcxNGYxNS4uYTNiZDFmN2ZiMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eHNjYW4uYwpAQCAtOTA4LDYgKzkwOCw4IEBAIEV4ZWNJbml0SW5kZXhTY2FuKEluZGV4U2NhbiAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxh dGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0 ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBpbmRleHN0YXRlOwogCiAJaW5kZXhzdGF0 ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9uOwogCWluZGV4c3RhdGUt PnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CS8qIG5vIGhlYXAgc2NhbiBoZXJlICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVMaW1pdC5jCmluZGV4IGE5N2JhYzlmNmQuLmFiMTMzZjE1ODAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVMaW1pdC5jCkBAIC00NzYsNiArNDc2LDggQEAgRXhlY0luaXRMaW1pdChM aW1pdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFu ID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGxpbWl0c3RhdGUpID0gRXhlY0lu aXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gbGltaXRzdGF0ZTsKIAogCS8qCiAJICog aW5pdGlhbGl6ZSBjaGlsZCBleHByZXNzaW9ucwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUxvY2tSb3dzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3Mu YwppbmRleCAyNmZiZTk1YzU3Li5lMWVmNzY4NTcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTG9ja1Jvd3MuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9j a1Jvd3MuYwpAQCAtMzIyLDYgKzMyMiw4IEBAIEV4ZWNJbml0TG9ja1Jvd3MoTG9ja1Jvd3MgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIHRoZW4gaW5pdGlhbGl6ZSBvdXRl ciBwbGFuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUobHJzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0 ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkpCisJCXJldHVybiBscnN0YXRlOwogCiAJLyogbm9kZSByZXR1cm5zIHVubW9k aWZpZWQgc2xvdHMgZnJvbSB0aGUgb3V0ZXIgcGxhbiAqLwogCWxyc3RhdGUtPnBzLnJlc3VsdG9w c3NldCA9IHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJp YWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCmluZGV4IDAzYzUxNDkw MGIuLmMzOGVlZjA5OWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRl cmlhbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCkBAIC0yMTQs NiArMjE0LDggQEAgRXhlY0luaXRNYXRlcmlhbChNYXRlcmlhbCAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAKIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQ bGFuU3RhdGUobWF0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxh Z3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1 cm4gbWF0c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHR5cGUgYW5kIHNsb3Qu IE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBwcm9qZWN0aW9uIGluZm8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVtb2l6ZS5jCmluZGV4IGVlNDc0OWM4NTIuLmE2YmY2NjAyOWMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lbW9pemUuYwpAQCAtOTM4LDYgKzkzOCw4IEBAIEV4ZWNJbml0TWVtb2l6ZShNZW1vaXpl ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCW91dGVyTm9kZSA9IG91dGVy UGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShtc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpKQorCQlyZXR1cm4gbXN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHJldHVy biBzbG90IGFuZCB0eXBlLiBObyBuZWVkIHRvIGluaXRpYWxpemUgcHJvamVjdGlvbiBpbmZvCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IDBhNDJhMDRiMTkuLjUyYzNl ZGYyNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC0xMjAsNyAr MTIwLDcgQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJCW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gTlVMTDsK IAl9CiAKLQltZXJnZXBsYW5zdGF0ZXMgPSAoUGxhblN0YXRlICoqKSBwYWxsb2MobnBsYW5zICog c2l6ZW9mKFBsYW5TdGF0ZSAqKSk7CisJbWVyZ2VwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikg cGFsbG9jMChucGxhbnMgKiBzaXplb2YoUGxhblN0YXRlICopKTsKIAltZXJnZXN0YXRlLT5tZXJn ZXBsYW5zID0gbWVyZ2VwbGFuc3RhdGVzOwogCW1lcmdlc3RhdGUtPm1zX25wbGFucyA9IG5wbGFu czsKIApAQCAtMTUxLDYgKzE1MSw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlQbGFuCSAgICppbml0Tm9kZSA9 IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPm1lcmdlcGxhbnMsIGkpOwogCiAJCW1lcmdlcGxhbnN0 YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCWlm ICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQkJcmV0dXJuIG1lcmdl c3RhdGU7CiAJfQogCiAJbWVyZ2VzdGF0ZS0+cHMucHNfUHJvakluZm8gPSBOVUxMOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCmluZGV4IGM4NGY1M2UwYmQuLjg4N2Y1MTliMTAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKQEAgLTE0OTAsMTEgKzE0OTAsMTUgQEAg RXhlY0luaXRNZXJnZUpvaW4oTWVyZ2VKb2luICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAltZXJnZXN0YXRlLT5tal9Ta2lwTWFya1Jlc3RvcmUgPSBub2RlLT5za2lwX21hcmtf cmVzdG9yZTsKIAogCW91dGVyUGxhblN0YXRlKG1lcmdlc3RhdGUpID0gRXhlY0luaXROb2RlKG91 dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gbWVyZ2VzdGF0ZTsKIAlvdXRlckRlc2MgPSBF eGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAJaW5uZXJQbGFu U3RhdGUobWVyZ2VzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUs CiAJCQkJCQkJCQkJCSAgbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID8KIAkJCQkJCQkJ CQkJICBlZmxhZ3MgOgogCQkJCQkJCQkJCQkgIChlZmxhZ3MgfCBFWEVDX0ZMQUdfTUFSSykpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gbWVy Z2VzdGF0ZTsKIAlpbm5lckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZSht ZXJnZXN0YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpp bmRleCBlYTA0M2M1N2MxLi45NWQ5MDljMWQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYwpAQCAtMzk4NSw2ICszOTg1LDEzIEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9k aWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCQkJCSAgIGxp bml0aWFsX2ludChub2RlLT5yZXN1bHRSZWxhdGlvbnMpKTsKIAl9CiAKKwkvKgorCSAqIEV4ZWNJ bml0UmVzdWx0UmVsYXRpb24oKSBtYXkgaGF2ZSByZXR1cm5lZCB3aXRob3V0IGluaXRpYWxpemlu ZworCSAqIHJvb3RSZXN1bHRSZWxJbmZvIGlmIHRoZSBwbGFuIGdvdCBpbnZhbGlkYXRlZCwgc28g Y2hlY2suCisJICovCisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkp CisJCXJldHVybiBtdHN0YXRlOworCiAJLyogc2V0IHVwIGVwcXN0YXRlIHdpdGggZHVtbXkgc3Vi cGxhbiBkYXRhIGZvciB0aGUgbW9tZW50ICovCiAJRXZhbFBsYW5RdWFsSW5pdCgmbXRzdGF0ZS0+ bXRfZXBxc3RhdGUsIGVzdGF0ZSwgTlVMTCwgTklMLAogCQkJCQkgbm9kZS0+ZXBxUGFyYW0sIG5v ZGUtPnJlc3VsdFJlbGF0aW9ucyk7CkBAIC00MDEzLDYgKzQwMjAsMTAgQEAgRXhlY0luaXRNb2Rp ZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ CXsKIAkJCUV4ZWNJbml0UmVzdWx0UmVsYXRpb24oZXN0YXRlLCByZXN1bHRSZWxJbmZvLCByZXN1 bHRSZWxhdGlvbik7CiAKKwkJCS8qIFNlZSB0aGUgY29tbWVudCBhYm92ZS4gKi8KKwkJCWlmICh1 bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQkJCXJldHVybiBtdHN0YXRl OworCiAJCQkvKgogCQkJICogRm9yIGNoaWxkIHJlc3VsdCByZWxhdGlvbnMsIHN0b3JlIHRoZSBy b290IHJlc3VsdCByZWxhdGlvbgogCQkJICogcG9pbnRlci4gIFdlIGRvIHNvIGZvciB0aGUgY29u dmVuaWVuY2Ugb2YgcGxhY2VzIHRoYXQgd2FudCB0bwpAQCAtNDAzOSw2ICs0MDUwLDggQEAgRXhl Y0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJICogTm93IHdlIG1heSBpbml0aWFsaXplIHRoZSBzdWJwbGFuLgogCSAqLwogCW91 dGVyUGxhblN0YXRlKG10c3RhdGUpID0gRXhlY0luaXROb2RlKHN1YnBsYW4sIGVzdGF0ZSwgZWZs YWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0 dXJuIG10c3RhdGU7CiAKIAkvKgogCSAqIERvIGFkZGl0aW9uYWwgcGVyLXJlc3VsdC1yZWxhdGlv biBpbml0aWFsaXphdGlvbi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVO ZXN0bG9vcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKaW5kZXggMTIx MWQ4NzFlYS4uOGQ2N2QxN2UxMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU5lc3Rsb29wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKQEAg LTI5NSwxMSArMjk1LDE1IEBAIEV4ZWNJbml0TmVzdExvb3AoTmVzdExvb3AgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIHZhbHVlcy4KIAkgKi8KIAlvdXRlclBsYW5TdGF0 ZShubHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdz KTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJu IG5sc3RhdGU7CiAJaWYgKG5vZGUtPm5lc3RQYXJhbXMgPT0gTklMKQogCQllZmxhZ3MgfD0gRVhF Q19GTEFHX1JFV0lORDsKIAllbHNlCiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlp bm5lclBsYW5TdGF0ZShubHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShpbm5lclBsYW4obm9kZSksIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KSkKKwkJcmV0dXJuIG5sc3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHNsb3Qs IHR5cGUgYW5kIHByb2plY3Rpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlUHJvamVjdFNldC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYwpp bmRleCBlOWI5NjQxNmQzLi43MDZjYzIzYTIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlUHJvamVjdFNldC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9q ZWN0U2V0LmMKQEAgLTI0Nyw2ICsyNDcsOCBAQCBFeGVjSW5pdFByb2plY3RTZXQoUHJvamVjdFNl dCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGls ZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRl clBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHN0YXRlOwogCiAJLyoKIAkgKiB3ZSBkb24ndCB1 c2UgaW5uZXIgcGxhbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vy c2l2ZXVuaW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwpp bmRleCBmNmQ2MGJjZDZjLi4yN2RjMzE4YWNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlUmVjdXJzaXZldW5pb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl UmVjdXJzaXZldW5pb24uYwpAQCAtMjQ0LDcgKzI0NCwxMSBAQCBFeGVjSW5pdFJlY3Vyc2l2ZVVu aW9uKFJlY3Vyc2l2ZVVuaW9uICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkg KiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUocnVzdGF0ZSkg PSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVu bGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBydXN0YXRlOwog CWlubmVyUGxhblN0YXRlKHJ1c3RhdGUpID0gRXhlY0luaXROb2RlKGlubmVyUGxhbihub2RlKSwg ZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpKQorCQlyZXR1cm4gcnVzdGF0ZTsKIAogCS8qCiAJICogSWYgaGFzaGluZywgcHJlY29tcHV0 ZSBmbWdyIGxvb2t1cCBkYXRhIGZvciBpbm5lciBsb29wLCBhbmQgY3JlYXRlIHRoZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVJlc3VsdC5jCmluZGV4IGYxNTkwMmU4NDAuLjY4MjBkM2JmZDUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlUmVzdWx0LmMKQEAgLTIwOCw2ICsyMDgsOCBAQCBFeGVjSW5pdFJlc3VsdChS ZXN1bHQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUg Y2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShyZXNzdGF0ZSkgPSBFeGVjSW5pdE5v ZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiByZXNzdGF0ZTsKIAogCS8qCiAJICog d2UgZG9uJ3QgdXNlIGlubmVyIHBsYW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTYW1wbGVzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5j CmluZGV4IGE2ODEzNTU5ZTYuLjAyMDUxZmVhNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNh bXBsZXNjYW4uYwpAQCAtMTI1LDYgKzEyNSw4IEBAIEV4ZWNJbml0U2FtcGxlU2NhbihTYW1wbGVT Y2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY09wZW5TY2FuUmVs YXRpb24oZXN0YXRlLAogCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZs YWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0 dXJuIHNjYW5zdGF0ZTsKIAogCS8qIHdlIHdvbid0IHNldCB1cCB0aGUgSGVhcFNjYW5EZXNjIHRp bGwgbGF0ZXIgKi8KIAlzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCA5MTEyNjZkYTA3Li45ZTNlZjk0Mzg4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTE1Myw2ICsxNTMsOCBAQCBFeGVjSW5p dFNlcVNjYW4oU2VxU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4 ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwKIAkJCQkJCQkgbm9kZS0+c2Nhbi5zY2FucmVsaWQs CiAJCQkJCQkJIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkpCisJCXJldHVybiBzY2Fuc3RhdGU7CiAKIAkvKiBhbmQgY3JlYXRlIHNsb3Qgd2l0aCB0 aGUgYXBwcm9wcmlhdGUgcm93dHlwZSAqLwogCUV4ZWNJbml0U2NhblR1cGxlU2xvdChlc3RhdGUs ICZzY2Fuc3RhdGUtPnNzLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNl dE9wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYwppbmRleCA1YzI4NjFkMjQz Li40NzVhZjRkZjI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3Au YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYwpAQCAtNTI4LDYgKzUyOCw4 IEBAIEV4ZWNJbml0U2V0T3AoU2V0T3AgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCWlmIChub2RlLT5zdHJhdGVneSA9PSBTRVRPUF9IQVNIRUQpCiAJCWVmbGFncyAmPSB+RVhF Q19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW5TdGF0ZShzZXRvcHN0YXRlKSA9IEV4ZWNJbml0Tm9k ZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHNldG9wc3RhdGU7CiAJb3V0ZXJEZXNj ID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoc2V0b3BzdGF0ZSkpOwogCiAJLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU29ydC5jCmluZGV4IGM4YTM1YjY0YTguLjlkZTcxN2FhN2MgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNvcnQuYwpAQCAtMjYzLDYgKzI2Myw4IEBAIEV4ZWNJbml0U29ydChTb3J0 ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAllZmxhZ3MgJj0gfihFWEVDX0ZM QUdfUkVXSU5EIHwgRVhFQ19GTEFHX0JBQ0tXQVJEIHwgRVhFQ19GTEFHX01BUkspOwogCiAJb3V0 ZXJQbGFuU3RhdGUoc29ydHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KSkKKwkJcmV0dXJuIHNvcnRzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNsb3Qg YW5kIHR5cGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKaW5kZXggOTFk N2FlODJjZS4uZDljMTBkMWY2ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVN1YnF1ZXJ5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNj YW4uYwpAQCAtMTI0LDYgKzEyNCw4IEBAIEV4ZWNJbml0U3VicXVlcnlTY2FuKFN1YnF1ZXJ5U2Nh biAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBzdWJx dWVyeQogCSAqLwogCXN1YnF1ZXJ5c3RhdGUtPnN1YnBsYW4gPSBFeGVjSW5pdE5vZGUobm9kZS0+ c3VicGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gc3VicXVlcnlzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlh bGl6ZSBzY2FuIHNsb3QgYW5kIHR5cGUgKG5lZWRlZCBieSBFeGVjQXNzaWduU2NhblByb2plY3Rp b25JbmZvKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nh bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCmluZGV4IDkxNDdl NGFmYTguLmE3NDgyYWVlNTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVU aWRyYW5nZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2Fu LmMKQEAgLTM3OCw2ICszNzgsOCBAQCBFeGVjSW5pdFRpZFJhbmdlU2NhbihUaWRSYW5nZVNjYW4g Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVs YXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3Rh dGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gdGlkcmFuZ2VzdGF0ZTsKIAogCXRpZHJh bmdlc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKIAl0aWRy YW5nZXN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBubyB0YWJsZSBzY2Fu IGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCmluZGV4IDc0ZWM2YWZkY2MuLjY1 NzQxMWVmMTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwpAQCAtNTIzLDYgKzUyMyw4 IEBAIEV4ZWNJbml0VGlkU2NhbihUaWRTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9u ID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZs YWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0 dXJuIHRpZHN0YXRlOwogCiAJdGlkc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJl bnRSZWxhdGlvbjsKIAl0aWRzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsgLyog bm8gaGVhcCBzY2FuIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVVbmlxdWUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwppbmRleCAxM2M1 NTYzMjZhLi5lZTMwNjg4NDE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VW5pcXVlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCkBAIC0xMzYs NiArMTM2LDggQEAgRXhlY0luaXRVbmlxdWUoVW5pcXVlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKiB0aGVuIGluaXRpYWxpemUgb3V0ZXIgcGxhbgogCSAqLwogCW91dGVy UGxhblN0YXRlKHVuaXF1ZXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KSkKKwkJcmV0dXJuIHVuaXF1ZXN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHJlc3VsdCBz bG90IGFuZCB0eXBlLiBVbmlxdWUgbm9kZXMgZG8gbm8gcHJvamVjdGlvbnMsIHNvCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlV2luZG93QWdnLmMKaW5kZXggYzRjNmYwMDliYS4uMTI0NmQ3OTE5YSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtMjQ2MSw2ICsyNDYxLDggQEAgRXhl Y0luaXRXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkgKi8KIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUo d2luc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlm ICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gd2luc3Rh dGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgc291cmNlIHR1cGxlIHR5cGUgKHdoaWNoIGlzIGFs c28gdGhlIHR1cGxlIHR5cGUgdGhhdCB3ZSdsbApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCAzMzk3NTY4N2Iz Li5mMmNjYTgwN2VmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAtMjY2OCw2ICsyNjY4LDcgQEAgX1NQSV9l eGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0 aW9ucywKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAogCQkJCXFkZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJTlVMTCwKIAkJCQkJCQkJCQlwbGFuc291cmNlLT5x dWVyeV9zdHJpbmcsCiAJCQkJCQkJCQkJc25hcCwgY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJ CQkJCQlkZXN0LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9i YWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggNTU2NWYyMDBjMy4uNGVmMzQ5ZGY4YiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jCkBAIC02NSw2ICs2NSw3IEBAIHN0YXRpYyB2b2lkIERvUG9ydGFsUmV3aW5kKFBvcnRh bCBwb3J0YWwpOwogICovCiBRdWVyeURlc2MgKgogQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10 ICpwbGFubmVkc3RtdCwKKwkJCQlDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQljb25zdCBjaGFyICpz b3VyY2VUZXh0LAogCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCVNuYXBzaG90IGNyb3NzY2hl Y2tfc25hcHNob3QsCkBAIC03Nyw2ICs3OCw3IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQsCiAKIAlxZC0+b3BlcmF0aW9uID0gcGxhbm5lZHN0bXQtPmNvbW1hbmRU eXBlOwkvKiBvcGVyYXRpb24gKi8KIAlxZC0+cGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsJLyog cGxhbiAqLworCXFkLT5jcGxhbiA9IGNwbGFuOwkJCQkvKiBDYWNoZWRQbGFuLCBpZiBwbGFuIGlz IGZyb20gb25lICovCiAJcWQtPnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0OwkvKiBxdWVyeSB0ZXh0 ICovCiAJcWQtPnNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CS8qIHNuYXBz aG90ICovCiAJLyogUkkgY2hlY2sgc25hcHNob3QgKi8KQEAgLTE0NSw3ICsxNDcsNyBAQCBQcm9j ZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJLyoKIAkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVz YyBvYmplY3QKIAkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNl VGV4dCwKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgc291cmNlVGV4 dCwKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJ CQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIApAQCAtNDkzLDYgKzQ5NSw3IEBAIFBvcnRh bFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqIHRoZSBk ZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyksCisJCQkJ CQkJCQkJCU5VTEwsCiAJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkJCQkJ R2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNkZXNjLmgKaW5kZXggYWYyYmYzNmRmYi4uNGI3MzY4YTBkYyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjZGVzYy5oCkBAIC0zMiw5ICszMiwxMiBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBRdWVy eURlc2MKIHsKKwlOb2RlVGFnCQl0eXBlOworCiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRl ZCBieSBDcmVhdGVRdWVyeURlc2MgKi8KIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VM RUNULCBDTURfVVBEQVRFLCBldGMuICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBw bGFubmVyJ3Mgb3V0cHV0IChjb3VsZCBiZSB1dGlsaXR5LCB0b28pICovCisJc3RydWN0IENhY2hl ZFBsYW4gKmNwbGFuOwkvKiBDYWNoZWRQbGFuLCBpZiBwbGFubmVkc3RtdCBpcyBmcm9tIG9uZSAq LwogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkg Ki8KIAlTbmFwc2hvdAlzbmFwc2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8K IAlTbmFwc2hvdAljcm9zc2NoZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRh dGUvZGVsZXRlICovCkBAIC01Nyw2ICs2MCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwog CiAvKiBpbiBwcXVlcnkuYyAqLwogZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBs YW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJICBzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3Bs YW4sCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICBTbmFwc2hv dCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggYWVlYmUwZTBmZi4uNzJjYmYxMjBjNSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAibm9kZXMvbG9ja29w dGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMv bWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2FjaGUuaCIKIAogCiAvKgpAQCAtMjU2 LDYgKzI1NywxNSBAQCBleHRlcm4gdm9pZCBFeGVjRW5kTm9kZShQbGFuU3RhdGUgKm5vZGUpOwog ZXh0ZXJuIHZvaWQgRXhlY1NodXRkb3duTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZv aWQgRXhlY1NldFR1cGxlQm91bmQoaW50NjQgdHVwbGVzX25lZWRlZCwgUGxhblN0YXRlICpjaGls ZF9ub2RlKTsKIAorLyoKKyAqIElzIHRoZSBDYWNoZWRQbGFuIGluIGVzX2NhY2hlZHBsYW4gc3Rp bGwgdmFsaWQ/CisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorRXhlY1BsYW5TdGlsbFZhbGlkKEVT dGF0ZSAqZXN0YXRlKQoreworCXJldHVybiBlc3RhdGUtPmVzX2NhY2hlZHBsYW4gPT0gTlVMTCA/ IHRydWUgOgorCQlDYWNoZWRQbGFuU3RpbGxWYWxpZChlc3RhdGUtPmVzX2NhY2hlZHBsYW4pOwor fQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1Byb2NOb2RlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4 IGNiNzE0ZjRhMTkuLjg0NmViMzJhMWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MjMsNiAr NjIzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJCQkJICogRXhlY1Jvd01hcmtz LCBvciBOVUxMIGlmIG5vbmUgKi8KIAlMaXN0CSAgICplc19ydGVwZXJtaW5mb3M7CS8qIExpc3Qg b2YgUlRFUGVybWlzc2lvbkluZm8gKi8KIAlQbGFubmVkU3RtdCAqZXNfcGxhbm5lZHN0bXQ7CS8q IGxpbmsgdG8gdG9wIG9mIHBsYW4gdHJlZSAqLworCXN0cnVjdCBDYWNoZWRQbGFuICAqZXNfY2Fj aGVkcGxhbjsJLyogQ2FjaGVkUGxhbiBpZiBwbGFubmVkc3RtdCBpcyBmcm9tCisJCQkJCQkJCQkJ ICogb25lLCBvciBOVUxMIGlmIG5vdCAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8q IFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKIAlKdW5rRmlsdGVyICplc19qdW5rRmls dGVyOwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUu aAppbmRleCA5MTZlNTlkOWZlLi4wYTllMDQxZDUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaApAQCAt MjIxLDYgKzIyMSwyMCBAQCBleHRlcm4gQ2FjaGVkUGxhbiAqR2V0Q2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFt cywKIAkJCQkJCQkJIFJlc291cmNlT3duZXIgb3duZXIsCiAJCQkJCQkJCSBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudik7CisKKy8qCisgKiBDYWNoZWRQbGFuU3RpbGxWYWxpZAorICoJCVJldHVy bnMgaWYgYSBjYWNoZWQgZ2VuZXJpYyBwbGFuIGlzIHN0aWxsIHZhbGlkCisgKgorICogSW52b2tl ZCBieSB0aGUgZXhlY3V0b3IgZm9yIGVhY2ggcmVsYXRpb24gbG9jayBhY3F1aXJlZCBkdXJpbmcg dGhlCisgKiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGxhbiB0cmVlIHdpdGhpbiB0aGUgQ2FjaGVk UGxhbi4KKyAqLworc3RhdGljIGlubGluZSBib29sCitDYWNoZWRQbGFuU3RpbGxWYWxpZChDYWNo ZWRQbGFuICpjcGxhbikKK3sKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOworfQorCiBleHRlcm4g dm9pZCBSZWxlYXNlQ2FjaGVkUGxhbihDYWNoZWRQbGFuICpwbGFuLCBSZXNvdXJjZU93bmVyIG93 bmVyKTsKIAogZXh0ZXJuIGJvb2wgQ2FjaGVkUGxhbkFsbG93c1NpbXBsZVZhbGlkaXR5Q2hlY2so Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKLS0gCjIuMzUuMwoK --0000000000006c6975060667113b--