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 1pXjNJ-0000jI-MK for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Mar 2023 13:53:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pXjNI-00084g-8u for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Mar 2023 13:53:36 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pXjNH-00080x-M3 for pgsql-hackers@lists.postgresql.org; Thu, 02 Mar 2023 13:53:35 +0000 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pXjNA-0006wz-DL for pgsql-hackers@postgresql.org; Thu, 02 Mar 2023 13:53:35 +0000 Received: by mail-pl1-x62c.google.com with SMTP id i10so17575916plr.9 for ; Thu, 02 Mar 2023 05:53:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=HIHyvCjSWlbwzq/ejgd9Kw6UbMmp6v27klTlx0W/qjE=; b=IqN4rokFBbsfZ8aKLu4U1J2fngF6s/noSSEb+egQb2NheN+EyqnKCIjOJQox/qdzMs A6sAxrxT8NosuXU0QwXTC8K8RsGC+S5vqtzlUBCmo6XlJat/tVN9HhGS4hr3LqOhCmOI LsIor+ATA8wyjBDK+vrrLIp+q1gIr64AfD76RiYcffb3gBDKM0SmlAeggzO/e3zTw8Aj tzmmjBzbTwADdaQ5GBk7eDyeB5PmETmxtoWPT80PYHgmu4No5bHZsrMnZgsy6dj6d6mO qZFBPIBMe7QRsPzaltk5LvCl2p2IB7GZVMGGfMQta+icF6jW71nYDIdQT8I705j9lGNa hm7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=HIHyvCjSWlbwzq/ejgd9Kw6UbMmp6v27klTlx0W/qjE=; b=U8XHiAtfztev4IS+o4gy4ojUojIMXEdBGrobS0HvTXTQmlWznj8hEPipolf0NCK8be elAF9KyIvUFvcus3qGJQLxwHqZEaco+HVwtOVjjyklXFdIgcd4ssUrtvQEjq/s0u4ahf mMO2wsR5arRL67PYzomz4JOk3XUXCAjkdCM4A5rG9CRFMxv6Uh88E91vyj1UgBN/iSsQ uxZtD00ucngVPnZsgu1xwWGvuHz6zvyw+rmY7HpMgxn9F97upS0rL8kvj8SRHzGoFYQs XH17LHWiy4MK66tH7yBDJzrkn4uLvcwlRnI2SazD8udNyeKNJKiIg/gKl3NReWLOvmD7 ub6Q== X-Gm-Message-State: AO0yUKV/8t81SOtwZj2N75WjP86EznsZIcqzTVMoHOsvgAPo76cNRRit aIsHWTwUpc2BrRU3hgEPbCGH5v8uV5XbcCsuOjo= X-Google-Smtp-Source: AK7set+63zC9l3z/SV+fk1AKdpMH/8LPXnmq1u8epTcdRq720UGwGTJ1cFgvADoz1ufDp+kAgTfYo1pigQ6u2c2GWmI= X-Received: by 2002:a17:902:efc3:b0:19a:6b55:a44d with SMTP id ja3-20020a170902efc300b0019a6b55a44dmr986383plb.1.1677765205423; Thu, 02 Mar 2023 05:53:25 -0800 (PST) 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: Thu, 2 Mar 2023 22:52:53 +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="00000000000016c38405f5eb27f5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000016c38405f5eb27f5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 8, 2023 at 7:31 PM Amit Langote wrote= : > On Tue, Feb 7, 2023 at 23:38 Andres Freund wrote: >> The tests seem to frequently hang on freebsd: >> https://cirrus-ci.com/github/postgresql-cfbot/postgresql/commitfest%2F42= %2F3478 > > Thanks for the heads up. I=E2=80=99ve noticed this one too, though could= n=E2=80=99t find the testrun artifacts like I could get for some other fail= ures (on other cirrus machines). Has anyone else been a similar situation? 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. --=20 Thanks, Amit Langote EDB: http://www.enterprisedb.com --00000000000016c38405f5eb27f5 Content-Type: application/octet-stream; name="v34-0001-Move-AcquireExecutorLocks-s-responsibility-into-.patch" Content-Disposition: attachment; filename="v34-0001-Move-AcquireExecutorLocks-s-responsibility-into-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ler60jnt0 RnJvbSAxZThiNTMzM2E5NjE5ZWM4N2MzZTMxYzIwMzQ0MjIzMDlhNDcxOWFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyMCBKYW4gMjAyMyAxNjo1MjozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjM0XSBN b3ZlIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkncyByZXNwb25zaWJpbGl0eSBpbnRvIHRoZQogZXhl Y3V0b3IKCi0tLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgICAg IHwgICA0ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgICAgICAgICB8 ICAgNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgICAgICAgICAgICAgIHwg ICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAx NDIgKysrKystLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgICAgICAgICAgICB8 ICAxNiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAgIHwg IDMwICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAx MDUgKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgICAgICAg fCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyAgICAgICAgICB8 ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyAgICAgICAgICAgfCAg IDUgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAgICAgICAgICAgIHwgICA1 ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jICAgICAgICAgICAgICAgIHwgICAyICsK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICAgICAgICB8ICAgNCArCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMgICAgICAgICAgfCAgIDIgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgICAgIHwgICA0ICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHYXRoZXIuYyAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUdyb3VwLmMgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVIYXNoLmMgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSGFzaGpvaW4uYyAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluY3JlbWVudGFsU29ydC5jICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmRleG9ubHlzY2FuLmMgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxp bWl0LmMgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2Nr Um93cy5jICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJp YWwuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUu YyAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVu ZC5jICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMg ICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMg ICAgICAgIHwgICA3ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jICAgICAg ICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jICAgICAg ICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgICAg IHwgICA0ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYyAgICAgICAgICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jICAgICAgICAgfCAg IDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgICAgIHwgICAy ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jICAgICAgICAgICAgICB8ICAgMiAr CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jICAgICAgICAgICAgICAgfCAgIDIgKwog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jICAgICAgIHwgICAyICsKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyAgICAgICB8ICAgMiArCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jICAgICAgICAgICAgfCAgIDIgKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAgICAgICAgICAgfCAgNDYgKystCiBzcmMvYmFja2Vu ZC9ub2Rlcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv bm9kZXMvZ2VuX25vZGVfc3VwcG9ydC5wbCAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL25v ZGVzL291dGZ1bmNzLmMgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9ub2Rl cy9yZWFkZnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3NldHJlZnMuYyAgICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9yZXdyaXRlL3Jl d3JpdGVIYW5kbGVyLmMgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sbWdyLmMgICAgICAgICAgICAgICB8ICA0NSArKysKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYyAgICAgICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC90Y29wL3BxdWVyeS5j ICAgICAgICAgICAgICAgICAgICAgfCAzMDcgKysrKysrKysrLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAgICAgICAgICAgfCAgMjEgKysKIHNyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8IDEzNCArKy0tLS0tLQogc3JjL2Jh Y2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAgICAgICAgIHwgICA2ICsKIHNyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgICAgICAgICB8ICAgNyArLQogc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAgICAgICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgICB8ICAxMiArCiBzcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvbm9k ZXMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVz L3BhdGhub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9s bWdyLmggICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNj YWNoZS5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2Fj aGUuaCAgICAgICAgICAgICAgICAgfCAgMTUgKwogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgg ICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0 aW9uL01ha2VmaWxlICAgICB8ICAgMyArLQogLi4uL21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2Rl bGF5X2V4ZWN1dGlvbi5jIHwgIDYzICsrKy0KIC4uLi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBs YW4ub3V0ICAgICAgICAgICB8ICA0MyArKysKIC4uLi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4u c3BlYyAgICAgICAgICAgICB8ICAzOSArKysKIDc4IGZpbGVzIGNoYW5nZWQsIDg2NiBpbnNlcnRp b25zKCspLCAzNDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9k dWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2Nh Y2hlZC1wbGFuLXJlcGxhbi5zcGVjCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcv cG9zdGdyZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRl eCBmNTkyNmFiODlkLi45M2YzZjhiNWQxIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zk dy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcu YwpAQCAtMjY1OSw3ICsyNjU5LDExIEBAIHBvc3RncmVzQmVnaW5EaXJlY3RNb2RpZnkoRm9yZWln blNjYW5TdGF0ZSAqbm9kZSwgaW50IGVmbGFncykKIAkvKiBHZXQgaW5mbyBhYm91dCBmb3JlaWdu IHRhYmxlLiAqLwogCXJ0aW5kZXggPSBub2RlLT5yZXN1bHRSZWxJbmZvLT5yaV9SYW5nZVRhYmxl SW5kZXg7CiAJaWYgKGZzcGxhbi0+c2Nhbi5zY2FucmVsaWQgPT0gMCkKKwl7CiAJCWRtc3RhdGUt PnJlbCA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgcnRpbmRleCwgZWZsYWdzKTsKKwkJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybjsKKwl9CiAJZWxzZQog CQlkbXN0YXRlLT5yZWwgPSBub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb247CiAJdGFibGUgPSBH ZXRGb3JlaWduVGFibGUoUmVsYXRpb25HZXRSZWxpZChkbXN0YXRlLT5yZWwpKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weXRvLmMKaW5kZXggODA0M2I0ZTliMS4uYTQzOGM1NDdlOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRv LmMKQEAgLTU1OCw3ICs1NTgsOCBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CSgoRFJfY29weSAqKSBkZXN0KS0+Y3N0YXRlID0gY3N0YXRlOwogCiAJCS8qIENyZWF0ZSBhIFF1 ZXJ5RGVzYyByZXF1ZXN0aW5nIG5vIG91dHB1dCAqLwotCQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENy ZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJY3N0YXRlLT5xdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwKKwkJCQkJCQkJCQkJcHN0YXRlLT5w X3NvdXJjZXRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJ CUludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CkBAIC01 NjksNiArNTcwLDcgQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkgKiBFeGVj dXRvclN0YXJ0IGNvbXB1dGVzIGEgcmVzdWx0IHR1cGRlc2MgZm9yIHVzCiAJCSAqLwogCQlFeGVj dXRvclN0YXJ0KGNzdGF0ZS0+cXVlcnlEZXNjLCAwKTsKKwkJQXNzZXJ0KGNzdGF0ZS0+cXVlcnlE ZXNjLT5wbGFuX3ZhbGlkKTsKIAogCQl0dXBEZXNjID0gY3N0YXRlLT5xdWVyeURlc2MtPnR1cERl c2M7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXggZDZjNmQ1MTRmMy4uYTU1Yjg1MTU3 NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBAIC0zMjUsNyArMzI1LDcgQEAgRXhlY0NyZWF0 ZVRhYmxlQXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVUYWJsZUFzU3RtdCAqc3RtdCwKIAkJ VXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCQkvKiBDcmVhdGUgYSBRdWVyeURl c2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQkJcXVlcnlE ZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQlxdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcHN0YXRlLT5wX3NvdXJjZXRleHQs CiAJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJ CQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4 IGU1N2JkYTdiNjIuLmU1NmNjZGNhNjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTM4NCw2 ICszODQsNyBAQCBFeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9u cywKIAllbHNlCiAJewogCQlQbGFubmVkU3RtdCAqcGxhbjsKKwkJUXVlcnlEZXNjICAgKnF1ZXJ5 RGVzYzsKIAkJaW5zdHJfdGltZQlwbGFuc3RhcnQsCiAJCQkJCXBsYW5kdXJhdGlvbjsKIAkJQnVm ZmVyVXNhZ2UgYnVmdXNhZ2Vfc3RhcnQsCkBAIC00MDYsMTIgKzQwNyw4OSBAQCBFeHBsYWluT25l UXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJCUJ1ZmZlclVzYWdlQWNj dW1EaWZmKCZidWZ1c2FnZSwgJnBnQnVmZmVyVXNhZ2UsICZidWZ1c2FnZV9zdGFydCk7CiAJCX0K IAorCQlxdWVyeURlc2MgPSBFeHBsYWluUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5U3RyaW5n LCBpbnRvLCBlcywKKwkJCQkJCQkJCSBwYXJhbXMsIHF1ZXJ5RW52KTsKKwkJQXNzZXJ0KHF1ZXJ5 RGVzYyk7CisKIAkJLyogcnVuIGl0IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwot CQlFeHBsYWluT25lUGxhbihwbGFuLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVl cnlFbnYsCisJCUV4cGxhaW5PbmVQbGFuKHF1ZXJ5RGVzYywgaW50bywgZXMsIHF1ZXJ5U3RyaW5n LCBwYXJhbXMsIHF1ZXJ5RW52LAogCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMg PyAmYnVmdXNhZ2UgOiBOVUxMKSk7CiAJfQogfQogCisvKgorICogRXhwbGFpblF1ZXJ5RGVzYwor ICoJCVNldCB1cCBRdWVyeURlc2MgZm9yIEVYUExBSU5pbmcgYSBnaXZlbiBwbGFuCisgKgorICog VGhpcyByZXR1cm5zIE5VTEwgaWYgY3BsYW4gaXMgZm91bmQgdG8gaGF2ZSBiZWVuIGludmFsaWRh dGVkIHNpbmNlIGl0cworICogY3JlYXRpb24uCisgKi8KK1F1ZXJ5RGVzYyAqCitFeHBsYWluUXVl cnlEZXNjKFBsYW5uZWRTdG10ICpzdG10LCBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCQkgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCisJ CQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKK3sK KwlRdWVyeURlc2MgICpxdWVyeURlc2M7CisJRGVzdFJlY2VpdmVyICpkZXN0OworCWludAkJCWVm bGFnczsKKwlpbnQJCQlpbnN0cnVtZW50X29wdGlvbiA9IDA7CisKKwkvKgorCSAqIE5vcm1hbGx5 IHdlIGRpc2NhcmQgdGhlIHF1ZXJ5J3Mgb3V0cHV0LCBidXQgaWYgZXhwbGFpbmluZyBDUkVBVEUg VEFCTEUKKwkgKiBBUywgd2UnZCBiZXR0ZXIgdXNlIHRoZSBhcHByb3ByaWF0ZSB0dXBsZSByZWNl aXZlci4KKwkgKi8KKwlpZiAoaW50bykKKwkJZGVzdCA9IENyZWF0ZUludG9SZWxEZXN0UmVjZWl2 ZXIoaW50byk7CisJZWxzZQorCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKKworCWlmIChlcy0+YW5h bHl6ZSAmJiBlcy0+dGltaW5nKQorCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1RJ TUVSOworCWVsc2UgaWYgKGVzLT5hbmFseXplKQorCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNU UlVNRU5UX1JPV1M7CisKKwlpZiAoZXMtPmJ1ZmZlcnMpCisJCWluc3RydW1lbnRfb3B0aW9uIHw9 IElOU1RSVU1FTlRfQlVGRkVSUzsKKwlpZiAoZXMtPndhbCkKKwkJaW5zdHJ1bWVudF9vcHRpb24g fD0gSU5TVFJVTUVOVF9XQUw7CisKKwkvKgorCSAqIFVzZSBhIHNuYXBzaG90IHdpdGggYW4gdXBk YXRlZCBjb21tYW5kIElEIHRvIGVuc3VyZSB0aGlzIHF1ZXJ5IHNlZXMKKwkgKiByZXN1bHRzIG9m IGFueSBwcmV2aW91c2x5IGV4ZWN1dGVkIHF1ZXJpZXMuCisJICovCisJUHVzaENvcGllZFNuYXBz aG90KEdldEFjdGl2ZVNuYXBzaG90KCkpOworCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElk KCk7CisKKwkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeSAqLworCXF1ZXJ5RGVz YyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LCBjcGxhbiwgcXVlcnlTdHJpbmcsCisJCQkJCQkJCUdl dEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJZGVzdCwgcGFyYW1z LCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRpb24pOworCisJLyogU2VsZWN0IGV4ZWN1dGlvbiBv cHRpb25zICovCisJaWYgKGVzLT5hbmFseXplKQorCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0 IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCisJZWxzZQorCQllZmxhZ3MgPSBFWEVDX0ZMQUdf RVhQTEFJTl9PTkxZOworCWlmIChpbnRvKQorCQllZmxhZ3MgfD0gR2V0SW50b1JlbEVGbGFncyhp bnRvKTsKKworCS8qCisJICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4g Zm9yIGV4ZWN1dGlvbi4gIEEgY2FjaGVkIHBsYW4KKwkgKiBtYXkgZ2V0IGludmFsaWRhdGVkIGFz IHdlJ3JlIGRvaW5nIHRoYXQuCisJICovCisJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFn cyk7CisJaWYgKCFxdWVyeURlc2MtPnBsYW5fdmFsaWQpCisJeworCQkvKiBDbGVhbiB1cC4gKi8K KwkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKwkJRnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOwor CQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlyZXR1cm4gcXVl cnlEZXNjOworfQorCiAvKgogICogRXhwbGFpbk9uZVV0aWxpdHkgLQogICoJICBwcmludCBvdXQg dGhlIGV4ZWN1dGlvbiBwbGFuIGZvciBvbmUgdXRpbGl0eSBzdGF0ZW1lbnQKQEAgLTUxNSwyOSAr NTkzLDE2IEBAIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNl ICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogICogdG8gY2FsbCBpdC4KICAqLwogdm9pZAotRXhw bGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBF eHBsYWluU3RhdGUgKmVzLAorRXhwbGFpbk9uZVBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCisJ CQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJICAgY29uc3QgY2hh ciAqcXVlcnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAgUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCSAgIGNv bnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSkKIHsKLQlEZXN0UmVjZWl2ZXIgKmRlc3Q7Ci0JUXVl cnlEZXNjICAqcXVlcnlEZXNjOwogCWluc3RyX3RpbWUJc3RhcnR0aW1lOwogCWRvdWJsZQkJdG90 YWx0aW1lID0gMDsKLQlpbnQJCQllZmxhZ3M7Ci0JaW50CQkJaW5zdHJ1bWVudF9vcHRpb24gPSAw OwotCi0JQXNzZXJ0KHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSk7CiAK LQlpZiAoZXMtPmFuYWx5emUgJiYgZXMtPnRpbWluZykKLQkJaW5zdHJ1bWVudF9vcHRpb24gfD0g SU5TVFJVTUVOVF9USU1FUjsKLQllbHNlIGlmIChlcy0+YW5hbHl6ZSkKLQkJaW5zdHJ1bWVudF9v cHRpb24gfD0gSU5TVFJVTUVOVF9ST1dTOwotCi0JaWYgKGVzLT5idWZmZXJzKQotCQlpbnN0cnVt ZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7Ci0JaWYgKGVzLT53YWwpCi0JCWluc3Ry dW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfV0FMOworCUFzc2VydChxdWVyeURlc2MtPnBsYW5u ZWRzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSk7CiAKIAkvKgogCSAqIFdlIGFsd2F5 cyBjb2xsZWN0IHRpbWluZyBmb3IgdGhlIGVudGlyZSBzdGF0ZW1lbnQsIGV2ZW4gd2hlbiBub2Rl LWxldmVsCkBAIC01NDYsMzggKzYxMSw2IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkgKi8KIAlJ TlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0dGltZSk7CiAKLQkvKgotCSAqIFVzZSBhIHNuYXBz aG90IHdpdGggYW4gdXBkYXRlZCBjb21tYW5kIElEIHRvIGVuc3VyZSB0aGlzIHF1ZXJ5IHNlZXMK LQkgKiByZXN1bHRzIG9mIGFueSBwcmV2aW91c2x5IGV4ZWN1dGVkIHF1ZXJpZXMuCi0JICovCi0J UHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNuYXBzaG90KCkpOwotCVVwZGF0ZUFjdGl2ZVNu YXBzaG90Q29tbWFuZElkKCk7Ci0KLQkvKgotCSAqIE5vcm1hbGx5IHdlIGRpc2NhcmQgdGhlIHF1 ZXJ5J3Mgb3V0cHV0LCBidXQgaWYgZXhwbGFpbmluZyBDUkVBVEUgVEFCTEUKLQkgKiBBUywgd2Un ZCBiZXR0ZXIgdXNlIHRoZSBhcHByb3ByaWF0ZSB0dXBsZSByZWNlaXZlci4KLQkgKi8KLQlpZiAo aW50bykKLQkJZGVzdCA9IENyZWF0ZUludG9SZWxEZXN0UmVjZWl2ZXIoaW50byk7Ci0JZWxzZQot CQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKLQotCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhl IHF1ZXJ5ICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRzdG10LCBxdWVy eVN0cmluZywKLQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAot CQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbik7Ci0KLQkv KiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8KLQlpZiAoZXMtPmFuYWx5emUpCi0JCWVmbGFn cyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KLQllbHNlCi0J CWVmbGFncyA9IEVYRUNfRkxBR19FWFBMQUlOX09OTFk7Ci0JaWYgKGludG8pCi0JCWVmbGFncyB8 PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOwotCi0JLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHBy ZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNj LCBlZmxhZ3MpOwotCiAJLyogRXhlY3V0ZSB0aGUgcGxhbiBmb3Igc3RhdGlzdGljcyBpZiBhc2tl ZCBmb3IgKi8KIAlpZiAoZXMtPmFuYWx5emUpCiAJewpAQCAtNDg1MSw2ICs0ODg0LDE3IEBAIEV4 cGxhaW5EdW1teUdyb3VwKGNvbnN0IGNoYXIgKm9ianR5cGUsIGNvbnN0IGNoYXIgKmxhYmVsbmFt ZSwgRXhwbGFpblN0YXRlICplcykKIAl9CiB9CiAKKy8qCisgKiBEaXNjYXJkIG91dHB1dCBidWZm ZXIgZm9yIGEgZnJlc2ggcmVzdGFydC4KKyAqLwordm9pZAorRXhwbGFpblJlc2V0T3V0cHV0KEV4 cGxhaW5TdGF0ZSAqZXMpCit7CisJQXNzZXJ0KGVzLT5zdHIpOworCXJlc2V0U3RyaW5nSW5mbyhl cy0+c3RyKTsKKwlFeHBsYWluQmVnaW5PdXRwdXQoZXMpOworfQorCiAvKgogICogRW1pdCB0aGUg c3RhcnQtb2Ytb3V0cHV0IGJvaWxlcnBsYXRlLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMK aW5kZXggYjE1MDljYzUwNS4uZTJmNzljYzdhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMK QEAgLTc4MCw2ICs3ODAsNyBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hhciAqc3FsKQog CQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3Rt dCwKKwkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCXNxbCwKIAkJCQkJCQkJCQlHZXRBY3RpdmVT bmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvbWF0dmlldy5jCmluZGV4IGZiMzBkMjU5NWMuLjE3ZDQ1N2NjZmIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9t YXR2aWV3LmMKQEAgLTQwOSw3ICs0MDksNyBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZpbGwoRGVz dFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJVXBkYXRlQWN0aXZlU25hcHNob3RDb21t YW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRv IG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu LCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwg cXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hv dCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNt ZHMuYwppbmRleCA4YTNjZjk4Y2NlLi4zYzM0YWI0MzUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFs Y21kcy5jCkBAIC0xNDYsNiArMTQ2LDcgQEAgUGVyZm9ybUN1cnNvck9wZW4oUGFyc2VTdGF0ZSAq cHN0YXRlLCBEZWNsYXJlQ3Vyc29yU3RtdCAqY3N0bXQsIFBhcmFtTGlzdEluZm8gcGEKIAlQb3J0 YWxTdGFydChwb3J0YWwsIHBhcmFtcywgMCwgR2V0QWN0aXZlU25hcHNob3QoKSk7CiAKIAlBc3Nl cnQocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1NFTEVDVCk7CisJQXNzZXJ0KHBvcnRh bC0+cGxhbl92YWxpZCk7CiAKIAkvKgogCSAqIFdlJ3JlIGRvbmU7IHRoZSBxdWVyeSB3b24ndCBh Y3R1YWxseSBiZSBydW4gdW50aWwgUGVyZm9ybVBvcnRhbEZldGNoIGlzCkBAIC0yNDksNiArMjUw LDE3IEBAIFBlcmZvcm1Qb3J0YWxDbG9zZShjb25zdCBjaGFyICpuYW1lKQogCVBvcnRhbERyb3Ao cG9ydGFsLCBmYWxzZSk7CiB9CiAKKy8qCisgKiBSZWxlYXNlIGEgcG9ydGFsJ3MgUXVlcnlEZXNj LgorICovCit2b2lkCitQb3J0YWxRdWVyeUZpbmlzaChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKK3sK KwlFeGVjdXRvckZpbmlzaChxdWVyeURlc2MpOworCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisJ RnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOworfQorCiAvKgogICogUG9ydGFsQ2xlYW51cAogICoK QEAgLTI5NSw5ICszMDcsNyBAQCBQb3J0YWxDbGVhbnVwKFBvcnRhbCBwb3J0YWwpCiAJCQlpZiAo cG9ydGFsLT5yZXNvd25lcikKIAkJCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IHBvcnRhbC0+cmVz b3duZXI7CiAKLQkJCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7Ci0JCQlFeGVjdXRvckVuZChx dWVyeURlc2MpOwotCQkJRnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOworCQkJUG9ydGFsUXVlcnlG aW5pc2gocXVlcnlEZXNjKTsKIAogCQkJQ3VycmVudFJlc291cmNlT3duZXIgPSBzYXZlUmVzb3Vy Y2VPd25lcjsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDE4ZjcwMzE5ZmMuLjMwOTk1 MzZhNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTE4Myw2ICsxODMsNyBAQCBFeGVjdXRl UXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQlwYXJhbUxJID0gRXZhbHVhdGVQYXJhbXMocHN0 YXRlLCBlbnRyeSwgc3RtdC0+cGFyYW1zLCBlc3RhdGUpOwogCX0KIAorcmVwbGFuOgogCS8qIENy ZWF0ZSBhIG5ldyBwb3J0YWwgdG8gcnVuIHRoZSBxdWVyeSBpbiAqLwogCXBvcnRhbCA9IENyZWF0 ZU5ld1BvcnRhbCgpOwogCS8qIERvbid0IGRpc3BsYXkgdGhlIHBvcnRhbCBpbiBwZ19jdXJzb3Jz LCBpdCBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgKi8KQEAgLTI1MSwxMCArMjUyLDE3IEBAIEV4 ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJfQogCiAJLyoKLQkgKiBSdW4gdGhlIHBv cnRhbCBhcyBhcHByb3ByaWF0ZS4KKwkgKiBSdW4gdGhlIHBvcnRhbCBhcyBhcHByb3ByaWF0ZS4g IElmIHRoZSBwb3J0YWwgY29udGFpbnMgYSBjYWNoZWQgcGxhbiwKKwkgKiBpdCBtdXN0IGJlIHJl Y3JlYXRlZCBpZiAqcmVwbGFuIGlzIHNldC4KIAkgKi8KIAlQb3J0YWxTdGFydChwb3J0YWwsIHBh cmFtTEksIGVmbGFncywgR2V0QWN0aXZlU25hcHNob3QoKSk7CiAKKwlpZiAoIXBvcnRhbC0+cGxh bl92YWxpZCkKKwl7CisJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFu OworCX0KKwogCSh2b2lkKSBQb3J0YWxSdW4ocG9ydGFsLCBjb3VudCwgZmFsc2UsIHRydWUsIGRl c3QsIGRlc3QsIHFjKTsKIAogCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CkBAIC01NzQsNyAr NTgyLDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9D bGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiB7CiAJUHJlcGFyZWRTdGF0ZW1lbnQgKmVu dHJ5OwogCWNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZzsKLQlDYWNoZWRQbGFuICpjcGxhbjsKKwlD YWNoZWRQbGFuICpjcGxhbiA9IE5VTEw7CiAJTGlzdAkgICAqcGxhbl9saXN0OwogCUxpc3RDZWxs ICAgKnA7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKQEAgLTYxOCw2ICs2MjYsNyBA QCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAq aW50bywgRXhwbGFpblN0YXRlICplcywKIAl9CiAKIAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQg YWNxdWlyZSBhIHRyYW5zaWVudCByZWZjb3VudCAqLworcmVwbGFuOgogCWNwbGFuID0gR2V0Q2Fj aGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwKIAkJCQkJCSAgQ3VycmVudFJlc291 cmNlT3duZXIsIHF1ZXJ5RW52KTsKIApAQCAtNjM5LDggKzY0OCwyMSBAQCBFeHBsYWluRXhlY3V0 ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0 YXRlICplcywKIAkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQs IHApOwogCiAJCWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpCi0JCQlFeHBs YWluT25lUGxhbihwc3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwgcXVlcnlF bnYsCi0JCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBO VUxMKSk7CisJCXsKKwkJCVF1ZXJ5RGVzYyAqcXVlcnlEZXNjOworCisJCQlxdWVyeURlc2MgPSBF eHBsYWluUXVlcnlEZXNjKHBzdG10LCBjcGxhbiwgcXVlcnlTdHJpbmcsCisJCQkJCQkJCQkJIGlu dG8sIGVzLCBwYXJhbUxJLCBxdWVyeUVudik7CisJCQlpZiAocXVlcnlEZXNjID09IE5VTEwpCisJ CQl7CisJCQkJRXhwbGFpblJlc2V0T3V0cHV0KGVzKTsKKwkJCQlSZWxlYXNlQ2FjaGVkUGxhbihj cGxhbiwgQ3VycmVudFJlc291cmNlT3duZXIpOworCQkJCWdvdG8gcmVwbGFuOworCQkJfQorCQkJ RXhwbGFpbk9uZVBsYW4ocXVlcnlEZXNjLCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJ LAorCQkJCQkJICAgcXVlcnlFbnYsICZwbGFuZHVyYXRpb24sCisJCQkJCQkgICAoZXMtPmJ1ZmZl cnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CisJCX0KIAkJZWxzZQogCQkJRXhwbGFpbk9uZVV0aWxp dHkocHN0bXQtPnV0aWxpdHlTdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLAogCQkJCQkJCSAg cGFyYW1MSSwgcXVlcnlFbnYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggMzliZmI0OGRj Mi4uZGFmZGQ4YTc4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xMjYsMTEgKzEyNiwy NyBAQCBzdGF0aWMgdm9pZCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBs YW4gKnBsYW5UcmVlKTsKICAqIGdldCBjb250cm9sIHdoZW4gRXhlY3V0b3JTdGFydCBpcyBjYWxs ZWQuICBTdWNoIGEgcGx1Z2luIHdvdWxkCiAgKiBub3JtYWxseSBjYWxsIHN0YW5kYXJkX0V4ZWN1 dG9yU3RhcnQoKS4KICAqCisgKiBOb3JtYWxseSwgdGhlIHBsYW4gdHJlZSBnaXZlbiBpbiBxdWVy eURlc2MtPnBsYW5uZWRzdG10IGlzIGtub3duIHRvIGJlCisgKiB2YWxpZCBpbiB0aGF0ICphbGwq IHJlbGF0aW9ucyBjb250YWluZWQgaW4gcGxhbm5lZHN0bXQtPnJlbGF0aW9uT2lkcyBoYXZlCisg KiBhbHJlYWR5IGJlZW4gbG9ja2VkLiAgVGhhdCBtYXkgbm90IGJlIHRoZSBjYXNlIGhvd2V2ZXIg aWYgdGhlIHBsYW5uZWRzdG10CisgKiBjb21lcyBmcm9tIGEgQ2FjaGVkUGxhbiwgb25lIGdpdmVu IGluIHF1ZXJ5RGVzYy0+Y3BsYW4uICBMb2NrcyBuZWNlc3NhcnkKKyAqIHRvIHZhbGlkYXRlIHN1 Y2ggYSBwbGFuIHRyZWUgbXVzdCBiZSB0YWtlbiB3aGVuIGluaXRpYWxpemluZyB0aGUgcGxhbiB0 cmVlCisgKiBpbiBJbml0UGxhbigpLCBzbyB0aGlzIHNldHMgdGhlIGVmbGFnIEVYRUNfRkxBR19H RVRfTE9DS1MuICBJZiB0aGUKKyAqIENhY2hlZFBsYW4gZ2V0cyBpbnZhbGlkYXRlZCBhcyB0aGVz ZSBsb2NrcyBhcmUgdGFrZW4sIEluaXRQbGFuIHJldHVybnMKKyAqIHdpdGhvdXQgc2V0dGluZyBx dWVyeURlc2MtPnBsYW5zdGF0ZSBhbmQgc2V0cyBxdWVyeURlc2MtPnBsYW5fdmFsaWQgdG8KKyAq IGZhbHNlLiAgQ2FsbGVyIG11c3QgcmV0cnkgdGhlIGV4ZWN1dGlvbiB3aXRoIGEgZnJlc2hseSBj cmVhdGVkIENhY2hlZFBsYW4KKyAqIGluIHRoYXQgY2FzZS4KICAqIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogdm9p ZAogRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKKwkv KiBUYWtlIGxvY2tzIGlmIHRoZSBwbGFuIHRyZWUgY29tZXMgZnJvbSBhIENhY2hlZFBsYW4uICov CisJQXNzZXJ0KHF1ZXJ5RGVzYy0+Y3BsYW4gPT0gTlVMTCB8fAorCQkgICBDYWNoZWRQbGFuU3Rp bGxWYWxpZChxdWVyeURlc2MtPmNwbGFuKSk7CisJaWYgKHF1ZXJ5RGVzYy0+Y3BsYW4pCisJCWVm bGFncyB8PSBFWEVDX0ZMQUdfR0VUX0xPQ0tTOworCiAJLyoKIAkgKiBJbiBzb21lIGNhc2VzIChl LmcuIGFuIEVYRUNVVEUgc3RhdGVtZW50KSBhIHF1ZXJ5IGV4ZWN1dGlvbiB3aWxsIHNraXAKIAkg KiBwYXJzZSBhbmFseXNpcywgd2hpY2ggbWVhbnMgdGhhdCB0aGUgcXVlcnlfaWQgd29uJ3QgYmUg cmVwb3J0ZWQuICBOb3RlCkBAIC01ODIsNiArNTk4LDE2IEBAIEV4ZWNDaGVja1Blcm1pc3Npb25z KExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnJ0ZXBlcm1pbmZvcywKIAkJUlRFUGVybWlzc2lvbklu Zm8gKnBlcm1pbmZvID0gbGZpcnN0X25vZGUoUlRFUGVybWlzc2lvbkluZm8sIGwpOwogCiAJCUFz c2VydChPaWRJc1ZhbGlkKHBlcm1pbmZvLT5yZWxpZCkpOworCisJCS8qCisJCSAqIFJlbGF0aW9u cyB3aG9zZSBwZXJtaXNzaW9ucyBuZWVkIHRvIGJlIGNoZWNrZWQgbXVzdCBhbHJlYWR5IGhhdmUK KwkJICogYmVlbiBsb2NrZWQgYnkgdGhlIHBhcnNlciBvciBieSBBY3F1aXJlUGxhbm5lckxvY2tz KCkgaWYgYQorCQkgKiBjYWNoZWQgcGxhbiBpcyBiZWluZyBleGVjdXRlZC4KKwkJICogWFhYIHNo b3VsZG4ndCB3ZSBza2lwIGNhbGxpbmcgRXhlY0NoZWNrUGVybWlzc2lvbnMgZnJvbSBJbml0UGxh bgorCQkgKiBpbiBhIHBhcmFsbGVsIHdvcmtlcj8KKwkJICovCisJCUFzc2VydChDaGVja1JlbExv Y2tlZEJ5TWUocGVybWluZm8tPnJlbGlkLCBBY2Nlc3NTaGFyZUxvY2ssIHRydWUpIHx8CisJCQkg ICBJc1BhcmFsbGVsV29ya2VyKCkpOwogCQlyZXN1bHQgPSBFeGVjQ2hlY2tPbmVSZWxQZXJtcyhw ZXJtaW5mbyk7CiAJCWlmICghcmVzdWx0KQogCQl7CkBAIC03ODUsMTIgKzgxMSw0MyBAQCBFeGVj Q2hlY2tYYWN0UmVhZE9ubHkoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10KQogCQlQcmV2ZW50Q29t bWFuZElmUGFyYWxsZWxNb2RlKENyZWF0ZUNvbW1hbmROYW1lKChOb2RlICopIHBsYW5uZWRzdG10 KSk7CiB9CiAKKy8qCisgKiBMb2NrIHZpZXcgcmVsYXRpb25zIGluIGEgZ2l2ZW4gcXVlcnkncyBy YW5nZSB0YWJsZS4KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNMb2NrVmlld1JlbGF0aW9ucyhMaXN0 ICp2aWV3UmVsYXRpb25zLCBFU3RhdGUgKmVzdGF0ZSwgYm9vbCBhY3F1aXJlKQoreworCUxpc3RD ZWxsICpsYzsKKworCWZvcmVhY2gobGMsIHZpZXdSZWxhdGlvbnMpCisJeworCQlJbmRleAlydGkg PSBsZmlyc3RfaW50KGxjKTsKKwkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gZXhlY19ydF9mZXRjaChy dGksIGVzdGF0ZSk7CisKKwkJQXNzZXJ0KE9pZElzVmFsaWQocnRlLT5yZWxpZCkpOworCQlBc3Nl cnQocnRlLT5yZWxraW5kID09IFJFTEtJTkRfVklFVyk7CisJCUFzc2VydChydGUtPnJlbGxvY2tt b2RlICE9IE5vTG9jayk7CisKKwkJaWYgKGFjcXVpcmUpCisJCQlMb2NrUmVsYXRpb25PaWQocnRl LT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCWVsc2UKKwkJCVVubG9ja1JlbGF0aW9uT2lk KHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCX0KK30KIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJ CUluaXRQbGFuCiAgKgogICoJCUluaXRpYWxpemVzIHRoZSBxdWVyeSBwbGFuOiBvcGVuIGZpbGVz LCBhbGxvY2F0ZSBzdG9yYWdlCiAgKgkJYW5kIHN0YXJ0IHVwIHRoZSBydWxlIG1hbmFnZXIKKyAq CisgKgkJSWYgcXVlcnlEZXNjIGNvbnRhaW5zIGEgQ2FjaGVkUGxhbiwgdGhpcyB0YWtlcyBsb2Nr cyBvbiByZWxhdGlvbnMuCisgKgkJSWYgYW55IG9mIHRob3NlIHJlbGF0aW9ucyBoYXZlIHVuZGVy Z29uZSBjb25jdXJyZW50IHNjaGVtYSBjaGFuZ2VzCisgKgkJYmV0d2VlbiBzdWNjZXNzZnVsbHkg cGVyZm9ybWluZyBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoKSBvbiB0aGUKKyAqCQljb250YWluaW5n IENhY2hlZFBsYW5Tb3VyY2UgYW5kIGhlcmUsIGxvY2tpbmcgdGhvc2UgcmVsYXRpb25zIHdvdWxk CisgKgkJaW52YWxpZGF0ZSB0aGUgQ2FjaGVkUGxhbiBieSB3YXkgb2YgUGxhbkNhY2hlUmVsQ2Fs bGJhY2soKS4gIEluIHRoYXQKKyAqCQljYXNlLCBxdWVyeURlc2MtPnBsYW5fdmFsaWQgd291bGQg YmUgc2V0IHRvIGZhbHNlIHRvIHRlbGwgdGhlIGNhbGxlcgorICoJCXRvIHJldHJ5IGFmdGVyIGNy ZWF0aW5nIGEgbmV3IENhY2hlZFBsYW4uCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHN0YXRpYyB2b2lkCkBA IC04MDcsMTcgKzg2NCwyMSBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVm bGFncykKIAlpbnQJCQlpOwogCiAJLyoKLQkgKiBEbyBwZXJtaXNzaW9ucyBjaGVja3MgYW5kIHNh dmUgdGhlIGxpc3QgZm9yIGxhdGVyIHVzZS4KKwkgKiBpbml0aWFsaXplIHRoZSBub2RlJ3MgZXhl Y3V0aW9uIHN0YXRlCiAJICovCi0JRXhlY0NoZWNrUGVybWlzc2lvbnMocmFuZ2VUYWJsZSwgcGxh bm5lZHN0bXQtPnBlcm1JbmZvcywgdHJ1ZSk7Ci0JZXN0YXRlLT5lc19ydGVwZXJtaW5mb3MgPSBw bGFubmVkc3RtdC0+cGVybUluZm9zOworCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIHJhbmdl VGFibGUpOworCisJaWYgKGVmbGFncyAmIEVYRUNfRkxBR19HRVRfTE9DS1MpCisJCUV4ZWNMb2Nr Vmlld1JlbGF0aW9ucyhwbGFubmVkc3RtdC0+dmlld1JlbGF0aW9ucywgZXN0YXRlLCB0cnVlKTsK IAogCS8qCi0JICogaW5pdGlhbGl6ZSB0aGUgbm9kZSdzIGV4ZWN1dGlvbiBzdGF0ZQorCSAqIERv IHBlcm1pc3Npb25zIGNoZWNrcyBhbmQgc2F2ZSB0aGUgbGlzdCBmb3IgbGF0ZXIgdXNlLgogCSAq LwotCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIHJhbmdlVGFibGUpOworCUV4ZWNDaGVja1Bl cm1pc3Npb25zKHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MsIHRydWUpOworCWVz dGF0ZS0+ZXNfcnRlcGVybWluZm9zID0gcGxhbm5lZHN0bXQtPnBlcm1JbmZvczsKIAogCWVzdGF0 ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsKKwllc3RhdGUtPmVzX2NhY2hlZHBsYW4g PSBxdWVyeURlc2MtPmNwbGFuOwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBsYW5u ZWRzdG10LT5wYXJ0UHJ1bmVJbmZvczsKIAogCS8qCkBAIC04NTAsNiArOTExLDggQEAgSW5pdFBs YW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQkJY2FzZSBST1dfTUFSS19L RVlTSEFSRToKIAkJCQljYXNlIFJPV19NQVJLX1JFRkVSRU5DRToKIAkJCQkJcmVsYXRpb24gPSBF eGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcmMtPnJ0aSk7CisJCQkJCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQkJCQlnb3RvIGZhaWxlZDsKIAkJCQkJYnJlYWs7 CiAJCQkJY2FzZSBST1dfTUFSS19DT1BZOgogCQkJCQkvKiBubyBwaHlzaWNhbCB0YWJsZSBhY2Nl c3MgaXMgcmVxdWlyZWQgKi8KQEAgLTkxNyw2ICs5ODAsOCBAQCBJbml0UGxhbihRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCXNwX2VmbGFncyB8PSBFWEVDX0ZMQUdfUkVXSU5E OwogCiAJCXN1YnBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCBlc3RhdGUsIHNwX2Vm bGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlnb3RvIGZhaWxl ZDsKIAogCQllc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfc3Vi cGxhbnN0YXRlcywKIAkJCQkJCQkJCQkgICBzdWJwbGFuc3RhdGUpOwpAQCAtOTMwLDYgKzk5NSw4 IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqIHByb2Nl c3NpbmcgdHVwbGVzLgogCSAqLwogCXBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShwbGFuLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJZ290byBm YWlsZWQ7CiAKIAkvKgogCSAqIEdldCB0aGUgdHVwbGUgZGVzY3JpcHRvciBkZXNjcmliaW5nIHRo ZSB0eXBlIG9mIHR1cGxlcyB0byByZXR1cm4uCkBAIC05NzMsNiArMTA0MCwxOSBAQCBJbml0UGxh bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAogCXF1ZXJ5RGVzYy0+dHVwRGVz YyA9IHR1cFR5cGU7CiAJcXVlcnlEZXNjLT5wbGFuc3RhdGUgPSBwbGFuc3RhdGU7CisJcXVlcnlE ZXNjLT5wbGFuX3ZhbGlkID0gdHJ1ZTsKKwlyZXR1cm47CisKK2ZhaWxlZDoKKwkvKgorCSAqIFBs YW4gaW5pdGlhbGl6YXRpb24gZmFpbGVkLiAgTWFyayBRdWVyeURlc2MgYXMgc3VjaCBhbmQgcmVs ZWFzZSB1c2VsZXNzCisJICogbG9ja3MuCisJICovCisJcXVlcnlEZXNjLT5wbGFuX3ZhbGlkID0g ZmFsc2U7CisJaWYgKGVmbGFncyAmIEVYRUNfRkxBR19HRVRfTE9DS1MpCisJCUV4ZWNMb2NrVmll d1JlbGF0aW9ucyhwbGFubmVkc3RtdC0+dmlld1JlbGF0aW9ucywgZXN0YXRlLCBmYWxzZSk7CisJ LyogQWxzbyBhc2sgRXhlY0Nsb3NlUmFuZ2VUYWJsZVJlbGF0aW9ucygpIHRvIHJlbGVhc2UgbG9j a3MuICovCisJZXN0YXRlLT5lc190b3BfZWZsYWdzIHw9IEVYRUNfRkxBR19SRUxfTE9DS1M7CiB9 CiAKIC8qCkBAIC0xMzg5LDcgKzE0NjksNyBAQCBFeGVjR2V0QW5jZXN0b3JSZXN1bHRSZWxzKEVT dGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvKQogCiAJCQkvKgogCQkJ ICogQWxsIGFuY2VzdG9ycyB1cCB0byB0aGUgcm9vdCB0YXJnZXQgcmVsYXRpb24gbXVzdCBoYXZl IGJlZW4KLQkJCSAqIGxvY2tlZCBieSB0aGUgcGxhbm5lciBvciBBY3F1aXJlRXhlY3V0b3JMb2Nr cygpLgorCQkJICogbG9ja2VkLgogCQkJICovCiAJCQlhbmNSZWwgPSB0YWJsZV9vcGVuKGFuY09p ZCwgTm9Mb2NrKTsKIAkJCXJJbmZvID0gbWFrZU5vZGUoUmVzdWx0UmVsSW5mbyk7CkBAIC0xNTU4 LDcgKzE2MzgsOCBAQCBFeGVjQ2xvc2VSZXN1bHRSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpCiAv KgogICogQ2xvc2UgYWxsIHJlbGF0aW9ucyBvcGVuZWQgYnkgRXhlY0dldFJhbmdlVGFibGVSZWxh dGlvbigpLgogICoKLSAqIFdlIGRvIG5vdCByZWxlYXNlIGFueSBsb2NrcyB3ZSBtaWdodCBob2xk IG9uIHRob3NlIHJlbHMuCisgKiBXZSBkbyBub3QgcmVsZWFzZSBhbnkgbG9ja3Mgd2UgbWlnaHQg aG9sZCBvbiB0aG9zZSByZWxzLCB1bmxlc3MKKyAqIHRoZSBjYWxsZXIgYXNrZWQgb3RoZXJ3aXNl LgogICovCiB2b2lkCiBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRl KQpAQCAtMTU2Nyw4ICsxNjQ4LDEyIEBAIEV4ZWNDbG9zZVJhbmdlVGFibGVSZWxhdGlvbnMoRVN0 YXRlICplc3RhdGUpCiAKIAlmb3IgKGkgPSAwOyBpIDwgZXN0YXRlLT5lc19yYW5nZV90YWJsZV9z aXplOyBpKyspCiAJeworCQlpbnQJCWxvY2ttb2RlID0gTm9Mb2NrOworCisJCWlmIChlc3RhdGUt PmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfUkVMX0xPQ0tTKQorCQkJbG9ja21vZGUgPSBleGVj X3J0X2ZldGNoKGkrMSwgZXN0YXRlKS0+cmVsbG9ja21vZGU7CiAJCWlmIChlc3RhdGUtPmVzX3Jl bGF0aW9uc1tpXSkKLQkJCXRhYmxlX2Nsb3NlKGVzdGF0ZS0+ZXNfcmVsYXRpb25zW2ldLCBOb0xv Y2spOworCQkJdGFibGVfY2xvc2UoZXN0YXRlLT5lc19yZWxhdGlvbnNbaV0sIGxvY2ttb2RlKTsK IAl9CiB9CiAKQEAgLTI3OTcsNyArMjg4Miw4IEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRl ICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJICogQ2hpbGQgRVBRIEVTdGF0ZXMgc2hhcmUg dGhlIHBhcmVudCdzIGNvcHkgb2YgdW5jaGFuZ2luZyBzdGF0ZSBzdWNoIGFzCiAJICogdGhlIHNu YXBzaG90LCByYW5nZXRhYmxlLCBhbmQgZXh0ZXJuYWwgUGFyYW0gaW5mby4gIFRoZXkgbmVlZCB0 aGVpciBvd24KIAkgKiBjb3BpZXMgb2YgbG9jYWwgc3RhdGUsIGluY2x1ZGluZyBhIHR1cGxlIHRh YmxlLCBlc19wYXJhbV9leGVjX3ZhbHMsCi0JICogcmVzdWx0LXJlbCBpbmZvLCBldGMuCisJICog cmVzdWx0LXJlbCBpbmZvLCBldGMuICBBbHNvLCB3ZSBkb24ndCBwYXNzIHRoZSBwYXJlbnQndCBj b3B5IG9mIHRoZQorCSAqIENhY2hlZFBsYW4sIGJlY2F1c2Ugbm8gbmV3IGxvY2tzIHdpbGwgYmUg dGFrZW4gZm9yIEV2YWxQbGFuUXVhbCgpLgogCSAqLwogCXJjZXN0YXRlLT5lc19kaXJlY3Rpb24g PSBGb3J3YXJkU2NhbkRpcmVjdGlvbjsKIAlyY2VzdGF0ZS0+ZXNfc25hcHNob3QgPSBwYXJlbnRl c3RhdGUtPmVzX3NuYXBzaG90OwpAQCAtMjg4Myw2ICsyOTY5LDcgQEAgRXZhbFBsYW5RdWFsU3Rh cnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSkKIAkJUGxhblN0YXRlICAqc3Vi cGxhbnN0YXRlOwogCiAJCXN1YnBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCByY2Vz dGF0ZSwgMCk7CisJCUFzc2VydChFeGVjUGxhblN0aWxsVmFsaWQocmNlc3RhdGUpKTsKIAkJcmNl c3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMgPSBsYXBwZW5kKHJjZXN0YXRlLT5lc19zdWJwbGFuc3Rh dGVzLAogCQkJCQkJCQkJCQkgc3VicGxhbnN0YXRlKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJhbGxlbC5jCmluZGV4IGFhM2YyODM0NTMuLmZlMWQxNzM1MDEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jCkBAIC0xMjQ5LDggKzEyNDksMTMgQEAgRXhlY1BhcmFsbGVsR2V0UXVl cnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAlwYXJhbXNwYWNl ID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgZmFsc2Up OwogCXBhcmFtTEkgPSBSZXN0b3JlUGFyYW1MaXN0KCZwYXJhbXNwYWNlKTsKIAotCS8qIENyZWF0 ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAqLworCS8qCisJICogQ3JlYXRlIGEgUXVlcnlE ZXNjIGZvciB0aGUgcXVlcnkuICBOb3RlIHRoYXQgbm8gQ2FjaGVkUGxhbiBpcyBhdmFpbGFibGUK KwkgKiBoZXJlIGV2ZW4gaWYgdGhlIGNvbnRhaW5pbmcgcGxhbiB0cmVlIG1heSBoYXZlIGNvbWUg ZnJvbSBvbmUgaW4gdGhlCisJICogbGVhZGVyLgorCSAqLwogCXJldHVybiBDcmVhdGVRdWVyeURl c2MocHN0bXQsCisJCQkJCQkgICBOVUxMLAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkg ICBHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZl ciwgcGFyYW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYwppbmRleCBmZDZjYThhNWQ5Li5hZTZhOTc0ZTdhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0xODE3LDYgKzE4MTcsOCBAQCBFeGVjSW5pdFBhcnRp dGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAKIAkvKiBDcmVhdGUgdGhlIHdvcmtp bmcgZGF0YSBzdHJ1Y3R1cmUgZm9yIHBydW5pbmcgKi8KIAlwcnVuZXN0YXRlID0gQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShwbGFuc3RhdGUsIHBydW5laW5mbyk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIFBlcmZvcm0gYW4g aW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmUgcGFzcywgaWYgcmVxdWlyZWQuCkBAIC0xOTQzLDYgKzE5 NDUsOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQ YXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCSAqIGR1cmF0aW9uIG9mIHRoaXMgZXhl Y3V0b3IgcnVuLgogCQkJICovCiAJCQlwYXJ0cmVsID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlv bihlc3RhdGUsIHBpbmZvLT5ydGluZGV4KTsKKwkJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCQkJcmV0dXJuIE5VTEw7CiAJCQlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRp b25LZXkocGFydHJlbCk7CiAJCQlwYXJ0ZGVzYyA9IFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChl c3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnksCiAJCQkJCQkJCQkJCQlwYXJ0cmVsKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggNGQyODhiYzhkNC4uYmQwYzJjYmE5MiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTM4OCw2ICszODgsOSBAQCBFeGVj SW5pdE5vZGUoUGxhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQlicmVh azsKIAl9CiAKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVM TDsKKwogCUV4ZWNTZXRFeGVjUHJvY05vZGUocmVzdWx0LCByZXN1bHQtPkV4ZWNQcm9jTm9kZSk7 CiAKIAkvKgpAQCAtNDAyLDYgKzQwNSw4IEBAIEV4ZWNJbml0Tm9kZShQbGFuICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCQlBc3NlcnQoSXNBKHN1YnBsYW4sIFN1YlBsYW4p KTsKIAkJc3N0YXRlID0gRXhlY0luaXRTdWJQbGFuKHN1YnBsYW4sIHJlc3VsdCk7CisJCWlmICgh RXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gTlVMTDsKIAkJc3VicHMgPSBs YXBwZW5kKHN1YnBzLCBzc3RhdGUpOwogCX0KIAlyZXN1bHQtPmluaXRQbGFuID0gc3VicHM7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IGMzM2EzYzBiZWMuLmQ1YmQyNjg1MTQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04MDAsNyArODAwLDggQEAgRXhlY0dldFJhbmdlVGFi bGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpKQogCiAJCUFzc2VydChydGUtPnJ0 ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsKIAotCQlpZiAoIUlzUGFyYWxsZWxXb3JrZXIoKSkKKwkJ aWYgKCFJc1BhcmFsbGVsV29ya2VyKCkgJiYKKwkJCShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBF WEVDX0ZMQUdfR0VUX0xPQ0tTKSA9PSAwKQogCQl7CiAJCQkvKgogCQkJICogSW4gYSBub3JtYWwg cXVlcnksIHdlIHNob3VsZCBhbHJlYWR5IGhhdmUgdGhlIGFwcHJvcHJpYXRlIGxvY2ssCkBAIC04 NDQsNiArODQ1LDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAlSZWxhdGlvbglyZXN1bHRSZWxhdGlvbkRlc2M7 CiAKIAlyZXN1bHRSZWxhdGlvbkRlc2MgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0 ZSwgcnRpKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm47CiAJ SW5pdFJlc3VsdFJlbEluZm8ocmVzdWx0UmVsSW5mbywKIAkJCQkJICByZXN1bHRSZWxhdGlvbkRl c2MsCiAJCQkJCSAgcnRpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rp b25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCA1MGUwNmVjNjkz Li45NDliZGZjODM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtODQzLDYgKzg0Myw3 IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQ dHIgZmNhY2hlKQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCWVzLT5xZCA9IENyZWF0ZVF1 ZXJ5RGVzYyhlcy0+c3RtdCwKKwkJCQkJCQkgTlVMTCwJLyogZm1ncl9zcWwoKSBkb2Vzbid0IHVz ZSBDYWNoZWRQbGFucyAqLwogCQkJCQkJCSBmY2FjaGUtPnNyYywKIAkJCQkJCQkgR2V0QWN0aXZl U25hcHNob3QoKSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5j CmluZGV4IDIwZDIzNjk2YTUuLmY5YjY2OGRjMDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAg LTMyOTUsNiArMzI5NSw4IEBAIEV4ZWNJbml0QWdnKEFnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW4g PSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUoYWdnc3RhdGUpID0gRXhlY0luaXRO b2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIHNvdXJjZSB0 dXBsZSB0eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IGNiMjU0OTliM2YuLmZk MGFkOTg2MjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTE0OCw2ICsxNDgsOCBA QCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkJCQkJCQkJCSAgbm9k ZS0+YXBwcmVsaWRzLAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsKKwkJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCQlhcHBlbmRzdGF0ZS0+ YXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnMo dmFsaWRzdWJwbGFucyk7CiAKQEAgLTIxOCw2ICsyMjAsOCBAQCBFeGVjSW5pdEFwcGVuZChBcHBl bmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJZmlyc3R2YWxpZCA9IGo7 CiAKIAkJYXBwZW5kcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3Rh dGUsIGVmbGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1 cm4gTlVMTDsKIAl9CiAKIAlhcHBlbmRzdGF0ZS0+YXNfZmlyc3RfcGFydGlhbF9wbGFuID0gZmly c3R2YWxpZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwppbmRleCA0YzVlYjJiMjNi Li45OGNiZWIyNTAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw QW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCkBAIC04OSw2 ICs4OSw4IEBAIEV4ZWNJbml0Qml0bWFwQW5kKEJpdG1hcEFuZCAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJewogCQlpbml0Tm9kZSA9IChQbGFuICopIGxmaXJzdChsKTsKIAkJ Yml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxh Z3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7 CiAJCWkrKzsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRt YXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMK aW5kZXggZjM1ZGYwYjhiZi4uMTIxYjFhZmE1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTc2MywxMSArNzYzLDE1IEBAIEV4ZWNJbml0Qml0bWFwSGVh cFNjYW4oQml0bWFwSGVhcFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVj T3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoK IAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoc2NhbnN0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJ ICogZ2V0IHRoZSBzY2FuIHR5cGUgZnJvbSB0aGUgcmVsYXRpb24gZGVzY3JpcHRvci4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKaW5kZXggMGJmOGFmOTY1Mi4uYmU3MzY5NDZmMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKQEAgLTkwLDYgKzkwLDggQEAgRXhlY0luaXRC aXRtYXBPcihCaXRtYXBPciAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJewog CQlpbml0Tm9kZSA9IChQbGFuICopIGxmaXJzdChsKTsKIAkJYml0bWFwcGxhbnN0YXRlc1tpXSA9 IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CiAJCWkrKzsKIAl9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVDdXN0b20uYwppbmRleCBiZDQyYzY1YjI5Li45MTIzOWNjNTAwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCkBAIC02MSw2ICs2MSw4IEBAIEV4ZWNJbml0Q3VzdG9tU2Nh bihDdXN0b21TY2FuICpjc2NhbiwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKHNj YW5yZWxpZCA+IDApCiAJewogCQlzY2FuX3JlbCA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0 ZSwgc2NhbnJlbGlkLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQkJcmV0dXJuIE5VTEw7CiAJCWNzcy0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gc2Nhbl9y ZWw7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNj YW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCmluZGV4IGMyMTM5 YWNjYTAuLmYxMzBkNTg2M2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVG b3JlaWduc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5j CkBAIC0xNzMsNiArMTczLDggQEAgRXhlY0luaXRGb3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKHNjYW5yZWxpZCA+IDApCiAJewog CQljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIHNjYW5yZWxp ZCwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVy biBOVUxMOwogCQlzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxh dGlvbjsKIAkJZmR3cm91dGluZSA9IEdldEZkd1JvdXRpbmVGb3JSZWxhdGlvbihjdXJyZW50UmVs YXRpb24sIHRydWUpOwogCX0KQEAgLTI2NCw2ICsyNjYsOCBAQCBFeGVjSW5pdEZvcmVpZ25TY2Fu KEZvcmVpZ25TY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAob3V0 ZXJQbGFuKG5vZGUpKQogCQlvdXRlclBsYW5TdGF0ZShzY2Fuc3RhdGUpID0KIAkJCUV4ZWNJbml0 Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogVGVsbCB0aGUgRkRX IHRvIGluaXRpYWxpemUgdGhlIHNjYW4uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlR2F0aGVyLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXgg MzA3ZmMxMGVlYS4uNGE3NzE1YjhjYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdhdGhlci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwpAQCAt ODksNiArODksOCBAQCBFeGVjSW5pdEdhdGhlcihHYXRoZXIgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyTm9kZSA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRl clBsYW5TdGF0ZShnYXRoZXJzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUs IGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5V TEw7CiAJdHVwRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKGdhdGhlcnN0 YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhl ck1lcmdlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwppbmRleCA5 ZDVlMWE0NmU5Li45ZTM4M2M5NmZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlR2F0aGVyTWVyZ2UuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVy Z2UuYwpAQCAtMTA4LDYgKzEwOCw4IEBAIEV4ZWNJbml0R2F0aGVyTWVyZ2UoR2F0aGVyTWVyZ2Ug Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyTm9kZSA9IG91 dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShnbV9zdGF0ZSkgPSBFeGVjSW5pdE5vZGUo b3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIExlYWRlciBtYXkgYWNjZXNzIEV4ZWNQ cm9jTm9kZSByZXN1bHQgZGlyZWN0bHkgKGlmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlR3JvdXAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCmluZGV4 IDI1YTE2MTg5NTIuLjg3YWYyYTkyZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHcm91cC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCkBAIC0x ODUsNiArMTg1LDggQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxh blN0YXRlKGdycHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwg ZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVM TDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNsb3QgYW5kIHR5cGUuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2guYwppbmRleCBlY2VlZTk5Mzc0Li5jOGZlZGVlNzc3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVIYXNoLmMKQEAgLTM3OSw2ICszNzksOCBAQCBFeGVjSW5pdEhhc2goSGFzaCAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAq LwogCW91dGVyUGxhblN0YXRlKGhhc2hzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5v ZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgb3VyIHJlc3VsdCBzbG90IGFu ZCB0eXBlLiBObyBuZWVkIHRvIGJ1aWxkIHByb2plY3Rpb24KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhh c2hqb2luLmMKaW5kZXggYjIxNWUzZjU5YS4uODY0MjBlOGYxNyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2hqb2luLmMKQEAgLTY1OSw4ICs2NTksMTIgQEAgRXhlY0luaXRIYXNoSm9pbihIYXNo Sm9pbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaGFzaE5vZGUgPSAoSGFz aCAqKSBpbm5lclBsYW4obm9kZSk7CiAKIAlvdXRlclBsYW5TdGF0ZShoanN0YXRlKSA9IEV4ZWNJ bml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlvdXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0 VHlwZShvdXRlclBsYW5TdGF0ZShoanN0YXRlKSk7CiAJaW5uZXJQbGFuU3RhdGUoaGpzdGF0ZSkg PSBFeGVjSW5pdE5vZGUoKFBsYW4gKikgaGFzaE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlpbm5lckRlc2Mg PSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZShoanN0YXRlKSk7CiAKIAkvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCmluZGV4IDEyYmMyMmYzM2Mu LjA0NTZhZDc3OWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1l bnRhbFNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0 LmMKQEAgLTEwNDEsNiArMTA0MSw4IEBAIEV4ZWNJbml0SW5jcmVtZW50YWxTb3J0KEluY3JlbWVu dGFsU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogbm9kZXMgbWF5 IGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIG1vcmUgdXNlZnVsLgogCSAqLwogCW91dGVyUGxhblN0 YXRlKGluY3Jzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRl LCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBO VUxMOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlwZS4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IDBiNDNhOWI5NjkuLmUwYWFlYjVl YmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtNTEyLDYg KzUxMiw4IEBAIEV4ZWNJbml0SW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICov CiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5z Y2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQlyZXR1cm4gTlVMTDsKIAogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9 IGN1cnJlbnRSZWxhdGlvbjsKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBO VUxMOwkvKiBubyBoZWFwIHNjYW4gaGVyZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nh bi5jCmluZGV4IDQ1NDBjNzc4MWQuLjUwOTBlZTM5ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMKQEAgLTkyNSw2ICs5MjUsOCBAQCBFeGVjSW5pdEluZGV4U2NhbihJbmRleFNj YW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4g cmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihl c3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3Vy cmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9uOwogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJl bnRTY2FuRGVzYyA9IE5VTEw7CS8qIG5vIGhlYXAgc2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVMaW1pdC5jCmluZGV4IDQyNWZiZmM0MDUuLmQ4Nzg5NTUzZTEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVMaW1pdC5jCkBAIC00NzYsNiArNDc2LDggQEAgRXhlY0luaXRMaW1pdChMaW1pdCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFu KG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGxpbWl0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy UGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp CisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIGNoaWxkIGV4cHJlc3Npb25z CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCmluZGV4IDQwNzQxNGZjMGMuLjkxMDQ5NTRi YjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCkBAIC0zMjMsNiArMzIzLDggQEAg RXhlY0luaXRMb2NrUm93cyhMb2NrUm93cyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICogdGhlbiBpbml0aWFsaXplIG91dGVyIHBsYW4KIAkgKi8KIAlvdXRlclBsYW5TdGF0 ZShscnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qIG5v ZGUgcmV0dXJucyB1bm1vZGlmaWVkIHNsb3RzIGZyb20gdGhlIG91dGVyIHBsYW4gKi8KIAlscnN0 YXRlLT5wcy5yZXN1bHRvcHNzZXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1hdGVyaWFsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwu YwppbmRleCAwOTYzMjY3OGIwLi42ZWY1MGQzOTYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWF0ZXJpYWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0 ZXJpYWwuYwpAQCAtMjE0LDYgKzIxNCw4IEBAIEV4ZWNJbml0TWF0ZXJpYWwoTWF0ZXJpYWwgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFu KG5vZGUpOwogCW91dGVyUGxhblN0YXRlKG1hdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBs YW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQor CQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSByZXN1bHQgdHlwZSBhbmQgc2xv dC4gTm8gbmVlZCB0byBpbml0aWFsaXplIHByb2plY3Rpb24gaW5mbwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNZW1vaXplLmMKaW5kZXggNzRmN2QyMWJjOC4uNGVjYzYwYTIzOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWVtb2l6ZS5jCkBAIC05MzEsNiArOTMxLDggQEAgRXhlY0luaXRNZW1vaXplKE1lbW9p emUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJb3V0ZXJOb2RlID0gb3V0 ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKG1zdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0 ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmV0dXJuIHNsb3QgYW5k IHR5cGUuIE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBwcm9qZWN0aW9uIGluZm8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggMzk5YjM5YzU5OC4uYjEyYTAyYzAyOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAgLTk2LDYgKzk2LDggQEAgRXhl Y0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmRleCwKIAkJCQkJCQkJCQkJ ICBub2RlLT5hcHByZWxpZHMsCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOworCQlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CiAJCW1lcmdlc3Rh dGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1i ZXJzKHZhbGlkc3VicGxhbnMpOwogCkBAIC0xNTIsNiArMTU0LDggQEAgRXhlY0luaXRNZXJnZUFw cGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCVBs YW4JICAgKmluaXROb2RlID0gKFBsYW4gKikgbGlzdF9udGgobm9kZS0+bWVyZ2VwbGFucywgaSk7 CiAKIAkJbWVyZ2VwbGFuc3RhdGVzW2orK10gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0 ZSwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVy biBOVUxMOwogCX0KIAogCW1lcmdlc3RhdGUtPnBzLnBzX1Byb2pJbmZvID0gTlVMTDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwppbmRleCA4MDlhYTIxNWM2Li4wMTU3YTdmZjNjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCkBAIC0xNDgyLDExICsxNDgyLDE1IEBA IEV4ZWNJbml0TWVyZ2VKb2luKE1lcmdlSm9pbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID0gbm9kZS0+c2tpcF9tYXJr X3Jlc3RvcmU7CiAKIAlvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShv dXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlvdXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlw ZShvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAJaW5uZXJQbGFuU3RhdGUobWVyZ2VzdGF0 ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsCiAJCQkJCQkJCQkJCSAg bWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID8KIAkJCQkJCQkJCQkJICBlZmxhZ3MgOgog CQkJCQkJCQkJCQkgIChlZmxhZ3MgfCBFWEVDX0ZMQUdfTUFSSykpOworCWlmICghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCWlubmVyRGVzYyA9IEV4ZWNHZXRS ZXN1bHRUeXBlKGlubmVyUGxhblN0YXRlKG1lcmdlc3RhdGUpKTsKIAogCS8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDZmMDU0M2FmODMuLjY2YzBlYmUxNmQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC00MDA2LDYgKzQwMDYsOSBA QCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkJCQkJCQkgICBsaW5pdGlhbF9pbnQobm9kZS0+cmVzdWx0UmVsYXRpb25z KSk7CiAJfQogCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5V TEw7CisKIAkvKiBzZXQgdXAgZXBxc3RhdGUgd2l0aCBkdW1teSBzdWJwbGFuIGRhdGEgZm9yIHRo ZSBtb21lbnQgKi8KIAlFdmFsUGxhblF1YWxJbml0KCZtdHN0YXRlLT5tdF9lcHFzdGF0ZSwgZXN0 YXRlLCBOVUxMLCBOSUwsIG5vZGUtPmVwcVBhcmFtKTsKIAltdHN0YXRlLT5maXJlQlNUcmlnZ2Vy cyA9IHRydWU7CkBAIC00MDMyLDYgKzQwMzUsOCBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlm eVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJaWYgKHJlc3VsdFJl bEluZm8gIT0gbXRzdGF0ZS0+cm9vdFJlc3VsdFJlbEluZm8pCiAJCXsKIAkJCUV4ZWNJbml0UmVz dWx0UmVsYXRpb24oZXN0YXRlLCByZXN1bHRSZWxJbmZvLCByZXN1bHRSZWxhdGlvbik7CisJCQlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCXJldHVybiBOVUxMOwogCiAJCQkv KgogCQkJICogRm9yIGNoaWxkIHJlc3VsdCByZWxhdGlvbnMsIHN0b3JlIHRoZSByb290IHJlc3Vs dCByZWxhdGlvbgpAQCAtNDA1OSw2ICs0MDY0LDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2Rp ZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogTm93IHdlIG1h eSBpbml0aWFsaXplIHRoZSBzdWJwbGFuLgogCSAqLwogCW91dGVyUGxhblN0YXRlKG10c3RhdGUp ID0gRXhlY0luaXROb2RlKHN1YnBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogRG8gYWRkaXRp b25hbCBwZXItcmVzdWx0LXJlbGF0aW9uIGluaXRpYWxpemF0aW9uLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTmVzdGxvb3AuYwppbmRleCBiM2Q1MmU2OWVjLi5lNDMxOWY1YzkwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTmVzdGxvb3AuYwpAQCAtMjk1LDExICsyOTUsMTUgQEAgRXhlY0luaXROZXN0TG9v cChOZXN0TG9vcCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogdmFsdWVz LgogCSAqLwogCW91dGVyUGxhblN0YXRlKG5sc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxh bihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCXJldHVybiBOVUxMOwogCWlmIChub2RlLT5uZXN0UGFyYW1zID09IE5JTCkKIAkJZWZs YWdzIHw9IEVYRUNfRkxBR19SRVdJTkQ7CiAJZWxzZQogCQllZmxhZ3MgJj0gfkVYRUNfRkxBR19S RVdJTkQ7CiAJaW5uZXJQbGFuU3RhdGUobmxzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFu KG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHNsb3QsIHR5 cGUgYW5kIHByb2plY3Rpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl UHJvamVjdFNldC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYwppbmRl eCBmNmZmM2RjNDRjLi5hMTY4Y2Q2OGY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlUHJvamVjdFNldC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0 U2V0LmMKQEAgLTI0Nyw2ICsyNDcsOCBAQCBFeGVjSW5pdFByb2plY3RTZXQoUHJvamVjdFNldCAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBu b2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBs YW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogd2UgZG9uJ3QgdXNlIGlubmVyIHBsYW4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKaW5kZXggZTc4MTAwMzkz NC4uM2RhZTliMTQ5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vy c2l2ZXVuaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9u LmMKQEAgLTI0NCw3ICsyNDQsMTEgQEAgRXhlY0luaXRSZWN1cnNpdmVVbmlvbihSZWN1cnNpdmVV bmlvbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBj aGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHJ1c3RhdGUpID0gRXhlY0luaXROb2Rl KG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCWlubmVyUGxhblN0YXRlKHJ1c3RhdGUpID0g RXhlY0luaXROb2RlKGlubmVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBJZiBo YXNoaW5nLCBwcmVjb21wdXRlIGZtZ3IgbG9va3VwIGRhdGEgZm9yIGlubmVyIGxvb3AsIGFuZCBj cmVhdGUgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKaW5kZXggNDIxOTcxMmQzMC4uOWRh NDU2YmU0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwpAQCAtMjA4LDYgKzIwOCw4IEBA IEV4ZWNJbml0UmVzdWx0KFJlc3VsdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHJlc3N0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJ ICogd2UgZG9uJ3QgdXNlIGlubmVyIHBsYW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTYW1wbGVzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nh bi5jCmluZGV4IGQ3ZTIyYjFkYmIuLjIyMzU3ZTdhMGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNhbXBsZXNjYW4uYwpAQCAtMTI1LDYgKzEyNSw4IEBAIEV4ZWNJbml0U2FtcGxlU2NhbihTYW1w bGVTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY09wZW5TY2Fu UmVsYXRpb24oZXN0YXRlLAogCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkg ZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVM TDsKIAogCS8qIHdlIHdvbid0IHNldCB1cCB0aGUgSGVhcFNjYW5EZXNjIHRpbGwgbGF0ZXIgKi8K IAlzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNlcXNjYW4uYwppbmRleCA0ZGEwZjI4ZjdiLi5iMGIzNGNkMTRlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTZXFzY2FuLmMKQEAgLTE1Myw2ICsxNTMsOCBAQCBFeGVjSW5pdFNlcVNjYW4oU2Vx U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4ZWNPcGVuU2NhblJl bGF0aW9uKGVzdGF0ZSwKIAkJCQkJCQkgbm9kZS0+c2Nhbi5zY2FucmVsaWQsCiAJCQkJCQkJIGVm bGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7 CiAKIAkvKiBhbmQgY3JlYXRlIHNsb3Qgd2l0aCB0aGUgYXBwcm9wcmlhdGUgcm93dHlwZSAqLwog CUV4ZWNJbml0U2NhblR1cGxlU2xvdChlc3RhdGUsICZzY2Fuc3RhdGUtPnNzLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU2V0T3AuYwppbmRleCA0YmMyNDA2Yjg5Li4yYzM1MGU2YzI0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU2V0T3AuYwpAQCAtNTI4LDYgKzUyOCw4IEBAIEV4ZWNJbml0U2V0T3AoU2V0T3AgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChub2RlLT5zdHJhdGVneSA9PSBT RVRPUF9IQVNIRUQpCiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW5T dGF0ZShzZXRvcHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwg ZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVM TDsKIAlvdXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShzZXRvcHN0 YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKaW5kZXggYzZjNzJjNmU2Ny4uMjE2 YTVhZmI0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCkBAIC0yNjMsNiArMjYzLDggQEAgRXhl Y0luaXRTb3J0KFNvcnQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWVmbGFn cyAmPSB+KEVYRUNfRkxBR19SRVdJTkQgfCBFWEVDX0ZMQUdfQkFDS1dBUkQgfCBFWEVDX0ZMQUdf TUFSSyk7CiAKIAlvdXRlclBsYW5TdGF0ZShzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy UGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBh bmQgdHlwZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNj YW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwppbmRleCA0MjQ3 MWJmYzA0Li4zNGFmZTE0YmVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U3VicXVlcnlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nh bi5jCkBAIC0xMjQsNiArMTI0LDggQEAgRXhlY0luaXRTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2Fu ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIHN1YnF1 ZXJ5CiAJICovCiAJc3VicXVlcnlzdGF0ZS0+c3VicGxhbiA9IEV4ZWNJbml0Tm9kZShub2RlLT5z dWJwbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0 eXBlIChuZWVkZWQgYnkgRXhlY0Fzc2lnblNjYW5Qcm9qZWN0aW9uSW5mbykKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCAyMTI0YzU1ZWY1Li42MTNiMzc3YzdjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCkBAIC0zODYsNiArMzg2LDgg QEAgRXhlY0luaXRUaWRSYW5nZVNjYW4oVGlkUmFuZ2VTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVu dFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5y ZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gTlVMTDsKIAogCXRpZHJhbmdlc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJl bnRSZWxhdGlvbjsKIAl0aWRyYW5nZXN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxM OwkvKiBubyB0YWJsZSBzY2FuIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVUaWRzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCmlu ZGV4IDg2MmJkMDMzMGIuLjFiMGEyZDgwODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVUaWRzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4u YwpAQCAtNTI5LDYgKzUyOSw4IEBAIEV4ZWNJbml0VGlkU2NhbihUaWRTY2FuICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICov CiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5z Y2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQlyZXR1cm4gTlVMTDsKIAogCXRpZHN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBj dXJyZW50UmVsYXRpb247CiAJdGlkc3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7 IC8qIG5vIGhlYXAgc2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlVW5pcXVlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKaW5kZXgg NDUwMzVkNzRmYS4uMDYyNTdlOWU1MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVVuaXF1ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwpAQCAt MTM2LDYgKzEzNiw4IEBAIEV4ZWNJbml0VW5pcXVlKFVuaXF1ZSAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJICogdGhlbiBpbml0aWFsaXplIG91dGVyIHBsYW4KIAkgKi8KIAlv dXRlclBsYW5TdGF0ZSh1bmlxdWVzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUp LCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ cmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHNsb3QgYW5kIHR5cGUu IFVuaXF1ZSBub2RlcyBkbyBubyBwcm9qZWN0aW9ucywgc28KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVX aW5kb3dBZ2cuYwppbmRleCA3YzA3ZmIwNjg0Li43MzYzMjkxMDIzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC0yNDUxLDYgKzI0NTEsOCBAQCBFeGVjSW5pdFdpbmRvd0Fn ZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91 dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZSh3aW5zdGF0ZSkgPSBF eGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIGluaXRpYWxpemUg c291cmNlIHR1cGxlIHR5cGUgKHdoaWNoIGlzIGFsc28gdGhlIHR1cGxlIHR5cGUgdGhhdCB3ZSds bApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9zcGkuYwppbmRleCBlM2ExNzBjMzhiLi5lZGVhNzY3NWQ0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGku YwpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgaW50CV9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5Q dHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiBzdGF0aWMgUGFyYW1M aXN0SW5mbyBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIAkJ CQkJCQkJCQkgRGF0dW0gKlZhbHVlcywgY29uc3QgY2hhciAqTnVsbHMpOwogCi1zdGF0aWMgaW50 CV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVp bnQ2NCB0Y291bnQpOworc3RhdGljIGludAlfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVz YywgdWludDY0IHRjb3VudCk7CiAKIHN0YXRpYyB2b2lkIF9TUElfZXJyb3JfY2FsbGJhY2sodm9p ZCAqYXJnKTsKIApAQCAtMTYyMyw2ICsxNjIzLDcgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFs KGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAlfU1BJX2N1cnJlbnQtPnByb2Nl c3NlZCA9IDA7CiAJX1NQSV9jdXJyZW50LT50dXB0YWJsZSA9IE5VTEw7CiAKK3JlcGxhbjoKIAkv KiBDcmVhdGUgdGhlIHBvcnRhbCAqLwogCWlmIChuYW1lID09IE5VTEwgfHwgbmFtZVswXSA9PSAn XDAnKQogCXsKQEAgLTE3NjYsNyArMTc2Nyw4IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChj b25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJfQogCiAJLyoKLQkgKiBTdGFydCBw b3J0YWwgZXhlY3V0aW9uLgorCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uICBJZiB0aGUgcG9y dGFsIGNvbnRhaW5zIGEgY2FjaGVkIHBsYW4sIGl0IG11c3QKKwkgKiBiZSByZWNyZWF0ZWQgaWYg KnJlcGxhbiBpcyBzZXQuCiAJICovCiAJUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbUxJLCAwLCBz bmFwc2hvdCk7CiAKQEAgLTE3NzUsNiArMTc3NywxMiBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJu YWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCS8qIFBvcCB0aGUgZXJyb3Ig Y29udGV4dCBzdGFjayAqLwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBzcGllcnJjb250ZXh0LnBy ZXZpb3VzOwogCisJaWYgKCFwb3J0YWwtPnBsYW5fdmFsaWQpCisJeworCQlQb3J0YWxEcm9wKHBv cnRhbCwgZmFsc2UpOworCQlnb3RvIHJlcGxhbjsKKwl9CisKIAkvKiBQb3AgdGhlIFNQSSBzdGFj ayAqLwogCV9TUElfZW5kX2NhbGwodHJ1ZSk7CiAKQEAgLTI1NTIsNiArMjU2MCw3IEBAIF9TUElf ZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9w dGlvbnMsCiAJCSAqIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3Vu dC4gIElmIGl0J3MgYSBzYXZlZAogCQkgKiBwbGFuLCB0aGUgcmVmY291bnQgbXVzdCBiZSBiYWNr ZWQgYnkgdGhlIHBsYW5fb3duZXIuCiAJCSAqLworcmVwbGFuOgogCQljcGxhbiA9IEdldENhY2hl ZFBsYW4ocGxhbnNvdXJjZSwgb3B0aW9ucy0+cGFyYW1zLAogCQkJCQkJCSAgcGxhbl9vd25lciwg X1NQSV9jdXJyZW50LT5xdWVyeUVudik7CiAKQEAgLTI2NjEsNiArMjY3MCw3IEBAIF9TUElfZXhl Y3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlv bnMsCiAJCQl7CiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAJCQkJU25hcHNob3QJc25hcDsKKwkJ CQlpbnQJCQllZmxhZ3M7CiAKIAkJCQlpZiAoQWN0aXZlU25hcHNob3RTZXQoKSkKIAkJCQkJc25h cCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CkBAIC0yNjY4LDE0ICsyNjc4LDMxIEBAIF9TUElfZXhl Y3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlv bnMsCiAJCQkJCXNuYXAgPSBJbnZhbGlkU25hcHNob3Q7CiAKIAkJCQlxZGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJCWNwbGFuLAogCQkJCQkJCQkJCXBsYW5zb3VyY2UtPnF1 ZXJ5X3N0cmluZywKIAkJCQkJCQkJCQlzbmFwLCBjcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJ CQkJCWRlc3QsCiAJCQkJCQkJCQkJb3B0aW9ucy0+cGFyYW1zLAogCQkJCQkJCQkJCV9TUElfY3Vy cmVudC0+cXVlcnlFbnYsCiAJCQkJCQkJCQkJMCk7Ci0JCQkJcmVzID0gX1NQSV9wcXVlcnkocWRl c2MsIGZpcmVfdHJpZ2dlcnMsCi0JCQkJCQkJCSAgY2FuU2V0VGFnID8gb3B0aW9ucy0+dGNvdW50 IDogMCk7CisKKwkJCQkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8KKwkJCQlpZiAoZmly ZV90cmlnZ2VycykKKwkJCQkJZWZsYWdzID0gMDsJCQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxl dGlvbiBmbGFncyAqLworCQkJCWVsc2UKKwkJCQkJZWZsYWdzID0gRVhFQ19GTEFHX1NLSVBfVFJJ R0dFUlM7CisJCQkJRXhlY3V0b3JTdGFydChxZGVzYywgZWZsYWdzKTsKKwkJCQlpZiAoIXFkZXNj LT5wbGFuX3ZhbGlkKQorCQkJCXsKKwkJCQkJRXhlY3V0b3JGaW5pc2gocWRlc2MpOworCQkJCQlF eGVjdXRvckVuZChxZGVzYyk7CisJCQkJCUZyZWVRdWVyeURlc2MocWRlc2MpOworCQkJCQlBc3Nl cnQoY3BsYW4pOworCQkJCQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxhbiwgcGxhbl9vd25lcik7CisJ CQkJCWdvdG8gcmVwbGFuOworCQkJCX0KKworCQkJCXJlcyA9IF9TUElfcHF1ZXJ5KHFkZXNjLCBj YW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKIAkJCQlGcmVlUXVlcnlEZXNjKHFkZXNj KTsKIAkJCX0KIAkJCWVsc2UKQEAgLTI4NTAsMTAgKzI4NzcsOSBAQCBfU1BJX2NvbnZlcnRfcGFy YW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIH0KIAogc3RhdGljIGludAotX1NQSV9wcXVl cnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3Vu dCkKK19TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCB1aW50NjQgdGNvdW50KQogewog CWludAkJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3BlcmF0aW9uOwotCWludAkJCWVmbGFnczsK IAlpbnQJCQlyZXM7CiAKIAlzd2l0Y2ggKG9wZXJhdGlvbikKQEAgLTI4OTcsMTQgKzI5MjMsNiBA QCBfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1 aW50NjQgdGNvdW50KQogCQlSZXNldFVzYWdlKCk7CiAjZW5kaWYKIAotCS8qIFNlbGVjdCBleGVj dXRpb24gb3B0aW9ucyAqLwotCWlmIChmaXJlX3RyaWdnZXJzKQotCQllZmxhZ3MgPSAwOwkJCQkv KiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCi0JZWxzZQotCQllZmxhZ3MgPSBF WEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsKLQotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxh Z3MpOwotCiAJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgdGNv dW50LCB0cnVlKTsKIAogCV9TUElfY3VycmVudC0+cHJvY2Vzc2VkID0gcXVlcnlEZXNjLT5lc3Rh dGUtPmVzX3Byb2Nlc3NlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL01ha2VmaWxl IGIvc3JjL2JhY2tlbmQvbm9kZXMvTWFrZWZpbGUKaW5kZXggYWYxMmM2NDg3OC4uN2ZiMGQyZDIw MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tl bmQvbm9kZXMvTWFrZWZpbGUKQEAgLTUyLDYgKzUyLDcgQEAgbm9kZV9oZWFkZXJzID0gXAogCWFj Y2Vzcy90c21hcGkuaCBcCiAJY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIFwKIAljb21tYW5kcy90 cmlnZ2VyLmggXAorCWV4ZWN1dG9yL2V4ZWNkZXNjLmggXAogCWV4ZWN1dG9yL3R1cHRhYmxlLmgg XAogCWZvcmVpZ24vZmR3YXBpLmggXAogCW5vZGVzL2JpdG1hcHNldC5oIFwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL2dlbl9ub2RlX3N1cHBvcnQucGwgYi9zcmMvYmFja2VuZC9ub2Rl cy9nZW5fbm9kZV9zdXBwb3J0LnBsCmluZGV4IGVjYmNhZGI4YmYuLmIxY2Y2MWMwYTIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2dlbl9ub2RlX3N1cHBvcnQucGwKKysrIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvZ2VuX25vZGVfc3VwcG9ydC5wbApAQCAtNjMsNiArNjMsNyBAQCBteSBAYWxs X2lucHV0X2ZpbGVzID0gcXcoCiAgIGFjY2Vzcy90c21hcGkuaAogICBjb21tYW5kcy9ldmVudF90 cmlnZ2VyLmgKICAgY29tbWFuZHMvdHJpZ2dlci5oCisgIGV4ZWN1dG9yL2V4ZWNkZXNjLmgKICAg ZXhlY3V0b3IvdHVwdGFibGUuaAogICBmb3JlaWduL2Zkd2FwaS5oCiAgIG5vZGVzL2JpdG1hcHNl dC5oCkBAIC04Nyw2ICs4OCw3IEBAIG15IEBub2RldGFnX29ubHlfZmlsZXMgPSBxdygKICAgYWNj ZXNzL3RzbWFwaS5oCiAgIGNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaAogICBjb21tYW5kcy90cmln Z2VyLmgKKyAgZXhlY3V0b3IvZXhlY2Rlc2MuaAogICBleGVjdXRvci90dXB0YWJsZS5oCiAgIGZv cmVpZ24vZmR3YXBpLmgKICAgbm9kZXMvbG9ja29wdGlvbnMuaApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5k ZXggYmEwMGI5OTI0OS4uOTU1Mjg2NTEzZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMv b3V0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC01MTMsNiAr NTEzLDcgQEAgX291dFJhbmdlVGJsRW50cnkoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFJhbmdlVGJs RW50cnkgKm5vZGUpCiAJCQlXUklURV9CT09MX0ZJRUxEKHNlY3VyaXR5X2JhcnJpZXIpOwogCQkJ Lyogd2UgcmUtdXNlIHRoZXNlIFJFTEFUSU9OIGZpZWxkcywgdG9vOiAqLwogCQkJV1JJVEVfT0lE X0ZJRUxEKHJlbGlkKTsKKwkJCVdSSVRFX0NIQVJfRklFTEQocmVsa2luZCk7CiAJCQlXUklURV9J TlRfRklFTEQocmVsbG9ja21vZGUpOwogCQkJV1JJVEVfVUlOVF9GSUVMRChwZXJtaW5mb2luZGV4 KTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMg Yi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCBmMzYyOWNkZmQxLi4zYmM1YTZk Y2EwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMv YmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAtNDgwLDYgKzQ4MCw3IEBAIF9yZWFkUmFuZ2VU YmxFbnRyeSh2b2lkKQogCQkJUkVBRF9CT09MX0ZJRUxEKHNlY3VyaXR5X2JhcnJpZXIpOwogCQkJ Lyogd2UgcmUtdXNlIHRoZXNlIFJFTEFUSU9OIGZpZWxkcywgdG9vOiAqLwogCQkJUkVBRF9PSURf RklFTEQocmVsaWQpOworCQkJUkVBRF9DSEFSX0ZJRUxEKHJlbGtpbmQpOwogCQkJUkVBRF9JTlRf RklFTEQocmVsbG9ja21vZGUpOwogCQkJUkVBRF9VSU5UX0ZJRUxEKHBlcm1pbmZvaW5kZXgpOwog CQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVy LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggYTE4NzNjZTI2 ZC4uMjcxZDI1MzllOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTI3 LDYgKzUyNyw3IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpx dWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+cGFydFBydW5lSW5mb3Mg PSBnbG9iLT5wYXJ0UHJ1bmVJbmZvczsKIAlyZXN1bHQtPnJ0YWJsZSA9IGdsb2ItPmZpbmFscnRh YmxlOwogCXJlc3VsdC0+cGVybUluZm9zID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7CisJcmVz dWx0LT52aWV3UmVsYXRpb25zID0gZ2xvYi0+dmlld1JlbGF0aW9uczsKIAlyZXN1bHQtPnJlc3Vs dFJlbGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0 aW9ucyA9IGdsb2ItPmFwcGVuZFJlbGF0aW9uczsKIAlyZXN1bHQtPnN1YnBsYW5zID0gZ2xvYi0+ c3VicGxhbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZz LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggNWNjODM2NmFm Ni4uZjEzMjQwYmYzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0 cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMTYs NiArMTYsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3MvdHJh bnNhbS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3R5cGUuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rl cy9ub2RlRnVuY3MuaCIKQEAgLTYwNCw2ICs2MDUsMTAgQEAgYWRkX3J0ZV90b19mbGF0X3J0YWJs ZShQbGFubmVyR2xvYmFsICpnbG9iLCBMaXN0ICpydGVwZXJtaW5mb3MsCiAJCShuZXdydGUtPnJ0 ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQobmV3cnRlLT5yZWxpZCkpKQogCQln bG9iLT5yZWxhdGlvbk9pZHMgPSBsYXBwZW5kX29pZChnbG9iLT5yZWxhdGlvbk9pZHMsIG5ld3J0 ZS0+cmVsaWQpOwogCisJaWYgKG5ld3J0ZS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcpCisJCWds b2ItPnZpZXdSZWxhdGlvbnMgPSBsYXBwZW5kX2ludChnbG9iLT52aWV3UmVsYXRpb25zLAorCQkJ CQkJCQkJCSAgbGlzdF9sZW5ndGgoZ2xvYi0+ZmluYWxydGFibGUpKTsKKwogCS8qCiAJICogQWRk IGEgY29weSBvZiB0aGUgUlRFUGVybWlzc2lvbkluZm8sIGlmIGFueSwgY29ycmVzcG9uZGluZyB0 byB0aGlzIFJURQogCSAqIHRvIHRoZSBmbGF0dGVuZWQgZ2xvYmFsIGxpc3QuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9yZXdy aXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggYTYxNGUzZjViZC4uZGUwN2U1MzE3OCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAtMTg0NywxMSArMTg0NywxMCBAQCBBcHBs eVJldHJpZXZlUnVsZShRdWVyeSAqcGFyc2V0cmVlLAogCiAJLyoKIAkgKiBDbGVhciBmaWVsZHMg dGhhdCBzaG91bGQgbm90IGJlIHNldCBpbiBhIHN1YnF1ZXJ5IFJURS4gIE5vdGUgdGhhdCB3ZQot CSAqIGxlYXZlIHRoZSByZWxpZCwgcmVsbG9ja21vZGUsIGFuZCBwZXJtaW5mb2luZGV4IGZpZWxk cyBzZXQsIHNvIHRoYXQgdGhlCi0JICogdmlldyByZWxhdGlvbiBjYW4gYmUgYXBwcm9wcmlhdGVs eSBsb2NrZWQgYmVmb3JlIGV4ZWN1dGlvbiBhbmQgaXRzCi0JICogcGVybWlzc2lvbnMgY2hlY2tl ZC4KKwkgKiBsZWF2ZSB0aGUgcmVsaWQsIHJlbGtpbmQsIHJlbGxvY2ttb2RlLCBhbmQgcGVybWlu Zm9pbmRleCBmaWVsZHMgc2V0LAorCSAqIHNvIHRoYXQgdGhlIHZpZXcgcmVsYXRpb24gY2FuIGJl IGFwcHJvcHJpYXRlbHkgbG9ja2VkIGJlZm9yZSBleGVjdXRpb24KKwkgKiBhbmQgaXRzIHBlcm1p c3Npb25zIGNoZWNrZWQuCiAJICovCi0JcnRlLT5yZWxraW5kID0gMDsKIAlydGUtPnRhYmxlc2Ft cGxlID0gTlVMTDsKIAlydGUtPmluaCA9IGZhbHNlOwkJCS8qIG11c3Qgbm90IGJlIHNldCBmb3Ig YSBzdWJxdWVyeSAqLwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1n ci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwppbmRleCBlZTliODlhNjcyLi5j ODA3ZTljZGNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNp bmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0 LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKIAogCiAvKgpAQCAtMzY0LDYgKzM2NSw1MCBAQCBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShS ZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgb3JzdHJvbmdlcikKIAly ZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKgkJQ2hlY2tSZWxMb2NrZWRCeU1lCisgKgorICogUmV0 dXJucyB0cnVlIGlmIGN1cnJlbnQgdHJhbnNhY3Rpb24gaG9sZHMgYSBsb2NrIG9uIHRoZSBnaXZl biByZWxhdGlvbiBvZgorICogbW9kZSAnbG9ja21vZGUnLiAgSWYgJ29yc3Ryb25nZXInIGlzIHRy dWUsIGEgc3Ryb25nZXIgbG9ja21vZGUgaXMgYWxzbyBPSy4KKyAqICgiU3Ryb25nZXIiIGlzIGRl ZmluZWQgYXMgIm51bWVyaWNhbGx5IGhpZ2hlciIsIHdoaWNoIGlzIGEgYml0CisgKiBzZW1hbnRp Y2FsbHkgZHViaW91cyBidXQgaXMgT0sgZm9yIHRoZSBwdXJwb3NlcyB3ZSB1c2UgdGhpcyBmb3Iu KQorICovCitib29sCitDaGVja1JlbExvY2tlZEJ5TWUoT2lkIHJlbGlkLCBMT0NLTU9ERSBsb2Nr bW9kZSwgYm9vbCBvcnN0cm9uZ2VyKQoreworCU9pZAkJCWRiSWQgPSBnZXRfcmVsX3JlbGlzc2hh cmVkKHJlbGlkKSA/IEludmFsaWRPaWQgOiBNeURhdGFiYXNlSWQ7CisJTE9DS1RBRwkJdGFnOwor CisJU0VUX0xPQ0tUQUdfUkVMQVRJT04odGFnLCBkYklkLCByZWxpZCk7CisKKwlpZiAoTG9ja0hl bGRCeU1lKCZ0YWcsIGxvY2ttb2RlKSkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAob3JzdHJvbmdl cikKKwl7CisJCUxPQ0tNT0RFCXNsb2NrbW9kZTsKKworCQlmb3IgKHNsb2NrbW9kZSA9IGxvY2tt b2RlICsgMTsKKwkJCSBzbG9ja21vZGUgPD0gTWF4TG9ja01vZGU7CisJCQkgc2xvY2ttb2RlKysp CisJCXsKKwkJCWlmIChMb2NrSGVsZEJ5TWUoJnRhZywgc2xvY2ttb2RlKSkKKwkJCXsKKyNpZmRl ZiBOT1RfVVNFRAorCQkJCS8qIFNvbWV0aW1lcyB0aGlzIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZGVi dWdnaW5nIHB1cnBvc2VzICovCisJCQkJZWxvZyhXQVJOSU5HLCAibG9jayBtb2RlICVzIHN1YnN0 aXR1dGVkIGZvciAlcyBvbiByZWxhdGlvbiAlcyIsCisJCQkJCSBHZXRMb2NrbW9kZU5hbWUodGFn LmxvY2t0YWdfbG9ja21ldGhvZGlkLCBzbG9ja21vZGUpLAorCQkJCQkgR2V0TG9ja21vZGVOYW1l KHRhZy5sb2NrdGFnX2xvY2ttZXRob2RpZCwgbG9ja21vZGUpLAorCQkJCQkgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKKyNlbmRpZgorCQkJCXJldHVybiB0cnVlOworCQkJfQor CQl9CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICoJCUxvY2tIYXNXYWl0ZXJzUmVs YXRpb24KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggY2FiNzA5YjA3Yi4uYTI5MWJjZmNmYyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYwpAQCAtMTE5OSw2ICsxMTk5LDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29u c3QgY2hhciAqcXVlcnlfc3RyaW5nKQogCQkgKiBTdGFydCB0aGUgcG9ydGFsLiAgTm8gcGFyYW1l dGVycyBoZXJlLgogCQkgKi8KIAkJUG9ydGFsU3RhcnQocG9ydGFsLCBOVUxMLCAwLCBJbnZhbGlk U25hcHNob3QpOworCQlBc3NlcnQocG9ydGFsLT5wbGFuX3ZhbGlkKTsKIAogCQkvKgogCQkgKiBT ZWxlY3QgdGhlIGFwcHJvcHJpYXRlIG91dHB1dCBmb3JtYXQ6IHRleHQgdW5sZXNzIHdlIGFyZSBk b2luZyBhCkBAIC0xNzAzLDYgKzE3MDQsNyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZv IGlucHV0X21lc3NhZ2UpCiAJCQkJCQkiY29tbWFuZHMgaWdub3JlZCB1bnRpbCBlbmQgb2YgdHJh bnNhY3Rpb24gYmxvY2siKSwKIAkJCQkgZXJyZGV0YWlsX2Fib3J0KCkpKTsKIAorcmVwbGFuOgog CS8qCiAJICogQ3JlYXRlIHRoZSBwb3J0YWwuICBBbGxvdyBzaWxlbnQgcmVwbGFjZW1lbnQgb2Yg YW4gZXhpc3RpbmcgcG9ydGFsIG9ubHkKIAkgKiBpZiB0aGUgdW5uYW1lZCBwb3J0YWwgaXMgc3Bl Y2lmaWVkLgpAQCAtMTk5OCw2ICsyMDAwLDEyIEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0lu Zm8gaW5wdXRfbWVzc2FnZSkKIAkgKi8KIAlQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtcywgMCwg SW52YWxpZFNuYXBzaG90KTsKIAorCWlmICghcG9ydGFsLT5wbGFuX3ZhbGlkKQorCXsKKwkJUG9y dGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJZ290byByZXBsYW47CisJfQorCiAJLyoKIAkgKiBB cHBseSB0aGUgcmVzdWx0IGZvcm1hdCByZXF1ZXN0cyB0byB0aGUgcG9ydGFsLgogCSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1 ZXJ5LmMKaW5kZXggNWYwMjQ4YWNjNS4uYjlkZjVkNGEwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC0xOSw2 ICsxOSw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3ByZXBhcmUuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL3RzdG9yZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVk ZSAicGdfdHJhY2UuaCIKQEAgLTM1LDEyICszNiw2IEBACiBQb3J0YWwJCUFjdGl2ZVBvcnRhbCA9 IE5VTEw7CiAKIAotc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAot CQkJCQkJIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCi0JCQkJCQkgUGFyYW1MaXN0SW5mbyBwYXJh bXMsCi0JCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCi0JCQkJCQkgRGVzdFJlY2Vp dmVyICpkZXN0LAotCQkJCQkJIFF1ZXJ5Q29tcGxldGlvbiAqcWMpOwogc3RhdGljIHZvaWQgRmls bFBvcnRhbFN0b3JlKFBvcnRhbCBwb3J0YWwsIGJvb2wgaXNUb3BMZXZlbCk7CiBzdGF0aWMgdWlu dDY0IFJ1bkZyb21TdG9yZShQb3J0YWwgcG9ydGFsLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwg dWludDY0IGNvdW50LAogCQkJCQkJICAgRGVzdFJlY2VpdmVyICpkZXN0KTsKQEAgLTY1LDYgKzYw LDcgQEAgc3RhdGljIHZvaWQgRG9Qb3J0YWxSZXdpbmQoUG9ydGFsIHBvcnRhbCk7CiAgKi8KIFF1 ZXJ5RGVzYyAqCiBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJ CUNhY2hlZFBsYW4gKmNwbGFuLAogCQkJCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJU25h cHNob3Qgc25hcHNob3QsCiAJCQkJU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwKQEAgLTc1 LDggKzcxLDEwIEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiB7 CiAJUXVlcnlEZXNjICAqcWQgPSAoUXVlcnlEZXNjICopIHBhbGxvYyhzaXplb2YoUXVlcnlEZXNj KSk7CiAKKwlxZC0+dHlwZSA9IFRfUXVlcnlEZXNjOwogCXFkLT5vcGVyYXRpb24gPSBwbGFubmVk c3RtdC0+Y29tbWFuZFR5cGU7CS8qIG9wZXJhdGlvbiAqLwogCXFkLT5wbGFubmVkc3RtdCA9IHBs YW5uZWRzdG10OwkvKiBwbGFuICovCisJcWQtPmNwbGFuID0gY3BsYW47CQkJCS8qIENhY2hlZFBs YW4sIGlmIHBsYW4gaXMgZnJvbSBvbmUgKi8KIAlxZC0+c291cmNlVGV4dCA9IHNvdXJjZVRleHQ7 CS8qIHF1ZXJ5IHRleHQgKi8KIAlxZC0+c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBz aG90KTsJLyogc25hcHNob3QgKi8KIAkvKiBSSSBjaGVjayBzbmFwc2hvdCAqLwpAQCAtMTE2LDg2 ICsxMTQsNiBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiB9CiAKIAotLyoKLSAq IFByb2Nlc3NRdWVyeQotICoJCUV4ZWN1dGUgYSBzaW5nbGUgcGxhbm5hYmxlIHF1ZXJ5IHdpdGhp biBhIFBPUlRBTF9NVUxUSV9RVUVSWSwKLSAqCQlQT1JUQUxfT05FX1JFVFVSTklORywgb3IgUE9S VEFMX09ORV9NT0RfV0lUSCBwb3J0YWwKLSAqCi0gKglwbGFuOiB0aGUgcGxhbiB0cmVlIGZvciB0 aGUgcXVlcnkKLSAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkKLSAq CXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCi0gKglkZXN0OiB3aGVyZSB0byBzZW5kIHJl c3VsdHMKLSAqCXFjOiB3aGVyZSB0byBzdG9yZSB0aGUgY29tbWFuZCBjb21wbGV0aW9uIHN0YXR1 cyBkYXRhLgotICoKLSAqIHFjIG1heSBiZSBOVUxMIGlmIGNhbGxlciBkb2Vzbid0IHdhbnQgYSBz dGF0dXMgc3RyaW5nLgotICoKLSAqIE11c3QgYmUgY2FsbGVkIGluIGEgbWVtb3J5IGNvbnRleHQg dGhhdCB3aWxsIGJlIHJlc2V0IG9yIGRlbGV0ZWQgb24KLSAqIGVycm9yOyBvdGhlcndpc2UgdGhl IGV4ZWN1dG9yJ3MgbWVtb3J5IHVzYWdlIHdpbGwgYmUgbGVha2VkLgotICovCi1zdGF0aWMgdm9p ZAotUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAotCQkJIGNvbnN0IGNoYXIgKnNvdXJj ZVRleHQsCi0JCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCi0JCQkgUXVlcnlFbnZpcm9ubWVudCAq cXVlcnlFbnYsCi0JCQkgRGVzdFJlY2VpdmVyICpkZXN0LAotCQkJIFF1ZXJ5Q29tcGxldGlvbiAq cWMpCi17Ci0JUXVlcnlEZXNjICAqcXVlcnlEZXNjOwotCi0JLyoKLQkgKiBDcmVhdGUgdGhlIFF1 ZXJ5RGVzYyBvYmplY3QKLQkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwg c291cmNlVGV4dCwKLQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90 LAotCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKLQotCS8qCi0JICogQ2FsbCBF eGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgotCSAqLwotCUV4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKLQotCS8qCi0JICogUnVuIHRoZSBwbGFuIHRvIGNv bXBsZXRpb24uCi0JICovCi0JRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVj dGlvbiwgMEwsIHRydWUpOwotCi0JLyoKLQkgKiBCdWlsZCBjb21tYW5kIGNvbXBsZXRpb24gc3Rh dHVzIGRhdGEsIGlmIGNhbGxlciB3YW50cyBvbmUuCi0JICovCi0JaWYgKHFjKQotCXsKLQkJc3dp dGNoIChxdWVyeURlc2MtPm9wZXJhdGlvbikKLQkJewotCQkJY2FzZSBDTURfU0VMRUNUOgotCQkJ CVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1NFTEVDVCwgcXVlcnlEZXNjLT5lc3RhdGUt PmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIENNRF9JTlNFUlQ6Ci0JCQkJU2V0 UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfSU5TRVJULCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNf cHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX1VQREFURToKLQkJCQlTZXRRdWVy eUNvbXBsZXRpb24ocWMsIENNRFRBR19VUERBVEUsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9j ZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfREVMRVRFOgotCQkJCVNldFF1ZXJ5Q29t cGxldGlvbihxYywgQ01EVEFHX0RFTEVURSwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3Nl ZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIENNRF9NRVJHRToKLQkJCQlTZXRRdWVyeUNvbXBsZXRp b24ocWMsIENNRFRBR19NRVJHRSwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0J CQkJYnJlYWs7Ci0JCQlkZWZhdWx0OgotCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFH X1VOS05PV04sIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwot CQl9Ci0JfQotCi0JLyoKLQkgKiBOb3csIHdlIGNsb3NlIGRvd24gYWxsIHRoZSBzY2FucyBhbmQg ZnJlZSBhbGxvY2F0ZWQgcmVzb3VyY2VzLgotCSAqLwotCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVz Yyk7Ci0JRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKLQotCUZyZWVRdWVyeURlc2MocXVlcnlEZXNj KTsKLX0KLQogLyoKICAqIENob29zZVBvcnRhbFN0cmF0ZWd5CiAgKgkJU2VsZWN0IHBvcnRhbCBl eGVjdXRpb24gc3RyYXRlZ3kgZ2l2ZW4gdGhlIGludGVuZGVkIHN0YXRlbWVudCBsaXN0LgpAQCAt NDI3LDcgKzM0NSw4IEBAIEZldGNoU3RhdGVtZW50VGFyZ2V0TGlzdChOb2RlICpzdG10KQogICog dG8gYmUgdXNlZCBmb3IgY3Vyc29ycykuCiAgKgogICogT24gcmV0dXJuLCBwb3J0YWwgaXMgcmVh ZHkgdG8gYWNjZXB0IFBvcnRhbFJ1bigpIGNhbGxzLCBhbmQgdGhlIHJlc3VsdAotICogdHVwZGVz YyAoaWYgYW55KSBpcyBrbm93bi4KKyAqIHR1cGRlc2MgKGlmIGFueSkgaXMga25vd24sIHVubGVz cyBwb3J0YWwtPnBsYW5fdmFsaWQgaXMgc2V0IHRvIGZhbHNlLCBpbgorICogd2hpY2ggY2FzZSwg dGhlIGNhbGxlciBtdXN0IHJldHJ5IGFmdGVyIGdlbmVyYXRpbmcgYSBuZXcgQ2FjaGVkUGxhbi4K ICAqLwogdm9pZAogUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJh bXMsCkBAIC00MzUsNyArMzU0LDYgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1M aXN0SW5mbyBwYXJhbXMsCiB7CiAJUG9ydGFsCQlzYXZlQWN0aXZlUG9ydGFsOwogCVJlc291cmNl T3duZXIgc2F2ZVJlc291cmNlT3duZXI7Ci0JTWVtb3J5Q29udGV4dCBzYXZlUG9ydGFsQ29udGV4 dDsKIAlNZW1vcnlDb250ZXh0IG9sZENvbnRleHQ7CiAJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwog CWludAkJCW15ZWZsYWdzOwpAQCAtNDQ4LDE1ICszNjYsMTMgQEAgUG9ydGFsU3RhcnQoUG9ydGFs IHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJICovCiAJc2F2ZUFjdGl2ZVBvcnRhbCA9 IEFjdGl2ZVBvcnRhbDsKIAlzYXZlUmVzb3VyY2VPd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVy OwotCXNhdmVQb3J0YWxDb250ZXh0ID0gUG9ydGFsQ29udGV4dDsKIAlQR19UUlkoKTsKIAl7CiAJ CUFjdGl2ZVBvcnRhbCA9IHBvcnRhbDsKIAkJaWYgKHBvcnRhbC0+cmVzb3duZXIpCiAJCQlDdXJy ZW50UmVzb3VyY2VPd25lciA9IHBvcnRhbC0+cmVzb3duZXI7Ci0JCVBvcnRhbENvbnRleHQgPSBw b3J0YWwtPnBvcnRhbENvbnRleHQ7CiAKLQkJb2xkQ29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhQb3J0YWxDb250ZXh0KTsKKwkJb2xkQ29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhwb3J0YWwtPnF1ZXJ5Q29udGV4dCk7CiAKIAkJLyogTXVzdCByZW1lbWJlciBwb3J0YWwgcGFy YW0gbGlzdCwgaWYgYW55ICovCiAJCXBvcnRhbC0+cG9ydGFsUGFyYW1zID0gcGFyYW1zOwpAQCAt NDcyLDYgKzM4OCw4IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8g cGFyYW1zLAogCQlzd2l0Y2ggKHBvcnRhbC0+c3RyYXRlZ3kpCiAJCXsKIAkJCWNhc2UgUE9SVEFM X09ORV9TRUxFQ1Q6CisJCQljYXNlIFBPUlRBTF9PTkVfUkVUVVJOSU5HOgorCQkJY2FzZSBQT1JU QUxfT05FX01PRF9XSVRIOgogCiAJCQkJLyogTXVzdCBzZXQgc25hcHNob3QgYmVmb3JlIHN0YXJ0 aW5nIGV4ZWN1dG9yLiAqLwogCQkJCWlmIChzbmFwc2hvdCkKQEAgLTQ5Myw2ICs0MTEsNyBAQCBQ b3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkgKiB0 aGUgZGVzdGluYXRpb24gdG8gRGVzdE5vbmUuCiAJCQkJICovCiAJCQkJcXVlcnlEZXNjID0gQ3Jl YXRlUXVlcnlEZXNjKGxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQsIHBvcnRhbC0+c3RtdHMpLAor CQkJCQkJCQkJCQlwb3J0YWwtPmNwbGFuLAogCQkJCQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQs CiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRTbmFw c2hvdCwKQEAgLTUwMSwzMCArNDIwLDUwIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBh cmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJCQkJCQlwb3J0YWwtPnF1ZXJ5RW52LAogCQkJCQkJ CQkJCQkwKTsKIAorCQkJCS8qIFJlbWVtYmVyIGZvciBQb3J0YWxSdW5NdWx0aSgpICovCisJCQkJ cG9ydGFsLT5xZGVzY3MgPSBsYXBwZW5kKHBvcnRhbC0+cWRlc2NzLCBxdWVyeURlc2MpOworCiAJ CQkJLyoKIAkJCQkgKiBJZiBpdCdzIGEgc2Nyb2xsYWJsZSBjdXJzb3IsIGV4ZWN1dG9yIG5lZWRz IHRvIHN1cHBvcnQKIAkJCQkgKiBSRVdJTkQgYW5kIGJhY2t3YXJkcyBzY2FuLCBhcyB3ZWxsIGFz IHdoYXRldmVyIHRoZSBjYWxsZXIKIAkJCQkgKiBtaWdodCd2ZSBhc2tlZCBmb3IuCiAJCQkJICov Ci0JCQkJaWYgKHBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfU0NST0xMKQorCQkJ CWlmIChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUICYmCisJCQkJCShwb3J0 YWwtPmN1cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1NDUk9MTCkpCiAJCQkJCW15ZWZsYWdzID0g ZWZsYWdzIHwgRVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FSRDsKIAkJCQllbHNl CiAJCQkJCW15ZWZsYWdzID0gZWZsYWdzOwogCiAJCQkJLyoKLQkJCQkgKiBDYWxsIEV4ZWN1dG9y U3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCisJCQkJICogQ2FsbCBFeGVj dXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gIEEKKwkJCQkgKiBj YWNoZWQgcGxhbiBtYXkgZ2V0IGludmFsaWRhdGVkIGFzIHdlJ3JlIGRvaW5nIHRoYXQuCiAJCQkJ ICovCiAJCQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKTsKKwkJCQlpZiAoIXF1 ZXJ5RGVzYy0+cGxhbl92YWxpZCkKKwkJCQl7CisJCQkJCUFzc2VydChxdWVyeURlc2MtPmNwbGFu KTsKKwkJCQkJUG9ydGFsUXVlcnlGaW5pc2gocXVlcnlEZXNjKTsKKwkJCQkJUG9wQWN0aXZlU25h cHNob3QoKTsKKwkJCQkJcG9ydGFsLT5wbGFuX3ZhbGlkID0gZmFsc2U7CisJCQkJCWdvdG8gZWFy bHlfZXhpdDsKKwkJCQl9CiAKIAkJCQkvKgotCQkJCSAqIFRoaXMgdGVsbHMgUG9ydGFsQ2xlYW51 cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9yCisJCQkJICogVGhpcyB0ZWxscyBQb3J0YWxDbGVh bnVwIHRvIHNodXQgZG93biB0aGUgZXhlY3V0b3IsIHRob3VnaAorCQkJCSAqIG5vdCBuZWVkZWQg Zm9yIHF1ZXJpZXMgaGFuZGxlZCBieSBQb3J0YWxSdW5NdWx0aSgpLgogCQkJCSAqLwotCQkJCXBv cnRhbC0+cXVlcnlEZXNjID0gcXVlcnlEZXNjOworCQkJCWlmIChwb3J0YWwtPnN0cmF0ZWd5ID09 IFBPUlRBTF9PTkVfU0VMRUNUKQorCQkJCQlwb3J0YWwtPnF1ZXJ5RGVzYyA9IHF1ZXJ5RGVzYzsK IAogCQkJCS8qCi0JCQkJICogUmVtZW1iZXIgdHVwbGUgZGVzY3JpcHRvciAoY29tcHV0ZWQgYnkg RXhlY3V0b3JTdGFydCkKKwkJCQkgKiBSZW1lbWJlciB0dXBsZSBkZXNjcmlwdG9yIChjb21wdXRl ZCBieSBFeGVjdXRvclN0YXJ0KSwKKwkJCQkgKiB0aG91Z2ggbWFrZSBpdCBpbmRlcGVuZGVudCBv ZiBRdWVyeURlc2MgZm9yIHF1ZXJpZXMgaGFuZGxlZAorCQkJCSAqIGJ5IFBvcnRhbFJ1bk11bHRp KCkuCiAJCQkJICovCi0JCQkJcG9ydGFsLT50dXBEZXNjID0gcXVlcnlEZXNjLT50dXBEZXNjOwor CQkJCWlmIChwb3J0YWwtPnN0cmF0ZWd5ICE9IFBPUlRBTF9PTkVfU0VMRUNUKQorCQkJCQlwb3J0 YWwtPnR1cERlc2MgPSBDcmVhdGVUdXBsZURlc2NDb3B5KHF1ZXJ5RGVzYy0+dHVwRGVzYyk7CisJ CQkJZWxzZQorCQkJCQlwb3J0YWwtPnR1cERlc2MgPSBxdWVyeURlc2MtPnR1cERlc2M7CiAKIAkJ CQkvKgogCQkJCSAqIFJlc2V0IGN1cnNvciBwb3NpdGlvbiBkYXRhIHRvICJzdGFydCBvZiBxdWVy eSIKQEAgLTUzMiwzMyArNDcxLDExIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFt TGlzdEluZm8gcGFyYW1zLAogCQkJCXBvcnRhbC0+YXRTdGFydCA9IHRydWU7CiAJCQkJcG9ydGFs LT5hdEVuZCA9IGZhbHNlOwkvKiBhbGxvdyBmZXRjaGVzICovCiAJCQkJcG9ydGFsLT5wb3J0YWxQ b3MgPSAwOworCQkJCXBvcnRhbC0+cGxhbl92YWxpZCA9IHRydWU7CiAKIAkJCQlQb3BBY3RpdmVT bmFwc2hvdCgpOwogCQkJCWJyZWFrOwogCi0JCQljYXNlIFBPUlRBTF9PTkVfUkVUVVJOSU5HOgot CQkJY2FzZSBQT1JUQUxfT05FX01PRF9XSVRIOgotCi0JCQkJLyoKLQkJCQkgKiBXZSBkb24ndCBz dGFydCB0aGUgZXhlY3V0b3IgdW50aWwgd2UgYXJlIHRvbGQgdG8gcnVuIHRoZQotCQkJCSAqIHBv cnRhbC4gIFdlIGRvIG5lZWQgdG8gc2V0IHVwIHRoZSByZXN1bHQgdHVwZGVzYy4KLQkJCQkgKi8K LQkJCQl7Ci0JCQkJCVBsYW5uZWRTdG10ICpwc3RtdDsKLQotCQkJCQlwc3RtdCA9IFBvcnRhbEdl dFByaW1hcnlTdG10KHBvcnRhbCk7Ci0JCQkJCXBvcnRhbC0+dHVwRGVzYyA9Ci0JCQkJCQlFeGVj Q2xlYW5UeXBlRnJvbVRMKHBzdG10LT5wbGFuVHJlZS0+dGFyZ2V0bGlzdCk7Ci0JCQkJfQotCi0J CQkJLyoKLQkJCQkgKiBSZXNldCBjdXJzb3IgcG9zaXRpb24gZGF0YSB0byAic3RhcnQgb2YgcXVl cnkiCi0JCQkJICovCi0JCQkJcG9ydGFsLT5hdFN0YXJ0ID0gdHJ1ZTsKLQkJCQlwb3J0YWwtPmF0 RW5kID0gZmFsc2U7CS8qIGFsbG93IGZldGNoZXMgKi8KLQkJCQlwb3J0YWwtPnBvcnRhbFBvcyA9 IDA7Ci0JCQkJYnJlYWs7Ci0KIAkJCWNhc2UgUE9SVEFMX1VUSUxfU0VMRUNUOgogCiAJCQkJLyoK QEAgLTU3OCwxMSArNDk1LDg1IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlz dEluZm8gcGFyYW1zLAogCQkJCXBvcnRhbC0+YXRTdGFydCA9IHRydWU7CiAJCQkJcG9ydGFsLT5h dEVuZCA9IGZhbHNlOwkvKiBhbGxvdyBmZXRjaGVzICovCiAJCQkJcG9ydGFsLT5wb3J0YWxQb3Mg PSAwOworCQkJCXBvcnRhbC0+cGxhbl92YWxpZCA9IHRydWU7CiAJCQkJYnJlYWs7CiAKIAkJCWNh c2UgUE9SVEFMX01VTFRJX1FVRVJZOgotCQkJCS8qIE5lZWQgZG8gbm90aGluZyBub3cgKi8KKwkJ CQl7CisJCQkJCUxpc3RDZWxsICAgKmxjOworCQkJCQlib29sCQlmaXJzdCA9IHRydWU7CisKKwkJ CQkJZm9yZWFjaChsYywgcG9ydGFsLT5zdG10cykKKwkJCQkJeworCQkJCQkJUGxhbm5lZFN0bXQg KnBsYW4gPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMpOworCQkJCQkJYm9vbAkJaXNfdXRp bGl0eSA9IChwbGFuLT51dGlsaXR5U3RtdCAhPSBOVUxMKTsKKworCQkJCQkJLyoKKwkJCQkJCSAq IFB1c2ggdGhlIHNuYXBzaG90IHRvIGJlIHVzZWQgYnkgdGhlIGV4ZWN1dG9yLgorCQkJCQkJICov CisJCQkJCQlpZiAoIWlzX3V0aWxpdHkpCisJCQkJCQl7CisJCQkJCQkJLyoKKwkJCQkJCQkgKiBN dXN0IGNvcHkgdGhlIHNuYXBzaG90IGlmIHdlJ2xsIG5lZWQgdG8gdXBkYXRlCisJCQkJCQkJICog aXRzIGNvbW1hbmQgSUQuCisJCQkJCQkJICovCisJCQkJCQkJaWYgKCFmaXJzdCkKKwkJCQkJCQkJ UHVzaENvcGllZFNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCQkJCQkJZWxz ZQorCQkJCQkJCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK KwkJCQkJCX0KKworCQkJCQkJLyoKKwkJCQkJCSAqIEZyb20gdGhlIDJuZCBzdGF0ZW1lbnQgb253 YXJkcywgdXBkYXRlIHRoZSBjb21tYW5kCisJCQkJCQkgKiBJRCBhbmQgdGhlIHNuYXBzaG90IHRv IG1hdGNoLgorCQkJCQkJICovCisJCQkJCQlpZiAoIWZpcnN0KQorCQkJCQkJeworCQkJCQkJCUNv bW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJCQkJCQkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21t YW5kSWQoKTsKKwkJCQkJCX0KKworCQkJCQkJZmlyc3QgPSBmYWxzZTsKKworCQkJCQkJLyoKKwkJ CQkJCSAqIENyZWF0ZSB0aGUgUXVlcnlEZXNjIG9iamVjdC4gIERlc3RSZWNlaXZlciB3aWxsCisJ CQkJCQkgKiBiZSBzZXQgaW4gUG9ydGFsUnVuTXVsdGkoKS4KKwkJCQkJCSAqLworCQkJCQkJcXVl cnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBvcnRhbC0+Y3BsYW4sCisJCQkJCQkJCQkJ CQkJcG9ydGFsLT5zb3VyY2VUZXh0LAorCQkJCQkJCQkJCQkJCSFpc191dGlsaXR5ID8KKwkJCQkJ CQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpIDoKKwkJCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNo b3QsCisJCQkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQkJCQkJCU5VTEwsCisJ CQkJCQkJCQkJCQkJcGFyYW1zLAorCQkJCQkJCQkJCQkJCXBvcnRhbC0+cXVlcnlFbnYsIDApOwor CisJCQkJCQkvKiBSZW1lbWJlciBmb3IgUG9ydGFsTXVsdGlSdW4oKSAqLworCQkJCQkJcG9ydGFs LT5xZGVzY3MgPSBsYXBwZW5kKHBvcnRhbC0+cWRlc2NzLCBxdWVyeURlc2MpOworCisJCQkJCQlp ZiAoaXNfdXRpbGl0eSkKKwkJCQkJCQljb250aW51ZTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIENh bGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvcgorCQkJCQkJICogZXhlY3V0 aW9uLiAgQSBjYWNoZWQgcGxhbiBtYXkgZ2V0IGludmFsaWRhdGVkIGFzCisJCQkJCQkgKiB3ZSdy ZSBkb2luZyB0aGF0LgorCQkJCQkJICovCisJCQkJCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywg MCk7CisJCQkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQkJCQkJaWYgKCFxdWVyeURlc2MtPnBs YW5fdmFsaWQpCisJCQkJCQl7CisJCQkJCQkJQXNzZXJ0KHF1ZXJ5RGVzYy0+Y3BsYW4pOworCQkJ CQkJCVBvcnRhbFF1ZXJ5RmluaXNoKHF1ZXJ5RGVzYyk7CisJCQkJCQkJcG9ydGFsLT5wbGFuX3Zh bGlkID0gZmFsc2U7CisJCQkJCQkJZ290byBlYXJseV9leGl0OworCQkJCQkJfQorCQkJCQl9CisJ CQkJfQorCiAJCQkJcG9ydGFsLT50dXBEZXNjID0gTlVMTDsKKwkJCQlwb3J0YWwtPnBsYW5fdmFs aWQgPSB0cnVlOwogCQkJCWJyZWFrOwogCQl9CiAJfQpAQCAtNTk0LDE5ICs1ODUsMTggQEAgUG9y dGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCS8qIFJlc3Rv cmUgZ2xvYmFsIHZhcnMgYW5kIHByb3BhZ2F0ZSBlcnJvciAqLwogCQlBY3RpdmVQb3J0YWwgPSBz YXZlQWN0aXZlUG9ydGFsOwogCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IHNhdmVSZXNvdXJjZU93 bmVyOwotCQlQb3J0YWxDb250ZXh0ID0gc2F2ZVBvcnRhbENvbnRleHQ7CiAKIAkJUEdfUkVfVEhS T1coKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogCisJcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfUkVB RFk7CisKK2Vhcmx5X2V4aXQ6CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZENvbnRleHQpOwog CiAJQWN0aXZlUG9ydGFsID0gc2F2ZUFjdGl2ZVBvcnRhbDsKIAlDdXJyZW50UmVzb3VyY2VPd25l ciA9IHNhdmVSZXNvdXJjZU93bmVyOwotCVBvcnRhbENvbnRleHQgPSBzYXZlUG9ydGFsQ29udGV4 dDsKLQotCXBvcnRhbC0+c3RhdHVzID0gUE9SVEFMX1JFQURZOwogfQogCiAvKgpAQCAtMTE5Myw3 ICsxMTgzLDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCSAgIFF1ZXJ5Q29t cGxldGlvbiAqcWMpCiB7CiAJYm9vbAkJYWN0aXZlX3NuYXBzaG90X3NldCA9IGZhbHNlOwotCUxp c3RDZWxsICAgKnN0bXRsaXN0X2l0ZW07CisJTGlzdENlbGwgICAqcWRlc2NfaXRlbTsKIAogCS8q CiAJICogSWYgdGhlIGRlc3RpbmF0aW9uIGlzIERlc3RSZW1vdGVFeGVjdXRlLCBjaGFuZ2UgdG8g RGVzdE5vbmUuICBUaGUKQEAgLTEyMTQsOSArMTIwNCwxMCBAQCBQb3J0YWxSdW5NdWx0aShQb3J0 YWwgcG9ydGFsLAogCSAqIExvb3AgdG8gaGFuZGxlIHRoZSBpbmRpdmlkdWFsIHF1ZXJpZXMgZ2Vu ZXJhdGVkIGZyb20gYSBzaW5nbGUgcGFyc2V0cmVlCiAJICogYnkgYW5hbHlzaXMgYW5kIHJld3Jp dGUuCiAJICovCi0JZm9yZWFjaChzdG10bGlzdF9pdGVtLCBwb3J0YWwtPnN0bXRzKQorCWZvcmVh Y2gocWRlc2NfaXRlbSwgcG9ydGFsLT5xZGVzY3MpCiAJewotCQlQbGFubmVkU3RtdCAqcHN0bXQg PSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgc3RtdGxpc3RfaXRlbSk7CisJCVF1ZXJ5RGVzYyAq cWRlc2MgPSBsZmlyc3Rfbm9kZShRdWVyeURlc2MsIHFkZXNjX2l0ZW0pOworCQlQbGFubmVkU3Rt dCAqcHN0bXQgPSBxZGVzYy0+cGxhbm5lZHN0bXQ7CiAKIAkJLyoKIAkJICogSWYgd2UgZ290IGEg Y2FuY2VsIHNpZ25hbCBpbiBwcmlvciBjb21tYW5kLCBxdWl0CkBAIC0xMjQxLDcgKzEyMzIsNyBA QCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJICovCiAJCQlpZiAoIWFjdGl2ZV9z bmFwc2hvdF9zZXQpCiAJCQl7Ci0JCQkJU25hcHNob3QJc25hcHNob3QgPSBHZXRUcmFuc2FjdGlv blNuYXBzaG90KCk7CisJCQkJU25hcHNob3QgICAgc25hcHNob3QgPSBxZGVzYy0+c25hcHNob3Q7 CiAKIAkJCQkvKiBJZiB0b2xkIHRvLCByZWdpc3RlciB0aGUgc25hcHNob3QgYW5kIHNhdmUgaW4g cG9ydGFsICovCiAJCQkJaWYgKHNldEhvbGRTbmFwc2hvdCkKQEAgLTEyNzEsMjMgKzEyNjIsMzgg QEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCWVsc2UKIAkJCQlVcGRhdGVBY3Rp dmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCisJCQkvKgorCQkJICogUnVuIHRoZSBwbGFuIHRvIGNv bXBsZXRpb24uCisJCQkgKi8KKwkJCXFkZXNjLT5kZXN0ID0gZGVzdDsKKwkJCUV4ZWN1dG9yUnVu KHFkZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMEwsIHRydWUpOworCisJCQkvKgorCQkJICog QnVpbGQgY29tbWFuZCBjb21wbGV0aW9uIHN0YXR1cyBkYXRhIGlmIG5lZWRlZC4KKwkJCSAqLwog CQkJaWYgKHBzdG10LT5jYW5TZXRUYWcpCiAJCQl7Ci0JCQkJLyogc3RhdGVtZW50IGNhbiBzZXQg dGFnIHN0cmluZyAqLwotCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKLQkJCQkJCQkgcG9ydGFsLT5z b3VyY2VUZXh0LAotCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKLQkJCQkJCQkgcG9ydGFs LT5xdWVyeUVudiwKLQkJCQkJCQkgZGVzdCwgcWMpOwotCQkJfQotCQkJZWxzZQotCQkJewotCQkJ CS8qIHN0bXQgYWRkZWQgYnkgcmV3cml0ZSBjYW5ub3Qgc2V0IHRhZyAqLwotCQkJCVByb2Nlc3NR dWVyeShwc3RtdCwKLQkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAotCQkJCQkJCSBwb3J0YWwt PnBvcnRhbFBhcmFtcywKLQkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwKLQkJCQkJCQkgYWx0ZGVz dCwgTlVMTCk7CisJCQkJc3dpdGNoIChxZGVzYy0+b3BlcmF0aW9uKQorCQkJCXsKKwkJCQkJY2Fz ZSBDTURfU0VMRUNUOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfU0VMRUNU LCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2Ug Q01EX0lOU0VSVDoKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX0lOU0VSVCwg cWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIENN RF9VUERBVEU6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19VUERBVEUsIHFk ZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBDTURf REVMRVRFOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfREVMRVRFLCBxZGVz Yy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgQ01EX01F UkdFOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfTUVSR0UsIHFkZXNjLT5l c3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJ CVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1VOS05PV04sIHFkZXNjLT5lc3RhdGUtPmVz X3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQl9CiAJCQl9CiAKIAkJCWlmIChsb2dfZXhl Y3V0b3Jfc3RhdHMpCkBAIC0xMzQ2LDggKzEzNTIsMTkgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFs IHBvcnRhbCwKIAkJICogSW5jcmVtZW50IGNvbW1hbmQgY291bnRlciBiZXR3ZWVuIHF1ZXJpZXMs IGJ1dCBub3QgYWZ0ZXIgdGhlIGxhc3QKIAkJICogb25lLgogCQkgKi8KLQkJaWYgKGxuZXh0KHBv cnRhbC0+c3RtdHMsIHN0bXRsaXN0X2l0ZW0pICE9IE5VTEwpCisJCWlmIChsbmV4dChwb3J0YWwt PnFkZXNjcywgcWRlc2NfaXRlbSkgIT0gTlVMTCkKIAkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50 KCk7CisKKwkJLyogcG9ydGFsLT5xdWVyeURlc2MgaXMgZnJlZSdkIGJ5IFBvcnRhbENsZWFudXAo KS4gKi8KKwkJaWYgKHFkZXNjICE9IHBvcnRhbC0+cXVlcnlEZXNjKQorCQl7CisJCQlpZiAocWRl c2MtPmVzdGF0ZSkKKwkJCXsKKwkJCQlFeGVjdXRvckZpbmlzaChxZGVzYyk7CisJCQkJRXhlY3V0 b3JFbmQocWRlc2MpOworCQkJfQorCQkJRnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CisJCX0KIAl9CiAK IAkvKiBQb3AgdGhlIHNuYXBzaG90IGlmIHdlIHB1c2hlZCBvbmUuICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2xzeXNjYWNoZS5jCmluZGV4IGMwNzM4MjA1MWQuLjM4YWU0M2UyNGIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0yMDczLDYgKzIwNzMsMjcgQEAgZ2V0X3JlbF9wZXJz aXN0ZW5jZShPaWQgcmVsaWQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIGdldF9yZWxf cmVsaXNzaGFyZWQKKyAqCisgKgkJUmV0dXJucyBpZiB0aGUgZ2l2ZW4gcmVsYXRpb24gaXMgc2hh cmVkIG9yIG5vdAorICovCitib29sCitnZXRfcmVsX3JlbGlzc2hhcmVkKE9pZCByZWxpZCkKK3sK KwlIZWFwVHVwbGUJdHA7CisJRm9ybV9wZ19jbGFzcyByZWx0dXA7CisJYm9vbAkJcmVzdWx0Owor CisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7 CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHJlbGF0aW9uICV1IiwgcmVsaWQpOworCXJlbHR1cCA9IChGb3JtX3BnX2Ns YXNzKSBHRVRTVFJVQ1QodHApOworCXJlc3VsdCA9IHJlbHR1cC0+cmVsaXNzaGFyZWQ7CisJUmVs ZWFzZVN5c0NhY2hlKHRwKTsKKworCXJldHVybiByZXN1bHQ7Cit9CiAKIC8qCQkJCS0tLS0tLS0t LS0gVFJBTlNGT1JNIENBQ0hFIC0tLS0tLS0tLS0JCQkJCQkgKi8KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9wbGFuY2FjaGUuYwppbmRleCA3N2MyYmEzZjhmLi40ZTQ1NWQ4MTVmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtMTAwLDEzICsxMDAsMTMgQEAgc3RhdGljIHZvaWQgUmVs ZWFzZUdlbmVyaWNQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIExp c3QgKlJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAog CQkJCQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiBzdGF0aWMgYm9vbCBDaGVj a0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CitzdGF0aWMgYm9vbCBH ZW5lcmljUGxhbklzVmFsaWQoQ2FjaGVkUGxhbiAqY3BsYW4pOwogc3RhdGljIENhY2hlZFBsYW4g KkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlz dCwKIAkJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVu dCAqcXVlcnlFbnYpOwogc3RhdGljIGJvb2wgY2hvb3NlX2N1c3RvbV9wbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcyk7 CiBzdGF0aWMgZG91YmxlIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBp bmNsdWRlX3BsYW5uZXIpOwogc3RhdGljIFF1ZXJ5ICpRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChM aXN0ICpzdG10cyk7Ci1zdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10 X2xpc3QsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgdm9pZCBBY3F1aXJlUGxhbm5lckxvY2tzKExp c3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lkIFNjYW5RdWVyeUZvckxv Y2tzKFF1ZXJ5ICpwYXJzZXRyZWUsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgYm9vbCBTY2FuUXVl cnlXYWxrZXIoTm9kZSAqbm9kZSwgYm9vbCAqYWNxdWlyZSk7CkBAIC03ODcsOSArNzg3LDYgQEAg UmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKgog ICogQ2FsbGVyIG11c3QgaGF2ZSBhbHJlYWR5IGNhbGxlZCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkg dG8gdmVyaWZ5IHRoYXQgdGhlCiAgKiBxdWVyeXRyZWUgaXMgdXAgdG8gZGF0ZS4KLSAqCi0gKiBP biBhICJ0cnVlIiByZXR1cm4sIHdlIGhhdmUgYWNxdWlyZWQgdGhlIGxvY2tzIG5lZWRlZCB0byBy dW4gdGhlIHBsYW4uCi0gKiAoV2UgbXVzdCBkbyB0aGlzIGZvciB0aGUgInRydWUiIHJlc3VsdCB0 byBiZSByYWNlLWNvbmRpdGlvbi1mcmVlLikKICAqLwogc3RhdGljIGJvb2wKIENoZWNrQ2FjaGVk UGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQpAQCAtODAzLDYwICs4MDAsNTYgQEAg Q2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAJaWYgKCFwbGFu KQogCQlyZXR1cm4gZmFsc2U7CiAKLQlBc3NlcnQocGxhbi0+bWFnaWMgPT0gQ0FDSEVEUExBTl9N QUdJQyk7Ci0JLyogR2VuZXJpYyBwbGFucyBhcmUgbmV2ZXIgb25lLXNob3QgKi8KLQlBc3NlcnQo IXBsYW4tPmlzX29uZXNob3QpOworCWlmIChHZW5lcmljUGxhbklzVmFsaWQocGxhbikpCisJCXJl dHVybiB0cnVlOwogCiAJLyoKLQkgKiBJZiBwbGFuIGlzbid0IHZhbGlkIGZvciBjdXJyZW50IHJv bGUsIHdlIGNhbid0IHVzZSBpdC4KKwkgKiBQbGFuIGhhcyBiZWVuIGludmFsaWRhdGVkLCBzbyB1 bmxpbmsgaXQgZnJvbSB0aGUgcGFyZW50IGFuZCByZWxlYXNlIGl0LgogCSAqLwotCWlmIChwbGFu LT5pc192YWxpZCAmJiBwbGFuLT5kZXBlbmRzT25Sb2xlICYmCi0JCXBsYW4tPnBsYW5Sb2xlSWQg IT0gR2V0VXNlcklkKCkpCi0JCXBsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CisJUmVsZWFzZUdlbmVy aWNQbGFuKHBsYW5zb3VyY2UpOwogCi0JLyoKLQkgKiBJZiBpdCBhcHBlYXJzIHZhbGlkLCBhY3F1 aXJlIGxvY2tzIGFuZCByZWNoZWNrOyB0aGlzIGlzIG11Y2ggdGhlIHNhbWUKLQkgKiBsb2dpYyBh cyBpbiBSZXZhbGlkYXRlQ2FjaGVkUXVlcnksIGJ1dCBmb3IgYSBwbGFuLgotCSAqLwotCWlmIChw bGFuLT5pc192YWxpZCkKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBHZW5lcmljUGxhbklz VmFsaWQKKyAqCQlJcyBhIGdlbmVyaWMgcGxhbiBzdGlsbCB2YWxpZD8KKyAqCisgKiBJdCBtYXkg aGF2ZSBnb25lIHN0YWxlIGR1ZSB0byBjb25jdXJyZW50IHNjaGVtYSBtb2RpZmljYXRpb25zIG9m IHJlbGF0aW9ucworICogbWVudGlvbmVkIGluIHRoZSBwbGFuIG9yIGEgY291cGxlIG9mIG90aGVy IHRoaW5ncyBtZW50aW9uZWQgYmVsb3cuCisgKi8KK3N0YXRpYyBib29sCitHZW5lcmljUGxhbklz VmFsaWQoQ2FjaGVkUGxhbiAqY3BsYW4pCit7CisJQXNzZXJ0KGNwbGFuICE9IE5VTEwpOworCUFz c2VydChjcGxhbi0+bWFnaWMgPT0gQ0FDSEVEUExBTl9NQUdJQyk7CisJLyogR2VuZXJpYyBwbGFu cyBhcmUgbmV2ZXIgb25lLXNob3QgKi8KKwlBc3NlcnQoIWNwbGFuLT5pc19vbmVzaG90KTsKKwor CWlmIChjcGxhbi0+aXNfdmFsaWQpCiAJewogCQkvKgogCQkgKiBQbGFuIG11c3QgaGF2ZSBwb3Np dGl2ZSByZWZjb3VudCBiZWNhdXNlIGl0IGlzIHJlZmVyZW5jZWQgYnkKIAkJICogcGxhbnNvdXJj ZTsgc28gbm8gbmVlZCB0byBmZWFyIGl0IGRpc2FwcGVhcnMgdW5kZXIgdXMgaGVyZS4KIAkJICov Ci0JCUFzc2VydChwbGFuLT5yZWZjb3VudCA+IDApOwotCi0JCUFjcXVpcmVFeGVjdXRvckxvY2tz KHBsYW4tPnN0bXRfbGlzdCwgdHJ1ZSk7CisJCUFzc2VydChjcGxhbi0+cmVmY291bnQgPiAwKTsK IAogCQkvKgotCQkgKiBJZiBwbGFuIHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFu c2FjdGlvblhtaW4gaGFzCi0JCSAqIGFkdmFuY2VkLCBhbmQgaWYgc28gaW52YWxpZGF0ZSBpdC4K KwkJICogSWYgcGxhbiBpc24ndCB2YWxpZCBmb3IgY3VycmVudCByb2xlLCB3ZSBjYW4ndCB1c2Ug aXQuCiAJCSAqLwotCQlpZiAocGxhbi0+aXNfdmFsaWQgJiYKLQkJCVRyYW5zYWN0aW9uSWRJc1Zh bGlkKHBsYW4tPnNhdmVkX3htaW4pICYmCi0JCQkhVHJhbnNhY3Rpb25JZEVxdWFscyhwbGFuLT5z YXZlZF94bWluLCBUcmFuc2FjdGlvblhtaW4pKQotCQkJcGxhbi0+aXNfdmFsaWQgPSBmYWxzZTsK KwkJaWYgKGNwbGFuLT5kZXBlbmRzT25Sb2xlICYmIGNwbGFuLT5wbGFuUm9sZUlkICE9IEdldFVz ZXJJZCgpKQorCQkJY3BsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CiAKIAkJLyoKLQkJICogQnkgbm93 LCBpZiBhbnkgaW52YWxpZGF0aW9uIGhhcyBoYXBwZW5lZCwgdGhlIGludmFsIGNhbGxiYWNrCi0J CSAqIGZ1bmN0aW9ucyB3aWxsIGhhdmUgbWFya2VkIHRoZSBwbGFuIGludmFsaWQuCisJCSAqIElm IHBsYW4gd2FzIHRyYW5zaWVudCwgY2hlY2sgdG8gc2VlIGlmIFRyYW5zYWN0aW9uWG1pbiBoYXMK KwkJICogYWR2YW5jZWQsIGFuZCBpZiBzbyBpbnZhbGlkYXRlIGl0LgogCQkgKi8KLQkJaWYgKHBs YW4tPmlzX3ZhbGlkKQotCQl7Ci0JCQkvKiBTdWNjZXNzZnVsbHkgcmV2YWxpZGF0ZWQgYW5kIGxv Y2tlZCB0aGUgcXVlcnkuICovCi0JCQlyZXR1cm4gdHJ1ZTsKLQkJfQotCi0JCS8qIE9vcHMsIHRo ZSByYWNlIGNhc2UgaGFwcGVuZWQuICBSZWxlYXNlIHVzZWxlc3MgbG9ja3MuICovCi0JCUFjcXVp cmVFeGVjdXRvckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgZmFsc2UpOworCQlpZiAoVHJhbnNhY3Rp b25JZElzVmFsaWQoY3BsYW4tPnNhdmVkX3htaW4pICYmCisJCQkhVHJhbnNhY3Rpb25JZEVxdWFs cyhjcGxhbi0+c2F2ZWRfeG1pbiwgVHJhbnNhY3Rpb25YbWluKSkKKwkJCWNwbGFuLT5pc192YWxp ZCA9IGZhbHNlOwogCX0KIAotCS8qCi0JICogUGxhbiBoYXMgYmVlbiBpbnZhbGlkYXRlZCwgc28g dW5saW5rIGl0IGZyb20gdGhlIHBhcmVudCBhbmQgcmVsZWFzZSBpdC4KLQkgKi8KLQlSZWxlYXNl R2VuZXJpY1BsYW4ocGxhbnNvdXJjZSk7Ci0KLQlyZXR1cm4gZmFsc2U7CisJcmV0dXJuIGNwbGFu LT5pc192YWxpZDsKIH0KIAogLyoKQEAgLTExMjYsOSArMTExOSw2IEBAIGNhY2hlZF9wbGFuX2Nv c3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpCiAgKiBwbGFuIG9yIGEg Y3VzdG9tIHBsYW4gZm9yIHRoZSBnaXZlbiBwYXJhbWV0ZXJzOiB0aGUgY2FsbGVyIGRvZXMgbm90 IGtub3cKICAqIHdoaWNoIGl0IHdpbGwgZ2V0LgogICoKLSAqIE9uIHJldHVybiwgdGhlIHBsYW4g aXMgdmFsaWQgYW5kIHdlIGhhdmUgc3VmZmljaWVudCBsb2NrcyB0byBiZWdpbgotICogZXhlY3V0 aW9uLgotICoKICAqIE9uIHJldHVybiwgdGhlIHJlZmNvdW50IG9mIHRoZSBwbGFuIGhhcyBiZWVu IGluY3JlbWVudGVkOyBhIGxhdGVyCiAgKiBSZWxlYXNlQ2FjaGVkUGxhbigpIGNhbGwgaXMgZXhw ZWN0ZWQuICBJZiAib3duZXIiIGlzIG5vdCBOVUxMIHRoZW4KICAqIHRoZSByZWZjb3VudCBoYXMg YmVlbiByZXBvcnRlZCB0byB0aGF0IFJlc291cmNlT3duZXIgKG5vdGUgdGhhdCB0aGlzCkBAIC0x MzYwLDggKzEzNTAsOCBAQCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCX0KIAogCS8qCi0JICogUmVqZWN0IGlmIEFjcXVp cmVFeGVjdXRvckxvY2tzIHdvdWxkIGhhdmUgYW55dGhpbmcgdG8gZG8uICBUaGlzIGlzCi0JICog cHJvYmFibHkgdW5uZWNlc3NhcnkgZ2l2ZW4gdGhlIHByZXZpb3VzIGNoZWNrLCBidXQgbGV0J3Mg YmUgc2FmZS4KKwkgKiBSZWplY3QgaWYgdGhlIGV4ZWN1dG9yIHdvdWxkIG5lZWQgdG8gdGFrZSBh ZGRpdGlvbmFsIGxvY2tzLCB0aGF0IGlzLCBpbgorCSAqIGFkZGl0aW9uIHRvIHRob3NlIHRha2Vu IGJ5IEFjcXVpcmVQbGFubmVyTG9ja3MoKSBvbiBhIGdpdmVuIHF1ZXJ5LgogCSAqLwogCWZvcmVh Y2gobGMsIHBsYW4tPnN0bXRfbGlzdCkKIAl7CkBAIC0xNzM1LDU4ICsxNzI1LDYgQEAgUXVlcnlM aXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpCiAJcmV0dXJuIE5VTEw7CiB9CiAKLS8qCi0g KiBBY3F1aXJlRXhlY3V0b3JMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIGV4ZWN1dGlv biBvZiBhIGNhY2hlZCBwbGFuOwotICogb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMgZmFs c2UuCi0gKi8KLXN0YXRpYyB2b2lkCi1BY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xp c3QsIGJvb2wgYWNxdWlyZSkKLXsKLQlMaXN0Q2VsbCAgICpsYzE7Ci0KLQlmb3JlYWNoKGxjMSwg c3RtdF9saXN0KQotCXsKLQkJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0X25vZGUo UGxhbm5lZFN0bXQsIGxjMSk7Ci0JCUxpc3RDZWxsICAgKmxjMjsKLQotCQlpZiAocGxhbm5lZHN0 bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQotCQl7Ci0JCQkvKgotCQkJICogSWdub3Jl IHV0aWxpdHkgc3RhdGVtZW50cywgZXhjZXB0IHRob3NlIChzdWNoIGFzIEVYUExBSU4pIHRoYXQK LQkJCSAqIGNvbnRhaW4gYSBwYXJzZWQtYnV0LW5vdC1wbGFubmVkIHF1ZXJ5LiAgTm90ZTogaXQn cyBva2F5IHRvIHVzZQotCQkJICogU2NhblF1ZXJ5Rm9yTG9ja3MsIGV2ZW4gdGhvdWdoIHRoZSBx dWVyeSBoYXNuJ3QgYmVlbiB0aHJvdWdoCi0JCQkgKiBydWxlIHJld3JpdGluZywgYmVjYXVzZSBy ZXdyaXRpbmcgZG9lc24ndCBjaGFuZ2UgdGhlIHF1ZXJ5Ci0JCQkgKiByZXByZXNlbnRhdGlvbi4K LQkJCSAqLwotCQkJUXVlcnkJICAgKnF1ZXJ5ID0gVXRpbGl0eUNvbnRhaW5zUXVlcnkocGxhbm5l ZHN0bXQtPnV0aWxpdHlTdG10KTsKLQotCQkJaWYgKHF1ZXJ5KQotCQkJCVNjYW5RdWVyeUZvckxv Y2tzKHF1ZXJ5LCBhY3F1aXJlKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJZm9yZWFjaChsYzIs IHBsYW5uZWRzdG10LT5ydGFibGUpCi0JCXsKLQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IChSYW5n ZVRibEVudHJ5ICopIGxmaXJzdChsYzIpOwotCi0JCQlpZiAoIShydGUtPnJ0ZWtpbmQgPT0gUlRF X1JFTEFUSU9OIHx8Ci0JCQkJICAocnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSAmJiBPaWRJ c1ZhbGlkKHJ0ZS0+cmVsaWQpKSkpCi0JCQkJY29udGludWU7Ci0KLQkJCS8qCi0JCQkgKiBBY3F1 aXJlIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9mIGxvY2sgb24gZWFjaCByZWxhdGlvbiBPSUQuIE5v dGUKLQkJCSAqIHRoYXQgd2UgZG9uJ3QgYWN0dWFsbHkgdHJ5IHRvIG9wZW4gdGhlIHJlbCwgYW5k IGhlbmNlIHdpbGwgbm90Ci0JCQkgKiBmYWlsIGlmIGl0J3MgYmVlbiBkcm9wcGVkIGVudGlyZWx5 IC0tLSB3ZSdsbCBqdXN0IHRyYW5zaWVudGx5Ci0JCQkgKiBhY3F1aXJlIGEgbm9uLWNvbmZsaWN0 aW5nIGxvY2suCi0JCQkgKi8KLQkJCWlmIChhY3F1aXJlKQotCQkJCUxvY2tSZWxhdGlvbk9pZChy dGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKLQkJCWVsc2UKLQkJCQlVbmxvY2tSZWxhdGlv bk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKLQkJfQotCX0KLX0KLQogLyoKICAq IEFjcXVpcmVQbGFubmVyTG9ja3M6IGFjcXVpcmUgbG9ja3MgbmVlZGVkIGZvciBwbGFubmluZyBv ZiBhIHF1ZXJ5dHJlZSBsaXN0OwogICogb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMgZmFs c2UuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCAwNmRmYTg1ZjA0Li4zYWQ4MGM3 ZWNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTIwMSw2ICsyMDEsMTAgQEAg Q3JlYXRlUG9ydGFsKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgYWxsb3dEdXAsIGJvb2wgZHVwU2ls ZW50KQogCXBvcnRhbC0+cG9ydGFsQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BQ b3J0YWxDb250ZXh0LAogCQkJCQkJCQkJCQkJICAiUG9ydGFsQ29udGV4dCIsCiAJCQkJCQkJCQkJ CQkgIEFMTE9DU0VUX1NNQUxMX1NJWkVTKTsKKwkvKiBpbml0aWFsaXplIHBvcnRhbCdzIHF1ZXJ5 IGNvbnRleHQgdG8gc3RvcmUgUXVlcnlEZXNjcyAqLworCXBvcnRhbC0+cXVlcnlDb250ZXh0ID0g QWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcFBvcnRhbENvbnRleHQsCisJCQkJCQkJCQkJCQkgIlBv cnRhbFF1ZXJ5Q29udGV4dCIsCisJCQkJCQkJCQkJCQkgQUxMT0NTRVRfU01BTExfU0laRVMpOwog CiAJLyogY3JlYXRlIGEgcmVzb3VyY2Ugb3duZXIgZm9yIHRoZSBwb3J0YWwgKi8KIAlwb3J0YWwt PnJlc293bmVyID0gUmVzb3VyY2VPd25lckNyZWF0ZShDdXJUcmFuc2FjdGlvblJlc291cmNlT3du ZXIsCkBAIC0yMjQsNiArMjI4LDcgQEAgQ3JlYXRlUG9ydGFsKGNvbnN0IGNoYXIgKm5hbWUsIGJv b2wgYWxsb3dEdXAsIGJvb2wgZHVwU2lsZW50KQogCiAJLyogZm9yIG5hbWVkIHBvcnRhbHMgcmV1 c2UgcG9ydGFsLT5uYW1lIGNvcHkgKi8KIAlNZW1vcnlDb250ZXh0U2V0SWRlbnRpZmllcihwb3J0 YWwtPnBvcnRhbENvbnRleHQsIHBvcnRhbC0+bmFtZVswXSA/IHBvcnRhbC0+bmFtZSA6ICI8dW5u YW1lZD4iKTsKKwlNZW1vcnlDb250ZXh0U2V0SWRlbnRpZmllcihwb3J0YWwtPnF1ZXJ5Q29udGV4 dCwgcG9ydGFsLT5uYW1lWzBdID8gcG9ydGFsLT5uYW1lIDogIjx1bm5hbWVkPiIpOwogCiAJcmV0 dXJuIHBvcnRhbDsKIH0KQEAgLTU5NCw2ICs1OTksNyBAQCBQb3J0YWxEcm9wKFBvcnRhbCBwb3J0 YWwsIGJvb2wgaXNUb3BDb21taXQpCiAKIAkvKiByZWxlYXNlIHN1YnNpZGlhcnkgc3RvcmFnZSAq LwogCU1lbW9yeUNvbnRleHREZWxldGUocG9ydGFsLT5wb3J0YWxDb250ZXh0KTsKKwlNZW1vcnlD b250ZXh0RGVsZXRlKHBvcnRhbC0+cXVlcnlDb250ZXh0KTsKIAogCS8qIHJlbGVhc2UgcG9ydGFs IHN0cnVjdCAoaXQncyBpbiBUb3BQb3J0YWxDb250ZXh0KSAqLwogCXBmcmVlKHBvcnRhbCk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9leHBsYWluLmgKaW5kZXggN2MxMDcxZGRkMS4uZGEzOWIyZTRmZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2V4cGxhaW4uaApAQCAtODcsNyArODcsMTEgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVV0 aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkJICBFeHBs YWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCQkgIFBhcmFtTGlz dEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiAKLWV4dGVybiB2b2lk IEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50 bywKK2V4dGVybiBRdWVyeURlc2MgKkV4cGxhaW5RdWVyeURlc2MoUGxhbm5lZFN0bXQgKnN0bXQs IHN0cnVjdCBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCQkgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcs IEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCisJCQkJIFBhcmFtTGlzdEluZm8g cGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CitleHRlcm4gdm9pZCBFeHBsYWlu T25lUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKKwkJCQkJCSAgIEludG9DbGF1c2UgKmludG8s CiAJCQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJ CQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwK IAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKQEAgLTEwMyw2ICsxMDcs NyBAQCBleHRlcm4gdm9pZCBFeHBsYWluUXVlcnlQYXJhbWV0ZXJzKEV4cGxhaW5TdGF0ZSAqZXMs IFBhcmFtTGlzdEluZm8gcGFyYW1zLCBpbnQgbQogCiBleHRlcm4gdm9pZCBFeHBsYWluQmVnaW5P dXRwdXQoRXhwbGFpblN0YXRlICplcyk7CiBleHRlcm4gdm9pZCBFeHBsYWluRW5kT3V0cHV0KEV4 cGxhaW5TdGF0ZSAqZXMpOworZXh0ZXJuIHZvaWQgRXhwbGFpblJlc2V0T3V0cHV0KEV4cGxhaW5T dGF0ZSAqZXMpOwogZXh0ZXJuIHZvaWQgRXhwbGFpblNlcGFyYXRlUGxhbnMoRXhwbGFpblN0YXRl ICplcyk7CiAKIGV4dGVybiB2b2lkIEV4cGxhaW5Qcm9wZXJ0eUxpc3QoY29uc3QgY2hhciAqcWxh YmVsLCBMaXN0ICpkYXRhLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rl c2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXggYWYyYmYzNmRmYi4u YzM2YzI1YjQ5NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCkBAIC0zMiw5ICszMiwxMiBAQAog ICovCiB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIHsKKwlOb2RlVGFnCQl0eXBlOworCiAJLyog VGhlc2UgZmllbGRzIGFyZSBwcm92aWRlZCBieSBDcmVhdGVRdWVyeURlc2MgKi8KIAlDbWRUeXBl CQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURfVVBEQVRFLCBldGMuICovCiAJUGxhbm5l ZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mgb3V0cHV0IChjb3VsZCBiZSB1dGlsaXR5 LCB0b28pICovCisJc3RydWN0IENhY2hlZFBsYW4gKmNwbGFuOwkvKiBDYWNoZWRQbGFuLCBpZiBw bGFubmVkc3RtdCBpcyBmcm9tIG9uZSAqLwogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7CQkvKiBz b3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFwc2hvdDsJCS8qIHNuYXBz aG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9zc2NoZWNrX3NuYXBzaG90Owkv KiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICovCkBAIC00Nyw2ICs1MCw3IEBAIHR5 cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCVR1cGxlRGVzYwl0dXBEZXNjOwkJLyogZGVzY3JpcHRv ciBmb3IgcmVzdWx0IHR1cGxlcyAqLwogCUVTdGF0ZQkgICAqZXN0YXRlOwkJCS8qIGV4ZWN1dG9y J3MgcXVlcnktd2lkZSBzdGF0ZSAqLwogCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZTsJCS8qIHRyZWUg b2YgcGVyLXBsYW4tbm9kZSBzdGF0ZSAqLworCWJvb2wJCXBsYW5fdmFsaWQ7CQkvKiBpcyBwbGFu c3RhdGUgdHJlZSBmdWxseSB2YWxpZD8gKi8KIAogCS8qIFRoaXMgZmllbGQgaXMgc2V0IGJ5IEV4 ZWN1dG9yUnVuICovCiAJYm9vbAkJYWxyZWFkeV9leGVjdXRlZDsJLyogdHJ1ZSBpZiBwcmV2aW91 c2x5IGV4ZWN1dGVkICovCkBAIC01Nyw2ICs2MSw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVz YwogCiAvKiBpbiBwcXVlcnkuYyAqLwogZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNj KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJICBzdHJ1Y3QgQ2FjaGVkUGxhbiAq Y3BsYW4sCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICBTbmFw c2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggZTdlMjVjMDU3ZS4uOGM2ODAzNThlOCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjdXRvci5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAibm9kZXMvbG9j a29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2FjaGUuaCIKIAogCiAvKgpAQCAt NTksNiArNjAsMTAgQEAKICNkZWZpbmUgRVhFQ19GTEFHX01BUksJCQkweDAwMDgJLyogbmVlZCBt YXJrL3Jlc3RvcmUgKi8KICNkZWZpbmUgRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlMgMHgwMDEwCS8q IHNraXAgQWZ0ZXJUcmlnZ2VyIGNhbGxzICovCiAjZGVmaW5lIEVYRUNfRkxBR19XSVRIX05PX0RB VEEJMHgwMDIwCS8qIHJlbCBzY2FubmFiaWxpdHkgZG9lc24ndCBtYXR0ZXIgKi8KKyNkZWZpbmUg RVhFQ19GTEFHX0dFVF9MT0NLUwkJMHgwNDAwCS8qIHNob3VsZCBFeGVjR2V0UmFuZ2VUYWJsZVJl bGF0aW9uCisJCQkJCQkJCQkJICogbG9jayByZWxhdGlvbnM/ICovCisjZGVmaW5lIEVYRUNfRkxB R19SRUxfTE9DS1MJCTB4ODAwMAkvKiBzaG91bGQgRXhlY0Nsb3NlUmFuZ2VUYWJsZVJlbGF0aW9u cworCQkJCQkJCQkJCSAqIHJlbGVhc2UgbG9ja3M/ICovCiAKIAogLyogSG9vayBmb3IgcGx1Z2lu cyB0byBnZXQgY29udHJvbCBpbiBFeGVjdXRvclN0YXJ0KCkgKi8KQEAgLTI0NSw2ICsyNTAsMTMg QEAgZXh0ZXJuIHZvaWQgRXhlY0VuZE5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lk IEV4ZWNTaHV0ZG93bk5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTZXRU dXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0ZSAqY2hpbGRfbm9kZSk7CiAK Ky8qIElzIHRoZSBjYWNoZWQgcGxhbiovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNQbGFuU3Rp bGxWYWxpZChFU3RhdGUgKmVzdGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFu ID09IE5VTEwgPyB0cnVlIDoKKwkJQ2FjaGVkUGxhblN0aWxsVmFsaWQoZXN0YXRlLT5lc19jYWNo ZWRwbGFuKTsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNQcm9jTm9kZQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAppbmRleCAyMGY0YzhiMzVmLi44OWY1YTYyN2M4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApA QCAtNjE5LDYgKzYxOSw4IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4 ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9z OwkvKiBMaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5u ZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KKwlzdHJ1Y3QgQ2FjaGVkUGxh biAqZXNfY2FjaGVkcGxhbjsJLyogQ2FjaGVkUGxhbiBpZiBwbGFubmVkc3RtdCBpcyBmcm9tCisJ CQkJCQkJCQkJICogb25lICovCiAJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9pbmZvczsJLyogUGxh bm5lZFN0bXQucGFydFBydW5lSW5mb3MgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0Owkv KiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9tZXNvbi5idWlsZCBiL3NyYy9pbmNsdWRlL25vZGVzL21lc29uLmJ1aWxkCmluZGV4 IGVmZTA4MzRhZmIuLmE4ZmRkOWUxNzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL21l c29uLmJ1aWxkCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL21lc29uLmJ1aWxkCkBAIC0xMyw2ICsx Myw3IEBAIG5vZGVfc3VwcG9ydF9pbnB1dF9pID0gWwogICAnYWNjZXNzL3RzbWFwaS5oJywKICAg J2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCcsCiAgICdjb21tYW5kcy90cmlnZ2VyLmgnLAorICAn ZXhlY3V0b3IvZXhlY2Rlc2MuaCcsCiAgICdleGVjdXRvci90dXB0YWJsZS5oJywKICAgJ2ZvcmVp Z24vZmR3YXBpLmgnLAogICAnbm9kZXMvYml0bWFwc2V0LmgnLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApp bmRleCBkNjFhNjJkYTE5Li45Yjg4OGIwZDc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTE2 LDYgKzExNiw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxhdCIgbGlz dCBvZiBSVEVQZXJtaXNzaW9uSW5mb3MgKi8KIAlMaXN0CSAgICpmaW5hbHJ0ZXBlcm1pbmZvczsK IAorCS8qICJmbGF0IiBsaXN0IG9mIGludGVnZXIgUlQgaW5kZXhlcyAqLworCUxpc3QJICAgKnZp ZXdSZWxhdGlvbnM7CisKIAkvKiAiZmxhdCIgbGlzdCBvZiBQbGFuUm93TWFya3MgKi8KIAlMaXN0 CSAgICpmaW5hbHJvd21hcmtzOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFu bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDY1OWJkMDVjMGMu LjQ5NjQxMDE5OGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC03OCw2ICs3OCw5IEBAIHR5cGVk ZWYgc3RydWN0IFBsYW5uZWRTdG10CiAJTGlzdAkgICAqcGVybUluZm9zOwkJLyogbGlzdCBvZiBS VEVQZXJtaXNzaW9uSW5mbyBub2RlcyBmb3IgcnRhYmxlCiAJCQkJCQkJCSAqIGVudHJpZXMgbmVl ZGluZyBvbmUgKi8KIAorCUxpc3QJICAgKnZpZXdSZWxhdGlvbnM7CS8qIGludGVnZXIgbGlzdCBv ZiBSVCBpbmRleGVzLCBvciBOSUwgaWYgbm8KKwkJCQkJCQkJICogdmlld3MgYXJlIHF1ZXJpZWQg Ki8KKwogCS8qIHJ0YWJsZSBpbmRleGVzIG9mIHRhcmdldCByZWxhdGlvbnMgZm9yIElOU0VSVC9V UERBVEUvREVMRVRFL01FUkdFICovCiAJTGlzdAkgICAqcmVzdWx0UmVsYXRpb25zOwkvKiBpbnRl Z2VyIGxpc3Qgb2YgUlQgaW5kZXhlcywgb3IgTklMICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3N0b3JhZ2UvbG1nci5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKaW5kZXggNGVl OTFlM2NmOS4uNTk4YmYyNjg4YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdy LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZXh0 ZXJuIGJvb2wgQ29uZGl0aW9uYWxMb2NrUmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tN T0RFIGxvY2ttb2RlKTsKIGV4dGVybiB2b2lkIFVubG9ja1JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0 aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBleHRlcm4gYm9vbCBDaGVja1JlbGF0aW9uTG9ja2Vk QnlNZShSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkJCQlib29s IG9yc3Ryb25nZXIpOworZXh0ZXJuIGJvb2wgQ2hlY2tSZWxMb2NrZWRCeU1lKE9pZCByZWxpZCwg TE9DS01PREUgbG9ja21vZGUsIGJvb2wgb3JzdHJvbmdlcik7CiBleHRlcm4gYm9vbCBMb2NrSGFz V2FpdGVyc1JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiAK IGV4dGVybiB2b2lkIExvY2tSZWxhdGlvbklkRm9yU2Vzc2lvbihMb2NrUmVsSWQgKnJlbGlkLCBM T0NLTU9ERSBsb2NrbW9kZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2Fj aGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IDRmNTQxOGI5NzIuLjMw NzRlNjA0ZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC0xMzksNiArMTM5LDcgQEAgZXh0ZXJu IGNoYXIgZ2V0X3JlbF9yZWxraW5kKE9pZCByZWxpZCk7CiBleHRlcm4gYm9vbCBnZXRfcmVsX3Jl bGlzcGFydGl0aW9uKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF9yZWxfdGFibGVzcGFjZShP aWQgcmVsaWQpOwogZXh0ZXJuIGNoYXIgZ2V0X3JlbF9wZXJzaXN0ZW5jZShPaWQgcmVsaWQpOwor ZXh0ZXJuIGJvb2wgZ2V0X3JlbF9yZWxpc3NoYXJlZChPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAln ZXRfdHJhbnNmb3JtX2Zyb21zcWwoT2lkIHR5cGlkLCBPaWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBl cyk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fdG9zcWwoT2lkIHR5cGlkLCBPaWQgbGFuZ2lk LCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4gYm9vbCBnZXRfdHlwaXNkZWZpbmVkKE9pZCB0eXBp ZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IGE0NDMxODFkNDEuLmMyZTQ4NWFjMmMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL3BsYW5jYWNoZS5oCkBAIC0yMjEsNiArMjIxLDIxIEBAIGV4dGVybiBDYWNoZWRQbGFuICpH ZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJh bUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25lciwKIAkJ CQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKKworLyoKKyAqIENhY2hlZFBsYW5T dGlsbFZhbGlkCisgKgkJUmV0dXJucyBpZiBhIGNhY2hlZCBnZW5lcmljIHBsYW4gaXMgc3RpbGwg dmFsaWQKKyAqCisgKiBDYWxsZWQgYnkgdGhlIGV4ZWN1dG9yIGFmdGVyIGl0IGhhcyBmaW5pc2hl ZCB0YWtpbmcgbG9ja3Mgb24gYSBwbGFuIHRyZWUKKyAqIGluIGEgQ2FjaGVkUGxhbi4KKyAqLwor c3RhdGljIGlubGluZSBib29sCitDYWNoZWRQbGFuU3RpbGxWYWxpZChDYWNoZWRQbGFuICpjcGxh bikKK3sKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOworfQorCitleHRlcm4gYm9vbCBDYWNoZWRQ bGFuU3RpbGxWYWxpZChDYWNoZWRQbGFuICpjcGxhbik7CiBleHRlcm4gdm9pZCBSZWxlYXNlQ2Fj aGVkUGxhbihDYWNoZWRQbGFuICpwbGFuLCBSZXNvdXJjZU93bmVyIG93bmVyKTsKIAogZXh0ZXJu IGJvb2wgQ2FjaGVkUGxhbkFsbG93c1NpbXBsZVZhbGlkaXR5Q2hlY2soQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggYWEwOGIxZTBmYy4uMzMyYTA4Y2NiNCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvcG9ydGFsLmgKQEAgLTEzOCw2ICsxMzgsOSBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0YWxE YXRhCiAJUXVlcnlDb21wbGV0aW9uIHFjOwkJCS8qIGNvbW1hbmQgY29tcGxldGlvbiBkYXRhIGZv ciBleGVjdXRlZCBxdWVyeSAqLwogCUxpc3QJICAgKnN0bXRzOwkJCS8qIGxpc3Qgb2YgUGxhbm5l ZFN0bXRzICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiwgaWYgc3RtdHMg YXJlIGZyb20gb25lICovCisJTGlzdAkgICAqcWRlc2NzOwkJCS8qIGxpc3Qgb2YgUXVlcnlEZXNj cyAqLworCWJvb2wJCXBsYW5fdmFsaWQ7CQkvKiBhcmUgcGxhbihzKSByZWFkeSBmb3IgZXhlY3V0 aW9uPyAqLworCU1lbW9yeUNvbnRleHQgcXVlcnlDb250ZXh0OwkvKiBtZW1vcnkgZm9yIFF1ZXJ5 RGVzY3MgYW5kIGNoaWxkcmVuICovCiAKIAlQYXJhbUxpc3RJbmZvIHBvcnRhbFBhcmFtczsgLyog cGFyYW1zIHRvIHBhc3MgdG8gcXVlcnkgKi8KIAlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudjsg LyogZW52aXJvbm1lbnQgZm9yIHF1ZXJ5ICovCkBAIC0yNDIsNiArMjQ1LDcgQEAgZXh0ZXJuIHZv aWQgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJCQkJCQkgIENvbW1hbmRUYWcg Y29tbWFuZFRhZywKIAkJCQkJCQkgIExpc3QgKnN0bXRzLAogCQkJCQkJCSAgQ2FjaGVkUGxhbiAq Y3BsYW4pOworZXh0ZXJuIHZvaWQgUG9ydGFsUXVlcnlGaW5pc2goUXVlcnlEZXNjICpxdWVyeURl c2MpOwogZXh0ZXJuIFBsYW5uZWRTdG10ICpQb3J0YWxHZXRQcmltYXJ5U3RtdChQb3J0YWwgcG9y dGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbENyZWF0ZUhvbGRTdG9yZShQb3J0YWwgcG9ydGFsKTsK IGV4dGVybiB2b2lkIFBvcnRhbEhhc2hUYWJsZURlbGV0ZUFsbCh2b2lkKTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9k dWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKaW5kZXggNzBmMjRlODQ2ZC4uMmZjYTg0ZDAy NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKQEAgLTgsNyAr OCw4IEBAIE9CSlMgPSBcCiAJZGVsYXlfZXhlY3V0aW9uLm8KIAogSVNPTEFUSU9OID0gcGFydGl0 aW9uLWFkZGl0aW9uIFwKLQkgICAgcGFydGl0aW9uLXJlbW92YWwtMQorCSAgICBwYXJ0aXRpb24t cmVtb3ZhbC0xIFwKKwkJY2FjaGVkLXBsYW4tcmVwbGFuCiAKIGlmZGVmIFVTRV9QR1hTCiBQR19D T05GSUcgPSBwZ19jb25maWcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhl Y3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRp b24vZGVsYXlfZXhlY3V0aW9uLmMKaW5kZXggN2NkNzZlYjM0Yi4uNWQ3YTNlOTg1OCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMK QEAgLTEsMTQgKzEsMTggQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIGRlbGF5X2V4ZWN1 dGlvbi5jCi0gKgkJVGVzdCBtb2R1bGUgdG8gYWxsb3cgZGVsYXkgYmV0d2VlbiBwYXJzaW5nIGFu ZCBleGVjdXRpb24gb2YgYSBxdWVyeS4KKyAqCQlUZXN0IG1vZHVsZSB0byBpbnRyb2R1Y2UgZGVs YXkgYXQgdmFyaW91cyBwb2ludHMgZHVyaW5nIGV4ZWN1dGlvbiBvZiBhCisgKgkJcXVlcnkgdG8g dGVzdCB0aGF0IGV4ZWN1dGlvbiBwcm9jZWVkcyBzYWZlbHkgaW4gbGlnaHQgb2YgY29uY3VycmVu dAorICoJCWNoYW5nZXMuCiAgKgogICogVGhlIGRlbGF5IGlzIGltcGxlbWVudGVkIGJ5IHRha2lu ZyBhbmQgaW1tZWRpYXRlbHkgcmVsZWFzaW5nIGEgc3BlY2lmaWVkCiAgKiBhZHZpc29yeSBsb2Nr LiAgSWYgYW5vdGhlciBwcm9jZXNzIGhhcyBwcmV2aW91c2x5IHRha2VuIHRoYXQgbG9jaywgdGhl CiAgKiBjdXJyZW50IHByb2Nlc3Mgd2lsbCBiZSBibG9ja2VkIHVudGlsIHRoZSBsb2NrIGlzIHJl bGVhc2VkOyBvdGhlcndpc2UsCiAgKiB0aGVyZSdzIG5vIGVmZmVjdC4gIFRoaXMgYWxsb3dzIGFu IGlzb2xhdGlvbnRlc3RlciBzY3JpcHQgdG8gcmVsaWFibHkKLSAqIHRlc3QgYmVoYXZpb3JzIHdo ZXJlIHNvbWUgc3BlY2lmaWVkIGFjdGlvbiBoYXBwZW5zIGluIGFub3RoZXIgYmFja2VuZAotICog YmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkuCisgKiB0 ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90 aGVyIGJhY2tlbmQgaW4KKyAqIGEgY291cGxlIG9mIGNhc2VzOiAxKSBiZXR3ZWVuIHBhcnNpbmcg YW5kIGV4ZWN1dGlvbiBvZiBhbnkgZGVzaXJlZCBxdWVyeQorICogd2hlbiB1c2luZyB0aGUgcGxh bm5lcl9ob29rLCAyKSBiZXR3ZWVuIFJldmFsaWRhdGVDYWNoZWRRdWVyeSgpIGFuZAorICogRXhl Y3V0b3JTdGFydCgpIHdoZW4gdXNpbmcgdGhlIEV4ZWN1dG9yU3RhcnRfaG9vay4KICAqCiAgKiBD b3B5cmlnaHQgKGMpIDIwMjAtMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKICAqCkBAIC0yMiw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAorI2luY2x1 ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAt MzIsOSArMzcsMTEgQEAgUEdfTU9EVUxFX01BR0lDOwogCiAvKiBHVUM6IGFkdmlzb3J5IGxvY2sg SUQgdG8gdXNlLiAgWmVybyBkaXNhYmxlcyB0aGUgZmVhdHVyZS4gKi8KIHN0YXRpYyBpbnQJcG9z dF9wbGFubmluZ19sb2NrX2lkID0gMDsKK3N0YXRpYyBpbnQJZXhlY3V0b3Jfc3RhcnRfbG9ja19p ZCA9IDA7CiAKLS8qIFNhdmUgcHJldmlvdXMgcGxhbm5lciBob29rIHVzZXIgdG8gYmUgYSBnb29k IGNpdGl6ZW4gKi8KKy8qIFNhdmUgcHJldmlvdXMgaG9vayB1c2VycyB0byBiZSBhIGdvb2QgY2l0 aXplbiAqLwogc3RhdGljIHBsYW5uZXJfaG9va190eXBlIHByZXZfcGxhbm5lcl9ob29rID0gTlVM TDsKK3N0YXRpYyBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9v ayA9IE5VTEw7CiAKIAogLyogcGxhbm5lcl9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRl c2lyZWQgZGVsYXkgKi8KQEAgLTcwLDExICs3Nyw0MSBAQCBkZWxheV9leGVjdXRpb25fcGxhbm5l cihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAlyZXR1cm4gcmVzdWx0 OwogfQogCisvKiBwbGFubmVyX2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVzaXJlZCBk ZWxheSAqLworc3RhdGljIHZvaWQKK2RlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQoreworCS8qIElmIGVuYWJsZWQsIGRlbGF5IGJ5 IHRha2luZyBhbmQgcmVsZWFzaW5nIHRoZSBzcGVjaWZpZWQgbG9jayAqLworCWlmIChleGVjdXRv cl9zdGFydF9sb2NrX2lkICE9IDApCisJeworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlz b3J5X2xvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3Rh cnRfbG9ja19pZCkpOworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X3VubG9ja19p bnQ4LAorCQkJCQkJCUludDY0R2V0RGF0dW0oKGludDY0KSBleGVjdXRvcl9zdGFydF9sb2NrX2lk KSk7CisKKwkJLyoKKwkJICogRW5zdXJlIHRoYXQgd2Ugbm90aWNlIGFueSBwZW5kaW5nIGludmFs aWRhdGlvbnMsIHNpbmNlIHRoZSBhZHZpc29yeQorCQkgKiBsb2NrIGZ1bmN0aW9ucyBkb24ndCBk byB0aGlzLgorCQkgKi8KKwkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwl9CisKKwkv KiBOb3cgc3RhcnQgdGhlIGV4ZWN1dG9yLCBwb3NzaWJseSB2aWEgYSBwcmV2aW91cyBob29rIHVz ZXIgKi8KKwlpZiAocHJldl9FeGVjdXRvclN0YXJ0X2hvb2spCisJCXByZXZfRXhlY3V0b3JTdGFy dF9ob29rKHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwllbHNlCisJCXN0YW5kYXJkX0V4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgIT0g MCkKKwkJZWxvZyhOT1RJQ0UsICJGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4g aXMgJXMiLAorCQkJIHF1ZXJ5RGVzYy0+Y3BsYW4tPmlzX3ZhbGlkID8gInZhbGlkIiA6ICJub3Qg dmFsaWQiKTsKK30KKwogLyogTW9kdWxlIGxvYWQgZnVuY3Rpb24gKi8KIHZvaWQKIF9QR19pbml0 KHZvaWQpCiB7Ci0JLyogU2V0IHVwIHRoZSBHVUMgdG8gY29udHJvbCB3aGljaCBsb2NrIGlzIHVz ZWQgKi8KKwkvKiBTZXQgdXAgR1VDcyB0byBjb250cm9sIHdoaWNoIGxvY2sgaXMgdXNlZCAqLwog CURlZmluZUN1c3RvbUludFZhcmlhYmxlKCJkZWxheV9leGVjdXRpb24ucG9zdF9wbGFubmluZ19s b2NrX2lkIiwKIAkJCQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQv dW5sb2NrZWQgYWZ0ZXIgcGxhbm5pbmcuIiwKIAkJCQkJCQkiWmVybyBkaXNhYmxlcyB0aGUgZGVs YXkuIiwKQEAgLTg2LDEwICsxMjMsMjIgQEAgX1BHX2luaXQodm9pZCkKIAkJCQkJCQlOVUxMLAog CQkJCQkJCU5VTEwsCiAJCQkJCQkJTlVMTCk7Ci0KKwlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgi ZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQiLAorCQkJCQkJCSJTZXRzIHRo ZSBhZHZpc29yeSBsb2NrIElEIHRvIGJlIGxvY2tlZC91bmxvY2tlZCBiZWZvcmUgc3RhcnRpbmcg ZXhlY3V0aW9uLiIsCisJCQkJCQkJIlplcm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIsCisJCQkJCQkJ JmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQsCisJCQkJCQkJMCwKKwkJCQkJCQkwLCBJTlRfTUFYLAor CQkJCQkJCVBHQ19VU0VSU0VULAorCQkJCQkJCTAsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxM LAorCQkJCQkJCU5VTEwpOwogCU1hcmtHVUNQcmVmaXhSZXNlcnZlZCgiZGVsYXlfZXhlY3V0aW9u Iik7CiAKLQkvKiBJbnN0YWxsIG91ciBob29rICovCisJLyogSW5zdGFsbCBvdXIgaG9va3MuICov CiAJcHJldl9wbGFubmVyX2hvb2sgPSBwbGFubmVyX2hvb2s7CiAJcGxhbm5lcl9ob29rID0gZGVs YXlfZXhlY3V0aW9uX3BsYW5uZXI7CisJcHJldl9FeGVjdXRvclN0YXJ0X2hvb2sgPSBFeGVjdXRv clN0YXJ0X2hvb2s7CisJRXhlY3V0b3JTdGFydF9ob29rID0gZGVsYXlfZXhlY3V0aW9uX0V4ZWN1 dG9yU3RhcnQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxh eV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lYWFjNTUxMjJiCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVw bGFuLm91dApAQCAtMCwwICsxLDQzIEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9u cworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwIHMybG9jayBzMWV4ZWMgczJkcm9waSBz MnVubG9jaworc3RlcCBzMXByZXA6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmlj X3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gJDE7 CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOworUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBTdWJw bGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgCisgIC0+ICBCaXRtYXAgSGVhcCBTY2Fu IG9uIGZvbzEgZm9vXzEgICAKKyAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9ICQxKSAgICAgICAg IAorICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMV9hCisgICAgICAgICAgICAg IEluZGV4IENvbmQ6IChhID0gJDEpICAgICAKKyg2IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxF Q1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjOiBMT0FEICdk ZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsg PHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzFfYTsKK3N0ZXAgczJ1 bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5s b2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitz dGVwIHMxZXhlYzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0 b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVk IEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5kICAgICAgICAg ICAgICAgICAgICAgIAorICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgIAorICAtPiAgU2VxIFNj YW4gb24gZm9vMSBmb29fMQorICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAgIAorKDQgcm93cykK KwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2Fj aGVkLXBsYW4tcmVwbGFuLnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9z cGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi41YmQ1ZmRiZjFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMKQEAgLTAsMCAr MSwzOSBAQAorIyBUZXN0IHRvIGNoZWNrIHRoYXQgaW52YWxpZGF0aW9uIG9mIGEgY2FjaGVkIHBs YW4gZHVyaW5nIEV4ZWN1dG9yU3RhcnQKKyMgY29ycmVjdGx5IHRyaWdnZXJzIHJlcGxhbm5pbmcg YW5kIHJlLWV4ZWN1dGlvbi4KKworc2V0dXAKK3sKKyAgQ1JFQVRFIFRBQkxFIGZvbyAoYSBpbnQs IGIgdGV4dCkgUEFSVElUSU9OIEJZIExJU1QoYSk7CisgIENSRUFURSBUQUJMRSBmb28xIFBBUlRJ VElPTiBPRiBmb28gRk9SIFZBTFVFUyBJTiAoMSk7CisgIENSRUFURSBJTkRFWCBmb28xX2EgT04g Zm9vMSAoYSk7CisgIENSRUFURSBUQUJMRSBmb28yIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVF UyBJTiAoMik7CisgIENSRUFURSBWSUVXIGZvb3YgQVMgU0VMRUNUICogRlJPTSBmb287Cit9CisK K3RlYXJkb3duCit7CisgIERST1AgVklFVyBmb292OworICBEUk9QIFRBQkxFIGZvbzsKK30KKwor c2Vzc2lvbiAiczEiCisjIENyZWF0ZXMgYSBwcmVwYXJlZCBzdGF0ZW1lbnQgYW5kIGZvcmNlcyBj cmVhdGlvbiBvZiBhIGdlbmVyaWMgcGxhbgorc3RlcCAiczFwcmVwIiAgIHsgU0VUIHBsYW5fY2Fj aGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICog RlJPTSBmb292IFdIRVJFIGEgPSAkMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUg cSAoMSk7IH0KKyMgRXhlY3V0ZXMgYSBnZW5lcmljIHBsYW4KK3N0ZXAgInMxZXhlYyIJeyBMT0FE ICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3Rh cnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgx KTsgfQorCitzZXNzaW9uICJzMiIKK3N0ZXAgInMybG9jayIJeyBTRUxFQ1QgcGdfYWR2aXNvcnlf bG9jaygxMjM0NSk7IH0KK3N0ZXAgInMydW5sb2NrIgl7IFNFTEVDVCBwZ19hZHZpc29yeV91bmxv Y2soMTIzNDUpOyB9CitzdGVwICJzMmRyb3BpIgl7IERST1AgSU5ERVggZm9vMV9hOyB9CisKKyMg V2hpbGUgInMxZXhlYyIgd2FpdHMgdG8gYWNxdWlyZSB0aGUgYWR2aXNvcnkgbG9jaywgInMyZHJv cCIgaXMgYWJsZSB0byBkcm9wCisjIHRoZSBpbmRleCBiZWluZyB1c2VkIGluIHRoZSBjYWNoZWQg cGxhbiBmb3IgYHFgLCBzbyB3aGVuICJzMWV4ZWMiIGlzIHRoZW4KKyMgdW5ibG9ja2VkIGFuZCBp bml0aWFsaXplcyB0aGUgY2FjaGVkIHBsYW4gZm9yIGV4ZWN1dGlvbiwgaXQgZGV0ZWN0cyB0aGUK KyMgY29uY3VycmVudCBpbmRleCBkcm9wIGFuZCBjYXVzZXMgdGhlIGNhY2hlZCBwbGFuIHRvIGJl IGRpc2NhcmRlZCBhbmQKKyMgcmVjcmVhdGVkIHdpdGhvdXQgdGhlIGluZGV4LgorcGVybXV0YXRp b24gInMxcHJlcCIgInMybG9jayIgInMxZXhlYyIgInMyZHJvcGkiICJzMnVubG9jayIKLS0gCjIu MzUuMwoK --00000000000016c38405f5eb27f5--