Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cqMSE-00046n-OC for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Mar 2017 16:16:15 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1cqMSE-0003tf-A5 for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Mar 2017 16:16:14 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cqMPp-000134-Mw for pgsql-hackers@postgresql.org; Tue, 21 Mar 2017 16:13:46 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cqMPm-0000Vv-8I for pgsql-hackers@postgresql.org; Tue, 21 Mar 2017 16:13:44 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 8DAF12087B; Tue, 21 Mar 2017 12:13:41 -0400 (EDT) Received: from frontend1 ([10.202.2.160]) by compute7.internal (MEProxy); Tue, 21 Mar 2017 12:13:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc:x-sasl-enc; s=fm1; bh=SO8SzDJWUwABnh6Non Ub6xYyxkun292suUVuWLdxAcU=; b=j8z2t07lfLMJhleeFKvOZiuS58A7Rp5mQY hwrwxVrefaKl9cRiGP4/DQpS3SI1rJKuzainx0M1AzvyrpM4Jjf45Xf+/lmtRlir UJBmBo8P5EeYBbz4R2PU66w3btKpr+dXt9lckL4JAvG5zpVAUxys8egf9FyQVd0b T0lqHMOKyAqNDMWdpn+KYBmpxzYxVmM20MuNfAuFPNcQe2ppBh2DXxdYA8mst/kf vdTUOhCuRofm9rehE8wg8grzHIsWj1MuFChiVStlXOwJRSaklM4/taItaTlIViTE zpHl33eNej6ugT5RBFSFGC828ZTV2pYt8APrDSvf2/Ulh+yRi6ww== X-ME-Sender: X-Sasl-enc: 8V39ny6qh/BM+YVyTc527oe1JI9qJmzzCzHKsZtkIrFQ 1490112820 Received: from april.local (c-73-13-66-39.hsd1.pa.comcast.net [73.13.66.39]) by mail.messagingengine.com (Postfix) with ESMTPA id DB7517E1DC; Tue, 21 Mar 2017 12:13:34 -0400 (EDT) From: Peter Eisentraut Subject: Re: identity columns To: Vitaly Burovoy References: <6adbacbf-73bc-dd1a-2033-63409180fd18@2ndquadrant.com> <4ef801f2-64ce-1a58-277d-d9389ae7770d@2ndquadrant.com> <1cf308b6-4f5c-05ba-cc74-0a7121603fcf@2ndquadrant.com> Cc: pgsql-hackers Organization: 2ndQuadrant Message-ID: Date: Tue, 21 Mar 2017 12:13:19 -0400 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------A52B817E481886219963B59F" X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------A52B817E481886219963B59F Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit On 3/20/17 05:43, Vitaly Burovoy wrote: >>> 1. The fact COPY ignores GENERATED ALWAYS constraint (treats as >>> GENERATED BY DEFAULT) should be mentioned as well as rules. > I think it would be better if that behavior is placed on both CREATE > TABLE and COPY pages. done >>> 3. Strange error (not about absence of a column; but see pp.5 and 8): >>> test=# ALTER TABLE idnt ALTER COLUMN o ADD GENERATED ALWAYS AS IDENTITY; >>> ERROR: identity column type must be smallint, integer, or bigint >> >> What's wrong with that? > > The column mentioned there does not exist. Therefore the error should > be about it, not about a type of absent column: This was already fixed in the previous version. > Since we extend the spec by "ADD GENERATED...", "SEQUENCE NAME" and > allow more than one identity column, why can't we extend it by > allowing "SET GENERATED" for non-identity columns and drop "ADD > GENERATED..."? SQL commands generally don't work that way. Either they create or they alter. There are "OR REPLACE" options when you do both. So I think it is better to keep these two things separate. Also, while you argue that we *could* do it the way you propose, I don't really see an argument why it would be better. >>> 6. The docs mention a syntax: >>> ALTER [ COLUMN ] >> class="PARAMETER">column_name { SET GENERATED { ALWAYS | >>> BY DEFAULT } | SET sequence_option | RESET >>> } [...] >>> >>> but the command fails: >>> test=# ALTER TABLE idnt ALTER COLUMN i RESET; >>> ERROR: syntax error at or near ";" >>> LINE 1: ALTER TABLE idnt ALTER COLUMN i RESET; >> >> This works for me. Check again please. > > I'm sorry, it still does not work for me (whether you mix it up with "RESTART"): > test=# ALTER TABLE idnt ALTER COLUMN i RESET; > ERROR: syntax error at or near ";" > LINE 1: ALTER TABLE idnt ALTER COLUMN i RESET; Oh I see, the documentation was wrong. The correct syntax is RESTART rather than RESET. Fixed the documentation. >>> 11. The last CF added partitioned tables which are similar to >>> inherited, but slightly different. >> >> fixed > > Something is left to be fixed: > test=# CREATE TABLE measurement ( > test(# i int GENERATED BY DEFAULT AS IDENTITY, > test(# logdate date not null, > test(# peaktemp int, > test(# unitsales int > test(# ) PARTITION BY RANGE (logdate); > CREATE TABLE > test=# CREATE TABLE measurement_y2016m07 > test-# PARTITION OF measurement ( > test(# unitsales DEFAULT 0 > test(# ) FOR VALUES FROM ('2016-07-01') TO ('2016-08-01'); > CREATE TABLE > test=# ALTER TABLE MEASUREMENT ALTER i RESTART 2; > ERROR: column "i" of relation "measurement_y2016m07" is not an identity column fixed > The patch should be rebased to the current master. It has easy > conflicts in describe.c in the commit > 395bfaae8e786eb17fc9dd79e4636f97c9d9b820. done > Please, don't include the file catversion.h in it because it is > changed often and leads to error when applying. OK > 16. changing a type does not change an underlying sequence type (its limits): It does change the type, but changing the type doesn't change the limits. That is a property of how ALTER SEQUENCE works, which was separately discussed. > 17. how to restart a sequence? > test=# ALTER TABLE itest3 ALTER a SET RESTART 2; > ERROR: sequence option "restart" not supported here > LINE 1: ALTER TABLE itest3 ALTER a SET RESTART 2; > > Khm. The "RESTART" is one of official "sequence_options" (comparable > to the "SEQUENCE NAME"), why it is not allowed? > But there is another DDL which works OK, but not reflected in the docs: > test=# ALTER TABLE itest3 ALTER a RESTART 2; > ALTER TABLE Yes, that is now fixed. See #6 above. > 18. If there is no sequence owned by a column, all DDLs for a sequence > behind an identity column do not raise errors but do nothing: > test=# CREATE TABLE itest3 (a int generated by default as identity > (start with 7), b text); > CREATE TABLE > test=# ALTER SEQUENCE itest3_a_seq OWNED BY NONE; > ALTER SEQUENCE I have changed it to prohibit changing OWNED BY of an identity sequence directly, so this can't happen anymore. > 19. If anyone occasionally drops OWNED BY for the linked sequence > there is no ways to restore it "as was": fixed, see above > 20. sequence does not follow the table owned by: fixed > 21. There are many places where error codes look strange: > test=# ALTER TABLE itest3 ALTER b SET GENERATED BY DEFAULT; -- > whether it is "internal_error" or user's error? > ERROR: XX000: column "b" of relation "itest3" is not an identity column I added error codes to the places that were missing them. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------A52B817E481886219963B59F Content-Type: application/x-patch; name="v5-0001-Identity-columns.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v5-0001-Identity-columns.patch" RnJvbSAzZjY1ZmYzOTNmZjZhODE3MTYwMGViMGFlM2IzNDQyYmJiYmRhMWU4 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRy YXV0IDxwZXRlcl9lQGdteC5uZXQ+CkRhdGU6IFR1ZSwgMjggRmViIDIwMTcg MjE6MDk6MDIgLTA1MDAKU3ViamVjdDogW1BBVENIIHY1XSBJZGVudGl0eSBj b2x1bW5zCgpUaGlzIGlzIHRoZSBTUUwgc3RhbmRhcmQtY29uZm9ybWluZyB2 YXJpYW50IG9mIFBvc3RncmVTUUwncyBzZXJpYWwKY29sdW1ucy4gIEl0IGFs c28gZml4ZXMgYSBmZXcgdXNhYmlsaXR5IGlzc3VlcyB0aGF0IHNlcmlhbCBj b2x1bW5zCmhhdmU6CgotIENSRUFURSBUQUJMRSAvIExJS0UgY29waWVzIGRl ZmF1bHQgYnV0IHJlZmVycyB0byBzYW1lIHNlcXVlbmNlCi0gY2Fubm90IGFk ZC9kcm9wIHNlcmlhbG5lc3Mgd2l0aCBBTFRFUiBUQUJMRQotIGRyb3BwaW5n IGRlZmF1bHQgZG9lcyBub3QgZHJvcCBzZXF1ZW5jZQotIG5lZWQgdG8gZ3Jh bnQgc2VwYXJhdGUgcHJpdmlsZWdlcyB0byBzZXF1ZW5jZQotIHNsaWdodCB3 ZWlyZG5lc3NlcyBiZWNhdXNlIHNlcmlhbCBpcyBzb21lIGtpbmQgb2Ygc3Bl Y2lhbCBtYWNybwotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAg ICAgICAgICAgICAgICAgICAgIHwgIDExICsKIGRvYy9zcmMvc2dtbC9pbmZv cm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAgICAgIHwgIDExICstCiBkb2Mv c3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwgICAgICAgICAgICAgICB8 ICAzNiArKy0KIGRvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sICAgICAgICAg ICAgICAgICAgICAgIHwgICA3ICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3RhYmxlLnNnbWwgICAgICAgICAgICAgIHwgIDY1ICsrKy0KIGRvYy9zcmMv c2dtbC9yZWYvaW5zZXJ0LnNnbWwgICAgICAgICAgICAgICAgICAgIHwgIDQx ICsrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMgICAg ICAgICAgICAgfCAgIDUgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRl bmN5LmMgICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9nZW5ia2kucGwgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3Jj L2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAgICAgICAgICAg fCAgMTUgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5m b3JtYXRpb25fc2NoZW1hLnNxbCAgICAgIHwgIDE3ICstCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX2RlcGVuZC5jICAgICAgICAgICAgICAgICB8ICA1MiAr Ky0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgICAg ICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVu Y2UuYyAgICAgICAgICAgICAgICAgfCAxMDkgKysrKystLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgICAgfCAyODQg KysrKysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVj UXVhbC5jICAgICAgICAgICAgICAgICB8ICAyMSArKwogc3JjL2JhY2tlbmQv bm9kZXMvY29weWZ1bmNzLmMgICAgICAgICAgICAgICAgICAgfCAgMjEgKysK IHNyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyAgICAgICAgICAgICAg ICAgIHwgIDE2ICsKIHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jICAg ICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL25vZGVzL25v ZGVGdW5jcy5jICAgICAgICAgICAgICAgICAgIHwgIDExICsKIHNyYy9iYWNr ZW5kL25vZGVzL291dGZ1bmNzLmMgICAgICAgICAgICAgICAgICAgIHwgICA5 ICsKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMg ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICAgIHwgMTI4ICsrKysrKyst CiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAg ICAgICB8IDM3OSArKysrKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNr ZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyAgICAgICAgICAgIHwgIDU2 ICsrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAg ICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xz eXNjYWNoZS5jICAgICAgICAgICAgIHwgIDIxICsrCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC91dGlscy9lcnJjb2Rlcy50eHQgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAg ICAgICAgICAgICAgICB8ICA5MSArKysrKy0KIHNyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9i aW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDI3ICstCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgICAgICAgICAg ICAgICAgICAgICB8ICAxOCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBl bmRlbmN5LmggICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRl L2NhdGFsb2cvcGdfYXR0cmlidXRlLmggICAgICAgICAgICAgIHwgIDI1ICst CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmggICAgICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2Uu aCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvbm9kZXMv bm9kZXMuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgICAgfCAg MjUgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAg ICAgICAgICAgIHwgIDE0ICsKIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aCAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3V0 aWxzL2xzeXNjYWNoZS5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3RhYmxlX2xpa2Uub3V0 IHwgIDQ3ICsrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pZGVudGl0 eS5vdXQgICAgICAgICAgfCAzMTQgKysrKysrKysrKysrKysrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VxdWVuY2Uub3V0ICAgICAgICAg IHwgICA0ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RydW5jYXRl Lm91dCAgICAgICAgICB8ICAzMCArKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZSAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL3Rlc3Qv cmVncmVzcy9zZXJpYWxfc2NoZWR1bGUgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlX2xpa2Uuc3Fs ICAgICAgfCAgMTQgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaWRlbnRpdHku c3FsICAgICAgICAgICAgICAgfCAxODcgKysrKysrKysrKysrCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9zZXF1ZW5jZS5zcWwgICAgICAgICAgICAgICB8ICAg MiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJ1bmNhdGUuc3FsICAgICAg ICAgICAgICAgfCAgMTggKysKIDU0IGZpbGVzIGNoYW5nZWQsIDE5OTYgaW5z ZXJ0aW9ucygrKSwgMTk3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaWRlbnRpdHkub3V0CiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvaWRlbnRp dHkuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBkZjA0MzVj M2YwLi4zOTRiOWUxMjNhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApA QCAtMTEyMCw2ICsxMTIwLDE3IEBAIDx0aXRsZT48c3RydWN0bmFtZT5wZ19h dHRyaWJ1dGU8Lz4gQ29sdW1uczwvdGl0bGU+CiAgICAgIDwvcm93PgogCiAg ICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmF0dGlkZW50 aXR5PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBl PmNoYXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2VudHJ5Pgor ICAgICAgPGVudHJ5PgorICAgICAgIElmIGEgc3BhY2UgY2hhcmFjdGVyLCB0 aGVuIG5vdCBhbiBpZGVudGl0eSBjb2x1bW4uICBPdGhlcndpc2UsCisgICAg ICAgPGxpdGVyYWw+YTwvbGl0ZXJhbD4gPSBnZW5lcmF0ZWQgYWx3YXlzLCA8 bGl0ZXJhbD5kPC9saXRlcmFsPiA9CisgICAgICAgZ2VuZXJhdGVkIGJ5IGRl ZmF1bHQuCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgogICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5hdHRpc2Ryb3BwZWQ8 L3N0cnVjdGZpZWxkPjwvZW50cnk+CiAgICAgICA8ZW50cnk+PHR5cGU+Ym9v bDwvdHlwZT48L2VudHJ5PgogICAgICAgPGVudHJ5PjwvZW50cnk+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwKaW5kZXgg YTNhMTljZThjZS4uMDJmNzkyNzQzNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbApAQCAtMTU4MywxMyArMTU4Mywy MCBAQCA8dGl0bGU+PGxpdGVyYWw+Y29sdW1uczwvbGl0ZXJhbD4gQ29sdW1u czwvdGl0bGU+CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PGxpdGVyYWw+ aXNfaWRlbnRpdHk8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT48 dHlwZT55ZXNfb3Jfbm88L3R5cGU+PC9lbnRyeT4KLSAgICAgIDxlbnRyeT5B cHBsaWVzIHRvIGEgZmVhdHVyZSBub3QgYXZhaWxhYmxlIGluIDxwcm9kdWN0 bmFtZT5Qb3N0Z3JlU1FMPC8+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAg ICAgICBJZiB0aGUgY29sdW1uIGlzIGFuIGlkZW50aXR5IGNvbHVtbiwgdGhl biA8bGl0ZXJhbD5ZRVM8L2xpdGVyYWw+LAorICAgICAgIGVsc2UgPGxpdGVy YWw+Tk88L2xpdGVyYWw+LgorICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+ CiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD5pZGVudGl0 eV9nZW5lcmF0aW9uPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+ PHR5cGU+Y2hhcmFjdGVyX2RhdGE8L3R5cGU+PC9lbnRyeT4KLSAgICAgIDxl bnRyeT5BcHBsaWVzIHRvIGEgZmVhdHVyZSBub3QgYXZhaWxhYmxlIGluIDxw cm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC8+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT4KKyAgICAgICBJZiB0aGUgY29sdW1uIGlzIGFuIGlkZW50aXR5IGNvbHVt biwgdGhlbiA8bGl0ZXJhbD5BTFdBWVM8L2xpdGVyYWw+CisgICAgICAgb3Ig PGxpdGVyYWw+QlkgREVGQVVMVDwvbGl0ZXJhbD4sIHJlZmxlY3RpbmcgdGhl IGRlZmluaXRpb24gb2YgdGhlCisgICAgICAgY29sdW1uLgorICAgICAgPC9l bnRyeT4KICAgICAgPC9yb3c+CiAKICAgICAgPHJvdz4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRleCAwNzdjMDAzNzNkLi40 NThhYzlmOWU3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJs ZS5zZ21sCkBAIC00Niw2ICs0Niw5IEBACiAgICAgQUxURVIgWyBDT0xVTU4g XSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+Y29sdW1uX25hbWU8 L3JlcGxhY2VhYmxlPiBTRVQgREVGQVVMVCA8cmVwbGFjZWFibGUgY2xhc3M9 IlBBUkFNRVRFUiI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+CiAgICAgQUxU RVIgWyBDT0xVTU4gXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+ Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBEUk9QIERFRkFVTFQKICAgICBB TFRFUiBbIENPTFVNTiBdIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVS Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IHsgU0VUIHwgRFJPUCB9IE5P VCBOVUxMCisgICAgQUxURVIgWyBDT0xVTU4gXSA8cmVwbGFjZWFibGUgY2xh c3M9IlBBUkFNRVRFUiI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBBREQg R0VORVJBVEVEIHsgQUxXQVlTIHwgQlkgREVGQVVMVCB9IEFTIElERU5USVRZ IFsgKCA8cmVwbGFjZWFibGU+c2VxdWVuY2Vfb3B0aW9uczwvcmVwbGFjZWFi bGU+ICkgXQorICAgIEFMVEVSIFsgQ09MVU1OIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJQQVJBTUVURVIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4geyBT RVQgR0VORVJBVEVEIHsgQUxXQVlTIHwgQlkgREVGQVVMVCB9IHwgU0VUIDxy ZXBsYWNlYWJsZT5zZXF1ZW5jZV9vcHRpb248L3JlcGxhY2VhYmxlPiB8IFJF U1RBUlQgWyBbIFdJVEggXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cmVzdGFydDwvcmVwbGFjZWFibGU+IF0gfSBbLi4uXQorICAgIEFMVEVS IFsgQ09MVU1OIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPmNv bHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gRFJPUCBJREVOVElUWQogICAgIEFM VEVSIFsgQ09MVU1OIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIi PmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gU0VUIFNUQVRJU1RJQ1MgPHJl cGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPmludGVnZXI8L3JlcGxhY2Vh YmxlPgogICAgIEFMVEVSIFsgQ09MVU1OIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJQQVJBTUVURVIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gU0VUICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPmF0dHJpYnV0ZV9vcHRp b248L3JlcGxhY2VhYmxlPiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1F VEVSIj52YWx1ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkKICAgICBBTFRF UiBbIENPTFVNTiBdIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFJFU0VUICggPHJlcGxhY2VhYmxl IGNsYXNzPSJQQVJBTUVURVIiPmF0dHJpYnV0ZV9vcHRpb248L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXSApCkBAIC0xODAsNiArMTgzLDMyIEBAIDx0aXRsZT5E ZXNjcmlwdGlvbjwvdGl0bGU+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAg PHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5BREQgR0VORVJB VEVEIHsgQUxXQVlTIHwgQlkgREVGQVVMVCB9IEFTIElERU5USVRZPC9saXRl cmFsPjwvdGVybT4KKyAgICA8dGVybT48bGl0ZXJhbD5TRVQgR0VORVJBVEVE IHsgQUxXQVlTIHwgQlkgREVGQVVMVCB9PC9saXRlcmFsPjwvdGVybT4KKyAg ICA8dGVybT48bGl0ZXJhbD5EUk9QIElERU5USVRZPC9saXRlcmFsPjwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlc2Ug Zm9ybXMgY2hhbmdlIHdoZXRoZXIgYSBjb2x1bW4gaXMgYW4gaWRlbnRpdHkg Y29sdW1uIG9yIGNoYW5nZSB0aGUKKyAgICAgIGdlbmVyYXRpb24gYXR0cmli dXRlIG9mIGFuIGV4aXN0aW5nIGlkZW50aXR5IGNvbHVtbi4KKyAgICAgIFNl ZSA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRldGFibGUiPiBmb3IgZGV0YWls cy4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0 ZXJhbD5TRVQgPHJlcGxhY2VhYmxlPnNlcXVlbmNlX29wdGlvbjwvcmVwbGFj ZWFibGU+PC9saXRlcmFsPjwvdGVybT4KKyAgICA8dGVybT48bGl0ZXJhbD5S RVNUQVJUPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAg IDxwYXJhPgorICAgICAgVGhlc2UgZm9ybXMgYWx0ZXIgdGhlIHNlcXVlbmNl IHRoYXQgdW5kZXJsaWVzIGFuIGV4aXN0aW5nIGlkZW50aXR5CisgICAgICBj b2x1bW4uICA8cmVwbGFjZWFibGU+c2VxdWVuY2Vfb3B0aW9uPC9yZXBsYWNl YWJsZT4gaXMgYW4gb3B0aW9uCisgICAgICBzdXBwb3J0ZWQgYnkgPHhyZWYg bGlua2VuZD0ic3FsLWFsdGVyc2VxdWVuY2UiPiBzdWNoCisgICAgICBhcyA8 bGl0ZXJhbD5JTkNSRU1FTlQgQlk8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8 dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPlNFVCBTVEFUSVNU SUNTPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CiAgICAgIDxw YXJhPgpAQCAtMTE1Miw4ICsxMTgxLDExIEBAIDx0aXRsZT5Ob3RlczwvdGl0 bGU+CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAgIFRoZSA8bGl0ZXJh bD5UUklHR0VSPC8+LCA8bGl0ZXJhbD5DTFVTVEVSPC8+LCA8bGl0ZXJhbD5P V05FUjwvPiwKLSAgICBhbmQgPGxpdGVyYWw+VEFCTEVTUEFDRTwvPiBhY3Rp b25zIG5ldmVyIHJlY3Vyc2UgdG8gZGVzY2VuZGFudCB0YWJsZXM7CisgICAg VGhlIGFjdGlvbnMgZm9yIGlkZW50aXR5IGNvbHVtbnMgKDxsaXRlcmFsPkFE RAorICAgIEdFTkVSQVRFRDwvbGl0ZXJhbD4sIDxsaXRlcmFsPlNFVDwvbGl0 ZXJhbD4gZXRjLiwgPGxpdGVyYWw+RFJPUAorICAgIElERU5USVRZPC9saXRl cmFsPiksIGFzIHdlbGwgYXMgdGhlIGFjdGlvbnMKKyAgICA8bGl0ZXJhbD5U UklHR0VSPC8+LCA8bGl0ZXJhbD5DTFVTVEVSPC8+LCA8bGl0ZXJhbD5PV05F UjwvPiwKKyAgICBhbmQgPGxpdGVyYWw+VEFCTEVTUEFDRTwvPiBuZXZlciBy ZWN1cnNlIHRvIGRlc2NlbmRhbnQgdGFibGVzOwogICAgIHRoYXQgaXMsIHRo ZXkgYWx3YXlzIGFjdCBhcyB0aG91Z2ggPGxpdGVyYWw+T05MWTwvPiB3ZXJl IHNwZWNpZmllZC4KICAgICBBZGRpbmcgYSBjb25zdHJhaW50IHJlY3Vyc2Vz IG9ubHkgZm9yIDxsaXRlcmFsPkNIRUNLPC8+IGNvbnN0cmFpbnRzCiAgICAg dGhhdCBhcmUgbm90IG1hcmtlZCA8bGl0ZXJhbD5OTyBJTkhFUklUPC8+Lgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgYi9kb2Mv c3JjL3NnbWwvcmVmL2NvcHkuc2dtbAppbmRleCA3ZmY2MmYyYTgyLi4yMTVl ZmNkNjlkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtNDgwLDYg KzQ4MCwxMyBAQCA8dGl0bGU+Tm90ZXM8L3RpdGxlPgogICAgPC9wYXJhPgog CiAgICA8cGFyYT4KKyAgICBGb3IgaWRlbnRpdHkgY29sdW1ucywgdGhlIDxj b21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4gY29tbWFuZCB3aWxsIGFsd2F5 cworICAgIHdyaXRlIHRoZSBjb2x1bW4gdmFsdWVzIHByb3ZpZGVkIGluIHRo ZSBpbnB1dCBkYXRhLCBsaWtlCisgICAgdGhlIDxjb21tYW5kPklOUFVUPC9j b21tYW5kPiBvcHRpb24gPGxpdGVyYWw+T1ZFUlJJRElORyBTWVNURU0KKyAg ICBWQUxVRTwvbGl0ZXJhbD4uCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgog ICAgIDxjb21tYW5kPkNPUFk8L2NvbW1hbmQ+IGlucHV0IGFuZCBvdXRwdXQg aXMgYWZmZWN0ZWQgYnkKICAgICA8dmFybmFtZT5EYXRlU3R5bGU8L3Zhcm5h bWU+LiBUbyBlbnN1cmUgcG9ydGFiaWxpdHkgdG8gb3RoZXIKICAgICA8cHJv ZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGluc3RhbGxhdGlv bnMgdGhhdCBtaWdodCB1c2UKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV90YWJsZS5zZ21sCmluZGV4IGJiMDgxZmY4NmYuLmQ4MDhhZDRkNjQgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApAQCAt NjIsNiArNjIsNyBAQAogICBOVUxMIHwKICAgQ0hFQ0sgKCA8cmVwbGFjZWFi bGUgY2xhc3M9IlBBUkFNRVRFUiI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ ICkgWyBOTyBJTkhFUklUIF0gfAogICBERUZBVUxUIDxyZXBsYWNlYWJsZT5k ZWZhdWx0X2V4cHI8L3JlcGxhY2VhYmxlPiB8CisgIEdFTkVSQVRFRCB7IEFM V0FZUyB8IEJZIERFRkFVTFQgfSBBUyBJREVOVElUWSBbICggPHJlcGxhY2Vh YmxlPnNlcXVlbmNlX29wdGlvbnM8L3JlcGxhY2VhYmxlPiApIF0gfAogICBV TklRVUUgPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPmluZGV4X3Bh cmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIFBSSU1BUlkgS0VZIDxyZXBs YWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5pbmRleF9wYXJhbWV0ZXJzPC9y ZXBsYWNlYWJsZT4gfAogICBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFz cz0iUEFSQU1FVEVSIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVw bGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+cmVmY29sdW1uPC9yZXBsYWNl YWJsZT4gKSBdIFsgTUFUQ0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBNQVRD SCBTSU1QTEUgXQpAQCAtODEsNyArODIsNyBAQAogCiA8cGhyYXNlPmFuZCA8 cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+bGlrZV9vcHRpb248L3Jl cGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAoteyBJTkNMVURJTkcgfCBFWENM VURJTkcgfSB7IERFRkFVTFRTIHwgQ09OU1RSQUlOVFMgfCBJTkRFWEVTIHwg U1RPUkFHRSB8IENPTU1FTlRTIHwgQUxMIH0KK3sgSU5DTFVESU5HIHwgRVhD TFVESU5HIH0geyBERUZBVUxUUyB8IENPTlNUUkFJTlRTIHwgSURFTlRJVFkg fCBJTkRFWEVTIHwgU1RPUkFHRSB8IENPTU1FTlRTIHwgQUxMIH0KIAogPHBo cmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPnBhcnRp dGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CiAK QEAgLTQxMiw2ICs0MTMsMTEgQEAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxl PgogICAgICAgQ29sdW1uIDxsaXRlcmFsPlNUT1JBR0U8Lz4gc2V0dGluZ3Mg YXJlIGFsc28gY29waWVkIGZyb20gcGFyZW50IHRhYmxlcy4KICAgICAgPC9w YXJhPgogCisgICAgIDxwYXJhPgorICAgICAgSWYgYSBjb2x1bW4gaW4gdGhl IHBhcmVudCB0YWJsZSBpcyBhbiBpZGVudGl0eSBjb2x1bW4sIHRoYXQgcHJv cGVydHkgaXMKKyAgICAgIG5vdCBpbmhlcml0ZWQuICBBIGNvbHVtbiBpbiB0 aGUgY2hpbGQgdGFibGUgY2FuIGJlIGRlY2xhcmVkIGlkZW50aXR5CisgICAg ICBjb2x1bW4gaWYgZGVzaXJlZC4KKyAgICAgPC9wYXJhPgogICAgIDwvbGlz dGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtNDgxLDYgKzQ4Nywx MiBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgICB0aGUgb3Jp Z2luYWwgYW5kIG5ldyB0YWJsZXMuCiAgICAgIDwvcGFyYT4KICAgICAgPHBh cmE+CisgICAgICBBbnkgaWRlbnRpdHkgc3BlY2lmaWNhdGlvbnMgb2YgY29w aWVkIGNvbHVtbiBkZWZpbml0aW9ucyB3aWxsIG9ubHkgYmUKKyAgICAgIGNv cGllZCBpZiA8bGl0ZXJhbD5JTkNMVURJTkcgSURFTlRJVFk8L2xpdGVyYWw+ IGlzIHNwZWNpZmllZC4gIEEgbmV3CisgICAgICBzZXF1ZW5jZSBpcyBjcmVh dGVkIGZvciBlYWNoIGlkZW50aXR5IGNvbHVtbiBvZiB0aGUgbmV3IHRhYmxl LCBzZXBhcmF0ZQorICAgICAgZnJvbSB0aGUgc2VxdWVuY2VzIGFzc29jaWF0 ZWQgd2l0aCB0aGUgb2xkIHRhYmxlLgorICAgICA8L3BhcmE+CisgICAgIDxw YXJhPgogICAgICAgTm90LW51bGwgY29uc3RyYWludHMgYXJlIGFsd2F5cyBj b3BpZWQgdG8gdGhlIG5ldyB0YWJsZS4KICAgICAgIDxsaXRlcmFsPkNIRUNL PC9saXRlcmFsPiBjb25zdHJhaW50cyB3aWxsIGJlIGNvcGllZCBvbmx5IGlm CiAgICAgICA8bGl0ZXJhbD5JTkNMVURJTkcgQ09OU1RSQUlOVFM8L2xpdGVy YWw+IGlzIHNwZWNpZmllZC4KQEAgLTUxMiw3ICs1MjQsNyBAQCA8dGl0bGU+ UGFyYW1ldGVyczwvdGl0bGU+CiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+ CiAgICAgICA8bGl0ZXJhbD5JTkNMVURJTkcgQUxMPC9saXRlcmFsPiBpcyBh biBhYmJyZXZpYXRlZCBmb3JtIG9mCi0gICAgICA8bGl0ZXJhbD5JTkNMVURJ TkcgREVGQVVMVFMgSU5DTFVESU5HIENPTlNUUkFJTlRTIElOQ0xVRElORyBJ TkRFWEVTIElOQ0xVRElORyBTVE9SQUdFIElOQ0xVRElORyBDT01NRU5UUzwv bGl0ZXJhbD4uCisgICAgICA8bGl0ZXJhbD5JTkNMVURJTkcgREVGQVVMVFMg SU5DTFVESU5HIElERU5USVRZIElOQ0xVRElORyBDT05TVFJBSU5UUyBJTkNM VURJTkcgSU5ERVhFUyBJTkNMVURJTkcgU1RPUkFHRSBJTkNMVURJTkcgQ09N TUVOVFM8L2xpdGVyYWw+LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgog ICAgICAgTm90ZSB0aGF0IHVubGlrZSA8bGl0ZXJhbD5JTkhFUklUUzwvbGl0 ZXJhbD4sIGNvbHVtbnMgYW5kCkBAIC02MjcsNiArNjM5LDM3IEBAIDx0aXRs ZT5QYXJhbWV0ZXJzPC90aXRsZT4KICAgIDwvdmFybGlzdGVudHJ5PgogCiAg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPkdFTkVSQVRF RCB7IEFMV0FZUyB8IEJZIERFRkFVTFQgfSBBUyBJREVOVElUWSBbICggPHJl cGxhY2VhYmxlPnNlcXVlbmNlX29wdGlvbnM8L3JlcGxhY2VhYmxlPiApIF08 L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBUaGlzIGNsYXVzZSBjcmVhdGVzIHRoZSBjb2x1bW4gYXMgYW4g PGZpcnN0dGVybT5pZGVudGl0eQorICAgICAgY29sdW1uPC9maXJzdHRlcm0+ LiAgSXQgd2lsbCBoYXZlIGFuIGltcGxpY2l0IHNlcXVlbmNlIGF0dGFjaGVk IHRvIGl0CisgICAgICBhbmQgdGhlIGNvbHVtbiBpbiBuZXcgcm93cyB3aWxs IGF1dG9tYXRpY2FsbHkgaGF2ZSB2YWx1ZXMgZnJvbSB0aGUKKyAgICAgIHNl cXVlbmNlIGFzc2lnbmVkIHRvIGl0LgorICAgICA8L3BhcmE+CisKKyAgICAg PHBhcmE+CisgICAgICBUaGUgY2xhdXNlcyA8bGl0ZXJhbD5BTFdBWVM8L2xp dGVyYWw+IGFuZCA8bGl0ZXJhbD5CWSBERUZBVUxUPC9saXRlcmFsPgorICAg ICAgZGV0ZXJtaW5lIGhvdyB0aGUgc2VxdWVuY2UgdmFsdWUgaXMgZ2l2ZW4g cHJlY2VkZW5jZSBvdmVyIGEKKyAgICAgIHVzZXItc3BlY2lmaWVkIHZhbHVl IGluIGFuIDxjb21tYW5kPklOU0VSVDwvY29tbWFuZD4gc3RhdGVtZW50Lgor ICAgICAgSWYgPGxpdGVyYWw+QUxXQVlTPC9saXRlcmFsPiBpcyBzcGVjaWZp ZWQsIGEgdXNlci1zcGVjaWZpZWQgdmFsdWUgaXMKKyAgICAgIG9ubHkgYWNj ZXB0ZWQgaWYgdGhlIDxjb21tYW5kPklOU0VSVDwvY29tbWFuZD4gc3RhdGVt ZW50CisgICAgICBzcGVjaWZpZXMgPGxpdGVyYWw+T1ZFUlJJRElORyBTWVNU RU0gVkFMVUU8L2xpdGVyYWw+LiAgSWYgPGxpdGVyYWw+QlkKKyAgICAgIERF RkFVTFQ8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCwgdGhlbiB0aGUgdXNlci1z cGVjaWZpZWQgdmFsdWUgdGFrZXMKKyAgICAgIHByZWNlZGVuY2UuICBTZWUg PHhyZWYgbGlua2VuZD0ic3FsLWluc2VydCI+IGZvciBkZXRhaWxzLiAgKElu CisgICAgICB0aGUgPGNvbW1hbmQ+Q09QWTwvY29tbWFuZD4gY29tbWFuZCwg dXNlci1zcGVjaWZpZWQgdmFsdWVzIGFyZSBhbHdheXMKKyAgICAgIHVzZWQg cmVnYXJkbGVzcyBvZiB0aGlzIHNldHRpbmcuKQorICAgICA8L3BhcmE+CisK KyAgICAgPHBhcmE+CisgICAgICBUaGUgb3B0aW9uYWwgPHJlcGxhY2VhYmxl PnNlcXVlbmNlX29wdGlvbnM8L3JlcGxhY2VhYmxlPiBjbGF1c2UgY2FuIGJl CisgICAgICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBvcHRpb25zIG9mIHRoZSBz ZXF1ZW5jZS4KKyAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRl c2VxdWVuY2UiPiBmb3IgZGV0YWlscy4KKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3Rl bnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5VTklRVUU8Lz4gKGNvbHVtbiBj b25zdHJhaW50KTwvdGVybT4KICAgICA8dGVybT48bGl0ZXJhbD5VTklRVUUg KCA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+Y29sdW1uX25hbWU8 L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApPC8+ICh0YWJsZSBjb25zdHJhaW50 KTwvdGVybT4KIApAQCAtMTI1OSw3ICsxMzAyLDcgQEAgPHRpdGxlPk5vdGVz PC90aXRsZT4KIAogICAgIDxwYXJhPgogICAgICBVc2luZyBPSURzIGluIG5l dyBhcHBsaWNhdGlvbnMgaXMgbm90IHJlY29tbWVuZGVkOiB3aGVyZQotICAg ICBwb3NzaWJsZSwgdXNpbmcgYSA8bGl0ZXJhbD5TRVJJQUw8L2xpdGVyYWw+ IG9yIG90aGVyIHNlcXVlbmNlCisgICAgIHBvc3NpYmxlLCB1c2luZyBhbiBp ZGVudGl0eSBjb2x1bW4gb3Igb3RoZXIgc2VxdWVuY2UKICAgICAgZ2VuZXJh dG9yIGFzIHRoZSB0YWJsZSdzIHByaW1hcnkga2V5IGlzIHByZWZlcnJlZC4g SG93ZXZlciwgaWYKICAgICAgeW91ciBhcHBsaWNhdGlvbiBkb2VzIG1ha2Ug dXNlIG9mIE9JRHMgdG8gaWRlbnRpZnkgc3BlY2lmaWMKICAgICAgcm93cyBv ZiBhIHRhYmxlLCBpdCBpcyByZWNvbW1lbmRlZCB0byBjcmVhdGUgYSB1bmlx dWUgY29uc3RyYWludApAQCAtMTMxOSw3ICsxMzYyLDcgQEAgPHRpdGxlPkV4 YW1wbGVzPC90aXRsZT4KICk7CiAKIENSRUFURSBUQUJMRSBkaXN0cmlidXRv cnMgKAotICAgICBkaWQgICAgaW50ZWdlciBQUklNQVJZIEtFWSBERUZBVUxU IG5leHR2YWwoJ3NlcmlhbCcpLAorICAgICBkaWQgICAgaW50ZWdlciBQUklN QVJZIEtFWSBHRU5FUkFURUQgQlkgREVGQVVMVCBBUyBJREVOVElUWSwKICAg ICAgbmFtZSAgIHZhcmNoYXIoNDApIE5PVCBOVUxMIENIRUNLIChuYW1lICZs dDsmZ3Q7ICcnKQogKTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CkBAIC0xNzM0LDYg KzE3NzcsMjAgQEAgPHRpdGxlPlplcm8tY29sdW1uIFRhYmxlczwvdGl0bGU+ CiAgIDwvcmVmc2VjdDI+CiAKICAgPHJlZnNlY3QyPgorICAgPHRpdGxlPk11 bHRpcGxlIElkZW50aXR5IENvbHVtbnM8L3RpdGxlPgorCisgICA8cGFyYT4K KyAgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGFs bG93cyBhIHRhYmxlIHRvIGhhdmUgbW9yZSB0aGFuIG9uZQorICAgIGlkZW50 aXR5IGNvbHVtbi4gIFRoZSBzdGFuZGFyZCBzcGVjaWZpZXMgdGhhdCBhIHRh YmxlIGNhbiBoYXZlIGF0IG1vc3Qgb25lCisgICAgaWRlbnRpdHkgY29sdW1u LiAgVGhpcyBpcyByZWxheGVkIG1haW5seSB0byBnaXZlIG1vcmUgZmxleGli aWxpdHkgZm9yCisgICAgZG9pbmcgc2NoZW1hIGNoYW5nZXMgb3IgbWlncmF0 aW9ucy4gIE5vdGUgdGhhdAorICAgIHRoZSA8Y29tbWFuZD5JTlNFUlQ8L2Nv bW1hbmQ+IGNvbW1hbmQgc3VwcG9ydHMgb25seSBvbmUgb3ZlcnJpZGUgY2xh dXNlCisgICAgdGhhdCBhcHBsaWVzIHRvIHRoZSBlbnRpcmUgc3RhdGVtZW50 LCBzbyBoYXZpbmcgbXVsdGlwbGUgaWRlbnRpdHkgY29sdW1ucworICAgIHdp dGggZGlmZmVyZW50IGJlaGF2aW9ycyBpcyBub3Qgd2VsbCBzdXBwb3J0ZWQu CisgICA8L3BhcmE+CisgIDwvcmVmc2VjdDI+CisKKyAgPHJlZnNlY3QyPgog ICAgPHRpdGxlPjxsaXRlcmFsPkxJS0U8Lz4gQ2xhdXNlPC90aXRsZT4KIAog ICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2luc2Vy dC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9pbnNlcnQuc2dtbAppbmRleCA1 MjEyMTZiNWQ1Li45NWFhNzdiOTA3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcmVmL2luc2VydC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvaW5z ZXJ0LnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAKIDxzeW5vcHNpcz4KIFsgV0lU SCBbIFJFQ1VSU0lWRSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij53aXRoX3F1ZXJ5PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCiBJTlNFUlQg SU5UTyA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+dGFibGVfbmFt ZTwvcmVwbGFjZWFibGU+IFsgQVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJsZT4gXSBbICggPHJlcGxhY2VhYmxl IGNsYXNzPSJQQVJBTUVURVIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4g WywgLi4uXSApIF0KKyAgICBbIE9WRVJSSURJTkcgeyBTWVNURU0gfCBVU0VS fSBWQUxVRSBdCiAgICAgeyBERUZBVUxUIFZBTFVFUyB8IFZBTFVFUyAoIHsg PHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPmV4cHJlc3Npb248L3Jl cGxhY2VhYmxlPiB8IERFRkFVTFQgfSBbLCAuLi5dICkgWywgLi4uXSB8IDxy ZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5xdWVyeTwvcmVwbGFjZWFi bGU+IH0KICAgICBbIE9OIENPTkZMSUNUIFsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbmZsaWN0X3RhcmdldDwvcmVwbGFjZWFibGU+IF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbmZsaWN0X2FjdGlv bjwvcmVwbGFjZWFibGU+IF0KICAgICBbIFJFVFVSTklORyAqIHwgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm91dHB1dF9leHByZXNzaW9uPC9y ZXBsYWNlYWJsZT4gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm91dHB1dF9uYW1lPC9yZXBsYWNlYWJsZT4gXSBbLCAuLi5dIF0K QEAgLTIwMiwxMCArMjAzLDQzIEBAIDx0aXRsZSBpZD0ic3FsLWluc2VydGlu Zy1wYXJhbXMtdGl0bGUiPkluc2VydGluZzwvdGl0bGU+CiAgICAgIDwvdmFy bGlzdGVudHJ5PgogCiAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVy bT48bGl0ZXJhbD5PVkVSUklESU5HIFNZU1RFTSBWQUxVRTwvbGl0ZXJhbD48 L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAg ICAgIFdpdGhvdXQgdGhpcyBjbGF1c2UsIGl0IGlzIGFuIGVycm9yIHRvIHNw ZWNpZnkgYW4gZXhwbGljaXQgdmFsdWUKKyAgICAgICAgKG90aGVyIHRoYW4g PGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4pIGZvciBhbiBpZGVudGl0eSBj b2x1bW4gZGVmaW5lZAorICAgICAgICBhcyA8bGl0ZXJhbD5HRU5FUkFURUQg QUxXQVlTPC9saXRlcmFsPi4gIFRoaXMgY2xhdXNlIG92ZXJyaWRlcyB0aGF0 CisgICAgICAgIHJlc3RyaWN0aW9uLgorICAgICAgIDwvcGFyYT4KKyAgICAg IDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2 YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48bGl0ZXJhbD5PVkVSUklESU5H IFVTRVIgVkFMVUU8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgPGxpc3RpdGVt PgorICAgICAgIDxwYXJhPgorICAgICAgICBJZiB0aGlzIGNsYXVzZSBpcyBz cGVjaWZpZWQsIHRoZW4gYW55IHZhbHVlcyBzdXBwbGllZCBmb3IgaWRlbnRp dHkKKyAgICAgICAgY29sdW1ucyBkZWZpbmVkIGFzIDxsaXRlcmFsPkdFTkVS QVRFRCBCWSBERUZBVUxUPC9saXRlcmFsPiBhcmUgaWdub3JlZAorICAgICAg ICBhbmQgdGhlIGRlZmF1bHQgc2VxdWVuY2UtZ2VuZXJhdGVkIHZhbHVlcyBh cmUgYXBwbGllZC4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4K KyAgICAgICAgVGhpcyBjbGF1c2UgaXMgdXNlZnVsIGZvciBleGFtcGxlIHdo ZW4gY29weWluZyB2YWx1ZXMgYmV0d2VlbiB0YWJsZXMuCisgICAgICAgIFdy aXRpbmcgPGxpdGVyYWw+SU5TRVJUIElOVE8gdGJsMiBPVkVSUklESU5HIFVT RVIgVkFMVUUgU0VMRUNUICogRlJPTQorICAgICAgICB0YmwxPC9saXRlcmFs PiB3aWxsIGNvcHkgZnJvbSA8bGl0ZXJhbD50YmwxPC9saXRlcmFsPiBhbGwg Y29sdW1ucyB0aGF0CisgICAgICAgIGFyZSBub3QgaWRlbnRpdHkgY29sdW1u cyBpbiA8bGl0ZXJhbD50YmwyPC9saXRlcmFsPiBidXQgd2lsbCBjb250aW51 ZQorICAgICAgICB0aGUgc2VxdWVuY2UgY291bnRlcnMgZm9yIGFueSBpZGVu dGl0eSBjb2x1bW5zLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0 ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50 cnk+CiAgICAgICA8dGVybT48bGl0ZXJhbD5ERUZBVUxUIFZBTFVFUzwvbGl0 ZXJhbD48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+ CiAgICAgICAgIEFsbCBjb2x1bW5zIHdpbGwgYmUgZmlsbGVkIHdpdGggdGhl aXIgZGVmYXVsdCB2YWx1ZXMuCisgICAgICAgIChBbiA8bGl0ZXJhbD5PVkVS UklESU5HPC9saXRlcmFsPiBjbGF1c2UgaXMgbm90IHBlcm1pdHRlZCBpbiB0 aGlzCisgICAgICAgIGZvcm0uKQogICAgICAgIDwvcGFyYT4KICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtNzExLDYgKzc0 NSwxMyBAQCA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+CiAgIDwvcGFy YT4KIAogICA8cGFyYT4KKyAgIFRoZSBTUUwgc3RhbmRhcmQgc3BlY2lmaWVz IHRoYXQgPGxpdGVyYWw+T1ZFUlJJRElORyBTWVNURU0gVkFMVUU8L2xpdGVy YWw+CisgICBjYW4gb25seSBiZSBzcGVjaWZpZWQgaWYgYW4gaWRlbnRpdHkg Y29sdW1uIHRoYXQgaXMgZ2VuZXJhdGVkIGFsd2F5cworICAgZXhpc3RzLiAg UG9zdGdyZVNRTCBhbGxvd3MgdGhlIGNsYXVzZSBpbiBhbnkgY2FzZSBhbmQg aWdub3JlcyBpdCBpZiBpdCBpcworICAgbm90IGFwcGxpY2FibGUuCisgIDwv cGFyYT4KKworICA8cGFyYT4KICAgIFBvc3NpYmxlIGxpbWl0YXRpb25zIG9m IHRoZSA8cmVwbGFjZWFibGUKICAgIGNsYXNzPSJQQVJBTUVURVIiPnF1ZXJ5 PC9yZXBsYWNlYWJsZT4gY2xhdXNlIGFyZSBkb2N1bWVudGVkIHVuZGVyCiAg ICA8eHJlZiBsaW5rZW5kPSJzcWwtc2VsZWN0Ij4uCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jCmluZGV4IDRlMmViZTFhZTcu LmYwZWNmNDhiMjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vdHVwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21t b24vdHVwZGVzYy5jCkBAIC0xNTAsNiArMTUwLDcgQEAgQ3JlYXRlVHVwbGVE ZXNjQ29weShUdXBsZURlc2MgdHVwZGVzYykKIAkJbWVtY3B5KGRlc2MtPmF0 dHJzW2ldLCB0dXBkZXNjLT5hdHRyc1tpXSwgQVRUUklCVVRFX0ZJWEVEX1BB UlRfU0laRSk7CiAJCWRlc2MtPmF0dHJzW2ldLT5hdHRub3RudWxsID0gZmFs c2U7CiAJCWRlc2MtPmF0dHJzW2ldLT5hdHRoYXNkZWYgPSBmYWxzZTsKKwkJ ZGVzYy0+YXR0cnNbaV0tPmF0dGlkZW50aXR5ID0gQVRUUklCVVRFX0lERU5U SVRZX05PTkU7CiAJfQogCiAJZGVzYy0+dGR0eXBlaWQgPSB0dXBkZXNjLT50 ZHR5cGVpZDsKQEAgLTI1Nyw2ICsyNTgsNyBAQCBUdXBsZURlc2NDb3B5RW50 cnkoVHVwbGVEZXNjIGRzdCwgQXR0ck51bWJlciBkc3RBdHRubywKIAkvKiBz aW5jZSB3ZSdyZSBub3QgY29weWluZyBjb25zdHJhaW50cyBvciBkZWZhdWx0 cywgY2xlYXIgdGhlc2UgKi8KIAlkc3QtPmF0dHJzW2RzdEF0dG5vIC0gMV0t PmF0dG5vdG51bGwgPSBmYWxzZTsKIAlkc3QtPmF0dHJzW2RzdEF0dG5vIC0g MV0tPmF0dGhhc2RlZiA9IGZhbHNlOworCWRzdC0+YXR0cnNbZHN0QXR0bm8g LSAxXS0+YXR0aWRlbnRpdHkgPSBBVFRSSUJVVEVfSURFTlRJVFlfTk9ORTsK IH0KIAogLyoKQEAgLTQwMSw2ICs0MDMsOCBAQCBlcXVhbFR1cGxlRGVzY3Mo VHVwbGVEZXNjIHR1cGRlc2MxLCBUdXBsZURlc2MgdHVwZGVzYzIpCiAJCQly ZXR1cm4gZmFsc2U7CiAJCWlmIChhdHRyMS0+YXR0aGFzZGVmICE9IGF0dHIy LT5hdHRoYXNkZWYpCiAJCQlyZXR1cm4gZmFsc2U7CisJCWlmIChhdHRyMS0+ YXR0aWRlbnRpdHkgIT0gYXR0cjItPmF0dGlkZW50aXR5KQorCQkJcmV0dXJu IGZhbHNlOwogCQlpZiAoYXR0cjEtPmF0dGlzZHJvcHBlZCAhPSBhdHRyMi0+ YXR0aXNkcm9wcGVkKQogCQkJcmV0dXJuIGZhbHNlOwogCQlpZiAoYXR0cjEt PmF0dGlzbG9jYWwgIT0gYXR0cjItPmF0dGlzbG9jYWwpCkBAIC01MzQsNiAr NTM4LDcgQEAgVHVwbGVEZXNjSW5pdEVudHJ5KFR1cGxlRGVzYyBkZXNjLAog CiAJYXR0LT5hdHRub3RudWxsID0gZmFsc2U7CiAJYXR0LT5hdHRoYXNkZWYg PSBmYWxzZTsKKwlhdHQtPmF0dGlkZW50aXR5ID0gQVRUUklCVVRFX0lERU5U SVRZX05PTkU7CiAJYXR0LT5hdHRpc2Ryb3BwZWQgPSBmYWxzZTsKIAlhdHQt PmF0dGlzbG9jYWwgPSB0cnVlOwogCWF0dC0+YXR0aW5oY291bnQgPSAwOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCBmYzA4 OGIyMTY1Li43NmUzYzQzYmE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2RlcGVuZGVuY3kuYwpAQCAtMTkyMyw2ICsxOTIzLDEzIEBAIGZpbmRfZXhw cl9yZWZlcmVuY2VzX3dhbGtlcihOb2RlICpub2RlLAogCQkJCQkJICAgY29u dGV4dC0+YWRkcnMpOwogCQkvKiBmYWxsIHRocm91Z2ggdG8gZXhhbWluZSBh cmd1bWVudHMgKi8KIAl9CisJZWxzZSBpZiAoSXNBKG5vZGUsIE5leHRWYWx1 ZUV4cHIpKQorCXsKKwkJTmV4dFZhbHVlRXhwciAgKm52ZSA9IChOZXh0VmFs dWVFeHByICopIG5vZGU7CisKKwkJYWRkX29iamVjdF9hZGRyZXNzKE9DTEFT U19DTEFTUywgbnZlLT5zZXFpZCwgMCwKKwkJCQkJCSAgIGNvbnRleHQtPmFk ZHJzKTsKKwl9CiAKIAlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtlcihu b2RlLCBmaW5kX2V4cHJfcmVmZXJlbmNlc193YWxrZXIsCiAJCQkJCQkJCSAg KHZvaWQgKikgY29udGV4dCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL2dlbmJraS5wbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZ2VuYmtp LnBsCmluZGV4IDA3OTUxNmNhMmYuLjkzYzEyNzRiN2YgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvZ2VuYmtpLnBsCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvZ2VuYmtpLnBsCkBAIC00MDksNiArNDA5LDcgQEAgc3Vi IGVtaXRfcGdhdHRyX3JvdwogCQlhdHRjYWNoZW9mZiAgID0+ICctMScsCiAJ CWF0dHR5cG1vZCAgICAgPT4gJy0xJywKIAkJYXR0aGFzZGVmICAgICA9PiAn ZicsCisJCWF0dGlkZW50aXR5ICAgPT4gIicgJyIsCiAJCWF0dGlzZHJvcHBl ZCAgPT4gJ2YnLAogCQlhdHRpc2xvY2FsICAgID0+ICd0JywKIAkJYXR0aW5o Y291bnQgICA9PiAnMCcsCkBAIC00MjUsNiArNDI2LDcgQEAgc3ViIGJraV9p bnNlcnQKIAlteSBAYXR0bmFtZXMgICA9IEBfOwogCW15ICRvaWQgICAgICAg ID0gJHJvdy0+e29pZH0gPyAiT0lEID0gJHJvdy0+e29pZH0gIiA6ICcnOwog CW15ICRia2lfdmFsdWVzID0gam9pbiAnICcsIG1hcCAkcm93LT57JF99LCBA YXR0bmFtZXM7CisJJGJraV92YWx1ZXMgPX4gcy8nLyIvZzsKIAlwcmludGYg QktJICJpbnNlcnQgJXMoICVzKVxuIiwgJG9pZCwgJGJraV92YWx1ZXM7CiB9 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggNDFjMDA1NjU1Ni4u YzA0Nzk1MTBjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9o ZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTE0 MiwzNyArMTQyLDM3IEBAIHN0YXRpYyBMaXN0ICppbnNlcnRfb3JkZXJlZF91 bmlxdWVfb2lkKExpc3QgKmxpc3QsIE9pZCBkYXR1bSk7CiBzdGF0aWMgRm9y bURhdGFfcGdfYXR0cmlidXRlIGExID0gewogCTAsIHsiY3RpZCJ9LCBUSURP SUQsIDAsIHNpemVvZihJdGVtUG9pbnRlckRhdGEpLAogCVNlbGZJdGVtUG9p bnRlckF0dHJpYnV0ZU51bWJlciwgMCwgLTEsIC0xLAotCWZhbHNlLCAncCcs ICdzJywgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAwCisJZmFsc2UsICdw JywgJ3MnLCB0cnVlLCBmYWxzZSwgQVRUUklCVVRFX0lERU5USVRZX05PTkUs IGZhbHNlLCB0cnVlLCAwCiB9OwogCiBzdGF0aWMgRm9ybURhdGFfcGdfYXR0 cmlidXRlIGEyID0gewogCTAsIHsib2lkIn0sIE9JRE9JRCwgMCwgc2l6ZW9m KE9pZCksCiAJT2JqZWN0SWRBdHRyaWJ1dGVOdW1iZXIsIDAsIC0xLCAtMSwK LQl0cnVlLCAncCcsICdpJywgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAw CisJdHJ1ZSwgJ3AnLCAnaScsIHRydWUsIGZhbHNlLCBBVFRSSUJVVEVfSURF TlRJVFlfTk9ORSwgZmFsc2UsIHRydWUsIDAKIH07CiAKIHN0YXRpYyBGb3Jt RGF0YV9wZ19hdHRyaWJ1dGUgYTMgPSB7CiAJMCwgeyJ4bWluIn0sIFhJRE9J RCwgMCwgc2l6ZW9mKFRyYW5zYWN0aW9uSWQpLAogCU1pblRyYW5zYWN0aW9u SWRBdHRyaWJ1dGVOdW1iZXIsIDAsIC0xLCAtMSwKLQl0cnVlLCAncCcsICdp JywgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAwCisJdHJ1ZSwgJ3AnLCAn aScsIHRydWUsIGZhbHNlLCBBVFRSSUJVVEVfSURFTlRJVFlfTk9ORSwgZmFs c2UsIHRydWUsIDAKIH07CiAKIHN0YXRpYyBGb3JtRGF0YV9wZ19hdHRyaWJ1 dGUgYTQgPSB7CiAJMCwgeyJjbWluIn0sIENJRE9JRCwgMCwgc2l6ZW9mKENv bW1hbmRJZCksCiAJTWluQ29tbWFuZElkQXR0cmlidXRlTnVtYmVyLCAwLCAt MSwgLTEsCi0JdHJ1ZSwgJ3AnLCAnaScsIHRydWUsIGZhbHNlLCBmYWxzZSwg dHJ1ZSwgMAorCXRydWUsICdwJywgJ2knLCB0cnVlLCBmYWxzZSwgQVRUUklC VVRFX0lERU5USVRZX05PTkUsIGZhbHNlLCB0cnVlLCAwCiB9OwogCiBzdGF0 aWMgRm9ybURhdGFfcGdfYXR0cmlidXRlIGE1ID0gewogCTAsIHsieG1heCJ9 LCBYSURPSUQsIDAsIHNpemVvZihUcmFuc2FjdGlvbklkKSwKIAlNYXhUcmFu c2FjdGlvbklkQXR0cmlidXRlTnVtYmVyLCAwLCAtMSwgLTEsCi0JdHJ1ZSwg J3AnLCAnaScsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgMAorCXRydWUs ICdwJywgJ2knLCB0cnVlLCBmYWxzZSwgQVRUUklCVVRFX0lERU5USVRZX05P TkUsIGZhbHNlLCB0cnVlLCAwCiB9OwogCiBzdGF0aWMgRm9ybURhdGFfcGdf YXR0cmlidXRlIGE2ID0gewogCTAsIHsiY21heCJ9LCBDSURPSUQsIDAsIHNp emVvZihDb21tYW5kSWQpLAogCU1heENvbW1hbmRJZEF0dHJpYnV0ZU51bWJl ciwgMCwgLTEsIC0xLAotCXRydWUsICdwJywgJ2knLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUsIDAKKwl0cnVlLCAncCcsICdpJywgdHJ1ZSwgZmFsc2Us IEFUVFJJQlVURV9JREVOVElUWV9OT05FLCBmYWxzZSwgdHJ1ZSwgMAogfTsK IAogLyoKQEAgLTE4NCw3ICsxODQsNyBAQCBzdGF0aWMgRm9ybURhdGFfcGdf YXR0cmlidXRlIGE2ID0gewogc3RhdGljIEZvcm1EYXRhX3BnX2F0dHJpYnV0 ZSBhNyA9IHsKIAkwLCB7InRhYmxlb2lkIn0sIE9JRE9JRCwgMCwgc2l6ZW9m KE9pZCksCiAJVGFibGVPaWRBdHRyaWJ1dGVOdW1iZXIsIDAsIC0xLCAtMSwK LQl0cnVlLCAncCcsICdpJywgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAw CisJdHJ1ZSwgJ3AnLCAnaScsIHRydWUsIGZhbHNlLCBBVFRSSUJVVEVfSURF TlRJVFlfTk9ORSwgZmFsc2UsIHRydWUsIDAKIH07CiAKIHN0YXRpYyBjb25z dCBGb3JtX3BnX2F0dHJpYnV0ZSBTeXNBdHRbXSA9IHsmYTEsICZhMiwgJmEz LCAmYTQsICZhNSwgJmE2LCAmYTd9OwpAQCAtNjE4LDYgKzYxOCw3IEBAIElu c2VydFBnQXR0cmlidXRlVHVwbGUoUmVsYXRpb24gcGdfYXR0cmlidXRlX3Jl bCwKIAl2YWx1ZXNbQW51bV9wZ19hdHRyaWJ1dGVfYXR0YWxpZ24gLSAxXSA9 IENoYXJHZXREYXR1bShuZXdfYXR0cmlidXRlLT5hdHRhbGlnbik7CiAJdmFs dWVzW0FudW1fcGdfYXR0cmlidXRlX2F0dG5vdG51bGwgLSAxXSA9IEJvb2xH ZXREYXR1bShuZXdfYXR0cmlidXRlLT5hdHRub3RudWxsKTsKIAl2YWx1ZXNb QW51bV9wZ19hdHRyaWJ1dGVfYXR0aGFzZGVmIC0gMV0gPSBCb29sR2V0RGF0 dW0obmV3X2F0dHJpYnV0ZS0+YXR0aGFzZGVmKTsKKwl2YWx1ZXNbQW51bV9w Z19hdHRyaWJ1dGVfYXR0aWRlbnRpdHkgLSAxXSA9IENoYXJHZXREYXR1bShu ZXdfYXR0cmlidXRlLT5hdHRpZGVudGl0eSk7CiAJdmFsdWVzW0FudW1fcGdf YXR0cmlidXRlX2F0dGlzZHJvcHBlZCAtIDFdID0gQm9vbEdldERhdHVtKG5l d19hdHRyaWJ1dGUtPmF0dGlzZHJvcHBlZCk7CiAJdmFsdWVzW0FudW1fcGdf YXR0cmlidXRlX2F0dGlzbG9jYWwgLSAxXSA9IEJvb2xHZXREYXR1bShuZXdf YXR0cmlidXRlLT5hdHRpc2xvY2FsKTsKIAl2YWx1ZXNbQW51bV9wZ19hdHRy aWJ1dGVfYXR0aW5oY291bnQgLSAxXSA9IEludDMyR2V0RGF0dW0obmV3X2F0 dHJpYnV0ZS0+YXR0aW5oY291bnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCmluZGV4IDhkNDJhMzQ3ZWEuLjk0MTMwM2ZkZGQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM1Myw2ICszNTMsNyBAQCBDb25zdHJ1 Y3RUdXBsZURlc2NyaXB0b3IoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJ dG8tPmF0dGNhY2hlb2ZmID0gLTE7CiAJCQl0by0+YXR0bm90bnVsbCA9IGZh bHNlOwogCQkJdG8tPmF0dGhhc2RlZiA9IGZhbHNlOworCQkJdG8tPmF0dGlk ZW50aXR5ID0gQVRUUklCVVRFX0lERU5USVRZX05PTkU7CiAJCQl0by0+YXR0 aXNsb2NhbCA9IHRydWU7CiAJCQl0by0+YXR0aW5oY291bnQgPSAwOwogCQkJ dG8tPmF0dGNvbGxhdGlvbiA9IGNvbGxhdGlvbk9iamVjdElkW2ldOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hl bWEuc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hl bWEuc3FsCmluZGV4IGZhMmE4OGZjNWMuLjIxODU3MzRiNDggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNx bAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVt YS5zcWwKQEAgLTcyOCwxMyArNzI4LDEzIEBAIENSRUFURSBWSUVXIGNvbHVt bnMgQVMKICAgICAgICAgICAgQ0FTVChhLmF0dG51bSBBUyBzcWxfaWRlbnRp ZmllcikgQVMgZHRkX2lkZW50aWZpZXIsCiAgICAgICAgICAgIENBU1QoJ05P JyBBUyB5ZXNfb3Jfbm8pIEFTIGlzX3NlbGZfcmVmZXJlbmNpbmcsCiAKLSAg ICAgICAgICAgQ0FTVCgnTk8nIEFTIHllc19vcl9ubykgQVMgaXNfaWRlbnRp dHksCi0gICAgICAgICAgIENBU1QobnVsbCBBUyBjaGFyYWN0ZXJfZGF0YSkg QVMgaWRlbnRpdHlfZ2VuZXJhdGlvbiwKLSAgICAgICAgICAgQ0FTVChudWxs IEFTIGNoYXJhY3Rlcl9kYXRhKSBBUyBpZGVudGl0eV9zdGFydCwKLSAgICAg ICAgICAgQ0FTVChudWxsIEFTIGNoYXJhY3Rlcl9kYXRhKSBBUyBpZGVudGl0 eV9pbmNyZW1lbnQsCi0gICAgICAgICAgIENBU1QobnVsbCBBUyBjaGFyYWN0 ZXJfZGF0YSkgQVMgaWRlbnRpdHlfbWF4aW11bSwKLSAgICAgICAgICAgQ0FT VChudWxsIEFTIGNoYXJhY3Rlcl9kYXRhKSBBUyBpZGVudGl0eV9taW5pbXVt LAotICAgICAgICAgICBDQVNUKG51bGwgQVMgeWVzX29yX25vKSBBUyBpZGVu dGl0eV9jeWNsZSwKKyAgICAgICAgICAgQ0FTVChDQVNFIFdIRU4gYS5hdHRp ZGVudGl0eSBJTiAoJ2EnLCAnZCcpIFRIRU4gJ1lFUycgRUxTRSAnTk8nIEVO RCBBUyB5ZXNfb3Jfbm8pIEFTIGlzX2lkZW50aXR5LAorICAgICAgICAgICBD QVNUKENBU0UgYS5hdHRpZGVudGl0eSBXSEVOICdhJyBUSEVOICdBTFdBWVMn IFdIRU4gJ2QnIFRIRU4gJ0JZIERFRkFVTFQnIEVORCBBUyBjaGFyYWN0ZXJf ZGF0YSkgQVMgaWRlbnRpdHlfZ2VuZXJhdGlvbiwKKyAgICAgICAgICAgQ0FT VChzZXEuc2Vxc3RhcnQgQVMgY2hhcmFjdGVyX2RhdGEpIEFTIGlkZW50aXR5 X3N0YXJ0LAorICAgICAgICAgICBDQVNUKHNlcS5zZXFpbmNyZW1lbnQgQVMg Y2hhcmFjdGVyX2RhdGEpIEFTIGlkZW50aXR5X2luY3JlbWVudCwKKyAgICAg ICAgICAgQ0FTVChzZXEuc2VxbWF4IEFTIGNoYXJhY3Rlcl9kYXRhKSBBUyBp ZGVudGl0eV9tYXhpbXVtLAorICAgICAgICAgICBDQVNUKHNlcS5zZXFtaW4g QVMgY2hhcmFjdGVyX2RhdGEpIEFTIGlkZW50aXR5X21pbmltdW0sCisgICAg ICAgICAgIENBU1QoQ0FTRSBXSEVOIHNlcS5zZXFjeWNsZSBUSEVOICdZRVMn IEVMU0UgJ05PJyBFTkQgQVMgeWVzX29yX25vKSBBUyBpZGVudGl0eV9jeWNs ZSwKIAogICAgICAgICAgICBDQVNUKCdORVZFUicgQVMgY2hhcmFjdGVyX2Rh dGEpIEFTIGlzX2dlbmVyYXRlZCwKICAgICAgICAgICAgQ0FTVChudWxsIEFT IGNoYXJhY3Rlcl9kYXRhKSBBUyBnZW5lcmF0aW9uX2V4cHJlc3Npb24sCkBA IC03NTEsNiArNzUxLDggQEAgQ1JFQVRFIFZJRVcgY29sdW1ucyBBUwogICAg ICAgICAgICBPTiAodC50eXB0eXBlID0gJ2QnIEFORCB0LnR5cGJhc2V0eXBl ID0gYnQub2lkKQogICAgICAgICAgTEVGVCBKT0lOIChwZ19jb2xsYXRpb24g Y28gSk9JTiBwZ19uYW1lc3BhY2UgbmNvIE9OIChjby5jb2xsbmFtZXNwYWNl ID0gbmNvLm9pZCkpCiAgICAgICAgICAgIE9OIGEuYXR0Y29sbGF0aW9uID0g Y28ub2lkIEFORCAobmNvLm5zcG5hbWUsIGNvLmNvbGxuYW1lKSA8PiAoJ3Bn X2NhdGFsb2cnLCAnZGVmYXVsdCcpCisgICAgICAgICBMRUZUIEpPSU4gKHBn X2RlcGVuZCBkZXAgSk9JTiBwZ19zZXF1ZW5jZSBzZXEgT04gKGRlcC5jbGFz c2lkID0gJ3BnX2NsYXNzJzo6cmVnY2xhc3MgQU5EIGRlcC5vYmppZCA9IHNl cS5zZXFyZWxpZCBBTkQgZGVwLmRlcHR5cGUgPSAnaScpKQorICAgICAgICAg ICBPTiAoZGVwLnJlZmNsYXNzaWQgPSAncGdfY2xhc3MnOjpyZWdjbGFzcyBB TkQgZGVwLnJlZm9iamlkID0gYy5vaWQgQU5EIGRlcC5yZWZvYmpzdWJpZCA9 IGEuYXR0bnVtKQogCiAgICAgV0hFUkUgKE5PVCBwZ19pc19vdGhlcl90ZW1w X3NjaGVtYShuYy5vaWQpKQogCkBAIC0xNTQ1LDYgKzE1NDcsNyBAQCBDUkVB VEUgVklFVyBzZXF1ZW5jZXMgQVMKICAgICBGUk9NIHBnX25hbWVzcGFjZSBu YywgcGdfY2xhc3MgYywgcGdfc2VxdWVuY2UgcwogICAgIFdIRVJFIGMucmVs bmFtZXNwYWNlID0gbmMub2lkCiAgICAgICAgICAgQU5EIGMucmVsa2luZCA9 ICdTJworICAgICAgICAgIEFORCBOT1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9N IHBnX2RlcGVuZCBXSEVSRSBjbGFzc2lkID0gJ3BnX2NsYXNzJzo6cmVnY2xh c3MgQU5EIG9iamlkID0gYy5vaWQgQU5EIGRlcHR5cGUgPSAnaScpCiAgICAg ICAgICAgQU5EIChOT1QgcGdfaXNfb3RoZXJfdGVtcF9zY2hlbWEobmMub2lk KSkKICAgICAgICAgICBBTkQgYy5vaWQgPSBzLnNlcXJlbGlkCiAgICAgICAg ICAgQU5EIChwZ19oYXNfcm9sZShjLnJlbG93bmVyLCAnVVNBR0UnKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMKaW5kZXggZDBlZTg1MTIx NS4uYWFlODc5ZTM1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19kZXBlbmQuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2Rl cGVuZC5jCkBAIC00ODgsNyArNDg4LDcgQEAgZ2V0RXh0ZW5zaW9uT2ZPYmpl Y3QoT2lkIGNsYXNzSWQsIE9pZCBvYmplY3RJZCkKIC8qCiAgKiBEZXRlY3Qg d2hldGhlciBhIHNlcXVlbmNlIGlzIG1hcmtlZCBhcyAib3duZWQiIGJ5IGEg Y29sdW1uCiAgKgotICogQW4gb3duZXJzaGlwIG1hcmtlciBpcyBhbiBBVVRP IGRlcGVuZGVuY3kgZnJvbSB0aGUgc2VxdWVuY2UgdG8gdGhlCisgKiBBbiBv d25lcnNoaXAgbWFya2VyIGlzIGFuIEFVVE8gb3IgSU5URVJOQUwgZGVwZW5k ZW5jeSBmcm9tIHRoZSBzZXF1ZW5jZSB0byB0aGUKICAqIGNvbHVtbi4gIElm IHdlIGZpbmQgb25lLCBzdG9yZSB0aGUgaWRlbnRpdHkgb2YgdGhlIG93bmlu ZyBjb2x1bW4KICAqIGludG8gKnRhYmxlSWQgYW5kICpjb2xJZCBhbmQgcmV0 dXJuIFRSVUU7IGVsc2UgcmV0dXJuIEZBTFNFLgogICoKQEAgLTQ5Nyw3ICs0 OTcsNyBAQCBnZXRFeHRlbnNpb25PZk9iamVjdChPaWQgY2xhc3NJZCwgT2lk IG9iamVjdElkKQogICogbm90IGhhcHBlbiwgdGhvdWdoLgogICovCiBib29s Ci1zZXF1ZW5jZUlzT3duZWQoT2lkIHNlcUlkLCBPaWQgKnRhYmxlSWQsIGlu dDMyICpjb2xJZCkKK3NlcXVlbmNlSXNPd25lZChPaWQgc2VxSWQsIGNoYXIg ZGVwdHlwZSwgT2lkICp0YWJsZUlkLCBpbnQzMiAqY29sSWQpCiB7CiAJYm9v bAkJcmV0ID0gZmFsc2U7CiAJUmVsYXRpb24JZGVwUmVsOwpAQCAtNTI0LDcg KzUyNCw3IEBAIHNlcXVlbmNlSXNPd25lZChPaWQgc2VxSWQsIE9pZCAqdGFi bGVJZCwgaW50MzIgKmNvbElkKQogCQlGb3JtX3BnX2RlcGVuZCBkZXBmb3Jt ID0gKEZvcm1fcGdfZGVwZW5kKSBHRVRTVFJVQ1QodHVwKTsKIAogCQlpZiAo ZGVwZm9ybS0+cmVmY2xhc3NpZCA9PSBSZWxhdGlvblJlbGF0aW9uSWQgJiYK LQkJCWRlcGZvcm0tPmRlcHR5cGUgPT0gREVQRU5ERU5DWV9BVVRPKQorCQkJ ZGVwZm9ybS0+ZGVwdHlwZSA9PSBkZXB0eXBlKQogCQl7CiAJCQkqdGFibGVJ ZCA9IGRlcGZvcm0tPnJlZm9iamlkOwogCQkJKmNvbElkID0gZGVwZm9ybS0+ cmVmb2Jqc3ViaWQ7CkBAIC01NDEsMjcgKzU0MSwxNSBAQCBzZXF1ZW5jZUlz T3duZWQoT2lkIHNlcUlkLCBPaWQgKnRhYmxlSWQsIGludDMyICpjb2xJZCkK IH0KIAogLyoKLSAqIFJlbW92ZSBhbnkgZXhpc3RpbmcgIm93bmVkIiBtYXJr ZXJzIGZvciB0aGUgc3BlY2lmaWVkIHNlcXVlbmNlLgotICoKLSAqIE5vdGU6 IHdlIGRvbid0IHByb3ZpZGUgYSBzcGVjaWFsIGZ1bmN0aW9uIHRvIGluc3Rh bGwgYW4gIm93bmVkIgotICogbWFya2VyOyBqdXN0IHVzZSByZWNvcmREZXBl bmRlbmN5T24oKS4KLSAqLwotdm9pZAotbWFya1NlcXVlbmNlVW5vd25lZChP aWQgc2VxSWQpCi17Ci0JZGVsZXRlRGVwZW5kZW5jeVJlY29yZHNGb3JDbGFz cyhSZWxhdGlvblJlbGF0aW9uSWQsIHNlcUlkLAotCQkJCQkJCQkJUmVsYXRp b25SZWxhdGlvbklkLCBERVBFTkRFTkNZX0FVVE8pOwotfQotCi0vKgotICog Q29sbGVjdCBhIGxpc3Qgb2YgT0lEcyBvZiBhbGwgc2VxdWVuY2VzIG93bmVk IGJ5IHRoZSBzcGVjaWZpZWQgcmVsYXRpb24uCisgKiBDb2xsZWN0IGEgbGlz dCBvZiBPSURzIG9mIGFsbCBzZXF1ZW5jZXMgb3duZWQgYnkgdGhlIHNwZWNp ZmllZCByZWxhdGlvbiwKKyAqIGFuZCBjb2x1bW4gaWYgc3BlY2lmaWVkLgog ICovCiBMaXN0ICoKLWdldE93bmVkU2VxdWVuY2VzKE9pZCByZWxpZCkKK2dl dE93bmVkU2VxdWVuY2VzKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0p CiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCVJlbGF0aW9uCWRlcFJl bDsKLQlTY2FuS2V5RGF0YSBrZXlbMl07CisJU2NhbktleURhdGEga2V5WzNd OwogCVN5c1NjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cDsKIApAQCAt NTc1LDIzICs1NjMsMjggQEAgZ2V0T3duZWRTZXF1ZW5jZXMoT2lkIHJlbGlk KQogCQkJCUFudW1fcGdfZGVwZW5kX3JlZm9iamlkLAogCQkJCUJURXF1YWxT dHJhdGVneU51bWJlciwgRl9PSURFUSwKIAkJCQlPYmplY3RJZEdldERhdHVt KHJlbGlkKSk7CisJaWYgKGF0dG51bSkKKwkJU2NhbktleUluaXQoJmtleVsy XSwKKwkJCQkJQW51bV9wZ19kZXBlbmRfcmVmb2Jqc3ViaWQsCisJCQkJCUJU RXF1YWxTdHJhdGVneU51bWJlciwgRl9JTlQ0RVEsCisJCQkJCUludDMyR2V0 RGF0dW0oYXR0bnVtKSk7CiAKIAlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2Fu KGRlcFJlbCwgRGVwZW5kUmVmZXJlbmNlSW5kZXhJZCwgdHJ1ZSwKLQkJCQkJ CQkgIE5VTEwsIDIsIGtleSk7CisJCQkJCQkJICBOVUxMLCBhdHRudW0gPyAz IDogMiwga2V5KTsKIAogCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9 IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQogCXsKIAkJRm9ybV9wZ19kZXBl bmQgZGVwcmVjID0gKEZvcm1fcGdfZGVwZW5kKSBHRVRTVFJVQ1QodHVwKTsK IAogCQkvKgotCQkgKiBXZSBhc3N1bWUgYW55IGF1dG8gZGVwZW5kZW5jeSBv ZiBhIHNlcXVlbmNlIG9uIGEgY29sdW1uIG11c3QgYmUKKwkJICogV2UgYXNz dW1lIGFueSBhdXRvIG9yIGludGVybmFsIGRlcGVuZGVuY3kgb2YgYSBzZXF1 ZW5jZSBvbiBhIGNvbHVtbiBtdXN0IGJlCiAJCSAqIHdoYXQgd2UgYXJlIGxv b2tpbmcgZm9yLiAgKFdlIG5lZWQgdGhlIHJlbGtpbmQgdGVzdCBiZWNhdXNl IGluZGV4ZXMKIAkJICogY2FuIGFsc28gaGF2ZSBhdXRvIGRlcGVuZGVuY2ll cyBvbiBjb2x1bW5zLikKIAkJICovCiAJCWlmIChkZXByZWMtPmNsYXNzaWQg PT0gUmVsYXRpb25SZWxhdGlvbklkICYmCiAJCQlkZXByZWMtPm9ianN1Ymlk ID09IDAgJiYKIAkJCWRlcHJlYy0+cmVmb2Jqc3ViaWQgIT0gMCAmJgotCQkJ ZGVwcmVjLT5kZXB0eXBlID09IERFUEVOREVOQ1lfQVVUTyAmJgorCQkJKGRl cHJlYy0+ZGVwdHlwZSA9PSBERVBFTkRFTkNZX0FVVE8gfHwgZGVwcmVjLT5k ZXB0eXBlID09IERFUEVOREVOQ1lfSU5URVJOQUwpICYmCiAJCQlnZXRfcmVs X3JlbGtpbmQoZGVwcmVjLT5vYmppZCkgPT0gUkVMS0lORF9TRVFVRU5DRSkK IAkJewogCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBkZXByZWMt Pm9iamlkKTsKQEAgLTYwNSw2ICs1OTgsMjEgQEAgZ2V0T3duZWRTZXF1ZW5j ZXMoT2lkIHJlbGlkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBH ZXQgb3duZWQgc2VxdWVuY2UsIGVycm9yIGlmIG5vdCBleGFjdGx5IG9uZS4K KyAqLworT2lkCitnZXRPd25lZFNlcXVlbmNlKE9pZCByZWxpZCwgQXR0ck51 bWJlciBhdHRudW0pCit7CisJTGlzdAkgICAqc2VxbGlzdCA9IGdldE93bmVk U2VxdWVuY2VzKHJlbGlkLCBhdHRudW0pOworCisJaWYgKGxpc3RfbGVuZ3Ro KHNlcWxpc3QpID4gMSkKKwkJZWxvZyhFUlJPUiwgIm1vcmUgdGhhbiBvbmUg b3duZWQgc2VxdWVuY2UgZm91bmQiKTsKKwllbHNlIGlmIChsaXN0X2xlbmd0 aChzZXFsaXN0KSA8IDEpCisJCWVsb2coRVJST1IsICJubyBvd25lZCBzZXF1 ZW5jZSBmb3VuZCIpOworCWVsc2UKKwkJcmV0dXJuIGxpbml0aWFsX29pZChz ZXFsaXN0KTsKK30KIAogLyoKICAqIGdldF9jb25zdHJhaW50X2luZGV4CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50 eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5k ZXggODk1NmJhOTMwNC4uMjgyMWI5YjcwMiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dApAQCAtMjAwLDcgKzIwMCw3 IEBAIEYxODEJTXVsdGlwbGUgbW9kdWxlIHN1cHBvcnQJCQlOTwogRjE5MQlS ZWZlcmVudGlhbCBkZWxldGUgYWN0aW9ucwkJCVlFUwkKIEYyMDAJVFJVTkNB VEUgVEFCTEUgc3RhdGVtZW50CQkJWUVTCQogRjIwMQlDQVNUIGZ1bmN0aW9u CQkJWUVTCQotRjIwMglUUlVOQ0FURSBUQUJMRTogaWRlbnRpdHkgY29sdW1u IHJlc3RhcnQgb3B0aW9uCQkJTk8JCitGMjAyCVRSVU5DQVRFIFRBQkxFOiBp ZGVudGl0eSBjb2x1bW4gcmVzdGFydCBvcHRpb24JCQlZRVMJCiBGMjIxCUV4 cGxpY2l0IGRlZmF1bHRzCQkJWUVTCQogRjIyMglJTlNFUlQgc3RhdGVtZW50 OiBERUZBVUxUIFZBTFVFUyBjbGF1c2UJCQlZRVMJCiBGMjMxCVByaXZpbGVn ZSB0YWJsZXMJCQlZRVMJCkBAIC0yNDEsOSArMjQxLDkgQEAgRjM4MQlFeHRl bmRlZCBzY2hlbWEgbWFuaXB1bGF0aW9uCTAyCUFMVEVSIFRBQkxFIHN0YXRl bWVudDogQUREIENPTlNUUkFJTlQgY2xhdXMKIEYzODEJRXh0ZW5kZWQgc2No ZW1hIG1hbmlwdWxhdGlvbgkwMwlBTFRFUiBUQUJMRSBzdGF0ZW1lbnQ6IERS T1AgQ09OU1RSQUlOVCBjbGF1c2UJWUVTCQogRjM4MglBbHRlciBjb2x1bW4g ZGF0YSB0eXBlCQkJWUVTCQogRjM4MwlTZXQgY29sdW1uIG5vdCBudWxsIGNs YXVzZQkJCVlFUwkKLUYzODQJRHJvcCBpZGVudGl0eSBwcm9wZXJ0eSBjbGF1 c2UJCQlOTwkKK0YzODQJRHJvcCBpZGVudGl0eSBwcm9wZXJ0eSBjbGF1c2UJ CQlZRVMJCiBGMzg1CURyb3AgY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lv biBjbGF1c2UJCQlOTwkKLUYzODYJU2V0IGlkZW50aXR5IGNvbHVtbiBnZW5l cmF0aW9uIGNsYXVzZQkJCU5PCQorRjM4NglTZXQgaWRlbnRpdHkgY29sdW1u IGdlbmVyYXRpb24gY2xhdXNlCQkJWUVTCQogRjM5MQlMb25nIGlkZW50aWZp ZXJzCQkJWUVTCQogRjM5MglVbmljb2RlIGVzY2FwZXMgaW4gaWRlbnRpZmll cnMJCQlZRVMJCiBGMzkzCVVuaWNvZGUgZXNjYXBlcyBpbiBsaXRlcmFscwkJ CVlFUwkKQEAgLTQyMCwxMSArNDIwLDExIEBAIFQxNTIJRElTVElOQ1QgcHJl ZGljYXRlIHdpdGggbmVnYXRpb24JCQlZRVMKIFQxNzEJTElLRSBjbGF1c2Ug aW4gdGFibGUgZGVmaW5pdGlvbgkJCVlFUwkKIFQxNzIJQVMgc3VicXVlcnkg Y2xhdXNlIGluIHRhYmxlIGRlZmluaXRpb24JCQlZRVMJCiBUMTczCUV4dGVu ZGVkIExJS0UgY2xhdXNlIGluIHRhYmxlIGRlZmluaXRpb24JCQlZRVMJCi1U MTc0CUlkZW50aXR5IGNvbHVtbnMJCQlOTwkKK1QxNzQJSWRlbnRpdHkgY29s dW1ucwkJCVlFUwkKIFQxNzUJR2VuZXJhdGVkIGNvbHVtbnMJCQlOTwkKIFQx NzYJU2VxdWVuY2UgZ2VuZXJhdG9yIHN1cHBvcnQJCQlOTwkKLVQxNzcJU2Vx dWVuY2UgZ2VuZXJhdG9yIHN1cHBvcnQ6IHNpbXBsZSByZXN0YXJ0IG9wdGlv bgkJCU5PCQotVDE3OAlJZGVudGl0eSBjb2x1bW5zOiAgc2ltcGxlIHJlc3Rh cnQgb3B0aW9uCQkJTk8JCitUMTc3CVNlcXVlbmNlIGdlbmVyYXRvciBzdXBw b3J0OiBzaW1wbGUgcmVzdGFydCBvcHRpb24JCQlZRVMJCitUMTc4CUlkZW50 aXR5IGNvbHVtbnM6ICBzaW1wbGUgcmVzdGFydCBvcHRpb24JCQlZRVMJCiBU MTgwCVN5c3RlbS12ZXJzaW9uZWQgdGFibGVzCQkJTk8JCiBUMTgxCUFwcGxp Y2F0aW9uLXRpbWUgcGVyaW9kIHRhYmxlcwkJCU5PCQogVDE5MQlSZWZlcmVu dGlhbCBhY3Rpb24gUkVTVFJJQ1QJCQlZRVMJCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvc2VxdWVuY2UuYwppbmRleCBkNTQ3ZGI3MTRlLi5mMTUxNDE2MTJh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTkz LDcgKzkzLDYgQEAgc3RhdGljIEhUQUIgKnNlcWhhc2h0YWIgPSBOVUxMOyAv KiBoYXNoIHRhYmxlIGZvciBTZXFUYWJsZSBpdGVtcyAqLwogc3RhdGljIFNl cVRhYmxlRGF0YSAqbGFzdF91c2VkX3NlcSA9IE5VTEw7CiAKIHN0YXRpYyB2 b2lkIGZpbGxfc2VxX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBs ZSB0dXBsZSk7Ci1zdGF0aWMgaW50NjQgbmV4dHZhbF9pbnRlcm5hbChPaWQg cmVsaWQpOwogc3RhdGljIFJlbGF0aW9uIG9wZW5fc2hhcmVfbG9jayhTZXFU YWJsZSBzZXEpOwogc3RhdGljIHZvaWQgY3JlYXRlX3NlcV9oYXNodGFibGUo dm9pZCk7CiBzdGF0aWMgdm9pZCBpbml0X3NlcXVlbmNlKE9pZCByZWxpZCwg U2VxVGFibGUgKnBfZWxtLCBSZWxhdGlvbiAqcF9yZWwpOwpAQCAtMTAxLDkg KzEwMCwxMCBAQCBzdGF0aWMgRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHJlYWRf c2VxX3R1cGxlKFJlbGF0aW9uIHJlbCwKIAkJCSAgIEJ1ZmZlciAqYnVmLCBI ZWFwVHVwbGUgc2VxZGF0YXR1cGxlKTsKIHN0YXRpYyB2b2lkIGluaXRfcGFy YW1zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3B0aW9ucywgYm9vbCBp c0luaXQsCiAJCQkJCQlGb3JtX3BnX3NlcXVlbmNlIHNlcWZvcm0sCi0JCQkJ CQlGb3JtX3BnX3NlcXVlbmNlX2RhdGEgc2VxZGF0YWZvcm0sIExpc3QgKipv d25lZF9ieSk7CisJCQkJCQlGb3JtX3BnX3NlcXVlbmNlX2RhdGEgc2VxZGF0 YWZvcm0sIExpc3QgKipvd25lZF9ieSwKKwkJCQkJCURlcGVuZGVuY3lUeXBl ICpkZXB0eXBlKTsKIHN0YXRpYyB2b2lkIGRvX3NldHZhbChPaWQgcmVsaWQs IGludDY0IG5leHQsIGJvb2wgaXNjYWxsZWQpOwotc3RhdGljIHZvaWQgcHJv Y2Vzc19vd25lZF9ieShSZWxhdGlvbiBzZXFyZWwsIExpc3QgKm93bmVkX2J5 KTsKK3N0YXRpYyB2b2lkIHByb2Nlc3Nfb3duZWRfYnkoUmVsYXRpb24gc2Vx cmVsLCBMaXN0ICpvd25lZF9ieSwgRGVwZW5kZW5jeVR5cGUgZGVwdHlwZSk7 CiAKIAogLyoKQEAgLTExNiw2ICsxMTYsNyBAQCBEZWZpbmVTZXF1ZW5jZShQ YXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVNlcVN0bXQgKnNlcSkKIAlGb3Jt RGF0YV9wZ19zZXF1ZW5jZSBzZXFmb3JtOwogCUZvcm1EYXRhX3BnX3NlcXVl bmNlX2RhdGEgc2VxZGF0YWZvcm07CiAJTGlzdAkgICAqb3duZWRfYnk7CisJ RGVwZW5kZW5jeVR5cGUgZGVwdHlwZTsKIAlDcmVhdGVTdG10ICpzdG10ID0g bWFrZU5vZGUoQ3JlYXRlU3RtdCk7CiAJT2lkCQkJc2Vxb2lkOwogCU9iamVj dEFkZHJlc3MgYWRkcmVzczsKQEAgLTE1Myw3ICsxNTQsNyBAQCBEZWZpbmVT ZXF1ZW5jZShQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVNlcVN0bXQgKnNl cSkKIAl9CiAKIAkvKiBDaGVjayBhbmQgc2V0IGFsbCBvcHRpb24gdmFsdWVz ICovCi0JaW5pdF9wYXJhbXMocHN0YXRlLCBzZXEtPm9wdGlvbnMsIHRydWUs ICZzZXFmb3JtLCAmc2VxZGF0YWZvcm0sICZvd25lZF9ieSk7CisJaW5pdF9w YXJhbXMocHN0YXRlLCBzZXEtPm9wdGlvbnMsIHRydWUsICZzZXFmb3JtLCAm c2VxZGF0YWZvcm0sICZvd25lZF9ieSwgJmRlcHR5cGUpOwogCiAJLyoKIAkg KiBDcmVhdGUgcmVsYXRpb24gKGFuZCBmaWxsIHZhbHVlW10gYW5kIG51bGxb XSBmb3IgdGhlIHR1cGxlKQpAQCAtMTcwLDYgKzE3MSw3IEBAIERlZmluZVNl cXVlbmNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU2VxU3RtdCAqc2Vx KQogCQljb2xkZWYtPnN0b3JhZ2UgPSAwOwogCQljb2xkZWYtPnJhd19kZWZh dWx0ID0gTlVMTDsKIAkJY29sZGVmLT5jb29rZWRfZGVmYXVsdCA9IE5VTEw7 CisJCWNvbGRlZi0+aWRlbnRpdHkgPSBBVFRSSUJVVEVfSURFTlRJVFlfTk9O RTsKIAkJY29sZGVmLT5jb2xsQ2xhdXNlID0gTlVMTDsKIAkJY29sZGVmLT5j b2xsT2lkID0gSW52YWxpZE9pZDsKIAkJY29sZGVmLT5jb25zdHJhaW50cyA9 IE5JTDsKQEAgLTIxOSw3ICsyMjEsNyBAQCBEZWZpbmVTZXF1ZW5jZShQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVNlcVN0bXQgKnNlcSkKIAogCS8qIHBy b2Nlc3MgT1dORUQgQlkgaWYgZ2l2ZW4gKi8KIAlpZiAob3duZWRfYnkpCi0J CXByb2Nlc3Nfb3duZWRfYnkocmVsLCBvd25lZF9ieSk7CisJCXByb2Nlc3Nf b3duZWRfYnkocmVsLCBvd25lZF9ieSwgZGVwdHlwZSk7CiAKIAloZWFwX2Ns b3NlKHJlbCwgTm9Mb2NrKTsKIApAQCAtNDE4LDYgKzQyMCw3IEBAIEFsdGVy U2VxdWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclNlcVN0bXQgKnN0 bXQpCiAJRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHNlcWRhdGE7CiAJRm9ybURh dGFfcGdfc2VxdWVuY2VfZGF0YSBuZXdzZXFkYXRhOwogCUxpc3QJICAgKm93 bmVkX2J5OworCURlcGVuZGVuY3lUeXBlIGRlcHR5cGU7CiAJT2JqZWN0QWRk cmVzcyBhZGRyZXNzOwogCVJlbGF0aW9uCXJlbDsKIAlIZWFwVHVwbGUJdHVw bGU7CkBAIC00NTUsNyArNDU4LDcgQEAgQWx0ZXJTZXF1ZW5jZShQYXJzZVN0 YXRlICpwc3RhdGUsIEFsdGVyU2VxU3RtdCAqc3RtdCkKIAlzZXFmb3JtID0g KEZvcm1fcGdfc2VxdWVuY2UpIEdFVFNUUlVDVCh0dXBsZSk7CiAKIAkvKiBD aGVjayBhbmQgc2V0IG5ldyB2YWx1ZXMgKi8KLQlpbml0X3BhcmFtcyhwc3Rh dGUsIHN0bXQtPm9wdGlvbnMsIGZhbHNlLCBzZXFmb3JtLCAmbmV3c2VxZGF0 YSwgJm93bmVkX2J5KTsKKwlpbml0X3BhcmFtcyhwc3RhdGUsIHN0bXQtPm9w dGlvbnMsIGZhbHNlLCBzZXFmb3JtLCAmbmV3c2VxZGF0YSwgJm93bmVkX2J5 LCAmZGVwdHlwZSk7CiAKIAkvKiBDbGVhciBsb2NhbCBjYWNoZSBzbyB0aGF0 IHdlIGRvbid0IHRoaW5rIHdlIGhhdmUgY2FjaGVkIG51bWJlcnMgKi8KIAkv KiBOb3RlIHRoYXQgd2UgZG8gbm90IGNoYW5nZSB0aGUgY3VycnZhbCgpIHN0 YXRlICovCkBAIC00OTgsNyArNTAxLDcgQEAgQWx0ZXJTZXF1ZW5jZShQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyU2VxU3RtdCAqc3RtdCkKIAogCS8qIHBy b2Nlc3MgT1dORUQgQlkgaWYgZ2l2ZW4gKi8KIAlpZiAob3duZWRfYnkpCi0J CXByb2Nlc3Nfb3duZWRfYnkoc2VxcmVsLCBvd25lZF9ieSk7CisJCXByb2Nl c3Nfb3duZWRfYnkoc2VxcmVsLCBvd25lZF9ieSwgZGVwdHlwZSk7CiAKIAlJ bnZva2VPYmplY3RQb3N0QWx0ZXJIb29rKFJlbGF0aW9uUmVsYXRpb25JZCwg cmVsaWQsIDApOwogCkBAIC01NTQsNyArNTU3LDcgQEAgbmV4dHZhbChQR19G VU5DVElPTl9BUkdTKQogCSAqLwogCXJlbGlkID0gUmFuZ2VWYXJHZXRSZWxp ZChzZXF1ZW5jZSwgTm9Mb2NrLCBmYWxzZSk7CiAKLQlQR19SRVRVUk5fSU5U NjQobmV4dHZhbF9pbnRlcm5hbChyZWxpZCkpOworCVBHX1JFVFVSTl9JTlQ2 NChuZXh0dmFsX2ludGVybmFsKHJlbGlkLCB0cnVlKSk7CiB9CiAKIERhdHVt CkBAIC01NjIsMTEgKzU2NSwxMSBAQCBuZXh0dmFsX29pZChQR19GVU5DVElP Tl9BUkdTKQogewogCU9pZAkJCXJlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsK IAotCVBHX1JFVFVSTl9JTlQ2NChuZXh0dmFsX2ludGVybmFsKHJlbGlkKSk7 CisJUEdfUkVUVVJOX0lOVDY0KG5leHR2YWxfaW50ZXJuYWwocmVsaWQsIHRy dWUpKTsKIH0KIAotc3RhdGljIGludDY0Ci1uZXh0dmFsX2ludGVybmFsKE9p ZCByZWxpZCkKK2ludDY0CituZXh0dmFsX2ludGVybmFsKE9pZCByZWxpZCwg Ym9vbCBjaGVja19wZXJtaXNzaW9ucykKIHsKIAlTZXFUYWJsZQllbG07CiAJ UmVsYXRpb24Jc2VxcmVsOwpAQCAtNTkyLDcgKzU5NSw4IEBAIG5leHR2YWxf aW50ZXJuYWwoT2lkIHJlbGlkKQogCS8qIG9wZW4gYW5kIEFjY2Vzc1NoYXJl TG9jayBzZXF1ZW5jZSAqLwogCWluaXRfc2VxdWVuY2UocmVsaWQsICZlbG0s ICZzZXFyZWwpOwogCi0JaWYgKHBnX2NsYXNzX2FjbGNoZWNrKGVsbS0+cmVs aWQsIEdldFVzZXJJZCgpLAorCWlmIChjaGVja19wZXJtaXNzaW9ucyAmJgor CQlwZ19jbGFzc19hY2xjaGVjayhlbG0tPnJlbGlkLCBHZXRVc2VySWQoKSwK IAkJCQkJCSAgQUNMX1VTQUdFIHwgQUNMX1VQREFURSkgIT0gQUNMQ0hFQ0tf T0spCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKQEAgLTEyMjEsNyArMTIyNSw4IEBA IHJlYWRfc2VxX3R1cGxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyICpidWYsIEhl YXBUdXBsZSBzZXFkYXRhdHVwbGUpCiBzdGF0aWMgdm9pZAogaW5pdF9wYXJh bXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcHRpb25zLCBib29sIGlz SW5pdCwKIAkJCUZvcm1fcGdfc2VxdWVuY2Ugc2VxZm9ybSwKLQkJCUZvcm1f cGdfc2VxdWVuY2VfZGF0YSBzZXFkYXRhZm9ybSwgTGlzdCAqKm93bmVkX2J5 KQorCQkJRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHNlcWRhdGFmb3JtLCBMaXN0 ICoqb3duZWRfYnksCisJCQlEZXBlbmRlbmN5VHlwZSAqZGVwdHlwZSkKIHsK IAlEZWZFbGVtICAgICphc190eXBlID0gTlVMTDsKIAlEZWZFbGVtICAgICpz dGFydF92YWx1ZSA9IE5VTEw7CkBAIC0xMjMxLDkgKzEyMzYsMTEgQEAgaW5p dF9wYXJhbXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcHRpb25zLCBi b29sIGlzSW5pdCwKIAlEZWZFbGVtICAgICptaW5fdmFsdWUgPSBOVUxMOwog CURlZkVsZW0gICAgKmNhY2hlX3ZhbHVlID0gTlVMTDsKIAlEZWZFbGVtICAg ICppc19jeWNsZWQgPSBOVUxMOworCURlZkVsZW0JICAgKmRlcHR5cGVfZWwg PSBOVUxMOwogCUxpc3RDZWxsICAgKm9wdGlvbjsKIAogCSpvd25lZF9ieSA9 IE5JTDsKKwkqZGVwdHlwZSA9IERFUEVOREVOQ1lfQVVUTzsKIAogCWZvcmVh Y2gob3B0aW9uLCBvcHRpb25zKQogCXsKQEAgLTEzMjAsNiArMTMyNywyOCBA QCBpbml0X3BhcmFtcyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9wdGlv bnMsIGJvb2wgaXNJbml0LAogCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIGRlZmVsLT5sb2NhdGlvbikpKTsKIAkJCSpvd25lZF9ieSA9IGRl ZkdldFF1YWxpZmllZE5hbWUoZGVmZWwpOwogCQl9CisJCWVsc2UgaWYgKHN0 cmNtcChkZWZlbC0+ZGVmbmFtZSwgImRlcHR5cGUiKSA9PSAwKQorCQl7CisJ CQlpZiAoZGVwdHlwZV9lbCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1z ZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMiKSwKKwkJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkZWZlbC0+bG9jYXRpb24p KSk7CisJCQlkZXB0eXBlX2VsID0gZGVmZWw7CisJCQkqZGVwdHlwZSA9IGlu dFZhbChkZXB0eXBlX2VsLT5hcmcpOworCQl9CisJCWVsc2UgaWYgKHN0cmNt cChkZWZlbC0+ZGVmbmFtZSwgInNlcXVlbmNlX25hbWUiKSA9PSAwKQorCQl7 CisJCQkvKgorCQkJICogVGhlIHBhcnNlciBhbGxvd3MgdGhpcywgYnV0IGl0 IGlzIG9ubHkgZm9yIGlkZW50aXR5IGNvbHVtbnMsIGluCisJCQkgKiB3aGlj aCBjYXNlIGl0IGlzIGZpbHRlcmVkIG91dCBpbiBwYXJzZV91dGlsY21kLmMu ICBXZSBvbmx5IGdldAorCQkJICogaGVyZSBpZiBzb21lb25lIHB1dHMgaXQg aW50byBhIENSRUFURSBTRVFVRU5DRS4KKwkJCSAqLworCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAor CQkJCQkgZXJybXNnKCJpbnZhbGlkIHNlcXVlbmNlIG9wdGlvbiBTRVFVRU5D RSBOQU1FIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBk ZWZlbC0+bG9jYXRpb24pKSk7CisJCX0KIAkJZWxzZQogCQkJZWxvZyhFUlJP UiwgIm9wdGlvbiBcIiVzXCIgbm90IHJlY29nbml6ZWQiLAogCQkJCSBkZWZl bC0+ZGVmbmFtZSk7CkBAIC0xNTY1LDcgKzE1OTQsNyBAQCBpbml0X3BhcmFt cyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9wdGlvbnMsIGJvb2wgaXNJ bml0LAogICogYXMgdGhlIHNlcXVlbmNlLgogICovCiBzdGF0aWMgdm9pZAot cHJvY2Vzc19vd25lZF9ieShSZWxhdGlvbiBzZXFyZWwsIExpc3QgKm93bmVk X2J5KQorcHJvY2Vzc19vd25lZF9ieShSZWxhdGlvbiBzZXFyZWwsIExpc3Qg Km93bmVkX2J5LCBEZXBlbmRlbmN5VHlwZSBkZXB0eXBlKQogewogCWludAkJ CW5uYW1lczsKIAlSZWxhdGlvbgl0YWJsZXJlbDsKQEAgLTE2MDEsNiArMTYz MCw3IEBAIHByb2Nlc3Nfb3duZWRfYnkoUmVsYXRpb24gc2VxcmVsLCBMaXN0 ICpvd25lZF9ieSkKIAkJLyogTXVzdCBiZSBhIHJlZ3VsYXIgb3IgZm9yZWln biB0YWJsZSAqLwogCQlpZiAoISh0YWJsZXJlbC0+cmRfcmVsLT5yZWxraW5k ID09IFJFTEtJTkRfUkVMQVRJT04gfHwKIAkJCSAgdGFibGVyZWwtPnJkX3Jl bC0+cmVsa2luZCA9PSBSRUxLSU5EX0ZPUkVJR05fVEFCTEUgfHwKKwkJCSAg dGFibGVyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgfHwK IAkJCSAgdGFibGVyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShl cnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLApAQCAtMTYyNywx MCArMTY1NywyOCBAQCBwcm9jZXNzX293bmVkX2J5KFJlbGF0aW9uIHNlcXJl bCwgTGlzdCAqb3duZWRfYnkpCiAJfQogCiAJLyoKLQkgKiBPSywgd2UgYXJl IHJlYWR5IHRvIHVwZGF0ZSBwZ19kZXBlbmQuICBGaXJzdCByZW1vdmUgYW55 IGV4aXN0aW5nIEFVVE8KKwkgKiBDYXRjaCB1c2VyIGV4cGxpY2l0bHkgcnVu bmluZyBPV05FRCBCWSBvbiBpZGVudGl0eSBzZXF1ZW5jZS4KKwkgKi8KKwlp ZiAoZGVwdHlwZSA9PSBERVBFTkRFTkNZX0FVVE8pCisJeworCQlPaWQJCQl0 YWJsZUlkOworCQlpbnQzMgkJY29sSWQ7CisKKwkJaWYgKHNlcXVlbmNlSXNP d25lZChSZWxhdGlvbkdldFJlbGlkKHNlcXJlbCksIERFUEVOREVOQ1lfSU5U RVJOQUwsICZ0YWJsZUlkLCAmY29sSWQpKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIG93bmVyc2hpcCBvZiBp ZGVudGl0eSBzZXF1ZW5jZSIpLAorCQkJCQkgZXJyZGV0YWlsKCJTZXF1ZW5j ZSBcIiVzXCIgaXMgbGlua2VkIHRvIHRhYmxlIFwiJXNcIi4iLAorCQkJCQkJ CSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHNlcXJlbCksCisJCQkJCQkJ ICAgZ2V0X3JlbF9uYW1lKHRhYmxlSWQpKSkpOworCX0KKworCS8qCisJICog T0ssIHdlIGFyZSByZWFkeSB0byB1cGRhdGUgcGdfZGVwZW5kLiAgRmlyc3Qg cmVtb3ZlIGFueSBleGlzdGluZwogCSAqIGRlcGVuZGVuY2llcyBmb3IgdGhl IHNlcXVlbmNlLCB0aGVuIG9wdGlvbmFsbHkgYWRkIGEgbmV3IG9uZS4KIAkg Ki8KLQltYXJrU2VxdWVuY2VVbm93bmVkKFJlbGF0aW9uR2V0UmVsaWQoc2Vx cmVsKSk7CisJZGVsZXRlRGVwZW5kZW5jeVJlY29yZHNGb3JDbGFzcyhSZWxh dGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQoc2VxcmVsKSwKKwkJ CQkJCQkJCVJlbGF0aW9uUmVsYXRpb25JZCwgZGVwdHlwZSk7CiAKIAlpZiAo dGFibGVyZWwpCiAJewpAQCAtMTY0Myw3ICsxNjkxLDcgQEAgcHJvY2Vzc19v d25lZF9ieShSZWxhdGlvbiBzZXFyZWwsIExpc3QgKm93bmVkX2J5KQogCQlk ZXBvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKIAkJZGVw b2JqZWN0Lm9iamVjdElkID0gUmVsYXRpb25HZXRSZWxpZChzZXFyZWwpOwog CQlkZXBvYmplY3Qub2JqZWN0U3ViSWQgPSAwOwotCQlyZWNvcmREZXBlbmRl bmN5T24oJmRlcG9iamVjdCwgJnJlZm9iamVjdCwgREVQRU5ERU5DWV9BVVRP KTsKKwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZkZXBvYmplY3QsICZyZWZvYmpl Y3QsIGRlcHR5cGUpOwogCX0KIAogCS8qIERvbmUsIGJ1dCBob2xkIGxvY2sg dW50aWwgY29tbWl0ICovCkBAIC0xNjUzLDYgKzE3MDEsMzMgQEAgcHJvY2Vz c19vd25lZF9ieShSZWxhdGlvbiBzZXFyZWwsIExpc3QgKm93bmVkX2J5KQog CiAKIC8qCisgKiBSZXR1cm4gc2VxdWVuY2UgcGFyYW1ldGVycyBpbiBhIGxp c3Qgb2YgdGhlIGZvcm0gY3JlYXRlZCBieSB0aGUgcGFyc2VyLgorICovCitM aXN0ICoKK3NlcXVlbmNlX29wdGlvbnMoT2lkIHJlbGlkKQoreworCUhlYXBU dXBsZQlwZ3N0dXBsZTsKKwlGb3JtX3BnX3NlcXVlbmNlIHBnc2Zvcm07CisJ TGlzdAkgICAqb3B0aW9ucyA9IE5JTDsKKworCXBnc3R1cGxlID0gU2VhcmNo U3lzQ2FjaGUxKFNFUVJFTElELCByZWxpZCk7CisJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKHBnc3R1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHNlcXVlbmNlICV1IiwgcmVsaWQpOworCXBnc2Zvcm0g PSAoRm9ybV9wZ19zZXF1ZW5jZSkgR0VUU1RSVUNUKHBnc3R1cGxlKTsKKwor CW9wdGlvbnMgPSBsYXBwZW5kKG9wdGlvbnMsIG1ha2VEZWZFbGVtKCJjYWNo ZSIsIChOb2RlICopIG1ha2VJbnRlZ2VyKHBnc2Zvcm0tPnNlcWNhY2hlKSwg LTEpKTsKKwlvcHRpb25zID0gbGFwcGVuZChvcHRpb25zLCBtYWtlRGVmRWxl bSgiY3ljbGUiLCAoTm9kZSAqKSBtYWtlSW50ZWdlcihwZ3Nmb3JtLT5zZXFj eWNsZSksIC0xKSk7CisJb3B0aW9ucyA9IGxhcHBlbmQob3B0aW9ucywgbWFr ZURlZkVsZW0oImluY3JlbWVudCIsIChOb2RlICopIG1ha2VJbnRlZ2VyKHBn c2Zvcm0tPnNlcWluY3JlbWVudCksIC0xKSk7CisJb3B0aW9ucyA9IGxhcHBl bmQob3B0aW9ucywgbWFrZURlZkVsZW0oIm1heHZhbHVlIiwgKE5vZGUgKikg bWFrZUludGVnZXIocGdzZm9ybS0+c2VxbWF4KSwgLTEpKTsKKwlvcHRpb25z ID0gbGFwcGVuZChvcHRpb25zLCBtYWtlRGVmRWxlbSgibWludmFsdWUiLCAo Tm9kZSAqKSBtYWtlSW50ZWdlcihwZ3Nmb3JtLT5zZXFtaW4pLCAtMSkpOwor CW9wdGlvbnMgPSBsYXBwZW5kKG9wdGlvbnMsIG1ha2VEZWZFbGVtKCJzdGFy dCIsIChOb2RlICopIG1ha2VJbnRlZ2VyKHBnc2Zvcm0tPnNlcXN0YXJ0KSwg LTEpKTsKKworCVJlbGVhc2VTeXNDYWNoZShwZ3N0dXBsZSk7CisKKwlyZXR1 cm4gb3B0aW9uczsKK30KKworLyoKICAqIFJldHVybiBzZXF1ZW5jZSBwYXJh bWV0ZXJzIChmb3JtZXJseSBmb3IgdXNlIGJ5IGluZm9ybWF0aW9uIHNjaGVt YSkKICAqLwogRGF0dW0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKaW5kZXggODYzMjllNWY5Zi4uNTIzMTFkZjY1NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTM2MSw2ICszNjEs MTEgQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjU2V0Tm90TnVsbChB bHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkgY29u c3QgY2hhciAqY29sTmFtZSwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGlj IE9iamVjdEFkZHJlc3MgQVRFeGVjQ29sdW1uRGVmYXVsdChSZWxhdGlvbiBy ZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJCQkJCU5vZGUgKm5ld0RlZmF1 bHQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKK3N0YXRpYyBPYmplY3RBZGRyZXNz IEFURXhlY0FkZElkZW50aXR5KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAq Y29sTmFtZSwKKwkJCQkJTm9kZSAqZGVmLCBMT0NLTU9ERSBsb2NrbW9kZSk7 CitzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNTZXRJZGVudGl0eShSZWxh dGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCisJCQkJCU5vZGUgKmRl ZiwgTE9DS01PREUgbG9ja21vZGUpOworc3RhdGljIE9iamVjdEFkZHJlc3Mg QVRFeGVjRHJvcElkZW50aXR5KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAq Y29sTmFtZSwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIHZvaWQgQVRQ cmVwU2V0U3RhdGlzdGljcyhSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNv bE5hbWUsCiAJCQkJCU5vZGUgKm5ld1ZhbHVlLCBMT0NLTU9ERSBsb2NrbW9k ZSk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNTZXRTdGF0aXN0aWNz KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKQEAgLTY5Niw2 ICs3MDEsOSBAQCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBj aGFyIHJlbGtpbmQsIE9pZCBvd25lcklkLAogCQkJY29va2VkRGVmYXVsdHMg PSBsYXBwZW5kKGNvb2tlZERlZmF1bHRzLCBjb29rZWQpOwogCQkJZGVzY3Jp cHRvci0+YXR0cnNbYXR0bnVtIC0gMV0tPmF0dGhhc2RlZiA9IHRydWU7CiAJ CX0KKworCQlpZiAoY29sRGVmLT5pZGVudGl0eSkKKwkJCWRlc2NyaXB0b3It PmF0dHJzW2F0dG51bSAtIDFdLT5hdHRpZGVudGl0eSA9IGNvbERlZi0+aWRl bnRpdHk7CiAJfQogCiAJLyoKQEAgLTEyODEsNyArMTI4OSw3IEBAIEV4ZWN1 dGVUcnVuY2F0ZShUcnVuY2F0ZVN0bXQgKnN0bXQpCiAJCWZvcmVhY2goY2Vs bCwgcmVscykKIAkJewogCQkJUmVsYXRpb24JcmVsID0gKFJlbGF0aW9uKSBs Zmlyc3QoY2VsbCk7Ci0JCQlMaXN0CSAgICpzZXFsaXN0ID0gZ2V0T3duZWRT ZXF1ZW5jZXMoUmVsYXRpb25HZXRSZWxpZChyZWwpKTsKKwkJCUxpc3QJICAg KnNlcWxpc3QgPSBnZXRPd25lZFNlcXVlbmNlcyhSZWxhdGlvbkdldFJlbGlk KHJlbCksIDApOwogCQkJTGlzdENlbGwgICAqc2VxY2VsbDsKIAogCQkJZm9y ZWFjaChzZXFjZWxsLCBzZXFsaXN0KQpAQCAtMjA3OCw2ICsyMDg2LDEyIEBA IE1lcmdlQXR0cmlidXRlcyhMaXN0ICpzY2hlbWEsIExpc3QgKnN1cGVycywg Y2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCQkJCSAgIGdldF9jb2xsYXRp b25fbmFtZShkZWZjb2xsaWQpLAogCQkJCQkJCQkJICAgZ2V0X2NvbGxhdGlv bl9uYW1lKG5ld2NvbGxpZCkpKSk7CiAKKwkJCQkvKgorCQkJCSAqIElkZW50 aXR5IGlzIG5ldmVyIGluaGVyaXRlZC4gIFRoZSBuZXcgY29sdW1uIGNhbiBo YXZlIGFuCisJCQkJICogaWRlbnRpdHkgZGVmaW5pdGlvbiwgc28gd2UgYWx3 YXlzIGp1c3QgdGFrZSB0aGF0IG9uZS4KKwkJCQkgKi8KKwkJCQlkZWYtPmlk ZW50aXR5ID0gbmV3ZGVmLT5pZGVudGl0eTsKKwogCQkJCS8qIENvcHkgc3Rv cmFnZSBwYXJhbWV0ZXIgKi8KIAkJCQlpZiAoZGVmLT5zdG9yYWdlID09IDAp CiAJCQkJCWRlZi0+c3RvcmFnZSA9IG5ld2RlZi0+c3RvcmFnZTsKQEAgLTMy MTcsNiArMzIzMSw5IEBAIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAq Y21kcykKIAkJCWNhc2UgQVRfRGlzYWJsZVJvd1NlY3VyaXR5OgogCQkJY2Fz ZSBBVF9Gb3JjZVJvd1NlY3VyaXR5OgogCQkJY2FzZSBBVF9Ob0ZvcmNlUm93 U2VjdXJpdHk6CisJCQljYXNlIEFUX0FkZElkZW50aXR5OgorCQkJY2FzZSBB VF9Ecm9wSWRlbnRpdHk6CisJCQljYXNlIEFUX1NldElkZW50aXR5OgogCQkJ CWNtZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CiAJCQkJYnJl YWs7CiAKQEAgLTM0NDcsNiArMzQ2NCwxOCBAQCBBVFByZXBDbWQoTGlzdCAq KndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJ CQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCiAJCQlw YXNzID0gY21kLT5kZWYgPyBBVF9QQVNTX0FERF9DT05TVFIgOiBBVF9QQVNT X0RST1A7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9BZGRJZGVudGl0eToKKwkJ CUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfVklF VyB8IEFUVF9GT1JFSUdOX1RBQkxFKTsKKwkJCXBhc3MgPSBBVF9QQVNTX0FE RF9DT05TVFI7CisJCQlicmVhazsKKwkJY2FzZSBBVF9Ecm9wSWRlbnRpdHk6 CisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKHJlbCwgQVRUX1RBQkxFIHwgQVRU X1ZJRVcgfCBBVFRfRk9SRUlHTl9UQUJMRSk7CisJCQlwYXNzID0gQVRfUEFT U19EUk9QOworCQkJYnJlYWs7CisJCWNhc2UgQVRfU2V0SWRlbnRpdHk6CisJ CQlBVFNpbXBsZVBlcm1pc3Npb25zKHJlbCwgQVRUX1RBQkxFIHwgQVRUX1ZJ RVcgfCBBVFRfRk9SRUlHTl9UQUJMRSk7CisJCQlwYXNzID0gQVRfUEFTU19D T0xfQVRUUlM7CisJCQlicmVhazsKIAkJY2FzZSBBVF9Ecm9wTm90TnVsbDoJ LyogQUxURVIgQ09MVU1OIERST1AgTk9UIE5VTEwgKi8KIAkJCUFUU2ltcGxl UGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfRk9SRUlHTl9UQUJM RSk7CiAJCQlBVFByZXBEcm9wTm90TnVsbChyZWwsIHJlY3Vyc2UsIHJlY3Vy c2luZyk7CkBAIC0zNzcyLDYgKzM4MDEsMTUgQEAgQVRFeGVjQ21kKExpc3Qg Kip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVs LAogCQljYXNlIEFUX0NvbHVtbkRlZmF1bHQ6CS8qIEFMVEVSIENPTFVNTiBE RUZBVUxUICovCiAJCQlhZGRyZXNzID0gQVRFeGVjQ29sdW1uRGVmYXVsdChy ZWwsIGNtZC0+bmFtZSwgY21kLT5kZWYsIGxvY2ttb2RlKTsKIAkJCWJyZWFr OworCQljYXNlIEFUX0FkZElkZW50aXR5OgorCQkJYWRkcmVzcyA9IEFURXhl Y0FkZElkZW50aXR5KHJlbCwgY21kLT5uYW1lLCBjbWQtPmRlZiwgbG9ja21v ZGUpOworCQkJYnJlYWs7CisJCWNhc2UgQVRfU2V0SWRlbnRpdHk6CisJCQlh ZGRyZXNzID0gQVRFeGVjU2V0SWRlbnRpdHkocmVsLCBjbWQtPm5hbWUsIGNt ZC0+ZGVmLCBsb2NrbW9kZSk7CisJCQlicmVhazsKKwkJY2FzZSBBVF9Ecm9w SWRlbnRpdHk6CisJCQlhZGRyZXNzID0gQVRFeGVjRHJvcElkZW50aXR5KHJl bCwgY21kLT5uYW1lLCBsb2NrbW9kZSk7CisJCQlicmVhazsKIAkJY2FzZSBB VF9Ecm9wTm90TnVsbDoJLyogQUxURVIgQ09MVU1OIERST1AgTk9UIE5VTEwg Ki8KIAkJCWFkZHJlc3MgPSBBVEV4ZWNEcm9wTm90TnVsbChyZWwsIGNtZC0+ bmFtZSwgbG9ja21vZGUpOwogCQkJYnJlYWs7CkBAIC01MTIzLDYgKzUxNjEs MTcgQEAgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQllbG9nKEVSUk9SLCAi Y2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVsYXRpb24gJXUiLCBteXJlbGlk KTsKIAlyZWxraW5kID0gKChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QocmVs dHVwKSktPnJlbGtpbmQ7CiAKKwkvKgorCSAqIENhbm5vdCBhZGQgaWRlbnRp dHkgY29sdW1uIGlmIHRhYmxlIGhhcyBjaGlsZHJlbiwgYmVjYXVzZSBpZGVu dGl0eSBkb2VzCisJICogbm90IGluaGVyaXQuICAoQWRkaW5nIGNvbHVtbiBh bmQgaWRlbnRpdHkgc2VwYXJhdGVseSB3aWxsIHdvcmsuKQorCSAqLworCWlm IChjb2xEZWYtPmlkZW50aXR5ICE9IEFUVFJJQlVURV9JREVOVElUWV9OT05F ICYmCisJCXJlY3Vyc2UgJiYKKwkJZmluZF9pbmhlcml0YW5jZV9jaGlsZHJl bihteXJlbGlkLCBOb0xvY2spICE9IE5JTCkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEFCTEVfREVGSU5JVElP TiksCisJCQkJIGVycm1zZygiY2Fubm90IHJlY3Vyc2l2ZWx5IGFkZCBpZGVu dGl0eSBjb2x1bW4gdG8gdGFibGUgdGhhdCBoYXMgY2hpbGQgdGFibGVzIikp KTsKKwogCS8qIHNraXAgaWYgdGhlIG5hbWUgYWxyZWFkeSBleGlzdHMgYW5k IGlmX25vdF9leGlzdHMgaXMgdHJ1ZSAqLwogCWlmICghY2hlY2tfZm9yX2Nv bHVtbl9uYW1lX2NvbGxpc2lvbihyZWwsIGNvbERlZi0+Y29sbmFtZSwgaWZf bm90X2V4aXN0cykpCiAJewpAQCAtNTE3NSw2ICs1MjI0LDcgQEAgQVRFeGVj QWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgUmVsYXRpb24gcmVsLAogCWF0dHJpYnV0ZS5hdHRhbGlnbiA9IHRmb3Jt LT50eXBhbGlnbjsKIAlhdHRyaWJ1dGUuYXR0bm90bnVsbCA9IGNvbERlZi0+ aXNfbm90X251bGw7CiAJYXR0cmlidXRlLmF0dGhhc2RlZiA9IGZhbHNlOwor CWF0dHJpYnV0ZS5hdHRpZGVudGl0eSA9IGNvbERlZi0+aWRlbnRpdHk7CiAJ YXR0cmlidXRlLmF0dGlzZHJvcHBlZCA9IGZhbHNlOwogCWF0dHJpYnV0ZS5h dHRpc2xvY2FsID0gY29sRGVmLT5pc19sb2NhbDsKIAlhdHRyaWJ1dGUuYXR0 aW5oY291bnQgPSBjb2xEZWYtPmluaGNvdW50OwpAQCAtNTQ4MSw2ICs1NTMx LDcgQEAgQVRQcmVwQWRkT2lkcyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBy ZWwsIGJvb2wgcmVjdXJzZSwgQWx0ZXJUYWJsZUNtZCAqY21kLCBMT0MKIAkJ Y2RlZi0+aXNfbG9jYWwgPSB0cnVlOwogCQljZGVmLT5pc19ub3RfbnVsbCA9 IHRydWU7CiAJCWNkZWYtPnN0b3JhZ2UgPSAwOworCQljZGVmLT5pZGVudGl0 eSA9IEFUVFJJQlVURV9JREVOVElUWV9OT05FOwogCQljZGVmLT5sb2NhdGlv biA9IC0xOwogCQljbWQtPmRlZiA9IChOb2RlICopIGNkZWY7CiAJfQpAQCAt NTU0Miw2ICs1NTkzLDEyIEBAIEFURXhlY0Ryb3BOb3ROdWxsKFJlbGF0aW9u IHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwgTE9DS01PREUgbG9ja21vZGUp CiAJCQkJIGVycm1zZygiY2Fubm90IGFsdGVyIHN5c3RlbSBjb2x1bW4gXCIl c1wiIiwKIAkJCQkJCWNvbE5hbWUpKSk7CiAKKwlpZiAoZ2V0X2F0dGlkZW50 aXR5KFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgYXR0bnVtKSAhPSBBVFRSSUJV VEVfSURFTlRJVFlfTk9ORSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiY29s dW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgaXMgYW4gaWRlbnRpdHkg Y29sdW1uIiwKKwkJCQkJCWNvbE5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbCkpKSk7CisKIAkvKgogCSAqIENoZWNrIHRoYXQgdGhlIGF0dHJp YnV0ZSBpcyBub3QgaW4gYSBwcmltYXJ5IGtleQogCSAqCkBAIC01NzU4LDYg KzU4MTUsMTMgQEAgQVRFeGVjQ29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWws IGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJCQkJIGVycm1zZygiY2Fubm90IGFs dGVyIHN5c3RlbSBjb2x1bW4gXCIlc1wiIiwKIAkJCQkJCWNvbE5hbWUpKSk7 CiAKKwlpZiAoZ2V0X2F0dGlkZW50aXR5KFJlbGF0aW9uR2V0UmVsaWQocmVs KSwgYXR0bnVtKSAhPSBBVFRSSUJVVEVfSURFTlRJVFlfTk9ORSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBc IiVzXCIgaXMgYW4gaWRlbnRpdHkgY29sdW1uIiwKKwkJCQkJCWNvbE5hbWUs IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpLAorCQkJCSBuZXdEZWZh dWx0ID8gMCA6IGVycmhpbnQoIlVzZSBBTFRFUiBUQUJMRSAuLi4gQUxURVIg Q09MVU1OIC4uLiBEUk9QIElERU5USVRZIGluc3RlYWQuIikpKTsKKwogCS8q CiAJICogUmVtb3ZlIGFueSBvbGQgZGVmYXVsdCBmb3IgdGhlIGNvbHVtbi4g IFdlIHVzZSBSRVNUUklDVCBoZXJlIGZvcgogCSAqIHNhZmV0eSwgYnV0IGF0 IHByZXNlbnQgd2UgZG8gbm90IGV4cGVjdCBhbnl0aGluZyB0byBkZXBlbmQg b24gdGhlCkBAIC01NzkzLDYgKzU4NTcsMjEyIEBAIEFURXhlY0NvbHVtbkRl ZmF1bHQoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogfQog CiAvKgorICogQUxURVIgVEFCTEUgQUxURVIgQ09MVU1OIEFERCBJREVOVElU WQorICoKKyAqIFJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgYWZmZWN0ZWQg Y29sdW1uLgorICovCitzdGF0aWMgT2JqZWN0QWRkcmVzcworQVRFeGVjQWRk SWRlbnRpdHkoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAor CQkJCSAgTm9kZSAqZGVmLCBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlSZWxh dGlvbglhdHRyZWxhdGlvbjsKKwlIZWFwVHVwbGUJdHVwbGU7CisJRm9ybV9w Z19hdHRyaWJ1dGUgYXR0VHVwOworCUF0dHJOdW1iZXIJYXR0bnVtOworCU9i amVjdEFkZHJlc3MgYWRkcmVzczsKKwlDb2x1bW5EZWYgICpjZGVmID0gY2Fz dE5vZGUoQ29sdW1uRGVmLCBkZWYpOworCisJYXR0cmVsYXRpb24gPSBoZWFw X29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7 CisKKwl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weUF0dE5hbWUoUmVsYXRp b25HZXRSZWxpZChyZWwpLCBjb2xOYW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHVwbGUpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29s dW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3Qi LAorCQkJCQkJY29sTmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSkpKTsKKwlhdHRUdXAgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVD VCh0dXBsZSk7CisJYXR0bnVtID0gYXR0VHVwLT5hdHRudW07CisKKwkvKiBD YW4ndCBhbHRlciBhIHN5c3RlbSBhdHRyaWJ1dGUgKi8KKwlpZiAoYXR0bnVt IDw9IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImNhbm5v dCBhbHRlciBzeXN0ZW0gY29sdW1uIFwiJXNcIiIsCisJCQkJCQljb2xOYW1l KSkpOworCisJLyoKKwkgKiBDcmVhdGluZyBhIGNvbHVtbiBhcyBpZGVudGl0 eSBpbXBsaWVzIE5PVCBOVUxMLCBzbyBhZGRpbmcgdGhlIGlkZW50aXR5CisJ ICogdG8gYW4gZXhpc3RpbmcgY29sdW1uIHRoYXQgaXMgbm90IE5PVCBOVUxM IHdvdWxkIGNyZWF0ZSBhIHN0YXRlIHRoYXQKKwkgKiBjYW5ub3QgYmUgcmVw cm9kdWNlZCB3aXRob3V0IGNvbnRvcnRpb25zLgorCSAqLworCWlmICghYXR0 VHVwLT5hdHRub3RudWxsKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAorCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIl c1wiIG11c3QgYmUgZGVjbGFyZWQgTk9UIE5VTEwgYmVmb3JlIGlkZW50aXR5 IGNhbiBiZSBhZGRlZCIsCisJCQkJCQljb2xOYW1lLCBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSkpOworCisJaWYgKGF0dFR1cC0+YXR0aWRlbnRp dHkgIT0gQVRUUklCVVRFX0lERU5USVRZX05PTkUpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBv ZiByZWxhdGlvbiBcIiVzXCIgaXMgYWxyZWFkeSBhbiBpZGVudGl0eSBjb2x1 bW4iLAorCQkJCQkJY29sTmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSkpKTsKKworCWlmIChhdHRUdXAtPmF0dGhhc2RlZikKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4gXCIl c1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGhhcyBhIGRlZmF1bHQg dmFsdWUiLAorCQkJCQkJY29sTmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsKSkpKTsKKworCWF0dFR1cC0+YXR0aWRlbnRpdHkgPSBjZGVmLT5p ZGVudGl0eTsKKwlDYXRhbG9nVHVwbGVVcGRhdGUoYXR0cmVsYXRpb24sICZ0 dXBsZS0+dF9zZWxmLCB0dXBsZSk7CisKKwlJbnZva2VPYmplY3RQb3N0QWx0 ZXJIb29rKFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkgIFJlbGF0aW9u R2V0UmVsaWQocmVsKSwKKwkJCQkJCQkgIGF0dFR1cC0+YXR0bnVtKTsKKwlP YmplY3RBZGRyZXNzU3ViU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVsYXRpb25J ZCwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsaWQocmVsKSwgYXR0bnVtKTsKKwlo ZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CisKKwloZWFwX2Nsb3NlKGF0dHJlbGF0 aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBhZGRyZXNzOwor fQorCitzdGF0aWMgT2JqZWN0QWRkcmVzcworQVRFeGVjU2V0SWRlbnRpdHko UmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLCBOb2RlICpkZWYs IExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxpc3RDZWxsICAgKm9wdGlvbjsK KwlEZWZFbGVtCSAgICpnZW5lcmF0ZWRFbCA9IE5VTEw7CisJSGVhcFR1cGxl CXR1cGxlOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dFR1cDsKKwlBdHRyTnVt YmVyCWF0dG51bTsKKwlSZWxhdGlvbglhdHRyZWxhdGlvbjsKKwlPYmplY3RB ZGRyZXNzIGFkZHJlc3M7CisKKwlmb3JlYWNoKG9wdGlvbiwgY2FzdE5vZGUo TGlzdCwgZGVmKSkKKwl7CisJCURlZkVsZW0JICAgKmRlZmVsID0gY2FzdE5v ZGUoRGVmRWxlbSwgbGZpcnN0KG9wdGlvbikpOworCisJCWlmIChzdHJjbXAo ZGVmZWwtPmRlZm5hbWUsICJnZW5lcmF0ZWQiKSA9PSAwKQorCQl7CisJCQlp ZiAoZ2VuZXJhdGVkRWwpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2co ImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKKwkJCWdl bmVyYXRlZEVsID0gZGVmZWw7CisJCX0KKwkJZWxzZQorCQkJZWxvZyhFUlJP UiwgIm9wdGlvbiBcIiVzXCIgbm90IHJlY29nbml6ZWQiLAorCQkJCSBkZWZl bC0+ZGVmbmFtZSk7CisJfQorCisJLyoKKwkgKiBFdmVuIGlmIHRoZXJlIGlz IG5vdGhpbmcgdG8gY2hhbmdlIGhlcmUsIHdlIHJ1biBhbGwgdGhlIGNoZWNr cy4gIFRoZXJlCisJICogd2lsbCBiZSBhIHN1YnNlcXVlbnQgQUxURVIgU0VR VUVOQ0UgdGhhdCByZWxpZXMgb24gZXZlcnl0aGluZyBiZWluZworCSAqIHRo ZXJlLgorCSAqLworCisJYXR0cmVsYXRpb24gPSBoZWFwX29wZW4oQXR0cmli dXRlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJdHVwbGUgPSBT ZWFyY2hTeXNDYWNoZUNvcHlBdHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVs KSwgY29sTmFtZSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVG SU5FRF9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2Yg cmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCWNvbE5h bWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisKKwlhdHRU dXAgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVCh0dXBsZSk7CisJ YXR0bnVtID0gYXR0VHVwLT5hdHRudW07CisKKwlpZiAoYXR0bnVtIDw9IDAp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImNhbm5vdCBhbHRl ciBzeXN0ZW0gY29sdW1uIFwiJXNcIiIsCisJCQkJCQljb2xOYW1lKSkpOwor CisJaWYgKGF0dFR1cC0+YXR0aWRlbnRpdHkgPT0gQVRUUklCVVRFX0lERU5U SVRZX05PTkUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJ IGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgaXMg bm90IGFuIGlkZW50aXR5IGNvbHVtbiIsCisJCQkJCQljb2xOYW1lLCBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCisJaWYgKGdlbmVyYXRl ZEVsKQorCXsKKwkJYXR0VHVwLT5hdHRpZGVudGl0eSA9IGRlZkdldEludDMy KGdlbmVyYXRlZEVsKTsKKwkJQ2F0YWxvZ1R1cGxlVXBkYXRlKGF0dHJlbGF0 aW9uLCAmdHVwbGUtPnRfc2VsZiwgdHVwbGUpOworCisJCUludm9rZU9iamVj dFBvc3RBbHRlckhvb2soUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkg IFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKKwkJCQkJCQkJICBhdHRUdXAtPmF0 dG51bSk7CisJCU9iamVjdEFkZHJlc3NTdWJTZXQoYWRkcmVzcywgUmVsYXRp b25SZWxhdGlvbklkLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsaWQocmVsKSwg YXR0bnVtKTsKKwl9CisKKwloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CisJaGVh cF9jbG9zZShhdHRyZWxhdGlvbiwgUm93RXhjbHVzaXZlTG9jayk7CisKKwly ZXR1cm4gYWRkcmVzczsKK30KKworc3RhdGljIE9iamVjdEFkZHJlc3MKK0FU RXhlY0Ryb3BJZGVudGl0eShSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNv bE5hbWUsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUhlYXBUdXBsZQl0dXBs ZTsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRUdXA7CisJQXR0ck51bWJlcglh dHRudW07CisJUmVsYXRpb24JYXR0cmVsYXRpb247CisJT2JqZWN0QWRkcmVz cyBhZGRyZXNzOworCU9pZAkJCXNlcWlkOworCU9iamVjdEFkZHJlc3Mgc2Vx YWRkcmVzczsKKworCWF0dHJlbGF0aW9uID0gaGVhcF9vcGVuKEF0dHJpYnV0 ZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCXR1cGxlID0gU2Vh cmNoU3lzQ2FjaGVDb3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCks IGNvbE5hbWUpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklO RURfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJl bGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQljb2xOYW1l LCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCisJYXR0VHVw ID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QodHVwbGUpOworCWF0 dG51bSA9IGF0dFR1cC0+YXR0bnVtOworCisJaWYgKGF0dG51bSA8PSAwKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgYWx0ZXIg c3lzdGVtIGNvbHVtbiBcIiVzXCIiLAorCQkJCQkJY29sTmFtZSkpKTsKKwor CWlmIChhdHRUdXAtPmF0dGlkZW50aXR5ID09IEFUVFJJQlVURV9JREVOVElU WV9OT05FKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBl cnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGlzIG5v dCBhbiBpZGVudGl0eSBjb2x1bW4iLAorCQkJCQkJY29sTmFtZSwgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKworCWF0dFR1cC0+YXR0aWRl bnRpdHkgPSBBVFRSSUJVVEVfSURFTlRJVFlfTk9ORTsKKwlDYXRhbG9nVHVw bGVVcGRhdGUoYXR0cmVsYXRpb24sICZ0dXBsZS0+dF9zZWxmLCB0dXBsZSk7 CisKKwlJbnZva2VPYmplY3RQb3N0QWx0ZXJIb29rKFJlbGF0aW9uUmVsYXRp b25JZCwKKwkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKKwkJCQkJ CQkgIGF0dFR1cC0+YXR0bnVtKTsKKwlPYmplY3RBZGRyZXNzU3ViU2V0KGFk ZHJlc3MsIFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCVJlbGF0aW9uR2V0 UmVsaWQocmVsKSwgYXR0bnVtKTsKKwloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7 CisKKwloZWFwX2Nsb3NlKGF0dHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKworCS8qIGRyb3AgdGhlIGludGVybmFsIHNlcXVlbmNlICovCisJc2Vx aWQgPSBnZXRPd25lZFNlcXVlbmNlKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwg YXR0bnVtKTsKKwlkZWxldGVEZXBlbmRlbmN5UmVjb3Jkc0ZvckNsYXNzKFJl bGF0aW9uUmVsYXRpb25JZCwgc2VxaWQsCisJCQkJCQkJCQlSZWxhdGlvblJl bGF0aW9uSWQsIERFUEVOREVOQ1lfSU5URVJOQUwpOworCUNvbW1hbmRDb3Vu dGVySW5jcmVtZW50KCk7CisJc2VxYWRkcmVzcy5jbGFzc0lkID0gUmVsYXRp b25SZWxhdGlvbklkOworCXNlcWFkZHJlc3Mub2JqZWN0SWQgPSBzZXFpZDsK KwlzZXFhZGRyZXNzLm9iamVjdFN1YklkID0gMDsKKwlwZXJmb3JtRGVsZXRp b24oJnNlcWFkZHJlc3MsIERST1BfUkVTVFJJQ1QsIFBFUkZPUk1fREVMRVRJ T05fSU5URVJOQUwpOworCisJcmV0dXJuIGFkZHJlc3M7Cit9CisKKy8qCiAg KiBBTFRFUiBUQUJMRSBBTFRFUiBDT0xVTU4gU0VUIFNUQVRJU1RJQ1MKICAq Lwogc3RhdGljIHZvaWQKQEAgLTk1NDAsNyArOTgxMCw4IEBAIEFURXhlY0No YW5nZU93bmVyKE9pZCByZWxhdGlvbk9pZCwgT2lkIG5ld093bmVySWQsIGJv b2wgcmVjdXJzaW5nLCBMT0NLTU9ERSBsb2NrCiAJCQkJT2lkCQkJdGFibGVJ ZDsKIAkJCQlpbnQzMgkJY29sSWQ7CiAKLQkJCQlpZiAoc2VxdWVuY2VJc093 bmVkKHJlbGF0aW9uT2lkLCAmdGFibGVJZCwgJmNvbElkKSkKKwkJCQlpZiAo c2VxdWVuY2VJc093bmVkKHJlbGF0aW9uT2lkLCBERVBFTkRFTkNZX0FVVE8s ICZ0YWJsZUlkLCAmY29sSWQpIHx8CisJCQkJCXNlcXVlbmNlSXNPd25lZChy ZWxhdGlvbk9pZCwgREVQRU5ERU5DWV9JTlRFUk5BTCwgJnRhYmxlSWQsICZj b2xJZCkpCiAJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkJCSBlcnJt c2coImNhbm5vdCBjaGFuZ2Ugb3duZXIgb2Ygc2VxdWVuY2UgXCIlc1wiIiwK QEAgLTk4MTEsNyArMTAwODIsNyBAQCBjaGFuZ2Vfb3duZXJfcmVjdXJzZV90 b19zZXF1ZW5jZXMoT2lkIHJlbGF0aW9uT2lkLCBPaWQgbmV3T3duZXJJZCwg TE9DS01PREUgbG9jawogCQlpZiAoZGVwRm9ybS0+cmVmb2Jqc3ViaWQgPT0g MCB8fAogCQkJZGVwRm9ybS0+Y2xhc3NpZCAhPSBSZWxhdGlvblJlbGF0aW9u SWQgfHwKIAkJCWRlcEZvcm0tPm9ianN1YmlkICE9IDAgfHwKLQkJCWRlcEZv cm0tPmRlcHR5cGUgIT0gREVQRU5ERU5DWV9BVVRPKQorCQkJIShkZXBGb3Jt LT5kZXB0eXBlID09IERFUEVOREVOQ1lfQVVUTyB8fCBkZXBGb3JtLT5kZXB0 eXBlID09IERFUEVOREVOQ1lfSU5URVJOQUwpKQogCQkJY29udGludWU7CiAK IAkJLyogVXNlIHJlbGF0aW9uX29wZW4ganVzdCBpbiBjYXNlIGl0J3MgYW4g aW5kZXggKi8KQEAgLTEyMTE2LDcgKzEyMzg3LDggQEAgQWx0ZXJUYWJsZU5h bWVzcGFjZShBbHRlck9iamVjdFNjaGVtYVN0bXQgKnN0bXQsIE9pZCAqb2xk c2NoZW1hKQogCQlPaWQJCQl0YWJsZUlkOwogCQlpbnQzMgkJY29sSWQ7CiAK LQkJaWYgKHNlcXVlbmNlSXNPd25lZChyZWxpZCwgJnRhYmxlSWQsICZjb2xJ ZCkpCisJCWlmIChzZXF1ZW5jZUlzT3duZWQocmVsaWQsIERFUEVOREVOQ1lf QVVUTywgJnRhYmxlSWQsICZjb2xJZCkgfHwKKwkJCXNlcXVlbmNlSXNPd25l ZChyZWxpZCwgREVQRU5ERU5DWV9JTlRFUk5BTCwgJnRhYmxlSWQsICZjb2xJ ZCkpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiY2Fubm90 IG1vdmUgYW4gb3duZWQgc2VxdWVuY2UgaW50byBhbm90aGVyIHNjaGVtYSIp LApAQCAtMTIyOTksNyArMTI1NzEsNyBAQCBBbHRlckluZGV4TmFtZXNwYWNl cyhSZWxhdGlvbiBjbGFzc1JlbCwgUmVsYXRpb24gcmVsLAogfQogCiAvKgot ICogTW92ZSBhbGwgU0VSSUFMLWNvbHVtbiBzZXF1ZW5jZXMgb2YgdGhlIHNw ZWNpZmllZCByZWxhdGlvbiB0byBhbm90aGVyCisgKiBNb3ZlIGFsbCBpZGVu dGl0eSBhbmQgU0VSSUFMLWNvbHVtbiBzZXF1ZW5jZXMgb2YgdGhlIHNwZWNp ZmllZCByZWxhdGlvbiB0byBhbm90aGVyCiAgKiBuYW1lc3BhY2UuCiAgKgog ICogTm90ZTogd2UgYXNzdW1lIGFkZXF1YXRlIHBlcm1pc3Npb24gY2hlY2tp bmcgd2FzIGRvbmUgYnkgdGhlIGNhbGxlciwKQEAgLTEyMzQzLDcgKzEyNjE1 LDcgQEAgQWx0ZXJTZXFOYW1lc3BhY2VzKFJlbGF0aW9uIGNsYXNzUmVsLCBS ZWxhdGlvbiByZWwsCiAJCWlmIChkZXBGb3JtLT5yZWZvYmpzdWJpZCA9PSAw IHx8CiAJCQlkZXBGb3JtLT5jbGFzc2lkICE9IFJlbGF0aW9uUmVsYXRpb25J ZCB8fAogCQkJZGVwRm9ybS0+b2Jqc3ViaWQgIT0gMCB8fAotCQkJZGVwRm9y bS0+ZGVwdHlwZSAhPSBERVBFTkRFTkNZX0FVVE8pCisJCQkhKGRlcEZvcm0t PmRlcHR5cGUgPT0gREVQRU5ERU5DWV9BVVRPIHx8IGRlcEZvcm0tPmRlcHR5 cGUgPT0gREVQRU5ERU5DWV9JTlRFUk5BTCkpCiAJCQljb250aW51ZTsKIAog CQkvKiBVc2UgcmVsYXRpb25fb3BlbiBqdXN0IGluIGNhc2UgaXQncyBhbiBp bmRleCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1F1YWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNRdWFsLmMKaW5k ZXggOTBiZWY2ZjAxZi4uMzRkZGU4OTU3YSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1F1YWwuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUXVhbC5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL3R1cGNvbnZlcnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL29i amVjdGFjY2Vzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgor I2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3IvZXhlY2RlYnVnLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVN1 YnBsYW4uaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCkBAIC0xODIsNiArMTgz LDggQEAgc3RhdGljIERhdHVtIEV4ZWNFdmFsQXJyYXlDb2VyY2VFeHByKEFy cmF5Q29lcmNlRXhwclN0YXRlICphc3RhdGUsCiAJCQkJCQlib29sICppc051 bGwpOwogc3RhdGljIERhdHVtIEV4ZWNFdmFsQ3VycmVudE9mRXhwcihFeHBy U3RhdGUgKmV4cHJzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAogCQkJ CQkgIGJvb2wgKmlzTnVsbCk7CitzdGF0aWMgRGF0dW0gRXhlY0V2YWxOZXh0 VmFsdWVFeHByKEV4cHJTdGF0ZSAqZXhwcnN0YXRlLCBFeHByQ29udGV4dCAq ZWNvbnRleHQsCisJCQkJCQkJCSAgIGJvb2wgKmlzTnVsbCk7CiBzdGF0aWMg RGF0dW0gRXhlY0V2YWxHcm91cGluZ0Z1bmNFeHByKEdyb3VwaW5nRnVuY0V4 cHJTdGF0ZSAqZ3N0YXRlLAogCQkJCQkJIEV4cHJDb250ZXh0ICplY29udGV4 dCwKIAkJCQkJCSBib29sICppc051bGwpOwpAQCAtNDIxMiw2ICs0MjE1LDIw IEBAIEV4ZWNFdmFsQ3VycmVudE9mRXhwcihFeHByU3RhdGUgKmV4cHJzdGF0 ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAogCiAKIC8qCisgKiBFeGVjRXZh bE5leHRWYWx1ZUV4cHIKKyAqLworc3RhdGljIERhdHVtCitFeGVjRXZhbE5l eHRWYWx1ZUV4cHIoRXhwclN0YXRlICpleHByc3RhdGUsIEV4cHJDb250ZXh0 ICplY29udGV4dCwKKwkJCQkJICBib29sICppc051bGwpCit7CisJTmV4dFZh bHVlRXhwciAqbnZlID0gKE5leHRWYWx1ZUV4cHIgKikgZXhwcnN0YXRlLT5l eHByOworCisJKmlzTnVsbCA9IGZhbHNlOworCXJldHVybiBJbnQ2NEdldERh dHVtKG5leHR2YWxfaW50ZXJuYWwobnZlLT5zZXFpZCwgZmFsc2UpKTsKK30K KworCisvKgogICogRXhlY0V2YWxFeHByU3dpdGNoQ29udGV4dAogICoKICAq IFNhbWUgYXMgRXhlY0V2YWxFeHByLCBidXQgZ2V0IGludG8gdGhlIHJpZ2h0 IGFsbG9jYXRpb24gY29udGV4dCBleHBsaWNpdGx5LgpAQCAtNDk1Myw2ICs0 OTcwLDEwIEBAIEV4ZWNJbml0RXhwcihFeHByICpub2RlLCBQbGFuU3RhdGUg KnBhcmVudCkKIAkJCXN0YXRlID0gbWFrZU5vZGUoRXhwclN0YXRlKTsKIAkJ CXN0YXRlLT5ldmFsZnVuYyA9IEV4ZWNFdmFsQ3VycmVudE9mRXhwcjsKIAkJ CWJyZWFrOworCQljYXNlIFRfTmV4dFZhbHVlRXhwcjoKKwkJCXN0YXRlID0g KEV4cHJTdGF0ZSAqKSBtYWtlTm9kZShFeHByU3RhdGUpOworCQkJc3RhdGUt PmV2YWxmdW5jID0gKEV4cHJTdGF0ZUV2YWxGdW5jKSBFeGVjRXZhbE5leHRW YWx1ZUV4cHI7CisJCQlicmVhazsKIAkJY2FzZSBUX1RhcmdldEVudHJ5Ogog CQkJewogCQkJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkgKikg bm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5j cy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggYzc5 OWUzMTEyYy4uNjc4OWU4NzkxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29w eWZ1bmNzLmMKQEAgLTE5NzgsNiArMTk3OCwyMCBAQCBfY29weUN1cnJlbnRP ZkV4cHIoY29uc3QgQ3VycmVudE9mRXhwciAqZnJvbSkKIAlyZXR1cm4gbmV3 bm9kZTsKIH0KIAorIC8qCisgICogX2NvcHlOZXh0VmFsdWVFeHByCisgICov CitzdGF0aWMgTmV4dFZhbHVlRXhwciAqCitfY29weU5leHRWYWx1ZUV4cHIo Y29uc3QgTmV4dFZhbHVlRXhwciAqZnJvbSkKK3sKKwlOZXh0VmFsdWVFeHBy ICpuZXdub2RlID0gbWFrZU5vZGUoTmV4dFZhbHVlRXhwcik7CisKKwlDT1BZ X1NDQUxBUl9GSUVMRChzZXFpZCk7CisJQ09QWV9TQ0FMQVJfRklFTEQodHlw ZUlkKTsKKworCXJldHVybiBuZXdub2RlOworfQorCiAvKgogICogX2NvcHlJ bmZlcmVuY2VFbGVtCiAgKi8KQEAgLTI3NTAsNiArMjc2NCw3IEBAIF9jb3B5 Q29sdW1uRGVmKGNvbnN0IENvbHVtbkRlZiAqZnJvbSkKIAlDT1BZX1NDQUxB Ul9GSUVMRChzdG9yYWdlKTsKIAlDT1BZX05PREVfRklFTEQocmF3X2RlZmF1 bHQpOwogCUNPUFlfTk9ERV9GSUVMRChjb29rZWRfZGVmYXVsdCk7CisJQ09Q WV9TQ0FMQVJfRklFTEQoaWRlbnRpdHkpOwogCUNPUFlfTk9ERV9GSUVMRChj b2xsQ2xhdXNlKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChjb2xsT2lkKTsKIAlD T1BZX05PREVfRklFTEQoY29uc3RyYWludHMpOwpAQCAtMjc3Miw2ICsyNzg3 LDcgQEAgX2NvcHlDb25zdHJhaW50KGNvbnN0IENvbnN0cmFpbnQgKmZyb20p CiAJQ09QWV9TQ0FMQVJfRklFTEQoaXNfbm9faW5oZXJpdCk7CiAJQ09QWV9O T0RFX0ZJRUxEKHJhd19leHByKTsKIAlDT1BZX1NUUklOR19GSUVMRChjb29r ZWRfZXhwcik7CisJQ09QWV9TQ0FMQVJfRklFTEQoZ2VuZXJhdGVkX3doZW4p OwogCUNPUFlfTk9ERV9GSUVMRChrZXlzKTsKIAlDT1BZX05PREVfRklFTEQo ZXhjbHVzaW9ucyk7CiAJQ09QWV9OT0RFX0ZJRUxEKG9wdGlvbnMpOwpAQCAt Mjg4MCw2ICsyODk2LDcgQEAgX2NvcHlRdWVyeShjb25zdCBRdWVyeSAqZnJv bSkKIAlDT1BZX05PREVfRklFTEQocnRhYmxlKTsKIAlDT1BZX05PREVfRklF TEQoam9pbnRyZWUpOwogCUNPUFlfTk9ERV9GSUVMRCh0YXJnZXRMaXN0KTsK KwlDT1BZX1NDQUxBUl9GSUVMRChvdmVycmlkZSk7CiAJQ09QWV9OT0RFX0ZJ RUxEKG9uQ29uZmxpY3QpOwogCUNPUFlfTk9ERV9GSUVMRChyZXR1cm5pbmdM aXN0KTsKIAlDT1BZX05PREVfRklFTEQoZ3JvdXBDbGF1c2UpOwpAQCAtMjky Myw2ICsyOTQwLDcgQEAgX2NvcHlJbnNlcnRTdG10KGNvbnN0IEluc2VydFN0 bXQgKmZyb20pCiAJQ09QWV9OT0RFX0ZJRUxEKG9uQ29uZmxpY3RDbGF1c2Up OwogCUNPUFlfTk9ERV9GSUVMRChyZXR1cm5pbmdMaXN0KTsKIAlDT1BZX05P REVfRklFTEQod2l0aENsYXVzZSk7CisJQ09QWV9TQ0FMQVJfRklFTEQob3Zl cnJpZGUpOwogCiAJcmV0dXJuIG5ld25vZGU7CiB9CkBAIC00ODU3LDYgKzQ4 NzUsOSBAQCBjb3B5T2JqZWN0KGNvbnN0IHZvaWQgKmZyb20pCiAJCWNhc2Ug VF9DdXJyZW50T2ZFeHByOgogCQkJcmV0dmFsID0gX2NvcHlDdXJyZW50T2ZF eHByKGZyb20pOwogCQkJYnJlYWs7CisJCWNhc2UgVF9OZXh0VmFsdWVFeHBy OgorCQkJcmV0dmFsID0gX2NvcHlOZXh0VmFsdWVFeHByKGZyb20pOworCQkJ YnJlYWs7CiAJCWNhc2UgVF9JbmZlcmVuY2VFbGVtOgogCQkJcmV0dmFsID0g X2NvcHlJbmZlcmVuY2VFbGVtKGZyb20pOwogCQkJYnJlYWs7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggYjIzMGY2NWUwMy4uNzZl ZmFjMmRjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwpA QCAtNzM0LDYgKzczNCwxNSBAQCBfZXF1YWxDdXJyZW50T2ZFeHByKGNvbnN0 IEN1cnJlbnRPZkV4cHIgKmEsIGNvbnN0IEN1cnJlbnRPZkV4cHIgKmIpCiB9 CiAKIHN0YXRpYyBib29sCitfZXF1YWxOZXh0VmFsdWVFeHByKGNvbnN0IE5l eHRWYWx1ZUV4cHIgKmEsIGNvbnN0IE5leHRWYWx1ZUV4cHIgKmIpCit7CisJ Q09NUEFSRV9TQ0FMQVJfRklFTEQoc2VxaWQpOworCUNPTVBBUkVfU0NBTEFS X0ZJRUxEKHR5cGVJZCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj IGJvb2wKIF9lcXVhbEluZmVyZW5jZUVsZW0oY29uc3QgSW5mZXJlbmNlRWxl bSAqYSwgY29uc3QgSW5mZXJlbmNlRWxlbSAqYikKIHsKIAlDT01QQVJFX05P REVfRklFTEQoZXhwcik7CkBAIC05NTQsNiArOTYzLDcgQEAgX2VxdWFsUXVl cnkoY29uc3QgUXVlcnkgKmEsIGNvbnN0IFF1ZXJ5ICpiKQogCUNPTVBBUkVf Tk9ERV9GSUVMRChydGFibGUpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChqb2lu dHJlZSk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHRhcmdldExpc3QpOworCUNP TVBBUkVfU0NBTEFSX0ZJRUxEKG92ZXJyaWRlKTsKIAlDT01QQVJFX05PREVf RklFTEQob25Db25mbGljdCk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHJldHVy bmluZ0xpc3QpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChncm91cENsYXVzZSk7 CkBAIC05OTMsNiArMTAwMyw3IEBAIF9lcXVhbEluc2VydFN0bXQoY29uc3Qg SW5zZXJ0U3RtdCAqYSwgY29uc3QgSW5zZXJ0U3RtdCAqYikKIAlDT01QQVJF X05PREVfRklFTEQob25Db25mbGljdENsYXVzZSk7CiAJQ09NUEFSRV9OT0RF X0ZJRUxEKHJldHVybmluZ0xpc3QpOwogCUNPTVBBUkVfTk9ERV9GSUVMRCh3 aXRoQ2xhdXNlKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChvdmVycmlkZSk7 CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KQEAgLTI0OTgsNiArMjUwOSw3IEBAIF9l cXVhbENvbHVtbkRlZihjb25zdCBDb2x1bW5EZWYgKmEsIGNvbnN0IENvbHVt bkRlZiAqYikKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChzdG9yYWdlKTsKIAlD T01QQVJFX05PREVfRklFTEQocmF3X2RlZmF1bHQpOwogCUNPTVBBUkVfTk9E RV9GSUVMRChjb29rZWRfZGVmYXVsdCk7CisJQ09NUEFSRV9TQ0FMQVJfRklF TEQoaWRlbnRpdHkpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChjb2xsQ2xhdXNl KTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChjb2xsT2lkKTsKIAlDT01QQVJF X05PREVfRklFTEQoY29uc3RyYWludHMpOwpAQCAtMjUxOCw2ICsyNTMwLDcg QEAgX2VxdWFsQ29uc3RyYWludChjb25zdCBDb25zdHJhaW50ICphLCBjb25z dCBDb25zdHJhaW50ICpiKQogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGlzX25v X2luaGVyaXQpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChyYXdfZXhwcik7CiAJ Q09NUEFSRV9TVFJJTkdfRklFTEQoY29va2VkX2V4cHIpOworCUNPTVBBUkVf U0NBTEFSX0ZJRUxEKGdlbmVyYXRlZF93aGVuKTsKIAlDT01QQVJFX05PREVf RklFTEQoa2V5cyk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKGV4Y2x1c2lvbnMp OwogCUNPTVBBUkVfTk9ERV9GSUVMRChvcHRpb25zKTsKQEAgLTMwNjcsNiAr MzA4MCw5IEBAIGVxdWFsKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIp CiAJCWNhc2UgVF9DdXJyZW50T2ZFeHByOgogCQkJcmV0dmFsID0gX2VxdWFs Q3VycmVudE9mRXhwcihhLCBiKTsKIAkJCWJyZWFrOworCQljYXNlIFRfTmV4 dFZhbHVlRXhwcjoKKwkJCXJldHZhbCA9IF9lcXVhbE5leHRWYWx1ZUV4cHIo YSwgYik7CisJCQlicmVhazsKIAkJY2FzZSBUX0luZmVyZW5jZUVsZW06CiAJ CQlyZXR2YWwgPSBfZXF1YWxJbmZlcmVuY2VFbGVtKGEsIGIpOwogCQkJYnJl YWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3Mu YyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IGU4OGQ4 MmYzYjAuLjVhODc3NTMwOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25v ZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2Vm dW5jcy5jCkBAIC0xNSw2ICsxNSw3IEBACiAgKi8KICNpbmNsdWRlICJwb3N0 Z3Jlcy5oIgogCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdHRyaWJ1dGUuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNzLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiZm1nci5oIgpAQCAtNDk3LDYg KzQ5OCw3IEBAIG1ha2VDb2x1bW5EZWYoY29uc3QgY2hhciAqY29sbmFtZSwg T2lkIHR5cGVPaWQsIGludDMyIHR5cG1vZCwgT2lkIGNvbGxPaWQpCiAJbi0+ c3RvcmFnZSA9IDA7CiAJbi0+cmF3X2RlZmF1bHQgPSBOVUxMOwogCW4tPmNv b2tlZF9kZWZhdWx0ID0gTlVMTDsKKwluLT5pZGVudGl0eSA9IEFUVFJJQlVU RV9JREVOVElUWV9OT05FOwogCW4tPmNvbGxDbGF1c2UgPSBOVUxMOwogCW4t PmNvbGxPaWQgPSBjb2xsT2lkOwogCW4tPmNvbnN0cmFpbnRzID0gTklMOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9z cmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCA2ZTUyZWI3MjMx Li4zMTcxNGZkNDY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9u b2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3Mu YwpAQCAtMjQ2LDYgKzI0Niw5IEBAIGV4cHJUeXBlKGNvbnN0IE5vZGUgKmV4 cHIpCiAJCWNhc2UgVF9DdXJyZW50T2ZFeHByOgogCQkJdHlwZSA9IEJPT0xP SUQ7CiAJCQlicmVhazsKKwkJY2FzZSBUX05leHRWYWx1ZUV4cHI6CisJCQl0 eXBlID0gKChjb25zdCBOZXh0VmFsdWVFeHByICopIGV4cHIpLT50eXBlSWQ7 CisJCQlicmVhazsKIAkJY2FzZSBUX0luZmVyZW5jZUVsZW06CiAJCQl7CiAJ CQkJY29uc3QgSW5mZXJlbmNlRWxlbSAqbiA9IChjb25zdCBJbmZlcmVuY2VF bGVtICopIGV4cHI7CkBAIC05MTksNiArOTIyLDkgQEAgZXhwckNvbGxhdGlv bihjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRfQ3VycmVudE9mRXhwcjoK IAkJCWNvbGwgPSBJbnZhbGlkT2lkOwkvKiByZXN1bHQgaXMgYWx3YXlzIGJv b2xlYW4gKi8KIAkJCWJyZWFrOworCQljYXNlIFRfTmV4dFZhbHVlRXhwcjoK KwkJCWNvbGwgPSBJbnZhbGlkT2lkOwkvKiByZXN1bHQgaXMgYWx3YXlzIGFu IGludGVnZXIgdHlwZSAqLworCQkJYnJlYWs7CiAJCWNhc2UgVF9JbmZlcmVu Y2VFbGVtOgogCQkJY29sbCA9IGV4cHJDb2xsYXRpb24oKE5vZGUgKikgKChj b25zdCBJbmZlcmVuY2VFbGVtICopIGV4cHIpLT5leHByKTsKIAkJCWJyZWFr OwpAQCAtMTEyMiw2ICsxMTI4LDkgQEAgZXhwclNldENvbGxhdGlvbihOb2Rl ICpleHByLCBPaWQgY29sbGF0aW9uKQogCQljYXNlIFRfQ3VycmVudE9mRXhw cjoKIAkJCUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsJCS8qIHJl c3VsdCBpcyBhbHdheXMgYm9vbGVhbiAqLwogCQkJYnJlYWs7CisJCWNhc2Ug VF9OZXh0VmFsdWVFeHByOgorCQkJQXNzZXJ0KCFPaWRJc1ZhbGlkKGNvbGxh dGlvbikpOwkJLyogcmVzdWx0IGlzIGFsd2F5cyBhbiBpbnRlZ2VyIHR5cGUg Ki8KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwgKGludCkgbm9kZVRhZyhleHBy KSk7CiAJCQlicmVhazsKQEAgLTE4ODEsNiArMTg5MCw3IEBAIGV4cHJlc3Np b25fdHJlZV93YWxrZXIoTm9kZSAqbm9kZSwKIAkJY2FzZSBUX0Nhc2VUZXN0 RXhwcjoKIAkJY2FzZSBUX1NldFRvRGVmYXVsdDoKIAkJY2FzZSBUX0N1cnJl bnRPZkV4cHI6CisJCWNhc2UgVF9OZXh0VmFsdWVFeHByOgogCQljYXNlIFRf U1FMVmFsdWVGdW5jdGlvbjoKIAkJY2FzZSBUX1JhbmdlVGJsUmVmOgogCQlj YXNlIFRfU29ydEdyb3VwQ2xhdXNlOgpAQCAtMjQ3NSw2ICsyNDg1LDcgQEAg ZXhwcmVzc2lvbl90cmVlX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJY2FzZSBU X0Nhc2VUZXN0RXhwcjoKIAkJY2FzZSBUX1NldFRvRGVmYXVsdDoKIAkJY2Fz ZSBUX0N1cnJlbnRPZkV4cHI6CisJCWNhc2UgVF9OZXh0VmFsdWVFeHByOgog CQljYXNlIFRfU1FMVmFsdWVGdW5jdGlvbjoKIAkJY2FzZSBUX1JhbmdlVGJs UmVmOgogCQljYXNlIFRfU29ydEdyb3VwQ2xhdXNlOgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25v ZGVzL291dGZ1bmNzLmMKaW5kZXggNzQxOGZiZWRlZC4uMWU3Y2YzMjUyZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC0yNjg2LDYgKzI2 ODYsNyBAQCBfb3V0Q29sdW1uRGVmKFN0cmluZ0luZm8gc3RyLCBjb25zdCBD b2x1bW5EZWYgKm5vZGUpCiAJV1JJVEVfQ0hBUl9GSUVMRChzdG9yYWdlKTsK IAlXUklURV9OT0RFX0ZJRUxEKHJhd19kZWZhdWx0KTsKIAlXUklURV9OT0RF X0ZJRUxEKGNvb2tlZF9kZWZhdWx0KTsKKwlXUklURV9DSEFSX0ZJRUxEKGlk ZW50aXR5KTsKIAlXUklURV9OT0RFX0ZJRUxEKGNvbGxDbGF1c2UpOwogCVdS SVRFX09JRF9GSUVMRChjb2xsT2lkKTsKIAlXUklURV9OT0RFX0ZJRUxEKGNv bnN0cmFpbnRzKTsKQEAgLTI3OTEsNiArMjc5Miw3IEBAIF9vdXRRdWVyeShT dHJpbmdJbmZvIHN0ciwgY29uc3QgUXVlcnkgKm5vZGUpCiAJV1JJVEVfTk9E RV9GSUVMRChydGFibGUpOwogCVdSSVRFX05PREVfRklFTEQoam9pbnRyZWUp OwogCVdSSVRFX05PREVfRklFTEQodGFyZ2V0TGlzdCk7CisJV1JJVEVfRU5V TV9GSUVMRChvdmVycmlkZSwgT3ZlcnJpZGluZ0tpbmQpOwogCVdSSVRFX05P REVfRklFTEQob25Db25mbGljdCk7CiAJV1JJVEVfTk9ERV9GSUVMRChyZXR1 cm5pbmdMaXN0KTsKIAlXUklURV9OT0RFX0ZJRUxEKGdyb3VwQ2xhdXNlKTsK QEAgLTMzMjEsNiArMzMyMywxMyBAQCBfb3V0Q29uc3RyYWludChTdHJpbmdJ bmZvIHN0ciwgY29uc3QgQ29uc3RyYWludCAqbm9kZSkKIAkJCVdSSVRFX1NU UklOR19GSUVMRChjb29rZWRfZXhwcik7CiAJCQlicmVhazsKIAorCQljYXNl IENPTlNUUl9JREVOVElUWToKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco c3RyLCAiSURFTlRJVFkiKTsKKwkJCVdSSVRFX05PREVfRklFTEQocmF3X2V4 cHIpOworCQkJV1JJVEVfU1RSSU5HX0ZJRUxEKGNvb2tlZF9leHByKTsKKwkJ CVdSSVRFX0NIQVJfRklFTEQoZ2VuZXJhdGVkX3doZW4pOworCQkJYnJlYWs7 CisKIAkJY2FzZSBDT05TVFJfQ0hFQ0s6CiAJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKHN0ciwgIkNIRUNLIik7CiAJCQlXUklURV9CT09MX0ZJRUxEKGlz X25vX2luaGVyaXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMv cmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpp bmRleCBkM2JiYzAyZjI0Li5mODU5NWI3ZjMyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9u b2Rlcy9yZWFkZnVuY3MuYwpAQCAtMjQ3LDYgKzI0Nyw3IEBAIF9yZWFkUXVl cnkodm9pZCkKIAlSRUFEX05PREVfRklFTEQocnRhYmxlKTsKIAlSRUFEX05P REVfRklFTEQoam9pbnRyZWUpOwogCVJFQURfTk9ERV9GSUVMRCh0YXJnZXRM aXN0KTsKKwlSRUFEX0VOVU1fRklFTEQob3ZlcnJpZGUsIE92ZXJyaWRpbmdL aW5kKTsKIAlSRUFEX05PREVfRklFTEQob25Db25mbGljdCk7CiAJUkVBRF9O T0RFX0ZJRUxEKHJldHVybmluZ0xpc3QpOwogCVJFQURfTk9ERV9GSUVMRChn cm91cENsYXVzZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv YW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRl eCAzNTcxZTUwYWVhLi5lMmJjY2E1MDYxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9hbmFseXplLmMKQEAgLTQ4NCw2ICs0ODQsOCBAQCB0cmFuc2Zvcm1JbnNl cnRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSW5zZXJ0U3RtdCAqc3RtdCkK IAkJcXJ5LT5oYXNNb2RpZnlpbmdDVEUgPSBwc3RhdGUtPnBfaGFzTW9kaWZ5 aW5nQ1RFOwogCX0KIAorCXFyeS0+b3ZlcnJpZGUgPSBzdG10LT5vdmVycmlk ZTsKKwogCWlzT25Db25mbGljdFVwZGF0ZSA9IChzdG10LT5vbkNvbmZsaWN0 Q2xhdXNlICYmCiAJCQkJCQlzdG10LT5vbkNvbmZsaWN0Q2xhdXNlLT5hY3Rp b24gPT0gT05DT05GTElDVF9VUERBVEUpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQppbmRleCBkMGQ0NWE1NTdiLi44NTVmMGQ1ZTQ5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJj YXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2Uu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ19hdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Ry aWdnZXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNs dWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCkBAIC0yOTIsNiArMjkzLDggQEAg c3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJl bG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxu b2RlPglhbHRlcl90YWJsZV9jbWQgYWx0ZXJfdHlwZV9jbWQgb3B0X2NvbGxh dGVfY2xhdXNlCiAJICAgcmVwbGljYV9pZGVudGl0eSBwYXJ0aXRpb25fY21k CiAldHlwZSA8bGlzdD4JYWx0ZXJfdGFibGVfY21kcyBhbHRlcl90eXBlX2Nt ZHMKKyV0eXBlIDxsaXN0PiAgICBhbHRlcl9pZGVudGl0eV9jb2x1bW5fb3B0 aW9uX2xpc3QKKyV0eXBlIDxkZWZlbHQ+ICBhbHRlcl9pZGVudGl0eV9jb2x1 bW5fb3B0aW9uCiAKICV0eXBlIDxkYmVoYXZpb3I+CW9wdF9kcm9wX2JlaGF2 aW9yCiAKQEAgLTQ0OSw3ICs0NTIsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJl Y3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNl cywgTm9kZSAqcXVlcnkpOwogCQkJCXNlbGVjdF9vZmZzZXRfdmFsdWUyIG9w dF9zZWxlY3RfZmV0Y2hfZmlyc3RfdmFsdWUKICV0eXBlIDxpdmFsPglyb3df b3Jfcm93cyBmaXJzdF9vcl9uZXh0CiAKLSV0eXBlIDxsaXN0PglPcHRTZXFP cHRMaXN0IFNlcU9wdExpc3QKKyV0eXBlIDxsaXN0PglPcHRTZXFPcHRMaXN0 IFNlcU9wdExpc3QgT3B0UGFyZW50aGVzaXplZFNlcU9wdExpc3QKICV0eXBl IDxkZWZlbHQ+CVNlcU9wdEVsZW0KIAogJXR5cGUgPGlzdG10PglpbnNlcnRf cmVzdApAQCAtNTY5LDYgKzU3Miw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2Vz LCBOb2RlICpxdWVyeSk7CiAJCQkJb3B0X2ZyYW1lX2NsYXVzZSBmcmFtZV9l eHRlbnQgZnJhbWVfYm91bmQKICV0eXBlIDxzdHI+CQlvcHRfZXhpc3Rpbmdf d2luZG93X25hbWUKICV0eXBlIDxib29sZWFuPiBvcHRfaWZfbm90X2V4aXN0 cworJXR5cGUgPGl2YWw+CWdlbmVyYXRlZF93aGVuIG92ZXJyaWRlX2tpbmQK ICV0eXBlIDxwYXJ0c3BlYz4JUGFydGl0aW9uU3BlYyBPcHRQYXJ0aXRpb25T cGVjCiAldHlwZSA8c3RyPgkJCXBhcnRfc3RyYXRlZ3kKICV0eXBlIDxwYXJ0 ZWxlbT4JcGFydF9lbGVtCkBAIC02MzEsNyArNjM1LDcgQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExp c3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlGQUxTRV9QIEZBTUlMWSBG RVRDSCBGSUxURVIgRklSU1RfUCBGTE9BVF9QIEZPTExPV0lORyBGT1IKIAlG T1JDRSBGT1JFSUdOIEZPUldBUkQgRlJFRVpFIEZST00gRlVMTCBGVU5DVElP TiBGVU5DVElPTlMKIAotCUdMT0JBTCBHUkFOVCBHUkFOVEVEIEdSRUFURVNU IEdST1VQX1AgR1JPVVBJTkcKKwlHRU5FUkFURUQgR0xPQkFMIEdSQU5UIEdS QU5URUQgR1JFQVRFU1QgR1JPVVBfUCBHUk9VUElORwogCiAJSEFORExFUiBI QVZJTkcgSEVBREVSX1AgSE9MRCBIT1VSX1AKIApAQCAtNjU1LDcgKzY1OSw3 IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJTlVM TFNfUCBOVU1FUklDCiAKIAlPQkpFQ1RfUCBPRiBPRkYgT0ZGU0VUIE9JRFMg T0xEIE9OIE9OTFkgT1BFUkFUT1IgT1BUSU9OIE9QVElPTlMgT1IKLQlPUkRF UiBPUkRJTkFMSVRZIE9VVF9QIE9VVEVSX1AgT1ZFUiBPVkVSTEFQUyBPVkVS TEFZIE9XTkVEIE9XTkVSCisJT1JERVIgT1JESU5BTElUWSBPVVRfUCBPVVRF Ul9QIE9WRVIgT1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9X TkVSCiAKIAlQQVJBTExFTCBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFT U0lORyBQQVNTV09SRCBQTEFDSU5HIFBMQU5TIFBPTElDWQogCVBPU0lUSU9O IFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJF RCBQUklNQVJZCkBAIC03MjYsNiArNzMwLDcgQEAgc3RhdGljIE5vZGUgKm1h a2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICAqIHNhbWUgYXMgaWYgdGhleSB3ZXJl bid0IGtleXdvcmRzKS4gIFdlIG5lZWQgdG8gZG8gdGhpcyBmb3IgUEFSVElU SU9OLAogICogUkFOR0UsIFJPV1MgdG8gc3VwcG9ydCBvcHRfZXhpc3Rpbmdf d2luZG93X25hbWU7IGFuZCBmb3IgUkFOR0UsIFJPV1MKICAqIHNvIHRoYXQg dGhleSBjYW4gZm9sbG93IGFfZXhwciB3aXRob3V0IGNyZWF0aW5nIHBvc3Rm aXgtb3BlcmF0b3IgcHJvYmxlbXM7CisgKiBmb3IgR0VORVJBVEVEIHNvIHRo YXQgaXQgY2FuIGZvbGxvdyBiX2V4cHI7CiAgKiBhbmQgZm9yIE5VTEwgc28g dGhhdCBpdCBjYW4gZm9sbG93IGJfZXhwciBpbiBDb2xRdWFsTGlzdCB3aXRo b3V0IGNyZWF0aW5nCiAgKiBwb3N0Zml4LW9wZXJhdG9yIHByb2JsZW1zLgog ICoKQEAgLTc0NCw3ICs3NDksNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywg Tm9kZSAqcXVlcnkpOwogICogYmxhbWUgYW55IGZ1bm55IGJlaGF2aW9yIG9m IFVOQk9VTkRFRCBvbiB0aGUgU1FMIHN0YW5kYXJkLCB0aG91Z2guCiAgKi8K ICVub25hc3NvYwlVTkJPVU5ERUQJCS8qIGlkZWFsbHkgc2hvdWxkIGhhdmUg c2FtZSBwcmVjZWRlbmNlIGFzIElERU5UICovCi0lbm9uYXNzb2MJSURFTlQg TlVMTF9QIFBBUlRJVElPTiBSQU5HRSBST1dTIFBSRUNFRElORyBGT0xMT1dJ TkcgQ1VCRSBST0xMVVAKKyVub25hc3NvYwlJREVOVCBHRU5FUkFURUQgTlVM TF9QIFBBUlRJVElPTiBSQU5HRSBST1dTIFBSRUNFRElORyBGT0xMT1dJTkcg Q1VCRSBST0xMVVAKICVsZWZ0CQlPcCBPUEVSQVRPUgkJLyogbXVsdGktY2hh cmFjdGVyIG9wcyBhbmQgdXNlci1kZWZpbmVkIG9wZXJhdG9ycyAqLwogJWxl ZnQJCScrJyAnLScKICVsZWZ0CQknKicgJy8nICclJwpAQCAtMjEyNiw2ICsy MTMxLDQwIEBAIGFsdGVyX3RhYmxlX2NtZDoKIAkJCQkJbi0+ZGVmID0gKE5v ZGUgKikgbWFrZVN0cmluZygkNik7CiAJCQkJCSQkID0gKE5vZGUgKiluOwog CQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBTFRFUiBbQ09MVU1O XSA8Y29sbmFtZT4gQUREIEdFTkVSQVRFRCAuLi4gQVMgSURFTlRJVFkgLi4u ICovCisJCQl8IEFMVEVSIG9wdF9jb2x1bW4gQ29sSWQgQUREX1AgR0VORVJB VEVEIGdlbmVyYXRlZF93aGVuIEFTIElERU5USVRZX1AgT3B0UGFyZW50aGVz aXplZFNlcU9wdExpc3QKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4g PSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJQ29uc3RyYWludCAq YyA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOworCisJCQkJCWMtPmNvbnR5cGUg PSBDT05TVFJfSURFTlRJVFk7CisJCQkJCWMtPmdlbmVyYXRlZF93aGVuID0g JDY7CisJCQkJCWMtPm9wdGlvbnMgPSAkOTsKKwkJCQkJYy0+bG9jYXRpb24g PSBANTsKKworCQkJCQluLT5zdWJ0eXBlID0gQVRfQWRkSWRlbnRpdHk7CisJ CQkJCW4tPm5hbWUgPSAkMzsKKwkJCQkJbi0+ZGVmID0gKE5vZGUgKikgYzsK KworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQkvKiBBTFRFUiBU QUJMRSA8bmFtZT4gQUxURVIgW0NPTFVNTl0gPGNvbG5hbWU+IFNFVCA8c2Vx dWVuY2Ugb3B0aW9ucz4vUkVTRVQgKi8KKwkJCXwgQUxURVIgb3B0X2NvbHVt biBDb2xJZCBhbHRlcl9pZGVudGl0eV9jb2x1bW5fb3B0aW9uX2xpc3QKKwkJ CQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRh YmxlQ21kKTsKKwkJCQkJbi0+c3VidHlwZSA9IEFUX1NldElkZW50aXR5Owor CQkJCQluLT5uYW1lID0gJDM7CisJCQkJCW4tPmRlZiA9IChOb2RlICopICQ0 OworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQkvKiBBTFRFUiBU QUJMRSA8bmFtZT4gQUxURVIgW0NPTFVNTl0gPGNvbG5hbWU+IERST1AgSURF TlRJVFkgKi8KKwkJCXwgQUxURVIgb3B0X2NvbHVtbiBDb2xJZCBEUk9QIElE RU5USVRZX1AKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtl Tm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJbi0+c3VidHlwZSA9IEFUX0Ry b3BJZGVudGl0eTsKKwkJCQkJbi0+bmFtZSA9ICQzOworCQkJCQkkJCA9IChO b2RlICopbjsKKwkJCQl9CiAJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gRFJP UCBbQ09MVU1OXSBJRiBFWElTVFMgPGNvbG5hbWU+IFtSRVNUUklDVHxDQVND QURFXSAqLwogCQkJfCBEUk9QIG9wdF9jb2x1bW4gSUZfUCBFWElTVFMgQ29s SWQgb3B0X2Ryb3BfYmVoYXZpb3IKIAkJCQl7CkBAIC0yNTYzLDYgKzI2MDIs MzkgQEAgcmVsb3B0aW9uX2VsZW06CiAJCQkJfQogCQk7CiAKK2FsdGVyX2lk ZW50aXR5X2NvbHVtbl9vcHRpb25fbGlzdDoKKwkJCWFsdGVyX2lkZW50aXR5 X2NvbHVtbl9vcHRpb24KKwkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0K KwkJCXwgYWx0ZXJfaWRlbnRpdHlfY29sdW1uX29wdGlvbl9saXN0IGFsdGVy X2lkZW50aXR5X2NvbHVtbl9vcHRpb24KKwkJCQl7ICQkID0gbGFwcGVuZCgk MSwgJDIpOyB9CisJCTsKKworYWx0ZXJfaWRlbnRpdHlfY29sdW1uX29wdGlv bjoKKwkJCVJFU1RBUlQKKwkJCQl7CisJCQkJCSQkID0gbWFrZURlZkVsZW0o InJlc3RhcnQiLCBOVUxMLCBAMSk7CisJCQkJfQorCQkJfCBSRVNUQVJUIG9w dF93aXRoIE51bWVyaWNPbmx5CisJCQkJeworCQkJCQkkJCA9IG1ha2VEZWZF bGVtKCJyZXN0YXJ0IiwgKE5vZGUgKikkMywgQDEpOworCQkJCX0KKwkJCXwg U0VUIFNlcU9wdEVsZW0KKwkJCQl7CisJCQkJCWlmIChzdHJjbXAoJDItPmRl Zm5hbWUsICJhcyIpID09IDAgfHwKKwkJCQkJCXN0cmNtcCgkMi0+ZGVmbmFt ZSwgInJlc3RhcnQiKSA9PSAwIHx8CisJCQkJCQlzdHJjbXAoJDItPmRlZm5h bWUsICJvd25lZF9ieSIpID09IDApCisJCQkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJ CQkJCSBlcnJtc2coInNlcXVlbmNlIG9wdGlvbiBcIiVzXCIgbm90IHN1cHBv cnRlZCBoZXJlIiwgJDItPmRlZm5hbWUpLAorCQkJCQkJCQkgcGFyc2VyX2Vy cnBvc2l0aW9uKEAyKSkpOworCQkJCQkkJCA9ICQyOworCQkJCX0KKwkJCXwg U0VUIEdFTkVSQVRFRCBnZW5lcmF0ZWRfd2hlbgorCQkJCXsKKwkJCQkJJCQg PSBtYWtlRGVmRWxlbSgiZ2VuZXJhdGVkIiwgKE5vZGUgKikgbWFrZUludGVn ZXIoJDMpLCBAMSk7CisJCQkJfQorCQk7CisKIEZvclZhbHVlczoKIAkJCS8q IGEgTElTVCBwYXJ0aXRpb24gKi8KIAkJCUZPUiBWQUxVRVMgSU5fUCAnKCcg cGFydGJvdW5kX2RhdHVtX2xpc3QgJyknCkBAIC0zMjEzLDYgKzMyODUsNyBA QCBjb2x1bW5EZWY6CUNvbElkIFR5cGVuYW1lIGNyZWF0ZV9nZW5lcmljX29w dGlvbnMgQ29sUXVhbExpc3QKIAkJCQkJbi0+c3RvcmFnZSA9IDA7CiAJCQkJ CW4tPnJhd19kZWZhdWx0ID0gTlVMTDsKIAkJCQkJbi0+Y29va2VkX2RlZmF1 bHQgPSBOVUxMOworCQkJCQluLT5pZGVudGl0eSA9IEFUVFJJQlVURV9JREVO VElUWV9OT05FOwogCQkJCQluLT5jb2xsT2lkID0gSW52YWxpZE9pZDsKIAkJ CQkJbi0+ZmR3b3B0aW9ucyA9ICQzOwogCQkJCQlTcGxpdENvbFF1YWxMaXN0 KCQ0LCAmbi0+Y29uc3RyYWludHMsICZuLT5jb2xsQ2xhdXNlLApAQCAtMzIz NCw2ICszMzA3LDcgQEAgY29sdW1uT3B0aW9uczoJQ29sSWQgV0lUSCBPUFRJ T05TIENvbFF1YWxMaXN0CiAJCQkJCW4tPnN0b3JhZ2UgPSAwOwogCQkJCQlu LT5yYXdfZGVmYXVsdCA9IE5VTEw7CiAJCQkJCW4tPmNvb2tlZF9kZWZhdWx0 ID0gTlVMTDsKKwkJCQkJbi0+aWRlbnRpdHkgPSBBVFRSSUJVVEVfSURFTlRJ VFlfTk9ORTsKIAkJCQkJbi0+Y29sbE9pZCA9IEludmFsaWRPaWQ7CiAJCQkJ CVNwbGl0Q29sUXVhbExpc3QoJDQsICZuLT5jb25zdHJhaW50cywgJm4tPmNv bGxDbGF1c2UsCiAJCQkJCQkJCQkgeXlzY2FubmVyKTsKQEAgLTMzNDUsNiAr MzQxOSwxNSBAQCBDb2xDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+Y29va2Vk X2V4cHIgPSBOVUxMOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9CisJ CQl8IEdFTkVSQVRFRCBnZW5lcmF0ZWRfd2hlbiBBUyBJREVOVElUWV9QIE9w dFBhcmVudGhlc2l6ZWRTZXFPcHRMaXN0CisJCQkJeworCQkJCQlDb25zdHJh aW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CisJCQkJCW4tPmNvbnR5 cGUgPSBDT05TVFJfSURFTlRJVFk7CisJCQkJCW4tPmdlbmVyYXRlZF93aGVu ID0gJDI7CisJCQkJCW4tPm9wdGlvbnMgPSAkNTsKKwkJCQkJbi0+bG9jYXRp b24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQkJfCBS RUZFUkVOQ0VTIHF1YWxpZmllZF9uYW1lIG9wdF9jb2x1bW5fbGlzdCBrZXlf bWF0Y2gga2V5X2FjdGlvbnMKIAkJCQl7CiAJCQkJCUNvbnN0cmFpbnQgKm4g PSBtYWtlTm9kZShDb25zdHJhaW50KTsKQEAgLTMzNjIsNiArMzQ0NSwxMSBA QCBDb2xDb25zdHJhaW50RWxlbToKIAkJCQl9CiAJCTsKIAorZ2VuZXJhdGVk X3doZW46CisJCQlBTFdBWVMJCQl7ICQkID0gQVRUUklCVVRFX0lERU5USVRZ X0FMV0FZUzsgfQorCQkJfCBCWSBERUZBVUxUCXsgJCQgPSBBVFRSSUJVVEVf SURFTlRJVFlfQllfREVGQVVMVDsgfQorCQk7CisKIC8qCiAgKiBDb25zdHJh aW50QXR0ciByZXByZXNlbnRzIGNvbnN0cmFpbnQgYXR0cmlidXRlcywgd2hp Y2ggd2UgcGFyc2UgYXMgaWYKICAqIHRoZXkgd2VyZSBpbmRlcGVuZGVudCBj b25zdHJhaW50IGNsYXVzZXMsIGluIG9yZGVyIHRvIGF2b2lkIHNoaWZ0L3Jl ZHVjZQpAQCAtMzQyOCw2ICszNTE2LDcgQEAgVGFibGVMaWtlT3B0aW9uTGlz dDoKIFRhYmxlTGlrZU9wdGlvbjoKIAkJCQlERUZBVUxUUwkJCXsgJCQgPSBD UkVBVEVfVEFCTEVfTElLRV9ERUZBVUxUUzsgfQogCQkJCXwgQ09OU1RSQUlO VFMJCXsgJCQgPSBDUkVBVEVfVEFCTEVfTElLRV9DT05TVFJBSU5UUzsgfQor CQkJCXwgSURFTlRJVFlfUAkJeyAkJCA9IENSRUFURV9UQUJMRV9MSUtFX0lE RU5USVRZOyB9CiAJCQkJfCBJTkRFWEVTCQkJeyAkJCA9IENSRUFURV9UQUJM RV9MSUtFX0lOREVYRVM7IH0KIAkJCQl8IFNUT1JBR0UJCQl7ICQkID0gQ1JF QVRFX1RBQkxFX0xJS0VfU1RPUkFHRTsgfQogCQkJCXwgQ09NTUVOVFMJCQl7 ICQkID0gQ1JFQVRFX1RBQkxFX0xJS0VfQ09NTUVOVFM7IH0KQEAgLTM5MzYs NiArNDAyNSwxMCBAQCBPcHRTZXFPcHRMaXN0OiBTZXFPcHRMaXN0CQkJCQkJ CXsgJCQgPSAkMTsgfQogCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBO SUw7IH0KIAkJOwogCitPcHRQYXJlbnRoZXNpemVkU2VxT3B0TGlzdDogJygn IFNlcU9wdExpc3QgJyknCQl7ICQkID0gJDI7IH0KKwkJCXwgLypFTVBUWSov CQkJCQkJCQl7ICQkID0gTklMOyB9CisJCTsKKwogU2VxT3B0TGlzdDogU2Vx T3B0RWxlbQkJCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CiAJCQl8 IFNlcU9wdExpc3QgU2VxT3B0RWxlbQkJCQkJeyAkJCA9IGxhcHBlbmQoJDEs ICQyKTsgfQogCQk7CkBAIC0zOTgwLDYgKzQwNzMsMTEgQEAgU2VxT3B0RWxl bTogQVMgU2ltcGxlVHlwZW5hbWUKIAkJCQl7CiAJCQkJCSQkID0gbWFrZURl ZkVsZW0oIm93bmVkX2J5IiwgKE5vZGUgKikkMywgQDEpOwogCQkJCX0KKwkJ CXwgU0VRVUVOQ0UgTkFNRV9QIGFueV9uYW1lCisJCQkJeworCQkJCQkvKiBu b3QgZG9jdW1lbnRlZCwgb25seSB1c2VkIGJ5IHBnX2R1bXAgKi8KKwkJCQkJ JCQgPSBtYWtlRGVmRWxlbSgic2VxdWVuY2VfbmFtZSIsIChOb2RlICopJDMs IEAxKTsKKwkJCQl9CiAJCQl8IFNUQVJUIG9wdF93aXRoIE51bWVyaWNPbmx5 CiAJCQkJewogCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJzdGFydCIsIChOb2Rl ICopJDMsIEAxKTsKQEAgLTEwMzA5LDEyICsxMDQwNywyNiBAQCBpbnNlcnRf cmVzdDoKIAkJCQkJJCQtPmNvbHMgPSBOSUw7CiAJCQkJCSQkLT5zZWxlY3RT dG10ID0gJDE7CiAJCQkJfQorCQkJfCBPVkVSUklESU5HIG92ZXJyaWRlX2tp bmQgVkFMVUVfUCBTZWxlY3RTdG10CisJCQkJeworCQkJCQkkJCA9IG1ha2VO b2RlKEluc2VydFN0bXQpOworCQkJCQkkJC0+Y29scyA9IE5JTDsKKwkJCQkJ JCQtPm92ZXJyaWRlID0gJDI7CisJCQkJCSQkLT5zZWxlY3RTdG10ID0gJDQ7 CisJCQkJfQogCQkJfCAnKCcgaW5zZXJ0X2NvbHVtbl9saXN0ICcpJyBTZWxl Y3RTdG10CiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKEluc2VydFN0bXQp OwogCQkJCQkkJC0+Y29scyA9ICQyOwogCQkJCQkkJC0+c2VsZWN0U3RtdCA9 ICQ0OwogCQkJCX0KKwkJCXwgJygnIGluc2VydF9jb2x1bW5fbGlzdCAnKScg T1ZFUlJJRElORyBvdmVycmlkZV9raW5kIFZBTFVFX1AgU2VsZWN0U3RtdAor CQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShJbnNlcnRTdG10KTsKKwkJCQkJ JCQtPmNvbHMgPSAkMjsKKwkJCQkJJCQtPm92ZXJyaWRlID0gJDU7CisJCQkJ CSQkLT5zZWxlY3RTdG10ID0gJDc7CisJCQkJfQogCQkJfCBERUZBVUxUIFZB TFVFUwogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShJbnNlcnRTdG10KTsK QEAgLTEwMzIzLDYgKzEwNDM1LDExIEBAIGluc2VydF9yZXN0OgogCQkJCX0K IAkJOwogCitvdmVycmlkZV9raW5kOgorCQkJVVNFUgkJeyAkJCA9IE9WRVJS SURJTkdfVVNFUl9WQUxVRTsgfQorCQkJfCBTWVNURU1fUAl7ICQkID0gT1ZF UlJJRElOR19TWVNURU1fVkFMVUU7IH0KKwkJOworCiBpbnNlcnRfY29sdW1u X2xpc3Q6CiAJCQlpbnNlcnRfY29sdW1uX2l0ZW0KIAkJCQkJeyAkJCA9IGxp c3RfbWFrZTEoJDEpOyB9CkBAIC0xMTY4Niw2ICsxMTgwMyw3IEBAIFRhYmxl RnVuY0VsZW1lbnQ6CUNvbElkIFR5cGVuYW1lIG9wdF9jb2xsYXRlX2NsYXVz ZQogCQkJCQluLT5zdG9yYWdlID0gMDsKIAkJCQkJbi0+cmF3X2RlZmF1bHQg PSBOVUxMOwogCQkJCQluLT5jb29rZWRfZGVmYXVsdCA9IE5VTEw7CisJCQkJ CW4tPmlkZW50aXR5ID0gQVRUUklCVVRFX0lERU5USVRZX05PTkU7CiAJCQkJ CW4tPmNvbGxDbGF1c2UgPSAoQ29sbGF0ZUNsYXVzZSAqKSAkMzsKIAkJCQkJ bi0+Y29sbE9pZCA9IEludmFsaWRPaWQ7CiAJCQkJCW4tPmNvbnN0cmFpbnRz ID0gTklMOwpAQCAtMTQ0OTQsNiArMTQ2MTIsNyBAQCB1bnJlc2VydmVkX2tl eXdvcmQ6CiAJCQl8IEZPUldBUkQKIAkJCXwgRlVOQ1RJT04KIAkJCXwgRlVO Q1RJT05TCisJCQl8IEdFTkVSQVRFRAogCQkJfCBHTE9CQUwKIAkJCXwgR1JB TlRFRAogCQkJfCBIQU5ETEVSCkBAIC0xNDU2Miw2ICsxNDY4MSw3IEBAIHVu cmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgT1BUSU9OUwogCQkJfCBPUkRJTkFM SVRZCiAJCQl8IE9WRVIKKwkJCXwgT1ZFUlJJRElORwogCQkJfCBPV05FRAog CQkJfCBPV05FUgogCQkJfCBQQVJBTExFTApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggNjczMjc2YTlkMy4uNTg1Nzhm YTBkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0 aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNt ZC5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29tbWVudC5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Nl cXVlbmNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgpAQCAtMzU2LDYgKzM1NywxMzAgQEAgdHJhbnNmb3JtQ3Jl YXRlU3RtdChDcmVhdGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0 cmluZykKIAlyZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgdm9pZAorZ2Vu ZXJhdGVTZXJpYWxFeHRyYVN0bXRzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs IENvbHVtbkRlZiAqY29sdW1uLAorCQkJCQkJIE9pZCBzZXF0eXBpZCwgTGlz dCAqc2Vxb3B0aW9ucywgRGVwZW5kZW5jeVR5cGUgZGVwdHlwZSwKKwkJCQkJ CSBjaGFyICoqc25hbWVzcGFjZV9wLCBjaGFyICoqc25hbWVfcCkKK3sKKwlM aXN0Q2VsbCAgICpvcHRpb247CisJRGVmRWxlbQkgICAqbmFtZUVsID0gTlVM TDsKKwlPaWQJCQlzbmFtZXNwYWNlaWQ7CisJY2hhcgkgICAqc25hbWVzcGFj ZTsKKwljaGFyCSAgICpzbmFtZTsKKwlDcmVhdGVTZXFTdG10ICpzZXFzdG10 OworCUFsdGVyU2VxU3RtdCAqYWx0c2Vxc3RtdDsKKwlMaXN0CSAgICphdHRu YW1lbGlzdDsKKworCS8qCisJICogRGV0ZXJtaW5lIG5hbWVzcGFjZSBhbmQg bmFtZSB0byB1c2UgZm9yIHRoZSBzZXF1ZW5jZS4KKwkgKgorCSAqIEZpcnN0 LCBjaGVjayBpZiBhIHNlcXVlbmNlIG5hbWUgd2FzIHBhc3NlZCBpbiBhcyBh biBvcHRpb24uICBUaGlzIGlzCisJICogdXNlZCBieSBwZ19kdW1wLiAgRWxz ZSwgZ2VuZXJhdGUgYSBuYW1lLgorCSAqCisJICogQWx0aG91Z2ggd2UgdXNl IENob29zZVJlbGF0aW9uTmFtZSwgaXQncyBub3QgZ3VhcmFudGVlZCB0aGF0 IHRoZQorCSAqIHNlbGVjdGVkIHNlcXVlbmNlIG5hbWUgd29uJ3QgY29uZmxp Y3Q7IGdpdmVuIHN1ZmZpY2llbnRseSBsb25nCisJICogZmllbGQgbmFtZXMs IHR3byBkaWZmZXJlbnQgc2VyaWFsIGNvbHVtbnMgaW4gdGhlIHNhbWUgdGFi bGUgY291bGQKKwkgKiBiZSBhc3NpZ25lZCB0aGUgc2FtZSBzZXF1ZW5jZSBu YW1lLCBhbmQgd2UnZCBub3Qgbm90aWNlIHNpbmNlIHdlCisJICogYXJlbid0 IGNyZWF0aW5nIHRoZSBzZXF1ZW5jZSBxdWl0ZSB5ZXQuICBJbiBwcmFjdGlj ZSB0aGlzIHNlZW1zCisJICogcXVpdGUgdW5saWtlbHkgdG8gYmUgYSBwcm9i bGVtLCBlc3BlY2lhbGx5IHNpbmNlIGZldyBwZW9wbGUgd291bGQKKwkgKiBu ZWVkIHR3byBzZXJpYWwgY29sdW1ucyBpbiBvbmUgdGFibGUuCisJICovCisK Kwlmb3JlYWNoKG9wdGlvbiwgc2Vxb3B0aW9ucykKKwl7CisJCURlZkVsZW0g ICAgKmRlZmVsID0gY2FzdE5vZGUoRGVmRWxlbSwgbGZpcnN0KG9wdGlvbikp OworCisJCWlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJzZXF1ZW5jZV9u YW1lIikgPT0gMCkKKwkJeworCQkJaWYgKG5hbWVFbCkKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJCQkJIGVycm1zZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9w dGlvbnMiKSkpOworCQkJbmFtZUVsID0gZGVmZWw7CisJCX0KKwl9CisKKwlp ZiAobmFtZUVsKQorCXsKKwkJUmFuZ2VWYXIgKnJ2ID0gbWFrZVJhbmdlVmFy RnJvbU5hbWVMaXN0KGNhc3ROb2RlKExpc3QsIG5hbWVFbC0+YXJnKSk7CisJ CXNuYW1lc3BhY2UgPSBydi0+c2NoZW1hbmFtZTsKKwkJc25hbWUgPSBydi0+ cmVsbmFtZTsKKwkJc2Vxb3B0aW9ucyA9IGxpc3RfZGVsZXRlX3B0cihzZXFv cHRpb25zLCBuYW1lRWwpOworCX0KKwllbHNlCisJeworCQlpZiAoY3h0LT5y ZWwpCisJCQlzbmFtZXNwYWNlaWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShj eHQtPnJlbCk7CisJCWVsc2UKKwkJeworCQkJc25hbWVzcGFjZWlkID0gUmFu Z2VWYXJHZXRDcmVhdGlvbk5hbWVzcGFjZShjeHQtPnJlbGF0aW9uKTsKKwkJ CVJhbmdlVmFyQWRqdXN0UmVsYXRpb25QZXJzaXN0ZW5jZShjeHQtPnJlbGF0 aW9uLCBzbmFtZXNwYWNlaWQpOworCQl9CisJCXNuYW1lc3BhY2UgPSBnZXRf bmFtZXNwYWNlX25hbWUoc25hbWVzcGFjZWlkKTsKKwkJc25hbWUgPSBDaG9v c2VSZWxhdGlvbk5hbWUoY3h0LT5yZWxhdGlvbi0+cmVsbmFtZSwKKwkJCQkJ CQkJICAgY29sdW1uLT5jb2xuYW1lLAorCQkJCQkJCQkgICAic2VxIiwKKwkJ CQkJCQkJICAgc25hbWVzcGFjZWlkKTsKKwl9CisKKwllcmVwb3J0KERFQlVH MSwKKwkJCShlcnJtc2coIiVzIHdpbGwgY3JlYXRlIGltcGxpY2l0IHNlcXVl bmNlIFwiJXNcIiBmb3Igc2VyaWFsIGNvbHVtbiBcIiVzLiVzXCIiLAorCQkJ CQljeHQtPnN0bXRUeXBlLCBzbmFtZSwKKwkJCQkJY3h0LT5yZWxhdGlvbi0+ cmVsbmFtZSwgY29sdW1uLT5jb2xuYW1lKSkpOworCisJLyoKKwkgKiBCdWls ZCBhIENSRUFURSBTRVFVRU5DRSBjb21tYW5kIHRvIGNyZWF0ZSB0aGUgc2Vx dWVuY2Ugb2JqZWN0LCBhbmQKKwkgKiBhZGQgaXQgdG8gdGhlIGxpc3Qgb2Yg dGhpbmdzIHRvIGJlIGRvbmUgYmVmb3JlIHRoaXMgQ1JFQVRFL0FMVEVSCisJ ICogVEFCTEUuCisJICovCisJc2Vxc3RtdCA9IG1ha2VOb2RlKENyZWF0ZVNl cVN0bXQpOworCXNlcXN0bXQtPnNlcXVlbmNlID0gbWFrZVJhbmdlVmFyKHNu YW1lc3BhY2UsIHNuYW1lLCAtMSk7CisJc2Vxc3RtdC0+b3B0aW9ucyA9IHNl cW9wdGlvbnM7CisJLyoKKwkgKiBJZiBhIHNlcXVlbmNlIGRhdGEgdHlwZSB3 YXMgc3BlY2lmaWVkLCBhZGQgaXQgdG8gdGhlIG9wdGlvbnMuICBQcmVwZW5k CisJICogdG8gdGhlIGxpc3QgcmF0aGVyIHRoYW4gYXBwZW5kOyBpbiBjYXNl IGEgdXNlciBzdXBwbGllZCB0aGVpciBvd24gQVMKKwkgKiBjbGF1c2UsIHRo ZSAicmVkdW5kYW50IG9wdGlvbnMiIGVycm9yIHdpbGwgcG9pbnQgdG8gdGhl aXIgb2NjdXJyZW5jZSwKKwkgKiBub3Qgb3VyIHN5bnRoZXRpYyBvbmUuCisJ ICovCisJaWYgKHNlcXR5cGlkKQorCQlzZXFzdG10LT5vcHRpb25zID0gbGNv bnMobWFrZURlZkVsZW0oImFzIiwgKE5vZGUgKikgbWFrZVR5cGVOYW1lRnJv bU9pZChzZXF0eXBpZCwgLTEpLCAtMSksCisJCQkJCQkJCSBzZXFzdG10LT5v cHRpb25zKTsKKworCS8qCisJICogSWYgdGhpcyBpcyBBTFRFUiBBREQgQ09M VU1OLCBtYWtlIHN1cmUgdGhlIHNlcXVlbmNlIHdpbGwgYmUgb3duZWQKKwkg KiBieSB0aGUgdGFibGUncyBvd25lci4gIFRoZSBjdXJyZW50IHVzZXIgbWln aHQgYmUgc29tZW9uZSBlbHNlCisJICogKHBlcmhhcHMgYSBzdXBlcnVzZXIs IG9yIHNvbWVvbmUgd2hvJ3Mgb25seSBhIG1lbWJlciBvZiB0aGUgb3duaW5n CisJICogcm9sZSksIGJ1dCB0aGUgU0VRVUVOQ0UgT1dORUQgQlkgbWVjaGFu aXNtcyB3aWxsIGJsZWF0IHVubGVzcyB0YWJsZQorCSAqIGFuZCBzZXF1ZW5j ZSBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgb3duaW5nIHJvbGUuCisJICovCisJ aWYgKGN4dC0+cmVsKQorCQlzZXFzdG10LT5vd25lcklkID0gY3h0LT5yZWwt PnJkX3JlbC0+cmVsb3duZXI7CisJZWxzZQorCQlzZXFzdG10LT5vd25lcklk ID0gSW52YWxpZE9pZDsKKworCWN4dC0+Ymxpc3QgPSBsYXBwZW5kKGN4dC0+ Ymxpc3QsIHNlcXN0bXQpOworCisJLyoKKwkgKiBCdWlsZCBhbiBBTFRFUiBT RVFVRU5DRSAuLi4gT1dORUQgQlkgY29tbWFuZCB0byBtYXJrIHRoZSBzZXF1 ZW5jZQorCSAqIGFzIG93bmVkIGJ5IHRoaXMgY29sdW1uLCBhbmQgYWRkIGl0 IHRvIHRoZSBsaXN0IG9mIHRoaW5ncyB0byBiZQorCSAqIGRvbmUgYWZ0ZXIg dGhpcyBDUkVBVEUvQUxURVIgVEFCTEUuCisJICovCisJYWx0c2Vxc3RtdCA9 IG1ha2VOb2RlKEFsdGVyU2VxU3RtdCk7CisJYWx0c2Vxc3RtdC0+c2VxdWVu Y2UgPSBtYWtlUmFuZ2VWYXIoc25hbWVzcGFjZSwgc25hbWUsIC0xKTsKKwlh dHRuYW1lbGlzdCA9IGxpc3RfbWFrZTMobWFrZVN0cmluZyhzbmFtZXNwYWNl KSwKKwkJCQkJCQkgbWFrZVN0cmluZyhjeHQtPnJlbGF0aW9uLT5yZWxuYW1l KSwKKwkJCQkJCQkgbWFrZVN0cmluZyhjb2x1bW4tPmNvbG5hbWUpKTsKKwlh bHRzZXFzdG10LT5vcHRpb25zID0gbGlzdF9tYWtlMihtYWtlRGVmRWxlbSgi b3duZWRfYnkiLAorCQkJCQkJCQkJCQkJIChOb2RlICopIGF0dG5hbWVsaXN0 LCAtMSksCisJCQkJCQkJCQkgbWFrZURlZkVsZW0oImRlcHR5cGUiLAorCQkJ CQkJCQkJCQkJIChOb2RlICopIG1ha2VJbnRlZ2VyKGRlcHR5cGUpLCAtMSkp OworCisJY3h0LT5hbGlzdCA9IGxhcHBlbmQoY3h0LT5hbGlzdCwgYWx0c2Vx c3RtdCk7CisKKwkqc25hbWVzcGFjZV9wID0gc25hbWVzcGFjZTsKKwkqc25h bWVfcCA9IHNuYW1lOworfQorCiAvKgogICogdHJhbnNmb3JtQ29sdW1uRGVm aW5pdGlvbiAtCiAgKgkJdHJhbnNmb3JtIGEgc2luZ2xlIENvbHVtbkRlZiB3 aXRoaW4gQ1JFQVRFIFRBQkxFCkBAIC0zNjcsNyArNDkyLDcgQEAgdHJhbnNm b3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBD b2x1bW5EZWYgKmNvbHVtbikKIAlib29sCQlpc19zZXJpYWw7CiAJYm9vbAkJ c2F3X251bGxhYmxlOwogCWJvb2wJCXNhd19kZWZhdWx0OwotCUNvbnN0cmFp bnQgKmNvbnN0cmFpbnQ7CisJYm9vbAkJc2F3X2lkZW50aXR5OwogCUxpc3RD ZWxsICAgKmNsaXN0OwogCiAJY3h0LT5jb2x1bW5zID0gbGFwcGVuZChjeHQt PmNvbHVtbnMsIGNvbHVtbik7CkBAIC00MjIsODMgKzU0NywxNyBAQCB0cmFu c2Zvcm1Db2x1bW5EZWZpbml0aW9uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs IENvbHVtbkRlZiAqY29sdW1uKQogCS8qIFNwZWNpYWwgYWN0aW9ucyBmb3Ig U0VSSUFMIHBzZXVkby10eXBlcyAqLwogCWlmIChpc19zZXJpYWwpCiAJewot CQlPaWQJCQlzbmFtZXNwYWNlaWQ7CiAJCWNoYXIJICAgKnNuYW1lc3BhY2U7 CiAJCWNoYXIJICAgKnNuYW1lOwogCQljaGFyCSAgICpxc3RyaW5nOwogCQlB X0NvbnN0ICAgICpzbmFtZW5vZGU7CiAJCVR5cGVDYXN0ICAgKmNhc3Rub2Rl OwogCQlGdW5jQ2FsbCAgICpmdW5jY2FsbG5vZGU7Ci0JCUNyZWF0ZVNlcVN0 bXQgKnNlcXN0bXQ7Ci0JCUFsdGVyU2VxU3RtdCAqYWx0c2Vxc3RtdDsKLQkJ TGlzdAkgICAqYXR0bmFtZWxpc3Q7Ci0KLQkJLyoKLQkJICogRGV0ZXJtaW5l IG5hbWVzcGFjZSBhbmQgbmFtZSB0byB1c2UgZm9yIHRoZSBzZXF1ZW5jZS4K LQkJICoKLQkJICogQWx0aG91Z2ggd2UgdXNlIENob29zZVJlbGF0aW9uTmFt ZSwgaXQncyBub3QgZ3VhcmFudGVlZCB0aGF0IHRoZQotCQkgKiBzZWxlY3Rl ZCBzZXF1ZW5jZSBuYW1lIHdvbid0IGNvbmZsaWN0OyBnaXZlbiBzdWZmaWNp ZW50bHkgbG9uZwotCQkgKiBmaWVsZCBuYW1lcywgdHdvIGRpZmZlcmVudCBz ZXJpYWwgY29sdW1ucyBpbiB0aGUgc2FtZSB0YWJsZSBjb3VsZAotCQkgKiBi ZSBhc3NpZ25lZCB0aGUgc2FtZSBzZXF1ZW5jZSBuYW1lLCBhbmQgd2UnZCBu b3Qgbm90aWNlIHNpbmNlIHdlCi0JCSAqIGFyZW4ndCBjcmVhdGluZyB0aGUg c2VxdWVuY2UgcXVpdGUgeWV0LiAgSW4gcHJhY3RpY2UgdGhpcyBzZWVtcwot CQkgKiBxdWl0ZSB1bmxpa2VseSB0byBiZSBhIHByb2JsZW0sIGVzcGVjaWFs bHkgc2luY2UgZmV3IHBlb3BsZSB3b3VsZAotCQkgKiBuZWVkIHR3byBzZXJp YWwgY29sdW1ucyBpbiBvbmUgdGFibGUuCi0JCSAqLwotCQlpZiAoY3h0LT5y ZWwpCi0JCQlzbmFtZXNwYWNlaWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShj eHQtPnJlbCk7Ci0JCWVsc2UKLQkJewotCQkJc25hbWVzcGFjZWlkID0gUmFu Z2VWYXJHZXRDcmVhdGlvbk5hbWVzcGFjZShjeHQtPnJlbGF0aW9uKTsKLQkJ CVJhbmdlVmFyQWRqdXN0UmVsYXRpb25QZXJzaXN0ZW5jZShjeHQtPnJlbGF0 aW9uLCBzbmFtZXNwYWNlaWQpOwotCQl9Ci0JCXNuYW1lc3BhY2UgPSBnZXRf bmFtZXNwYWNlX25hbWUoc25hbWVzcGFjZWlkKTsKLQkJc25hbWUgPSBDaG9v c2VSZWxhdGlvbk5hbWUoY3h0LT5yZWxhdGlvbi0+cmVsbmFtZSwKLQkJCQkJ CQkJICAgY29sdW1uLT5jb2xuYW1lLAotCQkJCQkJCQkgICAic2VxIiwKLQkJ CQkJCQkJICAgc25hbWVzcGFjZWlkKTsKLQotCQllcmVwb3J0KERFQlVHMSwK LQkJCQkoZXJybXNnKCIlcyB3aWxsIGNyZWF0ZSBpbXBsaWNpdCBzZXF1ZW5j ZSBcIiVzXCIgZm9yIHNlcmlhbCBjb2x1bW4gXCIlcy4lc1wiIiwKLQkJCQkJ CWN4dC0+c3RtdFR5cGUsIHNuYW1lLAotCQkJCQkJY3h0LT5yZWxhdGlvbi0+ cmVsbmFtZSwgY29sdW1uLT5jb2xuYW1lKSkpOwotCi0JCS8qCi0JCSAqIEJ1 aWxkIGEgQ1JFQVRFIFNFUVVFTkNFIGNvbW1hbmQgdG8gY3JlYXRlIHRoZSBz ZXF1ZW5jZSBvYmplY3QsIGFuZAotCQkgKiBhZGQgaXQgdG8gdGhlIGxpc3Qg b2YgdGhpbmdzIHRvIGJlIGRvbmUgYmVmb3JlIHRoaXMgQ1JFQVRFL0FMVEVS Ci0JCSAqIFRBQkxFLgotCQkgKi8KLQkJc2Vxc3RtdCA9IG1ha2VOb2RlKENy ZWF0ZVNlcVN0bXQpOwotCQlzZXFzdG10LT5zZXF1ZW5jZSA9IG1ha2VSYW5n ZVZhcihzbmFtZXNwYWNlLCBzbmFtZSwgLTEpOwotCQlzZXFzdG10LT5vcHRp b25zID0gbGlzdF9tYWtlMShtYWtlRGVmRWxlbSgiYXMiLCAoTm9kZSAqKSBt YWtlVHlwZU5hbWVGcm9tT2lkKGNvbHVtbi0+dHlwZU5hbWUtPnR5cGVPaWQs IC0xKSwgLTEpKTsKKwkJQ29uc3RyYWludCAqY29uc3RyYWludDsKIAotCQkv KgotCQkgKiBJZiB0aGlzIGlzIEFMVEVSIEFERCBDT0xVTU4sIG1ha2Ugc3Vy ZSB0aGUgc2VxdWVuY2Ugd2lsbCBiZSBvd25lZAotCQkgKiBieSB0aGUgdGFi bGUncyBvd25lci4gIFRoZSBjdXJyZW50IHVzZXIgbWlnaHQgYmUgc29tZW9u ZSBlbHNlCi0JCSAqIChwZXJoYXBzIGEgc3VwZXJ1c2VyLCBvciBzb21lb25l IHdobydzIG9ubHkgYSBtZW1iZXIgb2YgdGhlIG93bmluZwotCQkgKiByb2xl KSwgYnV0IHRoZSBTRVFVRU5DRSBPV05FRCBCWSBtZWNoYW5pc21zIHdpbGwg YmxlYXQgdW5sZXNzIHRhYmxlCi0JCSAqIGFuZCBzZXF1ZW5jZSBoYXZlIGV4 YWN0bHkgdGhlIHNhbWUgb3duaW5nIHJvbGUuCi0JCSAqLwotCQlpZiAoY3h0 LT5yZWwpCi0JCQlzZXFzdG10LT5vd25lcklkID0gY3h0LT5yZWwtPnJkX3Jl bC0+cmVsb3duZXI7Ci0JCWVsc2UKLQkJCXNlcXN0bXQtPm93bmVySWQgPSBJ bnZhbGlkT2lkOwotCi0JCWN4dC0+Ymxpc3QgPSBsYXBwZW5kKGN4dC0+Ymxp c3QsIHNlcXN0bXQpOwotCi0JCS8qCi0JCSAqIEJ1aWxkIGFuIEFMVEVSIFNF UVVFTkNFIC4uLiBPV05FRCBCWSBjb21tYW5kIHRvIG1hcmsgdGhlIHNlcXVl bmNlCi0JCSAqIGFzIG93bmVkIGJ5IHRoaXMgY29sdW1uLCBhbmQgYWRkIGl0 IHRvIHRoZSBsaXN0IG9mIHRoaW5ncyB0byBiZQotCQkgKiBkb25lIGFmdGVy IHRoaXMgQ1JFQVRFL0FMVEVSIFRBQkxFLgotCQkgKi8KLQkJYWx0c2Vxc3Rt dCA9IG1ha2VOb2RlKEFsdGVyU2VxU3RtdCk7Ci0JCWFsdHNlcXN0bXQtPnNl cXVlbmNlID0gbWFrZVJhbmdlVmFyKHNuYW1lc3BhY2UsIHNuYW1lLCAtMSk7 Ci0JCWF0dG5hbWVsaXN0ID0gbGlzdF9tYWtlMyhtYWtlU3RyaW5nKHNuYW1l c3BhY2UpLAotCQkJCQkJCQkgbWFrZVN0cmluZyhjeHQtPnJlbGF0aW9uLT5y ZWxuYW1lKSwKLQkJCQkJCQkJIG1ha2VTdHJpbmcoY29sdW1uLT5jb2xuYW1l KSk7Ci0JCWFsdHNlcXN0bXQtPm9wdGlvbnMgPSBsaXN0X21ha2UxKG1ha2VE ZWZFbGVtKCJvd25lZF9ieSIsCi0JCQkJCQkJCQkJCQkgIChOb2RlICopIGF0 dG5hbWVsaXN0LCAtMSkpOwotCi0JCWN4dC0+YWxpc3QgPSBsYXBwZW5kKGN4 dC0+YWxpc3QsIGFsdHNlcXN0bXQpOworCQlnZW5lcmF0ZVNlcmlhbEV4dHJh U3RtdHMoY3h0LCBjb2x1bW4sCisJCQkJCQkJCSBjb2x1bW4tPnR5cGVOYW1l LT50eXBlT2lkLCBOSUwsIERFUEVOREVOQ1lfQVVUTywKKwkJCQkJCQkJICZz bmFtZXNwYWNlLCAmc25hbWUpOwogCiAJCS8qCiAJCSAqIENyZWF0ZSBhcHBy b3ByaWF0ZSBjb25zdHJhaW50cyBmb3IgU0VSSUFMLiAgV2UgZG8gdGhpcyBp biBmdWxsLApAQCAtNTQwLDEwICs1OTksMTEgQEAgdHJhbnNmb3JtQ29sdW1u RGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYg KmNvbHVtbikKIAogCXNhd19udWxsYWJsZSA9IGZhbHNlOwogCXNhd19kZWZh dWx0ID0gZmFsc2U7CisJc2F3X2lkZW50aXR5ID0gZmFsc2U7CiAKIAlmb3Jl YWNoKGNsaXN0LCBjb2x1bW4tPmNvbnN0cmFpbnRzKQogCXsKLQkJY29uc3Ry YWludCA9IGNhc3ROb2RlKENvbnN0cmFpbnQsIGxmaXJzdChjbGlzdCkpOwor CQlDb25zdHJhaW50ICpjb25zdHJhaW50ID0gY2FzdE5vZGUoQ29uc3RyYWlu dCwgbGZpcnN0KGNsaXN0KSk7CiAKIAkJc3dpdGNoIChjb25zdHJhaW50LT5j b250eXBlKQogCQl7CkBAIC01ODEsOSArNjQxLDQ0IEBAIHRyYW5zZm9ybUNv bHVtbkRlZmluaXRpb24oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1u RGVmICpjb2x1bW4pCiAJCQkJCQkJCQkJCQljb25zdHJhaW50LT5sb2NhdGlv bikpKTsKIAkJCQljb2x1bW4tPnJhd19kZWZhdWx0ID0gY29uc3RyYWludC0+ cmF3X2V4cHI7CiAJCQkJQXNzZXJ0KGNvbnN0cmFpbnQtPmNvb2tlZF9leHBy ID09IE5VTEwpOworCQkJCWNvbHVtbi0+aWRlbnRpdHkgPSBBVFRSSUJVVEVf SURFTlRJVFlfTk9ORTsKIAkJCQlzYXdfZGVmYXVsdCA9IHRydWU7CiAJCQkJ YnJlYWs7CiAKKwkJCWNhc2UgQ09OU1RSX0lERU5USVRZOgorCQkJeworCQkJ CWNoYXIJICAgKnNuYW1lc3BhY2U7CisJCQkJY2hhcgkgICAqc25hbWU7CisJ CQkJVHlwZQkJY3R5cGU7CisJCQkJT2lkCQkJdHlwZU9pZDsKKworCQkJCWN0 eXBlID0gdHlwZW5hbWVUeXBlKGN4dC0+cHN0YXRlLCBjb2x1bW4tPnR5cGVO YW1lLCBOVUxMKTsKKwkJCQl0eXBlT2lkID0gSGVhcFR1cGxlR2V0T2lkKGN0 eXBlKTsKKwkJCQlSZWxlYXNlU3lzQ2FjaGUoY3R5cGUpOworCisJCQkJaWYg KCEodHlwZU9pZCA9PSBJTlQyT0lEIHx8IHR5cGVPaWQgPT0gSU5UNE9JRCB8 fCB0eXBlT2lkID09IElOVDhPSUQpKQorCQkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAorCQkJCQkJCSBlcnJtc2coImlkZW50aXR5IGNvbHVtbiB0eXBlIG11 c3QgYmUgc21hbGxpbnQsIGludGVnZXIsIG9yIGJpZ2ludCIpKSk7CisKKwkJ CQlpZiAoc2F3X2lkZW50aXR5KQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkg ZXJybXNnKCJtdWx0aXBsZSBpZGVudGl0eSBzcGVjaWZpY2F0aW9ucyBmb3Ig Y29sdW1uIFwiJXNcIiBvZiB0YWJsZSBcIiVzXCIiLAorCQkJCQkJCQkJY29s dW1uLT5jb2xuYW1lLCBjeHQtPnJlbGF0aW9uLT5yZWxuYW1lKSwKKwkJCQkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLAorCQkJCQkJCQkJ CQkJY29uc3RyYWludC0+bG9jYXRpb24pKSk7CisKKwkJCQlnZW5lcmF0ZVNl cmlhbEV4dHJhU3RtdHMoY3h0LCBjb2x1bW4sCisJCQkJCQkJCQkJIHR5cGVP aWQsIGNvbnN0cmFpbnQtPm9wdGlvbnMsIERFUEVOREVOQ1lfSU5URVJOQUws CisJCQkJCQkJCQkJICZzbmFtZXNwYWNlLCAmc25hbWUpOworCisJCQkJY29s dW1uLT5pZGVudGl0eSA9IGNvbnN0cmFpbnQtPmdlbmVyYXRlZF93aGVuOwor CQkJCXNhd19pZGVudGl0eSA9IHRydWU7CisJCQkJY29sdW1uLT5pc19ub3Rf bnVsbCA9IFRSVUU7CisJCQkJYnJlYWs7CisJCQl9CisKIAkJCWNhc2UgQ09O U1RSX0NIRUNLOgogCQkJCWN4dC0+Y2tjb25zdHJhaW50cyA9IGxhcHBlbmQo Y3h0LT5ja2NvbnN0cmFpbnRzLCBjb25zdHJhaW50KTsKIAkJCQlicmVhazsK QEAgLTY2MCw2ICs3NTUsMTQgQEAgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlv bihDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbikK IAkJCQkJIGNvbnN0cmFpbnQtPmNvbnR5cGUpOwogCQkJCWJyZWFrOwogCQl9 CisKKwkJaWYgKHNhd19kZWZhdWx0ICYmIHNhd19pZGVudGl0eSkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VS Uk9SKSwKKwkJCQkJIGVycm1zZygiYm90aCBkZWZhdWx0IGFuZCBpZGVudGl0 eSBzcGVjaWZpZWQgZm9yIGNvbHVtbiBcIiVzXCIgb2YgdGFibGUgXCIlc1wi IiwKKwkJCQkJCQljb2x1bW4tPmNvbG5hbWUsIGN4dC0+cmVsYXRpb24tPnJl bG5hbWUpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRl LAorCQkJCQkJCQkJCWNvbnN0cmFpbnQtPmxvY2F0aW9uKSkpOwogCX0KIAog CS8qCkBAIC04ODksNiArOTkyLDcgQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xh dXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAq dGFibGVfbGlrZV9jbGEKIAkJZGVmLT5zdG9yYWdlID0gMDsKIAkJZGVmLT5y YXdfZGVmYXVsdCA9IE5VTEw7CiAJCWRlZi0+Y29va2VkX2RlZmF1bHQgPSBO VUxMOworCQlkZWYtPmlkZW50aXR5ID0gQVRUUklCVVRFX0lERU5USVRZX05P TkU7CiAJCWRlZi0+Y29sbENsYXVzZSA9IE5VTEw7CiAJCWRlZi0+Y29sbE9p ZCA9IGF0dHJpYnV0ZS0+YXR0Y29sbGF0aW9uOwogCQlkZWYtPmNvbnN0cmFp bnRzID0gTklMOwpAQCAtOTA0LDcgKzEwMDgsNyBAQCB0cmFuc2Zvcm1UYWJs ZUxpa2VDbGF1c2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgVGFibGVMaWtl Q2xhdXNlICp0YWJsZV9saWtlX2NsYQogCQkvKgogCQkgKiBDb3B5IGRlZmF1 bHQsIGlmIHByZXNlbnQgYW5kIHRoZSBkZWZhdWx0IGhhcyBiZWVuIHJlcXVl c3RlZAogCQkgKi8KLQkJaWYgKGF0dHJpYnV0ZS0+YXR0aGFzZGVmICYmCisJ CWlmIChhdHRyaWJ1dGUtPmF0dGhhc2RlZiAmJiBhdHRyaWJ1dGUtPmF0dGlk ZW50aXR5ID09IEFUVFJJQlVURV9JREVOVElUWV9OT05FICYmCiAJCQkodGFi bGVfbGlrZV9jbGF1c2UtPm9wdGlvbnMgJiBDUkVBVEVfVEFCTEVfTElLRV9E RUZBVUxUUykpCiAJCXsKIAkJCU5vZGUJICAgKnRoaXNfZGVmYXVsdCA9IE5V TEw7CkBAIC05MzIsNiArMTAzNiwyOSBAQCB0cmFuc2Zvcm1UYWJsZUxpa2VD bGF1c2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgVGFibGVMaWtlQ2xhdXNl ICp0YWJsZV9saWtlX2NsYQogCQkJZGVmLT5jb29rZWRfZGVmYXVsdCA9IHRo aXNfZGVmYXVsdDsKIAkJfQogCisJCS8qCisJCSAqIENvcHkgaWRlbnRpdHkg aWYgcmVxdWVzdGVkCisJCSAqLworCQlpZiAoYXR0cmlidXRlLT5hdHRpZGVu dGl0eSAhPSBBVFRSSUJVVEVfSURFTlRJVFlfTk9ORSAmJgorCQkJKHRhYmxl X2xpa2VfY2xhdXNlLT5vcHRpb25zICYgQ1JFQVRFX1RBQkxFX0xJS0VfSURF TlRJVFkpKQorCQl7CisJCQlPaWQgICAgICAgICBzZXFfcmVsaWQ7CisJCQlM aXN0CSAgICpzZXFfb3B0aW9uczsKKwkJCWNoYXIJICAgKnNuYW1lc3BhY2U7 CisJCQljaGFyCSAgICpzbmFtZTsKKworCQkJLyoKKwkJCSAqIGZpbmQgc2Vx dWVuY2Ugb3duZWQgYnkgb2xkIGNvbHVtbjsgZXh0cmFjdCBzZXF1ZW5jZSBw YXJhbWV0ZXJzOworCQkJICogYnVpbGQgbmV3IGNyZWF0ZSBzZXF1ZW5jZSBj b21tYW5kCisJCQkgKi8KKwkJCXNlcV9yZWxpZCA9IGdldE93bmVkU2VxdWVu Y2UoUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbiksIGF0dHJpYnV0ZS0+YXR0 bnVtKTsKKwkJCXNlcV9vcHRpb25zID0gc2VxdWVuY2Vfb3B0aW9ucyhzZXFf cmVsaWQpOworCQkJZ2VuZXJhdGVTZXJpYWxFeHRyYVN0bXRzKGN4dCwgZGVm LAorCQkJCQkJCQkJIEludmFsaWRPaWQsIHNlcV9vcHRpb25zLCBERVBFTkRF TkNZX0lOVEVSTkFMLAorCQkJCQkJCQkJICZzbmFtZXNwYWNlLCAmc25hbWUp OworCQkJZGVmLT5pZGVudGl0eSA9IGF0dHJpYnV0ZS0+YXR0aWRlbnRpdHk7 CisJCX0KKwogCQkvKiBMaWtld2lzZSwgY29weSBzdG9yYWdlIGlmIHJlcXVl c3RlZCAqLwogCQlpZiAodGFibGVfbGlrZV9jbGF1c2UtPm9wdGlvbnMgJiBD UkVBVEVfVEFCTEVfTElLRV9TVE9SQUdFKQogCQkJZGVmLT5zdG9yYWdlID0g YXR0cmlidXRlLT5hdHRzdG9yYWdlOwpAQCAtMTEwNiw2ICsxMjMzLDcgQEAg dHJhbnNmb3JtT2ZUeXBlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFR5cGVO YW1lICpvZlR5cGVuYW1lKQogCQluLT5zdG9yYWdlID0gMDsKIAkJbi0+cmF3 X2RlZmF1bHQgPSBOVUxMOwogCQluLT5jb29rZWRfZGVmYXVsdCA9IE5VTEw7 CisJCW4tPmlkZW50aXR5ID0gQVRUUklCVVRFX0lERU5USVRZX05PTkU7CiAJ CW4tPmNvbGxDbGF1c2UgPSBOVUxMOwogCQluLT5jb2xsT2lkID0gYXR0ci0+ YXR0Y29sbGF0aW9uOwogCQluLT5jb25zdHJhaW50cyA9IE5JTDsKQEAgLTI2 MjgsNiArMjc1Niw3IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCBy ZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQljYXNlIEFUX0FsdGVy Q29sdW1uVHlwZToKIAkJCQl7CiAJCQkJCUNvbHVtbkRlZiAgKmRlZiA9IChD b2x1bW5EZWYgKikgY21kLT5kZWY7CisJCQkJCUF0dHJOdW1iZXIJYXR0bnVt OwogCiAJCQkJCS8qCiAJCQkJCSAqIEZvciBBTFRFUiBDT0xVTU4gVFlQRSwg dHJhbnNmb3JtIHRoZSBVU0lORyBjbGF1c2UgaWYKQEAgLTI2NDAsNiArMjc2 OSwxMTAgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBB bHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJCQkJCQkJCQkgIEVYUFJfS0lORF9B TFRFUl9DT0xfVFJBTlNGT1JNKTsKIAkJCQkJfQogCisJCQkJCS8qCisJCQkJ CSAqIEZvciBpZGVudGl0eSBjb2x1bW4sIGNyZWF0ZSBBTFRFUiBTRVFVRU5D RSBjb21tYW5kIHRvCisJCQkJCSAqIGNoYW5nZSB0aGUgZGF0YSB0eXBlIG9m IHRoZSBzZXF1ZW5jZS4KKwkJCQkJICovCisJCQkJCWF0dG51bSA9IGdldF9h dHRudW0ocmVsaWQsIGNtZC0+bmFtZSk7CisJCQkJCS8qIGlmIGF0dHJpYnV0 ZSBub3QgZm91bmQsIHNvbWV0aGluZyB3aWxsIGVycm9yIGFib3V0IGl0IGxh dGVyICovCisJCQkJCWlmIChhdHRudW0gIT0gSW52YWxpZEF0dHJOdW1iZXIg JiYgZ2V0X2F0dGlkZW50aXR5KHJlbGlkLCBhdHRudW0pICE9IEFUVFJJQlVU RV9JREVOVElUWV9OT05FKQorCQkJCQl7CisJCQkJCQlPaWQJCQlzZXFfcmVs aWQgPSBnZXRPd25lZFNlcXVlbmNlKHJlbGlkLCBhdHRudW0pOworCQkJCQkJ T2lkCQkJdHlwZU9pZCA9IHR5cGVuYW1lVHlwZUlkKHBzdGF0ZSwgZGVmLT50 eXBlTmFtZSk7CisJCQkJCQlBbHRlclNlcVN0bXQgKmFsdHNlcXN0bXQgPSBt YWtlTm9kZShBbHRlclNlcVN0bXQpOworCisJCQkJCQlpZiAoISh0eXBlT2lk ID09IElOVDJPSUQgfHwgdHlwZU9pZCA9PSBJTlQ0T0lEIHx8IHR5cGVPaWQg PT0gSU5UOE9JRCkpCisJCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAor CQkJCQkJCQkJIGVycm1zZygiaWRlbnRpdHkgY29sdW1uIHR5cGUgbXVzdCBi ZSBzbWFsbGludCwgaW50ZWdlciwgb3IgYmlnaW50IikpKTsKKworCQkJCQkJ YWx0c2Vxc3RtdC0+c2VxdWVuY2UgPSBtYWtlUmFuZ2VWYXIoZ2V0X25hbWVz cGFjZV9uYW1lKGdldF9yZWxfbmFtZXNwYWNlKHNlcV9yZWxpZCkpLAorCQkJ CQkJCQkJCQkJCQkJZ2V0X3JlbF9uYW1lKHNlcV9yZWxpZCksCisJCQkJCQkJ CQkJCQkJCQktMSk7CisJCQkJCQlhbHRzZXFzdG10LT5vcHRpb25zID0gbGlz dF9tYWtlMShtYWtlRGVmRWxlbSgiYXMiLCAoTm9kZSAqKSBtYWtlVHlwZU5h bWVGcm9tT2lkKHR5cGVPaWQsIC0xKSwgLTEpKTsKKwkJCQkJCWN4dC5ibGlz dCA9IGxhcHBlbmQoY3h0LmJsaXN0LCBhbHRzZXFzdG10KTsKKwkJCQkJfQor CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CisJCQkJ CWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBBVF9BZGRJZGVudGl0eToKKwkJ CQl7CisJCQkJCUNvbnN0cmFpbnQgICpkZWYgPSBjYXN0Tm9kZShDb25zdHJh aW50LCBjbWQtPmRlZik7CisJCQkJCUNvbHVtbkRlZiAqbmV3ZGVmID0gbWFr ZU5vZGUoQ29sdW1uRGVmKTsKKwkJCQkJT2lkCQkJdHlwZU9pZDsKKwkJCQkJ Y2hhcgkgICAqc25hbWVzcGFjZTsKKwkJCQkJY2hhcgkgICAqc25hbWU7CisK KwkJCQkJdHlwZU9pZCA9IGdldF9hdHR0eXBlKHJlbGlkLCBnZXRfYXR0bnVt KHJlbGlkLCBjbWQtPm5hbWUpKTsKKwkJCQkJaWYgKCEodHlwZU9pZCA9PSBJ TlQyT0lEIHx8IHR5cGVPaWQgPT0gSU5UNE9JRCB8fCB0eXBlT2lkID09IElO VDhPSUQpKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkJ CSBlcnJtc2coImlkZW50aXR5IGNvbHVtbiB0eXBlIG11c3QgYmUgc21hbGxp bnQsIGludGVnZXIsIG9yIGJpZ2ludCIpKSk7CisKKwkJCQkJbmV3ZGVmLT5j b2xuYW1lID0gY21kLT5uYW1lOworCQkJCQluZXdkZWYtPmlkZW50aXR5ID0g ZGVmLT5nZW5lcmF0ZWRfd2hlbjsKKwkJCQkJY21kLT5kZWYgPSAoTm9kZSAq KSBuZXdkZWY7CisKKwkJCQkJZ2VuZXJhdGVTZXJpYWxFeHRyYVN0bXRzKCZj eHQsIG5ld2RlZiwKKwkJCQkJCQkJCQkJIHR5cGVPaWQsIGRlZi0+b3B0aW9u cywgREVQRU5ERU5DWV9JTlRFUk5BTCwKKwkJCQkJCQkJCQkJICZzbmFtZXNw YWNlLCAmc25hbWUpOworCisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2Nt ZHMsIGNtZCk7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBBVF9T ZXRJZGVudGl0eToKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIENyZWF0ZSBh biBBTFRFUiBTRVFVRU5DRSBzdGF0ZW1lbnQgZm9yIHRoZSBpbnRlcm5hbAor CQkJCQkgKiBzZXF1ZW5jZSBvZiB0aGUgaWRlbnRpdHkgY29sdW1uLgorCQkJ CQkgKi8KKwkJCQkJTGlzdENlbGwgICAqbGM7CisJCQkJCUxpc3QJICAgKm5l d3NlcW9wdHMgPSBOSUw7CisJCQkJCUxpc3QJICAgKm5ld2RlZiA9IE5JTDsK KwkJCQkJTGlzdAkgICAqc2VxbGlzdDsKKwkJCQkJQXR0ck51bWJlcglhdHRu dW07CisKKwkJCQkJLyoKKwkJCQkJICogU3BsaXQgb3B0aW9ucyBpbnRvIHRo b3NlIGhhbmRsZWQgYnkgQUxURVIgU0VRVUVOQ0UgYW5kCisJCQkJCSAqIHRo b3NlIGZvciBBTFRFUiBUQUJMRSBwcm9wZXIuCisJCQkJCSAqLworCQkJCQlm b3JlYWNoKGxjLCBjYXN0Tm9kZShMaXN0LCBjbWQtPmRlZikpCisJCQkJCXsK KwkJCQkJCURlZkVsZW0JICAgKmRlZiA9IGNhc3ROb2RlKERlZkVsZW0sIGxm aXJzdChsYykpOworCisJCQkJCQlpZiAoc3RyY21wKGRlZi0+ZGVmbmFtZSwg ImdlbmVyYXRlZCIpID09IDApCisJCQkJCQkJbmV3ZGVmID0gbGFwcGVuZChu ZXdkZWYsIGRlZik7CisJCQkJCQllbHNlCisJCQkJCQkJbmV3c2Vxb3B0cyA9 IGxhcHBlbmQobmV3c2Vxb3B0cywgZGVmKTsKKwkJCQkJfQorCisJCQkJCWF0 dG51bSA9IGdldF9hdHRudW0ocmVsaWQsIGNtZC0+bmFtZSk7CisKKwkJCQkJ aWYgKGF0dG51bSkKKwkJCQkJeworCQkJCQkJc2VxbGlzdCA9IGdldE93bmVk U2VxdWVuY2VzKHJlbGlkLCBhdHRudW0pOworCQkJCQkJaWYgKHNlcWxpc3Qp CisJCQkJCQl7CisJCQkJCQkJQWx0ZXJTZXFTdG10ICpzZXFzdG10OworCQkJ CQkJCU9pZAkJCXNlcV9yZWxpZDsKKworCQkJCQkJCXNlcXN0bXQgPSBtYWtl Tm9kZShBbHRlclNlcVN0bXQpOworCQkJCQkJCXNlcV9yZWxpZCA9IGxpbml0 aWFsX29pZChzZXFsaXN0KTsKKwkJCQkJCQlzZXFzdG10LT5zZXF1ZW5jZSA9 IG1ha2VSYW5nZVZhcihnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1l c3BhY2Uoc2VxX3JlbGlkKSksCisJCQkJCQkJCQkJCQkJCQkgZ2V0X3JlbF9u YW1lKHNlcV9yZWxpZCksIC0xKTsKKwkJCQkJCQlzZXFzdG10LT5vcHRpb25z ID0gbmV3c2Vxb3B0czsKKwkJCQkJCQlzZXFzdG10LT5taXNzaW5nX29rID0g ZmFsc2U7CisKKwkJCQkJCQljeHQuYWxpc3QgPSBsYXBwZW5kKGN4dC5hbGlz dCwgc2Vxc3RtdCk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJLyogSWYgY29s dW1uIHdhcyBub3QgZm91bmQgb3Igd2FzIG5vdCBhbiBpZGVudGl0eSBjb2x1 bW4sIHdlCisJCQkJCSAqIGp1c3QgbGV0IHRoZSBBTFRFUiBUQUJMRSBjb21t YW5kIGVycm9yIG91dCBsYXRlci4gKi8KKworCQkJCQljbWQtPmRlZiA9IChO b2RlICopIG5ld2RlZjsKIAkJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21k cywgY21kKTsKIAkJCQkJYnJlYWs7CiAJCQkJfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jIGIvc3JjL2JhY2tl bmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCmluZGV4IDM1NGU1ZDA0NjIu LjM3ODEzMjZlYTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUv cmV3cml0ZUhhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jl d3JpdGVIYW5kbGVyLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJw b3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL3N5c2F0dHIuaCIKKyNp bmNsdWRlICJjYXRhbG9nL2RlcGVuZGVuY3kuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgi CiAjaW5jbHVkZSAiZm9yZWlnbi9mZHdhcGkuaCIKQEAgLTYxLDYgKzYyLDcg QEAgc3RhdGljIFF1ZXJ5ICpyZXdyaXRlUnVsZUFjdGlvbihRdWVyeSAqcGFy c2V0cmVlLAogc3RhdGljIExpc3QgKmFkanVzdEpvaW5UcmVlTGlzdChRdWVy eSAqcGFyc2V0cmVlLCBib29sIHJlbW92ZXJ0LCBpbnQgcnRfaW5kZXgpOwog c3RhdGljIExpc3QgKnJld3JpdGVUYXJnZXRMaXN0SVUoTGlzdCAqdGFyZ2V0 TGlzdCwKIAkJCQkJQ21kVHlwZSBjb21tYW5kVHlwZSwKKwkJCQkJT3ZlcnJp ZGluZ0tpbmQgb3ZlcnJpZGUsCiAJCQkJCVJlbGF0aW9uIHRhcmdldF9yZWxh dGlvbiwKIAkJCQkJaW50IHJlc3VsdF9ydGksCiAJCQkJCUxpc3QgKiphdHRy bm9fbGlzdCk7CkBAIC03MDksNiArNzExLDcgQEAgYWRqdXN0Sm9pblRyZWVM aXN0KFF1ZXJ5ICpwYXJzZXRyZWUsIGJvb2wgcmVtb3ZlcnQsIGludCBydF9p bmRleCkKIHN0YXRpYyBMaXN0ICoKIHJld3JpdGVUYXJnZXRMaXN0SVUoTGlz dCAqdGFyZ2V0TGlzdCwKIAkJCQkJQ21kVHlwZSBjb21tYW5kVHlwZSwKKwkJ CQkJT3ZlcnJpZGluZ0tpbmQgb3ZlcnJpZGUsCiAJCQkJCVJlbGF0aW9uIHRh cmdldF9yZWxhdGlvbiwKIAkJCQkJaW50IHJlc3VsdF9ydGksCiAJCQkJCUxp c3QgKiphdHRybm9fbGlzdCkKQEAgLTc4OSw2ICs3OTIsNyBAQCByZXdyaXRl VGFyZ2V0TGlzdElVKExpc3QgKnRhcmdldExpc3QsCiAJZm9yIChhdHRybm8g PSAxOyBhdHRybm8gPD0gbnVtYXR0cnM7IGF0dHJubysrKQogCXsKIAkJVGFy Z2V0RW50cnkgKm5ld190bGUgPSBuZXdfdGxlc1thdHRybm8gLSAxXTsKKwkJ Ym9vbAlhcHBseV9kZWZhdWx0OwogCiAJCWF0dF90dXAgPSB0YXJnZXRfcmVs YXRpb24tPnJkX2F0dC0+YXR0cnNbYXR0cm5vIC0gMV07CiAKQEAgLTgwMSwx MiArODA1LDUxIEBAIHJld3JpdGVUYXJnZXRMaXN0SVUoTGlzdCAqdGFyZ2V0 TGlzdCwKIAkJICogaXQncyBhbiBJTlNFUlQgYW5kIHRoZXJlJ3Mgbm8gdGxp c3QgZW50cnkgZm9yIHRoZSBjb2x1bW4sIG9yIHRoZQogCQkgKiB0bGlzdCBl bnRyeSBpcyBhIERFRkFVTFQgcGxhY2Vob2xkZXIgbm9kZS4KIAkJICovCi0J CWlmICgobmV3X3RsZSA9PSBOVUxMICYmIGNvbW1hbmRUeXBlID09IENNRF9J TlNFUlQpIHx8Ci0JCQkobmV3X3RsZSAmJiBuZXdfdGxlLT5leHByICYmIElz QShuZXdfdGxlLT5leHByLCBTZXRUb0RlZmF1bHQpKSkKKwkJYXBwbHlfZGVm YXVsdCA9ICgobmV3X3RsZSA9PSBOVUxMICYmIGNvbW1hbmRUeXBlID09IENN RF9JTlNFUlQpIHx8CisJCQkJCQkgKG5ld190bGUgJiYgbmV3X3RsZS0+ZXhw ciAmJiBJc0EobmV3X3RsZS0+ZXhwciwgU2V0VG9EZWZhdWx0KSkpOworCisJ CWlmIChjb21tYW5kVHlwZSA9PSBDTURfSU5TRVJUKQorCQl7CisJCQlpZiAo YXR0X3R1cC0+YXR0aWRlbnRpdHkgPT0gQVRUUklCVVRFX0lERU5USVRZX0FM V0FZUyAmJiAhYXBwbHlfZGVmYXVsdCkKKwkJCXsKKwkJCQlpZiAob3ZlcnJp ZGUgIT0gT1ZFUlJJRElOR19TWVNURU1fVkFMVUUpCisJCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9HRU5FUkFURURfQUxX QVlTKSwKKwkJCQkJCQkgZXJybXNnKCJjYW5ub3QgaW5zZXJ0IGludG8gY29s dW1uIFwiJXNcIiIsIE5hbWVTdHIoYXR0X3R1cC0+YXR0bmFtZSkpLAorCQkJ CQkJCSBlcnJkZXRhaWwoIkNvbHVtbiBcIiVzXCIgaXMgYW4gaWRlbnRpdHkg Y29sdW1uIGRlZmluZWQgYXMgR0VORVJBVEVEIEFMV0FZUy4iLAorCQkJCQkJ CQkJICAgTmFtZVN0cihhdHRfdHVwLT5hdHRuYW1lKSksCisJCQkJCQkJIGVy cmhpbnQoIlVzZSBPVkVSUklESU5HIFNZU1RFTSBWQUxVRSB0byBvdmVycmlk ZS4iKSkpOworCQkJfQorCisJCQlpZiAoYXR0X3R1cC0+YXR0aWRlbnRpdHkg PT0gQVRUUklCVVRFX0lERU5USVRZX0JZX0RFRkFVTFQgJiYgb3ZlcnJpZGUg PT0gT1ZFUlJJRElOR19VU0VSX1ZBTFVFKQorCQkJCWFwcGx5X2RlZmF1bHQg PSB0cnVlOworCQl9CisKKwkJaWYgKGNvbW1hbmRUeXBlID09IENNRF9VUERB VEUpCisJCXsKKwkJCWlmIChhdHRfdHVwLT5hdHRpZGVudGl0eSA9PSBBVFRS SUJVVEVfSURFTlRJVFlfQUxXQVlTICYmICFhcHBseV9kZWZhdWx0KQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0dFTkVS QVRFRF9BTFdBWVMpLAorCQkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBj YW4gb25seSBiZSB1cGRhdGVkIHRvIERFRkFVTFQiLCBOYW1lU3RyKGF0dF90 dXAtPmF0dG5hbWUpKSwKKwkJCQkJCSBlcnJkZXRhaWwoIkNvbHVtbiBcIiVz XCIgaXMgYW4gaWRlbnRpdHkgY29sdW1uIGRlZmluZWQgYXMgR0VORVJBVEVE IEFMV0FZUy4iLAorCQkJCQkJCQkgICBOYW1lU3RyKGF0dF90dXAtPmF0dG5h bWUpKSkpOworCQl9CisKKwkJaWYgKGFwcGx5X2RlZmF1bHQpCiAJCXsKIAkJ CU5vZGUJICAgKm5ld19leHByOwogCi0JCQluZXdfZXhwciA9IGJ1aWxkX2Nv bHVtbl9kZWZhdWx0KHRhcmdldF9yZWxhdGlvbiwgYXR0cm5vKTsKKwkJCWlm IChhdHRfdHVwLT5hdHRpZGVudGl0eSAhPSAnICcpCisJCQl7CisJCQkJTmV4 dFZhbHVlRXhwciAqbnZlID0gbWFrZU5vZGUoTmV4dFZhbHVlRXhwcik7CisK KwkJCQludmUtPnNlcWlkID0gZ2V0T3duZWRTZXF1ZW5jZShSZWxhdGlvbkdl dFJlbGlkKHRhcmdldF9yZWxhdGlvbiksIGF0dHJubyk7CisJCQkJbnZlLT50 eXBlSWQgPSBhdHRfdHVwLT5hdHR0eXBpZDsKKworCQkJCW5ld19leHByID0g KE5vZGUgKikgbnZlOworCQkJfQorCQkJZWxzZQorCQkJCW5ld19leHByID0g YnVpbGRfY29sdW1uX2RlZmF1bHQodGFyZ2V0X3JlbGF0aW9uLCBhdHRybm8p OwogCiAJCQkvKgogCQkJICogSWYgdGhlcmUgaXMgbm8gZGVmYXVsdCAoaWUs IGRlZmF1bHQgaXMgZWZmZWN0aXZlbHkgTlVMTCksIHdlCkBAIC0zMjMyLDYg KzMyNzUsNyBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNldHJlZSwgTGlz dCAqcmV3cml0ZV9ldmVudHMpCiAJCQkJLyogUHJvY2VzcyB0aGUgbWFpbiB0 YXJnZXRsaXN0IC4uLiAqLwogCQkJCXBhcnNldHJlZS0+dGFyZ2V0TGlzdCA9 IHJld3JpdGVUYXJnZXRMaXN0SVUocGFyc2V0cmVlLT50YXJnZXRMaXN0LAog CQkJCQkJCQkJCQkJCSAgcGFyc2V0cmVlLT5jb21tYW5kVHlwZSwKKwkJCQkJ CQkJCQkJCQkJCXBhcnNldHJlZS0+b3ZlcnJpZGUsCiAJCQkJCQkJCQkJCQkJ CQlydF9lbnRyeV9yZWxhdGlvbiwKIAkJCQkJCQkJCQkJCSAgIHBhcnNldHJl ZS0+cmVzdWx0UmVsYXRpb24sCiAJCQkJCQkJCQkJCQkJCQkmYXR0cm5vcyk7 CkBAIC0zMjQ0LDYgKzMyODgsNyBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBh cnNldHJlZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMpCiAJCQkJcGFyc2V0cmVl LT50YXJnZXRMaXN0ID0KIAkJCQkJcmV3cml0ZVRhcmdldExpc3RJVShwYXJz ZXRyZWUtPnRhcmdldExpc3QsCiAJCQkJCQkJCQkJcGFyc2V0cmVlLT5jb21t YW5kVHlwZSwKKwkJCQkJCQkJCQlwYXJzZXRyZWUtPm92ZXJyaWRlLAogCQkJ CQkJCQkJCXJ0X2VudHJ5X3JlbGF0aW9uLAogCQkJCQkJCQkJCXBhcnNldHJl ZS0+cmVzdWx0UmVsYXRpb24sIE5VTEwpOwogCQkJfQpAQCAtMzI1NCw2ICsz Mjk5LDcgQEAgUmV3cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRyZWUsIExpc3Qg KnJld3JpdGVfZXZlbnRzKQogCQkJCXBhcnNldHJlZS0+b25Db25mbGljdC0+ b25Db25mbGljdFNldCA9CiAJCQkJCXJld3JpdGVUYXJnZXRMaXN0SVUocGFy c2V0cmVlLT5vbkNvbmZsaWN0LT5vbkNvbmZsaWN0U2V0LAogCQkJCQkJCQkJ CUNNRF9VUERBVEUsCisJCQkJCQkJCQkJcGFyc2V0cmVlLT5vdmVycmlkZSwK IAkJCQkJCQkJCQlydF9lbnRyeV9yZWxhdGlvbiwKIAkJCQkJCQkJCQlwYXJz ZXRyZWUtPnJlc3VsdFJlbGF0aW9uLAogCQkJCQkJCQkJCU5VTEwpOwpAQCAt MzI2Myw3ICszMzA5LDkgQEAgUmV3cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRy ZWUsIExpc3QgKnJld3JpdGVfZXZlbnRzKQogCQl7CiAJCQlwYXJzZXRyZWUt PnRhcmdldExpc3QgPQogCQkJCXJld3JpdGVUYXJnZXRMaXN0SVUocGFyc2V0 cmVlLT50YXJnZXRMaXN0LAotCQkJCQkJCQkJcGFyc2V0cmVlLT5jb21tYW5k VHlwZSwgcnRfZW50cnlfcmVsYXRpb24sCisJCQkJCQkJCQlwYXJzZXRyZWUt PmNvbW1hbmRUeXBlLAorCQkJCQkJCQkJcGFyc2V0cmVlLT5vdmVycmlkZSwK KwkJCQkJCQkJCXJ0X2VudHJ5X3JlbGF0aW9uLAogCQkJCQkJCQkJcGFyc2V0 cmVlLT5yZXN1bHRSZWxhdGlvbiwgTlVMTCk7CiAJCQlyZXdyaXRlVGFyZ2V0 TGlzdFVEKHBhcnNldHJlZSwgcnRfZW50cnksIHJ0X2VudHJ5X3JlbGF0aW9u KTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j CmluZGV4IDVjODIzMjUwYmMuLjgzODM4YTQzMzkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTU4MTMsNiArNTgxMywx NCBAQCBnZXRfaW5zZXJ0X3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRlcGFy c2VfY29udGV4dCAqY29udGV4dCkKIAlpZiAocXVlcnktPnRhcmdldExpc3Qp CiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiKSAiKTsKIAorCWlm IChxdWVyeS0+b3ZlcnJpZGUpCisJeworCQlpZiAocXVlcnktPm92ZXJyaWRl ID09IE9WRVJSSURJTkdfU1lTVEVNX1ZBTFVFKQorCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhidWYsICJPVkVSUklESU5HIFNZU1RFTSBWQUxVRSAiKTsK KwkJZWxzZSBpZiAocXVlcnktPm92ZXJyaWRlID09IE9WRVJSSURJTkdfVVNF Ul9WQUxVRSkKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiT1ZF UlJJRElORyBVU0VSIFZBTFVFICIpOworCX0KKwogCWlmIChzZWxlY3RfcnRl KQogCXsKIAkJLyogQWRkIHRoZSBTRUxFQ1QgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggYjg5MWYzODhlNS4u ODMxYTdmOTlhMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv bHN5c2NhY2hlLmMKQEAgLTgzNiw2ICs4MzYsMjcgQEAgZ2V0X2F0dG51bShP aWQgcmVsaWQsIGNvbnN0IGNoYXIgKmF0dG5hbWUpCiAJCXJldHVybiBJbnZh bGlkQXR0ck51bWJlcjsKIH0KIAorY2hhcgorZ2V0X2F0dGlkZW50aXR5KE9p ZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0pCit7CisJSGVhcFR1cGxlCXRw OworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTIoQVRUTlVNLAorCQkJCQkJIE9i amVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJIEludDE2R2V0RGF0dW0o YXR0bnVtKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCXsKKwkJ Rm9ybV9wZ19hdHRyaWJ1dGUgYXR0X3R1cCA9IChGb3JtX3BnX2F0dHJpYnV0 ZSkgR0VUU1RSVUNUKHRwKTsKKwkJY2hhcgkJCXJlc3VsdDsKKworCQlyZXN1 bHQgPSBhdHRfdHVwLT5hdHRpZGVudGl0eTsKKwkJUmVsZWFzZVN5c0NhY2hl KHRwKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisJZWxzZQorCQlyZXR1cm4g MDsKK30KKwogLyoKICAqIGdldF9hdHR0eXBlCiAgKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggY2U1NWZjNTI3Ny4u Nzc4ZDgwZTNhMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9y ZWxjYWNoZS5jCkBAIC0zMjY3LDYgKzMyNjcsNyBAQCBSZWxhdGlvbkJ1aWxk TG9jYWxSZWxhdGlvbihjb25zdCBjaGFyICpyZWxuYW1lLAogCWhhc19ub3Rf bnVsbCA9IGZhbHNlOwogCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQog CXsKKwkJcmVsLT5yZF9hdHQtPmF0dHJzW2ldLT5hdHRpZGVudGl0eSA9IHR1 cERlc2MtPmF0dHJzW2ldLT5hdHRpZGVudGl0eTsKIAkJcmVsLT5yZF9hdHQt PmF0dHJzW2ldLT5hdHRub3RudWxsID0gdHVwRGVzYy0+YXR0cnNbaV0tPmF0 dG5vdG51bGw7CiAJCWhhc19ub3RfbnVsbCB8PSB0dXBEZXNjLT5hdHRyc1tp XS0+YXR0bm90bnVsbDsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9lcnJjb2Rlcy50eHQgYi9zcmMvYmFja2VuZC91dGlscy9lcnJjb2Rl cy50eHQKaW5kZXggYjZlMGU5ODdhOC4uNGYzNTQ3MTc2MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0CisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4dApAQCAtMzI3LDYgKzMyNyw3IEBA IFNlY3Rpb246IENsYXNzIDQyIC0gU3ludGF4IEVycm9yIG9yIEFjY2VzcyBS dWxlIFZpb2xhdGlvbgogNDJQMjEgICAgRSAgICBFUlJDT0RFX0NPTExBVElP Tl9NSVNNQVRDSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb2xsYXRpb25fbWlzbWF0Y2gKIDQyUDIyICAgIEUgICAgRVJSQ09ERV9J TkRFVEVSTUlOQVRFX0NPTExBVElPTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5kZXRlcm1pbmF0ZV9jb2xsYXRpb24KIDQyODA5ICAgIEUg ICAgRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgd3Jvbmdfb2JqZWN0X3R5cGUKKzQyOEM5 ICAgIEUgICAgRVJSQ09ERV9HRU5FUkFURURfQUxXQVlTICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkX2Fsd2F5cwog CiAjIE5vdGU6IGZvciBFUlJDT0RFIHB1cnBvc2VzLCB3ZSBkaXZpZGUgbmFt YWJsZSBvYmplY3RzIGludG8gdGhlc2UgY2F0ZWdvcmllczoKICMgZGF0YWJh c2VzLCBzY2hlbWFzLCBwcmVwYXJlZCBzdGF0ZW1lbnRzLCBjdXJzb3JzLCB0 YWJsZXMsIGNvbHVtbnMsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBl NjcxNzFkY2NiLi5kZjdkMGQ4ODg3IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0 ci5oIgogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19hbS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfYXR0cmli dXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jYXN0LmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19jbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf ZGVmYXVsdF9hY2wuaCIKQEAgLTE5MDAsNiArMTkwMSw5IEBAIGR1bXBUYWJs ZURhdGFfaW5zZXJ0KEFyY2hpdmUgKmZvdXQsIHZvaWQgKmRjb250ZXh0KQog CQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoaW5zZXJ0U3RtdCwgIikgIik7 CiAJCQkJCX0KIAorCQkJCQlpZiAodGJpbmZvLT5uZWVkc19vdmVycmlkZSkK KwkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGluc2VydFN0bXQsICJPVkVS UklESU5HIFNZU1RFTSBWQUxVRSAiKTsKKwogCQkJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihpbnNlcnRTdG10LCAiVkFMVUVTICgiKTsKIAkJCQl9CiAJCQl9 CkBAIC01NDIyLDYgKzU0MjYsNyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91 dCwgaW50ICpudW1UYWJsZXMpCiAJaW50CQkJaV90b2FzdHJlbG9wdGlvbnM7 CiAJaW50CQkJaV9yZWxvZnR5cGU7CiAJaW50CQkJaV9yZWxwYWdlczsKKwlp bnQJCQlpX2lzX2lkZW50aXR5X3NlcXVlbmNlOwogCWludAkJCWlfY2hhbmdl ZF9hY2w7CiAKIAkvKiBNYWtlIHN1cmUgd2UgYXJlIGluIHByb3BlciBzY2hl bWEgKi8KQEAgLTU0OTksNiArNTUwNCw3IEBAIGdldFRhYmxlcyhBcmNoaXZl ICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAkJCQkJCSAgIkNBU0UgV0hFTiAn Y2hlY2tfb3B0aW9uPWxvY2FsJyA9IEFOWSAoYy5yZWxvcHRpb25zKSBUSEVO ICdMT0NBTCc6OnRleHQgIgogCQkJCQkJICAiV0hFTiAnY2hlY2tfb3B0aW9u PWNhc2NhZGVkJyA9IEFOWSAoYy5yZWxvcHRpb25zKSBUSEVOICdDQVNDQURF RCc6OnRleHQgRUxTRSBOVUxMIEVORCBBUyBjaGVja29wdGlvbiwgIgogCQkJ CQkJICAidGMucmVsb3B0aW9ucyBBUyB0b2FzdF9yZWxvcHRpb25zLCAiCisJ CQkJCQkgICJjLnJlbGtpbmQgPSAnJWMnIEFORCBFWElTVFMgKFNFTEVDVCAx IEZST00gcGdfZGVwZW5kIFdIRVJFIGNsYXNzaWQgPSAncGdfY2xhc3MnOjpy ZWdjbGFzcyBBTkQgb2JqaWQgPSBjLm9pZCBBTkQgb2Jqc3ViaWQgPSAwIEFO RCByZWZjbGFzc2lkID0gJ3BnX2NsYXNzJzo6cmVnY2xhc3MgQU5EIGRlcHR5 cGUgPSAnaScpIEFTIGlzX2lkZW50aXR5X3NlcXVlbmNlLCAiCiAJCQkJCQkg ICJFWElTVFMgKFNFTEVDVCAxIEZST00gcGdfYXR0cmlidXRlIGF0IExFRlQg Sk9JTiBwZ19pbml0X3ByaXZzIHBpcCBPTiAiCiAJCQkJCQkgICIoYy5vaWQg PSBwaXAub2Jqb2lkICIKIAkJCQkJCSAgIkFORCBwaXAuY2xhc3NvaWQgPSAn cGdfY2xhc3MnOjpyZWdjbGFzcyAiCkBAIC01NTE1LDcgKzU1MjEsNyBAQCBn ZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMpCiAJCQkJ CQkgICIoYy5yZWxraW5kID0gJyVjJyBBTkQgIgogCQkJCQkJICAiZC5jbGFz c2lkID0gYy50YWJsZW9pZCBBTkQgZC5vYmppZCA9IGMub2lkIEFORCAiCiAJ CQkJCQkgICJkLm9ianN1YmlkID0gMCBBTkQgIgotCQkJCQkJICAiZC5yZWZj bGFzc2lkID0gYy50YWJsZW9pZCBBTkQgZC5kZXB0eXBlID0gJ2EnKSAiCisJ CQkJCQkgICJkLnJlZmNsYXNzaWQgPSBjLnRhYmxlb2lkIEFORCBkLmRlcHR5 cGUgSU4gKCdhJywgJ2knKSkgIgogCQkJCQkgICAiTEVGVCBKT0lOIHBnX2Ns YXNzIHRjIE9OIChjLnJlbHRvYXN0cmVsaWQgPSB0Yy5vaWQpICIKIAkJCQkJ CSAgIkxFRlQgSk9JTiBwZ19pbml0X3ByaXZzIHBpcCBPTiAiCiAJCQkJCQkg ICIoYy5vaWQgPSBwaXAub2Jqb2lkICIKQEAgLTU1MjgsNiArNTUzNCw3IEBA IGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAkJ CQkJCSAgaW5pdGFjbF9zdWJxdWVyeS0+ZGF0YSwKIAkJCQkJCSAgaW5pdHJh Y2xfc3VicXVlcnktPmRhdGEsCiAJCQkJCQkgIHVzZXJuYW1lX3N1YnF1ZXJ5 LAorCQkJCQkJICBSRUxLSU5EX1NFUVVFTkNFLAogCQkJCQkJICBhdHRhY2xf c3VicXVlcnktPmRhdGEsCiAJCQkJCQkgIGF0dHJhY2xfc3VicXVlcnktPmRh dGEsCiAJCQkJCQkgIGF0dGluaXRhY2xfc3VicXVlcnktPmRhdGEsCkBAIC01 OTUwLDYgKzU5NTcsNyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50 ICpudW1UYWJsZXMpCiAJaV9jaGVja29wdGlvbiA9IFBRZm51bWJlcihyZXMs ICJjaGVja29wdGlvbiIpOwogCWlfdG9hc3RyZWxvcHRpb25zID0gUFFmbnVt YmVyKHJlcywgInRvYXN0X3JlbG9wdGlvbnMiKTsKIAlpX3JlbG9mdHlwZSA9 IFBRZm51bWJlcihyZXMsICJyZWxvZnR5cGUiKTsKKwlpX2lzX2lkZW50aXR5 X3NlcXVlbmNlID0gUFFmbnVtYmVyKHJlcywgImlzX2lkZW50aXR5X3NlcXVl bmNlIik7CiAJaV9jaGFuZ2VkX2FjbCA9IFBRZm51bWJlcihyZXMsICJjaGFu Z2VkX2FjbCIpOwogCiAJaWYgKGRvcHQtPmxvY2tXYWl0VGltZW91dCkKQEAg LTYwNTAsNiArNjA1OCw4IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBp bnQgKm51bVRhYmxlcykKIAkJdGJsaW5mb1tpXS5kdW1teV92aWV3ID0gZmFs c2U7CS8qIG1pZ2h0IGdldCBzZXQgZHVyaW5nIHNvcnQgKi8KIAkJdGJsaW5m b1tpXS5wb3N0cG9uZWRfZGVmID0gZmFsc2U7CQkvKiBtaWdodCBnZXQgc2V0 IGR1cmluZyBzb3J0ICovCiAKKwkJdGJsaW5mb1tpXS5pc19pZGVudGl0eV9z ZXF1ZW5jZSA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfaXNfaWRl bnRpdHlfc2VxdWVuY2UpLCAidCIpID09IDApOworCiAJCS8qCiAJCSAqIFJl YWQtbG9jayB0YXJnZXQgdGFibGVzIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZW4n dCBEUk9QUEVEIG9yIGFsdGVyZWQKIAkJICogaW4gc2NoZW1hIGJlZm9yZSB3 ZSBnZXQgYXJvdW5kIHRvIGR1bXBpbmcgdGhlbS4KQEAgLTc2MTMsNiArNzYy Myw3IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZv ICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCWludAkJCWlfdHlwc3RvcmFn ZTsKIAlpbnQJCQlpX2F0dG5vdG51bGw7CiAJaW50CQkJaV9hdHRoYXNkZWY7 CisJaW50CQkJaV9hdHRpZGVudGl0eTsKIAlpbnQJCQlpX2F0dGlzZHJvcHBl ZDsKIAlpbnQJCQlpX2F0dGxlbjsKIAlpbnQJCQlpX2F0dGFsaWduOwpAQCAt NzY1NSw3ICs3NjY2LDM0IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91 dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCiAJCXJl c2V0UFFFeHBCdWZmZXIocSk7CiAKLQkJaWYgKGZvdXQtPnJlbW90ZVZlcnNp b24gPj0gOTAyMDApCisJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEw MDAwMCkKKwkJeworCQkJLyoKKwkJCSAqIGF0dGlkZW50aXR5IGlzIG5ldyBp biB2ZXJzaW9uIDEwLgorCQkJICovCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihx LCAiU0VMRUNUIGEuYXR0bnVtLCBhLmF0dG5hbWUsIGEuYXR0dHlwbW9kLCAi CisJCQkJCQkJICAiYS5hdHRzdGF0dGFyZ2V0LCBhLmF0dHN0b3JhZ2UsIHQu dHlwc3RvcmFnZSwgIgorCQkJCQkJCSAgImEuYXR0bm90bnVsbCwgYS5hdHRo YXNkZWYsIGEuYXR0aXNkcm9wcGVkLCAiCisJCQkJCQkJICAiYS5hdHRsZW4s IGEuYXR0YWxpZ24sIGEuYXR0aXNsb2NhbCwgIgorCQkJCSAgInBnX2NhdGFs b2cuZm9ybWF0X3R5cGUodC5vaWQsYS5hdHR0eXBtb2QpIEFTIGF0dHR5cG5h bWUsICIKKwkJCQkJCSJhcnJheV90b19zdHJpbmcoYS5hdHRvcHRpb25zLCAn LCAnKSBBUyBhdHRvcHRpb25zLCAiCisJCQkJCQkJICAiQ0FTRSBXSEVOIGEu YXR0Y29sbGF0aW9uIDw+IHQudHlwY29sbGF0aW9uICIKKwkJCQkJCSAgICJU SEVOIGEuYXR0Y29sbGF0aW9uIEVMU0UgMCBFTkQgQVMgYXR0Y29sbGF0aW9u LCAiCisJCQkJCQkJICAiYS5hdHRpZGVudGl0eSwgIgorCQkJCQkJCSAgInBn X2NhdGFsb2cuYXJyYXlfdG9fc3RyaW5nKEFSUkFZKCIKKwkJCQkJCQkgICJT RUxFQ1QgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChvcHRpb25fbmFtZSkgfHwg IgorCQkJCQkJCSAgIicgJyB8fCBwZ19jYXRhbG9nLnF1b3RlX2xpdGVyYWwo b3B0aW9uX3ZhbHVlKSAiCisJCQkJCQkiRlJPTSBwZ19jYXRhbG9nLnBnX29w dGlvbnNfdG9fdGFibGUoYXR0ZmR3b3B0aW9ucykgIgorCQkJCQkJCSAgIk9S REVSIEJZIG9wdGlvbl9uYW1lIgorCQkJCQkJCSAgIiksIEUnLFxuICAgICcp IEFTIGF0dGZkd29wdGlvbnMgIgorCQkJICJGUk9NIHBnX2NhdGFsb2cucGdf YXR0cmlidXRlIGEgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfdHlwZSB0ICIK KwkJCQkJCQkgICJPTiBhLmF0dHR5cGlkID0gdC5vaWQgIgorCQkJCQkJCSAg IldIRVJFIGEuYXR0cmVsaWQgPSAnJXUnOjpwZ19jYXRhbG9nLm9pZCAiCisJ CQkJCQkJICAiQU5EIGEuYXR0bnVtID4gMDo6cGdfY2F0YWxvZy5pbnQyICIK KwkJCQkJCQkgICJPUkRFUiBCWSBhLmF0dHJlbGlkLCBhLmF0dG51bSIsCisJ CQkJCQkJICB0YmluZm8tPmRvYmouY2F0SWQub2lkKTsKKwkJfQorCQllbHNl IGlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDkwMjAwKQogCQl7CiAJCQkv KgogCQkJICogYXR0ZmR3b3B0aW9ucyBpcyBuZXcgaW4gOS4yLgpAQCAtNzc1 NCw2ICs3NzkyLDcgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBU YWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCWlfdHlwc3Rv cmFnZSA9IFBRZm51bWJlcihyZXMsICJ0eXBzdG9yYWdlIik7CiAJCWlfYXR0 bm90bnVsbCA9IFBRZm51bWJlcihyZXMsICJhdHRub3RudWxsIik7CiAJCWlf YXR0aGFzZGVmID0gUFFmbnVtYmVyKHJlcywgImF0dGhhc2RlZiIpOworCQlp X2F0dGlkZW50aXR5ID0gUFFmbnVtYmVyKHJlcywgImF0dGlkZW50aXR5Iik7 CiAJCWlfYXR0aXNkcm9wcGVkID0gUFFmbnVtYmVyKHJlcywgImF0dGlzZHJv cHBlZCIpOwogCQlpX2F0dGxlbiA9IFBRZm51bWJlcihyZXMsICJhdHRsZW4i KTsKIAkJaV9hdHRhbGlnbiA9IFBRZm51bWJlcihyZXMsICJhdHRhbGlnbiIp OwpAQCAtNzc2OSw2ICs3ODA4LDcgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZl ICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJ CXRiaW5mby0+YXR0c3RhdHRhcmdldCA9IChpbnQgKikgcGdfbWFsbG9jKG50 dXBzICogc2l6ZW9mKGludCkpOwogCQl0YmluZm8tPmF0dHN0b3JhZ2UgPSAo Y2hhciAqKSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoY2hhcikpOwogCQl0 YmluZm8tPnR5cHN0b3JhZ2UgPSAoY2hhciAqKSBwZ19tYWxsb2MobnR1cHMg KiBzaXplb2YoY2hhcikpOworCQl0YmluZm8tPmF0dGlkZW50aXR5ID0gKGNo YXIgKikgcGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKGJvb2wpKTsKIAkJdGJp bmZvLT5hdHRpc2Ryb3BwZWQgPSAoYm9vbCAqKSBwZ19tYWxsb2MobnR1cHMg KiBzaXplb2YoYm9vbCkpOwogCQl0YmluZm8tPmF0dGxlbiA9IChpbnQgKikg cGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKGludCkpOwogCQl0YmluZm8tPmF0 dGFsaWduID0gKGNoYXIgKikgcGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKGNo YXIpKTsKQEAgLTc3OTMsNiArNzgzMyw4IEBAIGdldFRhYmxlQXR0cnMoQXJj aGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVz KQogCQkJdGJpbmZvLT5hdHRzdGF0dGFyZ2V0W2pdID0gYXRvaShQUWdldHZh bHVlKHJlcywgaiwgaV9hdHRzdGF0dGFyZ2V0KSk7CiAJCQl0YmluZm8tPmF0 dHN0b3JhZ2Vbal0gPSAqKFBRZ2V0dmFsdWUocmVzLCBqLCBpX2F0dHN0b3Jh Z2UpKTsKIAkJCXRiaW5mby0+dHlwc3RvcmFnZVtqXSA9ICooUFFnZXR2YWx1 ZShyZXMsIGosIGlfdHlwc3RvcmFnZSkpOworCQkJdGJpbmZvLT5hdHRpZGVu dGl0eVtqXSA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlfYXR0aWRlbnRpdHkp KTsKKwkJCXRiaW5mby0+bmVlZHNfb3ZlcnJpZGUgPSB0YmluZm8tPm5lZWRz X292ZXJyaWRlIHx8ICh0YmluZm8tPmF0dGlkZW50aXR5W2pdID09IEFUVFJJ QlVURV9JREVOVElUWV9BTFdBWVMpOwogCQkJdGJpbmZvLT5hdHRpc2Ryb3Bw ZWRbal0gPSAoUFFnZXR2YWx1ZShyZXMsIGosIGlfYXR0aXNkcm9wcGVkKVsw XSA9PSAndCcpOwogCQkJdGJpbmZvLT5hdHRsZW5bal0gPSBhdG9pKFBRZ2V0 dmFsdWUocmVzLCBqLCBpX2F0dGxlbikpOwogCQkJdGJpbmZvLT5hdHRhbGln bltqXSA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlfYXR0YWxpZ24pKTsKQEAg LTE2MDY5LDEwICsxNjExMSwxMyBAQCBkdW1wU2VxdWVuY2UoQXJjaGl2ZSAq Zm91dCwgVGFibGVJbmZvICp0YmluZm8pCiAJLyoKIAkgKiBEUk9QIG11c3Qg YmUgZnVsbHkgcXVhbGlmaWVkIGluIGNhc2Ugc2FtZSBuYW1lIGFwcGVhcnMg aW4gcGdfY2F0YWxvZwogCSAqLwotCWFwcGVuZFBRRXhwQnVmZmVyKGRlbHFy eSwgIkRST1AgU0VRVUVOQ0UgJXMuIiwKLQkJCQkJICBmbXRJZCh0YmluZm8t PmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUpKTsKLQlhcHBlbmRQUUV4cEJ1 ZmZlcihkZWxxcnksICIlcztcbiIsCi0JCQkJCSAgZm10SWQodGJpbmZvLT5k b2JqLm5hbWUpKTsKKwlpZiAoIXRiaW5mby0+aXNfaWRlbnRpdHlfc2VxdWVu Y2UpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcihkZWxxcnksICJEUk9QIFNF UVVFTkNFICVzLiIsCisJCQkJCQkgIGZtdElkKHRiaW5mby0+ZG9iai5uYW1l c3BhY2UtPmRvYmoubmFtZSkpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcihkZWxx cnksICIlcztcbiIsCisJCQkJCQkgIGZtdElkKHRiaW5mby0+ZG9iai5uYW1l KSk7CisJfQogCiAJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CiAKQEAgLTE2 MDg0LDExICsxNjEyOSwzMCBAQCBkdW1wU2VxdWVuY2UoQXJjaGl2ZSAqZm91 dCwgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJCQkJCQkJCQl0YmluZm8tPmRv YmouY2F0SWQub2lkKTsKIAl9CiAKLQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVy eSwKLQkJCQkJICAiQ1JFQVRFIFNFUVVFTkNFICVzXG4iLAotCQkJCQkgIGZt dElkKHRiaW5mby0+ZG9iai5uYW1lKSk7CisJaWYgKHRiaW5mby0+aXNfaWRl bnRpdHlfc2VxdWVuY2UpCisJeworCQlUYWJsZUluZm8gICpvd25pbmdfdGFi ID0gZmluZFRhYmxlQnlPaWQodGJpbmZvLT5vd25pbmdfdGFiKTsKKworCQlh cHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJCSAgIkFMVEVSIFRBQkxF ICVzICIsCisJCQkJCQkgIGZtdElkKG93bmluZ190YWItPmRvYmoubmFtZSkp OworCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJCSAgIkFMVEVS IENPTFVNTiAlcyBBREQgR0VORVJBVEVEICIsCisJCQkJCQkgIGZtdElkKG93 bmluZ190YWItPmF0dG5hbWVzW3RiaW5mby0+b3duaW5nX2NvbCAtIDFdKSk7 CisJCWlmIChvd25pbmdfdGFiLT5hdHRpZGVudGl0eVt0YmluZm8tPm93bmlu Z19jb2wgLSAxXSA9PSBBVFRSSUJVVEVfSURFTlRJVFlfQUxXQVlTKQorCQkJ YXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBTFdBWVMiKTsKKwkJZWxzZSBp ZiAob3duaW5nX3RhYi0+YXR0aWRlbnRpdHlbdGJpbmZvLT5vd25pbmdfY29s IC0gMV0gPT0gQVRUUklCVVRFX0lERU5USVRZX0JZX0RFRkFVTFQpCisJCQlh cHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkJZIERFRkFVTFQiKTsKKwkJYXBw ZW5kUFFFeHBCdWZmZXIocXVlcnksICIgQVMgSURFTlRJVFkgKFxuICAgIFNF UVVFTkNFIE5BTUUgJXNcbiIsCisJCQkJCQkgIGZtdElkKHRiaW5mby0+ZG9i ai5uYW1lKSk7CisJfQorCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVl cnksCisJCQkJCQkgICJDUkVBVEUgU0VRVUVOQ0UgJXNcbiIsCisJCQkJCQkg IGZtdElkKHRiaW5mby0+ZG9iai5uYW1lKSk7CiAKLQlpZiAoc3RyY21wKHNl cXR5cGUsICJiaWdpbnQiKSAhPSAwKQorCWlmIChzdHJjbXAoc2VxdHlwZSwg ImJpZ2ludCIpICE9IDAgJiYKKwkJIXRiaW5mby0+aXNfaWRlbnRpdHlfc2Vx dWVuY2UpCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiICAgIEFTICVz XG4iLCBzZXF0eXBlKTsKIAogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDgwNDAwKQpAQCAtMTYxMTAsNyArMTYxNzQsMTAgQEAgZHVtcFNlcXVlbmNl KEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJCQkgICIg ICAgQ0FDSEUgJXMlcyIsCiAJCQkJCSAgY2FjaGUsIChjeWNsZWQgPyAiXG4g ICAgQ1lDTEUiIDogIiIpKTsKIAotCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LCAiO1xuIik7CisJaWYgKHRiaW5mby0+aXNfaWRlbnRpdHlfc2VxdWVu Y2UpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiXG4pO1xuIik7 CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIjtcbiIp OwogCiAJYXBwZW5kUFFFeHBCdWZmZXIobGFiZWxxLCAiU0VRVUVOQ0UgJXMi LCBmbXRJZCh0YmluZm8tPmRvYmoubmFtZSkpOwogCkBAIC0xNjE0Myw3ICsx NjIxMCw3IEBAIGR1bXBTZXF1ZW5jZShBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gKnRiaW5mbykKIAkgKiBXZSBuZWVkIG5vdCBzY2hlbWEtcXVhbGlmeSB0 aGUgdGFibGUgcmVmZXJlbmNlIGJlY2F1c2UgYm90aCBzZXF1ZW5jZQogCSAq IGFuZCB0YWJsZSBtdXN0IGJlIGluIHRoZSBzYW1lIHNjaGVtYS4KIAkgKi8K LQlpZiAoT2lkSXNWYWxpZCh0YmluZm8tPm93bmluZ190YWIpKQorCWlmIChP aWRJc1ZhbGlkKHRiaW5mby0+b3duaW5nX3RhYikgJiYgIXRiaW5mby0+aXNf aWRlbnRpdHlfc2VxdWVuY2UpCiAJewogCQlUYWJsZUluZm8gICpvd25pbmdf dGFiID0gZmluZFRhYmxlQnlPaWQodGJpbmZvLT5vd25pbmdfdGFiKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggYTQ2NjUyN2VjNi4uZjVlYTJm N2E2ZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAor KysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC0yODcsNiArMjg3 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX3RhYmxlSW5mbwogCS8qIHRoZXNlIHR3 byBhcmUgc2V0IG9ubHkgaWYgdGFibGUgaXMgYSBzZXF1ZW5jZSBvd25lZCBi eSBhIGNvbHVtbjogKi8KIAlPaWQJCQlvd25pbmdfdGFiOwkJLyogT0lEIG9m IHRhYmxlIG93bmluZyBzZXF1ZW5jZSAqLwogCWludAkJCW93bmluZ19jb2w7 CQkvKiBhdHRyICMgb2YgY29sdW1uIG93bmluZyBzZXF1ZW5jZSAqLworCWJv b2wJCWlzX2lkZW50aXR5X3NlcXVlbmNlOwogCWludAkJCXJlbHBhZ2VzOwkJ LyogdGFibGUncyBzaXplIGluIHBhZ2VzIChmcm9tIHBnX2NsYXNzKSAqLwog CiAJYm9vbAkJaW50ZXJlc3Rpbmc7CS8qIHRydWUgaWYgbmVlZCB0byBjb2xs ZWN0IG1vcmUgZGF0YSAqLwpAQCAtMzA1LDYgKzMwNiw3IEBAIHR5cGVkZWYg c3RydWN0IF90YWJsZUluZm8KIAljaGFyCSAgICphdHRzdG9yYWdlOwkJLyog YXR0cmlidXRlIHN0b3JhZ2Ugc2NoZW1lICovCiAJY2hhcgkgICAqdHlwc3Rv cmFnZTsJCS8qIHR5cGUgc3RvcmFnZSBzY2hlbWUgKi8KIAlib29sCSAgICph dHRpc2Ryb3BwZWQ7CS8qIHRydWUgaWYgYXR0ciBpcyBkcm9wcGVkOyBkb24n dCBkdW1wIGl0ICovCisJY2hhcgkgICAqYXR0aWRlbnRpdHk7CiAJaW50CQkg ICAqYXR0bGVuOwkJCS8qIGF0dHJpYnV0ZSBsZW5ndGgsIHVzZWQgYnkgYmlu YXJ5X3VwZ3JhZGUgKi8KIAljaGFyCSAgICphdHRhbGlnbjsJCS8qIGF0dHJp YnV0ZSBhbGlnbiwgdXNlZCBieSBiaW5hcnlfdXBncmFkZSAqLwogCWJvb2wJ ICAgKmF0dGlzbG9jYWw7CQkvKiB0cnVlIGlmIGF0dHIgaGFzIGxvY2FsIGRl ZmluaXRpb24gKi8KQEAgLTMxNiw2ICszMTgsNyBAQCB0eXBlZGVmIHN0cnVj dCBfdGFibGVJbmZvCiAJc3RydWN0IF9hdHRyRGVmSW5mbyAqKmF0dHJkZWZz OwkJLyogREVGQVVMVCBleHByZXNzaW9ucyAqLwogCXN0cnVjdCBfY29uc3Ry YWludEluZm8gKmNoZWNrZXhwcnM7IC8qIENIRUNLIGNvbnN0cmFpbnRzICov CiAJY2hhcgkgICAqcGFydGtleWRlZjsJCS8qIHBhcnRpdGlvbiBrZXkgZGVm aW5pdGlvbiAqLworCWJvb2wJCW5lZWRzX292ZXJyaWRlOwkvKiBoYXMgR0VO RVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSAqLwogCiAJLyoKIAkgKiBTdHVm ZiBjb21wdXRlZCBvbmx5IGZvciBkdW1wYWJsZSB0YWJsZXMuCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9k ZXNjcmliZS5jCmluZGV4IDYxYTNlMmE4NDguLjA4NTk1NDczMmQgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5jCkBAIC0xNCw2ICsxNCw3IEBACiAKICNpbmNsdWRl IDxjdHlwZS5oPgogCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdHRyaWJ1dGUu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNzLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5oIgogI2luY2x1ZGUgImZlX3V0aWxz L3N0cmluZ191dGlscy5oIgpAQCAtMTU5MCw2ICsxNTkxLDEwIEBAIGRlc2Ny aWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJ CQkJCQkJICIgICBXSEVSRSBjLm9pZCA9IGEuYXR0Y29sbGF0aW9uIEFORCB0 Lm9pZCA9IGEuYXR0dHlwaWQgQU5EIGEuYXR0Y29sbGF0aW9uIDw+IHQudHlw Y29sbGF0aW9uKSBBUyBhdHRjb2xsYXRpb24iKTsKIAllbHNlCiAJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsICJcbiAgTlVMTCBBUyBhdHRjb2xsYXRp b24iKTsKKwlpZiAocHNldC5zdmVyc2lvbiA+PSAxMDAwMDApCisJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsIGEuYXR0aWRlbnRpdHkiKTsKKwll bHNlCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsIE5VTEwgQVMg YXR0aWRlbnRpdHkiKTsKIAlpZiAodGFibGVpbmZvLnJlbGtpbmQgPT0gUkVM S0lORF9JTkRFWCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIixc biAgcGdfY2F0YWxvZy5wZ19nZXRfaW5kZXhkZWYoYS5hdHRyZWxpZCwgYS5h dHRudW0sIFRSVUUpIEFTIGluZGV4ZGVmIik7CiAJZWxzZQpAQCAtMTc3Niwx MiArMTc4MSwyNCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBj aGFyICpzY2hlbWFuYW1lLAogCQkvKiBDb2xsYXRpb24sIE51bGxhYmxlLCBE ZWZhdWx0ICovCiAJCWlmIChzaG93X2NvbHVtbl9kZXRhaWxzKQogCQl7CisJ CQljaGFyICAgKmlkZW50aXR5OworCQkJY2hhciAgICpkZWZhdWx0X3N0ciA9 ICIiOworCiAJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1 ZShyZXMsIGksIDUpLCBmYWxzZSwgZmFsc2UpOwogCiAJCQlwcmludFRhYmxl QWRkQ2VsbCgmY29udCwgc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCAzKSwg InQiKSA9PSAwID8gIm5vdCBudWxsIiA6ICIiLCBmYWxzZSwgZmFsc2UpOwog Ci0JCQkvKiAobm90ZTogYWJvdmUgd2UgY3V0IG9mZiB0aGUgJ2RlZmF1bHQn IHN0cmluZyBhdCAxMjgpICovCi0JCQlwcmludFRhYmxlQWRkQ2VsbCgmY29u dCwgUFFnZXR2YWx1ZShyZXMsIGksIDIpLCBmYWxzZSwgZmFsc2UpOworCQkJ aWRlbnRpdHkgPSBQUWdldHZhbHVlKHJlcywgaSwgNik7CisKKwkJCWlmIChp ZGVudGl0eVswXSA9PSBBVFRSSUJVVEVfSURFTlRJVFlfTk9ORSkKKwkJCQkv KiAobm90ZTogYWJvdmUgd2UgY3V0IG9mZiB0aGUgJ2RlZmF1bHQnIHN0cmlu ZyBhdCAxMjgpICovCisJCQkJZGVmYXVsdF9zdHIgPSBQUWdldHZhbHVlKHJl cywgaSwgMik7CisJCQllbHNlIGlmIChpZGVudGl0eVswXSA9PSBBVFRSSUJV VEVfSURFTlRJVFlfQUxXQVlTKQorCQkJCWRlZmF1bHRfc3RyID0gImdlbmVy YXRlZCBhbHdheXMgYXMgaWRlbnRpdHkiOworCQkJZWxzZSBpZiAoaWRlbnRp dHlbMF0gPT0gQVRUUklCVVRFX0lERU5USVRZX0JZX0RFRkFVTFQpCisJCQkJ ZGVmYXVsdF9zdHIgPSAiZ2VuZXJhdGVkIGJ5IGRlZmF1bHQgYXMgaWRlbnRp dHkiOworCisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgZGVmYXVsdF9z dHIsIGZhbHNlLCBmYWxzZSk7CiAJCX0KIAogCQkvKiBWYWx1ZTogZm9yIHNl cXVlbmNlcyBvbmx5ICovCkBAIC0xNzkwLDE2ICsxODA3LDE2IEBAIGRlc2Ny aWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAK IAkJLyogRXhwcmVzc2lvbiBmb3IgaW5kZXggY29sdW1uICovCiAJCWlmICh0 YWJsZWluZm8ucmVsa2luZCA9PSBSRUxLSU5EX0lOREVYKQotCQkJcHJpbnRU YWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA2KSwgZmFs c2UsIGZhbHNlKTsKKwkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdl dHZhbHVlKHJlcywgaSwgNyksIGZhbHNlLCBmYWxzZSk7CiAKIAkJLyogRkRX IG9wdGlvbnMgZm9yIGZvcmVpZ24gdGFibGUgY29sdW1uLCBvbmx5IGZvciA5 LjIgb3IgbGF0ZXIgKi8KIAkJaWYgKHRhYmxlaW5mby5yZWxraW5kID09IFJF TEtJTkRfRk9SRUlHTl9UQUJMRSAmJiBwc2V0LnN2ZXJzaW9uID49IDkwMjAw KQotCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVz LCBpLCA3KSwgZmFsc2UsIGZhbHNlKTsKKwkJCXByaW50VGFibGVBZGRDZWxs KCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgOCksIGZhbHNlLCBmYWxzZSk7 CiAKIAkJLyogU3RvcmFnZSBhbmQgRGVzY3JpcHRpb24gKi8KIAkJaWYgKHZl cmJvc2UpCiAJCXsKLQkJCWludAkJCWZpcnN0dmNvbCA9IDg7CisJCQlpbnQJ CQlmaXJzdHZjb2wgPSA5OwogCQkJY2hhcgkgICAqc3RvcmFnZSA9IFBRZ2V0 dmFsdWUocmVzLCBpLCBmaXJzdHZjb2wpOwogCiAJCQkvKiB0aGVzZSBzdHJp bmdzIGFyZSBsaXRlcmFsIGluIG91ciBzeW50YXgsIHNvIG5vdCB0cmFuc2xh dGVkLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IGY3NDk0 MDY1ZGUuLjZhZDlkYzlkZjggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmMKQEAgLTE4OTUsNyArMTg5NSw3IEBAIHBzcWxfY29tcGxldGlvbihjb25z dCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJLyogQUxURVIg VEFCTEUgQUxURVIgW0NPTFVNTl0gPGZvbz4gKi8KIAllbHNlIGlmIChNYXRj aGVzNigiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkFMVEVSIiwgIkNP TFVNTiIsIE1hdGNoQW55KSB8fAogCQkJIE1hdGNoZXM1KCJBTFRFUiIsICJU QUJMRSIsIE1hdGNoQW55LCAiQUxURVIiLCBNYXRjaEFueSkpCi0JCUNPTVBM RVRFX1dJVEhfTElTVDQoIlRZUEUiLCAiU0VUIiwgIlJFU0VUIiwgIkRST1Ai KTsKKwkJQ09NUExFVEVfV0lUSF9MSVNUNSgiVFlQRSIsICJTRVQiLCAiUkVT RVQiLCAiQUREIiwgIkRST1AiKTsKIAkvKiBBTFRFUiBUQUJMRSBBTFRFUiBb Q09MVU1OXSA8Zm9vPiBTRVQgKi8KIAllbHNlIGlmIChNYXRjaGVzNygiQUxU RVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkFMVEVSIiwgIkNPTFVNTiIsIE1h dGNoQW55LCAiU0VUIikgfHwKIAkJCSBNYXRjaGVzNigiQUxURVIiLCAiVEFC TEUiLCBNYXRjaEFueSwgIkFMVEVSIiwgTWF0Y2hBbnksICJTRVQiKSkKQEAg LTE5MTEsNyArMTkxMSw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFy ICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJLyogQUxURVIgVEFCTEUg QUxURVIgW0NPTFVNTl0gPGZvbz4gRFJPUCAqLwogCWVsc2UgaWYgKE1hdGNo ZXM3KCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiQUxURVIiLCAiQ09M VU1OIiwgTWF0Y2hBbnksICJEUk9QIikgfHwKIAkJCSBNYXRjaGVzNigiQUxU RVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkFMVEVSIiwgTWF0Y2hBbnksICJE Uk9QIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDIoIkRFRkFVTFQiLCAiTk9U IE5VTEwiKTsKKwkJQ09NUExFVEVfV0lUSF9MSVNUMygiREVGQVVMVCIsICJJ REVOVElUWSIsICJOT1QgTlVMTCIpOwogCWVsc2UgaWYgKE1hdGNoZXM0KCJB TFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiQ0xVU1RFUiIpKQogCQlDT01Q TEVURV9XSVRIX0NPTlNUKCJPTiIpOwogCWVsc2UgaWYgKE1hdGNoZXM1KCJB TFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiQ0xVU1RFUiIsICJPTiIpKQpA QCAtMjkyMCwxNyArMjkyMCwyNSBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3Qg Y2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCiAJLyoKIAkgKiBD b21wbGV0ZSBJTlNFUlQgSU5UTyA8dGFibGU+IHdpdGggIigiIG9yICJWQUxV RVMiIG9yICJTRUxFQ1QiIG9yCi0JICogIlRBQkxFIiBvciAiREVGQVVMVCBW QUxVRVMiCisJICogIlRBQkxFIiBvciAiREVGQVVMVCBWQUxVRVMiIG9yICJP VkVSUklESU5HIgogCSAqLwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzMygiSU5T RVJUIiwgIklOVE8iLCBNYXRjaEFueSkpCi0JCUNPTVBMRVRFX1dJVEhfTElT VDUoIigiLCAiREVGQVVMVCBWQUxVRVMiLCAiU0VMRUNUIiwgIlRBQkxFIiwg IlZBTFVFUyIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q2KCIoIiwgIkRFRkFV TFQgVkFMVUVTIiwgIlNFTEVDVCIsICJUQUJMRSIsICJWQUxVRVMiLCAiT1ZF UlJJRElORyIpOwogCiAJLyoKIAkgKiBDb21wbGV0ZSBJTlNFUlQgSU5UTyA8 dGFibGU+IChhdHRyaWJzKSB3aXRoICJWQUxVRVMiIG9yICJTRUxFQ1QiIG9y Ci0JICogIlRBQkxFIgorCSAqICJUQUJMRSIgb3IgIk9WRVJSSURJTkciCiAJ ICovCiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJJTlNFUlQiLCAiSU5UTyIs IE1hdGNoQW55LCBNYXRjaEFueSkgJiYKIAkJCSBlbmRzX3dpdGgocHJldl93 ZCwgJyknKSkKKwkJQ09NUExFVEVfV0lUSF9MSVNUNCgiU0VMRUNUIiwgIlRB QkxFIiwgIlZBTFVFUyIsICJPVkVSUklESU5HIik7CisKKwkvKiBDb21wbGV0 ZSBPVkVSUklESU5HICovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXMxKCJPVkVS UklESU5HIikpCisJCUNPTVBMRVRFX1dJVEhfTElTVDIoIlNZU1RFTSBWQUxV RSIsICJVU0VSIFZBTFVFIik7CisKKwkvKiBDb21wbGV0ZSBhZnRlciBPVkVS UklESU5HIGNsYXVzZSAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzMygiT1ZF UlJJRElORyIsIE1hdGNoQW55LCAiVkFMVUUiKSkKIAkJQ09NUExFVEVfV0lU SF9MSVNUMygiU0VMRUNUIiwgIlRBQkxFIiwgIlZBTFVFUyIpOwogCiAJLyog SW5zZXJ0IGFuIG9wZW4gcGFyZW50aGVzaXMgYWZ0ZXIgIlZBTFVFUyIgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKaW5kZXggMTA3 NTljN2M1OC4uYzUwNDRiNGFmOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9kZXBlbmRlbmN5LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9kZXBlbmRlbmN5LmgKQEAgLTIzNywxMSArMjM3LDkgQEAgZXh0ZXJuIGxv bmcgY2hhbmdlRGVwZW5kZW5jeUZvcihPaWQgY2xhc3NJZCwgT2lkIG9iamVj dElkLAogCiBleHRlcm4gT2lkCWdldEV4dGVuc2lvbk9mT2JqZWN0KE9pZCBj bGFzc0lkLCBPaWQgb2JqZWN0SWQpOwogCi1leHRlcm4gYm9vbCBzZXF1ZW5j ZUlzT3duZWQoT2lkIHNlcUlkLCBPaWQgKnRhYmxlSWQsIGludDMyICpjb2xJ ZCk7Ci0KLWV4dGVybiB2b2lkIG1hcmtTZXF1ZW5jZVVub3duZWQoT2lkIHNl cUlkKTsKLQotZXh0ZXJuIExpc3QgKmdldE93bmVkU2VxdWVuY2VzKE9pZCBy ZWxpZCk7CitleHRlcm4gYm9vbCBzZXF1ZW5jZUlzT3duZWQoT2lkIHNlcUlk LCBjaGFyIGRlcHR5cGUsIE9pZCAqdGFibGVJZCwgaW50MzIgKmNvbElkKTsK K2V4dGVybiBMaXN0ICpnZXRPd25lZFNlcXVlbmNlcyhPaWQgcmVsaWQsIEF0 dHJOdW1iZXIgYXR0bnVtKTsKK2V4dGVybiBPaWQgZ2V0T3duZWRTZXF1ZW5j ZShPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtKTsKIAogZXh0ZXJuIE9p ZAlnZXRfY29uc3RyYWludF9pbmRleChPaWQgY29uc3RyYWludElkKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hdHRyaWJ1dGUu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYXR0cmlidXRlLmgKaW5kZXgg ZTg2MWY0YzU4OS4uMGRlYjVjODZjOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19hdHRyaWJ1dGUuaAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2F0dHJpYnV0ZS5oCkBAIC0xMzMsNiArMTMzLDkgQEAgQ0FU QUxPRyhwZ19hdHRyaWJ1dGUsMTI0OSkgQktJX0JPT1RTVFJBUCBCS0lfV0lU SE9VVF9PSURTIEJLSV9ST1dUWVBFX09JRCg3NSkgQksKIAkvKiBIYXMgREVG QVVMVCB2YWx1ZSBvciBub3QgKi8KIAlib29sCQlhdHRoYXNkZWY7CiAKKwkv KiBPbmUgb2YgdGhlIEFUVFJJQlVURV9JREVOVElUWV8qIGNvbnN0YW50cyBi ZWxvdyAqLworCWNoYXIJCWF0dGlkZW50aXR5OworCiAJLyogSXMgZHJvcHBl ZCAoaWUsIGxvZ2ljYWxseSBpbnZpc2libGUpIG9yIG5vdCAqLwogCWJvb2wJ CWF0dGlzZHJvcHBlZDsKIApAQCAtMTg4LDcgKzE5MSw3IEBAIHR5cGVkZWYg Rm9ybURhdGFfcGdfYXR0cmlidXRlICpGb3JtX3BnX2F0dHJpYnV0ZTsKICAq IC0tLS0tLS0tLS0tLS0tLS0KICAqLwogCi0jZGVmaW5lIE5hdHRzX3BnX2F0 dHJpYnV0ZQkJCQkyMQorI2RlZmluZSBOYXR0c19wZ19hdHRyaWJ1dGUJCQkJ MjIKICNkZWZpbmUgQW51bV9wZ19hdHRyaWJ1dGVfYXR0cmVsaWQJCTEKICNk ZWZpbmUgQW51bV9wZ19hdHRyaWJ1dGVfYXR0bmFtZQkJMgogI2RlZmluZSBB bnVtX3BnX2F0dHJpYnV0ZV9hdHR0eXBpZAkJMwpAQCAtMjAzLDEzICsyMDYs MTQgQEAgdHlwZWRlZiBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUgKkZvcm1fcGdf YXR0cmlidXRlOwogI2RlZmluZSBBbnVtX3BnX2F0dHJpYnV0ZV9hdHRhbGln bgkJMTIKICNkZWZpbmUgQW51bV9wZ19hdHRyaWJ1dGVfYXR0bm90bnVsbAkx MwogI2RlZmluZSBBbnVtX3BnX2F0dHJpYnV0ZV9hdHRoYXNkZWYJCTE0Ci0j ZGVmaW5lIEFudW1fcGdfYXR0cmlidXRlX2F0dGlzZHJvcHBlZAkxNQotI2Rl ZmluZSBBbnVtX3BnX2F0dHJpYnV0ZV9hdHRpc2xvY2FsCTE2Ci0jZGVmaW5l IEFudW1fcGdfYXR0cmlidXRlX2F0dGluaGNvdW50CTE3Ci0jZGVmaW5lIEFu dW1fcGdfYXR0cmlidXRlX2F0dGNvbGxhdGlvbgkxOAotI2RlZmluZSBBbnVt X3BnX2F0dHJpYnV0ZV9hdHRhY2wJCTE5Ci0jZGVmaW5lIEFudW1fcGdfYXR0 cmlidXRlX2F0dG9wdGlvbnMJMjAKLSNkZWZpbmUgQW51bV9wZ19hdHRyaWJ1 dGVfYXR0ZmR3b3B0aW9ucyAyMQorI2RlZmluZSBBbnVtX3BnX2F0dHJpYnV0 ZV9hdHRpZGVudGl0eQkxNQorI2RlZmluZSBBbnVtX3BnX2F0dHJpYnV0ZV9h dHRpc2Ryb3BwZWQJMTYKKyNkZWZpbmUgQW51bV9wZ19hdHRyaWJ1dGVfYXR0 aXNsb2NhbAkxNworI2RlZmluZSBBbnVtX3BnX2F0dHJpYnV0ZV9hdHRpbmhj b3VudAkxOAorI2RlZmluZSBBbnVtX3BnX2F0dHJpYnV0ZV9hdHRjb2xsYXRp b24JMTkKKyNkZWZpbmUgQW51bV9wZ19hdHRyaWJ1dGVfYXR0YWNsCQkyMAor I2RlZmluZSBBbnVtX3BnX2F0dHJpYnV0ZV9hdHRvcHRpb25zCTIxCisjZGVm aW5lIEFudW1fcGdfYXR0cmlidXRlX2F0dGZkd29wdGlvbnMgMjIKIAogCiAv KiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0yMjAsNCArMjI0LDkgQEAgdHlwZWRl ZiBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUgKkZvcm1fcGdfYXR0cmlidXRlOwog ICogLS0tLS0tLS0tLS0tLS0tLQogICovCiAKKworI2RlZmluZQkJICBBVFRS SUJVVEVfSURFTlRJVFlfTk9ORQkJJyAnCisjZGVmaW5lCQkgIEFUVFJJQlVU RV9JREVOVElUWV9BTFdBWVMJCSdhJworI2RlZmluZQkJICBBVFRSSUJVVEVf SURFTlRJVFlfQllfREVGQVVMVCAnZCcKKwogI2VuZGlmICAgLyogUEdfQVRU UklCVVRFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfY2xhc3MuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaApp bmRleCBkMWQ0OTNlZTA1Li41YTI4ODgzMGU4IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmgKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19jbGFzcy5oCkBAIC0xNDksNyArMTQ5LDcgQEAgdHlwZWRl ZiBGb3JtRGF0YV9wZ19jbGFzcyAqRm9ybV9wZ19jbGFzczsKICAqLwogREFU QShpbnNlcnQgT0lEID0gMTI0NyAoICBwZ190eXBlCQlQR05TUCA3MSAwIFBH VUlEIDAgMCAwIDAgMCAwIDAgZiBmIHAgciAzMCAwIHQgZiBmIGYgZiBmIGYg dCBuIGYgMyAxIF9udWxsXyBfbnVsbF8gX251bGxfKSk7CiBERVNDUigiIik7 Ci1EQVRBKGluc2VydCBPSUQgPSAxMjQ5ICggIHBnX2F0dHJpYnV0ZQlQR05T UCA3NSAwIFBHVUlEIDAgMCAwIDAgMCAwIDAgZiBmIHAgciAyMSAwIGYgZiBm IGYgZiBmIGYgdCBuIGYgMyAxIF9udWxsXyBfbnVsbF8gX251bGxfKSk7CitE QVRBKGluc2VydCBPSUQgPSAxMjQ5ICggIHBnX2F0dHJpYnV0ZQlQR05TUCA3 NSAwIFBHVUlEIDAgMCAwIDAgMCAwIDAgZiBmIHAgciAyMiAwIGYgZiBmIGYg ZiBmIGYgdCBuIGYgMyAxIF9udWxsXyBfbnVsbF8gX251bGxfKSk7CiBERVND UigiIik7CiBEQVRBKGluc2VydCBPSUQgPSAxMjU1ICggIHBnX3Byb2MJCVBH TlNQIDgxIDAgUEdVSUQgMCAwIDAgMCAwIDAgMCBmIGYgcCByIDI5IDAgdCBm IGYgZiBmIGYgZiB0IG4gZiAzIDEgX251bGxfIF9udWxsXyBfbnVsbF8pKTsK IERFU0NSKCIiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3NlcXVlbmNlLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5o CmluZGV4IDQ5YTc3YzQyZmMuLjMwNDU4NmU0OGUgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgKKysrIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvc2VxdWVuY2UuaApAQCAtNTEsNyArNTEsOSBAQCB0eXBl ZGVmIHN0cnVjdCB4bF9zZXFfcmVjCiAJLyogU0VRVUVOQ0UgVFVQTEUgREFU QSBGT0xMT1dTIEFUIFRIRSBFTkQgKi8KIH0geGxfc2VxX3JlYzsKIAorZXh0 ZXJuIGludDY0IG5leHR2YWxfaW50ZXJuYWwoT2lkIHJlbGlkLCBib29sIGNo ZWNrX3Blcm1pc3Npb25zKTsKIGV4dGVybiBEYXR1bSBuZXh0dmFsKFBHX0ZV TkNUSU9OX0FSR1MpOworZXh0ZXJuIExpc3QgKnNlcXVlbmNlX29wdGlvbnMo T2lkIHJlbGlkKTsKIAogZXh0ZXJuIE9iamVjdEFkZHJlc3MgRGVmaW5lU2Vx dWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTZXFTdG10ICpzdG10 KTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVyU2VxdWVuY2UoUGFyc2VT dGF0ZSAqcHN0YXRlLCBBbHRlclNlcVN0bXQgKnN0bXQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL25vZGVzLmgKaW5kZXggMmJjN2E1ZGYxMS4uMWRhNzRlMTQ4ZSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCkBAIC0xODgsNiArMTg4LDcgQEAgdHlw ZWRlZiBlbnVtIE5vZGVUYWcKIAlUX0Zyb21FeHByLAogCVRfT25Db25mbGlj dEV4cHIsCiAJVF9JbnRvQ2xhdXNlLAorCVRfTmV4dFZhbHVlRXhwciwKIAog CS8qCiAJICogVEFHUyBGT1IgRVhQUkVTU0lPTiBTVEFURSBOT0RFUyAoZXhl Y25vZGVzLmgpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5k ZXggYTE1ZGYyMjlhNC4uMmQ1YTUwNzRjMCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaApAQCAtMjcsNiArMjcsMTMgQEAKICNpbmNsdWRl ICJub2Rlcy9wcmltbm9kZXMuaCIKICNpbmNsdWRlICJub2Rlcy92YWx1ZS5o IgogCit0eXBlZGVmIGVudW0gT3ZlcnJpZGluZ0tpbmQKK3sKKwlPVkVSUklE SU5HX05PVF9TRVQgPSAwLAorCU9WRVJSSURJTkdfVVNFUl9WQUxVRSwKKwlP VkVSUklESU5HX1NZU1RFTV9WQUxVRQorfSBPdmVycmlkaW5nS2luZDsKKwog LyogUG9zc2libGUgc291cmNlcyBvZiBhIFF1ZXJ5ICovCiB0eXBlZGVmIGVu dW0gUXVlcnlTb3VyY2UKIHsKQEAgLTEzMCw2ICsxMzcsOCBAQCB0eXBlZGVm IHN0cnVjdCBRdWVyeQogCiAJTGlzdAkgICAqdGFyZ2V0TGlzdDsJCS8qIHRh cmdldCBsaXN0IChvZiBUYXJnZXRFbnRyeSkgKi8KIAorCU92ZXJyaWRpbmdL aW5kIG92ZXJyaWRlOwkvKiBPVkVSUklESU5HIGNsYXVzZSAqLworCiAJT25D b25mbGljdEV4cHIgKm9uQ29uZmxpY3Q7IC8qIE9OIENPTkZMSUNUIERPIFtO T1RISU5HIHwgVVBEQVRFXSAqLwogCiAJTGlzdAkgICAqcmV0dXJuaW5nTGlz dDsJLyogcmV0dXJuLXZhbHVlcyBsaXN0IChvZiBUYXJnZXRFbnRyeSkgKi8K QEAgLTYzNyw2ICs2NDYsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb2x1bW5EZWYK IAljaGFyCQlzdG9yYWdlOwkJLyogYXR0c3RvcmFnZSBzZXR0aW5nLCBvciAw IGZvciBkZWZhdWx0ICovCiAJTm9kZQkgICAqcmF3X2RlZmF1bHQ7CS8qIGRl ZmF1bHQgdmFsdWUgKHVudHJhbnNmb3JtZWQgcGFyc2UgdHJlZSkgKi8KIAlO b2RlCSAgICpjb29rZWRfZGVmYXVsdDsgLyogZGVmYXVsdCB2YWx1ZSAodHJh bnNmb3JtZWQgZXhwciB0cmVlKSAqLworCWNoYXIJCWlkZW50aXR5OwkJLyog YXR0aWRlbnRpdHkgc2V0dGluZyAqLwogCUNvbGxhdGVDbGF1c2UgKmNvbGxD bGF1c2U7CS8qIHVudHJhbnNmb3JtZWQgQ09MTEFURSBzcGVjLCBpZiBhbnkg Ki8KIAlPaWQJCQljb2xsT2lkOwkJLyogY29sbGF0aW9uIE9JRCAoSW52YWxp ZE9pZCBpZiBub3Qgc2V0KSAqLwogCUxpc3QJICAgKmNvbnN0cmFpbnRzOwkv KiBvdGhlciBjb25zdHJhaW50cyBvbiBjb2x1bW4gKi8KQEAgLTY1OCw5ICs2 NjgsMTAgQEAgdHlwZWRlZiBlbnVtIFRhYmxlTGlrZU9wdGlvbgogewogCUNS RUFURV9UQUJMRV9MSUtFX0RFRkFVTFRTID0gMSA8PCAwLAogCUNSRUFURV9U QUJMRV9MSUtFX0NPTlNUUkFJTlRTID0gMSA8PCAxLAotCUNSRUFURV9UQUJM RV9MSUtFX0lOREVYRVMgPSAxIDw8IDIsCi0JQ1JFQVRFX1RBQkxFX0xJS0Vf U1RPUkFHRSA9IDEgPDwgMywKLQlDUkVBVEVfVEFCTEVfTElLRV9DT01NRU5U UyA9IDEgPDwgNCwKKwlDUkVBVEVfVEFCTEVfTElLRV9JREVOVElUWSA9IDEg PDwgMiwKKwlDUkVBVEVfVEFCTEVfTElLRV9JTkRFWEVTID0gMSA8PCAzLAor CUNSRUFURV9UQUJMRV9MSUtFX1NUT1JBR0UgPSAxIDw8IDQsCisJQ1JFQVRF X1RBQkxFX0xJS0VfQ09NTUVOVFMgPSAxIDw8IDUsCiAJQ1JFQVRFX1RBQkxF X0xJS0VfQUxMID0gUEdfSU5UMzJfTUFYCiB9IFRhYmxlTGlrZU9wdGlvbjsK IApAQCAtMTM5OSw2ICsxNDEwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5zZXJ0 U3RtdAogCU9uQ29uZmxpY3RDbGF1c2UgKm9uQ29uZmxpY3RDbGF1c2U7IC8q IE9OIENPTkZMSUNUIGNsYXVzZSAqLwogCUxpc3QJICAgKnJldHVybmluZ0xp c3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCiAJV2l0 aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCisJT3Zl cnJpZGluZ0tpbmQgb3ZlcnJpZGU7CS8qIE9WRVJSSURJTkcgY2xhdXNlICov CiB9IEluc2VydFN0bXQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K QEAgLTE3MDgsNyArMTcyMCwxMCBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJs ZVR5cGUKIAlBVF9Ob0ZvcmNlUm93U2VjdXJpdHksCQkvKiBOTyBGT1JDRSBS T1cgU0VDVVJJVFkgKi8KIAlBVF9HZW5lcmljT3B0aW9ucywJCQkvKiBPUFRJ T05TICguLi4pICovCiAJQVRfQXR0YWNoUGFydGl0aW9uLAkJCS8qIEFUVEFD SCBQQVJUSVRJT04gKi8KLQlBVF9EZXRhY2hQYXJ0aXRpb24JCQkvKiBERVRB Q0ggUEFSVElUSU9OICovCisJQVRfRGV0YWNoUGFydGl0aW9uLAkJCS8qIERF VEFDSCBQQVJUSVRJT04gKi8KKwlBVF9BZGRJZGVudGl0eSwJCQkJLyogQURE IElERU5USVRZICovCisJQVRfU2V0SWRlbnRpdHksCQkJCS8qIFNFVCBpZGVu dGl0eSBjb2x1bW4gb3B0aW9ucyAqLworCUFUX0Ryb3BJZGVudGl0eQkJCQkv KiBEUk9QIElERU5USVRZICovCiB9IEFsdGVyVGFibGVUeXBlOwogCiB0eXBl ZGVmIHN0cnVjdCBSZXBsaWNhSWRlbnRpdHlTdG10CkBAIC0xOTg0LDYgKzE5 OTksNyBAQCB0eXBlZGVmIGVudW0gQ29uc3RyVHlwZQkJCS8qIHR5cGVzIG9m IGNvbnN0cmFpbnRzICovCiAJCQkJCQkJCSAqIGV4cGVjdCBpdCAqLwogCUNP TlNUUl9OT1ROVUxMLAogCUNPTlNUUl9ERUZBVUxULAorCUNPTlNUUl9JREVO VElUWSwKIAlDT05TVFJfQ0hFQ0ssCiAJQ09OU1RSX1BSSU1BUlksCiAJQ09O U1RSX1VOSVFVRSwKQEAgLTIwMjIsNiArMjAzOCw3IEBAIHR5cGVkZWYgc3Ry dWN0IENvbnN0cmFpbnQKIAlib29sCQlpc19ub19pbmhlcml0OwkvKiBpcyBj b25zdHJhaW50IG5vbi1pbmhlcml0YWJsZT8gKi8KIAlOb2RlCSAgICpyYXdf ZXhwcjsJCS8qIGV4cHIsIGFzIHVudHJhbnNmb3JtZWQgcGFyc2UgdHJlZSAq LwogCWNoYXIJICAgKmNvb2tlZF9leHByOwkvKiBleHByLCBhcyBub2RlVG9T dHJpbmcgcmVwcmVzZW50YXRpb24gKi8KKwljaGFyCQlnZW5lcmF0ZWRfd2hl bjsKIAogCS8qIEZpZWxkcyB1c2VkIGZvciB1bmlxdWUgY29uc3RyYWludHMg KFVOSVFVRSBhbmQgUFJJTUFSWSBLRVkpOiAqLwogCUxpc3QJICAgKmtleXM7 CQkJLyogU3RyaW5nIG5vZGVzIG5hbWluZyByZWZlcmVuY2VkIGNvbHVtbihz KSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCBkNTdi NGZhYjNkLi5iODdmZTg0NTQ1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaApAQCAtMTI5Miw2ICsxMjkyLDIwIEBAIHR5cGVkZWYgc3RydWN0 IEluZmVyZW5jZUVsZW0KIAlPaWQJCQlpbmZlcm9wY2xhc3M7CS8qIE9JRCBv ZiBhdHQgb3BjbGFzcywgb3IgSW52YWxpZE9pZCAqLwogfSBJbmZlcmVuY2VF bGVtOwogCisvKgorICogTmV4dFZhbHVlRXhwciAtIGdldCBuZXh0IHZhbHVl IGZyb20gc2VxdWVuY2UKKyAqCisgKiBUaGlzIGhhcyB0aGUgc2FtZSBlZmZl Y3QgYXMgY2FsbGluZyB0aGUgbmV4dHZhbCgpIGZ1bmN0aW9uLCBidXQgaXQg ZG9lcyBub3QKKyAqIGNoZWNrIHBlcm1pc3Npb25zIG9uIHRoZSBzZXF1ZW5j ZS4gIFRoaXMgaXMgdXNlZCBmb3IgaWRlbnRpdHkgY29sdW1ucywKKyAqIHdo ZXJlIHRoZSBzZXF1ZW5jZSBpcyBhbiBpbXBsaWNpdCBkZXBlbmRlbmN5IHdp dGhvdXQgaXRzIG93biBwZXJtaXNzaW9ucy4KKyAqLwordHlwZWRlZiBzdHJ1 Y3QgTmV4dFZhbHVlRXhwcgoreworCUV4cHIJCXhwcjsKKwlPaWQJCQlzZXFp ZDsKKwlPaWQJCQl0eXBlSWQ7Cit9IE5leHRWYWx1ZUV4cHI7CisKIC8qLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqIFRhcmdldEVudHJ5IC0KICAqCSAgIGEg dGFyZ2V0IGVudHJ5ICh1c2VkIGluIHF1ZXJ5IHRhcmdldCBsaXN0cykKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9p bmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCAyOGM0ZGFiMjU4Li4wODY0 MjA4NzFiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0xNzQs NiArMTc0LDcgQEAgUEdfS0VZV09SRCgiZnJvbSIsIEZST00sIFJFU0VSVkVE X0tFWVdPUkQpCiBQR19LRVlXT1JEKCJmdWxsIiwgRlVMTCwgVFlQRV9GVU5D X05BTUVfS0VZV09SRCkKIFBHX0tFWVdPUkQoImZ1bmN0aW9uIiwgRlVOQ1RJ T04sIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoImZ1bmN0aW9u cyIsIEZVTkNUSU9OUywgVU5SRVNFUlZFRF9LRVlXT1JEKQorUEdfS0VZV09S RCgiZ2VuZXJhdGVkIiwgR0VORVJBVEVELCBVTlJFU0VSVkVEX0tFWVdPUkQp CiBQR19LRVlXT1JEKCJnbG9iYWwiLCBHTE9CQUwsIFVOUkVTRVJWRURfS0VZ V09SRCkKIFBHX0tFWVdPUkQoImdyYW50IiwgR1JBTlQsIFJFU0VSVkVEX0tF WVdPUkQpCiBQR19LRVlXT1JEKCJncmFudGVkIiwgR1JBTlRFRCwgVU5SRVNF UlZFRF9LRVlXT1JEKQpAQCAtMjg2LDYgKzI4Nyw3IEBAIFBHX0tFWVdPUkQo Im91dGVyIiwgT1VURVJfUCwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCkKIFBH X0tFWVdPUkQoIm92ZXIiLCBPVkVSLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQ R19LRVlXT1JEKCJvdmVybGFwcyIsIE9WRVJMQVBTLCBUWVBFX0ZVTkNfTkFN RV9LRVlXT1JEKQogUEdfS0VZV09SRCgib3ZlcmxheSIsIE9WRVJMQVksIENP TF9OQU1FX0tFWVdPUkQpCitQR19LRVlXT1JEKCJvdmVycmlkaW5nIiwgT1ZF UlJJRElORywgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgib3du ZWQiLCBPV05FRCwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgi b3duZXIiLCBPV05FUiwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09S RCgicGFyYWxsZWwiLCBQQVJBTExFTCwgVU5SRVNFUlZFRF9LRVlXT1JEKQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9z cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCBiNmQxZmNhMmZh Li44ODYyOWQ5OWFhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9s c3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUu aApAQCAtNjQsNiArNjQsNyBAQCBleHRlcm4gT2lkIGdldF9vcGZhbWlseV9w cm9jKE9pZCBvcGZhbWlseSwgT2lkIGxlZnR0eXBlLCBPaWQgcmlnaHR0eXBl LAogZXh0ZXJuIGNoYXIgKmdldF9hdHRuYW1lKE9pZCByZWxpZCwgQXR0ck51 bWJlciBhdHRudW0pOwogZXh0ZXJuIGNoYXIgKmdldF9yZWxpZF9hdHRyaWJ1 dGVfbmFtZShPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtKTsKIGV4dGVy biBBdHRyTnVtYmVyIGdldF9hdHRudW0oT2lkIHJlbGlkLCBjb25zdCBjaGFy ICphdHRuYW1lKTsKK2V4dGVybiBjaGFyCWdldF9hdHRpZGVudGl0eShPaWQg cmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtKTsKIGV4dGVybiBPaWQJZ2V0X2F0 dHR5cGUoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSk7CiBleHRlcm4g aW50MzIgZ2V0X2F0dHR5cG1vZChPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0 bnVtKTsKIGV4dGVybiB2b2lkIGdldF9hdHR0eXBldHlwbW9kY29sbChPaWQg cmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtLApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGVfbGlrZS5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV90YWJsZV9saWtlLm91 dAppbmRleCBhMjViMjIxNzAzLi4zZjQwNWM5NGNlIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV90YWJsZV9saWtlLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV90YWJs ZV9saWtlLm91dApAQCAtNjYsNiArNjYsNTMgQEAgU0VMRUNUICogRlJPTSBp bmhnOyAvKiBUd28gcmVjb3JkcyB3aXRoIHRocmVlIGNvbHVtbnMgaW4gb3Jk ZXIgeD14LCB4eD10ZXh0LCB5PXkKICgyIHJvd3MpCiAKIERST1AgVEFCTEUg aW5oZzsKK0NSRUFURSBUQUJMRSB0ZXN0X2xpa2VfaWRfMSAoYSBpbnQgR0VO RVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwgYiB0ZXh0KTsKK1xkIHRlc3Rf bGlrZV9pZF8xCisgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGlj LnRlc3RfbGlrZV9pZF8xIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8ICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAg CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCBnZW5lcmF0ZWQgYWx3YXlz IGFzIGlkZW50aXR5CisgYiAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgCisKK0lOU0VSVCBJTlRPIHRlc3RfbGlrZV9pZF8xIChi KSBWQUxVRVMgKCdiMScpOworU0VMRUNUICogRlJPTSB0ZXN0X2xpa2VfaWRf MTsKKyBhIHwgYiAgCistLS0rLS0tLQorIDEgfCBiMQorKDEgcm93KQorCitD UkVBVEUgVEFCTEUgdGVzdF9saWtlX2lkXzIgKExJS0UgdGVzdF9saWtlX2lk XzEpOworXGQgdGVzdF9saWtlX2lkXzIKKyAgICAgICAgICAgVGFibGUgInB1 YmxpYy50ZXN0X2xpa2VfaWRfMiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAg IHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgYiAgICAg IHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisKK0lOU0VS VCBJTlRPIHRlc3RfbGlrZV9pZF8yIChiKSBWQUxVRVMgKCdiMicpOworRVJS T1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAiYSIgdmlvbGF0ZXMgbm90LW51 bGwgY29uc3RyYWludAorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMg KG51bGwsIGIyKS4KK1NFTEVDVCAqIEZST00gdGVzdF9saWtlX2lkXzI7ICAt LSBpZGVudGl0eSB3YXMgbm90IGNvcGllZAorIGEgfCBiIAorLS0tKy0tLQor KDAgcm93cykKKworQ1JFQVRFIFRBQkxFIHRlc3RfbGlrZV9pZF8zIChMSUtF IHRlc3RfbGlrZV9pZF8xIElOQ0xVRElORyBJREVOVElUWSk7CitcZCB0ZXN0 X2xpa2VfaWRfMworICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1Ymxp Yy50ZXN0X2xpa2VfaWRfMyIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAg IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgZ2VuZXJhdGVkIGFsd2F5 cyBhcyBpZGVudGl0eQorIGIgICAgICB8IHRleHQgICAgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorCitJTlNFUlQgSU5UTyB0ZXN0X2xpa2VfaWRfMyAo YikgVkFMVUVTICgnYjMnKTsKK1NFTEVDVCAqIEZST00gdGVzdF9saWtlX2lk XzM7ICAtLSBpZGVudGl0eSB3YXMgY29waWVkIGFuZCBhcHBsaWVkCisgYSB8 IGIgIAorLS0tKy0tLS0KKyAxIHwgYjMKKygxIHJvdykKKworRFJPUCBUQUJM RSB0ZXN0X2xpa2VfaWRfMSwgdGVzdF9saWtlX2lkXzIsIHRlc3RfbGlrZV9p ZF8zOwogQ1JFQVRFIFRBQkxFIGluaGcgKHggdGV4dCwgTElLRSBpbmh4IElO Q0xVRElORyBJTkRFWEVTLCB5IHRleHQpOyAvKiBjb3BpZXMgaW5kZXhlcyAq LwogSU5TRVJUIElOVE8gaW5oZyBWQUxVRVMgKDUsIDEwKTsKIElOU0VSVCBJ TlRPIGluaGcgVkFMVUVTICgyMCwgMTApOyAtLSBzaG91bGQgZmFpbApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pZGVudGl0eS5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2lkZW50aXR5Lm91dApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43ZGY0NmNm NzFmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9pZGVudGl0eS5vdXQKQEAgLTAsMCArMSwzMTQgQEAKK0NSRUFURSBU QUJMRSBpdGVzdDEgKGEgaW50IGdlbmVyYXRlZCBieSBkZWZhdWx0IGFzIGlk ZW50aXR5LCBiIHRleHQpOworQ1JFQVRFIFRBQkxFIGl0ZXN0MiAoYSBiaWdp bnQgZ2VuZXJhdGVkIGFsd2F5cyBhcyBpZGVudGl0eSwgYiB0ZXh0KTsKK0NS RUFURSBUQUJMRSBpdGVzdDMgKGEgc21hbGxpbnQgZ2VuZXJhdGVkIGJ5IGRl ZmF1bHQgYXMgaWRlbnRpdHkgKHN0YXJ0IHdpdGggNyBpbmNyZW1lbnQgYnkg NSksIGIgdGV4dCk7CitBTFRFUiBUQUJMRSBpdGVzdDMgQUxURVIgQ09MVU1O IGEgQUREIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFk7ICAtLSBlcnJv cgorRVJST1I6ICBjb2x1bW4gImEiIG9mIHJlbGF0aW9uICJpdGVzdDMiIGlz IGFscmVhZHkgYW4gaWRlbnRpdHkgY29sdW1uCitTRUxFQ1QgdGFibGVfbmFt ZSwgY29sdW1uX25hbWUsIGNvbHVtbl9kZWZhdWx0LCBpc19udWxsYWJsZSwg aXNfaWRlbnRpdHksIGlkZW50aXR5X2dlbmVyYXRpb24sIGlkZW50aXR5X3N0 YXJ0LCBpZGVudGl0eV9pbmNyZW1lbnQsIGlkZW50aXR5X21heGltdW0sIGlk ZW50aXR5X21pbmltdW0sIGlkZW50aXR5X2N5Y2xlIEZST00gaW5mb3JtYXRp b25fc2NoZW1hLmNvbHVtbnMgV0hFUkUgdGFibGVfbmFtZSBMSUtFICdpdGVz dF8nIE9SREVSIEJZIDEsIDI7CisgdGFibGVfbmFtZSB8IGNvbHVtbl9uYW1l IHwgY29sdW1uX2RlZmF1bHQgfCBpc19udWxsYWJsZSB8IGlzX2lkZW50aXR5 IHwgaWRlbnRpdHlfZ2VuZXJhdGlvbiB8IGlkZW50aXR5X3N0YXJ0IHwgaWRl bnRpdHlfaW5jcmVtZW50IHwgIGlkZW50aXR5X21heGltdW0gICB8IGlkZW50 aXR5X21pbmltdW0gfCBpZGVudGl0eV9jeWNsZSAKKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIGl0 ZXN0MSAgICAgfCBhICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgTk8g ICAgICAgICAgfCBZRVMgICAgICAgICB8IEJZIERFRkFVTFQgICAgICAgICAg fCAxICAgICAgICAgICAgICB8IDEgICAgICAgICAgICAgICAgICB8IDIxNDc0 ODM2NDcgICAgICAgICAgfCAxICAgICAgICAgICAgICAgIHwgTk8KKyBpdGVz dDEgICAgIHwgYiAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFlFUyAg ICAgICAgIHwgTk8gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8IE5PCisgaXRlc3Qy ICAgICB8IGEgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBOTyAgICAg ICAgICB8IFlFUyAgICAgICAgIHwgQUxXQVlTICAgICAgICAgICAgICB8IDEg ICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgIHwgOTIyMzM3MjAz Njg1NDc3NTgwNyB8IDEgICAgICAgICAgICAgICAgfCBOTworIGl0ZXN0MiAg ICAgfCBiICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgWUVTICAgICAg ICAgfCBOTyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgTk8KKyBpdGVzdDMgICAg IHwgYSAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IE5PICAgICAgICAg IHwgWUVTICAgICAgICAgfCBCWSBERUZBVUxUICAgICAgICAgIHwgNyAgICAg ICAgICAgICAgfCA1ICAgICAgICAgICAgICAgICAgfCAzMjc2NyAgICAgICAg ICAgICAgIHwgMSAgICAgICAgICAgICAgICB8IE5PCisgaXRlc3QzICAgICB8 IGIgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBZRVMgICAgICAgICB8 IE5PICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgfCBOTworKDYgcm93cykKKworLS0g aW50ZXJuYWwgc2VxdWVuY2VzIHNob3VsZCBub3QgYmUgc2hvd24gaGVyZQor U0VMRUNUIHNlcXVlbmNlX25hbWUgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEu c2VxdWVuY2VzIFdIRVJFIHNlcXVlbmNlX25hbWUgTElLRSAnaXRlc3QlJzsK KyBzZXF1ZW5jZV9uYW1lIAorLS0tLS0tLS0tLS0tLS0tCisoMCByb3dzKQor CitDUkVBVEUgVEFCTEUgaXRlc3Q0IChhIGludCwgYiB0ZXh0KTsKK0FMVEVS IFRBQkxFIGl0ZXN0NCBBTFRFUiBDT0xVTU4gYSBBREQgR0VORVJBVEVEIEFM V0FZUyBBUyBJREVOVElUWTsgIC0tIGVycm9yLCByZXF1aXJlcyBOT1QgTlVM TAorRVJST1I6ICBjb2x1bW4gImEiIG9mIHJlbGF0aW9uICJpdGVzdDQiIG11 c3QgYmUgZGVjbGFyZWQgTk9UIE5VTEwgYmVmb3JlIGlkZW50aXR5IGNhbiBi ZSBhZGRlZAorQUxURVIgVEFCTEUgaXRlc3Q0IEFMVEVSIENPTFVNTiBhIFNF VCBOT1QgTlVMTDsKK0FMVEVSIFRBQkxFIGl0ZXN0NCBBTFRFUiBDT0xVTU4g YSBBREQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWTsgIC0tIG9rCitB TFRFUiBUQUJMRSBpdGVzdDQgQUxURVIgQ09MVU1OIGEgRFJPUCBOT1QgTlVM TDsgIC0tIGVycm9yLCBkaXNhbGxvd2VkCitFUlJPUjogIGNvbHVtbiAiYSIg b2YgcmVsYXRpb24gIml0ZXN0NCIgaXMgYW4gaWRlbnRpdHkgY29sdW1uCitB TFRFUiBUQUJMRSBpdGVzdDQgQUxURVIgQ09MVU1OIGEgQUREIEdFTkVSQVRF RCBBTFdBWVMgQVMgSURFTlRJVFk7ICAtLSBlcnJvciwgYWxyZWFkeSBzZXQK K0VSUk9SOiAgY29sdW1uICJhIiBvZiByZWxhdGlvbiAiaXRlc3Q0IiBpcyBh bHJlYWR5IGFuIGlkZW50aXR5IGNvbHVtbgorQUxURVIgVEFCTEUgaXRlc3Q0 IEFMVEVSIENPTFVNTiBiIEFERCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5U SVRZOyAgLS0gZXJyb3IsIHdyb25nIGRhdGEgdHlwZQorRVJST1I6ICBpZGVu dGl0eSBjb2x1bW4gdHlwZSBtdXN0IGJlIHNtYWxsaW50LCBpbnRlZ2VyLCBv ciBiaWdpbnQKKy0tIGZvciBsYXRlcgorQUxURVIgVEFCTEUgaXRlc3Q0IEFM VEVSIENPTFVNTiBiIFNFVCBERUZBVUxUICcnOworLS0gaW52YWxpZCBjb2x1 bW4gdHlwZQorQ1JFQVRFIFRBQkxFIGl0ZXN0X2Vycl8xIChhIHRleHQgZ2Vu ZXJhdGVkIGJ5IGRlZmF1bHQgYXMgaWRlbnRpdHkpOworRVJST1I6ICBpZGVu dGl0eSBjb2x1bW4gdHlwZSBtdXN0IGJlIHNtYWxsaW50LCBpbnRlZ2VyLCBv ciBiaWdpbnQKKy0tIGR1cGxpY2F0ZSBpZGVudGl0eQorQ1JFQVRFIFRBQkxF IGl0ZXN0X2Vycl8yIChhIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzIGlkZW50 aXR5IGdlbmVyYXRlZCBieSBkZWZhdWx0IGFzIGlkZW50aXR5KTsKK0VSUk9S OiAgbXVsdGlwbGUgaWRlbnRpdHkgc3BlY2lmaWNhdGlvbnMgZm9yIGNvbHVt biAiYSIgb2YgdGFibGUgIml0ZXN0X2Vycl8yIgorTElORSAxOiAuLi5FIGl0 ZXN0X2Vycl8yIChhIGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzIGlkZW50aXR5 IGdlbmVyYXRlZCAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBjYW5ub3Qg aGF2ZSBkZWZhdWx0IGFuZCBpZGVudGl0eQorQ1JFQVRFIFRBQkxFIGl0ZXN0 X2Vycl8zIChhIGludCBkZWZhdWx0IDUgZ2VuZXJhdGVkIGJ5IGRlZmF1bHQg YXMgaWRlbnRpdHkpOworRVJST1I6ICBib3RoIGRlZmF1bHQgYW5kIGlkZW50 aXR5IHNwZWNpZmllZCBmb3IgY29sdW1uICJhIiBvZiB0YWJsZSAiaXRlc3Rf ZXJyXzMiCitMSU5FIDE6IENSRUFURSBUQUJMRSBpdGVzdF9lcnJfMyAoYSBp bnQgZGVmYXVsdCA1IGdlbmVyYXRlZCBieSBkZWZhdS4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCist LSBjYW5ub3QgY29tYmluZSBzZXJpYWwgYW5kIGlkZW50aXR5CitDUkVBVEUg VEFCTEUgaXRlc3RfZXJyXzQgKGEgc2VyaWFsIGdlbmVyYXRlZCBieSBkZWZh dWx0IGFzIGlkZW50aXR5KTsKK0VSUk9SOiAgYm90aCBkZWZhdWx0IGFuZCBp ZGVudGl0eSBzcGVjaWZpZWQgZm9yIGNvbHVtbiAiYSIgb2YgdGFibGUgIml0 ZXN0X2Vycl80IgorSU5TRVJUIElOVE8gaXRlc3QxIERFRkFVTFQgVkFMVUVT OworSU5TRVJUIElOVE8gaXRlc3QxIERFRkFVTFQgVkFMVUVTOworSU5TRVJU IElOVE8gaXRlc3QyIERFRkFVTFQgVkFMVUVTOworSU5TRVJUIElOVE8gaXRl c3QyIERFRkFVTFQgVkFMVUVTOworSU5TRVJUIElOVE8gaXRlc3QzIERFRkFV TFQgVkFMVUVTOworSU5TRVJUIElOVE8gaXRlc3QzIERFRkFVTFQgVkFMVUVT OworSU5TRVJUIElOVE8gaXRlc3Q0IERFRkFVTFQgVkFMVUVTOworSU5TRVJU IElOVE8gaXRlc3Q0IERFRkFVTFQgVkFMVUVTOworU0VMRUNUICogRlJPTSBp dGVzdDE7CisgYSB8IGIgCistLS0rLS0tCisgMSB8IAorIDIgfCAKKygyIHJv d3MpCisKK1NFTEVDVCAqIEZST00gaXRlc3QyOworIGEgfCBiIAorLS0tKy0t LQorIDEgfCAKKyAyIHwgCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIGl0 ZXN0MzsKKyBhICB8IGIgCistLS0tKy0tLQorICA3IHwgCisgMTIgfCAKKygy IHJvd3MpCisKK1NFTEVDVCAqIEZST00gaXRlc3Q0OworIGEgfCBiIAorLS0t Ky0tLQorIDEgfCAKKyAyIHwgCisoMiByb3dzKQorCistLSBPVkVSUklESU5H IHRlc3RzCitJTlNFUlQgSU5UTyBpdGVzdDEgVkFMVUVTICgxMCwgJ3h5eicp OworSU5TRVJUIElOVE8gaXRlc3QxIE9WRVJSSURJTkcgVVNFUiBWQUxVRSBW QUxVRVMgKDEwLCAneHl6Jyk7CitTRUxFQ1QgKiBGUk9NIGl0ZXN0MTsKKyBh ICB8ICBiICAKKy0tLS0rLS0tLS0KKyAgMSB8IAorICAyIHwgCisgMTAgfCB4 eXoKKyAgMyB8IHh5egorKDQgcm93cykKKworSU5TRVJUIElOVE8gaXRlc3Qy IFZBTFVFUyAoMTAsICd4eXonKTsKK0VSUk9SOiAgY2Fubm90IGluc2VydCBp bnRvIGNvbHVtbiAiYSIKK0RFVEFJTDogIENvbHVtbiAiYSIgaXMgYW4gaWRl bnRpdHkgY29sdW1uIGRlZmluZWQgYXMgR0VORVJBVEVEIEFMV0FZUy4KK0hJ TlQ6ICBVc2UgT1ZFUlJJRElORyBTWVNURU0gVkFMVUUgdG8gb3ZlcnJpZGUu CitJTlNFUlQgSU5UTyBpdGVzdDIgT1ZFUlJJRElORyBTWVNURU0gVkFMVUUg VkFMVUVTICgxMCwgJ3h5eicpOworU0VMRUNUICogRlJPTSBpdGVzdDI7Cisg YSAgfCAgYiAgCistLS0tKy0tLS0tCisgIDEgfCAKKyAgMiB8IAorIDEwIHwg eHl6CisoMyByb3dzKQorCistLSBVUERBVEUgdGVzdHMKK1VQREFURSBpdGVz dDEgU0VUIGEgPSAxMDEgV0hFUkUgYSA9IDE7CitVUERBVEUgaXRlc3QxIFNF VCBhID0gREVGQVVMVCBXSEVSRSBhID0gMjsKK1NFTEVDVCAqIEZST00gaXRl c3QxOworICBhICB8ICBiICAKKy0tLS0tKy0tLS0tCisgIDEwIHwgeHl6Cisg ICAzIHwgeHl6CisgMTAxIHwgCisgICA0IHwgCisoNCByb3dzKQorCitVUERB VEUgaXRlc3QyIFNFVCBhID0gMTAxIFdIRVJFIGEgPSAxOworRVJST1I6ICBj b2x1bW4gImEiIGNhbiBvbmx5IGJlIHVwZGF0ZWQgdG8gREVGQVVMVAorREVU QUlMOiAgQ29sdW1uICJhIiBpcyBhbiBpZGVudGl0eSBjb2x1bW4gZGVmaW5l ZCBhcyBHRU5FUkFURUQgQUxXQVlTLgorVVBEQVRFIGl0ZXN0MiBTRVQgYSA9 IERFRkFVTFQgV0hFUkUgYSA9IDI7CitTRUxFQ1QgKiBGUk9NIGl0ZXN0MjsK KyBhICB8ICBiICAKKy0tLS0rLS0tLS0KKyAgMSB8IAorIDEwIHwgeHl6Cisg IDMgfCAKKygzIHJvd3MpCisKKy0tIERST1AgSURFTlRJVFkgdGVzdHMKK0FM VEVSIFRBQkxFIGl0ZXN0NCBBTFRFUiBDT0xVTU4gYSBEUk9QIElERU5USVRZ OworQUxURVIgVEFCTEUgaXRlc3Q0IEFMVEVSIENPTFVNTiBhIERST1AgSURF TlRJVFk7ICAtLSBlcnJvcgorRVJST1I6ICBjb2x1bW4gImEiIG9mIHJlbGF0 aW9uICJpdGVzdDQiIGlzIG5vdCBhbiBpZGVudGl0eSBjb2x1bW4KK0lOU0VS VCBJTlRPIGl0ZXN0NCBERUZBVUxUIFZBTFVFUzsgIC0tIGZhaWxzIGJlY2F1 c2UgTk9UIE5VTEwgaXMgbm90IGRyb3BwZWQKK0VSUk9SOiAgbnVsbCB2YWx1 ZSBpbiBjb2x1bW4gImEiIHZpb2xhdGVzIG5vdC1udWxsIGNvbnN0cmFpbnQK K0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChudWxsLCApLgorQUxU RVIgVEFCTEUgaXRlc3Q0IEFMVEVSIENPTFVNTiBhIERST1AgTk9UIE5VTEw7 CitJTlNFUlQgSU5UTyBpdGVzdDQgREVGQVVMVCBWQUxVRVM7CitTRUxFQ1Qg KiBGUk9NIGl0ZXN0NDsKKyBhIHwgYiAKKy0tLSstLS0KKyAxIHwgCisgMiB8 IAorICAgfCAKKygzIHJvd3MpCisKKy0tIGNoZWNrIHRoYXQgc2VxdWVuY2Ug aXMgcmVtb3ZlZAorU0VMRUNUIHNlcXVlbmNlX25hbWUgRlJPTSBpdGVzdDRf YV9zZXE7CitFUlJPUjogIHJlbGF0aW9uICJpdGVzdDRfYV9zZXEiIGRvZXMg bm90IGV4aXN0CitMSU5FIDE6IFNFTEVDVCBzZXF1ZW5jZV9uYW1lIEZST00g aXRlc3Q0X2Ffc2VxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KKy0tIHRlc3Qgdmlld3MKK0NSRUFURSBUQUJMRSBpdGVzdDEwIChh IGludCBnZW5lcmF0ZWQgYnkgZGVmYXVsdCBhcyBpZGVudGl0eSwgYiB0ZXh0 KTsKK0NSRUFURSBUQUJMRSBpdGVzdDExIChhIGludCBnZW5lcmF0ZWQgYWx3 YXlzIGFzIGlkZW50aXR5LCBiIHRleHQpOworQ1JFQVRFIFZJRVcgaXRlc3R2 MTAgQVMgU0VMRUNUICogRlJPTSBpdGVzdDEwOworQ1JFQVRFIFZJRVcgaXRl c3R2MTEgQVMgU0VMRUNUICogRlJPTSBpdGVzdDExOworSU5TRVJUIElOVE8g aXRlc3R2MTAgREVGQVVMVCBWQUxVRVM7CitJTlNFUlQgSU5UTyBpdGVzdHYx MCBERUZBVUxUIFZBTFVFUzsKK0lOU0VSVCBJTlRPIGl0ZXN0djExIERFRkFV TFQgVkFMVUVTOworSU5TRVJUIElOVE8gaXRlc3R2MTEgREVGQVVMVCBWQUxV RVM7CitTRUxFQ1QgKiBGUk9NIGl0ZXN0djEwOworIGEgfCBiIAorLS0tKy0t LQorIDEgfCAKKyAyIHwgCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIGl0 ZXN0djExOworIGEgfCBiIAorLS0tKy0tLQorIDEgfCAKKyAyIHwgCisoMiBy b3dzKQorCitJTlNFUlQgSU5UTyBpdGVzdHYxMCBWQUxVRVMgKDEwLCAneHl6 Jyk7CitJTlNFUlQgSU5UTyBpdGVzdHYxMCBPVkVSUklESU5HIFVTRVIgVkFM VUUgVkFMVUVTICgxMSwgJ3h5eicpOworU0VMRUNUICogRlJPTSBpdGVzdHYx MDsKKyBhICB8ICBiICAKKy0tLS0rLS0tLS0KKyAgMSB8IAorICAyIHwgCisg MTAgfCB4eXoKKyAgMyB8IHh5egorKDQgcm93cykKKworSU5TRVJUIElOVE8g aXRlc3R2MTEgVkFMVUVTICgxMCwgJ3h5eicpOworRVJST1I6ICBjYW5ub3Qg aW5zZXJ0IGludG8gY29sdW1uICJhIgorREVUQUlMOiAgQ29sdW1uICJhIiBp cyBhbiBpZGVudGl0eSBjb2x1bW4gZGVmaW5lZCBhcyBHRU5FUkFURUQgQUxX QVlTLgorSElOVDogIFVzZSBPVkVSUklESU5HIFNZU1RFTSBWQUxVRSB0byBv dmVycmlkZS4KK0lOU0VSVCBJTlRPIGl0ZXN0djExIE9WRVJSSURJTkcgU1lT VEVNIFZBTFVFIFZBTFVFUyAoMTEsICd4eXonKTsKK1NFTEVDVCAqIEZST00g aXRlc3R2MTE7CisgYSAgfCAgYiAgCistLS0tKy0tLS0tCisgIDEgfCAKKyAg MiB8IAorIDExIHwgeHl6CisoMyByb3dzKQorCistLSB2YXJpb3VzIEFMVEVS IENPTFVNTiB0ZXN0cworLS0gZmFpbCwgbm90IGFsbG93ZWQgZm9yIGlkZW50 aXR5IGNvbHVtbnMKK0FMVEVSIFRBQkxFIGl0ZXN0MSBBTFRFUiBDT0xVTU4g YSBTRVQgREVGQVVMVCAxOworRVJST1I6ICBjb2x1bW4gImEiIG9mIHJlbGF0 aW9uICJpdGVzdDEiIGlzIGFuIGlkZW50aXR5IGNvbHVtbgorLS0gZmFpbCwg bm90IGFsbG93ZWQsIGFscmVhZHkgaGFzIGEgZGVmYXVsdAorQ1JFQVRFIFRB QkxFIGl0ZXN0NSAoYSBzZXJpYWwsIGIgdGV4dCk7CitBTFRFUiBUQUJMRSBp dGVzdDUgQUxURVIgQ09MVU1OIGEgQUREIEdFTkVSQVRFRCBBTFdBWVMgQVMg SURFTlRJVFk7CitFUlJPUjogIGNvbHVtbiAiYSIgb2YgcmVsYXRpb24gIml0 ZXN0NSIgYWxyZWFkeSBoYXMgYSBkZWZhdWx0IHZhbHVlCitBTFRFUiBUQUJM RSBpdGVzdDMgQUxURVIgQ09MVU1OIGEgVFlQRSBpbnQ7CitTRUxFQ1Qgc2Vx dHlwaWQ6OnJlZ3R5cGUgRlJPTSBwZ19zZXF1ZW5jZSBXSEVSRSBzZXFyZWxp ZCA9ICdpdGVzdDNfYV9zZXEnOjpyZWdjbGFzczsKKyBzZXF0eXBpZCAKKy0t LS0tLS0tLS0KKyBpbnRlZ2VyCisoMSByb3cpCisKK1xkIGl0ZXN0MworICAg ICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5pdGVzdDMi CisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwg ICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgCistLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8IG5vdCBudWxsIHwgZ2VuZXJhdGVkIGJ5IGRlZmF1bHQgYXMg aWRlbnRpdHkKKyBiICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAKKworQUxURVIgVEFCTEUgaXRlc3QzIEFMVEVSIENPTFVNTiBh IFRZUEUgdGV4dDsgIC0tIGVycm9yCitFUlJPUjogIGlkZW50aXR5IGNvbHVt biB0eXBlIG11c3QgYmUgc21hbGxpbnQsIGludGVnZXIsIG9yIGJpZ2ludAor LS0gQUxURVIgQ09MVU1OIC4uLiBTRVQKK0NSRUFURSBUQUJMRSBpdGVzdDYg KGEgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFksIGIgdGV4dCk7 CitJTlNFUlQgSU5UTyBpdGVzdDYgREVGQVVMVCBWQUxVRVM7CitBTFRFUiBU QUJMRSBpdGVzdDYgQUxURVIgQ09MVU1OIGEgU0VUIEdFTkVSQVRFRCBCWSBE RUZBVUxUIFNFVCBJTkNSRU1FTlQgQlkgMiBTRVQgU1RBUlQgV0lUSCAxMDAg UkVTVEFSVDsKK0lOU0VSVCBJTlRPIGl0ZXN0NiBERUZBVUxUIFZBTFVFUzsK K0lOU0VSVCBJTlRPIGl0ZXN0NiBERUZBVUxUIFZBTFVFUzsKK1NFTEVDVCAq IEZST00gaXRlc3Q2OworICBhICB8IGIgCistLS0tLSstLS0KKyAgIDEgfCAK KyAxMDAgfCAKKyAxMDIgfCAKKygzIHJvd3MpCisKK1NFTEVDVCB0YWJsZV9u YW1lLCBjb2x1bW5fbmFtZSwgaXNfaWRlbnRpdHksIGlkZW50aXR5X2dlbmVy YXRpb24gRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1ucyBXSEVSRSB0 YWJsZV9uYW1lID0gJ2l0ZXN0Nic7CisgdGFibGVfbmFtZSB8IGNvbHVtbl9u YW1lIHwgaXNfaWRlbnRpdHkgfCBpZGVudGl0eV9nZW5lcmF0aW9uIAorLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBpdGVzdDYgICAgIHwgYSAgICAgICAgICAgfCBZ RVMgICAgICAgICB8IEJZIERFRkFVTFQKKyBpdGVzdDYgICAgIHwgYiAgICAg ICAgICAgfCBOTyAgICAgICAgICB8IAorKDIgcm93cykKKworQUxURVIgVEFC TEUgaXRlc3Q2IEFMVEVSIENPTFVNTiBiIFNFVCBJTkNSRU1FTlQgQlkgMjsg IC0tIGZhaWwsIG5vdCBpZGVudGl0eQorRVJST1I6ICBjb2x1bW4gImIiIG9m IHJlbGF0aW9uICJpdGVzdDYiIGlzIG5vdCBhbiBpZGVudGl0eSBjb2x1bW4K Ky0tIHByb2hpYml0ZWQgZGlyZWN0IG1vZGlmaWNhdGlvbiBvZiBzZXF1ZW5j ZQorQUxURVIgU0VRVUVOQ0UgaXRlc3Q2X2Ffc2VxIE9XTkVEIEJZIE5PTkU7 CitFUlJPUjogIGNhbm5vdCBjaGFuZ2Ugb3duZXJzaGlwIG9mIGlkZW50aXR5 IHNlcXVlbmNlCitERVRBSUw6ICBTZXF1ZW5jZSAiaXRlc3Q2X2Ffc2VxIiBp cyBsaW5rZWQgdG8gdGFibGUgIml0ZXN0NiIuCistLSBpbmhlcml0YW5jZQor Q1JFQVRFIFRBQkxFIGl0ZXN0NyAoYSBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyBJREVOVElUWSk7CitJTlNFUlQgSU5UTyBpdGVzdDcgREVGQVVMVCBWQUxV RVM7CitTRUxFQ1QgKiBGUk9NIGl0ZXN0NzsKKyBhIAorLS0tCisgMQorKDEg cm93KQorCistLSBpZGVudGl0eSBwcm9wZXJ0eSBpcyBub3QgaW5oZXJpdGVk CitDUkVBVEUgVEFCTEUgaXRlc3Q3YSAoYiB0ZXh0KSBJTkhFUklUUyAoaXRl c3Q3KTsKKy0tIG1ha2UgY29sdW1uIGlkZW50aXR5IGluIGNoaWxkIHRhYmxl CitDUkVBVEUgVEFCTEUgaXRlc3Q3YiAoYSBpbnQpOworQ1JFQVRFIFRBQkxF IGl0ZXN0N2MgKGEgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkp IElOSEVSSVRTIChpdGVzdDdiKTsKK05PVElDRTogIG1lcmdpbmcgY29sdW1u ICJhIiB3aXRoIGluaGVyaXRlZCBkZWZpbml0aW9uCitJTlNFUlQgSU5UTyBp dGVzdDdjIERFRkFVTFQgVkFMVUVTOworU0VMRUNUICogRlJPTSBpdGVzdDdj OworIGEgCistLS0KKyAxCisoMSByb3cpCisKK0NSRUFURSBUQUJMRSBpdGVz dDdkIChhIGludCBub3QgbnVsbCk7CitDUkVBVEUgVEFCTEUgaXRlc3Q3ZSAo KSBJTkhFUklUUyAoaXRlc3Q3ZCk7CitBTFRFUiBUQUJMRSBpdGVzdDdkIEFM VEVSIENPTFVNTiBhIEFERCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZ OworQUxURVIgVEFCTEUgaXRlc3Q3ZCBBREQgQ09MVU1OIGIgaW50IEdFTkVS QVRFRCBBTFdBWVMgQVMgSURFTlRJVFk7ICAtLSBlcnJvcgorRVJST1I6ICBj YW5ub3QgcmVjdXJzaXZlbHkgYWRkIGlkZW50aXR5IGNvbHVtbiB0byB0YWJs ZSB0aGF0IGhhcyBjaGlsZCB0YWJsZXMKK1NFTEVDVCB0YWJsZV9uYW1lLCBj b2x1bW5fbmFtZSwgaXNfbnVsbGFibGUsIGlzX2lkZW50aXR5LCBpZGVudGl0 eV9nZW5lcmF0aW9uIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMg V0hFUkUgdGFibGVfbmFtZSBMSUtFICdpdGVzdDclJyBPUkRFUiBCWSAxLCAy OworIHRhYmxlX25hbWUgfCBjb2x1bW5fbmFtZSB8IGlzX251bGxhYmxlIHwg aXNfaWRlbnRpdHkgfCBpZGVudGl0eV9nZW5lcmF0aW9uIAorLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGl0ZXN0NyAgICAgfCBhICAgICAg ICAgICB8IE5PICAgICAgICAgIHwgWUVTICAgICAgICAgfCBBTFdBWVMKKyBp dGVzdDdhICAgIHwgYSAgICAgICAgICAgfCBOTyAgICAgICAgICB8IE5PICAg ICAgICAgIHwgCisgaXRlc3Q3YSAgICB8IGIgICAgICAgICAgIHwgWUVTICAg ICAgICAgfCBOTyAgICAgICAgICB8IAorIGl0ZXN0N2IgICAgfCBhICAgICAg ICAgICB8IFlFUyAgICAgICAgIHwgTk8gICAgICAgICAgfCAKKyBpdGVzdDdj ICAgIHwgYSAgICAgICAgICAgfCBOTyAgICAgICAgICB8IFlFUyAgICAgICAg IHwgQUxXQVlTCisgaXRlc3Q3ZCAgICB8IGEgICAgICAgICAgIHwgTk8gICAg ICAgICAgfCBZRVMgICAgICAgICB8IEFMV0FZUworIGl0ZXN0N2UgICAgfCBh ICAgICAgICAgICB8IE5PICAgICAgICAgIHwgTk8gICAgICAgICAgfCAKKyg3 IHJvd3MpCisKKy0tIFRoZXNlIEFMVEVSIFRBQkxFIHZhcmlhbnRzIHdpbGwg bm90IHJlY3Vyc2UuCitBTFRFUiBUQUJMRSBpdGVzdDcgQUxURVIgQ09MVU1O IGEgU0VUIEdFTkVSQVRFRCBCWSBERUZBVUxUOworQUxURVIgVEFCTEUgaXRl c3Q3IEFMVEVSIENPTFVNTiBhIFJFU1RBUlQ7CitBTFRFUiBUQUJMRSBpdGVz dDcgQUxURVIgQ09MVU1OIGEgRFJPUCBJREVOVElUWTsKKy0tIHByaXZpbGVn ZXMKK0NSRUFURSBVU0VSIHJlZ3Jlc3NfdXNlcjE7CitDUkVBVEUgVEFCTEUg aXRlc3Q4IChhIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLCBi IHRleHQpOworR1JBTlQgU0VMRUNULCBJTlNFUlQgT04gaXRlc3Q4IFRPIHJl Z3Jlc3NfdXNlcjE7CitTRVQgUk9MRSByZWdyZXNzX3VzZXIxOworSU5TRVJU IElOVE8gaXRlc3Q4IERFRkFVTFQgVkFMVUVTOworU0VMRUNUICogRlJPTSBp dGVzdDg7CisgYSB8IGIgCistLS0rLS0tCisgMSB8IAorKDEgcm93KQorCitS RVNFVCBST0xFOworRFJPUCBUQUJMRSBpdGVzdDg7CitEUk9QIFVTRVIgcmVn cmVzc191c2VyMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc2VxdWVuY2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zZXF1ZW5jZS5vdXQKaW5kZXggZjMzOTQ4OTE1MS4uNDY5YzA4MmFkMSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXF1ZW5j ZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZXF1ZW5j ZS5vdXQKQEAgLTIwLDggKzIwLDggQEAgRVJST1I6ICBDQUNIRSAoMCkgbXVz dCBiZSBncmVhdGVyIHRoYW4gemVybwogQ1JFQVRFIFNFUVVFTkNFIHNlcXVl bmNlX3Rlc3R4IE9XTkVEIEJZIG5vYm9keTsgIC0tIG5vbnNlbnNlIHdvcmQK IEVSUk9SOiAgaW52YWxpZCBPV05FRCBCWSBvcHRpb24KIEhJTlQ6ICBTcGVj aWZ5IE9XTkVEIEJZIHRhYmxlLmNvbHVtbiBvciBPV05FRCBCWSBOT05FLgot Q1JFQVRFIFNFUVVFTkNFIHNlcXVlbmNlX3Rlc3R4IE9XTkVEIEJZIHBnX3Rh Ymxlcy50YWJsZW5hbWU7ICAtLSBub3QgYSB0YWJsZQotRVJST1I6ICByZWZl cmVuY2VkIHJlbGF0aW9uICJwZ190YWJsZXMiIGlzIG5vdCBhIHRhYmxlIG9y IGZvcmVpZ24gdGFibGUKK0NSRUFURSBTRVFVRU5DRSBzZXF1ZW5jZV90ZXN0 eCBPV05FRCBCWSBwZ19jbGFzc19vaWRfaW5kZXgub2lkOyAgLS0gbm90IGEg dGFibGUKK0VSUk9SOiAgcmVmZXJlbmNlZCByZWxhdGlvbiAicGdfY2xhc3Nf b2lkX2luZGV4IiBpcyBub3QgYSB0YWJsZSBvciBmb3JlaWduIHRhYmxlCiBD UkVBVEUgU0VRVUVOQ0Ugc2VxdWVuY2VfdGVzdHggT1dORUQgQlkgcGdfY2xh c3MucmVsbmFtZTsgIC0tIG5vdCBzYW1lIHNjaGVtYQogRVJST1I6ICBzZXF1 ZW5jZSBtdXN0IGJlIGluIHNhbWUgc2NoZW1hIGFzIHRhYmxlIGl0IGlzIGxp bmtlZCB0bwogQ1JFQVRFIFRBQkxFIHNlcXVlbmNlX3Rlc3RfdGFibGUgKGEg aW50KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv dHJ1bmNhdGUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cnVu Y2F0ZS5vdXQKaW5kZXggODE2MTJkOGM4OC4uYjY1MjU2MmY1YiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cnVuY2F0ZS5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cnVuY2F0ZS5vdXQK QEAgLTM5Myw2ICszOTMsMzYgQEAgU0VMRUNUICogRlJPTSB0cnVuY2F0ZV9h OwogICAyIHwgIDM0CiAoMiByb3dzKQogCitDUkVBVEUgVEFCTEUgdHJ1bmNh dGVfYiAoaWQgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkgKFNU QVJUIFdJVEggNDQpKTsKK0lOU0VSVCBJTlRPIHRydW5jYXRlX2IgREVGQVVM VCBWQUxVRVM7CitJTlNFUlQgSU5UTyB0cnVuY2F0ZV9iIERFRkFVTFQgVkFM VUVTOworU0VMRUNUICogRlJPTSB0cnVuY2F0ZV9iOworIGlkIAorLS0tLQor IDQ0CisgNDUKKygyIHJvd3MpCisKK1RSVU5DQVRFIHRydW5jYXRlX2I7CitJ TlNFUlQgSU5UTyB0cnVuY2F0ZV9iIERFRkFVTFQgVkFMVUVTOworSU5TRVJU IElOVE8gdHJ1bmNhdGVfYiBERUZBVUxUIFZBTFVFUzsKK1NFTEVDVCAqIEZS T00gdHJ1bmNhdGVfYjsKKyBpZCAKKy0tLS0KKyA0NgorIDQ3CisoMiByb3dz KQorCitUUlVOQ0FURSB0cnVuY2F0ZV9iIFJFU1RBUlQgSURFTlRJVFk7CitJ TlNFUlQgSU5UTyB0cnVuY2F0ZV9iIERFRkFVTFQgVkFMVUVTOworSU5TRVJU IElOVE8gdHJ1bmNhdGVfYiBERUZBVUxUIFZBTFVFUzsKK1NFTEVDVCAqIEZS T00gdHJ1bmNhdGVfYjsKKyBpZCAKKy0tLS0KKyA0NAorIDQ1CisoMiByb3dz KQorCiAtLSBjaGVjayByb2xsYmFjayBvZiBhIFJFU1RBUlQgSURFTlRJVFkg b3BlcmF0aW9uCiBCRUdJTjsKIFRSVU5DQVRFIHRydW5jYXRlX2EgUkVTVEFS VCBJREVOVElUWTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCmluZGV4IDM4NzQzZDk4YzMuLmJmYzE3NzA1ZWEgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTExLDYg KzExMSwxMSBAQCB0ZXN0OiBzZWxlY3Rfdmlld3MgcG9ydGFsc19wMiBmb3Jl aWduX2tleSBjbHVzdGVyIGRlcGVuZGVuY3kgZ3VjIGJpdG1hcG9wcyBjb21i bwogIyAtLS0tLS0tLS0tCiB0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3Nx bCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgd2l0aG91 dF9vaWQgY29udmVyc2lvbiB0cnVuY2F0ZSBhbHRlcl90YWJsZSBzZXF1ZW5j ZSBwb2x5bW9ycGhpc20gcm93dHlwZXMgcmV0dXJuaW5nIGxhcmdlb2JqZWN0 IHdpdGggeG1sCiAKKyMgLS0tLS0tLS0tLQorIyBBbm90aGVyIGdyb3VwIG9m IHBhcmFsbGVsIHRlc3RzCisjIC0tLS0tLS0tLS0KK3Rlc3Q6IGlkZW50aXR5 CisKICMgZXZlbnQgdHJpZ2dlcnMgY2Fubm90IHJ1biBjb25jdXJyZW50bHkg d2l0aCBhbnkgdGVzdCB0aGF0IHJ1bnMgRERMCiB0ZXN0OiBldmVudF90cmln Z2VyCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3Nj aGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUKaW5k ZXggZDlmNjRjMjg3My4uZjQ1MWUzYTQyMiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zZXJpYWxfc2NoZWR1bGUKQEAgLTE2OSw2ICsxNjksNyBAQCB0ZXN0 OiBjb252ZXJzaW9uCiB0ZXN0OiB0cnVuY2F0ZQogdGVzdDogYWx0ZXJfdGFi bGUKIHRlc3Q6IHNlcXVlbmNlCit0ZXN0OiBpZGVudGl0eQogdGVzdDogcG9s eW1vcnBoaXNtCiB0ZXN0OiByb3d0eXBlcwogdGVzdDogcmV0dXJuaW5nCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfdGFibGVf bGlrZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfdGFibGVf bGlrZS5zcWwKaW5kZXggOTAwY2E4MDRjYi4uNTU3MDQwYmJlNyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlX2xpa2Uu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV90YWJsZV9s aWtlLnNxbApAQCAtMzcsNiArMzcsMjAgQEAgQ1JFQVRFIFRBQkxFIGluaGcg KHggdGV4dCwgTElLRSBpbmh4IElOQ0xVRElORyBDT05TVFJBSU5UUywgeSB0 ZXh0KTsgLyogQ29waWVzIGMKIFNFTEVDVCAqIEZST00gaW5oZzsgLyogVHdv IHJlY29yZHMgd2l0aCB0aHJlZSBjb2x1bW5zIGluIG9yZGVyIHg9eCwgeHg9 dGV4dCwgeT15ICovCiBEUk9QIFRBQkxFIGluaGc7CiAKK0NSRUFURSBUQUJM RSB0ZXN0X2xpa2VfaWRfMSAoYSBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyBJ REVOVElUWSwgYiB0ZXh0KTsKK1xkIHRlc3RfbGlrZV9pZF8xCitJTlNFUlQg SU5UTyB0ZXN0X2xpa2VfaWRfMSAoYikgVkFMVUVTICgnYjEnKTsKK1NFTEVD VCAqIEZST00gdGVzdF9saWtlX2lkXzE7CitDUkVBVEUgVEFCTEUgdGVzdF9s aWtlX2lkXzIgKExJS0UgdGVzdF9saWtlX2lkXzEpOworXGQgdGVzdF9saWtl X2lkXzIKK0lOU0VSVCBJTlRPIHRlc3RfbGlrZV9pZF8yIChiKSBWQUxVRVMg KCdiMicpOworU0VMRUNUICogRlJPTSB0ZXN0X2xpa2VfaWRfMjsgIC0tIGlk ZW50aXR5IHdhcyBub3QgY29waWVkCitDUkVBVEUgVEFCTEUgdGVzdF9saWtl X2lkXzMgKExJS0UgdGVzdF9saWtlX2lkXzEgSU5DTFVESU5HIElERU5USVRZ KTsKK1xkIHRlc3RfbGlrZV9pZF8zCitJTlNFUlQgSU5UTyB0ZXN0X2xpa2Vf aWRfMyAoYikgVkFMVUVTICgnYjMnKTsKK1NFTEVDVCAqIEZST00gdGVzdF9s aWtlX2lkXzM7ICAtLSBpZGVudGl0eSB3YXMgY29waWVkIGFuZCBhcHBsaWVk CitEUk9QIFRBQkxFIHRlc3RfbGlrZV9pZF8xLCB0ZXN0X2xpa2VfaWRfMiwg dGVzdF9saWtlX2lkXzM7CisKIENSRUFURSBUQUJMRSBpbmhnICh4IHRleHQs IExJS0UgaW5oeCBJTkNMVURJTkcgSU5ERVhFUywgeSB0ZXh0KTsgLyogY29w aWVzIGluZGV4ZXMgKi8KIElOU0VSVCBJTlRPIGluaGcgVkFMVUVTICg1LCAx MCk7CiBJTlNFUlQgSU5UTyBpbmhnIFZBTFVFUyAoMjAsIDEwKTsgLS0gc2hv dWxkIGZhaWwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2lk ZW50aXR5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2lkZW50aXR5LnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lZmNk MmFhMWNjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvaWRlbnRpdHkuc3FsCkBAIC0wLDAgKzEsMTg3IEBACitDUkVBVEUgVEFC TEUgaXRlc3QxIChhIGludCBnZW5lcmF0ZWQgYnkgZGVmYXVsdCBhcyBpZGVu dGl0eSwgYiB0ZXh0KTsKK0NSRUFURSBUQUJMRSBpdGVzdDIgKGEgYmlnaW50 IGdlbmVyYXRlZCBhbHdheXMgYXMgaWRlbnRpdHksIGIgdGV4dCk7CitDUkVB VEUgVEFCTEUgaXRlc3QzIChhIHNtYWxsaW50IGdlbmVyYXRlZCBieSBkZWZh dWx0IGFzIGlkZW50aXR5IChzdGFydCB3aXRoIDcgaW5jcmVtZW50IGJ5IDUp LCBiIHRleHQpOworQUxURVIgVEFCTEUgaXRlc3QzIEFMVEVSIENPTFVNTiBh IEFERCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZOyAgLS0gZXJyb3IK KworU0VMRUNUIHRhYmxlX25hbWUsIGNvbHVtbl9uYW1lLCBjb2x1bW5fZGVm YXVsdCwgaXNfbnVsbGFibGUsIGlzX2lkZW50aXR5LCBpZGVudGl0eV9nZW5l cmF0aW9uLCBpZGVudGl0eV9zdGFydCwgaWRlbnRpdHlfaW5jcmVtZW50LCBp ZGVudGl0eV9tYXhpbXVtLCBpZGVudGl0eV9taW5pbXVtLCBpZGVudGl0eV9j eWNsZSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIFdIRVJFIHRh YmxlX25hbWUgTElLRSAnaXRlc3RfJyBPUkRFUiBCWSAxLCAyOworCistLSBp bnRlcm5hbCBzZXF1ZW5jZXMgc2hvdWxkIG5vdCBiZSBzaG93biBoZXJlCitT RUxFQ1Qgc2VxdWVuY2VfbmFtZSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5z ZXF1ZW5jZXMgV0hFUkUgc2VxdWVuY2VfbmFtZSBMSUtFICdpdGVzdCUnOwor CitDUkVBVEUgVEFCTEUgaXRlc3Q0IChhIGludCwgYiB0ZXh0KTsKK0FMVEVS IFRBQkxFIGl0ZXN0NCBBTFRFUiBDT0xVTU4gYSBBREQgR0VORVJBVEVEIEFM V0FZUyBBUyBJREVOVElUWTsgIC0tIGVycm9yLCByZXF1aXJlcyBOT1QgTlVM TAorQUxURVIgVEFCTEUgaXRlc3Q0IEFMVEVSIENPTFVNTiBhIFNFVCBOT1Qg TlVMTDsKK0FMVEVSIFRBQkxFIGl0ZXN0NCBBTFRFUiBDT0xVTU4gYSBBREQg R0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWTsgIC0tIG9rCitBTFRFUiBU QUJMRSBpdGVzdDQgQUxURVIgQ09MVU1OIGEgRFJPUCBOT1QgTlVMTDsgIC0t IGVycm9yLCBkaXNhbGxvd2VkCitBTFRFUiBUQUJMRSBpdGVzdDQgQUxURVIg Q09MVU1OIGEgQUREIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFk7ICAt LSBlcnJvciwgYWxyZWFkeSBzZXQKK0FMVEVSIFRBQkxFIGl0ZXN0NCBBTFRF UiBDT0xVTU4gYiBBREQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWTsg IC0tIGVycm9yLCB3cm9uZyBkYXRhIHR5cGUKKworLS0gZm9yIGxhdGVyCitB TFRFUiBUQUJMRSBpdGVzdDQgQUxURVIgQ09MVU1OIGIgU0VUIERFRkFVTFQg Jyc7CisKKy0tIGludmFsaWQgY29sdW1uIHR5cGUKK0NSRUFURSBUQUJMRSBp dGVzdF9lcnJfMSAoYSB0ZXh0IGdlbmVyYXRlZCBieSBkZWZhdWx0IGFzIGlk ZW50aXR5KTsKKworLS0gZHVwbGljYXRlIGlkZW50aXR5CitDUkVBVEUgVEFC TEUgaXRlc3RfZXJyXzIgKGEgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgaWRl bnRpdHkgZ2VuZXJhdGVkIGJ5IGRlZmF1bHQgYXMgaWRlbnRpdHkpOworCist LSBjYW5ub3QgaGF2ZSBkZWZhdWx0IGFuZCBpZGVudGl0eQorQ1JFQVRFIFRB QkxFIGl0ZXN0X2Vycl8zIChhIGludCBkZWZhdWx0IDUgZ2VuZXJhdGVkIGJ5 IGRlZmF1bHQgYXMgaWRlbnRpdHkpOworCistLSBjYW5ub3QgY29tYmluZSBz ZXJpYWwgYW5kIGlkZW50aXR5CitDUkVBVEUgVEFCTEUgaXRlc3RfZXJyXzQg KGEgc2VyaWFsIGdlbmVyYXRlZCBieSBkZWZhdWx0IGFzIGlkZW50aXR5KTsK KworSU5TRVJUIElOVE8gaXRlc3QxIERFRkFVTFQgVkFMVUVTOworSU5TRVJU IElOVE8gaXRlc3QxIERFRkFVTFQgVkFMVUVTOworSU5TRVJUIElOVE8gaXRl c3QyIERFRkFVTFQgVkFMVUVTOworSU5TRVJUIElOVE8gaXRlc3QyIERFRkFV TFQgVkFMVUVTOworSU5TRVJUIElOVE8gaXRlc3QzIERFRkFVTFQgVkFMVUVT OworSU5TRVJUIElOVE8gaXRlc3QzIERFRkFVTFQgVkFMVUVTOworSU5TRVJU IElOVE8gaXRlc3Q0IERFRkFVTFQgVkFMVUVTOworSU5TRVJUIElOVE8gaXRl c3Q0IERFRkFVTFQgVkFMVUVTOworCitTRUxFQ1QgKiBGUk9NIGl0ZXN0MTsK K1NFTEVDVCAqIEZST00gaXRlc3QyOworU0VMRUNUICogRlJPTSBpdGVzdDM7 CitTRUxFQ1QgKiBGUk9NIGl0ZXN0NDsKKworCistLSBPVkVSUklESU5HIHRl c3RzCisKK0lOU0VSVCBJTlRPIGl0ZXN0MSBWQUxVRVMgKDEwLCAneHl6Jyk7 CitJTlNFUlQgSU5UTyBpdGVzdDEgT1ZFUlJJRElORyBVU0VSIFZBTFVFIFZB TFVFUyAoMTAsICd4eXonKTsKKworU0VMRUNUICogRlJPTSBpdGVzdDE7CisK K0lOU0VSVCBJTlRPIGl0ZXN0MiBWQUxVRVMgKDEwLCAneHl6Jyk7CitJTlNF UlQgSU5UTyBpdGVzdDIgT1ZFUlJJRElORyBTWVNURU0gVkFMVUUgVkFMVUVT ICgxMCwgJ3h5eicpOworCitTRUxFQ1QgKiBGUk9NIGl0ZXN0MjsKKworCist LSBVUERBVEUgdGVzdHMKKworVVBEQVRFIGl0ZXN0MSBTRVQgYSA9IDEwMSBX SEVSRSBhID0gMTsKK1VQREFURSBpdGVzdDEgU0VUIGEgPSBERUZBVUxUIFdI RVJFIGEgPSAyOworU0VMRUNUICogRlJPTSBpdGVzdDE7CisKK1VQREFURSBp dGVzdDIgU0VUIGEgPSAxMDEgV0hFUkUgYSA9IDE7CitVUERBVEUgaXRlc3Qy IFNFVCBhID0gREVGQVVMVCBXSEVSRSBhID0gMjsKK1NFTEVDVCAqIEZST00g aXRlc3QyOworCisKKy0tIERST1AgSURFTlRJVFkgdGVzdHMKKworQUxURVIg VEFCTEUgaXRlc3Q0IEFMVEVSIENPTFVNTiBhIERST1AgSURFTlRJVFk7CitB TFRFUiBUQUJMRSBpdGVzdDQgQUxURVIgQ09MVU1OIGEgRFJPUCBJREVOVElU WTsgIC0tIGVycm9yCisKK0lOU0VSVCBJTlRPIGl0ZXN0NCBERUZBVUxUIFZB TFVFUzsgIC0tIGZhaWxzIGJlY2F1c2UgTk9UIE5VTEwgaXMgbm90IGRyb3Bw ZWQKK0FMVEVSIFRBQkxFIGl0ZXN0NCBBTFRFUiBDT0xVTU4gYSBEUk9QIE5P VCBOVUxMOworSU5TRVJUIElOVE8gaXRlc3Q0IERFRkFVTFQgVkFMVUVTOwor U0VMRUNUICogRlJPTSBpdGVzdDQ7CisKKy0tIGNoZWNrIHRoYXQgc2VxdWVu Y2UgaXMgcmVtb3ZlZAorU0VMRUNUIHNlcXVlbmNlX25hbWUgRlJPTSBpdGVz dDRfYV9zZXE7CisKKworLS0gdGVzdCB2aWV3cworCitDUkVBVEUgVEFCTEUg aXRlc3QxMCAoYSBpbnQgZ2VuZXJhdGVkIGJ5IGRlZmF1bHQgYXMgaWRlbnRp dHksIGIgdGV4dCk7CitDUkVBVEUgVEFCTEUgaXRlc3QxMSAoYSBpbnQgZ2Vu ZXJhdGVkIGFsd2F5cyBhcyBpZGVudGl0eSwgYiB0ZXh0KTsKKworQ1JFQVRF IFZJRVcgaXRlc3R2MTAgQVMgU0VMRUNUICogRlJPTSBpdGVzdDEwOworQ1JF QVRFIFZJRVcgaXRlc3R2MTEgQVMgU0VMRUNUICogRlJPTSBpdGVzdDExOwor CitJTlNFUlQgSU5UTyBpdGVzdHYxMCBERUZBVUxUIFZBTFVFUzsKK0lOU0VS VCBJTlRPIGl0ZXN0djEwIERFRkFVTFQgVkFMVUVTOworCitJTlNFUlQgSU5U TyBpdGVzdHYxMSBERUZBVUxUIFZBTFVFUzsKK0lOU0VSVCBJTlRPIGl0ZXN0 djExIERFRkFVTFQgVkFMVUVTOworCitTRUxFQ1QgKiBGUk9NIGl0ZXN0djEw OworU0VMRUNUICogRlJPTSBpdGVzdHYxMTsKKworSU5TRVJUIElOVE8gaXRl c3R2MTAgVkFMVUVTICgxMCwgJ3h5eicpOworSU5TRVJUIElOVE8gaXRlc3R2 MTAgT1ZFUlJJRElORyBVU0VSIFZBTFVFIFZBTFVFUyAoMTEsICd4eXonKTsK KworU0VMRUNUICogRlJPTSBpdGVzdHYxMDsKKworSU5TRVJUIElOVE8gaXRl c3R2MTEgVkFMVUVTICgxMCwgJ3h5eicpOworSU5TRVJUIElOVE8gaXRlc3R2 MTEgT1ZFUlJJRElORyBTWVNURU0gVkFMVUUgVkFMVUVTICgxMSwgJ3h5eicp OworCitTRUxFQ1QgKiBGUk9NIGl0ZXN0djExOworCisKKy0tIHZhcmlvdXMg QUxURVIgQ09MVU1OIHRlc3RzCisKKy0tIGZhaWwsIG5vdCBhbGxvd2VkIGZv ciBpZGVudGl0eSBjb2x1bW5zCitBTFRFUiBUQUJMRSBpdGVzdDEgQUxURVIg Q09MVU1OIGEgU0VUIERFRkFVTFQgMTsKKworLS0gZmFpbCwgbm90IGFsbG93 ZWQsIGFscmVhZHkgaGFzIGEgZGVmYXVsdAorQ1JFQVRFIFRBQkxFIGl0ZXN0 NSAoYSBzZXJpYWwsIGIgdGV4dCk7CitBTFRFUiBUQUJMRSBpdGVzdDUgQUxU RVIgQ09MVU1OIGEgQUREIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFk7 CisKK0FMVEVSIFRBQkxFIGl0ZXN0MyBBTFRFUiBDT0xVTU4gYSBUWVBFIGlu dDsKK1NFTEVDVCBzZXF0eXBpZDo6cmVndHlwZSBGUk9NIHBnX3NlcXVlbmNl IFdIRVJFIHNlcXJlbGlkID0gJ2l0ZXN0M19hX3NlcSc6OnJlZ2NsYXNzOwor XGQgaXRlc3QzCisKK0FMVEVSIFRBQkxFIGl0ZXN0MyBBTFRFUiBDT0xVTU4g YSBUWVBFIHRleHQ7ICAtLSBlcnJvcgorCisKKy0tIEFMVEVSIENPTFVNTiAu Li4gU0VUCisKK0NSRUFURSBUQUJMRSBpdGVzdDYgKGEgaW50IEdFTkVSQVRF RCBBTFdBWVMgQVMgSURFTlRJVFksIGIgdGV4dCk7CitJTlNFUlQgSU5UTyBp dGVzdDYgREVGQVVMVCBWQUxVRVM7CisKK0FMVEVSIFRBQkxFIGl0ZXN0NiBB TFRFUiBDT0xVTU4gYSBTRVQgR0VORVJBVEVEIEJZIERFRkFVTFQgU0VUIElO Q1JFTUVOVCBCWSAyIFNFVCBTVEFSVCBXSVRIIDEwMCBSRVNUQVJUOworSU5T RVJUIElOVE8gaXRlc3Q2IERFRkFVTFQgVkFMVUVTOworSU5TRVJUIElOVE8g aXRlc3Q2IERFRkFVTFQgVkFMVUVTOworU0VMRUNUICogRlJPTSBpdGVzdDY7 CisKK1NFTEVDVCB0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgaXNfaWRlbnRp dHksIGlkZW50aXR5X2dlbmVyYXRpb24gRlJPTSBpbmZvcm1hdGlvbl9zY2hl bWEuY29sdW1ucyBXSEVSRSB0YWJsZV9uYW1lID0gJ2l0ZXN0Nic7CisKK0FM VEVSIFRBQkxFIGl0ZXN0NiBBTFRFUiBDT0xVTU4gYiBTRVQgSU5DUkVNRU5U IEJZIDI7ICAtLSBmYWlsLCBub3QgaWRlbnRpdHkKKworCistLSBwcm9oaWJp dGVkIGRpcmVjdCBtb2RpZmljYXRpb24gb2Ygc2VxdWVuY2UKKworQUxURVIg U0VRVUVOQ0UgaXRlc3Q2X2Ffc2VxIE9XTkVEIEJZIE5PTkU7CisKKworLS0g aW5oZXJpdGFuY2UKKworQ1JFQVRFIFRBQkxFIGl0ZXN0NyAoYSBpbnQgR0VO RVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSk7CitJTlNFUlQgSU5UTyBpdGVz dDcgREVGQVVMVCBWQUxVRVM7CitTRUxFQ1QgKiBGUk9NIGl0ZXN0NzsKKwor LS0gaWRlbnRpdHkgcHJvcGVydHkgaXMgbm90IGluaGVyaXRlZAorQ1JFQVRF IFRBQkxFIGl0ZXN0N2EgKGIgdGV4dCkgSU5IRVJJVFMgKGl0ZXN0Nyk7CisK Ky0tIG1ha2UgY29sdW1uIGlkZW50aXR5IGluIGNoaWxkIHRhYmxlCitDUkVB VEUgVEFCTEUgaXRlc3Q3YiAoYSBpbnQpOworQ1JFQVRFIFRBQkxFIGl0ZXN0 N2MgKGEgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkpIElOSEVS SVRTIChpdGVzdDdiKTsKK0lOU0VSVCBJTlRPIGl0ZXN0N2MgREVGQVVMVCBW QUxVRVM7CitTRUxFQ1QgKiBGUk9NIGl0ZXN0N2M7CisKK0NSRUFURSBUQUJM RSBpdGVzdDdkIChhIGludCBub3QgbnVsbCk7CitDUkVBVEUgVEFCTEUgaXRl c3Q3ZSAoKSBJTkhFUklUUyAoaXRlc3Q3ZCk7CitBTFRFUiBUQUJMRSBpdGVz dDdkIEFMVEVSIENPTFVNTiBhIEFERCBHRU5FUkFURUQgQUxXQVlTIEFTIElE RU5USVRZOworQUxURVIgVEFCTEUgaXRlc3Q3ZCBBREQgQ09MVU1OIGIgaW50 IEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFk7ICAtLSBlcnJvcgorCitT RUxFQ1QgdGFibGVfbmFtZSwgY29sdW1uX25hbWUsIGlzX251bGxhYmxlLCBp c19pZGVudGl0eSwgaWRlbnRpdHlfZ2VuZXJhdGlvbiBGUk9NIGluZm9ybWF0 aW9uX3NjaGVtYS5jb2x1bW5zIFdIRVJFIHRhYmxlX25hbWUgTElLRSAnaXRl c3Q3JScgT1JERVIgQlkgMSwgMjsKKworLS0gVGhlc2UgQUxURVIgVEFCTEUg dmFyaWFudHMgd2lsbCBub3QgcmVjdXJzZS4KK0FMVEVSIFRBQkxFIGl0ZXN0 NyBBTFRFUiBDT0xVTU4gYSBTRVQgR0VORVJBVEVEIEJZIERFRkFVTFQ7CitB TFRFUiBUQUJMRSBpdGVzdDcgQUxURVIgQ09MVU1OIGEgUkVTVEFSVDsKK0FM VEVSIFRBQkxFIGl0ZXN0NyBBTFRFUiBDT0xVTU4gYSBEUk9QIElERU5USVRZ OworCistLSBwcml2aWxlZ2VzCitDUkVBVEUgVVNFUiByZWdyZXNzX3VzZXIx OworQ1JFQVRFIFRBQkxFIGl0ZXN0OCAoYSBpbnQgR0VORVJBVEVEIEFMV0FZ UyBBUyBJREVOVElUWSwgYiB0ZXh0KTsKK0dSQU5UIFNFTEVDVCwgSU5TRVJU IE9OIGl0ZXN0OCBUTyByZWdyZXNzX3VzZXIxOworU0VUIFJPTEUgcmVncmVz c191c2VyMTsKK0lOU0VSVCBJTlRPIGl0ZXN0OCBERUZBVUxUIFZBTFVFUzsK K1NFTEVDVCAqIEZST00gaXRlc3Q4OworUkVTRVQgUk9MRTsKK0RST1AgVEFC TEUgaXRlc3Q4OworRFJPUCBVU0VSIHJlZ3Jlc3NfdXNlcjE7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZXF1ZW5jZS5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9zZXF1ZW5jZS5zcWwKaW5kZXggMGZiZDI1NTk2 Ny4uMThmYTZhZTVlOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvc2VxdWVuY2Uuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nl cXVlbmNlLnNxbApAQCAtMTMsNyArMTMsNyBAQCBDUkVBVEUgU0VRVUVOQ0Ug c2VxdWVuY2VfdGVzdHggQ0FDSEUgMDsKIAogLS0gT1dORUQgQlkgZXJyb3Jz CiBDUkVBVEUgU0VRVUVOQ0Ugc2VxdWVuY2VfdGVzdHggT1dORUQgQlkgbm9i b2R5OyAgLS0gbm9uc2Vuc2Ugd29yZAotQ1JFQVRFIFNFUVVFTkNFIHNlcXVl bmNlX3Rlc3R4IE9XTkVEIEJZIHBnX3RhYmxlcy50YWJsZW5hbWU7ICAtLSBu b3QgYSB0YWJsZQorQ1JFQVRFIFNFUVVFTkNFIHNlcXVlbmNlX3Rlc3R4IE9X TkVEIEJZIHBnX2NsYXNzX29pZF9pbmRleC5vaWQ7ICAtLSBub3QgYSB0YWJs ZQogQ1JFQVRFIFNFUVVFTkNFIHNlcXVlbmNlX3Rlc3R4IE9XTkVEIEJZIHBn X2NsYXNzLnJlbG5hbWU7ICAtLSBub3Qgc2FtZSBzY2hlbWEKIENSRUFURSBU QUJMRSBzZXF1ZW5jZV90ZXN0X3RhYmxlIChhIGludCk7CiBDUkVBVEUgU0VR VUVOQ0Ugc2VxdWVuY2VfdGVzdHggT1dORUQgQlkgc2VxdWVuY2VfdGVzdF90 YWJsZS5iOyAgLS0gd3JvbmcgY29sdW1uCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC90cnVuY2F0ZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC90cnVuY2F0ZS5zcWwKaW5kZXggZDYxZWVhMWE0Mi4uOWQzZDhkZTU0 YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJ1bmNhdGUu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RydW5jYXRlLnNxbApA QCAtMjAyLDYgKzIwMiwyNCBAQCBDUkVBVEUgVEFCTEUgdHJ1bmNhdGVfYSAo aWQgc2VyaWFsLAogSU5TRVJUIElOVE8gdHJ1bmNhdGVfYSBERUZBVUxUIFZB TFVFUzsKIFNFTEVDVCAqIEZST00gdHJ1bmNhdGVfYTsKIAorQ1JFQVRFIFRB QkxFIHRydW5jYXRlX2IgKGlkIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIElE RU5USVRZIChTVEFSVCBXSVRIIDQ0KSk7CisKK0lOU0VSVCBJTlRPIHRydW5j YXRlX2IgREVGQVVMVCBWQUxVRVM7CitJTlNFUlQgSU5UTyB0cnVuY2F0ZV9i IERFRkFVTFQgVkFMVUVTOworU0VMRUNUICogRlJPTSB0cnVuY2F0ZV9iOwor CitUUlVOQ0FURSB0cnVuY2F0ZV9iOworCitJTlNFUlQgSU5UTyB0cnVuY2F0 ZV9iIERFRkFVTFQgVkFMVUVTOworSU5TRVJUIElOVE8gdHJ1bmNhdGVfYiBE RUZBVUxUIFZBTFVFUzsKK1NFTEVDVCAqIEZST00gdHJ1bmNhdGVfYjsKKwor VFJVTkNBVEUgdHJ1bmNhdGVfYiBSRVNUQVJUIElERU5USVRZOworCitJTlNF UlQgSU5UTyB0cnVuY2F0ZV9iIERFRkFVTFQgVkFMVUVTOworSU5TRVJUIElO VE8gdHJ1bmNhdGVfYiBERUZBVUxUIFZBTFVFUzsKK1NFTEVDVCAqIEZST00g dHJ1bmNhdGVfYjsKKwogLS0gY2hlY2sgcm9sbGJhY2sgb2YgYSBSRVNUQVJU IElERU5USVRZIG9wZXJhdGlvbgogQkVHSU47CiBUUlVOQ0FURSB0cnVuY2F0 ZV9hIFJFU1RBUlQgSURFTlRJVFk7Ci0tIAoyLjEyLjAKCg== --------------A52B817E481886219963B59F Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------A52B817E481886219963B59F--