Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pextx-0007Ce-Sf for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Mar 2023 12:49:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pextv-0003Ol-Um for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Mar 2023 12:49:11 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pextu-0003Oa-US for pgsql-hackers@lists.postgresql.org; Wed, 22 Mar 2023 12:49:11 +0000 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pextr-0002Yk-V2 for pgsql-hackers@postgresql.org; Wed, 22 Mar 2023 12:49:09 +0000 Received: by mail-pj1-x102c.google.com with SMTP id p3-20020a17090a74c300b0023f69bc7a68so14518236pjl.4 for ; Wed, 22 Mar 2023 05:49:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679489347; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=JNQOtsXrYBylzeC3Zn+NTlMpcYAPAQZzxXcD+2i0Ksg=; b=HFTYAgCrNwDAGcXyKDA9jlUBC+9NgFyZm/KJGq9XAVBjGnWuYL00R7Re7JjbQuvfPi 9GoDe80yv+csMFsHi8wsNvFyHkEAZ128Vq25oXi4w24qkhZfpJb3XiJFWxO8ZIUS9YKA GPkCf/mpHlrzh0Bw/LCqWjf+KIF/PwmDLg8DH9T/r36sIi22rm12f82lhcBuxw+x6cyy N4oUVkXdpF7dmoY7Uy7Zq44vFgpBcEz1qW8+sEJrpF4nxOvK1rUJ19e5tpbcK14De9GZ +nOr1n6PSPki5PMzl6aqVURIH6lP3an9laliqP33SgBBCgEgEL/Lu2gWQfpNAXIdF4f1 Rsiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679489347; 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=JNQOtsXrYBylzeC3Zn+NTlMpcYAPAQZzxXcD+2i0Ksg=; b=29as9GdATWe1rofM1Hh0bhMIvKZQ+bAswIilbfk3FQ05d2P6dUBUIsHNpqlHvy2ev9 w1UkGz1uW7ITPVPPzfw18O2pj6i0xTLHtyofe7ly66q6qrd9TBeCHyECk5YtLvsIVB9q 1H1r7w+2uJWiTg3b3YQuE7ignbwWG/KtHFykfepNuLPDQ+KiWDZR+Ye7NDUy9YKRc/j1 MpOkQjkTAVtsY7R+mpaLk0eeZzuicB06Cohr7bTrtvQbeJFFHkzZm1yvNfLLUusjgID+ fISl71tQlvRdWEccDBw9/jjOvHaTruGzthGGIMD5rFOD8BXd1Tysj+xab6iiS/CBjFMB 3l6g== X-Gm-Message-State: AO0yUKUnBbiNt/PKs/XsSoMpgVaFjbOw4G7lOjejRKn4bHL7f7ODhbBv iZVHY6lSZ6WWRZTdy1RQ+oANazyodzUrKB5FhcE= X-Google-Smtp-Source: AK7set91tMXjVVSDPxCc6XFwC+NnVAOUq/T9IEO1l6qieQKJVakEFx2uYtr3DrB2YzRNjd2Sa5hMR2r0941ysw6w6WM= X-Received: by 2002:a17:902:7602:b0:19f:1dfc:9fd4 with SMTP id k2-20020a170902760200b0019f1dfc9fd4mr989890pll.1.1679489346529; Wed, 22 Mar 2023 05:49:06 -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> In-Reply-To: From: Amit Langote Date: Wed, 22 Mar 2023 21:48:49 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Andres Freund Cc: Alvaro Herrera , David Rowley , Jacob Champion , PostgreSQL-development , Robert Haas , Tom Lane Content-Type: multipart/mixed; boundary="000000000000e82ec605f77c953e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e82ec605f77c953e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 14, 2023 at 7:07=E2=80=AFPM Amit Langote wrote: > On Thu, Mar 2, 2023 at 10:52=E2=80=AFPM Amit Langote wrote: > > I think I have figured out what might be going wrong on that cfbot > > animal after building with the same CPPFLAGS as that animal locally. > > I had forgotten to update _out/_readRangeTblEntry() to account for the > > patch's change that a view's RTE_SUBQUERY now also preserves relkind > > in addition to relid and rellockmode for the locking consideration. > > > > Also, I noticed that a multi-query Portal execution with rules was > > failing (thanks to a regression test added in a7d71c41db) because of > > the snapshot used for the 2nd query onward not being updated for > > command ID change under patched model of multi-query Portal execution. > > To wit, under the patched model, all queries in the multi-query Portal > > case undergo ExecutorStart() before any of it is run with > > ExecutorRun(). The patch hadn't changed things however to update the > > snapshot's command ID for the 2nd query onwards, which caused the > > aforementioned test case to fail. > > > > This new model does however mean that the 2nd query onwards must use > > PushCopiedSnapshot() given the current requirement of > > UpdateActiveSnapshotCommandId() that the snapshot passed to it must > > not be referenced anywhere else. The new model basically requires > > that each query's QueryDesc points to its own copy of the > > ActiveSnapshot. That may not be a thing in favor of the patched model > > though. For now, I haven't been able to come up with a better > > alternative. > > Here's a new version addressing the following 2 points. > > * Like views, I realized that non-leaf relations of partition trees > scanned by an Append/MergeAppend would need to be locked separately, > because ExecInitNode() traversal of the plan tree would not account > for them. That is, they are not opened using > ExecGetRangeTableRelation() or ExecOpenScanRelation(). One exception > is that some (if not all) of those non-leaf relations may be > referenced in PartitionPruneInfo and so locked as part of initializing > the corresponding PartitionPruneState, but I decided not to complicate > the code to filter out such relations from the set locked separately. > To carry the set of relations to lock, the refactoring patch 0001 > re-introduces the List of Bitmapset field named allpartrelids into > Append/MergeAppend nodes, which we had previously removed on the > grounds that those relations need not be locked separately (commits > f2343653f5b, f003a7522bf). > > * I decided to initialize QueryDesc.planstate even in the cases where > ExecInitNode() traversal is aborted in the middle on detecting > CachedPlan invalidation such that it points to a partially initialized > PlanState tree. My earlier thinking that each PlanState node need not > be visited for resource cleanup in such cases was naive after all. To > that end, I've fixed the ExecEndNode() subroutines of all Plan node > types to account for potentially uninitialized fields. There are a > couple of cases where I'm a bit doubtful though. In > ExecEndCustomScan(), there's no indication in CustomScanState whether > it's OK to call EndCustomScan() when BeginCustomScan() may not have > been called. For ForeignScanState, I've assumed that > ForeignScanState.fdw_state being set can be used as a marker that > BeginForeignScan would have been called, though maybe that's not a > solid assumption. > > I'm also attaching a new (small) patch 0003 that eliminates the > loop-over-rangetable in ExecCloseRangeTableRelations() in favor of > iterating over a new List field of EState named es_opened_relations, > which is populated by ExecGetRangeTableRelation() with only the > relations that were opened. This speeds up > ExecCloseRangeTableRelations() significantly for the cases with many > runtime-prunable partitions. Here's another version with some cosmetic changes, like fixing some factually incorrect / obsolete comments and typos that I found. I also noticed that I had missed noting near some table_open() that locks taken with those can't possibly invalidate a plan (such as lazily opened partition routing target partitions) and thus need the treatment that locking during execution initialization requires. --=20 Thanks, Amit Langote EDB: http://www.enterprisedb.com --000000000000e82ec605f77c953e Content-Type: application/octet-stream; name="v36-0003-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v36-0003-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfjoj3t80 RnJvbSBkOWUxNDBlMzdhYjBkYWI4NjBhY2U3YzY2MmZiYTRjMDA2MWM3Njc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAxMyBNYXIgMjAyMyAxNTo1OTozOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjM2IDMv M10gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVTdGF0 ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVuIHRo ZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBmZXcg YXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1bmlu ZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyAxMDAwcyBvZiBwYXJ0aXRpb24gc3Vi cGxhbnMuCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgfCA5ICsrKysrLS0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgfCAyICsrCiBzcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCAgICB8IDIgKysKIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IGZkNjcwMmE2 ODYuLjUwNmUwODc0NzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMTYzMCwxMiArMTYz MCwxMyBAQCBFeGVjQ2xvc2VSZXN1bHRSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpCiB2b2lkCiBF eGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKQogewotCWludAkJCWk7 CisJTGlzdENlbGwgKmxjOwogCi0JZm9yIChpID0gMDsgaSA8IGVzdGF0ZS0+ZXNfcmFuZ2VfdGFi bGVfc2l6ZTsgaSsrKQorCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNfb3BlbmVkX3JlbGF0aW9ucykK IAl7Ci0JCWlmIChlc3RhdGUtPmVzX3JlbGF0aW9uc1tpXSkKLQkJCXRhYmxlX2Nsb3NlKGVzdGF0 ZS0+ZXNfcmVsYXRpb25zW2ldLCBOb0xvY2spOworCQlSZWxhdGlvbiByZWwgPSBsZmlyc3QobGMp OworCisJCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMKaW5kZXggYTQ4NWU3ZGZjNS4uZjcwNTMwNzJkOSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMKQEAgLTgyOSw2ICs4MjksOCBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVT dGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCiAJCX0KIAogCQllc3RhdGUtPmVzX3JlbGF0aW9uc1ty dGkgLSAxXSA9IHJlbDsKKwkJZXN0YXRlLT5lc19vcGVuZWRfcmVsYXRpb25zID0gbGFwcGVuZChl c3RhdGUtPmVzX29wZW5lZF9yZWxhdGlvbnMsCisJCQkJCQkJCQkJCSAgcmVsKTsKIAl9CiAKIAly ZXR1cm4gcmVsOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBkZmE3Mjg0OGM3Li45ODRmZDJlNDIz IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjE5LDYgKzYxOSw4IEBAIHR5cGVkZWYgc3RydWN0 IEVTdGF0ZQogCUluZGV4CQllc19yYW5nZV90YWJsZV9zaXplOwkvKiBzaXplIG9mIHRoZSByYW5n ZSB0YWJsZSBhcnJheXMgKi8KIAlSZWxhdGlvbiAgICplc19yZWxhdGlvbnM7CS8qIEFycmF5IG9m IHBlci1yYW5nZS10YWJsZS1lbnRyeSBSZWxhdGlvbgogCQkJCQkJCQkgKiBwb2ludGVycywgb3Ig TlVMTCBpZiBub3QgeWV0IG9wZW5lZCAqLworCUxpc3QJICAgKmVzX29wZW5lZF9yZWxhdGlvbnM7 IC8qIExpc3Qgb2Ygbm9uLU5VTEwgZW50cmllcyBpbgorCQkJCQkJCQkJICAqIGVzX3JlbGF0aW9u cyBpbiBubyBzcGVjaWZpYyBvcmRlciAqLwogCXN0cnVjdCBFeGVjUm93TWFyayAqKmVzX3Jvd21h cmtzOwkvKiBBcnJheSBvZiBwZXItcmFuZ2UtdGFibGUtZW50cnkKIAkJCQkJCQkJCQkgKiBFeGVj Um93TWFya3MsIG9yIE5VTEwgaWYgbm9uZSAqLwogCUxpc3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJ LyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwotLSAKMi4zNS4zCgo= --000000000000e82ec605f77c953e Content-Type: application/octet-stream; name="v36-0001-Add-field-to-store-partitioned-relids-to-Append-.patch" Content-Disposition: attachment; filename="v36-0001-Add-field-to-store-partitioned-relids-to-Append-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfjoj3tf2 RnJvbSAyODFiNzNkY2YzZWU1NjlmNzBlZTExMmM0NmNkM2JjNzcyNThmNGFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCA5IE1hciAyMDIzIDExOjI2OjA2ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MzYgMS8z XSBBZGQgZmllbGQgdG8gc3RvcmUgcGFydGl0aW9uZWQgcmVsaWRzIHRvCiBBcHBlbmQvTWVyZ2VB cHBlbmQKCkEgZnV0dXJlIGNvbW1pdCB3b3VsZCBsaWtlIHRvIG1vdmUgdGhlIHRpbWluZyBvZiBs b2NraW5nIHJlbGF0aW9ucwpyZWZlcmVuY2VkIGluIGEgY2FjaGVkIHBsYW4gdG8gRXhlY0luaXRO b2RlKCkgdHJhdmVyc2FsIG9mIHRoZSBwbGFuCnRyZWUgZnJvbSB0aGUgY3VycmVudCBsb29wLW92 ZXItcmFuZ2V0YWJsZSBpbiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgpHaXZlbiB0aGF0IHBhcnRp dGlvbmVkIHRhYmxlcyAodGhlaXIgUlQgaW5kZXhlcykgd291bGQgbm90IGJlCmFjY2Vzc2libGUg dmlhIHRoZSBuZXcgd2F5IG9mIGZpbmRpbmcgdGhlIHJlbGF0aW9ucyB0byBsb2NrLCBhZGQgYQpm aWVsZCB0byBBcHBlbmQvTWVyZ2VBcHBlbmQgdG8gdHJhY2sgdGhlbSBzZXBhcmF0ZWx5LgoKVGhp cyByZWZhY3RvcnMgdGhlIGNvZGUgdG8gbG9vayB1cCBwYXJ0aXRpb25lZCBwYXJlbnQgcmVsaWRz IGZyb20gYQpnaXZlbiBsaXN0IG9mIGxlYWYgcGFydGl0aW9uIHN1YnBhdGhzIG9mIGFuIEFwcGVu ZC9NZXJnZUFwcGVuZCBvdXQKb2YgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKCkgaW50byBpdHMg b3duIGZ1bmN0aW9uIGNhbGxlZAphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcygpLiAgVGhv dWdoLCB0aGUgY29kZSBuZWVkcyB0byBiZQpnZW5lcmFsaXplZCB0byB0aGUgY2FzZXMgd2hlcmUg Y2hpbGQgcmVscyBjYW4gYmUgam9pbnJlbHMgb3IKdXBwZXIgKGdyb3VwaW5nKSByZWxzLiAgQWxz bywgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdHJhdmVyc2UgdGhlIHBhcmVudApjaGFpbiBvZiBhIGNo aWxkIGdyb3VwaW5nIHJlbCwgdGhpcyBtYWtlcyBpdHMgUmVsT3B0SW5mby5wYXJlbnQgdG8gYmUK c2V0LCB3aGljaCBpcyBhbHJlYWR5IGRvbmUgZm9yIGJhc2VyZWxzIGFuZCBqb2lucmVscy4KLS0t CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCAgMzYgKysrKystLQog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgIHwgICAzICsKIHNyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYyB8IDEzNCArKysrKysrKysrKysrKysrKysr KysrKysKIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyAgICB8IDEyNCArKyst LS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAg ICAgfCAgMTQgKysrCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oICAgICAgfCAg IDMgKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oICAgIHwgICAzICstCiA3 IGZpbGVzIGNoYW5nZWQsIDE5NCBpbnNlcnRpb25zKCspLCAxMjMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IDkxMGZmYmYxZTEuLjc5NGNk YjVlM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4u YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTI1LDYg KzI1LDcgQEAKICNpbmNsdWRlICJub2Rlcy9leHRlbnNpYmxlLmgiCiAjaW5jbHVkZSAibm9kZXMv bWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAib3B0 aW1pemVyL2FwcGVuZGluZm8uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvY2xhdXNlcy5oIgogI2lu Y2x1ZGUgIm9wdGltaXplci9jb3N0LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5o IgpAQCAtMTIwOSw2ICsxMjEwLDcgQEAgY3JlYXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpy b290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAlPaWQJCSAgICpub2RlQ29s bGF0aW9ucyA9IE5VTEw7CiAJYm9vbAkgICAqbm9kZU51bGxzRmlyc3QgPSBOVUxMOwogCWJvb2wJ CWNvbnNpZGVyX2FzeW5jID0gZmFsc2U7CisJTGlzdAkgICAqYWxscGFydHJlbGlkcyA9IE5JTDsK IAogCS8qCiAJICogVGhlIHN1YnBhdGhzIGxpc3QgY291bGQgYmUgZW1wdHksIGlmIGV2ZXJ5IGNo aWxkIHdhcyBwcm92ZW4gZW1wdHkgYnkKQEAgLTEzNTAsMTggKzEzNTIsMjQgQEAgY3JlYXRlX2Fw cGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBm bGFncykKIAkJCSsrbmFzeW5jcGxhbnM7CiAJCX0KIAorCQkvKiBQb3B1bGF0ZSBwYXJ0aXRpb25l ZCBwYXJlbnQgcmVsaWRzLiAqLworCQlhbGxwYXJ0cmVsaWRzID0gYWRkX2FwcGVuZF9zdWJwYXRo X3BhcnRyZWxpZHMocm9vdCwgc3VicGF0aCwgcmVsLAorCQkJCQkJCQkJCQkJCSAgYWxscGFydHJl bGlkcyk7CisKIAkJc3VicGxhbnMgPSBsYXBwZW5kKHN1YnBsYW5zLCBzdWJwbGFuKTsKIAl9CiAK KwlwbGFuLT5hbGxwYXJ0cmVsaWRzID0gYWxscGFydHJlbGlkczsKKwogCS8qIFNldCBiZWxvdyBp ZiB3ZSBmaW5kIHF1YWxzIHRoYXQgd2UgY2FuIHVzZSB0byBydW4tdGltZSBwcnVuZSAqLwogCXBs YW4tPnBhcnRfcHJ1bmVfaW5kZXggPSAtMTsKIAogCS8qCi0JICogSWYgYW55IHF1YWxzIGV4aXN0 LCB0aGV5IG1heSBiZSB1c2VmdWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgotCSAqIHBy dW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZvcm1hdGlvbiBuZWVkZWQgYnkgdGhl IGV4ZWN1dG9yIHRvCi0JICogZG8gcGFydGl0aW9uIHBydW5pbmcuCisJICogSWYgc2Nhbm5pbmcg cGFydGl0aW9ucywgY2hlY2sgaWYgdGhlcmUgYXJlIHF1YWxzIHRoYXQgbWF5IGJlIHVzZWZ1bCB0 bworCSAqIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24gcHJ1bmluZyBkdXJpbmcgZXhlY3V0aW9u LiAgR2F0aGVyIGluZm9ybWF0aW9uCisJICogbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0byBkbyBw YXJ0aXRpb24gcHJ1bmluZy4KIAkgKi8KLQlpZiAoZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nKQor CWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcgJiYgYWxscGFydHJlbGlkcyAhPSBOSUwpCiAJ ewogCQlMaXN0CSAgICpwcnVuZXF1YWw7CiAKQEAgLTEzODEsNyArMTM4OSw4IEBAIGNyZWF0ZV9h cHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQg ZmxhZ3MpCiAJCWlmIChwcnVuZXF1YWwgIT0gTklMKQogCQkJcGxhbi0+cGFydF9wcnVuZV9pbmRl eCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCiAJCQkJCQkJCQkJCQkJCQkg IGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJCQkJCQkgIHBydW5lcXVhbCk7CisJCQkJ CQkJCQkJCQkJCQkgIHBydW5lcXVhbCwKKwkJCQkJCQkJCQkJCQkJCSAgYWxscGFydHJlbGlkcyk7 CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKQEAgLTE0MjUsNiArMTQzNCw3 IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBl bmRQYXRoICpiZXN0X3BhdGgsCiAJTGlzdAkgICAqc3VicGxhbnMgPSBOSUw7CiAJTGlzdENlbGwg ICAqc3VicGF0aHM7CiAJUmVsT3B0SW5mbyAqcmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsK KwlMaXN0CSAgICphbGxwYXJ0cmVsaWRzID0gTklMOwogCiAJLyoKIAkgKiBXZSBkb24ndCBoYXZl IHRoZSBhY3R1YWwgY3JlYXRpb24gb2YgdGhlIE1lcmdlQXBwZW5kIG5vZGUgc3BsaXQgb3V0CkBA IC0xNTE0LDE4ICsxNTI0LDIzIEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5m byAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCQlzdWJwbGFuID0gKFBsYW4g Kikgc29ydDsKIAkJfQogCisJCWFsbHBhcnRyZWxpZHMgPSBhZGRfYXBwZW5kX3N1YnBhdGhfcGFy dHJlbGlkcyhyb290LCBzdWJwYXRoLCByZWwsCisJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRz KTsKKwogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCW5v ZGUtPmFsbHBhcnRyZWxpZHMgPSBhbGxwYXJ0cmVsaWRzOworCiAJLyogU2V0IGJlbG93IGlmIHdl IGZpbmQgcXVhbHMgdGhhdCB3ZSBjYW4gdXNlIHRvIHJ1bi10aW1lIHBydW5lICovCiAJbm9kZS0+ cGFydF9wcnVuZV9pbmRleCA9IC0xOwogCiAJLyoKLQkgKiBJZiBhbnkgcXVhbHMgZXhpc3QsIHRo ZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uCi0JICogcHJ1bmlu ZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0aGUgZXhl Y3V0b3IgdG8KLQkgKiBkbyBwYXJ0aXRpb24gcHJ1bmluZy4KKwkgKiBJZiBzY2FubmluZyBwYXJ0 aXRpb25zLCBjaGVjayBpZiB0aGVyZSBhcmUgcXVhbHMgdGhhdCBtYXkgYmUgdXNlZnVsIHRvCisJ ICogcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBH YXRoZXIgaW5mb3JtYXRpb24KKwkgKiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvIGRvIHBhcnRp dGlvbiBwcnVuaW5nLgogCSAqLwotCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcpCisJaWYg KGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAmJiBhbGxwYXJ0cmVsaWRzICE9IE5JTCkKIAl7CiAJ CUxpc3QJICAgKnBydW5lcXVhbDsKIApAQCAtMTUzNyw3ICsxNTUyLDggQEAgY3JlYXRlX21lcmdl X2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0 aCwKIAkJaWYgKHBydW5lcXVhbCAhPSBOSUwpCiAJCQlub2RlLT5wYXJ0X3BydW5lX2luZGV4ID0g bWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwKIAkJCQkJCQkJCQkJCQkJCSAgYmVz dF9wYXRoLT5zdWJwYXRocywKLQkJCQkJCQkJCQkJCQkJCSAgcHJ1bmVxdWFsKTsKKwkJCQkJCQkJ CQkJCQkJCSAgcHJ1bmVxdWFsLAorCQkJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRzKTsKIAl9 CiAKIAlub2RlLT5tZXJnZXBsYW5zID0gc3VicGxhbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubmVyLmMKaW5kZXggYTE4NzNjZTI2ZC4uNjJiM2VjOTZjYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYwpAQCAtNzgwMSw4ICs3ODAxLDExIEBAIGNyZWF0ZV9wYXJ0aXRpb253 aXNlX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJICAgYWdnX2Nv c3RzLCBnZCwgJmNoaWxkX2V4dHJhLAogCQkJCQkJCQkJICAgJmNoaWxkX3BhcnRpYWxseV9ncm91 cGVkX3JlbCk7CiAKKwkJLyogTWFyayBhcyBjaGlsZCBvZiBncm91cGVkX3JlbC4gKi8KKwkJY2hp bGRfZ3JvdXBlZF9yZWwtPnBhcmVudCA9IGdyb3VwZWRfcmVsOwogCQlpZiAoY2hpbGRfcGFydGlh bGx5X2dyb3VwZWRfcmVsKQogCQl7CisJCQljaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnBh cmVudCA9IGdyb3VwZWRfcmVsOwogCQkJcGFydGlhbGx5X2dyb3VwZWRfbGl2ZV9jaGlsZHJlbiA9 CiAJCQkJbGFwcGVuZChwYXJ0aWFsbHlfZ3JvdXBlZF9saXZlX2NoaWxkcmVuLAogCQkJCQkJY2hp bGRfcGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL2FwcGVuZGluZm8uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVu ZGluZm8uYwppbmRleCA5ZDM3NzM4NWYxLi40ODc2NzQyYWIyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvYXBwZW5kaW5mby5jCkBAIC00MCw2ICs0MCw3IEBAIHN0YXRpYyB2b2lkIG1ha2Vf aW5oX3RyYW5zbGF0aW9uX2xpc3QoUmVsYXRpb24gb2xkcmVsYXRpb24sCiAJCQkJCQkJCQkgIEFw cGVuZFJlbEluZm8gKmFwcGluZm8pOwogc3RhdGljIE5vZGUgKmFkanVzdF9hcHBlbmRyZWxfYXR0 cnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCQkJCQkJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJz X2NvbnRleHQgKmNvbnRleHQpOworc3RhdGljIExpc3QgKmFkZF9wYXJ0X3JlbGlkcyhMaXN0ICph bGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpOwogCiAKIC8qCkBAIC0xMDMxLDMg KzEwMzIsMTM2IEBAIGRpc3RyaWJ1dGVfcm93X2lkZW50aXR5X3ZhcnMoUGxhbm5lckluZm8gKnJv b3QpCiAJCX0KIAl9CiB9CisKKy8qCisgKiBhZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcwor ICoJCUxvb2sgdXAgYSBjaGlsZCBzdWJwYXRoJ3MgcmVsJ3MgcGFydGl0aW9uZWQgcGFyZW50IHJl bGlkcyB1cCB0bworICoJCXBhcmVudHJlbCBhbmQgYWRkIHRoZSBiaXRtYXBzZXQgY29udGFpbmlu ZyB0aG9zZSBpbnRvCisgKgkJJ2FsbHBhcnRyZWxpZHMnCisgKi8KK0xpc3QgKgorYWRkX2FwcGVu ZF9zdWJwYXRoX3BhcnRyZWxpZHMoUGxhbm5lckluZm8gKnJvb3QsIFBhdGggKnN1YnBhdGgsCisJ CQkJCQkJICBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCisJCQkJCQkJICBMaXN0ICphbGxwYXJ0cmVs aWRzKQoreworCVJlbE9wdEluZm8gKnByZWwgPSBzdWJwYXRoLT5wYXJlbnQ7CisJUmVsaWRzCQlw YXJ0cmVsaWRzID0gTlVMTDsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUncyBubyBwYXJl bnQgdG8gYmVnaW4gd2l0aC4gKi8KKwlpZiAoIUlTX09USEVSX1JFTChwcmVsKSkKKwkJcmV0dXJu IGFsbHBhcnRyZWxpZHM7CisKKwkvKgorCSAqIFRyYXZlcnNlIHVwIHRvIHRoZSBwYXRocmVsJ3Mg dG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQsIGNvbGxlY3RpbmcKKwkgKiBwYXJlbnQgcmVsaWRz IGFzIHdlIGdvOyBidXQgc3RvcCBpZiB3ZSByZWFjaCBwYXJlbnRyZWwuICAoTm9ybWFsbHksIGEK KwkgKiBwYXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQgaXMgZWl0aGVyIHBhcmVu dHJlbCBvciBhIFVOSU9OIEFMTAorCSAqIGFwcGVuZHJlbCBjaGlsZCBvZiBwYXJlbnRyZWwuICBC dXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpvaW5zIG9mCisJICogbXVsdGktbGV2ZWwg cGFydGl0aW9uaW5nIHRyZWVzLCB3ZSBjYW4gc2VlIGFuIGFwcGVuZCBwYXRoIHdob3NlCisJICog cGFyZW50cmVsIGlzIGFuIGludGVybWVkaWF0ZSBwYXJ0aXRpb25lZCB0YWJsZS4pCisJICovCisJ ZG8KKwl7CisJCVJlbGlkcwlwYXJlbnRfcmVsaWRzID0gTlVMTDsKKworCQkvKgorCQkgKiBGb3Ig c2ltcGxlIGNoaWxkIHJlbHMsIHdlIGNhbiBzaW1wbHkgZ2V0IHRoZSBwYXJlbnQgcmVsaWQgZnJv bQorCQkgKiBwcmVsLT5wYXJlbnQuICBCdXQgZm9yIHBhcnRpdGlvbndpc2Ugam9pbiBhbmQgYWdn cmVnYXRlIGNoaWxkIHJlbHMsCisJCSAqIHdoaWxlIHdlIGNhbiB1c2UgcHJlbC0+cGFyZW50IHRv IG1vdmUgdXAgdGhlIHRyZWUsIHBhcmVudCByZWxpZHMgdG8KKwkJICogYWRkIGludG8gJ3BhcnRy ZWxpZHMnIG11c3QgYmUgZm91bmQgdGhlIGhhcmQgd2F5IHRocm91Z2ggdGhlCisJCSAqIEFwcGVu ZEluZm9JbmZvcywgYmVjYXVzZSAxKSBhIGpvaW5yZWwncyByZWxpZHMgbWF5IHBvaW50IHRvIFJU RV9KT0lOCisJCSAqIGVudHJpZXMsIDIpIHRvcG1vc3QgcGFyZW50IGdyb3VwaW5nIHJlbCdzIHJl bGlkcyBmaWVsZCBpcyBsZWZ0IE5VTEwuCisJCSAqLworCQlpZiAoSVNfU0lNUExFX1JFTChwcmVs KSkKKwkJeworCQkJcHJlbCA9IHByZWwtPnBhcmVudDsKKwkJCS8qIFN0b3Agb25jZSB3ZSByZWFj aCB0aGUgcm9vdCBwYXJ0aXRpb25lZCByZWwuICovCisJCQlpZiAoIUlTX1BBUlRJVElPTkVEX1JF TChwcmVsKSkKKwkJCQlicmVhazsKKwkJCXBhcmVudF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcnMo cGFyZW50X3JlbGlkcywgcHJlbC0+cmVsaWRzKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUFwcGVu ZFJlbEluZm8gKiphcHBpbmZvczsKKwkJCWludAkJbmFwcGluZm9zLAorCQkJCQlpOworCisJCQlh cHBpbmZvcyA9IGZpbmRfYXBwaW5mb3NfYnlfcmVsaWRzKHJvb3QsIHByZWwtPnJlbGlkcywKKwkJ CQkJCQkJCQkJICAgJm5hcHBpbmZvcyk7CisJCQlmb3IgKGkgPSAwOyBpIDwgbmFwcGluZm9zOyBp KyspCisJCQl7CisJCQkJQXBwZW5kUmVsSW5mbyAqYXBwaW5mbyA9IGFwcGluZm9zW2ldOworCisJ CQkJcGFyZW50X3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKHBhcmVudF9yZWxpZHMsCisJCQkJCQkJ CQkJCSAgIGFwcGluZm8tPnBhcmVudF9yZWxpZCk7CisJCQl9CisJCQlwZnJlZShhcHBpbmZvcyk7 CisJCQlwcmVsID0gcHJlbC0+cGFyZW50OworCQl9CisJCS8qIGFjY2VwdCB0aGlzIGxldmVsIGFz IGFuIGludGVyZXN0aW5nIHBhcmVudCAqLworCQlwYXJ0cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJz KHBhcnRyZWxpZHMsIHBhcmVudF9yZWxpZHMpOworCQlpZiAocHJlbCA9PSBwYXJlbnRyZWwpCisJ CQlicmVhazsJCS8qIGRvbid0IHRyYXZlcnNlIGFib3ZlIHBhcmVudHJlbCAqLworCX0gd2hpbGUg KElTX09USEVSX1JFTChwcmVsKSk7CisKKwlpZiAocGFydHJlbGlkcyA9PSBOVUxMKQorCQlyZXR1 cm4gYWxscGFydHJlbGlkczsKKworCXJldHVybiBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlk cywgcGFydHJlbGlkcyk7Cit9CisKKy8qCisgKiBhZGRfcGFydF9yZWxpZHMKKyAqCQlBZGQgbmV3 IGluZm8gdG8gYSBsaXN0IG9mIEJpdG1hcHNldHMgb2YgcGFydGl0aW9uZWQgcmVsaWRzLgorICoK KyAqIFdpdGhpbiAnYWxscGFydHJlbGlkcycsIHRoZXJlIGlzIG9uZSBCaXRtYXBzZXQgZm9yIGVh Y2ggdG9wbW9zdCBwYXJlbnQKKyAqIHBhcnRpdGlvbmVkIHJlbC4gIEVhY2ggQml0bWFwc2V0IGNv bnRhaW5zIHRoZSBSVCBpbmRleGVzIG9mIHRoZSB0b3Btb3N0CisgKiBwYXJlbnQgYXMgd2VsbCBh cyBpdHMgcmVsZXZhbnQgbm9uLWxlYWYgY2hpbGQgcGFydGl0aW9ucy4gIFNpbmNlIChieQorICog Y29uc3RydWN0aW9uIG9mIHRoZSByYW5nZXRhYmxlIGxpc3QpIHBhcmVudCBwYXJ0aXRpb25zIG11 c3QgaGF2ZSBsb3dlcgorICogUlQgaW5kZXhlcyB0aGFuIHRoZWlyIGNoaWxkcmVuLCB3ZSBjYW4g ZGlzdGluZ3Vpc2ggdGhlIHRvcG1vc3QgcGFyZW50CisgKiBhcyBiZWluZyB0aGUgbG93ZXN0IHNl dCBiaXQgaW4gdGhlIEJpdG1hcHNldC4KKyAqCisgKiAncGFydHJlbGlkcycgY29udGFpbnMgdGhl IFJUIGluZGV4ZXMgb2YgYSBwYXJlbnQgcGFydGl0aW9uZWQgcmVsLCBhbmQKKyAqIHBvc3NpYmx5 IHNvbWUgbm9uLWxlYWYgY2hpbGRyZW4sIHRoYXQgYXJlIG5ld2x5IGlkZW50aWZpZWQgYXMgcGFy ZW50cyBvZgorICogc29tZSBzdWJwYXRoIHJlbCBwYXNzZWQgdG8gbWFrZV9wYXJ0aXRpb25fcHJ1 bmVpbmZvKCkuICBUaGVzZSBhcmUgYWRkZWQKKyAqIHRvIGFuIGFwcHJvcHJpYXRlIG1lbWJlciBv ZiAnYWxscGFydHJlbGlkcycuCisgKgorICogTm90ZSB0aGF0IHRoZSBsaXN0IGNvbnRhaW5zIG9u bHkgUlQgaW5kZXhlcyBvZiBwYXJ0aXRpb25lZCB0YWJsZXMgdGhhdAorICogYXJlIHBhcmVudHMg b2Ygc29tZSBzY2FuLWxldmVsIHJlbGF0aW9uIGFwcGVhcmluZyBpbiB0aGUgJ3N1YnBhdGhzJyB0 aGF0CisgKiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKSBpcyBkZWFsaW5nIHdpdGguICBBbHNv LCAidG9wbW9zdCIgcGFyZW50cyBhcmUKKyAqIG5vdCBhbGxvd2VkIHRvIGJlIGhpZ2hlciB0aGFu IHRoZSAncGFyZW50cmVsJyBhc3NvY2lhdGVkIHdpdGggdGhlIGFwcGVuZAorICogcGF0aC4gIElu IHRoaXMgd2F5LCB3ZSBhdm9pZCBleHBlbmRpbmcgY3ljbGVzIG9uIHBhcnRpdGlvbmVkIHJlbHMg dGhhdAorICogY2FuJ3QgY29udHJpYnV0ZSB1c2VmdWwgcHJ1bmluZyBpbmZvcm1hdGlvbiBmb3Ig dGhlIHByb2JsZW0gYXQgaGFuZC4KKyAqIChJdCBpcyBwb3NzaWJsZSBmb3IgJ3BhcmVudHJlbCcg dG8gYmUgYSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJsZSwgYW5kIGl0CisgKiBpcyBhbHNvIHBvc3Np YmxlIGZvciBzY2FuLWxldmVsIHJlbGF0aW9ucyB0byBiZSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJs ZXMKKyAqIHJhdGhlciB0aGFuIGxlYWYgcGFydGl0aW9ucy4gIEhlbmNlIHdlIG11c3QgY29uc3Ry dWN0IHRoaXMgcmVsYXRpb24gc2V0CisgKiB3aXRoIHJlZmVyZW5jZSB0byB0aGUgcGFydGljdWxh ciBhcHBlbmQgcGF0aCB3ZSdyZSBkZWFsaW5nIHdpdGgsIHJhdGhlcgorICogdGhhbiBsb29raW5n IGF0IHRoZSBmdWxsIHBhcnRpdGlvbmluZyBzdHJ1Y3R1cmUgcmVwcmVzZW50ZWQgaW4gdGhlCisg KiBSZWxPcHRJbmZvcy4pCisgKi8KK3N0YXRpYyBMaXN0ICoKK2FkZF9wYXJ0X3JlbGlkcyhMaXN0 ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpCit7CisJSW5kZXgJCXRhcmdl dHBhcnQ7CisJTGlzdENlbGwgICAqbGM7CisKKwkvKiBXZSBjYW4gZWFzaWx5IGdldCB0aGUgbG93 ZXN0IHNldCBiaXQgdGhpcyB3YXk6ICovCisJdGFyZ2V0cGFydCA9IGJtc19uZXh0X21lbWJlcihw YXJ0cmVsaWRzLCAtMSk7CisJQXNzZXJ0KHRhcmdldHBhcnQgPiAwKTsKKworCS8qIExvb2sgZm9y IGEgbWF0Y2hpbmcgdG9wbW9zdCBwYXJlbnQgKi8KKwlmb3JlYWNoKGxjLCBhbGxwYXJ0cmVsaWRz KQorCXsKKwkJQml0bWFwc2V0ICAqY3VycnBhcnRyZWxpZHMgPSAoQml0bWFwc2V0ICopIGxmaXJz dChsYyk7CisJCUluZGV4CQljdXJydGFyZ2V0ID0gYm1zX25leHRfbWVtYmVyKGN1cnJwYXJ0cmVs aWRzLCAtMSk7CisKKwkJaWYgKHRhcmdldHBhcnQgPT0gY3VycnRhcmdldCkKKwkJeworCQkJLyog Rm91bmQgYSBtYXRjaCwgc28gYWRkIGFueSBuZXcgUlQgaW5kZXhlcyB0byB0aGlzIGhpZXJhcmNo eSAqLworCQkJY3VycnBhcnRyZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoY3VycnBhcnRyZWxpZHMs IHBhcnRyZWxpZHMpOworCQkJbGZpcnN0KGxjKSA9IGN1cnJwYXJ0cmVsaWRzOworCQkJcmV0dXJu IGFsbHBhcnRyZWxpZHM7CisJCX0KKwl9CisJLyogTm8gbWF0Y2gsIHNvIGFkZCB0aGUgbmV3IHBh cnRpdGlvbiBoaWVyYXJjaHkgdG8gdGhlIGxpc3QgKi8KKwlyZXR1cm4gbGFwcGVuZChhbGxwYXJ0 cmVsaWRzLCBwYXJ0cmVsaWRzKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlv bmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpp bmRleCA1MTAxNDVlM2MwLi4zNTU3ZTA3MDgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRw cnVuZS5jCkBAIC0xMzgsNyArMTM4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVTdGVwUmVzdWx0 CiB9IFBydW5lU3RlcFJlc3VsdDsKIAogCi1zdGF0aWMgTGlzdCAqYWRkX3BhcnRfcmVsaWRzKExp c3QgKmFsbHBhcnRyZWxpZHMsIEJpdG1hcHNldCAqcGFydHJlbGlkcyk7CiBzdGF0aWMgTGlzdCAq bWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJ CQkJICAgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJCQkJCSAgIExpc3QgKnBydW5lcXVh bCwKQEAgLTIyMSwzMyArMjIwLDMyIEBAIHN0YXRpYyB2b2lkIHBhcnRrZXlfZGF0dW1fZnJvbV9l eHByKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKICAqIG9mIHNjYW4gcGF0aHMgZm9y IGl0cyBjaGlsZCByZWxzLgogICogJ3BydW5lcXVhbCcgaXMgYSBsaXN0IG9mIHBvdGVudGlhbCBw cnVuaW5nIHF1YWxzIChpLmUuLCByZXN0cmljdGlvbgogICogY2xhdXNlcyB0aGF0IGFyZSBhcHBs aWNhYmxlIHRvIHRoZSBhcHBlbmRyZWwpLgorICogJ2FsbHBhcnRyZWxpZHMnIGNvbnRhaW5zIEJp dG1hcHNldHMgb2YgUlQgaW5kZXhlcyBvZiBwYXJ0aXRpb25lZCBwYXJlbnRzCisgKiB3aG9zZSBw YXJ0aXRpb25zJyBQYXRocyBhcmUgaW4gJ3N1YnBhdGhzJzsgdGhlcmUncyBvbmUgQml0bWFwc2V0 IGZvciBldmVyeQorICogcGFydGl0aW9uIHRyZWUgaW52b2x2ZWQuCiAgKi8KIGludAogbWFrZV9w YXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRy ZWwsCiAJCQkJCQkgTGlzdCAqc3VicGF0aHMsCi0JCQkJCQkgTGlzdCAqcHJ1bmVxdWFsKQorCQkJ CQkJIExpc3QgKnBydW5lcXVhbCwKKwkJCQkJCSBMaXN0ICphbGxwYXJ0cmVsaWRzKQogewogCVBh cnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvOwogCUJpdG1hcHNldCAgKmFsbG1hdGNoZWRzdWJw bGFucyA9IE5VTEw7Ci0JTGlzdAkgICAqYWxscGFydHJlbGlkczsKIAlMaXN0CSAgICpwcnVuZXJl bGluZm9zOwogCWludAkJICAgKnJlbGlkX3N1YnBsYW5fbWFwOwogCUxpc3RDZWxsICAgKmxjOwog CWludAkJCWk7CiAKKwlBc3NlcnQobGlzdF9sZW5ndGgoYWxscGFydHJlbGlkcykgPiAwKTsKKwog CS8qCi0JICogU2NhbiB0aGUgc3VicGF0aHMgdG8gc2VlIHdoaWNoIG9uZXMgYXJlIHNjYW5zIG9m IHBhcnRpdGlvbiBjaGlsZAotCSAqIHJlbGF0aW9ucywgYW5kIGlkZW50aWZ5IHRoZWlyIHBhcmVu dCBwYXJ0aXRpb25lZCByZWxzLiAgKE5vdGU6IHdlIG11c3QKLQkgKiByZXN0cmljdCB0aGUgcGFy ZW50IHBhcnRpdGlvbmVkIHJlbHMgdG8gYmUgcGFyZW50cmVsIG9yIGNoaWxkcmVuIG9mCi0JICog cGFyZW50cmVsLCBvdGhlcndpc2Ugd2UgY291bGRuJ3QgdHJhbnNsYXRlIHBydW5lcXVhbCB0byBt YXRjaC4pCi0JICoKLQkgKiBBbHNvIGNvbnN0cnVjdCBhIHRlbXBvcmFyeSBhcnJheSB0byBtYXAg ZnJvbSBwYXJ0aXRpb24tY2hpbGQtcmVsYXRpb24KLQkgKiByZWxpZCB0byB0aGUgaW5kZXggaW4g J3N1YnBhdGhzJyBvZiB0aGUgc2NhbiBwbGFuIGZvciB0aGF0IHBhcnRpdGlvbi4KKwkgKiBDb25z dHJ1Y3QgYSB0ZW1wb3JhcnkgYXJyYXkgdG8gbWFwIGZyb20gcGFydGl0aW9uLWNoaWxkLXJlbGF0 aW9uIHJlbGlkCisJICogdG8gdGhlIGluZGV4IGluICdzdWJwYXRocycgb2YgdGhlIHNjYW4gcGxh biBmb3IgdGhhdCBwYXJ0aXRpb24uCiAJICogKFVzZSBvZiAic3VicGxhbiIgcmF0aGVyIHRoYW4g InN1YnBhdGgiIGlzIGEgYml0IG9mIGEgbWlzbm9tZXIsIGJ1dAogCSAqIHdlJ2xsIGxldCBpdCBz dGFuZC4pICBGb3IgY29udmVuaWVuY2UsIHdlIHVzZSAxLWJhc2VkIGluZGV4ZXMgaGVyZSwgc28K IAkgKiB0aGF0IHplcm8gY2FuIHJlcHJlc2VudCBhbiB1bi1maWxsZWQgYXJyYXkgZW50cnkuCiAJ ICovCi0JYWxscGFydHJlbGlkcyA9IE5JTDsKIAlyZWxpZF9zdWJwbGFuX21hcCA9IHBhbGxvYzAo c2l6ZW9mKGludCkgKiByb290LT5zaW1wbGVfcmVsX2FycmF5X3NpemUpOwogCiAJaSA9IDE7CkBA IC0yNTYsNTAgKzI1NCw5IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlQYXRoCSAgICpwYXRoID0gKFBhdGggKikg bGZpcnN0KGxjKTsKIAkJUmVsT3B0SW5mbyAqcGF0aHJlbCA9IHBhdGgtPnBhcmVudDsKIAotCQkv KiBXZSBkb24ndCBjb25zaWRlciBwYXJ0aXRpb25lZCBqb2lucyBoZXJlICovCi0JCWlmIChwYXRo cmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJfUkVMKQotCQl7Ci0JCQlSZWxP cHRJbmZvICpwcmVsID0gcGF0aHJlbDsKLQkJCUJpdG1hcHNldCAgKnBhcnRyZWxpZHMgPSBOVUxM OwotCi0JCQkvKgotCQkJICogVHJhdmVyc2UgdXAgdG8gdGhlIHBhdGhyZWwncyB0b3Btb3N0IHBh cnRpdGlvbmVkIHBhcmVudCwKLQkJCSAqIGNvbGxlY3RpbmcgcGFyZW50IHJlbGlkcyBhcyB3ZSBn bzsgYnV0IHN0b3AgaWYgd2UgcmVhY2gKLQkJCSAqIHBhcmVudHJlbC4gIChOb3JtYWxseSwgYSBw YXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQKLQkJCSAqIGlzIGVpdGhlciBwYXJl bnRyZWwgb3IgYSBVTklPTiBBTEwgYXBwZW5kcmVsIGNoaWxkIG9mCi0JCQkgKiBwYXJlbnRyZWwu ICBCdXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpvaW5zIG9mCi0JCQkgKiBtdWx0aS1s ZXZlbCBwYXJ0aXRpb25pbmcgdHJlZXMsIHdlIGNhbiBzZWUgYW4gYXBwZW5kIHBhdGggd2hvc2UK LQkJCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlhdGUgcGFydGl0aW9uZWQgdGFibGUuKQot CQkJICovCi0JCQlkbwotCQkJewotCQkJCUFwcGVuZFJlbEluZm8gKmFwcGluZm87Ci0KLQkJCQlB c3NlcnQocHJlbC0+cmVsaWQgPCByb290LT5zaW1wbGVfcmVsX2FycmF5X3NpemUpOwotCQkJCWFw cGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3ByZWwtPnJlbGlkXTsKLQkJCQlwcmVsID0g ZmluZF9iYXNlX3JlbChyb290LCBhcHBpbmZvLT5wYXJlbnRfcmVsaWQpOwotCQkJCWlmICghSVNf UEFSVElUSU9ORURfUkVMKHByZWwpKQotCQkJCQlicmVhazsJCS8qIHJlYWNoZWQgYSBub24tcGFy dGl0aW9uZWQgcGFyZW50ICovCi0JCQkJLyogYWNjZXB0IHRoaXMgbGV2ZWwgYXMgYW4gaW50ZXJl c3RpbmcgcGFyZW50ICovCi0JCQkJcGFydHJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKHBhcnRyZWxp ZHMsIHByZWwtPnJlbGlkKTsKLQkJCQlpZiAocHJlbCA9PSBwYXJlbnRyZWwpCi0JCQkJCWJyZWFr OwkJLyogZG9uJ3QgdHJhdmVyc2UgYWJvdmUgcGFyZW50cmVsICovCi0JCQl9IHdoaWxlIChwcmVs LT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJfUkVMKTsKLQotCQkJaWYgKHBhcnRy ZWxpZHMpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBGb3VuZCBzb21lIHJlbGV2YW50IHBhcmVudCBw YXJ0aXRpb25zLCB3aGljaCBtYXkgb3IgbWF5IG5vdAotCQkJCSAqIG92ZXJsYXAgd2l0aCBwYXJ0 aXRpb24gdHJlZXMgd2UgYWxyZWFkeSBmb3VuZC4gIEFkZCBuZXcKLQkJCQkgKiBpbmZvcm1hdGlv biB0byB0aGUgYWxscGFydHJlbGlkcyBsaXN0LgotCQkJCSAqLwotCQkJCWFsbHBhcnRyZWxpZHMg PSBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlkcywgcGFydHJlbGlkcyk7Ci0JCQkJLyogQWxz byByZWNvcmQgdGhlIHN1YnBsYW4gaW4gcmVsaWRfc3VicGxhbl9tYXBbXSAqLwotCQkJCS8qIE5v IGR1cGxpY2F0ZXMgcGxlYXNlICovCi0JCQkJQXNzZXJ0KHJlbGlkX3N1YnBsYW5fbWFwW3BhdGhy ZWwtPnJlbGlkXSA9PSAwKTsKLQkJCQlyZWxpZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0g PSBpOwotCQkJfQotCQl9CisJCS8qIE5vIGR1cGxpY2F0ZXMgcGxlYXNlICovCisJCUFzc2VydChy ZWxpZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0gPT0gMCk7CisJCXJlbGlkX3N1YnBsYW5f bWFwW3BhdGhyZWwtPnJlbGlkXSA9IGk7CiAJCWkrKzsKIAl9CiAKQEAgLTM2OCw2MyArMzI1LDYg QEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpwYXJlbnRyZWwsCiAJcmV0dXJuIGxpc3RfbGVuZ3RoKHJvb3QtPnBhcnRQcnVuZUluZm9zKSAt IDE7CiB9CiAKLS8qCi0gKiBhZGRfcGFydF9yZWxpZHMKLSAqCQlBZGQgbmV3IGluZm8gdG8gYSBs aXN0IG9mIEJpdG1hcHNldHMgb2YgcGFydGl0aW9uZWQgcmVsaWRzLgotICoKLSAqIFdpdGhpbiAn YWxscGFydHJlbGlkcycsIHRoZXJlIGlzIG9uZSBCaXRtYXBzZXQgZm9yIGVhY2ggdG9wbW9zdCBw YXJlbnQKLSAqIHBhcnRpdGlvbmVkIHJlbC4gIEVhY2ggQml0bWFwc2V0IGNvbnRhaW5zIHRoZSBS VCBpbmRleGVzIG9mIHRoZSB0b3Btb3N0Ci0gKiBwYXJlbnQgYXMgd2VsbCBhcyBpdHMgcmVsZXZh bnQgbm9uLWxlYWYgY2hpbGQgcGFydGl0aW9ucy4gIFNpbmNlIChieQotICogY29uc3RydWN0aW9u IG9mIHRoZSByYW5nZXRhYmxlIGxpc3QpIHBhcmVudCBwYXJ0aXRpb25zIG11c3QgaGF2ZSBsb3dl cgotICogUlQgaW5kZXhlcyB0aGFuIHRoZWlyIGNoaWxkcmVuLCB3ZSBjYW4gZGlzdGluZ3Vpc2gg dGhlIHRvcG1vc3QgcGFyZW50Ci0gKiBhcyBiZWluZyB0aGUgbG93ZXN0IHNldCBiaXQgaW4gdGhl IEJpdG1hcHNldC4KLSAqCi0gKiAncGFydHJlbGlkcycgY29udGFpbnMgdGhlIFJUIGluZGV4ZXMg b2YgYSBwYXJlbnQgcGFydGl0aW9uZWQgcmVsLCBhbmQKLSAqIHBvc3NpYmx5IHNvbWUgbm9uLWxl YWYgY2hpbGRyZW4sIHRoYXQgYXJlIG5ld2x5IGlkZW50aWZpZWQgYXMgcGFyZW50cyBvZgotICog c29tZSBzdWJwYXRoIHJlbCBwYXNzZWQgdG8gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKCkuICBU aGVzZSBhcmUgYWRkZWQKLSAqIHRvIGFuIGFwcHJvcHJpYXRlIG1lbWJlciBvZiAnYWxscGFydHJl bGlkcycuCi0gKgotICogTm90ZSB0aGF0IHRoZSBsaXN0IGNvbnRhaW5zIG9ubHkgUlQgaW5kZXhl cyBvZiBwYXJ0aXRpb25lZCB0YWJsZXMgdGhhdAotICogYXJlIHBhcmVudHMgb2Ygc29tZSBzY2Fu LWxldmVsIHJlbGF0aW9uIGFwcGVhcmluZyBpbiB0aGUgJ3N1YnBhdGhzJyB0aGF0Ci0gKiBtYWtl X3BhcnRpdGlvbl9wcnVuZWluZm8oKSBpcyBkZWFsaW5nIHdpdGguICBBbHNvLCAidG9wbW9zdCIg cGFyZW50cyBhcmUKLSAqIG5vdCBhbGxvd2VkIHRvIGJlIGhpZ2hlciB0aGFuIHRoZSAncGFyZW50 cmVsJyBhc3NvY2lhdGVkIHdpdGggdGhlIGFwcGVuZAotICogcGF0aC4gIEluIHRoaXMgd2F5LCB3 ZSBhdm9pZCBleHBlbmRpbmcgY3ljbGVzIG9uIHBhcnRpdGlvbmVkIHJlbHMgdGhhdAotICogY2Fu J3QgY29udHJpYnV0ZSB1c2VmdWwgcHJ1bmluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIHByb2JsZW0g YXQgaGFuZC4KLSAqIChJdCBpcyBwb3NzaWJsZSBmb3IgJ3BhcmVudHJlbCcgdG8gYmUgYSBjaGls ZCBwYXJ0aXRpb25lZCB0YWJsZSwgYW5kIGl0Ci0gKiBpcyBhbHNvIHBvc3NpYmxlIGZvciBzY2Fu LWxldmVsIHJlbGF0aW9ucyB0byBiZSBjaGlsZCBwYXJ0aXRpb25lZCB0YWJsZXMKLSAqIHJhdGhl ciB0aGFuIGxlYWYgcGFydGl0aW9ucy4gIEhlbmNlIHdlIG11c3QgY29uc3RydWN0IHRoaXMgcmVs YXRpb24gc2V0Ci0gKiB3aXRoIHJlZmVyZW5jZSB0byB0aGUgcGFydGljdWxhciBhcHBlbmQgcGF0 aCB3ZSdyZSBkZWFsaW5nIHdpdGgsIHJhdGhlcgotICogdGhhbiBsb29raW5nIGF0IHRoZSBmdWxs IHBhcnRpdGlvbmluZyBzdHJ1Y3R1cmUgcmVwcmVzZW50ZWQgaW4gdGhlCi0gKiBSZWxPcHRJbmZv cy4pCi0gKi8KLXN0YXRpYyBMaXN0ICoKLWFkZF9wYXJ0X3JlbGlkcyhMaXN0ICphbGxwYXJ0cmVs aWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpCi17Ci0JSW5kZXgJCXRhcmdldHBhcnQ7Ci0JTGlz dENlbGwgICAqbGM7Ci0KLQkvKiBXZSBjYW4gZWFzaWx5IGdldCB0aGUgbG93ZXN0IHNldCBiaXQg dGhpcyB3YXk6ICovCi0JdGFyZ2V0cGFydCA9IGJtc19uZXh0X21lbWJlcihwYXJ0cmVsaWRzLCAt MSk7Ci0JQXNzZXJ0KHRhcmdldHBhcnQgPiAwKTsKLQotCS8qIExvb2sgZm9yIGEgbWF0Y2hpbmcg dG9wbW9zdCBwYXJlbnQgKi8KLQlmb3JlYWNoKGxjLCBhbGxwYXJ0cmVsaWRzKQotCXsKLQkJQml0 bWFwc2V0ICAqY3VycnBhcnRyZWxpZHMgPSAoQml0bWFwc2V0ICopIGxmaXJzdChsYyk7Ci0JCUlu ZGV4CQljdXJydGFyZ2V0ID0gYm1zX25leHRfbWVtYmVyKGN1cnJwYXJ0cmVsaWRzLCAtMSk7Ci0K LQkJaWYgKHRhcmdldHBhcnQgPT0gY3VycnRhcmdldCkKLQkJewotCQkJLyogRm91bmQgYSBtYXRj aCwgc28gYWRkIGFueSBuZXcgUlQgaW5kZXhlcyB0byB0aGlzIGhpZXJhcmNoeSAqLwotCQkJY3Vy cnBhcnRyZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoY3VycnBhcnRyZWxpZHMsIHBhcnRyZWxpZHMp OwotCQkJbGZpcnN0KGxjKSA9IGN1cnJwYXJ0cmVsaWRzOwotCQkJcmV0dXJuIGFsbHBhcnRyZWxp ZHM7Ci0JCX0KLQl9Ci0JLyogTm8gbWF0Y2gsIHNvIGFkZCB0aGUgbmV3IHBhcnRpdGlvbiBoaWVy YXJjaHkgdG8gdGhlIGxpc3QgKi8KLQlyZXR1cm4gbGFwcGVuZChhbGxwYXJ0cmVsaWRzLCBwYXJ0 cmVsaWRzKTsKLX0KLQogLyoKICAqIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvCiAgKgkJ QnVpbGQgYSBMaXN0IG9mIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvcywgb25lIGZvciBlYWNoIGlu dGVyZXN0aW5nCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDY1OWJkMDVjMGMuLmEwYmIxNmNmZjQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0yNzAsNiArMjcwLDEzIEBAIHR5cGVkZWYgc3RydWN0 IEFwcGVuZAogCUxpc3QJICAgKmFwcGVuZHBsYW5zOwogCWludAkJCW5hc3luY3BsYW5zOwkvKiAj IG9mIGFzeW5jaHJvbm91cyBwbGFucyAqLwogCisJLyoKKwkgKiBSVElzIG9mIGFsbCBwYXJ0aXRp b25lZCB0YWJsZXMgd2hvc2UgY2hpbGRyZW4gYXJlIHNjYW5uZWQgYnkKKwkgKiBhcHBlbmRwbGFu cy4gVGhlIGxpc3QgY29udGFpbnMgYSBiaXRtYXBzZXQgZm9yIGV2ZXJ5IHBhcnRpdGlvbiB0cmVl CisJICogY292ZXJlZCBieSB0aGlzIEFwcGVuZC4KKwkgKi8KKwlMaXN0CSAgICphbGxwYXJ0cmVs aWRzOworCiAJLyoKIAkgKiBBbGwgJ2FwcGVuZHBsYW5zJyBwcmVjZWRpbmcgdGhpcyBpbmRleCBh cmUgbm9uLXBhcnRpYWwgcGxhbnMuIEFsbAogCSAqICdhcHBlbmRwbGFucycgZnJvbSB0aGlzIGlu ZGV4IG9ud2FyZHMgYXJlIHBhcnRpYWwgcGxhbnMuCkBAIC0yOTQsNiArMzAxLDEzIEBAIHR5cGVk ZWYgc3RydWN0IE1lcmdlQXBwZW5kCiAKIAlMaXN0CSAgICptZXJnZXBsYW5zOwogCisJLyoKKwkg KiBSVElzIG9mIGFsbCBwYXJ0aXRpb25lZCB0YWJsZXMgd2hvc2UgY2hpbGRyZW4gYXJlIHNjYW5u ZWQgYnkKKwkgKiBtZXJnZXBsYW5zLiBUaGUgbGlzdCBjb250YWlucyBhIGJpdG1hcHNldCBmb3Ig ZXZlcnkgcGFydGl0aW9uIHRyZWUKKwkgKiBjb3ZlcmVkIGJ5IHRoaXMgTWVyZ2VBcHBlbmQuCisJ ICovCisJTGlzdAkgICAqYWxscGFydHJlbGlkczsKKwogCS8qIHRoZXNlIGZpZWxkcyBhcmUganVz dCBsaWtlIHRoZSBzb3J0LWtleSBpbmZvIGluIHN0cnVjdCBTb3J0OiAqLwogCiAJLyogbnVtYmVy IG9mIHNvcnQta2V5IGNvbHVtbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXpl ci9hcHBlbmRpbmZvLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCmluZGV4 IGEwNWY5MWY3N2QuLjE2MjFhNzMxOWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXpl ci9hcHBlbmRpbmZvLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVuZGluZm8uaApA QCAtNDYsNSArNDYsOCBAQCBleHRlcm4gdm9pZCBhZGRfcm93X2lkZW50aXR5X2NvbHVtbnMoUGxh bm5lckluZm8gKnJvb3QsIEluZGV4IHJ0aW5kZXgsCiAJCQkJCQkJCQkgUmFuZ2VUYmxFbnRyeSAq dGFyZ2V0X3J0ZSwKIAkJCQkJCQkJCSBSZWxhdGlvbiB0YXJnZXRfcmVsYXRpb24pOwogZXh0ZXJu IHZvaWQgZGlzdHJpYnV0ZV9yb3dfaWRlbnRpdHlfdmFycyhQbGFubmVySW5mbyAqcm9vdCk7Citl eHRlcm4gTGlzdCAqYWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMoUGxhbm5lckluZm8gKnJv b3QsIFBhdGggKnN1YnBhdGgsCisJCQkJCQkJICBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCisJCQkJ CQkJICBMaXN0ICphbGxwYXJ0cmVsaWRzKTsKIAogI2VuZGlmCQkJCQkJCS8qIEFQUEVORElORk9f SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oIGIv c3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCmluZGV4IGMwZDY4ODlkNDcuLjJk OTA3ZDMxZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUu aAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKQEAgLTczLDcgKzcz LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVDb250ZXh0CiBleHRlcm4gaW50IG1h a2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJ CQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJCQkJTGlzdCAqc3VicGF0aHMs Ci0JCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworCQkJCQkJCQkJTGlzdCAqcHJ1bmVxdWFsLAor CQkJCQkJCQkJTGlzdCAqYWxscGFydHJlbGlkcyk7CiBleHRlcm4gQml0bWFwc2V0ICpwcnVuZV9h cHBlbmRfcmVsX3BhcnRpdGlvbnMoc3RydWN0IFJlbE9wdEluZm8gKnJlbCk7CiBleHRlcm4gQml0 bWFwc2V0ICpnZXRfbWF0Y2hpbmdfcGFydGl0aW9ucyhQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNv bnRleHQsCiAJCQkJCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzKTsKLS0gCjIuMzUuMwoK --000000000000e82ec605f77c953e Content-Type: application/octet-stream; name="v36-0002-Move-AcquireExecutorLocks-s-responsibility-into-.patch" Content-Disposition: attachment; filename="v36-0002-Move-AcquireExecutorLocks-s-responsibility-into-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfjoj3te1 RnJvbSA1ZGVmZmY2MjRmOTA3MmI2MmVjNDhhN2FhMGMxM2ZhZjIzM2JmMzM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyMCBKYW4gMjAyMyAxNjo1MjozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjM2IDIv M10gTW92ZSBBY3F1aXJlRXhlY3V0b3JMb2NrcygpJ3MgcmVzcG9uc2liaWxpdHkgaW50byB0aGUK IGV4ZWN1dG9yCgpUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIGEgbmV3IGV4ZWN1dG9yIGZsYWcgRVhF Q19GTEFHX0dFVF9MT0NLUyB0aGF0CnNob3VsZCBiZSBwYXNzZWQgaW4gZWZsYWdzIHRvIEV4ZWN1 dG9yU3RhcnQoKSBpZiB0aGUgUGxhbm5lZFN0bXQKY29tZXMgZnJvbSBhIENhY2hlZFBsYW4uICBX aGVuIHNldCwgdGhlIGV4ZWN1dG9yIHdpbGwgdGFrZSBsb2NrcwpvbiBhbnkgcmVsYXRpb25zIHJl ZmVyZW5jZWQgaW4gdGhlIHBsYW4gbm9kZXMgdGhhdCBuZWVkIHRvIGJlCmluaXRpYWxpemVkIGZv ciBleGVjdXRpb24uICBUaGF0IGV4Y2x1ZGVzIGFueSBwYXJ0aXRpb25zIHRoYXQgY2FuCmJlIHBy dW5lZCBkdXJpbmcgdGhlIGV4ZWN1dG9yIGluaXRpYWxpemF0aW9uIHBoYXNlLCB0aGF0IGlzLCBi YXNlZApvbiB0aGUgdmFsdWVzIG9mIG9ubHkgdGhlIGV4dGVybmFsIChQQVJBTV9FWFRFUk4pIHBh cmFtZXRlcnMuClJlbGF0aW9ucyB0aGF0IGFyZSBub3QgZXhwbGljaXRseSBtZW50aW9uZWQgaW4g dGhlIHBsYW4gdHJlZSwgc3VjaAphcyB2aWV3cyBhbmQgbm9uLWxlYWYgcGFydGl0aW9uIHBhcmVu dHMgd2hvc2UgY2hpbGRyZW4gYXJlIG1lbnRpb25lZAppbiBBcHBlbmQvTWVyZ2VBcHBlbmQgbm9k ZXMsIGFyZSBsb2NrZWQgc2VwYXJhdGVseS4gIEFmdGVyIHRha2luZyBlYWNoCmxvY2ssIHRoZSBl eGVjdXRvciBjYWxscyBDYWNoZWRQbGFuU3RpbGxWYWxpZCgpIHRvIGNoZWNrIGlmCkNhY2hlZFBs YW4uaXNfdmFsaWQgaGFzIGJlZW4gcmVzZXQgYnkgUGxhbkNhY2hlUmVsQ2FsbGJhY2soKSBkdWUg dG8KY29uY3VycmVudCBtb2RpZmljYXRpb24gb2YgcmVsYXRpb25zIHJlZmVyZW5jZWQgaW4gdGhl IHBsYW4uICBJZiBpdAppcyBmb3VuZCB0aGF0IHRoZSBDYWNoZWRQbGFuIGlzIGluZGVlZCBpbnZh bGlkLCB0aGUgcmVjdXJzaXZlCkV4ZWNJbml0Tm9kZSgpIHRyYXZlcnNhbCBpcyBhYm9ydGVkIGF0 IHRoYXQgcG9pbnQuICBUbyBhbGxvdyB0aGUKcHJvcGVyIGNsZWFudXAgb2Ygc3VjaCBhIHBhcnRp YWxseSBpbml0aWFsaXplZCBwbGFuc3RhdGUgdHJlZSwKRXhlY0VuZE5vZGUoKSBzdWJyb3V0aW5l cyBvZiB2YXJpb3VzIHBsYW4gbm9kZXMgaGF2ZSBiZWVuIGZpeGVkIHRvCmFjY291bnQgZm9yIHBv dGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzLiAgSXQgaXMgdGhlIGNhbGxlcidzCihvZiBF eGVjdXRvclN0YXJ0KCkpIHJlc3BvbnNpYmlsaXR5IHRvIGNhbGwgRXhlY3V0b3JFbmQoKSBldmVu IG9uCmEgUXVlcnlEZXNjIGNvbnRhaW5pbmcgc3VjaCBhIHBhcnRpYWxseSBpbml0aWFsaXplZCBQ bGFuU3RhdGUgdHJlZS4KCkNhbGwgc2l0ZXMgdGhhdCB1c2UgcGxhbmNhY2hlIChHZXRDYWNoZWRQ bGFuKSB0byBnZXQgdGhlIHBsYW4gdHJlZXMKdG8gcGFzcyB0byB0aGUgZXhlY3V0b3IgZm9yIGV4 ZWN1dGlvbiBzaG91bGQgbm93IGJlIHByZXBhcmVkIHRvCmhhbmRsZSB0aGUgY2FzZSB0aGF0IHRo ZSBwbGFuIHRyZWUgbWF5IGJlIGZsYWdnZWQgYnkgdGhlIGV4ZWN1dG9yIGFzCnN0YWxlIGFzIGRl c2NyaWJlZCBhYm92ZS4gIFRvIHRoYXQgZW5kLCB0aGlzIGNvbW1pdCByZWZhY3RvcnMgdGhlCnJl bGV2YW50IGNvZGUgc2l0ZXMgdG8gbW92ZSB0aGUgRXhlY3V0b3JTdGFydCgpIGNhbGwgIGNsb3Nl ciB0byB0aGUKR2V0Q2FjaGVkUGxhbigpIGNhbGwgdG8gcmVkdWNlIHRoZSBmcmljdGlvbiBpbiB0 aGUgY2FzZXMgd2hlcmUKcmVwbGFubmluZyBpcyBuZWVkZWQgZHVlIHRvIGEgQ2FjaGVkUGxhbiBi ZWluZyBtYXJrZWQgc3RhbGUgaW4gdGhpcwptYW5uZXIuICBDYWxsZXJzIG11c3QgY2hlY2sgdGhh dCBRdWVyeURlc2MucGxhbl92YWxpZCBpcyB0cnVlIGJlZm9yZQpwYXNzaW5nIGl0IG9uIHRvIEV4 ZWN1dG9yUnVuKCkgZm9yIGV4ZWN1dGlvbi4KClBvcnRhbFN0YXJ0KCkgbm93IHBlcmZvcm1zIENy ZWF0ZVF1ZXJ5RGVzYygpIGFuZCBFeGVjdXRvclN0YXJ0KCkgZm9yCmFsbCBwb3J0YWwgc3RyYXRl Z2llcywgaW5jbHVkaW5nIHRob3NlIHBlcnRhaW5pbmcgdG8gbXVsdGlwbGUgcXVlcmllcy4KVGhl IFF1ZXJ5RGVzY3MgZm9yIHN0cmF0ZWdpZXMgaGFuZGxlZCBieSBQb3J0YWxSdW5NdWx0aSgpIGFy ZQpyZW1lbWJlcmVkIGluIHRoZSBQb3J0YWwgaW4gYSBuZXcgTGlzdCBmaWVsZCAncWRlc2NzJywg YWxsb2NhdGVkIGluIGEKbmV3IG1lbW9yeSBjb250ZXh0ICdxdWVyeUNvbnRleHQnLiAgVGhpcyBu ZXcgYXJyYW5nbWVudCBpcyB0byBtYWtlIGl0CmVhc2llciB0byBkaXNjYXJkIGFuZCByZWNyZWF0 ZSBhIFBvcnRhbCBpZiB0aGUgQ2FjaGVkUGxhbiBnb2VzIHN0YWxlCmR1cmluZyBzZXR1cC4KLS0t CiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgICAgfCAgIDQgKwog c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICAgICAgICAgICAgIHwgICA0ICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8IDE0NiArKysrKy0t LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAgICAgICAgICAgIHwgICAyICsK IHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgICAgICAgICB8ICAgMyArLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jICAgICAgICAgICAgIHwgIDE2ICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAgMzIgKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8ICA4OSArKysrLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgICAgIHwgICA4ICstCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICAgICAgICAgfCAgMTUgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAgICAgIHwgICA5ICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICA2MCArKystCiBzcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jICAgICAgICAgICAgICAgIHwgIDIzICstCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgICAgICAgfCAgMjMgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYyAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgICAgIHwgIDEwICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQ3Rlc2Nhbi5jICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVDdXN0b20uYyAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgICAgICAgIHwgIDIyICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlRnVuY3Rpb25zY2FuLmMgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVHYXRoZXIuYyAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlR2F0aGVyTWVyZ2UuYyAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdyb3VwLmMgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSGFzaC5jICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUhhc2hqb2luLmMgICAgICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5jcmVtZW50YWxTb3J0LmMgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleG9ubHlzY2FuLmMgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4c2Nhbi5jICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGlt aXQuYyAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tS b3dzLmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlh bC5jICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUu YyAgICAgICAgICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBl bmQuYyAgICAgICAgfCAgMjMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4u YyAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMgICAgICAgIHwgIDEzICstCiAuLi4vZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4u YyAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jICAg ICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYyAg ICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24u YyAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jICAgICAgICAg ICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jICAgICAg ICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgICAgICAgICAgICAg IHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jICAgICAgICAgICAgICAg fCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYyAgICAgICB8 ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYyAgICAgIHwg ICAzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMgICAgICAgfCAg IDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMgICAgICAgICAgICB8ICAg NSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jICAgICAgICAgICAgIHwgICA1 ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jICAgICAgICAgfCAgIDMg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyAgICAgICAgICB8ICA1NSAr KystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV29ya3RhYmxlc2Nhbi5jICAgICAgfCAgIDMg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAgICAgICB8ICA1MyAr Ky0KIHNyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAgICAgICAgICB8ICAgNSArCiBzcmMv YmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgICAgICAgICAgfCAgIDcgKy0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgICAgICAgICAgICAgICB8ICA0NSArKysKIHNyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2Jh Y2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgMzExICsrKysrKysrKyst LS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwg IDIxICsrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAgICAgICAgICAgfCAx MzQgKystLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAgICAgICAg ICB8ICAgNiArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgICAgICAgICAg fCAgIDcgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAgICAgICAgICAgICB8 ICAgNSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICAgfCAg MTIgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAy ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMyAr CiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDMgKwog c3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgMTQgKwogc3JjL2lu Y2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy90ZXN0 L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlICAgICB8ICAgMyArLQogLi4uL21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIHwgIDYzICsrKy0KIC4uLi9leHBl Y3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0ICAgICAgICAgICB8IDExNyArKysrKysrCiAuLi4v c3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMgICAgICAgICAgICAgfCAgNTAgKysrCiA4MiBm aWxlcyBjaGFuZ2VkLCAxMjI0IGluc2VydGlvbnMoKyksIDQyMiBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9j YWNoZWQtcGxhbi1yZXBsYW4ub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMKCmRpZmYgLS1n aXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IGY1OTI2YWI4OWQuLjkzZjNmOGI1ZDEgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0yNjU5LDcgKzI2NTksMTEgQEAgcG9zdGdy ZXNCZWdpbkRpcmVjdE1vZGlmeShGb3JlaWduU2NhblN0YXRlICpub2RlLCBpbnQgZWZsYWdzKQog CS8qIEdldCBpbmZvIGFib3V0IGZvcmVpZ24gdGFibGUuICovCiAJcnRpbmRleCA9IG5vZGUtPnJl c3VsdFJlbEluZm8tPnJpX1JhbmdlVGFibGVJbmRleDsKIAlpZiAoZnNwbGFuLT5zY2FuLnNjYW5y ZWxpZCA9PSAwKQorCXsKIAkJZG1zdGF0ZS0+cmVsID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0 YXRlLCBydGluZGV4LCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQkJcmV0dXJuOworCX0KIAllbHNlCiAJCWRtc3RhdGUtPnJlbCA9IG5vZGUtPnNzLnNzX2N1 cnJlbnRSZWxhdGlvbjsKIAl0YWJsZSA9IEdldEZvcmVpZ25UYWJsZShSZWxhdGlvbkdldFJlbGlk KGRtc3RhdGUtPnJlbCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRv LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCBiZWVhMWFjNjg3Li5lOWY3 N2Q1NzExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtNTU4LDcgKzU1OCw4IEBAIEJlZ2luQ29w eVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJKChEUl9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBj c3RhdGU7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICov Ci0JCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9z b3VyY2V0ZXh0LAorCQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBO VUxMLAorCQkJCQkJCQkJCQlwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0 aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlk ZXN0LCBOVUxMLCBOVUxMLCAwKTsKQEAgLTU2OSw2ICs1NzAsNyBAQCBCZWdpbkNvcHlUbyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCSAqIEV4ZWN1dG9yU3RhcnQgY29tcHV0ZXMgYSByZXN1bHQgdHVw ZGVzYyBmb3IgdXMKIAkJICovCiAJCUV4ZWN1dG9yU3RhcnQoY3N0YXRlLT5xdWVyeURlc2MsIDAp OworCQlBc3NlcnQoY3N0YXRlLT5xdWVyeURlc2MtPnBsYW5fdmFsaWQpOwogCiAJCXR1cERlc2Mg PSBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYzsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwpp bmRleCBkNmM2ZDUxNGYzLi5hNTViODUxNTc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKQEAg LTMyNSw3ICszMjUsNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRlICpwc3RhdGUsIENy ZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgp OwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0 dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0 YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBO VUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCks IEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggZTU3YmRhN2I2Mi4uYWNhZTViNDU1YiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYwpAQCAtMzg0LDYgKzM4NCw3IEBAIEV4cGxhaW5PbmVRdWVyeShRdWVy eSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCWVsc2UKIAl7CiAJCVBsYW5uZWRTdG10ICpw bGFuOworCQlRdWVyeURlc2MgICAqcXVlcnlEZXNjOwogCQlpbnN0cl90aW1lCXBsYW5zdGFydCwK IAkJCQkJcGxhbmR1cmF0aW9uOwogCQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwKQEAgLTQw NiwxMiArNDA3LDkzIEBAIEV4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JP cHRpb25zLAogCQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZnVzYWdlLCAmcGdCdWZmZXJVc2Fn ZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKIAkJfQogCisJCXF1ZXJ5RGVzYyA9IEV4cGxhaW5RdWVyeURl c2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsIGludG8sIGVzLAorCQkJCQkJCQkJIHBhcmFtcywg cXVlcnlFbnYpOworCQlBc3NlcnQocXVlcnlEZXNjKTsKKwogCQkvKiBydW4gaXQgKGlmIG5lZWRl ZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JCUV4cGxhaW5PbmVQbGFuKHBsYW4sIGludG8sIGVz LCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwkJRXhwbGFpbk9uZVBsYW4ocXVlcnlE ZXNjLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCiAJCQkJCSAgICZw bGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsKIAl9CiB9CiAK Ky8qCisgKiBFeHBsYWluUXVlcnlEZXNjCisgKgkJU2V0IHVwIFF1ZXJ5RGVzYyBmb3IgRVhQTEFJ TmluZyBhIGdpdmVuIHBsYW4KKyAqCisgKiBUaGlzIHJldHVybnMgTlVMTCBpZiBjcGxhbiBpcyBm b3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQgc2luY2UgaXRzCisgKiBjcmVhdGlvbi4KKyAq LworUXVlcnlEZXNjICoKK0V4cGxhaW5RdWVyeURlc2MoUGxhbm5lZFN0bXQgKnN0bXQsIENhY2hl ZFBsYW4gKmNwbGFuLAorCQkJCSBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgSW50b0NsYXVzZSAq aW50bywgRXhwbGFpblN0YXRlICplcywKKwkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQoreworCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKKwlEZXN0 UmVjZWl2ZXIgKmRlc3Q7CisJaW50CQkJZWZsYWdzOworCWludAkJCWluc3RydW1lbnRfb3B0aW9u ID0gMDsKKworCS8qCisJICogTm9ybWFsbHkgd2UgZGlzY2FyZCB0aGUgcXVlcnkncyBvdXRwdXQs IGJ1dCBpZiBleHBsYWluaW5nIENSRUFURSBUQUJMRQorCSAqIEFTLCB3ZSdkIGJldHRlciB1c2Ug dGhlIGFwcHJvcHJpYXRlIHR1cGxlIHJlY2VpdmVyLgorCSAqLworCWlmIChpbnRvKQorCQlkZXN0 ID0gQ3JlYXRlSW50b1JlbERlc3RSZWNlaXZlcihpbnRvKTsKKwllbHNlCisJCWRlc3QgPSBOb25l X1JlY2VpdmVyOworCisJaWYgKGVzLT5hbmFseXplICYmIGVzLT50aW1pbmcpCisJCWluc3RydW1l bnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfVElNRVI7CisJZWxzZSBpZiAoZXMtPmFuYWx5emUpCisJ CWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfUk9XUzsKKworCWlmIChlcy0+YnVmZmVy cykKKwkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9CVUZGRVJTOworCWlmIChlcy0+ d2FsKQorCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1dBTDsKKworCS8qCisJICog VXNlIGEgc25hcHNob3Qgd2l0aCBhbiB1cGRhdGVkIGNvbW1hbmQgSUQgdG8gZW5zdXJlIHRoaXMg cXVlcnkgc2VlcworCSAqIHJlc3VsdHMgb2YgYW55IHByZXZpb3VzbHkgZXhlY3V0ZWQgcXVlcmll cy4KKwkgKi8KKwlQdXNoQ29waWVkU25hcHNob3QoR2V0QWN0aXZlU25hcHNob3QoKSk7CisJVXBk YXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKKworCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBm b3IgdGhlIHF1ZXJ5ICovCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsIGNwbGFu LCBxdWVyeVN0cmluZywKKwkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBz aG90LAorCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbik7 CisKKwkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8KKwlpZiAoZXMtPmFuYWx5emUpCisJ CWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KKwll bHNlCisJCWVmbGFncyA9IEVYRUNfRkxBR19FWFBMQUlOX09OTFk7CisJaWYgKGludG8pCisJCWVm bGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOworCisJLyogVGFrZSBsb2NrcyBpZiB1c2lu ZyBhIENhY2hlZFBsYW4gKi8KKwlpZiAocXVlcnlEZXNjLT5jcGxhbikKKwkJZWZsYWdzIHw9IEVY RUNfRkxBR19HRVRfTE9DS1M7CisKKwkvKgorCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVw YXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24uICBBIGNhY2hlZCBwbGFuCisJICogbWF5IGdldCBp bnZhbGlkYXRlZCBhcyB3ZSdyZSBkb2luZyB0aGF0LgorCSAqLworCUV4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBlZmxhZ3MpOworCWlmICghcXVlcnlEZXNjLT5wbGFuX3ZhbGlkKQorCXsKKwkJLyog Q2xlYW4gdXAuICovCisJCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisJCUZyZWVRdWVyeURlc2Mo cXVlcnlEZXNjKTsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJcmV0dXJuIE5VTEw7CisJfQor CisJcmV0dXJuIHF1ZXJ5RGVzYzsKK30KKwogLyoKICAqIEV4cGxhaW5PbmVVdGlsaXR5IC0KICAq CSAgcHJpbnQgb3V0IHRoZSBleGVjdXRpb24gcGxhbiBmb3Igb25lIHV0aWxpdHkgc3RhdGVtZW50 CkBAIC01MTUsMjkgKzU5NywxNiBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3Rt dCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwgaXQuCiAg Ki8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0Ns YXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLAorCQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJ CSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAg IFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRp b24sCiAJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UpCiB7Ci0JRGVzdFJlY2VpdmVy ICpkZXN0OwotCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKIAlpbnN0cl90aW1lCXN0YXJ0dGltZTsK IAlkb3VibGUJCXRvdGFsdGltZSA9IDA7Ci0JaW50CQkJZWZsYWdzOwotCWludAkJCWluc3RydW1l bnRfb3B0aW9uID0gMDsKIAotCUFzc2VydChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01E X1VUSUxJVFkpOwotCi0JaWYgKGVzLT5hbmFseXplICYmIGVzLT50aW1pbmcpCi0JCWluc3RydW1l bnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfVElNRVI7Ci0JZWxzZSBpZiAoZXMtPmFuYWx5emUpCi0J CWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfUk9XUzsKLQotCWlmIChlcy0+YnVmZmVy cykKLQkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9CVUZGRVJTOwotCWlmIChlcy0+ d2FsKQotCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1dBTDsKKwlBc3NlcnQocXVl cnlEZXNjLT5wbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpOwogCiAJLyoK IAkgKiBXZSBhbHdheXMgY29sbGVjdCB0aW1pbmcgZm9yIHRoZSBlbnRpcmUgc3RhdGVtZW50LCBl dmVuIHdoZW4gbm9kZS1sZXZlbApAQCAtNTQ2LDM4ICs2MTUsNiBAQCBFeHBsYWluT25lUGxhbihQ bGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAq ZXMsCiAJICovCiAJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydHRpbWUpOwogCi0JLyoKLQkg KiBVc2UgYSBzbmFwc2hvdCB3aXRoIGFuIHVwZGF0ZWQgY29tbWFuZCBJRCB0byBlbnN1cmUgdGhp cyBxdWVyeSBzZWVzCi0JICogcmVzdWx0cyBvZiBhbnkgcHJldmlvdXNseSBleGVjdXRlZCBxdWVy aWVzLgotCSAqLwotCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFwc2hvdCgpKTsKLQlV cGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwotCi0JLyoKLQkgKiBOb3JtYWxseSB3ZSBk aXNjYXJkIHRoZSBxdWVyeSdzIG91dHB1dCwgYnV0IGlmIGV4cGxhaW5pbmcgQ1JFQVRFIFRBQkxF Ci0JICogQVMsIHdlJ2QgYmV0dGVyIHVzZSB0aGUgYXBwcm9wcmlhdGUgdHVwbGUgcmVjZWl2ZXIu Ci0JICovCi0JaWYgKGludG8pCi0JCWRlc3QgPSBDcmVhdGVJbnRvUmVsRGVzdFJlY2VpdmVyKGlu dG8pOwotCWVsc2UKLQkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7Ci0KLQkvKiBDcmVhdGUgYSBRdWVy eURlc2MgZm9yIHRoZSBxdWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu bmVkc3RtdCwgcXVlcnlTdHJpbmcsCi0JCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFs aWRTbmFwc2hvdCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9v cHRpb24pOwotCi0JLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCi0JaWYgKGVzLT5hbmFs eXplKQotCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdz ICovCi0JZWxzZQotCQllZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOwotCWlmIChpbnRv KQotCQllZmxhZ3MgfD0gR2V0SW50b1JlbEVGbGFncyhpbnRvKTsKLQotCS8qIGNhbGwgRXhlY3V0 b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24gKi8KLQlFeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKLQogCS8qIEV4ZWN1dGUgdGhlIHBsYW4gZm9yIHN0YXRp c3RpY3MgaWYgYXNrZWQgZm9yICovCiAJaWYgKGVzLT5hbmFseXplKQogCXsKQEAgLTQ4NTEsNiAr NDg4OCwxNyBAQCBFeHBsYWluRHVtbXlHcm91cChjb25zdCBjaGFyICpvYmp0eXBlLCBjb25zdCBj aGFyICpsYWJlbG5hbWUsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJfQogfQogCisvKgorICogRGlzY2Fy ZCBvdXRwdXQgYnVmZmVyIGZvciBhIGZyZXNoIHJlc3RhcnQuCisgKi8KK3ZvaWQKK0V4cGxhaW5S ZXNldE91dHB1dChFeHBsYWluU3RhdGUgKmVzKQoreworCUFzc2VydChlcy0+c3RyKTsKKwlyZXNl dFN0cmluZ0luZm8oZXMtPnN0cik7CisJRXhwbGFpbkJlZ2luT3V0cHV0KGVzKTsKK30KKwogLyoK ICAqIEVtaXQgdGhlIHN0YXJ0LW9mLW91dHB1dCBib2lsZXJwbGF0ZS4KICAqCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4dGVuc2lvbi5jCmluZGV4IDBlYWJlMTgzMzUuLjVhNzYzNDMxMjMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4dGVuc2lvbi5jCkBAIC03OTcsMTEgKzc5NywxMyBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29u c3QgY2hhciAqc3FsKQogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCiAJCQkJcWRlc2MgPSBDcmVh dGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCXNxbCwKIAkJCQkJ CQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5V TEwsIDApOwogCiAJCQkJRXhlY3V0b3JTdGFydChxZGVzYywgMCk7CisJCQkJQXNzZXJ0KHFkZXNj LT5wbGFuX3ZhbGlkKTsKIAkJCQlFeGVjdXRvclJ1bihxZGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rp b24sIDAsIHRydWUpOwogCQkJCUV4ZWN1dG9yRmluaXNoKHFkZXNjKTsKIAkJCQlFeGVjdXRvckVu ZChxZGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggZmIzMGQyNTk1Yy4uOWFkYWY2YzUy NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDA5LDEyICs0MDksMTMgQEAgcmVmcmVzaF9t YXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5LAogCVVwZGF0 ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2MsIHJl ZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQlxdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVl cnlEZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hv dCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwogCiAJ LyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAq LwogCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKKwlBc3NlcnQocXVlcnlEZXNjLT5wbGFu X3ZhbGlkKTsKIAogCS8qIHJ1biB0aGUgcGxhbiAqLwogCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywg Rm9yd2FyZFNjYW5EaXJlY3Rpb24sIDBMLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMu YwppbmRleCA4YTNjZjk4Y2NlLi4zYzM0YWI0MzUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9wb3J0YWxjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21k cy5jCkBAIC0xNDYsNiArMTQ2LDcgQEAgUGVyZm9ybUN1cnNvck9wZW4oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBEZWNsYXJlQ3Vyc29yU3RtdCAqY3N0bXQsIFBhcmFtTGlzdEluZm8gcGEKIAlQb3J0YWxT dGFydChwb3J0YWwsIHBhcmFtcywgMCwgR2V0QWN0aXZlU25hcHNob3QoKSk7CiAKIAlBc3NlcnQo cG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1NFTEVDVCk7CisJQXNzZXJ0KHBvcnRhbC0+ cGxhbl92YWxpZCk7CiAKIAkvKgogCSAqIFdlJ3JlIGRvbmU7IHRoZSBxdWVyeSB3b24ndCBhY3R1 YWxseSBiZSBydW4gdW50aWwgUGVyZm9ybVBvcnRhbEZldGNoIGlzCkBAIC0yNDksNiArMjUwLDE3 IEBAIFBlcmZvcm1Qb3J0YWxDbG9zZShjb25zdCBjaGFyICpuYW1lKQogCVBvcnRhbERyb3AocG9y dGFsLCBmYWxzZSk7CiB9CiAKKy8qCisgKiBSZWxlYXNlIGEgcG9ydGFsJ3MgUXVlcnlEZXNjLgor ICovCit2b2lkCitQb3J0YWxRdWVyeUZpbmlzaChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKK3sKKwlF eGVjdXRvckZpbmlzaChxdWVyeURlc2MpOworCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisJRnJl ZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOworfQorCiAvKgogICogUG9ydGFsQ2xlYW51cAogICoKQEAg LTI5NSw5ICszMDcsNyBAQCBQb3J0YWxDbGVhbnVwKFBvcnRhbCBwb3J0YWwpCiAJCQlpZiAocG9y dGFsLT5yZXNvd25lcikKIAkJCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IHBvcnRhbC0+cmVzb3du ZXI7CiAKLQkJCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7Ci0JCQlFeGVjdXRvckVuZChxdWVy eURlc2MpOwotCQkJRnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOworCQkJUG9ydGFsUXVlcnlGaW5p c2gocXVlcnlEZXNjKTsKIAogCQkJQ3VycmVudFJlc291cmNlT3duZXIgPSBzYXZlUmVzb3VyY2VP d25lcjsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDE4ZjcwMzE5ZmMuLmM5MDcwZWQ5 N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTE4Myw2ICsxODMsNyBAQCBFeGVjdXRlUXVl cnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQlwYXJhbUxJID0gRXZhbHVhdGVQYXJhbXMocHN0YXRl LCBlbnRyeSwgc3RtdC0+cGFyYW1zLCBlc3RhdGUpOwogCX0KIAorcmVwbGFuOgogCS8qIENyZWF0 ZSBhIG5ldyBwb3J0YWwgdG8gcnVuIHRoZSBxdWVyeSBpbiAqLwogCXBvcnRhbCA9IENyZWF0ZU5l d1BvcnRhbCgpOwogCS8qIERvbid0IGRpc3BsYXkgdGhlIHBvcnRhbCBpbiBwZ19jdXJzb3JzLCBp dCBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgKi8KQEAgLTI1MSwxMCArMjUyLDE5IEBAIEV4ZWN1 dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJfQogCiAJLyoKLQkgKiBSdW4gdGhlIHBvcnRh bCBhcyBhcHByb3ByaWF0ZS4KKwkgKiBSdW4gdGhlIHBvcnRhbCBhcyBhcHByb3ByaWF0ZS4gIElm IHRoZSBwb3J0YWwgY29udGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQKKwkgKiBtdXN0IGJlIHJlY3Jl YXRlZCBpZiBwb3J0YWwtPnBsYW5fdmFsaWQgaXMgZmFsc2Ugd2hpY2ggdGVsbHMgdGhhdCB0aGUK KwkgKiBjYWNoZWQgcGxhbiB3YXMgZm91bmQgdG8gaGF2ZSBiZWVuIGludmFsaWRhdGVkIHdoZW4g aW5pdGlhbGl6aW5nIG9uZSBvZgorCSAqIHRoZSBwbGFuIHRyZWVzIGNvbnRhaW5lZCBpbiBpdC4K IAkgKi8KIAlQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtTEksIGVmbGFncywgR2V0QWN0aXZlU25h cHNob3QoKSk7CiAKKwlpZiAoIXBvcnRhbC0+cGxhbl92YWxpZCkKKwl7CisJCVBvcnRhbERyb3Ao cG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0KKwogCSh2b2lkKSBQb3J0YWxSdW4o cG9ydGFsLCBjb3VudCwgZmFsc2UsIHRydWUsIGRlc3QsIGRlc3QsIHFjKTsKIAogCVBvcnRhbERy b3AocG9ydGFsLCBmYWxzZSk7CkBAIC01NzQsNyArNTg0LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVy eShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAq ZXMsCiB7CiAJUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5OwogCWNvbnN0IGNoYXIgKnF1ZXJ5X3N0 cmluZzsKLQlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNoZWRQbGFuICpjcGxhbiA9IE5VTEw7CiAJ TGlzdAkgICAqcGxhbl9saXN0OwogCUxpc3RDZWxsICAgKnA7CiAJUGFyYW1MaXN0SW5mbyBwYXJh bUxJID0gTlVMTDsKQEAgLTYxOCw2ICs2MjgsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1 dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAl9 CiAKIAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgYWNxdWlyZSBhIHRyYW5zaWVudCByZWZjb3Vu dCAqLworcmVwbGFuOgogCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwg cGFyYW1MSSwKIAkJCQkJCSAgQ3VycmVudFJlc291cmNlT3duZXIsIHF1ZXJ5RW52KTsKIApAQCAt NjM5LDggKzY1MCwyMSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3Rt dCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJUGxhbm5lZFN0bXQgKnBz dG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIHApOwogCiAJCWlmIChwc3RtdC0+Y29tbWFu ZFR5cGUgIT0gQ01EX1VUSUxJVFkpCi0JCQlFeHBsYWluT25lUGxhbihwc3RtdCwgaW50bywgZXMs IHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwgcXVlcnlFbnYsCi0JCQkJCQkgICAmcGxhbmR1cmF0aW9u LCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CisJCXsKKwkJCVF1ZXJ5RGVzYyAq cXVlcnlEZXNjOworCisJCQlxdWVyeURlc2MgPSBFeHBsYWluUXVlcnlEZXNjKHBzdG10LCBjcGxh biwgcXVlcnlTdHJpbmcsCisJCQkJCQkJCQkJIGludG8sIGVzLCBwYXJhbUxJLCBxdWVyeUVudik7 CisJCQlpZiAocXVlcnlEZXNjID09IE5VTEwpCisJCQl7CisJCQkJRXhwbGFpblJlc2V0T3V0cHV0 KGVzKTsKKwkJCQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxhbiwgQ3VycmVudFJlc291cmNlT3duZXIp OworCQkJCWdvdG8gcmVwbGFuOworCQkJfQorCQkJRXhwbGFpbk9uZVBsYW4ocXVlcnlEZXNjLCBp bnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLAorCQkJCQkJICAgcXVlcnlFbnYsICZwbGFu ZHVyYXRpb24sCisJCQkJCQkgICAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CisJ CX0KIAkJZWxzZQogCQkJRXhwbGFpbk9uZVV0aWxpdHkocHN0bXQtPnV0aWxpdHlTdG10LCBpbnRv LCBlcywgcXVlcnlfc3RyaW5nLAogCQkJCQkJCSAgcGFyYW1MSSwgcXVlcnlFbnYpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKaW5kZXggYjMyZjQxOTE3Ni4uZmQ2NzAyYTY4NiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jCkBAIC0xMjYsMTEgKzEyNiwzMiBAQCBzdGF0aWMgdm9pZCBFdmFsUGxhblF1 YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKICAqIGdldCBjb250 cm9sIHdoZW4gRXhlY3V0b3JTdGFydCBpcyBjYWxsZWQuICBTdWNoIGEgcGx1Z2luIHdvdWxkCiAg KiBub3JtYWxseSBjYWxsIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoKS4KICAqCisgKiBOb3JtYWxs eSwgdGhlIHBsYW4gdHJlZSBnaXZlbiBpbiBxdWVyeURlc2MtPnBsYW5uZWRzdG10IGlzIGtub3du IHRvIGJlCisgKiB2YWxpZCBpbiB0aGF0ICphbGwqIHJlbGF0aW9ucyBjb250YWluZWQgaW4gcGxh bm5lZHN0bXQtPnJlbGF0aW9uT2lkcyBoYXZlCisgKiBhbHJlYWR5IGJlZW4gbG9ja2VkLiAgVGhh dCBtYXkgbm90IGJlIHRoZSBjYXNlIGhvd2V2ZXIgaWYgdGhlIHBsYW5uZWRzdG10CisgKiBjb21l cyBmcm9tIGEgQ2FjaGVkUGxhbiwgb25lIGdpdmVuIGluIHF1ZXJ5RGVzYy0+Y3BsYW4sIGluIHdo aWNoIGNhc2Ugb25seQorICogc29tZSBvZiB0aGUgcmVsYXRpb25zIHJlZmVyZW5jZWQgaW4gdGhl IHBsYW4gd291bGQgaGF2ZSBiZWVuIGxvY2tlZDsgdG8KKyAqIHdpdCwgdGhvc2UgdGhhdCBBY3F1 aXJlUGxhbm5lckxvY2tzKCkgZGVlbXMgbmVjZXNzYXJ5LiAgTG9ja3MgbmVjZXNzYXJ5CisgKiB0 byBmdWxseSB2YWxpZGF0ZSBzdWNoIGEgcGxhbiB0cmVlLCBpbmNsdWRpbmcgcmVsYXRpb25zIHRo YXQgYXJlIGFkZGVkIGJ5CisgKiB0aGUgcGxhbm5lciwgd2lsbCBiZSB0YWtlbiB3aGVuIGluaXRp YWxpemluZyB0aGUgcGxhbiB0cmVlIGluIEluaXRQbGFuKCk7CisgKiB0aGUgdGhlIGNhbGxlciBt dXN0IGhhdmUgc2V0IHRoZSBFWEVDX0ZMQUdfR0VUX0xPQ0tTIGJpdCBpbiBlZmxhZ3MuICBJZiB0 aGUKKyAqIENhY2hlZFBsYW4gZ2V0cyBpbnZhbGlkYXRlZCBhcyB0aGVzZSBsb2NrcyBhcmUgdGFr ZW4sIHBsYW4gdHJlZQorICogaW5pdGlhbGl6YXRpb24gaXMgc3VzcGVuZGVkIGF0IHRoZSBwb2lu dCB3aGVuIHN1Y2ggaW52YWxpZGF0aW9uIGlzIGZpcnN0CisgKiBkZXRlY3RlZCBhbmQgSW5pdFBs YW4oKSByZXR1cm5zIGFmdGVyIHNldHRpbmcgcXVlcnlEZXNjLT5wbGFuX3ZhbGlkIHRvCisgKiBm YWxzZS4gIHF1ZXJ5RGVzYy0+cGxhbnN0YXRlIHdvdWxkIGJlIHBvaW50aW5nIHRvIGEgcG90ZW50 aWFsbHkgcGFydGlhbGx5CisgKiBpbml0aWFsaXplZCBQbGFuU3RhdGUgdHJlZSBpbiB0aGF0IGNh c2UuICBDYWxsZXJzIG11c3QgcmV0cnkgdGhlIGV4ZWN1dGlvbgorICogd2l0aCBhIGZyZXNobHkg Y3JlYXRlZCBDYWNoZWRQbGFuIGluIHRoYXQgY2FzZSwgYWZ0ZXIgcHJvcGVybHkgZnJlZWluZyB0 aGUKKyAqIHBhcnRpYWxseSB2YWxpZCBRdWVyeURlc2MuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHZvaWQK IEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CisJLyog VGFrZSBsb2NrcyBpZiB0aGUgcGxhbiB0cmVlIGNvbWVzIGZyb20gYSBDYWNoZWRQbGFuLiAqLwor CUFzc2VydChxdWVyeURlc2MtPmNwbGFuID09IE5VTEwgfHwKKwkJICAgKENhY2hlZFBsYW5TdGls bFZhbGlkKHF1ZXJ5RGVzYy0+Y3BsYW4pICYmCisJCQkoZWZsYWdzICYgRVhFQ19GTEFHX0dFVF9M T0NLUykgIT0gMCkpOworCiAJLyoKIAkgKiBJbiBzb21lIGNhc2VzIChlLmcuIGFuIEVYRUNVVEUg c3RhdGVtZW50KSBhIHF1ZXJ5IGV4ZWN1dGlvbiB3aWxsIHNraXAKIAkgKiBwYXJzZSBhbmFseXNp cywgd2hpY2ggbWVhbnMgdGhhdCB0aGUgcXVlcnlfaWQgd29uJ3QgYmUgcmVwb3J0ZWQuICBOb3Rl CkBAIC01ODIsNiArNjAzLDE2IEBAIEV4ZWNDaGVja1Blcm1pc3Npb25zKExpc3QgKnJhbmdlVGFi bGUsIExpc3QgKnJ0ZXBlcm1pbmZvcywKIAkJUlRFUGVybWlzc2lvbkluZm8gKnBlcm1pbmZvID0g bGZpcnN0X25vZGUoUlRFUGVybWlzc2lvbkluZm8sIGwpOwogCiAJCUFzc2VydChPaWRJc1ZhbGlk KHBlcm1pbmZvLT5yZWxpZCkpOworCisJCS8qCisJCSAqIFJlbGF0aW9ucyB3aG9zZSBwZXJtaXNz aW9ucyBuZWVkIHRvIGJlIGNoZWNrZWQgbXVzdCBhbHJlYWR5IGhhdmUKKwkJICogYmVlbiBsb2Nr ZWQgYnkgdGhlIHBhcnNlciBvciBieSBBY3F1aXJlUGxhbm5lckxvY2tzKCkgaWYgYQorCQkgKiBj YWNoZWQgcGxhbiBpcyBiZWluZyBleGVjdXRlZC4KKwkJICogWFhYIHNob3VsZG4ndCB3ZSBza2lw IGNhbGxpbmcgRXhlY0NoZWNrUGVybWlzc2lvbnMgZnJvbSBJbml0UGxhbgorCQkgKiBpbiBhIHBh cmFsbGVsIHdvcmtlcj8KKwkJICovCisJCUFzc2VydChDaGVja1JlbExvY2tlZEJ5TWUocGVybWlu Zm8tPnJlbGlkLCBBY2Nlc3NTaGFyZUxvY2ssIHRydWUpIHx8CisJCQkgICBJc1BhcmFsbGVsV29y a2VyKCkpOwogCQlyZXN1bHQgPSBFeGVjQ2hlY2tPbmVSZWxQZXJtcyhwZXJtaW5mbyk7CiAJCWlm ICghcmVzdWx0KQogCQl7CkBAIC03ODUsMTIgKzgxNiwxOSBAQCBFeGVjQ2hlY2tYYWN0UmVhZE9u bHkoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10KQogCQlQcmV2ZW50Q29tbWFuZElmUGFyYWxsZWxN b2RlKENyZWF0ZUNvbW1hbmROYW1lKChOb2RlICopIHBsYW5uZWRzdG10KSk7CiB9CiAKLQogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICoJCUluaXRQbGFuCiAgKgogICoJCUluaXRpYWxpemVzIHRoZSBxdWVyeSBwbGFu OiBvcGVuIGZpbGVzLCBhbGxvY2F0ZSBzdG9yYWdlCiAgKgkJYW5kIHN0YXJ0IHVwIHRoZSBydWxl IG1hbmFnZXIKKyAqCisgKgkJSWYgcXVlcnlEZXNjIGNvbnRhaW5zIGEgQ2FjaGVkUGxhbiwgdGhp cyB0YWtlcyBsb2NrcyBvbiByZWxhdGlvbnMuCisgKgkJSWYgYW55IG9mIHRob3NlIHJlbGF0aW9u cyBoYXZlIHVuZGVyZ29uZSBjb25jdXJyZW50IHNjaGVtYSBjaGFuZ2VzCisgKgkJYmV0d2VlbiBz dWNjZXNzZnVsbHkgcGVyZm9ybWluZyBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoKSBvbiB0aGUKKyAq CQljb250YWluaW5nIENhY2hlZFBsYW5Tb3VyY2UgYW5kIGhlcmUsIGxvY2tpbmcgdGhvc2UgcmVs YXRpb25zIHdvdWxkCisgKgkJaW52YWxpZGF0ZSB0aGUgQ2FjaGVkUGxhbiBieSB3YXkgb2YgUGxh bkNhY2hlUmVsQ2FsbGJhY2soKS4gIEluIHRoYXQKKyAqCQljYXNlLCBxdWVyeURlc2MtPnBsYW5f dmFsaWQgd291bGQgYmUgc2V0IHRvIGZhbHNlIHRvIHRlbGwgdGhlIGNhbGxlcgorICoJCXRvIHJl dHJ5IGFmdGVyIGNyZWF0aW5nIGEgbmV3IENhY2hlZFBsYW4uCiAgKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHN0 YXRpYyB2b2lkCkBAIC04MDEsMjAgKzgzOSwzMiBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncykKIAlQbGFuCSAgICpwbGFuID0gcGxhbm5lZHN0bXQtPnBsYW5UcmVl OwogCUxpc3QJICAgKnJhbmdlVGFibGUgPSBwbGFubmVkc3RtdC0+cnRhYmxlOwogCUVTdGF0ZQkg ICAqZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7Ci0JUGxhblN0YXRlICAqcGxhbnN0YXRlOwor CVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZSA9IE5VTEw7CiAJVHVwbGVEZXNjCXR1cFR5cGU7CiAJTGlz dENlbGwgICAqbDsKIAlpbnQJCQlpOwogCiAJLyoKLQkgKiBEbyBwZXJtaXNzaW9ucyBjaGVja3MK KwkgKiBTZXQgdXAgcmFuZ2UgdGFibGUgaW4gRVN0YXRlLgogCSAqLwotCUV4ZWNDaGVja1Blcm1p c3Npb25zKHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MsIHRydWUpOworCUV4ZWNJ bml0UmFuZ2VUYWJsZShlc3RhdGUsIHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3Mp OworCisJLyogTWFrZSBzdXJlIEV4ZWNQbGFuU3RpbGxWYWxpZCgpIGNhbiB3b3JrLiAqLworCWVz dGF0ZS0+ZXNfY2FjaGVkcGxhbiA9IHF1ZXJ5RGVzYy0+Y3BsYW47CiAKIAkvKgotCSAqIGluaXRp YWxpemUgdGhlIG5vZGUncyBleGVjdXRpb24gc3RhdGUKKwkgKiBMb2NrIGFueSB2aWV3cyB0aGF0 IHdlcmUgbWVudGlvbmVkIGluIHRoZSBxdWVyeSBpZiBuZWVkZWQuICBWaWV3CisJICogcmVsYXRp b25zIG11c3QgYmUgbG9ja2VkIHNlcGFyYXRlbHkgbGlrZSB0aGlzLCBiZWNhdXNlIHRoZXkgYXJl IG5vdAorCSAqIHJlZmVyZW5jZWQgaW4gdGhlIHBsYW4gdHJlZS4KIAkgKi8KLQlFeGVjSW5pdFJh bmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVybUluZm9zKTsKKwlF eGVjTG9ja1ZpZXdSZWxhdGlvbnMocGxhbm5lZHN0bXQtPnZpZXdSZWxhdGlvbnMsIGVzdGF0ZSk7 CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJZ290byBmYWlsZWQ7CisKKwkv KgorCSAqIERvIHBlcm1pc3Npb25zIGNoZWNrcworCSAqLworCUV4ZWNDaGVja1Blcm1pc3Npb25z KHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MsIHRydWUpOwogCiAJZXN0YXRlLT5l c19wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZv cyA9IHBsYW5uZWRzdG10LT5wYXJ0UHJ1bmVJbmZvczsKQEAgLTg0OSw2ICs4OTksOCBAQCBJbml0 UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCQljYXNlIFJPV19NQVJL X0tFWVNIQVJFOgogCQkJCWNhc2UgUk9XX01BUktfUkVGRVJFTkNFOgogCQkJCQlyZWxhdGlvbiA9 IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCByYy0+cnRpKTsKKwkJCQkJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCQkJCWdvdG8gZmFpbGVkOwogCQkJCQlicmVh azsKIAkJCQljYXNlIFJPV19NQVJLX0NPUFk6CiAJCQkJCS8qIG5vIHBoeXNpY2FsIHRhYmxlIGFj Y2VzcyBpcyByZXF1aXJlZCAqLwpAQCAtOTE5LDYgKzk3MSw4IEBAIEluaXRQbGFuKFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCiAJCWVzdGF0ZS0+ZXNfc3VicGxhbnN0YXRlcyA9 IGxhcHBlbmQoZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzLAogCQkJCQkJCQkJCSAgIHN1YnBsYW5z dGF0ZSk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlnb3RvIGZhaWxl ZDsKIAogCQlpKys7CiAJfQpAQCAtOTI5LDYgKzk4Myw4IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqIHByb2Nlc3NpbmcgdHVwbGVzLgogCSAqLwogCXBs YW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShwbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJZ290byBmYWlsZWQ7CiAKIAkvKgogCSAqIEdldCB0 aGUgdHVwbGUgZGVzY3JpcHRvciBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIHR1cGxlcyB0byByZXR1 cm4uCkBAIC05NzIsNiArMTAyOCwxNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywg aW50IGVmbGFncykKIAogCXF1ZXJ5RGVzYy0+dHVwRGVzYyA9IHR1cFR5cGU7CiAJcXVlcnlEZXNj LT5wbGFuc3RhdGUgPSBwbGFuc3RhdGU7CisJcXVlcnlEZXNjLT5wbGFuX3ZhbGlkID0gdHJ1ZTsK KwlyZXR1cm47CisKK2ZhaWxlZDoKKwkvKgorCSAqIFBsYW4gaW5pdGlhbGl6YXRpb24gZmFpbGVk LiAgTWFyayBRdWVyeURlc2MgYXMgc3VjaC4gIE5vdGUgdGhhdCB3ZSBkbworCSAqIHNldCBwbGFu c3RhdGUsIGV2ZW4gaWYgaXQgbWF5IG9ubHkgYmUgcGFydGlhbGx5IGluaXRpYWxpemVkLCBzbyB0 aGF0CisJICogRXhlY0VuZFBsYW4oKSBjYW4gcHJvY2VzcyBpdC4KKwkgKi8KKwlxdWVyeURlc2Mt PnBsYW5zdGF0ZSA9IHBsYW5zdGF0ZTsKKwlxdWVyeURlc2MtPnBsYW5fdmFsaWQgPSBmYWxzZTsK IH0KIAogLyoKQEAgLTEzODksNyArMTQ1Niw3IEBAIEV4ZWNHZXRBbmNlc3RvclJlc3VsdFJlbHMo RVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pCiAKIAkJCS8qCiAJ CQkgKiBBbGwgYW5jZXN0b3JzIHVwIHRvIHRoZSByb290IHRhcmdldCByZWxhdGlvbiBtdXN0IGhh dmUgYmVlbgotCQkJICogbG9ja2VkIGJ5IHRoZSBwbGFubmVyIG9yIEFjcXVpcmVFeGVjdXRvckxv Y2tzKCkuCisJCQkgKiBsb2NrZWQuCiAJCQkgKi8KIAkJCWFuY1JlbCA9IHRhYmxlX29wZW4oYW5j T2lkLCBOb0xvY2spOwogCQkJckluZm8gPSBtYWtlTm9kZShSZXN1bHRSZWxJbmZvKTsKQEAgLTI3 OTcsNyArMjg2NCw4IEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxh biAqcGxhblRyZWUpCiAJICogQ2hpbGQgRVBRIEVTdGF0ZXMgc2hhcmUgdGhlIHBhcmVudCdzIGNv cHkgb2YgdW5jaGFuZ2luZyBzdGF0ZSBzdWNoIGFzCiAJICogdGhlIHNuYXBzaG90LCByYW5nZXRh YmxlLCBhbmQgZXh0ZXJuYWwgUGFyYW0gaW5mby4gIFRoZXkgbmVlZCB0aGVpciBvd24KIAkgKiBj b3BpZXMgb2YgbG9jYWwgc3RhdGUsIGluY2x1ZGluZyBhIHR1cGxlIHRhYmxlLCBlc19wYXJhbV9l eGVjX3ZhbHMsCi0JICogcmVzdWx0LXJlbCBpbmZvLCBldGMuCisJICogcmVzdWx0LXJlbCBpbmZv LCBldGMuICBBbHNvLCB3ZSBkb24ndCBwYXNzIHRoZSBwYXJlbnQndCBjb3B5IG9mIHRoZQorCSAq IENhY2hlZFBsYW4sIGJlY2F1c2Ugbm8gbmV3IGxvY2tzIHdpbGwgYmUgdGFrZW4gZm9yIEV2YWxQ bGFuUXVhbCgpLgogCSAqLwogCXJjZXN0YXRlLT5lc19kaXJlY3Rpb24gPSBGb3J3YXJkU2NhbkRp cmVjdGlvbjsKIAlyY2VzdGF0ZS0+ZXNfc25hcHNob3QgPSBwYXJlbnRlc3RhdGUtPmVzX3NuYXBz aG90OwpAQCAtMjg4NCw2ICsyOTUyLDcgQEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVw cXN0YXRlLCBQbGFuICpwbGFuVHJlZSkKIAkJUGxhblN0YXRlICAqc3VicGxhbnN0YXRlOwogCiAJ CXN1YnBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCByY2VzdGF0ZSwgMCk7CisJCUFz c2VydChFeGVjUGxhblN0aWxsVmFsaWQocmNlc3RhdGUpKTsKIAkJcmNlc3RhdGUtPmVzX3N1YnBs YW5zdGF0ZXMgPSBsYXBwZW5kKHJjZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzLAogCQkJCQkJCQkJ CQkgc3VicGxhbnN0YXRlKTsKIAl9CkBAIC0yOTM3LDYgKzMwMDYsMTAgQEAgRXZhbFBsYW5RdWFs RW5kKEVQUVN0YXRlICplcHFzdGF0ZSkKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAJTGlz dENlbGwgICAqbDsKIAorCS8qIE5vdGhpbmcgdG8gZG8gaWYgRXZhbFBsYW5RdWFsSW5pdCgpIHdh c24ndCBkb25lIHRvIGJlZ2luIHdpdGguICovCisJaWYgKGVwcXN0YXRlLT5wYXJlbnRlc3RhdGUg PT0gTlVMTCkKKwkJcmV0dXJuOworCiAJcnRzaXplID0gZXBxc3RhdGUtPnBhcmVudGVzdGF0ZS0+ ZXNfcmFuZ2VfdGFibGVfc2l6ZTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5j CmluZGV4IGFhM2YyODM0NTMuLmRmNGNjNWRkYWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJh bGxlbC5jCkBAIC0xMjQ5LDggKzEyNDksMTMgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNo bV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAlwYXJhbXNwYWNlID0gc2htX3Rv Y19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgZmFsc2UpOwogCXBhcmFt TEkgPSBSZXN0b3JlUGFyYW1MaXN0KCZwYXJhbXNwYWNlKTsKIAotCS8qIENyZWF0ZSBhIFF1ZXJ5 RGVzYyBmb3IgdGhlIHF1ZXJ5LiAqLworCS8qCisJICogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0 aGUgcXVlcnkuICBOb3RlIHRoYXQgbm8gQ2FjaGVkUGxhbiBpcyBhdmFpbGFibGUKKwkgKiBoZXJl IGV2ZW4gaWYgdGhlIGNvbnRhaW5pbmcgcGxhbiB0cmVlIG1heSBoYXZlIGNvbWUgZnJvbSBvbmUg aW4gdGhlCisJICogbGVhZGVyLgorCSAqLwogCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQs CisJCQkJCQkgICBOVUxMLAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRBY3Rp dmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFyYW1M SSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKQEAgLTE0MzIsNiArMTQzNyw3IEBAIFBhcmFs bGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkvKiBTdGFydCB1 cCB0aGUgZXhlY3V0b3IgKi8KIAlxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5qaXRGbGFncyA9IGZw ZXMtPmppdF9mbGFnczsKIAlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZnBlcy0+ZWZsYWdzKTsK KwlBc3NlcnQocXVlcnlEZXNjLT5wbGFuX3ZhbGlkKTsKIAogCS8qIFNwZWNpYWwgZXhlY3V0b3Ig aW5pdGlhbGl6YXRpb24gc3RlcHMgZm9yIHBhcmFsbGVsIHdvcmtlcnMgKi8KIAlxdWVyeURlc2Mt PnBsYW5zdGF0ZS0+c3RhdGUtPmVzX3F1ZXJ5X2RzYSA9IGFyZWE7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUGFydGl0aW9uLmMKaW5kZXggZmQ2Y2E4YTVkOS4uYjg1ODBlOThmNyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtNTEzLDYgKzUxMywxMiBAQCBFeGVjSW5pdFBhcnRp dGlvbkluZm8oTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAKIAlv bGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJvdXRlLT5tZW1jeHQpOwogCisJLyoKKwkg KiBOb3RlIHRoYXQgd2hpbGUgd2UgbXVzdCBjaGVjayBFeGVjUGxhblN0aWxsVmFsaWQoKSBmb3Ig b3RoZXIgbG9ja3MgdGFrZW4KKwkgKiBkdXJpbmcgZXhlY3V0aW9uIGluaXRpYWxpemF0aW9uLCBp dCBpcyBPSyB0byBub3QgZG8gc28gZm9yIHBhcnRpdGlvbnMKKwkgKiBvcGVuZWQgbGlrZSB0aGlz LCBmb3IgdHVwbGUgcm91dGluZywgYmVjYXVzZSBpdCBjYW4ndCBwb3NzaWJseQorCSAqIGludmFs aWRhdGUgdGhlIHBsYW4uCisJICovCiAJcGFydHJlbCA9IHRhYmxlX29wZW4ocGFydE9pZCwgUm93 RXhjbHVzaXZlTG9jayk7CiAKIAlsZWFmX3BhcnRfcnJpID0gbWFrZU5vZGUoUmVzdWx0UmVsSW5m byk7CkBAIC0xMTExLDYgKzExMTcsMTEgQEAgRXhlY0luaXRQYXJ0aXRpb25EaXNwYXRjaEluZm8o RVN0YXRlICplc3RhdGUsCiAJICogT25seSBzdWItcGFydGl0aW9uZWQgdGFibGVzIG5lZWQgdG8g YmUgbG9ja2VkIGhlcmUuICBUaGUgcm9vdAogCSAqIHBhcnRpdGlvbmVkIHRhYmxlIHdpbGwgYWxy ZWFkeSBoYXZlIGJlZW4gbG9ja2VkIGFzIGl0J3MgcmVmZXJlbmNlZCBpbgogCSAqIHRoZSBxdWVy eSdzIHJ0YWJsZS4KKwkgKgorCSAqIE5vdGUgdGhhdCB3aGlsZSB3ZSBtdXN0IGNoZWNrIEV4ZWNQ bGFuU3RpbGxWYWxpZCgpIGZvciBvdGhlciBsb2NrcyB0YWtlbgorCSAqIGR1cmluZyBleGVjdXRp b24gaW5pdGlhbGl6YXRpb24sIGl0IGlzIE9LIHRvIG5vdCBkbyBzbyBmb3IgcGFydGl0aW9ucwor CSAqIG9wZW5lZCBsaWtlIHRoaXMsIGZvciB0dXBsZSByb3V0aW5nLCBiZWNhdXNlIGl0IGNhbid0 IHBvc3NpYmx5CisJICogaW52YWxpZGF0ZSB0aGUgcGxhbi4KIAkgKi8KIAlpZiAocGFydG9pZCAh PSBSZWxhdGlvbkdldFJlbGlkKHByb3V0ZS0+cGFydGl0aW9uX3Jvb3QpKQogCQlyZWwgPSB0YWJs ZV9vcGVuKHBhcnRvaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwpAQCAtMTgxNyw2ICsxODI4LDggQEAg RXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCiAJLyogQ3Jl YXRlIHRoZSB3b3JraW5nIGRhdGEgc3RydWN0dXJlIGZvciBwcnVuaW5nICovCiAJcHJ1bmVzdGF0 ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUocGxhbnN0YXRlLCBwcnVuZWluZm8pOworCWlm ICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkg KiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgpA QCAtMTk0Myw2ICsxOTU2LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUg KnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkgKiBkdXJhdGlv biBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4KIAkJCSAqLwogCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5n ZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CisJCQlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCXJldHVybiBOVUxMOwogCQkJcGFydGtleSA9IFJlbGF0 aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRyZWwpOwogCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJl Y3RvcnlMb29rdXAoZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5LAogCQkJCQkJCQkJCQkJ cGFydHJlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDRkMjg4YmM4ZDQu LjZmM2MzN2I2ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9k ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC0zODgsNiAr Mzg4LDkgQEAgRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCQkJYnJlYWs7CiAJfQogCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJcmV0dXJuIHJlc3VsdDsKKwogCUV4ZWNTZXRFeGVjUHJvY05vZGUocmVzdWx0LCByZXN1bHQt PkV4ZWNQcm9jTm9kZSk7CiAKIAkvKgpAQCAtNDAzLDYgKzQwNiwxMiBAQCBFeGVjSW5pdE5vZGUo UGxhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUFzc2VydChJc0Eoc3Vi cGxhbiwgU3ViUGxhbikpOwogCQlzc3RhdGUgPSBFeGVjSW5pdFN1YlBsYW4oc3VicGxhbiwgcmVz dWx0KTsKIAkJc3VicHMgPSBsYXBwZW5kKHN1YnBzLCBzc3RhdGUpOworCQlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQl7CisJCQkvKiBEb24ndCBsb3NlIHRyYWNrIG9mIHRob3Nl IGluaXRpYWxpemVkLiAqLworCQkJcmVzdWx0LT5pbml0UGxhbiA9IHN1YnBzOworCQkJcmV0dXJu IHJlc3VsdDsKKwkJfQogCX0KIAlyZXN1bHQtPmluaXRQbGFuID0gc3VicHM7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1V0aWxzLmMKaW5kZXggMDEyZGJiNjk2NS4uYTQ4NWU3ZGZjNSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1V0aWxzLmMKQEAgLTgwNCw3ICs4MDQsOCBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0 aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCiAKIAkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9 PSBSVEVfUkVMQVRJT04pOwogCi0JCWlmICghSXNQYXJhbGxlbFdvcmtlcigpKQorCQlpZiAoIUlz UGFyYWxsZWxXb3JrZXIoKSAmJgorCQkJKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxB R19HRVRfTE9DS1MpID09IDApCiAJCXsKIAkJCS8qCiAJCQkgKiBJbiBhIG5vcm1hbCBxdWVyeSwg d2Ugc2hvdWxkIGFscmVhZHkgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgbG9jaywKQEAgLTgzMyw2ICs4 MzQsNjEgQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXgg cnRpKQogCXJldHVybiByZWw7CiB9CiAKKy8qCisgKiBFeGVjTG9ja1ZpZXdSZWxhdGlvbnMKKyAq CQlMb2NrIHZpZXcgcmVsYXRpb25zLCBpZiBhbnksIGluIGEgZ2l2ZW4gcXVlcnkKKyAqLwordm9p ZAorRXhlY0xvY2tWaWV3UmVsYXRpb25zKExpc3QgKnZpZXdSZWxhdGlvbnMsIEVTdGF0ZSAqZXN0 YXRlKQoreworCUxpc3RDZWxsICpsYzsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYgbm8gbG9ja3Mg bmVlZCB0byBiZSB0YWtlbi4gKi8KKwlpZiAoKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNf RkxBR19HRVRfTE9DS1MpID09IDApCisJCXJldHVybjsKKworCWZvcmVhY2gobGMsIHZpZXdSZWxh dGlvbnMpCisJeworCQlJbmRleAlydGkgPSBsZmlyc3RfaW50KGxjKTsKKwkJUmFuZ2VUYmxFbnRy eSAqcnRlID0gZXhlY19ydF9mZXRjaChydGksIGVzdGF0ZSk7CisKKwkJQXNzZXJ0KE9pZElzVmFs aWQocnRlLT5yZWxpZCkpOworCQlBc3NlcnQocnRlLT5yZWxraW5kID09IFJFTEtJTkRfVklFVyk7 CisJCUFzc2VydChydGUtPnJlbGxvY2ttb2RlICE9IE5vTG9jayk7CisKKwkJTG9ja1JlbGF0aW9u T2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCX0KK30KKworLyoKKyAqIEV4ZWNM b2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucworICoJCUxvY2sgbm9uLWxlYWYgcmVsYXRpb25zIHdo b3NlIGNoaWxkcmVuIGFyZSBzY2FubmVkIGJ5IGEgZ2l2ZW4KKyAqCQlBcHBlbmQvTWVyZ2VBcHBl bmQgbm9kZQorICovCit2b2lkCitFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMoRVN0YXRl ICplc3RhdGUsIExpc3QgKmFsbHBhcnRyZWxpZHMpCit7CisJTGlzdENlbGwgKmw7CisKKwkvKiBO b3RoaW5nIHRvIGRvIGlmIG5vIGxvY2tzIG5lZWQgdG8gYmUgdGFrZW4uICovCisJaWYgKChlc3Rh dGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfR0VUX0xPQ0tTKSA9PSAwKQorCQlyZXR1cm47 CisKKwlmb3JlYWNoKGwsIGFsbHBhcnRyZWxpZHMpCisJeworCQlCaXRtYXBzZXQgKnBhcnRyZWxp ZHMgPSBsZmlyc3Rfbm9kZShCaXRtYXBzZXQsIGwpOworCQlpbnQJCWk7CisKKwkJaSA9IC0xOwor CQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIocGFydHJlbGlkcywgaSkpID4gMCkKKwkJewor CQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gZXhlY19ydF9mZXRjaChpLCBlc3RhdGUpOworCisJCQlM b2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCX0KKwl9Cit9 CisKIC8qCiAgKiBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uCiAgKgkJT3BlbiByZWxhdGlvbiBnaXZl biBieSB0aGUgcGFzc2VkLWluIFJUIGluZGV4IGFuZCBmaWxsIGl0cwpAQCAtODQ4LDYgKzkwNCw4 IEBAIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sCiAJUmVsYXRpb24JcmVzdWx0UmVsYXRpb25EZXNjOwogCiAJcmVzdWx0 UmVsYXRpb25EZXNjID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHJ0aSk7CisJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuOwogCUluaXRSZXN1bHRS ZWxJbmZvKHJlc3VsdFJlbEluZm8sCiAJCQkJCSAgcmVzdWx0UmVsYXRpb25EZXNjLAogCQkJCQkg IHJ0aSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggNTBlMDZlYzY5My4uZjhjOWRlMWZk YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTg0Myw2ICs4NDMsNyBAQCBwb3N0cXVl bF9zdGFydChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkK IAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKIAllcy0+cWQgPSBDcmVhdGVRdWVyeURlc2MoZXMt PnN0bXQsCisJCQkJCQkJIE5VTEwsCS8qIGZtZ3Jfc3FsKCkgZG9lc24ndCB1c2UgQ2FjaGVkUGxh bnMgKi8KIAkJCQkJCQkgZmNhY2hlLT5zcmMsCiAJCQkJCQkJIEdldEFjdGl2ZVNuYXBzaG90KCks CiAJCQkJCQkJIEludmFsaWRTbmFwc2hvdCwKQEAgLTg2OCw2ICs4NjksNyBAQCBwb3N0cXVlbF9z dGFydChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAkJ ZWxzZQogCQkJZWZsYWdzID0gMDsJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdz ICovCiAJCUV4ZWN1dG9yU3RhcnQoZXMtPnFkLCBlZmxhZ3MpOworCQlBc3NlcnQoZXMtPnFkLT5w bGFuX3ZhbGlkKTsKIAl9CiAKIAllcy0+c3RhdHVzID0gRl9FWEVDX1JVTjsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBZ2cuYwppbmRleCAxOTM0MmE0MjBjLi4wNmUwZDdkMTQ5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFn Zy5jCkBAIC0zMTM0LDE1ICszMTM0LDE4IEBAIGhhc2hhZ2dfcmVzZXRfc3BpbGxfc3RhdGUoQWdn U3RhdGUgKmFnZ3N0YXRlKQogCQl7CiAJCQlIYXNoQWdnU3BpbGwgKnNwaWxsID0gJmFnZ3N0YXRl LT5oYXNoX3NwaWxsc1tzZXRub107CiAKLQkJCXBmcmVlKHNwaWxsLT5udHVwbGVzKTsKLQkJCXBm cmVlKHNwaWxsLT5wYXJ0aXRpb25zKTsKKwkJCWlmIChzcGlsbC0+bnR1cGxlcykKKwkJCQlwZnJl ZShzcGlsbC0+bnR1cGxlcyk7CisJCQlpZiAoc3BpbGwtPnBhcnRpdGlvbnMpCisJCQkJcGZyZWUo c3BpbGwtPnBhcnRpdGlvbnMpOwogCQl9CiAJCXBmcmVlKGFnZ3N0YXRlLT5oYXNoX3NwaWxscyk7 CiAJCWFnZ3N0YXRlLT5oYXNoX3NwaWxscyA9IE5VTEw7CiAJfQogCiAJLyogZnJlZSBiYXRjaGVz ICovCi0JbGlzdF9mcmVlX2RlZXAoYWdnc3RhdGUtPmhhc2hfYmF0Y2hlcyk7CisJaWYgKGFnZ3N0 YXRlLT5oYXNoX2JhdGNoZXMpCisJCWxpc3RfZnJlZV9kZWVwKGFnZ3N0YXRlLT5oYXNoX2JhdGNo ZXMpOwogCWFnZ3N0YXRlLT5oYXNoX2JhdGNoZXMgPSBOSUw7CiAKIAkvKiBjbG9zZSB0YXBlIHNl dCAqLwpAQCAtMzI5Niw2ICszMjk5LDggQEAgRXhlY0luaXRBZ2coQWdnICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkJZWZsYWdzICY9IH5FWEVDX0ZMQUdfUkVXSU5EOwogCW91 dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShhZ2dzdGF0ZSkgPSBF eGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGFnZ3N0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFs aXplIHNvdXJjZSB0dXBsZSB0eXBlLgpAQCAtNDMzNiwxMCArNDM0MSwxMyBAQCBFeGVjRW5kQWdn KEFnZ1N0YXRlICpub2RlKQogCXsKIAkJQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucyA9ICZub2Rl LT5wZXJ0cmFuc1t0cmFuc25vXTsKIAotCQlmb3IgKHNldG5vID0gMDsgc2V0bm8gPCBudW1Hcm91 cGluZ1NldHM7IHNldG5vKyspCisJCWlmIChwZXJ0cmFucykKIAkJewotCQkJaWYgKHBlcnRyYW5z LT5zb3J0c3RhdGVzW3NldG5vXSkKLQkJCQl0dXBsZXNvcnRfZW5kKHBlcnRyYW5zLT5zb3J0c3Rh dGVzW3NldG5vXSk7CisJCQlmb3IgKHNldG5vID0gMDsgc2V0bm8gPCBudW1Hcm91cGluZ1NldHM7 IHNldG5vKyspCisJCQl7CisJCQkJaWYgKHBlcnRyYW5zLT5zb3J0c3RhdGVzW3NldG5vXSkKKwkJ CQkJdHVwbGVzb3J0X2VuZChwZXJ0cmFucy0+c29ydHN0YXRlc1tzZXRub10pOworCQkJfQogCQl9 CiAJfQogCkBAIC00MzU3LDcgKzQzNjUsOCBAQCBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQog CUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKIAogCS8qIGNsZWFuIHVwIHR1cGxl IHRhYmxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJ aWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNz LnNzX1NjYW5UdXBsZVNsb3QpOwogCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7 CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRl eCBjMTg1YjExYzY3Li4wOTFmOTc5YzQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBA IC0xMDksMTAgKzEwOSwxMSBAQCBBcHBlbmRTdGF0ZSAqCiBFeGVjSW5pdEFwcGVuZChBcHBlbmQg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogewogCUFwcGVuZFN0YXRlICphcHBl bmRzdGF0ZSA9IG1ha2VOb2RlKEFwcGVuZFN0YXRlKTsKLQlQbGFuU3RhdGUgKiphcHBlbmRwbGFu c3RhdGVzOworCVBsYW5TdGF0ZSAqKmFwcGVuZHBsYW5zdGF0ZXMgPSBOVUxMOwogCUJpdG1hcHNl dCAgKnZhbGlkc3VicGxhbnM7CiAJQml0bWFwc2V0ICAqYXN5bmNwbGFuczsKIAlpbnQJCQlucGxh bnM7CisJaW50CQkJbmluaXRlZCA9IDA7CiAJaW50CQkJbmFzeW5jcGxhbnM7CiAJaW50CQkJZmly c3R2YWxpZDsKIAlpbnQJCQlpLApAQCAtMTMzLDYgKzEzNCwxNSBAQCBFeGVjSW5pdEFwcGVuZChB cHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWFwcGVuZHN0YXRlLT5h c19zeW5jZG9uZSA9IGZhbHNlOwogCWFwcGVuZHN0YXRlLT5hc19iZWd1biA9IGZhbHNlOwogCisJ LyoKKwkgKiBMb2NrIG5vbi1sZWFmIHBhcnRpdGlvbnMuICBJbiB0aGUgcHJ1bmluZyBjYXNlLCBz b21lIG9mIHRoZXNlIGxvY2tzCisJICogd2lsbCBiZSByZXRha2VuIHdoZW4gdGhlIHBhcnRpdGlv biB3aWxsIGJlIG9wZW5lZCBmb3IgcHJ1bmluZywgYnV0IGl0CisJICogZG9lcyBub3Qgc2VlbSB3 b3J0aHdoaWxlIHRvIHNwZW5kIGN5Y2xlcyB0byBmaWx0ZXIgdGhvc2Ugb3V0IGhlcmUuCisJICov CisJRXhlY0xvY2tBcHBlbmROb25MZWFmUmVsYXRpb25zKGVzdGF0ZSwgbm9kZS0+YWxscGFydHJl bGlkcyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJZ290byBlYXJseV9l eGl0OworCiAJLyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwgdGhl biBzZXQgdGhhdCB1cCBub3cgKi8KIAlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQog CXsKQEAgLTE0OCw2ICsxNTgsOCBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5k ZXgsCiAJCQkJCQkJCQkJCSAgbm9kZS0+YXBwcmVsaWRzLAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1 YnBsYW5zKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCWdvdG8gZWFy bHlfZXhpdDsKIAkJYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJ bnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwogCkBAIC0yMjIsMTEgKzIz NCwxMiBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCQkJZmlyc3R2YWxpZCA9IGo7CiAKIAkJYXBwZW5kcGxhbnN0YXRlc1tqKytdID0g RXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCW5pbml0ZWQrKzsKKwkJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCWdvdG8gZWFybHlfZXhpdDsKIAl9 CiAKIAlhcHBlbmRzdGF0ZS0+YXNfZmlyc3RfcGFydGlhbF9wbGFuID0gZmlyc3R2YWxpZDsKLQlh cHBlbmRzdGF0ZS0+YXBwZW5kcGxhbnMgPSBhcHBlbmRwbGFuc3RhdGVzOwotCWFwcGVuZHN0YXRl LT5hc19ucGxhbnMgPSBucGxhbnM7CiAKIAkvKiBJbml0aWFsaXplIGFzeW5jIHN0YXRlICovCiAJ YXBwZW5kc3RhdGUtPmFzX2FzeW5jcGxhbnMgPSBhc3luY3BsYW5zOwpAQCAtMjc2LDYgKzI4OSwx MCBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCS8qIEZvciBwYXJhbGxlbCBxdWVyeSwgdGhpcyB3aWxsIGJlIG92ZXJyaWRkZW4gbGF0 ZXIuICovCiAJYXBwZW5kc3RhdGUtPmNob29zZV9uZXh0X3N1YnBsYW4gPSBjaG9vc2VfbmV4dF9z dWJwbGFuX2xvY2FsbHk7CiAKK2Vhcmx5X2V4aXQ6CisJYXBwZW5kc3RhdGUtPmFwcGVuZHBsYW5z ID0gYXBwZW5kcGxhbnN0YXRlczsKKwlhcHBlbmRzdGF0ZS0+YXNfbnBsYW5zID0gbmluaXRlZDsK KwogCXJldHVybiBhcHBlbmRzdGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEFuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFu ZC5jCmluZGV4IDRjNWViMmIyM2IuLmFjYzZjNTBlMjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwQW5kLmMKQEAgLTU3LDYgKzU3LDcgQEAgRXhlY0luaXRCaXRtYXBBbmQoQml0bWFwQW5k ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlCaXRtYXBBbmRTdGF0ZSAqYml0 bWFwYW5kc3RhdGUgPSBtYWtlTm9kZShCaXRtYXBBbmRTdGF0ZSk7CiAJUGxhblN0YXRlICoqYml0 bWFwcGxhbnN0YXRlczsKIAlpbnQJCQlucGxhbnM7CisJaW50CQkJbmluaXRlZCA9IDA7CiAJaW50 CQkJaTsKIAlMaXN0Q2VsbCAgICpsOwogCVBsYW4JICAgKmluaXROb2RlOwpAQCAtNzcsOCArNzgs NiBAQCBFeGVjSW5pdEJpdG1hcEFuZChCaXRtYXBBbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCWJpdG1hcGFuZHN0YXRlLT5wcy5wbGFuID0gKFBsYW4gKikgbm9kZTsKIAli aXRtYXBhbmRzdGF0ZS0+cHMuc3RhdGUgPSBlc3RhdGU7CiAJYml0bWFwYW5kc3RhdGUtPnBzLkV4 ZWNQcm9jTm9kZSA9IEV4ZWNCaXRtYXBBbmQ7Ci0JYml0bWFwYW5kc3RhdGUtPmJpdG1hcHBsYW5z ID0gYml0bWFwcGxhbnN0YXRlczsKLQliaXRtYXBhbmRzdGF0ZS0+bnBsYW5zID0gbnBsYW5zOwog CiAJLyoKIAkgKiBjYWxsIEV4ZWNJbml0Tm9kZSBvbiBlYWNoIG9mIHRoZSBwbGFucyB0byBiZSBl eGVjdXRlZCBhbmQgc2F2ZSB0aGUKQEAgLTg5LDYgKzg4LDkgQEAgRXhlY0luaXRCaXRtYXBBbmQo Qml0bWFwQW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAl7CiAJCWluaXRO b2RlID0gKFBsYW4gKikgbGZpcnN0KGwpOwogCQliaXRtYXBwbGFuc3RhdGVzW2ldID0gRXhlY0lu aXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCW5pbml0ZWQrKzsKKwkJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCWdvdG8gZWFybHlfZXhpdDsKIAkJaSsrOwog CX0KIApAQCAtOTksNiArMTAxLDEwIEBAIEV4ZWNJbml0Qml0bWFwQW5kKEJpdG1hcEFuZCAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogRXhlY1F1YWwgb3IgRXhlY1Byb2pl Y3QuICBUaGV5IGRvbid0IG5lZWQgYW55IHR1cGxlIHNsb3RzIGVpdGhlci4KIAkgKi8KIAorZWFy bHlfZXhpdDoKKwliaXRtYXBhbmRzdGF0ZS0+Yml0bWFwcGxhbnMgPSBiaXRtYXBwbGFuc3RhdGVz OworCWJpdG1hcGFuZHN0YXRlLT5ucGxhbnMgPSBuaW5pdGVkOworCiAJcmV0dXJuIGJpdG1hcGFu ZHN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw SGVhcHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmlu ZGV4IGYzNWRmMGI4YmYuLmU2YTY4OWVlZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBIZWFwc2Nhbi5jCkBAIC02NjUsNyArNjY1LDggQEAgRXhlY0VuZEJpdG1hcEhlYXBTY2Fu KEJpdG1hcEhlYXBTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jl c3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVw bGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlp ZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Mu c3NfU2NhblR1cGxlU2xvdCk7CiAKIAkvKgogCSAqIGNsb3NlIGRvd24gc3VicGxhbnMKQEAgLTY5 Myw3ICs2OTQsOCBAQCBFeGVjRW5kQml0bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNjYW5TdGF0ZSAq bm9kZSkKIAkvKgogCSAqIGNsb3NlIGhlYXAgc2NhbgogCSAqLwotCXRhYmxlX2VuZHNjYW4oc2Nh bkRlc2MpOworCWlmIChzY2FuRGVzYykKKwkJdGFibGVfZW5kc2NhbihzY2FuRGVzYyk7CiB9CiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KQEAgLTc2MywxMSArNzY1LDE1IEBAIEV4ZWNJbml0Qml0bWFwSGVhcFNjYW4o Qml0bWFwSGVhcFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9w ZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNj YW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICgh RXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBzY2Fuc3RhdGU7CiAKIAkvKgog CSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShzY2Fuc3Rh dGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlm ICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBzY2Fuc3RhdGU7CiAKIAkv KgogCSAqIGdldCB0aGUgc2NhbiB0eXBlIGZyb20gdGhlIHJlbGF0aW9uIGRlc2NyaXB0b3IuCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKaW5kZXggODNlYzllZGU4 OS4uY2M4MzMyZWY2OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cEluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNj YW4uYwpAQCAtMjYzLDYgKzI2Myw4IEBAIEV4ZWNJbml0Qml0bWFwSW5kZXhTY2FuKEJpdG1hcElu ZGV4U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJLyogT3BlbiB0aGUg aW5kZXggcmVsYXRpb24uICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4u c2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsKIAlpbmRleHN0YXRlLT5iaXNzX1JlbGF0 aW9uRGVzYyA9IGluZGV4X29wZW4obm9kZS0+aW5kZXhpZCwgbG9ja21vZGUpOworCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBpbmRleHN0YXRlOwogCiAJLyoKIAkg KiBJbml0aWFsaXplIGluZGV4LXNwZWNpZmljIHNjYW4gc3RhdGUKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcE9yLmMKaW5kZXggMGJmOGFmOTY1Mi4uYmFiYWQxYjRiMiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcE9yLmMKQEAgLTU4LDYgKzU4LDcgQEAgRXhlY0luaXRCaXRtYXBPcihCaXRt YXBPciAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJQml0bWFwT3JTdGF0ZSAq Yml0bWFwb3JzdGF0ZSA9IG1ha2VOb2RlKEJpdG1hcE9yU3RhdGUpOwogCVBsYW5TdGF0ZSAqKmJp dG1hcHBsYW5zdGF0ZXM7CiAJaW50CQkJbnBsYW5zOworCWludAkJCW5pbml0ZWQgPSAwOwogCWlu dAkJCWk7CiAJTGlzdENlbGwgICAqbDsKIAlQbGFuCSAgICppbml0Tm9kZTsKQEAgLTc4LDggKzc5 LDYgQEAgRXhlY0luaXRCaXRtYXBPcihCaXRtYXBPciAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJYml0bWFwb3JzdGF0ZS0+cHMucGxhbiA9IChQbGFuICopIG5vZGU7CiAJYml0 bWFwb3JzdGF0ZS0+cHMuc3RhdGUgPSBlc3RhdGU7CiAJYml0bWFwb3JzdGF0ZS0+cHMuRXhlY1By b2NOb2RlID0gRXhlY0JpdG1hcE9yOwotCWJpdG1hcG9yc3RhdGUtPmJpdG1hcHBsYW5zID0gYml0 bWFwcGxhbnN0YXRlczsKLQliaXRtYXBvcnN0YXRlLT5ucGxhbnMgPSBucGxhbnM7CiAKIAkvKgog CSAqIGNhbGwgRXhlY0luaXROb2RlIG9uIGVhY2ggb2YgdGhlIHBsYW5zIHRvIGJlIGV4ZWN1dGVk IGFuZCBzYXZlIHRoZQpAQCAtOTAsNiArODksOSBAQCBFeGVjSW5pdEJpdG1hcE9yKEJpdG1hcE9y ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAl7CiAJCWluaXROb2RlID0gKFBs YW4gKikgbGZpcnN0KGwpOwogCQliaXRtYXBwbGFuc3RhdGVzW2ldID0gRXhlY0luaXROb2RlKGlu aXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCW5pbml0ZWQrKzsKKwkJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJCWdvdG8gZWFybHlfZXhpdDsKIAkJaSsrOwogCX0KIApAQCAt MTAwLDYgKzEwMiwxMCBAQCBFeGVjSW5pdEJpdG1hcE9yKEJpdG1hcE9yICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBFeGVjUXVhbCBvciBFeGVjUHJvamVjdC4gIFRoZXkg ZG9uJ3QgbmVlZCBhbnkgdHVwbGUgc2xvdHMgZWl0aGVyLgogCSAqLwogCitlYXJseV9leGl0Ogor CWJpdG1hcG9yc3RhdGUtPmJpdG1hcHBsYW5zID0gYml0bWFwcGxhbnN0YXRlczsKKwliaXRtYXBv cnN0YXRlLT5ucGxhbnMgPSBuaW5pdGVkOworCiAJcmV0dXJuIGJpdG1hcG9yc3RhdGU7CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2FuLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jCmluZGV4IGNjNGM0MjQzZTIuLmVlZDViNzVhNGYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2FuLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYwpAQCAtMjk3LDE0ICsyOTcsMTYgQEAgRXhl Y0VuZEN0ZVNjYW4oQ3RlU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5wcy5w c19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3Vs dFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7 CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUt PnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBJZiBJIGFtIHRoZSBsZWFkZXIsIGZy ZWUgdGhlIHR1cGxlc3RvcmUuCiAJICovCiAJaWYgKG5vZGUtPmxlYWRlciA9PSBub2RlKQogCXsK LQkJdHVwbGVzdG9yZV9lbmQobm9kZS0+Y3RlX3RhYmxlKTsKKwkJaWYgKG5vZGUtPmN0ZV90YWJs ZSkKKwkJCXR1cGxlc3RvcmVfZW5kKG5vZGUtPmN0ZV90YWJsZSk7CiAJCW5vZGUtPmN0ZV90YWJs ZSA9IE5VTEw7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1 c3RvbS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCmluZGV4IGJkNDJjNjVi MjkuLmIwMzQ5OWZhZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0 b20uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKQEAgLTYxLDYgKzYx LDggQEAgRXhlY0luaXRDdXN0b21TY2FuKEN1c3RvbVNjYW4gKmNzY2FuLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAlpZiAoc2NhbnJlbGlkID4gMCkKIAl7CiAJCXNjYW5fcmVsID0gRXhl Y09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBzY2FucmVsaWQsIGVmbGFncyk7CisJCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gY3NzOwogCQljc3MtPnNzLnNzX2N1 cnJlbnRSZWxhdGlvbiA9IHNjYW5fcmVsOwogCX0KIApAQCAtMTI3LDYgKzEyOSwxMCBAQCBFeGVj Q3VzdG9tU2NhbihQbGFuU3RhdGUgKnBzdGF0ZSkKIHZvaWQKIEV4ZWNFbmRDdXN0b21TY2FuKEN1 c3RvbVNjYW5TdGF0ZSAqbm9kZSkKIHsKKwkvKgorCSAqIFhYWCAtIEJlZ2luQ3VzdG9tU2Nhbigp IG1heSBub3QgaGF2ZSBvY2N1cnJlZCBpZiBFeGVjSW5pdEN1c3RvbVNjYW4oKQorCSAqIGhpdCB0 aGUgZWFybHkgZXhpdCBjYXNlLgorCSAqLwogCUFzc2VydChub2RlLT5tZXRob2RzLT5FbmRDdXN0 b21TY2FuICE9IE5VTEwpOwogCW5vZGUtPm1ldGhvZHMtPkVuZEN1c3RvbVNjYW4obm9kZSk7CiAK QEAgLTEzNCw4ICsxNDAsMTAgQEAgRXhlY0VuZEN1c3RvbVNjYW4oQ3VzdG9tU2NhblN0YXRlICpu b2RlKQogCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKIAogCS8qIENsZWFuIG91 dCB0aGUgdHVwbGUgdGFibGUgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Qp OworCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxl KG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5U dXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwog fQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNj YW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCmluZGV4IGMyMTM5 YWNjYTAuLmQzZjBhNjU0ODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVG b3JlaWduc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5j CkBAIC0xNzMsNiArMTczLDggQEAgRXhlY0luaXRGb3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKHNjYW5yZWxpZCA+IDApCiAJewog CQljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIHNjYW5yZWxp ZCwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVy biBzY2Fuc3RhdGU7CiAJCXNjYW5zdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVu dFJlbGF0aW9uOwogCQlmZHdyb3V0aW5lID0gR2V0RmR3Um91dGluZUZvclJlbGF0aW9uKGN1cnJl bnRSZWxhdGlvbiwgdHJ1ZSk7CiAJfQpAQCAtMjY0LDYgKzI2Niw4IEBAIEV4ZWNJbml0Rm9yZWln blNjYW4oRm9yZWlnblNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlm IChvdXRlclBsYW4obm9kZSkpCiAJCW91dGVyUGxhblN0YXRlKHNjYW5zdGF0ZSkgPQogCQkJRXhl Y0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBzY2Fuc3RhdGU7CiAKIAkvKgogCSAqIFRl bGwgdGhlIEZEVyB0byBpbml0aWFsaXplIHRoZSBzY2FuLgpAQCAtMzAwLDE0ICszMDQsMTcgQEAg RXhlY0VuZEZvcmVpZ25TY2FuKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUpCiAJRm9yZWlnblNjYW4g KnBsYW4gPSAoRm9yZWlnblNjYW4gKikgbm9kZS0+c3MucHMucGxhbjsKIAlFU3RhdGUJICAgKmVz dGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOwogCi0JLyogTGV0IHRoZSBGRFcgc2h1dCBkb3duICov Ci0JaWYgKHBsYW4tPm9wZXJhdGlvbiAhPSBDTURfU0VMRUNUKQorCS8qIExldCB0aGUgRkRXIHNo dXQgZG93biBpZiBuZWVkZWQuICovCisJaWYgKG5vZGUtPmZkd19zdGF0ZSkKIAl7Ci0JCWlmIChl c3RhdGUtPmVzX2VwcV9hY3RpdmUgPT0gTlVMTCkKLQkJCW5vZGUtPmZkd3JvdXRpbmUtPkVuZERp cmVjdE1vZGlmeShub2RlKTsKKwkJaWYgKHBsYW4tPm9wZXJhdGlvbiAhPSBDTURfU0VMRUNUKQor CQl7CisJCQlpZiAoZXN0YXRlLT5lc19lcHFfYWN0aXZlID09IE5VTEwpCisJCQkJbm9kZS0+ZmR3 cm91dGluZS0+RW5kRGlyZWN0TW9kaWZ5KG5vZGUpOworCQl9CisJCWVsc2UKKwkJCW5vZGUtPmZk d3JvdXRpbmUtPkVuZEZvcmVpZ25TY2FuKG5vZGUpOwogCX0KLQllbHNlCi0JCW5vZGUtPmZkd3Jv dXRpbmUtPkVuZEZvcmVpZ25TY2FuKG5vZGUpOwogCiAJLyogU2h1dCBkb3duIGFueSBvdXRlciBw bGFuLiAqLwogCWlmIChvdXRlclBsYW5TdGF0ZShub2RlKSkKQEAgLTMxOSw3ICszMjYsOCBAQCBF eGVjRW5kRm9yZWlnblNjYW4oRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAkvKiBjbGVhbiBvdXQg dGhlIHR1cGxlIHRhYmxlICovCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkK IAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVj Q2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3Nf U2NhblR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xv dCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVGdW5jdGlvbnNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4u YwppbmRleCBkZDA2ZWY4YWVlLi43OTJlY2RhNGE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlRnVuY3Rpb25zY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUZ1bmN0aW9uc2Nhbi5jCkBAIC01MzMsNyArNTMzLDggQEAgRXhlY0VuZEZ1bmN0aW9uU2NhbihG dW5jdGlvblNjYW5TdGF0ZSAqbm9kZSkKIAkgKi8KIAlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0 VHVwbGVTbG90KQogCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNs b3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlmIChu b2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19T Y2FuVHVwbGVTbG90KTsKIAogCS8qCiAJICogUmVsZWFzZSBzbG90cyBhbmQgdHVwbGVzdG9yZSBy ZXNvdXJjZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwppbmRleCAzMDdmYzEwZWVhLi4zNjVk M2FmM2U0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCkBAIC04OSw2ICs4OSw4IEBAIEV4 ZWNJbml0R2F0aGVyKEdhdGhlciAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ ICovCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGdhdGhl cnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gZ2F0aGVyc3RhdGU7CiAJdHVw RGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKGdhdGhlcnN0YXRlKSk7CiAK IAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwppbmRleCA5ZDVlMWE0NmU5 Li44ZDI4MDlmMDc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVy TWVyZ2UuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwpAQCAt MTA4LDYgKzEwOCw4IEBAIEV4ZWNJbml0R2F0aGVyTWVyZ2UoR2F0aGVyTWVyZ2UgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyTm9kZSA9IG91dGVyUGxhbihu b2RlKTsKIAlvdXRlclBsYW5TdGF0ZShnbV9zdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2Rl LCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ cmV0dXJuIGdtX3N0YXRlOwogCiAJLyoKIAkgKiBMZWFkZXIgbWF5IGFjY2VzcyBFeGVjUHJvY05v ZGUgcmVzdWx0IGRpcmVjdGx5IChpZgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdyb3VwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYwppbmRleCAyNWEx NjE4OTUyLi5lMDgzMmJiNzc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl R3JvdXAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYwpAQCAtMTg1LDYg KzE4NSw4IEBAIEV4ZWNJbml0R3JvdXAoR3JvdXAgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0 ZShncnBzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFn cyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGdycHN0YXRl OwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlwZS4KQEAgLTIzMSw3ICsy MzMsOCBAQCBFeGVjRW5kR3JvdXAoR3JvdXBTdGF0ZSAqbm9kZSkKIAlFeGVjRnJlZUV4cHJDb250 ZXh0KCZub2RlLT5zcy5wcyk7CiAKIAkvKiBjbGVhbiB1cCB0dXBsZSB0YWJsZSAqLwotCUV4ZWND bGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlmIChub2RlLT5zcy5zc19T Y2FuVHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90 KTsKIAogCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwogCUV4ZWNFbmROb2RlKG91 dGVyUGxhbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwppbmRleCAxZTYyNGZlZDdhLi5hODk2NmY4 YjRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKQEAgLTM4Niw2ICszODYsOCBAQCBFeGVjSW5p dEhhc2goSGFzaCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlh bGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKGhhc2hzdGF0ZSkgPSBFeGVj SW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGhhc2hzdGF0ZTsKIAogCS8qCiAJICogaW5p dGlhbGl6ZSBvdXIgcmVzdWx0IHNsb3QgYW5kIHR5cGUuIE5vIG5lZWQgdG8gYnVpbGQgcHJvamVj dGlvbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYwppbmRleCAzMmYxMmZlZmQ3Li4xNDQ4 YTdkZGJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYwpAQCAtNjg5LDggKzY4OSwx MiBAQCBFeGVjSW5pdEhhc2hKb2luKEhhc2hKb2luICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAloYXNoTm9kZSA9IChIYXNoICopIGlubmVyUGxhbihub2RlKTsKIAogCW91dGVy UGxhblN0YXRlKGhqc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxh Z3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBoanN0YXRl OwogCW91dGVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKGhqc3RhdGUp KTsKIAlpbm5lclBsYW5TdGF0ZShoanN0YXRlKSA9IEV4ZWNJbml0Tm9kZSgoUGxhbiAqKSBoYXNo Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp CisJCXJldHVybiBoanN0YXRlOwogCWlubmVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKGlubmVy UGxhblN0YXRlKGhqc3RhdGUpKTsKIAogCS8qCkBAIC04MTEsOSArODE1LDEyIEBAIEV4ZWNFbmRI YXNoSm9pbihIYXNoSm9pblN0YXRlICpub2RlKQogCS8qCiAJICogY2xlYW4gb3V0IHRoZSB0dXBs ZSB0YWJsZQogCSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxl U2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+aGpfT3V0ZXJUdXBsZVNsb3QpOwotCUV4ZWND bGVhclR1cGxlKG5vZGUtPmhqX0hhc2hUdXBsZVNsb3QpOworCWlmIChub2RlLT5qcy5wcy5wc19S ZXN1bHRUdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1 cGxlU2xvdCk7CisJaWYgKG5vZGUtPmhqX091dGVyVHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBs ZShub2RlLT5oal9PdXRlclR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPmhqX0hhc2hUdXBsZVNsb3Qp CisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmhqX0hhc2hUdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBj bGVhbiB1cCBzdWJ0cmVlcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu Y3JlbWVudGFsU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29y dC5jCmluZGV4IDEyYmMyMmYzM2MuLjZiMmRhNTYwNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKQEAgLTEwNDEsNiArMTA0MSw4IEBAIEV4ZWNJbml0SW5j cmVtZW50YWxTb3J0KEluY3JlbWVudGFsU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJICogbm9kZXMgbWF5IGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIG1vcmUgdXNlZnVs LgogCSAqLwogCW91dGVyUGxhblN0YXRlKGluY3Jzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91 dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCXJldHVybiBpbmNyc29ydHN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXpl IHNjYW4gc2xvdCBhbmQgdHlwZS4KQEAgLTEwODAsMTIgKzEwODIsMTYgQEAgRXhlY0VuZEluY3Jl bWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnRTdGF0ZSAqbm9kZSkKIAlTT19wcmludGYoIkV4ZWNF bmRJbmNyZW1lbnRhbFNvcnQ6IHNodXR0aW5nIGRvd24gc29ydCBub2RlXG4iKTsKIAogCS8qIGNs ZWFuIG91dCB0aGUgc2NhbiB0dXBsZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1Nj YW5UdXBsZVNsb3QpOworCWlmIChub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KQorCQlFeGVjQ2xl YXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIAkvKiBtdXN0IGRyb3AgcG9pbnRl ciB0byBzb3J0IHJlc3VsdCB0dXBsZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkK KwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAkvKiBt dXN0IGRyb3Agc3RhbmRhbG9uZSB0dXBsZSBzbG90cyBmcm9tIG91dGVyIG5vZGUgKi8KLQlFeGVj RHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPmdyb3VwX3Bpdm90KTsKLQlFeGVjRHJvcFNp bmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPnRyYW5zZmVyX3R1cGxlKTsKKwlpZiAobm9kZS0+Z3Jv dXBfcGl2b3QpCisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+Z3JvdXBfcGl2 b3QpOworCWlmIChub2RlLT50cmFuc2Zlcl90dXBsZSkKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRh YmxlU2xvdChub2RlLT50cmFuc2Zlcl90dXBsZSk7CiAKIAkvKgogCSAqIFJlbGVhc2UgdHVwbGVz b3J0IHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCmlu ZGV4IDBiNDNhOWI5NjkuLmI2MGEwODY0NjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4b25seXNjYW4uYwpAQCAtMzk0LDcgKzM5NCw4IEBAIEV4ZWNFbmRJbmRleE9ubHlTY2FuKElu ZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkgKi8KIAlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0 VHVwbGVTbG90KQogCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNs b3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlmKG5v ZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1Nj YW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBjbG9zZSB0aGUgaW5kZXggcmVsYXRpb24gKG5vLW9w IGlmIHdlIGRpZG4ndCBvcGVuIGl0KQpAQCAtNTEyLDYgKzUxMyw4IEBAIEV4ZWNJbml0SW5kZXhP bmx5U2NhbihJbmRleE9ubHlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhl Y09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsK KwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gaW5kZXhzdGF0ZTsK IAogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsK IAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBubyBoZWFwIHNj YW4gaGVyZSAqLwpAQCAtNTY1LDYgKzU2OCw4IEBAIEV4ZWNJbml0SW5kZXhPbmx5U2NhbihJbmRl eE9ubHlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkvKiBPcGVuIHRo ZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+c2Nh bi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwogCWluZGV4c3RhdGUtPmlvc3NfUmVs YXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGluZGV4c3RhdGU7CiAKIAkvKgog CSAqIEluaXRpYWxpemUgaW5kZXgtc3BlY2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4c2Nhbi5jCmluZGV4IDQ1NDBjNzc4MWQuLjYyOGMyMzM5MTkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKQEAgLTgwOCw3ICs4MDgsOCBAQCBFeGVjRW5kSW5kZXhT Y2FuKEluZGV4U2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxl U2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYg KG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNz X1NjYW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBjbG9zZSB0aGUgaW5kZXggcmVsYXRpb24gKG5v LW9wIGlmIHdlIGRpZG4ndCBvcGVuIGl0KQpAQCAtOTI1LDYgKzkyNiw4IEBAIEV4ZWNJbml0SW5k ZXhTY2FuKEluZGV4U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICog b3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVu U2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGluZGV4c3RhdGU7CiAKIAlp bmRleHN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJaW5k ZXhzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsJLyogbm8gaGVhcCBzY2FuIGhl cmUgKi8KQEAgLTk3MCw2ICs5NzMsOCBAQCBFeGVjSW5pdEluZGV4U2NhbihJbmRleFNjYW4gKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0 aW9uLiAqLwogCWxvY2ttb2RlID0gZXhlY19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwg ZXN0YXRlKS0+cmVsbG9ja21vZGU7CiAJaW5kZXhzdGF0ZS0+aXNzX1JlbGF0aW9uRGVzYyA9IGlu ZGV4X29wZW4obm9kZS0+aW5kZXhpZCwgbG9ja21vZGUpOworCWlmICghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpCisJCXJldHVybiBpbmRleHN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXpl IGluZGV4LXNwZWNpZmljIHNjYW4gc3RhdGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVMaW1pdC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKaW5kZXgg NDI1ZmJmYzQwNS4uMmZjYmRlNzRlZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUxpbWl0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKQEAgLTQ3 Niw2ICs0NzYsOCBAQCBFeGVjSW5pdExpbWl0KExpbWl0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKi8KIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQ bGFuU3RhdGUobGltaXRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVm bGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGxpbWl0 c3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgY2hpbGQgZXhwcmVzc2lvbnMKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUxvY2tSb3dzLmMKaW5kZXggNDA3NDE0ZmMwYy4uM2E4YWEyYjVhNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKQEAgLTMyMyw2ICszMjMsOCBAQCBFeGVjSW5pdExv Y2tSb3dzKExvY2tSb3dzICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiB0 aGVuIGluaXRpYWxpemUgb3V0ZXIgcGxhbgogCSAqLwogCW91dGVyUGxhblN0YXRlKGxyc3RhdGUp ID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBscnN0YXRlOwogCiAJLyogbm9kZSByZXR1 cm5zIHVubW9kaWZpZWQgc2xvdHMgZnJvbSB0aGUgb3V0ZXIgcGxhbiAqLwogCWxyc3RhdGUtPnBz LnJlc3VsdG9wc3NldCA9IHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTWF0ZXJpYWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCmluZGV4 IDA5NjMyNjc4YjAuLmYxNDZlYmIxZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNYXRlcmlhbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5j CkBAIC0yMTQsNiArMjE0LDggQEAgRXhlY0luaXRNYXRlcmlhbChNYXRlcmlhbCAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7 CiAJb3V0ZXJQbGFuU3RhdGUobWF0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0 YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVy biBtYXRzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSByZXN1bHQgdHlwZSBhbmQgc2xvdC4g Tm8gbmVlZCB0byBpbml0aWFsaXplIHByb2plY3Rpb24gaW5mbwpAQCAtMjQyLDcgKzI0NCw4IEBA IEV4ZWNFbmRNYXRlcmlhbChNYXRlcmlhbFN0YXRlICpub2RlKQogCS8qCiAJICogY2xlYW4gb3V0 IHRoZSB0dXBsZSB0YWJsZQogCSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5U dXBsZVNsb3QpOworCWlmIChub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KQorCQlFeGVjQ2xlYXJU dXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIAogCS8qCiAJICogUmVsZWFzZSB0dXBs ZXN0b3JlIHJlc291cmNlcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l bW9pemUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKaW5kZXggNGYwNDI2 OWUyNi4uMzAwM2VlMWU1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l bW9pemUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCkBAIC05Mzgs NiArOTM4LDggQEAgRXhlY0luaXRNZW1vaXplKE1lbW9pemUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxh blN0YXRlKG1zdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7 CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIG1zdGF0ZTsKIAog CS8qCiAJICogSW5pdGlhbGl6ZSByZXR1cm4gc2xvdCBhbmQgdHlwZS4gTm8gbmVlZCB0byBpbml0 aWFsaXplIHByb2plY3Rpb24gaW5mbwpAQCAtMTA0Myw2ICsxMDQ1LDcgQEAgRXhlY0VuZE1lbW9p emUoTWVtb2l6ZVN0YXRlICpub2RlKQogewogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKIAkv KiBWYWxpZGF0ZSB0aGUgbWVtb3J5IGFjY291bnRpbmcgY29kZSBpcyBjb3JyZWN0IGluIGFzc2Vy dCBidWlsZHMuICovCisJaWYgKG5vZGUtPmhhc2h0YWJsZSkKIAl7CiAJCWludAkJCWNvdW50Owog CQl1aW50NjQJCW1lbSA9IDA7CkBAIC0xMDg5LDExICsxMDkyLDE0IEBAIEV4ZWNFbmRNZW1vaXpl KE1lbW9pemVTdGF0ZSAqbm9kZSkKIAl9CiAKIAkvKiBSZW1vdmUgdGhlIGNhY2hlIGNvbnRleHQg Ki8KLQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRhYmxlQ29udGV4dCk7CisJaWYgKG5vZGUt PnRhYmxlQ29udGV4dCkKKwkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRleHQp OwogCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5v ZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1Nj YW5UdXBsZVNsb3QpOwogCS8qIG11c3QgZHJvcCBwb2ludGVyIHRvIGNhY2hlIHJlc3VsdCB0dXBs ZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJ aWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9k ZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAogCS8qCiAJICogZnJlZSBleHByY29udGV4 dApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCAzOTliMzljNTk4Li40 MGJiYTM1NDk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBl bmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtNjUs OSArNjUsMTAgQEAgTWVyZ2VBcHBlbmRTdGF0ZSAqCiBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdl QXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHsKIAlNZXJnZUFwcGVu ZFN0YXRlICptZXJnZXN0YXRlID0gbWFrZU5vZGUoTWVyZ2VBcHBlbmRTdGF0ZSk7Ci0JUGxhblN0 YXRlICoqbWVyZ2VwbGFuc3RhdGVzOworCVBsYW5TdGF0ZSAqKm1lcmdlcGxhbnN0YXRlcyA9IE5V TEw7CiAJQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFuczsKIAlpbnQJCQlucGxhbnM7CisJaW50CQkJ bmluaXRlZCA9IDA7CiAJaW50CQkJaSwKIAkJCQlqOwogCkBAIC04MSw2ICs4MiwxNSBAQCBFeGVj SW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAltZXJnZXN0YXRlLT5wcy5zdGF0ZSA9IGVzdGF0ZTsKIAltZXJnZXN0YXRlLT5wcy5F eGVjUHJvY05vZGUgPSBFeGVjTWVyZ2VBcHBlbmQ7CiAKKwkvKgorCSAqIExvY2sgbm9uLWxlYWYg cGFydGl0aW9ucy4gIEluIHRoZSBwcnVuaW5nIGNhc2UsIHNvbWUgb2YgdGhlc2UgbG9ja3MKKwkg KiB3aWxsIGJlIHJldGFrZW4gd2hlbiB0aGUgcGFydGl0aW9uIHdpbGwgYmUgb3BlbmVkIGZvciBw cnVuaW5nLCBidXQgaXQKKwkgKiBkb2VzIG5vdCBzZWVtIHdvcnRod2hpbGUgdG8gc3BlbmQgY3lj bGVzIHRvIGZpbHRlciB0aG9zZSBvdXQgaGVyZS4KKwkgKi8KKwlFeGVjTG9ja0FwcGVuZE5vbkxl YWZSZWxhdGlvbnMoZXN0YXRlLCBub2RlLT5hbGxwYXJ0cmVsaWRzKTsKKwlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQlnb3RvIGVhcmx5X2V4aXQ7CisKIAkvKiBJZiBydW4tdGlt ZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVuIHNldCB0aGF0IHVwIG5vdyAqLwog CWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCiAJewpAQCAtOTYsNiArMTA2LDggQEAg RXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmRleCwKIAkJCQkJCQkJ CQkJICBub2RlLT5hcHByZWxpZHMsCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOworCQlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIG1lcmdlc3RhdGU7CiAJ CW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1z X251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwogCkBAIC0xMjIsOCArMTM0LDYgQEAgRXhlY0lu aXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJfQogCiAJbWVyZ2VwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikgcGFsbG9jKG5wbGFu cyAqIHNpemVvZihQbGFuU3RhdGUgKikpOwotCW1lcmdlc3RhdGUtPm1lcmdlcGxhbnMgPSBtZXJn ZXBsYW5zdGF0ZXM7Ci0JbWVyZ2VzdGF0ZS0+bXNfbnBsYW5zID0gbnBsYW5zOwogCiAJbWVyZ2Vz dGF0ZS0+bXNfc2xvdHMgPSAoVHVwbGVUYWJsZVNsb3QgKiopIHBhbGxvYzAoc2l6ZW9mKFR1cGxl VGFibGVTbG90ICopICogbnBsYW5zKTsKIAltZXJnZXN0YXRlLT5tc19oZWFwID0gYmluYXJ5aGVh cF9hbGxvY2F0ZShucGxhbnMsIGhlYXBfY29tcGFyZV9zbG90cywKQEAgLTE1Miw2ICsxNjIsOSBA QCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkJUGxhbgkgICAqaW5pdE5vZGUgPSAoUGxhbiAqKSBsaXN0X250aChub2Rl LT5tZXJnZXBsYW5zLCBpKTsKIAogCQltZXJnZXBsYW5zdGF0ZXNbaisrXSA9IEV4ZWNJbml0Tm9k ZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQluaW5pdGVkKys7CisJCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlnb3RvIGVhcmx5X2V4aXQ7CiAJfQogCiAJbWVyZ2Vz dGF0ZS0+cHMucHNfUHJvakluZm8gPSBOVUxMOwpAQCAtMTg4LDYgKzIwMSwxMCBAQCBFeGVjSW5p dE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkgKi8KIAltZXJnZXN0YXRlLT5tc19pbml0aWFsaXplZCA9IGZhbHNlOwogCitlYXJseV9l eGl0OgorCW1lcmdlc3RhdGUtPm1lcmdlcGxhbnMgPSBtZXJnZXBsYW5zdGF0ZXM7CisJbWVyZ2Vz dGF0ZS0+bXNfbnBsYW5zID0gbmluaXRlZDsKKwogCXJldHVybiBtZXJnZXN0YXRlOwogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKaW5kZXggODA5YWEyMTVjNi4uOTY4YmUwNTU2 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwpAQCAtMTQ4MiwxMSArMTQ4Miwx NSBAQCBFeGVjSW5pdE1lcmdlSm9pbihNZXJnZUpvaW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCW1lcmdlc3RhdGUtPm1qX1NraXBNYXJrUmVzdG9yZSA9IG5vZGUtPnNraXBf bWFya19yZXN0b3JlOwogCiAJb3V0ZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkgPSBFeGVjSW5pdE5v ZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIG1lcmdlc3RhdGU7CiAJb3V0ZXJEZXNjID0gRXhlY0dl dFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkpOwogCWlubmVyUGxhblN0YXRl KG1lcmdlc3RhdGUpID0gRXhlY0luaXROb2RlKGlubmVyUGxhbihub2RlKSwgZXN0YXRlLAogCQkJ CQkJCQkJCQkgIG1lcmdlc3RhdGUtPm1qX1NraXBNYXJrUmVzdG9yZSA/CiAJCQkJCQkJCQkJCSAg ZWZsYWdzIDoKIAkJCQkJCQkJCQkJICAoZWZsYWdzIHwgRVhFQ19GTEFHX01BUkspKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbWVyZ2VzdGF0ZTsKIAlpbm5l ckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAK IAkvKgpAQCAtMTY0Miw4ICsxNjQ2LDEwIEBAIEV4ZWNFbmRNZXJnZUpvaW4oTWVyZ2VKb2luU3Rh dGUgKm5vZGUpCiAJLyoKIAkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCiAJICovCi0JRXhl Y0NsZWFyVHVwbGUobm9kZS0+anMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJU dXBsZShub2RlLT5tal9NYXJrZWRUdXBsZVNsb3QpOworCWlmIChub2RlLT5qcy5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxl U2xvdCk7CisJaWYgKG5vZGUtPm1qX01hcmtlZFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUo bm9kZS0+bWpfTWFya2VkVHVwbGVTbG90KTsKIAogCS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJw bGFucwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCAzYTY3Mzg5NTA4 Li5iMDdkN2NhYzI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5 VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAt MzkyMiw2ICszOTIyLDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJUGxhbgkgICAqc3VicGxhbiA9IG91dGVyUGxh bihub2RlKTsKIAlDbWRUeXBlCQlvcGVyYXRpb24gPSBub2RlLT5vcGVyYXRpb247CiAJaW50CQkJ bnJlbHMgPSBsaXN0X2xlbmd0aChub2RlLT5yZXN1bHRSZWxhdGlvbnMpOworCWludAkJCW5pbml0 ZWQgPSAwOwogCVJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm87CiAJTGlzdAkgICAqYXJvd21h cmtzOwogCUxpc3RDZWxsICAgKmw7CkBAIC0zOTQzLDcgKzM5NDQsNiBAQCBFeGVjSW5pdE1vZGlm eVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlt dHN0YXRlLT5jYW5TZXRUYWcgPSBub2RlLT5jYW5TZXRUYWc7CiAJbXRzdGF0ZS0+bXRfZG9uZSA9 IGZhbHNlOwogCi0JbXRzdGF0ZS0+bXRfbnJlbHMgPSBucmVsczsKIAltdHN0YXRlLT5yZXN1bHRS ZWxJbmZvID0gKFJlc3VsdFJlbEluZm8gKikKIAkJcGFsbG9jKG5yZWxzICogc2l6ZW9mKFJlc3Vs dFJlbEluZm8pKTsKIApAQCAtMzk3OCw2ICszOTc4LDkgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShN b2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJICAg bGluaXRpYWxfaW50KG5vZGUtPnJlc3VsdFJlbGF0aW9ucykpOwogCX0KIAorCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCWdvdG8gZWFybHlfZXhpdDsKKwogCS8qIHNldCB1cCBl cHFzdGF0ZSB3aXRoIGR1bW15IHN1YnBsYW4gZGF0YSBmb3IgdGhlIG1vbWVudCAqLwogCUV2YWxQ bGFuUXVhbEluaXQoJm10c3RhdGUtPm10X2VwcXN0YXRlLCBlc3RhdGUsIE5VTEwsIE5JTCwgbm9k ZS0+ZXBxUGFyYW0pOwogCW10c3RhdGUtPmZpcmVCU1RyaWdnZXJzID0gdHJ1ZTsKQEAgLTQwMDQs NiArNDAwNyw4IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlpZiAocmVzdWx0UmVsSW5mbyAhPSBtdHN0YXRlLT5y b290UmVzdWx0UmVsSW5mbykKIAkJewogCQkJRXhlY0luaXRSZXN1bHRSZWxhdGlvbihlc3RhdGUs IHJlc3VsdFJlbEluZm8sIHJlc3VsdFJlbGF0aW9uKTsKKwkJCWlmICghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpCisJCQkJZ290byBlYXJseV9leGl0OwogCiAJCQkvKgogCQkJICogRm9yIGNo aWxkIHJlc3VsdCByZWxhdGlvbnMsIHN0b3JlIHRoZSByb290IHJlc3VsdCByZWxhdGlvbgpAQCAt NDAzMSwxMSArNDAzNiwxMyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBOb3cgd2UgbWF5IGluaXRpYWxpemUg dGhlIHN1YnBsYW4uCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUobXRzdGF0ZSkgPSBFeGVjSW5pdE5v ZGUoc3VicGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCWdvdG8gZWFybHlfZXhpdDsKIAogCS8qCiAJICogRG8gYWRkaXRpb25hbCBwZXIt cmVzdWx0LXJlbGF0aW9uIGluaXRpYWxpemF0aW9uLgogCSAqLwotCWZvciAoaSA9IDA7IGkgPCBu cmVsczsgaSsrKQorCWZvciAoaSA9IDA7IGkgPCBucmVsczsgaSsrLCBuaW5pdGVkKyspCiAJewog CQlyZXN1bHRSZWxJbmZvID0gJm10c3RhdGUtPnJlc3VsdFJlbEluZm9baV07CiAKQEAgLTQzODQs NiArNDM5MSw4IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQllc3RhdGUtPmVzX2F1eG1vZGlmeXRhYmxlcyA9IGxj b25zKG10c3RhdGUsCiAJCQkJCQkJCQkJICAgZXN0YXRlLT5lc19hdXhtb2RpZnl0YWJsZXMpOwog CitlYXJseV9leGl0OgorCW10c3RhdGUtPm10X25yZWxzID0gbmluaXRlZDsKIAlyZXR1cm4gbXRz dGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5hbWVkdHVw bGVzdG9yZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOYW1lZHR1cGxlc3RvcmVz Y2FuLmMKaW5kZXggNDY4MzJhZDgyZi4uMWY5MmM0M2QzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5jCkBAIC0xNzQsNyArMTc0LDggQEAgRXhl Y0VuZE5hbWVkVHVwbGVzdG9yZVNjYW4oTmFtZWRUdXBsZXN0b3JlU2NhblN0YXRlICpub2RlKQog CSAqLwogCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1 cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9k ZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Qp CisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogfQogCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jCmluZGV4IGIzZDUyZTY5ZWMuLmRl ZGEwYzI1NTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jCkBAIC0yOTUsMTEgKzI5 NSwxNSBAQCBFeGVjSW5pdE5lc3RMb29wKE5lc3RMb29wICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKiB2YWx1ZXMuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUobmxzdGF0ZSkg PSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIG5sc3RhdGU7CiAJaWYgKG5vZGUt Pm5lc3RQYXJhbXMgPT0gTklMKQogCQllZmxhZ3MgfD0gRVhFQ19GTEFHX1JFV0lORDsKIAllbHNl CiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlpbm5lclBsYW5TdGF0ZShubHN0YXRl KSA9IEV4ZWNJbml0Tm9kZShpbm5lclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbmxzdGF0ZTsKIAogCS8qCiAJ ICogSW5pdGlhbGl6ZSByZXN1bHQgc2xvdCwgdHlwZSBhbmQgcHJvamVjdGlvbi4KQEAgLTM3Miw3 ICszNzYsOCBAQCBFeGVjRW5kTmVzdExvb3AoTmVzdExvb3BTdGF0ZSAqbm9kZSkKIAkvKgogCSAq IGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKIAkgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5q cy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOworCWlmIChub2RlLT5qcy5wcy5wc19SZXN1bHRUdXBs ZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7 CiAKIAkvKgogCSAqIGNsb3NlIGRvd24gc3VicGxhbnMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJv amVjdFNldC5jCmluZGV4IGY2ZmYzZGM0NGMuLjg1ZDIwYzQ2ODAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVByb2plY3RTZXQuYwpAQCAtMjQ3LDYgKzI0Nyw4IEBAIEV4ZWNJbml0UHJvamVjdFNl dChQcm9qZWN0U2V0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0 aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoc3RhdGUpID0gRXhlY0lu aXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBzdGF0ZTsKIAogCS8qCiAJICogd2UgZG9uJ3Qg dXNlIGlubmVyIHBsYW4KQEAgLTMyOCw3ICszMzAsOCBAQCBFeGVjRW5kUHJvamVjdFNldChQcm9q ZWN0U2V0U3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCiAJ ICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKKwlpZiAo bm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5w c19SZXN1bHRUdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBzaHV0IGRvd24gc3VicGxhbnMKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKaW5kZXggZTc4MTAwMzkzNC4uOTY3 ZmU0ZjI4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVu aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKQEAg LTI0NCw3ICsyNDQsMTEgQEAgRXhlY0luaXRSZWN1cnNpdmVVbmlvbihSZWN1cnNpdmVVbmlvbiAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBu b2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHJ1c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy UGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCXJldHVybiBydXN0YXRlOwogCWlubmVyUGxhblN0YXRlKHJ1c3RhdGUpID0gRXhl Y0luaXROb2RlKGlubmVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBydXN0YXRlOwogCiAJLyoKIAkgKiBJZiBo YXNoaW5nLCBwcmVjb21wdXRlIGZtZ3IgbG9va3VwIGRhdGEgZm9yIGlubmVyIGxvb3AsIGFuZCBj cmVhdGUgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKaW5kZXggNDIxOTcxMmQzMC4uYzU0 OWI2ODRhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwpAQCAtMjA4LDYgKzIwOCw4IEBA IEV4ZWNJbml0UmVzdWx0KFJlc3VsdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHJlc3N0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gcmVzc3RhdGU7CiAKIAkv KgogCSAqIHdlIGRvbid0IHVzZSBpbm5lciBwbGFuCkBAIC0yNDgsNyArMjUwLDggQEAgRXhlY0Vu ZFJlc3VsdChSZXN1bHRTdGF0ZSAqbm9kZSkKIAkvKgogCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUg dGFibGUKIAkgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3Qp OworCWlmIChub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5v ZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CiAKIAkvKgogCSAqIHNodXQgZG93biBzdWJwbGFu cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKaW5kZXggZDdlMjJiMWRiYi4uYjNi YzliMWY3NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCkBAIC0xMjUsNiAr MTI1LDggQEAgRXhlY0luaXRTYW1wbGVTY2FuKFNhbXBsZVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCQlFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsCiAJCQkJCQkJ IG5vZGUtPnNjYW4uc2NhbnJlbGlkLAogCQkJCQkJCSBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBzY2Fuc3RhdGU7CiAKIAkvKiB3ZSB3b24ndCBz ZXQgdXAgdGhlIEhlYXBTY2FuRGVzYyB0aWxsIGxhdGVyICovCiAJc2NhbnN0YXRlLT5zcy5zc19j dXJyZW50U2NhbkRlc2MgPSBOVUxMOwpAQCAtMTk4LDcgKzIwMCw4IEBAIEV4ZWNFbmRTYW1wbGVT Y2FuKFNhbXBsZVNjYW5TdGF0ZSAqbm9kZSkKIAkgKi8KIAlpZiAobm9kZS0+c3MucHMucHNfUmVz dWx0VHVwbGVTbG90KQogCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBs ZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlm IChub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5z c19TY2FuVHVwbGVTbG90KTsKIAogCS8qCiAJICogY2xvc2UgaGVhcCBzY2FuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNlcXNjYW4uYwppbmRleCA0ZGEwZjI4ZjdiLi5lN2NhMTllZTRlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTE1Myw2ICsxNTMsOCBAQCBFeGVjSW5pdFNlcVNjYW4o U2VxU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4ZWNPcGVuU2Nh blJlbGF0aW9uKGVzdGF0ZSwKIAkJCQkJCQkgbm9kZS0+c2Nhbi5zY2FucmVsaWQsCiAJCQkJCQkJ IGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHNj YW5zdGF0ZTsKIAogCS8qIGFuZCBjcmVhdGUgc2xvdCB3aXRoIHRoZSBhcHByb3ByaWF0ZSByb3d0 eXBlICovCiAJRXhlY0luaXRTY2FuVHVwbGVTbG90KGVzdGF0ZSwgJnNjYW5zdGF0ZS0+c3MsCkBA IC0yMDAsNyArMjAyLDggQEAgRXhlY0VuZFNlcVNjYW4oU2VxU2NhblN0YXRlICpub2RlKQogCSAq LwogCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxl KG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+ c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJ CUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCiAJLyoKIAkgKiBj bG9zZSBoZWFwIHNjYW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRP cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMKaW5kZXggNGJjMjQwNmI4OS4u OTU5NTBhNWMyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMKQEAgLTUyOCw2ICs1MjgsOCBA QCBFeGVjSW5pdFNldE9wKFNldE9wICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAlpZiAobm9kZS0+c3RyYXRlZ3kgPT0gU0VUT1BfSEFTSEVEKQogCQllZmxhZ3MgJj0gfkVYRUNf RkxBR19SRVdJTkQ7CiAJb3V0ZXJQbGFuU3RhdGUoc2V0b3BzdGF0ZSkgPSBFeGVjSW5pdE5vZGUo b3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwkJcmV0dXJuIHNldG9wc3RhdGU7CiAJb3V0ZXJEZXNjID0gRXhlY0dldFJl c3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoc2V0b3BzdGF0ZSkpOwogCiAJLyoKQEAgLTU4Myw3ICs1 ODUsOCBAQCB2b2lkCiBFeGVjRW5kU2V0T3AoU2V0T3BTdGF0ZSAqbm9kZSkKIHsKIAkvKiBjbGVh biB1cCB0dXBsZSB0YWJsZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1 cGxlU2xvdCk7CisJaWYgKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFy VHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAogCS8qIGZyZWUgc3Vic2lkaWFy eSBzdHVmZiBpbmNsdWRpbmcgaGFzaHRhYmxlICovCiAJaWYgKG5vZGUtPnRhYmxlQ29udGV4dCkK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU29ydC5jCmluZGV4IGM2YzcyYzZlNjcuLjg5ZmVmODZhYmEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNvcnQuYwpAQCAtMjYzLDYgKzI2Myw4IEBAIEV4ZWNJbml0U29ydChTb3J0 ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAllZmxhZ3MgJj0gfihFWEVDX0ZM QUdfUkVXSU5EIHwgRVhFQ19GTEFHX0JBQ0tXQVJEIHwgRVhFQ19GTEFHX01BUkspOwogCiAJb3V0 ZXJQbGFuU3RhdGUoc29ydHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gc29ydHN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlwZS4K QEAgLTMwNiw5ICszMDgsMTEgQEAgRXhlY0VuZFNvcnQoU29ydFN0YXRlICpub2RlKQogCS8qCiAJ ICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQogCSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUt PnNzLnNzX1NjYW5UdXBsZVNsb3QpOworCWlmIChub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KQor CQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIAkvKiBtdXN0IGRy b3AgcG9pbnRlciB0byBzb3J0IHJlc3VsdCB0dXBsZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUt PnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1 cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90 KTsKIAogCS8qCiAJICogUmVsZWFzZSB0dXBsZXNvcnQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU3VicXVlcnlzY2FuLmMKaW5kZXggNDI0NzFiZmMwNC4uOWI4Y2RkYzg5ZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwpAQCAtMTI0LDYgKzEyNCw4IEBA IEV4ZWNJbml0U3VicXVlcnlTY2FuKFN1YnF1ZXJ5U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBzdWJxdWVyeQogCSAqLwogCXN1YnF1ZXJ5c3Rh dGUtPnN1YnBsYW4gPSBFeGVjSW5pdE5vZGUobm9kZS0+c3VicGxhbiwgZXN0YXRlLCBlZmxhZ3Mp OworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBzdWJxdWVyeXN0 YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlwZSAobmVlZGVkIGJ5 IEV4ZWNBc3NpZ25TY2FuUHJvamVjdGlvbkluZm8pCkBAIC0xNzcsNyArMTc5LDggQEAgRXhlY0Vu ZFN1YnF1ZXJ5U2NhbihTdWJxdWVyeVNjYW5TdGF0ZSAqbm9kZSkKIAkgKi8KIAlpZiAobm9kZS0+ c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQogCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5w c19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBs ZVNsb3QpOworCWlmIChub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KQorCQlFeGVjQ2xlYXJUdXBs ZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIAogCS8qCiAJICogY2xvc2UgZG93biBzdWJx dWVyeQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKaW5kZXggMGM2Yzkx Mjc3OC4uZDc1MzY5NTNmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRh YmxlRnVuY3NjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nh bi5jCkBAIC0yMjMsNyArMjIzLDggQEAgRXhlY0VuZFRhYmxlRnVuY1NjYW4oVGFibGVGdW5jU2Nh blN0YXRlICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3Qp CiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhl Y0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNz X1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNs b3QpOwogCiAJLyoKIAkgKiBSZWxlYXNlIHR1cGxlc3RvcmUgcmVzb3VyY2VzCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKaW5kZXggMjEyNGM1NWVmNS4uMWFlNDUxZDdhNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwpAQCAtMzQyLDcgKzM0Miw4 IEBAIEV4ZWNFbmRUaWRSYW5nZVNjYW4oVGlkUmFuZ2VTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJ aWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9k ZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5z c19TY2FuVHVwbGVTbG90KTsKKwlpZiAobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCkKKwkJRXhl Y0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CiB9CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K QEAgLTM4Niw2ICszODcsOCBAQCBFeGVjSW5pdFRpZFJhbmdlU2NhbihUaWRSYW5nZVNjYW4gKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRp b24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUs IG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCXJldHVybiB0aWRyYW5nZXN0YXRlOwogCiAJdGlkcmFuZ2VzdGF0ZS0+c3Mu c3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9uOwogCXRpZHJhbmdlc3RhdGUtPnNz LnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CS8qIG5vIHRhYmxlIHNjYW4gaGVyZSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKaW5kZXggODYyYmQwMzMwYi4uOWZlNzZiMWM2MCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCkBAIC00ODMsNyArNDgzLDggQEAgRXhlY0VuZFRp ZFNjYW4oVGlkU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxl U2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7CisJaWYg KG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNz X1NjYW5UdXBsZVNsb3QpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01MjksNiArNTMwLDggQEAgRXhl Y0luaXRUaWRTY2FuKFRpZFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVj T3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiB0aWRzdGF0ZTsKIAog CXRpZHN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJdGlk c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7IC8qIG5vIGhlYXAgc2NhbiBoZXJl ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKaW5kZXggNDUwMzVkNzRmYS4uNjlmMjNiMDJj NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwpAQCAtMTM2LDYgKzEzNiw4IEBAIEV4ZWNJ bml0VW5pcXVlKFVuaXF1ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICog dGhlbiBpbml0aWFsaXplIG91dGVyIHBsYW4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZSh1bmlxdWVz dGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHVuaXF1ZXN0YXRlOwog CiAJLyoKIAkgKiBJbml0aWFsaXplIHJlc3VsdCBzbG90IGFuZCB0eXBlLiBVbmlxdWUgbm9kZXMg ZG8gbm8gcHJvamVjdGlvbnMsIHNvCkBAIC0xNjksNyArMTcxLDggQEAgdm9pZAogRXhlY0VuZFVu aXF1ZShVbmlxdWVTdGF0ZSAqbm9kZSkKIHsKIAkvKiBjbGVhbiB1cCB0dXBsZSB0YWJsZSAqLwot CUV4ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJaWYgKG5vZGUt PnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVz dWx0VHVwbGVTbG90KTsKIAogCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnBzKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVWYWx1ZXNzY2FuLmMKaW5kZXggMzJhY2U2MzAxNy4uZjVkZWRiYWI2 MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jCkBAIC0zNDAsNyArMzQwLDgg QEAgRXhlY0VuZFZhbHVlc1NjYW4oVmFsdWVzU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmIChu b2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNz LnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2Nh blR1cGxlU2xvdCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVh clR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKaW5kZXggN2MwN2ZiMDY4NC4uNjE2YmI5NzY3NSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtMTMzNCw3ICsxMzM0LDcgQEAg cmVsZWFzZV9wYXJ0aXRpb24oV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQogCQlXaW5kb3dTdGF0 ZVBlckZ1bmMgcGVyZnVuY3N0YXRlID0gJih3aW5zdGF0ZS0+cGVyZnVuY1tpXSk7CiAKIAkJLyog UmVsZWFzZSBhbnkgcGFydGl0aW9uLWxvY2FsIHN0YXRlIG9mIHRoaXMgd2luZG93IGZ1bmN0aW9u ICovCi0JCWlmIChwZXJmdW5jc3RhdGUtPndpbm9iaikKKwkJaWYgKHBlcmZ1bmNzdGF0ZSAmJiBw ZXJmdW5jc3RhdGUtPndpbm9iaikKIAkJCXBlcmZ1bmNzdGF0ZS0+d2lub2JqLT5sb2NhbG1lbSA9 IE5VTEw7CiAJfQogCkBAIC0xMzQ0LDEyICsxMzQ0LDE3IEBAIHJlbGVhc2VfcGFydGl0aW9uKFdp bmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKIAkgKiBhbnkgYWdncmVnYXRlIHRlbXAgZGF0YSkuICBX ZSBkb24ndCByZWx5IG9uIHJldGFpbCBwZnJlZSBiZWNhdXNlIHNvbWUKIAkgKiBhZ2dyZWdhdGVz IG1pZ2h0IGhhdmUgYWxsb2NhdGVkIGRhdGEgd2UgZG9uJ3QgaGF2ZSBkaXJlY3QgcG9pbnRlcnMg dG8uCiAJICovCi0JTWVtb3J5Q29udGV4dFJlc2V0QW5kRGVsZXRlQ2hpbGRyZW4od2luc3RhdGUt PnBhcnRjb250ZXh0KTsKLQlNZW1vcnlDb250ZXh0UmVzZXRBbmREZWxldGVDaGlsZHJlbih3aW5z dGF0ZS0+YWdnY29udGV4dCk7Ci0JZm9yIChpID0gMDsgaSA8IHdpbnN0YXRlLT5udW1hZ2dzOyBp KyspCisJaWYgKHdpbnN0YXRlLT5wYXJ0Y29udGV4dCkKKwkJTWVtb3J5Q29udGV4dFJlc2V0QW5k RGVsZXRlQ2hpbGRyZW4od2luc3RhdGUtPnBhcnRjb250ZXh0KTsKKwlpZiAod2luc3RhdGUtPmFn Z2NvbnRleHQpCisJCU1lbW9yeUNvbnRleHRSZXNldEFuZERlbGV0ZUNoaWxkcmVuKHdpbnN0YXRl LT5hZ2djb250ZXh0KTsKKwlpZiAod2luc3RhdGUtPnBlcmFnZykKIAl7Ci0JCWlmICh3aW5zdGF0 ZS0+cGVyYWdnW2ldLmFnZ2NvbnRleHQgIT0gd2luc3RhdGUtPmFnZ2NvbnRleHQpCi0JCQlNZW1v cnlDb250ZXh0UmVzZXRBbmREZWxldGVDaGlsZHJlbih3aW5zdGF0ZS0+cGVyYWdnW2ldLmFnZ2Nv bnRleHQpOworCQlmb3IgKGkgPSAwOyBpIDwgd2luc3RhdGUtPm51bWFnZ3M7IGkrKykKKwkJewor CQkJaWYgKHdpbnN0YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCAhPSB3aW5zdGF0ZS0+YWdnY29u dGV4dCkKKwkJCQlNZW1vcnlDb250ZXh0UmVzZXRBbmREZWxldGVDaGlsZHJlbih3aW5zdGF0ZS0+ cGVyYWdnW2ldLmFnZ2NvbnRleHQpOworCQl9CiAJfQogCiAJaWYgKHdpbnN0YXRlLT5idWZmZXIp CkBAIC0yNDUxLDYgKzI0NTYsOCBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyUGxhbiA9IG91dGVyUGxh bihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZSh3aW5zdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQ bGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJcmV0dXJuIHdpbnN0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIHNvdXJjZSB0dXBsZSB0 eXBlICh3aGljaCBpcyBhbHNvIHRoZSB0dXBsZSB0eXBlIHRoYXQgd2UnbGwKQEAgLTI2NzksMTEg KzI2ODYsMTYgQEAgRXhlY0VuZFdpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSkKIAogCXJl bGVhc2VfcGFydGl0aW9uKG5vZGUpOwogCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2Nh blR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+Zmlyc3RfcGFydF9zbG90KTsKLQlF eGVjQ2xlYXJUdXBsZShub2RlLT5hZ2dfcm93X3Nsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUt PnRlbXBfc2xvdF8xKTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT50ZW1wX3Nsb3RfMik7CisJaWYg KG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNz X1NjYW5UdXBsZVNsb3QpOworCWlmIChub2RlLT5maXJzdF9wYXJ0X3Nsb3QpCisJCUV4ZWNDbGVh clR1cGxlKG5vZGUtPmZpcnN0X3BhcnRfc2xvdCk7CisJaWYgKG5vZGUtPmFnZ19yb3dfc2xvdCkK KwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+YWdnX3Jvd19zbG90KTsKKwlpZiAobm9kZS0+dGVtcF9z bG90XzEpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnRlbXBfc2xvdF8xKTsKKwlpZiAobm9kZS0+ dGVtcF9zbG90XzIpCisJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnRlbXBfc2xvdF8yKTsKIAlpZiAo bm9kZS0+ZnJhbWVoZWFkX3Nsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmZyYW1laGVhZF9z bG90KTsKIAlpZiAobm9kZS0+ZnJhbWV0YWlsX3Nsb3QpCkBAIC0yNjk2LDE2ICsyNzA4LDIzIEBA IEV4ZWNFbmRXaW5kb3dBZ2coV2luZG93QWdnU3RhdGUgKm5vZGUpCiAJbm9kZS0+c3MucHMucHNf RXhwckNvbnRleHQgPSBub2RlLT50bXBjb250ZXh0OwogCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5v ZGUtPnNzLnBzKTsKIAotCWZvciAoaSA9IDA7IGkgPCBub2RlLT5udW1hZ2dzOyBpKyspCisJaWYg KG5vZGUtPnBlcmFnZykKIAl7Ci0JCWlmIChub2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCAhPSBu b2RlLT5hZ2djb250ZXh0KQotCQkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT5wZXJhZ2dbaV0u YWdnY29udGV4dCk7CisJCWZvciAoaSA9IDA7IGkgPCBub2RlLT5udW1hZ2dzOyBpKyspCisJCXsK KwkJCWlmIChub2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCAhPSBub2RlLT5hZ2djb250ZXh0KQor CQkJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+cGVyYWdnW2ldLmFnZ2NvbnRleHQpOworCQl9 CiAJfQotCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+cGFydGNvbnRleHQpOwotCU1lbW9yeUNv bnRleHREZWxldGUobm9kZS0+YWdnY29udGV4dCk7CisJaWYgKG5vZGUtPnBhcnRjb250ZXh0KQor CQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnBhcnRjb250ZXh0KTsKKwlpZiAobm9kZS0+YWdn Y29udGV4dCkKKwkJTWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT5hZ2djb250ZXh0KTsKIAotCXBm cmVlKG5vZGUtPnBlcmZ1bmMpOwotCXBmcmVlKG5vZGUtPnBlcmFnZyk7CisJaWYgKG5vZGUtPnBl cmZ1bmMpCisJCXBmcmVlKG5vZGUtPnBlcmZ1bmMpOworCWlmIChub2RlLT5wZXJhZ2cpCisJCXBm cmVlKG5vZGUtPnBlcmFnZyk7CiAKIAlvdXRlclBsYW4gPSBvdXRlclBsYW5TdGF0ZShub2RlKTsK IAlFeGVjRW5kTm9kZShvdXRlclBsYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVdvcmt0YWJsZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXb3JrdGFi bGVzY2FuLmMKaW5kZXggMGMxMzQ0ODIzNi4uZDcwYzZhZmRlMyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVdvcmt0YWJsZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV29ya3RhYmxlc2Nhbi5jCkBAIC0yMDAsNyArMjAwLDggQEAgRXhlY0VuZFdvcmtU YWJsZVNjYW4oV29ya1RhYmxlU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlmIChub2RlLT5zcy5w cy5wc19SZXN1bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jl c3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xv dCk7CisJaWYgKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpCisJCUV4ZWNDbGVhclR1cGxlKG5v ZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmlu ZGV4IGUzYTE3MGMzOGIuLjI2YTllYTM0MmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC03MSw3ICs3MSw3 IEBAIHN0YXRpYyBpbnQJX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBT UElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIHN0YXRpYyBQYXJhbUxpc3RJbmZvIF9TUElfY29u dmVydF9wYXJhbXMoaW50IG5hcmdzLCBPaWQgKmFyZ3R5cGVzLAogCQkJCQkJCQkJCSBEYXR1bSAq VmFsdWVzLCBjb25zdCBjaGFyICpOdWxscyk7CiAKLXN0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVl cnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCk7Citz dGF0aWMgaW50CV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCB1aW50NjQgdGNvdW50 KTsKIAogc3RhdGljIHZvaWQgX1NQSV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogCkBAIC0x NjIzLDYgKzE2MjMsNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFt ZSwgU1BJUGxhblB0ciBwbGFuLAogCV9TUElfY3VycmVudC0+cHJvY2Vzc2VkID0gMDsKIAlfU1BJ X2N1cnJlbnQtPnR1cHRhYmxlID0gTlVMTDsKIAorcmVwbGFuOgogCS8qIENyZWF0ZSB0aGUgcG9y dGFsICovCiAJaWYgKG5hbWUgPT0gTlVMTCB8fCBuYW1lWzBdID09ICdcMCcpCiAJewpAQCAtMTc2 Niw3ICsxNzY3LDEwIEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1l LCBTUElQbGFuUHRyIHBsYW4sCiAJfQogCiAJLyoKLQkgKiBTdGFydCBwb3J0YWwgZXhlY3V0aW9u LgorCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uICBJZiB0aGUgcG9ydGFsIGNvbnRhaW5zIGEg Y2FjaGVkIHBsYW4sIGl0IG11c3QKKwkgKiBiZSByZWNyZWF0ZWQgaWYgcG9ydGFsLT5wbGFuX3Zh bGlkIGlzIGZhbHNlIHdoaWNoIHRlbGxzIHRoYXQgdGhlIGNhY2hlZAorCSAqIHBsYW4gd2FzIGZv dW5kIHRvIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCB3aGVuIGluaXRpYWxpemluZyBvbmUgb2YgdGhl CisJICogcGxhbiB0cmVlcyBjb250YWluZWQgaW4gaXQuCiAJICovCiAJUG9ydGFsU3RhcnQocG9y dGFsLCBwYXJhbUxJLCAwLCBzbmFwc2hvdCk7CiAKQEAgLTE3NzUsNiArMTc3OSwxMiBAQCBTUElf Y3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAog CS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVycm9yX2NvbnRleHRfc3RhY2sg PSBzcGllcnJjb250ZXh0LnByZXZpb3VzOwogCisJaWYgKCFwb3J0YWwtPnBsYW5fdmFsaWQpCisJ eworCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOworCQlnb3RvIHJlcGxhbjsKKwl9CisKIAkv KiBQb3AgdGhlIFNQSSBzdGFjayAqLwogCV9TUElfZW5kX2NhbGwodHJ1ZSk7CiAKQEAgLTI1NTIs NiArMjU2Miw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJ RXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCSAqIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNy ZW1lbnQgcGxhbiByZWZjb3VudC4gIElmIGl0J3MgYSBzYXZlZAogCQkgKiBwbGFuLCB0aGUgcmVm Y291bnQgbXVzdCBiZSBiYWNrZWQgYnkgdGhlIHBsYW5fb3duZXIuCiAJCSAqLworcmVwbGFuOgog CQljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgb3B0aW9ucy0+cGFyYW1zLAogCQkJ CQkJCSAgcGxhbl9vd25lciwgX1NQSV9jdXJyZW50LT5xdWVyeUVudik7CiAKQEAgLTI2NjEsNiAr MjY3Miw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhl Y3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQl7CiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAJCQkJ U25hcHNob3QJc25hcDsKKwkJCQlpbnQJCQllZmxhZ3M7CiAKIAkJCQlpZiAoQWN0aXZlU25hcHNo b3RTZXQoKSkKIAkJCQkJc25hcCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CkBAIC0yNjY4LDE0ICsy NjgwLDM2IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhl Y3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJCXNuYXAgPSBJbnZhbGlkU25hcHNob3Q7CiAKIAkJ CQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJCWNwbGFuLAogCQkJCQkJ CQkJCXBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkJCQlzbmFwLCBjcm9zc2NoZWNr X3NuYXBzaG90LAogCQkJCQkJCQkJCWRlc3QsCiAJCQkJCQkJCQkJb3B0aW9ucy0+cGFyYW1zLAog CQkJCQkJCQkJCV9TUElfY3VycmVudC0+cXVlcnlFbnYsCiAJCQkJCQkJCQkJMCk7Ci0JCQkJcmVz ID0gX1NQSV9wcXVlcnkocWRlc2MsIGZpcmVfdHJpZ2dlcnMsCi0JCQkJCQkJCSAgY2FuU2V0VGFn ID8gb3B0aW9ucy0+dGNvdW50IDogMCk7CisKKwkJCQkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlv bnMgKi8KKwkJCQlpZiAoZmlyZV90cmlnZ2VycykKKwkJCQkJZWZsYWdzID0gMDsJCQkJLyogZGVm YXVsdCBydW4tdG8tY29tcGxldGlvbiBmbGFncyAqLworCQkJCWVsc2UKKwkJCQkJZWZsYWdzID0g RVhFQ19GTEFHX1NLSVBfVFJJR0dFUlM7CisKKwkJCQkvKiBUYWtlIGxvY2tzIGlmIHVzaW5nIGEg Q2FjaGVkUGxhbiAqLworCQkJCWlmIChxZGVzYy0+Y3BsYW4pCisJCQkJCWVmbGFncyB8PSBFWEVD X0ZMQUdfR0VUX0xPQ0tTOworCisJCQkJRXhlY3V0b3JTdGFydChxZGVzYywgZWZsYWdzKTsKKwkJ CQlpZiAoIXFkZXNjLT5wbGFuX3ZhbGlkKQorCQkJCXsKKwkJCQkJRXhlY3V0b3JGaW5pc2gocWRl c2MpOworCQkJCQlFeGVjdXRvckVuZChxZGVzYyk7CisJCQkJCUZyZWVRdWVyeURlc2MocWRlc2Mp OworCQkJCQlBc3NlcnQoY3BsYW4pOworCQkJCQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxhbiwgcGxh bl9vd25lcik7CisJCQkJCWdvdG8gcmVwbGFuOworCQkJCX0KKworCQkJCXJlcyA9IF9TUElfcHF1 ZXJ5KHFkZXNjLCBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKIAkJCQlGcmVlUXVl cnlEZXNjKHFkZXNjKTsKIAkJCX0KIAkJCWVsc2UKQEAgLTI4NTAsMTAgKzI4ODQsOSBAQCBfU1BJ X2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIH0KIAogc3RhdGljIGlu dAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2Vycywg dWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCB1aW50NjQg dGNvdW50KQogewogCWludAkJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3BlcmF0aW9uOwotCWlu dAkJCWVmbGFnczsKIAlpbnQJCQlyZXM7CiAKIAlzd2l0Y2ggKG9wZXJhdGlvbikKQEAgLTI4OTcs MTQgKzI5MzAsNiBAQCBfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJl X3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQogCQlSZXNldFVzYWdlKCk7CiAjZW5kaWYKIAotCS8q IFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLwotCWlmIChmaXJlX3RyaWdnZXJzKQotCQllZmxh Z3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCi0JZWxzZQot CQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsKLQotCUV4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBlZmxhZ3MpOwotCiAJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRp cmVjdGlvbiwgdGNvdW50LCB0cnVlKTsKIAogCV9TUElfY3VycmVudC0+cHJvY2Vzc2VkID0gcXVl cnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25v ZGVzL291dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IGJhMDBi OTkyNDkuLjk1NTI4NjUxM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtNTEzLDYgKzUxMyw3IEBA IF9vdXRSYW5nZVRibEVudHJ5KFN0cmluZ0luZm8gc3RyLCBjb25zdCBSYW5nZVRibEVudHJ5ICpu b2RlKQogCQkJV1JJVEVfQk9PTF9GSUVMRChzZWN1cml0eV9iYXJyaWVyKTsKIAkJCS8qIHdlIHJl LXVzZSB0aGVzZSBSRUxBVElPTiBmaWVsZHMsIHRvbzogKi8KIAkJCVdSSVRFX09JRF9GSUVMRChy ZWxpZCk7CisJCQlXUklURV9DSEFSX0ZJRUxEKHJlbGtpbmQpOwogCQkJV1JJVEVfSU5UX0ZJRUxE KHJlbGxvY2ttb2RlKTsKIAkJCVdSSVRFX1VJTlRfRklFTEQocGVybWluZm9pbmRleCk7CiAJCQli cmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggNTk3ZTViM2VhOC4uYTEzNmFlMWQ2MCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTUwMyw2ICs1MDMsNyBAQCBfcmVhZFJhbmdlVGJsRW50cnko dm9pZCkKIAkJCVJFQURfQk9PTF9GSUVMRChzZWN1cml0eV9iYXJyaWVyKTsKIAkJCS8qIHdlIHJl LXVzZSB0aGVzZSBSRUxBVElPTiBmaWVsZHMsIHRvbzogKi8KIAkJCVJFQURfT0lEX0ZJRUxEKHJl bGlkKTsKKwkJCVJFQURfQ0hBUl9GSUVMRChyZWxraW5kKTsKIAkJCVJFQURfSU5UX0ZJRUxEKHJl bGxvY2ttb2RlKTsKIAkJCVJFQURfVUlOVF9GSUVMRChwZXJtaW5mb2luZGV4KTsKIAkJCWJyZWFr OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDYyYjNlYzk2Y2MuLjVmM2Zm ZDk4YWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTUyNyw2ICs1Mjcs NyBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3Ry aW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQtPnBhcnRQcnVuZUluZm9zID0gZ2xvYi0+ cGFydFBydW5lSW5mb3M7CiAJcmVzdWx0LT5ydGFibGUgPSBnbG9iLT5maW5hbHJ0YWJsZTsKIAly ZXN1bHQtPnBlcm1JbmZvcyA9IGdsb2ItPmZpbmFscnRlcGVybWluZm9zOworCXJlc3VsdC0+dmll d1JlbGF0aW9ucyA9IGdsb2ItPnZpZXdSZWxhdGlvbnM7CiAJcmVzdWx0LT5yZXN1bHRSZWxhdGlv bnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlvbnM7CiAJcmVzdWx0LT5hcHBlbmRSZWxhdGlvbnMgPSBn bG9iLT5hcHBlbmRSZWxhdGlvbnM7CiAJcmVzdWx0LT5zdWJwbGFucyA9IGdsb2ItPnN1YnBsYW5z OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDVjYzgzNjZhZjYuLmYxMzI0 MGJmMzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTE2LDYgKzE2LDcg QEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBl LmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1 bmNzLmgiCkBAIC02MDQsNiArNjA1LDEwIEBAIGFkZF9ydGVfdG9fZmxhdF9ydGFibGUoUGxhbm5l ckdsb2JhbCAqZ2xvYiwgTGlzdCAqcnRlcGVybWluZm9zLAogCQkobmV3cnRlLT5ydGVraW5kID09 IFJURV9TVUJRVUVSWSAmJiBPaWRJc1ZhbGlkKG5ld3J0ZS0+cmVsaWQpKSkKIAkJZ2xvYi0+cmVs YXRpb25PaWRzID0gbGFwcGVuZF9vaWQoZ2xvYi0+cmVsYXRpb25PaWRzLCBuZXdydGUtPnJlbGlk KTsKIAorCWlmIChuZXdydGUtPnJlbGtpbmQgPT0gUkVMS0lORF9WSUVXKQorCQlnbG9iLT52aWV3 UmVsYXRpb25zID0gbGFwcGVuZF9pbnQoZ2xvYi0+dmlld1JlbGF0aW9ucywKKwkJCQkJCQkJCQkg IGxpc3RfbGVuZ3RoKGdsb2ItPmZpbmFscnRhYmxlKSk7CisKIAkvKgogCSAqIEFkZCBhIGNvcHkg b2YgdGhlIFJURVBlcm1pc3Npb25JbmZvLCBpZiBhbnksIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBS VEUKIAkgKiB0byB0aGUgZmxhdHRlbmVkIGdsb2JhbCBsaXN0LgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdy aXRlSGFuZGxlci5jCmluZGV4IDk4MGRjMTgxNmYuLjE2MzFjOGI5OTMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXdy aXRlL3Jld3JpdGVIYW5kbGVyLmMKQEAgLTE4NDksMTEgKzE4NDksMTAgQEAgQXBwbHlSZXRyaWV2 ZVJ1bGUoUXVlcnkgKnBhcnNldHJlZSwKIAogCS8qCiAJICogQ2xlYXIgZmllbGRzIHRoYXQgc2hv dWxkIG5vdCBiZSBzZXQgaW4gYSBzdWJxdWVyeSBSVEUuICBOb3RlIHRoYXQgd2UKLQkgKiBsZWF2 ZSB0aGUgcmVsaWQsIHJlbGxvY2ttb2RlLCBhbmQgcGVybWluZm9pbmRleCBmaWVsZHMgc2V0LCBz byB0aGF0IHRoZQotCSAqIHZpZXcgcmVsYXRpb24gY2FuIGJlIGFwcHJvcHJpYXRlbHkgbG9ja2Vk IGJlZm9yZSBleGVjdXRpb24gYW5kIGl0cwotCSAqIHBlcm1pc3Npb25zIGNoZWNrZWQuCisJICog bGVhdmUgdGhlIHJlbGlkLCByZWxraW5kLCByZWxsb2NrbW9kZSwgYW5kIHBlcm1pbmZvaW5kZXgg ZmllbGRzIHNldCwKKwkgKiBzbyB0aGF0IHRoZSB2aWV3IHJlbGF0aW9uIGNhbiBiZSBhcHByb3By aWF0ZWx5IGxvY2tlZCBiZWZvcmUgZXhlY3V0aW9uCisJICogYW5kIGl0cyBwZXJtaXNzaW9ucyBj aGVja2VkLgogCSAqLwotCXJ0ZS0+cmVsa2luZCA9IDA7CiAJcnRlLT50YWJsZXNhbXBsZSA9IE5V TEw7CiAJcnRlLT5pbmggPSBmYWxzZTsJCQkvKiBtdXN0IG5vdCBiZSBzZXQgZm9yIGEgc3VicXVl cnkgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKaW5kZXggZWU5Yjg5YTY3Mi4uYzgwN2U5Y2Rj YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2lu Y2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAKIAog LyoKQEAgLTM2NCw2ICszNjUsNTAgQEAgQ2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUoUmVsYXRpb24g cmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLCBib29sIG9yc3Ryb25nZXIpCiAJcmV0dXJuIGZh bHNlOwogfQogCisvKgorICoJCUNoZWNrUmVsTG9ja2VkQnlNZQorICoKKyAqIFJldHVybnMgdHJ1 ZSBpZiBjdXJyZW50IHRyYW5zYWN0aW9uIGhvbGRzIGEgbG9jayBvbiB0aGUgZ2l2ZW4gcmVsYXRp b24gb2YKKyAqIG1vZGUgJ2xvY2ttb2RlJy4gIElmICdvcnN0cm9uZ2VyJyBpcyB0cnVlLCBhIHN0 cm9uZ2VyIGxvY2ttb2RlIGlzIGFsc28gT0suCisgKiAoIlN0cm9uZ2VyIiBpcyBkZWZpbmVkIGFz ICJudW1lcmljYWxseSBoaWdoZXIiLCB3aGljaCBpcyBhIGJpdAorICogc2VtYW50aWNhbGx5IGR1 YmlvdXMgYnV0IGlzIE9LIGZvciB0aGUgcHVycG9zZXMgd2UgdXNlIHRoaXMgZm9yLikKKyAqLwor Ym9vbAorQ2hlY2tSZWxMb2NrZWRCeU1lKE9pZCByZWxpZCwgTE9DS01PREUgbG9ja21vZGUsIGJv b2wgb3JzdHJvbmdlcikKK3sKKwlPaWQJCQlkYklkID0gZ2V0X3JlbF9yZWxpc3NoYXJlZChyZWxp ZCkgPyBJbnZhbGlkT2lkIDogTXlEYXRhYmFzZUlkOworCUxPQ0tUQUcJCXRhZzsKKworCVNFVF9M T0NLVEFHX1JFTEFUSU9OKHRhZywgZGJJZCwgcmVsaWQpOworCisJaWYgKExvY2tIZWxkQnlNZSgm dGFnLCBsb2NrbW9kZSkpCisJCXJldHVybiB0cnVlOworCisJaWYgKG9yc3Ryb25nZXIpCisJewor CQlMT0NLTU9ERQlzbG9ja21vZGU7CisKKwkJZm9yIChzbG9ja21vZGUgPSBsb2NrbW9kZSArIDE7 CisJCQkgc2xvY2ttb2RlIDw9IE1heExvY2tNb2RlOworCQkJIHNsb2NrbW9kZSsrKQorCQl7CisJ CQlpZiAoTG9ja0hlbGRCeU1lKCZ0YWcsIHNsb2NrbW9kZSkpCisJCQl7CisjaWZkZWYgTk9UX1VT RUQKKwkJCQkvKiBTb21ldGltZXMgdGhpcyBtaWdodCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBw dXJwb3NlcyAqLworCQkJCWVsb2coV0FSTklORywgImxvY2sgbW9kZSAlcyBzdWJzdGl0dXRlZCBm b3IgJXMgb24gcmVsYXRpb24gJXMiLAorCQkJCQkgR2V0TG9ja21vZGVOYW1lKHRhZy5sb2NrdGFn X2xvY2ttZXRob2RpZCwgc2xvY2ttb2RlKSwKKwkJCQkJIEdldExvY2ttb2RlTmFtZSh0YWcubG9j a3RhZ19sb2NrbWV0aG9kaWQsIGxvY2ttb2RlKSwKKwkJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbGF0aW9uKSk7CisjZW5kaWYKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCX0K KworCXJldHVybiBmYWxzZTsKK30KKwogLyoKICAqCQlMb2NrSGFzV2FpdGVyc1JlbGF0aW9uCiAg KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jCmluZGV4IGNhYjcwOWIwN2IuLjZkMGVhMDc4MDEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMKQEAgLTExOTksNiArMTE5OSw3IEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIg KnF1ZXJ5X3N0cmluZykKIAkJICogU3RhcnQgdGhlIHBvcnRhbC4gIE5vIHBhcmFtZXRlcnMgaGVy ZS4KIAkJICovCiAJCVBvcnRhbFN0YXJ0KHBvcnRhbCwgTlVMTCwgMCwgSW52YWxpZFNuYXBzaG90 KTsKKwkJQXNzZXJ0KHBvcnRhbC0+cGxhbl92YWxpZCk7CiAKIAkJLyoKIAkJICogU2VsZWN0IHRo ZSBhcHByb3ByaWF0ZSBvdXRwdXQgZm9ybWF0OiB0ZXh0IHVubGVzcyB3ZSBhcmUgZG9pbmcgYQpA QCAtMTcwMyw2ICsxNzA0LDcgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9t ZXNzYWdlKQogCQkJCQkJImNvbW1hbmRzIGlnbm9yZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0aW9u IGJsb2NrIiksCiAJCQkJIGVycmRldGFpbF9hYm9ydCgpKSk7CiAKK3JlcGxhbjoKIAkvKgogCSAq IENyZWF0ZSB0aGUgcG9ydGFsLiAgQWxsb3cgc2lsZW50IHJlcGxhY2VtZW50IG9mIGFuIGV4aXN0 aW5nIHBvcnRhbCBvbmx5CiAJICogaWYgdGhlIHVubmFtZWQgcG9ydGFsIGlzIHNwZWNpZmllZC4K QEAgLTE5OTQsMTAgKzE5OTYsMTkgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1 dF9tZXNzYWdlKQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyoKLQkgKiBBbmQgd2UncmUg cmVhZHkgdG8gc3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4KKwkgKiBTdGFydCBwb3J0YWwgZXhlY3V0 aW9uLiAgSWYgdGhlIHBvcnRhbCBjb250YWlucyBhIGNhY2hlZCBwbGFuLCBpdCBtdXN0CisJICog YmUgcmVjcmVhdGVkIGlmIHBvcnRhbC0+cGxhbl92YWxpZCBpcyBmYWxzZSB3aGljaCB0ZWxscyB0 aGF0IHRoZSBjYWNoZWQKKwkgKiBwbGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0 ZWQgd2hlbiBpbml0aWFsaXppbmcgb25lIG9mIHRoZQorCSAqIHBsYW4gdHJlZXMgY29udGFpbmVk IGluIGl0LgogCSAqLwogCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1zLCAwLCBJbnZhbGlkU25h cHNob3QpOwogCisJaWYgKCFwb3J0YWwtPnBsYW5fdmFsaWQpCisJeworCQlQb3J0YWxEcm9wKHBv cnRhbCwgZmFsc2UpOworCQlnb3RvIHJlcGxhbjsKKwl9CisKIAkvKgogCSAqIEFwcGx5IHRoZSBy ZXN1bHQgZm9ybWF0IHJlcXVlc3RzIHRvIHRoZSBwb3J0YWwuCiAJICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwppbmRl eCA1ZjAyNDhhY2M1Li5jOTNhOTUwZDdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTE5LDYgKzE5LDcgQEAK IAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJlcGFyZS5o IgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHN0 b3JlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ190cmFj ZS5oIgpAQCAtMzUsMTIgKzM2LDYgQEAKIFBvcnRhbAkJQWN0aXZlUG9ydGFsID0gTlVMTDsKIAog Ci1zdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCi0JCQkJCQkgY29u c3QgY2hhciAqc291cmNlVGV4dCwKLQkJCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKLQkJCQkJ CSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKLQkJCQkJCSBEZXN0UmVjZWl2ZXIgKmRlc3Qs Ci0JCQkJCQkgUXVlcnlDb21wbGV0aW9uICpxYyk7CiBzdGF0aWMgdm9pZCBGaWxsUG9ydGFsU3Rv cmUoUG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcExldmVsKTsKIHN0YXRpYyB1aW50NjQgUnVuRnJv bVN0b3JlKFBvcnRhbCBwb3J0YWwsIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLCB1aW50NjQgY291 bnQsCiAJCQkJCQkgICBEZXN0UmVjZWl2ZXIgKmRlc3QpOwpAQCAtNjUsNiArNjAsNyBAQCBzdGF0 aWMgdm9pZCBEb1BvcnRhbFJld2luZChQb3J0YWwgcG9ydGFsKTsKICAqLwogUXVlcnlEZXNjICoK IENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJQ2FjaGVkUGxh biAqY3BsYW4sCiAJCQkJY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQlTbmFwc2hvdCBzbmFw c2hvdCwKIAkJCQlTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApAQCAtNzcsNiArNzMsNyBA QCBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAogCiAJcWQtPm9wZXJh dGlvbiA9IHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZTsJLyogb3BlcmF0aW9uICovCiAJcWQtPnBs YW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CS8qIHBsYW4gKi8KKwlxZC0+Y3BsYW4gPSBjcGxhbjsJ CQkJLyogQ2FjaGVkUGxhbiwgaWYgcGxhbiBpcyBmcm9tIG9uZSAqLwogCXFkLT5zb3VyY2VUZXh0 ID0gc291cmNlVGV4dDsJLyogcXVlcnkgdGV4dCAqLwogCXFkLT5zbmFwc2hvdCA9IFJlZ2lzdGVy U25hcHNob3Qoc25hcHNob3QpOwkvKiBzbmFwc2hvdCAqLwogCS8qIFJJIGNoZWNrIHNuYXBzaG90 ICovCkBAIC0xMTYsODYgKzExMyw2IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykK IH0KIAogCi0vKgotICogUHJvY2Vzc1F1ZXJ5Ci0gKgkJRXhlY3V0ZSBhIHNpbmdsZSBwbGFubmFi bGUgcXVlcnkgd2l0aGluIGEgUE9SVEFMX01VTFRJX1FVRVJZLAotICoJCVBPUlRBTF9PTkVfUkVU VVJOSU5HLCBvciBQT1JUQUxfT05FX01PRF9XSVRIIHBvcnRhbAotICoKLSAqCXBsYW46IHRoZSBw bGFuIHRyZWUgZm9yIHRoZSBxdWVyeQotICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9m IHRoZSBxdWVyeQotICoJcGFyYW1zOiBhbnkgcGFyYW1ldGVycyBuZWVkZWQKLSAqCWRlc3Q6IHdo ZXJlIHRvIHNlbmQgcmVzdWx0cwotICoJcWM6IHdoZXJlIHRvIHN0b3JlIHRoZSBjb21tYW5kIGNv bXBsZXRpb24gc3RhdHVzIGRhdGEuCi0gKgotICogcWMgbWF5IGJlIE5VTEwgaWYgY2FsbGVyIGRv ZXNuJ3Qgd2FudCBhIHN0YXR1cyBzdHJpbmcuCi0gKgotICogTXVzdCBiZSBjYWxsZWQgaW4gYSBt ZW1vcnkgY29udGV4dCB0aGF0IHdpbGwgYmUgcmVzZXQgb3IgZGVsZXRlZCBvbgotICogZXJyb3I7 IG90aGVyd2lzZSB0aGUgZXhlY3V0b3IncyBtZW1vcnkgdXNhZ2Ugd2lsbCBiZSBsZWFrZWQuCi0g Ki8KLXN0YXRpYyB2b2lkCi1Qcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCi0JCQkgY29u c3QgY2hhciAqc291cmNlVGV4dCwKLQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKLQkJCSBRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudiwKLQkJCSBEZXN0UmVjZWl2ZXIgKmRlc3QsCi0JCQkgUXVl cnlDb21wbGV0aW9uICpxYykKLXsKLQlRdWVyeURlc2MgICpxdWVyeURlc2M7Ci0KLQkvKgotCSAq IENyZWF0ZSB0aGUgUXVlcnlEZXNjIG9iamVjdAotCSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhwbGFuLCBzb3VyY2VUZXh0LAotCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJ bnZhbGlkU25hcHNob3QsCi0JCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwotCi0J LyoKLQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0 aW9uCi0JICovCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOwotCi0JLyoKLQkgKiBSdW4g dGhlIHBsYW4gdG8gY29tcGxldGlvbi4KLQkgKi8KLQlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZv cndhcmRTY2FuRGlyZWN0aW9uLCAwTCwgdHJ1ZSk7Ci0KLQkvKgotCSAqIEJ1aWxkIGNvbW1hbmQg Y29tcGxldGlvbiBzdGF0dXMgZGF0YSwgaWYgY2FsbGVyIHdhbnRzIG9uZS4KLQkgKi8KLQlpZiAo cWMpCi0JewotCQlzd2l0Y2ggKHF1ZXJ5RGVzYy0+b3BlcmF0aW9uKQotCQl7Ci0JCQljYXNlIENN RF9TRUxFQ1Q6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfU0VMRUNULCBxdWVy eURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX0lO U0VSVDoKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19JTlNFUlQsIHF1ZXJ5RGVz Yy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfVVBEQVRF OgotCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1VQREFURSwgcXVlcnlEZXNjLT5l c3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIENNRF9ERUxFVEU6Ci0J CQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfREVMRVRFLCBxdWVyeURlc2MtPmVzdGF0 ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX01FUkdFOgotCQkJCVNl dFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX01FUkdFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNf cHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJU2V0UXVlcnlDb21wbGV0 aW9uKHFjLCBDTURUQUdfVU5LTk9XTiwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7 Ci0JCQkJYnJlYWs7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIE5vdywgd2UgY2xvc2UgZG93biBhbGwg dGhlIHNjYW5zIGFuZCBmcmVlIGFsbG9jYXRlZCByZXNvdXJjZXMuCi0JICovCi0JRXhlY3V0b3JG aW5pc2gocXVlcnlEZXNjKTsKLQlFeGVjdXRvckVuZChxdWVyeURlc2MpOwotCi0JRnJlZVF1ZXJ5 RGVzYyhxdWVyeURlc2MpOwotfQotCiAvKgogICogQ2hvb3NlUG9ydGFsU3RyYXRlZ3kKICAqCQlT ZWxlY3QgcG9ydGFsIGV4ZWN1dGlvbiBzdHJhdGVneSBnaXZlbiB0aGUgaW50ZW5kZWQgc3RhdGVt ZW50IGxpc3QuCkBAIC00MjcsNyArMzQ0LDggQEAgRmV0Y2hTdGF0ZW1lbnRUYXJnZXRMaXN0KE5v ZGUgKnN0bXQpCiAgKiB0byBiZSB1c2VkIGZvciBjdXJzb3JzKS4KICAqCiAgKiBPbiByZXR1cm4s IHBvcnRhbCBpcyByZWFkeSB0byBhY2NlcHQgUG9ydGFsUnVuKCkgY2FsbHMsIGFuZCB0aGUgcmVz dWx0Ci0gKiB0dXBkZXNjIChpZiBhbnkpIGlzIGtub3duLgorICogdHVwZGVzYyAoaWYgYW55KSBp cyBrbm93biwgdW5sZXNzIHBvcnRhbC0+cGxhbl92YWxpZCBpcyBzZXQgdG8gZmFsc2UsIGluCisg KiB3aGljaCBjYXNlLCB0aGUgY2FsbGVyIG11c3QgcmV0cnkgYWZ0ZXIgZ2VuZXJhdGluZyBhIG5l dyBDYWNoZWRQbGFuLgogICovCiB2b2lkCiBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJh bUxpc3RJbmZvIHBhcmFtcywKQEAgLTQzNSw3ICszNTMsNiBAQCBQb3J0YWxTdGFydChQb3J0YWwg cG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIHsKIAlQb3J0YWwJCXNhdmVBY3RpdmVQb3J0 YWw7CiAJUmVzb3VyY2VPd25lciBzYXZlUmVzb3VyY2VPd25lcjsKLQlNZW1vcnlDb250ZXh0IHNh dmVQb3J0YWxDb250ZXh0OwogCU1lbW9yeUNvbnRleHQgb2xkQ29udGV4dDsKIAlRdWVyeURlc2Mg ICpxdWVyeURlc2M7CiAJaW50CQkJbXllZmxhZ3M7CkBAIC00NDgsMTUgKzM2NSwxMyBAQCBQb3J0 YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkgKi8KIAlzYXZl QWN0aXZlUG9ydGFsID0gQWN0aXZlUG9ydGFsOwogCXNhdmVSZXNvdXJjZU93bmVyID0gQ3VycmVu dFJlc291cmNlT3duZXI7Ci0Jc2F2ZVBvcnRhbENvbnRleHQgPSBQb3J0YWxDb250ZXh0OwogCVBH X1RSWSgpOwogCXsKIAkJQWN0aXZlUG9ydGFsID0gcG9ydGFsOwogCQlpZiAocG9ydGFsLT5yZXNv d25lcikKIAkJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gcG9ydGFsLT5yZXNvd25lcjsKLQkJUG9y dGFsQ29udGV4dCA9IHBvcnRhbC0+cG9ydGFsQ29udGV4dDsKIAotCQlvbGRDb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKFBvcnRhbENvbnRleHQpOworCQlvbGRDb250ZXh0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKHBvcnRhbC0+cXVlcnlDb250ZXh0KTsKIAogCQkvKiBNdXN0IHJlbWVt YmVyIHBvcnRhbCBwYXJhbSBsaXN0LCBpZiBhbnkgKi8KIAkJcG9ydGFsLT5wb3J0YWxQYXJhbXMg PSBwYXJhbXM7CkBAIC00NzIsNiArMzg3LDggQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwg UGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCXN3aXRjaCAocG9ydGFsLT5zdHJhdGVneSkKIAkJewog CQkJY2FzZSBQT1JUQUxfT05FX1NFTEVDVDoKKwkJCWNhc2UgUE9SVEFMX09ORV9SRVRVUk5JTkc6 CisJCQljYXNlIFBPUlRBTF9PTkVfTU9EX1dJVEg6CiAKIAkJCQkvKiBNdXN0IHNldCBzbmFwc2hv dCBiZWZvcmUgc3RhcnRpbmcgZXhlY3V0b3IuICovCiAJCQkJaWYgKHNuYXBzaG90KQpAQCAtNDkz LDYgKzQxMCw3IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFy YW1zLAogCQkJCSAqIHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlx dWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9y dGFsLT5zdG10cyksCisJCQkJCQkJCQkJCXBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJCQkJCXBvcnRh bC0+c291cmNlVGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJ CQkJSW52YWxpZFNuYXBzaG90LApAQCAtNTAxLDMwICs0MTksNTYgQEAgUG9ydGFsU3RhcnQoUG9y dGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkJCQkJCXBvcnRhbC0+cXVl cnlFbnYsCiAJCQkJCQkJCQkJCTApOwogCisJCQkJLyogUmVtZW1iZXIgZm9yIFBvcnRhbFJ1bk11 bHRpKCkuICovCisJCQkJaWYgKHBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9SRVRVUk5J TkcgfHwKKwkJCQkJcG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX01PRF9XSVRIKQorCQkJ CQlwb3J0YWwtPnFkZXNjcyA9IGxpc3RfbWFrZTEocXVlcnlEZXNjKTsKKwogCQkJCS8qCiAJCQkJ ICogSWYgaXQncyBhIHNjcm9sbGFibGUgY3Vyc29yLCBleGVjdXRvciBuZWVkcyB0byBzdXBwb3J0 CiAJCQkJICogUkVXSU5EIGFuZCBiYWNrd2FyZHMgc2NhbiwgYXMgd2VsbCBhcyB3aGF0ZXZlciB0 aGUgY2FsbGVyCiAJCQkJICogbWlnaHQndmUgYXNrZWQgZm9yLgogCQkJCSAqLwotCQkJCWlmIChw b3J0YWwtPmN1cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1NDUk9MTCkKKwkJCQlpZiAocG9ydGFs LT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1NFTEVDVCAmJgorCQkJCQkocG9ydGFsLT5jdXJzb3JP cHRpb25zICYgQ1VSU09SX09QVF9TQ1JPTEwpKQogCQkJCQlteWVmbGFncyA9IGVmbGFncyB8IEVY RUNfRkxBR19SRVdJTkQgfCBFWEVDX0ZMQUdfQkFDS1dBUkQ7CiAJCQkJZWxzZQogCQkJCQlteWVm bGFncyA9IGVmbGFnczsKIAorCQkJCS8qIFRha2UgbG9ja3MgaWYgdXNpbmcgYSBDYWNoZWRQbGFu ICovCisJCQkJaWYgKHF1ZXJ5RGVzYy0+Y3BsYW4pCisJCQkJCW15ZWZsYWdzIHw9IEVYRUNfRkxB R19HRVRfTE9DS1M7CisKIAkJCQkvKgotCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVw YXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KKwkJCQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8g cHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLiAgQQorCQkJCSAqIGNhY2hlZCBwbGFuIG1h eSBnZXQgaW52YWxpZGF0ZWQgYXMgd2UncmUgZG9pbmcgdGhhdC4KIAkJCQkgKi8KIAkJCQlFeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3MpOworCQkJCWlmICghcXVlcnlEZXNjLT5wbGFu X3ZhbGlkKQorCQkJCXsKKwkJCQkJQXNzZXJ0KHF1ZXJ5RGVzYy0+Y3BsYW4pOworCQkJCQlQb3J0 YWxRdWVyeUZpbmlzaChxdWVyeURlc2MpOworCQkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQkJ CQlwb3J0YWwtPnBsYW5fdmFsaWQgPSBmYWxzZTsKKwkJCQkJZ290byBlYXJseV9leGl0OworCQkJ CX0KIAogCQkJCS8qCi0JCQkJICogVGhpcyB0ZWxscyBQb3J0YWxDbGVhbnVwIHRvIHNodXQgZG93 biB0aGUgZXhlY3V0b3IKKwkJCQkgKiBUaGlzIHRlbGxzIFBvcnRhbENsZWFudXAgdG8gc2h1dCBk b3duIHRoZSBleGVjdXRvciwgdGhvdWdoCisJCQkJICogbm90IG5lZWRlZCBmb3IgcXVlcmllcyBo YW5kbGVkIGJ5IFBvcnRhbFJ1bk11bHRpKCkuCiAJCQkJICovCi0JCQkJcG9ydGFsLT5xdWVyeURl c2MgPSBxdWVyeURlc2M7CisJCQkJaWYgKHBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9T RUxFQ1QpCisJCQkJCXBvcnRhbC0+cXVlcnlEZXNjID0gcXVlcnlEZXNjOwogCiAJCQkJLyoKLQkJ CQkgKiBSZW1lbWJlciB0dXBsZSBkZXNjcmlwdG9yIChjb21wdXRlZCBieSBFeGVjdXRvclN0YXJ0 KQorCQkJCSAqIFJlbWVtYmVyIHR1cGxlIGRlc2NyaXB0b3IgKGNvbXB1dGVkIGJ5IEV4ZWN1dG9y U3RhcnQpLAorCQkJCSAqIHRob3VnaCBtYWtlIGl0IGluZGVwZW5kZW50IG9mIFF1ZXJ5RGVzYyBm b3IgcXVlcmllcyBoYW5kbGVkCisJCQkJICogYnkgUG9ydGFsUnVuTXVsdGkoKS4KIAkJCQkgKi8K LQkJCQlwb3J0YWwtPnR1cERlc2MgPSBxdWVyeURlc2MtPnR1cERlc2M7CisJCQkJaWYgKHBvcnRh bC0+c3RyYXRlZ3kgIT0gUE9SVEFMX09ORV9TRUxFQ1QpCisJCQkJCXBvcnRhbC0+dHVwRGVzYyA9 IENyZWF0ZVR1cGxlRGVzY0NvcHkocXVlcnlEZXNjLT50dXBEZXNjKTsKKwkJCQllbHNlCisJCQkJ CXBvcnRhbC0+dHVwRGVzYyA9IHF1ZXJ5RGVzYy0+dHVwRGVzYzsKIAogCQkJCS8qCiAJCQkJICog UmVzZXQgY3Vyc29yIHBvc2l0aW9uIGRhdGEgdG8gInN0YXJ0IG9mIHF1ZXJ5IgpAQCAtNTMyLDMz ICs0NzYsMTEgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJh bXMsCiAJCQkJcG9ydGFsLT5hdFN0YXJ0ID0gdHJ1ZTsKIAkJCQlwb3J0YWwtPmF0RW5kID0gZmFs c2U7CS8qIGFsbG93IGZldGNoZXMgKi8KIAkJCQlwb3J0YWwtPnBvcnRhbFBvcyA9IDA7CisJCQkJ cG9ydGFsLT5wbGFuX3ZhbGlkID0gdHJ1ZTsKIAogCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJ CQkJYnJlYWs7CiAKLQkJCWNhc2UgUE9SVEFMX09ORV9SRVRVUk5JTkc6Ci0JCQljYXNlIFBPUlRB TF9PTkVfTU9EX1dJVEg6Ci0KLQkJCQkvKgotCQkJCSAqIFdlIGRvbid0IHN0YXJ0IHRoZSBleGVj dXRvciB1bnRpbCB3ZSBhcmUgdG9sZCB0byBydW4gdGhlCi0JCQkJICogcG9ydGFsLiAgV2UgZG8g bmVlZCB0byBzZXQgdXAgdGhlIHJlc3VsdCB0dXBkZXNjLgotCQkJCSAqLwotCQkJCXsKLQkJCQkJ UGxhbm5lZFN0bXQgKnBzdG10OwotCi0JCQkJCXBzdG10ID0gUG9ydGFsR2V0UHJpbWFyeVN0bXQo cG9ydGFsKTsKLQkJCQkJcG9ydGFsLT50dXBEZXNjID0KLQkJCQkJCUV4ZWNDbGVhblR5cGVGcm9t VEwocHN0bXQtPnBsYW5UcmVlLT50YXJnZXRsaXN0KTsKLQkJCQl9Ci0KLQkJCQkvKgotCQkJCSAq IFJlc2V0IGN1cnNvciBwb3NpdGlvbiBkYXRhIHRvICJzdGFydCBvZiBxdWVyeSIKLQkJCQkgKi8K LQkJCQlwb3J0YWwtPmF0U3RhcnQgPSB0cnVlOwotCQkJCXBvcnRhbC0+YXRFbmQgPSBmYWxzZTsJ LyogYWxsb3cgZmV0Y2hlcyAqLwotCQkJCXBvcnRhbC0+cG9ydGFsUG9zID0gMDsKLQkJCQlicmVh azsKLQogCQkJY2FzZSBQT1JUQUxfVVRJTF9TRUxFQ1Q6CiAKIAkJCQkvKgpAQCAtNTc4LDExICs1 MDAsOTAgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMs CiAJCQkJcG9ydGFsLT5hdFN0YXJ0ID0gdHJ1ZTsKIAkJCQlwb3J0YWwtPmF0RW5kID0gZmFsc2U7 CS8qIGFsbG93IGZldGNoZXMgKi8KIAkJCQlwb3J0YWwtPnBvcnRhbFBvcyA9IDA7CisJCQkJcG9y dGFsLT5wbGFuX3ZhbGlkID0gdHJ1ZTsKIAkJCQlicmVhazsKIAogCQkJY2FzZSBQT1JUQUxfTVVM VElfUVVFUlk6Ci0JCQkJLyogTmVlZCBkbyBub3RoaW5nIG5vdyAqLworCQkJCXsKKwkJCQkJTGlz dENlbGwgICAqbGM7CisJCQkJCWJvb2wJCWZpcnN0ID0gdHJ1ZTsKKworCQkJCQkvKiBUYWtlIGxv Y2tzIGlmIHVzaW5nIGEgQ2FjaGVkUGxhbiAqLworCQkJCQlteWVmbGFncyA9IDA7CisJCQkJCWlm IChwb3J0YWwtPmNwbGFuKQorCQkJCQkJbXllZmxhZ3MgfD0gRVhFQ19GTEFHX0dFVF9MT0NLUzsK KworCQkJCQlmb3JlYWNoKGxjLCBwb3J0YWwtPnN0bXRzKQorCQkJCQl7CisJCQkJCQlQbGFubmVk U3RtdCAqcGxhbiA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYyk7CisJCQkJCQlib29sCQlp c191dGlsaXR5ID0gKHBsYW4tPnV0aWxpdHlTdG10ICE9IE5VTEwpOworCisJCQkJCQkvKgorCQkJ CQkJICogUHVzaCB0aGUgc25hcHNob3QgdG8gYmUgdXNlZCBieSB0aGUgZXhlY3V0b3IuCisJCQkJ CQkgKi8KKwkJCQkJCWlmICghaXNfdXRpbGl0eSkKKwkJCQkJCXsKKwkJCQkJCQkvKgorCQkJCQkJ CSAqIE11c3QgY29weSB0aGUgc25hcHNob3QgaWYgd2UnbGwgbmVlZCB0byB1cGRhdGUKKwkJCQkJ CQkgKiBpdHMgY29tbWFuZCBJRC4KKwkJCQkJCQkgKi8KKwkJCQkJCQlpZiAoIWZpcnN0KQorCQkJ CQkJCQlQdXNoQ29waWVkU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCQkJ CQllbHNlCisJCQkJCQkJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOworCQkJCQkJfQorCisJCQkJCQkvKgorCQkJCQkJICogRnJvbSB0aGUgMm5kIHN0YXRlbWVu dCBvbndhcmRzLCB1cGRhdGUgdGhlIGNvbW1hbmQKKwkJCQkJCSAqIElEIGFuZCB0aGUgc25hcHNo b3QgdG8gbWF0Y2guCisJCQkJCQkgKi8KKwkJCQkJCWlmICghZmlyc3QpCisJCQkJCQl7CisJCQkJ CQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJCQkJCQlVcGRhdGVBY3RpdmVTbmFwc2hv dENvbW1hbmRJZCgpOworCQkJCQkJfQorCisJCQkJCQlmaXJzdCA9IGZhbHNlOworCisJCQkJCQkv KgorCQkJCQkJICogQ3JlYXRlIHRoZSBRdWVyeURlc2Mgb2JqZWN0LiAgRGVzdFJlY2VpdmVyIHdp bGwKKwkJCQkJCSAqIGJlIHNldCBpbiBQb3J0YWxSdW5NdWx0aSgpLgorCQkJCQkJICovCisJCQkJ CQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcG9ydGFsLT5jcGxhbiwKKwkJCQkJ CQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQsCisJCQkJCQkJCQkJCQkJIWlzX3V0aWxpdHkgPwor CQkJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCkgOgorCQkJCQkJCQkJCQkJCUludmFsaWRT bmFwc2hvdCwKKwkJCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCisJCQkJCQkJCQkJCQkJTlVM TCwKKwkJCQkJCQkJCQkJCQlwYXJhbXMsCisJCQkJCQkJCQkJCQkJcG9ydGFsLT5xdWVyeUVudiwg MCk7CisKKwkJCQkJCS8qIFJlbWVtYmVyIGZvciBQb3J0YWxSdW5NdWx0aSgpICovCisJCQkJCQlw b3J0YWwtPnFkZXNjcyA9IGxhcHBlbmQocG9ydGFsLT5xZGVzY3MsIHF1ZXJ5RGVzYyk7CisKKwkJ CQkJCWlmIChpc191dGlsaXR5KQorCQkJCQkJCWNvbnRpbnVlOworCisJCQkJCQkvKgorCQkJCQkJ ICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yCisJCQkJCQkgKiBl eGVjdXRpb24uICBBIGNhY2hlZCBwbGFuIG1heSBnZXQgaW52YWxpZGF0ZWQgYXMKKwkJCQkJCSAq IHdlJ3JlIGRvaW5nIHRoYXQuCisJCQkJCQkgKi8KKwkJCQkJCUV4ZWN1dG9yU3RhcnQocXVlcnlE ZXNjLCBteWVmbGFncyk7CisJCQkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQkJCQkJaWYgKCFx dWVyeURlc2MtPnBsYW5fdmFsaWQpCisJCQkJCQl7CisJCQkJCQkJQXNzZXJ0KHF1ZXJ5RGVzYy0+ Y3BsYW4pOworCQkJCQkJCVBvcnRhbFF1ZXJ5RmluaXNoKHF1ZXJ5RGVzYyk7CisJCQkJCQkJcG9y dGFsLT5wbGFuX3ZhbGlkID0gZmFsc2U7CisJCQkJCQkJZ290byBlYXJseV9leGl0OworCQkJCQkJ fQorCQkJCQl9CisJCQkJfQorCiAJCQkJcG9ydGFsLT50dXBEZXNjID0gTlVMTDsKKwkJCQlwb3J0 YWwtPnBsYW5fdmFsaWQgPSB0cnVlOwogCQkJCWJyZWFrOwogCQl9CiAJfQpAQCAtNTk0LDE5ICs1 OTUsMTggQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMs CiAJCS8qIFJlc3RvcmUgZ2xvYmFsIHZhcnMgYW5kIHByb3BhZ2F0ZSBlcnJvciAqLwogCQlBY3Rp dmVQb3J0YWwgPSBzYXZlQWN0aXZlUG9ydGFsOwogCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IHNh dmVSZXNvdXJjZU93bmVyOwotCQlQb3J0YWxDb250ZXh0ID0gc2F2ZVBvcnRhbENvbnRleHQ7CiAK IAkJUEdfUkVfVEhST1coKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogCisJcG9ydGFsLT5zdGF0dXMg PSBQT1JUQUxfUkVBRFk7CisKK2Vhcmx5X2V4aXQ6CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZENvbnRleHQpOwogCiAJQWN0aXZlUG9ydGFsID0gc2F2ZUFjdGl2ZVBvcnRhbDsKIAlDdXJyZW50 UmVzb3VyY2VPd25lciA9IHNhdmVSZXNvdXJjZU93bmVyOwotCVBvcnRhbENvbnRleHQgPSBzYXZl UG9ydGFsQ29udGV4dDsKLQotCXBvcnRhbC0+c3RhdHVzID0gUE9SVEFMX1JFQURZOwogfQogCiAv KgpAQCAtMTE5Myw3ICsxMTkzLDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJ CSAgIFF1ZXJ5Q29tcGxldGlvbiAqcWMpCiB7CiAJYm9vbAkJYWN0aXZlX3NuYXBzaG90X3NldCA9 IGZhbHNlOwotCUxpc3RDZWxsICAgKnN0bXRsaXN0X2l0ZW07CisJTGlzdENlbGwgICAqcWRlc2Nf aXRlbTsKIAogCS8qCiAJICogSWYgdGhlIGRlc3RpbmF0aW9uIGlzIERlc3RSZW1vdGVFeGVjdXRl LCBjaGFuZ2UgdG8gRGVzdE5vbmUuICBUaGUKQEAgLTEyMTQsOSArMTIxNCwxMCBAQCBQb3J0YWxS dW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCSAqIExvb3AgdG8gaGFuZGxlIHRoZSBpbmRpdmlkdWFs IHF1ZXJpZXMgZ2VuZXJhdGVkIGZyb20gYSBzaW5nbGUgcGFyc2V0cmVlCiAJICogYnkgYW5hbHlz aXMgYW5kIHJld3JpdGUuCiAJICovCi0JZm9yZWFjaChzdG10bGlzdF9pdGVtLCBwb3J0YWwtPnN0 bXRzKQorCWZvcmVhY2gocWRlc2NfaXRlbSwgcG9ydGFsLT5xZGVzY3MpCiAJewotCQlQbGFubmVk U3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgc3RtdGxpc3RfaXRlbSk7CisJ CVF1ZXJ5RGVzYyAqcWRlc2MgPSAoUXVlcnlEZXNjICopIGxmaXJzdChxZGVzY19pdGVtKTsKKwkJ UGxhbm5lZFN0bXQgKnBzdG10ID0gcWRlc2MtPnBsYW5uZWRzdG10OwogCiAJCS8qCiAJCSAqIElm IHdlIGdvdCBhIGNhbmNlbCBzaWduYWwgaW4gcHJpb3IgY29tbWFuZCwgcXVpdApAQCAtMTI3MSwy MyArMTI3MiwzOCBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJZWxzZQogCQkJ CVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKKwkJCS8qCisJCQkgKiBSdW4gdGhl IHBsYW4gdG8gY29tcGxldGlvbi4KKwkJCSAqLworCQkJcWRlc2MtPmRlc3QgPSBkZXN0OworCQkJ RXhlY3V0b3JSdW4ocWRlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwTCwgdHJ1ZSk7CisKKwkJ CS8qCisJCQkgKiBCdWlsZCBjb21tYW5kIGNvbXBsZXRpb24gc3RhdHVzIGRhdGEgaWYgbmVlZGVk LgorCQkJICovCiAJCQlpZiAocHN0bXQtPmNhblNldFRhZykKIAkJCXsKLQkJCQkvKiBzdGF0ZW1l bnQgY2FuIHNldCB0YWcgc3RyaW5nICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAotCQkJCQkJ CSBwb3J0YWwtPnNvdXJjZVRleHQsCi0JCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAotCQkJ CQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAotCQkJCQkJCSBkZXN0LCBxYyk7Ci0JCQl9Ci0JCQllbHNl Ci0JCQl7Ci0JCQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCi0J CQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAotCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCi0JCQkJ CQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAotCQkJ CQkJCSBhbHRkZXN0LCBOVUxMKTsKKwkJCQlzd2l0Y2ggKHFkZXNjLT5vcGVyYXRpb24pCisJCQkJ eworCQkJCQljYXNlIENNRF9TRUxFQ1Q6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENN RFRBR19TRUxFQ1QsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsK KwkJCQkJY2FzZSBDTURfSU5TRVJUOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURU QUdfSU5TRVJULCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJ CQkJCWNhc2UgQ01EX1VQREFURToKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFH X1VQREFURSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJ CQljYXNlIENNRF9ERUxFVEU6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19E RUxFVEUsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJ Y2FzZSBDTURfTUVSR0U6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19NRVJH RSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQlkZWZh dWx0OgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfVU5LTk9XTiwgcWRlc2Mt PmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCX0KIAkJCX0KIAogCQkJ aWYgKGxvZ19leGVjdXRvcl9zdGF0cykKQEAgLTEzNDYsOCArMTM2MiwxNSBAQCBQb3J0YWxSdW5N dWx0aShQb3J0YWwgcG9ydGFsLAogCQkgKiBJbmNyZW1lbnQgY29tbWFuZCBjb3VudGVyIGJldHdl ZW4gcXVlcmllcywgYnV0IG5vdCBhZnRlciB0aGUgbGFzdAogCQkgKiBvbmUuCiAJCSAqLwotCQlp ZiAobG5leHQocG9ydGFsLT5zdG10cywgc3RtdGxpc3RfaXRlbSkgIT0gTlVMTCkKKwkJaWYgKGxu ZXh0KHBvcnRhbC0+cWRlc2NzLCBxZGVzY19pdGVtKSAhPSBOVUxMKQogCQkJQ29tbWFuZENvdW50 ZXJJbmNyZW1lbnQoKTsKKworCQlpZiAocWRlc2MtPmVzdGF0ZSkKKwkJeworCQkJRXhlY3V0b3JG aW5pc2gocWRlc2MpOworCQkJRXhlY3V0b3JFbmQocWRlc2MpOworCQl9CisJCUZyZWVRdWVyeURl c2MocWRlc2MpOwogCX0KIAogCS8qIFBvcCB0aGUgc25hcHNob3QgaWYgd2UgcHVzaGVkIG9uZS4g Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggYzA3MzgyMDUxZC4uMzhhZTQz ZTI0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTIwNzMsNiArMjA3Mywy NyBAQCBnZXRfcmVsX3BlcnNpc3RlbmNlKE9pZCByZWxpZCkKIAlyZXR1cm4gcmVzdWx0OwogfQog CisvKgorICogZ2V0X3JlbF9yZWxpc3NoYXJlZAorICoKKyAqCQlSZXR1cm5zIGlmIHRoZSBnaXZl biByZWxhdGlvbiBpcyBzaGFyZWQgb3Igbm90CisgKi8KK2Jvb2wKK2dldF9yZWxfcmVsaXNzaGFy ZWQoT2lkIHJlbGlkKQoreworCUhlYXBUdXBsZQl0cDsKKwlGb3JtX3BnX2NsYXNzIHJlbHR1cDsK Kwlib29sCQlyZXN1bHQ7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElk R2V0RGF0dW0ocmVsaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVsYXRpb24gJXUiLCByZWxpZCk7CisJcmVs dHVwID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0cCk7CisJcmVzdWx0ID0gcmVsdHVwLT5y ZWxpc3NoYXJlZDsKKwlSZWxlYXNlU3lzQ2FjaGUodHApOworCisJcmV0dXJuIHJlc3VsdDsKK30K IAogLyoJCQkJLS0tLS0tLS0tLSBUUkFOU0ZPUk0gQ0FDSEUgLS0tLS0tLS0tLQkJCQkJCSAqLwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCmluZGV4IDc3YzJiYTNmOGYuLjRlNDU1ZDgx NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC0xMDAsMTMgKzEwMCwxMyBA QCBzdGF0aWMgdm9pZCBSZWxlYXNlR2VuZXJpY1BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSk7CiBzdGF0aWMgTGlzdCAqUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsK IHN0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl KTsKK3N0YXRpYyBib29sIEdlbmVyaWNQbGFuSXNWYWxpZChDYWNoZWRQbGFuICpjcGxhbik7CiBz dGF0aWMgQ2FjaGVkUGxhbiAqQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIExpc3QgKnFsaXN0LAogCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1z LCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiBzdGF0aWMgYm9vbCBjaG9vc2VfY3VzdG9t X3BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkgICBQYXJhbUxpc3RJ bmZvIGJvdW5kUGFyYW1zKTsKIHN0YXRpYyBkb3VibGUgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQ bGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcik7CiBzdGF0aWMgUXVlcnkgKlF1ZXJ5TGlz dEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRzKTsKLXN0YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRv ckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lkIEFjcXVp cmVQbGFubmVyTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZv aWQgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkgKnBhcnNldHJlZSwgYm9vbCBhY3F1aXJlKTsKIHN0 YXRpYyBib29sIFNjYW5RdWVyeVdhbGtlcihOb2RlICpub2RlLCBib29sICphY3F1aXJlKTsKQEAg LTc4Nyw5ICs3ODcsNiBAQCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSwKICAqCiAgKiBDYWxsZXIgbXVzdCBoYXZlIGFscmVhZHkgY2FsbGVkIFJldmFs aWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJpZnkgdGhhdCB0aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0 byBkYXRlLgotICoKLSAqIE9uIGEgInRydWUiIHJldHVybiwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUg bG9ja3MgbmVlZGVkIHRvIHJ1biB0aGUgcGxhbi4KLSAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRo ZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2UtY29uZGl0aW9uLWZyZWUuKQogICovCiBzdGF0aWMg Ym9vbAogQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCkBAIC04 MDMsNjAgKzgwMCw1NiBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSkKIAlpZiAoIXBsYW4pCiAJCXJldHVybiBmYWxzZTsKIAotCUFzc2VydChwbGFuLT5tYWdp YyA9PSBDQUNIRURQTEFOX01BR0lDKTsKLQkvKiBHZW5lcmljIHBsYW5zIGFyZSBuZXZlciBvbmUt c2hvdCAqLwotCUFzc2VydCghcGxhbi0+aXNfb25lc2hvdCk7CisJaWYgKEdlbmVyaWNQbGFuSXNW YWxpZChwbGFuKSkKKwkJcmV0dXJuIHRydWU7CiAKIAkvKgotCSAqIElmIHBsYW4gaXNuJ3QgdmFs aWQgZm9yIGN1cnJlbnQgcm9sZSwgd2UgY2FuJ3QgdXNlIGl0LgorCSAqIFBsYW4gaGFzIGJlZW4g aW52YWxpZGF0ZWQsIHNvIHVubGluayBpdCBmcm9tIHRoZSBwYXJlbnQgYW5kIHJlbGVhc2UgaXQu CiAJICovCi0JaWYgKHBsYW4tPmlzX3ZhbGlkICYmIHBsYW4tPmRlcGVuZHNPblJvbGUgJiYKLQkJ cGxhbi0+cGxhblJvbGVJZCAhPSBHZXRVc2VySWQoKSkKLQkJcGxhbi0+aXNfdmFsaWQgPSBmYWxz ZTsKKwlSZWxlYXNlR2VuZXJpY1BsYW4ocGxhbnNvdXJjZSk7CiAKLQkvKgotCSAqIElmIGl0IGFw cGVhcnMgdmFsaWQsIGFjcXVpcmUgbG9ja3MgYW5kIHJlY2hlY2s7IHRoaXMgaXMgbXVjaCB0aGUg c2FtZQotCSAqIGxvZ2ljIGFzIGluIFJldmFsaWRhdGVDYWNoZWRRdWVyeSwgYnV0IGZvciBhIHBs YW4uCi0JICovCi0JaWYgKHBsYW4tPmlzX3ZhbGlkKQorCXJldHVybiBmYWxzZTsKK30KKworLyoK KyAqIEdlbmVyaWNQbGFuSXNWYWxpZAorICoJCUlzIGEgZ2VuZXJpYyBwbGFuIHN0aWxsIHZhbGlk PworICoKKyAqIEl0IG1heSBoYXZlIGdvbmUgc3RhbGUgZHVlIHRvIGNvbmN1cnJlbnQgc2NoZW1h IG1vZGlmaWNhdGlvbnMgb2YgcmVsYXRpb25zCisgKiBtZW50aW9uZWQgaW4gdGhlIHBsYW4gb3Ig YSBjb3VwbGUgb2Ygb3RoZXIgdGhpbmdzIG1lbnRpb25lZCBiZWxvdy4KKyAqLworc3RhdGljIGJv b2wKK0dlbmVyaWNQbGFuSXNWYWxpZChDYWNoZWRQbGFuICpjcGxhbikKK3sKKwlBc3NlcnQoY3Bs YW4gIT0gTlVMTCk7CisJQXNzZXJ0KGNwbGFuLT5tYWdpYyA9PSBDQUNIRURQTEFOX01BR0lDKTsK KwkvKiBHZW5lcmljIHBsYW5zIGFyZSBuZXZlciBvbmUtc2hvdCAqLworCUFzc2VydCghY3BsYW4t PmlzX29uZXNob3QpOworCisJaWYgKGNwbGFuLT5pc192YWxpZCkKIAl7CiAJCS8qCiAJCSAqIFBs YW4gbXVzdCBoYXZlIHBvc2l0aXZlIHJlZmNvdW50IGJlY2F1c2UgaXQgaXMgcmVmZXJlbmNlZCBi eQogCQkgKiBwbGFuc291cmNlOyBzbyBubyBuZWVkIHRvIGZlYXIgaXQgZGlzYXBwZWFycyB1bmRl ciB1cyBoZXJlLgogCQkgKi8KLQkJQXNzZXJ0KHBsYW4tPnJlZmNvdW50ID4gMCk7Ci0KLQkJQWNx dWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCB0cnVlKTsKKwkJQXNzZXJ0KGNwbGFu LT5yZWZjb3VudCA+IDApOwogCiAJCS8qCi0JCSAqIElmIHBsYW4gd2FzIHRyYW5zaWVudCwgY2hl Y2sgdG8gc2VlIGlmIFRyYW5zYWN0aW9uWG1pbiBoYXMKLQkJICogYWR2YW5jZWQsIGFuZCBpZiBz byBpbnZhbGlkYXRlIGl0LgorCQkgKiBJZiBwbGFuIGlzbid0IHZhbGlkIGZvciBjdXJyZW50IHJv bGUsIHdlIGNhbid0IHVzZSBpdC4KIAkJICovCi0JCWlmIChwbGFuLT5pc192YWxpZCAmJgotCQkJ VHJhbnNhY3Rpb25JZElzVmFsaWQocGxhbi0+c2F2ZWRfeG1pbikgJiYKLQkJCSFUcmFuc2FjdGlv bklkRXF1YWxzKHBsYW4tPnNhdmVkX3htaW4sIFRyYW5zYWN0aW9uWG1pbikpCi0JCQlwbGFuLT5p c192YWxpZCA9IGZhbHNlOworCQlpZiAoY3BsYW4tPmRlcGVuZHNPblJvbGUgJiYgY3BsYW4tPnBs YW5Sb2xlSWQgIT0gR2V0VXNlcklkKCkpCisJCQljcGxhbi0+aXNfdmFsaWQgPSBmYWxzZTsKIAog CQkvKgotCQkgKiBCeSBub3csIGlmIGFueSBpbnZhbGlkYXRpb24gaGFzIGhhcHBlbmVkLCB0aGUg aW52YWwgY2FsbGJhY2sKLQkJICogZnVuY3Rpb25zIHdpbGwgaGF2ZSBtYXJrZWQgdGhlIHBsYW4g aW52YWxpZC4KKwkJICogSWYgcGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJh bnNhY3Rpb25YbWluIGhhcworCQkgKiBhZHZhbmNlZCwgYW5kIGlmIHNvIGludmFsaWRhdGUgaXQu CiAJCSAqLwotCQlpZiAocGxhbi0+aXNfdmFsaWQpCi0JCXsKLQkJCS8qIFN1Y2Nlc3NmdWxseSBy ZXZhbGlkYXRlZCBhbmQgbG9ja2VkIHRoZSBxdWVyeS4gKi8KLQkJCXJldHVybiB0cnVlOwotCQl9 Ci0KLQkJLyogT29wcywgdGhlIHJhY2UgY2FzZSBoYXBwZW5lZC4gIFJlbGVhc2UgdXNlbGVzcyBs b2Nrcy4gKi8KLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0LCBmYWxzZSk7 CisJCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChjcGxhbi0+c2F2ZWRfeG1pbikgJiYKKwkJCSFU cmFuc2FjdGlvbklkRXF1YWxzKGNwbGFuLT5zYXZlZF94bWluLCBUcmFuc2FjdGlvblhtaW4pKQor CQkJY3BsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CiAJfQogCi0JLyoKLQkgKiBQbGFuIGhhcyBiZWVu IGludmFsaWRhdGVkLCBzbyB1bmxpbmsgaXQgZnJvbSB0aGUgcGFyZW50IGFuZCByZWxlYXNlIGl0 LgotCSAqLwotCVJlbGVhc2VHZW5lcmljUGxhbihwbGFuc291cmNlKTsKLQotCXJldHVybiBmYWxz ZTsKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOwogfQogCiAvKgpAQCAtMTEyNiw5ICsxMTE5LDYg QEAgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5l cikKICAqIHBsYW4gb3IgYSBjdXN0b20gcGxhbiBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRo ZSBjYWxsZXIgZG9lcyBub3Qga25vdwogICogd2hpY2ggaXQgd2lsbCBnZXQuCiAgKgotICogT24g cmV0dXJuLCB0aGUgcGxhbiBpcyB2YWxpZCBhbmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRv IGJlZ2luCi0gKiBleGVjdXRpb24uCi0gKgogICogT24gcmV0dXJuLCB0aGUgcmVmY291bnQgb2Yg dGhlIHBsYW4gaGFzIGJlZW4gaW5jcmVtZW50ZWQ7IGEgbGF0ZXIKICAqIFJlbGVhc2VDYWNoZWRQ bGFuKCkgY2FsbCBpcyBleHBlY3RlZC4gIElmICJvd25lciIgaXMgbm90IE5VTEwgdGhlbgogICog dGhlIHJlZmNvdW50IGhhcyBiZWVuIHJlcG9ydGVkIHRvIHRoYXQgUmVzb3VyY2VPd25lciAobm90 ZSB0aGF0IHRoaXMKQEAgLTEzNjAsOCArMTM1MCw4IEBAIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVW YWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJfQogCiAJLyoKLQkg KiBSZWplY3QgaWYgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mgd291bGQgaGF2ZSBhbnl0aGluZyB0byBk by4gIFRoaXMgaXMKLQkgKiBwcm9iYWJseSB1bm5lY2Vzc2FyeSBnaXZlbiB0aGUgcHJldmlvdXMg Y2hlY2ssIGJ1dCBsZXQncyBiZSBzYWZlLgorCSAqIFJlamVjdCBpZiB0aGUgZXhlY3V0b3Igd291 bGQgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgbG9ja3MsIHRoYXQgaXMsIGluCisJICogYWRkaXRp b24gdG8gdGhvc2UgdGFrZW4gYnkgQWNxdWlyZVBsYW5uZXJMb2NrcygpIG9uIGEgZ2l2ZW4gcXVl cnkuCiAJICovCiAJZm9yZWFjaChsYywgcGxhbi0+c3RtdF9saXN0KQogCXsKQEAgLTE3MzUsNTgg KzE3MjUsNiBAQCBRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cykKIAlyZXR1cm4g TlVMTDsKIH0KIAotLyoKLSAqIEFjcXVpcmVFeGVjdXRvckxvY2tzOiBhY3F1aXJlIGxvY2tzIG5l ZWRlZCBmb3IgZXhlY3V0aW9uIG9mIGEgY2FjaGVkIHBsYW47Ci0gKiBvciByZWxlYXNlIHRoZW0g aWYgYWNxdWlyZSBpcyBmYWxzZS4KLSAqLwotc3RhdGljIHZvaWQKLUFjcXVpcmVFeGVjdXRvckxv Y2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQotewotCUxpc3RDZWxsICAgKmxjMTsK LQotCWZvcmVhY2gobGMxLCBzdG10X2xpc3QpCi0JewotCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMxKTsKLQkJTGlzdENlbGwgICAqbGMyOwot Ci0JCWlmIChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpCi0JCXsKLQkJ CS8qCi0JCQkgKiBJZ25vcmUgdXRpbGl0eSBzdGF0ZW1lbnRzLCBleGNlcHQgdGhvc2UgKHN1Y2gg YXMgRVhQTEFJTikgdGhhdAotCQkJICogY29udGFpbiBhIHBhcnNlZC1idXQtbm90LXBsYW5uZWQg cXVlcnkuICBOb3RlOiBpdCdzIG9rYXkgdG8gdXNlCi0JCQkgKiBTY2FuUXVlcnlGb3JMb2Nrcywg ZXZlbiB0aG91Z2ggdGhlIHF1ZXJ5IGhhc24ndCBiZWVuIHRocm91Z2gKLQkJCSAqIHJ1bGUgcmV3 cml0aW5nLCBiZWNhdXNlIHJld3JpdGluZyBkb2Vzbid0IGNoYW5nZSB0aGUgcXVlcnkKLQkJCSAq IHJlcHJlc2VudGF0aW9uLgotCQkJICovCi0JCQlRdWVyeQkgICAqcXVlcnkgPSBVdGlsaXR5Q29u dGFpbnNRdWVyeShwbGFubmVkc3RtdC0+dXRpbGl0eVN0bXQpOwotCi0JCQlpZiAocXVlcnkpCi0J CQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIGFjcXVpcmUpOwotCQkJY29udGludWU7Ci0JCX0K LQotCQlmb3JlYWNoKGxjMiwgcGxhbm5lZHN0bXQtPnJ0YWJsZSkKLQkJewotCQkJUmFuZ2VUYmxF bnRyeSAqcnRlID0gKFJhbmdlVGJsRW50cnkgKikgbGZpcnN0KGxjMik7Ci0KLQkJCWlmICghKHJ0 ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gfHwKLQkJCQkgIChydGUtPnJ0ZWtpbmQgPT0gUlRF X1NVQlFVRVJZICYmIE9pZElzVmFsaWQocnRlLT5yZWxpZCkpKSkKLQkJCQljb250aW51ZTsKLQot CQkJLyoKLQkJCSAqIEFjcXVpcmUgdGhlIGFwcHJvcHJpYXRlIHR5cGUgb2YgbG9jayBvbiBlYWNo IHJlbGF0aW9uIE9JRC4gTm90ZQotCQkJICogdGhhdCB3ZSBkb24ndCBhY3R1YWxseSB0cnkgdG8g b3BlbiB0aGUgcmVsLCBhbmQgaGVuY2Ugd2lsbCBub3QKLQkJCSAqIGZhaWwgaWYgaXQncyBiZWVu IGRyb3BwZWQgZW50aXJlbHkgLS0tIHdlJ2xsIGp1c3QgdHJhbnNpZW50bHkKLQkJCSAqIGFjcXVp cmUgYSBub24tY29uZmxpY3RpbmcgbG9jay4KLQkJCSAqLwotCQkJaWYgKGFjcXVpcmUpCi0JCQkJ TG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOwotCQkJZWxzZQot CQkJCVVubG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOwotCQl9 Ci0JfQotfQotCiAvKgogICogQWNxdWlyZVBsYW5uZXJMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVk ZWQgZm9yIHBsYW5uaW5nIG9mIGEgcXVlcnl0cmVlIGxpc3Q7CiAgKiBvciByZWxlYXNlIHRoZW0g aWYgYWNxdWlyZSBpcyBmYWxzZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv cG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IDA2 ZGZhODVmMDQuLjNhZDgwYzdlY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv cG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAt MjAxLDYgKzIwMSwxMCBAQCBDcmVhdGVQb3J0YWwoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbGxv d0R1cCwgYm9vbCBkdXBTaWxlbnQpCiAJcG9ydGFsLT5wb3J0YWxDb250ZXh0ID0gQWxsb2NTZXRD b250ZXh0Q3JlYXRlKFRvcFBvcnRhbENvbnRleHQsCiAJCQkJCQkJCQkJCQkgICJQb3J0YWxDb250 ZXh0IiwKIAkJCQkJCQkJCQkJCSAgQUxMT0NTRVRfU01BTExfU0laRVMpOworCS8qIGluaXRpYWxp emUgcG9ydGFsJ3MgcXVlcnkgY29udGV4dCB0byBzdG9yZSBRdWVyeURlc2NzICovCisJcG9ydGFs LT5xdWVyeUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wUG9ydGFsQ29udGV4dCwK KwkJCQkJCQkJCQkJCSAiUG9ydGFsUXVlcnlDb250ZXh0IiwKKwkJCQkJCQkJCQkJCSBBTExPQ1NF VF9TTUFMTF9TSVpFUyk7CiAKIAkvKiBjcmVhdGUgYSByZXNvdXJjZSBvd25lciBmb3IgdGhlIHBv cnRhbCAqLwogCXBvcnRhbC0+cmVzb3duZXIgPSBSZXNvdXJjZU93bmVyQ3JlYXRlKEN1clRyYW5z YWN0aW9uUmVzb3VyY2VPd25lciwKQEAgLTIyNCw2ICsyMjgsNyBAQCBDcmVhdGVQb3J0YWwoY29u c3QgY2hhciAqbmFtZSwgYm9vbCBhbGxvd0R1cCwgYm9vbCBkdXBTaWxlbnQpCiAKIAkvKiBmb3Ig bmFtZWQgcG9ydGFscyByZXVzZSBwb3J0YWwtPm5hbWUgY29weSAqLwogCU1lbW9yeUNvbnRleHRT ZXRJZGVudGlmaWVyKHBvcnRhbC0+cG9ydGFsQ29udGV4dCwgcG9ydGFsLT5uYW1lWzBdID8gcG9y dGFsLT5uYW1lIDogIjx1bm5hbWVkPiIpOworCU1lbW9yeUNvbnRleHRTZXRJZGVudGlmaWVyKHBv cnRhbC0+cXVlcnlDb250ZXh0LCBwb3J0YWwtPm5hbWVbMF0gPyBwb3J0YWwtPm5hbWUgOiAiPHVu bmFtZWQ+Iik7CiAKIAlyZXR1cm4gcG9ydGFsOwogfQpAQCAtNTk0LDYgKzU5OSw3IEBAIFBvcnRh bERyb3AoUG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcENvbW1pdCkKIAogCS8qIHJlbGVhc2Ugc3Vi c2lkaWFyeSBzdG9yYWdlICovCiAJTWVtb3J5Q29udGV4dERlbGV0ZShwb3J0YWwtPnBvcnRhbENv bnRleHQpOworCU1lbW9yeUNvbnRleHREZWxldGUocG9ydGFsLT5xdWVyeUNvbnRleHQpOwogCiAJ LyogcmVsZWFzZSBwb3J0YWwgc3RydWN0IChpdCdzIGluIFRvcFBvcnRhbENvbnRleHQpICovCiAJ cGZyZWUocG9ydGFsKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4u aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCA3YzEwNzFkZGQxLi5kYTM5 YjJlNGZmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC04Nyw3ICs4NywxMSBAQCBleHRlcm4g dm9pZCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50 bywKIAkJCQkJCQkgIEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAog CQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52 KTsKIAotZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 LCBJbnRvQ2xhdXNlICppbnRvLAorZXh0ZXJuIFF1ZXJ5RGVzYyAqRXhwbGFpblF1ZXJ5RGVzYyhQ bGFubmVkU3RtdCAqc3RtdCwgc3RydWN0IENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCSBjb25zdCBj aGFyICpxdWVyeVN0cmluZywgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKKwkJ CQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKK2V4 dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAorCQkJCQkJICAg SW50b0NsYXVzZSAqaW50bywKIAkJCQkJCSAgIEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IGNoYXIg KnF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52LAogCQkJCQkJICAgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9u LApAQCAtMTAzLDYgKzEwNyw3IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5RdWVyeVBhcmFtZXRlcnMo RXhwbGFpblN0YXRlICplcywgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIGludCBtCiAKIGV4dGVybiB2 b2lkIEV4cGxhaW5CZWdpbk91dHB1dChFeHBsYWluU3RhdGUgKmVzKTsKIGV4dGVybiB2b2lkIEV4 cGxhaW5FbmRPdXRwdXQoRXhwbGFpblN0YXRlICplcyk7CitleHRlcm4gdm9pZCBFeHBsYWluUmVz ZXRPdXRwdXQoRXhwbGFpblN0YXRlICplcyk7CiBleHRlcm4gdm9pZCBFeHBsYWluU2VwYXJhdGVQ bGFucyhFeHBsYWluU3RhdGUgKmVzKTsKIAogZXh0ZXJuIHZvaWQgRXhwbGFpblByb3BlcnR5TGlz dChjb25zdCBjaGFyICpxbGFiZWwsIExpc3QgKmRhdGEsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjZGVzYy5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaApp bmRleCBhZjJiZjM2ZGZiLi5jMzZjMjViNDk3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjZGVzYy5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAg LTMyLDkgKzMyLDEyIEBACiAgKi8KIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogeworCU5vZGVU YWcJCXR5cGU7CisKIAkvKiBUaGVzZSBmaWVsZHMgYXJlIHByb3ZpZGVkIGJ5IENyZWF0ZVF1ZXJ5 RGVzYyAqLwogCUNtZFR5cGUJCW9wZXJhdGlvbjsJCS8qIENNRF9TRUxFQ1QsIENNRF9VUERBVEUs IGV0Yy4gKi8KIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQ7CS8qIHBsYW5uZXIncyBvdXRwdXQg KGNvdWxkIGJlIHV0aWxpdHksIHRvbykgKi8KKwlzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3BsYW47CS8q IENhY2hlZFBsYW4sIGlmIHBsYW5uZWRzdG10IGlzIGZyb20gb25lICovCiAJY29uc3QgY2hhciAq c291cmNlVGV4dDsJCS8qIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeSAqLwogCVNuYXBzaG90CXNu YXBzaG90OwkJLyogc25hcHNob3QgdG8gdXNlIGZvciBxdWVyeSAqLwogCVNuYXBzaG90CWNyb3Nz Y2hlY2tfc25hcHNob3Q7CS8qIGNyb3NzY2hlY2sgZm9yIFJJIHVwZGF0ZS9kZWxldGUgKi8KQEAg LTQ3LDYgKzUwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiAJVHVwbGVEZXNjCXR1cERl c2M7CQkvKiBkZXNjcmlwdG9yIGZvciByZXN1bHQgdHVwbGVzICovCiAJRVN0YXRlCSAgICplc3Rh dGU7CQkJLyogZXhlY3V0b3IncyBxdWVyeS13aWRlIHN0YXRlICovCiAJUGxhblN0YXRlICAqcGxh bnN0YXRlOwkJLyogdHJlZSBvZiBwZXItcGxhbi1ub2RlIHN0YXRlICovCisJYm9vbAkJcGxhbl92 YWxpZDsJCS8qIGlzIHBsYW5zdGF0ZSB0cmVlIGZ1bGx5IHZhbGlkPyAqLwogCiAJLyogVGhpcyBm aWVsZCBpcyBzZXQgYnkgRXhlY3V0b3JSdW4gKi8KIAlib29sCQlhbHJlYWR5X2V4ZWN1dGVkOwkv KiB0cnVlIGlmIHByZXZpb3VzbHkgZXhlY3V0ZWQgKi8KQEAgLTU3LDYgKzYxLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgUXVlcnlEZXNjCiAKIC8qIGluIHBxdWVyeS5jICovCiBleHRlcm4gUXVlcnlEZXNj ICpDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJCQkJCQkgIHN0 cnVjdCBDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQkJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0 LAogCQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkgIFNuYXBzaG90IGNyb3Nz Y2hlY2tfc25hcHNob3QsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRv ci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCBkYmQ3NzA1MGM3Li5l YmI2NjY1OTUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisr KyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE5LDYgKzE5LDcgQEAKICNp bmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMu aCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3BsYW5jYWNo ZS5oIgogCiAKIC8qCkBAIC01OSw2ICs2MCw4IEBACiAjZGVmaW5lIEVYRUNfRkxBR19NQVJLCQkJ MHgwMDA4CS8qIG5lZWQgbWFyay9yZXN0b3JlICovCiAjZGVmaW5lIEVYRUNfRkxBR19TS0lQX1RS SUdHRVJTIDB4MDAxMAkvKiBza2lwIEFmdGVyVHJpZ2dlciBjYWxscyAqLwogI2RlZmluZSBFWEVD X0ZMQUdfV0lUSF9OT19EQVRBCTB4MDAyMAkvKiByZWwgc2Nhbm5hYmlsaXR5IGRvZXNuJ3QgbWF0 dGVyICovCisjZGVmaW5lIEVYRUNfRkxBR19HRVRfTE9DS1MJCTB4MDQwMAkvKiBzaG91bGQgdGhl IGV4ZWN1dG9yIGxvY2sKKwkJCQkJCQkJCQkgKiByZWxhdGlvbnM/ICovCiAKIAogLyogSG9vayBm b3IgcGx1Z2lucyB0byBnZXQgY29udHJvbCBpbiBFeGVjdXRvclN0YXJ0KCkgKi8KQEAgLTI0NSw2 ICsyNDgsMTMgQEAgZXh0ZXJuIHZvaWQgRXhlY0VuZE5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4 dGVybiB2b2lkIEV4ZWNTaHV0ZG93bk5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lk IEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0ZSAqY2hpbGRf bm9kZSk7CiAKKy8qIElzIHRoZSBjYWNoZWQgcGxhbiovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4 ZWNQbGFuU3RpbGxWYWxpZChFU3RhdGUgKmVzdGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19j YWNoZWRwbGFuID09IE5VTEwgPyB0cnVlIDoKKwkJQ2FjaGVkUGxhblN0aWxsVmFsaWQoZXN0YXRl LT5lc19jYWNoZWRwbGFuKTsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNQcm9jTm9kZQpAQCAt NTc5LDYgKzU4OSw4IEBAIGV4ZWNfcnRfZmV0Y2goSW5kZXggcnRpLCBFU3RhdGUgKmVzdGF0ZSkK IH0KIAogZXh0ZXJuIFJlbGF0aW9uIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICpl c3RhdGUsIEluZGV4IHJ0aSk7CitleHRlcm4gdm9pZCBFeGVjTG9ja1ZpZXdSZWxhdGlvbnMoTGlz dCAqdmlld1JlbGF0aW9ucywgRVN0YXRlICplc3RhdGUpOworZXh0ZXJuIHZvaWQgRXhlY0xvY2tB cHBlbmROb25MZWFmUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlLCBMaXN0ICphbGxwYXJ0cmVsaWRz KTsKIGV4dGVybiB2b2lkIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCSAgIEluZGV4IHJ0aSk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKaW5kZXggZDk3ZjVhOGU3ZC4uZGZhNzI4NDhjNyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKQEAgLTYyMyw2ICs2MjMsOCBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJ CQkJCQkgKiBFeGVjUm93TWFya3MsIG9yIE5VTEwgaWYgbm9uZSAqLwogCUxpc3QJICAgKmVzX3J0 ZXBlcm1pbmZvczsJLyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwogCVBsYW5uZWRTdG10 ICplc19wbGFubmVkc3RtdDsJLyogbGluayB0byB0b3Agb2YgcGxhbiB0cmVlICovCisJc3RydWN0 IENhY2hlZFBsYW4gKmVzX2NhY2hlZHBsYW47CS8qIENhY2hlZFBsYW4gaWYgcGxhbm5lZHN0bXQg aXMgZnJvbQorCQkJCQkJCQkJCSAqIG9uZSAqLwogCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfaW5m b3M7CS8qIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zICovCiAJY29uc3QgY2hhciAqZXNfc291 cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJvbSBRdWVyeURlc2MgKi8KIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9k ZXMuaAppbmRleCBkNjFhNjJkYTE5Li45Yjg4OGIwZDc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApA QCAtMTE2LDYgKzExNiw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxh dCIgbGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mb3MgKi8KIAlMaXN0CSAgICpmaW5hbHJ0ZXBlcm1p bmZvczsKIAorCS8qICJmbGF0IiBsaXN0IG9mIGludGVnZXIgUlQgaW5kZXhlcyAqLworCUxpc3QJ ICAgKnZpZXdSZWxhdGlvbnM7CisKIAkvKiAiZmxhdCIgbGlzdCBvZiBQbGFuUm93TWFya3MgKi8K IAlMaXN0CSAgICpmaW5hbHJvd21hcmtzOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGEwYmIx NmNmZjQuLjdjYWU2MjRiYmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC03OCw2ICs3OCw5IEBA IHR5cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiAJTGlzdAkgICAqcGVybUluZm9zOwkJLyogbGlz dCBvZiBSVEVQZXJtaXNzaW9uSW5mbyBub2RlcyBmb3IgcnRhYmxlCiAJCQkJCQkJCSAqIGVudHJp ZXMgbmVlZGluZyBvbmUgKi8KIAorCUxpc3QJICAgKnZpZXdSZWxhdGlvbnM7CS8qIGludGVnZXIg bGlzdCBvZiBSVCBpbmRleGVzLCBvciBOSUwgaWYgbm8KKwkJCQkJCQkJICogdmlld3MgYXJlIHF1 ZXJpZWQgKi8KKwogCS8qIHJ0YWJsZSBpbmRleGVzIG9mIHRhcmdldCByZWxhdGlvbnMgZm9yIElO U0VSVC9VUERBVEUvREVMRVRFL01FUkdFICovCiAJTGlzdAkgICAqcmVzdWx0UmVsYXRpb25zOwkv KiBpbnRlZ2VyIGxpc3Qgb2YgUlQgaW5kZXhlcywgb3IgTklMICovCiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKaW5k ZXggNGVlOTFlM2NmOS4uNTk4YmYyNjg4YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9sbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKQEAgLTQ4LDYgKzQ4LDcg QEAgZXh0ZXJuIGJvb2wgQ29uZGl0aW9uYWxMb2NrUmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24s IExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiB2b2lkIFVubG9ja1JlbGF0aW9uKFJlbGF0aW9u IHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBleHRlcm4gYm9vbCBDaGVja1JlbGF0aW9u TG9ja2VkQnlNZShSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkJ CQlib29sIG9yc3Ryb25nZXIpOworZXh0ZXJuIGJvb2wgQ2hlY2tSZWxMb2NrZWRCeU1lKE9pZCBy ZWxpZCwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgb3JzdHJvbmdlcik7CiBleHRlcm4gYm9vbCBM b2NrSGFzV2FpdGVyc1JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9k ZSk7CiAKIGV4dGVybiB2b2lkIExvY2tSZWxhdGlvbklkRm9yU2Vzc2lvbihMb2NrUmVsSWQgKnJl bGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9s c3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IDRmNTQxOGI5 NzIuLjMwNzRlNjA0ZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC0xMzksNiArMTM5LDcgQEAg ZXh0ZXJuIGNoYXIgZ2V0X3JlbF9yZWxraW5kKE9pZCByZWxpZCk7CiBleHRlcm4gYm9vbCBnZXRf cmVsX3JlbGlzcGFydGl0aW9uKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF9yZWxfdGFibGVz cGFjZShPaWQgcmVsaWQpOwogZXh0ZXJuIGNoYXIgZ2V0X3JlbF9wZXJzaXN0ZW5jZShPaWQgcmVs aWQpOworZXh0ZXJuIGJvb2wgZ2V0X3JlbF9yZWxpc3NoYXJlZChPaWQgcmVsaWQpOwogZXh0ZXJu IE9pZAlnZXRfdHJhbnNmb3JtX2Zyb21zcWwoT2lkIHR5cGlkLCBPaWQgbGFuZ2lkLCBMaXN0ICp0 cmZ0eXBlcyk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fdG9zcWwoT2lkIHR5cGlkLCBPaWQg bGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4gYm9vbCBnZXRfdHlwaXNkZWZpbmVkKE9p ZCB0eXBpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IGE0NDMxODFkNDEuLjg5OTBmZTcyZTMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9pbmNs dWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0yMjEsNiArMjIxLDIwIEBAIGV4dGVybiBDYWNoZWRQ bGFuICpHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJ CSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25l ciwKIAkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKKworLyoKKyAqIENhY2hl ZFBsYW5TdGlsbFZhbGlkCisgKgkJUmV0dXJucyBpZiBhIGNhY2hlZCBnZW5lcmljIHBsYW4gaXMg c3RpbGwgdmFsaWQKKyAqCisgKiBDYWxsZWQgYnkgdGhlIGV4ZWN1dG9yIG9uIGV2ZXJ5IHJlbGF0 aW9uIGxvY2sgdGFrZW4gd2hlbiBpbml0aWFsaXppbmcgdGhlCisgKiBwbGFuIHRyZWUgaW4gdGhl IENhY2hlZFBsYW4uCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxhblN0aWxsVmFs aWQoQ2FjaGVkUGxhbiAqY3BsYW4pCit7CisJcmV0dXJuIGNwbGFuLT5pc192YWxpZDsKK30KKwog ZXh0ZXJuIHZvaWQgUmVsZWFzZUNhY2hlZFBsYW4oQ2FjaGVkUGxhbiAqcGxhbiwgUmVzb3VyY2VP d25lciBvd25lcik7CiAKIGV4dGVybiBib29sIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0 eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9wb3J0YWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCmluZGV4IGFh MDhiMWUwZmMuLjMzMmEwOGNjYjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRh bC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCkBAIC0xMzgsNiArMTM4LDkgQEAg dHlwZWRlZiBzdHJ1Y3QgUG9ydGFsRGF0YQogCVF1ZXJ5Q29tcGxldGlvbiBxYzsJCQkvKiBjb21t YW5kIGNvbXBsZXRpb24gZGF0YSBmb3IgZXhlY3V0ZWQgcXVlcnkgKi8KIAlMaXN0CSAgICpzdG10 czsJCQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAqLwogCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8q IENhY2hlZFBsYW4sIGlmIHN0bXRzIGFyZSBmcm9tIG9uZSAqLworCUxpc3QJICAgKnFkZXNjczsJ CQkvKiBsaXN0IG9mIFF1ZXJ5RGVzY3MgKi8KKwlib29sCQlwbGFuX3ZhbGlkOwkJLyogYXJlIHBs YW4ocykgcmVhZHkgZm9yIGV4ZWN1dGlvbj8gKi8KKwlNZW1vcnlDb250ZXh0IHF1ZXJ5Q29udGV4 dDsJLyogbWVtb3J5IGZvciBRdWVyeURlc2NzIGFuZCBjaGlsZHJlbiAqLwogCiAJUGFyYW1MaXN0 SW5mbyBwb3J0YWxQYXJhbXM7IC8qIHBhcmFtcyB0byBwYXNzIHRvIHF1ZXJ5ICovCiAJUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnY7IC8qIGVudmlyb25tZW50IGZvciBxdWVyeSAqLwpAQCAtMjQy LDYgKzI0NSw3IEBAIGV4dGVybiB2b2lkIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWws CiAJCQkJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcsCiAJCQkJCQkJICBMaXN0ICpzdG10cywK IAkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKTsKK2V4dGVybiB2b2lkIFBvcnRhbFF1ZXJ5Rmlu aXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKIGV4dGVybiBQbGFubmVkU3RtdCAqUG9ydGFsR2V0 UHJpbWFyeVN0bXQoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxDcmVhdGVIb2xk U3RvcmUoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxIYXNoVGFibGVEZWxldGVB bGwodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9N YWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCmluZGV4 IDcwZjI0ZTg0NmQuLjJmY2E4NGQwMjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVs YXlfZXhlY3V0aW9uL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0 aW9uL01ha2VmaWxlCkBAIC04LDcgKzgsOCBAQCBPQkpTID0gXAogCWRlbGF5X2V4ZWN1dGlvbi5v CiAKIElTT0xBVElPTiA9IHBhcnRpdGlvbi1hZGRpdGlvbiBcCi0JICAgIHBhcnRpdGlvbi1yZW1v dmFsLTEKKwkgICAgcGFydGl0aW9uLXJlbW92YWwtMSBcCisJCWNhY2hlZC1wbGFuLXJlcGxhbgog CiBpZmRlZiBVU0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29uZmlnCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyBiL3NyYy90ZXN0 L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCmluZGV4IDdjZDc2ZWIz NGIuLjVkN2EzZTk4NTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0 aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0 aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCkBAIC0xLDE0ICsxLDE4IEBACiAvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCiAgKiBkZWxheV9leGVjdXRpb24uYwotICoJCVRlc3QgbW9kdWxlIHRvIGFsbG93IGRl bGF5IGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGEgcXVlcnkuCisgKgkJVGVzdCBt b2R1bGUgdG8gaW50cm9kdWNlIGRlbGF5IGF0IHZhcmlvdXMgcG9pbnRzIGR1cmluZyBleGVjdXRp b24gb2YgYQorICoJCXF1ZXJ5IHRvIHRlc3QgdGhhdCBleGVjdXRpb24gcHJvY2VlZHMgc2FmZWx5 IGluIGxpZ2h0IG9mIGNvbmN1cnJlbnQKKyAqCQljaGFuZ2VzLgogICoKICAqIFRoZSBkZWxheSBp cyBpbXBsZW1lbnRlZCBieSB0YWtpbmcgYW5kIGltbWVkaWF0ZWx5IHJlbGVhc2luZyBhIHNwZWNp ZmllZAogICogYWR2aXNvcnkgbG9jay4gIElmIGFub3RoZXIgcHJvY2VzcyBoYXMgcHJldmlvdXNs eSB0YWtlbiB0aGF0IGxvY2ssIHRoZQogICogY3VycmVudCBwcm9jZXNzIHdpbGwgYmUgYmxvY2tl ZCB1bnRpbCB0aGUgbG9jayBpcyByZWxlYXNlZDsgb3RoZXJ3aXNlLAogICogdGhlcmUncyBubyBl ZmZlY3QuICBUaGlzIGFsbG93cyBhbiBpc29sYXRpb250ZXN0ZXIgc2NyaXB0IHRvIHJlbGlhYmx5 Ci0gKiB0ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBp biBhbm90aGVyIGJhY2tlbmQKLSAqIGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFu eSBkZXNpcmVkIHF1ZXJ5LgorICogdGVzdCBiZWhhdmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQg YWN0aW9uIGhhcHBlbnMgaW4gYW5vdGhlciBiYWNrZW5kIGluCisgKiBhIGNvdXBsZSBvZiBjYXNl czogMSkgYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkK KyAqIHdoZW4gdXNpbmcgdGhlIHBsYW5uZXJfaG9vaywgMikgYmV0d2VlbiBSZXZhbGlkYXRlQ2Fj aGVkUXVlcnkoKSBhbmQKKyAqIEV4ZWN1dG9yU3RhcnQoKSB3aGVuIHVzaW5nIHRoZSBFeGVjdXRv clN0YXJ0X2hvb2suCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjMsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKgpAQCAtMjIsNiArMjYsNyBAQAogCiAjaW5jbHVk ZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUg Im9wdGltaXplci9wbGFubmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9ndWMuaCIKQEAgLTMyLDkgKzM3LDExIEBAIFBHX01PRFVMRV9NQUdJQzsKIAog LyogR1VDOiBhZHZpc29yeSBsb2NrIElEIHRvIHVzZS4gIFplcm8gZGlzYWJsZXMgdGhlIGZlYXR1 cmUuICovCiBzdGF0aWMgaW50CXBvc3RfcGxhbm5pbmdfbG9ja19pZCA9IDA7CitzdGF0aWMgaW50 CWV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAwOwogCi0vKiBTYXZlIHByZXZpb3VzIHBsYW5uZXIg aG9vayB1c2VyIHRvIGJlIGEgZ29vZCBjaXRpemVuICovCisvKiBTYXZlIHByZXZpb3VzIGhvb2sg dXNlcnMgdG8gYmUgYSBnb29kIGNpdGl6ZW4gKi8KIHN0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBw cmV2X3BsYW5uZXJfaG9vayA9IE5VTEw7CitzdGF0aWMgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUg cHJldl9FeGVjdXRvclN0YXJ0X2hvb2sgPSBOVUxMOwogCiAKIC8qIHBsYW5uZXJfaG9vayBmdW5j dGlvbiB0byBwcm92aWRlIHRoZSBkZXNpcmVkIGRlbGF5ICovCkBAIC03MCwxMSArNzcsNDEgQEAg ZGVsYXlfZXhlY3V0aW9uX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9z dHJpbmcsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogcGxhbm5lcl9ob29rIGZ1bmN0aW9uIHRv IHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVsYXkgKi8KK3N0YXRpYyB2b2lkCitkZWxheV9leGVjdXRp b25fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK3sKKwkv KiBJZiBlbmFibGVkLCBkZWxheSBieSB0YWtpbmcgYW5kIHJlbGVhc2luZyB0aGUgc3BlY2lmaWVk IGxvY2sgKi8KKwlpZiAoZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCAhPSAwKQorCXsKKwkJRGlyZWN0 RnVuY3Rpb25DYWxsMShwZ19hZHZpc29yeV9sb2NrX2ludDgsCisJCQkJCQkJSW50NjRHZXREYXR1 bSgoaW50NjQpIGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQpKTsKKwkJRGlyZWN0RnVuY3Rpb25DYWxs MShwZ19hZHZpc29yeV91bmxvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkg ZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkpOworCisJCS8qCisJCSAqIEVuc3VyZSB0aGF0IHdlIG5v dGljZSBhbnkgcGVuZGluZyBpbnZhbGlkYXRpb25zLCBzaW5jZSB0aGUgYWR2aXNvcnkKKwkJICog bG9jayBmdW5jdGlvbnMgZG9uJ3QgZG8gdGhpcy4KKwkJICovCisJCUFjY2VwdEludmFsaWRhdGlv bk1lc3NhZ2VzKCk7CisJfQorCisJLyogTm93IHN0YXJ0IHRoZSBleGVjdXRvciwgcG9zc2libHkg dmlhIGEgcHJldmlvdXMgaG9vayB1c2VyICovCisJaWYgKHByZXZfRXhlY3V0b3JTdGFydF9ob29r KQorCQlwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayhxdWVyeURlc2MsIGVmbGFncyk7CisJZWxzZQor CQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCWlmIChleGVj dXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJCWVsb2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0 b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzICVzIiwKKwkJCSBxdWVyeURlc2MtPmNwbGFuLT5pc192 YWxpZCA/ICJ2YWxpZCIgOiAibm90IHZhbGlkIik7Cit9CisKIC8qIE1vZHVsZSBsb2FkIGZ1bmN0 aW9uICovCiB2b2lkCiBfUEdfaW5pdCh2b2lkKQogewotCS8qIFNldCB1cCB0aGUgR1VDIHRvIGNv bnRyb2wgd2hpY2ggbG9jayBpcyB1c2VkICovCisJLyogU2V0IHVwIEdVQ3MgdG8gY29udHJvbCB3 aGljaCBsb2NrIGlzIHVzZWQgKi8KIAlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgiZGVsYXlfZXhl Y3V0aW9uLnBvc3RfcGxhbm5pbmdfbG9ja19pZCIsCiAJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5 IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3VubG9ja2VkIGFmdGVyIHBsYW5uaW5nLiIsCiAJCQkJCQkJ Ilplcm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIsCkBAIC04NiwxMCArMTIzLDIyIEBAIF9QR19pbml0 KHZvaWQpCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMLAogCQkJCQkJCU5VTEwpOwotCisJRGVm aW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2Nr X2lkIiwKKwkJCQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5s b2NrZWQgYmVmb3JlIHN0YXJ0aW5nIGV4ZWN1dGlvbi4iLAorCQkJCQkJCSJaZXJvIGRpc2FibGVz IHRoZSBkZWxheS4iLAorCQkJCQkJCSZleGVjdXRvcl9zdGFydF9sb2NrX2lkLAorCQkJCQkJCTAs CisJCQkJCQkJMCwgSU5UX01BWCwKKwkJCQkJCQlQR0NfVVNFUlNFVCwKKwkJCQkJCQkwLAorCQkJ CQkJCU5VTEwsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMKTsKIAlNYXJrR1VDUHJlZml4UmVz ZXJ2ZWQoImRlbGF5X2V4ZWN1dGlvbiIpOwogCi0JLyogSW5zdGFsbCBvdXIgaG9vayAqLworCS8q IEluc3RhbGwgb3VyIGhvb2tzLiAqLwogCXByZXZfcGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29r OwogCXBsYW5uZXJfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9wbGFubmVyOworCXByZXZfRXhlY3V0 b3JTdGFydF9ob29rID0gRXhlY3V0b3JTdGFydF9ob29rOworCUV4ZWN1dG9yU3RhcnRfaG9vayA9 IGRlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dCBi L3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJl cGxhbi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNGY0NTBiOWQ5 YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4 cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQKQEAgLTAsMCArMSwxMTcgQEAKK1BhcnNlZCB0 ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAg czJsb2NrIHMxZXhlYyBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDogU0VUIHBsYW5fY2Fj aGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICog RlJPTSBmb292IFdIRVJFIGEgPSAkMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUg cSAoMSk7CitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAg ICAgICAgICAgICAgICAgICAgIAorICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMSBmb29f MSAgICAgICAKKyAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9ICQxKSAgICAgICAgICAgICAgCisg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMV9hX2lkeAorICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoYSA9ICQxKSAgICAgICAgICAKKyg2IHJvd3MpCisKK3N0ZXAgczJsb2Nr OiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjOiBM T0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jf c3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBx ICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzExX2E7Citz dGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlz b3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJv dykKKworc3RlcCBzMWV4ZWM6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVk IEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBG aW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5k ICAgICAgICAgICAgICAgICAgICAgICAKKyAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgCisg IC0+ICBTZXEgU2NhbiBvbiBmb28xMSBmb29fMQorICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAg ICAKKyg0IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDIgczJsb2NrIHMx ZXhlYzIgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXAyOiBTRVQgcGxhbl9jYWNoZV9tb2Rl ID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dy ZWdhdGUgPSBvbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiA9IG9uOworCQkg IFBSRVBBUkUgcTIgQVMgU0VMRUNUIHQxLmEsIGNvdW50KHQyLmIpIEZST00gZm9vIHQxLCBmb28g dDIgV0hFUkUgdDEuYSA9IHQyLmEgR1JPVVAgQlkgMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYp IEVYRUNVVEUgcTI7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNo ZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBHcm91cEFn Z3JlZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg ICAgIEdyb3VwIEtleTogdDEuYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0MS5hID0gdDIuYSkgICAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4g dXNpbmcgZm9vMTFfYV9pZHggb24gZm9vMTEgdDEgCisgICAgICAgICAgICAgIC0+ICBNYXRlcmlh bGl6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg ICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIGZvbzExX2FfaWR4IG9uIGZvbzExIHQyCisgIC0+ICBH cm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgIEdyb3VwIEtleTogdDFfMS5hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2luICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0MV8xLmEgPSB0 Ml8xLmEpICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg IFNvcnQgS2V5OiB0MV8xLmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28yIHQxXzEgICAgICAgICAgICAgICAgICAgCisg ICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8xLmEgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28y IHQyXzEgICAgICAgICAgICAgICAgICAgCisoMTggcm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVD VCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMyOiBMT0FEICdk ZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgPHdh aXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzExX2E7CitzdGVwIHMydW5s b2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9j aworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3Rl cCBzMWV4ZWMyOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRv clN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQg RXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgIC0+ICBHcm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgR3JvdXAgS2V5OiB0MS5hICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAg TWVyZ2UgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIE1lcmdlIENv bmQ6ICh0MS5hID0gdDIuYSkgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDEuYSAgICAgICAg ICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMSB0MSAKKyAgICAg ICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg ICAgICBTb3J0IEtleTogdDIuYSAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBmb28xMSB0MiAKKyAgLT4gIEdyb3VwQWdncmVnYXRlICAgICAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICBHcm91cCBLZXk6IHQxXzEuYSAgICAgICAgICAgICAgICAgICAg CisgICAgICAgIC0+ICBNZXJnZSBKb2luICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg ICAgICAgTWVyZ2UgQ29uZDogKHQxXzEuYSA9IHQyXzEuYSkgIAorICAgICAgICAgICAgICAtPiAg U29ydCAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5 OiB0MV8xLmEgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZv bzIgdDFfMQorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8xLmEgICAgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzIgdDJfMQorKDIxIHJvd3MpCisKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLXJl cGxhbi5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVk LXBsYW4tcmVwbGFuLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u NjdjZmVkNzA0NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhl Y3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxhbi5zcGVjCkBAIC0wLDAgKzEsNTAgQEAKKyMg VGVzdCB0byBjaGVjayB0aGF0IGludmFsaWRhdGlvbiBvZiBhIGNhY2hlZCBwbGFuIGR1cmluZyBF eGVjdXRvclN0YXJ0CisjIGNvcnJlY3RseSB0cmlnZ2VycyByZXBsYW5uaW5nIGFuZCByZS1leGVj dXRpb24uCisKK3NldHVwCit7CisgIENSRUFURSBUQUJMRSBmb28gKGEgaW50LCBiIHRleHQpIFBB UlRJVElPTiBCWSBMSVNUKGEpOworICBDUkVBVEUgVEFCTEUgZm9vMSBQQVJUSVRJT04gT0YgZm9v IEZPUiBWQUxVRVMgSU4gKDEpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKKyAgQ1JFQVRFIFRBQkxF IGZvbzExIFBBUlRJVElPTiBPRiBmb28xIEZPUiBWQUxVRVMgSU4gKDEpOworICBDUkVBVEUgSU5E RVggZm9vMTFfYSBPTiBmb28xIChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzIgUEFSVElUSU9OIE9G IGZvbyBGT1IgVkFMVUVTIElOICgyKTsKKyAgQ1JFQVRFIFZJRVcgZm9vdiBBUyBTRUxFQ1QgKiBG Uk9NIGZvbzsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBWSUVXIGZvb3Y7CisgIERST1AgVEFC TEUgZm9vOworfQorCitzZXNzaW9uICJzMSIKKyMgQ3JlYXRlcyBhIHByZXBhcmVkIHN0YXRlbWVu dCBhbmQgZm9yY2VzIGNyZWF0aW9uIG9mIGEgZ2VuZXJpYyBwbGFuCitzdGVwICJzMXByZXAiICAg eyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUg cSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQxOworCQkgIEVYUExBSU4gKENPU1RT IE9GRikgRVhFQ1VURSBxICgxKTsgfQorCitzdGVwICJzMXByZXAyIiAgIHsgU0VUIHBsYW5fY2Fj aGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndp c2VfYWdncmVnYXRlID0gb247CisJCSAgU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gPSBv bjsKKwkJICBQUkVQQVJFIHEyIEFTIFNFTEVDVCB0MS5hLCBjb3VudCh0Mi5iKSBGUk9NIGZvbyB0 MSwgZm9vIHQyIFdIRVJFIHQxLmEgPSB0Mi5hIEdST1VQIEJZIDE7CisJCSAgRVhQTEFJTiAoQ09T VFMgT0ZGKSBFWEVDVVRFIHEyOyB9CisjIEV4ZWN1dGVzIGEgZ2VuZXJpYyBwbGFuCitzdGVwICJz MWV4ZWMiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9u LmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYp IEVYRUNVVEUgcSAoMSk7IH0KK3N0ZXAgInMxZXhlYzIiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9u JzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0 NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IH0KKworc2Vzc2lvbiAiczIi CitzdGVwICJzMmxvY2siCXsgU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOyB9CitzdGVw ICJzMnVubG9jayIJeyBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsgfQorc3RlcCAi czJkcm9waSIJeyBEUk9QIElOREVYIGZvbzExX2E7IH0KKworIyBXaGlsZSAiczFleGVjIiB3YWl0 cyB0byBhY3F1aXJlIHRoZSBhZHZpc29yeSBsb2NrLCAiczJkcm9wIiBpcyBhYmxlIHRvIGRyb3AK KyMgdGhlIGluZGV4IGJlaW5nIHVzZWQgaW4gdGhlIGNhY2hlZCBwbGFuIGZvciBgcWAsIHNvIHdo ZW4gInMxZXhlYyIgaXMgdGhlbgorIyB1bmJsb2NrZWQgYW5kIGluaXRpYWxpemVzIHRoZSBjYWNo ZWQgcGxhbiBmb3IgZXhlY3V0aW9uLCBpdCBkZXRlY3RzIHRoZQorIyBjb25jdXJyZW50IGluZGV4 IGRyb3AgYW5kIGNhdXNlcyB0aGUgY2FjaGVkIHBsYW4gdG8gYmUgZGlzY2FyZGVkIGFuZAorIyBy ZWNyZWF0ZWQgd2l0aG91dCB0aGUgaW5kZXguCitwZXJtdXRhdGlvbiAiczFwcmVwIiAiczJsb2Nr IiAiczFleGVjIiAiczJkcm9waSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDIiICJz MmxvY2siICJzMWV4ZWMyIiAiczJkcm9waSIgInMydW5sb2NrIgotLSAKMi4zNS4zCgo= --000000000000e82ec605f77c953e--